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 lists.sourceforge.net (lists.sourceforge.net [216.105.38.7]) (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 39C25C982C9 for ; Wed, 16 Sep 2026 17:01:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.sourceforge.net; s=beta; h=Content-Transfer-Encoding:Content-Type:Cc: Reply-To:From:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:Subject:In-Reply-To:MIME-Version:References: Message-ID:To:Date:Sender:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=jxdbJ8Iz0DxHSuPlk5KHVhhCawDkfJaqWrxKdLxo5F4=; b=K6/nSStVEfNcYXnKCGFj0bCFSF YWpPNL5+vIXgASrzHCayFEOVk7mPLDfjpgp/ieOBVbPZC7B9ZFccuy0MwLWIeXqiFAxqNVTKYPX+B UBd3nmHoKcsqzdWVLtnogOuwyVJRadHWQMe1Jj88vsigIw7yDiCysle+vO86DVdZMqA8=; Received: from [127.0.0.1] (helo=sfs-ml-3.v29.lw.sourceforge.com) by sfs-ml-3.v29.lw.sourceforge.com with esmtp (Exim 4.95) (envelope-from ) id 1x6t0i-0005x7-9Q; Wed, 16 Sep 2026 17:01:29 +0000 Received: from [172.30.29.66] (helo=mx.sourceforge.net) by sfs-ml-3.v29.lw.sourceforge.com with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1x6t0g-0005x0-Ny for linux-f2fs-devel@lists.sourceforge.net; Wed, 16 Sep 2026 17:01:27 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sourceforge.net; s=x; h=In-Reply-To:Content-Transfer-Encoding:Content-Type: MIME-Version:References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=A0bwolbcoddl5kBmwwsf41lILRJodBGqi9TzaEqGTYw=; b=dnzaYzIulKMBWpt7NeJzZFTe5i 6OEbkfrfWrwmfIwc1N+IatPisWerQoUBY3tdEHAo9C1P8VcHP6XRcTr5OGaQNbAwgwMIwU3XFXsqd YZ6vXL7GZvcPDHAmfOdHLoeJ82dbQmH+Dnkjpt6sp4VEoewywBxUoPmXH8QKzWK6dnds=; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sf.net; s=x ; h=In-Reply-To:Content-Transfer-Encoding:Content-Type:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=A0bwolbcoddl5kBmwwsf41lILRJodBGqi9TzaEqGTYw=; b=hVBC+wRW7KPoK8U52Oho9oERba cLcrXGM1PXGQhONFgv/BcQbPodaFUXQot/ZQre4yenXROxZTX9bm7NwHE3k81jWwBzqD8hPqb5Rnp sU/7IS6M62mrONYcrCKPnF/5HnRR140rOMS6sYiHmg6Gt9qz5FgQiYFq8KsDyn94hETk=; Received: from tor.source.kernel.org ([172.105.4.254]) by sfi-mx-1.v28.lw.sourceforge.com with esmtps (TLS1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.95) id 1x6t0d-00063A-6r for linux-f2fs-devel@lists.sourceforge.net; Wed, 16 Sep 2026 17:01:27 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id 659F7601FD; Wed, 16 Sep 2026 17:01:17 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id BD7CB1F00893; Wed, 16 Sep 2026 17:01:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1789578077; bh=A0bwolbcoddl5kBmwwsf41lILRJodBGqi9TzaEqGTYw=; h=Date:From:To:Cc:Subject:References:In-Reply-To; b=b8GvZatVi+9SWT2MORTnRNc+9mlGvsAIDaBH0lOW0r9AzJ+YEQcn9V2JxzzpvdCC4 2OnSWIQTul6UUnHxIVInKPJbxaeAYmh6MFzmgYSYQtvjc/cGJmq+NQbPOnpEIH7hGV GQRhE07gB5NRUas8hBe2r8CX9O6Rhu9ZYl6nk6DvdpGSp+YPpVQAgyEXJg1G3v/Ass DYcS4V0On1wp1eJ8NP+dzFAahyL8mPNKl36Rt91CaUgs69EuOEJJY2umYnNMRjFh+u HhsDfFBdPEtvvPrk/j/p3pNqZCHF1Go8OUA1/7ukdq85+bs5OmrmB0tzmHvY2VNts8 wiNR0K3N8H2iA== Date: Wed, 16 Sep 2026 17:01:15 +0000 To: Zhiguo Niu Message-ID: References: <20260916015440.2232938-1-chao@kernel.org> <20260916015440.2232938-8-chao@kernel.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Headers-End: 1x6t0d-00063A-6r Subject: Re: [f2fs-dev] [PATCH v8 07/12] f2fs: cache: use node cache X-BeenThere: linux-f2fs-devel@lists.sourceforge.net X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Jaegeuk Kim via Linux-f2fs-devel Reply-To: Jaegeuk Kim Cc: linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: linux-f2fs-devel-bounces@lists.sourceforge.net T24gMDkvMTYsIFpoaWd1byBOaXUgd3JvdGU6Cj4gQ2hhbyBZdSB2aWEgTGludXgtZjJmcy1kZXZl bCA8bGludXgtZjJmcy1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQ+Cj4g5LqOMjAyNuW5tDnm nIgxNuaXpeWRqOS4iSAwOTo1N+WGmemBk++8mgo+ID4KPiA+IEZyb206IENoYW8gWXUgPGNoYW9A a2VybmVsLm9yZz4KPiA+Cj4gPiBUaGlzIHBhdGNoIG1pZ3JhdGVzIEYyRlMgbm9kZSBibG9jayBj YWNoaW5nIGZyb20gdGhlIGZha2UgVkZTIGlub2RlCj4gPiBwYWdlIGNhY2hlIChzYmktPm5vZGVf aW5vZGUpIHRvIG5vZGUgY2FjaGUgKHNiaS0+bm9kZV9ibG9ja3MpLgo+ID4KPiA+IEl0IHVwZGF0 ZXMgbm9kZSByZWxhdGVkIGhlbHBlcnMgdG8gdXNlIG5vZGUgY2FjaGUgQVBJcyBhbmQgcmVmZXJl bmNlIHRvCj4gPiBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2ssIGFuZCByZW1vdmVzIHNiaS0+bm9k ZV9pbm9kZSwgZXNwZWNpYWxseSwgdW5pZmllcwo+ID4gaW5saW5lIGFuZCByZWd1bGFyIGRlbnRy eSBibG9jayBoYW5kbGluZyB2aWEgc3RydWN0IGYyZnNfZGVudHJ5X2Jsb2NrX3JlZi4KPiA+Cj4g PiBTaWduZWQtb2ZmLWJ5OiBDaGFvIFl1IDxjaGFvQGtlcm5lbC5vcmc+Cj4gPiAtLS0KPiA+ICBm cy9mMmZzL2FjbC5jICAgICAgICAgICB8ICAyNiArLQo+ID4gIGZzL2YyZnMvYWNsLmggICAgICAg ICAgIHwgICA4ICstCj4gPiAgZnMvZjJmcy9jYWNoZS5jICAgICAgICAgfCAgIDcgKy0KPiA+ICBm cy9mMmZzL2NhY2hlLmggICAgICAgICB8ICAgMyArLQo+ID4gIGZzL2YyZnMvY2hlY2twb2ludC5j ICAgIHwgIDE3ICstCj4gPiAgZnMvZjJmcy9jb21wcmVzcy5jICAgICAgfCAgMTggKy0KPiA+ICBm cy9mMmZzL2RhdGEuYyAgICAgICAgICB8IDI0OSArKysrKy0tLS0tLQo+ID4gIGZzL2YyZnMvZGVi dWcuYyAgICAgICAgIHwgIDEyICstCj4gPiAgZnMvZjJmcy9kaXIuYyAgICAgICAgICAgfCAxNzAg KysrLS0tLQo+ID4gIGZzL2YyZnMvZXh0ZW50X2NhY2hlLmMgIHwgIDE0ICstCj4gPiAgZnMvZjJm cy9mMmZzLmggICAgICAgICAgfCAyNTkgKysrKysrLS0tLS0KPiA+ICBmcy9mMmZzL2ZpbGUuYyAg ICAgICAgICB8ICA3OCArKy0tCj4gPiAgZnMvZjJmcy9nYy5jICAgICAgICAgICAgfCAgNTAgKy0t Cj4gPiAgZnMvZjJmcy9pbmxpbmUuYyAgICAgICAgfCAyNzkgKysrKysrLS0tLS0tCj4gPiAgZnMv ZjJmcy9pbm9kZS5jICAgICAgICAgfCAxNjcgKysrKy0tLQo+ID4gIGZzL2YyZnMvbmFtZWkuYyAg ICAgICAgIHwgMTE0ICsrLS0tCj4gPiAgZnMvZjJmcy9ub2RlLmMgICAgICAgICAgfCA5NTMgKysr KysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4gIGZzL2YyZnMvbm9kZS5o ICAgICAgICAgIHwgMTA4ICsrLS0tCj4gPiAgZnMvZjJmcy9yZWNvdmVyeS5jICAgICAgfCAxMTcg KystLS0KPiA+ICBmcy9mMmZzL3NlZ21lbnQuYyAgICAgICB8ICA1OSArKy0KPiA+ICBmcy9mMmZz L3NlZ21lbnQuaCAgICAgICB8ICAyMCAtCj4gPiAgZnMvZjJmcy9zaHJpbmtlci5jICAgICAgfCAg IDMgKy0KPiA+ICBmcy9mMmZzL3N1cGVyLmMgICAgICAgICB8ICA1NiArLS0KPiA+ICBmcy9mMmZz L3hhdHRyLmMgICAgICAgICB8IDEyMyArKystLS0KPiA+ICBmcy9mMmZzL3hhdHRyLmggICAgICAg ICB8ICAxMiArLQo+ID4gIGluY2x1ZGUvbGludXgvZjJmc19mcy5oIHwgICAxIC0KPiA+ICAyNiBm aWxlcyBjaGFuZ2VkLCAxNDIwIGluc2VydGlvbnMoKyksIDE1MDMgZGVsZXRpb25zKC0pCj4gPgo+ ID4gZGlmZiAtLWdpdCBhL2ZzL2YyZnMvYWNsLmMgYi9mcy9mMmZzL2FjbC5jCj4gPiBpbmRleCBk MzI1MzU0OTE3M2UuLjM0YzlhYTI3OTA0MCAxMDA2NDQKPiA+IC0tLSBhL2ZzL2YyZnMvYWNsLmMK PiA+ICsrKyBiL2ZzL2YyZnMvYWNsLmMKPiA+IEBAIC0xODEsNyArMTgxLDcgQEAgc3RhdGljIHZv aWQgKmYyZnNfYWNsX3RvX2Rpc2soc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4gIH0KPiA+ Cj4gPiAgc3RhdGljIHN0cnVjdCBwb3NpeF9hY2wgKl9fZjJmc19nZXRfYWNsKHN0cnVjdCBpbm9k ZSAqaW5vZGUsIGludCB0eXBlLAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IGZvbGlvICpkZm9saW8pCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sg KmVudHJ5KQo+ID4gIHsKPiA+ICAgICAgICAgaW50IG5hbWVfaW5kZXggPSBGMkZTX1hBVFRSX0lO REVYX1BPU0lYX0FDTF9ERUZBVUxUOwo+ID4gICAgICAgICB2b2lkICp2YWx1ZSA9IE5VTEw7Cj4g PiBAQCAtMTkxLDEzICsxOTEsMTMgQEAgc3RhdGljIHN0cnVjdCBwb3NpeF9hY2wgKl9fZjJmc19n ZXRfYWNsKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCB0eXBlLAo+ID4gICAgICAgICBpZiAodHlw ZSA9PSBBQ0xfVFlQRV9BQ0NFU1MpCj4gPiAgICAgICAgICAgICAgICAgbmFtZV9pbmRleCA9IEYy RlNfWEFUVFJfSU5ERVhfUE9TSVhfQUNMX0FDQ0VTUzsKPiA+Cj4gPiAtICAgICAgIHJldHZhbCA9 IGYyZnNfZ2V0eGF0dHIoaW5vZGUsIG5hbWVfaW5kZXgsICIiLCBOVUxMLCAwLCBkZm9saW8pOwo+ ID4gKyAgICAgICByZXR2YWwgPSBmMmZzX2dldHhhdHRyKGlub2RlLCBuYW1lX2luZGV4LCAiIiwg TlVMTCwgMCwgZW50cnkpOwo+ID4gICAgICAgICBpZiAocmV0dmFsID4gMCkgewo+ID4gICAgICAg ICAgICAgICAgIHZhbHVlID0gZjJmc19rbWFsbG9jKEYyRlNfSV9TQihpbm9kZSksIHJldHZhbCwg R0ZQX0YyRlNfWkVSTyk7Cj4gPiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkKPiA+ICAgICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+ID4gICAgICAgICAg ICAgICAgIHJldHZhbCA9IGYyZnNfZ2V0eGF0dHIoaW5vZGUsIG5hbWVfaW5kZXgsICIiLCB2YWx1 ZSwKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmV0dmFsLCBkZm9saW8pOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR2YWwsIGVudHJ5KTsKPiA+ICAgICAgICAgfQo+ ID4KPiA+ICAgICAgICAgaWYgKHJldHZhbCA+IDApCj4gPiBAQCAtMjQyLDcgKzI0Miw3IEBAIHN0 YXRpYyBpbnQgZjJmc19hY2xfdXBkYXRlX21vZGUoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsCj4g Pgo+ID4gIHN0YXRpYyBpbnQgX19mMmZzX3NldF9hY2woc3RydWN0IG1udF9pZG1hcCAqaWRtYXAs Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgdHlw ZSwKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwb3NpeF9hY2wgKmFjbCwgc3Ry dWN0IGZvbGlvICppZm9saW8pCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcG9z aXhfYWNsICphY2wsIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqaWVudHJ5KQo+ID4gIHsKPiA+ ICAgICAgICAgaW50IG5hbWVfaW5kZXg7Cj4gPiAgICAgICAgIHZvaWQgKnZhbHVlID0gTlVMTDsK PiA+IEBAIC0yNTMsNyArMjUzLDcgQEAgc3RhdGljIGludCBfX2YyZnNfc2V0X2FjbChzdHJ1Y3Qg bW50X2lkbWFwICppZG1hcCwKPiA+ICAgICAgICAgc3dpdGNoICh0eXBlKSB7Cj4gPiAgICAgICAg IGNhc2UgQUNMX1RZUEVfQUNDRVNTOgo+ID4gICAgICAgICAgICAgICAgIG5hbWVfaW5kZXggPSBG MkZTX1hBVFRSX0lOREVYX1BPU0lYX0FDTF9BQ0NFU1M7Cj4gPiAtICAgICAgICAgICAgICAgaWYg KGFjbCAmJiAhaWZvbGlvKSB7Cj4gPiArICAgICAgICAgICAgICAgaWYgKGFjbCAmJiAhaWVudHJ5 KSB7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciA9IGYyZnNfYWNsX3VwZGF0ZV9t b2RlKGlkbWFwLCBpbm9kZSwgJm1vZGUsICZhY2wpOwo+ID4gICAgICAgICAgICAgICAgICAgICAg ICAgaWYgKGVycm9yKQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g ZXJyb3I7Cj4gPiBAQCAtMjc5LDcgKzI3OSw3IEBAIHN0YXRpYyBpbnQgX19mMmZzX3NldF9hY2wo c3RydWN0IG1udF9pZG1hcCAqaWRtYXAsCj4gPiAgICAgICAgICAgICAgICAgfQo+ID4gICAgICAg ICB9Cj4gPgo+ID4gLSAgICAgICBlcnJvciA9IGYyZnNfc2V0eGF0dHIoaW5vZGUsIG5hbWVfaW5k ZXgsICIiLCB2YWx1ZSwgc2l6ZSwgaWZvbGlvLCAwKTsKPiA+ICsgICAgICAgZXJyb3IgPSBmMmZz X3NldHhhdHRyKGlub2RlLCBuYW1lX2luZGV4LCAiIiwgdmFsdWUsIHNpemUsIGllbnRyeSwgMCk7 Cj4gPgo+ID4gICAgICAgICBrZnJlZSh2YWx1ZSk7Cj4gPiAgICAgICAgIGlmICghZXJyb3IpCj4g PiBAQCAtMzc0LDcgKzM3NCw3IEBAIHN0YXRpYyBpbnQgZjJmc19hY2xfY3JlYXRlX21hc3Eoc3Ry dWN0IHBvc2l4X2FjbCAqYWNsLCB1bW9kZV90ICptb2RlX3ApCj4gPgo+ID4gIHN0YXRpYyBpbnQg ZjJmc19hY2xfY3JlYXRlKHN0cnVjdCBpbm9kZSAqZGlyLCB1bW9kZV90ICptb2RlLAo+ID4gICAg ICAgICAgICAgICAgIHN0cnVjdCBwb3NpeF9hY2wgKipkZWZhdWx0X2FjbCwgc3RydWN0IHBvc2l4 X2FjbCAqKmFjbCwKPiA+IC0gICAgICAgICAgICAgICBzdHJ1Y3QgZm9saW8gKmRmb2xpbykKPiA+ ICsgICAgICAgICAgICAgICBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5KQo+ID4gIHsK PiA+ICAgICAgICAgc3RydWN0IHBvc2l4X2FjbCAqcDsKPiA+ICAgICAgICAgc3RydWN0IHBvc2l4 X2FjbCAqY2xvbmU7Cj4gPiBAQCAtMzg2LDcgKzM4Niw3IEBAIHN0YXRpYyBpbnQgZjJmc19hY2xf Y3JlYXRlKHN0cnVjdCBpbm9kZSAqZGlyLCB1bW9kZV90ICptb2RlLAo+ID4gICAgICAgICBpZiAo U19JU0xOSygqbW9kZSkgfHwgIUlTX1BPU0lYQUNMKGRpcikpCj4gPiAgICAgICAgICAgICAgICAg cmV0dXJuIDA7Cj4gPgo+ID4gLSAgICAgICBwID0gX19mMmZzX2dldF9hY2woZGlyLCBBQ0xfVFlQ RV9ERUZBVUxULCBkZm9saW8pOwo+ID4gKyAgICAgICBwID0gX19mMmZzX2dldF9hY2woZGlyLCBB Q0xfVFlQRV9ERUZBVUxULCBlbnRyeSk7Cj4gPiAgICAgICAgIGlmICghcCB8fCBwID09IEVSUl9Q VFIoLUVPUE5PVFNVUFApKSB7Cj4gPiAgICAgICAgICAgICAgICAgKm1vZGUgJj0gfmN1cnJlbnRf dW1hc2soKTsKPiA+ICAgICAgICAgICAgICAgICByZXR1cm4gMDsKPiA+IEBAIC00MjMsMTMgKzQy MywxMyBAQCBzdGF0aWMgaW50IGYyZnNfYWNsX2NyZWF0ZShzdHJ1Y3QgaW5vZGUgKmRpciwgdW1v ZGVfdCAqbW9kZSwKPiA+ICAgICAgICAgcmV0dXJuIHJldDsKPiA+ICB9Cj4gPgo+ID4gLWludCBm MmZzX2luaXRfYWNsKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1 Y3QgZm9saW8gKmlmb2xpbywKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGZvbGlvICpkZm9saW8pCj4gPiAraW50IGYyZnNf aW5pdF9hY2woc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBm MmZzX2NhY2hlZF9ibG9jayAqaWVudHJ5LAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmRl bnRyeSkKPiA+ICB7Cj4gPiAgICAgICAgIHN0cnVjdCBwb3NpeF9hY2wgKmRlZmF1bHRfYWNsID0g TlVMTCwgKmFjbCA9IE5VTEw7Cj4gPiAgICAgICAgIGludCBlcnJvcjsKPiA+Cj4gPiAtICAgICAg IGVycm9yID0gZjJmc19hY2xfY3JlYXRlKGRpciwgJmlub2RlLT5pX21vZGUsICZkZWZhdWx0X2Fj bCwgJmFjbCwgZGZvbGlvKTsKPiA+ICsgICAgICAgZXJyb3IgPSBmMmZzX2FjbF9jcmVhdGUoZGly LCAmaW5vZGUtPmlfbW9kZSwgJmRlZmF1bHRfYWNsLCAmYWNsLCBkZW50cnkpOwo+ID4gICAgICAg ICBpZiAoZXJyb3IpCj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOwo+ID4KPiA+IEBA IC00MzcsNyArNDM3LDcgQEAgaW50IGYyZnNfaW5pdF9hY2woc3RydWN0IGlub2RlICppbm9kZSwg c3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBmb2xpbyAqaWZvbGlvLAo+ID4KPiA+ICAgICAgICAg aWYgKGRlZmF1bHRfYWNsKSB7Cj4gPiAgICAgICAgICAgICAgICAgZXJyb3IgPSBfX2YyZnNfc2V0 X2FjbChOVUxMLCBpbm9kZSwgQUNMX1RZUEVfREVGQVVMVCwKPiA+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGVmYXVsdF9hY2wsIGlmb2xpbyk7Cj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRlZmF1bHRfYWNsLCBpZW50cnkpOwo+ID4gICAgICAgICAgICAgICAg IHBvc2l4X2FjbF9yZWxlYXNlKGRlZmF1bHRfYWNsKTsKPiA+ICAgICAgICAgfSBlbHNlIHsKPiA+ ICAgICAgICAgICAgICAgICBpbm9kZS0+aV9kZWZhdWx0X2FjbCA9IE5VTEw7Cj4gPiBAQCAtNDQ1 LDcgKzQ0NSw3IEBAIGludCBmMmZzX2luaXRfYWNsKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVj dCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZm9saW8gKmlmb2xpbywKPiA+ICAgICAgICAgaWYgKGFjbCkg ewo+ID4gICAgICAgICAgICAgICAgIGlmICghZXJyb3IpCj4gPiAgICAgICAgICAgICAgICAgICAg ICAgICBlcnJvciA9IF9fZjJmc19zZXRfYWNsKE5VTEwsIGlub2RlLCBBQ0xfVFlQRV9BQ0NFU1Ms Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNsLCBpZm9saW8p Owo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjbCwgaWVudHJ5 KTsKPiA+ICAgICAgICAgICAgICAgICBwb3NpeF9hY2xfcmVsZWFzZShhY2wpOwo+ID4gICAgICAg ICB9IGVsc2Ugewo+ID4gICAgICAgICAgICAgICAgIGlub2RlLT5pX2FjbCA9IE5VTEw7Cj4gPiBk aWZmIC0tZ2l0IGEvZnMvZjJmcy9hY2wuaCBiL2ZzL2YyZnMvYWNsLmgKPiA+IGluZGV4IDIwZTg3 ZTYzYzA4OS4uMGY2MzkzNjdhMGFiIDEwMDY0NAo+ID4gLS0tIGEvZnMvZjJmcy9hY2wuaAo+ID4g KysrIGIvZnMvZjJmcy9hY2wuaAo+ID4gQEAgLTM2LDE0ICszNiwxNiBAQCBzdHJ1Y3QgZjJmc19h Y2xfaGVhZGVyIHsKPiA+ICBzdHJ1Y3QgcG9zaXhfYWNsICpmMmZzX2dldF9hY2woc3RydWN0IGlu b2RlICosIGludCwgYm9vbCk7Cj4gPiAgaW50IGYyZnNfc2V0X2FjbChzdHJ1Y3QgbW50X2lkbWFw ICosIHN0cnVjdCBkZW50cnkgKiwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBw b3NpeF9hY2wgKiwgaW50KTsKPiA+IC1pbnQgZjJmc19pbml0X2FjbChzdHJ1Y3QgaW5vZGUgKiwg c3RydWN0IGlub2RlICosIHN0cnVjdCBmb2xpbyAqaWZvbGlvLAo+ID4gLSAgICAgICAgICAgICAg IHN0cnVjdCBmb2xpbyAqZGZvbGlvKTsKPiA+ICtpbnQgZjJmc19pbml0X2FjbChzdHJ1Y3QgaW5v ZGUgKmlub2RlLCBzdHJ1Y3QgaW5vZGUgKmRpciwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqaWVudHJ5LAo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICpkZW50cnkpOwo+ID4gICNlbHNlCj4gPiAg I2RlZmluZSBmMmZzX2dldF9hY2wgICBOVUxMCj4gPiAgI2RlZmluZSBmMmZzX3NldF9hY2wgICBO VUxMCj4gPgo+ID4gIHN0YXRpYyBpbmxpbmUgaW50IGYyZnNfaW5pdF9hY2woc3RydWN0IGlub2Rl ICppbm9kZSwgc3RydWN0IGlub2RlICpkaXIsCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCBmb2xpbyAqaWZvbGlvLCBzdHJ1Y3QgZm9saW8gKmRmb2xpbykKPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICpp ZW50cnksCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBmMmZzX2Nh Y2hlZF9ibG9jayAqZGVudHJ5KQo+ID4gIHsKPiA+ICAgICAgICAgcmV0dXJuIDA7Cj4gPiAgfQo+ ID4gZGlmZiAtLWdpdCBhL2ZzL2YyZnMvY2FjaGUuYyBiL2ZzL2YyZnMvY2FjaGUuYwo+ID4gaW5k ZXggOGFiNWUwZTQ2YjRlLi4zYWJkNDY5ZGMwMTEgMTAwNjQ0Cj4gPiAtLS0gYS9mcy9mMmZzL2Nh Y2hlLmMKPiA+ICsrKyBiL2ZzL2YyZnMvY2FjaGUuYwo+ID4gQEAgLTI4LDcgKzI4LDcgQEAgdm9p ZCBmMmZzX2NhY2hlX3dhaXRfd3JpdGViYWNrX2NvbmQoc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2Nr ICplbnRyeSwKPiA+ICAgICAgICAgICAgICAgICByZXR1cm47Cj4gPgo+ID4gICAgICAgICAvKiBz dWJtaXQgY2FjaGVkIGJpbyAqLwo+ID4gLSAgICAgICBmMmZzX3N1Ym1pdF9tZXJnZWRfd3JpdGVf Y2FjaGUoZW50cnksIHR5cGUpOwo+ID4gKyAgICAgICBmMmZzX3N1Ym1pdF9tZXJnZWRfd3JpdGVf Y2FjaGUoZW50cnktPmNhY2hlLT5zYmksIGVudHJ5LCAwLCB0eXBlKTsKPiA+Cj4gPiAgICAgICAg IHdhaXRfb25fYml0X2lvKCZlbnRyeS0+c3RhdGUsIEYyRlNfQkxPQ0tfV1JJVEVCQUNLLAo+ID4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRBU0tfVU5JTlRFUlJVUFRJ QkxFKTsKPiA+IEBAIC02NSw4ICs2NSw4IEBAIGJvb2wgZjJmc19tYXJrX2NhY2hlX2RpcnR5KHN0 cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnkpCj4gPiAgICAgICAgIGYyZnNfY2FjaGVfc2V0 X3VwdG9kYXRlKGVudHJ5KTsKPiA+Cj4gPiAgI2lmZGVmIENPTkZJR19GMkZTX0NIRUNLX0ZTCj4g PiAtICAgICAgIGlmIChjYWNoZS0+dHlwZSA9PSBGMkZTX05PREVfQ0FDSEUgJiYgSVNfSU5PREUo Y2FjaGUtPnNiaSwgY2FjaGVfZm9saW8oZW50cnkpKSkKPiA+IC0gICAgICAgICAgICAgICBmMmZz X2lub2RlX2Noa3N1bV9zZXQoY2FjaGUtPnNiaSwgY2FjaGVfZm9saW8oZW50cnkpKTsKPiA+ICsg ICAgICAgaWYgKGYyZnNfaXNfbm9kZV9jYWNoZShlbnRyeSkgJiYgSVNfSU5PREUoY2FjaGUtPnNi aSwgZW50cnkpKQo+ID4gKyAgICAgICAgICAgICAgIGYyZnNfaW5vZGVfY2hrc3VtX3NldChjYWNo ZS0+c2JpLCBlbnRyeSk7Cj4gPiAgI2VuZGlmCj4gPgo+ID4gICAgICAgICBpZiAoIWYyZnNfY2Fj aGVfdGVzdF9hbmRfc2V0X2RpcnR5KGVudHJ5KSkgewo+ID4gQEAgLTY2NSw2ICs2NjUsNyBAQCBz dGF0aWMgaW50IGYyZnNfY2FjaGVfd3JpdGViYWNrX2t0aHJlYWQodm9pZCAqZGF0YSkKPiA+ICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ID4KPiA+ICAgICAgICAgICAgICAgICBm MmZzX3dyaXRlX21ldGFfY2FjaGVzKHNiaSk7Cj4gPiArICAgICAgICAgICAgICAgZjJmc193cml0 ZV9ub2RlX2NhY2hlcyhzYmkpOwo+ID4KPiA+ICAgICAgICAgICAgICAgICBzYl9lbmRfd3JpdGUo c2JpLT5zYik7Cj4gPiAgICAgICAgIH0KPiA+IGRpZmYgLS1naXQgYS9mcy9mMmZzL2NhY2hlLmgg Yi9mcy9mMmZzL2NhY2hlLmgKPiA+IGluZGV4IDFlYWJkNzg3YjRiNy4uYTM2ZWU1N2FkYjFhIDEw MDY0NAo+ID4gLS0tIGEvZnMvZjJmcy9jYWNoZS5oCj4gPiArKysgYi9mcy9mMmZzL2NhY2hlLmgK PiA+IEBAIC00OCw2ICs0OCw3IEBAIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9ja19saXN0IHsKPiA+ ICB9Owo+ID4KPiA+ICAjZGVmaW5lIElTX01FVEFfQ0FDSEUoY2FjaGUpICgoY2FjaGUpLT50eXBl ID09IEYyRlNfTUVUQV9DQUNIRSkKPiA+ICsjZGVmaW5lIElTX05PREVfQ0FDSEUoY2FjaGUpICgo Y2FjaGUpLT50eXBlID09IEYyRlNfTk9ERV9DQUNIRSkKPiA+Cj4gPiAgLyogRmxhZ3MgZm9yIGYy ZnNfY2FjaGVkX2Jsb2NrIHN0YXRlICovCj4gPiAgZW51bSBmMmZzX2NhY2hlZF9zdGF0ZSB7Cj4g PiBAQCAtMjA3LDcgKzIwOCw3IEBAIHZvaWQgZjJmc19kcm9wX2NhY2hlX3JhbmdlKHN0cnVjdCBm MmZzX2NhY2hlZF9ibG9ja19saXN0ICpjYWNoZSwKPiA+ICAgICAgICAgZjJmc19ncmFiX2NhY2hl KE5PREVfQ0FDSEUoc2JpKSwgYmxrYWRkciwgICAgICAgXAo+ID4gICAgICAgICBGMkZTX0NBQ0hF X0xPQ0tfQ1JFQVRFKQo+ID4gICNkZWZpbmUgZjJmc19maW5kX25vZGVfY2FjaGUoc2JpLCBibGth ZGRyKSAgICAgICAgICAgICBcCj4gPiAtICAgICAgIGYyZnNfZmluZF9jYWNoZShOT0RFX0NBQ0hF KHNiaSksIGJsa2FkZHIpCj4gPiArICAgICAgIGYyZnNfZmluZF9jYWNoZShOT0RFX0NBQ0hFKHNi aSksIGJsa2FkZHIsIEYyRlNfQ0FDSEVfQUNDRVNTKQo+ID4gICNkZWZpbmUgZjJmc19pbnZhbGlk YXRlX25vZGVfY2FjaGUoc2JpLCBibGthZGRyKSAgICAgICBcCj4gPiAgICAgICAgIGYyZnNfZHJv cF9jYWNoZV9yYW5nZShOT0RFX0NBQ0hFKHNiaSksIGJsa2FkZHIsIDEsIGZhbHNlKQo+ID4gICNk ZWZpbmUgZjJmc190cnVuY2F0ZV9ub2RlX2NhY2hlcyhzYmksIHN0YXJ0LCBsZW4pICAgICBcCj4g PiBkaWZmIC0tZ2l0IGEvZnMvZjJmcy9jaGVja3BvaW50LmMgYi9mcy9mMmZzL2NoZWNrcG9pbnQu Ywo+ID4gaW5kZXggOGU1MjRkOTg2MGEyLi5mZTdlOGJhYjY0NGIgMTAwNjQ0Cj4gPiAtLS0gYS9m cy9mMmZzL2NoZWNrcG9pbnQuYwo+ID4gKysrIGIvZnMvZjJmcy9jaGVja3BvaW50LmMKPiA+IEBA IC05MjcsNyArOTI3LDcgQEAgdm9pZCBmMmZzX2FkZF9vcnBoYW5faW5vZGUoc3RydWN0IGlub2Rl ICppbm9kZSkKPiA+ICB7Cj4gPiAgICAgICAgIC8qIGFkZCBuZXcgb3JwaGFuIGlubyBlbnRyeSBp bnRvIGxpc3QgKi8KPiA+ICAgICAgICAgZjJmc19hZGRfaW5vX2VudHJ5KEYyRlNfSV9TQihpbm9k ZSksIGlub2RlLT5pX2lubywgT1JQSEFOX0lOTyk7Cj4gPiAtICAgICAgIGYyZnNfdXBkYXRlX2lu b2RlX3BhZ2UoaW5vZGUpOwo+ID4gKyAgICAgICBmMmZzX3VwZGF0ZV9pbm9kZV9jYWNoZShpbm9k ZSk7Cj4gPiAgfQo+ID4KPiA+ICB2b2lkIGYyZnNfcmVtb3ZlX29ycGhhbl9pbm9kZShzdHJ1Y3Qg ZjJmc19zYl9pbmZvICpzYmksIG5pZF90IGlubykKPiA+IEBAIC0xNDI4LDcgKzE0MjgsNyBAQCBz dGF0aWMgaW50IGYyZnNfc3luY19pbm9kZV9tZXRhKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSkK PiA+Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpdCdzIG9uIGV2aWN0aW9uICovCj4g PiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNfaW5vZGVfZmxhZ19zZXQoaW5vZGUsIEZJ X0RJUlRZX0lOT0RFKSkKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjJmc191 cGRhdGVfaW5vZGVfcGFnZShpbm9kZSk7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGYyZnNfdXBkYXRlX2lub2RlX2NhY2hlKGlub2RlKTsKPiA+ICAgICAgICAgICAgICAgICAg ICAgICAgIGlwdXQoaW5vZGUpOwo+ID4gICAgICAgICAgICAgICAgIH0gZWxzZSB7Cj4gPiAgICAg ICAgICAgICAgICAgICAgICAgICBjb25kX3Jlc2NoZWQoKTsKPiA+IEBAIC0xNDgzLDE0ICsxNDgz LDEwIEBAIHN0YXRpYyBib29sIF9fbmVlZF9mbHVzaF9xdW90YShzdHJ1Y3QgZjJmc19zYl9pbmZv ICpzYmkpCj4gPiAgICovCj4gPiAgc3RhdGljIGludCBibG9ja19vcGVyYXRpb25zKHN0cnVjdCBm MmZzX3NiX2luZm8gKnNiaSkKPiA+ICB7Cj4gPiAtICAgICAgIHN0cnVjdCB3cml0ZWJhY2tfY29u dHJvbCB3YmMgPSB7Cj4gPiAtICAgICAgICAgICAgICAgLnN5bmNfbW9kZSA9IFdCX1NZTkNfQUxM LAo+ID4gLSAgICAgICAgICAgICAgIC5ucl90b193cml0ZSA9IExPTkdfTUFYLAo+ID4gLSAgICAg ICB9Owo+ID4gICAgICAgICBpbnQgZXJyID0gMCwgY250ID0gMDsKPiA+Cj4gPiAgICAgICAgIC8q Cj4gPiAtICAgICAgICAqIExldCdzIGZsdXNoIGlubGluZV9kYXRhIGluIGRpcnR5IG5vZGUgcGFn ZXMuCj4gPiArICAgICAgICAqIExldCdzIGZsdXNoIGlubGluZV9kYXRhIGluIGRpcnR5IG5vZGUg Y2FjaGVzLgo+ID4gICAgICAgICAgKi8KPiA+ICAgICAgICAgZjJmc19mbHVzaF9pbmxpbmVfZGF0 YShzYmkpOwo+ID4KPiA+IEBAIC0xNTI5LDcgKzE1MjUsNyBAQCBzdGF0aWMgaW50IGJsb2NrX29w ZXJhdGlvbnMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKQo+ID4gICAgICAgICB9Cj4gPgo+ID4g ICAgICAgICAvKgo+ID4gLSAgICAgICAgKiBQT1I6IHdlIHNob3VsZCBlbnN1cmUgdGhhdCB0aGVy ZSBhcmUgbm8gZGlydHkgbm9kZSBwYWdlcwo+ID4gKyAgICAgICAgKiBQT1I6IHdlIHNob3VsZCBl bnN1cmUgdGhhdCB0aGVyZSBhcmUgbm8gZGlydHkgbm9kZSBjYWNoZXMKPiA+ICAgICAgICAgICog dW50aWwgZmluaXNoaW5nIG5hdC9zaXQgZmx1c2guIGlub2RlLT5pX2Jsb2NrcyBjYW4gYmUgdXBk YXRlZC4KPiA+ICAgICAgICAgICovCj4gPiAgICAgICAgIGYyZnNfZG93bl93cml0ZSgmc2JpLT5u b2RlX2NoYW5nZSk7Cj4gPiBAQCAtMTU1MCw3ICsxNTQ2LDggQEAgc3RhdGljIGludCBibG9ja19v cGVyYXRpb25zKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSkKPiA+ICAgICAgICAgaWYgKGdldF9w YWdlcyhzYmksIEYyRlNfRElSVFlfTk9ERVMpKSB7Cj4gPiAgICAgICAgICAgICAgICAgZjJmc191 cF93cml0ZSgmc2JpLT5ub2RlX3dyaXRlKTsKPiA+ICAgICAgICAgICAgICAgICBhdG9taWNfaW5j KCZzYmktPndiX3N5bmNfcmVxW05PREVdKTsKPiA+IC0gICAgICAgICAgICAgICBlcnIgPSBmMmZz X3N5bmNfbm9kZV9wYWdlcyhzYmksICZ3YmMsIGZhbHNlLCBGU19DUF9OT0RFX0lPKTsKPiA+ICsg ICAgICAgICAgICAgICBlcnIgPSBmMmZzX3dyaXRlYmFja19ub2RlX2NhY2hlcyhzYmksIExPTkdf TUFYLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwgZmFsc2UsIEZTX0NQX05PREVf SU8pOwo+ID4gICAgICAgICAgICAgICAgIGF0b21pY19kZWMoJnNiaS0+d2Jfc3luY19yZXFbTk9E RV0pOwo+ID4gICAgICAgICAgICAgICAgIGlmIChlcnIpIHsKPiA+ICAgICAgICAgICAgICAgICAg ICAgICAgIGYyZnNfdXBfd3JpdGUoJnNiaS0+bm9kZV9jaGFuZ2UpOwo+ID4gQEAgLTE5MDAsNyAr MTg5Nyw3IEBAIHN0YXRpYyBpbnQgZG9fY2hlY2twb2ludChzdHJ1Y3QgZjJmc19zYl9pbmZvICpz YmksIHN0cnVjdCBjcF9jb250cm9sICpjcGMpCj4gPiAgICAgICAgIF9fc2V0X2NwX25leHRfcGFj ayhzYmkpOwo+ID4KPiA+ICAgICAgICAgLyoKPiA+IC0gICAgICAgICogcmVkaXJ0eSBzdXBlcmJs b2NrIGlmIG1ldGFkYXRhIGxpa2Ugbm9kZSBwYWdlIG9yIGlub2RlIGNhY2hlIGlzCj4gPiArICAg ICAgICAqIHJlZGlydHkgc3VwZXJibG9jayBpZiBtZXRhZGF0YSBsaWtlIG5vZGUgY2FjaGVzIG9y IGlub2RlIGNhY2hlIGlzCj4gPiAgICAgICAgICAqIHVwZGF0ZWQgZHVyaW5nIHdyaXRpbmcgY2hl Y2twb2ludC4KPiA+ICAgICAgICAgICovCj4gPiAgICAgICAgIGlmIChnZXRfcGFnZXMoc2JpLCBG MkZTX0RJUlRZX05PREVTKSB8fAo+ID4gZGlmZiAtLWdpdCBhL2ZzL2YyZnMvY29tcHJlc3MuYyBi L2ZzL2YyZnMvY29tcHJlc3MuYwo+ID4gaW5kZXggZjg1YmJhZGRlNTNmLi5kN2Y3YzM1ZTcxMGYg MTAwNjQ0Cj4gPiAtLS0gYS9mcy9mMmZzL2NvbXByZXNzLmMKPiA+ICsrKyBiL2ZzL2YyZnMvY29t cHJlc3MuYwo+ID4gQEAgLTkwOSw3ICs5MDksNyBAQCBib29sIGYyZnNfc2FuaXR5X2NoZWNrX2Ns dXN0ZXIoc3RydWN0IGRub2RlX29mX2RhdGEgKmRuKQo+ID4gICAgICAgICB9Cj4gPgo+ID4gICAg ICAgICBmb3IgKGkgPSAxLCBjb3VudCA9IDE7IGkgPCBjbHVzdGVyX3NpemU7IGkrKywgY291bnQr Kykgewo+ID4gLSAgICAgICAgICAgICAgIGJsb2NrX3QgYmxrYWRkciA9IGRhdGFfYmxrYWRkcihk bi0+aW5vZGUsIGRuLT5ub2RlX2ZvbGlvLAo+ID4gKyAgICAgICAgICAgICAgIGJsb2NrX3QgYmxr YWRkciA9IGRhdGFfYmxrYWRkcihkbi0+aW5vZGUsIGRuLT5ub2RlX2VudHJ5LAo+ID4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbi0+b2Zz X2luX25vZGUgKyBpKTsKPiA+Cj4gPiAgICAgICAgICAgICAgICAgLyogW0NPTVBSX0FERFIsIC4u LiwgQ09NUFJfQUREUl0gKi8KPiA+IEBAIC05NTAsNyArOTUwLDcgQEAgc3RhdGljIGludCBfX2Yy ZnNfZ2V0X2NsdXN0ZXJfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUsCj4gPiAgICAgICAgIGlu dCBjb3VudCwgaTsKPiA+Cj4gPiAgICAgICAgIGZvciAoaSA9IDAsIGNvdW50ID0gMDsgaSA8IGNs dXN0ZXJfc2l6ZTsgaSsrKSB7Cj4gPiAtICAgICAgICAgICAgICAgYmxvY2tfdCBibGthZGRyID0g ZGF0YV9ibGthZGRyKGRuLT5pbm9kZSwgZG4tPm5vZGVfZm9saW8sCj4gPiArICAgICAgICAgICAg ICAgYmxvY2tfdCBibGthZGRyID0gZGF0YV9ibGthZGRyKGRuLT5pbm9kZSwgZG4tPm5vZGVfZW50 cnksCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRuLT5vZnNfaW5fbm9kZSArIGkpOwo+ID4KPiA+ICAgICAgICAgICAgICAgICBpZiAo X19pc192YWxpZF9kYXRhX2Jsa2FkZHIoYmxrYWRkcikpCj4gPiBAQCAtMTE0Niw3ICsxMTQ2LDcg QEAgc3RhdGljIGludCBwcmVwYXJlX2NvbXByZXNzX292ZXJ3cml0ZShzdHJ1Y3QgY29tcHJlc3Nf Y3R4ICpjYywKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmVsZWFzZV9hbmRfcmV0 cnk7Cj4gPiAgICAgICAgICAgICAgICAgfQo+ID4KPiA+IC0gICAgICAgICAgICAgICBmMmZzX2Zv bGlvX3dhaXRfd3JpdGViYWNrKGZvbGlvLCBEQVRBLCB0cnVlLCB0cnVlKTsKPiA+ICsgICAgICAg ICAgICAgICBmMmZzX2ZvbGlvX3dhaXRfd3JpdGViYWNrKGZvbGlvLCB0cnVlLCB0cnVlKTsKPiA+ ICAgICAgICAgICAgICAgICBmMmZzX2NvbXByZXNzX2N0eF9hZGRfcGFnZShjYywgZm9saW8pOwo+ ID4KPiA+ICAgICAgICAgICAgICAgICBpZiAoIWZvbGlvX3Rlc3RfdXB0b2RhdGUoZm9saW8pKSB7 Cj4gPiBAQCAtMTMyMiw3ICsxMzIyLDcgQEAgc3RhdGljIGludCBmMmZzX3dyaXRlX2NvbXByZXNz ZWRfcGFnZXMoc3RydWN0IGNvbXByZXNzX2N0eCAqY2MsCj4gPiAgICAgICAgICAgICAgICAgZ290 byBvdXRfdW5sb2NrX29wOwo+ID4KPiA+ICAgICAgICAgZm9yIChpID0gMDsgaSA8IGNjLT5jbHVz dGVyX3NpemU7IGkrKykgewo+ID4gLSAgICAgICAgICAgICAgIGlmIChkYXRhX2Jsa2FkZHIoZG4u aW5vZGUsIGRuLm5vZGVfZm9saW8sCj4gPiArICAgICAgICAgICAgICAgaWYgKGRhdGFfYmxrYWRk cihkbi5pbm9kZSwgZG4ubm9kZV9lbnRyeSwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkbi5vZnNfaW5fbm9kZSArIGkpID09IE5VTExfQUREUikKPiA+ICAgICAg ICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0X3B1dF9kbm9kZTsKPiA+ICAgICAgICAgfQo+ID4g QEAgLTEzNTQsNyArMTM1NCw3IEBAIHN0YXRpYyBpbnQgZjJmc193cml0ZV9jb21wcmVzc2VkX3Bh Z2VzKHN0cnVjdCBjb21wcmVzc19jdHggKmNjLAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwYWdlX2ZvbGlvKGNjLT5ycGFnZXNbaSArIDFdKS0+aW5kZXgsIGNpYyk7Cj4gPiAg ICAgICAgICAgICAgICAgZmlvLmNvbXByZXNzZWRfcGFnZSA9IGNjLT5jcGFnZXNbaV07Cj4gPgo+ ID4gLSAgICAgICAgICAgICAgIGZpby5vbGRfYmxrYWRkciA9IGRhdGFfYmxrYWRkcihkbi5pbm9k ZSwgZG4ubm9kZV9mb2xpbywKPiA+ICsgICAgICAgICAgICAgICBmaW8ub2xkX2Jsa2FkZHIgPSBk YXRhX2Jsa2FkZHIoZG4uaW5vZGUsIGRuLm5vZGVfZW50cnksCj4gPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbi5vZnNfaW5fbm9kZSArIGkgKyAxKTsK PiA+Cj4gPiAgICAgICAgICAgICAgICAgLyogd2FpdCBmb3IgR0NlZCBwYWdlIHdyaXRlYmFjayB2 aWEgZ2VuZXJpYyBjYWNoZSAqLwo+ID4gQEAgLTE1NDIsNyArMTU0Miw3IEBAIHN0YXRpYyBpbnQg ZjJmc193cml0ZV9yYXdfcGFnZXMoc3RydWN0IGNvbXByZXNzX2N0eCAqY2MsCj4gPiAgICAgICAg ICAgICAgICAgaWYgKGZvbGlvX3Rlc3Rfd3JpdGViYWNrKGZvbGlvKSkgewo+ID4gICAgICAgICAg ICAgICAgICAgICAgICAgaWYgKHdiYy0+c3luY19tb2RlID09IFdCX1NZTkNfTk9ORSkKPiA+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBjb250aW51ZV91bmxvY2s7Cj4gPiAt ICAgICAgICAgICAgICAgICAgICAgICBmMmZzX2ZvbGlvX3dhaXRfd3JpdGViYWNrKGZvbGlvLCBE QVRBLCB0cnVlLCB0cnVlKTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGYyZnNfZm9saW9f d2FpdF93cml0ZWJhY2soZm9saW8sIHRydWUsIHRydWUpOwo+ID4gICAgICAgICAgICAgICAgIH0K PiA+Cj4gPiAgICAgICAgICAgICAgICAgaWYgKCFmb2xpb19jbGVhcl9kaXJ0eV9mb3JfaW8oZm9s aW8pKQo+ID4gQEAgLTE4NzQsMTQgKzE4NzQsMTQgQEAgdm9pZCBmMmZzX3B1dF9mb2xpb19kaWMo c3RydWN0IGZvbGlvICpmb2xpbywgYm9vbCBpbl90YXNrKQo+ID4gIHVuc2lnbmVkIGludCBmMmZz X2NsdXN0ZXJfYmxvY2tzX2FyZV9jb250aWd1b3VzKHN0cnVjdCBkbm9kZV9vZl9kYXRhICpkbiwK PiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGludCBvZnNfaW5fbm9kZSkKPiA+ICB7Cj4gPiAtICAgICAgIGJvb2wgY29tcHJlc3NlZCA9 IGRhdGFfYmxrYWRkcihkbi0+aW5vZGUsIGRuLT5ub2RlX2ZvbGlvLAo+ID4gKyAgICAgICBib29s IGNvbXByZXNzZWQgPSBkYXRhX2Jsa2FkZHIoZG4tPmlub2RlLCBkbi0+bm9kZV9lbnRyeSwKPiA+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZnNfaW5fbm9kZSkgPT0g Q09NUFJFU1NfQUREUjsKPiA+ICAgICAgICAgaW50IGkgPSBjb21wcmVzc2VkID8gMSA6IDA7Cj4g PiAtICAgICAgIGJsb2NrX3QgZmlyc3RfYmxrYWRkciA9IGRhdGFfYmxrYWRkcihkbi0+aW5vZGUs IGRuLT5ub2RlX2ZvbGlvLAo+ID4gKyAgICAgICBibG9ja190IGZpcnN0X2Jsa2FkZHIgPSBkYXRh X2Jsa2FkZHIoZG4tPmlub2RlLCBkbi0+bm9kZV9lbnRyeSwKPiA+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2ZzX2luX25vZGUgKyBpKTsK PiA+Cj4gPiAgICAgICAgIGZvciAoaSArPSAxOyBpIDwgRjJGU19JKGRuLT5pbm9kZSktPmlfY2x1 c3Rlcl9zaXplOyBpKyspIHsKPiA+IC0gICAgICAgICAgICAgICBibG9ja190IGJsa2FkZHIgPSBk YXRhX2Jsa2FkZHIoZG4tPmlub2RlLCBkbi0+bm9kZV9mb2xpbywKPiA+ICsgICAgICAgICAgICAg ICBibG9ja190IGJsa2FkZHIgPSBkYXRhX2Jsa2FkZHIoZG4tPmlub2RlLCBkbi0+bm9kZV9lbnRy eSwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb2ZzX2luX25vZGUgKyBpKTsKPiA+Cj4gPiAgICAgICAgICAgICAgICAgaWYgKCFfX2lz X3ZhbGlkX2RhdGFfYmxrYWRkcihibGthZGRyKSkKPiA+IGRpZmYgLS1naXQgYS9mcy9mMmZzL2Rh dGEuYyBiL2ZzL2YyZnMvZGF0YS5jCj4gPiBpbmRleCA2NzRkMWI4ZTMzZDguLjlhMWQzMWRmNWY0 ZiAxMDA2NDQKPiA+IC0tLSBhL2ZzL2YyZnMvZGF0YS5jCj4gPiArKysgYi9mcy9mMmZzL2RhdGEu Ywo+ID4gQEAgLTU4LDEzICs1OCwxMCBAQCBib29sIGYyZnNfaXNfY3BfZ3VhcmFudGVlZChjb25z dCBzdHJ1Y3QgZm9saW8gKmZvbGlvKQo+ID4gIHsKPiA+ICAgICAgICAgc3RydWN0IGFkZHJlc3Nf c3BhY2UgKm1hcHBpbmcgPSBmb2xpby0+bWFwcGluZzsKPiA+ICAgICAgICAgc3RydWN0IGlub2Rl ICppbm9kZTsKPiA+IC0gICAgICAgc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpOwo+ID4KPiA+ICAg ICAgICAgaW5vZGUgPSBtYXBwaW5nLT5ob3N0Owo+ID4gLSAgICAgICBzYmkgPSBGMkZTX0lfU0Io aW5vZGUpOwo+ID4KPiA+IC0gICAgICAgaWYgKGlub2RlLT5pX2lubyA9PSBGMkZTX05PREVfSU5P KHNiaSkgfHwKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIFNfSVNESVIoaW5vZGUtPmlfbW9k ZSkpCj4gPiArICAgICAgIGlmIChTX0lTRElSKGlub2RlLT5pX21vZGUpKQo+ID4gICAgICAgICAg ICAgICAgIHJldHVybiB0cnVlOwo+ID4KPiA+ICAgICAgICAgaWYgKChTX0lTUkVHKGlub2RlLT5p X21vZGUpICYmIElTX05PUVVPVEEoaW5vZGUpKSB8fAo+ID4gQEAgLTczLDIwICs3MCw2IEBAIGJv b2wgZjJmc19pc19jcF9ndWFyYW50ZWVkKGNvbnN0IHN0cnVjdCBmb2xpbyAqZm9saW8pCj4gPiAg ICAgICAgIHJldHVybiBmYWxzZTsKPiA+ICB9Cj4gPgo+ID4gLXN0YXRpYyBlbnVtIGNvdW50X3R5 cGUgX19yZWFkX2lvX3R5cGUoc3RydWN0IGZvbGlvICpmb2xpbykKPiA+IC17Cj4gPiAtICAgICAg IHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nID0gZm9saW8tPm1hcHBpbmc7Cj4gPiAtCj4g PiAtICAgICAgIGlmIChtYXBwaW5nKSB7Cj4gPiAtICAgICAgICAgICAgICAgc3RydWN0IGlub2Rl ICppbm9kZSA9IG1hcHBpbmctPmhvc3Q7Cj4gPiAtICAgICAgICAgICAgICAgc3RydWN0IGYyZnNf c2JfaW5mbyAqc2JpID0gRjJGU19JX1NCKGlub2RlKTsKPiA+IC0KPiA+IC0gICAgICAgICAgICAg ICBpZiAoaW5vZGUtPmlfaW5vID09IEYyRlNfTk9ERV9JTk8oc2JpKSkKPiA+IC0gICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiBGMkZTX1JEX05PREU7Cj4gPiAtICAgICAgIH0KPiA+IC0gICAg ICAgcmV0dXJuIEYyRlNfUkRfREFUQTsKPiA+IC19Cj4gPiAtCj4gPiAgLyogcG9zdHByb2Nlc3Np bmcgc3RlcHMgZm9yIHJlYWQgYmlvcyAqLwo+ID4gIGVudW0gYmlvX3Bvc3RfcmVhZF9zdGVwIHsK PiA+ICAjaWZkZWYgQ09ORklHX0YyRlNfRlNfQ09NUFJFU1NJT04KPiA+IEBAIC0xNjAsMTQgKzE0 Myw3IEBAIHN0YXRpYyB2b2lkIGYyZnNfZmluaXNoX3JlYWRfYmlvKHN0cnVjdCBiaW8gKmJpbywg Ym9vbCBpbl90YXNrKQo+ID4gICAgICAgICAgICAgICAgIH0KPiA+Cj4gPiAgICAgICAgICAgICAg ICAgd2hpbGUgKG5yX3BhZ2VzLS0pCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBkZWNfcGFn ZV9jb3VudChGMkZTX0ZfU0IoZm9saW8pLCBfX3JlYWRfaW9fdHlwZShmb2xpbykpOwo+ID4gLQo+ ID4gLSAgICAgICAgICAgICAgIGlmIChiaW8tPmJpX3N0YXR1cyA9PSBCTEtfU1RTX09LICYmCj4g PiAtICAgICAgICAgICAgICAgICAgICAgICBGMkZTX0ZfU0IoZm9saW8pLT5ub2RlX2lub2RlICYm Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBpc19ub2RlX2ZvbGlvKEYyRlNfRl9TQihmb2xp byksIGZvbGlvKSAmJgo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgZjJmc19zYW5pdHlfY2hl Y2tfbm9kZV9mb290ZXIoRjJGU19GX1NCKGZvbGlvKSwKPiA+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZm9saW8sIGZvbGlvLT5pbmRleCwgTk9ERV9UWVBFX1JFR1VMQVIsIHRydWUp KQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgYmlvLT5iaV9zdGF0dXMgPSBCTEtfU1RTX0lP RVJSOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZGVjX3BhZ2VfY291bnQoRjJGU19GX1NC KGZvbGlvKSwgRjJGU19SRF9EQVRBKTsKPiA+Cj4gPiAgICAgICAgICAgICAgICAgaWYgKGZpbmlz aGVkKQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgZm9saW9fZW5kX3JlYWQoZm9saW8sIGJp by0+Ymlfc3RhdHVzID09IEJMS19TVFNfT0spOwo+ID4gQEAgLTM1MSwxNCArMzI3LDYgQEAgc3Rh dGljIHZvaWQgZjJmc193cml0ZV9lbmRfYmlvKHN0cnVjdCBiaW8gKmJpbykKPiA+ICAgICAgICAg ICAgICAgICAgICAgICAgIH0KPiA+ICAgICAgICAgICAgICAgICB9Cj4gPgo+ID4gLSAgICAgICAg ICAgICAgIGlmIChpc19ub2RlX2ZvbGlvKHNiaSwgZm9saW8pKSB7Cj4gPiAtICAgICAgICAgICAg ICAgICAgICAgICBmMmZzX3Nhbml0eV9jaGVja19ub2RlX2Zvb3RlcihzYmksIGZvbGlvLAo+ID4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xpby0+aW5kZXgsIE5PREVfVFlQRV9S RUdVTEFSLCB0cnVlKTsKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGYyZnNfYnVnX29uKHNi aSwgZm9saW8tPmluZGV4ICE9IG5pZF9vZl9ub2RlKHNiaSwgZm9saW8pKTsKPiA+IC0gICAgICAg ICAgICAgICB9Cj4gPiAtICAgICAgICAgICAgICAgaWYgKGYyZnNfaW5fd2FybV9ub2RlX2xpc3Qo c2JpLCBmb2xpbykpCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBmMmZzX2RlbF9mc3luY19u b2RlX2VudHJ5KHNiaSwgZm9saW8pOwo+ID4gLQo+ID4gICAgICAgICAgICAgICAgIGRlY19wYWdl X2NvdW50KHNiaSwgdHlwZSk7Cj4gPgo+ID4gICAgICAgICAgICAgICAgIC8qCj4gPiBAQCAtNDE5 LDYgKzM4NywxMiBAQCBzdGF0aWMgdm9pZCBmMmZzX2NhY2hlX3JlYWRfZW5kX2lvKHN0cnVjdCBi aW8gKmJpbykKPiA+ICAgICAgICAgICAgICAgICBuZXh0ID0gZW50cnktPm5leHRfZW50cnk7Cj4g PiAgICAgICAgICAgICAgICAgZW50cnktPm5leHRfZW50cnkgPSBOVUxMOwo+ID4KPiA+ICsgICAg ICAgICAgICAgICBpZiAoYmlvLT5iaV9zdGF0dXMgPT0gQkxLX1NUU19PSyAmJgo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgZjJmc19pc19ub2RlX2NhY2hlKGVudHJ5KSAmJgo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgZjJmc19zYW5pdHlfY2hlY2tfbm9kZV9mb290ZXIoc2JpLCBlbnRy eSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPmluZGV4LCBOT0RF X1RZUEVfUkVHVUxBUiwgdHJ1ZSkpCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBiaW8tPmJp X3N0YXR1cyA9IEJMS19TVFNfSU9FUlI7Cj4gPiArCj4gPiAgICAgICAgICAgICAgICAgaWYgKGJp by0+Ymlfc3RhdHVzID09IEJMS19TVFNfT0spCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBm MmZzX2NhY2hlX3NldF91cHRvZGF0ZShlbnRyeSk7Cj4gPgo+ID4gQEAgLTQ0OSw2ICs0MjMsMTQg QEAgc3RhdGljIHZvaWQgZjJmc19jYWNoZV93cml0ZV9lbmRfaW8oc3RydWN0IGJpbyAqYmlvKQo+ ID4gICAgICAgICAgICAgICAgIG5leHQgPSBlbnRyeS0+bmV4dF9lbnRyeTsKPiA+ICAgICAgICAg ICAgICAgICBlbnRyeS0+bmV4dF9lbnRyeSA9IE5VTEw7Cj4gPgo+ID4gKyAgICAgICAgICAgICAg IGlmIChmMmZzX2lzX25vZGVfY2FjaGUoZW50cnkpKSB7Cj4gPiArICAgICAgICAgICAgICAgICAg ICAgICBmMmZzX3Nhbml0eV9jaGVja19ub2RlX2Zvb3RlcihzYmksIGVudHJ5LAo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS0+aW5kZXgsIE5PREVfVFlQRV9SRUdVTEFS LCB0cnVlKTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGYyZnNfYnVnX29uKHNiaSwgZW50 cnktPmluZGV4ICE9IG5pZF9vZl9ub2RlKHNiaSwgZW50cnkpKTsKPiA+ICsgICAgICAgICAgICAg ICB9Cj4gPiArICAgICAgICAgICAgICAgaWYgKGYyZnNfaW5fd2FybV9ub2RlX2xpc3Qoc2JpLCBl bnRyeSkpCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBmMmZzX2RlbF9mc3luY19ub2RlX2Vu dHJ5KHNiaSwgZW50cnkpOwo+ID4gKwo+ID4gICAgICAgICAgICAgICAgIGRlY19wYWdlX2NvdW50 KHNiaSwgRjJGU19XQl9DUF9EQVRBKTsKPiA+Cj4gPiAgICAgICAgICAgICAgICAgaWYgKCFnZXRf cGFnZXMoc2JpLCBGMkZTX1dCX0NQX0RBVEEpICYmCj4gPiBAQCAtNjU1LDE1ICs2MzcsMTUgQEAg c3RhdGljIHZvaWQgX19zdWJtaXRfbWVyZ2VkX2JpbyhzdHJ1Y3QgZjJmc19iaW9faW5mbyAqaW8p Cj4gPiAgICAgICAgIGlvLT5iaW8gPSBOVUxMOwo+ID4gIH0KPiA+Cj4gPiAtc3RhdGljIGJvb2wg X19oYXNfbWVyZ2VkX3BhZ2Uoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBzdHJ1Y3QgYmlvICpi aW8sCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1 Y3QgZm9saW8gKmZvbGlvLCBuaWRfdCBpbm8pCj4gPiArc3RhdGljIGJvb2wgX19oYXNfbWVyZ2Vk X3BhZ2Uoc3RydWN0IGJpbyAqYmlvLCBzdHJ1Y3QgaW5vZGUgKmlub2RlLAo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGZvbGlvICpmb2xp bykKPiA+ICB7Cj4gPiAgICAgICAgIHN0cnVjdCBmb2xpb19pdGVyIGZpOwo+ID4KPiA+ICAgICAg ICAgaWYgKCFiaW8pCj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwo+ID4KPiA+IC0g ICAgICAgaWYgKCFpbm9kZSAmJiAhZm9saW8gJiYgIWlubykKPiA+ICsgICAgICAgaWYgKCFpbm9k ZSAmJiAhZm9saW8pCj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cj4gPgo+ID4gICAg ICAgICBpZiAoZjJmc19pc19jYWNoZV9iaW8oYmlvKSkKPiA+IEBAIC02ODIsOCArNjY0LDYgQEAg c3RhdGljIGJvb2wgX19oYXNfbWVyZ2VkX3BhZ2Uoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBz dHJ1Y3QgYmlvICpiaW8sCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK PiA+ICAgICAgICAgICAgICAgICBpZiAoZm9saW8gJiYgZm9saW8gPT0gdGFyZ2V0KQo+ID4gICAg ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cj4gPiAtICAgICAgICAgICAgICAgaWYg KGlubyAmJiBpbm8gPT0gaW5vX29mX25vZGUoc2JpLCB0YXJnZXQpKQo+ID4gLSAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIHRydWU7Cj4gPiAgICAgICAgIH0KPiA+Cj4gPiAgICAgICAgIHJl dHVybiBmYWxzZTsKPiA+IEBAIC03NTIsMjQgKzczMiwyMyBAQCBzdGF0aWMgdm9pZCBfX2YyZnNf c3VibWl0X21lcmdlZF93cml0ZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPgo+ID4gIHN0 YXRpYyB2b2lkIF9fc3VibWl0X21lcmdlZF93cml0ZV9jb25kKHN0cnVjdCBmMmZzX3NiX2luZm8g KnNiaSwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGlub2RlICpp bm9kZSwgc3RydWN0IGZvbGlvICpmb2xpbywKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbmlkX3QgaW5vLCBlbnVtIHBhZ2VfdHlwZSB0eXBlLCBib29sIHdyaXRlYmFjaykKPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB3cml0ZWJhY2spCj4gSGkgQ2hh bywKPiBzZWVtcyB0aGlzIGZ1bmN0aW9uIGp1c3Qgb25seSBoYW5kbGUgREFUQSB0eXBlIG5vdywg c28gY2FuIHdlIHJlbmFtZQo+IGl0IHh4eF9kYXRhX3h4eCBmb3IgZWFzeSByZWFkaW5nPwoKQ2Fu IHdlIGdldCB2OT8gOikKCj4gb3RoZXJzIExHVE0uCj4gUmV2aWV3ZWQtYnk6IFpoaWd1byBOaXUg PHpoaWd1by5uaXVAdW5pc29jLmNvbT4KPiB0aGFua3MhCj4gPiAgewo+ID4gICAgICAgICBlbnVt IHRlbXBfdHlwZSB0ZW1wOwo+ID4gICAgICAgICBib29sIHJldCA9IHRydWU7Cj4gPiAtICAgICAg IGJvb2wgZm9yY2UgPSAhaW5vZGUgJiYgIWZvbGlvICYmICFpbm87Cj4gPiArICAgICAgIGJvb2wg Zm9yY2UgPSAhaW5vZGUgJiYgIWZvbGlvOwo+ID4KPiA+ICAgICAgICAgZm9yICh0ZW1wID0gSE9U OyB0ZW1wIDwgTlJfVEVNUF9UWVBFOyB0ZW1wKyspIHsKPiA+IC0gICAgICAgICAgICAgICBpZiAo IWZvcmNlKSAgICAgewo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgZW51bSBwYWdlX3R5cGUg YnR5cGUgPSBQQUdFX1RZUEVfT0ZfQklPKHR5cGUpOwo+ID4gLSAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IGYyZnNfYmlvX2luZm8gKmlvID0gc2JpLT53cml0ZV9pb1tidHlwZV0gKyB0ZW1w Owo+ID4gKyAgICAgICAgICAgICAgIGlmICghZm9yY2UpIHsKPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCBmMmZzX2Jpb19pbmZvICppbyA9IHNiaS0+d3JpdGVfaW9bREFUQV0gKyB0 ZW1wOwo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGYyZnNfbG9ja19jb250ZXh0 IGxjOwo+ID4KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGYyZnNfZG93bl9yZWFkX3RyYWNl KCZpby0+aW9fcndzZW0sICZsYyk7Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBf X2hhc19tZXJnZWRfcGFnZShpby0+c2JpLCBpby0+YmlvLCBpbm9kZSwgZm9saW8sIGlubyk7Cj4g PiArICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBfX2hhc19tZXJnZWRfcGFnZShpby0+Ymlv LCBpbm9kZSwgZm9saW8pOwo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgZjJmc191cF9yZWFk X3RyYWNlKCZpby0+aW9fcndzZW0sICZsYyk7Cj4gPiAgICAgICAgICAgICAgICAgfQo+ID4gICAg ICAgICAgICAgICAgIGlmIChyZXQpIHsKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIF9fZjJm c19zdWJtaXRfbWVyZ2VkX3dyaXRlKHNiaSwgdHlwZSwgdGVtcCk7Cj4gPiArICAgICAgICAgICAg ICAgICAgICAgICBfX2YyZnNfc3VibWl0X21lcmdlZF93cml0ZShzYmksIERBVEEsIHRlbXApOwo+ ID4gICAgICAgICAgICAgICAgICAgICAgICAgLyoKPiA+ICAgICAgICAgICAgICAgICAgICAgICAg ICAqIEZvciB3YWl0dGluZyB3cml0ZWJjayBjYXNlLCBpZiB0aGUgYmlvIG93bmVkIGJ5IHRoZQo+ ID4gICAgICAgICAgICAgICAgICAgICAgICAgICogZm9saW8gaXMgYWxyZWFkeSBzdWJtaXR0ZWQs IHdlIGRvIG5vdCBuZWVkIHRvIHN1Ym1pdAo+ID4gQEAgLTc3OCwzMyArNzU3LDIzIEBAIHN0YXRp YyB2b2lkIF9fc3VibWl0X21lcmdlZF93cml0ZV9jb25kKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNi aSwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3cml0ZWJhY2spCj4gPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ID4gICAgICAgICAgICAgICAgIH0KPiA+ IC0KPiA+IC0gICAgICAgICAgICAgICAvKiBUT0RPOiB1c2UgSE9UIHRlbXAgb25seSBmb3IgbWV0 YSBwYWdlcyBub3cuICovCj4gPiAtICAgICAgICAgICAgICAgaWYgKHR5cGUgPj0gTUVUQSkKPiA+ IC0gICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ID4gICAgICAgICB9Cj4gPiAgfQo+ID4K PiA+IC12b2lkIGYyZnNfc3VibWl0X21lcmdlZF93cml0ZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpz YmksIGVudW0gcGFnZV90eXBlIHR5cGUpCj4gPiAtewo+ID4gLSAgICAgICBfX3N1Ym1pdF9tZXJn ZWRfd3JpdGVfY29uZChzYmksIE5VTEwsIE5VTEwsIDAsIHR5cGUsIGZhbHNlKTsKPiA+IC19Cj4g PiAtCj4gPiAgdm9pZCBmMmZzX3N1Ym1pdF9tZXJnZWRfd3JpdGVfY29uZChzdHJ1Y3QgZjJmc19z Yl9pbmZvICpzYmksCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBp bm9kZSAqaW5vZGUsIHN0cnVjdCBmb2xpbyAqZm9saW8sCj4gPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG5pZF90IGlubywgZW51bSBwYWdlX3R5cGUgdHlwZSkKPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZvbGlv ICpmb2xpbykKPiA+ICB7Cj4gPiAtICAgICAgIF9fc3VibWl0X21lcmdlZF93cml0ZV9jb25kKHNi aSwgaW5vZGUsIGZvbGlvLCBpbm8sIHR5cGUsIGZhbHNlKTsKPiA+ICsgICAgICAgX19zdWJtaXRf bWVyZ2VkX3dyaXRlX2NvbmQoc2JpLCBpbm9kZSwgZm9saW8sIGZhbHNlKTsKPiA+ICB9Cj4gPgo+ ID4gIHZvaWQgZjJmc19zdWJtaXRfbWVyZ2VkX3dyaXRlX2ZvbGlvKHN0cnVjdCBmMmZzX3NiX2lu Zm8gKnNiaSwKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGZvbGlv ICpmb2xpbywgZW51bSBwYWdlX3R5cGUgdHlwZSkKPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IGZvbGlvICpmb2xpbykKPiA+ICB7Cj4gPiAtICAgICAgIF9fc3VibWl0 X21lcmdlZF93cml0ZV9jb25kKHNiaSwgTlVMTCwgZm9saW8sIDAsIHR5cGUsIHRydWUpOwo+ID4g KyAgICAgICBfX3N1Ym1pdF9tZXJnZWRfd3JpdGVfY29uZChzYmksIE5VTEwsIGZvbGlvLCB0cnVl KTsKPiA+ICB9Cj4gPgo+ID4gLXN0YXRpYyBib29sIF9faGFzX21lcmdlZF9jYWNoZShzdHJ1Y3Qg YmlvICpiaW8sCj4gPiAtICAgICAgICAgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICp0 YXJnZXQpCj4gPiArc3RhdGljIGJvb2wgX19oYXNfbWVyZ2VkX2NhY2hlKHN0cnVjdCBmMmZzX3Ni X2luZm8gKnNiaSwgc3RydWN0IGJpbyAqYmlvLAo+ID4gKyAgICAgICAgICAgICAgIHN0cnVjdCBm MmZzX2NhY2hlZF9ibG9jayAqdGFyZ2V0LCBuaWRfdCBpbm8pCj4gPiAgewo+ID4gICAgICAgICBz dHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5Owo+ID4KPiA+IEBAIC04MTYsMjcgKzc4NSwz OSBAQCBzdGF0aWMgYm9vbCBfX2hhc19tZXJnZWRfY2FjaGUoc3RydWN0IGJpbyAqYmlvLAo+ID4g ICAgICAgICB3aGlsZSAoZW50cnkpIHsKPiA+ICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ICYm IGVudHJ5ID09IHRhcmdldCkKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVl Owo+ID4gKwo+ID4gKyAgICAgICAgICAgICAgIGlmIChpbm8pIHsKPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgIGlmIChsaWtlbHkoZjJmc19pc19ub2RlX2NhY2hlKGVudHJ5KSkpIHsKPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlub19vZl9ub2RlKHNiaSwgZW50cnkp ID09IGlubykKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gdHJ1ZTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFdBUk5fT05fT05DRSgxKTsKPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgIH0KPiA+ICsgICAgICAgICAgICAgICB9Cj4gPiAgICAgICAgICAgICAgICAg ZW50cnkgPSBlbnRyeS0+bmV4dF9lbnRyeTsKPiA+ICAgICAgICAgfQo+ID4gICAgICAgICByZXR1 cm4gZmFsc2U7Cj4gPiAgfQo+ID4KPiA+IC1ib29sIGYyZnNfc3VibWl0X21lcmdlZF93cml0ZV9j YWNoZShzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5LAo+ID4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBlbnVtIHBhZ2VfdHlwZSB0eXBlKQo+ID4gK2Jvb2wgZjJmc19zdWJt aXRfbWVyZ2VkX3dyaXRlX2NhY2hlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRy eSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlkX3QgaW5vLCBlbnVtIHBh Z2VfdHlwZSB0eXBlKQo+ID4gIHsKPiA+IC0gICAgICAgc3RydWN0IGYyZnNfc2JfaW5mbyAqc2Jp ID0gZW50cnktPmNhY2hlLT5zYmk7Cj4gPiAgICAgICAgIGVudW0gdGVtcF90eXBlIHRlbXA7Cj4g PiAgICAgICAgIGJvb2wgcmV0ID0gZmFsc2U7Cj4gPiArICAgICAgIGJvb2wgZm9yY2UgPSAhZW50 cnkgJiYgIWlubzsKPiA+Cj4gPiAgICAgICAgIGZvciAodGVtcCA9IEhPVDsgdGVtcCA8IE5SX1RF TVBfVFlQRTsgdGVtcCsrKSB7Cj4gPiAgICAgICAgICAgICAgICAgZW51bSBwYWdlX3R5cGUgYnR5 cGUgPSBQQUdFX1RZUEVfT0ZfQklPKHR5cGUpOwo+ID4gICAgICAgICAgICAgICAgIHN0cnVjdCBm MmZzX2Jpb19pbmZvICppbyA9IHNiaS0+d3JpdGVfaW9bYnR5cGVdICsgdGVtcDsKPiA+ICAgICAg ICAgICAgICAgICBzdHJ1Y3QgZjJmc19sb2NrX2NvbnRleHQgbGM7Cj4gPiAtICAgICAgICAgICAg ICAgYm9vbCBtZXJnZWQ7Cj4gPiArICAgICAgICAgICAgICAgYm9vbCBtZXJnZWQgPSB0cnVlOwo+ ID4KPiA+IC0gICAgICAgICAgICAgICBmMmZzX2Rvd25fcmVhZF90cmFjZSgmaW8tPmlvX3J3c2Vt LCAmbGMpOwo+ID4gLSAgICAgICAgICAgICAgIG1lcmdlZCA9IF9faGFzX21lcmdlZF9jYWNoZShp by0+YmlvLCBlbnRyeSk7Cj4gPiAtICAgICAgICAgICAgICAgZjJmc191cF9yZWFkX3RyYWNlKCZp by0+aW9fcndzZW0sICZsYyk7Cj4gPiArICAgICAgICAgICAgICAgaWYgKCFmb3JjZSkgewo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgZjJmc19kb3duX3JlYWRfdHJhY2UoJmlvLT5pb19yd3Nl bSwgJmxjKTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZCA9IF9faGFzX21lcmdl ZF9jYWNoZShzYmksIGlvLT5iaW8sIGVudHJ5LCBpbm8pOwo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgZjJmc191cF9yZWFkX3RyYWNlKCZpby0+aW9fcndzZW0sICZsYyk7Cj4gPiArICAgICAg ICAgICAgICAgfQo+ID4KPiA+ICAgICAgICAgICAgICAgICBpZiAobWVyZ2VkKSB7Cj4gPiAgICAg ICAgICAgICAgICAgICAgICAgICBfX2YyZnNfc3VibWl0X21lcmdlZF93cml0ZShzYmksIHR5cGUs IHRlbXApOwo+ID4gQEAgLTg1MCw2ICs4MzEsMTQgQEAgYm9vbCBmMmZzX3N1Ym1pdF9tZXJnZWRf d3JpdGVfY2FjaGUoc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyeSwKPiA+ICAgICAgICAg cmV0dXJuIHJldDsKPiA+ICB9Cj4gPgo+ID4gK3ZvaWQgZjJmc19zdWJtaXRfbWVyZ2VkX3dyaXRl KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgZW51bSBwYWdlX3R5cGUgdHlwZSkKPiA+ICt7Cj4g PiArICAgICAgIGlmICh0eXBlID09IERBVEEpCj4gPiArICAgICAgICAgICAgICAgX19zdWJtaXRf bWVyZ2VkX3dyaXRlX2NvbmQoc2JpLCBOVUxMLCBOVUxMLCBmYWxzZSk7Cj4gPiArICAgICAgIGVs c2UKPiA+ICsgICAgICAgICAgICAgICBmMmZzX3N1Ym1pdF9tZXJnZWRfd3JpdGVfY2FjaGUoc2Jp LCBOVUxMLCAwLCB0eXBlKTsKPiA+ICt9Cj4gPiArCj4gPiAgdm9pZCBmMmZzX2ZsdXNoX21lcmdl ZF93cml0ZXMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKQo+ID4gIHsKPiA+ICAgICAgICAgZjJm c19zdWJtaXRfbWVyZ2VkX3dyaXRlKHNiaSwgREFUQSk7Cj4gPiBAQCAtODg2LDcgKzg3NSw3IEBA IGludCBmMmZzX3N1Ym1pdF9wYWdlX2JpbyhzdHJ1Y3QgZjJmc19pb19pbmZvICpmaW8pCj4gPiAg ICAgICAgICAgICAgICAgd2JjX2FjY291bnRfY2dyb3VwX293bmVyKGZpby0+aW9fd2JjLCBmaW9f Zm9saW8sIFBBR0VfU0laRSk7Cj4gPgo+ID4gICAgICAgICBpbmNfcGFnZV9jb3VudChmaW8tPnNi aSwgaXNfcmVhZF9pbyhmaW8tPm9wKSA/Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBfX3Jl YWRfaW9fdHlwZShkYXRhX2ZvbGlvKSA6IFdCX0RBVEFfVFlQRShmaW8tPmZvbGlvLCBmYWxzZSkp Owo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgRjJGU19SRF9EQVRBIDogV0JfREFUQV9UWVBF KGZpby0+Zm9saW8sIGZhbHNlKSk7Cj4gPgo+ID4gICAgICAgICBpZiAoaXNfcmVhZF9pbyhiaW9f b3AoYmlvKSkpCj4gPiAgICAgICAgICAgICAgICAgZjJmc19zdWJtaXRfcmVhZF9iaW8oZmlvLT5z YmksIGJpbywgZmlvLT50eXBlKTsKPiA+IEBAIC0xMDIyLDggKzEwMTEsOCBAQCB2b2lkIGYyZnNf c3VibWl0X21lcmdlZF9pcHVfd3JpdGUoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4gICAg ICAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldCkKPiA+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZm91bmQgPSAodGFyZ2V0ID09IGJlLT5iaW8pOwo+ID4gICAgICAgICAgICAg ICAgICAgICAgICAgZWxzZQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Vu ZCA9IF9faGFzX21lcmdlZF9wYWdlKHNiaSwgYmUtPmJpbywgTlVMTCwKPiA+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9saW8sIDApOwo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IF9faGFzX21lcmdlZF9w YWdlKGJlLT5iaW8sCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE5VTEwsIGZvbGlvKTsKPiA+ICAgICAgICAgICAgICAgICAgICAgICAg IGlmIChmb3VuZCkKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4g PiAgICAgICAgICAgICAgICAgfQo+ID4gQEAgLTEwMzksOCArMTAyOCw4IEBAIHZvaWQgZjJmc19z dWJtaXRfbWVyZ2VkX2lwdV93cml0ZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPiAgICAg ICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0KQo+ID4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmb3VuZCA9ICh0YXJnZXQgPT0gYmUtPmJpbyk7Cj4gPiAgICAgICAgICAgICAg ICAgICAgICAgICBlbHNlCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5k ID0gX19oYXNfbWVyZ2VkX3BhZ2Uoc2JpLCBiZS0+YmlvLCBOVUxMLAo+ID4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xpbywgMCk7Cj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gX19oYXNfbWVyZ2VkX3Bh Z2UoYmUtPmJpbywKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTlVMTCwgZm9saW8pOwo+ID4gICAgICAgICAgICAgICAgICAgICAgICAg aWYgKGZvdW5kKSB7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldCA9 IGJlLT5iaW87Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbF9iaW9fZW50 cnkoYmUpOwo+ID4gQEAgLTE0MjcsNyArMTQxNiw3IEBAIHN0YXRpYyB2b2lkIGYyZnNfc3VibWl0 X3BhZ2VfcmVhZChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZnN2ZXJpdHlfaW5mbyAqdmks Cj4gPgo+ID4gIHN0YXRpYyB2b2lkIF9fc2V0X2RhdGFfYmxrYWRkcihzdHJ1Y3QgZG5vZGVfb2Zf ZGF0YSAqZG4sIGJsb2NrX3QgYmxrYWRkcikKPiA+ICB7Cj4gPiAtICAgICAgIF9fbGUzMiAqYWRk ciA9IGdldF9kbm9kZV9hZGRyKGRuLT5pbm9kZSwgZG4tPm5vZGVfZm9saW8pOwo+ID4gKyAgICAg ICBfX2xlMzIgKmFkZHIgPSBnZXRfZG5vZGVfYWRkcihkbi0+aW5vZGUsIGRuLT5ub2RlX2VudHJ5 KTsKPiA+Cj4gPiAgICAgICAgIGRuLT5kYXRhX2Jsa2FkZHIgPSBibGthZGRyOwo+ID4gICAgICAg ICBhZGRyW2RuLT5vZnNfaW5fbm9kZV0gPSBjcHVfdG9fbGUzMihkbi0+ZGF0YV9ibGthZGRyKTsK PiA+IEBAIC0xNDQxLDkgKzE0MzAsOSBAQCBzdGF0aWMgdm9pZCBfX3NldF9kYXRhX2Jsa2FkZHIo c3RydWN0IGRub2RlX29mX2RhdGEgKmRuLCBibG9ja190IGJsa2FkZHIpCj4gPiAgICovCj4gPiAg dm9pZCBmMmZzX3NldF9kYXRhX2Jsa2FkZHIoc3RydWN0IGRub2RlX29mX2RhdGEgKmRuLCBibG9j a190IGJsa2FkZHIpCj4gPiAgewo+ID4gLSAgICAgICBmMmZzX2ZvbGlvX3dhaXRfd3JpdGViYWNr KGRuLT5ub2RlX2ZvbGlvLCBOT0RFLCB0cnVlLCB0cnVlKTsKPiA+ICsgICAgICAgZjJmc19jYWNo ZV93YWl0X3dyaXRlYmFjayhkbi0+bm9kZV9lbnRyeSk7Cj4gPiAgICAgICAgIF9fc2V0X2RhdGFf YmxrYWRkcihkbiwgYmxrYWRkcik7Cj4gPiAtICAgICAgIGlmIChmb2xpb19tYXJrX2RpcnR5KGRu LT5ub2RlX2ZvbGlvKSkKPiA+ICsgICAgICAgaWYgKGYyZnNfbWFya19jYWNoZV9kaXJ0eShkbi0+ bm9kZV9lbnRyeSkpCj4gPiAgICAgICAgICAgICAgICAgZG4tPm5vZGVfY2hhbmdlZCA9IHRydWU7 Cj4gPiAgfQo+ID4KPiA+IEBAIC0xNDcxLDcgKzE0NjAsNyBAQCBpbnQgZjJmc19yZXNlcnZlX25l d19ibG9ja3Moc3RydWN0IGRub2RlX29mX2RhdGEgKmRuLCBibGtjbnRfdCBjb3VudCkKPiA+ICAg ICAgICAgdHJhY2VfZjJmc19yZXNlcnZlX25ld19ibG9ja3MoZG4tPmlub2RlLCBkbi0+bmlkLAo+ ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG4tPm9m c19pbl9ub2RlLCBjb3VudCk7Cj4gPgo+ID4gLSAgICAgICBmMmZzX2ZvbGlvX3dhaXRfd3JpdGVi YWNrKGRuLT5ub2RlX2ZvbGlvLCBOT0RFLCB0cnVlLCB0cnVlKTsKPiA+ICsgICAgICAgZjJmc19j YWNoZV93YWl0X3dyaXRlYmFjayhkbi0+bm9kZV9lbnRyeSk7Cj4gPgo+ID4gICAgICAgICBmb3Ig KDsgY291bnQgPiAwOyBkbi0+b2ZzX2luX25vZGUrKykgewo+ID4gICAgICAgICAgICAgICAgIGJs b2NrX3QgYmxrYWRkciA9IGYyZnNfZGF0YV9ibGthZGRyKGRuKTsKPiA+IEBAIC0xNDgyLDcgKzE0 NzEsNyBAQCBpbnQgZjJmc19yZXNlcnZlX25ld19ibG9ja3Moc3RydWN0IGRub2RlX29mX2RhdGEg KmRuLCBibGtjbnRfdCBjb3VudCkKPiA+ICAgICAgICAgICAgICAgICB9Cj4gPiAgICAgICAgIH0K PiA+Cj4gPiAtICAgICAgIGlmIChmb2xpb19tYXJrX2RpcnR5KGRuLT5ub2RlX2ZvbGlvKSkKPiA+ ICsgICAgICAgaWYgKGYyZnNfbWFya19jYWNoZV9kaXJ0eShkbi0+bm9kZV9lbnRyeSkpCj4gPiAg ICAgICAgICAgICAgICAgZG4tPm5vZGVfY2hhbmdlZCA9IHRydWU7Cj4gPiAgICAgICAgIHJldHVy biAwOwo+ID4gIH0KPiA+IEBAIC0xNTAwLDcgKzE0ODksNyBAQCBpbnQgZjJmc19yZXNlcnZlX25l d19ibG9jayhzdHJ1Y3QgZG5vZGVfb2ZfZGF0YSAqZG4pCj4gPgo+ID4gIGludCBmMmZzX3Jlc2Vy dmVfYmxvY2soc3RydWN0IGRub2RlX29mX2RhdGEgKmRuLCBwZ29mZl90IGluZGV4KQo+ID4gIHsK PiA+IC0gICAgICAgYm9vbCBuZWVkX3B1dCA9IGRuLT5pbm9kZV9mb2xpbyA/IGZhbHNlIDogdHJ1 ZTsKPiA+ICsgICAgICAgYm9vbCBuZWVkX3B1dCA9IGRuLT5pbm9kZV9lbnRyeSA/IGZhbHNlIDog dHJ1ZTsKPiA+ICAgICAgICAgaW50IGVycjsKPiA+Cj4gPiAgICAgICAgIGVyciA9IGYyZnNfZ2V0 X2Rub2RlX29mX2RhdGEoZG4sIGluZGV4LCBBTExPQ19OT0RFKTsKPiA+IEBAIC0xNjY2LDExICsx NjU1LDExIEBAIHN0cnVjdCBmb2xpbyAqZjJmc19nZXRfbG9ja19kYXRhX2ZvbGlvKHN0cnVjdCBp bm9kZSAqaW5vZGUsIHBnb2ZmX3QgaW5kZXgsCj4gPiAgICoKPiA+ICAgKiBBbHNvLCBjYWxsZXIg c2hvdWxkIGdyYWIgYW5kIHJlbGVhc2UgYSByd3NlbSBieSBjYWxsaW5nIGYyZnNfbG9ja19vcCgp IGFuZAo+ID4gICAqIGYyZnNfdW5sb2NrX29wKCkuCj4gPiAtICogTm90ZSB0aGF0LCBpZm9saW8g aXMgc2V0IG9ubHkgYnkgbWFrZV9lbXB0eV9kaXIsIGFuZCBpZiBhbnkgZXJyb3Igb2NjdXIsCj4g PiAtICogaWZvbGlvIHNob3VsZCBiZSByZWxlYXNlZCBieSB0aGlzIGZ1bmN0aW9uLgo+ID4gKyAq IE5vdGUgdGhhdCwgaWVudHJ5IGlzIHNldCBvbmx5IGJ5IG1ha2VfZW1wdHlfZGlyLCBhbmQgaWYg YW55IGVycm9yIG9jY3VyLAo+ID4gKyAqIGllbnRyeSBzaG91bGQgYmUgcmVsZWFzZWQgYnkgdGhp cyBmdW5jdGlvbi4KPiA+ICAgKi8KPiA+ICBzdHJ1Y3QgZm9saW8gKmYyZnNfZ2V0X25ld19kYXRh X2ZvbGlvKHN0cnVjdCBpbm9kZSAqaW5vZGUsCj4gPiAtICAgICAgICAgICAgICAgc3RydWN0IGZv bGlvICppZm9saW8sIHBnb2ZmX3QgaW5kZXgsIGJvb2wgbmV3X2lfc2l6ZSkKPiA+ICsgICAgICAg ICAgICAgICBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmllbnRyeSwgcGdvZmZfdCBpbmRleCwg Ym9vbCBuZXdfaV9zaXplKQo+ID4gIHsKPiA+ICAgICAgICAgc3RydWN0IGFkZHJlc3Nfc3BhY2Ug Km1hcHBpbmcgPSBpbm9kZS0+aV9tYXBwaW5nOwo+ID4gICAgICAgICBzdHJ1Y3QgZm9saW8gKmZv bGlvOwo+ID4gQEAgLTE2ODAsMjAgKzE2NjksMjAgQEAgc3RydWN0IGZvbGlvICpmMmZzX2dldF9u ZXdfZGF0YV9mb2xpbyhzdHJ1Y3QgaW5vZGUgKmlub2RlLAo+ID4gICAgICAgICBmb2xpbyA9IGYy ZnNfZ3JhYl9jYWNoZV9mb2xpbyhtYXBwaW5nLCBpbmRleCwgdHJ1ZSk7Cj4gPiAgICAgICAgIGlm IChJU19FUlIoZm9saW8pKSB7Cj4gPiAgICAgICAgICAgICAgICAgLyoKPiA+IC0gICAgICAgICAg ICAgICAgKiBiZWZvcmUgZXhpdGluZywgd2Ugc2hvdWxkIG1ha2Ugc3VyZSBpZm9saW8gd2lsbCBi ZSByZWxlYXNlZAo+ID4gKyAgICAgICAgICAgICAgICAqIGJlZm9yZSBleGl0aW5nLCB3ZSBzaG91 bGQgbWFrZSBzdXJlIGllbnRyeSB3aWxsIGJlIHJlbGVhc2VkCj4gPiAgICAgICAgICAgICAgICAg ICogaWYgYW55IGVycm9yIG9jY3VyLgo+ID4gICAgICAgICAgICAgICAgICAqLwo+ID4gLSAgICAg ICAgICAgICAgIGYyZnNfZm9saW9fcHV0KGlmb2xpbywgdHJ1ZSk7Cj4gPiArICAgICAgICAgICAg ICAgZjJmc19wdXRfY2FjaGUoaWVudHJ5LCB0cnVlKTsKPiA+ICAgICAgICAgICAgICAgICByZXR1 cm4gRVJSX1BUUigtRU5PTUVNKTsKPiA+ICAgICAgICAgfQo+ID4KPiA+IC0gICAgICAgc2V0X25l d19kbm9kZSgmZG4sIGlub2RlLCBpZm9saW8sIE5VTEwsIDApOwo+ID4gKyAgICAgICBzZXRfbmV3 X2Rub2RlKCZkbiwgaW5vZGUsIGllbnRyeSwgTlVMTCwgMCk7Cj4gPiAgICAgICAgIGVyciA9IGYy ZnNfcmVzZXJ2ZV9ibG9jaygmZG4sIGluZGV4KTsKPiA+ICAgICAgICAgaWYgKGVycikgewo+ID4g ICAgICAgICAgICAgICAgIGYyZnNfZm9saW9fcHV0KGZvbGlvLCB0cnVlKTsKPiA+ICAgICAgICAg ICAgICAgICByZXR1cm4gRVJSX1BUUihlcnIpOwo+ID4gICAgICAgICB9Cj4gPiAtICAgICAgIGlm ICghaWZvbGlvKQo+ID4gKyAgICAgICBpZiAoIWllbnRyeSkKPiA+ICAgICAgICAgICAgICAgICBm MmZzX3B1dF9kbm9kZSgmZG4pOwo+ID4KPiA+ICAgICAgICAgaWYgKGZvbGlvX3Rlc3RfdXB0b2Rh dGUoZm9saW8pKQo+ID4gQEAgLTE3MDYsOCArMTY5NSw4IEBAIHN0cnVjdCBmb2xpbyAqZjJmc19n ZXRfbmV3X2RhdGFfZm9saW8oc3RydWN0IGlub2RlICppbm9kZSwKPiA+ICAgICAgICAgfSBlbHNl IHsKPiA+ICAgICAgICAgICAgICAgICBmMmZzX2ZvbGlvX3B1dChmb2xpbywgdHJ1ZSk7Cj4gPgo+ ID4gLSAgICAgICAgICAgICAgIC8qIGlmIGlmb2xpbyBleGlzdHMsIGJsa2FkZHIgc2hvdWxkIGJl IE5FV19BRERSICovCj4gPiAtICAgICAgICAgICAgICAgZjJmc19idWdfb24oRjJGU19JX1NCKGlu b2RlKSwgaWZvbGlvKTsKPiA+ICsgICAgICAgICAgICAgICAvKiBpZiBpZW50cnkgZXhpc3RzLCBi bGthZGRyIHNob3VsZCBiZSBORVdfQUREUiAqLwo+ID4gKyAgICAgICAgICAgICAgIGYyZnNfYnVn X29uKEYyRlNfSV9TQihpbm9kZSksIGllbnRyeSk7Cj4gPiAgICAgICAgICAgICAgICAgZm9saW8g PSBmMmZzX2dldF9sb2NrX2RhdGFfZm9saW8oaW5vZGUsIGluZGV4LCB0cnVlKTsKPiA+ICAgICAg ICAgICAgICAgICBpZiAoSVNfRVJSKGZvbGlvKSkKPiA+ICAgICAgICAgICAgICAgICAgICAgICAg IHJldHVybiBmb2xpbzsKPiA+IEBAIC0xNzQ0LDcgKzE3MzMsNyBAQCBzdGF0aWMgaW50IF9fYWxs b2NhdGVfZGF0YV9ibG9jayhzdHJ1Y3QgZG5vZGVfb2ZfZGF0YSAqZG4sIGludCBzZWdfdHlwZSkK PiA+Cj4gPiAgICAgICAgIHNldF9zdW1tYXJ5KCZzdW0sIGRuLT5uaWQsIGRuLT5vZnNfaW5fbm9k ZSwgbmkudmVyc2lvbik7Cj4gPiAgICAgICAgIG9sZF9ibGthZGRyID0gZG4tPmRhdGFfYmxrYWRk cjsKPiA+IC0gICAgICAgZXJyID0gZjJmc19hbGxvY2F0ZV9kYXRhX2Jsb2NrKHNiaSwgTlVMTCwg b2xkX2Jsa2FkZHIsCj4gPiArICAgICAgIGVyciA9IGYyZnNfYWxsb2NhdGVfZGF0YV9ibG9jayhz YmksIG9sZF9ibGthZGRyLAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZG4t PmRhdGFfYmxrYWRkciwgJnN1bSwgc2VnX3R5cGUsIE5VTEwpOwo+ID4gICAgICAgICBpZiAoZXJy KSB7Cj4gPiAgICAgICAgICAgICAgICAgaWYgKG9sZF9ibGthZGRyID09IE5VTExfQUREUikKPiA+ IEBAIC0xOTU2LDcgKzE5NDUsNyBAQCBpbnQgZjJmc19tYXBfYmxvY2tzKHN0cnVjdCBpbm9kZSAq aW5vZGUsIHN0cnVjdCBmMmZzX21hcF9ibG9ja3MgKm1hcCwgaW50IGZsYWcpCj4gPiAgICAgICAg IHN0YXJ0X3Bnb2ZzID0gcGdvZnM7Cj4gPiAgICAgICAgIHByZWFsbG9jID0gMDsKPiA+ICAgICAg ICAgbGFzdF9vZnNfaW5fbm9kZSA9IG9mc19pbl9ub2RlID0gZG4ub2ZzX2luX25vZGU7Cj4gPiAt ICAgICAgIGVuZF9vZmZzZXQgPSBBRERSU19QRVJfUEFHRShkbi5ub2RlX2ZvbGlvLCBpbm9kZSk7 Cj4gPiArICAgICAgIGVuZF9vZmZzZXQgPSBBRERSU19QRVJfUEFHRShkbi5ub2RlX2VudHJ5LCBp bm9kZSk7Cj4gPgo+ID4gIG5leHRfYmxvY2s6Cj4gPiAgICAgICAgIGJsa2FkZHIgPSBmMmZzX2Rh dGFfYmxrYWRkcigmZG4pOwo+ID4gQEAgLTIyMDcsMTUgKzIxOTYsMTUgQEAgc3RhdGljIGludCBm MmZzX3hhdHRyX2ZpZW1hcChzdHJ1Y3QgaW5vZGUgKmlub2RlLAo+ID4KPiA+ICAgICAgICAgaWYg KGYyZnNfaGFzX2lubGluZV94YXR0cihpbm9kZSkpIHsKPiA+ICAgICAgICAgICAgICAgICBpbnQg b2Zmc2V0Owo+ID4gLSAgICAgICAgICAgICAgIHN0cnVjdCBmb2xpbyAqZm9saW8gPSBmMmZzX2dy YWJfY2FjaGVfZm9saW8oTk9ERV9NQVBQSU5HKHNiaSksCj4gPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGlub2RlLT5pX2lubywgZmFsc2UpOwo+ID4gKyAgICAgICAgICAgICAgIHN0 cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnkgPQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmMmZzX2dyYWJfbm9kZV9jYWNoZShzYmksIGlub2RlLT5pX2lubyk7Cj4gPgo+ ID4gLSAgICAgICAgICAgICAgIGlmIChJU19FUlIoZm9saW8pKQo+ID4gLSAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIFBUUl9FUlIoZm9saW8pOwo+ID4gKyAgICAgICAgICAgICAgIGlmIChJ U19FUlIoZW50cnkpKQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIo ZW50cnkpOwo+ID4KPiA+ICAgICAgICAgICAgICAgICBlcnIgPSBmMmZzX2dldF9ub2RlX2luZm8o c2JpLCBpbm9kZS0+aV9pbm8sICZuaSwgZmFsc2UpOwo+ID4gICAgICAgICAgICAgICAgIGlmIChl cnIpIHsKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGYyZnNfZm9saW9fcHV0KGZvbGlvLCB0 cnVlKTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGYyZnNfcHV0X2NhY2hlKGVudHJ5LCB0 cnVlKTsKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnI7Cj4gPiAgICAgICAg ICAgICAgICAgfQo+ID4KPiA+IEBAIC0yMjI3LDcgKzIyMTYsNyBAQCBzdGF0aWMgaW50IGYyZnNf eGF0dHJfZmllbWFwKHN0cnVjdCBpbm9kZSAqaW5vZGUsCj4gPiAgICAgICAgICAgICAgICAgcGh5 cyArPSBvZmZzZXQ7Cj4gPiAgICAgICAgICAgICAgICAgbGVuID0gaW5saW5lX3hhdHRyX3NpemUo aW5vZGUpOwo+ID4KPiA+IC0gICAgICAgICAgICAgICBmMmZzX2ZvbGlvX3B1dChmb2xpbywgdHJ1 ZSk7Cj4gPiArICAgICAgICAgICAgICAgZjJmc19wdXRfY2FjaGUoZW50cnksIHRydWUpOwo+ID4K PiA+ICAgICAgICAgICAgICAgICBmbGFncyA9IEZJRU1BUF9FWFRFTlRfREFUQV9JTkxJTkUgfCBG SUVNQVBfRVhURU5UX05PVF9BTElHTkVEOwo+ID4KPiA+IEBAIC0yMjQxLDIyICsyMjMwLDIyIEBA IHN0YXRpYyBpbnQgZjJmc194YXR0cl9maWVtYXAoc3RydWN0IGlub2RlICppbm9kZSwKPiA+ICAg ICAgICAgfQo+ID4KPiA+ICAgICAgICAgaWYgKHhuaWQpIHsKPiA+IC0gICAgICAgICAgICAgICBz dHJ1Y3QgZm9saW8gKmZvbGlvID0gZjJmc19ncmFiX2NhY2hlX2ZvbGlvKE5PREVfTUFQUElORyhz YmkpLAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bmlkLCBmYWxzZSk7Cj4g PiArICAgICAgICAgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyeSA9Cj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYyZnNfZ3JhYl9ub2RlX2NhY2hlKHNiaSwg eG5pZCk7Cj4gPgo+ID4gLSAgICAgICAgICAgICAgIGlmIChJU19FUlIoZm9saW8pKQo+ID4gLSAg ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIoZm9saW8pOwo+ID4gKyAgICAgICAg ICAgICAgIGlmIChJU19FUlIoZW50cnkpKQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIFBUUl9FUlIoZW50cnkpOwo+ID4KPiA+ICAgICAgICAgICAgICAgICBlcnIgPSBmMmZzX2dl dF9ub2RlX2luZm8oc2JpLCB4bmlkLCAmbmksIGZhbHNlKTsKPiA+ICAgICAgICAgICAgICAgICBp ZiAoZXJyKSB7Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBmMmZzX2ZvbGlvX3B1dChmb2xp bywgdHJ1ZSk7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBmMmZzX3B1dF9jYWNoZShlbnRy eSwgdHJ1ZSk7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyOwo+ID4gICAg ICAgICAgICAgICAgIH0KPiA+Cj4gPiAgICAgICAgICAgICAgICAgcGh5cyA9IEYyRlNfQkxLX1RP X0JZVEVTKHNiaSwgbmkuYmxrX2FkZHIpOwo+ID4gICAgICAgICAgICAgICAgIGxlbiA9IGlub2Rl LT5pX3NiLT5zX2Jsb2Nrc2l6ZTsKPiA+Cj4gPiAtICAgICAgICAgICAgICAgZjJmc19mb2xpb19w dXQoZm9saW8sIHRydWUpOwo+ID4gKyAgICAgICAgICAgICAgIGYyZnNfcHV0X2NhY2hlKGVudHJ5 LCB0cnVlKTsKPiA+Cj4gPiAgICAgICAgICAgICAgICAgZmxhZ3MgPSBGSUVNQVBfRVhURU5UX0xB U1Q7Cj4gPiAgICAgICAgIH0KPiA+IEBAIC0yNjE5LDcgKzI2MDgsNyBAQCBpbnQgZjJmc19yZWFk X211bHRpX3BhZ2VzKHN0cnVjdCBjb21wcmVzc19jdHggKmNjLCBzdHJ1Y3QgYmlvICoqYmlvX3Jl dCwKPiA+ICAgICAgICAgZm9yIChpID0gMTsgaSA8IGNjLT5jbHVzdGVyX3NpemU7IGkrKykgewo+ ID4gICAgICAgICAgICAgICAgIGJsb2NrX3QgYmxrYWRkcjsKPiA+Cj4gPiAtICAgICAgICAgICAg ICAgYmxrYWRkciA9IGZyb21fZG5vZGUgPyBkYXRhX2Jsa2FkZHIoZG4uaW5vZGUsIGRuLm5vZGVf Zm9saW8sCj4gPiArICAgICAgICAgICAgICAgYmxrYWRkciA9IGZyb21fZG5vZGUgPyBkYXRhX2Js a2FkZHIoZG4uaW5vZGUsIGRuLm5vZGVfZW50cnksCj4gPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZG4ub2ZzX2luX25vZGUgKyBpKSA6Cj4gPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZWkuYmxrICsgaSAtIDE7Cj4gPgo+ID4gQEAgLTI2 NTMsNyArMjY0Miw3IEBAIGludCBmMmZzX3JlYWRfbXVsdGlfcGFnZXMoc3RydWN0IGNvbXByZXNz X2N0eCAqY2MsIHN0cnVjdCBiaW8gKipiaW9fcmV0LAo+ID4gICAgICAgICAgICAgICAgIGJsb2Nr X3QgYmxrYWRkcjsKPiA+ICAgICAgICAgICAgICAgICBzdHJ1Y3QgYmlvX3Bvc3RfcmVhZF9jdHgg KmN0eDsKPiA+Cj4gPiAtICAgICAgICAgICAgICAgYmxrYWRkciA9IGZyb21fZG5vZGUgPyBkYXRh X2Jsa2FkZHIoZG4uaW5vZGUsIGRuLm5vZGVfZm9saW8sCj4gPiArICAgICAgICAgICAgICAgYmxr YWRkciA9IGZyb21fZG5vZGUgPyBkYXRhX2Jsa2FkZHIoZG4uaW5vZGUsIGRuLm5vZGVfZW50cnks Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG4ub2ZzX2luX25v ZGUgKyBpICsgMSkgOgo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGVpLmJsayArIGk7Cj4gPgo+ID4gQEAgLTM2NDYsNyArMzYzNSw3IEBAIHN0YXRpYyBpbnQgZjJm c193cml0ZV9jYWNoZV9wYWdlcyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKPiA+ICAg ICAgICAgICAgICAgICAgICAgICAgIGlmIChmb2xpb190ZXN0X3dyaXRlYmFjayhmb2xpbykpIHsK PiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdiYy0+c3luY19tb2RlID09 IFdCX1NZTkNfTk9ORSkKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBnb3RvIGNvbnRpbnVlX3VubG9jazsKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZjJmc19mb2xpb193YWl0X3dyaXRlYmFjayhmb2xpbywgREFUQSwgdHJ1ZSwgdHJ1ZSk7Cj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYyZnNfZm9saW9fd2FpdF93cml0ZWJh Y2soZm9saW8sIHRydWUsIHRydWUpOwo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgfQo+ID4K PiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZm9saW9fY2xlYXJfZGlydHlfZm9yX2lv KGZvbGlvKSkKPiA+IEBAIC0zNzI4LDggKzM3MTcsOCBAQCBzdGF0aWMgaW50IGYyZnNfd3JpdGVf Y2FjaGVfcGFnZXMoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsCj4gPiAgICAgICAgICAg ICAgICAgbWFwcGluZy0+d3JpdGViYWNrX2luZGV4ID0gZG9uZV9pbmRleDsKPiA+Cj4gPiAgICAg ICAgIGlmIChud3JpdHRlbikKPiA+IC0gICAgICAgICAgICAgICBmMmZzX3N1Ym1pdF9tZXJnZWRf d3JpdGVfY29uZChGMkZTX01fU0IobWFwcGluZyksIG1hcHBpbmctPmhvc3QsCj4gPiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TlVMTCwgMCwgREFUQSk7Cj4gPiArICAgICAgICAgICAgICAgZjJmc19zdWJtaXRfbWVyZ2VkX3dy aXRlX2NvbmQoRjJGU19NX1NCKG1hcHBpbmcpLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG1hcHBpbmctPmhvc3QsIE5VTEwpOwo+ID4gICAgICAgICAvKiBzdWJt aXQgY2FjaGVkIGJpbyBvZiBJUFUgd3JpdGUgKi8KPiA+ICAgICAgICAgaWYgKGJpbykKPiA+ICAg ICAgICAgICAgICAgICBmMmZzX3N1Ym1pdF9tZXJnZWRfaXB1X3dyaXRlKHNiaSwgJmJpbywgTlVM TCk7Cj4gPiBAQCAtMzkwNyw3ICszODk2LDcgQEAgc3RhdGljIGludCBwcmVwYXJlX3dyaXRlX2Jl Z2luKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+ICAgICAgICAgcGdvZmZfdCBpbmRleCA9 IGZvbGlvLT5pbmRleDsKPiA+ICAgICAgICAgc3RydWN0IGRub2RlX29mX2RhdGEgZG47Cj4gPiAg ICAgICAgIHN0cnVjdCBmMmZzX2xvY2tfY29udGV4dCBsYzsKPiA+IC0gICAgICAgc3RydWN0IGZv bGlvICppZm9saW87Cj4gPiArICAgICAgIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqaWVudHJ5 Owo+ID4gICAgICAgICBib29sIGxvY2tlZCA9IGZhbHNlOwo+ID4gICAgICAgICBpbnQgZmxhZyA9 IEYyRlNfR0VUX0JMT0NLX1BSRV9BSU87Cj4gPiAgICAgICAgIGludCBlcnIgPSAwOwo+ID4gQEAg LTM5MzgsMjAgKzM5MjcsMjAgQEAgc3RhdGljIGludCBwcmVwYXJlX3dyaXRlX2JlZ2luKHN0cnVj dCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+Cj4gPiAgcmVzdGFydDoKPiA+ICAgICAgICAgLyogY2hl Y2sgaW5saW5lX2RhdGEgKi8KPiA+IC0gICAgICAgaWZvbGlvID0gZjJmc19nZXRfaW5vZGVfZm9s aW8oc2JpLCBpbm9kZS0+aV9pbm8pOwo+ID4gLSAgICAgICBpZiAoSVNfRVJSKGlmb2xpbykpIHsK PiA+IC0gICAgICAgICAgICAgICBlcnIgPSBQVFJfRVJSKGlmb2xpbyk7Cj4gPiArICAgICAgIGll bnRyeSA9IGYyZnNfZ2V0X2lub2RlX2NhY2hlKHNiaSwgaW5vZGUtPmlfaW5vKTsKPiA+ICsgICAg ICAgaWYgKElTX0VSUihpZW50cnkpKSB7Cj4gPiArICAgICAgICAgICAgICAgZXJyID0gUFRSX0VS UihpZW50cnkpOwo+ID4gICAgICAgICAgICAgICAgIGdvdG8gdW5sb2NrX291dDsKPiA+ICAgICAg ICAgfQo+ID4KPiA+IC0gICAgICAgc2V0X25ld19kbm9kZSgmZG4sIGlub2RlLCBpZm9saW8sIGlm b2xpbywgMCk7Cj4gPiArICAgICAgIHNldF9uZXdfZG5vZGUoJmRuLCBpbm9kZSwgaWVudHJ5LCBp ZW50cnksIDApOwo+ID4KPiA+ICAgICAgICAgaWYgKGYyZnNfaGFzX2lubGluZV9kYXRhKGlub2Rl KSkgewo+ID4gICAgICAgICAgICAgICAgIGlmIChwb3MgKyBsZW4gPD0gTUFYX0lOTElORV9EQVRB KGlub2RlKSkgewo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgZjJmc19kb19yZWFkX2lubGlu ZV9kYXRhKGZvbGlvLCBpZm9saW8pOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZjJmc19k b19yZWFkX2lubGluZV9kYXRhKGZvbGlvLCBpZW50cnkpOwo+ID4gICAgICAgICAgICAgICAgICAg ICAgICAgc2V0X2lub2RlX2ZsYWcoaW5vZGUsIEZJX0RBVEFfRVhJU1QpOwo+ID4gICAgICAgICAg ICAgICAgICAgICAgICAgaWYgKGlub2RlLT5pX25saW5rKQo+ID4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBmb2xpb19zZXRfZjJmc19pbmxpbmUoaWZvbGlvKTsKPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZjJmc19jYWNoZV9zZXRfaW5saW5lKGllbnRyeSk7Cj4g PiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG91dDsKPiA+ICAgICAgICAgICAgICAgICB9 Cj4gPiAgICAgICAgICAgICAgICAgZXJyID0gZjJmc19jb252ZXJ0X2lubGluZV9mb2xpbygmZG4s IGZvbGlvKTsKPiA+IEBAIC0zOTk4LDE0ICszOTg3LDE0IEBAIHN0YXRpYyBpbnQgX19maW5kX2Rh dGFfYmxvY2soc3RydWN0IGlub2RlICppbm9kZSwgcGdvZmZfdCBpbmRleCwKPiA+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tfdCAqYmxrX2FkZHIpCj4gPiAgewo+ID4gICAg ICAgICBzdHJ1Y3QgZG5vZGVfb2ZfZGF0YSBkbjsKPiA+IC0gICAgICAgc3RydWN0IGZvbGlvICpp Zm9saW87Cj4gPiArICAgICAgIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqaWVudHJ5Owo+ID4g ICAgICAgICBpbnQgZXJyID0gMDsKPiA+Cj4gPiAtICAgICAgIGlmb2xpbyA9IGYyZnNfZ2V0X2lu b2RlX2ZvbGlvKEYyRlNfSV9TQihpbm9kZSksIGlub2RlLT5pX2lubyk7Cj4gPiAtICAgICAgIGlm IChJU19FUlIoaWZvbGlvKSkKPiA+IC0gICAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihpZm9s aW8pOwo+ID4gKyAgICAgICBpZW50cnkgPSBmMmZzX2dldF9pbm9kZV9jYWNoZShGMkZTX0lfU0Io aW5vZGUpLCBpbm9kZS0+aV9pbm8pOwo+ID4gKyAgICAgICBpZiAoSVNfRVJSKGllbnRyeSkpCj4g PiArICAgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIoaWVudHJ5KTsKPiA+Cj4gPiAtICAgICAg IHNldF9uZXdfZG5vZGUoJmRuLCBpbm9kZSwgaWZvbGlvLCBpZm9saW8sIDApOwo+ID4gKyAgICAg ICBzZXRfbmV3X2Rub2RlKCZkbiwgaW5vZGUsIGllbnRyeSwgaWVudHJ5LCAwKTsKPiA+Cj4gPiAg ICAgICAgIGlmICghZjJmc19sb29rdXBfcmVhZF9leHRlbnRfY2FjaGVfYmxvY2soaW5vZGUsIGlu ZGV4LAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZkbi5kYXRhX2Jsa2FkZHIpKSB7Cj4gPiBAQCAtNDAyNywxNyArNDAxNiwxNyBAQCBzdGF0aWMg aW50IF9fcmVzZXJ2ZV9kYXRhX2Jsb2NrKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHBnb2ZmX3QgaW5k ZXgsCj4gPiAgICAgICAgIHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSA9IEYyRlNfSV9TQihpbm9k ZSk7Cj4gPiAgICAgICAgIHN0cnVjdCBkbm9kZV9vZl9kYXRhIGRuOwo+ID4gICAgICAgICBzdHJ1 Y3QgZjJmc19sb2NrX2NvbnRleHQgbGM7Cj4gPiAtICAgICAgIHN0cnVjdCBmb2xpbyAqaWZvbGlv Owo+ID4gKyAgICAgICBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmllbnRyeTsKPiA+ICAgICAg ICAgaW50IGVyciA9IDA7Cj4gPgo+ID4gICAgICAgICBmMmZzX21hcF9sb2NrKHNiaSwgJmxjLCBG MkZTX0dFVF9CTE9DS19QUkVfQUlPKTsKPiA+Cj4gPiAtICAgICAgIGlmb2xpbyA9IGYyZnNfZ2V0 X2lub2RlX2ZvbGlvKHNiaSwgaW5vZGUtPmlfaW5vKTsKPiA+IC0gICAgICAgaWYgKElTX0VSUihp Zm9saW8pKSB7Cj4gPiAtICAgICAgICAgICAgICAgZXJyID0gUFRSX0VSUihpZm9saW8pOwo+ID4g KyAgICAgICBpZW50cnkgPSBmMmZzX2dldF9pbm9kZV9jYWNoZShzYmksIGlub2RlLT5pX2lubyk7 Cj4gPiArICAgICAgIGlmIChJU19FUlIoaWVudHJ5KSkgewo+ID4gKyAgICAgICAgICAgICAgIGVy ciA9IFBUUl9FUlIoaWVudHJ5KTsKPiA+ICAgICAgICAgICAgICAgICBnb3RvIHVubG9ja19vdXQ7 Cj4gPiAgICAgICAgIH0KPiA+IC0gICAgICAgc2V0X25ld19kbm9kZSgmZG4sIGlub2RlLCBpZm9s aW8sIGlmb2xpbywgMCk7Cj4gPiArICAgICAgIHNldF9uZXdfZG5vZGUoJmRuLCBpbm9kZSwgaWVu dHJ5LCBpZW50cnksIDApOwo+ID4KPiA+ICAgICAgICAgaWYgKCFmMmZzX2xvb2t1cF9yZWFkX2V4 dGVudF9jYWNoZV9ibG9jayhkbi5pbm9kZSwgaW5kZXgsCj4gPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZG4uZGF0YV9ibGthZGRyKSkKPiA+IEBAIC00 MTkzLDcgKzQxODIsNyBAQCBzdGF0aWMgaW50IGYyZnNfd3JpdGVfYmVnaW4oY29uc3Qgc3RydWN0 IGtpb2NiICppb2NiLAo+ID4gICAgICAgICAgICAgICAgIH0KPiA+ICAgICAgICAgfQo+ID4KPiA+ IC0gICAgICAgZjJmc19mb2xpb193YWl0X3dyaXRlYmFjayhmb2xpbywgREFUQSwgZmFsc2UsIHRy dWUpOwo+ID4gKyAgICAgICBmMmZzX2ZvbGlvX3dhaXRfd3JpdGViYWNrKGZvbGlvLCBmYWxzZSwg dHJ1ZSk7Cj4gPgo+ID4gICAgICAgICBpZiAobGVuID09IGZvbGlvX3NpemUoZm9saW8pIHx8IGZv bGlvX3Rlc3RfdXB0b2RhdGUoZm9saW8pKQo+ID4gICAgICAgICAgICAgICAgIHJldHVybiAwOwo+ ID4gQEAgLTQzMTAsMTIgKzQyOTksOCBAQCB2b2lkIGYyZnNfaW52YWxpZGF0ZV9mb2xpbyhzdHJ1 Y3QgZm9saW8gKmZvbGlvLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQo+ID4gICAgICAg ICAgICAgICAgIHJldHVybjsKPiA+Cj4gPiAgICAgICAgIGlmIChmb2xpb190ZXN0X2RpcnR5KGZv bGlvKSkgewo+ID4gLSAgICAgICAgICAgICAgIGlmIChpbm9kZS0+aV9pbm8gPT0gRjJGU19OT0RF X0lOTyhzYmkpKSB7Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBkZWNfcGFnZV9jb3VudChz YmksIEYyRlNfRElSVFlfTk9ERVMpOwo+ID4gLSAgICAgICAgICAgICAgIH0gZWxzZSB7Cj4gPiAt ICAgICAgICAgICAgICAgICAgICAgICBpbm9kZV9kZWNfZGlydHlfcGFnZXMoaW5vZGUpOwo+ID4g LSAgICAgICAgICAgICAgICAgICAgICAgZjJmc19yZW1vdmVfZGlydHlfaW5vZGUoaW5vZGUpOwo+ ID4gLSAgICAgICAgICAgICAgIH0KPiA+ICsgICAgICAgICAgICAgICBpbm9kZV9kZWNfZGlydHlf cGFnZXMoaW5vZGUpOwo+ID4gKyAgICAgICAgICAgICAgIGYyZnNfcmVtb3ZlX2RpcnR5X2lub2Rl KGlub2RlKTsKPiA+ICAgICAgICAgfQo+ID4KPiA+ICAgICAgICAgaWYgKG9mZnNldCB8fCBsZW5n dGggIT0gZm9saW9fc2l6ZShmb2xpbykpCj4gPiBkaWZmIC0tZ2l0IGEvZnMvZjJmcy9kZWJ1Zy5j IGIvZnMvZjJmcy9kZWJ1Zy5jCj4gPiBpbmRleCAyNDgxOWQ0YzBkNTUuLmMwOWM1ZjcwMGM4OSAx MDA2NDQKPiA+IC0tLSBhL2ZzL2YyZnMvZGVidWcuYwo+ID4gKysrIGIvZnMvZjJmcy9kZWJ1Zy5j Cj4gPiBAQCAtMjIyLDggKzIyMiw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV9nZW5lcmFsX3N0YXR1 cyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkpCj4gPiAgICAgICAgIHNpLT5mcmVlX3NlY3MgPSBm cmVlX3NlY3Rpb25zKHNiaSk7Cj4gPiAgICAgICAgIHNpLT5wcmVmcmVlX2NvdW50ID0gcHJlZnJl ZV9zZWdtZW50cyhzYmkpOwo+ID4gICAgICAgICBzaS0+ZGlydHlfY291bnQgPSBkaXJ0eV9zZWdt ZW50cyhzYmkpOwo+ID4gLSAgICAgICBpZiAoc2JpLT5ub2RlX2lub2RlKQo+ID4gLSAgICAgICAg ICAgICAgIHNpLT5ub2RlX3BhZ2VzID0gTk9ERV9NQVBQSU5HKHNiaSktPm5ycGFnZXM7Cj4gPiAr ICAgICAgIHNpLT5ub2RlX2NhY2hlcyA9IE5PREVfQ0FDSEUoc2JpKS0+bnVtX2VudHJpZXM7Cj4g PiAgICAgICAgIHNpLT5tZXRhX2NhY2hlcyA9IE1FVEFfQ0FDSEUoc2JpKS0+bnVtX2VudHJpZXM7 Cj4gPiAgI2lmZGVmIENPTkZJR19GMkZTX0ZTX0NPTVBSRVNTSU9OCj4gPiAgICAgICAgIGlmIChz YmktPmNvbXByZXNzX2lub2RlKSB7Cj4gPiBAQCAtMzgyLDEzICszODEsMTAgQEAgc3RhdGljIHZv aWQgdXBkYXRlX21lbV9pbmZvKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSkKPiA+ICAgICAgICAg fQo+ID4KPiA+ICAgICAgICAgc2ktPnBhZ2VfbWVtID0gMDsKPiA+IC0gICAgICAgaWYgKHNiaS0+ bm9kZV9pbm9kZSkgewo+ID4gLSAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbnBhZ2VzID0g Tk9ERV9NQVBQSU5HKHNiaSktPm5ycGFnZXM7Cj4gPiAtCj4gPiAtICAgICAgICAgICAgICAgc2kt PnBhZ2VfbWVtICs9ICh1bnNpZ25lZCBsb25nIGxvbmcpbnBhZ2VzIDw8IFBBR0VfU0hJRlQ7Cj4g PiAtICAgICAgIH0KPiA+ICAgICAgICAgc2ktPnBhZ2VfbWVtICs9ICh1bnNpZ25lZCBsb25nIGxv bmcpTUVUQV9DQUNIRShzYmkpLT5udW1fZW50cmllcyA8PCBQQUdFX1NISUZUOwo+ID4gICAgICAg ICBzaS0+Y2FjaGVfbWVtICs9IE1FVEFfQ0FDSEUoc2JpKS0+bnVtX2VudHJpZXMgKiBzaXplb2Yo c3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrKTsKPiA+ICsgICAgICAgc2ktPnBhZ2VfbWVtICs9ICh1 bnNpZ25lZCBsb25nIGxvbmcpTk9ERV9DQUNIRShzYmkpLT5udW1fZW50cmllcyA8PCBQQUdFX1NI SUZUOwo+ID4gKyAgICAgICBzaS0+Y2FjaGVfbWVtICs9IE5PREVfQ0FDSEUoc2JpKS0+bnVtX2Vu dHJpZXMgKiBzaXplb2Yoc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrKTsKPiA+ICAjaWZkZWYgQ09O RklHX0YyRlNfRlNfQ09NUFJFU1NJT04KPiA+ICAgICAgICAgaWYgKHNiaS0+Y29tcHJlc3NfaW5v ZGUpIHsKPiA+ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG5wYWdlcyA9IENPTVBSRVNT X01BUFBJTkcoc2JpKS0+bnJwYWdlczsKPiA+IEBAIC02OTYsNyArNjkyLDcgQEAgc3RhdGljIGlu dCBzdGF0X3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp2KQo+ID4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2ktPmF3X2NudCwgc2ktPm1heF9hd19jbnQpOwo+ID4gICAgICAgICAg ICAgICAgIHNlcV9wcmludGYocywgIiAgLSBjb21wcmVzczogJTRkLCBoaXQ6JThkXG4iLCBzaS0+ Y29tcHJlc3NfcGFnZXMsIHNpLT5jb21wcmVzc19wYWdlX2hpdCk7Cj4gPiAgICAgICAgICAgICAg ICAgc2VxX3ByaW50ZihzLCAiICAtIG5vZGVzOiAlNGQgaW4gJTRkXG4iLAo+ID4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgc2ktPm5kaXJ0eV9ub2RlLCBzaS0+bm9kZV9wYWdlcyk7Cj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICBzaS0+bmRpcnR5X25vZGUsIHNpLT5ub2RlX2NhY2hl cyk7Cj4gPiAgICAgICAgICAgICAgICAgc2VxX3ByaW50ZihzLCAiICAtIGRlbnRzOiAlNGQgaW4g ZGlyczolNGQgKCU0ZClcbiIsCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaS0+bmRp cnR5X2RlbnQsIHNpLT5uZGlydHlfZGlycywgc2ktPm5kaXJ0eV9hbGwpOwo+ID4gICAgICAgICAg ICAgICAgIHNlcV9wcmludGYocywgIiAgLSBkYXRhOiAlNGQgaW4gZmlsZXM6JTRkXG4iLAo+ID4g ZGlmZiAtLWdpdCBhL2ZzL2YyZnMvZGlyLmMgYi9mcy9mMmZzL2Rpci5jCj4gPiBpbmRleCA3NWZm MzZhMTNmNjAuLjk3ZjdmZWY2YjA2OCAxMDA2NDQKPiA+IC0tLSBhL2ZzL2YyZnMvZGlyLmMKPiA+ ICsrKyBiL2ZzL2YyZnMvZGlyLmMKPiA+IEBAIC0yODIsNyArMjgyLDcgQEAgc3RydWN0IGYyZnNf ZGlyX2VudHJ5ICpmMmZzX2ZpbmRfdGFyZ2V0X2RlbnRyeShjb25zdCBzdHJ1Y3QgZjJmc19kZW50 cnlfcHRyICpkLAo+ID4gIHN0YXRpYyBzdHJ1Y3QgZjJmc19kaXJfZW50cnkgKmZpbmRfaW5fbGV2 ZWwoc3RydWN0IGlub2RlICpkaXIsCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgaW50IGxldmVsLAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBmMmZzX2ZpbGVuYW1lICpmbmFtZSwKPiA+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZm9saW8gKipyZXNf Zm9saW8sCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAq KmRlbnRyeV9ibG9jaywKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBib29sIHVzZV9oYXNoKQo+ID4gIHsKPiA+ICAgICAgICAgaW50IHMgPSBHRVRfREVOVFJZX1NM T1RTKGZuYW1lLT5kaXNrX25hbWUubGVuKTsKPiA+IEBAIC0zMTMsNyArMzEzLDcgQEAgc3RhdGlj IHN0cnVjdCBmMmZzX2Rpcl9lbnRyeSAqZmluZF9pbl9sZXZlbChzdHJ1Y3QgaW5vZGUgKmRpciwK PiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmlkeCA9IG5leHRfcGdvZnM7Cj4g PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ID4gICAgICAgICAg ICAgICAgICAgICAgICAgfSBlbHNlIHsKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKnJlc19mb2xpbyA9IGRlbnRyeV9mb2xpbzsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKmRlbnRyeV9ibG9jayA9IGRlbnRyeV9mb2xpbzsKPiA+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICB9Cj4g PiAgICAgICAgICAgICAgICAgfQo+ID4gQEAgLTMyMSwxMSArMzIxLDExIEBAIHN0YXRpYyBzdHJ1 Y3QgZjJmc19kaXJfZW50cnkgKmZpbmRfaW5fbGV2ZWwoc3RydWN0IGlub2RlICpkaXIsCj4gPiAg ICAgICAgICAgICAgICAgZGUgPSBmaW5kX2luX2Jsb2NrKGRpciwgZGVudHJ5X2ZvbGlvLCBmbmFt ZSwgJm1heF9zbG90cywgdXNlX2hhc2gpOwo+ID4gICAgICAgICAgICAgICAgIGlmIChJU19FUlIo ZGUpKSB7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBmMmZzX2ZvbGlvX3B1dChkZW50cnlf Zm9saW8sIGZhbHNlKTsKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICpyZXNfZm9saW8gPSBF UlJfQ0FTVChkZSk7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAqZGVudHJ5X2Jsb2NrID0g RVJSX0NBU1QoZGUpOwo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgZGUgPSBOVUxMOwo+ID4g ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gPiAgICAgICAgICAgICAgICAgfSBlbHNl IGlmIChkZSkgewo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgKnJlc19mb2xpbyA9IGRlbnRy eV9mb2xpbzsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICpkZW50cnlfYmxvY2sgPSBkZW50 cnlfZm9saW87Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiA+ICAgICAgICAg ICAgICAgICB9Cj4gPgo+ID4gQEAgLTM1Miw3ICszNTIsNyBAQCBzdGF0aWMgc3RydWN0IGYyZnNf ZGlyX2VudHJ5ICpmaW5kX2luX2xldmVsKHN0cnVjdCBpbm9kZSAqZGlyLAo+ID4KPiA+ICBzdHJ1 Y3QgZjJmc19kaXJfZW50cnkgKl9fZjJmc19maW5kX2VudHJ5KHN0cnVjdCBpbm9kZSAqZGlyLAo+ ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qg ZjJmc19maWxlbmFtZSAqZm5hbWUsCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBmb2xpbyAqKnJlc19mb2xpbykKPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKmRlbnRyeV9ibG9jaykKPiA+ICB7Cj4gPiAg ICAgICAgIHVuc2lnbmVkIGxvbmcgbnBhZ2VzID0gZGlyX2Jsb2NrcyhkaXIpOwo+ID4gICAgICAg ICBzdHJ1Y3QgZjJmc19kaXJfZW50cnkgKmRlID0gTlVMTDsKPiA+IEBAIC0zNjAsMTMgKzM2MCwx MyBAQCBzdHJ1Y3QgZjJmc19kaXJfZW50cnkgKl9fZjJmc19maW5kX2VudHJ5KHN0cnVjdCBpbm9k ZSAqZGlyLAo+ID4gICAgICAgICB1bnNpZ25lZCBpbnQgbGV2ZWw7Cj4gPiAgICAgICAgIGJvb2wg dXNlX2hhc2ggPSB0cnVlOwo+ID4KPiA+IC0gICAgICAgKnJlc19mb2xpbyA9IE5VTEw7Cj4gPiAr ICAgICAgICpkZW50cnlfYmxvY2sgPSBOVUxMOwo+ID4KPiA+ICAjaWYgSVNfRU5BQkxFRChDT05G SUdfVU5JQ09ERSkKPiA+ICBzdGFydF9maW5kX2VudHJ5Ogo+ID4gICNlbmRpZgo+ID4gICAgICAg ICBpZiAoZjJmc19oYXNfaW5saW5lX2RlbnRyeShkaXIpKSB7Cj4gPiAtICAgICAgICAgICAgICAg ZGUgPSBmMmZzX2ZpbmRfaW5faW5saW5lX2RpcihkaXIsIGZuYW1lLCByZXNfZm9saW8sIHVzZV9o YXNoKTsKPiA+ICsgICAgICAgICAgICAgICBkZSA9IGYyZnNfZmluZF9pbl9pbmxpbmVfZGlyKGRp ciwgZm5hbWUsIGRlbnRyeV9ibG9jaywgdXNlX2hhc2gpOwo+ID4gICAgICAgICAgICAgICAgIGdv dG8gb3V0Owo+ID4gICAgICAgICB9Cj4gPgo+ID4gQEAgLTM4Miw4ICszODIsOCBAQCBzdHJ1Y3Qg ZjJmc19kaXJfZW50cnkgKl9fZjJmc19maW5kX2VudHJ5KHN0cnVjdCBpbm9kZSAqZGlyLAo+ID4g ICAgICAgICB9Cj4gPgo+ID4gICAgICAgICBmb3IgKGxldmVsID0gMDsgbGV2ZWwgPCBtYXhfZGVw dGg7IGxldmVsKyspIHsKPiA+IC0gICAgICAgICAgICAgICBkZSA9IGZpbmRfaW5fbGV2ZWwoZGly LCBsZXZlbCwgZm5hbWUsIHJlc19mb2xpbywgdXNlX2hhc2gpOwo+ID4gLSAgICAgICAgICAgICAg IGlmIChkZSB8fCBJU19FUlIoKnJlc19mb2xpbykpCj4gPiArICAgICAgICAgICAgICAgZGUgPSBm aW5kX2luX2xldmVsKGRpciwgbGV2ZWwsIGZuYW1lLCBkZW50cnlfYmxvY2ssIHVzZV9oYXNoKTsK PiA+ICsgICAgICAgICAgICAgICBpZiAoZGUgfHwgSVNfRVJSKCpkZW50cnlfYmxvY2spKQo+ID4g ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gPiAgICAgICAgIH0KPiA+Cj4gPiBAQCAt NDA4LDcgKzQwOCw3IEBAIHN0cnVjdCBmMmZzX2Rpcl9lbnRyeSAqX19mMmZzX2ZpbmRfZW50cnko c3RydWN0IGlub2RlICpkaXIsCj4gPiAgICogRW50cnkgaXMgZ3VhcmFudGVlZCB0byBiZSB2YWxp ZC4KPiA+ICAgKi8KPiA+ICBzdHJ1Y3QgZjJmc19kaXJfZW50cnkgKmYyZnNfZmluZF9lbnRyeShz dHJ1Y3QgaW5vZGUgKmRpciwKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVj dCBxc3RyICpjaGlsZCwgc3RydWN0IGZvbGlvICoqcmVzX2ZvbGlvKQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgY29uc3Qgc3RydWN0IHFzdHIgKmNoaWxkLCB2b2lkICoqZGVudHJ5X2Jsb2Nr KQo+ID4gIHsKPiA+ICAgICAgICAgc3RydWN0IGYyZnNfZGlyX2VudHJ5ICpkZSA9IE5VTEw7Cj4g PiAgICAgICAgIHN0cnVjdCBmMmZzX2ZpbGVuYW1lIGZuYW1lOwo+ID4gQEAgLTQxNyw2NyArNDE3 LDc4IEBAIHN0cnVjdCBmMmZzX2Rpcl9lbnRyeSAqZjJmc19maW5kX2VudHJ5KHN0cnVjdCBpbm9k ZSAqZGlyLAo+ID4gICAgICAgICBlcnIgPSBmMmZzX3NldHVwX2ZpbGVuYW1lKGRpciwgY2hpbGQs IDEsICZmbmFtZSk7Cj4gPiAgICAgICAgIGlmIChlcnIpIHsKPiA+ICAgICAgICAgICAgICAgICBp ZiAoZXJyID09IC1FTk9FTlQpCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAqcmVzX2ZvbGlv ID0gTlVMTDsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICpkZW50cnlfYmxvY2sgPSBOVUxM Owo+ID4gICAgICAgICAgICAgICAgIGVsc2UKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICpy ZXNfZm9saW8gPSBFUlJfUFRSKGVycik7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAqZGVu dHJ5X2Jsb2NrID0gRVJSX1BUUihlcnIpOwo+ID4gICAgICAgICAgICAgICAgIHJldHVybiBOVUxM Owo+ID4gICAgICAgICB9Cj4gPgo+ID4gLSAgICAgICBkZSA9IF9fZjJmc19maW5kX2VudHJ5KGRp ciwgJmZuYW1lLCByZXNfZm9saW8pOwo+ID4gKyAgICAgICBkZSA9IF9fZjJmc19maW5kX2VudHJ5 KGRpciwgJmZuYW1lLCBkZW50cnlfYmxvY2spOwo+ID4KPiA+ICAgICAgICAgZjJmc19mcmVlX2Zp bGVuYW1lKCZmbmFtZSk7Cj4gPiAgICAgICAgIHJldHVybiBkZTsKPiA+ICB9Cj4gPgo+ID4gLXN0 cnVjdCBmMmZzX2Rpcl9lbnRyeSAqZjJmc19wYXJlbnRfZGlyKHN0cnVjdCBpbm9kZSAqZGlyLCBz dHJ1Y3QgZm9saW8gKipmKQo+ID4gK3N0cnVjdCBmMmZzX2Rpcl9lbnRyeSAqZjJmc19wYXJlbnRf ZGlyKHN0cnVjdCBpbm9kZSAqZGlyLCB2b2lkICoqZGVudHJ5X2Jsb2NrKQo+ID4gIHsKPiA+IC0g ICAgICAgcmV0dXJuIGYyZnNfZmluZF9lbnRyeShkaXIsICZkb3Rkb3RfbmFtZSwgZik7Cj4gPiAr ICAgICAgIHJldHVybiBmMmZzX2ZpbmRfZW50cnkoZGlyLCAmZG90ZG90X25hbWUsIGRlbnRyeV9i bG9jayk7Cj4gPiAgfQo+ID4KPiA+ICBpbm9fdCBmMmZzX2lub2RlX2J5X25hbWUoc3RydWN0IGlu b2RlICpkaXIsIGNvbnN0IHN0cnVjdCBxc3RyICpxc3RyLAo+ID4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZm9saW8gKipmb2xp bykKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdm9pZCAqKmRlbnRyeV9ibG9jaykKPiA+ICB7Cj4gPiAgICAgICAgIGlub190IHJlcyA9 IDA7Cj4gPiAgICAgICAgIHN0cnVjdCBmMmZzX2Rpcl9lbnRyeSAqZGU7Cj4gPgo+ID4gLSAgICAg ICBkZSA9IGYyZnNfZmluZF9lbnRyeShkaXIsIHFzdHIsIGZvbGlvKTsKPiA+ICsgICAgICAgZGUg PSBmMmZzX2ZpbmRfZW50cnkoZGlyLCBxc3RyLCBkZW50cnlfYmxvY2spOwo+ID4gICAgICAgICBp ZiAoZGUpIHsKPiA+ICAgICAgICAgICAgICAgICByZXMgPSBsZTMyX3RvX2NwdShkZS0+aW5vKTsK PiA+IC0gICAgICAgICAgICAgICBmMmZzX2ZvbGlvX3B1dCgqZm9saW8sIGZhbHNlKTsKPiA+ICsg ICAgICAgICAgICAgICBmMmZzX3B1dF9kZW50cnlfYmxvY2soKmRlbnRyeV9ibG9jaywgZmFsc2Up Owo+ID4gICAgICAgICB9Cj4gPgo+ID4gICAgICAgICByZXR1cm4gcmVzOwo+ID4gIH0KPiA+Cj4g PiAgdm9pZCBmMmZzX3NldF9saW5rKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZjJmc19kaXJf ZW50cnkgKmRlLAo+ID4gLSAgICAgICAgICAgICAgIHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVj dCBpbm9kZSAqaW5vZGUpCj4gPiArICAgICAgICAgICAgICAgdm9pZCAqZGVudHJ5X2Jsb2NrLCBz dHJ1Y3QgaW5vZGUgKmlub2RlKQo+ID4gIHsKPiA+IC0gICAgICAgZW51bSBwYWdlX3R5cGUgdHlw ZSA9IGYyZnNfaGFzX2lubGluZV9kZW50cnkoZGlyKSA/IE5PREUgOiBEQVRBOwo+ID4gKyAgICAg ICBpZiAoZjJmc19kZW50cnlfaXNfY2FjaGUoZGVudHJ5X2Jsb2NrKSkgewo+ID4gKyAgICAgICAg ICAgICAgIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnkgPQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBmMmZzX2RlbnRyeV9jYWNoZShkZW50cnlfYmxvY2spOwo+ID4g Kwo+ID4gKyAgICAgICAgICAgICAgIGYyZnNfbG9ja19jYWNoZShlbnRyeSk7Cj4gPiArICAgICAg ICAgICAgICAgZjJmc19jYWNoZV93YWl0X3dyaXRlYmFjayhlbnRyeSk7Cj4gPiArICAgICAgICAg ICAgICAgZGUtPmlubyA9IGNwdV90b19sZTMyKGlub2RlLT5pX2lubyk7Cj4gPiArICAgICAgICAg ICAgICAgZGUtPmZpbGVfdHlwZSA9IGZzX3Vtb2RlX3RvX2Z0eXBlKGlub2RlLT5pX21vZGUpOwo+ ID4gKyAgICAgICAgICAgICAgIGYyZnNfbWFya19jYWNoZV9kaXJ0eShlbnRyeSk7Cj4gPiArICAg ICAgIH0gZWxzZSB7Cj4gPiArICAgICAgICAgICAgICAgc3RydWN0IGZvbGlvICpmb2xpbyA9IGYy ZnNfZGVudHJ5X2ZvbGlvKGRlbnRyeV9ibG9jayk7Cj4gPgo+ID4gLSAgICAgICBmb2xpb19sb2Nr KGZvbGlvKTsKPiA+IC0gICAgICAgZjJmc19mb2xpb193YWl0X3dyaXRlYmFjayhmb2xpbywgdHlw ZSwgdHJ1ZSwgdHJ1ZSk7Cj4gPiAtICAgICAgIGRlLT5pbm8gPSBjcHVfdG9fbGUzMihpbm9kZS0+ aV9pbm8pOwo+ID4gLSAgICAgICBkZS0+ZmlsZV90eXBlID0gZnNfdW1vZGVfdG9fZnR5cGUoaW5v ZGUtPmlfbW9kZSk7Cj4gPiAtICAgICAgIGZvbGlvX21hcmtfZGlydHkoZm9saW8pOwo+ID4gKyAg ICAgICAgICAgICAgIGZvbGlvX2xvY2soZm9saW8pOwo+ID4gKyAgICAgICAgICAgICAgIGYyZnNf Zm9saW9fd2FpdF93cml0ZWJhY2soZm9saW8sIHRydWUsIHRydWUpOwo+ID4gKyAgICAgICAgICAg ICAgIGRlLT5pbm8gPSBjcHVfdG9fbGUzMihpbm9kZS0+aV9pbm8pOwo+ID4gKyAgICAgICAgICAg ICAgIGRlLT5maWxlX3R5cGUgPSBmc191bW9kZV90b19mdHlwZShpbm9kZS0+aV9tb2RlKTsKPiA+ ICsgICAgICAgICAgICAgICBmb2xpb19tYXJrX2RpcnR5KGZvbGlvKTsKPiA+ICsgICAgICAgfQo+ ID4KPiA+ICAgICAgICAgaW5vZGVfc2V0X210aW1lX3RvX3RzKGRpciwgaW5vZGVfc2V0X2N0aW1l X2N1cnJlbnQoZGlyKSk7Cj4gPiAgICAgICAgIGYyZnNfbWFya19pbm9kZV9kaXJ0eV9zeW5jKGRp ciwgdHJ1ZSk7Cj4gPiAtICAgICAgIGYyZnNfZm9saW9fcHV0KGZvbGlvLCB0cnVlKTsKPiA+ICsg ICAgICAgZjJmc19wdXRfZGVudHJ5X2Jsb2NrKGRlbnRyeV9ibG9jaywgdHJ1ZSk7Cj4gPiAgfQo+ ID4KPiA+ICBzdGF0aWMgdm9pZCBpbml0X2RlbnRfaW5vZGUoc3RydWN0IGlub2RlICpkaXIsIHN0 cnVjdCBpbm9kZSAqaW5vZGUsCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IGYyZnNfZmlsZW5hbWUgKmZuYW1lLAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBmb2xpbyAqaWZvbGlvKQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqaWVudHJ5KQo+ID4gIHsKPiA+ICAgICAgICAgc3Ry dWN0IGYyZnNfaW5vZGUgKnJpOwo+ID4KPiA+ICAgICAgICAgaWYgKCFmbmFtZSkgLyogdG1wZmls ZSBjYXNlPyAqLwo+ID4gICAgICAgICAgICAgICAgIHJldHVybjsKPiA+Cj4gPiAtICAgICAgIGYy ZnNfZm9saW9fd2FpdF93cml0ZWJhY2soaWZvbGlvLCBOT0RFLCB0cnVlLCB0cnVlKTsKPiA+ICsg ICAgICAgZjJmc19jYWNoZV93YWl0X3dyaXRlYmFjayhpZW50cnkpOwo+ID4KPiA+ICAgICAgICAg LyogY29weSBuYW1lIGluZm8uIHRvIHRoaXMgaW5vZGUgZm9saW8gKi8KPiA+IC0gICAgICAgcmkg PSBGMkZTX0lOT0RFKGlmb2xpbyk7Cj4gPiArICAgICAgIHJpID0gRjJGU19JTk9ERShpZW50cnkp Owo+ID4gICAgICAgICByaS0+aV9uYW1lbGVuID0gY3B1X3RvX2xlMzIoZm5hbWUtPmRpc2tfbmFt ZS5sZW4pOwo+ID4gICAgICAgICBtZW1jcHkocmktPmlfbmFtZSwgZm5hbWUtPmRpc2tfbmFtZS5u YW1lLCBmbmFtZS0+ZGlza19uYW1lLmxlbik7Cj4gPiAgICAgICAgIGlmIChJU19FTkNSWVBURUQo ZGlyKSkgewo+ID4gQEAgLTQ5OCw3ICs1MDksNyBAQCBzdGF0aWMgdm9pZCBpbml0X2RlbnRfaW5v ZGUoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBpbm9kZSAqaW5vZGUsCj4gPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGZpbGVfbG9zdF9waW5vKGlub2RlKTsKPiA+ICAgICAgICAg ICAgICAgICB9Cj4gPiAgICAgICAgIH0KPiA+IC0gICAgICAgZm9saW9fbWFya19kaXJ0eShpZm9s aW8pOwo+ID4gKyAgICAgICBmMmZzX21hcmtfY2FjaGVfZGlydHkoaWVudHJ5KTsKPiA+ICB9Cj4g Pgo+ID4gIHZvaWQgZjJmc19kb19tYWtlX2VtcHR5X2RpcihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBz dHJ1Y3QgaW5vZGUgKnBhcmVudCwKPiA+IEBAIC01MTUsMTYgKzUyNiwxNiBAQCB2b2lkIGYyZnNf ZG9fbWFrZV9lbXB0eV9kaXIoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGlub2RlICpwYXJl bnQsCj4gPiAgfQo+ID4KPiA+ICBzdGF0aWMgaW50IG1ha2VfZW1wdHlfZGlyKHN0cnVjdCBpbm9k ZSAqaW5vZGUsCj4gPiAtICAgICAgICAgICAgICAgc3RydWN0IGlub2RlICpwYXJlbnQsIHN0cnVj dCBmb2xpbyAqZm9saW8pCj4gPiArICAgICAgICAgICAgICAgc3RydWN0IGlub2RlICpwYXJlbnQs IHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqaWVudHJ5KQo+ID4gIHsKPiA+ICAgICAgICAgc3Ry dWN0IGZvbGlvICpkZW50cnlfZm9saW87Cj4gPiAgICAgICAgIHZvaWQgKmRlbnRyeV9ibGs7Cj4g PiAgICAgICAgIHN0cnVjdCBmMmZzX2RlbnRyeV9wdHIgZDsKPiA+Cj4gPiAgICAgICAgIGlmIChm MmZzX2hhc19pbmxpbmVfZGVudHJ5KGlub2RlKSkKPiA+IC0gICAgICAgICAgICAgICByZXR1cm4g ZjJmc19tYWtlX2VtcHR5X2lubGluZV9kaXIoaW5vZGUsIHBhcmVudCwgZm9saW8pOwo+ID4gKyAg ICAgICAgICAgICAgIHJldHVybiBmMmZzX21ha2VfZW1wdHlfaW5saW5lX2Rpcihpbm9kZSwgcGFy ZW50LCBpZW50cnkpOwo+ID4KPiA+IC0gICAgICAgZGVudHJ5X2ZvbGlvID0gZjJmc19nZXRfbmV3 X2RhdGFfZm9saW8oaW5vZGUsIGZvbGlvLCAwLCB0cnVlKTsKPiA+ICsgICAgICAgZGVudHJ5X2Zv bGlvID0gZjJmc19nZXRfbmV3X2RhdGFfZm9saW8oaW5vZGUsIGllbnRyeSwgMCwgdHJ1ZSk7Cj4g PiAgICAgICAgIGlmIChJU19FUlIoZGVudHJ5X2ZvbGlvKSkKPiA+ICAgICAgICAgICAgICAgICBy ZXR1cm4gUFRSX0VSUihkZW50cnlfZm9saW8pOwo+ID4KPiA+IEBAIC01MzgsNTAgKzU0OSw1MCBA QCBzdGF0aWMgaW50IG1ha2VfZW1wdHlfZGlyKHN0cnVjdCBpbm9kZSAqaW5vZGUsCj4gPiAgICAg ICAgIHJldHVybiAwOwo+ID4gIH0KPiA+Cj4gPiAtc3RydWN0IGZvbGlvICpmMmZzX2luaXRfaW5v ZGVfbWV0YWRhdGEoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGlub2RlICpkaXIsCj4gPiAt ICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGYyZnNfZmlsZW5hbWUgKmZuYW1lLCBzdHJ1Y3Qg Zm9saW8gKmRmb2xpbykKPiA+ICtzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmYyZnNfaW5pdF9p bm9kZV9tZXRhZGF0YShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgaW5vZGUgKmRpciwKPiA+ ICsgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZjJmc19maWxlbmFtZSAqZm5hbWUsIHN0cnVj dCBmMmZzX2NhY2hlZF9ibG9jayAqZGVudHJ5KQo+ID4gIHsKPiA+IC0gICAgICAgc3RydWN0IGZv bGlvICpmb2xpbzsKPiA+ICsgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICppZW50cnk7 Cj4gPiAgICAgICAgIGludCBlcnI7Cj4gPgo+ID4gICAgICAgICBpZiAoaXNfaW5vZGVfZmxhZ19z ZXQoaW5vZGUsIEZJX05FV19JTk9ERSkpIHsKPiA+IC0gICAgICAgICAgICAgICBmb2xpbyA9IGYy ZnNfbmV3X2lub2RlX2ZvbGlvKGlub2RlKTsKPiA+IC0gICAgICAgICAgICAgICBpZiAoSVNfRVJS KGZvbGlvKSkKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmb2xpbzsKPiA+ICsg ICAgICAgICAgICAgICBpZW50cnkgPSBmMmZzX25ld19pbm9kZV9jYWNoZShpbm9kZSk7Cj4gPiAr ICAgICAgICAgICAgICAgaWYgKElTX0VSUihpZW50cnkpKQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIGllbnRyeTsKPiA+Cj4gPiAgICAgICAgICAgICAgICAgaWYgKFNfSVNESVIo aW5vZGUtPmlfbW9kZSkpIHsKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluIG9yZGVy IHRvIGhhbmRsZSBlcnJvciBjYXNlICovCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBmb2xp b19nZXQoZm9saW8pOwo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gbWFrZV9lbXB0 eV9kaXIoaW5vZGUsIGRpciwgZm9saW8pOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZjJm c19jYWNoZV9nZXQoaWVudHJ5KTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IG1h a2VfZW1wdHlfZGlyKGlub2RlLCBkaXIsIGllbnRyeSk7Cj4gPiAgICAgICAgICAgICAgICAgICAg ICAgICBpZiAoZXJyKSB7Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGlv X2xvY2soZm9saW8pOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmMmZzX2xv Y2tfY2FjaGUoaWVudHJ5KTsKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290 byBwdXRfZXJyb3I7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICB9Cj4gPiAtICAgICAgICAg ICAgICAgICAgICAgICBmb2xpb19wdXQoZm9saW8pOwo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgZjJmc19wdXRfY2FjaGUoaWVudHJ5LCBmYWxzZSk7Cj4gPiAgICAgICAgICAgICAgICAgfQo+ ID4KPiA+IC0gICAgICAgICAgICAgICBlcnIgPSBmMmZzX2luaXRfYWNsKGlub2RlLCBkaXIsIGZv bGlvLCBkZm9saW8pOwo+ID4gKyAgICAgICAgICAgICAgIGVyciA9IGYyZnNfaW5pdF9hY2woaW5v ZGUsIGRpciwgaWVudHJ5LCBkZW50cnkpOwo+ID4gICAgICAgICAgICAgICAgIGlmIChlcnIpCj4g PiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHB1dF9lcnJvcjsKPiA+Cj4gPiAgICAgICAg ICAgICAgICAgZXJyID0gZjJmc19pbml0X3NlY3VyaXR5KGlub2RlLCBkaXIsCj4gPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lID8gZm5hbWUtPnVzcl9mbmFt ZSA6IE5VTEwsCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZv bGlvKTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWVudHJ5 KTsKPiA+ICAgICAgICAgICAgICAgICBpZiAoZXJyKQo+ID4gICAgICAgICAgICAgICAgICAgICAg ICAgZ290byBwdXRfZXJyb3I7Cj4gPgo+ID4gICAgICAgICAgICAgICAgIGlmIChJU19FTkNSWVBU RUQoaW5vZGUpKSB7Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSBmc2NyeXB0X3Nl dF9jb250ZXh0KGlub2RlLCBmb2xpbyk7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBlcnIg PSBmc2NyeXB0X3NldF9jb250ZXh0KGlub2RlLCBpZW50cnkpOwo+ID4gICAgICAgICAgICAgICAg ICAgICAgICAgaWYgKGVycikKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290 byBwdXRfZXJyb3I7Cj4gPiAgICAgICAgICAgICAgICAgfQo+ID4gICAgICAgICB9IGVsc2Ugewo+ ID4gLSAgICAgICAgICAgICAgIGZvbGlvID0gZjJmc19nZXRfaW5vZGVfZm9saW8oRjJGU19JX1NC KGRpciksIGlub2RlLT5pX2lubyk7Cj4gPiAtICAgICAgICAgICAgICAgaWYgKElTX0VSUihmb2xp bykpCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm9saW87Cj4gPiArICAgICAg ICAgICAgICAgaWVudHJ5ID0gZjJmc19nZXRfaW5vZGVfY2FjaGUoRjJGU19JX1NCKGRpciksIGlu b2RlLT5pX2lubyk7Cj4gPiArICAgICAgICAgICAgICAgaWYgKElTX0VSUihpZW50cnkpKQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGllbnRyeTsKPiA+ICAgICAgICAgfQo+ID4K PiA+IC0gICAgICAgaW5pdF9kZW50X2lub2RlKGRpciwgaW5vZGUsIGZuYW1lLCBmb2xpbyk7Cj4g PiArICAgICAgIGluaXRfZGVudF9pbm9kZShkaXIsIGlub2RlLCBmbmFtZSwgaWVudHJ5KTsKPiA+ Cj4gPiAgICAgICAgIC8qCj4gPiAgICAgICAgICAqIFRoaXMgZmlsZSBzaG91bGQgYmUgY2hlY2tw b2ludGVkIGR1cmluZyBmc3luYy4KPiA+IEBAIC01OTgsMTIgKzYwOSwxMiBAQCBzdHJ1Y3QgZm9s aW8gKmYyZnNfaW5pdF9pbm9kZV9tZXRhZGF0YShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3Qg aW5vZGUgKmRpciwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGYyZnNfcmVtb3ZlX29ycGhh bl9pbm9kZShGMkZTX0lfU0IoZGlyKSwgaW5vZGUtPmlfaW5vKTsKPiA+ICAgICAgICAgICAgICAg ICBmMmZzX2lfbGlua3Nfd3JpdGUoaW5vZGUsIHRydWUpOwo+ID4gICAgICAgICB9Cj4gPiAtICAg ICAgIHJldHVybiBmb2xpbzsKPiA+ICsgICAgICAgcmV0dXJuIGllbnRyeTsKPiA+Cj4gPiAgcHV0 X2Vycm9yOgo+ID4gICAgICAgICBjbGVhcl9ubGluayhpbm9kZSk7Cj4gPiAtICAgICAgIGYyZnNf dXBkYXRlX2lub2RlKGlub2RlLCBmb2xpbyk7Cj4gPiAtICAgICAgIGYyZnNfZm9saW9fcHV0KGZv bGlvLCB0cnVlKTsKPiA+ICsgICAgICAgZjJmc191cGRhdGVfaW5vZGUoaW5vZGUsIGllbnRyeSk7 Cj4gPiArICAgICAgIGYyZnNfcHV0X2NhY2hlKGllbnRyeSwgdHJ1ZSk7Cj4gPiAgICAgICAgIHJl dHVybiBFUlJfUFRSKGVycik7Cj4gPiAgfQo+ID4KPiA+IEBAIC02NDUsMTQgKzY1NiwxNCBAQCBp bnQgZjJmc19yb29tX2Zvcl9maWxlbmFtZShjb25zdCB2b2lkICpiaXRtYXAsIGludCBzbG90cywg aW50IG1heF9zbG90cykKPiA+ICAgICAgICAgZ290byBuZXh0Owo+ID4gIH0KPiA+Cj4gPiAtYm9v bCBmMmZzX2hhc19lbm91Z2hfcm9vbShzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGZvbGlvICpp Zm9saW8sCj4gPiArYm9vbCBmMmZzX2hhc19lbm91Z2hfcm9vbShzdHJ1Y3QgaW5vZGUgKmRpciwg c3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICppZW50cnksCj4gPiAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHN0cnVjdCBmMmZzX2ZpbGVuYW1lICpmbmFtZSkKPiA+ICB7Cj4gPiAgICAg ICAgIHN0cnVjdCBmMmZzX2RlbnRyeV9wdHIgZDsKPiA+ICAgICAgICAgdW5zaWduZWQgaW50IGJp dF9wb3M7Cj4gPiAgICAgICAgIGludCBzbG90cyA9IEdFVF9ERU5UUllfU0xPVFMoZm5hbWUtPmRp c2tfbmFtZS5sZW4pOwo+ID4KPiA+IC0gICAgICAgbWFrZV9kZW50cnlfcHRyX2lubGluZShkaXIs ICZkLCBpbmxpbmVfZGF0YV9hZGRyKGRpciwgaWZvbGlvKSk7Cj4gPiArICAgICAgIG1ha2VfZGVu dHJ5X3B0cl9pbmxpbmUoZGlyLCAmZCwgaW5saW5lX2RhdGFfYWRkcihkaXIsIGllbnRyeSkpOwo+ ID4KPiA+ICAgICAgICAgYml0X3BvcyA9IGYyZnNfcm9vbV9mb3JfZmlsZW5hbWUoZC5iaXRtYXAs IHNsb3RzLCBkLm1heCk7Cj4gPgo+ID4gQEAgLTY5Miw3ICs3MDMsNyBAQCBpbnQgZjJmc19hZGRf cmVndWxhcl9lbnRyeShzdHJ1Y3QgaW5vZGUgKmRpciwgY29uc3Qgc3RydWN0IGYyZnNfZmlsZW5h bWUgKmZuYW1lLAo+ID4gICAgICAgICBzdHJ1Y3QgZm9saW8gKmRlbnRyeV9mb2xpbyA9IE5VTEw7 Cj4gPiAgICAgICAgIHZvaWQgKmRlbnRyeV9ibGsgPSBOVUxMOwo+ID4gICAgICAgICBzdHJ1Y3Qg ZjJmc19kZW50cnlfcHRyIGQ7Cj4gPiAtICAgICAgIHN0cnVjdCBmb2xpbyAqZm9saW8gPSBOVUxM Owo+ID4gKyAgICAgICBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5ID0gTlVMTDsKPiA+ ICAgICAgICAgaW50IHNsb3RzLCBlcnIgPSAwOwo+ID4KPiA+ICAgICAgICAgbGV2ZWwgPSAwOwo+ ID4gQEAgLTczOSwxMyArNzUwLDEzIEBAIGludCBmMmZzX2FkZF9yZWd1bGFyX2VudHJ5KHN0cnVj dCBpbm9kZSAqZGlyLCBjb25zdCBzdHJ1Y3QgZjJmc19maWxlbmFtZSAqZm5hbWUsCj4gPiAgICAg ICAgICsrbGV2ZWw7Cj4gPiAgICAgICAgIGdvdG8gc3RhcnQ7Cj4gPiAgYWRkX2RlbnRyeToKPiA+ IC0gICAgICAgZjJmc19mb2xpb193YWl0X3dyaXRlYmFjayhkZW50cnlfZm9saW8sIERBVEEsIHRy dWUsIHRydWUpOwo+ID4gKyAgICAgICBmMmZzX2ZvbGlvX3dhaXRfd3JpdGViYWNrKGRlbnRyeV9m b2xpbywgdHJ1ZSwgdHJ1ZSk7Cj4gPgo+ID4gICAgICAgICBpZiAoaW5vZGUpIHsKPiA+ICAgICAg ICAgICAgICAgICBmMmZzX2Rvd25fd3JpdGUoJkYyRlNfSShpbm9kZSktPmlfc2VtKTsKPiA+IC0g ICAgICAgICAgICAgICBmb2xpbyA9IGYyZnNfaW5pdF9pbm9kZV9tZXRhZGF0YShpbm9kZSwgZGly LCBmbmFtZSwgTlVMTCk7Cj4gPiAtICAgICAgICAgICAgICAgaWYgKElTX0VSUihmb2xpbykpIHsK PiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGVyciA9IFBUUl9FUlIoZm9saW8pOwo+ID4gKyAg ICAgICAgICAgICAgIGVudHJ5ID0gZjJmc19pbml0X2lub2RlX21ldGFkYXRhKGlub2RlLCBkaXIs IGZuYW1lLCBOVUxMKTsKPiA+ICsgICAgICAgICAgICAgICBpZiAoSVNfRVJSKGVudHJ5KSkgewo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gUFRSX0VSUihlbnRyeSk7Cj4gPiAgICAg ICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Cj4gPiAgICAgICAgICAgICAgICAgfQo+ID4g ICAgICAgICB9Cj4gPiBAQCAtNzYwLDkgKzc3MSw5IEBAIGludCBmMmZzX2FkZF9yZWd1bGFyX2Vu dHJ5KHN0cnVjdCBpbm9kZSAqZGlyLCBjb25zdCBzdHJ1Y3QgZjJmc19maWxlbmFtZSAqZm5hbWUs Cj4gPgo+ID4gICAgICAgICAgICAgICAgIC8qIHN5bmNocm9uaXplIGlub2RlIHBhZ2UncyBkYXRh IGZyb20gaW5vZGUgY2FjaGUgKi8KPiA+ICAgICAgICAgICAgICAgICBpZiAoaXNfaW5vZGVfZmxh Z19zZXQoaW5vZGUsIEZJX05FV19JTk9ERSkpCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBm MmZzX3VwZGF0ZV9pbm9kZShpbm9kZSwgZm9saW8pOwo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgZjJmc191cGRhdGVfaW5vZGUoaW5vZGUsIGVudHJ5KTsKPiA+Cj4gPiAtICAgICAgICAgICAg ICAgZjJmc19mb2xpb19wdXQoZm9saW8sIHRydWUpOwo+ID4gKyAgICAgICAgICAgICAgIGYyZnNf cHV0X2NhY2hlKGVudHJ5LCB0cnVlKTsKPiA+ICAgICAgICAgfQo+ID4KPiA+ICAgICAgICAgZjJm c191cGRhdGVfcGFyZW50X21ldGFkYXRhKGRpciwgaW5vZGUsIGN1cnJlbnRfZGVwdGgpOwo+ID4g QEAgLTgwNCw3ICs4MTUsNyBAQCBpbnQgZjJmc19kb19hZGRfbGluayhzdHJ1Y3QgaW5vZGUgKmRp ciwgY29uc3Qgc3RydWN0IHFzdHIgKm5hbWUsCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUsIG5pZF90IGlubywgdW1vZGVfdCBtb2RlKQo+ID4g IHsKPiA+ICAgICAgICAgc3RydWN0IGYyZnNfZmlsZW5hbWUgZm5hbWU7Cj4gPiAtICAgICAgIHN0 cnVjdCBmb2xpbyAqZm9saW8gPSBOVUxMOwo+ID4gKyAgICAgICB2b2lkICpkZW50cnlfYmxrID0g TlVMTDsKPiA+ICAgICAgICAgc3RydWN0IGYyZnNfZGlyX2VudHJ5ICpkZSA9IE5VTEw7Cj4gPiAg ICAgICAgIGludCBlcnI7Cj4gPgo+ID4gQEAgLTgyMCwxNCArODMxLDE0IEBAIGludCBmMmZzX2Rv X2FkZF9saW5rKHN0cnVjdCBpbm9kZSAqZGlyLCBjb25zdCBzdHJ1Y3QgcXN0ciAqbmFtZSwKPiA+ ICAgICAgICAgICogY29uc2lzdGVuY3kgbW9yZS4KPiA+ICAgICAgICAgICovCj4gPiAgICAgICAg IGlmIChjdXJyZW50ICE9IEYyRlNfSShkaXIpLT50YXNrKSB7Cj4gPiAtICAgICAgICAgICAgICAg ZGUgPSBfX2YyZnNfZmluZF9lbnRyeShkaXIsICZmbmFtZSwgJmZvbGlvKTsKPiA+ICsgICAgICAg ICAgICAgICBkZSA9IF9fZjJmc19maW5kX2VudHJ5KGRpciwgJmZuYW1lLCAmZGVudHJ5X2Jsayk7 Cj4gPiAgICAgICAgICAgICAgICAgRjJGU19JKGRpciktPnRhc2sgPSBOVUxMOwo+ID4gICAgICAg ICB9Cj4gPiAgICAgICAgIGlmIChkZSkgewo+ID4gLSAgICAgICAgICAgICAgIGYyZnNfZm9saW9f cHV0KGZvbGlvLCBmYWxzZSk7Cj4gPiArICAgICAgICAgICAgICAgZjJmc19wdXRfZGVudHJ5X2Js b2NrKGRlbnRyeV9ibGssIGZhbHNlKTsKPiA+ICAgICAgICAgICAgICAgICBlcnIgPSAtRUVYSVNU Owo+ID4gLSAgICAgICB9IGVsc2UgaWYgKElTX0VSUihmb2xpbykpIHsKPiA+IC0gICAgICAgICAg ICAgICBlcnIgPSBQVFJfRVJSKGZvbGlvKTsKPiA+ICsgICAgICAgfSBlbHNlIGlmIChJU19FUlIo ZGVudHJ5X2JsaykpIHsKPiA+ICsgICAgICAgICAgICAgICBlcnIgPSBQVFJfRVJSKGRlbnRyeV9i bGspOwo+ID4gICAgICAgICB9IGVsc2Ugewo+ID4gICAgICAgICAgICAgICAgIGVyciA9IGYyZnNf YWRkX2RlbnRyeShkaXIsICZmbmFtZSwgaW5vZGUsIGlubywgbW9kZSk7Cj4gPiAgICAgICAgIH0K PiA+IEBAIC04MzgsMTYgKzg0OSwxNiBAQCBpbnQgZjJmc19kb19hZGRfbGluayhzdHJ1Y3QgaW5v ZGUgKmRpciwgY29uc3Qgc3RydWN0IHFzdHIgKm5hbWUsCj4gPiAgaW50IGYyZnNfZG9fdG1wZmls ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgaW5vZGUgKmRpciwKPiA+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZjJmc19maWxlbmFtZSAqZm5hbWUp Cj4gPiAgewo+ID4gLSAgICAgICBzdHJ1Y3QgZm9saW8gKmZvbGlvOwo+ID4gKyAgICAgICBzdHJ1 Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmllbnRyeTsKPiA+ICAgICAgICAgaW50IGVyciA9IDA7Cj4g Pgo+ID4gICAgICAgICBmMmZzX2Rvd25fd3JpdGUoJkYyRlNfSShpbm9kZSktPmlfc2VtKTsKPiA+ IC0gICAgICAgZm9saW8gPSBmMmZzX2luaXRfaW5vZGVfbWV0YWRhdGEoaW5vZGUsIGRpciwgZm5h bWUsIE5VTEwpOwo+ID4gLSAgICAgICBpZiAoSVNfRVJSKGZvbGlvKSkgewo+ID4gLSAgICAgICAg ICAgICAgIGVyciA9IFBUUl9FUlIoZm9saW8pOwo+ID4gKyAgICAgICBpZW50cnkgPSBmMmZzX2lu aXRfaW5vZGVfbWV0YWRhdGEoaW5vZGUsIGRpciwgZm5hbWUsIE5VTEwpOwo+ID4gKyAgICAgICBp ZiAoSVNfRVJSKGllbnRyeSkpIHsKPiA+ICsgICAgICAgICAgICAgICBlcnIgPSBQVFJfRVJSKGll bnRyeSk7Cj4gPiAgICAgICAgICAgICAgICAgZ290byBmYWlsOwo+ID4gICAgICAgICB9Cj4gPiAt ICAgICAgIGYyZnNfZm9saW9fcHV0KGZvbGlvLCB0cnVlKTsKPiA+ICsgICAgICAgZjJmc19wdXRf Y2FjaGUoaWVudHJ5LCB0cnVlKTsKPiA+Cj4gPiAgICAgICAgIGNsZWFyX2lub2RlX2ZsYWcoaW5v ZGUsIEZJX05FV19JTk9ERSk7Cj4gPiAgICAgICAgIGYyZnNfdXBkYXRlX3RpbWUoRjJGU19JX1NC KGlub2RlKSwgUkVRX1RJTUUpOwo+ID4gQEAgLTg4MywxNCArODk0LDE1IEBAIHZvaWQgZjJmc19k cm9wX25saW5rKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgaW5vZGUgKmlub2RlKQo+ID4gICAq IEl0IG9ubHkgcmVtb3ZlcyB0aGUgZGVudHJ5IGZyb20gdGhlIGRlbnRyeSBwYWdlLCBjb3JyZXNw b25kaW5nIG5hbWUKPiA+ICAgKiBlbnRyeSBpbiBuYW1lIHBhZ2UgZG9lcyBub3QgbmVlZCB0byBi ZSB0b3VjaGVkIGR1cmluZyBkZWxldGlvbi4KPiA+ICAgKi8KPiA+IC12b2lkIGYyZnNfZGVsZXRl X2VudHJ5KHN0cnVjdCBmMmZzX2Rpcl9lbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgZm9saW8gKmZvbGlv LAo+ID4gK3ZvaWQgZjJmc19kZWxldGVfZW50cnkoc3RydWN0IGYyZnNfZGlyX2VudHJ5ICpkZW50 cnksIHZvaWQgKmRlbnRyeV9ibG9jaywKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGlub2RlICppbm9kZSkKPiA+ICB7 Cj4gPiAgICAgICAgIHZvaWQgKmRlbnRyeV9ibGs7Cj4gPiAgICAgICAgIHN0cnVjdCBmMmZzX2Rl bnRyeV9wdHIgZDsKPiA+ICsgICAgICAgc3RydWN0IGZvbGlvICpmb2xpbzsKPiA+ICAgICAgICAg dW5zaWduZWQgaW50IGJpdF9wb3M7Cj4gPiAgICAgICAgIGludCBzbG90cyA9IEdFVF9ERU5UUllf U0xPVFMobGUxNl90b19jcHUoZGVudHJ5LT5uYW1lX2xlbikpOwo+ID4gLSAgICAgICBwZ29mZl90 IGluZGV4ID0gZm9saW8tPmluZGV4Owo+ID4gKyAgICAgICBwZ29mZl90IGluZGV4Owo+ID4gICAg ICAgICBpbnQgaTsKPiA+Cj4gPiAgICAgICAgIGYyZnNfdXBkYXRlX3RpbWUoRjJGU19JX1NCKGRp ciksIFJFUV9USU1FKTsKPiA+IEBAIC04OTksMTAgKzkxMSwxNCBAQCB2b2lkIGYyZnNfZGVsZXRl X2VudHJ5KHN0cnVjdCBmMmZzX2Rpcl9lbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgZm9saW8gKmZvbGlv LAo+ID4gICAgICAgICAgICAgICAgIGYyZnNfYWRkX2lub19lbnRyeShGMkZTX0lfU0IoZGlyKSwg ZGlyLT5pX2lubywgVFJBTlNfRElSX0lOTyk7Cj4gPgo+ID4gICAgICAgICBpZiAoZjJmc19oYXNf aW5saW5lX2RlbnRyeShkaXIpKQo+ID4gLSAgICAgICAgICAgICAgIHJldHVybiBmMmZzX2RlbGV0 ZV9pbmxpbmVfZW50cnkoZGVudHJ5LCBmb2xpbywgZGlyLCBpbm9kZSk7Cj4gPiArICAgICAgICAg ICAgICAgcmV0dXJuIGYyZnNfZGVsZXRlX2lubGluZV9lbnRyeShkZW50cnksCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGYyZnNfZGVudHJ5X2NhY2hlKGRlbnRyeV9ibG9jayks IGRpciwgaW5vZGUpOwo+ID4gKwo+ID4gKyAgICAgICBmb2xpbyA9IGYyZnNfZGVudHJ5X2ZvbGlv KGRlbnRyeV9ibG9jayk7Cj4gPiArICAgICAgIGluZGV4ID0gZm9saW8tPmluZGV4Owo+ID4KPiA+ ICAgICAgICAgZm9saW9fbG9jayhmb2xpbyk7Cj4gPiAtICAgICAgIGYyZnNfZm9saW9fd2FpdF93 cml0ZWJhY2soZm9saW8sIERBVEEsIHRydWUsIHRydWUpOwo+ID4gKyAgICAgICBmMmZzX2ZvbGlv X3dhaXRfd3JpdGViYWNrKGZvbGlvLCB0cnVlLCB0cnVlKTsKPiA+Cj4gPiAgICAgICAgIGRlbnRy eV9ibGsgPSBmb2xpb19hZGRyZXNzKGZvbGlvKTsKPiA+ICAgICAgICAgbWFrZV9kZW50cnlfcHRy X2Jsb2NrKGRpciwgJmQsIGRlbnRyeV9ibGspOwo+ID4gQEAgLTEwNTAsNyArMTA2Niw3IEBAIGlu dCBmMmZzX2ZpbGxfZGVudHJpZXMoc3RydWN0IGRpcl9jb250ZXh0ICpjdHgsIHN0cnVjdCBmMmZz X2RlbnRyeV9wdHIgKmQsCj4gPiAgICAgICAgICAgICAgICAgfQo+ID4KPiA+ICAgICAgICAgICAg ICAgICBpZiAocmVhZGRpcl9yYSkKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGYyZnNfcmFf bm9kZV9wYWdlKHNiaSwgbGUzMl90b19jcHUoZGUtPmlubykpOwo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgZjJmc19yYV9ub2RlX2NhY2hlKHNiaSwgbGUzMl90b19jcHUoZGUtPmlubykpOwo+ ID4KPiA+ICAgICAgICAgICAgICAgICBjdHgtPnBvcyA9IHN0YXJ0X3BvcyArIGJpdF9wb3M7Cj4g PiAgICAgICAgICAgICAgICAgZm91bmRfdmFsaWRfZGlyZW50ID0gdHJ1ZTsKPiA+IGRpZmYgLS1n aXQgYS9mcy9mMmZzL2V4dGVudF9jYWNoZS5jIGIvZnMvZjJmcy9leHRlbnRfY2FjaGUuYwo+ID4g aW5kZXggNDBjZDg3OTQwOTYxLi41YTk0NDQyOGFjYTAgMTAwNjQ0Cj4gPiAtLS0gYS9mcy9mMmZz L2V4dGVudF9jYWNoZS5jCj4gPiArKysgYi9mcy9mMmZzL2V4dGVudF9jYWNoZS5jCj4gPiBAQCAt MjAsMTAgKzIwLDEwIEBACj4gPiAgI2luY2x1ZGUgInNlZ21lbnQuaCIKPiA+ICAjaW5jbHVkZSA8 dHJhY2UvZXZlbnRzL2YyZnMuaD4KPiA+Cj4gPiAtYm9vbCBzYW5pdHlfY2hlY2tfZXh0ZW50X2Nh Y2hlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmb2xpbyAqaWZvbGlvKQo+ID4gK2Jvb2wg c2FuaXR5X2NoZWNrX2V4dGVudF9jYWNoZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZjJm c19jYWNoZWRfYmxvY2sgKmllbnRyeSkKPiA+ICB7Cj4gPiAgICAgICAgIHN0cnVjdCBmMmZzX3Ni X2luZm8gKnNiaSA9IEYyRlNfSV9TQihpbm9kZSk7Cj4gPiAtICAgICAgIHN0cnVjdCBmMmZzX2V4 dGVudCAqaV9leHQgPSAmRjJGU19JTk9ERShpZm9saW8pLT5pX2V4dDsKPiA+ICsgICAgICAgc3Ry dWN0IGYyZnNfZXh0ZW50ICppX2V4dCA9ICZGMkZTX0lOT0RFKGllbnRyeSktPmlfZXh0Owo+ID4g ICAgICAgICBzdHJ1Y3QgZXh0ZW50X2luZm8gZWk7Cj4gPiAgICAgICAgIGludCBkZXZpOwo+ID4K PiA+IEBAIC00MTYsMTEgKzQxNiwxMSBAQCBzdGF0aWMgdm9pZCBfX2Ryb3BfbGFyZ2VzdF9leHRl bnQoc3RydWN0IGV4dGVudF90cmVlICpldCwKPiA+ICAgICAgICAgfQo+ID4gIH0KPiA+Cj4gPiAt dm9pZCBmMmZzX2luaXRfcmVhZF9leHRlbnRfdHJlZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1 Y3QgZm9saW8gKmlmb2xpbykKPiA+ICt2b2lkIGYyZnNfaW5pdF9yZWFkX2V4dGVudF90cmVlKHN0 cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqaWVudHJ5KQo+ID4g IHsKPiA+ICAgICAgICAgc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpID0gRjJGU19JX1NCKGlub2Rl KTsKPiA+ICAgICAgICAgc3RydWN0IGV4dGVudF90cmVlX2luZm8gKmV0aSA9ICZzYmktPmV4dGVu dF90cmVlW0VYX1JFQURdOwo+ID4gLSAgICAgICBzdHJ1Y3QgZjJmc19leHRlbnQgKmlfZXh0ID0g JkYyRlNfSU5PREUoaWZvbGlvKS0+aV9leHQ7Cj4gPiArICAgICAgIHN0cnVjdCBmMmZzX2V4dGVu dCAqaV9leHQgPSAmRjJGU19JTk9ERShpZW50cnkpLT5pX2V4dDsKPiA+ICAgICAgICAgc3RydWN0 IGV4dGVudF90cmVlICpldDsKPiA+ICAgICAgICAgc3RydWN0IGV4dGVudF9ub2RlICplbjsKPiA+ ICAgICAgICAgc3RydWN0IGV4dGVudF9pbmZvIGVpID0gezB9Owo+ID4gQEAgLTQyOCw5ICs0Mjgs OSBAQCB2b2lkIGYyZnNfaW5pdF9yZWFkX2V4dGVudF90cmVlKHN0cnVjdCBpbm9kZSAqaW5vZGUs IHN0cnVjdCBmb2xpbyAqaWZvbGlvKQo+ID4gICAgICAgICBpZiAoIV9fbWF5X2V4dGVudF90cmVl KGlub2RlLCBFWF9SRUFEKSkgewo+ID4gICAgICAgICAgICAgICAgIC8qIGRyb3AgbGFyZ2VzdCBy ZWFkIGV4dGVudCAqLwo+ID4gICAgICAgICAgICAgICAgIGlmIChpX2V4dC0+bGVuKSB7Cj4gPiAt ICAgICAgICAgICAgICAgICAgICAgICBmMmZzX2ZvbGlvX3dhaXRfd3JpdGViYWNrKGlmb2xpbywg Tk9ERSwgdHJ1ZSwgdHJ1ZSk7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBmMmZzX2NhY2hl X3dhaXRfd3JpdGViYWNrKGllbnRyeSk7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBpX2V4 dC0+bGVuID0gMDsKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGZvbGlvX21hcmtfZGlydHko aWZvbGlvKTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGYyZnNfbWFya19jYWNoZV9kaXJ0 eShpZW50cnkpOwo+ID4gICAgICAgICAgICAgICAgIH0KPiA+ICAgICAgICAgICAgICAgICBzZXRf aW5vZGVfZmxhZyhpbm9kZSwgRklfTk9fRVhURU5UKTsKPiA+ICAgICAgICAgICAgICAgICByZXR1 cm47Cj4gPiBAQCAtOTU4LDcgKzk1OCw3IEBAIHN0YXRpYyB2b2lkIF9fdXBkYXRlX2V4dGVudF9j YWNoZShzdHJ1Y3QgZG5vZGVfb2ZfZGF0YSAqZG4sIGVudW0gZXh0ZW50X3R5cGUgdHlwCj4gPiAg ICAgICAgICAgICAgICAgcmV0dXJuOwo+ID4KPiA+ICAgICAgICAgZWkuZm9mcyA9IGYyZnNfc3Rh cnRfYmlkeF9vZl9ub2RlKG9mc19vZl9ub2RlKEYyRlNfSV9TQihkbi0+aW5vZGUpLAo+ID4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbi0+bm9kZV9mb2xpbyksIGRuLT5pbm9kZSkg KyBkbi0+b2ZzX2luX25vZGU7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRu LT5ub2RlX2VudHJ5KSwgZG4tPmlub2RlKSArIGRuLT5vZnNfaW5fbm9kZTsKPiA+ICAgICAgICAg ZWkubGVuID0gMTsKPiA+Cj4gPiAgICAgICAgIGlmICh0eXBlID09IEVYX1JFQUQpIHsKPiA+IGRp ZmYgLS1naXQgYS9mcy9mMmZzL2YyZnMuaCBiL2ZzL2YyZnMvZjJmcy5oCj4gPiBpbmRleCA1MWMx OTFjNTE0YmMuLmQ2NjgxMjc2NzA4ZSAxMDA2NDQKPiA+IC0tLSBhL2ZzL2YyZnMvZjJmcy5oCj4g PiArKysgYi9mcy9mMmZzL2YyZnMuaAo+ID4gQEAgLTQxOCw3ICs0MTgsNyBAQCBzdHJ1Y3QgaW5v ZGVfZW50cnkgewo+ID4KPiA+ICBzdHJ1Y3QgZnN5bmNfbm9kZV9lbnRyeSB7Cj4gPiAgICAgICAg IHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsgIC8qIGxpc3QgaGVhZCAqLwo+ID4gLSAgICAgICBzdHJ1 Y3QgZm9saW8gKmZvbGlvOyAgICAvKiB3YXJtIG5vZGUgZm9saW8gcG9pbnRlciAqLwo+ID4gKyAg ICAgICBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5OyAvKiB3YXJtIG5vZGUgY2FjaGUg ZW50cnkgcG9pbnRlciAqLwo+ID4gICAgICAgICB1bnNpZ25lZCBpbnQgc2VxX2lkOyAgICAvKiBz ZXF1ZW5jZSBpZCAqLwo+ID4gIH07Cj4gPgo+ID4gQEAgLTExMTYsMTEgKzExMTYsMTEgQEAgc3Ry dWN0IGYyZnNfbm1faW5mbyB7Cj4gPiAgICovCj4gPiAgc3RydWN0IGRub2RlX29mX2RhdGEgewo+ ID4gICAgICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlOyAgICAgICAgICAgIC8qIHZmcyBpbm9kZSBw b2ludGVyICovCj4gPiAtICAgICAgIHN0cnVjdCBmb2xpbyAqaW5vZGVfZm9saW87ICAgICAgLyog aXRzIGlub2RlIGZvbGlvLCBOVUxMIGlzIHBvc3NpYmxlICovCj4gPiAtICAgICAgIHN0cnVjdCBm b2xpbyAqbm9kZV9mb2xpbzsgICAgICAgLyogY2FjaGVkIGRpcmVjdCBub2RlIGZvbGlvICovCj4g PiArICAgICAgIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqaW5vZGVfZW50cnk7IC8qIGdlbmVy aWMgY2FjaGUgaW5vZGUgZW50cnkgKi8KPiA+ICsgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Js b2NrICpub2RlX2VudHJ5OyAgLyogZ2VuZXJpYyBjYWNoZSBub2RlIGVudHJ5ICovCj4gPiAgICAg ICAgIG5pZF90IG5pZDsgICAgICAgICAgICAgICAgICAgICAgLyogbm9kZSBpZCBvZiB0aGUgZGly ZWN0IG5vZGUgYmxvY2sgKi8KPiA+ICAgICAgICAgdW5zaWduZWQgaW50IG9mc19pbl9ub2RlOyAg ICAgICAvKiBkYXRhIG9mZnNldCBpbiB0aGUgbm9kZSBwYWdlICovCj4gPiAtICAgICAgIGJvb2wg aW5vZGVfZm9saW9fbG9ja2VkOyAgICAgICAgLyogaW5vZGUgZm9saW8gaXMgbG9ja2VkIG9yIG5v dCAqLwo+ID4gKyAgICAgICBib29sIGlub2RlX2VudHJ5X2xvY2tlZDsgICAgICAgIC8qIGlub2Rl IGVudHJ5IGlzIGxvY2tlZCBvciBub3QgKi8KPiA+ICAgICAgICAgYm9vbCBub2RlX2NoYW5nZWQ7 ICAgICAgICAgICAgICAvKiBpcyBub2RlIGJsb2NrIGNoYW5nZWQgKi8KPiA+ICAgICAgICAgY2hh ciBjdXJfbGV2ZWw7ICAgICAgICAgICAgICAgICAvKiBsZXZlbCBvZiBob2xlIG5vZGUgcGFnZSAq Lwo+ID4gICAgICAgICBjaGFyIG1heF9sZXZlbDsgICAgICAgICAgICAgICAgIC8qIGxldmVsIG9m IGN1cnJlbnQgcGFnZSBsb2NhdGVkICovCj4gPiBAQCAtMTEyOCwxMiArMTEyOCwxMiBAQCBzdHJ1 Y3QgZG5vZGVfb2ZfZGF0YSB7Cj4gPiAgfTsKPiA+Cj4gPiAgc3RhdGljIGlubGluZSB2b2lkIHNl dF9uZXdfZG5vZGUoc3RydWN0IGRub2RlX29mX2RhdGEgKmRuLCBzdHJ1Y3QgaW5vZGUgKmlub2Rl LAo+ID4gLSAgICAgICAgICAgICAgIHN0cnVjdCBmb2xpbyAqaWZvbGlvLCBzdHJ1Y3QgZm9saW8g Km5mb2xpbywgbmlkX3QgbmlkKQo+ID4gKyAgICAgICAgICAgICAgIHN0cnVjdCBmMmZzX2NhY2hl ZF9ibG9jayAqaWVudHJ5LCBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKm5lbnRyeSwgbmlkX3Qg bmlkKQo+ID4gIHsKPiA+ICAgICAgICAgbWVtc2V0KGRuLCAwLCBzaXplb2YoKmRuKSk7Cj4gPiAg ICAgICAgIGRuLT5pbm9kZSA9IGlub2RlOwo+ID4gLSAgICAgICBkbi0+aW5vZGVfZm9saW8gPSBp Zm9saW87Cj4gPiAtICAgICAgIGRuLT5ub2RlX2ZvbGlvID0gbmZvbGlvOwo+ID4gKyAgICAgICBk bi0+aW5vZGVfZW50cnkgPSBpZW50cnk7Cj4gPiArICAgICAgIGRuLT5ub2RlX2VudHJ5ID0gbmVu dHJ5Owo+ID4gICAgICAgICBkbi0+bmlkID0gbmlkOwo+ID4gIH0KPiA+Cj4gPiBAQCAtMTYxNCwx MCArMTYxNCw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmMmZzX2NsZWFyX2JpdCh1bnNpZ25lZCBp bnQgbnIsIGNoYXIgKmFkZHIpOwo+ID4gICAqIHwgYml0MCA9IDEgfCBiaXQxIHwgYml0MiB8IC4u LiB8IGJpdCBNQVggfCBwcml2YXRlIGRhdGEgLi4uLiB8Cj4gPiAgICogYml0IDAgICAgICAgUEFH RV9QUklWQVRFX05PVF9QT0lOVEVSCj4gPiAgICogYml0IDEgICAgICAgUEFHRV9QUklWQVRFX09O R09JTkdfTUlHUkFUSU9OCj4gPiAtICogYml0IDIgICAgICAgUEFHRV9QUklWQVRFX0lOTElORV9J Tk9ERQo+ID4gLSAqIGJpdCAzICAgICAgIFBBR0VfUFJJVkFURV9SRUZfUkVTT1VSQ0UKPiA+IC0g KiBiaXQgNCAgICAgICBQQUdFX1BSSVZBVEVfQVRPTUlDX1dSSVRFCj4gPiAtICogYml0IDUtICAg ICAgZjJmcyBwcml2YXRlIGRhdGEKPiA+ICsgKiBiaXQgMiAgICAgICBQQUdFX1BSSVZBVEVfUkVG X1JFU09VUkNFCj4gPiArICogYml0IDMgICAgICAgUEFHRV9QUklWQVRFX0FUT01JQ19XUklURQo+ ID4gKyAqIGJpdCA0LSAgICAgIGYyZnMgcHJpdmF0ZSBkYXRhCj4gPiAgICoKPiA+ICAgKiBMYXlv dXQgQjogbG93ZXN0IGJpdCBzaG91bGQgYmUgMAo+ID4gICAqIHBhZ2UucHJpdmF0ZSBpcyBhIHdy YXBwZWQgcG9pbnRlci4KPiA+IEBAIC0xNjI1LDcgKzE2MjQsNiBAQCBzdGF0aWMgaW5saW5lIHZv aWQgZjJmc19jbGVhcl9iaXQodW5zaWduZWQgaW50IG5yLCBjaGFyICphZGRyKTsKPiA+ICBlbnVt IHsKPiA+ICAgICAgICAgUEFHRV9QUklWQVRFX05PVF9QT0lOVEVSLCAgICAgICAgICAgICAgIC8q IHByaXZhdGUgY29udGFpbnMgbm9uLXBvaW50ZXIgZGF0YSAqLwo+ID4gICAgICAgICBQQUdFX1BS SVZBVEVfT05HT0lOR19NSUdSQVRJT04sICAgICAgICAgLyogZGF0YSBwYWdlIHdoaWNoIGlzIG9u LWdvaW5nIG1pZ3JhdGluZyAqLwo+ID4gLSAgICAgICBQQUdFX1BSSVZBVEVfSU5MSU5FX0lOT0RF LCAgICAgICAgICAgICAgLyogaW5vZGUgcGFnZSBjb250YWlucyBpbmxpbmUgZGF0YSAqLwo+ID4g ICAgICAgICBQQUdFX1BSSVZBVEVfUkVGX1JFU09VUkNFLCAgICAgICAgICAgICAgLyogZGlydHkg cGFnZSBoYXMgcmVmZXJlbmNlZCByZXNvdXJjZXMgKi8KPiA+ICAgICAgICAgUEFHRV9QUklWQVRF X0FUT01JQ19XUklURSwgICAgICAgICAgICAgIC8qIGRhdGEgcGFnZSBmcm9tIGF0b21pYyB3cml0 ZSBwYXRoICovCj4gPiAgICAgICAgIFBBR0VfUFJJVkFURV9NQVgKPiA+IEBAIC0xODAyLDcgKzE4 MDAsNiBAQCBzdHJ1Y3QgZjJmc19zYl9pbmZvIHsKPiA+Cj4gPiAgICAgICAgIC8qIGZvciBub2Rl LXJlbGF0ZWQgb3BlcmF0aW9ucyAqLwo+ID4gICAgICAgICBzdHJ1Y3QgZjJmc19ubV9pbmZvICpu bV9pbmZvOyAgICAgICAgICAgLyogbm9kZSBtYW5hZ2VyICovCj4gPiAtICAgICAgIHN0cnVjdCBp bm9kZSAqbm9kZV9pbm9kZTsgICAgICAgICAgICAgICAvKiBjYWNoZSBub2RlIGJsb2NrcyAqLwo+ ID4KPiA+ICAgICAgICAgLyogZm9yIHNlZ21lbnQtcmVsYXRlZCBvcGVyYXRpb25zICovCj4gPiAg ICAgICAgIHN0cnVjdCBmMmZzX3NtX2luZm8gKnNtX2luZm87ICAgICAgICAgICAvKiBzZWdtZW50 IG1hbmFnZXIgKi8KPiA+IEBAIC0yMzI3LDI4ICsyMzI0LDI5IEBAIHN0YXRpYyBpbmxpbmUgc3Ry dWN0IGYyZnNfY2hlY2twb2ludCAqRjJGU19DS1BUKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSkK PiA+ICB9Cj4gPgo+ID4gIHN0YXRpYyBpbmxpbmUgc3RydWN0IG5vZGVfZm9vdGVyICpGMkZTX05P REVfRk9PVEVSKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBmb2xpbyAqZm9saW8p Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5KQo+ID4gIHsKPiA+IC0gICAgICAgcmV0 dXJuIGZvbGlvX2FkZHJlc3MoZm9saW8pICsgRjJGU19CTEtTSVpFKHNiaSkgLQo+ID4gLSAgICAg ICAgICAgICAgIHNpemVvZihzdHJ1Y3Qgbm9kZV9mb290ZXIpOwo+ID4gKyAgICAgICByZXR1cm4g KHN0cnVjdCBub2RlX2Zvb3RlciAqKShjYWNoZV9hZGRyZXNzKGVudHJ5KSArCj4gPiArICAgICAg ICAgICAgICAgRjJGU19CTEtTSVpFKHNiaSkgLSBzaXplb2Yoc3RydWN0IG5vZGVfZm9vdGVyKSk7 Cj4gPiAgfQo+ID4KPiA+IC1zdGF0aWMgaW5saW5lIHN0cnVjdCBmMmZzX25vZGUgKkYyRlNfTk9E RShjb25zdCBzdHJ1Y3QgZm9saW8gKmZvbGlvKQo+ID4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IGYy ZnNfbm9kZSAqRjJGU19OT0RFKGNvbnN0IHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnkp Cj4gPiAgewo+ID4gLSAgICAgICByZXR1cm4gKHN0cnVjdCBmMmZzX25vZGUgKilmb2xpb19hZGRy ZXNzKGZvbGlvKTsKPiA+ICsgICAgICAgcmV0dXJuIChzdHJ1Y3QgZjJmc19ub2RlICopQ0FDSEVE X05PREUoZW50cnkpOwo+ID4gIH0KPiA+Cj4gPiAtc3RhdGljIGlubGluZSBzdHJ1Y3QgZjJmc19p bm9kZSAqRjJGU19JTk9ERShjb25zdCBzdHJ1Y3QgZm9saW8gKmZvbGlvKQo+ID4gK3N0YXRpYyBp bmxpbmUgc3RydWN0IGYyZnNfaW5vZGUgKkYyRlNfSU5PREUoY29uc3Qgc3RydWN0IGYyZnNfY2Fj aGVkX2Jsb2NrICplbnRyeSkKPiA+ICB7Cj4gPiAtICAgICAgIHJldHVybiAmKChzdHJ1Y3QgZjJm c19ub2RlICopZm9saW9fYWRkcmVzcyhmb2xpbykpLT5pOwo+ID4gKyAgICAgICByZXR1cm4gJkNB Q0hFRF9OT0RFKGVudHJ5KS0+aTsKPiA+ICB9Cj4gPgo+ID4gIHN0YXRpYyBpbmxpbmUgX19sZTMy ICpGMkZTX0lOT0RFX05JRFMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGZvbGlv ICpmb2xpbykKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnkpCj4gPiAgewo+ID4gLSAg ICAgICByZXR1cm4gZm9saW9fYWRkcmVzcyhmb2xpbykgKyBGMkZTX0JMS1NJWkUoc2JpKSAtCj4g PiArICAgICAgIHJldHVybiAoX19sZTMyICopKGNhY2hlX2FkZHJlc3MoZW50cnkpICsKPiA+ICsg ICAgICAgICAgICAgICBGMkZTX0JMS1NJWkUoc2JpKSAtCj4gPiAgICAgICAgICAgICAgICAgc2l6 ZW9mKHN0cnVjdCBub2RlX2Zvb3RlcikgLQo+ID4gLSAgICAgICAgICAgICAgIFNJWkVfT0ZfSV9O SUQ7Cj4gPiArICAgICAgICAgICAgICAgU0laRV9PRl9JX05JRCk7Cj4gPiAgfQo+ID4KPiA+ICBz dGF0aWMgaW5saW5lIHN0cnVjdCBmMmZzX25tX2luZm8gKk5NX0koc3RydWN0IGYyZnNfc2JfaW5m byAqc2JpKQo+ID4gQEAgLTIzODEsMTQgKzIzNzksOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZjJm c19pc19tZXRhX2NhY2hlKHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnkpCj4gPiAgICAg ICAgIHJldHVybiBlbnRyeS0+Y2FjaGUgJiYgZW50cnktPmNhY2hlID09IE1FVEFfQ0FDSEUoZW50 cnktPmNhY2hlLT5zYmkpOwo+ID4gIH0KPiA+Cj4gPiAtc3RhdGljIGlubGluZSBzdHJ1Y3QgYWRk cmVzc19zcGFjZSAqTk9ERV9NQVBQSU5HKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSkKPiA+ICtz dGF0aWMgaW5saW5lIGJvb2wgZjJmc19pc19ub2RlX2NhY2hlKHN0cnVjdCBmMmZzX2NhY2hlZF9i bG9jayAqZW50cnkpCj4gPiAgewo+ID4gLSAgICAgICByZXR1cm4gc2JpLT5ub2RlX2lub2RlLT5p X21hcHBpbmc7Cj4gPiAtfQo+ID4gLQo+ID4gLXN0YXRpYyBpbmxpbmUgYm9vbCBpc19ub2RlX2Zv bGlvKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgc3RydWN0IGZvbGlvICpmb2xpbykKPiA+IC17 Cj4gPiAtICAgICAgIHJldHVybiBmb2xpby0+bWFwcGluZyA9PSBOT0RFX01BUFBJTkcoc2JpKTsK PiA+ICsgICAgICAgcmV0dXJuIGVudHJ5LT5jYWNoZSAmJiBlbnRyeS0+Y2FjaGUgPT0gTk9ERV9D QUNIRShlbnRyeS0+Y2FjaGUtPnNiaSk7Cj4gPiAgfQo+ID4KPiA+ICBzdGF0aWMgaW5saW5lIHN0 cnVjdCBmMmZzX2JpbyAqRjJGU19CSU8oc3RydWN0IGJpbyAqYmlvKQo+ID4gQEAgLTI4MTIsMTcg KzI4MDUsMTQgQEAgc3RhdGljIGlubGluZSB2b2lkIGNsZWFyX3BhZ2VfcHJpdmF0ZV8jI25hbWUo c3RydWN0IHBhZ2UgKnBhZ2UpIFwKPiA+ICB9Cj4gPgo+ID4gIFBBR0VfUFJJVkFURV9HRVRfRlVO Qyhub25wb2ludGVyLCBOT1RfUE9JTlRFUik7Cj4gPiAtUEFHRV9QUklWQVRFX0dFVF9GVU5DKGlu bGluZSwgSU5MSU5FX0lOT0RFKTsKPiA+ICBQQUdFX1BSSVZBVEVfR0VUX0ZVTkMoZ2NpbmcsIE9O R09JTkdfTUlHUkFUSU9OKTsKPiA+ICBQQUdFX1BSSVZBVEVfR0VUX0ZVTkMoYXRvbWljLCBBVE9N SUNfV1JJVEUpOwo+ID4KPiA+ICBQQUdFX1BSSVZBVEVfU0VUX0ZVTkMocmVmZXJlbmNlLCBSRUZf UkVTT1VSQ0UpOwo+ID4gLVBBR0VfUFJJVkFURV9TRVRfRlVOQyhpbmxpbmUsIElOTElORV9JTk9E RSk7Cj4gPiAgUEFHRV9QUklWQVRFX1NFVF9GVU5DKGdjaW5nLCBPTkdPSU5HX01JR1JBVElPTik7 Cj4gPiAgUEFHRV9QUklWQVRFX1NFVF9GVU5DKGF0b21pYywgQVRPTUlDX1dSSVRFKTsKPiA+Cj4g PiAgUEFHRV9QUklWQVRFX0NMRUFSX0ZVTkMocmVmZXJlbmNlLCBSRUZfUkVTT1VSQ0UpOwo+ID4g LVBBR0VfUFJJVkFURV9DTEVBUl9GVU5DKGlubGluZSwgSU5MSU5FX0lOT0RFKTsKPiA+ICBQQUdF X1BSSVZBVEVfQ0xFQVJfRlVOQyhnY2luZywgT05HT0lOR19NSUdSQVRJT04pOwo+ID4gIFBBR0Vf UFJJVkFURV9DTEVBUl9GVU5DKGF0b21pYywgQVRPTUlDX1dSSVRFKTsKPiA+Cj4gPiBAQCAtMzIz MSwxNCArMzIyMSw1MSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZjJmc19wdXRfcGFnZShzdHJ1Y3Qg cGFnZSAqcGFnZSwgYm9vbCB1bmxvY2spCj4gPiAgICAgICAgIGYyZnNfZm9saW9fcHV0KHBhZ2Vf Zm9saW8ocGFnZSksIHVubG9jayk7Cj4gPiAgfQo+ID4KPiA+ICsjZGVmaW5lIEYyRlNfREVOVFJZ X1RBR19DQUNIRSAgMVVMCj4gPiArI2RlZmluZSBGMkZTX0RFTlRSWV9UQUdfTUFTSyAgIDFVTAo+ ID4gKwo+ID4gK3N0YXRpYyBpbmxpbmUgdm9pZCAqZjJmc19jYWNoZV9tYWtlX2RlbnRyeV9ibG9j ayhzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5KQo+ID4gK3sKPiA+ICsgICAgICAgaWYg KElTX0VSUl9PUl9OVUxMKGVudHJ5KSkKPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7 Cj4gPiArICAgICAgIHJldHVybiAodm9pZCAqKSgodW5zaWduZWQgbG9uZyllbnRyeSB8IEYyRlNf REVOVFJZX1RBR19DQUNIRSk7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBpbmxpbmUgYm9vbCBm MmZzX2RlbnRyeV9pc19jYWNoZSh2b2lkICpkZW50cnlfYmxvY2spCj4gPiArewo+ID4gKyAgICAg ICByZXR1cm4gKCh1bnNpZ25lZCBsb25nKWRlbnRyeV9ibG9jayAmIEYyRlNfREVOVFJZX1RBR19N QVNLKSA9PQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgRjJGU19ERU5UUllfVEFHX0NBQ0hFOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW5saW5l IHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZjJmc19kZW50cnlfY2FjaGUodm9pZCAqZGVudHJ5 X2Jsb2NrKQo+ID4gK3sKPiA+ICsgICAgICAgcmV0dXJuIChzdHJ1Y3QgZjJmc19jYWNoZWRfYmxv Y2sgKikKPiA+ICsgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGxvbmcpZGVudHJ5X2Jsb2NrICYg fkYyRlNfREVOVFJZX1RBR19NQVNLKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGlubGluZSBz dHJ1Y3QgZm9saW8gKmYyZnNfZGVudHJ5X2ZvbGlvKHZvaWQgKmRlbnRyeV9ibG9jaykKPiA+ICt7 Cj4gPiArICAgICAgIHJldHVybiAoc3RydWN0IGZvbGlvICopZGVudHJ5X2Jsb2NrOwo+ID4gK30K PiA+ICsKPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQgZjJmc19wdXRfZGVudHJ5X2Jsb2NrKHZvaWQg KmRlbnRyeV9ibG9jaywgYm9vbCB1bmxvY2spCj4gPiArewo+ID4gKyAgICAgICBpZiAoSVNfRVJS X09SX05VTEwoZGVudHJ5X2Jsb2NrKSkKPiA+ICsgICAgICAgICAgICAgICByZXR1cm47Cj4gPiAr ICAgICAgIGlmIChmMmZzX2RlbnRyeV9pc19jYWNoZShkZW50cnlfYmxvY2spKQo+ID4gKyAgICAg ICAgICAgICAgIGYyZnNfcHV0X2NhY2hlKGYyZnNfZGVudHJ5X2NhY2hlKGRlbnRyeV9ibG9jayks IHVubG9jayk7Cj4gPiArICAgICAgIGVsc2UKPiA+ICsgICAgICAgICAgICAgICBmMmZzX2ZvbGlv X3B1dChmMmZzX2RlbnRyeV9mb2xpbyhkZW50cnlfYmxvY2spLCB1bmxvY2spOwo+ID4gK30KPiA+ ICsKPiA+ICBzdGF0aWMgaW5saW5lIHZvaWQgZjJmc19wdXRfZG5vZGUoc3RydWN0IGRub2RlX29m X2RhdGEgKmRuKQo+ID4gIHsKPiA+IC0gICAgICAgaWYgKGRuLT5ub2RlX2ZvbGlvKQo+ID4gLSAg ICAgICAgICAgICAgIGYyZnNfZm9saW9fcHV0KGRuLT5ub2RlX2ZvbGlvLCB0cnVlKTsKPiA+IC0g ICAgICAgaWYgKGRuLT5pbm9kZV9mb2xpbyAmJiBkbi0+bm9kZV9mb2xpbyAhPSBkbi0+aW5vZGVf Zm9saW8pCj4gPiAtICAgICAgICAgICAgICAgZjJmc19mb2xpb19wdXQoZG4tPmlub2RlX2ZvbGlv LCBmYWxzZSk7Cj4gPiAtICAgICAgIGRuLT5ub2RlX2ZvbGlvID0gTlVMTDsKPiA+IC0gICAgICAg ZG4tPmlub2RlX2ZvbGlvID0gTlVMTDsKPiA+ICsgICAgICAgaWYgKGRuLT5ub2RlX2VudHJ5KQo+ ID4gKyAgICAgICAgICAgICAgIGYyZnNfcHV0X2NhY2hlKGRuLT5ub2RlX2VudHJ5LCB0cnVlKTsK PiA+ICsgICAgICAgaWYgKGRuLT5pbm9kZV9lbnRyeSAmJiBkbi0+bm9kZV9lbnRyeSAhPSBkbi0+ aW5vZGVfZW50cnkpCj4gPiArICAgICAgICAgICAgICAgZjJmc19wdXRfY2FjaGUoZG4tPmlub2Rl X2VudHJ5LCBmYWxzZSk7Cj4gPiArICAgICAgIGRuLT5ub2RlX2VudHJ5ID0gTlVMTDsKPiA+ICsg ICAgICAgZG4tPmlub2RlX2VudHJ5ID0gTlVMTDsKPiA+ICB9Cj4gPgo+ID4gIHN0YXRpYyBpbmxp bmUgc3RydWN0IGttZW1fY2FjaGUgKmYyZnNfa21lbV9jYWNoZV9jcmVhdGUoY29uc3QgY2hhciAq bmFtZSwKPiA+IEBAIC0zMzI3LDkgKzMzNTQsOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZjJmc19y YWRpeF90cmVlX2luc2VydChzdHJ1Y3QgcmFkaXhfdHJlZV9yb290ICpyb290LAo+ID4gICAgICAg ICAgICAgICAgIGNvbmRfcmVzY2hlZCgpOwo+ID4gIH0KPiA+Cj4gPiAtc3RhdGljIGlubGluZSBi b29sIElTX0lOT0RFKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgY29uc3Qgc3RydWN0IGZvbGlv ICpmb2xpbykKPiA+ICtzdGF0aWMgaW5saW5lIGJvb2wgSVNfSU5PREUoc3RydWN0IGYyZnNfc2Jf aW5mbyAqc2JpLCBjb25zdCBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5KQo+ID4gIHsK PiA+IC0gICAgICAgc3RydWN0IG5vZGVfZm9vdGVyICpmb290ZXIgPSBGMkZTX05PREVfRk9PVEVS KHNiaSwgZm9saW8pOwo+ID4gKyAgICAgICBzdHJ1Y3Qgbm9kZV9mb290ZXIgKmZvb3RlciA9IEYy RlNfTk9ERV9GT09URVIoc2JpLCBlbnRyeSk7Cj4gPgo+ID4gICAgICAgICByZXR1cm4gZm9vdGVy LT5uaWQgPT0gZm9vdGVyLT5pbm87Cj4gPiAgfQo+ID4gQEAgLTMzNDEsNDYgKzMzNjgsNDQgQEAg c3RhdGljIGlubGluZSBpbnQgb2Zmc2V0X2luX2FkZHIoc3RydWN0IGYyZnNfaW5vZGUgKmkpCj4g PiAgfQo+ID4KPiA+ICBzdGF0aWMgaW5saW5lIF9fbGUzMiAqYmxrYWRkcl9pbl9ub2RlKHN0cnVj dCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBmb2xpbyAqZm9saW8pCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZjJmc19j YWNoZWRfYmxvY2sgKmVudHJ5KQo+ID4gIHsKPiA+IC0gICAgICAgc3RydWN0IGYyZnNfbm9kZSAq bm9kZSA9IEYyRlNfTk9ERShmb2xpbyk7Cj4gPiArICAgICAgIHN0cnVjdCBmMmZzX25vZGUgKm5v ZGUgPSBGMkZTX05PREUoZW50cnkpOwo+ID4KPiA+IC0gICAgICAgcmV0dXJuIElTX0lOT0RFKHNi aSwgZm9saW8pID8gbm9kZS0+aS5pX2FkZHIgOiBub2RlLT5kbi5hZGRyOwo+ID4gKyAgICAgICBy ZXR1cm4gSVNfSU5PREUoc2JpLCBlbnRyeSkgPyBub2RlLT5pLmlfYWRkciA6IG5vZGUtPmRuLmFk ZHI7Cj4gPiAgfQo+ID4KPiA+ICBzdGF0aWMgaW5saW5lIGludCBmMmZzX2hhc19leHRyYV9hdHRy KHN0cnVjdCBpbm9kZSAqaW5vZGUpOwo+ID4gKwo+ID4gIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQg aW50IGdldF9kbm9kZV9iYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsCj4gPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGZvbGlvICpub2RlX2ZvbGlvKQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBmMmZz X2NhY2hlZF9ibG9jayAqZW50cnkpCj4gPiAgewo+ID4gLSAgICAgICBzdHJ1Y3QgZjJmc19zYl9p bmZvICpzYmkgPSBpbm9kZSA/IEYyRlNfSV9TQihpbm9kZSkgOgo+ID4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEYyRlNfRl9TQihub2RlX2ZvbGlvKTsKPiA+IC0KPiA+ IC0gICAgICAgaWYgKCFJU19JTk9ERShzYmksIG5vZGVfZm9saW8pKQo+ID4gKyAgICAgICBpZiAo IUlTX0lOT0RFKGlub2RlID8gRjJGU19JX1NCKGlub2RlKSA6IGVudHJ5LT5jYWNoZS0+c2JpLCBl bnRyeSkpCj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4gPgo+ID4gICAgICAgICByZXR1 cm4gaW5vZGUgPyBnZXRfZXh0cmFfaXNpemUoaW5vZGUpIDoKPiA+IC0gICAgICAgICAgICAgICAg ICAgICAgIG9mZnNldF9pbl9hZGRyKCZGMkZTX05PREUobm9kZV9mb2xpbyktPmkpOwo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0X2luX2FkZHIoJkNBQ0hFRF9OT0RFKGVudHJ5KS0+ aSk7Cj4gPiAgfQo+ID4KPiA+ICBzdGF0aWMgaW5saW5lIF9fbGUzMiAqZ2V0X2Rub2RlX2FkZHIo c3RydWN0IGlub2RlICppbm9kZSwKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgZm9saW8gKm5vZGVfZm9saW8pCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRy eSkKPiA+ICB7Cj4gPiAtICAgICAgIHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSA9IGlub2RlID8g RjJGU19JX1NCKGlub2RlKSA6Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRjJGU19GX1NCKG5vZGVfZm9saW8pOwo+ID4gKyAgICAgICBzdHJ1Y3QgZjJmc19zYl9p bmZvICpzYmkgPSBpbm9kZSA/IEYyRlNfSV9TQihpbm9kZSkgOiBlbnRyeS0+Y2FjaGUtPnNiaTsK PiA+Cj4gPiAtICAgICAgIHJldHVybiBibGthZGRyX2luX25vZGUoc2JpLCBub2RlX2ZvbGlvKSAr Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBnZXRfZG5vZGVfYmFzZShpbm9kZSwgbm9kZV9m b2xpbyk7Cj4gPiArICAgICAgIHJldHVybiBibGthZGRyX2luX25vZGUoc2JpLCBlbnRyeSkgKwo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZ2V0X2Rub2RlX2Jhc2UoaW5vZGUsIGVudHJ5KTsK PiA+ICB9Cj4gPgo+ID4gIHN0YXRpYyBpbmxpbmUgYmxvY2tfdCBkYXRhX2Jsa2FkZHIoc3RydWN0 IGlub2RlICppbm9kZSwKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBmb2xpbyAq bm9kZV9mb2xpbywgdW5zaWduZWQgaW50IG9mZnNldCkKPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnksCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0KQo+ID4gIHsKPiA+IC0gICAgICAgcmV0 dXJuIGxlMzJfdG9fY3B1KCooZ2V0X2Rub2RlX2FkZHIoaW5vZGUsIG5vZGVfZm9saW8pICsgb2Zm c2V0KSk7Cj4gPiArICAgICAgIHJldHVybiBsZTMyX3RvX2NwdSgqKGdldF9kbm9kZV9hZGRyKGlu b2RlLCBlbnRyeSkgKyBvZmZzZXQpKTsKPiA+ICB9Cj4gPgo+ID4gIHN0YXRpYyBpbmxpbmUgYmxv Y2tfdCBmMmZzX2RhdGFfYmxrYWRkcihzdHJ1Y3QgZG5vZGVfb2ZfZGF0YSAqZG4pCj4gPiAgewo+ ID4gLSAgICAgICByZXR1cm4gZGF0YV9ibGthZGRyKGRuLT5pbm9kZSwgZG4tPm5vZGVfZm9saW8s IGRuLT5vZnNfaW5fbm9kZSk7Cj4gPiArICAgICAgIHJldHVybiBkYXRhX2Jsa2FkZHIoZG4tPmlu b2RlLCBkbi0+bm9kZV9lbnRyeSwgZG4tPm9mc19pbl9ub2RlKTsKPiA+ICB9Cj4gPgo+ID4gIHN0 YXRpYyBpbmxpbmUgaW50IGYyZnNfdGVzdF9iaXQodW5zaWduZWQgaW50IG5yLCBjaGFyICphZGRy KQo+ID4gQEAgLTM2OTcsMTAgKzM3MjIsMTAgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQg Y3VyX2FkZHJzX3Blcl9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKQo+ID4gICAgICAgICByZXR1 cm4gREVGX0FERFJTX1BFUl9JTk9ERShGMkZTX0lfU0IoaW5vZGUpKSAtIGdldF9leHRyYV9pc2l6 ZShpbm9kZSk7Cj4gPiAgfQo+ID4KPiA+IC1zdGF0aWMgaW5saW5lCj4gPiAtdm9pZCAqaW5saW5l X3hhdHRyX2FkZHIoc3RydWN0IGlub2RlICppbm9kZSwgY29uc3Qgc3RydWN0IGZvbGlvICpmb2xp bykKPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQgKmlubGluZV94YXR0cl9hZGRyKHN0cnVjdCBpbm9k ZSAqaW5vZGUsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVj dCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnkpCj4gPiAgewo+ID4gLSAgICAgICBzdHJ1Y3QgZjJm c19pbm9kZSAqcmkgPSBGMkZTX0lOT0RFKGZvbGlvKTsKPiA+ICsgICAgICAgc3RydWN0IGYyZnNf aW5vZGUgKnJpID0gRjJGU19JTk9ERShlbnRyeSk7Cj4gPgo+ID4gICAgICAgICByZXR1cm4gKHZv aWQgKikmKHJpLT5pX2FkZHJbREVGX0FERFJTX1BFUl9JTk9ERShGMkZTX0lfU0IoaW5vZGUpKSAt Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X2lubGluZV94 YXR0cl9hZGRycyhpbm9kZSldKTsKPiA+IEBAIC0zNzQ3LDkgKzM3NzIsMTAgQEAgc3RhdGljIGlu bGluZSBib29sIGYyZnNfaXNfY293X2ZpbGUoc3RydWN0IGlub2RlICppbm9kZSkKPiA+ICAgICAg ICAgcmV0dXJuIGlzX2lub2RlX2ZsYWdfc2V0KGlub2RlLCBGSV9DT1dfRklMRSk7Cj4gPiAgfQo+ ID4KPiA+IC1zdGF0aWMgaW5saW5lIHZvaWQgKmlubGluZV9kYXRhX2FkZHIoc3RydWN0IGlub2Rl ICppbm9kZSwgc3RydWN0IGZvbGlvICpmb2xpbykKPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQgKmlu bGluZV9kYXRhX2FkZHIoc3RydWN0IGlub2RlICppbm9kZSwKPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnkpCj4gPiAgewo+ID4g LSAgICAgICBfX2xlMzIgKmFkZHIgPSBnZXRfZG5vZGVfYWRkcihpbm9kZSwgZm9saW8pOwo+ID4g KyAgICAgICBfX2xlMzIgKmFkZHIgPSBnZXRfZG5vZGVfYWRkcihpbm9kZSwgZW50cnkpOwo+ID4K PiA+ICAgICAgICAgcmV0dXJuICh2b2lkICopKGFkZHIgKyBERUZfSU5MSU5FX1JFU0VSVkVEX1NJ WkUpOwo+ID4gIH0KPiA+IEBAIC0zOTU5LDEzICszOTg1LDEzIEBAIGludCBmMmZzX3Bpbl9maWxl X2NvbnRyb2woc3RydWN0IGlub2RlICppbm9kZSwgYm9vbCBpbmMpOwo+ID4gICAqIGlub2RlLmMK PiA+ICAgKi8KPiA+ICB2b2lkIGYyZnNfc2V0X2lub2RlX2ZsYWdzKHN0cnVjdCBpbm9kZSAqaW5v ZGUpOwo+ID4gLWJvb2wgZjJmc19pbm9kZV9jaGtzdW1fdmVyaWZ5KHN0cnVjdCBmMmZzX3NiX2lu Zm8gKnNiaSwgc3RydWN0IGZvbGlvICpmb2xpbyk7Cj4gPiAtdm9pZCBmMmZzX2lub2RlX2Noa3N1 bV9zZXQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKTsKPiA+ ICtib29sIGYyZnNfaW5vZGVfY2hrc3VtX3ZlcmlmeShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmks IHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnkpOwo+ID4gK3ZvaWQgZjJmc19pbm9kZV9j aGtzdW1fc2V0KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgc3RydWN0IGYyZnNfY2FjaGVkX2Js b2NrICplbnRyeSk7Cj4gPiAgc3RydWN0IGlub2RlICpmMmZzX2lnZXQoc3RydWN0IHN1cGVyX2Js b2NrICpzYiwgdW5zaWduZWQgbG9uZyBpbm8pOwo+ID4gIHN0cnVjdCBpbm9kZSAqZjJmc19pZ2V0 X3JldHJ5KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHVuc2lnbmVkIGxvbmcgaW5vKTsKPiA+ICBp bnQgZjJmc190cnlfdG9fZnJlZV9uYXRzKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgaW50IG5y X3Nocmluayk7Cj4gPiAtdm9pZCBmMmZzX3VwZGF0ZV9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2Rl LCBzdHJ1Y3QgZm9saW8gKm5vZGVfZm9saW8pOwo+ID4gLXZvaWQgZjJmc191cGRhdGVfaW5vZGVf cGFnZShzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKPiA+ICt2b2lkIGYyZnNfdXBkYXRlX2lub2RlKHN0 cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnkpOwo+ID4g K3ZvaWQgZjJmc191cGRhdGVfaW5vZGVfY2FjaGUoc3RydWN0IGlub2RlICppbm9kZSk7Cj4gPiAg aW50IGYyZnNfd3JpdGVfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IHdyaXRlYmFj a19jb250cm9sICp3YmMpOwo+ID4gIHZvaWQgZjJmc19yZW1vdmVfZG9uYXRlX2lub2RlKHN0cnVj dCBpbm9kZSAqaW5vZGUpOwo+ID4gIHZvaWQgZjJmc19ldmljdF9pbm9kZShzdHJ1Y3QgaW5vZGUg Kmlub2RlKTsKPiA+IEBAIC00MDE0LDIyICs0MDQwLDIyIEBAIGludCBmMmZzX2ZpbGxfZGVudHJp ZXMoc3RydWN0IGRpcl9jb250ZXh0ICpjdHgsIHN0cnVjdCBmMmZzX2RlbnRyeV9wdHIgKmQsCj4g PiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc3RhcnRfcG9zLCBzdHJ1Y3Qg ZnNjcnlwdF9zdHIgKmZzdHIpOwo+ID4gIHZvaWQgZjJmc19kb19tYWtlX2VtcHR5X2RpcihzdHJ1 Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgaW5vZGUgKnBhcmVudCwKPiA+ICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBmMmZzX2RlbnRyeV9wdHIgKmQpOwo+ID4gLXN0cnVjdCBmb2xpbyAq ZjJmc19pbml0X2lub2RlX21ldGFkYXRhKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBpbm9k ZSAqZGlyLAo+ID4gLSAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBmMmZzX2ZpbGVuYW1lICpm bmFtZSwgc3RydWN0IGZvbGlvICpkZm9saW8pOwo+ID4gK3N0cnVjdCBmMmZzX2NhY2hlZF9ibG9j ayAqZjJmc19pbml0X2lub2RlX21ldGFkYXRhKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBp bm9kZSAqZGlyLAo+ID4gKyAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBmMmZzX2ZpbGVuYW1l ICpmbmFtZSwgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICpkZW50cnkpOwo+ID4gIHZvaWQgZjJm c191cGRhdGVfcGFyZW50X21ldGFkYXRhKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgaW5vZGUg Kmlub2RlLAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGN1cnJlbnRf ZGVwdGgpOwo+ID4gIGludCBmMmZzX3Jvb21fZm9yX2ZpbGVuYW1lKGNvbnN0IHZvaWQgKmJpdG1h cCwgaW50IHNsb3RzLCBpbnQgbWF4X3Nsb3RzKTsKPiA+ICB2b2lkIGYyZnNfZHJvcF9ubGluayhz dHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGlub2RlICppbm9kZSk7Cj4gPiAgc3RydWN0IGYyZnNf ZGlyX2VudHJ5ICpfX2YyZnNfZmluZF9lbnRyeShzdHJ1Y3QgaW5vZGUgKmRpciwKPiA+IC0gICAg ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZjJmc19maWxlbmFtZSAqZm5hbWUsIHN0cnVjdCBmb2xp byAqKnJlc19mb2xpbyk7Cj4gPiArICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGYyZnNfZmls ZW5hbWUgKmZuYW1lLCB2b2lkICoqZGVudHJ5X2Jsb2NrKTsKPiA+ICBzdHJ1Y3QgZjJmc19kaXJf ZW50cnkgKmYyZnNfZmluZF9lbnRyeShzdHJ1Y3QgaW5vZGUgKmRpciwKPiA+IC0gICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBxc3RyICpjaGlsZCwgc3RydWN0IGZvbGlvICoqcmVz X2ZvbGlvKTsKPiA+IC1zdHJ1Y3QgZjJmc19kaXJfZW50cnkgKmYyZnNfcGFyZW50X2RpcihzdHJ1 Y3QgaW5vZGUgKmRpciwgc3RydWN0IGZvbGlvICoqZik7Cj4gPiArICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBzdHJ1Y3QgcXN0ciAqY2hpbGQsIHZvaWQgKipkZW50cnlfYmxvY2spOwo+ID4g K3N0cnVjdCBmMmZzX2Rpcl9lbnRyeSAqZjJmc19wYXJlbnRfZGlyKHN0cnVjdCBpbm9kZSAqZGly LCB2b2lkICoqZGVudHJ5X2Jsb2NrKTsKPiA+ICBpbm9fdCBmMmZzX2lub2RlX2J5X25hbWUoc3Ry dWN0IGlub2RlICpkaXIsIGNvbnN0IHN0cnVjdCBxc3RyICpxc3RyLAo+ID4gLSAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IGZvbGlvICoqZm9saW8pOwo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgdm9pZCAqKmRlbnRyeV9ibG9jayk7Cj4gPiAgdm9pZCBmMmZzX3NldF9saW5rKHN0cnVj dCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZjJmc19kaXJfZW50cnkgKmRlLAo+ID4gLSAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IGlub2RlICppbm9kZSk7Cj4g PiAtYm9vbCBmMmZzX2hhc19lbm91Z2hfcm9vbShzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGZv bGlvICppZm9saW8sCj4gPiArICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkZW50cnlfYmxr LCBzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKPiA+ICtib29sIGYyZnNfaGFzX2Vub3VnaF9yb29tKHN0 cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmllbnRyeSwKPiA+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGYyZnNfZmlsZW5hbWUgKmZuYW1l KTsKPiA+ICB2b2lkIGYyZnNfdXBkYXRlX2RlbnRyeShuaWRfdCBpbm8sIHVtb2RlX3QgbW9kZSwg c3RydWN0IGYyZnNfZGVudHJ5X3B0ciAqZCwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHN0cnVjdCBmc2NyeXB0X3N0ciAqbmFtZSwgZjJmc19oYXNoX3QgbmFtZV9oYXNoLAo+ID4g QEAgLTQwNDAsNyArNDA2Niw3IEBAIGludCBmMmZzX2FkZF9kZW50cnkoc3RydWN0IGlub2RlICpk aXIsIGNvbnN0IHN0cnVjdCBmMmZzX2ZpbGVuYW1lICpmbmFtZSwKPiA+ICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUsIG5pZF90IGlubywgdW1vZGVfdCBtb2RlKTsK PiA+ICBpbnQgZjJmc19kb19hZGRfbGluayhzdHJ1Y3QgaW5vZGUgKmRpciwgY29uc3Qgc3RydWN0 IHFzdHIgKm5hbWUsCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaW5vZGUgKmlu b2RlLCBuaWRfdCBpbm8sIHVtb2RlX3QgbW9kZSk7Cj4gPiAtdm9pZCBmMmZzX2RlbGV0ZV9lbnRy eShzdHJ1Y3QgZjJmc19kaXJfZW50cnkgKmRlbnRyeSwgc3RydWN0IGZvbGlvICpmb2xpbywKPiA+ ICt2b2lkIGYyZnNfZGVsZXRlX2VudHJ5KHN0cnVjdCBmMmZzX2Rpcl9lbnRyeSAqZGVudHJ5LCB2 b2lkICpkZW50cnlfYmxrLAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGlub2Rl ICpkaXIsIHN0cnVjdCBpbm9kZSAqaW5vZGUpOwo+ID4gIGludCBmMmZzX2RvX3RtcGZpbGUoc3Ry dWN0IGlub2RlICppbm9kZSwgc3RydWN0IGlub2RlICpkaXIsCj4gPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGYyZnNfZmlsZW5hbWUgKmZuYW1lKTsKPiA+ IEBAIC00MDgzLDkgKzQxMDksOSBAQCBlbnVtIG5vZGVfdHlwZTsKPiA+Cj4gPiAgaW50IGYyZnNf Y2hlY2tfbmlkX3JhbmdlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgbmlkX3QgbmlkKTsKPiA+ ICBib29sIGYyZnNfYXZhaWxhYmxlX2ZyZWVfbWVtb3J5KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNi aSwgaW50IHR5cGUpOwo+ID4gLWJvb2wgZjJmc19pbl93YXJtX25vZGVfbGlzdChzdHJ1Y3QgZjJm c19zYl9pbmZvICpzYmksIHN0cnVjdCBmb2xpbyAqZm9saW8pOwo+ID4gK2Jvb2wgZjJmc19pbl93 YXJtX25vZGVfbGlzdChzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIHN0cnVjdCBmMmZzX2NhY2hl ZF9ibG9jayAqZW50cnkpOwo+ID4gIHZvaWQgZjJmc19pbml0X2ZzeW5jX25vZGVfaW5mbyhzdHJ1 Y3QgZjJmc19zYl9pbmZvICpzYmkpOwo+ID4gLXZvaWQgZjJmc19kZWxfZnN5bmNfbm9kZV9lbnRy eShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIHN0cnVjdCBmb2xpbyAqZm9saW8pOwo+ID4gK3Zv aWQgZjJmc19kZWxfZnN5bmNfbm9kZV9lbnRyeShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIHN0 cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnkpOwo+ID4gIHZvaWQgZjJmc19yZXNldF9mc3lu Y19ub2RlX2luZm8oc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKTsKPiA+ICBib29sIGYyZnNfbmVl ZF9kZW50cnlfbWFyayhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIG5pZF90IG5pZCk7Cj4gPiAg Ym9vbCBmMmZzX2lzX2NoZWNrcG9pbnRlZF9ub2RlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwg bmlkX3QgbmlkKTsKPiA+IEBAIC00MDk2LDI5ICs0MTIyLDI4IEBAIHBnb2ZmX3QgZjJmc19nZXRf bmV4dF9wYWdlX29mZnNldChzdHJ1Y3QgZG5vZGVfb2ZfZGF0YSAqZG4sIHBnb2ZmX3QgcGdvZnMp Owo+ID4gIGludCBmMmZzX2dldF9kbm9kZV9vZl9kYXRhKHN0cnVjdCBkbm9kZV9vZl9kYXRhICpk biwgcGdvZmZfdCBpbmRleCwgaW50IG1vZGUpOwo+ID4gIGludCBmMmZzX3RydW5jYXRlX2lub2Rl X2Jsb2NrcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBwZ29mZl90IGZyb20pOwo+ID4gIGludCBmMmZz X3RydW5jYXRlX3hhdHRyX25vZGUoc3RydWN0IGlub2RlICppbm9kZSk7Cj4gPiAtaW50IGYyZnNf d2FpdF9vbl9ub2RlX3BhZ2VzX3dyaXRlYmFjayhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4g PiAraW50IGYyZnNfd2FpdF9vbl9ub2RlX2NhY2hlc193cml0ZWJhY2soc3RydWN0IGYyZnNfc2Jf aW5mbyAqc2JpLAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGludCBzZXFfaWQpOwo+ID4gLWludCBmMmZzX3JlbW92ZV9pbm9kZV9wYWdlKHN0cnVj dCBpbm9kZSAqaW5vZGUpOwo+ID4gLXN0cnVjdCBmb2xpbyAqZjJmc19uZXdfaW5vZGVfZm9saW8o c3RydWN0IGlub2RlICppbm9kZSk7Cj4gPiAtc3RydWN0IGZvbGlvICpmMmZzX25ld19ub2RlX2Zv bGlvKHN0cnVjdCBkbm9kZV9vZl9kYXRhICpkbiwgdW5zaWduZWQgaW50IG9mcyk7Cj4gPiAtdm9p ZCBmMmZzX3JhX25vZGVfcGFnZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIG5pZF90IG5pZCk7 Cj4gPiAtc3RydWN0IGZvbGlvICpmMmZzX2dldF9ub2RlX2ZvbGlvKHN0cnVjdCBmMmZzX3NiX2lu Zm8gKnNiaSwgcGdvZmZfdCBuaWQsCj4gPiAraW50IGYyZnNfd3JpdGVfbm9kZV9jYWNoZXMoc3Ry dWN0IGYyZnNfc2JfaW5mbyAqc2JpKTsKPiA+ICtpbnQgZjJmc19yZW1vdmVfaW5vZGVfY2FjaGUo c3RydWN0IGlub2RlICppbm9kZSk7Cj4gPiArc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICpmMmZz X25ld19pbm9kZV9jYWNoZShzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKPiA+ICtzdHJ1Y3QgZjJmc19j YWNoZWRfYmxvY2sgKmYyZnNfbmV3X25vZGVfY2FjaGUoc3RydWN0IGRub2RlX29mX2RhdGEgKmRu LCB1bnNpZ25lZCBpbnQgb2ZzKTsKPiA+ICt2b2lkIGYyZnNfcmFfbm9kZV9jYWNoZShzdHJ1Y3Qg ZjJmc19zYl9pbmZvICpzYmksIG5pZF90IG5pZCk7Cj4gPiArc3RydWN0IGYyZnNfY2FjaGVkX2Js b2NrICpmMmZzX2dldF9ub2RlX2NhY2hlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgcGdvZmZf dCBuaWQsCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBlbnVtIG5vZGVfdHlwZSBub2RlX3R5cGUpOwo+ID4gIGludCBmMmZzX3Nhbml0eV9jaGVja19u b2RlX2Zvb3RlcihzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGZvbGlvICpmb2xpbywgcGdvZmZfdCBuaWQs Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGYyZnNf Y2FjaGVkX2Jsb2NrICplbnRyeSwgcGdvZmZfdCBuaWQsCj4gPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZW51bSBub2RlX3R5cGUgbnR5cGUsIGJvb2wgaW5faXJxKTsK PiA+IC1zdHJ1Y3QgZm9saW8gKmYyZnNfZ2V0X2lub2RlX2ZvbGlvKHN0cnVjdCBmMmZzX3NiX2lu Zm8gKnNiaSwgcGdvZmZfdCBpbm8pOwo+ID4gLXN0cnVjdCBmb2xpbyAqZjJmc19nZXRfeG5vZGVf Zm9saW8oc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBwZ29mZl90IHhuaWQpOwo+ID4gLWludCBm MmZzX3dyaXRlX3NpbmdsZV9ub2RlX2ZvbGlvKHN0cnVjdCBmb2xpbyAqbm9kZV9mb2xpbywgaW50 IHN5bmNfbW9kZSwKPiA+ICtzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmYyZnNfZ2V0X2lub2Rl X2NhY2hlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgcGdvZmZfdCBpbm8pOwo+ID4gK3N0cnVj dCBmMmZzX2NhY2hlZF9ibG9jayAqZjJmc19nZXRfeG5vZGVfY2FjaGUoc3RydWN0IGYyZnNfc2Jf aW5mbyAqc2JpLCBwZ29mZl90IHhuaWQpOwo+ID4gK2ludCBmMmZzX3dyaXRlX25vZGVfY2FjaGUo c3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyeSwgaW50IHN5bmNfbW9kZSwKPiA+ICAgICAg ICAgICAgICAgICAgICAgICAgIGJvb2wgbWFya19kaXJ0eSwgZW51bSBpb3N0YXRfdHlwZSBpb190 eXBlKTsKPiA+IC1pbnQgZjJmc19tb3ZlX25vZGVfZm9saW8oc3RydWN0IGZvbGlvICpub2RlX2Zv bGlvLCBpbnQgZ2NfdHlwZSk7Cj4gPiAraW50IGYyZnNfbW92ZV9ub2RlX2NhY2hlKHN0cnVjdCBm MmZzX2NhY2hlZF9ibG9jayAqZW50cnksIGludCBnY190eXBlKTsKPiA+ICB2b2lkIGYyZnNfZmx1 c2hfaW5saW5lX2RhdGEoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKTsKPiA+IC1pbnQgZjJmc19m c3luY19ub2RlX3BhZ2VzKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgc3RydWN0IGlub2RlICpp bm9kZSwKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB3cml0ZWJhY2tfY29udHJv bCAqd2JjLCBib29sIGF0b21pYywKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCAqc2VxX2lkKTsKPiA+IC1pbnQgZjJmc19zeW5jX25vZGVfcGFnZXMoc3RydWN0IGYyZnNf c2JfaW5mbyAqc2JpLAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHdyaXRlYmFj a19jb250cm9sICp3YmMsCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBib29sIGRvX2JhbGFu Y2UsIGVudW0gaW9zdGF0X3R5cGUgaW9fdHlwZSk7Cj4gPiAraW50IGYyZnNfZnN5bmNfbm9kZV9j YWNoZXMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBzdHJ1Y3QgaW5vZGUgKmlub2RlLAo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYXRvbWljLCB1bnNp Z25lZCBpbnQgKnNlcV9pZCk7Cj4gPiAraW50IGYyZnNfd3JpdGViYWNrX25vZGVfY2FjaGVzKHN0 cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgbG9uZyBucl90b193cml0ZSwKPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgIGJvb2wgc3luYywgYm9vbCBkb19iYWxhbmNlLCBlbnVtIGlvc3RhdF90eXBl IGlvX3R5cGUpOwo+ID4gIGludCBmMmZzX2J1aWxkX2ZyZWVfbmlkcyhzdHJ1Y3QgZjJmc19zYl9p bmZvICpzYmksIGJvb2wgc3luYywgYm9vbCBtb3VudCk7Cj4gPiAgYm9vbCBmMmZzX2FsbG9jX25p ZChzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIG5pZF90ICpuaWQpOwo+ID4gIHZvaWQgZjJmc19h bGxvY19uaWRfZG9uZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIG5pZF90IG5pZCk7Cj4gPiBA QCAtNDEyNiw3ICs0MTUxLDggQEAgdm9pZCBmMmZzX2FsbG9jX25pZF9mYWlsZWQoc3RydWN0IGYy ZnNfc2JfaW5mbyAqc2JpLCBuaWRfdCBuaWQpOwo+ID4gIGludCBmMmZzX3RyeV90b19mcmVlX25p ZHMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBpbnQgbnJfc2hyaW5rKTsKPiA+ICBpbnQgZjJm c19yZWNvdmVyX2lubGluZV94YXR0cihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZjJmc19j YWNoZWRfYmxvY2sgKmVudHJ5KTsKPiA+ICBpbnQgZjJmc19yZWNvdmVyX3hhdHRyX2RhdGEoc3Ry dWN0IGlub2RlICppbm9kZSwgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyeSk7Cj4gPiAt aW50IGYyZnNfcmVjb3Zlcl9pbm9kZV9wYWdlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgc3Ry dWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyeSk7Cj4gPiAraW50IGYyZnNfcmVjb3Zlcl9pbm9k ZV9jYWNoZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5KTsKPiA+ICBpbnQgZjJmc19yZXN0 b3JlX25vZGVfc3VtbWFyeShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPiAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc2Vnbm8sIHN0cnVjdCBmMmZzX3N1bW1hcnlfYmxv Y2sgKnN1bSk7Cj4gPiAgaW50IGYyZnNfZmx1c2hfbmF0X2VudHJpZXMoc3RydWN0IGYyZnNfc2Jf aW5mbyAqc2JpLCBzdHJ1Y3QgY3BfY29udHJvbCAqY3BjKTsKPiA+IEBAIC00MTg1LDcgKzQyMTEs NyBAQCB2b2lkIGYyZnNfdXBkYXRlX21ldGFfYmxvY2soc3RydWN0IGYyZnNfc2JfaW5mbyAqc2Jp LCB2b2lkICpzcmMsCj4gPiAgdm9pZCBmMmZzX2RvX3dyaXRlX21ldGFfY2FjaGUoc3RydWN0IGYy ZnNfc2JfaW5mbyAqc2JpLAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGYyZnNf Y2FjaGVkX2Jsb2NrICplbnRyeSwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gaW9z dGF0X3R5cGUgaW9fdHlwZSk7Cj4gPiAtdm9pZCBmMmZzX2RvX3dyaXRlX25vZGVfcGFnZSh1bnNp Z25lZCBpbnQgbmlkLCBzdHJ1Y3QgZjJmc19pb19pbmZvICpmaW8pOwo+ID4gK3ZvaWQgZjJmc19k b193cml0ZV9ub2RlX2NhY2hlKHVuc2lnbmVkIGludCBuaWQsIHN0cnVjdCBmMmZzX2lvX2luZm8g KmZpbyk7Cj4gPiAgdm9pZCBmMmZzX291dHBsYWNlX3dyaXRlX2RhdGEoc3RydWN0IGRub2RlX29m X2RhdGEgKmRuLAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGYyZnNfaW9faW5m byAqZmlvKTsKPiA+ICBpbnQgZjJmc19pbnBsYWNlX3dyaXRlX2RhdGEoc3RydWN0IGYyZnNfaW9f aW5mbyAqZmlvKTsKPiA+IEBAIC00MTk5LDE0ICs0MjI1LDEzIEBAIHZvaWQgZjJmc19yZXBsYWNl X2Jsb2NrKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgc3RydWN0IGRub2RlX29mX2RhdGEgKmRu LAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCByZWNvdmVyX25ld2FkZHIpOwo+ID4g IGVudW0gdGVtcF90eXBlIGYyZnNfZ2V0X3NlZ21lbnRfdGVtcChzdHJ1Y3QgZjJmc19zYl9pbmZv ICpzYmksCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBlbnVtIGxvZ190eXBlIHNlZ190eXBlKTsKPiA+IC1pbnQgZjJmc19hbGxvY2F0ZV9kYXRhX2Js b2NrKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgc3RydWN0IGZvbGlvICpmb2xpbywKPiA+ICtp bnQgZjJmc19hbGxvY2F0ZV9kYXRhX2Jsb2NrKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+ ICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrX3Qgb2xkX2Jsa2FkZHIsIGJsb2NrX3QgKm5l d19ibGthZGRyLAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGYyZnNfc3VtbWFy eSAqc3VtLCBpbnQgdHlwZSwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBmMmZz X2lvX2luZm8gKmZpbyk7Cj4gPiAgdm9pZCBmMmZzX3VwZGF0ZV9kZXZpY2Vfc3RhdGUoc3RydWN0 IGYyZnNfc2JfaW5mbyAqc2JpLCBuaWRfdCBpbm8sCj4gPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYmxvY2tfdCBibGthZGRyLCB1bnNpZ25lZCBpbnQgYmxrY250KTsK PiA+IC12b2lkIGYyZnNfZm9saW9fd2FpdF93cml0ZWJhY2soc3RydWN0IGZvbGlvICpmb2xpbywg ZW51bSBwYWdlX3R5cGUgdHlwZSwKPiA+IC0gICAgICAgICAgICAgICBib29sIG9yZGVyZWQsIGJv b2wgbG9ja2VkKTsKPiA+ICt2b2lkIGYyZnNfZm9saW9fd2FpdF93cml0ZWJhY2soc3RydWN0IGZv bGlvICpmb2xpbywgYm9vbCBvcmRlcmVkLCBib29sIGxvY2tlZCk7Cj4gPiAgdm9pZCBmMmZzX3dh aXRfb25fYmxvY2tfd3JpdGViYWNrKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGJsb2NrX3QgYmxrYWRk cik7Cj4gPiAgdm9pZCBmMmZzX3dhaXRfb25fYmxvY2tfd3JpdGViYWNrX3JhbmdlKHN0cnVjdCBp bm9kZSAqaW5vZGUsIGJsb2NrX3QgYmxrYWRkciwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja190IGxlbik7Cj4g PiBAQCAtNDMyNywxNCArNDM1MiwxNCBAQCB2b2lkIGYyZnNfZGVzdHJveV9iaW9fZW50cnlfY2Fj aGUodm9pZCk7Cj4gPiAgdm9pZCBmMmZzX3N1Ym1pdF9yZWFkX2JpbyhzdHJ1Y3QgZjJmc19zYl9p bmZvICpzYmksIHN0cnVjdCBiaW8gKmJpbywKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ZW51bSBwYWdlX3R5cGUgdHlwZSk7Cj4gPiAgaW50IGYyZnNfaW5pdF93cml0ZV9tZXJnZV9pbyhz dHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkpOwo+ID4gLXZvaWQgZjJmc19zdWJtaXRfbWVyZ2VkX3dy aXRlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgZW51bSBwYWdlX3R5cGUgdHlwZSk7Cj4gPiAg dm9pZCBmMmZzX3N1Ym1pdF9tZXJnZWRfd3JpdGVfY29uZChzdHJ1Y3QgZjJmc19zYl9pbmZvICpz YmksCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbm9kZSAqaW5v ZGUsIHN0cnVjdCBmb2xpbyAqZm9saW8sCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5pZF90IGlubywgZW51bSBwYWdlX3R5cGUgdHlwZSk7Cj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmb2xpbyAqZm9saW8p Owo+ID4gIHZvaWQgZjJmc19zdWJtaXRfbWVyZ2VkX3dyaXRlX2ZvbGlvKHN0cnVjdCBmMmZzX3Ni X2luZm8gKnNiaSwKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGZv bGlvICpmb2xpbywgZW51bSBwYWdlX3R5cGUgdHlwZSk7Cj4gPiAtYm9vbCBmMmZzX3N1Ym1pdF9t ZXJnZWRfd3JpdGVfY2FjaGUoc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyeSwKPiA+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBwYWdlX3R5cGUgdHlwZSk7Cj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBmb2xpbyAqZm9saW8pOwo+ID4g K2Jvb2wgZjJmc19zdWJtaXRfbWVyZ2VkX3dyaXRlX2NhY2hlKHN0cnVjdCBmMmZzX3NiX2luZm8g KnNiaSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGYyZnNfY2Fj aGVkX2Jsb2NrICplbnRyeSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlk X3QgaW5vLCBlbnVtIHBhZ2VfdHlwZSB0eXBlKTsKPiA+ICt2b2lkIGYyZnNfc3VibWl0X21lcmdl ZF93cml0ZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIGVudW0gcGFnZV90eXBlIHR5cGUpOwo+ ID4gIHZvaWQgZjJmc19zdWJtaXRfbWVyZ2VkX2lwdV93cml0ZShzdHJ1Y3QgZjJmc19zYl9pbmZv ICpzYmksCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IGJpbyAqKmJpbywgc3RydWN0IGZvbGlvICpmb2xpbyk7Cj4gPiAgdm9pZCBmMmZzX3N1Ym1pdF9h bGxfbWVyZ2VkX2lwdV93cml0ZXMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKTsKPiA+IEBAIC00 MzYwLDcgKzQzODUsNyBAQCBzdHJ1Y3QgZm9saW8gKmYyZnNfZmluZF9kYXRhX2ZvbGlvKHN0cnVj dCBpbm9kZSAqaW5vZGUsIHBnb2ZmX3QgaW5kZXgsCj4gPiAgc3RydWN0IGZvbGlvICpmMmZzX2dl dF9sb2NrX2RhdGFfZm9saW8oc3RydWN0IGlub2RlICppbm9kZSwgcGdvZmZfdCBpbmRleCwKPiA+ ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZm9yX3dyaXRlKTsKPiA+ICBzdHJ1Y3QgZm9s aW8gKmYyZnNfZ2V0X25ld19kYXRhX2ZvbGlvKHN0cnVjdCBpbm9kZSAqaW5vZGUsCj4gPiAtICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZm9saW8gKmlmb2xpbywgcGdvZmZfdCBpbmRleCwg Ym9vbCBuZXdfaV9zaXplKTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBmMmZz X2NhY2hlZF9ibG9jayAqaWVudHJ5LCBwZ29mZl90IGluZGV4LCBib29sIG5ld19pX3NpemUpOwo+ ID4gIGludCBmMmZzX2RvX3dyaXRlX2RhdGFfcGFnZShzdHJ1Y3QgZjJmc19pb19pbmZvICpmaW8p Owo+ID4gIGludCBmMmZzX21hcF9ibG9ja3Moc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGYy ZnNfbWFwX2Jsb2NrcyAqbWFwLCBpbnQgZmxhZyk7Cj4gPiAgaW50IGYyZnNfZmllbWFwKHN0cnVj dCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWVtYXBfZXh0ZW50X2luZm8gKmZpZWluZm8sCj4gPiBA QCAtNDQ3Miw3ICs0NDk3LDcgQEAgc3RydWN0IGYyZnNfc3RhdF9pbmZvIHsKPiA+ICAgICAgICAg dW5zaWduZWQgaW50IGJpbW9kYWwsIGF2Z192YmxvY2tzOwo+ID4gICAgICAgICBpbnQgdXRpbF9m cmVlLCB1dGlsX3ZhbGlkLCB1dGlsX2ludmFsaWQ7Cj4gPiAgICAgICAgIGludCByc3ZkX3NlZ3Ms IG92ZXJwX3NlZ3M7Cj4gPiAtICAgICAgIGludCBkaXJ0eV9jb3VudCwgbm9kZV9wYWdlcywgbWV0 YV9jYWNoZXMsIGNvbXByZXNzX3BhZ2VzOwo+ID4gKyAgICAgICBpbnQgZGlydHlfY291bnQsIG5v ZGVfY2FjaGVzLCBtZXRhX2NhY2hlcywgY29tcHJlc3NfcGFnZXM7Cj4gPiAgICAgICAgIGludCBj b21wcmVzc19wYWdlX2hpdDsKPiA+ICAgICAgICAgaW50IHByZWZyZWVfY291bnQsIGZyZWVfc2Vn cywgZnJlZV9zZWNzOwo+ID4gICAgICAgICBpbnQgY3BfY2FsbF9jb3VudFtNQVhfQ0FMTF9UWVBF XSwgY3BfY291bnQ7Cj4gPiBAQCAtNDY3Myw3ICs0Njk4LDYgQEAgZXh0ZXJuIGNvbnN0IHN0cnVj dCBmaWxlX29wZXJhdGlvbnMgZjJmc19kaXJfb3BlcmF0aW9uczsKPiA+ICBleHRlcm4gY29uc3Qg c3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmMmZzX2ZpbGVfb3BlcmF0aW9uczsKPiA+ICBleHRlcm4g Y29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgZjJmc19maWxlX2lub2RlX29wZXJhdGlvbnM7 Cj4gPiAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBhZGRyZXNzX3NwYWNlX29wZXJhdGlvbnMgZjJmc19k YmxvY2tfYW9wczsKPiA+IC1leHRlcm4gY29uc3Qgc3RydWN0IGFkZHJlc3Nfc3BhY2Vfb3BlcmF0 aW9ucyBmMmZzX25vZGVfYW9wczsKPiA+ICBleHRlcm4gY29uc3Qgc3RydWN0IGlub2RlX29wZXJh dGlvbnMgZjJmc19kaXJfaW5vZGVfb3BlcmF0aW9uczsKPiA+ICBleHRlcm4gY29uc3Qgc3RydWN0 IGlub2RlX29wZXJhdGlvbnMgZjJmc19zeW1saW5rX2lub2RlX29wZXJhdGlvbnM7Cj4gPiAgZXh0 ZXJuIGNvbnN0IHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIGYyZnNfZW5jcnlwdGVkX3N5bWxpbmtf aW5vZGVfb3BlcmF0aW9uczsKPiA+IEBAIC00Njg0LDEwICs0NzA4LDEwIEBAIGV4dGVybiBzdHJ1 Y3Qga21lbV9jYWNoZSAqZjJmc19pbm9kZV9lbnRyeV9zbGFiOwo+ID4gICAqIGlubGluZS5jCj4g PiAgICovCj4gPiAgYm9vbCBmMmZzX21heV9pbmxpbmVfZGF0YShzdHJ1Y3QgaW5vZGUgKmlub2Rl KTsKPiA+IC1ib29sIGYyZnNfc2FuaXR5X2NoZWNrX2lubGluZV9kYXRhKHN0cnVjdCBpbm9kZSAq aW5vZGUsIHN0cnVjdCBmb2xpbyAqaWZvbGlvKTsKPiA+ICtib29sIGYyZnNfc2FuaXR5X2NoZWNr X2lubGluZV9kYXRhKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9j ayAqaWVudHJ5KTsKPiA+ICBib29sIGYyZnNfbWF5X2lubGluZV9kZW50cnkoc3RydWN0IGlub2Rl ICppbm9kZSk7Cj4gPiAtdm9pZCBmMmZzX2RvX3JlYWRfaW5saW5lX2RhdGEoc3RydWN0IGZvbGlv ICpmb2xpbywgc3RydWN0IGZvbGlvICppZm9saW8pOwo+ID4gLXZvaWQgZjJmc190cnVuY2F0ZV9p bmxpbmVfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZvbGlvICppZm9saW8sCj4g PiArdm9pZCBmMmZzX2RvX3JlYWRfaW5saW5lX2RhdGEoc3RydWN0IGZvbGlvICpmb2xpbywgc3Ry dWN0IGYyZnNfY2FjaGVkX2Jsb2NrICppZW50cnkpOwo+ID4gK3ZvaWQgZjJmc190cnVuY2F0ZV9p bmxpbmVfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2Nr ICppZW50cnksCj4gPiAgICAgICAgICAgICAgICAgdTY0IGZyb20pOwo+ID4gIGludCBmMmZzX3Jl YWRfaW5saW5lX2RhdGEoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZvbGlvICpmb2xpbyk7 Cj4gPiAgaW50IGYyZnNfY29udmVydF9pbmxpbmVfZm9saW8oc3RydWN0IGRub2RlX29mX2RhdGEg KmRuLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKTsKPiA+IEBAIC00Njk2LDE0ICs0NzIwLDE1IEBAIGlu dCBmMmZzX3RyeV9jb252ZXJ0X2lubGluZV9kaXIoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBk ZW50cnkgKmRlbnRyeSk7Cj4gPiAgaW50IGYyZnNfd3JpdGVfaW5saW5lX2RhdGEoc3RydWN0IGlu b2RlICppbm9kZSwgc3RydWN0IGZvbGlvICpmb2xpbyk7Cj4gPiAgaW50IGYyZnNfcmVjb3Zlcl9p bmxpbmVfZGF0YShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sg KmVudHJ5KTsKPiA+ICBzdHJ1Y3QgZjJmc19kaXJfZW50cnkgKmYyZnNfZmluZF9pbl9pbmxpbmVf ZGlyKHN0cnVjdCBpbm9kZSAqZGlyLAo+ID4gLSAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBm MmZzX2ZpbGVuYW1lICpmbmFtZSwgc3RydWN0IGZvbGlvICoqcmVzX2ZvbGlvLAo+ID4gKyAgICAg ICAgICAgICAgIGNvbnN0IHN0cnVjdCBmMmZzX2ZpbGVuYW1lICpmbmFtZSwgdm9pZCAqKmRlbnRy eV9ibG9jaywKPiA+ICAgICAgICAgICAgICAgICBib29sIHVzZV9oYXNoKTsKPiA+ICBpbnQgZjJm c19tYWtlX2VtcHR5X2lubGluZV9kaXIoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGlub2Rl ICpwYXJlbnQsCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZm9saW8gKmlmb2xp byk7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sg KmllbnRyeSk7Cj4gPiAgaW50IGYyZnNfYWRkX2lubGluZV9lbnRyeShzdHJ1Y3QgaW5vZGUgKmRp ciwgY29uc3Qgc3RydWN0IGYyZnNfZmlsZW5hbWUgKmZuYW1lLAo+ID4gICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IGlub2RlICppbm9kZSwgbmlkX3QgaW5vLCB1bW9kZV90IG1vZGUpOwo+ ID4gIHZvaWQgZjJmc19kZWxldGVfaW5saW5lX2VudHJ5KHN0cnVjdCBmMmZzX2Rpcl9lbnRyeSAq ZGVudHJ5LAo+ID4gLSAgICAgICAgICAgICAgIHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCBp bm9kZSAqZGlyLCBzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKPiA+ICsgICAgICAgICAgICAgICBzdHJ1 Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmllbnRyeSwgc3RydWN0IGlub2RlICpkaXIsCj4gPiArICAg ICAgICAgICAgICAgc3RydWN0IGlub2RlICppbm9kZSk7Cj4gPiAgYm9vbCBmMmZzX2VtcHR5X2lu bGluZV9kaXIoc3RydWN0IGlub2RlICpkaXIpOwo+ID4gIGludCBmMmZzX3JlYWRfaW5saW5lX2Rp cihzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGRpcl9jb250ZXh0ICpjdHgsCj4gPiAgICAgICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3QgZnNjcnlwdF9zdHIgKmZzdHIpOwo+ID4gQEAgLTQ3MjYs NyArNDc1MSw3IEBAIHZvaWQgZjJmc19sZWF2ZV9zaHJpbmtlcihzdHJ1Y3QgZjJmc19zYl9pbmZv ICpzYmkpOwo+ID4gIC8qCj4gPiAgICogZXh0ZW50X2NhY2hlLmMKPiA+ICAgKi8KPiA+IC1ib29s IHNhbml0eV9jaGVja19leHRlbnRfY2FjaGUoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZv bGlvICppZm9saW8pOwo+ID4gK2Jvb2wgc2FuaXR5X2NoZWNrX2V4dGVudF9jYWNoZShzdHJ1Y3Qg aW5vZGUgKmlub2RlLCBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmllbnRyeSk7Cj4gPiAgdm9p ZCBmMmZzX2luaXRfZXh0ZW50X3RyZWUoc3RydWN0IGlub2RlICppbm9kZSk7Cj4gPiAgdm9pZCBm MmZzX2Ryb3BfZXh0ZW50X3RyZWUoc3RydWN0IGlub2RlICppbm9kZSk7Cj4gPiAgdm9pZCBmMmZz X2Rlc3Ryb3lfZXh0ZW50X25vZGUoc3RydWN0IGlub2RlICppbm9kZSk7Cj4gPiBAQCAtNDczNiw3 ICs0NzYxLDcgQEAgaW50IF9faW5pdCBmMmZzX2NyZWF0ZV9leHRlbnRfY2FjaGUodm9pZCk7Cj4g PiAgdm9pZCBmMmZzX2Rlc3Ryb3lfZXh0ZW50X2NhY2hlKHZvaWQpOwo+ID4KPiA+ICAvKiByZWFk IGV4dGVudCBjYWNoZSBvcHMgKi8KPiA+IC12b2lkIGYyZnNfaW5pdF9yZWFkX2V4dGVudF90cmVl KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmb2xpbyAqaWZvbGlvKTsKPiA+ICt2b2lkIGYy ZnNfaW5pdF9yZWFkX2V4dGVudF90cmVlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmMmZz X2NhY2hlZF9ibG9jayAqaWVudHJ5KTsKPiA+ICBib29sIGYyZnNfbG9va3VwX3JlYWRfZXh0ZW50 X2NhY2hlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHBnb2ZmX3QgcGdvZnMsCj4gPiAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgZXh0ZW50X2luZm8gKmVpKTsKPiA+ICBib29sIGYyZnNfbG9v a3VwX3JlYWRfZXh0ZW50X2NhY2hlX2Jsb2NrKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHBnb2ZmX3Qg aW5kZXgsCj4gPiBkaWZmIC0tZ2l0IGEvZnMvZjJmcy9maWxlLmMgYi9mcy9mMmZzL2ZpbGUuYwo+ ID4gaW5kZXggN2MyYmZhMGU2M2QyLi42ZjQyODdmZTE4MGQgMTAwNjQ0Cj4gPiAtLS0gYS9mcy9m MmZzL2ZpbGUuYwo+ID4gKysrIGIvZnMvZjJmcy9maWxlLmMKPiA+IEBAIC0yMTMsNyArMjEzLDcg QEAgc3RhdGljIHZtX2ZhdWx0X3QgZjJmc192bV9wYWdlX21rd3JpdGUoc3RydWN0IHZtX2ZhdWx0 ICp2bWYpCj4gPiAgICAgICAgICAgICAgICAgZ290byBvdXRfc2VtOwo+ID4gICAgICAgICB9Cj4g Pgo+ID4gLSAgICAgICBmMmZzX2ZvbGlvX3dhaXRfd3JpdGViYWNrKGZvbGlvLCBEQVRBLCBmYWxz ZSwgdHJ1ZSk7Cj4gPiArICAgICAgIGYyZnNfZm9saW9fd2FpdF93cml0ZWJhY2soZm9saW8sIGZh bHNlLCB0cnVlKTsKPiA+Cj4gPiAgICAgICAgIC8qIHdhaXQgZm9yIEdDZWQgcGFnZSB3cml0ZWJh Y2sgdmlhIGdlbmVyaWMgY2FjaGUgKi8KPiA+ICAgICAgICAgZjJmc193YWl0X29uX2Jsb2NrX3dy aXRlYmFjayhpbm9kZSwgZG4uZGF0YV9ibGthZGRyKTsKPiA+IEBAIC0zMDgsMTMgKzMwOCwxMyBA QCBzdGF0aWMgaW5saW5lIGVudW0gY3BfcmVhc29uX3R5cGUgbmVlZF9kb19jaGVja3BvaW50KHN0 cnVjdCBpbm9kZSAqaW5vZGUpCj4gPgo+ID4gIHN0YXRpYyBib29sIG5lZWRfaW5vZGVfcGFnZV91 cGRhdGUoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBuaWRfdCBpbm8pCj4gPiAgewo+ID4gLSAg ICAgICBzdHJ1Y3QgZm9saW8gKmkgPSBmaWxlbWFwX2dldF9mb2xpbyhOT0RFX01BUFBJTkcoc2Jp KSwgaW5vKTsKPiA+ICsgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyeSA9IGYy ZnNfZmluZF9ub2RlX2NhY2hlKHNiaSwgaW5vKTsKPiA+ICAgICAgICAgYm9vbCByZXQgPSBmYWxz ZTsKPiA+ICAgICAgICAgLyogQnV0IHdlIG5lZWQgdG8gYXZvaWQgdGhhdCB0aGVyZSBhcmUgc29t ZSBpbm9kZSB1cGRhdGVzICovCj4gPiAtICAgICAgIGlmICgoIUlTX0VSUihpKSAmJiBmb2xpb190 ZXN0X2RpcnR5KGkpKSB8fAo+ID4gKyAgICAgICBpZiAoKCFJU19FUlIoZW50cnkpICYmIGYyZnNf Y2FjaGVfdGVzdF9kaXJ0eShlbnRyeSkpIHx8Cj4gPiAgICAgICAgICAgICBmMmZzX25lZWRfaW5v ZGVfYmxvY2tfdXBkYXRlKHNiaSwgaW5vKSkKPiA+ICAgICAgICAgICAgICAgICByZXQgPSB0cnVl Owo+ID4gLSAgICAgICBmMmZzX2ZvbGlvX3B1dChpLCBmYWxzZSk7Cj4gPiArICAgICAgIGYyZnNf cHV0X2NhY2hlKGVudHJ5LCBmYWxzZSk7Cj4gPiAgICAgICAgIHJldHVybiByZXQ7Cj4gPiAgfQo+ ID4KPiA+IEBAIC0zNDAsMTAgKzM0MCw2IEBAIHN0YXRpYyBpbnQgZjJmc19kb19zeW5jX2ZpbGUo c3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBzdGFydCwgbG9mZl90IGVuZCwKPiA+ICAgICAgICAg bmlkX3QgaW5vID0gaW5vZGUtPmlfaW5vOwo+ID4gICAgICAgICBpbnQgcmV0ID0gMDsKPiA+ICAg ICAgICAgZW51bSBjcF9yZWFzb25fdHlwZSBjcF9yZWFzb24gPSAwOwo+ID4gLSAgICAgICBzdHJ1 Y3Qgd3JpdGViYWNrX2NvbnRyb2wgd2JjID0gewo+ID4gLSAgICAgICAgICAgICAgIC5zeW5jX21v ZGUgPSBXQl9TWU5DX0FMTCwKPiA+IC0gICAgICAgICAgICAgICAubnJfdG9fd3JpdGUgPSBMT05H X01BWCwKPiA+IC0gICAgICAgfTsKPiA+ICAgICAgICAgdW5zaWduZWQgaW50IHNlcV9pZCA9IDA7 Cj4gPgo+ID4gICAgICAgICBpZiAodW5saWtlbHkoZjJmc19yZWFkb25seShpbm9kZS0+aV9zYikp KQo+ID4gQEAgLTQyMiw3ICs0MTgsNyBAQCBzdGF0aWMgaW50IGYyZnNfZG9fc3luY19maWxlKHN0 cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgc3RhcnQsIGxvZmZfdCBlbmQsCj4gPiAgICAgICAgIH0K PiA+ICBzeW5jX25vZGVzOgo+ID4gICAgICAgICBhdG9taWNfaW5jKCZzYmktPndiX3N5bmNfcmVx W05PREVdKTsKPiA+IC0gICAgICAgcmV0ID0gZjJmc19mc3luY19ub2RlX3BhZ2VzKHNiaSwgaW5v ZGUsICZ3YmMsIGF0b21pYywgJnNlcV9pZCk7Cj4gPiArICAgICAgIHJldCA9IGYyZnNfZnN5bmNf bm9kZV9jYWNoZXMoc2JpLCBpbm9kZSwgYXRvbWljLCAmc2VxX2lkKTsKPiA+ICAgICAgICAgYXRv bWljX2RlYygmc2JpLT53Yl9zeW5jX3JlcVtOT0RFXSk7Cj4gPiAgICAgICAgIGlmIChyZXQpCj4g PiAgICAgICAgICAgICAgICAgZ290byBvdXQ7Cj4gPiBAQCAtNDQ4LDcgKzQ0NCw3IEBAIHN0YXRp YyBpbnQgZjJmc19kb19zeW5jX2ZpbGUoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBzdGFydCwg bG9mZl90IGVuZCwKPiA+ICAgICAgICAgICogZ2l2ZW4gZnN5bmMgbWFyay4KPiA+ICAgICAgICAg ICovCj4gPiAgICAgICAgIGlmICghYXRvbWljKSB7Cj4gPiAtICAgICAgICAgICAgICAgcmV0ID0g ZjJmc193YWl0X29uX25vZGVfcGFnZXNfd3JpdGViYWNrKHNiaSwgc2VxX2lkKTsKPiA+ICsgICAg ICAgICAgICAgICByZXQgPSBmMmZzX3dhaXRfb25fbm9kZV9jYWNoZXNfd3JpdGViYWNrKHNiaSwg c2VxX2lkKTsKPiA+ICAgICAgICAgICAgICAgICBpZiAocmV0KQo+ID4gICAgICAgICAgICAgICAg ICAgICAgICAgZ290byBvdXQ7Cj4gPiAgICAgICAgIH0KPiA+IEBAIC00ODUsNyArNDgxLDcgQEAg c3RhdGljIGJvb2wgX19mb3VuZF9vZmZzZXQoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcs Cj4gPiAgICAgICAgIGJvb2wgY29tcHJlc3NlZF9jbHVzdGVyID0gZmFsc2U7Cj4gPgo+ID4gICAg ICAgICBpZiAoZjJmc19jb21wcmVzc2VkX2ZpbGUoaW5vZGUpKSB7Cj4gPiAtICAgICAgICAgICAg ICAgYmxvY2tfdCBmaXJzdF9ibGthZGRyID0gZGF0YV9ibGthZGRyKGRuLT5pbm9kZSwgZG4tPm5v ZGVfZm9saW8sCj4gPiArICAgICAgICAgICAgICAgYmxvY2tfdCBmaXJzdF9ibGthZGRyID0gZGF0 YV9ibGthZGRyKGRuLT5pbm9kZSwgZG4tPm5vZGVfZW50cnksCj4gPiAgICAgICAgICAgICAgICAg ICAgIEFMSUdOX0RPV04oZG4tPm9mc19pbl9ub2RlLCBGMkZTX0koaW5vZGUpLT5pX2NsdXN0ZXJf c2l6ZSkpOwo+ID4KPiA+ICAgICAgICAgICAgICAgICBjb21wcmVzc2VkX2NsdXN0ZXIgPSBmaXJz dF9ibGthZGRyID09IENPTVBSRVNTX0FERFI7Cj4gPiBAQCAtNTU3LDcgKzU1Myw3IEBAIHN0YXRp YyBsb2ZmX3QgZjJmc19zZWVrX2Jsb2NrKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0 LCBpbnQgd2hlbmNlKQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgfQo+ID4gICAgICAgICAg ICAgICAgIH0KPiA+Cj4gPiAtICAgICAgICAgICAgICAgZW5kX29mZnNldCA9IEFERFJTX1BFUl9Q QUdFKGRuLm5vZGVfZm9saW8sIGlub2RlKTsKPiA+ICsgICAgICAgICAgICAgICBlbmRfb2Zmc2V0 ID0gQUREUlNfUEVSX1BBR0UoZG4ubm9kZV9lbnRyeSwgaW5vZGUpOwo+ID4KPiA+ICAgICAgICAg ICAgICAgICAvKiBmaW5kIGRhdGEvaG9sZSBpbiBkbm9kZSBibG9jayAqLwo+ID4gICAgICAgICAg ICAgICAgIGZvciAoOyBkbi5vZnNfaW5fbm9kZSA8IGVuZF9vZmZzZXQ7Cj4gPiBAQCAtNzIwLDcg KzcxNiw3IEBAIHZvaWQgZjJmc190cnVuY2F0ZV9kYXRhX2Jsb2Nrc19yYW5nZShzdHJ1Y3QgZG5v ZGVfb2ZfZGF0YSAqZG4sIGludCBjb3VudCkKPiA+ICAgICAgICAgYmxvY2tfdCBibGtzdGFydDsK PiA+ICAgICAgICAgaW50IGJsa2xlbiA9IDA7Cj4gPgo+ID4gLSAgICAgICBhZGRyID0gZ2V0X2Ru b2RlX2FkZHIoZG4tPmlub2RlLCBkbi0+bm9kZV9mb2xpbykgKyBvZnM7Cj4gPiArICAgICAgIGFk ZHIgPSBnZXRfZG5vZGVfYWRkcihkbi0+aW5vZGUsIGRuLT5ub2RlX2VudHJ5KSArIG9mczsKPiA+ ICAgICAgICAgYmxrc3RhcnQgPSBsZTMyX3RvX2NwdSgqYWRkcik7Cj4gPgo+ID4gICAgICAgICAv KiBBc3N1bXB0aW9uOiB0cnVuY2F0aW9uIHN0YXJ0cyB3aXRoIGNsdXN0ZXIgKi8KPiA+IEBAIC03 ODQsNyArNzgwLDcgQEAgdm9pZCBmMmZzX3RydW5jYXRlX2RhdGFfYmxvY2tzX3JhbmdlKHN0cnVj dCBkbm9kZV9vZl9kYXRhICpkbiwgaW50IGNvdW50KQo+ID4gICAgICAgICAgICAgICAgICAqIG9u Y2Ugd2UgaW52YWxpZGF0ZSB2YWxpZCBibGthZGRyIGluIHJhbmdlIFtvZnMsIG9mcyArIGNvdW50 XSwKPiA+ICAgICAgICAgICAgICAgICAgKiB3ZSB3aWxsIGludmFsaWRhdGUgYWxsIGJsa2FkZHIg aW4gdGhlIHdob2xlIHJhbmdlLgo+ID4gICAgICAgICAgICAgICAgICAqLwo+ID4gLSAgICAgICAg ICAgICAgIGZvZnMgPSBmMmZzX3N0YXJ0X2JpZHhfb2Zfbm9kZShvZnNfb2Zfbm9kZShzYmksIGRu LT5ub2RlX2ZvbGlvKSwKPiA+ICsgICAgICAgICAgICAgICBmb2ZzID0gZjJmc19zdGFydF9iaWR4 X29mX25vZGUob2ZzX29mX25vZGUoc2JpLCBkbi0+bm9kZV9lbnRyeSksCj4gPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRuLT5pbm9kZSkg KyBvZnM7Cj4gPiAgICAgICAgICAgICAgICAgZjJmc191cGRhdGVfcmVhZF9leHRlbnRfY2FjaGVf cmFuZ2UoZG4sIGZvZnMsIDAsIGxlbik7Cj4gPiAgICAgICAgICAgICAgICAgZjJmc191cGRhdGVf YWdlX2V4dGVudF9jYWNoZV9yYW5nZShkbiwgZm9mcywgbGVuKTsKPiA+IEBAIC04MjIsNyArODE4 LDcgQEAgc3RhdGljIGludCB0cnVuY2F0ZV9wYXJ0aWFsX2RhdGFfcGFnZShzdHJ1Y3QgaW5vZGUg Kmlub2RlLCB1NjQgZnJvbSwKPiA+ICAgICAgICAgaWYgKElTX0VSUihmb2xpbykpCj4gPiAgICAg ICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIoZm9saW8pID09IC1FTk9FTlQgPyAwIDogUFRSX0VS Uihmb2xpbyk7Cj4gPiAgdHJ1bmNhdGVfb3V0Ogo+ID4gLSAgICAgICBmMmZzX2ZvbGlvX3dhaXRf d3JpdGViYWNrKGZvbGlvLCBEQVRBLCB0cnVlLCB0cnVlKTsKPiA+ICsgICAgICAgZjJmc19mb2xp b193YWl0X3dyaXRlYmFjayhmb2xpbywgdHJ1ZSwgdHJ1ZSk7Cj4gPiAgICAgICAgIGZvbGlvX3pl cm9fc2VnbWVudChmb2xpbywgb2Zmc2V0LCBmb2xpb19zaXplKGZvbGlvKSk7Cj4gPgo+ID4gICAg ICAgICAvKiBBbiBlbmNyeXB0ZWQgaW5vZGUgc2hvdWxkIGhhdmUgYSBrZXkgYW5kIHRydW5jYXRl IHRoZSBsYXN0IHBhZ2UuICovCj4gPiBAQCAtODQwLDcgKzgzNiw3IEBAIGludCBmMmZzX2RvX3Ry dW5jYXRlX2Jsb2NrcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1NjQgZnJvbSwgYm9vbCBsb2NrKQo+ ID4gICAgICAgICBzdHJ1Y3QgZjJmc19sb2NrX2NvbnRleHQgbGM7Cj4gPiAgICAgICAgIHBnb2Zm X3QgZnJlZV9mcm9tOwo+ID4gICAgICAgICBpbnQgY291bnQgPSAwLCBlcnIgPSAwOwo+ID4gLSAg ICAgICBzdHJ1Y3QgZm9saW8gKmlmb2xpbzsKPiA+ICsgICAgICAgc3RydWN0IGYyZnNfY2FjaGVk X2Jsb2NrICppZW50cnk7Cj4gPiAgICAgICAgIGJvb2wgdHJ1bmNhdGVfcGFnZSA9IGZhbHNlOwo+ ID4KPiA+ICAgICAgICAgdHJhY2VfZjJmc190cnVuY2F0ZV9ibG9ja3NfZW50ZXIoaW5vZGUsIGZy b20pOwo+ID4gQEAgLTg1OCw5ICs4NTQsOSBAQCBpbnQgZjJmc19kb190cnVuY2F0ZV9ibG9ja3Mo c3RydWN0IGlub2RlICppbm9kZSwgdTY0IGZyb20sIGJvb2wgbG9jaykKPiA+ICAgICAgICAgaWYg KGxvY2spCj4gPiAgICAgICAgICAgICAgICAgZjJmc19sb2NrX29wKHNiaSwgJmxjKTsKPiA+Cj4g PiAtICAgICAgIGlmb2xpbyA9IGYyZnNfZ2V0X2lub2RlX2ZvbGlvKHNiaSwgaW5vZGUtPmlfaW5v KTsKPiA+IC0gICAgICAgaWYgKElTX0VSUihpZm9saW8pKSB7Cj4gPiAtICAgICAgICAgICAgICAg ZXJyID0gUFRSX0VSUihpZm9saW8pOwo+ID4gKyAgICAgICBpZW50cnkgPSBmMmZzX2dldF9pbm9k ZV9jYWNoZShzYmksIGlub2RlLT5pX2lubyk7Cj4gPiArICAgICAgIGlmIChJU19FUlIoaWVudHJ5 KSkgewo+ID4gKyAgICAgICAgICAgICAgIGVyciA9IFBUUl9FUlIoaWVudHJ5KTsKPiA+ICAgICAg ICAgICAgICAgICBnb3RvIG91dDsKPiA+ICAgICAgICAgfQo+ID4KPiA+IEBAIC04NzksMTggKzg3 NSwxOCBAQCBpbnQgZjJmc19kb190cnVuY2F0ZV9ibG9ja3Moc3RydWN0IGlub2RlICppbm9kZSwg dTY0IGZyb20sIGJvb2wgbG9jaykKPiA+Cj4gPiAgICAgICAgICAgICAgICAgZjJmc19kcm9wX2V4 dGVudF90cmVlKGlub2RlKTsKPiA+Cj4gPiAtICAgICAgICAgICAgICAgZjJmc19mb2xpb19wdXQo aWZvbGlvLCB0cnVlKTsKPiA+ICsgICAgICAgICAgICAgICBmMmZzX3B1dF9jYWNoZShpZW50cnks IHRydWUpOwo+ID4gICAgICAgICAgICAgICAgIGdvdG8gb3V0Owo+ID4gICAgICAgICB9Cj4gPgo+ ID4gICAgICAgICBpZiAoZjJmc19oYXNfaW5saW5lX2RhdGEoaW5vZGUpKSB7Cj4gPiAtICAgICAg ICAgICAgICAgZjJmc190cnVuY2F0ZV9pbmxpbmVfaW5vZGUoaW5vZGUsIGlmb2xpbywgZnJvbSk7 Cj4gPiAtICAgICAgICAgICAgICAgZjJmc19mb2xpb19wdXQoaWZvbGlvLCB0cnVlKTsKPiA+ICsg ICAgICAgICAgICAgICBmMmZzX3RydW5jYXRlX2lubGluZV9pbm9kZShpbm9kZSwgaWVudHJ5LCBm cm9tKTsKPiA+ICsgICAgICAgICAgICAgICBmMmZzX3B1dF9jYWNoZShpZW50cnksIHRydWUpOwo+ ID4gICAgICAgICAgICAgICAgIHRydW5jYXRlX3BhZ2UgPSB0cnVlOwo+ID4gICAgICAgICAgICAg ICAgIGdvdG8gb3V0Owo+ID4gICAgICAgICB9Cj4gPgo+ID4gLSAgICAgICBzZXRfbmV3X2Rub2Rl KCZkbiwgaW5vZGUsIGlmb2xpbywgTlVMTCwgMCk7Cj4gPiArICAgICAgIHNldF9uZXdfZG5vZGUo JmRuLCBpbm9kZSwgaWVudHJ5LCBOVUxMLCAwKTsKPiA+ICAgICAgICAgZXJyID0gZjJmc19nZXRf ZG5vZGVfb2ZfZGF0YSgmZG4sIGZyZWVfZnJvbSwgTE9PS1VQX05PREVfUkEpOwo+ID4gICAgICAg ICBpZiAoZXJyKSB7Cj4gPiAgICAgICAgICAgICAgICAgaWYgKGVyciA9PSAtRU5PRU5UKQo+ID4g QEAgLTg5OCwxMiArODk0LDEyIEBAIGludCBmMmZzX2RvX3RydW5jYXRlX2Jsb2NrcyhzdHJ1Y3Qg aW5vZGUgKmlub2RlLCB1NjQgZnJvbSwgYm9vbCBsb2NrKQo+ID4gICAgICAgICAgICAgICAgIGdv dG8gb3V0Owo+ID4gICAgICAgICB9Cj4gPgo+ID4gLSAgICAgICBjb3VudCA9IEFERFJTX1BFUl9Q QUdFKGRuLm5vZGVfZm9saW8sIGlub2RlKTsKPiA+ICsgICAgICAgY291bnQgPSBBRERSU19QRVJf UEFHRShkbi5ub2RlX2VudHJ5LCBpbm9kZSk7Cj4gPgo+ID4gICAgICAgICBjb3VudCAtPSBkbi5v ZnNfaW5fbm9kZTsKPiA+ICAgICAgICAgZjJmc19idWdfb24oc2JpLCBjb3VudCA8IDApOwo+ID4K PiA+IC0gICAgICAgaWYgKGRuLm9mc19pbl9ub2RlIHx8IElTX0lOT0RFKHNiaSwgZG4ubm9kZV9m b2xpbykpIHsKPiA+ICsgICAgICAgaWYgKGRuLm9mc19pbl9ub2RlIHx8IElTX0lOT0RFKHNiaSwg ZG4ubm9kZV9lbnRyeSkpIHsKPiA+ICAgICAgICAgICAgICAgICBmMmZzX3RydW5jYXRlX2RhdGFf YmxvY2tzX3JhbmdlKCZkbiwgY291bnQpOwo+ID4gICAgICAgICAgICAgICAgIGZyZWVfZnJvbSAr PSBjb3VudDsKPiA+ICAgICAgICAgfQo+ID4gQEAgLTEzMDksNyArMTMwNSw3IEBAIHN0YXRpYyBp bnQgZmlsbF96ZXJvKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHBnb2ZmX3QgaW5kZXgsCj4gPiAgICAg ICAgIGlmIChJU19FUlIoZm9saW8pKQo+ID4gICAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJS KGZvbGlvKTsKPiA+Cj4gPiAtICAgICAgIGYyZnNfZm9saW9fd2FpdF93cml0ZWJhY2soZm9saW8s IERBVEEsIHRydWUsIHRydWUpOwo+ID4gKyAgICAgICBmMmZzX2ZvbGlvX3dhaXRfd3JpdGViYWNr KGZvbGlvLCB0cnVlLCB0cnVlKTsKPiA+ICAgICAgICAgZm9saW9femVyb19yYW5nZShmb2xpbywg c3RhcnQsIGxlbik7Cj4gPiAgICAgICAgIGZvbGlvX21hcmtfZGlydHkoZm9saW8pOwo+ID4gICAg ICAgICBmMmZzX2ZvbGlvX3B1dChmb2xpbywgdHJ1ZSk7Cj4gPiBAQCAtMTMzNSw3ICsxMzMxLDcg QEAgaW50IGYyZnNfdHJ1bmNhdGVfaG9sZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBwZ29mZl90IHBn X3N0YXJ0LCBwZ29mZl90IHBnX2VuZCkKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy biBlcnI7Cj4gPiAgICAgICAgICAgICAgICAgfQo+ID4KPiA+IC0gICAgICAgICAgICAgICBlbmRf b2Zmc2V0ID0gQUREUlNfUEVSX1BBR0UoZG4ubm9kZV9mb2xpbywgaW5vZGUpOwo+ID4gKyAgICAg ICAgICAgICAgIGVuZF9vZmZzZXQgPSBBRERSU19QRVJfUEFHRShkbi5ub2RlX2VudHJ5LCBpbm9k ZSk7Cj4gPiAgICAgICAgICAgICAgICAgY291bnQgPSBtaW4oZW5kX29mZnNldCAtIGRuLm9mc19p bl9ub2RlLCBwZ19lbmQgLSBwZ19zdGFydCk7Cj4gPgo+ID4gICAgICAgICAgICAgICAgIGYyZnNf YnVnX29uKEYyRlNfSV9TQihpbm9kZSksIGNvdW50ID09IDAgfHwgY291bnQgPiBlbmRfb2Zmc2V0 KTsKPiA+IEBAIC0xNDM1LDcgKzE0MzEsNyBAQCBzdGF0aWMgaW50IF9fcmVhZF9vdXRfYmxrYWRk cnMoc3RydWN0IGlub2RlICppbm9kZSwgYmxvY2tfdCAqYmxrYWRkciwKPiA+ICAgICAgICAgICAg ICAgICBnb3RvIG5leHQ7Cj4gPiAgICAgICAgIH0KPiA+Cj4gPiAtICAgICAgIGRvbmUgPSBtaW4o KHBnb2ZmX3QpQUREUlNfUEVSX1BBR0UoZG4ubm9kZV9mb2xpbywgaW5vZGUpIC0KPiA+ICsgICAg ICAgZG9uZSA9IG1pbigocGdvZmZfdClBRERSU19QRVJfUEFHRShkbi5ub2RlX2VudHJ5LCBpbm9k ZSkgLQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkbi5vZnNfaW5fbm9kZSwgbGVuKTsKPiA+ICAgICAgICAgZm9yIChpID0gMDsgaSA8 IGRvbmU7IGkrKywgYmxrYWRkcisrLCBkb19yZXBsYWNlKyssIGRuLm9mc19pbl9ub2RlKyspIHsK PiA+ICAgICAgICAgICAgICAgICAqYmxrYWRkciA9IGYyZnNfZGF0YV9ibGthZGRyKCZkbik7Cj4g PiBAQCAtMTUyNCw3ICsxNTIwLDcgQEAgc3RhdGljIGludCBfX2Nsb25lX2Jsa2FkZHJzKHN0cnVj dCBpbm9kZSAqc3JjX2lub2RlLCBzdHJ1Y3QgaW5vZGUgKmRzdF9pbm9kZSwKPiA+ICAgICAgICAg ICAgICAgICAgICAgICAgIH0KPiA+Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBpbGVuID0g bWluKChwZ29mZl90KQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBRERSU19Q RVJfUEFHRShkbi5ub2RlX2ZvbGlvLCBkc3RfaW5vZGUpIC0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgQUREUlNfUEVSX1BBR0UoZG4ubm9kZV9lbnRyeSwgZHN0X2lub2RlKSAt Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbi5v ZnNfaW5fbm9kZSwgbGVuIC0gaSk7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBkbyB7Cj4g PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRuLmRhdGFfYmxrYWRkciA9IGYyZnNf ZGF0YV9ibGthZGRyKCZkbik7Cj4gPiBAQCAtMTU2Miw3ICsxNTU4LDcgQEAgc3RhdGljIGludCBf X2Nsb25lX2Jsa2FkZHJzKHN0cnVjdCBpbm9kZSAqc3JjX2lub2RlLCBzdHJ1Y3QgaW5vZGUgKmRz dF9pbm9kZSwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFBUUl9F UlIoZmRzdCk7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICB9Cj4gPgo+ID4gLSAgICAgICAg ICAgICAgICAgICAgICAgZjJmc19mb2xpb193YWl0X3dyaXRlYmFjayhmZHN0LCBEQVRBLCB0cnVl LCB0cnVlKTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGYyZnNfZm9saW9fd2FpdF93cml0 ZWJhY2soZmRzdCwgdHJ1ZSwgdHJ1ZSk7Cj4gPgo+ID4gICAgICAgICAgICAgICAgICAgICAgICAg bWVtY3B5X2ZvbGlvKGZkc3QsIDAsIGZzcmMsIDAsIFBBR0VfU0laRSk7Cj4gPiAgICAgICAgICAg ICAgICAgICAgICAgICBmb2xpb19tYXJrX2RpcnR5KGZkc3QpOwo+ID4gQEAgLTE4MzIsNyArMTgy OCw3IEBAIHN0YXRpYyBpbnQgZjJmc196ZXJvX3JhbmdlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxv ZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4sCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGdvdG8gb3V0Owo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgfQo+ID4KPiA+IC0gICAg ICAgICAgICAgICAgICAgICAgIGVuZF9vZmZzZXQgPSBBRERSU19QRVJfUEFHRShkbi5ub2RlX2Zv bGlvLCBpbm9kZSk7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBlbmRfb2Zmc2V0ID0gQURE UlNfUEVSX1BBR0UoZG4ubm9kZV9lbnRyeSwgaW5vZGUpOwo+ID4gICAgICAgICAgICAgICAgICAg ICAgICAgZW5kID0gbWluKHBnX2VuZCwgZW5kX29mZnNldCAtIGRuLm9mc19pbl9ub2RlICsgaW5k ZXgpOwo+ID4KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IGYyZnNfZG9femVyb19y YW5nZSgmZG4sIGluZGV4LCBlbmQpOwo+ID4gQEAgLTMxMzMsNyArMzEyOSw3IEBAIHN0YXRpYyBp bnQgZjJmc19kZWZyYWdtZW50X3JhbmdlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBjbGVhcl9vdXQ7Cj4gPiAgICAgICAg ICAgICAgICAgICAgICAgICB9Cj4gPgo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgZjJmc19m b2xpb193YWl0X3dyaXRlYmFjayhmb2xpbywgREFUQSwgdHJ1ZSwgdHJ1ZSk7Cj4gPiArICAgICAg ICAgICAgICAgICAgICAgICBmMmZzX2ZvbGlvX3dhaXRfd3JpdGViYWNrKGZvbGlvLCB0cnVlLCB0 cnVlKTsKPiA+Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBmb2xpb19tYXJrX2RpcnR5KGZv bGlvKTsKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGlvX3NldF9mMmZzX2djaW5nKGZv bGlvKTsKPiA+IEBAIC0zODU2LDcgKzM4NTIsNyBAQCBzdGF0aWMgaW50IGYyZnNfaW9jX3Jlc2Vy dmVfZGV2X2FsaWFzKHN0cnVjdCBmaWxlICpmaWxwKQo+ID4gICAgICAgICBmMmZzX3Jlc2VydmVf ZGV2aWNlX2FsaWFzKHNiaSwgZWkuYmxrLCBlaS5sZW4pOwo+ID4KPiA+ICAgICAgICAgaV9zaXpl X3dyaXRlKGlub2RlLCAobG9mZl90KWVpLmxlbiA8PCBzYmktPmxvZ19ibG9ja3NpemUpOwo+ID4g LSAgICAgICBmMmZzX3VwZGF0ZV9pbm9kZV9wYWdlKGlub2RlKTsKPiA+ICsgICAgICAgZjJmc191 cGRhdGVfaW5vZGVfY2FjaGUoaW5vZGUpOwo+ID4KPiA+ICAgICAgICAgc3Bpbl9sb2NrKCZGUkVF X0koc2JpKS0+c2VnbWFwX2xvY2spOwo+ID4gICAgICAgICBGREVWKGYyZnNfdGFyZ2V0X2Rldmlj ZV9pbmRleChzYmksIGVpLmJsaykpLmlzX3Jlc2VydmluZyA9IGZhbHNlOwo+ID4gQEAgLTM5NTAs NyArMzk0Niw3IEBAIHN0YXRpYyBpbnQgZjJmc19pb2NfcmVsZWFzZV9kZXZfYWxpYXMoc3RydWN0 IGZpbGUgKmZpbHApCj4gPiAgICAgICAgICAgICAgICAgZ290byBvdXRfaW5vZGVfdW5sb2NrOwo+ ID4gICAgICAgICB9Cj4gPgo+ID4gLSAgICAgICBmMmZzX3VwZGF0ZV9pbm9kZV9wYWdlKGlub2Rl KTsKPiA+ICsgICAgICAgZjJmc191cGRhdGVfaW5vZGVfY2FjaGUoaW5vZGUpOwo+ID4KPiA+ICAg ICAgICAgZjJmc191bmxvY2tfb3Aoc2JpLCAmbGMpOwo+ID4gICAgICAgICBmMmZzX3VwX3dyaXRl X3RyYWNlKCZzYmktPmdjX2xvY2ssICZnbGMpOwo+ID4gQEAgLTQxNjksNyArNDE2NSw3IEBAIHN0 YXRpYyBpbnQgcmVsZWFzZV9jb21wcmVzc19ibG9ja3Moc3RydWN0IGRub2RlX29mX2RhdGEgKmRu LCBwZ29mZl90IGNvdW50KQo+ID4gICAgICAgICBpbnQgaTsKPiA+Cj4gPiAgICAgICAgIGZvciAo aSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Cj4gPiAtICAgICAgICAgICAgICAgYmxrYWRkciA9IGRh dGFfYmxrYWRkcihkbi0+aW5vZGUsIGRuLT5ub2RlX2ZvbGlvLAo+ID4gKyAgICAgICAgICAgICAg IGJsa2FkZHIgPSBkYXRhX2Jsa2FkZHIoZG4tPmlub2RlLCBkbi0+bm9kZV9lbnRyeSwKPiA+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRuLT5vZnNfaW5f bm9kZSArIGkpOwo+ID4KPiA+ICAgICAgICAgICAgICAgICBpZiAoIV9faXNfdmFsaWRfZGF0YV9i bGthZGRyKGJsa2FkZHIpKQo+ID4gQEAgLTQyODgsNyArNDI4NCw3IEBAIHN0YXRpYyBpbnQgZjJm c19yZWxlYXNlX2NvbXByZXNzX2Jsb2NrcyhzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgbG9u ZyBhcmcpCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiA+ICAgICAgICAgICAg ICAgICB9Cj4gPgo+ID4gLSAgICAgICAgICAgICAgIGVuZF9vZmZzZXQgPSBBRERSU19QRVJfUEFH RShkbi5ub2RlX2ZvbGlvLCBpbm9kZSk7Cj4gPiArICAgICAgICAgICAgICAgZW5kX29mZnNldCA9 IEFERFJTX1BFUl9QQUdFKGRuLm5vZGVfZW50cnksIGlub2RlKTsKPiA+ICAgICAgICAgICAgICAg ICBjb3VudCA9IG1pbihlbmRfb2Zmc2V0IC0gZG4ub2ZzX2luX25vZGUsIGxhc3RfaWR4IC0gcGFn ZV9pZHgpOwo+ID4gICAgICAgICAgICAgICAgIGNvdW50ID0gcm91bmRfdXAoY291bnQsIGZpLT5p X2NsdXN0ZXJfc2l6ZSk7Cj4gPgo+ID4gQEAgLTQzMzksNyArNDMzNSw3IEBAIHN0YXRpYyBpbnQg cmVzZXJ2ZV9jb21wcmVzc19ibG9ja3Moc3RydWN0IGRub2RlX29mX2RhdGEgKmRuLCBwZ29mZl90 IGNvdW50LAo+ID4gICAgICAgICBpbnQgaTsKPiA+Cj4gPiAgICAgICAgIGZvciAoaSA9IDA7IGkg PCBjb3VudDsgaSsrKSB7Cj4gPiAtICAgICAgICAgICAgICAgYmxrYWRkciA9IGRhdGFfYmxrYWRk cihkbi0+aW5vZGUsIGRuLT5ub2RlX2ZvbGlvLAo+ID4gKyAgICAgICAgICAgICAgIGJsa2FkZHIg PSBkYXRhX2Jsa2FkZHIoZG4tPmlub2RlLCBkbi0+bm9kZV9lbnRyeSwKPiA+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRuLT5vZnNfaW5fbm9kZSArIGkp Owo+ID4KPiA+ICAgICAgICAgICAgICAgICBpZiAoIV9faXNfdmFsaWRfZGF0YV9ibGthZGRyKGJs a2FkZHIpKQo+ID4gQEAgLTQzNTYsNyArNDM1Miw3IEBAIHN0YXRpYyBpbnQgcmVzZXJ2ZV9jb21w cmVzc19ibG9ja3Moc3RydWN0IGRub2RlX29mX2RhdGEgKmRuLCBwZ29mZl90IGNvdW50LAo+ID4g ICAgICAgICAgICAgICAgIGludCByZXQ7Cj4gPgo+ID4gICAgICAgICAgICAgICAgIGZvciAoaSA9 IDA7IGkgPCBjbHVzdGVyX3NpemU7IGkrKykgewo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAg YmxrYWRkciA9IGRhdGFfYmxrYWRkcihkbi0+aW5vZGUsIGRuLT5ub2RlX2ZvbGlvLAo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgYmxrYWRkciA9IGRhdGFfYmxrYWRkcihkbi0+aW5vZGUsIGRu LT5ub2RlX2VudHJ5LAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZG4tPm9mc19pbl9ub2RlICsgaSk7Cj4gPgo+ID4gICAgICAgICAgICAgICAgICAg ICAgICAgaWYgKGkgPT0gMCkgewo+ID4gQEAgLTQ0NjcsNyArNDQ2Myw3IEBAIHN0YXRpYyBpbnQg ZjJmc19yZXNlcnZlX2NvbXByZXNzX2Jsb2NrcyhzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQg bG9uZyBhcmcpCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiA+ICAgICAgICAg ICAgICAgICB9Cj4gPgo+ID4gLSAgICAgICAgICAgICAgIGVuZF9vZmZzZXQgPSBBRERSU19QRVJf UEFHRShkbi5ub2RlX2ZvbGlvLCBpbm9kZSk7Cj4gPiArICAgICAgICAgICAgICAgZW5kX29mZnNl dCA9IEFERFJTX1BFUl9QQUdFKGRuLm5vZGVfZW50cnksIGlub2RlKTsKPiA+ICAgICAgICAgICAg ICAgICBjb3VudCA9IG1pbihlbmRfb2Zmc2V0IC0gZG4ub2ZzX2luX25vZGUsIGxhc3RfaWR4IC0g cGFnZV9pZHgpOwo+ID4gICAgICAgICAgICAgICAgIGNvdW50ID0gcm91bmRfdXAoY291bnQsIGZp LT5pX2NsdXN0ZXJfc2l6ZSk7Cj4gPgo+ID4gQEAgLTQ2MzMsNyArNDYyOSw3IEBAIHN0YXRpYyBp bnQgZjJmc19zZWNfdHJpbV9maWxlKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBsb25nIGFy ZykKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0Owo+ID4gICAgICAgICAgICAg ICAgIH0KPiA+Cj4gPiAtICAgICAgICAgICAgICAgZW5kX29mZnNldCA9IEFERFJTX1BFUl9QQUdF KGRuLm5vZGVfZm9saW8sIGlub2RlKTsKPiA+ICsgICAgICAgICAgICAgICBlbmRfb2Zmc2V0ID0g QUREUlNfUEVSX1BBR0UoZG4ubm9kZV9lbnRyeSwgaW5vZGUpOwo+ID4gICAgICAgICAgICAgICAg IGNvdW50ID0gbWluKGVuZF9vZmZzZXQgLSBkbi5vZnNfaW5fbm9kZSwgcGdfZW5kIC0gaW5kZXgp Owo+ID4gICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrLCBpbmRleCsr LCBkbi5vZnNfaW5fbm9kZSsrKSB7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg YmxvY2tfZGV2aWNlICpjdXJfYmRldjsKPiA+IEBAIC00ODI5LDcgKzQ4MjUsNyBAQCBzdGF0aWMg aW50IHJlZGlydHlfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHBnb2ZmX3QgcGFnZV9pZHgs IGludCBsZW4pCj4gPiAgICAgICAgICAgICAgICAgLyogSXQgd2lsbCBuZXZlciBmYWlsLCB3aGVu IGZvbGlvIGhhcyBwaW5uZWQgYWJvdmUgKi8KPiA+ICAgICAgICAgICAgICAgICBmMmZzX2J1Z19v bihGMkZTX0lfU0IoaW5vZGUpLCBJU19FUlIoZm9saW8pKTsKPiA+Cj4gPiAtICAgICAgICAgICAg ICAgZjJmc19mb2xpb193YWl0X3dyaXRlYmFjayhmb2xpbywgREFUQSwgdHJ1ZSwgdHJ1ZSk7Cj4g PiArICAgICAgICAgICAgICAgZjJmc19mb2xpb193YWl0X3dyaXRlYmFjayhmb2xpbywgdHJ1ZSwg dHJ1ZSk7Cj4gPgo+ID4gICAgICAgICAgICAgICAgIGZvbGlvX21hcmtfZGlydHkoZm9saW8pOwo+ ID4gICAgICAgICAgICAgICAgIGZvbGlvX3NldF9mMmZzX2djaW5nKGZvbGlvKTsKPiA+IGRpZmYg LS1naXQgYS9mcy9mMmZzL2djLmMgYi9mcy9mMmZzL2djLmMKPiA+IGluZGV4IGJlZDkwNTZkNmI2 ZS4uYTM1ZDE1Yjk3ZDViIDEwMDY0NAo+ID4gLS0tIGEvZnMvZjJmcy9nYy5jCj4gPiArKysgYi9m cy9mMmZzL2djLmMKPiA+IEBAIC0xMDU0LDcgKzEwNTQsNyBAQCBzdGF0aWMgaW50IGdjX25vZGVf c2VnbWVudChzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPgo+ID4gICAgICAgICBmb3IgKG9m ZiA9IDA7IG9mZiA8IHVzYWJsZV9ibGtzX2luX3NlZzsgb2ZmKyssIGVudHJ5KyspIHsKPiA+ICAg ICAgICAgICAgICAgICBuaWRfdCBuaWQgPSBsZTMyX3RvX2NwdShlbnRyeS0+bmlkKTsKPiA+IC0g ICAgICAgICAgICAgICBzdHJ1Y3QgZm9saW8gKm5vZGVfZm9saW87Cj4gPiArICAgICAgICAgICAg ICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICpub2RlX2VudHJ5Owo+ID4gICAgICAgICAgICAg ICAgIHN0cnVjdCBub2RlX2luZm8gbmk7Cj4gPiAgICAgICAgICAgICAgICAgaW50IGVycjsKPiA+ Cj4gPiBAQCAtMTA3MiwzMiArMTA3MiwzMiBAQCBzdGF0aWMgaW50IGdjX25vZGVfc2VnbWVudChz dHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPiAgICAgICAgICAgICAgICAgfQo+ID4KPiA+ICAg ICAgICAgICAgICAgICBpZiAocGhhc2UgPT0gMSkgewo+ID4gLSAgICAgICAgICAgICAgICAgICAg ICAgZjJmc19yYV9ub2RlX3BhZ2Uoc2JpLCBuaWQpOwo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgZjJmc19yYV9ub2RlX2NhY2hlKHNiaSwgbmlkKTsKPiA+ICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnRpbnVlOwo+ID4gICAgICAgICAgICAgICAgIH0KPiA+Cj4gPiAgICAgICAgICAgICAg ICAgLyogcGhhc2UgPT0gMiAqLwo+ID4gLSAgICAgICAgICAgICAgIG5vZGVfZm9saW8gPSBmMmZz X2dldF9ub2RlX2ZvbGlvKHNiaSwgbmlkLCBOT0RFX1RZUEVfUkVHVUxBUik7Cj4gPiAtICAgICAg ICAgICAgICAgaWYgKElTX0VSUihub2RlX2ZvbGlvKSkKPiA+ICsgICAgICAgICAgICAgICBub2Rl X2VudHJ5ID0gZjJmc19nZXRfbm9kZV9jYWNoZShzYmksIG5pZCwgTk9ERV9UWVBFX1JFR1VMQVIp Owo+ID4gKyAgICAgICAgICAgICAgIGlmIChJU19FUlIobm9kZV9lbnRyeSkpCj4gPiAgICAgICAg ICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiA+Cj4gPiAgICAgICAgICAgICAgICAgLyogYmxv Y2sgbWF5IGJlY29tZSBpbnZhbGlkIGR1cmluZyBmMmZzX2dldF9ub2RlX2ZvbGlvICovCj4gPiAg ICAgICAgICAgICAgICAgaWYgKGNoZWNrX3ZhbGlkX21hcChzYmksIHNlZ25vLCBvZmYpID09IDAp IHsKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGYyZnNfZm9saW9fcHV0KG5vZGVfZm9saW8s IHRydWUpOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZjJmc19wdXRfY2FjaGUobm9kZV9l bnRyeSwgdHJ1ZSk7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiA+ICAg ICAgICAgICAgICAgICB9Cj4gPgo+ID4gICAgICAgICAgICAgICAgIGlmIChmMmZzX2dldF9ub2Rl X2luZm8oc2JpLCBuaWQsICZuaSwgZmFsc2UpKSB7Cj4gPiAtICAgICAgICAgICAgICAgICAgICAg ICBmMmZzX2ZvbGlvX3B1dChub2RlX2ZvbGlvLCB0cnVlKTsKPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgIGYyZnNfcHV0X2NhY2hlKG5vZGVfZW50cnksIHRydWUpOwo+ID4gICAgICAgICAgICAg ICAgICAgICAgICAgY29udGludWU7Cj4gPiAgICAgICAgICAgICAgICAgfQo+ID4KPiA+ICAgICAg ICAgICAgICAgICBpZiAobmkuYmxrX2FkZHIgIT0gc3RhcnRfYWRkciArIG9mZikgewo+ID4gLSAg ICAgICAgICAgICAgICAgICAgICAgZjJmc19mb2xpb19wdXQobm9kZV9mb2xpbywgdHJ1ZSk7Cj4g PiArICAgICAgICAgICAgICAgICAgICAgICBmMmZzX3B1dF9jYWNoZShub2RlX2VudHJ5LCB0cnVl KTsKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ID4gICAgICAgICAgICAg ICAgIH0KPiA+Cj4gPiAtICAgICAgICAgICAgICAgZXJyID0gZjJmc19tb3ZlX25vZGVfZm9saW8o bm9kZV9mb2xpbywgZ2NfdHlwZSk7Cj4gPiArICAgICAgICAgICAgICAgZXJyID0gZjJmc19tb3Zl X25vZGVfY2FjaGUobm9kZV9lbnRyeSwgZ2NfdHlwZSk7Cj4gPiAgICAgICAgICAgICAgICAgaWYg KCFlcnIgJiYgZ2NfdHlwZSA9PSBGR19HQykKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIHN1 Ym1pdHRlZCsrOwo+ID4gICAgICAgICAgICAgICAgIHN0YXRfaW5jX25vZGVfYmxrX2NvdW50KHNi aSwgMSwgZ2NfdHlwZSk7Cj4gPiBAQCAtMTE0OCw3ICsxMTQ4LDcgQEAgYmxvY2tfdCBmMmZzX3N0 YXJ0X2JpZHhfb2Zfbm9kZSh1bnNpZ25lZCBpbnQgbm9kZV9vZnMsIHN0cnVjdCBpbm9kZSAqaW5v ZGUpCj4gPiAgc3RhdGljIGJvb2wgaXNfYWxpdmUoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBz dHJ1Y3QgZjJmc19zdW1tYXJ5ICpzdW0sCj4gPiAgICAgICAgICAgICAgICAgc3RydWN0IG5vZGVf aW5mbyAqZG5pLCBibG9ja190IGJsa2FkZHIsIHVuc2lnbmVkIGludCAqbm9mcykKPiA+ICB7Cj4g PiAtICAgICAgIHN0cnVjdCBmb2xpbyAqbm9kZV9mb2xpbzsKPiA+ICsgICAgICAgc3RydWN0IGYy ZnNfY2FjaGVkX2Jsb2NrICpub2RlX2VudHJ5Owo+ID4gICAgICAgICBuaWRfdCBuaWQ7Cj4gPiAg ICAgICAgIHVuc2lnbmVkIGludCBvZnNfaW5fbm9kZSwgbWF4X2FkZHJzLCBiYXNlOwo+ID4gICAg ICAgICBibG9ja190IHNvdXJjZV9ibGthZGRyOwo+ID4gQEAgLTExNTYsMTIgKzExNTYsMTIgQEAg c3RhdGljIGJvb2wgaXNfYWxpdmUoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBzdHJ1Y3QgZjJm c19zdW1tYXJ5ICpzdW0sCj4gPiAgICAgICAgIG5pZCA9IGxlMzJfdG9fY3B1KHN1bS0+bmlkKTsK PiA+ICAgICAgICAgb2ZzX2luX25vZGUgPSBsZTE2X3RvX2NwdShzdW0tPm9mc19pbl9ub2RlKTsK PiA+Cj4gPiAtICAgICAgIG5vZGVfZm9saW8gPSBmMmZzX2dldF9ub2RlX2ZvbGlvKHNiaSwgbmlk LCBOT0RFX1RZUEVfUkVHVUxBUik7Cj4gPiAtICAgICAgIGlmIChJU19FUlIobm9kZV9mb2xpbykp Cj4gPiArICAgICAgIG5vZGVfZW50cnkgPSBmMmZzX2dldF9ub2RlX2NhY2hlKHNiaSwgbmlkLCBO T0RFX1RZUEVfUkVHVUxBUik7Cj4gPiArICAgICAgIGlmIChJU19FUlIobm9kZV9lbnRyeSkpCj4g PiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwo+ID4KPiA+ICAgICAgICAgaWYgKGYyZnNf Z2V0X25vZGVfaW5mbyhzYmksIG5pZCwgZG5pLCBmYWxzZSkpIHsKPiA+IC0gICAgICAgICAgICAg ICBmMmZzX2ZvbGlvX3B1dChub2RlX2ZvbGlvLCB0cnVlKTsKPiA+ICsgICAgICAgICAgICAgICBm MmZzX3B1dF9jYWNoZShub2RlX2VudHJ5LCB0cnVlKTsKPiA+ICAgICAgICAgICAgICAgICByZXR1 cm4gZmFsc2U7Cj4gPiAgICAgICAgIH0KPiA+Cj4gPiBAQCAtMTE3MiwxMiArMTE3MiwxMiBAQCBz dGF0aWMgYm9vbCBpc19hbGl2ZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIHN0cnVjdCBmMmZz X3N1bW1hcnkgKnN1bSwKPiA+ICAgICAgICAgfQo+ID4KPiA+ICAgICAgICAgaWYgKGYyZnNfY2hl Y2tfbmlkX3JhbmdlKHNiaSwgZG5pLT5pbm8pKSB7Cj4gPiAtICAgICAgICAgICAgICAgZjJmc19m b2xpb19wdXQobm9kZV9mb2xpbywgdHJ1ZSk7Cj4gPiArICAgICAgICAgICAgICAgZjJmc19wdXRf Y2FjaGUobm9kZV9lbnRyeSwgdHJ1ZSk7Cj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl Owo+ID4gICAgICAgICB9Cj4gPgo+ID4gLSAgICAgICBpZiAoSVNfSU5PREUoc2JpLCBub2RlX2Zv bGlvKSkgewo+ID4gLSAgICAgICAgICAgICAgIGJhc2UgPSBvZmZzZXRfaW5fYWRkcihGMkZTX0lO T0RFKG5vZGVfZm9saW8pKTsKPiA+ICsgICAgICAgaWYgKElTX0lOT0RFKHNiaSwgbm9kZV9lbnRy eSkpIHsKPiA+ICsgICAgICAgICAgICAgICBiYXNlID0gb2Zmc2V0X2luX2FkZHIoRjJGU19JTk9E RShub2RlX2VudHJ5KSk7Cj4gPiAgICAgICAgICAgICAgICAgbWF4X2FkZHJzID0gREVGX0FERFJT X1BFUl9JTk9ERShzYmkpOwo+ID4gICAgICAgICB9IGVsc2Ugewo+ID4gICAgICAgICAgICAgICAg IGJhc2UgPSAwOwo+ID4gQEAgLTExODcsMTMgKzExODcsMTMgQEAgc3RhdGljIGJvb2wgaXNfYWxp dmUoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBzdHJ1Y3QgZjJmc19zdW1tYXJ5ICpzdW0sCj4g PiAgICAgICAgIGlmIChiYXNlICsgb2ZzX2luX25vZGUgPj0gbWF4X2FkZHJzKSB7Cj4gPiAgICAg ICAgICAgICAgICAgZjJmc19lcnIoc2JpLCAiSW5jb25zaXN0ZW50IGJsa2FkZHIgb2Zmc2V0OiBi YXNlOiV1LCBvZnNfaW5fbm9kZToldSwgbWF4OiV1LCBpbm86JXUsIG5pZDoldSIsCj4gPiAgICAg ICAgICAgICAgICAgICAgICAgICBiYXNlLCBvZnNfaW5fbm9kZSwgbWF4X2FkZHJzLCBkbmktPmlu bywgZG5pLT5uaWQpOwo+ID4gLSAgICAgICAgICAgICAgIGYyZnNfZm9saW9fcHV0KG5vZGVfZm9s aW8sIHRydWUpOwo+ID4gKyAgICAgICAgICAgICAgIGYyZnNfcHV0X2NhY2hlKG5vZGVfZW50cnks IHRydWUpOwo+ID4gICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKPiA+ICAgICAgICAgfQo+ ID4KPiA+IC0gICAgICAgKm5vZnMgPSBvZnNfb2Zfbm9kZShzYmksIG5vZGVfZm9saW8pOwo+ID4g LSAgICAgICBzb3VyY2VfYmxrYWRkciA9IGRhdGFfYmxrYWRkcihOVUxMLCBub2RlX2ZvbGlvLCBv ZnNfaW5fbm9kZSk7Cj4gPiAtICAgICAgIGYyZnNfZm9saW9fcHV0KG5vZGVfZm9saW8sIHRydWUp Owo+ID4gKyAgICAgICAqbm9mcyA9IG9mc19vZl9ub2RlKHNiaSwgbm9kZV9lbnRyeSk7Cj4gPiAr ICAgICAgIHNvdXJjZV9ibGthZGRyID0gZGF0YV9ibGthZGRyKE5VTEwsIG5vZGVfZW50cnksIG9m c19pbl9ub2RlKTsKPiA+ICsgICAgICAgZjJmc19wdXRfY2FjaGUobm9kZV9lbnRyeSwgdHJ1ZSk7 Cj4gPgo+ID4gICAgICAgICBpZiAoc291cmNlX2Jsa2FkZHIgIT0gYmxrYWRkcikgewo+ID4gICNp ZmRlZiBDT05GSUdfRjJGU19DSEVDS19GUwo+ID4gQEAgLTEyODUsNyArMTI4NSw3IEBAIHN0YXRp YyBpbnQgcmFfZGF0YV9ibG9jayhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBwZ29mZl90IGluZGV4KQo+ ID4gICAgICAgICAgKiBkb24ndCBjYWNoZSBlbmNyeXB0ZWQgZGF0YSBpbnRvIG1ldGEgaW5vZGUg dW50aWwgcHJldmlvdXMgZGlydHkKPiA+ICAgICAgICAgICogZGF0YSB3ZXJlIHdyaXRlYmFja2Vk IHRvIGF2b2lkIHJhY2luZyBiZXR3ZWVuIEdDIGFuZCBmbHVzaC4KPiA+ICAgICAgICAgICovCj4g PiAtICAgICAgIGYyZnNfZm9saW9fd2FpdF93cml0ZWJhY2soZm9saW8sIERBVEEsIHRydWUsIHRy dWUpOwo+ID4gKyAgICAgICBmMmZzX2ZvbGlvX3dhaXRfd3JpdGViYWNrKGZvbGlvLCB0cnVlLCB0 cnVlKTsKPiA+Cj4gPiAgICAgICAgIGYyZnNfd2FpdF9vbl9ibG9ja193cml0ZWJhY2soaW5vZGUs IGRuLmRhdGFfYmxrYWRkcik7Cj4gPgo+ID4gQEAgLTEzOTYsNyArMTM5Niw3IEBAIHN0YXRpYyBp bnQgbW92ZV9kYXRhX2Jsb2NrKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGJsb2NrX3QgYmlkeCwKPiA+ ICAgICAgICAgICogZG9uJ3QgY2FjaGUgZW5jcnlwdGVkIGRhdGEgaW50byBtZXRhIGlub2RlIHVu dGlsIHByZXZpb3VzIGRpcnR5Cj4gPiAgICAgICAgICAqIGRhdGEgd2VyZSB3cml0ZWJhY2tlZCB0 byBhdm9pZCByYWNpbmcgYmV0d2VlbiBHQyBhbmQgZmx1c2guCj4gPiAgICAgICAgICAqLwo+ID4g LSAgICAgICBmMmZzX2ZvbGlvX3dhaXRfd3JpdGViYWNrKGZvbGlvLCBEQVRBLCB0cnVlLCB0cnVl KTsKPiA+ICsgICAgICAgZjJmc19mb2xpb193YWl0X3dyaXRlYmFjayhmb2xpbywgdHJ1ZSwgdHJ1 ZSk7Cj4gPgo+ID4gICAgICAgICBmMmZzX3dhaXRfb25fYmxvY2tfd3JpdGViYWNrKGlub2RlLCBk bi5kYXRhX2Jsa2FkZHIpOwo+ID4KPiA+IEBAIC0xNDQ1LDcgKzE0NDUsNyBAQCBzdGF0aWMgaW50 IG1vdmVfZGF0YV9ibG9jayhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBibG9ja190IGJpZHgsCj4gPiAg ICAgICAgIHNldF9zdW1tYXJ5KCZzdW0sIGRuLm5pZCwgZG4ub2ZzX2luX25vZGUsIG5pLnZlcnNp b24pOwo+ID4KPiA+ICAgICAgICAgLyogYWxsb2NhdGUgYmxvY2sgYWRkcmVzcyAqLwo+ID4gLSAg ICAgICBlcnIgPSBmMmZzX2FsbG9jYXRlX2RhdGFfYmxvY2soZmlvLnNiaSwgTlVMTCwgZmlvLm9s ZF9ibGthZGRyLCAmbmV3YWRkciwKPiA+ICsgICAgICAgZXJyID0gZjJmc19hbGxvY2F0ZV9kYXRh X2Jsb2NrKGZpby5zYmksIGZpby5vbGRfYmxrYWRkciwgJm5ld2FkZHIsCj4gPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICZzdW0sIHR5cGUsIE5VTEwpOwo+ID4gICAgICAgICBpZiAo ZXJyKSB7Cj4gPiAgICAgICAgICAgICAgICAgZjJmc19wdXRfY2FjaGUoc2VudHJ5LCB0cnVlKTsK PiA+IEBAIC0xNTQ5LDcgKzE1NDksNyBAQCBzdGF0aWMgaW50IG1vdmVfZGF0YV9wYWdlKHN0cnVj dCBpbm9kZSAqaW5vZGUsIGJsb2NrX3QgYmlkeCwgaW50IGdjX3R5cGUsCj4gPiAgICAgICAgICAg ICAgICAgYm9vbCBpc19kaXJ0eSA9IGZvbGlvX3Rlc3RfZGlydHkoZm9saW8pOwo+ID4KPiA+ICBy ZXRyeToKPiA+IC0gICAgICAgICAgICAgICBmMmZzX2ZvbGlvX3dhaXRfd3JpdGViYWNrKGZvbGlv LCBEQVRBLCB0cnVlLCB0cnVlKTsKPiA+ICsgICAgICAgICAgICAgICBmMmZzX2ZvbGlvX3dhaXRf d3JpdGViYWNrKGZvbGlvLCB0cnVlLCB0cnVlKTsKPiA+Cj4gPiAgICAgICAgICAgICAgICAgZm9s aW9fbWFya19kaXJ0eShmb2xpbyk7Cj4gPiAgICAgICAgICAgICAgICAgaWYgKGZvbGlvX2NsZWFy X2RpcnR5X2Zvcl9pbyhmb2xpbykpIHsKPiA+IEBAIC0xNjI2LDcgKzE2MjYsNyBAQCBzdGF0aWMg aW50IGdjX2RhdGFfc2VnbWVudChzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIHN0cnVjdCBmMmZz X3N1bW1hcnkgKnN1bSwKPiA+ICAgICAgICAgICAgICAgICB9Cj4gPgo+ID4gICAgICAgICAgICAg ICAgIGlmIChwaGFzZSA9PSAxKSB7Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBmMmZzX3Jh X25vZGVfcGFnZShzYmksIG5pZCk7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBmMmZzX3Jh X25vZGVfY2FjaGUoc2JpLCBuaWQpOwo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgY29udGlu dWU7Cj4gPiAgICAgICAgICAgICAgICAgfQo+ID4KPiA+IEBAIC0xNjM1LDcgKzE2MzUsNyBAQCBz dGF0aWMgaW50IGdjX2RhdGFfc2VnbWVudChzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIHN0cnVj dCBmMmZzX3N1bW1hcnkgKnN1bSwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl Owo+ID4KPiA+ICAgICAgICAgICAgICAgICBpZiAocGhhc2UgPT0gMikgewo+ID4gLSAgICAgICAg ICAgICAgICAgICAgICAgZjJmc19yYV9ub2RlX3BhZ2Uoc2JpLCBkbmkuaW5vKTsKPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgIGYyZnNfcmFfbm9kZV9jYWNoZShzYmksIGRuaS5pbm8pOwo+ID4g ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gPiAgICAgICAgICAgICAgICAgfQo+ ID4KPiA+IGRpZmYgLS1naXQgYS9mcy9mMmZzL2lubGluZS5jIGIvZnMvZjJmcy9pbmxpbmUuYwo+ ID4gaW5kZXggZDEwYWNiNTA0MmUzLi4yNzNiNjQyOGM5ZjkgMTAwNjQ0Cj4gPiAtLS0gYS9mcy9m MmZzL2lubGluZS5jCj4gPiArKysgYi9mcy9mMmZzL2lubGluZS5jCj4gPiBAQCAtMzQsNyArMzQs NyBAQCBib29sIGYyZnNfbWF5X2lubGluZV9kYXRhKHN0cnVjdCBpbm9kZSAqaW5vZGUpCj4gPiAg ICAgICAgIHJldHVybiAhZjJmc19wb3N0X3JlYWRfcmVxdWlyZWQoaW5vZGUpOwo+ID4gIH0KPiA+ Cj4gPiAtc3RhdGljIGJvb2wgaW5vZGVfaGFzX2Jsb2NrcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBz dHJ1Y3QgZm9saW8gKmlmb2xpbykKPiA+ICtzdGF0aWMgYm9vbCBpbm9kZV9oYXNfYmxvY2tzKHN0 cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqaWVudHJ5KQo+ID4g IHsKPiA+ICAgICAgICAgaW50IGk7Cj4gPgo+ID4gQEAgLTQyLDE4ICs0MiwxOCBAQCBzdGF0aWMg Ym9vbCBpbm9kZV9oYXNfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmb2xpbyAq aWZvbGlvKQo+ID4gICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwo+ID4KPiA+ICAgICAgICAg Zm9yIChpID0gMDsgaSA8IERFRl9OSURTX1BFUl9JTk9ERTsgaSsrKSB7Cj4gPiAtICAgICAgICAg ICAgICAgaWYgKEYyRlNfSU5PREVfTklEUyhGMkZTX0lfU0IoaW5vZGUpLCBpZm9saW8pW2ldKQo+ ID4gKyAgICAgICAgICAgICAgIGlmIChGMkZTX0lOT0RFX05JRFMoRjJGU19JX1NCKGlub2RlKSwg aWVudHJ5KVtpXSkKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwo+ID4g ICAgICAgICB9Cj4gPiAgICAgICAgIHJldHVybiBmYWxzZTsKPiA+ICB9Cj4gPgo+ID4gLWJvb2wg ZjJmc19zYW5pdHlfY2hlY2tfaW5saW5lX2RhdGEoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0 IGZvbGlvICppZm9saW8pCj4gPiArYm9vbCBmMmZzX3Nhbml0eV9jaGVja19pbmxpbmVfZGF0YShz dHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmllbnRyeSkKPiA+ ICB7Cj4gPiAgICAgICAgIGlmICghZjJmc19oYXNfaW5saW5lX2RhdGEoaW5vZGUpKQo+ID4gICAg ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKPiA+Cj4gPiAtICAgICAgIGlmIChpbm9kZV9oYXNf YmxvY2tzKGlub2RlLCBpZm9saW8pKQo+ID4gKyAgICAgICBpZiAoaW5vZGVfaGFzX2Jsb2Nrcyhp bm9kZSwgaWVudHJ5KSkKPiA+ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cj4gPgo+ID4g ICAgICAgICBpZiAoIXN1cHBvcnRfaW5saW5lX2RhdGEoaW5vZGUpKQo+ID4gQEAgLTc5LDcgKzc5 LDcgQEAgYm9vbCBmMmZzX21heV9pbmxpbmVfZGVudHJ5KHN0cnVjdCBpbm9kZSAqaW5vZGUpCj4g PiAgICAgICAgIHJldHVybiB0cnVlOwo+ID4gIH0KPiA+Cj4gPiAtdm9pZCBmMmZzX2RvX3JlYWRf aW5saW5lX2RhdGEoc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IGZvbGlvICppZm9saW8pCj4g PiArdm9pZCBmMmZzX2RvX3JlYWRfaW5saW5lX2RhdGEoc3RydWN0IGZvbGlvICpmb2xpbywgc3Ry dWN0IGYyZnNfY2FjaGVkX2Jsb2NrICppZW50cnkpCj4gPiAgewo+ID4gICAgICAgICBzdHJ1Y3Qg aW5vZGUgKmlub2RlID0gZm9saW8tPm1hcHBpbmctPmhvc3Q7Cj4gPgo+ID4gQEAgLTkxLDEzICs5 MSwxMyBAQCB2b2lkIGYyZnNfZG9fcmVhZF9pbmxpbmVfZGF0YShzdHJ1Y3QgZm9saW8gKmZvbGlv LCBzdHJ1Y3QgZm9saW8gKmlmb2xpbykKPiA+ICAgICAgICAgZm9saW9femVyb19zZWdtZW50KGZv bGlvLCBNQVhfSU5MSU5FX0RBVEEoaW5vZGUpLCBmb2xpb19zaXplKGZvbGlvKSk7Cj4gPgo+ID4g ICAgICAgICAvKiBDb3B5IHRoZSB3aG9sZSBpbmxpbmUgZGF0YSBibG9jayAqLwo+ID4gLSAgICAg ICBtZW1jcHlfdG9fZm9saW8oZm9saW8sIDAsIGlubGluZV9kYXRhX2FkZHIoaW5vZGUsIGlmb2xp byksCj4gPiArICAgICAgIG1lbWNweV90b19mb2xpbyhmb2xpbywgMCwgaW5saW5lX2RhdGFfYWRk cihpbm9kZSwgaWVudHJ5KSwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgTUFYX0lOTElORV9E QVRBKGlub2RlKSk7Cj4gPiAgICAgICAgIGlmICghZm9saW9fdGVzdF91cHRvZGF0ZShmb2xpbykp Cj4gPiAgICAgICAgICAgICAgICAgZm9saW9fbWFya191cHRvZGF0ZShmb2xpbyk7Cj4gPiAgfQo+ ID4KPiA+IC12b2lkIGYyZnNfdHJ1bmNhdGVfaW5saW5lX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5v ZGUsIHN0cnVjdCBmb2xpbyAqaWZvbGlvLAo+ID4gK3ZvaWQgZjJmc190cnVuY2F0ZV9pbmxpbmVf aW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICppZW50 cnksCj4gPiAgICAgICAgICAgICAgICAgdTY0IGZyb20pCj4gPiAgewo+ID4gICAgICAgICB2b2lk ICphZGRyOwo+ID4gQEAgLTEwNSwxMSArMTA1LDExIEBAIHZvaWQgZjJmc190cnVuY2F0ZV9pbmxp bmVfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZvbGlvICppZm9saW8sCj4gPiAg ICAgICAgIGlmIChmcm9tID49IE1BWF9JTkxJTkVfREFUQShpbm9kZSkpCj4gPiAgICAgICAgICAg ICAgICAgcmV0dXJuOwo+ID4KPiA+IC0gICAgICAgYWRkciA9IGlubGluZV9kYXRhX2FkZHIoaW5v ZGUsIGlmb2xpbyk7Cj4gPiArICAgICAgIGFkZHIgPSBpbmxpbmVfZGF0YV9hZGRyKGlub2RlLCBp ZW50cnkpOwo+ID4KPiA+IC0gICAgICAgZjJmc19mb2xpb193YWl0X3dyaXRlYmFjayhpZm9saW8s IE5PREUsIHRydWUsIHRydWUpOwo+ID4gKyAgICAgICBmMmZzX2NhY2hlX3dhaXRfd3JpdGViYWNr KGllbnRyeSk7Cj4gPiAgICAgICAgIG1lbXNldChhZGRyICsgZnJvbSwgMCwgTUFYX0lOTElORV9E QVRBKGlub2RlKSAtIGZyb20pOwo+ID4gLSAgICAgICBmb2xpb19tYXJrX2RpcnR5KGlmb2xpbyk7 Cj4gPiArICAgICAgIGYyZnNfbWFya19jYWNoZV9kaXJ0eShpZW50cnkpOwo+ID4KPiA+ICAgICAg ICAgaWYgKGZyb20gPT0gMCkKPiA+ICAgICAgICAgICAgICAgICBjbGVhcl9pbm9kZV9mbGFnKGlu b2RlLCBGSV9EQVRBX0VYSVNUKTsKPiA+IEBAIC0xMTcsMjcgKzExNywyNyBAQCB2b2lkIGYyZnNf dHJ1bmNhdGVfaW5saW5lX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmb2xpbyAq aWZvbGlvLAo+ID4KPiA+ICBpbnQgZjJmc19yZWFkX2lubGluZV9kYXRhKHN0cnVjdCBpbm9kZSAq aW5vZGUsIHN0cnVjdCBmb2xpbyAqZm9saW8pCj4gPiAgewo+ID4gLSAgICAgICBzdHJ1Y3QgZm9s aW8gKmlmb2xpbzsKPiA+ICsgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICppZW50cnk7 Cj4gPgo+ID4gLSAgICAgICBpZm9saW8gPSBmMmZzX2dldF9pbm9kZV9mb2xpbyhGMkZTX0lfU0Io aW5vZGUpLCBpbm9kZS0+aV9pbm8pOwo+ID4gLSAgICAgICBpZiAoSVNfRVJSKGlmb2xpbykpIHsK PiA+ICsgICAgICAgaWVudHJ5ID0gZjJmc19nZXRfaW5vZGVfY2FjaGUoRjJGU19JX1NCKGlub2Rl KSwgaW5vZGUtPmlfaW5vKTsKPiA+ICsgICAgICAgaWYgKElTX0VSUihpZW50cnkpKSB7Cj4gPiAg ICAgICAgICAgICAgICAgZm9saW9fdW5sb2NrKGZvbGlvKTsKPiA+IC0gICAgICAgICAgICAgICBy ZXR1cm4gUFRSX0VSUihpZm9saW8pOwo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJS KGllbnRyeSk7Cj4gPiAgICAgICAgIH0KPiA+Cj4gPiAgICAgICAgIGlmICghZjJmc19oYXNfaW5s aW5lX2RhdGEoaW5vZGUpKSB7Cj4gPiAtICAgICAgICAgICAgICAgZjJmc19mb2xpb19wdXQoaWZv bGlvLCB0cnVlKTsKPiA+ICsgICAgICAgICAgICAgICBmMmZzX3B1dF9jYWNoZShpZW50cnksIHRy dWUpOwo+ID4gICAgICAgICAgICAgICAgIHJldHVybiAtRUFHQUlOOwo+ID4gICAgICAgICB9Cj4g Pgo+ID4gICAgICAgICBpZiAoZm9saW8tPmluZGV4KQo+ID4gICAgICAgICAgICAgICAgIGZvbGlv X3plcm9fc2VnbWVudChmb2xpbywgMCwgZm9saW9fc2l6ZShmb2xpbykpOwo+ID4gICAgICAgICBl bHNlCj4gPiAtICAgICAgICAgICAgICAgZjJmc19kb19yZWFkX2lubGluZV9kYXRhKGZvbGlvLCBp Zm9saW8pOwo+ID4gKyAgICAgICAgICAgICAgIGYyZnNfZG9fcmVhZF9pbmxpbmVfZGF0YShmb2xp bywgaWVudHJ5KTsKPiA+Cj4gPiAgICAgICAgIGlmICghZm9saW9fdGVzdF91cHRvZGF0ZShmb2xp bykpCj4gPiAgICAgICAgICAgICAgICAgZm9saW9fbWFya191cHRvZGF0ZShmb2xpbyk7Cj4gPiAt ICAgICAgIGYyZnNfZm9saW9fcHV0KGlmb2xpbywgdHJ1ZSk7Cj4gPiArICAgICAgIGYyZnNfcHV0 X2NhY2hlKGllbnRyeSwgdHJ1ZSk7Cj4gPiAgICAgICAgIGZvbGlvX3VubG9jayhmb2xpbyk7Cj4g PiAgICAgICAgIHJldHVybiAwOwo+ID4gIH0KPiA+IEBAIC0xODUsNyArMTg1LDcgQEAgaW50IGYy ZnNfY29udmVydF9pbmxpbmVfZm9saW8oc3RydWN0IGRub2RlX29mX2RhdGEgKmRuLCBzdHJ1Y3Qg Zm9saW8gKmZvbGlvKQo+ID4KPiA+ICAgICAgICAgZjJmc19idWdfb24oRjJGU19GX1NCKGZvbGlv KSwgZm9saW9fdGVzdF93cml0ZWJhY2soZm9saW8pKTsKPiA+Cj4gPiAtICAgICAgIGYyZnNfZG9f cmVhZF9pbmxpbmVfZGF0YShmb2xpbywgZG4tPmlub2RlX2ZvbGlvKTsKPiA+ICsgICAgICAgZjJm c19kb19yZWFkX2lubGluZV9kYXRhKGZvbGlvLCBkbi0+aW5vZGVfZW50cnkpOwo+ID4gICAgICAg ICBmb2xpb19tYXJrX2RpcnR5KGZvbGlvKTsKPiA+Cj4gPiAgICAgICAgIC8qIGNsZWFyIGRpcnR5 IHN0YXRlICovCj4gPiBAQCAtMTk2LDcgKzE5Niw3IEBAIGludCBmMmZzX2NvbnZlcnRfaW5saW5l X2ZvbGlvKHN0cnVjdCBkbm9kZV9vZl9kYXRhICpkbiwgc3RydWN0IGZvbGlvICpmb2xpbykKPiA+ ICAgICAgICAgZmlvLm9sZF9ibGthZGRyID0gZG4tPmRhdGFfYmxrYWRkcjsKPiA+ICAgICAgICAg c2V0X2lub2RlX2ZsYWcoZG4tPmlub2RlLCBGSV9IT1RfREFUQSk7Cj4gPiAgICAgICAgIGYyZnNf b3V0cGxhY2Vfd3JpdGVfZGF0YShkbiwgJmZpbyk7Cj4gPiAtICAgICAgIGYyZnNfZm9saW9fd2Fp dF93cml0ZWJhY2soZm9saW8sIERBVEEsIHRydWUsIHRydWUpOwo+ID4gKyAgICAgICBmMmZzX2Zv bGlvX3dhaXRfd3JpdGViYWNrKGZvbGlvLCB0cnVlLCB0cnVlKTsKPiA+ICAgICAgICAgaWYgKGRp cnR5KSB7Cj4gPiAgICAgICAgICAgICAgICAgaW5vZGVfZGVjX2RpcnR5X3BhZ2VzKGRuLT5pbm9k ZSk7Cj4gPiAgICAgICAgICAgICAgICAgZjJmc19yZW1vdmVfZGlydHlfaW5vZGUoZG4tPmlub2Rl KTsKPiA+IEBAIC0yMDYsOCArMjA2LDggQEAgaW50IGYyZnNfY29udmVydF9pbmxpbmVfZm9saW8o c3RydWN0IGRub2RlX29mX2RhdGEgKmRuLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKQo+ID4gICAgICAg ICBzZXRfaW5vZGVfZmxhZyhkbi0+aW5vZGUsIEZJX0FQUEVORF9XUklURSk7Cj4gPgo+ID4gICAg ICAgICAvKiBjbGVhciBpbmxpbmUgZGF0YSBhbmQgZmxhZyBhZnRlciBkYXRhIHdyaXRlYmFjayAq Lwo+ID4gLSAgICAgICBmMmZzX3RydW5jYXRlX2lubGluZV9pbm9kZShkbi0+aW5vZGUsIGRuLT5p bm9kZV9mb2xpbywgMCk7Cj4gPiAtICAgICAgIGZvbGlvX2NsZWFyX2YyZnNfaW5saW5lKGRuLT5p bm9kZV9mb2xpbyk7Cj4gPiArICAgICAgIGYyZnNfdHJ1bmNhdGVfaW5saW5lX2lub2RlKGRuLT5p bm9kZSwgZG4tPmlub2RlX2VudHJ5LCAwKTsKPiA+ICsgICAgICAgZjJmc19jYWNoZV9jbGVhcl9p bmxpbmUoZG4tPmlub2RlX2VudHJ5KTsKPiA+ICBjbGVhcl9vdXQ6Cj4gPiAgICAgICAgIHN0YXRf ZGVjX2lubGluZV9pbm9kZShkbi0+aW5vZGUpOwo+ID4gICAgICAgICBjbGVhcl9pbm9kZV9mbGFn KGRuLT5pbm9kZSwgRklfSU5MSU5FX0RBVEEpOwo+ID4gQEAgLTIyMCw3ICsyMjAsOCBAQCBpbnQg ZjJmc19jb252ZXJ0X2lubGluZV9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKQo+ID4gICAgICAg ICBzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkgPSBGMkZTX0lfU0IoaW5vZGUpOwo+ID4gICAgICAg ICBzdHJ1Y3QgZG5vZGVfb2ZfZGF0YSBkbjsKPiA+ICAgICAgICAgc3RydWN0IGYyZnNfbG9ja19j b250ZXh0IGxjOwo+ID4gLSAgICAgICBzdHJ1Y3QgZm9saW8gKmlmb2xpbywgKmZvbGlvOwo+ID4g KyAgICAgICBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmllbnRyeTsKPiA+ICsgICAgICAgc3Ry dWN0IGZvbGlvICpmb2xpbzsKPiA+ICAgICAgICAgaW50IGVyciA9IDA7Cj4gPgo+ID4gICAgICAg ICBpZiAoZjJmc19od19pc19yZWFkb25seShzYmkpIHx8IGYyZnNfcmVhZG9ubHkoc2JpLT5zYikp Cj4gPiBAQCAtMjM5LDEzICsyNDAsMTMgQEAgaW50IGYyZnNfY29udmVydF9pbmxpbmVfaW5vZGUo c3RydWN0IGlub2RlICppbm9kZSkKPiA+Cj4gPiAgICAgICAgIGYyZnNfbG9ja19vcChzYmksICZs Yyk7Cj4gPgo+ID4gLSAgICAgICBpZm9saW8gPSBmMmZzX2dldF9pbm9kZV9mb2xpbyhzYmksIGlu b2RlLT5pX2lubyk7Cj4gPiAtICAgICAgIGlmIChJU19FUlIoaWZvbGlvKSkgewo+ID4gLSAgICAg ICAgICAgICAgIGVyciA9IFBUUl9FUlIoaWZvbGlvKTsKPiA+ICsgICAgICAgaWVudHJ5ID0gZjJm c19nZXRfaW5vZGVfY2FjaGUoc2JpLCBpbm9kZS0+aV9pbm8pOwo+ID4gKyAgICAgICBpZiAoSVNf RVJSKGllbnRyeSkpIHsKPiA+ICsgICAgICAgICAgICAgICBlcnIgPSBQVFJfRVJSKGllbnRyeSk7 Cj4gPiAgICAgICAgICAgICAgICAgZ290byBvdXQ7Cj4gPiAgICAgICAgIH0KPiA+Cj4gPiAtICAg ICAgIHNldF9uZXdfZG5vZGUoJmRuLCBpbm9kZSwgaWZvbGlvLCBpZm9saW8sIDApOwo+ID4gKyAg ICAgICBzZXRfbmV3X2Rub2RlKCZkbiwgaW5vZGUsIGllbnRyeSwgaWVudHJ5LCAwKTsKPiA+Cj4g PiAgICAgICAgIGlmIChmMmZzX2hhc19pbmxpbmVfZGF0YShpbm9kZSkpCj4gPiAgICAgICAgICAg ICAgICAgZXJyID0gZjJmc19jb252ZXJ0X2lubGluZV9mb2xpbygmZG4sIGZvbGlvKTsKPiA+IEBA IC0yNjUsMzEgKzI2NiwzMSBAQCBpbnQgZjJmc19jb252ZXJ0X2lubGluZV9pbm9kZShzdHJ1Y3Qg aW5vZGUgKmlub2RlKQo+ID4gIGludCBmMmZzX3dyaXRlX2lubGluZV9kYXRhKHN0cnVjdCBpbm9k ZSAqaW5vZGUsIHN0cnVjdCBmb2xpbyAqZm9saW8pCj4gPiAgewo+ID4gICAgICAgICBzdHJ1Y3Qg ZjJmc19zYl9pbmZvICpzYmkgPSBGMkZTX0lfU0IoaW5vZGUpOwo+ID4gLSAgICAgICBzdHJ1Y3Qg Zm9saW8gKmlmb2xpbzsKPiA+ICsgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICppZW50 cnk7Cj4gPgo+ID4gLSAgICAgICBpZm9saW8gPSBmMmZzX2dldF9pbm9kZV9mb2xpbyhzYmksIGlu b2RlLT5pX2lubyk7Cj4gPiAtICAgICAgIGlmIChJU19FUlIoaWZvbGlvKSkKPiA+IC0gICAgICAg ICAgICAgICByZXR1cm4gUFRSX0VSUihpZm9saW8pOwo+ID4gKyAgICAgICBpZW50cnkgPSBmMmZz X2dldF9pbm9kZV9jYWNoZShzYmksIGlub2RlLT5pX2lubyk7Cj4gPiArICAgICAgIGlmIChJU19F UlIoaWVudHJ5KSkKPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihpZW50cnkpOwo+ ID4KPiA+ICAgICAgICAgaWYgKCFmMmZzX2hhc19pbmxpbmVfZGF0YShpbm9kZSkpIHsKPiA+IC0g ICAgICAgICAgICAgICBmMmZzX2ZvbGlvX3B1dChpZm9saW8sIHRydWUpOwo+ID4gKyAgICAgICAg ICAgICAgIGYyZnNfcHV0X2NhY2hlKGllbnRyeSwgdHJ1ZSk7Cj4gPiAgICAgICAgICAgICAgICAg cmV0dXJuIC1FQUdBSU47Cj4gPiAgICAgICAgIH0KPiA+Cj4gPiAgICAgICAgIGYyZnNfYnVnX29u KEYyRlNfSV9TQihpbm9kZSksIGZvbGlvLT5pbmRleCk7Cj4gPgo+ID4gLSAgICAgICBmMmZzX2Zv bGlvX3dhaXRfd3JpdGViYWNrKGlmb2xpbywgTk9ERSwgdHJ1ZSwgdHJ1ZSk7Cj4gPiAtICAgICAg IG1lbWNweV9mcm9tX2ZvbGlvKGlubGluZV9kYXRhX2FkZHIoaW5vZGUsIGlmb2xpbyksCj4gPiAr ICAgICAgIGYyZnNfY2FjaGVfd2FpdF93cml0ZWJhY2soaWVudHJ5KTsKPiA+ICsgICAgICAgbWVt Y3B5X2Zyb21fZm9saW8oaW5saW5lX2RhdGFfYWRkcihpbm9kZSwgaWVudHJ5KSwKPiA+ICAgICAg ICAgICAgICAgICAgICAgICAgICBmb2xpbywgMCwgTUFYX0lOTElORV9EQVRBKGlub2RlKSk7Cj4g PiAtICAgICAgIGZvbGlvX21hcmtfZGlydHkoaWZvbGlvKTsKPiA+ICsgICAgICAgZjJmc19tYXJr X2NhY2hlX2RpcnR5KGllbnRyeSk7Cj4gPgo+ID4gICAgICAgICBmMmZzX2NsZWFyX3BhZ2VfY2Fj aGVfZGlydHlfdGFnKGZvbGlvKTsKPiA+Cj4gPiAgICAgICAgIHNldF9pbm9kZV9mbGFnKGlub2Rl LCBGSV9BUFBFTkRfV1JJVEUpOwo+ID4gICAgICAgICBzZXRfaW5vZGVfZmxhZyhpbm9kZSwgRklf REFUQV9FWElTVCk7Cj4gPgo+ID4gLSAgICAgICBmb2xpb19jbGVhcl9mMmZzX2lubGluZShpZm9s aW8pOwo+ID4gLSAgICAgICBmMmZzX2ZvbGlvX3B1dChpZm9saW8sIHRydWUpOwo+ID4gKyAgICAg ICBmMmZzX2NhY2hlX2NsZWFyX2lubGluZShpZW50cnkpOwo+ID4gKyAgICAgICBmMmZzX3B1dF9j YWNoZShpZW50cnksIHRydWUpOwo+ID4gICAgICAgICByZXR1cm4gMDsKPiA+ICB9Cj4gPgo+ID4g QEAgLTMwNyw0MCArMzA4LDQxIEBAIGludCBmMmZzX3JlY292ZXJfaW5saW5lX2RhdGEoc3RydWN0 IGlub2RlICppbm9kZSwgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyCj4gPiAgICAgICAg ICAqICAgIHggICAgICAgbyAgLT4gcmVtb3ZlIGRhdGEgYmxvY2tzLCBhbmQgdGhlbiByZWNvdmVy IGlubGluZV9kYXRhCj4gPiAgICAgICAgICAqICAgIHggICAgICAgeCAgLT4gcmVjb3ZlciBkYXRh IGJsb2Nrcwo+ID4gICAgICAgICAgKi8KPiA+IC0gICAgICAgaWYgKElTX0lOT0RFKHNiaSwgY2Fj aGVfZm9saW8oZW50cnkpKSkKPiA+ICsgICAgICAgaWYgKElTX0lOT0RFKEYyRlNfSV9TQihpbm9k ZSksIGVudHJ5KSkKPiA+ICAgICAgICAgICAgICAgICByaSA9ICZDQUNIRURfTk9ERShlbnRyeSkt Pmk7Cj4gPgo+ID4gICAgICAgICBpZiAoZjJmc19oYXNfaW5saW5lX2RhdGEoaW5vZGUpICYmCj4g PiAgICAgICAgICAgICAgICAgICAgICAgICByaSAmJiAocmktPmlfaW5saW5lICYgRjJGU19JTkxJ TkVfREFUQSkpIHsKPiA+IC0gICAgICAgICAgICAgICBzdHJ1Y3QgZm9saW8gKmlmb2xpbzsKPiA+ ICsgICAgICAgICAgICAgICBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmllbnRyeTsKPiA+Cj4g PiAgcHJvY2Vzc19pbmxpbmU6Cj4gPiAtICAgICAgICAgICAgICAgaWZvbGlvID0gZjJmc19nZXRf aW5vZGVfZm9saW8oc2JpLCBpbm9kZS0+aV9pbm8pOwo+ID4gLSAgICAgICAgICAgICAgIGlmIChJ U19FUlIoaWZvbGlvKSkKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJS KGlmb2xpbyk7Cj4gPiArICAgICAgICAgICAgICAgaWVudHJ5ID0gZjJmc19nZXRfaW5vZGVfY2Fj aGUoc2JpLCBpbm9kZS0+aV9pbm8pOwo+ID4gKyAgICAgICAgICAgICAgIGlmIChJU19FUlIoaWVu dHJ5KSkKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKGllbnRyeSk7 Cj4gPgo+ID4gLSAgICAgICAgICAgICAgIGYyZnNfZm9saW9fd2FpdF93cml0ZWJhY2soaWZvbGlv LCBOT0RFLCB0cnVlLCB0cnVlKTsKPiA+ICsgICAgICAgICAgICAgICBmMmZzX2NhY2hlX3dhaXRf d3JpdGViYWNrKGllbnRyeSk7Cj4gPgo+ID4gLSAgICAgICAgICAgICAgIHNyY19hZGRyID0gaW5s aW5lX2RhdGFfYWRkcihpbm9kZSwgY2FjaGVfZm9saW8oZW50cnkpKTsKPiA+IC0gICAgICAgICAg ICAgICBkc3RfYWRkciA9IGlubGluZV9kYXRhX2FkZHIoaW5vZGUsIGlmb2xpbyk7Cj4gPiArICAg ICAgICAgICAgICAgc3JjX2FkZHIgPSBpbmxpbmVfZGF0YV9hZGRyKGlub2RlLCBlbnRyeSk7Cj4g PiArICAgICAgICAgICAgICAgZHN0X2FkZHIgPSBpbmxpbmVfZGF0YV9hZGRyKGlub2RlLCBpZW50 cnkpOwo+ID4gICAgICAgICAgICAgICAgIG1lbWNweShkc3RfYWRkciwgc3JjX2FkZHIsIE1BWF9J TkxJTkVfREFUQShpbm9kZSkpOwo+ID4KPiA+ICAgICAgICAgICAgICAgICBzZXRfaW5vZGVfZmxh Zyhpbm9kZSwgRklfSU5MSU5FX0RBVEEpOwo+ID4gICAgICAgICAgICAgICAgIHNldF9pbm9kZV9m bGFnKGlub2RlLCBGSV9EQVRBX0VYSVNUKTsKPiA+Cj4gPiAtICAgICAgICAgICAgICAgZm9saW9f bWFya19kaXJ0eShpZm9saW8pOwo+ID4gLSAgICAgICAgICAgICAgIGYyZnNfZm9saW9fcHV0KGlm b2xpbywgdHJ1ZSk7Cj4gPiArICAgICAgICAgICAgICAgZjJmc19tYXJrX2NhY2hlX2RpcnR5KGll bnRyeSk7Cj4gPiArICAgICAgICAgICAgICAgZjJmc19wdXRfY2FjaGUoaWVudHJ5LCB0cnVlKTsK PiA+ICAgICAgICAgICAgICAgICByZXR1cm4gMTsKPiA+ICAgICAgICAgfQo+ID4KPiA+ICAgICAg ICAgaWYgKGYyZnNfaGFzX2lubGluZV9kYXRhKGlub2RlKSkgewo+ID4gLSAgICAgICAgICAgICAg IHN0cnVjdCBmb2xpbyAqaWZvbGlvID0gZjJmc19nZXRfaW5vZGVfZm9saW8oc2JpLCBpbm9kZS0+ aV9pbm8pOwo+ID4gLSAgICAgICAgICAgICAgIGlmIChJU19FUlIoaWZvbGlvKSkKPiA+IC0gICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKGlmb2xpbyk7Cj4gPiAtICAgICAgICAg ICAgICAgZjJmc190cnVuY2F0ZV9pbmxpbmVfaW5vZGUoaW5vZGUsIGlmb2xpbywgMCk7Cj4gPiAr ICAgICAgICAgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICppZW50cnkgPSBmMmZzX2dl dF9pbm9kZV9jYWNoZShzYmksIGlub2RlLT5pX2lubyk7Cj4gPiArCj4gPiArICAgICAgICAgICAg ICAgaWYgKElTX0VSUihpZW50cnkpKQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IFBUUl9FUlIoaWVudHJ5KTsKPiA+ICsgICAgICAgICAgICAgICBmMmZzX3RydW5jYXRlX2lubGlu ZV9pbm9kZShpbm9kZSwgaWVudHJ5LCAwKTsKPiA+ICAgICAgICAgICAgICAgICBzdGF0X2RlY19p bmxpbmVfaW5vZGUoaW5vZGUpOwo+ID4gICAgICAgICAgICAgICAgIGNsZWFyX2lub2RlX2ZsYWco aW5vZGUsIEZJX0lOTElORV9EQVRBKTsKPiA+IC0gICAgICAgICAgICAgICBmMmZzX2ZvbGlvX3B1 dChpZm9saW8sIHRydWUpOwo+ID4gKyAgICAgICAgICAgICAgIGYyZnNfcHV0X2NhY2hlKGllbnRy eSwgdHJ1ZSk7Cj4gPiAgICAgICAgIH0gZWxzZSBpZiAocmkgJiYgKHJpLT5pX2lubGluZSAmIEYy RlNfSU5MSU5FX0RBVEEpKSB7Cj4gPiAgICAgICAgICAgICAgICAgaW50IHJldDsKPiA+Cj4gPiBA QCAtMzU1LDUwICszNTcsNTAgQEAgaW50IGYyZnNfcmVjb3Zlcl9pbmxpbmVfZGF0YShzdHJ1Y3Qg aW5vZGUgKmlub2RlLCBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHIKPiA+Cj4gPiAgc3Ry dWN0IGYyZnNfZGlyX2VudHJ5ICpmMmZzX2ZpbmRfaW5faW5saW5lX2RpcihzdHJ1Y3QgaW5vZGUg KmRpciwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz dHJ1Y3QgZjJmc19maWxlbmFtZSAqZm5hbWUsCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IGZvbGlvICoqcmVzX2ZvbGlvLAo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKipkZW50cnlfYmxvY2ssCj4gPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1c2VfaGFzaCkKPiA+ICB7 Cj4gPiAgICAgICAgIHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSA9IEYyRlNfU0IoZGlyLT5pX3Ni KTsKPiA+ICAgICAgICAgc3RydWN0IGYyZnNfZGlyX2VudHJ5ICpkZTsKPiA+ICAgICAgICAgc3Ry dWN0IGYyZnNfZGVudHJ5X3B0ciBkOwo+ID4gLSAgICAgICBzdHJ1Y3QgZm9saW8gKmlmb2xpbzsK PiA+ICsgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICppZW50cnk7Cj4gPiAgICAgICAg IHZvaWQgKmlubGluZV9kZW50cnk7Cj4gPgo+ID4gLSAgICAgICBpZm9saW8gPSBmMmZzX2dldF9p bm9kZV9mb2xpbyhzYmksIGRpci0+aV9pbm8pOwo+ID4gLSAgICAgICBpZiAoSVNfRVJSKGlmb2xp bykpIHsKPiA+IC0gICAgICAgICAgICAgICAqcmVzX2ZvbGlvID0gaWZvbGlvOwo+ID4gKyAgICAg ICBpZW50cnkgPSBmMmZzX2dldF9pbm9kZV9jYWNoZShzYmksIGRpci0+aV9pbm8pOwo+ID4gKyAg ICAgICBpZiAoSVNfRVJSKGllbnRyeSkpIHsKPiA+ICsgICAgICAgICAgICAgICAqZGVudHJ5X2Js b2NrID0gaWVudHJ5Owo+ID4gICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwo+ID4gICAgICAg ICB9Cj4gPgo+ID4gLSAgICAgICBpbmxpbmVfZGVudHJ5ID0gaW5saW5lX2RhdGFfYWRkcihkaXIs IGlmb2xpbyk7Cj4gPiArICAgICAgIGlubGluZV9kZW50cnkgPSBpbmxpbmVfZGF0YV9hZGRyKGRp ciwgaWVudHJ5KTsKPiA+Cj4gPiAgICAgICAgIG1ha2VfZGVudHJ5X3B0cl9pbmxpbmUoZGlyLCAm ZCwgaW5saW5lX2RlbnRyeSk7Cj4gPiAgICAgICAgIGRlID0gZjJmc19maW5kX3RhcmdldF9kZW50 cnkoJmQsIGZuYW1lLCBOVUxMLCB1c2VfaGFzaCk7Cj4gPiAtICAgICAgIGZvbGlvX3VubG9jayhp Zm9saW8pOwo+ID4gKyAgICAgICBmMmZzX3VubG9ja19jYWNoZShpZW50cnkpOwo+ID4gICAgICAg ICBpZiAoSVNfRVJSKGRlKSkgewo+ID4gLSAgICAgICAgICAgICAgICpyZXNfZm9saW8gPSBFUlJf Q0FTVChkZSk7Cj4gPiArICAgICAgICAgICAgICAgKmRlbnRyeV9ibG9jayA9IEVSUl9DQVNUKGRl KTsKPiA+ICAgICAgICAgICAgICAgICBkZSA9IE5VTEw7Cj4gPiAgICAgICAgIH0KPiA+ICAgICAg ICAgaWYgKGRlKQo+ID4gLSAgICAgICAgICAgICAgICpyZXNfZm9saW8gPSBpZm9saW87Cj4gPiAr ICAgICAgICAgICAgICAgKmRlbnRyeV9ibG9jayA9IGYyZnNfY2FjaGVfbWFrZV9kZW50cnlfYmxv Y2soaWVudHJ5KTsKPiA+ICAgICAgICAgZWxzZQo+ID4gLSAgICAgICAgICAgICAgIGYyZnNfZm9s aW9fcHV0KGlmb2xpbywgZmFsc2UpOwo+ID4gKyAgICAgICAgICAgICAgIGYyZnNfcHV0X2NhY2hl KGllbnRyeSwgZmFsc2UpOwo+ID4KPiA+ICAgICAgICAgcmV0dXJuIGRlOwo+ID4gIH0KPiA+Cj4g PiAgaW50IGYyZnNfbWFrZV9lbXB0eV9pbmxpbmVfZGlyKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0 cnVjdCBpbm9kZSAqcGFyZW50LAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZm9saW8gKmlmb2xpbykKPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sg KmllbnRyeSkKPiA+ICB7Cj4gPiAgICAgICAgIHN0cnVjdCBmMmZzX2RlbnRyeV9wdHIgZDsKPiA+ ICAgICAgICAgdm9pZCAqaW5saW5lX2RlbnRyeTsKPiA+Cj4gPiAtICAgICAgIGlubGluZV9kZW50 cnkgPSBpbmxpbmVfZGF0YV9hZGRyKGlub2RlLCBpZm9saW8pOwo+ID4gKyAgICAgICBpbmxpbmVf ZGVudHJ5ID0gaW5saW5lX2RhdGFfYWRkcihpbm9kZSwgaWVudHJ5KTsKPiA+Cj4gPiAgICAgICAg IG1ha2VfZGVudHJ5X3B0cl9pbmxpbmUoaW5vZGUsICZkLCBpbmxpbmVfZGVudHJ5KTsKPiA+ICAg ICAgICAgZjJmc19kb19tYWtlX2VtcHR5X2Rpcihpbm9kZSwgcGFyZW50LCAmZCk7Cj4gPgo+ID4g LSAgICAgICBmb2xpb19tYXJrX2RpcnR5KGlmb2xpbyk7Cj4gPiArICAgICAgIGYyZnNfbWFya19j YWNoZV9kaXJ0eShpZW50cnkpOwo+ID4KPiA+ICAgICAgICAgLyogdXBkYXRlIGlfc2l6ZSB0byBN QVhfSU5MSU5FX0RBVEEgKi8KPiA+ICAgICAgICAgaWYgKGlfc2l6ZV9yZWFkKGlub2RlKSA8IE1B WF9JTkxJTkVfREFUQShpbm9kZSkpCj4gPiBAQCAtNDEwLDggKzQxMiw5IEBAIGludCBmMmZzX21h a2VfZW1wdHlfaW5saW5lX2RpcihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgaW5vZGUgKnBh cmVudCwKPiA+ICAgKiBOT1RFOiBpcGFnZSBpcyBncmFiYmVkIGJ5IGNhbGxlciwgYnV0IGlmIGFu eSBlcnJvciBvY2N1cnMsIHdlIHNob3VsZAo+ID4gICAqIHJlbGVhc2UgaXBhZ2UgaW4gdGhpcyBm dW5jdGlvbi4KPiA+ICAgKi8KPiA+IC1zdGF0aWMgaW50IGYyZnNfbW92ZV9pbmxpbmVfZGlyZW50 cyhzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGZvbGlvICppZm9saW8sCj4gPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmlubGlu ZV9kZW50cnkpCj4gPiArc3RhdGljIGludCBmMmZzX21vdmVfaW5saW5lX2RpcmVudHMoc3RydWN0 IGlub2RlICpkaXIsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZjJmc19jYWNo ZWRfYmxvY2sgKmllbnRyeSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmlubGlu ZV9kZW50cnkpCj4gPiAgewo+ID4gICAgICAgICBzdHJ1Y3QgZm9saW8gKmZvbGlvOwo+ID4gICAg ICAgICBzdHJ1Y3QgZG5vZGVfb2ZfZGF0YSBkbjsKPiA+IEBAIC00MjEsMTEgKzQyNCwxMSBAQCBz dGF0aWMgaW50IGYyZnNfbW92ZV9pbmxpbmVfZGlyZW50cyhzdHJ1Y3QgaW5vZGUgKmRpciwgc3Ry dWN0IGZvbGlvICppZm9saW8sCj4gPgo+ID4gICAgICAgICBmb2xpbyA9IGYyZnNfZ3JhYl9jYWNo ZV9mb2xpbyhkaXItPmlfbWFwcGluZywgMCwgdHJ1ZSk7Cj4gPiAgICAgICAgIGlmIChJU19FUlIo Zm9saW8pKSB7Cj4gPiAtICAgICAgICAgICAgICAgZjJmc19mb2xpb19wdXQoaWZvbGlvLCB0cnVl KTsKPiA+ICsgICAgICAgICAgICAgICBmMmZzX3B1dF9jYWNoZShpZW50cnksIHRydWUpOwo+ID4g ICAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKGZvbGlvKTsKPiA+ICAgICAgICAgfQo+ID4K PiA+IC0gICAgICAgc2V0X25ld19kbm9kZSgmZG4sIGRpciwgaWZvbGlvLCBOVUxMLCAwKTsKPiA+ ICsgICAgICAgc2V0X25ld19kbm9kZSgmZG4sIGRpciwgaWVudHJ5LCBOVUxMLCAwKTsKPiA+ICAg ICAgICAgZXJyID0gZjJmc19yZXNlcnZlX2Jsb2NrKCZkbiwgMCk7Cj4gPiAgICAgICAgIGlmIChl cnIpCj4gPiAgICAgICAgICAgICAgICAgZ290byBvdXQ7Cj4gPiBAQCAtNDQxLDcgKzQ0NCw3IEBA IHN0YXRpYyBpbnQgZjJmc19tb3ZlX2lubGluZV9kaXJlbnRzKHN0cnVjdCBpbm9kZSAqZGlyLCBz dHJ1Y3QgZm9saW8gKmlmb2xpbywKPiA+ICAgICAgICAgICAgICAgICBnb3RvIG91dDsKPiA+ICAg ICAgICAgfQo+ID4KPiA+IC0gICAgICAgZjJmc19mb2xpb193YWl0X3dyaXRlYmFjayhmb2xpbywg REFUQSwgdHJ1ZSwgdHJ1ZSk7Cj4gPiArICAgICAgIGYyZnNfZm9saW9fd2FpdF93cml0ZWJhY2so Zm9saW8sIHRydWUsIHRydWUpOwo+ID4KPiA+ICAgICAgICAgZGVudHJ5X2JsayA9IGZvbGlvX2Fk ZHJlc3MoZm9saW8pOwo+ID4KPiA+IEBAIC00NjQsNyArNDY3LDcgQEAgc3RhdGljIGludCBmMmZz X21vdmVfaW5saW5lX2RpcmVudHMoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBmb2xpbyAqaWZv bGlvLAo+ID4gICAgICAgICBmb2xpb19tYXJrX2RpcnR5KGZvbGlvKTsKPiA+Cj4gPiAgICAgICAg IC8qIGNsZWFyIGlubGluZSBkaXIgYW5kIGZsYWcgYWZ0ZXIgZGF0YSB3cml0ZWJhY2sgKi8KPiA+ IC0gICAgICAgZjJmc190cnVuY2F0ZV9pbmxpbmVfaW5vZGUoZGlyLCBpZm9saW8sIDApOwo+ID4g KyAgICAgICBmMmZzX3RydW5jYXRlX2lubGluZV9pbm9kZShkaXIsIGllbnRyeSwgMCk7Cj4gPgo+ ID4gICAgICAgICBzdGF0X2RlY19pbmxpbmVfZGlyKGRpcik7Cj4gPiAgICAgICAgIGNsZWFyX2lu b2RlX2ZsYWcoZGlyLCBGSV9JTkxJTkVfREVOVFJZKTsKPiA+IEBAIC01NDQsOCArNTQ3LDggQEAg c3RhdGljIGludCBmMmZzX2FkZF9pbmxpbmVfZW50cmllcyhzdHJ1Y3QgaW5vZGUgKmRpciwgdm9p ZCAqaW5saW5lX2RlbnRyeSkKPiA+ICAgICAgICAgcmV0dXJuIGVycjsKPiA+ICB9Cj4gPgo+ID4g LXN0YXRpYyBpbnQgZjJmc19tb3ZlX3JlaGFzaGVkX2RpcmVudHMoc3RydWN0IGlub2RlICpkaXIs IHN0cnVjdCBmb2xpbyAqaWZvbGlvLAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICppbmxpbmVfZGVudHJ5KQo+ID4gK3N0YXRp YyBpbnQgZjJmc19tb3ZlX3JlaGFzaGVkX2RpcmVudHMoc3RydWN0IGlub2RlICpkaXIsCj4gPiAr ICAgICAgICAgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICppZW50cnksIHZvaWQgKmlu bGluZV9kZW50cnkpCj4gPiAgewo+ID4gICAgICAgICB2b2lkICpiYWNrdXBfZGVudHJ5Owo+ID4g ICAgICAgICBpbnQgZXJyOwo+ID4gQEAgLTU1MywyMCArNTU2LDIwIEBAIHN0YXRpYyBpbnQgZjJm c19tb3ZlX3JlaGFzaGVkX2RpcmVudHMoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBmb2xpbyAq aWZvbGlvLAo+ID4gICAgICAgICBiYWNrdXBfZGVudHJ5ID0gZjJmc19rbWFsbG9jKEYyRlNfSV9T QihkaXIpLAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVhfSU5MSU5FX0RB VEEoZGlyKSwgR0ZQX0YyRlNfWkVSTyk7Cj4gPiAgICAgICAgIGlmICghYmFja3VwX2RlbnRyeSkg ewo+ID4gLSAgICAgICAgICAgICAgIGYyZnNfZm9saW9fcHV0KGlmb2xpbywgdHJ1ZSk7Cj4gPiAr ICAgICAgICAgICAgICAgZjJmc19wdXRfY2FjaGUoaWVudHJ5LCB0cnVlKTsKPiA+ICAgICAgICAg ICAgICAgICByZXR1cm4gLUVOT01FTTsKPiA+ICAgICAgICAgfQo+ID4KPiA+ICAgICAgICAgbWVt Y3B5KGJhY2t1cF9kZW50cnksIGlubGluZV9kZW50cnksIE1BWF9JTkxJTkVfREFUQShkaXIpKTsK PiA+IC0gICAgICAgZjJmc190cnVuY2F0ZV9pbmxpbmVfaW5vZGUoZGlyLCBpZm9saW8sIDApOwo+ ID4gKyAgICAgICBmMmZzX3RydW5jYXRlX2lubGluZV9pbm9kZShkaXIsIGllbnRyeSwgMCk7Cj4g Pgo+ID4gLSAgICAgICBmb2xpb191bmxvY2soaWZvbGlvKTsKPiA+ICsgICAgICAgZjJmc191bmxv Y2tfY2FjaGUoaWVudHJ5KTsKPiA+Cj4gPiAgICAgICAgIGVyciA9IGYyZnNfYWRkX2lubGluZV9l bnRyaWVzKGRpciwgYmFja3VwX2RlbnRyeSk7Cj4gPiAgICAgICAgIGlmIChlcnIpCj4gPiAgICAg ICAgICAgICAgICAgZ290byByZWNvdmVyOwo+ID4KPiA+IC0gICAgICAgZm9saW9fbG9jayhpZm9s aW8pOwo+ID4gKyAgICAgICBmMmZzX2xvY2tfY2FjaGUoaWVudHJ5KTsKPiA+Cj4gPiAgICAgICAg IHN0YXRfZGVjX2lubGluZV9kaXIoZGlyKTsKPiA+ICAgICAgICAgY2xlYXJfaW5vZGVfZmxhZyhk aXIsIEZJX0lOTElORV9ERU5UUlkpOwo+ID4gQEAgLTU4MiwzMSArNTg1LDMxIEBAIHN0YXRpYyBp bnQgZjJmc19tb3ZlX3JlaGFzaGVkX2RpcmVudHMoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBm b2xpbyAqaWZvbGlvLAo+ID4gICAgICAgICBrZnJlZShiYWNrdXBfZGVudHJ5KTsKPiA+ICAgICAg ICAgcmV0dXJuIDA7Cj4gPiAgcmVjb3ZlcjoKPiA+IC0gICAgICAgZm9saW9fbG9jayhpZm9saW8p Owo+ID4gLSAgICAgICBmMmZzX2ZvbGlvX3dhaXRfd3JpdGViYWNrKGlmb2xpbywgTk9ERSwgdHJ1 ZSwgdHJ1ZSk7Cj4gPiArICAgICAgIGYyZnNfbG9ja19jYWNoZShpZW50cnkpOwo+ID4gKyAgICAg ICBmMmZzX2NhY2hlX3dhaXRfd3JpdGViYWNrKGllbnRyeSk7Cj4gPiAgICAgICAgIG1lbWNweShp bmxpbmVfZGVudHJ5LCBiYWNrdXBfZGVudHJ5LCBNQVhfSU5MSU5FX0RBVEEoZGlyKSk7Cj4gPiAg ICAgICAgIGYyZnNfaV9kZXB0aF93cml0ZShkaXIsIDApOwo+ID4gICAgICAgICBmMmZzX2lfc2l6 ZV93cml0ZShkaXIsIE1BWF9JTkxJTkVfREFUQShkaXIpKTsKPiA+IC0gICAgICAgZm9saW9fbWFy a19kaXJ0eShpZm9saW8pOwo+ID4gLSAgICAgICBmMmZzX2ZvbGlvX3B1dChpZm9saW8sIHRydWUp Owo+ID4gKyAgICAgICBmMmZzX21hcmtfY2FjaGVfZGlydHkoaWVudHJ5KTsKPiA+ICsgICAgICAg ZjJmc19wdXRfY2FjaGUoaWVudHJ5LCB0cnVlKTsKPiA+Cj4gPiAgICAgICAgIGtmcmVlKGJhY2t1 cF9kZW50cnkpOwo+ID4gICAgICAgICByZXR1cm4gZXJyOwo+ID4gIH0KPiA+Cj4gPiAtc3RhdGlj IGludCBkb19jb252ZXJ0X2lubGluZV9kaXIoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBmb2xp byAqaWZvbGlvLAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB2b2lkICppbmxpbmVfZGVudHJ5KQo+ID4gK3N0YXRpYyBpbnQgZG9fY29u dmVydF9pbmxpbmVfZGlyKHN0cnVjdCBpbm9kZSAqZGlyLAo+ID4gKyAgICAgICAgICAgICAgIHN0 cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqaWVudHJ5LCB2b2lkICppbmxpbmVfZGVudHJ5KQo+ID4g IHsKPiA+ICAgICAgICAgaWYgKCFGMkZTX0koZGlyKS0+aV9kaXJfbGV2ZWwpCj4gPiAtICAgICAg ICAgICAgICAgcmV0dXJuIGYyZnNfbW92ZV9pbmxpbmVfZGlyZW50cyhkaXIsIGlmb2xpbywgaW5s aW5lX2RlbnRyeSk7Cj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIGYyZnNfbW92ZV9pbmxpbmVf ZGlyZW50cyhkaXIsIGllbnRyeSwgaW5saW5lX2RlbnRyeSk7Cj4gPiAgICAgICAgIGVsc2UKPiA+ IC0gICAgICAgICAgICAgICByZXR1cm4gZjJmc19tb3ZlX3JlaGFzaGVkX2RpcmVudHMoZGlyLCBp Zm9saW8sIGlubGluZV9kZW50cnkpOwo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBmMmZzX21v dmVfcmVoYXNoZWRfZGlyZW50cyhkaXIsIGllbnRyeSwgaW5saW5lX2RlbnRyeSk7Cj4gPiAgfQo+ ID4KPiA+ICBpbnQgZjJmc190cnlfY29udmVydF9pbmxpbmVfZGlyKHN0cnVjdCBpbm9kZSAqZGly LCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCj4gPiAgewo+ID4gICAgICAgICBzdHJ1Y3QgZjJmc19z Yl9pbmZvICpzYmkgPSBGMkZTX0lfU0IoZGlyKTsKPiA+IC0gICAgICAgc3RydWN0IGZvbGlvICpp Zm9saW87Cj4gPiArICAgICAgIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqaWVudHJ5Owo+ID4g ICAgICAgICBzdHJ1Y3QgZjJmc19maWxlbmFtZSBmbmFtZTsKPiA+ICAgICAgICAgc3RydWN0IGYy ZnNfbG9ja19jb250ZXh0IGxjOwo+ID4gICAgICAgICB2b2lkICppbmxpbmVfZGVudHJ5ID0gTlVM TDsKPiA+IEBAIC02MjEsMjIgKzYyNCwyMiBAQCBpbnQgZjJmc190cnlfY29udmVydF9pbmxpbmVf ZGlyKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCj4gPiAgICAgICAg IGlmIChlcnIpCj4gPiAgICAgICAgICAgICAgICAgZ290byBvdXQ7Cj4gPgo+ID4gLSAgICAgICBp Zm9saW8gPSBmMmZzX2dldF9pbm9kZV9mb2xpbyhzYmksIGRpci0+aV9pbm8pOwo+ID4gLSAgICAg ICBpZiAoSVNfRVJSKGlmb2xpbykpIHsKPiA+IC0gICAgICAgICAgICAgICBlcnIgPSBQVFJfRVJS KGlmb2xpbyk7Cj4gPiArICAgICAgIGllbnRyeSA9IGYyZnNfZ2V0X2lub2RlX2NhY2hlKHNiaSwg ZGlyLT5pX2lubyk7Cj4gPiArICAgICAgIGlmIChJU19FUlIoaWVudHJ5KSkgewo+ID4gKyAgICAg ICAgICAgICAgIGVyciA9IFBUUl9FUlIoaWVudHJ5KTsKPiA+ICAgICAgICAgICAgICAgICBnb3Rv IG91dF9mbmFtZTsKPiA+ICAgICAgICAgfQo+ID4KPiA+IC0gICAgICAgaWYgKGYyZnNfaGFzX2Vu b3VnaF9yb29tKGRpciwgaWZvbGlvLCAmZm5hbWUpKSB7Cj4gPiAtICAgICAgICAgICAgICAgZjJm c19mb2xpb19wdXQoaWZvbGlvLCB0cnVlKTsKPiA+ICsgICAgICAgaWYgKGYyZnNfaGFzX2Vub3Vn aF9yb29tKGRpciwgaWVudHJ5LCAmZm5hbWUpKSB7Cj4gPiArICAgICAgICAgICAgICAgZjJmc19w dXRfY2FjaGUoaWVudHJ5LCB0cnVlKTsKPiA+ICAgICAgICAgICAgICAgICBnb3RvIG91dF9mbmFt ZTsKPiA+ICAgICAgICAgfQo+ID4KPiA+IC0gICAgICAgaW5saW5lX2RlbnRyeSA9IGlubGluZV9k YXRhX2FkZHIoZGlyLCBpZm9saW8pOwo+ID4gKyAgICAgICBpbmxpbmVfZGVudHJ5ID0gaW5saW5l X2RhdGFfYWRkcihkaXIsIGllbnRyeSk7Cj4gPgo+ID4gLSAgICAgICBlcnIgPSBkb19jb252ZXJ0 X2lubGluZV9kaXIoZGlyLCBpZm9saW8sIGlubGluZV9kZW50cnkpOwo+ID4gKyAgICAgICBlcnIg PSBkb19jb252ZXJ0X2lubGluZV9kaXIoZGlyLCBpZW50cnksIGlubGluZV9kZW50cnkpOwo+ID4g ICAgICAgICBpZiAoIWVycikKPiA+IC0gICAgICAgICAgICAgICBmMmZzX2ZvbGlvX3B1dChpZm9s aW8sIHRydWUpOwo+ID4gKyAgICAgICAgICAgICAgIGYyZnNfcHV0X2NhY2hlKGllbnRyeSwgdHJ1 ZSk7Cj4gPiAgb3V0X2ZuYW1lOgo+ID4gICAgICAgICBmMmZzX2ZyZWVfZmlsZW5hbWUoJmZuYW1l KTsKPiA+ICBvdXQ6Cj4gPiBAQCAtNjQ4LDI0ICs2NTEsMjQgQEAgaW50IGYyZnNfYWRkX2lubGlu ZV9lbnRyeShzdHJ1Y3QgaW5vZGUgKmRpciwgY29uc3Qgc3RydWN0IGYyZnNfZmlsZW5hbWUgKmZu YW1lLAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlLCBu aWRfdCBpbm8sIHVtb2RlX3QgbW9kZSkKPiA+ICB7Cj4gPiAgICAgICAgIHN0cnVjdCBmMmZzX3Ni X2luZm8gKnNiaSA9IEYyRlNfSV9TQihkaXIpOwo+ID4gLSAgICAgICBzdHJ1Y3QgZm9saW8gKmlm b2xpbzsKPiA+ICsgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICppZW50cnk7Cj4gPiAg ICAgICAgIHVuc2lnbmVkIGludCBiaXRfcG9zOwo+ID4gICAgICAgICB2b2lkICppbmxpbmVfZGVu dHJ5ID0gTlVMTDsKPiA+ICAgICAgICAgc3RydWN0IGYyZnNfZGVudHJ5X3B0ciBkOwo+ID4gICAg ICAgICBpbnQgc2xvdHMgPSBHRVRfREVOVFJZX1NMT1RTKGZuYW1lLT5kaXNrX25hbWUubGVuKTsK PiA+IC0gICAgICAgc3RydWN0IGZvbGlvICpmb2xpbyA9IE5VTEw7Cj4gPiArICAgICAgIHN0cnVj dCBmMmZzX2NhY2hlZF9ibG9jayAqbmVudHJ5ID0gTlVMTDsKPiA+ICAgICAgICAgaW50IGVyciA9 IDA7Cj4gPgo+ID4gLSAgICAgICBpZm9saW8gPSBmMmZzX2dldF9pbm9kZV9mb2xpbyhzYmksIGRp ci0+aV9pbm8pOwo+ID4gLSAgICAgICBpZiAoSVNfRVJSKGlmb2xpbykpCj4gPiAtICAgICAgICAg ICAgICAgcmV0dXJuIFBUUl9FUlIoaWZvbGlvKTsKPiA+ICsgICAgICAgaWVudHJ5ID0gZjJmc19n ZXRfaW5vZGVfY2FjaGUoc2JpLCBkaXItPmlfaW5vKTsKPiA+ICsgICAgICAgaWYgKElTX0VSUihp ZW50cnkpKQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKGllbnRyeSk7Cj4gPgo+ ID4gLSAgICAgICBpbmxpbmVfZGVudHJ5ID0gaW5saW5lX2RhdGFfYWRkcihkaXIsIGlmb2xpbyk7 Cj4gPiArICAgICAgIGlubGluZV9kZW50cnkgPSBpbmxpbmVfZGF0YV9hZGRyKGRpciwgaWVudHJ5 KTsKPiA+ICAgICAgICAgbWFrZV9kZW50cnlfcHRyX2lubGluZShkaXIsICZkLCBpbmxpbmVfZGVu dHJ5KTsKPiA+Cj4gPiAgICAgICAgIGJpdF9wb3MgPSBmMmZzX3Jvb21fZm9yX2ZpbGVuYW1lKGQu Yml0bWFwLCBzbG90cywgZC5tYXgpOwo+ID4gICAgICAgICBpZiAoYml0X3BvcyA+PSBkLm1heCkg ewo+ID4gLSAgICAgICAgICAgICAgIGVyciA9IGRvX2NvbnZlcnRfaW5saW5lX2RpcihkaXIsIGlm b2xpbywgaW5saW5lX2RlbnRyeSk7Cj4gPiArICAgICAgICAgICAgICAgZXJyID0gZG9fY29udmVy dF9pbmxpbmVfZGlyKGRpciwgaWVudHJ5LCBpbmxpbmVfZGVudHJ5KTsKPiA+ICAgICAgICAgICAg ICAgICBpZiAoZXJyKQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKPiA+ ICAgICAgICAgICAgICAgICBlcnIgPSAtRUFHQUlOOwo+ID4gQEAgLTY3NSwxOSArNjc4LDE5IEBA IGludCBmMmZzX2FkZF9pbmxpbmVfZW50cnkoc3RydWN0IGlub2RlICpkaXIsIGNvbnN0IHN0cnVj dCBmMmZzX2ZpbGVuYW1lICpmbmFtZSwKPiA+ICAgICAgICAgaWYgKGlub2RlKSB7Cj4gPiAgICAg ICAgICAgICAgICAgZjJmc19kb3duX3dyaXRlX25lc3RlZCgmRjJGU19JKGlub2RlKS0+aV9zZW0s Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSU5H TEVfREVQVEhfTkVTVElORyk7Cj4gPiAtICAgICAgICAgICAgICAgZm9saW8gPSBmMmZzX2luaXRf aW5vZGVfbWV0YWRhdGEoaW5vZGUsIGRpciwgZm5hbWUsIGlmb2xpbyk7Cj4gPiAtICAgICAgICAg ICAgICAgaWYgKElTX0VSUihmb2xpbykpIHsKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGVy ciA9IFBUUl9FUlIoZm9saW8pOwo+ID4gKyAgICAgICAgICAgICAgIG5lbnRyeSA9IGYyZnNfaW5p dF9pbm9kZV9tZXRhZGF0YShpbm9kZSwgZGlyLCBmbmFtZSwgaWVudHJ5KTsKPiA+ICsgICAgICAg ICAgICAgICBpZiAoSVNfRVJSKG5lbnRyeSkpIHsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAg IGVyciA9IFBUUl9FUlIobmVudHJ5KTsKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8g ZmFpbDsKPiA+ICAgICAgICAgICAgICAgICB9Cj4gPiAgICAgICAgIH0KPiA+Cj4gPiAtICAgICAg IGYyZnNfZm9saW9fd2FpdF93cml0ZWJhY2soaWZvbGlvLCBOT0RFLCB0cnVlLCB0cnVlKTsKPiA+ ICsgICAgICAgZjJmc19jYWNoZV93YWl0X3dyaXRlYmFjayhpZW50cnkpOwo+ID4KPiA+ICAgICAg ICAgZjJmc191cGRhdGVfZGVudHJ5KGlubywgbW9kZSwgJmQsICZmbmFtZS0+ZGlza19uYW1lLCBm bmFtZS0+aGFzaCwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpdF9wb3MpOwo+ID4K PiA+IC0gICAgICAgZm9saW9fbWFya19kaXJ0eShpZm9saW8pOwo+ID4gKyAgICAgICBmMmZzX21h cmtfY2FjaGVfZGlydHkoaWVudHJ5KTsKPiA+Cj4gPiAgICAgICAgIC8qIHdlIGRvbid0IG5lZWQg dG8gbWFya19pbm9kZV9kaXJ0eSBub3cgKi8KPiA+ICAgICAgICAgaWYgKGlub2RlKSB7Cj4gPiBA QCAtNjk1LDkgKzY5OCw5IEBAIGludCBmMmZzX2FkZF9pbmxpbmVfZW50cnkoc3RydWN0IGlub2Rl ICpkaXIsIGNvbnN0IHN0cnVjdCBmMmZzX2ZpbGVuYW1lICpmbmFtZSwKPiA+Cj4gPiAgICAgICAg ICAgICAgICAgLyogc3luY2hyb25pemUgaW5vZGUgcGFnZSdzIGRhdGEgZnJvbSBpbm9kZSBjYWNo ZSAqLwo+ID4gICAgICAgICAgICAgICAgIGlmIChpc19pbm9kZV9mbGFnX3NldChpbm9kZSwgRklf TkVXX0lOT0RFKSkKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGYyZnNfdXBkYXRlX2lub2Rl KGlub2RlLCBmb2xpbyk7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBmMmZzX3VwZGF0ZV9p bm9kZShpbm9kZSwgbmVudHJ5KTsKPiA+Cj4gPiAtICAgICAgICAgICAgICAgZjJmc19mb2xpb19w dXQoZm9saW8sIHRydWUpOwo+ID4gKyAgICAgICAgICAgICAgIGYyZnNfcHV0X2NhY2hlKG5lbnRy eSwgdHJ1ZSk7Cj4gPiAgICAgICAgIH0KPiA+Cj4gPiAgICAgICAgIGYyZnNfdXBkYXRlX3BhcmVu dF9tZXRhZGF0YShkaXIsIGlub2RlLCAwKTsKPiA+IEBAIC03MDUsMTIgKzcwOCwxMiBAQCBpbnQg ZjJmc19hZGRfaW5saW5lX2VudHJ5KHN0cnVjdCBpbm9kZSAqZGlyLCBjb25zdCBzdHJ1Y3QgZjJm c19maWxlbmFtZSAqZm5hbWUsCj4gPiAgICAgICAgIGlmIChpbm9kZSkKPiA+ICAgICAgICAgICAg ICAgICBmMmZzX3VwX3dyaXRlKCZGMkZTX0koaW5vZGUpLT5pX3NlbSk7Cj4gPiAgb3V0Ogo+ID4g LSAgICAgICBmMmZzX2ZvbGlvX3B1dChpZm9saW8sIHRydWUpOwo+ID4gKyAgICAgICBmMmZzX3B1 dF9jYWNoZShpZW50cnksIHRydWUpOwo+ID4gICAgICAgICByZXR1cm4gZXJyOwo+ID4gIH0KPiA+ Cj4gPiAgdm9pZCBmMmZzX2RlbGV0ZV9pbmxpbmVfZW50cnkoc3RydWN0IGYyZnNfZGlyX2VudHJ5 ICpkZW50cnksCj4gPiAtICAgICAgICAgICAgICAgc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0 IGlub2RlICpkaXIsIHN0cnVjdCBpbm9kZSAqaW5vZGUpCj4gPiArICAgICAgICAgICAgICAgc3Ry dWN0IGYyZnNfY2FjaGVkX2Jsb2NrICppZW50cnksIHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3Qg aW5vZGUgKmlub2RlKQo+ID4gIHsKPiA+ICAgICAgICAgc3RydWN0IGYyZnNfZGVudHJ5X3B0ciBk Owo+ID4gICAgICAgICB2b2lkICppbmxpbmVfZGVudHJ5Owo+ID4gQEAgLTcxOCwxOCArNzIxLDE4 IEBAIHZvaWQgZjJmc19kZWxldGVfaW5saW5lX2VudHJ5KHN0cnVjdCBmMmZzX2Rpcl9lbnRyeSAq ZGVudHJ5LAo+ID4gICAgICAgICB1bnNpZ25lZCBpbnQgYml0X3BvczsKPiA+ICAgICAgICAgaW50 IGk7Cj4gPgo+ID4gLSAgICAgICBmb2xpb19sb2NrKGZvbGlvKTsKPiA+IC0gICAgICAgZjJmc19m b2xpb193YWl0X3dyaXRlYmFjayhmb2xpbywgTk9ERSwgdHJ1ZSwgdHJ1ZSk7Cj4gPiArICAgICAg IGYyZnNfbG9ja19jYWNoZShpZW50cnkpOwo+ID4gKyAgICAgICBmMmZzX2NhY2hlX3dhaXRfd3Jp dGViYWNrKGllbnRyeSk7Cj4gPgo+ID4gLSAgICAgICBpbmxpbmVfZGVudHJ5ID0gaW5saW5lX2Rh dGFfYWRkcihkaXIsIGZvbGlvKTsKPiA+ICsgICAgICAgaW5saW5lX2RlbnRyeSA9IGlubGluZV9k YXRhX2FkZHIoZGlyLCBpZW50cnkpOwo+ID4gICAgICAgICBtYWtlX2RlbnRyeV9wdHJfaW5saW5l KGRpciwgJmQsIGlubGluZV9kZW50cnkpOwo+ID4KPiA+ICAgICAgICAgYml0X3BvcyA9IGRlbnRy eSAtIGQuZGVudHJ5Owo+ID4gICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2xvdHM7IGkrKykKPiA+ ICAgICAgICAgICAgICAgICBfX2NsZWFyX2JpdF9sZShiaXRfcG9zICsgaSwgZC5iaXRtYXApOwo+ ID4KPiA+IC0gICAgICAgZm9saW9fbWFya19kaXJ0eShmb2xpbyk7Cj4gPiAtICAgICAgIGYyZnNf Zm9saW9fcHV0KGZvbGlvLCB0cnVlKTsKPiA+ICsgICAgICAgZjJmc19tYXJrX2NhY2hlX2RpcnR5 KGllbnRyeSk7Cj4gPiArICAgICAgIGYyZnNfcHV0X2NhY2hlKGllbnRyeSwgdHJ1ZSk7Cj4gPgo+ ID4gICAgICAgICBpbm9kZV9zZXRfbXRpbWVfdG9fdHMoZGlyLCBpbm9kZV9zZXRfY3RpbWVfY3Vy cmVudChkaXIpKTsKPiA+ICAgICAgICAgZjJmc19tYXJrX2lub2RlX2RpcnR5X3N5bmMoZGlyLCB0 cnVlKTsKPiA+IEBAIC03NDEsMjEgKzc0NCwyMSBAQCB2b2lkIGYyZnNfZGVsZXRlX2lubGluZV9l bnRyeShzdHJ1Y3QgZjJmc19kaXJfZW50cnkgKmRlbnRyeSwKPiA+ICBib29sIGYyZnNfZW1wdHlf aW5saW5lX2RpcihzdHJ1Y3QgaW5vZGUgKmRpcikKPiA+ICB7Cj4gPiAgICAgICAgIHN0cnVjdCBm MmZzX3NiX2luZm8gKnNiaSA9IEYyRlNfSV9TQihkaXIpOwo+ID4gLSAgICAgICBzdHJ1Y3QgZm9s aW8gKmlmb2xpbzsKPiA+ICsgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICppZW50cnk7 Cj4gPiAgICAgICAgIHVuc2lnbmVkIGludCBiaXRfcG9zID0gMjsKPiA+ICAgICAgICAgdm9pZCAq aW5saW5lX2RlbnRyeTsKPiA+ICAgICAgICAgc3RydWN0IGYyZnNfZGVudHJ5X3B0ciBkOwo+ID4K PiA+IC0gICAgICAgaWZvbGlvID0gZjJmc19nZXRfaW5vZGVfZm9saW8oc2JpLCBkaXItPmlfaW5v KTsKPiA+IC0gICAgICAgaWYgKElTX0VSUihpZm9saW8pKQo+ID4gKyAgICAgICBpZW50cnkgPSBm MmZzX2dldF9pbm9kZV9jYWNoZShzYmksIGRpci0+aV9pbm8pOwo+ID4gKyAgICAgICBpZiAoSVNf RVJSKGllbnRyeSkpCj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwo+ID4KPiA+IC0g ICAgICAgaW5saW5lX2RlbnRyeSA9IGlubGluZV9kYXRhX2FkZHIoZGlyLCBpZm9saW8pOwo+ID4g KyAgICAgICBpbmxpbmVfZGVudHJ5ID0gaW5saW5lX2RhdGFfYWRkcihkaXIsIGllbnRyeSk7Cj4g PiAgICAgICAgIG1ha2VfZGVudHJ5X3B0cl9pbmxpbmUoZGlyLCAmZCwgaW5saW5lX2RlbnRyeSk7 Cj4gPgo+ID4gICAgICAgICBiaXRfcG9zID0gZmluZF9uZXh0X2JpdF9sZShkLmJpdG1hcCwgZC5t YXgsIGJpdF9wb3MpOwo+ID4KPiA+IC0gICAgICAgZjJmc19mb2xpb19wdXQoaWZvbGlvLCB0cnVl KTsKPiA+ICsgICAgICAgZjJmc19wdXRfY2FjaGUoaWVudHJ5LCB0cnVlKTsKPiA+Cj4gPiAgICAg ICAgIGlmIChiaXRfcG9zIDwgZC5tYXgpCj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl Owo+ID4gQEAgLTc2Nyw3ICs3NzAsNyBAQCBpbnQgZjJmc19yZWFkX2lubGluZV9kaXIoc3RydWN0 IGZpbGUgKmZpbGUsIHN0cnVjdCBkaXJfY29udGV4dCAqY3R4LAo+ID4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3QgZnNjcnlwdF9zdHIgKmZzdHIpCj4gPiAgewo+ID4gICAg ICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlsZV9pbm9kZShmaWxlKTsKPiA+IC0gICAgICAg c3RydWN0IGZvbGlvICppZm9saW8gPSBOVUxMOwo+ID4gKyAgICAgICBzdHJ1Y3QgZjJmc19jYWNo ZWRfYmxvY2sgKmllbnRyeSA9IE5VTEw7Cj4gPiAgICAgICAgIHN0cnVjdCBmMmZzX2RlbnRyeV9w dHIgZDsKPiA+ICAgICAgICAgdm9pZCAqaW5saW5lX2RlbnRyeSA9IE5VTEw7Cj4gPiAgICAgICAg IGludCBlcnI7Cj4gPiBAQCAtNzc3LDE3ICs3ODAsMTcgQEAgaW50IGYyZnNfcmVhZF9pbmxpbmVf ZGlyKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgZGlyX2NvbnRleHQgKmN0eCwKPiA+ICAgICAg ICAgaWYgKGN0eC0+cG9zID09IGQubWF4KQo+ID4gICAgICAgICAgICAgICAgIHJldHVybiAwOwo+ ID4KPiA+IC0gICAgICAgaWZvbGlvID0gZjJmc19nZXRfaW5vZGVfZm9saW8oRjJGU19JX1NCKGlu b2RlKSwgaW5vZGUtPmlfaW5vKTsKPiA+IC0gICAgICAgaWYgKElTX0VSUihpZm9saW8pKQo+ID4g LSAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKGlmb2xpbyk7Cj4gPiArICAgICAgIGllbnRy eSA9IGYyZnNfZ2V0X2lub2RlX2NhY2hlKEYyRlNfSV9TQihpbm9kZSksIGlub2RlLT5pX2lubyk7 Cj4gPiArICAgICAgIGlmIChJU19FUlIoaWVudHJ5KSkKPiA+ICsgICAgICAgICAgICAgICByZXR1 cm4gUFRSX0VSUihpZW50cnkpOwo+ID4KPiA+ICAgICAgICAgLyoKPiA+ICAgICAgICAgICogZjJm c19yZWFkZGlyIHdhcyBwcm90ZWN0ZWQgYnkgaW5vZGUuaV9yd3NlbSwgaXQgaXMgc2FmZSB0byBh Y2Nlc3MKPiA+ICAgICAgICAgICogaXBhZ2Ugd2l0aG91dCBwYWdlJ3MgbG9jayBoZWxkLgo+ID4g ICAgICAgICAgKi8KPiA+IC0gICAgICAgZm9saW9fdW5sb2NrKGlmb2xpbyk7Cj4gPiArICAgICAg IGYyZnNfdW5sb2NrX2NhY2hlKGllbnRyeSk7Cj4gPgo+ID4gLSAgICAgICBpbmxpbmVfZGVudHJ5 ID0gaW5saW5lX2RhdGFfYWRkcihpbm9kZSwgaWZvbGlvKTsKPiA+ICsgICAgICAgaW5saW5lX2Rl bnRyeSA9IGlubGluZV9kYXRhX2FkZHIoaW5vZGUsIGllbnRyeSk7Cj4gPgo+ID4gICAgICAgICBt YWtlX2RlbnRyeV9wdHJfaW5saW5lKGlub2RlLCAmZCwgaW5saW5lX2RlbnRyeSk7Cj4gPgo+ID4g QEAgLTc5NSw3ICs3OTgsNyBAQCBpbnQgZjJmc19yZWFkX2lubGluZV9kaXIoc3RydWN0IGZpbGUg KmZpbGUsIHN0cnVjdCBkaXJfY29udGV4dCAqY3R4LAo+ID4gICAgICAgICBpZiAoIWVycikKPiA+ ICAgICAgICAgICAgICAgICBjdHgtPnBvcyA9IGQubWF4Owo+ID4KPiA+IC0gICAgICAgZjJmc19m b2xpb19wdXQoaWZvbGlvLCBmYWxzZSk7Cj4gPiArICAgICAgIGYyZnNfcHV0X2NhY2hlKGllbnRy eSwgZmFsc2UpOwo+ID4gICAgICAgICByZXR1cm4gZXJyIDwgMCA/IGVyciA6IDA7Cj4gPiAgfQo+ ID4KPiA+IEBAIC04MDYsMTIgKzgwOSwxMiBAQCBpbnQgZjJmc19pbmxpbmVfZGF0YV9maWVtYXAo c3RydWN0IGlub2RlICppbm9kZSwKPiA+ICAgICAgICAgX191MzIgZmxhZ3MgPSBGSUVNQVBfRVhU RU5UX0RBVEFfSU5MSU5FIHwgRklFTUFQX0VYVEVOVF9OT1RfQUxJR05FRCB8Cj4gPiAgICAgICAg ICAgICAgICAgRklFTUFQX0VYVEVOVF9MQVNUOwo+ID4gICAgICAgICBzdHJ1Y3Qgbm9kZV9pbmZv IG5pOwo+ID4gLSAgICAgICBzdHJ1Y3QgZm9saW8gKmlmb2xpbzsKPiA+ICsgICAgICAgc3RydWN0 IGYyZnNfY2FjaGVkX2Jsb2NrICppZW50cnk7Cj4gPiAgICAgICAgIGludCBlcnIgPSAwOwo+ID4K PiA+IC0gICAgICAgaWZvbGlvID0gZjJmc19nZXRfaW5vZGVfZm9saW8oRjJGU19JX1NCKGlub2Rl KSwgaW5vZGUtPmlfaW5vKTsKPiA+IC0gICAgICAgaWYgKElTX0VSUihpZm9saW8pKQo+ID4gLSAg ICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKGlmb2xpbyk7Cj4gPiArICAgICAgIGllbnRyeSA9 IGYyZnNfZ2V0X2lub2RlX2NhY2hlKEYyRlNfSV9TQihpbm9kZSksIGlub2RlLT5pX2lubyk7Cj4g PiArICAgICAgIGlmIChJU19FUlIoaWVudHJ5KSkKPiA+ICsgICAgICAgICAgICAgICByZXR1cm4g UFRSX0VSUihpZW50cnkpOwo+ID4KPiA+ICAgICAgICAgaWYgKChTX0lTUkVHKGlub2RlLT5pX21v ZGUpIHx8IFNfSVNMTksoaW5vZGUtPmlfbW9kZSkpICYmCj4gPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICFmMmZzX2hhc19pbmxpbmVfZGF0YShpbm9kZSkpIHsKPiA+IEBAIC04MjUs MTMgKzgyOCwxMyBAQCBpbnQgZjJmc19pbmxpbmVfZGF0YV9maWVtYXAoc3RydWN0IGlub2RlICpp bm9kZSwKPiA+ICAgICAgICAgfQo+ID4KPiA+ICAgICAgICAgaWYgKGZpZWluZm8tPmZpX2ZsYWdz ICYgRklFTUFQX0ZMQUdfU1lOQykgewo+ID4gLSAgICAgICAgICAgICAgIGVyciA9IGYyZnNfd3Jp dGVfc2luZ2xlX25vZGVfZm9saW8oaWZvbGlvLCB0cnVlLCBmYWxzZSwgRlNfTk9ERV9JTyk7Cj4g PiArICAgICAgICAgICAgICAgZXJyID0gZjJmc193cml0ZV9ub2RlX2NhY2hlKGllbnRyeSwgdHJ1 ZSwgZmFsc2UsIEZTX05PREVfSU8pOwo+ID4gICAgICAgICAgICAgICAgIGlmIChlcnIpCj4gPiAg ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyOwo+ID4gLSAgICAgICAgICAgICAgIGlm b2xpbyA9IGYyZnNfZ2V0X2lub2RlX2ZvbGlvKEYyRlNfSV9TQihpbm9kZSksIGlub2RlLT5pX2lu byk7Cj4gPiAtICAgICAgICAgICAgICAgaWYgKElTX0VSUihpZm9saW8pKQo+ID4gLSAgICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIoaWZvbGlvKTsKPiA+IC0gICAgICAgICAgICAg ICBmMmZzX2ZvbGlvX3dhaXRfd3JpdGViYWNrKGlmb2xpbywgTk9ERSwgdHJ1ZSwgdHJ1ZSk7Cj4g PiArICAgICAgICAgICAgICAgaWVudHJ5ID0gZjJmc19nZXRfaW5vZGVfY2FjaGUoRjJGU19JX1NC KGlub2RlKSwgaW5vZGUtPmlfaW5vKTsKPiA+ICsgICAgICAgICAgICAgICBpZiAoSVNfRVJSKGll bnRyeSkpCj4gPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihpZW50cnkp Owo+ID4gKyAgICAgICAgICAgICAgIGYyZnNfY2FjaGVfd2FpdF93cml0ZWJhY2soaWVudHJ5KTsK PiA+ICAgICAgICAgfQo+ID4gICAgICAgICBpbGVuID0gbWluX3Qoc2l6ZV90LCBNQVhfSU5MSU5F X0RBVEEoaW5vZGUpLCBpX3NpemVfcmVhZChpbm9kZSkpOwo+ID4gICAgICAgICBpZiAoc3RhcnQg Pj0gaWxlbikKPiA+IEBAIC04NDYsOCArODQ5LDggQEAgaW50IGYyZnNfaW5saW5lX2RhdGFfZmll bWFwKHN0cnVjdCBpbm9kZSAqaW5vZGUsCj4gPgo+ID4gICAgICAgICBpZiAoX19pc192YWxpZF9k YXRhX2Jsa2FkZHIobmkuYmxrX2FkZHIpKSB7Cj4gPiAgICAgICAgICAgICAgICAgYnl0ZWFkZHIg PSAoX191NjQpbmkuYmxrX2FkZHIgPDwgaW5vZGUtPmlfc2ItPnNfYmxvY2tzaXplX2JpdHM7Cj4g PiAtICAgICAgICAgICAgICAgYnl0ZWFkZHIgKz0gKGNoYXIgKilpbmxpbmVfZGF0YV9hZGRyKGlu b2RlLCBpZm9saW8pIC0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChjaGFyICopRjJGU19JTk9ERShpZm9saW8pOwo+ID4gKyAgICAgICAgICAgICAg IGJ5dGVhZGRyICs9IChjaGFyICopaW5saW5lX2RhdGFfYWRkcihpbm9kZSwgaWVudHJ5KSAtCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAq KUYyRlNfSU5PREUoaWVudHJ5KTsKPiA+ICAgICAgICAgfSBlbHNlIHsKPiA+ICAgICAgICAgICAg ICAgICBmMmZzX2J1Z19vbihGMkZTX0lfU0IoaW5vZGUpLCBuaS5ibGtfYWRkciAhPSBORVdfQURE Uik7Cj4gPiAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gRklFTUFQX0VYVEVOVF9ERUxBTExPQyB8 IEZJRU1BUF9FWFRFTlRfVU5LTk9XTjsKPiA+IEBAIC04NTUsNiArODU4LDYgQEAgaW50IGYyZnNf aW5saW5lX2RhdGFfZmllbWFwKHN0cnVjdCBpbm9kZSAqaW5vZGUsCj4gPiAgICAgICAgIGVyciA9 IGZpZW1hcF9maWxsX25leHRfZXh0ZW50KGZpZWluZm8sIHN0YXJ0LCBieXRlYWRkciwgaWxlbiwg ZmxhZ3MpOwo+ID4gICAgICAgICB0cmFjZV9mMmZzX2ZpZW1hcChpbm9kZSwgc3RhcnQsIGJ5dGVh ZGRyLCBpbGVuLCBmbGFncywgZXJyKTsKPiA+ICBvdXQ6Cj4gPiAtICAgICAgIGYyZnNfZm9saW9f cHV0KGlmb2xpbywgdHJ1ZSk7Cj4gPiArICAgICAgIGYyZnNfcHV0X2NhY2hlKGllbnRyeSwgdHJ1 ZSk7Cj4gPiAgICAgICAgIHJldHVybiBlcnI7Cj4gPiAgfQo+ID4gZGlmZiAtLWdpdCBhL2ZzL2Yy ZnMvaW5vZGUuYyBiL2ZzL2YyZnMvaW5vZGUuYwo+ID4gaW5kZXggZjJlMWQ4YjUwZjhjLi5jODIy Y2EyZGNlMjAgMTAwNjQ0Cj4gPiAtLS0gYS9mcy9mMmZzL2lub2RlLmMKPiA+ICsrKyBiL2ZzL2Yy ZnMvaW5vZGUuYwo+ID4gQEAgLTgyLDkgKzgyLDkgQEAgdm9pZCBmMmZzX3NldF9pbm9kZV9mbGFn cyhzdHJ1Y3QgaW5vZGUgKmlub2RlKQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgU19FTkNS WVBURUR8U19WRVJJVFl8U19DQVNFRk9MRCk7Cj4gPiAgfQo+ID4KPiA+IC1zdGF0aWMgdm9pZCBf X2dldF9pbm9kZV9yZGV2KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmb2xpbyAqbm9kZV9m b2xpbykKPiA+ICtzdGF0aWMgdm9pZCBfX2dldF9pbm9kZV9yZGV2KHN0cnVjdCBpbm9kZSAqaW5v ZGUsIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqaWVudHJ5KQo+ID4gIHsKPiA+IC0gICAgICAg X19sZTMyICphZGRyID0gZ2V0X2Rub2RlX2FkZHIoaW5vZGUsIG5vZGVfZm9saW8pOwo+ID4gKyAg ICAgICBfX2xlMzIgKmFkZHIgPSBnZXRfZG5vZGVfYWRkcihpbm9kZSwgaWVudHJ5KTsKPiA+Cj4g PiAgICAgICAgIGlmIChTX0lTQ0hSKGlub2RlLT5pX21vZGUpIHx8IFNfSVNCTEsoaW5vZGUtPmlf bW9kZSkgfHwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIFNfSVNGSUZPKGlub2RlLT5pX21v ZGUpIHx8IFNfSVNTT0NLKGlub2RlLT5pX21vZGUpKSB7Cj4gPiBAQCAtOTUsOSArOTUsOSBAQCBz dGF0aWMgdm9pZCBfX2dldF9pbm9kZV9yZGV2KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBm b2xpbyAqbm9kZV9mb2xpbykKPiA+ICAgICAgICAgfQo+ID4gIH0KPiA+Cj4gPiAtc3RhdGljIHZv aWQgX19zZXRfaW5vZGVfcmRldihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZm9saW8gKm5v ZGVfZm9saW8pCj4gPiArc3RhdGljIHZvaWQgX19zZXRfaW5vZGVfcmRldihzdHJ1Y3QgaW5vZGUg Kmlub2RlLCBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmllbnRyeSkKPiA+ICB7Cj4gPiAtICAg ICAgIF9fbGUzMiAqYWRkciA9IGdldF9kbm9kZV9hZGRyKGlub2RlLCBub2RlX2ZvbGlvKTsKPiA+ ICsgICAgICAgX19sZTMyICphZGRyID0gZ2V0X2Rub2RlX2FkZHIoaW5vZGUsIGllbnRyeSk7Cj4g Pgo+ID4gICAgICAgICBpZiAoU19JU0NIUihpbm9kZS0+aV9tb2RlKSB8fCBTX0lTQkxLKGlub2Rl LT5pX21vZGUpKSB7Cj4gPiAgICAgICAgICAgICAgICAgaWYgKG9sZF92YWxpZF9kZXYoaW5vZGUt PmlfcmRldikpIHsKPiA+IEBAIC0xMTEsMzQgKzExMSwzMyBAQCBzdGF0aWMgdm9pZCBfX3NldF9p bm9kZV9yZGV2KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmb2xpbyAqbm9kZV9mb2xpbykK PiA+ICAgICAgICAgfQo+ID4gIH0KPiA+Cj4gPiAtc3RhdGljIHZvaWQgX19yZWNvdmVyX2lubGlu ZV9zdGF0dXMoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZvbGlvICppZm9saW8pCj4gPiAr c3RhdGljIHZvaWQgX19yZWNvdmVyX2lubGluZV9zdGF0dXMoc3RydWN0IGlub2RlICppbm9kZSwg c3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICppZW50cnkpCj4gPiAgewo+ID4gLSAgICAgICB2b2lk ICppbmxpbmVfZGF0YSA9IGlubGluZV9kYXRhX2FkZHIoaW5vZGUsIGlmb2xpbyk7Cj4gPiArICAg ICAgIHZvaWQgKmlubGluZV9kYXRhID0gaW5saW5lX2RhdGFfYWRkcihpbm9kZSwgaWVudHJ5KTsK PiA+ICAgICAgICAgX19sZTMyICpzdGFydCA9IGlubGluZV9kYXRhOwo+ID4gICAgICAgICBfX2xl MzIgKmVuZCA9IHN0YXJ0ICsgTUFYX0lOTElORV9EQVRBKGlub2RlKSAvIHNpemVvZihfX2xlMzIp Owo+ID4KPiA+ICAgICAgICAgd2hpbGUgKHN0YXJ0IDwgZW5kKSB7Cj4gPiAgICAgICAgICAgICAg ICAgaWYgKCpzdGFydCsrKSB7Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBmMmZzX2ZvbGlv X3dhaXRfd3JpdGViYWNrKGlmb2xpbywgTk9ERSwgdHJ1ZSwgdHJ1ZSk7Cj4gPiArICAgICAgICAg ICAgICAgICAgICAgICBmMmZzX2NhY2hlX3dhaXRfd3JpdGViYWNrKGllbnRyeSk7Cj4gPgo+ID4g ICAgICAgICAgICAgICAgICAgICAgICAgc2V0X2lub2RlX2ZsYWcoaW5vZGUsIEZJX0RBVEFfRVhJ U1QpOwo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgc2V0X3Jhd19pbmxpbmUoaW5vZGUsIEYy RlNfSU5PREUoaWZvbGlvKSk7Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBmb2xpb19tYXJr X2RpcnR5KGlmb2xpbyk7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBzZXRfcmF3X2lubGlu ZShpbm9kZSwgRjJGU19JTk9ERShpZW50cnkpKTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAg IGYyZnNfbWFya19jYWNoZV9kaXJ0eShpZW50cnkpOwo+ID4gICAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuOwo+ID4gICAgICAgICAgICAgICAgIH0KPiA+ICAgICAgICAgfQo+ID4gICAgICAg ICByZXR1cm47Cj4gPiAgfQo+ID4KPiA+IC1zdGF0aWMKPiA+IC1ib29sIGYyZnNfZW5hYmxlX2lu b2RlX2Noa3N1bShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIHN0cnVjdCBmb2xpbyAqZm9saW8p Cj4gPiArc3RhdGljIGJvb2wgZjJmc19lbmFibGVfaW5vZGVfY2hrc3VtKHN0cnVjdCBmMmZzX3Ni X2luZm8gKnNiaSwgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyeSkKPiA+ICB7Cj4gPiAt ICAgICAgIHN0cnVjdCBmMmZzX2lub2RlICpyaSA9ICZGMkZTX05PREUoZm9saW8pLT5pOwo+ID4g KyAgICAgICBzdHJ1Y3QgZjJmc19pbm9kZSAqcmkgPSBGMkZTX0lOT0RFKGVudHJ5KTsKPiA+Cj4g PiAgICAgICAgIGlmICghZjJmc19zYl9oYXNfaW5vZGVfY2hrc3VtKHNiaSkpCj4gPiAgICAgICAg ICAgICAgICAgcmV0dXJuIGZhbHNlOwo+ID4KPiA+IC0gICAgICAgaWYgKCFJU19JTk9ERShzYmks IGZvbGlvKSB8fCAhKHJpLT5pX2lubGluZSAmIEYyRlNfRVhUUkFfQVRUUikpCj4gPiArICAgICAg IGlmICghSVNfSU5PREUoc2JpLCBlbnRyeSkgfHwgIShyaS0+aV9pbmxpbmUgJiBGMkZTX0VYVFJB X0FUVFIpKQo+ID4gICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKPiA+Cj4gPiAgICAgICAg IGlmICghRjJGU19GSVRTX0lOX0lOT0RFKHJpLCBsZTE2X3RvX2NwdShyaS0+aV9leHRyYV9pc2l6 ZSksCj4gPiBAQCAtMTQ4LDEwICsxNDcsMTAgQEAgYm9vbCBmMmZzX2VuYWJsZV9pbm9kZV9jaGtz dW0oc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKQo+ID4gICAg ICAgICByZXR1cm4gdHJ1ZTsKPiA+ICB9Cj4gPgo+ID4gLXN0YXRpYyBfX3UzMiBmMmZzX2lub2Rl X2Noa3N1bShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIHN0cnVjdCBmb2xpbyAqZm9saW8pCj4g PiArc3RhdGljIF9fdTMyIGYyZnNfaW5vZGVfY2hrc3VtKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNi aSwgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyeSkKPiA+ICB7Cj4gPiAtICAgICAgIHN0 cnVjdCBmMmZzX2lub2RlICpyaSA9IEYyRlNfSU5PREUoZm9saW8pOwo+ID4gLSAgICAgICBfX2xl MzIgaW5vID0gRjJGU19OT0RFX0ZPT1RFUihzYmksIGZvbGlvKS0+aW5vOwo+ID4gKyAgICAgICBz dHJ1Y3QgZjJmc19pbm9kZSAqcmkgPSBGMkZTX0lOT0RFKGVudHJ5KTsKPiA+ICsgICAgICAgX19s ZTMyIGlubyA9IEYyRlNfTk9ERV9GT09URVIoc2JpLCBlbnRyeSktPmlubzsKPiA+ICAgICAgICAg X19sZTMyIGdlbiA9IHJpLT5pX2dlbmVyYXRpb247Cj4gPiAgICAgICAgIF9fdTMyIGNoa3N1bSwg Y2hrc3VtX3NlZWQ7Cj4gPiAgICAgICAgIF9fdTMyIGR1bW15X2NzID0gMDsKPiA+IEBAIC0xNjks NyArMTY4LDcgQEAgc3RhdGljIF9fdTMyIGYyZnNfaW5vZGVfY2hrc3VtKHN0cnVjdCBmMmZzX3Ni X2luZm8gKnNiaSwgc3RydWN0IGZvbGlvICpmb2xpbykKPiA+ICAgICAgICAgcmV0dXJuIGNoa3N1 bTsKPiA+ICB9Cj4gPgo+ID4gLWJvb2wgZjJmc19pbm9kZV9jaGtzdW1fdmVyaWZ5KHN0cnVjdCBm MmZzX3NiX2luZm8gKnNiaSwgc3RydWN0IGZvbGlvICpmb2xpbykKPiA+ICtib29sIGYyZnNfaW5v ZGVfY2hrc3VtX3ZlcmlmeShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIHN0cnVjdCBmMmZzX2Nh Y2hlZF9ibG9jayAqZW50cnkpCj4gPiAgewo+ID4gICAgICAgICBzdHJ1Y3QgZjJmc19pbm9kZSAq cmk7Cj4gPiAgICAgICAgIF9fdTMyIHByb3ZpZGVkLCBjYWxjdWxhdGVkOwo+ID4gQEAgLTE3Nywz NSArMTc2LDMzIEBAIGJvb2wgZjJmc19pbm9kZV9jaGtzdW1fdmVyaWZ5KHN0cnVjdCBmMmZzX3Ni X2luZm8gKnNiaSwgc3RydWN0IGZvbGlvICpmb2xpbykKPiA+ICAgICAgICAgaWYgKHVubGlrZWx5 KGlzX3NiaV9mbGFnX3NldChzYmksIFNCSV9JU19TSFVURE9XTikpKQo+ID4gICAgICAgICAgICAg ICAgIHJldHVybiB0cnVlOwo+ID4KPiA+IC0jaWZkZWYgQ09ORklHX0YyRlNfQ0hFQ0tfRlMKPiA+ IC0gICAgICAgaWYgKCFmMmZzX2VuYWJsZV9pbm9kZV9jaGtzdW0oc2JpLCBmb2xpbykpCj4gPiAt I2Vsc2UKPiA+IC0gICAgICAgaWYgKCFmMmZzX2VuYWJsZV9pbm9kZV9jaGtzdW0oc2JpLCBmb2xp bykgfHwKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGZvbGlvX3Rlc3RfZGlydHkoZm9saW8p IHx8Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBmb2xpb190ZXN0X3dyaXRlYmFjayhmb2xp bykpCj4gPiAtI2VuZGlmCj4gPiArICAgICAgIGlmICghZjJmc19lbmFibGVfaW5vZGVfY2hrc3Vt KHNiaSwgZW50cnkpKQo+ID4gICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwo+ID4gKyNpZm5k ZWYgQ09ORklHX0YyRlNfQ0hFQ0tfRlMKPiA+ICsgICAgICAgaWYgKGYyZnNfY2FjaGVfdGVzdF9k aXJ0eShlbnRyeSkgfHwgZjJmc19jYWNoZV90ZXN0X3dyaXRlYmFjayhlbnRyeSkpCj4gPiArICAg ICAgICAgICAgICAgcmV0dXJuIHRydWU7Cj4gPiArI2VuZGlmCj4gPgo+ID4gLSAgICAgICByaSA9 ICZGMkZTX05PREUoZm9saW8pLT5pOwo+ID4gKyAgICAgICByaSA9IEYyRlNfSU5PREUoZW50cnkp Owo+ID4gICAgICAgICBwcm92aWRlZCA9IGxlMzJfdG9fY3B1KHJpLT5pX2lub2RlX2NoZWNrc3Vt KTsKPiA+IC0gICAgICAgY2FsY3VsYXRlZCA9IGYyZnNfaW5vZGVfY2hrc3VtKHNiaSwgZm9saW8p Owo+ID4gKyAgICAgICBjYWxjdWxhdGVkID0gZjJmc19pbm9kZV9jaGtzdW0oc2JpLCBlbnRyeSk7 Cj4gPgo+ID4gICAgICAgICBpZiAocHJvdmlkZWQgIT0gY2FsY3VsYXRlZCkKPiA+IC0gICAgICAg ICAgICAgICBmMmZzX3dhcm4oc2JpLCAiY2hlY2tzdW0gaW52YWxpZCwgbmlkID0gJWx1LCBpbm9f b2Zfbm9kZSA9ICV4LCAleCB2cy4gJXgiLAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICBm b2xpby0+aW5kZXgsIGlub19vZl9ub2RlKHNiaSwgZm9saW8pLAo+ID4gKyAgICAgICAgICAgICAg IGYyZnNfd2FybihzYmksICJjaGVja3N1bSBpbnZhbGlkLCBuaWQgPSAlbHUsIGlub19vZl9ub2Rl ID0gJXUsICV4IHZzLiAleCIsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5p bmRleCwgaW5vX29mX25vZGUoc2JpLCBlbnRyeSksCj4gPiAgICAgICAgICAgICAgICAgICAgICAg ICAgIHByb3ZpZGVkLCBjYWxjdWxhdGVkKTsKPiA+Cj4gPiAgICAgICAgIHJldHVybiBwcm92aWRl ZCA9PSBjYWxjdWxhdGVkOwo+ID4gIH0KPiA+Cj4gPiAtdm9pZCBmMmZzX2lub2RlX2Noa3N1bV9z ZXQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKQo+ID4gK3Zv aWQgZjJmc19pbm9kZV9jaGtzdW1fc2V0KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgc3RydWN0 IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyeSkKPiA+ICB7Cj4gPiAtICAgICAgIHN0cnVjdCBmMmZz X2lub2RlICpyaSA9ICZGMkZTX05PREUoZm9saW8pLT5pOwo+ID4gKyAgICAgICBzdHJ1Y3QgZjJm c19pbm9kZSAqcmkgPSBGMkZTX0lOT0RFKGVudHJ5KTsKPiA+Cj4gPiAtICAgICAgIGlmICghZjJm c19lbmFibGVfaW5vZGVfY2hrc3VtKHNiaSwgZm9saW8pKQo+ID4gKyAgICAgICBpZiAoIWYyZnNf ZW5hYmxlX2lub2RlX2Noa3N1bShzYmksIGVudHJ5KSkKPiA+ICAgICAgICAgICAgICAgICByZXR1 cm47Cj4gPgo+ID4gLSAgICAgICByaS0+aV9pbm9kZV9jaGVja3N1bSA9IGNwdV90b19sZTMyKGYy ZnNfaW5vZGVfY2hrc3VtKHNiaSwgZm9saW8pKTsKPiA+ICsgICAgICAgcmktPmlfaW5vZGVfY2hl Y2tzdW0gPSBjcHVfdG9fbGUzMihmMmZzX2lub2RlX2Noa3N1bShzYmksIGVudHJ5KSk7Cj4gPiAg fQo+ID4KPiA+ICBzdGF0aWMgYm9vbCBzYW5pdHlfY2hlY2tfY29tcHJlc3NfaW5vZGUoc3RydWN0 IGlub2RlICppbm9kZSwKPiA+IEBAIC0yODAsMjggKzI3NywyOSBAQCBzdGF0aWMgYm9vbCBzYW5p dHlfY2hlY2tfY29tcHJlc3NfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwKPiA+ICAgICAgICAg cmV0dXJuIGZhbHNlOwo+ID4gIH0KPiA+Cj4gPiAtc3RhdGljIGJvb2wgc2FuaXR5X2NoZWNrX2lu b2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmb2xpbyAqbm9kZV9mb2xpbykKPiA+ICtz dGF0aWMgYm9vbCBzYW5pdHlfY2hlY2tfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwKPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqbm9kZV9lbnRy eSkKPiA+ICB7Cj4gPiAgICAgICAgIHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSA9IEYyRlNfSV9T Qihpbm9kZSk7Cj4gPiAgICAgICAgIHN0cnVjdCBmMmZzX2lub2RlX2luZm8gKmZpID0gRjJGU19J KGlub2RlKTsKPiA+IC0gICAgICAgc3RydWN0IGYyZnNfaW5vZGUgKnJpID0gRjJGU19JTk9ERShu b2RlX2ZvbGlvKTsKPiA+ICsgICAgICAgc3RydWN0IGYyZnNfaW5vZGUgKnJpID0gRjJGU19JTk9E RShub2RlX2VudHJ5KTsKPiA+ICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGlibG9ja3M7Cj4g Pgo+ID4gLSAgICAgICBpYmxvY2tzID0gbGU2NF90b19jcHUoRjJGU19JTk9ERShub2RlX2ZvbGlv KS0+aV9ibG9ja3MpOwo+ID4gKyAgICAgICBpYmxvY2tzID0gbGU2NF90b19jcHUocmktPmlfYmxv Y2tzKTsKPiA+ICAgICAgICAgaWYgKCFpYmxvY2tzKSB7Cj4gPiAgICAgICAgICAgICAgICAgZjJm c193YXJuKHNiaSwgIiVzOiBjb3JydXB0ZWQgaW5vZGUgaV9ibG9ja3MgaV9pbm89JWxseCBpYmxv Y2tzPSVsbHUsIHJ1biBmc2NrIHRvIGZpeC4iLAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAg ICBfX2Z1bmNfXywgaW5vZGUtPmlfaW5vLCBpYmxvY2tzKTsKPiA+ICAgICAgICAgICAgICAgICBy ZXR1cm4gZmFsc2U7Cj4gPiAgICAgICAgIH0KPiA+Cj4gPiAtICAgICAgIGlmIChpbm9fb2Zfbm9k ZShzYmksIG5vZGVfZm9saW8pICE9IG5pZF9vZl9ub2RlKHNiaSwgbm9kZV9mb2xpbykpIHsKPiA+ ICsgICAgICAgaWYgKGlub19vZl9ub2RlKHNiaSwgbm9kZV9lbnRyeSkgIT0gbmlkX29mX25vZGUo c2JpLCBub2RlX2VudHJ5KSkgewo+ID4gICAgICAgICAgICAgICAgIGYyZnNfd2FybihzYmksICIl czogY29ycnVwdGVkIGlub2RlIGZvb3RlciBpX2lubz0lbGx4LCBpbm8sbmlkOiBbJXUsICV1XSBy dW4gZnNjayB0byBmaXguIiwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18s IGlub2RlLT5pX2lubywKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgaW5vX29mX25vZGUo c2JpLCBub2RlX2ZvbGlvKSwgbmlkX29mX25vZGUoc2JpLCBub2RlX2ZvbGlvKSk7Cj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgIGlub19vZl9ub2RlKHNiaSwgbm9kZV9lbnRyeSksIG5pZF9v Zl9ub2RlKHNiaSwgbm9kZV9lbnRyeSkpOwo+ID4gICAgICAgICAgICAgICAgIHJldHVybiBmYWxz ZTsKPiA+ICAgICAgICAgfQo+ID4KPiA+IC0gICAgICAgaWYgKGlub19vZl9ub2RlKHNiaSwgbm9k ZV9mb2xpbykgPT0gZmktPmlfeGF0dHJfbmlkKSB7Cj4gPiArICAgICAgIGlmIChpbm9fb2Zfbm9k ZShzYmksIG5vZGVfZW50cnkpID09IGZpLT5pX3hhdHRyX25pZCkgewo+ID4gICAgICAgICAgICAg ICAgIGYyZnNfd2FybihzYmksICIlczogY29ycnVwdGVkIGlub2RlIGlfaW5vPSVsbHgsIHhuaWQ9 JXgsIHJ1biBmc2NrIHRvIGZpeC4iLAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1 bmNfXywgaW5vZGUtPmlfaW5vLCBmaS0+aV94YXR0cl9uaWQpOwo+ID4gICAgICAgICAgICAgICAg IHJldHVybiBmYWxzZTsKPiA+IEBAIC0zNzUsNyArMzczLDcgQEAgc3RhdGljIGJvb2wgc2FuaXR5 X2NoZWNrX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmb2xpbyAqbm9kZV9mb2xp bykKPiA+ICAgICAgICAgICAgICAgICB9Cj4gPiAgICAgICAgIH0KPiA+Cj4gPiAtICAgICAgIGlm IChmMmZzX3Nhbml0eV9jaGVja19pbmxpbmVfZGF0YShpbm9kZSwgbm9kZV9mb2xpbykpIHsKPiA+ ICsgICAgICAgaWYgKGYyZnNfc2FuaXR5X2NoZWNrX2lubGluZV9kYXRhKGlub2RlLCBub2RlX2Vu dHJ5KSkgewo+ID4gICAgICAgICAgICAgICAgIGYyZnNfd2FybihzYmksICIlczogaW5vZGUgKGlu bz0lbGx4LCBtb2RlPSV1KSBzaG91bGQgbm90IGhhdmUgaW5saW5lX2RhdGEsIHJ1biBmc2NrIHRv IGZpeCIsCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCBpbm9kZS0+aV9p bm8sIGlub2RlLT5pX21vZGUpOwo+ID4gICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKPiA+ IEBAIC00MjgsNyArNDI2LDcgQEAgc3RhdGljIGludCBkb19yZWFkX2lub2RlKHN0cnVjdCBpbm9k ZSAqaW5vZGUpCj4gPiAgewo+ID4gICAgICAgICBzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkgPSBG MkZTX0lfU0IoaW5vZGUpOwo+ID4gICAgICAgICBzdHJ1Y3QgZjJmc19pbm9kZV9pbmZvICpmaSA9 IEYyRlNfSShpbm9kZSk7Cj4gPiAtICAgICAgIHN0cnVjdCBmb2xpbyAqbm9kZV9mb2xpbzsKPiA+ ICsgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICpub2RlX2VudHJ5Owo+ID4gICAgICAg ICBzdHJ1Y3QgZjJmc19pbm9kZSAqcmk7Cj4gPiAgICAgICAgIHByb2ppZF90IGlfcHJvamlkOwo+ ID4KPiA+IEBAIC00MzYsMTEgKzQzNCwxMSBAQCBzdGF0aWMgaW50IGRvX3JlYWRfaW5vZGUoc3Ry dWN0IGlub2RlICppbm9kZSkKPiA+ICAgICAgICAgaWYgKGYyZnNfY2hlY2tfbmlkX3JhbmdlKHNi aSwgaW5vZGUtPmlfaW5vKSkKPiA+ICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiA+ Cj4gPiAtICAgICAgIG5vZGVfZm9saW8gPSBmMmZzX2dldF9pbm9kZV9mb2xpbyhzYmksIGlub2Rl LT5pX2lubyk7Cj4gPiAtICAgICAgIGlmIChJU19FUlIobm9kZV9mb2xpbykpCj4gPiAtICAgICAg ICAgICAgICAgcmV0dXJuIFBUUl9FUlIobm9kZV9mb2xpbyk7Cj4gPiArICAgICAgIG5vZGVfZW50 cnkgPSBmMmZzX2dldF9pbm9kZV9jYWNoZShzYmksIGlub2RlLT5pX2lubyk7Cj4gPiArICAgICAg IGlmIChJU19FUlIobm9kZV9lbnRyeSkpCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIFBUUl9F UlIobm9kZV9lbnRyeSk7Cj4gPgo+ID4gLSAgICAgICByaSA9IEYyRlNfSU5PREUobm9kZV9mb2xp byk7Cj4gPiArICAgICAgIHJpID0gRjJGU19JTk9ERShub2RlX2VudHJ5KTsKPiA+Cj4gPiAgICAg ICAgIGlub2RlLT5pX21vZGUgPSBsZTE2X3RvX2NwdShyaS0+aV9tb2RlKTsKPiA+ICAgICAgICAg aV91aWRfd3JpdGUoaW5vZGUsIGxlMzJfdG9fY3B1KHJpLT5pX3VpZCkpOwo+ID4gQEAgLTQ5MSw4 ICs0ODksOCBAQCBzdGF0aWMgaW50IGRvX3JlYWRfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSkK PiA+ICAgICAgICAgICAgICAgICBmaS0+aV9pbmxpbmVfeGF0dHJfc2l6ZSA9IDA7Cj4gPiAgICAg ICAgIH0KPiA+Cj4gPiAtICAgICAgIGlmICghc2FuaXR5X2NoZWNrX2lub2RlKGlub2RlLCBub2Rl X2ZvbGlvKSkgewo+ID4gLSAgICAgICAgICAgICAgIGYyZnNfZm9saW9fcHV0KG5vZGVfZm9saW8s IHRydWUpOwo+ID4gKyAgICAgICBpZiAoIXNhbml0eV9jaGVja19pbm9kZShpbm9kZSwgbm9kZV9l bnRyeSkpIHsKPiA+ICsgICAgICAgICAgICAgICBmMmZzX3B1dF9jYWNoZShub2RlX2VudHJ5LCB0 cnVlKTsKPiA+ICAgICAgICAgICAgICAgICBzZXRfc2JpX2ZsYWcoc2JpLCBTQklfTkVFRF9GU0NL KTsKPiA+ICAgICAgICAgICAgICAgICBmMmZzX2hhbmRsZV9lcnJvcihzYmksIEVSUk9SX0NPUlJV UFRFRF9JTk9ERSk7Cj4gPiAgICAgICAgICAgICAgICAgZnNlcnJvcl9yZXBvcnRfZmlsZV9tZXRh ZGF0YShpbm9kZSwgLUVGU0NPUlJVUFRFRCwgR0ZQX05PRlMpOwo+ID4gQEAgLTUwMSwxNyArNDk5 LDE3IEBAIHN0YXRpYyBpbnQgZG9fcmVhZF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKQo+ID4K PiA+ICAgICAgICAgLyogY2hlY2sgZGF0YSBleGlzdCAqLwo+ID4gICAgICAgICBpZiAoZjJmc19o YXNfaW5saW5lX2RhdGEoaW5vZGUpICYmICFmMmZzX2V4aXN0X2RhdGEoaW5vZGUpKQo+ID4gLSAg ICAgICAgICAgICAgIF9fcmVjb3Zlcl9pbmxpbmVfc3RhdHVzKGlub2RlLCBub2RlX2ZvbGlvKTsK PiA+ICsgICAgICAgICAgICAgICBfX3JlY292ZXJfaW5saW5lX3N0YXR1cyhpbm9kZSwgbm9kZV9l bnRyeSk7Cj4gPgo+ID4gICAgICAgICAvKiB0cnkgdG8gcmVjb3ZlciBjb2xkIGJpdCBmb3Igbm9u LWRpciBpbm9kZSAqLwo+ID4gLSAgICAgICBpZiAoIVNfSVNESVIoaW5vZGUtPmlfbW9kZSkgJiYg IWlzX2NvbGRfbm9kZShzYmksIG5vZGVfZm9saW8pKSB7Cj4gPiAtICAgICAgICAgICAgICAgZjJm c19mb2xpb193YWl0X3dyaXRlYmFjayhub2RlX2ZvbGlvLCBOT0RFLCB0cnVlLCB0cnVlKTsKPiA+ IC0gICAgICAgICAgICAgICBzZXRfY29sZF9ub2RlKHNiaSwgbm9kZV9mb2xpbywgZmFsc2UpOwo+ ID4gLSAgICAgICAgICAgICAgIGZvbGlvX21hcmtfZGlydHkobm9kZV9mb2xpbyk7Cj4gPiArICAg ICAgIGlmICghU19JU0RJUihpbm9kZS0+aV9tb2RlKSAmJiAhaXNfY29sZF9ub2RlKHNiaSwgbm9k ZV9lbnRyeSkpIHsKPiA+ICsgICAgICAgICAgICAgICBmMmZzX2NhY2hlX3dhaXRfd3JpdGViYWNr KG5vZGVfZW50cnkpOwo+ID4gKyAgICAgICAgICAgICAgIHNldF9jb2xkX25vZGUoc2JpLCBub2Rl X2VudHJ5LCBmYWxzZSk7Cj4gPiArICAgICAgICAgICAgICAgZjJmc19tYXJrX2NhY2hlX2RpcnR5 KG5vZGVfZW50cnkpOwo+ID4gICAgICAgICB9Cj4gPgo+ID4gICAgICAgICAvKiBnZXQgcmRldiBi eSB1c2luZyBpbmxpbmVfaW5mbyAqLwo+ID4gLSAgICAgICBfX2dldF9pbm9kZV9yZGV2KGlub2Rl LCBub2RlX2ZvbGlvKTsKPiA+ICsgICAgICAgX19nZXRfaW5vZGVfcmRldihpbm9kZSwgbm9kZV9l bnRyeSk7Cj4gPgo+ID4gICAgICAgICBpZiAoIWYyZnNfbmVlZF9pbm9kZV9ibG9ja191cGRhdGUo c2JpLCBpbm9kZS0+aV9pbm8pKQo+ID4gICAgICAgICAgICAgICAgIGZpLT5sYXN0X2Rpc2tfc2l6 ZSA9IGlub2RlLT5pX3NpemU7Cj4gPiBAQCAtNTU0LDE4ICs1NTIsMTggQEAgc3RhdGljIGludCBk b19yZWFkX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpCj4gPgo+ID4gICAgICAgICBpbml0X2lk aXNrX3RpbWUoaW5vZGUpOwo+ID4KPiA+IC0gICAgICAgaWYgKCFzYW5pdHlfY2hlY2tfZXh0ZW50 X2NhY2hlKGlub2RlLCBub2RlX2ZvbGlvKSkgewo+ID4gLSAgICAgICAgICAgICAgIGYyZnNfZm9s aW9fcHV0KG5vZGVfZm9saW8sIHRydWUpOwo+ID4gKyAgICAgICBpZiAoIXNhbml0eV9jaGVja19l eHRlbnRfY2FjaGUoaW5vZGUsIG5vZGVfZW50cnkpKSB7Cj4gPiArICAgICAgICAgICAgICAgZjJm c19wdXRfY2FjaGUobm9kZV9lbnRyeSwgdHJ1ZSk7Cj4gPiAgICAgICAgICAgICAgICAgZjJmc19o YW5kbGVfZXJyb3Ioc2JpLCBFUlJPUl9DT1JSVVBURURfSU5PREUpOwo+ID4gICAgICAgICAgICAg ICAgIGZzZXJyb3JfcmVwb3J0X2ZpbGVfbWV0YWRhdGEoaW5vZGUsIC1FRlNDT1JSVVBURUQsIEdG UF9OT0ZTKTsKPiA+ICAgICAgICAgICAgICAgICByZXR1cm4gLUVGU0NPUlJVUFRFRDsKPiA+ICAg ICAgICAgfQo+ID4KPiA+ICAgICAgICAgLyogTmVlZCBhbGwgdGhlIGZsYWcgYml0cyAqLwo+ID4g LSAgICAgICBmMmZzX2luaXRfcmVhZF9leHRlbnRfdHJlZShpbm9kZSwgbm9kZV9mb2xpbyk7Cj4g PiArICAgICAgIGYyZnNfaW5pdF9yZWFkX2V4dGVudF90cmVlKGlub2RlLCBub2RlX2VudHJ5KTsK PiA+ICAgICAgICAgZjJmc19pbml0X2FnZV9leHRlbnRfdHJlZShpbm9kZSk7Cj4gPgo+ID4gLSAg ICAgICBmMmZzX2ZvbGlvX3B1dChub2RlX2ZvbGlvLCB0cnVlKTsKPiA+ICsgICAgICAgZjJmc19w dXRfY2FjaGUobm9kZV9lbnRyeSwgdHJ1ZSk7Cj4gPgo+ID4gICAgICAgICBzdGF0X2luY19pbmxp bmVfeGF0dHIoaW5vZGUpOwo+ID4gICAgICAgICBzdGF0X2luY19pbmxpbmVfaW5vZGUoaW5vZGUp Owo+ID4gQEAgLTU3OCw4ICs1NzYsNiBAQCBzdGF0aWMgaW50IGRvX3JlYWRfaW5vZGUoc3RydWN0 IGlub2RlICppbm9kZSkKPiA+Cj4gPiAgc3RhdGljIGJvb2wgaXNfbWV0YV9pbm8oc3RydWN0IGYy ZnNfc2JfaW5mbyAqc2JpLCB1bnNpZ25lZCBpbnQgaW5vKQo+ID4gIHsKPiA+IC0gICAgICAgaWYg KGlubyA9PSBGMkZTX05PREVfSU5PKHNiaSkpCj4gPiAtICAgICAgICAgICAgICAgcmV0dXJuIHRy dWU7Cj4gPiAgI2lmZGVmIENPTkZJR19GMkZTX0ZTX0NPTVBSRVNTSU9OCj4gPiAgICAgICAgIGlm ICh0ZXN0X29wdChzYmksIENPTVBSRVNTX0NBQ0hFKSAmJiBpbm8gPT0gRjJGU19DT01QUkVTU19J Tk8oc2JpKSkKPiA+ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKPiA+IEBAIC02MjIsMTAg KzYxOCw3IEBAIHN0cnVjdCBpbm9kZSAqZjJmc19pZ2V0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2Is IHVuc2lnbmVkIGxvbmcgaW5vKQo+ID4gIG1ha2Vfbm93Ogo+ID4gICAgICAgICBmMmZzX3NldF9p bm9kZV9mbGFncyhpbm9kZSk7Cj4gPgo+ID4gLSAgICAgICBpZiAoaW5vID09IEYyRlNfTk9ERV9J Tk8oc2JpKSkgewo+ID4gLSAgICAgICAgICAgICAgIGlub2RlLT5pX21hcHBpbmctPmFfb3BzID0g JmYyZnNfbm9kZV9hb3BzOwo+ID4gLSAgICAgICAgICAgICAgIG1hcHBpbmdfc2V0X2dmcF9tYXNr KGlub2RlLT5pX21hcHBpbmcsIEdGUF9OT0ZTKTsKPiA+IC0gICAgICAgfSBlbHNlIGlmIChpbm8g PT0gRjJGU19DT01QUkVTU19JTk8oc2JpKSkgewo+ID4gKyAgICAgICBpZiAoaW5vID09IEYyRlNf Q09NUFJFU1NfSU5PKHNiaSkpIHsKPiA+ICAjaWZkZWYgQ09ORklHX0YyRlNfRlNfQ09NUFJFU1NJ T04KPiA+ICAgICAgICAgICAgICAgICBpbm9kZS0+aV9tYXBwaW5nLT5hX29wcyA9ICZmMmZzX2Nv bXByZXNzX2FvcHM7Cj4gPiAgICAgICAgICAgICAgICAgLyoKPiA+IEBAIC02OTIsMTkgKzY4NSwy MCBAQCBzdHJ1Y3QgaW5vZGUgKmYyZnNfaWdldF9yZXRyeShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNi LCB1bnNpZ25lZCBsb25nIGlubykKPiA+ICAgICAgICAgcmV0dXJuIGlub2RlOwo+ID4gIH0KPiA+ Cj4gPiAtdm9pZCBmMmZzX3VwZGF0ZV9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3Qg Zm9saW8gKm5vZGVfZm9saW8pCj4gPiArdm9pZCBmMmZzX3VwZGF0ZV9pbm9kZShzdHJ1Y3QgaW5v ZGUgKmlub2RlLAo+ID4gKyAgICAgICAgICAgICAgIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAq bm9kZV9lbnRyeSkKPiA+ICB7Cj4gPiAgICAgICAgIHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSA9 IEYyRlNfSV9TQihpbm9kZSk7Cj4gPiAgICAgICAgIHN0cnVjdCBmMmZzX2lub2RlX2luZm8gKmZp ID0gRjJGU19JKGlub2RlKTsKPiA+ICAgICAgICAgc3RydWN0IGYyZnNfaW5vZGUgKnJpOwo+ID4g ICAgICAgICBzdHJ1Y3QgZXh0ZW50X3RyZWUgKmV0ID0gZmktPmV4dGVudF90cmVlW0VYX1JFQURd Owo+ID4KPiA+IC0gICAgICAgZjJmc19mb2xpb193YWl0X3dyaXRlYmFjayhub2RlX2ZvbGlvLCBO T0RFLCB0cnVlLCB0cnVlKTsKPiA+IC0gICAgICAgZm9saW9fbWFya19kaXJ0eShub2RlX2ZvbGlv KTsKPiA+ICsgICAgICAgZjJmc19jYWNoZV93YWl0X3dyaXRlYmFjayhub2RlX2VudHJ5KTsKPiA+ ICsgICAgICAgZjJmc19tYXJrX2NhY2hlX2RpcnR5KG5vZGVfZW50cnkpOwo+ID4KPiA+ICAgICAg ICAgZjJmc19pbm9kZV9zeW5jZWQoaW5vZGUpOwo+ID4KPiA+IC0gICAgICAgcmkgPSBGMkZTX0lO T0RFKG5vZGVfZm9saW8pOwo+ID4gKyAgICAgICByaSA9IEYyRlNfSU5PREUobm9kZV9lbnRyeSk7 Cj4gPgo+ID4gICAgICAgICByaS0+aV9tb2RlID0gY3B1X3RvX2xlMTYoaW5vZGUtPmlfbW9kZSk7 Cj4gPiAgICAgICAgIHJpLT5pX2FkdmlzZSA9IGZpLT5pX2FkdmlzZTsKPiA+IEBAIC03ODAsMjcg Kzc3NCwyNyBAQCB2b2lkIGYyZnNfdXBkYXRlX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0 cnVjdCBmb2xpbyAqbm9kZV9mb2xpbykKPiA+ICAgICAgICAgICAgICAgICB9Cj4gPiAgICAgICAg IH0KPiA+Cj4gPiAtICAgICAgIF9fc2V0X2lub2RlX3JkZXYoaW5vZGUsIG5vZGVfZm9saW8pOwo+ ID4gKyAgICAgICBfX3NldF9pbm9kZV9yZGV2KGlub2RlLCBub2RlX2VudHJ5KTsKPiA+Cj4gPiAg ICAgICAgIC8qIGRlbGV0ZWQgaW5vZGUgKi8KPiA+ICAgICAgICAgaWYgKGlub2RlLT5pX25saW5r ID09IDApCj4gPiAtICAgICAgICAgICAgICAgZm9saW9fY2xlYXJfZjJmc19pbmxpbmUobm9kZV9m b2xpbyk7Cj4gPiArICAgICAgICAgICAgICAgZjJmc19jYWNoZV9jbGVhcl9pbmxpbmUobm9kZV9l bnRyeSk7Cj4gPgo+ID4gICAgICAgICBpbml0X2lkaXNrX3RpbWUoaW5vZGUpOwo+ID4gICNpZmRl ZiBDT05GSUdfRjJGU19DSEVDS19GUwo+ID4gLSAgICAgICBmMmZzX2lub2RlX2Noa3N1bV9zZXQo RjJGU19JX1NCKGlub2RlKSwgbm9kZV9mb2xpbyk7Cj4gPiArICAgICAgIGYyZnNfaW5vZGVfY2hr c3VtX3NldChGMkZTX0lfU0IoaW5vZGUpLCBub2RlX2VudHJ5KTsKPiA+ICAjZW5kaWYKPiA+ICB9 Cj4gPgo+ID4gLXZvaWQgZjJmc191cGRhdGVfaW5vZGVfcGFnZShzdHJ1Y3QgaW5vZGUgKmlub2Rl KQo+ID4gK3ZvaWQgZjJmc191cGRhdGVfaW5vZGVfY2FjaGUoc3RydWN0IGlub2RlICppbm9kZSkK PiA+ICB7Cj4gPiAgICAgICAgIHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSA9IEYyRlNfSV9TQihp bm9kZSk7Cj4gPiAtICAgICAgIHN0cnVjdCBmb2xpbyAqbm9kZV9mb2xpbzsKPiA+ICsgICAgICAg c3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICpub2RlX2VudHJ5Owo+ID4gICAgICAgICBpbnQgY291 bnQgPSAwOwo+ID4gIHJldHJ5Ogo+ID4gLSAgICAgICBub2RlX2ZvbGlvID0gZjJmc19nZXRfaW5v ZGVfZm9saW8oc2JpLCBpbm9kZS0+aV9pbm8pOwo+ID4gLSAgICAgICBpZiAoSVNfRVJSKG5vZGVf Zm9saW8pKSB7Cj4gPiAtICAgICAgICAgICAgICAgaW50IGVyciA9IFBUUl9FUlIobm9kZV9mb2xp byk7Cj4gPiArICAgICAgIG5vZGVfZW50cnkgPSBmMmZzX2dldF9pbm9kZV9jYWNoZShzYmksIGlu b2RlLT5pX2lubyk7Cj4gPiArICAgICAgIGlmIChJU19FUlIobm9kZV9lbnRyeSkpIHsKPiA+ICsg ICAgICAgICAgICAgICBpbnQgZXJyID0gUFRSX0VSUihub2RlX2VudHJ5KTsKPiA+Cj4gPiAgICAg ICAgICAgICAgICAgLyogVGhlIG5vZGUgYmxvY2sgd2FzIHRydW5jYXRlZC4gKi8KPiA+ICAgICAg ICAgICAgICAgICBpZiAoZXJyID09IC1FTk9FTlQpCj4gPiBAQCAtODE2LDE3ICs4MTAsMTQgQEAg dm9pZCBmMmZzX3VwZGF0ZV9pbm9kZV9wYWdlKHN0cnVjdCBpbm9kZSAqaW5vZGUpCj4gPiAgICAg ICAgICAgICAgICAgZjJmc19zdG9wX2NoZWNrcG9pbnQoc2JpLCBmYWxzZSwgU1RPUF9DUF9SRUFT T05fVVBEQVRFX0lOT0RFKTsKPiA+ICAgICAgICAgICAgICAgICByZXR1cm47Cj4gPiAgICAgICAg IH0KPiA+IC0gICAgICAgZjJmc191cGRhdGVfaW5vZGUoaW5vZGUsIG5vZGVfZm9saW8pOwo+ID4g LSAgICAgICBmMmZzX2ZvbGlvX3B1dChub2RlX2ZvbGlvLCB0cnVlKTsKPiA+ICsgICAgICAgZjJm c191cGRhdGVfaW5vZGUoaW5vZGUsIG5vZGVfZW50cnkpOwo+ID4gKyAgICAgICBmMmZzX3B1dF9j YWNoZShub2RlX2VudHJ5LCB0cnVlKTsKPiA+ICB9Cj4gPgo+ID4gIGludCBmMmZzX3dyaXRlX2lu b2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd2JjKQo+ ID4gIHsKPiA+ICAgICAgICAgc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpID0gRjJGU19JX1NCKGlu b2RlKTsKPiA+Cj4gPiAtICAgICAgIGlmIChpbm9kZS0+aV9pbm8gPT0gRjJGU19OT0RFX0lOTyhz YmkpKQo+ID4gLSAgICAgICAgICAgICAgIHJldHVybiAwOwo+ID4gLQo+ID4gICAgICAgICAvKgo+ ID4gICAgICAgICAgKiBhdGltZSBjb3VsZCBiZSB1cGRhdGVkIHdpdGhvdXQgZGlydHlpbmcgZjJm cyBpbm9kZSBpbiBsYXp5dGltZSBtb2RlCj4gPiAgICAgICAgICAqLwo+ID4gQEAgLTg1MCw3ICs4 NDEsNyBAQCBpbnQgZjJmc193cml0ZV9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3Qg d3JpdGViYWNrX2NvbnRyb2wgKndiYykKPiA+ICAgICAgICAgICogV2UgbmVlZCB0byBiYWxhbmNl IGZzIGhlcmUgdG8gcHJldmVudCBmcm9tIHByb2R1Y2luZyBkaXJ0eSBub2RlIHBhZ2VzCj4gPiAg ICAgICAgICAqIGR1cmluZyB0aGUgdXJnZW50IGNsZWFuaW5nIHRpbWUgd2hlbiBydW5uaW5nIG91 dCBvZiBmcmVlIHNlY3Rpb25zLgo+ID4gICAgICAgICAgKi8KPiA+IC0gICAgICAgZjJmc191cGRh dGVfaW5vZGVfcGFnZShpbm9kZSk7Cj4gPiArICAgICAgIGYyZnNfdXBkYXRlX2lub2RlX2NhY2hl KGlub2RlKTsKPiA+ICAgICAgICAgaWYgKHdiYyAmJiB3YmMtPm5yX3RvX3dyaXRlKQo+ID4gICAg ICAgICAgICAgICAgIGYyZnNfYmFsYW5jZV9mcyhzYmksIHRydWUpOwo+ID4gICAgICAgICByZXR1 cm4gMDsKPiA+IEBAIC05MTcsOCArOTA4LDcgQEAgc3RhdGljIGJvb2wgZjJmc19wcmVfZXZpY3Rf aW5vZGUoc3RydWN0IGlub2RlICppbm9kZSkKPiA+ICAgICAgICAgICAgIHRlc3Rfb3B0KHNiaSwg Q09NUFJFU1NfQ0FDSEUpICYmIGYyZnNfY29tcHJlc3NlZF9maWxlKGlub2RlKSkKPiA+ICAgICAg ICAgICAgICAgICBmMmZzX2ludmFsaWRhdGVfY29tcHJlc3NfcGFnZXMoc2JpLCBpbm9kZS0+aV9p bm8pOwo+ID4KPiA+IC0gICAgICAgaWYgKGlub2RlLT5pX2lubyA9PSBGMkZTX05PREVfSU5PKHNi aSkgfHwKPiA+IC0gICAgICAgICAgIGlub2RlLT5pX2lubyA9PSBGMkZTX0NPTVBSRVNTX0lOTyhz YmkpKQo+ID4gKyAgICAgICBpZiAoaW5vZGUtPmlfaW5vID09IEYyRlNfQ09NUFJFU1NfSU5PKHNi aSkpCj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cj4gPgo+ID4gICAgICAgICBmMmZz X2J1Z19vbihzYmksIGdldF9kaXJ0eV9wYWdlcyhpbm9kZSkpOwo+ID4gQEAgLTk2Miw3ICs5NTIs NyBAQCBzdGF0aWMgdm9pZCBmMmZzX2RlbGV0ZV9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKQo+ ID4gICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfY2hlY2s7Cj4gPgo+ID4gICAgICAgICBmMmZz X2xvY2tfb3Aoc2JpLCAmbGMpOwo+ID4gLSAgICAgICBlcnIgPSBmMmZzX3JlbW92ZV9pbm9kZV9w YWdlKGlub2RlKTsKPiA+ICsgICAgICAgZXJyID0gZjJmc19yZW1vdmVfaW5vZGVfY2FjaGUoaW5v ZGUpOwo+ID4gICAgICAgICBmMmZzX3VubG9ja19vcChzYmksICZsYyk7Cj4gPgo+ID4gICAgICAg ICBpZiAoZXJyID09IC1FTk9FTlQpIHsKPiA+IEBAIC05OTQsMTMgKzk4NCwxMyBAQCBzdGF0aWMg dm9pZCBmMmZzX2RlbGV0ZV9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKQo+ID4gICAgICAgICBp ZiAoIWVycikKPiA+ICAgICAgICAgICAgICAgICBnb3RvIHVuZnJlZXplX291dDsKPiA+Cj4gPiAt ICAgICAgIGYyZnNfdXBkYXRlX2lub2RlX3BhZ2UoaW5vZGUpOwo+ID4gKyAgICAgICBmMmZzX3Vw ZGF0ZV9pbm9kZV9jYWNoZShpbm9kZSk7Cj4gPgo+ID4gICAgICAgICBpZiAoZHF1b3RfaW5pdGlh bGl6ZV9uZWVkZWQoaW5vZGUpKQo+ID4gICAgICAgICAgICAgICAgIHNldF9zYmlfZmxhZyhzYmks IFNCSV9RVU9UQV9ORUVEX1JFUEFJUik7Cj4gPgo+ID4gICAgICAgICAvKgo+ID4gLSAgICAgICAg KiBJZiBib3RoIGYyZnNfdHJ1bmNhdGUoKSBhbmQgZjJmc191cGRhdGVfaW5vZGVfcGFnZSgpIGZh aWxlZAo+ID4gKyAgICAgICAgKiBJZiBib3RoIGYyZnNfdHJ1bmNhdGUoKSBhbmQgZjJmc191cGRh dGVfaW5vZGVfY2FjaGUoKSBmYWlsZWQKPiA+ICAgICAgICAgICogZHVlIHRvIGZ1enplZCBjb3Jy dXB0ZWQgaW5vZGUsIGNhbGwgZjJmc19pbm9kZV9zeW5jZWQoKSB0bwo+ID4gICAgICAgICAgKiBh dm9pZCB0cmlnZ2VyaW5nIGxhdGVyIGYyZnNfYnVnX29uKCkuCj4gPiAgICAgICAgICAqLwo+ID4g QEAgLTEwNDQsMTAgKzEwMzQsOSBAQCBzdGF0aWMgdm9pZCBmMmZzX3Bvc3RfZXZpY3RfaW5vZGUo c3RydWN0IGlub2RlICppbm9kZSkKPiA+Cj4gPiAgICAgICAgIC8qIGZvciB0aGUgY2FzZSBmMmZz X25ld19pbm9kZSgpIHdhcyBmYWlsZWQsIC5pX2lubyBpcyB6ZXJvLCBza2lwIGl0ICovCj4gPiAg ICAgICAgIGlmIChpbm9kZS0+aV9pbm8pCj4gPiAtICAgICAgICAgICAgICAgaW52YWxpZGF0ZV9t YXBwaW5nX3BhZ2VzKE5PREVfTUFQUElORyhzYmkpLCBpbm9kZS0+aV9pbm8sCj4gPiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlub2RlLT5p X2lubyk7Cj4gPiArICAgICAgICAgICAgICAgZjJmc19pbnZhbGlkYXRlX25vZGVfY2FjaGUoc2Jp LCBpbm9kZS0+aV9pbm8pOwo+ID4gICAgICAgICBpZiAoeG5pZCkKPiA+IC0gICAgICAgICAgICAg ICBpbnZhbGlkYXRlX21hcHBpbmdfcGFnZXMoTk9ERV9NQVBQSU5HKHNiaSksIHhuaWQsIHhuaWQp Owo+ID4gKyAgICAgICAgICAgICAgIGYyZnNfaW52YWxpZGF0ZV9ub2RlX2NhY2hlKHNiaSwgeG5p ZCk7Cj4gPgo+ID4gICAgICAgICBpZiAoIWlub2RlLT5pX25saW5rKQo+ID4gICAgICAgICAgICAg ICAgIGdvdG8gc2tpcF9yZWNvcmQ7Cj4gPiBAQCAtMTEyMiw3ICsxMTExLDcgQEAgdm9pZCBmMmZz X2hhbmRsZV9mYWlsZWRfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwKPiA+ICAgICAgICAgICog d2UgbXVzdCBjYWxsIHRoaXMgdG8gYXZvaWQgaW5vZGUgYmVpbmcgcmVtYWluZWQgYXMgZGlydHks IHJlc3VsdGluZwo+ID4gICAgICAgICAgKiBpbiBhIHBhbmljIHdoZW4gZmx1c2hpbmcgZGlydHkg aW5vZGVzIGluIGdkaXJ0eV9saXN0Lgo+ID4gICAgICAgICAgKi8KPiA+IC0gICAgICAgZjJmc191 cGRhdGVfaW5vZGVfcGFnZShpbm9kZSk7Cj4gPiArICAgICAgIGYyZnNfdXBkYXRlX2lub2RlX2Nh Y2hlKGlub2RlKTsKPiA+ICAgICAgICAgZjJmc19pbm9kZV9zeW5jZWQoaW5vZGUpOwo+ID4KPiA+ ICAgICAgICAgLyogZG9uJ3QgbWFrZSBiYWQgaW5vZGUsIHNpbmNlIGl0IGJlY29tZXMgYSByZWd1 bGFyIGZpbGUuICovCj4gPiBkaWZmIC0tZ2l0IGEvZnMvZjJmcy9uYW1laS5jIGIvZnMvZjJmcy9u YW1laS5jCj4gPiBpbmRleCBmZjg2ZWUwNzI5MGQuLjM4ZmNlYThiNzJiZiAxMDA2NDQKPiA+IC0t LSBhL2ZzL2YyZnMvbmFtZWkuYwo+ID4gKysrIGIvZnMvZjJmcy9uYW1laS5jCj4gPiBAQCAtNDcz LDEyICs0NzMsMTMgQEAgc3RhdGljIGludCBmMmZzX2xpbmsoc3RydWN0IGRlbnRyeSAqb2xkX2Rl bnRyeSwgc3RydWN0IGlub2RlICpkaXIsCj4gPgo+ID4gIHN0cnVjdCBkZW50cnkgKmYyZnNfZ2V0 X3BhcmVudChzdHJ1Y3QgZGVudHJ5ICpjaGlsZCkKPiA+ICB7Cj4gPiAtICAgICAgIHN0cnVjdCBm b2xpbyAqZm9saW87Cj4gPiAtICAgICAgIHVuc2lnbmVkIGxvbmcgaW5vID0gZjJmc19pbm9kZV9i eV9uYW1lKGRfaW5vZGUoY2hpbGQpLCAmZG90ZG90X25hbWUsICZmb2xpbyk7Cj4gPiArICAgICAg IHZvaWQgKmRlbnRyeV9ibG9jayA9IE5VTEw7Cj4gPiArICAgICAgIHVuc2lnbmVkIGxvbmcgaW5v ID0gZjJmc19pbm9kZV9ieV9uYW1lKGRfaW5vZGUoY2hpbGQpLAo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZkb3Rkb3RfbmFtZSwgJmRlbnRyeV9ibG9jayk7Cj4g Pgo+ID4gICAgICAgICBpZiAoIWlubykgewo+ID4gLSAgICAgICAgICAgICAgIGlmIChJU19FUlIo Zm9saW8pKQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUl9DQVNUKGZvbGlv KTsKPiA+ICsgICAgICAgICAgICAgICBpZiAoSVNfRVJSKGRlbnRyeV9ibG9jaykpCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJSX0NBU1QoZGVudHJ5X2Jsb2NrKTsKPiA+ICAg ICAgICAgICAgICAgICByZXR1cm4gRVJSX1BUUigtRU5PRU5UKTsKPiA+ICAgICAgICAgfQo+ID4g ICAgICAgICByZXR1cm4gZF9vYnRhaW5fYWxpYXMoZjJmc19pZ2V0KGNoaWxkLT5kX3NiLCBpbm8p KTsKPiA+IEBAIC00ODksNyArNDkwLDcgQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmYyZnNfbG9v a3VwKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksCj4gPiAgewo+ID4g ICAgICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gTlVMTDsKPiA+ICAgICAgICAgc3RydWN0IGYy ZnNfZGlyX2VudHJ5ICpkZTsKPiA+IC0gICAgICAgc3RydWN0IGZvbGlvICpmb2xpbzsKPiA+ICsg ICAgICAgdm9pZCAqZGVudHJ5X2Jsb2NrID0gTlVMTDsKPiA+ICAgICAgICAgc3RydWN0IGRlbnRy eSAqbmV3Owo+ID4gICAgICAgICBuaWRfdCBpbm8gPSAtMTsKPiA+ICAgICAgICAgaW50IGVyciA9 IDA7Cj4gPiBAQCAtNTA3LDEyICs1MDgsMTIgQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmYyZnNf bG9va3VwKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksCj4gPiAgICAg ICAgICAgICAgICAgZ290byBvdXRfc3BsaWNlOwo+ID4gICAgICAgICBpZiAoZXJyKQo+ID4gICAg ICAgICAgICAgICAgIGdvdG8gb3V0Owo+ID4gLSAgICAgICBkZSA9IF9fZjJmc19maW5kX2VudHJ5 KGRpciwgJmZuYW1lLCAmZm9saW8pOwo+ID4gKyAgICAgICBkZSA9IF9fZjJmc19maW5kX2VudHJ5 KGRpciwgJmZuYW1lLCAmZGVudHJ5X2Jsb2NrKTsKPiA+ICAgICAgICAgZjJmc19mcmVlX2ZpbGVu YW1lKCZmbmFtZSk7Cj4gPgo+ID4gICAgICAgICBpZiAoIWRlKSB7Cj4gPiAtICAgICAgICAgICAg ICAgaWYgKElTX0VSUihmb2xpbykpIHsKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGVyciA9 IFBUUl9FUlIoZm9saW8pOwo+ID4gKyAgICAgICAgICAgICAgIGlmIChJU19FUlIoZGVudHJ5X2Js b2NrKSkgewo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gUFRSX0VSUihkZW50cnlf YmxvY2spOwo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7Cj4gPiAgICAgICAg ICAgICAgICAgfQo+ID4gICAgICAgICAgICAgICAgIGVyciA9IC1FTk9FTlQ7Cj4gPiBAQCAtNTIw LDcgKzUyMSw3IEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpmMmZzX2xvb2t1cChzdHJ1Y3QgaW5v ZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LAo+ID4gICAgICAgICB9Cj4gPgo+ID4gICAg ICAgICBpbm8gPSBsZTMyX3RvX2NwdShkZS0+aW5vKTsKPiA+IC0gICAgICAgZjJmc19mb2xpb19w dXQoZm9saW8sIGZhbHNlKTsKPiA+ICsgICAgICAgZjJmc19wdXRfZGVudHJ5X2Jsb2NrKGRlbnRy eV9ibG9jaywgZmFsc2UpOwo+ID4KPiA+ICAgICAgICAgaW5vZGUgPSBmMmZzX2lnZXQoZGlyLT5p X3NiLCBpbm8pOwo+ID4gICAgICAgICBpZiAoSVNfRVJSKGlub2RlKSkgewo+ID4gQEAgLTU3Miw3 ICs1NzMsNyBAQCBzdGF0aWMgaW50IF9fZG9fdW5saW5rKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1 Y3QgaW5vZGUgKmlub2RlLAo+ID4gICAgICAgICBzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkgPSBG MkZTX0lfU0IoZGlyKTsKPiA+ICAgICAgICAgc3RydWN0IGYyZnNfZGlyX2VudHJ5ICpkZTsKPiA+ ICAgICAgICAgc3RydWN0IGYyZnNfbG9ja19jb250ZXh0IGxjOwo+ID4gLSAgICAgICBzdHJ1Y3Qg Zm9saW8gKmZvbGlvOwo+ID4gKyAgICAgICB2b2lkICpkZW50cnlfYmxvY2sgPSBOVUxMOwo+ID4g ICAgICAgICBpbnQgZXJyOwo+ID4KPiA+ICAgICAgICAgaWYgKElTX0RFVklDRV9BTElBU0lORyhp bm9kZSkpCj4gPiBAQCAtNTg4LDkgKzU4OSw5IEBAIHN0YXRpYyBpbnQgX19kb191bmxpbmsoc3Ry dWN0IGlub2RlICpkaXIsIHN0cnVjdCBpbm9kZSAqaW5vZGUsCj4gPiAgICAgICAgIGlmIChlcnIp Cj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKPiA+Cj4gPiAtICAgICAgIGRlID0gZjJm c19maW5kX2VudHJ5KGRpciwgbmFtZSwgJmZvbGlvKTsKPiA+ICsgICAgICAgZGUgPSBmMmZzX2Zp bmRfZW50cnkoZGlyLCBuYW1lLCAmZGVudHJ5X2Jsb2NrKTsKPiA+ICAgICAgICAgaWYgKCFkZSkK PiA+IC0gICAgICAgICAgICAgICByZXR1cm4gSVNfRVJSKGZvbGlvKSA/IFBUUl9FUlIoZm9saW8p IDogMDsKPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gSVNfRVJSKGRlbnRyeV9ibG9jaykgPyBQ VFJfRVJSKGRlbnRyeV9ibG9jaykgOiAwOwo+ID4KPiA+ICAgICAgICAgaWYgKHVubGlrZWx5KGlu b2RlLT5pX25saW5rID09IDApKSB7Cj4gPiAgICAgICAgICAgICAgICAgZjJmc193YXJuKHNiaSwg IiVzOiBpbm9kZSAoaW5vPSVsbHgpIGhhcyB6ZXJvIGlfbmxpbmsiLAo+ID4gQEAgLTYxMCw3ICs2 MTEsNyBAQCBzdGF0aWMgaW50IF9fZG9fdW5saW5rKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3Qg aW5vZGUgKmlub2RlLAo+ID4gICAgICAgICAgICAgICAgIGYyZnNfdW5sb2NrX29wKHNiaSwgJmxj KTsKPiA+ICAgICAgICAgICAgICAgICBnb3RvIGVycl9vdXQ7Cj4gPiAgICAgICAgIH0KPiA+IC0g ICAgICAgZjJmc19kZWxldGVfZW50cnkoZGUsIGZvbGlvLCBkaXIsIGlub2RlKTsKPiA+ICsgICAg ICAgZjJmc19kZWxldGVfZW50cnkoZGUsIGRlbnRyeV9ibG9jaywgZGlyLCBpbm9kZSk7Cj4gPiAg ICAgICAgIGYyZnNfdW5sb2NrX29wKHNiaSwgJmxjKTsKPiA+ICAgICAgICAgcmV0dXJuIDA7Cj4g Pgo+ID4gQEAgLTYxOCw3ICs2MTksNyBAQCBzdGF0aWMgaW50IF9fZG9fdW5saW5rKHN0cnVjdCBp bm9kZSAqZGlyLCBzdHJ1Y3QgaW5vZGUgKmlub2RlLAo+ID4gICAgICAgICBlcnIgPSAtRUZTQ09S UlVQVEVEOwo+ID4gICAgICAgICBzZXRfc2JpX2ZsYWcoc2JpLCBTQklfTkVFRF9GU0NLKTsKPiA+ ICBlcnJfb3V0Ogo+ID4gLSAgICAgICBmMmZzX2ZvbGlvX3B1dChmb2xpbywgZmFsc2UpOwo+ID4g KyAgICAgICBmMmZzX3B1dF9kZW50cnlfYmxvY2soZGVudHJ5X2Jsb2NrLCBmYWxzZSk7Cj4gPiAg ICAgICAgIHJldHVybiBlcnI7Cj4gPiAgfQo+ID4KPiA+IEBAIC05NjcsOCArOTY4LDkgQEAgc3Rh dGljIGludCBmMmZzX3JlbmFtZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGlub2Rl ICpvbGRfZGlyLAo+ID4gICAgICAgICBzdHJ1Y3QgaW5vZGUgKm9sZF9pbm9kZSA9IGRfaW5vZGUo b2xkX2RlbnRyeSk7Cj4gPiAgICAgICAgIHN0cnVjdCBpbm9kZSAqbmV3X2lub2RlID0gZF9pbm9k ZShuZXdfZGVudHJ5KTsKPiA+ICAgICAgICAgc3RydWN0IGlub2RlICp3aGl0ZW91dCA9IE5VTEw7 Cj4gPiAtICAgICAgIHN0cnVjdCBmb2xpbyAqb2xkX2Rpcl9mb2xpbyA9IE5VTEw7Cj4gPiAtICAg ICAgIHN0cnVjdCBmb2xpbyAqb2xkX2ZvbGlvLCAqbmV3X2ZvbGlvID0gTlVMTDsKPiA+ICsgICAg ICAgdm9pZCAqb2xkX2Rpcl9ibG9jayA9IE5VTEw7Cj4gPiArICAgICAgIHZvaWQgKm9sZF9ibG9j ayA9IE5VTEw7Cj4gPiArICAgICAgIHZvaWQgKm5ld19ibG9jayA9IE5VTEw7Cj4gPiAgICAgICAg IHN0cnVjdCBmMmZzX2Rpcl9lbnRyeSAqb2xkX2Rpcl9lbnRyeSA9IE5VTEw7Cj4gPiAgICAgICAg IHN0cnVjdCBmMmZzX2Rpcl9lbnRyeSAqb2xkX2VudHJ5Owo+ID4gICAgICAgICBzdHJ1Y3QgZjJm c19kaXJfZW50cnkgKm5ld19lbnRyeTsKPiA+IEBAIC0xMDMyLDE4ICsxMDM0LDE4IEBAIHN0YXRp YyBpbnQgZjJmc19yZW5hbWUoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAq b2xkX2RpciwKPiA+ICAgICAgICAgfQo+ID4KPiA+ICAgICAgICAgZXJyID0gLUVOT0VOVDsKPiA+ IC0gICAgICAgb2xkX2VudHJ5ID0gZjJmc19maW5kX2VudHJ5KG9sZF9kaXIsICZvbGRfZGVudHJ5 LT5kX25hbWUsICZvbGRfZm9saW8pOwo+ID4gKyAgICAgICBvbGRfZW50cnkgPSBmMmZzX2ZpbmRf ZW50cnkob2xkX2RpciwgJm9sZF9kZW50cnktPmRfbmFtZSwgJm9sZF9ibG9jayk7Cj4gPiAgICAg ICAgIGlmICghb2xkX2VudHJ5KSB7Cj4gPiAtICAgICAgICAgICAgICAgaWYgKElTX0VSUihvbGRf Zm9saW8pKQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gUFRSX0VSUihvbGRfZm9s aW8pOwo+ID4gKyAgICAgICAgICAgICAgIGlmIChJU19FUlIob2xkX2Jsb2NrKSkKPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgIGVyciA9IFBUUl9FUlIob2xkX2Jsb2NrKTsKPiA+ICAgICAgICAg ICAgICAgICBnb3RvIG91dDsKPiA+ICAgICAgICAgfQo+ID4KPiA+ICAgICAgICAgaWYgKG9sZF9p c19kaXIgJiYgb2xkX2RpciAhPSBuZXdfZGlyKSB7Cj4gPiAtICAgICAgICAgICAgICAgb2xkX2Rp cl9lbnRyeSA9IGYyZnNfcGFyZW50X2RpcihvbGRfaW5vZGUsICZvbGRfZGlyX2ZvbGlvKTsKPiA+ ICsgICAgICAgICAgICAgICBvbGRfZGlyX2VudHJ5ID0gZjJmc19wYXJlbnRfZGlyKG9sZF9pbm9k ZSwgJm9sZF9kaXJfYmxvY2spOwo+ID4gICAgICAgICAgICAgICAgIGlmICghb2xkX2Rpcl9lbnRy eSkgewo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgaWYgKElTX0VSUihvbGRfZGlyX2ZvbGlv KSkKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gUFRSX0VSUihvbGRf ZGlyX2ZvbGlvKTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChJU19FUlIob2xkX2Rp cl9ibG9jaykpCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IFBUUl9F UlIob2xkX2Rpcl9ibG9jayk7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG91dF9v bGQ7Cj4gPiAgICAgICAgICAgICAgICAgfQo+ID4gICAgICAgICB9Cj4gPiBAQCAtMTA2MCwxMCAr MTA2MiwxMCBAQCBzdGF0aWMgaW50IGYyZnNfcmVuYW1lKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFw LCBzdHJ1Y3QgaW5vZGUgKm9sZF9kaXIsCj4gPgo+ID4gICAgICAgICAgICAgICAgIGVyciA9IC1F Tk9FTlQ7Cj4gPiAgICAgICAgICAgICAgICAgbmV3X2VudHJ5ID0gZjJmc19maW5kX2VudHJ5KG5l d19kaXIsICZuZXdfZGVudHJ5LT5kX25hbWUsCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmbmV3X2ZvbGlvKTsKPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZXdfYmxvY2spOwo+ID4gICAgICAgICAg ICAgICAgIGlmICghbmV3X2VudHJ5KSB7Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBpZiAo SVNfRVJSKG5ld19mb2xpbykpCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVy ciA9IFBUUl9FUlIobmV3X2ZvbGlvKTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChJ U19FUlIobmV3X2Jsb2NrKSkKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJy ID0gUFRSX0VSUihuZXdfYmxvY2spOwo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgZ290byBv dXRfZGlyOwo+ID4gICAgICAgICAgICAgICAgIH0KPiA+Cj4gPiBAQCAtMTA3NSw4ICsxMDc3LDgg QEAgc3RhdGljIGludCBmMmZzX3JlbmFtZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0 IGlub2RlICpvbGRfZGlyLAo+ID4gICAgICAgICAgICAgICAgIGlmIChlcnIpCj4gPiAgICAgICAg ICAgICAgICAgICAgICAgICBnb3RvIHB1dF9vdXRfZGlyOwo+ID4KPiA+IC0gICAgICAgICAgICAg ICBmMmZzX3NldF9saW5rKG5ld19kaXIsIG5ld19lbnRyeSwgbmV3X2ZvbGlvLCBvbGRfaW5vZGUp Owo+ID4gLSAgICAgICAgICAgICAgIG5ld19mb2xpbyA9IE5VTEw7Cj4gPiArICAgICAgICAgICAg ICAgZjJmc19zZXRfbGluayhuZXdfZGlyLCBuZXdfZW50cnksIG5ld19ibG9jaywgb2xkX2lub2Rl KTsKPiA+ICsgICAgICAgICAgICAgICBuZXdfYmxvY2sgPSBOVUxMOwo+ID4KPiA+ICAgICAgICAg ICAgICAgICBpbm9kZV9zZXRfY3RpbWVfY3VycmVudChuZXdfaW5vZGUpOwo+ID4gICAgICAgICAg ICAgICAgIGYyZnNfZG93bl93cml0ZSgmRjJGU19JKG5ld19pbm9kZSktPmlfc2VtKTsKPiA+IEBA IC0xMTE1LDggKzExMTcsOCBAQCBzdGF0aWMgaW50IGYyZnNfcmVuYW1lKHN0cnVjdCBtbnRfaWRt YXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKm9sZF9kaXIsCj4gPiAgICAgICAgIGlub2RlX3NldF9j dGltZV9jdXJyZW50KG9sZF9pbm9kZSk7Cj4gPiAgICAgICAgIGYyZnNfbWFya19pbm9kZV9kaXJ0 eV9zeW5jKG9sZF9pbm9kZSwgdHJ1ZSk7Cj4gPgo+ID4gLSAgICAgICBmMmZzX2RlbGV0ZV9lbnRy eShvbGRfZW50cnksIG9sZF9mb2xpbywgb2xkX2RpciwgTlVMTCk7Cj4gPiAtICAgICAgIG9sZF9m b2xpbyA9IE5VTEw7Cj4gPiArICAgICAgIGYyZnNfZGVsZXRlX2VudHJ5KG9sZF9lbnRyeSwgb2xk X2Jsb2NrLCBvbGRfZGlyLCBOVUxMKTsKPiA+ICsgICAgICAgb2xkX2Jsb2NrID0gTlVMTDsKPiA+ Cj4gPiAgICAgICAgIGlmICh3aGl0ZW91dCkgewo+ID4gICAgICAgICAgICAgICAgIHNldF9pbm9k ZV9mbGFnKHdoaXRlb3V0LCBGSV9JTkNfTElOSyk7Cj4gPiBAQCAtMTEzNCw3ICsxMTM2LDcgQEAg c3RhdGljIGludCBmMmZzX3JlbmFtZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGlu b2RlICpvbGRfZGlyLAo+ID4gICAgICAgICB9Cj4gPgo+ID4gICAgICAgICBpZiAob2xkX2Rpcl9l bnRyeSkKPiA+IC0gICAgICAgICAgICAgICBmMmZzX3NldF9saW5rKG9sZF9pbm9kZSwgb2xkX2Rp cl9lbnRyeSwgb2xkX2Rpcl9mb2xpbywgbmV3X2Rpcik7Cj4gPiArICAgICAgICAgICAgICAgZjJm c19zZXRfbGluayhvbGRfaW5vZGUsIG9sZF9kaXJfZW50cnksIG9sZF9kaXJfYmxvY2ssIG5ld19k aXIpOwo+ID4gICAgICAgICBpZiAob2xkX2lzX2RpcikKPiA+ICAgICAgICAgICAgICAgICBmMmZz X2lfbGlua3Nfd3JpdGUob2xkX2RpciwgZmFsc2UpOwo+ID4KPiA+IEBAIC0xMTU4LDEyICsxMTYw LDEyIEBAIHN0YXRpYyBpbnQgZjJmc19yZW5hbWUoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0 cnVjdCBpbm9kZSAqb2xkX2RpciwKPiA+Cj4gPiAgcHV0X291dF9kaXI6Cj4gPiAgICAgICAgIGYy ZnNfdW5sb2NrX29wKHNiaSwgJmxjKTsKPiA+IC0gICAgICAgZjJmc19mb2xpb19wdXQobmV3X2Zv bGlvLCBmYWxzZSk7Cj4gPiArICAgICAgIGYyZnNfcHV0X2RlbnRyeV9ibG9jayhuZXdfYmxvY2ss IGZhbHNlKTsKPiA+ICBvdXRfZGlyOgo+ID4gICAgICAgICBpZiAob2xkX2Rpcl9lbnRyeSkKPiA+ IC0gICAgICAgICAgICAgICBmMmZzX2ZvbGlvX3B1dChvbGRfZGlyX2ZvbGlvLCBmYWxzZSk7Cj4g PiArICAgICAgICAgICAgICAgZjJmc19wdXRfZGVudHJ5X2Jsb2NrKG9sZF9kaXJfYmxvY2ssIGZh bHNlKTsKPiA+ICBvdXRfb2xkOgo+ID4gLSAgICAgICBmMmZzX2ZvbGlvX3B1dChvbGRfZm9saW8s IGZhbHNlKTsKPiA+ICsgICAgICAgZjJmc19wdXRfZGVudHJ5X2Jsb2NrKG9sZF9ibG9jaywgZmFs c2UpOwo+ID4gIG91dDoKPiA+ICAgICAgICAgaXB1dCh3aGl0ZW91dCk7Cj4gPiAgICAgICAgIHJl dHVybiBlcnI7Cj4gPiBAQCAtMTE3NSw4ICsxMTc3LDEwIEBAIHN0YXRpYyBpbnQgZjJmc19jcm9z c19yZW5hbWUoc3RydWN0IGlub2RlICpvbGRfZGlyLCBzdHJ1Y3QgZGVudHJ5ICpvbGRfZGVudHJ5 LAo+ID4gICAgICAgICBzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkgPSBGMkZTX0lfU0Iob2xkX2Rp cik7Cj4gPiAgICAgICAgIHN0cnVjdCBpbm9kZSAqb2xkX2lub2RlID0gZF9pbm9kZShvbGRfZGVu dHJ5KTsKPiA+ICAgICAgICAgc3RydWN0IGlub2RlICpuZXdfaW5vZGUgPSBkX2lub2RlKG5ld19k ZW50cnkpOwo+ID4gLSAgICAgICBzdHJ1Y3QgZm9saW8gKm9sZF9kaXJfZm9saW8sICpuZXdfZGly X2ZvbGlvOwo+ID4gLSAgICAgICBzdHJ1Y3QgZm9saW8gKm9sZF9mb2xpbywgKm5ld19mb2xpbzsK PiA+ICsgICAgICAgdm9pZCAqb2xkX2Rpcl9ibG9jayA9IE5VTEw7Cj4gPiArICAgICAgIHZvaWQg Km5ld19kaXJfYmxvY2sgPSBOVUxMOwo+ID4gKyAgICAgICB2b2lkICpvbGRfYmxvY2sgPSBOVUxM Owo+ID4gKyAgICAgICB2b2lkICpuZXdfYmxvY2sgPSBOVUxMOwo+ID4gICAgICAgICBzdHJ1Y3Qg ZjJmc19kaXJfZW50cnkgKm9sZF9kaXJfZW50cnkgPSBOVUxMLCAqbmV3X2Rpcl9lbnRyeSA9IE5V TEw7Cj4gPiAgICAgICAgIHN0cnVjdCBmMmZzX2Rpcl9lbnRyeSAqb2xkX2VudHJ5LCAqbmV3X2Vu dHJ5Owo+ID4gICAgICAgICBzdHJ1Y3QgZjJmc19sb2NrX2NvbnRleHQgbGM7Cj4gPiBAQCAtMTIw OCwxNyArMTIxMiwxNyBAQCBzdGF0aWMgaW50IGYyZnNfY3Jvc3NfcmVuYW1lKHN0cnVjdCBpbm9k ZSAqb2xkX2Rpciwgc3RydWN0IGRlbnRyeSAqb2xkX2RlbnRyeSwKPiA+ICAgICAgICAgICAgICAg ICBnb3RvIG91dDsKPiA+Cj4gPiAgICAgICAgIGVyciA9IC1FTk9FTlQ7Cj4gPiAtICAgICAgIG9s ZF9lbnRyeSA9IGYyZnNfZmluZF9lbnRyeShvbGRfZGlyLCAmb2xkX2RlbnRyeS0+ZF9uYW1lLCAm b2xkX2ZvbGlvKTsKPiA+ICsgICAgICAgb2xkX2VudHJ5ID0gZjJmc19maW5kX2VudHJ5KG9sZF9k aXIsICZvbGRfZGVudHJ5LT5kX25hbWUsICZvbGRfYmxvY2spOwo+ID4gICAgICAgICBpZiAoIW9s ZF9lbnRyeSkgewo+ID4gLSAgICAgICAgICAgICAgIGlmIChJU19FUlIob2xkX2ZvbGlvKSkKPiA+ IC0gICAgICAgICAgICAgICAgICAgICAgIGVyciA9IFBUUl9FUlIob2xkX2ZvbGlvKTsKPiA+ICsg ICAgICAgICAgICAgICBpZiAoSVNfRVJSKG9sZF9ibG9jaykpCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICBlcnIgPSBQVFJfRVJSKG9sZF9ibG9jayk7Cj4gPiAgICAgICAgICAgICAgICAgZ290 byBvdXQ7Cj4gPiAgICAgICAgIH0KPiA+Cj4gPiAtICAgICAgIG5ld19lbnRyeSA9IGYyZnNfZmlu ZF9lbnRyeShuZXdfZGlyLCAmbmV3X2RlbnRyeS0+ZF9uYW1lLCAmbmV3X2ZvbGlvKTsKPiA+ICsg ICAgICAgbmV3X2VudHJ5ID0gZjJmc19maW5kX2VudHJ5KG5ld19kaXIsICZuZXdfZGVudHJ5LT5k X25hbWUsICZuZXdfYmxvY2spOwo+ID4gICAgICAgICBpZiAoIW5ld19lbnRyeSkgewo+ID4gLSAg ICAgICAgICAgICAgIGlmIChJU19FUlIobmV3X2ZvbGlvKSkKPiA+IC0gICAgICAgICAgICAgICAg ICAgICAgIGVyciA9IFBUUl9FUlIobmV3X2ZvbGlvKTsKPiA+ICsgICAgICAgICAgICAgICBpZiAo SVNfRVJSKG5ld19ibG9jaykpCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSBQVFJf RVJSKG5ld19ibG9jayk7Cj4gPiAgICAgICAgICAgICAgICAgZ290byBvdXRfb2xkOwo+ID4gICAg ICAgICB9Cj4gPgo+ID4gQEAgLTEyMjYsMjAgKzEyMzAsMjAgQEAgc3RhdGljIGludCBmMmZzX2Ny b3NzX3JlbmFtZShzdHJ1Y3QgaW5vZGUgKm9sZF9kaXIsIHN0cnVjdCBkZW50cnkgKm9sZF9kZW50 cnksCj4gPiAgICAgICAgIGlmIChvbGRfZGlyICE9IG5ld19kaXIpIHsKPiA+ICAgICAgICAgICAg ICAgICBpZiAoU19JU0RJUihvbGRfaW5vZGUtPmlfbW9kZSkpIHsKPiA+ICAgICAgICAgICAgICAg ICAgICAgICAgIG9sZF9kaXJfZW50cnkgPSBmMmZzX3BhcmVudF9kaXIob2xkX2lub2RlLAo+ID4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm b2xkX2Rpcl9mb2xpbyk7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZvbGRfZGlyX2Jsb2NrKTsKPiA+ICAgICAgICAgICAgICAgICAg ICAgICAgIGlmICghb2xkX2Rpcl9lbnRyeSkgewo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpZiAoSVNfRVJSKG9sZF9kaXJfZm9saW8pKQo+ID4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGVyciA9IFBUUl9FUlIob2xkX2Rpcl9mb2xpbyk7Cj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChJU19FUlIob2xkX2Rpcl9ibG9jaykp Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gUFRSX0VS UihvbGRfZGlyX2Jsb2NrKTsKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290 byBvdXRfbmV3Owo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgfQo+ID4gICAgICAgICAgICAg ICAgIH0KPiA+Cj4gPiAgICAgICAgICAgICAgICAgaWYgKFNfSVNESVIobmV3X2lub2RlLT5pX21v ZGUpKSB7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfZGlyX2VudHJ5ID0gZjJmc19w YXJlbnRfZGlyKG5ld19pbm9kZSwKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJm5ld19kaXJfZm9saW8pOwo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmV3X2Rpcl9ibG9j ayk7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW5ld19kaXJfZW50cnkpIHsKPiA+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKElTX0VSUihuZXdfZGlyX2ZvbGlv KSkKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSBQVFJf RVJSKG5ld19kaXJfZm9saW8pOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp ZiAoSVNfRVJSKG5ld19kaXJfYmxvY2spKQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGVyciA9IFBUUl9FUlIobmV3X2Rpcl9ibG9jayk7Cj4gPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0X29sZF9kaXI7Cj4gPiAgICAgICAgICAgICAg ICAgICAgICAgICB9Cj4gPiAgICAgICAgICAgICAgICAgfQo+ID4gQEAgLTEyNjYsMTQgKzEyNzAs MTQgQEAgc3RhdGljIGludCBmMmZzX2Nyb3NzX3JlbmFtZShzdHJ1Y3QgaW5vZGUgKm9sZF9kaXIs IHN0cnVjdCBkZW50cnkgKm9sZF9kZW50cnksCj4gPgo+ID4gICAgICAgICAvKiB1cGRhdGUgIi4u IiBkaXJlY3RvcnkgZW50cnkgaW5mbyBvZiBvbGQgZGVudHJ5ICovCj4gPiAgICAgICAgIGlmIChv bGRfZGlyX2VudHJ5KQo+ID4gLSAgICAgICAgICAgICAgIGYyZnNfc2V0X2xpbmsob2xkX2lub2Rl LCBvbGRfZGlyX2VudHJ5LCBvbGRfZGlyX2ZvbGlvLCBuZXdfZGlyKTsKPiA+ICsgICAgICAgICAg ICAgICBmMmZzX3NldF9saW5rKG9sZF9pbm9kZSwgb2xkX2Rpcl9lbnRyeSwgb2xkX2Rpcl9ibG9j aywgbmV3X2Rpcik7Cj4gPgo+ID4gICAgICAgICAvKiB1cGRhdGUgIi4uIiBkaXJlY3RvcnkgZW50 cnkgaW5mbyBvZiBuZXcgZGVudHJ5ICovCj4gPiAgICAgICAgIGlmIChuZXdfZGlyX2VudHJ5KQo+ ID4gLSAgICAgICAgICAgICAgIGYyZnNfc2V0X2xpbmsobmV3X2lub2RlLCBuZXdfZGlyX2VudHJ5 LCBuZXdfZGlyX2ZvbGlvLCBvbGRfZGlyKTsKPiA+ICsgICAgICAgICAgICAgICBmMmZzX3NldF9s aW5rKG5ld19pbm9kZSwgbmV3X2Rpcl9lbnRyeSwgbmV3X2Rpcl9ibG9jaywgb2xkX2Rpcik7Cj4g Pgo+ID4gICAgICAgICAvKiB1cGRhdGUgZGlyZWN0b3J5IGVudHJ5IGluZm8gb2Ygb2xkIGRpciBp bm9kZSAqLwo+ID4gLSAgICAgICBmMmZzX3NldF9saW5rKG9sZF9kaXIsIG9sZF9lbnRyeSwgb2xk X2ZvbGlvLCBuZXdfaW5vZGUpOwo+ID4gKyAgICAgICBmMmZzX3NldF9saW5rKG9sZF9kaXIsIG9s ZF9lbnRyeSwgb2xkX2Jsb2NrLCBuZXdfaW5vZGUpOwo+ID4KPiA+ICAgICAgICAgZjJmc19kb3du X3dyaXRlKCZGMkZTX0kob2xkX2lub2RlKS0+aV9zZW0pOwo+ID4gICAgICAgICBpZiAoIW9sZF9k aXJfZW50cnkpCj4gPiBAQCAtMTI5Miw3ICsxMjk2LDcgQEAgc3RhdGljIGludCBmMmZzX2Nyb3Nz X3JlbmFtZShzdHJ1Y3QgaW5vZGUgKm9sZF9kaXIsIHN0cnVjdCBkZW50cnkgKm9sZF9kZW50cnks Cj4gPiAgICAgICAgIGYyZnNfbWFya19pbm9kZV9kaXJ0eV9zeW5jKG9sZF9kaXIsIHRydWUpOwo+ ID4KPiA+ICAgICAgICAgLyogdXBkYXRlIGRpcmVjdG9yeSBlbnRyeSBpbmZvIG9mIG5ldyBkaXIg aW5vZGUgKi8KPiA+IC0gICAgICAgZjJmc19zZXRfbGluayhuZXdfZGlyLCBuZXdfZW50cnksIG5l d19mb2xpbywgb2xkX2lub2RlKTsKPiA+ICsgICAgICAgZjJmc19zZXRfbGluayhuZXdfZGlyLCBu ZXdfZW50cnksIG5ld19ibG9jaywgb2xkX2lub2RlKTsKPiA+Cj4gPiAgICAgICAgIGYyZnNfZG93 bl93cml0ZSgmRjJGU19JKG5ld19pbm9kZSktPmlfc2VtKTsKPiA+ICAgICAgICAgaWYgKCFuZXdf ZGlyX2VudHJ5KQo+ID4gQEAgLTEzMjcsMTYgKzEzMzEsMTYgQEAgc3RhdGljIGludCBmMmZzX2Ny b3NzX3JlbmFtZShzdHJ1Y3QgaW5vZGUgKm9sZF9kaXIsIHN0cnVjdCBkZW50cnkgKm9sZF9kZW50 cnksCj4gPiAgICAgICAgIHJldHVybiAwOwo+ID4gIG91dF9uZXdfZGlyOgo+ID4gICAgICAgICBp ZiAobmV3X2Rpcl9lbnRyeSkgewo+ID4gLSAgICAgICAgICAgICAgIGYyZnNfZm9saW9fcHV0KG5l d19kaXJfZm9saW8sIGZhbHNlKTsKPiA+ICsgICAgICAgICAgICAgICBmMmZzX3B1dF9kZW50cnlf YmxvY2sobmV3X2Rpcl9ibG9jaywgZmFsc2UpOwo+ID4gICAgICAgICB9Cj4gPiAgb3V0X29sZF9k aXI6Cj4gPiAgICAgICAgIGlmIChvbGRfZGlyX2VudHJ5KSB7Cj4gPiAtICAgICAgICAgICAgICAg ZjJmc19mb2xpb19wdXQob2xkX2Rpcl9mb2xpbywgZmFsc2UpOwo+ID4gKyAgICAgICAgICAgICAg IGYyZnNfcHV0X2RlbnRyeV9ibG9jayhvbGRfZGlyX2Jsb2NrLCBmYWxzZSk7Cj4gPiAgICAgICAg IH0KPiA+ICBvdXRfbmV3Ogo+ID4gLSAgICAgICBmMmZzX2ZvbGlvX3B1dChuZXdfZm9saW8sIGZh bHNlKTsKPiA+ICsgICAgICAgZjJmc19wdXRfZGVudHJ5X2Jsb2NrKG5ld19ibG9jaywgZmFsc2Up Owo+ID4gIG91dF9vbGQ6Cj4gPiAtICAgICAgIGYyZnNfZm9saW9fcHV0KG9sZF9mb2xpbywgZmFs c2UpOwo+ID4gKyAgICAgICBmMmZzX3B1dF9kZW50cnlfYmxvY2sob2xkX2Jsb2NrLCBmYWxzZSk7 Cj4gPiAgb3V0Ogo+ID4gICAgICAgICByZXR1cm4gZXJyOwo+ID4gIH0KPiA+IGRpZmYgLS1naXQg YS9mcy9mMmZzL25vZGUuYyBiL2ZzL2YyZnMvbm9kZS5jCj4gPiBpbmRleCAxOTdjZTJmNTE0OWEu LjFhZjExODg1OGZkMSAxMDA2NDQKPiA+IC0tLSBhL2ZzL2YyZnMvbm9kZS5jCj4gPiArKysgYi9m cy9mMmZzL25vZGUuYwo+ID4gQEAgLTcsMTIgKzcsMTIgQEAKPiA+ICAgKi8KPiA+ICAjaW5jbHVk ZSA8bGludXgvZnMuaD4KPiA+ICAjaW5jbHVkZSA8bGludXgvZjJmc19mcy5oPgo+ID4gLSNpbmNs dWRlIDxsaW51eC9tcGFnZS5oPgo+ID4gICNpbmNsdWRlIDxsaW51eC9zY2hlZC9tbS5oPgo+ID4g ICNpbmNsdWRlIDxsaW51eC9ibGtkZXYuaD4KPiA+ICAjaW5jbHVkZSA8bGludXgvZm9saW9fYmF0 Y2guaD4KPiA+ICAjaW5jbHVkZSA8bGludXgvc3dhcC5oPgo+ID4gICNpbmNsdWRlIDxsaW51eC9m c2Vycm9yLmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L2ZyZWV6ZXIuaD4KPiA+Cj4gPiAgI2luY2x1 ZGUgImYyZnMuaCIKPiA+ICAjaW5jbHVkZSAibm9kZS5oIgo+ID4gQEAgLTEzMCwxNiArMTMwLDYg QEAgYm9vbCBmMmZzX2F2YWlsYWJsZV9mcmVlX21lbW9yeShzdHJ1Y3QgZjJmc19zYl9pbmZvICpz YmksIGludCB0eXBlKQo+ID4gICAgICAgICByZXR1cm4gcmVzOwo+ID4gIH0KPiA+Cj4gPiAtc3Rh dGljIHZvaWQgY2xlYXJfbm9kZV9mb2xpb19kaXJ0eShzdHJ1Y3QgZm9saW8gKmZvbGlvKQo+ID4g LXsKPiA+IC0gICAgICAgaWYgKGZvbGlvX3Rlc3RfZGlydHkoZm9saW8pKSB7Cj4gPiAtICAgICAg ICAgICAgICAgZjJmc19jbGVhcl9wYWdlX2NhY2hlX2RpcnR5X3RhZyhmb2xpbyk7Cj4gPiAtICAg ICAgICAgICAgICAgZm9saW9fY2xlYXJfZGlydHlfZm9yX2lvKGZvbGlvKTsKPiA+IC0gICAgICAg ICAgICAgICBkZWNfcGFnZV9jb3VudChGMkZTX0ZfU0IoZm9saW8pLCBGMkZTX0RJUlRZX05PREVT KTsKPiA+IC0gICAgICAgfQo+ID4gLSAgICAgICBmb2xpb19jbGVhcl91cHRvZGF0ZShmb2xpbyk7 Cj4gPiAtfQo+ID4gLQo+ID4gIHN0YXRpYyBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmdldF9j dXJyZW50X25hdF9jYWNoZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPiAgICAgICAgICAg ICAgICAgbmlkX3QgbmlkKQo+ID4gIHsKPiA+IEBAIC0zMzAsMTAgKzMyMCwxMSBAQCBzdGF0aWMg dW5zaWduZWQgaW50IF9fZ2FuZ19sb29rdXBfbmF0X3NldChzdHJ1Y3QgZjJmc19ubV9pbmZvICpu bV9pLAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdGFydCwgbnIpOwo+ID4gIH0KPiA+Cj4gPiAtYm9vbCBmMmZzX2luX3dhcm1fbm9k ZV9saXN0KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgc3RydWN0IGZvbGlvICpmb2xpbykKPiA+ ICtib29sIGYyZnNfaW5fd2FybV9ub2RlX2xpc3Qoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxv Y2sgKmVudHJ5KQo+ID4gIHsKPiA+IC0gICAgICAgcmV0dXJuIGlzX25vZGVfZm9saW8oc2JpLCBm b2xpbykgJiYgSVNfRE5PREUoc2JpLCBmb2xpbykgJiYKPiA+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpc19jb2xkX25vZGUoc2JpLCBmb2xpbyk7Cj4gPiArICAgICAg IHJldHVybiBmMmZzX2lzX25vZGVfY2FjaGUoZW50cnkpICYmCj4gPiArICAgICAgICAgICAgICAg SVNfRE5PREUoc2JpLCBlbnRyeSkgJiYgaXNfY29sZF9ub2RlKHNiaSwgZW50cnkpOwo+ID4gIH0K PiA+Cj4gPiAgdm9pZCBmMmZzX2luaXRfZnN5bmNfbm9kZV9pbmZvKHN0cnVjdCBmMmZzX3NiX2lu Zm8gKnNiaSkKPiA+IEBAIC0zNDUsNyArMzM2LDcgQEAgdm9pZCBmMmZzX2luaXRfZnN5bmNfbm9k ZV9pbmZvKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSkKPiA+ICB9Cj4gPgo+ID4gIHN0YXRpYyB1 bnNpZ25lZCBpbnQgZjJmc19hZGRfZnN5bmNfbm9kZV9lbnRyeShzdHJ1Y3QgZjJmc19zYl9pbmZv ICpzYmksCj4gPiAtICAgICAgICAgICAgICAgc3RydWN0IGZvbGlvICpmb2xpbykKPiA+ICsgICAg ICAgICAgICAgICBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5KQo+ID4gIHsKPiA+ICAg ICAgICAgc3RydWN0IGZzeW5jX25vZGVfZW50cnkgKmZuOwo+ID4gICAgICAgICB1bnNpZ25lZCBs b25nIGZsYWdzOwo+ID4gQEAgLTM1NCw4ICszNDUsOCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGYy ZnNfYWRkX2ZzeW5jX25vZGVfZW50cnkoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4gICAg ICAgICBmbiA9IGYyZnNfa21lbV9jYWNoZV9hbGxvYyhmc3luY19ub2RlX2VudHJ5X3NsYWIsCj4g PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0ZQX05PRlMsIHRydWUs IE5VTEwpOwo+ID4KPiA+IC0gICAgICAgZm9saW9fZ2V0KGZvbGlvKTsKPiA+IC0gICAgICAgZm4t PmZvbGlvID0gZm9saW87Cj4gPiArICAgICAgIGYyZnNfY2FjaGVfZ2V0KGVudHJ5KTsKPiA+ICsg ICAgICAgZm4tPmVudHJ5ID0gZW50cnk7Cj4gPiAgICAgICAgIElOSVRfTElTVF9IRUFEKCZmbi0+ bGlzdCk7Cj4gPgo+ID4gICAgICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmc2JpLT5mc3luY19ub2Rl X2xvY2ssIGZsYWdzKTsKPiA+IEBAIC0zNjgsMTkgKzM1OSwxOSBAQCBzdGF0aWMgdW5zaWduZWQg aW50IGYyZnNfYWRkX2ZzeW5jX25vZGVfZW50cnkoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ ID4gICAgICAgICByZXR1cm4gc2VxX2lkOwo+ID4gIH0KPiA+Cj4gPiAtdm9pZCBmMmZzX2RlbF9m c3luY19ub2RlX2VudHJ5KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgc3RydWN0IGZvbGlvICpm b2xpbykKPiA+ICt2b2lkIGYyZnNfZGVsX2ZzeW5jX25vZGVfZW50cnkoc3RydWN0IGYyZnNfc2Jf aW5mbyAqc2JpLCBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5KQo+ID4gIHsKPiA+ICAg ICAgICAgc3RydWN0IGZzeW5jX25vZGVfZW50cnkgKmZuOwo+ID4gICAgICAgICB1bnNpZ25lZCBs b25nIGZsYWdzOwo+ID4KPiA+ICAgICAgICAgc3Bpbl9sb2NrX2lycXNhdmUoJnNiaS0+ZnN5bmNf bm9kZV9sb2NrLCBmbGFncyk7Cj4gPiAgICAgICAgIGxpc3RfZm9yX2VhY2hfZW50cnkoZm4sICZz YmktPmZzeW5jX25vZGVfbGlzdCwgbGlzdCkgewo+ID4gLSAgICAgICAgICAgICAgIGlmIChmbi0+ Zm9saW8gPT0gZm9saW8pIHsKPiA+ICsgICAgICAgICAgICAgICBpZiAoZm4tPmVudHJ5ID09IGVu dHJ5KSB7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0X2RlbCgmZm4tPmxpc3QpOwo+ ID4gICAgICAgICAgICAgICAgICAgICAgICAgc2JpLT5mc3luY19ub2RlX251bS0tOwo+ID4gICAg ICAgICAgICAgICAgICAgICAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmc2JpLT5mc3luY19u b2RlX2xvY2ssIGZsYWdzKTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGYyZnNfcHV0X2Nh Y2hlKGZuLT5lbnRyeSwgZmFsc2UpOwo+ID4gICAgICAgICAgICAgICAgICAgICAgICAga21lbV9j YWNoZV9mcmVlKGZzeW5jX25vZGVfZW50cnlfc2xhYiwgZm4pOwo+ID4gLSAgICAgICAgICAgICAg ICAgICAgICAgZm9saW9fcHV0KGZvbGlvKTsKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIHJl dHVybjsKPiA+ICAgICAgICAgICAgICAgICB9Cj4gPiAgICAgICAgIH0KPiA+IEBAIC02NzcsMTEg KzY2OCwxMSBAQCBpbnQgZjJmc19nZXRfbm9kZV9pbmZvKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNi aSwgbmlkX3QgbmlkLAo+ID4gIH0KPiA+Cj4gPiAgLyoKPiA+IC0gKiByZWFkYWhlYWQgTUFYX1JB X05PREUgbnVtYmVyIG9mIG5vZGUgcGFnZXMuCj4gPiArICogcmVhZGFoZWFkIE1BWF9SQV9OT0RF IG51bWJlciBvZiBub2RlIGNhY2hlcy4KPiA+ICAgKi8KPiA+IC1zdGF0aWMgdm9pZCBmMmZzX3Jh X25vZGVfcGFnZXMoc3RydWN0IGZvbGlvICpwYXJlbnQsIGludCBzdGFydCwgaW50IG4pCj4gPiAr c3RhdGljIHZvaWQgZjJmc19yYV9ub2RlX2NhY2hlcyhzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sg KnBhcmVudCwgaW50IHN0YXJ0LCBpbnQgbikKPiA+ICB7Cj4gPiAtICAgICAgIHN0cnVjdCBmMmZz X3NiX2luZm8gKnNiaSA9IEYyRlNfRl9TQihwYXJlbnQpOwo+ID4gKyAgICAgICBzdHJ1Y3QgZjJm c19zYl9pbmZvICpzYmkgPSBwYXJlbnQtPmNhY2hlLT5zYmk7Cj4gPiAgICAgICAgIHN0cnVjdCBi bGtfcGx1ZyBwbHVnOwo+ID4gICAgICAgICBpbnQgaSwgZW5kOwo+ID4gICAgICAgICBuaWRfdCBu aWQ7Cj4gPiBAQCAtNjkzLDcgKzY4NCw3IEBAIHN0YXRpYyB2b2lkIGYyZnNfcmFfbm9kZV9wYWdl cyhzdHJ1Y3QgZm9saW8gKnBhcmVudCwgaW50IHN0YXJ0LCBpbnQgbikKPiA+ICAgICAgICAgZW5k ID0gbWluX3QoaW50LCBlbmQsIE5JRFNfUEVSX0JMT0NLKHNiaSkpOwo+ID4gICAgICAgICBmb3Ig KGkgPSBzdGFydDsgaSA8IGVuZDsgaSsrKSB7Cj4gPiAgICAgICAgICAgICAgICAgbmlkID0gZ2V0 X25pZChzYmksIHBhcmVudCwgaSwgZmFsc2UpOwo+ID4gLSAgICAgICAgICAgICAgIGYyZnNfcmFf bm9kZV9wYWdlKHNiaSwgbmlkKTsKPiA+ICsgICAgICAgICAgICAgICBmMmZzX3JhX25vZGVfY2Fj aGUoc2JpLCBuaWQpOwo+ID4gICAgICAgICB9Cj4gPgo+ID4gICAgICAgICBibGtfZmluaXNoX3Bs dWcoJnBsdWcpOwo+ID4gQEAgLTgxNCw3ICs4MDUsOCBAQCBzdGF0aWMgaW50IGdldF9ub2RlX3Bh dGgoc3RydWN0IGlub2RlICppbm9kZSwgbG9uZyBibG9jaywKPiA+ICAgICAgICAgcmV0dXJuIGxl dmVsOwo+ID4gIH0KPiA+Cj4gPiAtc3RhdGljIHN0cnVjdCBmb2xpbyAqZjJmc19nZXRfbm9kZV9m b2xpb19yYShzdHJ1Y3QgZm9saW8gKnBhcmVudCwgaW50IHN0YXJ0KTsKPiA+ICtzdGF0aWMgc3Ry dWN0IGYyZnNfY2FjaGVkX2Jsb2NrICpmMmZzX2dldF9ub2RlX2NhY2hlX3JhKAo+ID4gKyAgICAg ICAgICAgICAgIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqcGFyZW50LCBpbnQgc3RhcnQpOwo+ ID4KPiA+ICAvKgo+ID4gICAqIENhbGxlciBzaG91bGQgY2FsbCBmMmZzX3B1dF9kbm9kZShkbiku Cj4gPiBAQCAtODI0LDggKzgxNiw4IEBAIHN0YXRpYyBzdHJ1Y3QgZm9saW8gKmYyZnNfZ2V0X25v ZGVfZm9saW9fcmEoc3RydWN0IGZvbGlvICpwYXJlbnQsIGludCBzdGFydCk7Cj4gPiAgaW50IGYy ZnNfZ2V0X2Rub2RlX29mX2RhdGEoc3RydWN0IGRub2RlX29mX2RhdGEgKmRuLCBwZ29mZl90IGlu ZGV4LCBpbnQgbW9kZSkKPiA+ICB7Cj4gPiAgICAgICAgIHN0cnVjdCBmMmZzX3NiX2luZm8gKnNi aSA9IEYyRlNfSV9TQihkbi0+aW5vZGUpOwo+ID4gLSAgICAgICBzdHJ1Y3QgZm9saW8gKm5mb2xp b1s0XTsKPiA+IC0gICAgICAgc3RydWN0IGZvbGlvICpwYXJlbnQgPSBOVUxMOwo+ID4gKyAgICAg ICBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKm5lbnRyeVs0XTsKPiA+ICsgICAgICAgc3RydWN0 IGYyZnNfY2FjaGVkX2Jsb2NrICpwYXJlbnQgPSBOVUxMOwo+ID4gICAgICAgICBpbnQgb2Zmc2V0 WzRdOwo+ID4gICAgICAgICB1bnNpZ25lZCBpbnQgbm9mZnNldFs0XTsKPiA+ICAgICAgICAgbmlk X3Qgbmlkc1s0XTsKPiA+IEBAIC04MzgsMjYgKzgzMCwyNiBAQCBpbnQgZjJmc19nZXRfZG5vZGVf b2ZfZGF0YShzdHJ1Y3QgZG5vZGVfb2ZfZGF0YSAqZG4sIHBnb2ZmX3QgaW5kZXgsIGludCBtb2Rl KQo+ID4KPiA+ICAgICAgICAgbmlkc1swXSA9IGRuLT5pbm9kZS0+aV9pbm87Cj4gPgo+ID4gLSAg ICAgICBpZiAoIWRuLT5pbm9kZV9mb2xpbykgewo+ID4gLSAgICAgICAgICAgICAgIG5mb2xpb1sw XSA9IGYyZnNfZ2V0X2lub2RlX2ZvbGlvKHNiaSwgbmlkc1swXSk7Cj4gPiAtICAgICAgICAgICAg ICAgaWYgKElTX0VSUihuZm9saW9bMF0pKQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIFBUUl9FUlIobmZvbGlvWzBdKTsKPiA+ICsgICAgICAgaWYgKCFkbi0+aW5vZGVfZW50cnkp IHsKPiA+ICsgICAgICAgICAgICAgICBuZW50cnlbMF0gPSBmMmZzX2dldF9pbm9kZV9jYWNoZShz YmksIG5pZHNbMF0pOwo+ID4gKyAgICAgICAgICAgICAgIGlmIChJU19FUlIobmVudHJ5WzBdKSkK PiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKG5lbnRyeVswXSk7Cj4g PiAgICAgICAgIH0gZWxzZSB7Cj4gPiAtICAgICAgICAgICAgICAgbmZvbGlvWzBdID0gZG4tPmlu b2RlX2ZvbGlvOwo+ID4gKyAgICAgICAgICAgICAgIG5lbnRyeVswXSA9IGRuLT5pbm9kZV9lbnRy eTsKPiA+ICAgICAgICAgfQo+ID4KPiA+ICAgICAgICAgLyogaWYgaW5saW5lX2RhdGEgaXMgc2V0 LCBzaG91bGQgbm90IHJlcG9ydCBhbnkgYmxvY2sgaW5kaWNlcyAqLwo+ID4gICAgICAgICBpZiAo ZjJmc19oYXNfaW5saW5lX2RhdGEoZG4tPmlub2RlKSAmJiBpbmRleCkgewo+ID4gICAgICAgICAg ICAgICAgIGVyciA9IC1FTk9FTlQ7Cj4gPiAtICAgICAgICAgICAgICAgZjJmc19mb2xpb19wdXQo bmZvbGlvWzBdLCB0cnVlKTsKPiA+ICsgICAgICAgICAgICAgICBmMmZzX3B1dF9jYWNoZShuZW50 cnlbMF0sIHRydWUpOwo+ID4gICAgICAgICAgICAgICAgIGdvdG8gcmVsZWFzZV9vdXQ7Cj4gPiAg ICAgICAgIH0KPiA+Cj4gPiAtICAgICAgIHBhcmVudCA9IG5mb2xpb1swXTsKPiA+ICsgICAgICAg cGFyZW50ID0gbmVudHJ5WzBdOwo+ID4gICAgICAgICBpZiAobGV2ZWwgIT0gMCkKPiA+ICAgICAg ICAgICAgICAgICBuaWRzWzFdID0gZ2V0X25pZChzYmksIHBhcmVudCwgb2Zmc2V0WzBdLCB0cnVl KTsKPiA+IC0gICAgICAgZG4tPmlub2RlX2ZvbGlvID0gbmZvbGlvWzBdOwo+ID4gLSAgICAgICBk bi0+aW5vZGVfZm9saW9fbG9ja2VkID0gdHJ1ZTsKPiA+ICsgICAgICAgZG4tPmlub2RlX2VudHJ5 ID0gbmVudHJ5WzBdOwo+ID4gKyAgICAgICBkbi0+aW5vZGVfZW50cnlfbG9ja2VkID0gdHJ1ZTsK PiA+Cj4gPiAgICAgICAgIC8qIGdldCBpbmRpcmVjdCBvciBkaXJlY3Qgbm9kZXMgKi8KPiA+ICAg ICAgICAgZm9yIChpID0gMTsgaSA8PSBsZXZlbDsgaSsrKSB7Cj4gPiBAQCAtODcwLDU5ICs4NjIs NTkgQEAgaW50IGYyZnNfZ2V0X2Rub2RlX29mX2RhdGEoc3RydWN0IGRub2RlX29mX2RhdGEgKmRu LCBwZ29mZl90IGluZGV4LCBpbnQgbW9kZSkKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgImlubzolbGx1LCBuaWQ6JXUsIGxldmVsOiVkLCBvZmZzZXQ6JWQiLAo+ID4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkbi0+aW5vZGUtPmlfaW5vLCBuaWRzW2ldLCBsZXZl bCwgb2Zmc2V0W2xldmVsXSk7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfc2JpX2Zs YWcoc2JpLCBTQklfTkVFRF9GU0NLKTsKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGdvdG8g cmVsZWFzZV9wYWdlczsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmVsZWFzZV9j YWNoZXM7Cj4gPiAgICAgICAgICAgICAgICAgfQo+ID4KPiA+ICAgICAgICAgICAgICAgICBpZiAo IW5pZHNbaV0gJiYgbW9kZSA9PSBBTExPQ19OT0RFKSB7Cj4gPiAgICAgICAgICAgICAgICAgICAg ICAgICAvKiBhbGxvYyBuZXcgbm9kZSAqLwo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgaWYg KCFmMmZzX2FsbG9jX25pZChzYmksICYobmlkc1tpXSkpKSB7Cj4gPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGVyciA9IC1FTk9TUEM7Cj4gPiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGdvdG8gcmVsZWFzZV9wYWdlczsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZ290byByZWxlYXNlX2NhY2hlczsKPiA+ICAgICAgICAgICAgICAgICAgICAgICAg IH0KPiA+Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBkbi0+bmlkID0gbmlkc1tpXTsKPiA+ IC0gICAgICAgICAgICAgICAgICAgICAgIG5mb2xpb1tpXSA9IGYyZnNfbmV3X25vZGVfZm9saW8o ZG4sIG5vZmZzZXRbaV0pOwo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgaWYgKElTX0VSUihu Zm9saW9baV0pKSB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBuZW50cnlbaV0gPSBmMmZz X25ld19ub2RlX2NhY2hlKGRuLCBub2Zmc2V0W2ldKTsKPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgIGlmIChJU19FUlIobmVudHJ5W2ldKSkgewo+ID4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmMmZzX2FsbG9jX25pZF9mYWlsZWQoc2JpLCBuaWRzW2ldKTsKPiA+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gUFRSX0VSUihuZm9saW9baV0pOwo+ID4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJlbGVhc2VfcGFnZXM7Cj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IFBUUl9FUlIobmVudHJ5W2ldKTsKPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZWxlYXNlX2NhY2hlczsKPiA+ ICAgICAgICAgICAgICAgICAgICAgICAgIH0KPiA+Cj4gPiAgICAgICAgICAgICAgICAgICAgICAg ICBzZXRfbmlkKHNiaSwgcGFyZW50LCBvZmZzZXRbaSAtIDFdLCBuaWRzW2ldLCBpID09IDEpOwo+ ID4gICAgICAgICAgICAgICAgICAgICAgICAgZjJmc19hbGxvY19uaWRfZG9uZShzYmksIG5pZHNb aV0pOwo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7Cj4gPiAgICAgICAg ICAgICAgICAgfSBlbHNlIGlmIChtb2RlID09IExPT0tVUF9OT0RFX1JBICYmIGkgPT0gbGV2ZWwg JiYgbGV2ZWwgPiAxKSB7Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBuZm9saW9baV0gPSBm MmZzX2dldF9ub2RlX2ZvbGlvX3JhKHBhcmVudCwgb2Zmc2V0W2kgLSAxXSk7Cj4gPiAtICAgICAg ICAgICAgICAgICAgICAgICBpZiAoSVNfRVJSKG5mb2xpb1tpXSkpIHsKPiA+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZXJyID0gUFRSX0VSUihuZm9saW9baV0pOwo+ID4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJlbGVhc2VfcGFnZXM7Cj4gPiArICAgICAg ICAgICAgICAgICAgICAgICBuZW50cnlbaV0gPSBmMmZzX2dldF9ub2RlX2NhY2hlX3JhKHBhcmVu dCwgb2Zmc2V0W2kgLSAxXSk7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAoSVNfRVJS KG5lbnRyeVtpXSkpIHsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyID0g UFRSX0VSUihuZW50cnlbaV0pOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn b3RvIHJlbGVhc2VfY2FjaGVzOwo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgfQo+ID4gICAg ICAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7Cj4gPiAgICAgICAgICAgICAgICAgfQo+ ID4gICAgICAgICAgICAgICAgIGlmIChpID09IDEpIHsKPiA+IC0gICAgICAgICAgICAgICAgICAg ICAgIGRuLT5pbm9kZV9mb2xpb19sb2NrZWQgPSBmYWxzZTsKPiA+IC0gICAgICAgICAgICAgICAg ICAgICAgIGZvbGlvX3VubG9jayhwYXJlbnQpOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ZG4tPmlub2RlX2VudHJ5X2xvY2tlZCA9IGZhbHNlOwo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgZjJmc191bmxvY2tfY2FjaGUocGFyZW50KTsKPiA+ICAgICAgICAgICAgICAgICB9IGVsc2Ug ewo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgZjJmc19mb2xpb19wdXQocGFyZW50LCB0cnVl KTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGYyZnNfcHV0X2NhY2hlKHBhcmVudCwgdHJ1 ZSk7Cj4gPiAgICAgICAgICAgICAgICAgfQo+ID4KPiA+ICAgICAgICAgICAgICAgICBpZiAoIWRv bmUpIHsKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIG5mb2xpb1tpXSA9IGYyZnNfZ2V0X25v ZGVfZm9saW8oc2JpLCBuaWRzW2ldLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgbmVudHJ5 W2ldID0gZjJmc19nZXRfbm9kZV9jYWNoZShzYmksIG5pZHNbaV0sCj4gPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOT0RFX1RZUEVfTk9OX0lOT0RFKTsK PiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGlmIChJU19FUlIobmZvbGlvW2ldKSkgewo+ID4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSBQVFJfRVJSKG5mb2xpb1tpXSk7 Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYyZnNfZm9saW9fcHV0KG5mb2xp b1swXSwgZmFsc2UpOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKElTX0VSUihuZW50 cnlbaV0pKSB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IFBUUl9F UlIobmVudHJ5W2ldKTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjJmc19w dXRfY2FjaGUobmVudHJ5WzBdLCBmYWxzZSk7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGdvdG8gcmVsZWFzZV9vdXQ7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICB9Cj4g PiAgICAgICAgICAgICAgICAgfQo+ID4gICAgICAgICAgICAgICAgIGlmIChpIDwgbGV2ZWwpIHsK PiA+IC0gICAgICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IG5mb2xpb1tpXTsKPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IG5lbnRyeVtpXTsKPiA+ICAgICAgICAgICAgICAg ICAgICAgICAgIG5pZHNbaSArIDFdID0gZ2V0X25pZChzYmksIHBhcmVudCwgb2Zmc2V0W2ldLCBm YWxzZSk7Cj4gPiAgICAgICAgICAgICAgICAgfQo+ID4gICAgICAgICB9Cj4gPiAgICAgICAgIGRu LT5uaWQgPSBuaWRzW2xldmVsXTsKPiA+ICAgICAgICAgZG4tPm9mc19pbl9ub2RlID0gb2Zmc2V0 W2xldmVsXTsKPiA+IC0gICAgICAgZG4tPm5vZGVfZm9saW8gPSBuZm9saW9bbGV2ZWxdOwo+ID4g KyAgICAgICBkbi0+bm9kZV9lbnRyeSA9IG5lbnRyeVtsZXZlbF07Cj4gPiAgICAgICAgIGRuLT5k YXRhX2Jsa2FkZHIgPSBmMmZzX2RhdGFfYmxrYWRkcihkbik7Cj4gPgo+ID4gICAgICAgICBpZiAo aXNfaW5vZGVfZmxhZ19zZXQoZG4tPmlub2RlLCBGSV9DT01QUkVTU0VEX0ZJTEUpICYmCj4gPiBA QCAtOTQzLDkgKzkzNSw5IEBAIGludCBmMmZzX2dldF9kbm9kZV9vZl9kYXRhKHN0cnVjdCBkbm9k ZV9vZl9kYXRhICpkbiwgcGdvZmZfdCBpbmRleCwgaW50IG1vZGUpCj4gPiAgICAgICAgICAgICAg ICAgaWYgKCFjX2xlbikKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0Owo+ID4K PiA+IC0gICAgICAgICAgICAgICBibGthZGRyID0gZGF0YV9ibGthZGRyKGRuLT5pbm9kZSwgZG4t Pm5vZGVfZm9saW8sIG9mc19pbl9ub2RlKTsKPiA+ICsgICAgICAgICAgICAgICBibGthZGRyID0g ZGF0YV9ibGthZGRyKGRuLT5pbm9kZSwgZG4tPm5vZGVfZW50cnksIG9mc19pbl9ub2RlKTsKPiA+ ICAgICAgICAgICAgICAgICBpZiAoYmxrYWRkciA9PSBDT01QUkVTU19BRERSKQo+ID4gLSAgICAg ICAgICAgICAgICAgICAgICAgYmxrYWRkciA9IGRhdGFfYmxrYWRkcihkbi0+aW5vZGUsIGRuLT5u b2RlX2ZvbGlvLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgYmxrYWRkciA9IGRhdGFfYmxr YWRkcihkbi0+aW5vZGUsIGRuLT5ub2RlX2VudHJ5LAo+ID4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgb2ZzX2luX25vZGUgKyAxKTsKPiA+Cj4gPiAgICAg ICAgICAgICAgICAgZjJmc191cGRhdGVfcmVhZF9leHRlbnRfdHJlZV9yYW5nZV9jb21wcmVzc2Vk KGRuLT5pbm9kZSwKPiA+IEBAIC05NTQsMTMgKzk0NiwxMyBAQCBpbnQgZjJmc19nZXRfZG5vZGVf b2ZfZGF0YShzdHJ1Y3QgZG5vZGVfb2ZfZGF0YSAqZG4sIHBnb2ZmX3QgaW5kZXgsIGludCBtb2Rl KQo+ID4gIG91dDoKPiA+ICAgICAgICAgcmV0dXJuIDA7Cj4gPgo+ID4gLXJlbGVhc2VfcGFnZXM6 Cj4gPiAtICAgICAgIGYyZnNfZm9saW9fcHV0KHBhcmVudCwgdHJ1ZSk7Cj4gPiArcmVsZWFzZV9j YWNoZXM6Cj4gPiArICAgICAgIGYyZnNfcHV0X2NhY2hlKHBhcmVudCwgdHJ1ZSk7Cj4gPiAgICAg ICAgIGlmIChpID4gMSkKPiA+IC0gICAgICAgICAgICAgICBmMmZzX2ZvbGlvX3B1dChuZm9saW9b MF0sIGZhbHNlKTsKPiA+ICsgICAgICAgICAgICAgICBmMmZzX3B1dF9jYWNoZShuZW50cnlbMF0s IGZhbHNlKTsKPiA+ICByZWxlYXNlX291dDoKPiA+IC0gICAgICAgZG4tPmlub2RlX2ZvbGlvID0g TlVMTDsKPiA+IC0gICAgICAgZG4tPm5vZGVfZm9saW8gPSBOVUxMOwo+ID4gKyAgICAgICBkbi0+ aW5vZGVfZW50cnkgPSBOVUxMOwo+ID4gKyAgICAgICBkbi0+bm9kZV9lbnRyeSA9IE5VTEw7Cj4g PiAgICAgICAgIGlmIChlcnIgPT0gLUVOT0VOVCkgewo+ID4gICAgICAgICAgICAgICAgIGRuLT5j dXJfbGV2ZWwgPSBpOwo+ID4gICAgICAgICAgICAgICAgIGRuLT5tYXhfbGV2ZWwgPSBsZXZlbDsK PiA+IEBAIC0xMDAxLDE2ICs5OTMsMTUgQEAgc3RhdGljIGludCB0cnVuY2F0ZV9ub2RlKHN0cnVj dCBkbm9kZV9vZl9kYXRhICpkbikKPiA+ICAgICAgICAgICAgICAgICBmMmZzX2lub2RlX3N5bmNl ZChkbi0+aW5vZGUpOwo+ID4gICAgICAgICB9Cj4gPgo+ID4gLSAgICAgICBjbGVhcl9ub2RlX2Zv bGlvX2RpcnR5KGRuLT5ub2RlX2ZvbGlvKTsKPiA+ICsgICAgICAgZjJmc19kcm9wX2NhY2hlX2Rp cnR5KGRuLT5ub2RlX2VudHJ5KTsKPiA+ICAgICAgICAgc2V0X3NiaV9mbGFnKHNiaSwgU0JJX0lT X0RJUlRZKTsKPiA+Cj4gPiAtICAgICAgIGluZGV4ID0gZG4tPm5vZGVfZm9saW8tPmluZGV4Owo+ ID4gLSAgICAgICBmMmZzX2ZvbGlvX3B1dChkbi0+bm9kZV9mb2xpbywgdHJ1ZSk7Cj4gPiArICAg ICAgIGluZGV4ID0gZG4tPm5vZGVfZW50cnktPmluZGV4Owo+ID4gKyAgICAgICBmMmZzX3B1dF9j YWNoZShkbi0+bm9kZV9lbnRyeSwgdHJ1ZSk7Cj4gPgo+ID4gLSAgICAgICBpbnZhbGlkYXRlX21h cHBpbmdfcGFnZXMoTk9ERV9NQVBQSU5HKHNiaSksCj4gPiAtICAgICAgICAgICAgICAgICAgICAg ICBpbmRleCwgaW5kZXgpOwo+ID4gKyAgICAgICBmMmZzX2ludmFsaWRhdGVfbm9kZV9jYWNoZShz YmksIGluZGV4KTsKPiA+Cj4gPiAtICAgICAgIGRuLT5ub2RlX2ZvbGlvID0gTlVMTDsKPiA+ICsg ICAgICAgZG4tPm5vZGVfZW50cnkgPSBOVUxMOwo+ID4gICAgICAgICB0cmFjZV9mMmZzX3RydW5j YXRlX25vZGUoZG4tPmlub2RlLCBkbi0+bmlkLCBuaS5ibGtfYWRkcik7Cj4gPgo+ID4gICAgICAg ICByZXR1cm4gMDsKPiA+IEBAIC0xMDE5LDM1ICsxMDEwLDM1IEBAIHN0YXRpYyBpbnQgdHJ1bmNh dGVfbm9kZShzdHJ1Y3QgZG5vZGVfb2ZfZGF0YSAqZG4pCj4gPiAgc3RhdGljIGludCB0cnVuY2F0 ZV9kbm9kZShzdHJ1Y3QgZG5vZGVfb2ZfZGF0YSAqZG4pCj4gPiAgewo+ID4gICAgICAgICBzdHJ1 Y3QgZjJmc19zYl9pbmZvICpzYmkgPSBGMkZTX0lfU0IoZG4tPmlub2RlKTsKPiA+IC0gICAgICAg c3RydWN0IGZvbGlvICpmb2xpbzsKPiA+ICsgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2Nr ICplbnRyeTsKPiA+ICAgICAgICAgaW50IGVycjsKPiA+Cj4gPiAgICAgICAgIGlmIChkbi0+bmlk ID09IDApCj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Cj4gPgo+ID4gICAgICAgICAvKiBn ZXQgZGlyZWN0IG5vZGUgKi8KPiA+IC0gICAgICAgZm9saW8gPSBmMmZzX2dldF9ub2RlX2ZvbGlv KHNiaSwgZG4tPm5pZCwgTk9ERV9UWVBFX05PTl9JTk9ERSk7Cj4gPiAtICAgICAgIGlmIChQVFJf RVJSKGZvbGlvKSA9PSAtRU5PRU5UKQo+ID4gKyAgICAgICBlbnRyeSA9IGYyZnNfZ2V0X25vZGVf Y2FjaGUoc2JpLCBkbi0+bmlkLCBOT0RFX1RZUEVfTk9OX0lOT0RFKTsKPiA+ICsgICAgICAgaWYg KFBUUl9FUlIoZW50cnkpID09IC1FTk9FTlQpCj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7 Cj4gPiAtICAgICAgIGVsc2UgaWYgKElTX0VSUihmb2xpbykpCj4gPiAtICAgICAgICAgICAgICAg cmV0dXJuIFBUUl9FUlIoZm9saW8pOwo+ID4gKyAgICAgICBlbHNlIGlmIChJU19FUlIoZW50cnkp KQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKGVudHJ5KTsKPiA+Cj4gPiAtICAg ICAgIGlmIChJU19JTk9ERShzYmksIGZvbGlvKSB8fCBpbm9fb2Zfbm9kZShzYmksIGZvbGlvKSAh PSBkbi0+aW5vZGUtPmlfaW5vKSB7Cj4gPiArICAgICAgIGlmIChJU19JTk9ERShzYmksIGVudHJ5 KSB8fCBpbm9fb2Zfbm9kZShzYmksIGVudHJ5KSAhPSBkbi0+aW5vZGUtPmlfaW5vKSB7Cj4gPiAg ICAgICAgICAgICAgICAgZjJmc19lcnIoc2JpLCAiaW5jb3JyZWN0IG5vZGUgcmVmZXJlbmNlLCBp bm86ICVsbHUsIG5pZDogJXUsIGlub19vZl9ub2RlOiAldSIsCj4gPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRuLT5pbm9kZS0+aV9pbm8sIGRuLT5uaWQsIGlub19vZl9ub2RlKHNi aSwgZm9saW8pKTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG4tPmlub2Rl LT5pX2lubywgZG4tPm5pZCwgaW5vX29mX25vZGUoc2JpLCBlbnRyeSkpOwo+ID4gICAgICAgICAg ICAgICAgIHNldF9zYmlfZmxhZyhzYmksIFNCSV9ORUVEX0ZTQ0spOwo+ID4gICAgICAgICAgICAg ICAgIGYyZnNfaGFuZGxlX2Vycm9yKHNiaSwgRVJST1JfSU5WQUxJRF9OT0RFX1JFRkVSRU5DRSk7 Cj4gPiAtICAgICAgICAgICAgICAgZjJmc19mb2xpb19wdXQoZm9saW8sIHRydWUpOwo+ID4gKyAg ICAgICAgICAgICAgIGYyZnNfcHV0X2NhY2hlKGVudHJ5LCB0cnVlKTsKPiA+ICAgICAgICAgICAg ICAgICByZXR1cm4gLUVGU0NPUlJVUFRFRDsKPiA+ICAgICAgICAgfQo+ID4KPiA+ICAgICAgICAg LyogTWFrZSBkbm9kZV9vZl9kYXRhIGZvciBwYXJhbWV0ZXIgKi8KPiA+IC0gICAgICAgZG4tPm5v ZGVfZm9saW8gPSBmb2xpbzsKPiA+ICsgICAgICAgZG4tPm5vZGVfZW50cnkgPSBlbnRyeTsKPiA+ ICAgICAgICAgZG4tPm9mc19pbl9ub2RlID0gMDsKPiA+ICAgICAgICAgZjJmc190cnVuY2F0ZV9k YXRhX2Jsb2Nrc19yYW5nZShkbiwgQUREUlNfUEVSX0JMT0NLKGRuLT5pbm9kZSkpOwo+ID4gICAg ICAgICBlcnIgPSB0cnVuY2F0ZV9ub2RlKGRuKTsKPiA+ICAgICAgICAgaWYgKGVycikgewo+ID4g LSAgICAgICAgICAgICAgIGYyZnNfZm9saW9fcHV0KGZvbGlvLCB0cnVlKTsKPiA+ICsgICAgICAg ICAgICAgICBmMmZzX3B1dF9jYWNoZShlbnRyeSwgdHJ1ZSk7Cj4gPiAgICAgICAgICAgICAgICAg cmV0dXJuIGVycjsKPiA+ICAgICAgICAgfQo+ID4KPiA+IEBAIC0xMDU5LDcgKzEwNTAsNyBAQCBz dGF0aWMgaW50IHRydW5jYXRlX25vZGVzKHN0cnVjdCBkbm9kZV9vZl9kYXRhICpkbiwgdW5zaWdu ZWQgaW50IG5vZnMsCj4gPiAgewo+ID4gICAgICAgICBzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkg PSBGMkZTX0lfU0IoZG4tPmlub2RlKTsKPiA+ICAgICAgICAgc3RydWN0IGRub2RlX29mX2RhdGEg cmRuID0gKmRuOwo+ID4gLSAgICAgICBzdHJ1Y3QgZm9saW8gKmZvbGlvOwo+ID4gKyAgICAgICBz dHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5Owo+ID4gICAgICAgICBzdHJ1Y3QgZjJmc19u b2RlICpybjsKPiA+ICAgICAgICAgbmlkX3QgY2hpbGRfbmlkOwo+ID4gICAgICAgICB1bnNpZ25l ZCBpbnQgY2hpbGRfbm9mczsKPiA+IEBAIC0xMDcxLDE2ICsxMDYyLDE2IEBAIHN0YXRpYyBpbnQg dHJ1bmNhdGVfbm9kZXMoc3RydWN0IGRub2RlX29mX2RhdGEgKmRuLCB1bnNpZ25lZCBpbnQgbm9m cywKPiA+Cj4gPiAgICAgICAgIHRyYWNlX2YyZnNfdHJ1bmNhdGVfbm9kZXNfZW50ZXIoZG4tPmlu b2RlLCBkbi0+bmlkLCBkbi0+ZGF0YV9ibGthZGRyKTsKPiA+Cj4gPiAtICAgICAgIGZvbGlvID0g ZjJmc19nZXRfbm9kZV9mb2xpbyhGMkZTX0lfU0IoZG4tPmlub2RlKSwgZG4tPm5pZCwKPiA+ICsg ICAgICAgZW50cnkgPSBmMmZzX2dldF9ub2RlX2NhY2hlKEYyRlNfSV9TQihkbi0+aW5vZGUpLCBk bi0+bmlkLAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTk9ERV9UWVBFX05PTl9JTk9ERSk7Cj4gPiAtICAgICAgIGlmIChJU19FUlIoZm9saW8pKSB7 Cj4gPiAtICAgICAgICAgICAgICAgdHJhY2VfZjJmc190cnVuY2F0ZV9ub2Rlc19leGl0KGRuLT5p bm9kZSwgUFRSX0VSUihmb2xpbykpOwo+ID4gLSAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJS KGZvbGlvKTsKPiA+ICsgICAgICAgaWYgKElTX0VSUihlbnRyeSkpIHsKPiA+ICsgICAgICAgICAg ICAgICB0cmFjZV9mMmZzX3RydW5jYXRlX25vZGVzX2V4aXQoZG4tPmlub2RlLCBQVFJfRVJSKGVu dHJ5KSk7Cj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIoZW50cnkpOwo+ID4gICAg ICAgICB9Cj4gPgo+ID4gLSAgICAgICBmMmZzX3JhX25vZGVfcGFnZXMoZm9saW8sIG9mcywgTklE U19QRVJfQkxPQ0soc2JpKSk7Cj4gPiArICAgICAgIGYyZnNfcmFfbm9kZV9jYWNoZXMoZW50cnks IG9mcywgTklEU19QRVJfQkxPQ0soc2JpKSk7Cj4gPgo+ID4gLSAgICAgICBybiA9IEYyRlNfTk9E RShmb2xpbyk7Cj4gPiArICAgICAgIHJuID0gQ0FDSEVEX05PREUoZW50cnkpOwo+ID4gICAgICAg ICBpZiAoZGVwdGggPCAzKSB7Cj4gPiAgICAgICAgICAgICAgICAgZm9yIChpID0gb2ZzOyBpIDwg TklEU19QRVJfQkxPQ0soc2JpKTsgaSsrLCBmcmVlZCsrKSB7Cj4gPiAgICAgICAgICAgICAgICAg ICAgICAgICBjaGlsZF9uaWQgPSBsZTMyX3RvX2NwdShybi0+aW4ubmlkW2ldKTsKPiA+IEBAIC0x MDkwLDcgKzEwODEsNyBAQCBzdGF0aWMgaW50IHRydW5jYXRlX25vZGVzKHN0cnVjdCBkbm9kZV9v Zl9kYXRhICpkbiwgdW5zaWduZWQgaW50IG5vZnMsCj4gPiAgICAgICAgICAgICAgICAgICAgICAg ICByZXQgPSB0cnVuY2F0ZV9kbm9kZSgmcmRuKTsKPiA+ICAgICAgICAgICAgICAgICAgICAgICAg IGlmIChyZXQgPCAwKQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG91 dF9lcnI7Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0X25pZChzYmksIGZvbGlv LCBpLCAwLCBmYWxzZSkpCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0X25pZChz YmksIGVudHJ5LCBpLCAwLCBmYWxzZSkpCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRuLT5ub2RlX2NoYW5nZWQgPSB0cnVlOwo+ID4gICAgICAgICAgICAgICAgIH0KPiA+ICAg ICAgICAgfSBlbHNlIHsKPiA+IEBAIC0xMTA0LDcgKzEwOTUsNyBAQCBzdGF0aWMgaW50IHRydW5j YXRlX25vZGVzKHN0cnVjdCBkbm9kZV9vZl9kYXRhICpkbiwgdW5zaWduZWQgaW50IG5vZnMsCj4g PiAgICAgICAgICAgICAgICAgICAgICAgICByZG4ubmlkID0gY2hpbGRfbmlkOwo+ID4gICAgICAg ICAgICAgICAgICAgICAgICAgcmV0ID0gdHJ1bmNhdGVfbm9kZXMoJnJkbiwgY2hpbGRfbm9mcywg MCwgZGVwdGggLSAxKTsKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXQgPT0gKE5J RFNfUEVSX0JMT0NLKHNiaSkgKyAxKSkgewo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpZiAoc2V0X25pZChzYmksIGZvbGlvLCBpLCAwLCBmYWxzZSkpCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXRfbmlkKHNiaSwgZW50cnksIGksIDAsIGZhbHNl KSkKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbi0+bm9kZV9j aGFuZ2VkID0gdHJ1ZTsKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRf bm9mcyArPSByZXQ7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJldCA8 IDAgJiYgcmV0ICE9IC1FTk9FTlQpIHsKPiA+IEBAIC0xMTE2LDE5ICsxMTA3LDE5IEBAIHN0YXRp YyBpbnQgdHJ1bmNhdGVfbm9kZXMoc3RydWN0IGRub2RlX29mX2RhdGEgKmRuLCB1bnNpZ25lZCBp bnQgbm9mcywKPiA+Cj4gPiAgICAgICAgIGlmICghb2ZzKSB7Cj4gPiAgICAgICAgICAgICAgICAg LyogcmVtb3ZlIGN1cnJlbnQgaW5kaXJlY3Qgbm9kZSAqLwo+ID4gLSAgICAgICAgICAgICAgIGRu LT5ub2RlX2ZvbGlvID0gZm9saW87Cj4gPiArICAgICAgICAgICAgICAgZG4tPm5vZGVfZW50cnkg PSBlbnRyeTsKPiA+ICAgICAgICAgICAgICAgICByZXQgPSB0cnVuY2F0ZV9ub2RlKGRuKTsKPiA+ ICAgICAgICAgICAgICAgICBpZiAocmV0KQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgZ290 byBvdXRfZXJyOwo+ID4gICAgICAgICAgICAgICAgIGZyZWVkKys7Cj4gPiAgICAgICAgIH0gZWxz ZSB7Cj4gPiAtICAgICAgICAgICAgICAgZjJmc19mb2xpb19wdXQoZm9saW8sIHRydWUpOwo+ID4g KyAgICAgICAgICAgICAgIGYyZnNfcHV0X2NhY2hlKGVudHJ5LCB0cnVlKTsKPiA+ICAgICAgICAg fQo+ID4gICAgICAgICB0cmFjZV9mMmZzX3RydW5jYXRlX25vZGVzX2V4aXQoZG4tPmlub2RlLCBm cmVlZCk7Cj4gPiAgICAgICAgIHJldHVybiBmcmVlZDsKPiA+Cj4gPiAgb3V0X2VycjoKPiA+IC0g ICAgICAgZjJmc19mb2xpb19wdXQoZm9saW8sIHRydWUpOwo+ID4gKyAgICAgICBmMmZzX3B1dF9j YWNoZShlbnRyeSwgdHJ1ZSk7Cj4gPiAgICAgICAgIHRyYWNlX2YyZnNfdHJ1bmNhdGVfbm9kZXNf ZXhpdChkbi0+aW5vZGUsIHJldCk7Cj4gPiAgICAgICAgIHJldHVybiByZXQ7Cj4gPiAgfQo+ID4g QEAgLTExMzYsNjMgKzExMjcsNjIgQEAgc3RhdGljIGludCB0cnVuY2F0ZV9ub2RlcyhzdHJ1Y3Qg ZG5vZGVfb2ZfZGF0YSAqZG4sIHVuc2lnbmVkIGludCBub2ZzLAo+ID4gIHN0YXRpYyBpbnQgdHJ1 bmNhdGVfcGFydGlhbF9ub2RlcyhzdHJ1Y3QgZG5vZGVfb2ZfZGF0YSAqZG4sCj4gPiAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgKm9mZnNldCwgaW50IGRlcHRoKQo+ID4gIHsKPiA+IC0gICAg ICAgc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpID0gRjJGU19JX1NCKGRuLT5pbm9kZSk7Cj4gPiAt ICAgICAgIHN0cnVjdCBmb2xpbyAqZm9saW9zWzJdOwo+ID4gKyAgICAgICBzdHJ1Y3QgZjJmc19j YWNoZWRfYmxvY2sgKmVudHJpZXNbMl07Cj4gPiAgICAgICAgIG5pZF90IG5pZFszXTsKPiA+ICAg ICAgICAgbmlkX3QgY2hpbGRfbmlkOwo+ID4gICAgICAgICBpbnQgZXJyID0gMDsKPiA+ICAgICAg ICAgaW50IGk7Cj4gPiAgICAgICAgIGludCBpZHggPSBkZXB0aCAtIDI7Cj4gPgo+ID4gLSAgICAg ICBuaWRbMF0gPSBnZXRfbmlkKHNiaSwgZG4tPmlub2RlX2ZvbGlvLCBvZmZzZXRbMF0sIHRydWUp Owo+ID4gKyAgICAgICBuaWRbMF0gPSBnZXRfbmlkKEYyRlNfSV9TQihkbi0+aW5vZGUpLCBkbi0+ aW5vZGVfZW50cnksIG9mZnNldFswXSwgdHJ1ZSk7Cj4gPiAgICAgICAgIGlmICghbmlkWzBdKQo+ ID4gICAgICAgICAgICAgICAgIHJldHVybiAwOwo+ID4KPiA+ICAgICAgICAgLyogZ2V0IGluZGly ZWN0IG5vZGVzIGluIHRoZSBwYXRoICovCj4gPiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBpZHgg KyAxOyBpKyspIHsKPiA+ICAgICAgICAgICAgICAgICAvKiByZWZlcmVuY2UgY291bnQnbGwgYmUg aW5jcmVhc2VkICovCj4gPiAtICAgICAgICAgICAgICAgZm9saW9zW2ldID0gZjJmc19nZXRfbm9k ZV9mb2xpbyhGMkZTX0lfU0IoZG4tPmlub2RlKSwgbmlkW2ldLAo+ID4gKyAgICAgICAgICAgICAg IGVudHJpZXNbaV0gPSBmMmZzX2dldF9ub2RlX2NhY2hlKEYyRlNfSV9TQihkbi0+aW5vZGUpLCBu aWRbaV0sCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE5PREVfVFlQRV9OT05fSU5PREUpOwo+ID4gLSAgICAgICAgICAgICAgIGlmIChJ U19FUlIoZm9saW9zW2ldKSkgewo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gUFRS X0VSUihmb2xpb3NbaV0pOwo+ID4gKyAgICAgICAgICAgICAgIGlmIChJU19FUlIoZW50cmllc1tp XSkpIHsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IFBUUl9FUlIoZW50cmllc1tp XSk7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBpZHggPSBpIC0gMTsKPiA+ICAgICAgICAg ICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKPiA+ICAgICAgICAgICAgICAgICB9Cj4gPiAtICAg ICAgICAgICAgICAgbmlkW2kgKyAxXSA9IGdldF9uaWQoc2JpLCBmb2xpb3NbaV0sIG9mZnNldFtp ICsgMV0sIGZhbHNlKTsKPiA+ICsgICAgICAgICAgICAgICBuaWRbaSArIDFdID0gZ2V0X25pZChG MkZTX0lfU0IoZG4tPmlub2RlKSwgZW50cmllc1tpXSwgb2Zmc2V0W2kgKyAxXSwgZmFsc2UpOwo+ ID4gICAgICAgICB9Cj4gPgo+ID4gLSAgICAgICBmMmZzX3JhX25vZGVfcGFnZXMoZm9saW9zW2lk eF0sIG9mZnNldFtpZHggKyAxXSwKPiA+ICsgICAgICAgZjJmc19yYV9ub2RlX2NhY2hlcyhlbnRy aWVzW2lkeF0sIG9mZnNldFtpZHggKyAxXSwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAg IE5JRFNfUEVSX0JMT0NLKEYyRlNfSV9TQihkbi0+aW5vZGUpKSk7Cj4gPgo+ID4gICAgICAgICAv KiBmcmVlIGRpcmVjdCBub2RlcyBsaW5rZWQgdG8gYSBwYXJ0aWFsIGluZGlyZWN0IG5vZGUgKi8K PiA+ICAgICAgICAgZm9yIChpID0gb2Zmc2V0W2lkeCArIDFdOwo+ID4gICAgICAgICAgICAgICAg ICAgICAgICAgaSA8IE5JRFNfUEVSX0JMT0NLKEYyRlNfSV9TQihkbi0+aW5vZGUpKTsgaSsrKSB7 Cj4gPiAtICAgICAgICAgICAgICAgY2hpbGRfbmlkID0gZ2V0X25pZChzYmksIGZvbGlvc1tpZHhd LCBpLCBmYWxzZSk7Cj4gPiArICAgICAgICAgICAgICAgY2hpbGRfbmlkID0gZ2V0X25pZChGMkZT X0lfU0IoZG4tPmlub2RlKSwgZW50cmllc1tpZHhdLCBpLCBmYWxzZSk7Cj4gPiAgICAgICAgICAg ICAgICAgaWYgKCFjaGlsZF9uaWQpCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51 ZTsKPiA+ICAgICAgICAgICAgICAgICBkbi0+bmlkID0gY2hpbGRfbmlkOwo+ID4gICAgICAgICAg ICAgICAgIGVyciA9IHRydW5jYXRlX2Rub2RlKGRuKTsKPiA+ICAgICAgICAgICAgICAgICBpZiAo ZXJyIDwgMCkKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKPiA+IC0gICAg ICAgICAgICAgICBpZiAoc2V0X25pZChzYmksIGZvbGlvc1tpZHhdLCBpLCAwLCBmYWxzZSkpCj4g PiArICAgICAgICAgICAgICAgaWYgKHNldF9uaWQoRjJGU19JX1NCKGRuLT5pbm9kZSksIGVudHJp ZXNbaWR4XSwgaSwgMCwgZmFsc2UpKQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgZG4tPm5v ZGVfY2hhbmdlZCA9IHRydWU7Cj4gPiAgICAgICAgIH0KPiA+Cj4gPiAgICAgICAgIGlmIChvZmZz ZXRbaWR4ICsgMV0gPT0gMCkgewo+ID4gLSAgICAgICAgICAgICAgIGRuLT5ub2RlX2ZvbGlvID0g Zm9saW9zW2lkeF07Cj4gPiArICAgICAgICAgICAgICAgZG4tPm5vZGVfZW50cnkgPSBlbnRyaWVz W2lkeF07Cj4gPiAgICAgICAgICAgICAgICAgZG4tPm5pZCA9IG5pZFtpZHhdOwo+ID4gICAgICAg ICAgICAgICAgIGVyciA9IHRydW5jYXRlX25vZGUoZG4pOwo+ID4gICAgICAgICAgICAgICAgIGlm IChlcnIpCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Cj4gPiAgICAgICAg IH0gZWxzZSB7Cj4gPiAtICAgICAgICAgICAgICAgZjJmc19mb2xpb19wdXQoZm9saW9zW2lkeF0s IHRydWUpOwo+ID4gKyAgICAgICAgICAgICAgIGYyZnNfcHV0X2NhY2hlKGVudHJpZXNbaWR4XSwg dHJ1ZSk7Cj4gPiAgICAgICAgIH0KPiA+ICAgICAgICAgb2Zmc2V0W2lkeF0rKzsKPiA+ICAgICAg ICAgb2Zmc2V0W2lkeCArIDFdID0gMDsKPiA+ICAgICAgICAgaWR4LS07Cj4gPiAgZmFpbDoKPiA+ ICAgICAgICAgZm9yIChpID0gaWR4OyBpID49IDA7IGktLSkKPiA+IC0gICAgICAgICAgICAgICBm MmZzX2ZvbGlvX3B1dChmb2xpb3NbaV0sIHRydWUpOwo+ID4gKyAgICAgICAgICAgICAgIGYyZnNf cHV0X2NhY2hlKGVudHJpZXNbaV0sIHRydWUpOwo+ID4KPiA+ICAgICAgICAgdHJhY2VfZjJmc190 cnVuY2F0ZV9wYXJ0aWFsX25vZGVzKGRuLT5pbm9kZSwgbmlkLCBkZXB0aCwgZXJyKTsKPiA+Cj4g PiBAQCAtMTIxMSw3ICsxMjAxLDcgQEAgaW50IGYyZnNfdHJ1bmNhdGVfaW5vZGVfYmxvY2tzKHN0 cnVjdCBpbm9kZSAqaW5vZGUsIHBnb2ZmX3QgZnJvbSkKPiA+ICAgICAgICAgaW50IGxldmVsLCBv ZmZzZXRbNF0sIG5vZmZzZXRbNF07Cj4gPiAgICAgICAgIHVuc2lnbmVkIGludCBub2ZzID0gMDsK PiA+ICAgICAgICAgc3RydWN0IGRub2RlX29mX2RhdGEgZG47Cj4gPiAtICAgICAgIHN0cnVjdCBm b2xpbyAqZm9saW87Cj4gPiArICAgICAgIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnk7 Cj4gPgo+ID4gICAgICAgICB0cmFjZV9mMmZzX3RydW5jYXRlX2lub2RlX2Jsb2Nrc19lbnRlcihp bm9kZSwgZnJvbSk7Cj4gPgo+ID4gQEAgLTEyMjgsMTQgKzEyMTgsMTQgQEAgaW50IGYyZnNfdHJ1 bmNhdGVfaW5vZGVfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHBnb2ZmX3QgZnJvbSkKPiA+ ICAgICAgICAgICAgICAgICByZXR1cm4gbGV2ZWw7Cj4gPiAgICAgICAgIH0KPiA+Cj4gPiAtICAg ICAgIGZvbGlvID0gZjJmc19nZXRfaW5vZGVfZm9saW8oc2JpLCBpbm9kZS0+aV9pbm8pOwo+ID4g LSAgICAgICBpZiAoSVNfRVJSKGZvbGlvKSkgewo+ID4gLSAgICAgICAgICAgICAgIHRyYWNlX2Yy ZnNfdHJ1bmNhdGVfaW5vZGVfYmxvY2tzX2V4aXQoaW5vZGUsIFBUUl9FUlIoZm9saW8pKTsKPiA+ IC0gICAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihmb2xpbyk7Cj4gPiArICAgICAgIGVudHJ5 ID0gZjJmc19nZXRfaW5vZGVfY2FjaGUoc2JpLCBpbm9kZS0+aV9pbm8pOwo+ID4gKyAgICAgICBp ZiAoSVNfRVJSKGVudHJ5KSkgewo+ID4gKyAgICAgICAgICAgICAgIHRyYWNlX2YyZnNfdHJ1bmNh dGVfaW5vZGVfYmxvY2tzX2V4aXQoaW5vZGUsIFBUUl9FUlIoZW50cnkpKTsKPiA+ICsgICAgICAg ICAgICAgICByZXR1cm4gUFRSX0VSUihlbnRyeSk7Cj4gPiAgICAgICAgIH0KPiA+Cj4gPiAtICAg ICAgIHNldF9uZXdfZG5vZGUoJmRuLCBpbm9kZSwgZm9saW8sIE5VTEwsIDApOwo+ID4gLSAgICAg ICBmb2xpb191bmxvY2soZm9saW8pOwo+ID4gKyAgICAgICBzZXRfbmV3X2Rub2RlKCZkbiwgaW5v ZGUsIGVudHJ5LCBOVUxMLCAwKTsKPiA+ICsgICAgICAgZjJmc191bmxvY2tfY2FjaGUoZW50cnkp Owo+ID4KPiA+ICAgICAgICAgc3dpdGNoIChsZXZlbCkgewo+ID4gICAgICAgICBjYXNlIDA6Cj4g PiBAQCAtMTI2NSw3ICsxMjU1LDcgQEAgaW50IGYyZnNfdHJ1bmNhdGVfaW5vZGVfYmxvY2tzKHN0 cnVjdCBpbm9kZSAqaW5vZGUsIHBnb2ZmX3QgZnJvbSkKPiA+Cj4gPiAgc2tpcF9wYXJ0aWFsOgo+ ID4gICAgICAgICB3aGlsZSAoY29udCkgewo+ID4gLSAgICAgICAgICAgICAgIGRuLm5pZCA9IGdl dF9uaWQoc2JpLCBmb2xpbywgb2Zmc2V0WzBdLCB0cnVlKTsKPiA+ICsgICAgICAgICAgICAgICBk bi5uaWQgPSBnZXRfbmlkKHNiaSwgZW50cnksIG9mZnNldFswXSwgdHJ1ZSk7Cj4gPiAgICAgICAg ICAgICAgICAgaWYgKG9mZnNldFswXSA9PSBOT0RFX0RJUjFfQkxPQ0soc2JpKSB8fAo+ID4gICAg ICAgICAgICAgICAgICAgICBvZmZzZXRbMF0gPT0gTk9ERV9ESVIyX0JMT0NLKHNiaSkpIHsKPiA+ ICAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IHRydW5jYXRlX2Rub2RlKCZkbik7Cj4gPiBA QCAtMTI5Miw0MiArMTI4Miw0MiBAQCBpbnQgZjJmc190cnVuY2F0ZV9pbm9kZV9ibG9ja3Moc3Ry dWN0IGlub2RlICppbm9kZSwgcGdvZmZfdCBmcm9tKQo+ID4gICAgICAgICAgICAgICAgIH0KPiA+ ICAgICAgICAgICAgICAgICBpZiAoZXJyIDwgMCkKPiA+ICAgICAgICAgICAgICAgICAgICAgICAg IGdvdG8gZmFpbDsKPiA+IC0gICAgICAgICAgICAgICBpZiAob2Zmc2V0WzFdID09IDAgJiYgZ2V0 X25pZChzYmksIGZvbGlvLCBvZmZzZXRbMF0sIHRydWUpKSB7Cj4gPiAtICAgICAgICAgICAgICAg ICAgICAgICBmb2xpb19sb2NrKGZvbGlvKTsKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIEJV R19PTighaXNfbm9kZV9mb2xpbyhzYmksIGZvbGlvKSk7Cj4gPiAtICAgICAgICAgICAgICAgICAg ICAgICBzZXRfbmlkKHNiaSwgZm9saW8sIG9mZnNldFswXSwgMCwgdHJ1ZSk7Cj4gPiAtICAgICAg ICAgICAgICAgICAgICAgICBmb2xpb191bmxvY2soZm9saW8pOwo+ID4gKyAgICAgICAgICAgICAg IGlmIChvZmZzZXRbMV0gPT0gMCAmJiBnZXRfbmlkKHNiaSwgZW50cnksIG9mZnNldFswXSwgdHJ1 ZSkpIHsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGYyZnNfbG9ja19jYWNoZShlbnRyeSk7 Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBmMmZzX2J1Z19vbihzYmksICFmMmZzX2lzX25v ZGVfY2FjaGUoZW50cnkpKTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHNldF9uaWQoc2Jp LCBlbnRyeSwgb2Zmc2V0WzBdLCAwLCB0cnVlKTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAg IGYyZnNfdW5sb2NrX2NhY2hlKGVudHJ5KTsKPiA+ICAgICAgICAgICAgICAgICB9Cj4gPiAgICAg ICAgICAgICAgICAgb2Zmc2V0WzFdID0gMDsKPiA+ICAgICAgICAgICAgICAgICBvZmZzZXRbMF0r KzsKPiA+ICAgICAgICAgICAgICAgICBub2ZzICs9IGVycjsKPiA+ICAgICAgICAgfQo+ID4gIGZh aWw6Cj4gPiAtICAgICAgIGYyZnNfZm9saW9fcHV0KGZvbGlvLCBmYWxzZSk7Cj4gPiArICAgICAg IGYyZnNfcHV0X2NhY2hlKGVudHJ5LCBmYWxzZSk7Cj4gPiAgICAgICAgIHRyYWNlX2YyZnNfdHJ1 bmNhdGVfaW5vZGVfYmxvY2tzX2V4aXQoaW5vZGUsIGVycik7Cj4gPiAgICAgICAgIHJldHVybiBl cnIgPiAwID8gMCA6IGVycjsKPiA+ICB9Cj4gPgo+ID4gLS8qIGNhbGxlciBtdXN0IGxvY2sgaW5v ZGUgcGFnZSAqLwo+ID4gKy8qIGNhbGxlciBtdXN0IGxvY2sgaW5vZGUgY2FjaGVkIGJsb2NrICov Cj4gPiAgaW50IGYyZnNfdHJ1bmNhdGVfeGF0dHJfbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKQo+ ID4gIHsKPiA+ICAgICAgICAgc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpID0gRjJGU19JX1NCKGlu b2RlKTsKPiA+ICAgICAgICAgbmlkX3QgbmlkID0gRjJGU19JKGlub2RlKS0+aV94YXR0cl9uaWQ7 Cj4gPiAgICAgICAgIHN0cnVjdCBkbm9kZV9vZl9kYXRhIGRuOwo+ID4gLSAgICAgICBzdHJ1Y3Qg Zm9saW8gKm5mb2xpbzsKPiA+ICsgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICpuZW50 cnk7Cj4gPiAgICAgICAgIGludCBlcnI7Cj4gPgo+ID4gICAgICAgICBpZiAoIW5pZCkKPiA+ICAg ICAgICAgICAgICAgICByZXR1cm4gMDsKPiA+Cj4gPiAtICAgICAgIG5mb2xpbyA9IGYyZnNfZ2V0 X3hub2RlX2ZvbGlvKHNiaSwgbmlkKTsKPiA+IC0gICAgICAgaWYgKElTX0VSUihuZm9saW8pKQo+ ID4gLSAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKG5mb2xpbyk7Cj4gPiArICAgICAgIG5l bnRyeSA9IGYyZnNfZ2V0X3hub2RlX2NhY2hlKHNiaSwgbmlkKTsKPiA+ICsgICAgICAgaWYgKElT X0VSUihuZW50cnkpKQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKG5lbnRyeSk7 Cj4gPgo+ID4gLSAgICAgICBzZXRfbmV3X2Rub2RlKCZkbiwgaW5vZGUsIE5VTEwsIG5mb2xpbywg bmlkKTsKPiA+ICsgICAgICAgc2V0X25ld19kbm9kZSgmZG4sIGlub2RlLCBOVUxMLCBuZW50cnks IG5pZCk7Cj4gPiAgICAgICAgIGVyciA9IHRydW5jYXRlX25vZGUoJmRuKTsKPiA+ICAgICAgICAg aWYgKGVycikgewo+ID4gLSAgICAgICAgICAgICAgIGYyZnNfZm9saW9fcHV0KG5mb2xpbywgdHJ1 ZSk7Cj4gPiArICAgICAgICAgICAgICAgZjJmc19wdXRfY2FjaGUobmVudHJ5LCB0cnVlKTsKPiA+ ICAgICAgICAgICAgICAgICByZXR1cm4gZXJyOwo+ID4gICAgICAgICB9Cj4gPgo+ID4gQEAgLTEz NDAsNyArMTMzMCw3IEBAIGludCBmMmZzX3RydW5jYXRlX3hhdHRyX25vZGUoc3RydWN0IGlub2Rl ICppbm9kZSkKPiA+ICAgKiBDYWxsZXIgc2hvdWxkIGdyYWIgYW5kIHJlbGVhc2UgYSByd3NlbSBi eSBjYWxsaW5nIGYyZnNfbG9ja19vcCgpIGFuZAo+ID4gICAqIGYyZnNfdW5sb2NrX29wKCkuCj4g PiAgICovCj4gPiAtaW50IGYyZnNfcmVtb3ZlX2lub2RlX3BhZ2Uoc3RydWN0IGlub2RlICppbm9k ZSkKPiA+ICtpbnQgZjJmc19yZW1vdmVfaW5vZGVfY2FjaGUoc3RydWN0IGlub2RlICppbm9kZSkK PiA+ICB7Cj4gPiAgICAgICAgIHN0cnVjdCBkbm9kZV9vZl9kYXRhIGRuOwo+ID4gICAgICAgICBp bnQgZXJyOwo+ID4gQEAgLTEzNzAsMTIgKzEzNjAsMTIgQEAgaW50IGYyZnNfcmVtb3ZlX2lub2Rl X3BhZ2Uoc3RydWN0IGlub2RlICppbm9kZSkKPiA+Cj4gPiAgICAgICAgIGlmICh1bmxpa2VseShp bm9kZS0+aV9ibG9ja3MgIT0gMCAmJiBpbm9kZS0+aV9ibG9ja3MgIT0gOCkpIHsKPiA+ICAgICAg ICAgICAgICAgICBmMmZzX3dhcm4oRjJGU19JX1NCKGlub2RlKSwKPiA+IC0gICAgICAgICAgICAg ICAgICAgICAgICJmMmZzX3JlbW92ZV9pbm9kZV9wYWdlOiBpbmNvbnNpc3RlbnQgaV9ibG9ja3Ms IGlubzolbGx1LCBpYmxvY2tzOiVsbHUiLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgImYy ZnNfcmVtb3ZlX2lub2RlX2NhY2hlOiBpbmNvbnNpc3RlbnQgaV9ibG9ja3MsIGlubzolbGx1LCBp YmxvY2tzOiVsbHUiLAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgaW5vZGUtPmlfaW5vLCAo dW5zaWduZWQgbG9uZyBsb25nKWlub2RlLT5pX2Jsb2Nrcyk7Cj4gPiAgICAgICAgICAgICAgICAg c2V0X3NiaV9mbGFnKEYyRlNfSV9TQihpbm9kZSksIFNCSV9ORUVEX0ZTQ0spOwo+ID4gICAgICAg ICB9Cj4gPgo+ID4gLSAgICAgICAvKiB3aWxsIHB1dCBpbm9kZSAmIG5vZGUgcGFnZXMgKi8KPiA+ ICsgICAgICAgLyogd2lsbCBwdXQgaW5vZGUgJiBub2RlIGNhY2hlZCBibG9ja3MgKi8KPiA+ICAg ICAgICAgZXJyID0gdHJ1bmNhdGVfbm9kZSgmZG4pOwo+ID4gICAgICAgICBpZiAoZXJyKSB7Cj4g PiAgICAgICAgICAgICAgICAgZjJmc19wdXRfZG5vZGUoJmRuKTsKPiA+IEBAIC0xMzg0LDMwICsx Mzc0LDMwIEBAIGludCBmMmZzX3JlbW92ZV9pbm9kZV9wYWdlKHN0cnVjdCBpbm9kZSAqaW5vZGUp Cj4gPiAgICAgICAgIHJldHVybiAwOwo+ID4gIH0KPiA+Cj4gPiAtc3RydWN0IGZvbGlvICpmMmZz X25ld19pbm9kZV9mb2xpbyhzdHJ1Y3QgaW5vZGUgKmlub2RlKQo+ID4gK3N0cnVjdCBmMmZzX2Nh Y2hlZF9ibG9jayAqZjJmc19uZXdfaW5vZGVfY2FjaGUoc3RydWN0IGlub2RlICppbm9kZSkKPiA+ ICB7Cj4gPiAgICAgICAgIHN0cnVjdCBkbm9kZV9vZl9kYXRhIGRuOwo+ID4KPiA+IC0gICAgICAg LyogYWxsb2NhdGUgaW5vZGUgcGFnZSBmb3IgbmV3IGlub2RlICovCj4gPiArICAgICAgIC8qIGFs bG9jYXRlIGlub2RlIGJsb2NrIGZvciBuZXcgaW5vZGUgKi8KPiA+ICAgICAgICAgc2V0X25ld19k bm9kZSgmZG4sIGlub2RlLCBOVUxMLCBOVUxMLCBpbm9kZS0+aV9pbm8pOwo+ID4KPiA+IC0gICAg ICAgLyogY2FsbGVyIHNob3VsZCBmMmZzX2ZvbGlvX3B1dChmb2xpbywgdHJ1ZSk7ICovCj4gPiAt ICAgICAgIHJldHVybiBmMmZzX25ld19ub2RlX2ZvbGlvKCZkbiwgMCk7Cj4gPiArICAgICAgIC8q IGNhbGxlciBzaG91bGQgZjJmc19wdXRfY2FjaGUoZW50cnksIHRydWUpOyAqLwo+ID4gKyAgICAg ICByZXR1cm4gZjJmc19uZXdfbm9kZV9jYWNoZSgmZG4sIDApOwo+ID4gIH0KPiA+Cj4gPiAtc3Ry dWN0IGZvbGlvICpmMmZzX25ld19ub2RlX2ZvbGlvKHN0cnVjdCBkbm9kZV9vZl9kYXRhICpkbiwg dW5zaWduZWQgaW50IG9mcykKPiA+ICtzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmYyZnNfbmV3 X25vZGVfY2FjaGUoc3RydWN0IGRub2RlX29mX2RhdGEgKmRuLCB1bnNpZ25lZCBpbnQgb2ZzKQo+ ID4gIHsKPiA+ICAgICAgICAgc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpID0gRjJGU19JX1NCKGRu LT5pbm9kZSk7Cj4gPiAgICAgICAgIHN0cnVjdCBub2RlX2luZm8gbmV3X25pOwo+ID4gLSAgICAg ICBzdHJ1Y3QgZm9saW8gKmZvbGlvOwo+ID4gKyAgICAgICBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxv Y2sgKmVudHJ5Owo+ID4gICAgICAgICBpbnQgZXJyOwo+ID4KPiA+ICAgICAgICAgaWYgKHVubGlr ZWx5KGlzX2lub2RlX2ZsYWdfc2V0KGRuLT5pbm9kZSwgRklfTk9fQUxMT0MpKSkKPiA+ICAgICAg ICAgICAgICAgICByZXR1cm4gRVJSX1BUUigtRVBFUk0pOwo+ID4KPiA+IC0gICAgICAgZm9saW8g PSBmMmZzX2dyYWJfY2FjaGVfZm9saW8oTk9ERV9NQVBQSU5HKHNiaSksIGRuLT5uaWQsIGZhbHNl KTsKPiA+IC0gICAgICAgaWYgKElTX0VSUihmb2xpbykpCj4gPiAtICAgICAgICAgICAgICAgcmV0 dXJuIGZvbGlvOwo+ID4gKyAgICAgICBlbnRyeSA9IGYyZnNfZ3JhYl9ub2RlX2NhY2hlKHNiaSwg ZG4tPm5pZCk7Cj4gPiArICAgICAgIGlmIChJU19FUlIoZW50cnkpKQo+ID4gKyAgICAgICAgICAg ICAgIHJldHVybiBlbnRyeTsKPiA+Cj4gPiAgICAgICAgIGlmICh1bmxpa2VseSgoZXJyID0gaW5j X3ZhbGlkX25vZGVfY291bnQoc2JpLCBkbi0+aW5vZGUsICFvZnMpKSkpCj4gPiAgICAgICAgICAg ICAgICAgZ290byBmYWlsOwo+ID4gQEAgLTE0MjMsNyArMTQxMyw3IEBAIHN0cnVjdCBmb2xpbyAq ZjJmc19uZXdfbm9kZV9mb2xpbyhzdHJ1Y3QgZG5vZGVfb2ZfZGF0YSAqZG4sIHVuc2lnbmVkIGlu dCBvZnMpCj4gPiAgICAgICAgICAgICAgICAgZGVjX3ZhbGlkX25vZGVfY291bnQoc2JpLCBkbi0+ aW5vZGUsICFvZnMpOwo+ID4gICAgICAgICAgICAgICAgIHNldF9zYmlfZmxhZyhzYmksIFNCSV9O RUVEX0ZTQ0spOwo+ID4gICAgICAgICAgICAgICAgIGYyZnNfd2Fybl9yYXRlbGltaXRlZChzYmks Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAiZjJmc19uZXdfbm9kZV9mb2xpbzogaW5jb25z aXN0ZW50IG5hdCBlbnRyeSwgIgo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgImYyZnNfbmV3 X25vZGVfY2FjaGU6IGluY29uc2lzdGVudCBuYXQgZW50cnksICIKPiA+ICAgICAgICAgICAgICAg ICAgICAgICAgICJpbm86JXUsIG5pZDoldSwgYmxrYWRkcjoldSwgdmVyOiV1LCBmbGFnOiV1IiwK PiA+ICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19uaS5pbm8sIG5ld19uaS5uaWQsIG5ld19u aS5ibGtfYWRkciwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19uaS52ZXJzaW9uLCBu ZXdfbmkuZmxhZyk7Cj4gPiBAQCAtMTQzOCwxMiArMTQyOCwxMSBAQCBzdHJ1Y3QgZm9saW8gKmYy ZnNfbmV3X25vZGVfZm9saW8oc3RydWN0IGRub2RlX29mX2RhdGEgKmRuLCB1bnNpZ25lZCBpbnQg b2ZzKQo+ID4gICAgICAgICBuZXdfbmkudmVyc2lvbiA9IDA7Cj4gPiAgICAgICAgIHNldF9ub2Rl X2FkZHIoc2JpLCAmbmV3X25pLCBORVdfQUREUiwgZmFsc2UpOwo+ID4KPiA+IC0gICAgICAgZjJm c19mb2xpb193YWl0X3dyaXRlYmFjayhmb2xpbywgTk9ERSwgdHJ1ZSwgdHJ1ZSk7Cj4gPiAtICAg ICAgIGZpbGxfbm9kZV9mb290ZXIoc2JpLCBmb2xpbywgZG4tPm5pZCwgZG4tPmlub2RlLT5pX2lu bywgb2ZzLCB0cnVlKTsKPiA+IC0gICAgICAgc2V0X2NvbGRfbm9kZShzYmksIGZvbGlvLCBTX0lT RElSKGRuLT5pbm9kZS0+aV9tb2RlKSk7Cj4gPiAtICAgICAgIGlmICghZm9saW9fdGVzdF91cHRv ZGF0ZShmb2xpbykpCj4gPiAtICAgICAgICAgICAgICAgZm9saW9fbWFya191cHRvZGF0ZShmb2xp byk7Cj4gPiAtICAgICAgIGlmIChmb2xpb19tYXJrX2RpcnR5KGZvbGlvKSkKPiA+ICsgICAgICAg ZjJmc19jYWNoZV93YWl0X3dyaXRlYmFjayhlbnRyeSk7Cj4gPiArICAgICAgIGZpbGxfbm9kZV9m b290ZXIoc2JpLCBlbnRyeSwgZG4tPm5pZCwgZG4tPmlub2RlLT5pX2lubywgb2ZzLCB0cnVlKTsK PiA+ICsgICAgICAgc2V0X2NvbGRfbm9kZShzYmksIGVudHJ5LCBTX0lTRElSKGRuLT5pbm9kZS0+ aV9tb2RlKSk7Cj4gPiArICAgICAgIGYyZnNfY2FjaGVfc2V0X3VwdG9kYXRlKGVudHJ5KTsKPiA+ ICsgICAgICAgaWYgKGYyZnNfbWFya19jYWNoZV9kaXJ0eShlbnRyeSkpCj4gPiAgICAgICAgICAg ICAgICAgZG4tPm5vZGVfY2hhbmdlZCA9IHRydWU7Cj4gPgo+ID4gICAgICAgICBpZiAoZjJmc19o YXNfeGF0dHJfYmxvY2sob2ZzKSkKPiA+IEBAIC0xNDUxLDU0ICsxNDQwLDU0IEBAIHN0cnVjdCBm b2xpbyAqZjJmc19uZXdfbm9kZV9mb2xpbyhzdHJ1Y3QgZG5vZGVfb2ZfZGF0YSAqZG4sIHVuc2ln bmVkIGludCBvZnMpCj4gPgo+ID4gICAgICAgICBpZiAob2ZzID09IDApCj4gPiAgICAgICAgICAg ICAgICAgaW5jX3ZhbGlkX2lub2RlX2NvdW50KHNiaSk7Cj4gPiAtICAgICAgIHJldHVybiBmb2xp bzsKPiA+ICsgICAgICAgcmV0dXJuIGVudHJ5Owo+ID4gIGZhaWw6Cj4gPiAtICAgICAgIGNsZWFy X25vZGVfZm9saW9fZGlydHkoZm9saW8pOwo+ID4gLSAgICAgICBmMmZzX2ZvbGlvX3B1dChmb2xp bywgdHJ1ZSk7Cj4gPiArICAgICAgIGYyZnNfZHJvcF9jYWNoZV9kaXJ0eShlbnRyeSk7Cj4gPiAr ICAgICAgIGYyZnNfcHV0X2NhY2hlKGVudHJ5LCB0cnVlKTsKPiA+ICAgICAgICAgcmV0dXJuIEVS Ul9QVFIoZXJyKTsKPiA+ICB9Cj4gPgo+ID4gIC8qCj4gPiAgICogQ2FsbGVyIHNob3VsZCBkbyBh ZnRlciBnZXR0aW5nIHRoZSBmb2xsb3dpbmcgdmFsdWVzLgo+ID4gLSAqIDA6IGYyZnNfZm9saW9f cHV0KGZvbGlvLCBmYWxzZSkKPiA+IC0gKiBMT0NLRURfUEFHRSBvciBlcnJvcjogZjJmc19mb2xp b19wdXQoZm9saW8sIHRydWUpCj4gPiArICogMDogZjJmc19wdXRfY2FjaGUoY2FjaGUsIGZhbHNl KQo+ID4gKyAqIExPQ0tFRF9DQUNIRSBvciBlcnJvcjogZjJmc19wdXRfY2FjaGUoZW50cnksIHRy dWUpCj4gPiAgICovCj4gPiAtc3RhdGljIGludCByZWFkX25vZGVfZm9saW8oc3RydWN0IGZvbGlv ICpmb2xpbywgYmxrX29wZl90IG9wX2ZsYWdzKQo+ID4gK3N0YXRpYyBpbnQgcmVhZF9ub2RlX2Nh Y2hlKHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnksIGJsa19vcGZfdCBvcF9mbGFncykK PiA+ICB7Cj4gPiAtICAgICAgIHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSA9IEYyRlNfRl9TQihm b2xpbyk7Cj4gPiArICAgICAgIHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSA9IGVudHJ5LT5jYWNo ZS0+c2JpOwo+ID4gICAgICAgICBzdHJ1Y3Qgbm9kZV9pbmZvIG5pOwo+ID4gICAgICAgICBzdHJ1 Y3QgZjJmc19pb19pbmZvIGZpbyA9IHsKPiA+ICAgICAgICAgICAgICAgICAuc2JpID0gc2JpLAo+ ID4gICAgICAgICAgICAgICAgIC50eXBlID0gTk9ERSwKPiA+ICAgICAgICAgICAgICAgICAub3Ag PSBSRVFfT1BfUkVBRCwKPiA+ICAgICAgICAgICAgICAgICAub3BfZmxhZ3MgPSBvcF9mbGFncywK PiA+IC0gICAgICAgICAgICAgICAuZm9saW8gPSBmb2xpbywKPiA+ICAgICAgICAgICAgICAgICAu ZW5jcnlwdGVkX3BhZ2UgPSBOVUxMLAo+ID4gKyAgICAgICAgICAgICAgIC5jYWNoZV9lbnRyeSA9 IGVudHJ5LAo+ID4gKyAgICAgICAgICAgICAgIC5pc19jYWNoZSA9IDEsCj4gPiAgICAgICAgIH07 Cj4gPiAgICAgICAgIGludCBlcnI7Cj4gPgo+ID4gLSAgICAgICBpZiAoZm9saW9fdGVzdF91cHRv ZGF0ZShmb2xpbykpIHsKPiA+IC0gICAgICAgICAgICAgICBpZiAoIWYyZnNfaW5vZGVfY2hrc3Vt X3ZlcmlmeShzYmksIGZvbGlvKSkgewo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgZm9saW9f Y2xlYXJfdXB0b2RhdGUoZm9saW8pOwo+ID4gKyAgICAgICBpZiAoZjJmc19jYWNoZV90ZXN0X3Vw dG9kYXRlKGVudHJ5KSkgewo+ID4gKyAgICAgICAgICAgICAgIGlmICghZjJmc19pbm9kZV9jaGtz dW1fdmVyaWZ5KHNiaSwgZW50cnkpKSB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBmMmZz X2NhY2hlX2NsZWFyX3VwdG9kYXRlKGVudHJ5KTsKPiA+ICAgICAgICAgICAgICAgICAgICAgICAg IHJldHVybiAtRUZTQkFEQ1JDOwo+ID4gICAgICAgICAgICAgICAgIH0KPiA+IC0gICAgICAgICAg ICAgICByZXR1cm4gTE9DS0VEX1BBR0U7Cj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIExPQ0tF RF9DQUNIRTsKPiA+ICAgICAgICAgfQo+ID4KPiA+IC0gICAgICAgZXJyID0gZjJmc19nZXRfbm9k ZV9pbmZvKHNiaSwgZm9saW8tPmluZGV4LCAmbmksIGZhbHNlKTsKPiA+ICsgICAgICAgZXJyID0g ZjJmc19nZXRfbm9kZV9pbmZvKHNiaSwgZW50cnktPmluZGV4LCAmbmksIGZhbHNlKTsKPiA+ICAg ICAgICAgaWYgKGVycikKPiA+ICAgICAgICAgICAgICAgICByZXR1cm4gZXJyOwo+ID4KPiA+IC0g ICAgICAgLyogTkVXX0FERFIgY2FuIGJlIHNlZW4sIGFmdGVyIGNwX2Vycm9yIGRyb3BzIHNvbWUg ZGlydHkgbm9kZSBwYWdlcyAqLwo+ID4gKyAgICAgICAvKiBORVdfQUREUiBjYW4gYmUgc2Vlbiwg YWZ0ZXIgY3BfZXJyb3IgZHJvcHMgc29tZSBkaXJ0eSBub2RlIGNhY2hlcyAqLwo+ID4gICAgICAg ICBpZiAodW5saWtlbHkobmkuYmxrX2FkZHIgPT0gTlVMTF9BRERSIHx8IG5pLmJsa19hZGRyID09 IE5FV19BRERSKSkgewo+ID4gLSAgICAgICAgICAgICAgIGZvbGlvX2NsZWFyX3VwdG9kYXRlKGZv bGlvKTsKPiA+ICsgICAgICAgICAgICAgICBmMmZzX2NhY2hlX2NsZWFyX3VwdG9kYXRlKGVudHJ5 KTsKPiA+ICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT0VOVDsKPiA+ICAgICAgICAgfQo+ID4K PiA+ICAgICAgICAgZmlvLm5ld19ibGthZGRyID0gZmlvLm9sZF9ibGthZGRyID0gbmkuYmxrX2Fk ZHI7Cj4gPgo+ID4gLSAgICAgICBlcnIgPSBmMmZzX3N1Ym1pdF9wYWdlX2JpbygmZmlvKTsKPiA+ IC0KPiA+ICsgICAgICAgZXJyID0gZjJmc19zdWJtaXRfY2FjaGVfcmVhZCgmZmlvKTsKPiA+ICAg ICAgICAgaWYgKCFlcnIpCj4gPiAgICAgICAgICAgICAgICAgZjJmc191cGRhdGVfaW9zdGF0KHNi aSwgTlVMTCwgRlNfTk9ERV9SRUFEX0lPLAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBGMkZTX0JMS1NJWkUoc2JpKSk7Cj4gPiBAQCAtMTUwNywxMSArMTQ5NiwxMSBAQCBz dGF0aWMgaW50IHJlYWRfbm9kZV9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBibGtfb3BmX3Qg b3BfZmxhZ3MpCj4gPiAgfQo+ID4KPiA+ICAvKgo+ID4gLSAqIFJlYWRhaGVhZCBhIG5vZGUgcGFn ZQo+ID4gKyAqIFJlYWRhaGVhZCBhIG5vZGUgY2FjaGUKPiA+ICAgKi8KPiA+IC12b2lkIGYyZnNf cmFfbm9kZV9wYWdlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgbmlkX3QgbmlkKQo+ID4gK3Zv aWQgZjJmc19yYV9ub2RlX2NhY2hlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgbmlkX3Qgbmlk KQo+ID4gIHsKPiA+IC0gICAgICAgc3RydWN0IGZvbGlvICphZm9saW87Cj4gPiArICAgICAgIHN0 cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnk7Cj4gPiAgICAgICAgIGludCBlcnI7Cj4gPgo+ ID4gICAgICAgICBpZiAoIW5pZCkKPiA+IEBAIC0xNTE5LDI5ICsxNTA4LDI5IEBAIHZvaWQgZjJm c19yYV9ub2RlX3BhZ2Uoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBuaWRfdCBuaWQpCj4gPiAg ICAgICAgIGlmIChmMmZzX2NoZWNrX25pZF9yYW5nZShzYmksIG5pZCkpCj4gPiAgICAgICAgICAg ICAgICAgcmV0dXJuOwo+ID4KPiA+IC0gICAgICAgYWZvbGlvID0geGFfbG9hZCgmTk9ERV9NQVBQ SU5HKHNiaSktPmlfcGFnZXMsIG5pZCk7Cj4gPiAtICAgICAgIGlmIChhZm9saW8pCj4gPiArICAg ICAgIGVudHJ5ID0geGFfbG9hZCgmTk9ERV9DQUNIRShzYmkpLT5yb290LCBuaWQpOwo+ID4gKyAg ICAgICBpZiAoZW50cnkpCj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuOwo+ID4KPiA+IC0gICAg ICAgYWZvbGlvID0gZjJmc19ncmFiX2NhY2hlX2ZvbGlvKE5PREVfTUFQUElORyhzYmkpLCBuaWQs IGZhbHNlKTsKPiA+IC0gICAgICAgaWYgKElTX0VSUihhZm9saW8pKQo+ID4gKyAgICAgICBlbnRy eSA9IGYyZnNfZ3JhYl9ub2RlX2NhY2hlKHNiaSwgbmlkKTsKPiA+ICsgICAgICAgaWYgKElTX0VS UihlbnRyeSkpCj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuOwo+ID4KPiA+IC0gICAgICAgZXJy ID0gcmVhZF9ub2RlX2ZvbGlvKGFmb2xpbywgUkVRX1JBSEVBRCk7Cj4gPiAtICAgICAgIGYyZnNf Zm9saW9fcHV0KGFmb2xpbywgZXJyID8gdHJ1ZSA6IGZhbHNlKTsKPiA+ICsgICAgICAgZXJyID0g cmVhZF9ub2RlX2NhY2hlKGVudHJ5LCBSRVFfUkFIRUFEKTsKPiA+ICsgICAgICAgZjJmc19wdXRf Y2FjaGUoZW50cnksIGVyciA/IHRydWUgOiBmYWxzZSk7Cj4gPiAgfQo+ID4KPiA+ICBpbnQgZjJm c19zYW5pdHlfY2hlY2tfbm9kZV9mb290ZXIoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBmb2xpbyAqZm9s aW8sIHBnb2ZmX3QgbmlkLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnksIHBnb2ZmX3QgbmlkLAo+ID4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gbm9kZV90eXBlIG50eXBl LCBib29sIGluX2lycSkKPiA+ICB7Cj4gPiAgICAgICAgIGJvb2wgaXNfaW5vZGUsIGlzX3hub2Rl Owo+ID4KPiA+IC0gICAgICAgaWYgKHVubGlrZWx5KG5pZCAhPSBuaWRfb2Zfbm9kZShzYmksIGZv bGlvKSkpCj4gPiArICAgICAgIGlmICh1bmxpa2VseShuaWQgIT0gbmlkX29mX25vZGUoc2JpLCBl bnRyeSkpKQo+ID4gICAgICAgICAgICAgICAgIGdvdG8gb3V0X2VycjsKPiA+Cj4gPiAtICAgICAg IGlzX2lub2RlID0gSVNfSU5PREUoc2JpLCBmb2xpbyk7Cj4gPiAtICAgICAgIGlzX3hub2RlID0g ZjJmc19oYXNfeGF0dHJfYmxvY2sob2ZzX29mX25vZGUoc2JpLCBmb2xpbykpOwo+ID4gKyAgICAg ICBpc19pbm9kZSA9IElTX0lOT0RFKHNiaSwgZW50cnkpOwo+ID4gKyAgICAgICBpc194bm9kZSA9 IGYyZnNfaGFzX3hhdHRyX2Jsb2NrKG9mc19vZl9ub2RlKHNiaSwgZW50cnkpKTsKPiA+Cj4gPiAg ICAgICAgIHN3aXRjaCAobnR5cGUpIHsKPiA+ICAgICAgICAgY2FzZSBOT0RFX1RZUEVfUkVHVUxB UjoKPiA+IEBAIC0xNTc0LDIwICsxNTYzLDIwIEBAIGludCBmMmZzX3Nhbml0eV9jaGVja19ub2Rl X2Zvb3RlcihzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPiAgICAgICAgIHNldF9zYmlfZmxh ZyhzYmksIFNCSV9ORUVEX0ZTQ0spOwo+ID4gICAgICAgICBmMmZzX3dhcm5fcmF0ZWxpbWl0ZWQo c2JpLCAiaW5jb25zaXN0ZW50IG5vZGUgYmxvY2ssIG5vZGVfdHlwZTolZCwgbmlkOiVsdSwgIgo+ ID4gICAgICAgICAgICAgICAgICJub2RlX2Zvb3RlcltuaWQ6JXUsaW5vOiV1LG9mczoldSxjcHZl cjolbGx1LGJsa2FkZHI6JXVdIiwKPiA+IC0gICAgICAgICAgICAgICBudHlwZSwgbmlkLCBuaWRf b2Zfbm9kZShzYmksIGZvbGlvKSwgaW5vX29mX25vZGUoc2JpLCBmb2xpbyksCj4gPiAtICAgICAg ICAgICAgICAgb2ZzX29mX25vZGUoc2JpLCBmb2xpbyksIGNwdmVyX29mX25vZGUoc2JpLCBmb2xp byksCj4gPiAtICAgICAgICAgICAgICAgbmV4dF9ibGthZGRyX29mX25vZGUoc2JpLCBmb2xpbykp Owo+ID4gKyAgICAgICAgICAgICAgIG50eXBlLCBuaWQsIG5pZF9vZl9ub2RlKHNiaSwgZW50cnkp LCBpbm9fb2Zfbm9kZShzYmksIGVudHJ5KSwKPiA+ICsgICAgICAgICAgICAgICBvZnNfb2Zfbm9k ZShzYmksIGVudHJ5KSwgY3B2ZXJfb2Zfbm9kZShzYmksIGVudHJ5KSwKPiA+ICsgICAgICAgICAg ICAgICBuZXh0X2Jsa2FkZHJfb2Zfbm9kZShzYmksIGVudHJ5KSk7Cj4gPgo+ID4gICAgICAgICBm MmZzX2hhbmRsZV9lcnJvcihzYmksIEVSUk9SX0lOQ09OU0lTVEVOVF9GT09URVIpOwo+ID4gLSAg ICAgICBmc2Vycm9yX3JlcG9ydF9maWxlX21ldGFkYXRhKGZvbGlvLT5tYXBwaW5nLT5ob3N0LAo+ ID4gLSAgICAgICAgICAgICAgICAgICAgICAgLUVGU0NPUlJVUFRFRCwgaW5faXJxID8gR0ZQX05P V0FJVCA6IEdGUF9OT0ZTKTsKPiA+ICsgICAgICAgZnNlcnJvcl9yZXBvcnRfbWV0YWRhdGEoc2Jp LT5zYiwgLUVGU0NPUlJVUFRFRCwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW5faXJxID8gR0ZQX05PV0FJVCA6IEdGUF9OT0ZTKTsKPiA+ICAgICAgICAgcmV0dXJuIC1FRlND T1JSVVBURUQ7Cj4gPiAgfQo+ID4KPiA+IC1zdGF0aWMgc3RydWN0IGZvbGlvICpfX2dldF9ub2Rl X2ZvbGlvKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgcGdvZmZfdCBuaWQsCj4gPiAtICAgICAg ICAgICAgICAgc3RydWN0IGZvbGlvICpwYXJlbnQsIGludCBzdGFydCwgZW51bSBub2RlX3R5cGUg bnR5cGUpCj4gPiArc3RhdGljIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqX19nZXRfbm9kZV9j YWNoZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIHBnb2ZmX3QgbmlkLAo+ID4gKyAgICAgICAg ICAgICAgIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqcGFyZW50LCBpbnQgc3RhcnQsIGVudW0g bm9kZV90eXBlIG50eXBlKQo+ID4gIHsKPiA+IC0gICAgICAgc3RydWN0IGZvbGlvICpmb2xpbzsK PiA+ICsgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyeTsKPiA+ICAgICAgICAg aW50IGVycjsKPiA+Cj4gPiAgICAgICAgIGlmICghbmlkKQo+ID4gQEAgLTE1OTUsNzEgKzE1ODQs NzEgQEAgc3RhdGljIHN0cnVjdCBmb2xpbyAqX19nZXRfbm9kZV9mb2xpbyhzdHJ1Y3QgZjJmc19z Yl9pbmZvICpzYmksIHBnb2ZmX3QgbmlkLAo+ID4gICAgICAgICBpZiAoZjJmc19jaGVja19uaWRf cmFuZ2Uoc2JpLCBuaWQpKQo+ID4gICAgICAgICAgICAgICAgIHJldHVybiBFUlJfUFRSKC1FSU5W QUwpOwo+ID4gIHJlcGVhdDoKPiA+IC0gICAgICAgZm9saW8gPSBmMmZzX2dyYWJfY2FjaGVfZm9s aW8oTk9ERV9NQVBQSU5HKHNiaSksIG5pZCwgZmFsc2UpOwo+ID4gLSAgICAgICBpZiAoSVNfRVJS KGZvbGlvKSkKPiA+IC0gICAgICAgICAgICAgICByZXR1cm4gZm9saW87Cj4gPiArICAgICAgIGVu dHJ5ID0gZjJmc19ncmFiX25vZGVfY2FjaGUoc2JpLCBuaWQpOwo+ID4gKyAgICAgICBpZiAoSVNf RVJSKGVudHJ5KSkKPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7Cj4gPgo+ID4gLSAg ICAgICBlcnIgPSByZWFkX25vZGVfZm9saW8oZm9saW8sIDApOwo+ID4gKyAgICAgICBlcnIgPSBy ZWFkX25vZGVfY2FjaGUoZW50cnksIDApOwo+ID4gICAgICAgICBpZiAoZXJyIDwgMCkKPiA+ICAg ICAgICAgICAgICAgICBnb3RvIG91dF9wdXRfZXJyOwo+ID4gLSAgICAgICBpZiAoZXJyID09IExP Q0tFRF9QQUdFKQo+ID4gLSAgICAgICAgICAgICAgIGdvdG8gcGFnZV9oaXQ7Cj4gPiArICAgICAg IGlmIChlcnIgPT0gTE9DS0VEX0NBQ0hFKQo+ID4gKyAgICAgICAgICAgICAgIGdvdG8gZW50cnlf aGl0Owo+ID4KPiA+ICAgICAgICAgaWYgKHBhcmVudCkKPiA+IC0gICAgICAgICAgICAgICBmMmZz X3JhX25vZGVfcGFnZXMocGFyZW50LCBzdGFydCArIDEsIE1BWF9SQV9OT0RFKTsKPiA+ICsgICAg ICAgICAgICAgICBmMmZzX3JhX25vZGVfY2FjaGVzKHBhcmVudCwgc3RhcnQgKyAxLCBNQVhfUkFf Tk9ERSk7Cj4gPgo+ID4gLSAgICAgICBmb2xpb19sb2NrKGZvbGlvKTsKPiA+ICsgICAgICAgZjJm c19sb2NrX2NhY2hlKGVudHJ5KTsKPiA+Cj4gPiAtICAgICAgIGlmICh1bmxpa2VseSghaXNfbm9k ZV9mb2xpbyhzYmksIGZvbGlvKSkpIHsKPiA+IC0gICAgICAgICAgICAgICBmMmZzX2ZvbGlvX3B1 dChmb2xpbywgdHJ1ZSk7Cj4gPiArICAgICAgIGlmICh1bmxpa2VseSghZjJmc19pc19ub2RlX2Nh Y2hlKGVudHJ5KSkpIHsKPiA+ICsgICAgICAgICAgICAgICBmMmZzX3B1dF9jYWNoZShlbnRyeSwg dHJ1ZSk7Cj4gPiAgICAgICAgICAgICAgICAgZ290byByZXBlYXQ7Cj4gPiAgICAgICAgIH0KPiA+ Cj4gPiAtICAgICAgIGlmICh1bmxpa2VseSghZm9saW9fdGVzdF91cHRvZGF0ZShmb2xpbykpKSB7 Cj4gPiArICAgICAgIGlmICh1bmxpa2VseSghZjJmc19jYWNoZV90ZXN0X3VwdG9kYXRlKGVudHJ5 KSkpIHsKPiA+ICAgICAgICAgICAgICAgICBlcnIgPSAtRUlPOwo+ID4gICAgICAgICAgICAgICAg IGdvdG8gb3V0X3B1dF9lcnI7Cj4gPiAgICAgICAgIH0KPiA+Cj4gPiAtICAgICAgIGlmICghZjJm c19pbm9kZV9jaGtzdW1fdmVyaWZ5KHNiaSwgZm9saW8pKSB7Cj4gPiArICAgICAgIGlmICghZjJm c19pbm9kZV9jaGtzdW1fdmVyaWZ5KHNiaSwgZW50cnkpKSB7Cj4gPiAgICAgICAgICAgICAgICAg ZXJyID0gLUVGU0JBRENSQzsKPiA+ICAgICAgICAgICAgICAgICBnb3RvIG91dF9lcnI7Cj4gPiAg ICAgICAgIH0KPiA+IC1wYWdlX2hpdDoKPiA+IC0gICAgICAgZXJyID0gZjJmc19zYW5pdHlfY2hl Y2tfbm9kZV9mb290ZXIoc2JpLCBmb2xpbywgbmlkLCBudHlwZSwgZmFsc2UpOwo+ID4gK2VudHJ5 X2hpdDoKPiA+ICsgICAgICAgZXJyID0gZjJmc19zYW5pdHlfY2hlY2tfbm9kZV9mb290ZXIoc2Jp LCBlbnRyeSwgbmlkLCBudHlwZSwgZmFsc2UpOwo+ID4gICAgICAgICBpZiAoIWVycikKPiA+IC0g ICAgICAgICAgICAgICByZXR1cm4gZm9saW87Cj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIGVu dHJ5Owo+ID4gIG91dF9lcnI6Cj4gPiAtICAgICAgIGNsZWFyX25vZGVfZm9saW9fZGlydHkoZm9s aW8pOwo+ID4gKyAgICAgICBmMmZzX2Ryb3BfY2FjaGVfZGlydHkoZW50cnkpOwo+ID4gIG91dF9w dXRfZXJyOgo+ID4gICAgICAgICAvKiBFTk9FTlQgY29tZXMgZnJvbSByZWFkX25vZGVfZm9saW8g d2hpY2ggaXMgbm90IGFuIGVycm9yLiAqLwo+ID4gICAgICAgICBpZiAoZXJyICE9IC1FTk9FTlQp Cj4gPiAtICAgICAgICAgICAgICAgZjJmc19oYW5kbGVfcGFnZV9laW8oc2JpLCBmb2xpby0+aW5k ZXgsIE5PREUpOwo+ID4gLSAgICAgICBmMmZzX2ZvbGlvX3B1dChmb2xpbywgdHJ1ZSk7Cj4gPiAr ICAgICAgICAgICAgICAgZjJmc19oYW5kbGVfcGFnZV9laW8oc2JpLCBlbnRyeS0+aW5kZXgsIE5P REUpOwo+ID4gKyAgICAgICBmMmZzX3B1dF9jYWNoZShlbnRyeSwgdHJ1ZSk7Cj4gPiAgICAgICAg IHJldHVybiBFUlJfUFRSKGVycik7Cj4gPiAgfQo+ID4KPiA+IC1zdHJ1Y3QgZm9saW8gKmYyZnNf Z2V0X25vZGVfZm9saW8oc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBwZ29mZl90IG5pZCwKPiA+ ICtzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmYyZnNfZ2V0X25vZGVfY2FjaGUoc3RydWN0IGYy ZnNfc2JfaW5mbyAqc2JpLCBwZ29mZl90IG5pZCwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gbm9kZV90eXBlIG5vZGVfdHlwZSkKPiA+ICB7 Cj4gPiAtICAgICAgIHJldHVybiBfX2dldF9ub2RlX2ZvbGlvKHNiaSwgbmlkLCBOVUxMLCAwLCBu b2RlX3R5cGUpOwo+ID4gKyAgICAgICByZXR1cm4gX19nZXRfbm9kZV9jYWNoZShzYmksIG5pZCwg TlVMTCwgMCwgbm9kZV90eXBlKTsKPiA+ICB9Cj4gPgo+ID4gLXN0cnVjdCBmb2xpbyAqZjJmc19n ZXRfaW5vZGVfZm9saW8oc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBwZ29mZl90IGlubykKPiA+ ICtzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmYyZnNfZ2V0X2lub2RlX2NhY2hlKHN0cnVjdCBm MmZzX3NiX2luZm8gKnNiaSwgcGdvZmZfdCBpbm8pCj4gPiAgewo+ID4gLSAgICAgICByZXR1cm4g X19nZXRfbm9kZV9mb2xpbyhzYmksIGlubywgTlVMTCwgMCwgTk9ERV9UWVBFX0lOT0RFKTsKPiA+ ICsgICAgICAgcmV0dXJuIF9fZ2V0X25vZGVfY2FjaGUoc2JpLCBpbm8sIE5VTEwsIDAsIE5PREVf VFlQRV9JTk9ERSk7Cj4gPiAgfQo+ID4KPiA+IC1zdHJ1Y3QgZm9saW8gKmYyZnNfZ2V0X3hub2Rl X2ZvbGlvKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgcGdvZmZfdCB4bmlkKQo+ID4gK3N0cnVj dCBmMmZzX2NhY2hlZF9ibG9jayAqZjJmc19nZXRfeG5vZGVfY2FjaGUoc3RydWN0IGYyZnNfc2Jf aW5mbyAqc2JpLCBwZ29mZl90IHhuaWQpCj4gPiAgewo+ID4gLSAgICAgICByZXR1cm4gX19nZXRf bm9kZV9mb2xpbyhzYmksIHhuaWQsIE5VTEwsIDAsIE5PREVfVFlQRV9YQVRUUik7Cj4gPiArICAg ICAgIHJldHVybiBfX2dldF9ub2RlX2NhY2hlKHNiaSwgeG5pZCwgTlVMTCwgMCwgTk9ERV9UWVBF X1hBVFRSKTsKPiA+ICB9Cj4gPgo+ID4gLXN0YXRpYyBzdHJ1Y3QgZm9saW8gKmYyZnNfZ2V0X25v ZGVfZm9saW9fcmEoc3RydWN0IGZvbGlvICpwYXJlbnQsIGludCBzdGFydCkKPiA+ICtzdGF0aWMg c3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICpmMmZzX2dldF9ub2RlX2NhY2hlX3JhKHN0cnVjdCBm MmZzX2NhY2hlZF9ibG9jayAqcGFyZW50LCBpbnQgc3RhcnQpCj4gPiAgewo+ID4gLSAgICAgICBz dHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkgPSBGMkZTX0ZfU0IocGFyZW50KTsKPiA+ICsgICAgICAg c3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpID0gcGFyZW50LT5jYWNoZS0+c2JpOwo+ID4gICAgICAg ICBuaWRfdCBuaWQgPSBnZXRfbmlkKHNiaSwgcGFyZW50LCBzdGFydCwgZmFsc2UpOwo+ID4KPiA+ IC0gICAgICAgcmV0dXJuIF9fZ2V0X25vZGVfZm9saW8oc2JpLCBuaWQsIHBhcmVudCwgc3RhcnQs IE5PREVfVFlQRV9OT05fSVhOT0RFKTsKPiA+ICsgICAgICAgcmV0dXJuIF9fZ2V0X25vZGVfY2Fj aGUoc2JpLCBuaWQsIHBhcmVudCwgc3RhcnQsIE5PREVfVFlQRV9OT05fSVhOT0RFKTsKPiA+ICB9 Cj4gPgo+ID4gIHN0YXRpYyB2b2lkIGZsdXNoX2lubGluZV9kYXRhKHN0cnVjdCBmMmZzX3NiX2lu Zm8gKnNiaSwgbmlkX3QgaW5vKQo+ID4gQEAgLTE2OTgsMTEwICsxNjg3LDEwNiBAQCBzdGF0aWMg dm9pZCBmbHVzaF9pbmxpbmVfZGF0YShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIG5pZF90IGlu bykKPiA+ICAgICAgICAgaXB1dChpbm9kZSk7Cj4gPiAgfQo+ID4KPiA+IC1zdGF0aWMgc3RydWN0 IGZvbGlvICpsYXN0X2ZzeW5jX2Rub2RlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgbmlkX3Qg aW5vKQo+ID4gK3N0YXRpYyBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmxhc3RfZnN5bmNfZG5v ZGUoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBuaWRfdCBpbm8pCj4gPiAgewo+ID4gLSAgICAg ICBwZ29mZl90IGluZGV4Owo+ID4gLSAgICAgICBzdHJ1Y3QgZm9saW9fYmF0Y2ggZmJhdGNoOwo+ ID4gLSAgICAgICBzdHJ1Y3QgZm9saW8gKmxhc3RfZm9saW8gPSBOVUxMOwo+ID4gLSAgICAgICBp bnQgbnJfZm9saW9zOwo+ID4gLQo+ID4gLSAgICAgICBmb2xpb19iYXRjaF9pbml0KCZmYmF0Y2gp Owo+ID4gLSAgICAgICBpbmRleCA9IDA7Cj4gPiArICAgICAgIHBnb2ZmX3QgaW5kZXggPSAwOwo+ ID4gKyAgICAgICBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHJpZXNbRjJGU19PTlNUQUNL X0NBQ0hFU107Cj4gPiArICAgICAgIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqbGFzdF9lbnRy eSA9IE5VTEw7Cj4gPiArICAgICAgIHVuc2lnbmVkIGludCBucjsKPiA+Cj4gPiAtICAgICAgIHdo aWxlICgobnJfZm9saW9zID0gZmlsZW1hcF9nZXRfZm9saW9zX3RhZyhOT0RFX01BUFBJTkcoc2Jp KSwgJmluZGV4LAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChw Z29mZl90KS0xLCBQQUdFQ0FDSEVfVEFHX0RJUlRZLAo+ID4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZmYmF0Y2gpKSkgewo+ID4gKyAgICAgICB3aGlsZSAoKG5yID0g ZjJmc19jYWNoZV9nYW5nX2xvb2t1cF90YWcoTk9ERV9DQUNIRShzYmkpLAo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBlbnRyaWVzLCAmaW5kZXgsIEYyRlNfT05TVEFDS19DQUNI RVMsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEYyRlNfQ0FDSEVfVEFHX0RJ UlRZKSkpIHsKPiA+ICAgICAgICAgICAgICAgICBpbnQgaTsKPiA+Cj4gPiAtICAgICAgICAgICAg ICAgZm9yIChpID0gMDsgaSA8IG5yX2ZvbGlvczsgaSsrKSB7Cj4gPiAtICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgZm9saW8gKmZvbGlvID0gZmJhdGNoLmZvbGlvc1tpXTsKPiA+ICsgICAg ICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnI7IGkrKykgewo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyeSA9IGVudHJpZXNbaV07Cj4g Pgo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVubGlrZWx5KGYyZnNfY3BfZXJyb3Io c2JpKSkpIHsKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjJmc19mb2xpb19w dXQobGFzdF9mb2xpbywgZmFsc2UpOwo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBmb2xpb19iYXRjaF9yZWxlYXNlKCZmYmF0Y2gpOwo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmMmZzX3B1dF9jYWNoZShsYXN0X2VudHJ5LCBmYWxzZSk7Cj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGYyZnNfY2FjaGVfZ2FuZ19yZWxlYXNlKGVudHJpZXMs IG5yKTsKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUl9QVFIo LUVJTyk7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICB9Cj4gPgo+ID4gLSAgICAgICAgICAg ICAgICAgICAgICAgaWYgKCFJU19ETk9ERShzYmksIGZvbGlvKSB8fCAhaXNfY29sZF9ub2RlKHNi aSwgZm9saW8pKQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFJU19ETk9ERShzYmks IGVudHJ5KSB8fCAhaXNfY29sZF9ub2RlKHNiaSwgZW50cnkpKQo+ID4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGlm IChpbm9fb2Zfbm9kZShzYmksIGZvbGlvKSAhPSBpbm8pCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICBpZiAoaW5vX29mX25vZGUoc2JpLCBlbnRyeSkgIT0gaW5vKQo+ID4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiA+Cj4gPiAtICAgICAgICAgICAgICAgICAg ICAgICBmb2xpb19sb2NrKGZvbGlvKTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGYyZnNf bG9ja19jYWNoZShlbnRyeSk7Cj4gPgo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVu bGlrZWx5KCFpc19ub2RlX2ZvbGlvKHNiaSwgZm9saW8pKSkgewo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgaWYgKHVubGlrZWx5KCFmMmZzX2lzX25vZGVfY2FjaGUoZW50cnkpKSkgewo+ID4g IGNvbnRpbnVlX3VubG9jazoKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9s aW9fdW5sb2NrKGZvbGlvKTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjJm c191bmxvY2tfY2FjaGUoZW50cnkpOwo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb250aW51ZTsKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIH0KPiA+IC0gICAgICAgICAg ICAgICAgICAgICAgIGlmIChpbm9fb2Zfbm9kZShzYmksIGZvbGlvKSAhPSBpbm8pCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICBpZiAoaW5vX29mX25vZGUoc2JpLCBlbnRyeSkgIT0gaW5vKQo+ ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGNvbnRpbnVlX3VubG9jazsK PiA+Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZvbGlvX3Rlc3RfZGlydHkoZm9s aW8pKSB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWYyZnNfY2FjaGVfdGVzdF9k aXJ0eShlbnRyeSkpIHsKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc29t ZW9uZSB3cm90ZSBpdCBmb3IgdXMgKi8KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ290byBjb250aW51ZV91bmxvY2s7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICB9Cj4g Pgo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3RfZm9saW8pCj4gPiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGYyZnNfZm9saW9fcHV0KGxhc3RfZm9saW8sIGZhbHNl KTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYXN0X2VudHJ5KQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBmMmZzX3B1dF9jYWNoZShsYXN0X2VudHJ5LCBmYWxz ZSk7Cj4gPgo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgZm9saW9fZ2V0KGZvbGlvKTsKPiA+ IC0gICAgICAgICAgICAgICAgICAgICAgIGxhc3RfZm9saW8gPSBmb2xpbzsKPiA+IC0gICAgICAg ICAgICAgICAgICAgICAgIGZvbGlvX3VubG9jayhmb2xpbyk7Cj4gPiArICAgICAgICAgICAgICAg ICAgICAgICBmMmZzX2NhY2hlX2dldChlbnRyeSk7Cj4gPiArICAgICAgICAgICAgICAgICAgICAg ICBsYXN0X2VudHJ5ID0gZW50cnk7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBmMmZzX3Vu bG9ja19jYWNoZShlbnRyeSk7Cj4gPiAgICAgICAgICAgICAgICAgfQo+ID4gLSAgICAgICAgICAg ICAgIGZvbGlvX2JhdGNoX3JlbGVhc2UoJmZiYXRjaCk7Cj4gPiArICAgICAgICAgICAgICAgZjJm c19jYWNoZV9nYW5nX3JlbGVhc2UoZW50cmllcywgbnIpOwo+ID4gICAgICAgICAgICAgICAgIGNv bmRfcmVzY2hlZCgpOwo+ID4gICAgICAgICB9Cj4gPiAtICAgICAgIHJldHVybiBsYXN0X2ZvbGlv Owo+ID4gKyAgICAgICByZXR1cm4gbGFzdF9lbnRyeTsKPiA+ICB9Cj4gPgo+ID4gLXN0YXRpYyBi b29sIF9fd3JpdGVfbm9kZV9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBib29sIGF0b21pYywg Ym9vbCBkb19mc3luYywKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAq c3VibWl0dGVkLCBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgKndiYywKPiA+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYm9vbCBkb19iYWxhbmNlLCBlbnVtIGlvc3RhdF90eXBlIGlv X3R5cGUsCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAq c2VxX2lkKQo+ID4gK3N0YXRpYyBib29sIF9fd3JpdGVfbm9kZV9jYWNoZShzdHJ1Y3QgZjJmc19j YWNoZWRfYmxvY2sgKmVudHJ5LAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi b29sIGF0b21pYywgYm9vbCBkb19mc3luYywgYm9vbCAqc3VibWl0dGVkLAo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBib29sIHN5bmMsIGJvb2wgZG9fYmFsYW5jZSwKPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBpb3N0YXRfdHlwZSBpb190eXBlLCB1 bnNpZ25lZCBpbnQgKnNlcV9pZCkKPiA+ICB7Cj4gPiAtICAgICAgIHN0cnVjdCBmMmZzX3NiX2lu Zm8gKnNiaSA9IEYyRlNfRl9TQihmb2xpbyk7Cj4gPiArICAgICAgIHN0cnVjdCBmMmZzX3NiX2lu Zm8gKnNiaSA9IGVudHJ5LT5jYWNoZS0+c2JpOwo+ID4gICAgICAgICBuaWRfdCBuaWQ7Cj4gPiAg ICAgICAgIHN0cnVjdCBub2RlX2luZm8gbmk7Cj4gPiAgICAgICAgIHN0cnVjdCBmMmZzX2lvX2lu Zm8gZmlvID0gewo+ID4gICAgICAgICAgICAgICAgIC5zYmkgPSBzYmksCj4gPiAtICAgICAgICAg ICAgICAgLmlubyA9IGlub19vZl9ub2RlKHNiaSwgZm9saW8pLAo+ID4gKyAgICAgICAgICAgICAg IC5pbm8gPSBpbm9fb2Zfbm9kZShzYmksIGVudHJ5KSwKPiA+ICAgICAgICAgICAgICAgICAudHlw ZSA9IE5PREUsCj4gPiAgICAgICAgICAgICAgICAgLm9wID0gUkVRX09QX1dSSVRFLAo+ID4gLSAg ICAgICAgICAgICAgIC5vcF9mbGFncyA9IHdiY190b193cml0ZV9mbGFncyh3YmMpLAo+ID4gLSAg ICAgICAgICAgICAgIC5mb2xpbyA9IGZvbGlvLAo+ID4gKyAgICAgICAgICAgICAgIC5vcF9mbGFn cyA9IHN5bmMgPyBSRVFfU1lOQyA6IFJFUV9CQUNLR1JPVU5ELAo+ID4gKyAgICAgICAgICAgICAg IC5jYWNoZV9lbnRyeSA9IGVudHJ5LAo+ID4gICAgICAgICAgICAgICAgIC5lbmNyeXB0ZWRfcGFn ZSA9IE5VTEwsCj4gPiAgICAgICAgICAgICAgICAgLnN1Ym1pdHRlZCA9IDAsCj4gPiAgICAgICAg ICAgICAgICAgLmlvX3R5cGUgPSBpb190eXBlLAo+ID4gLSAgICAgICAgICAgICAgIC5pb193YmMg PSB3YmMsCj4gPiArICAgICAgICAgICAgICAgLmlzX2NhY2hlID0gdHJ1ZSwKPiA+ICAgICAgICAg fTsKPiA+ICAgICAgICAgc3RydWN0IGYyZnNfbG9ja19jb250ZXh0IGxjOwo+ID4gICAgICAgICB1 bnNpZ25lZCBpbnQgc2VxOwo+ID4KPiA+IC0gICAgICAgdHJhY2VfZjJmc193cml0ZXBhZ2UoZm9s aW8sIE5PREUpOwo+ID4gLQo+ID4gICAgICAgICBpZiAodW5saWtlbHkoZjJmc19jcF9lcnJvcihz YmkpKSkgewo+ID4gLSAgICAgICAgICAgICAgIC8qIGtlZXAgbm9kZSBwYWdlcyBpbiByZW1vdW50 LXJvIG1vZGUgKi8KPiA+ICsgICAgICAgICAgICAgICAvKiBrZWVwIG5vZGUgY2FjaGVzIGluIHJl bW91bnQtcm8gbW9kZSAqLwo+ID4gICAgICAgICAgICAgICAgIGlmIChGMkZTX09QVElPTihzYmkp LmVycm9ycyA9PSBNT1VOVF9FUlJPUlNfUkVBRE9OTFkpCj4gPiAgICAgICAgICAgICAgICAgICAg ICAgICBnb3RvIHJlZGlydHlfb3V0Owo+ID4gLSAgICAgICAgICAgICAgIGZvbGlvX2NsZWFyX3Vw dG9kYXRlKGZvbGlvKTsKPiA+IC0gICAgICAgICAgICAgICBkZWNfcGFnZV9jb3VudChzYmksIEYy RlNfRElSVFlfTk9ERVMpOwo+ID4gLSAgICAgICAgICAgICAgIGZvbGlvX3VubG9jayhmb2xpbyk7 Cj4gPiArICAgICAgICAgICAgICAgZjJmc19jYWNoZV9jbGVhcl91cHRvZGF0ZShlbnRyeSk7Cj4g PiArICAgICAgICAgICAgICAgZjJmc19jYWNoZV91cGRhdGVfdGFnKGVudHJ5LCBGMkZTX0NBQ0hF X1RBR19ESVJUWSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG MkZTX0NBQ0hFX1RBR19OT05FKTsKPiA+ICsgICAgICAgICAgICAgICBkZWNfcGFnZV9jb3VudChl bnRyeS0+Y2FjaGUtPnNiaSwgRjJGU19ESVJUWV9OT0RFUyk7Cj4gPiArICAgICAgICAgICAgICAg ZjJmc191bmxvY2tfY2FjaGUoZW50cnkpOwo+ID4gICAgICAgICAgICAgICAgIHJldHVybiB0cnVl Owo+ID4gICAgICAgICB9Cj4gPgo+ID4gICAgICAgICBpZiAodW5saWtlbHkoaXNfc2JpX2ZsYWdf c2V0KHNiaSwgU0JJX1BPUl9ET0lORykpKQo+ID4gICAgICAgICAgICAgICAgIGdvdG8gcmVkaXJ0 eV9vdXQ7Cj4gPgo+ID4gLSAgICAgICBpZiAoIWlzX3NiaV9mbGFnX3NldChzYmksIFNCSV9DUF9E SVNBQkxFRCkgJiYKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIHdiYy0+c3luY19tb2RlID09 IFdCX1NZTkNfTk9ORSAmJgo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgSVNfRE5PREUoc2Jp LCBmb2xpbykgJiYgaXNfY29sZF9ub2RlKHNiaSwgZm9saW8pKQo+ID4gKyAgICAgICBpZiAoIWlz X3NiaV9mbGFnX3NldChzYmksIFNCSV9DUF9ESVNBQkxFRCkgJiYgIXN5bmMgJiYKPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgIElTX0ROT0RFKHNiaSwgZW50cnkpICYmIGlzX2NvbGRfbm9kZShz YmksIGVudHJ5KSkKPiA+ICAgICAgICAgICAgICAgICBnb3RvIHJlZGlydHlfb3V0Owo+ID4KPiA+ IC0gICAgICAgLyogZ2V0IG9sZCBibG9jayBhZGRyIG9mIHRoaXMgbm9kZSBwYWdlICovCj4gPiAt ICAgICAgIG5pZCA9IG5pZF9vZl9ub2RlKHNiaSwgZm9saW8pOwo+ID4gKyAgICAgICAvKiBnZXQg b2xkIGJsb2NrIGFkZHIgb2YgdGhpcyBub2RlIGNhY2hlICovCj4gPiArICAgICAgIG5pZCA9IG5p ZF9vZl9ub2RlKHNiaSwgZW50cnkpOwo+ID4KPiA+IC0gICAgICAgaWYgKGYyZnNfc2FuaXR5X2No ZWNrX25vZGVfZm9vdGVyKHNiaSwgZm9saW8sIGZvbGlvLT5pbmRleCwKPiA+ICsgICAgICAgaWYg KGYyZnNfc2FuaXR5X2NoZWNrX25vZGVfZm9vdGVyKHNiaSwgZW50cnksIGVudHJ5LT5pbmRleCwK PiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOT0RFX1RZUEVfUkVH VUxBUiwgZmFsc2UpKSB7Cj4gPiAgICAgICAgICAgICAgICAgZnNlcnJvcl9yZXBvcnRfbWV0YWRh dGEoc2JpLT5zYiwgLUVGU0NPUlJVUFRFRCwgR0ZQX05PRlMpOwo+ID4gICAgICAgICAgICAgICAg IGYyZnNfc3RvcF9jaGVja3BvaW50KHNiaSwgZmFsc2UsIFNUT1BfQ1BfUkVBU09OX0NPUlJVUFRF RF9OSUQpOwo+ID4gQEAgLTE4MTMsMTIgKzE3OTgsMTQgQEAgc3RhdGljIGJvb2wgX193cml0ZV9u b2RlX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8sIGJvb2wgYXRvbWljLCBib29sIGRvX2ZzeW5j LAo+ID4KPiA+ICAgICAgICAgZjJmc19kb3duX3JlYWRfdHJhY2UoJnNiaS0+bm9kZV93cml0ZSwg JmxjKTsKPiA+Cj4gPiAtICAgICAgIC8qIFRoaXMgcGFnZSBpcyBhbHJlYWR5IHRydW5jYXRlZCAq Lwo+ID4gKyAgICAgICAvKiBUaGlzIGNhY2hlIGlzIGFscmVhZHkgdHJ1bmNhdGVkICovCj4gPiAg ICAgICAgIGlmICh1bmxpa2VseShuaS5ibGtfYWRkciA9PSBOVUxMX0FERFIpKSB7Cj4gPiAtICAg ICAgICAgICAgICAgZm9saW9fY2xlYXJfdXB0b2RhdGUoZm9saW8pOwo+ID4gLSAgICAgICAgICAg ICAgIGRlY19wYWdlX2NvdW50KHNiaSwgRjJGU19ESVJUWV9OT0RFUyk7Cj4gPiArICAgICAgICAg ICAgICAgZjJmc19jYWNoZV9jbGVhcl91cHRvZGF0ZShlbnRyeSk7Cj4gPiArICAgICAgICAgICAg ICAgZjJmc19jYWNoZV91cGRhdGVfdGFnKGVudHJ5LCBGMkZTX0NBQ0hFX1RBR19ESVJUWSwKPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGMkZTX0NBQ0hFX1RBR19O T05FKTsKPiA+ICsgICAgICAgICAgICAgICBkZWNfcGFnZV9jb3VudChlbnRyeS0+Y2FjaGUtPnNi aSwgRjJGU19ESVJUWV9OT0RFUyk7Cj4gPiAgICAgICAgICAgICAgICAgZjJmc191cF9yZWFkX3Ry YWNlKCZzYmktPm5vZGVfd3JpdGUsICZsYyk7Cj4gPiAtICAgICAgICAgICAgICAgZm9saW9fdW5s b2NrKGZvbGlvKTsKPiA+ICsgICAgICAgICAgICAgICBmMmZzX3VubG9ja19jYWNoZShlbnRyeSk7 Cj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cj4gPiAgICAgICAgIH0KPiA+Cj4gPiBA QCAtMTgzMiwyOCArMTgxOSwyOCBAQCBzdGF0aWMgYm9vbCBfX3dyaXRlX25vZGVfZm9saW8oc3Ry dWN0IGZvbGlvICpmb2xpbywgYm9vbCBhdG9taWMsIGJvb2wgZG9fZnN5bmMsCj4gPiAgICAgICAg IGlmIChhdG9taWMgJiYgIXRlc3Rfb3B0KHNiaSwgTk9CQVJSSUVSKSkKPiA+ICAgICAgICAgICAg ICAgICBmaW8ub3BfZmxhZ3MgfD0gUkVRX1BSRUZMVVNIIHwgUkVRX0ZVQTsKPiA+Cj4gPiAtICAg ICAgIHNldF9kZW50cnlfbWFyayhzYmksIGZvbGlvLCBmYWxzZSk7Cj4gPiAtICAgICAgIHNldF9m c3luY19tYXJrKHNiaSwgZm9saW8sIGRvX2ZzeW5jKTsKPiA+IC0gICAgICAgaWYgKElTX0lOT0RF KHNiaSwgZm9saW8pICYmIChhdG9taWMgfHwgaXNfZnN5bmNfZG5vZGUoc2JpLCBmb2xpbykpKQo+ ID4gLSAgICAgICAgICAgICAgIHNldF9kZW50cnlfbWFyayhzYmksIGZvbGlvLAo+ID4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBmMmZzX25lZWRfZGVudHJ5X21hcmsoc2JpLCBpbm9f b2Zfbm9kZShzYmksIGZvbGlvKSkpOwo+ID4gKyAgICAgICBzZXRfZGVudHJ5X21hcmsoc2JpLCBl bnRyeSwgZmFsc2UpOwo+ID4gKyAgICAgICBzZXRfZnN5bmNfbWFyayhzYmksIGVudHJ5LCBkb19m c3luYyk7Cj4gPiArICAgICAgIGlmIChJU19JTk9ERShzYmksIGVudHJ5KSAmJiAoYXRvbWljIHx8 IGlzX2ZzeW5jX2Rub2RlKHNiaSwgZW50cnkpKSkKPiA+ICsgICAgICAgICAgICAgICBzZXRfZGVu dHJ5X21hcmsoc2JpLCBlbnRyeSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGYyZnNfbmVl ZF9kZW50cnlfbWFyayhzYmksIGlub19vZl9ub2RlKHNiaSwgZW50cnkpKSk7Cj4gPgo+ID4gLSAg ICAgICAvKiBzaG91bGQgYWRkIHRvIGdsb2JhbCBsaXN0IGJlZm9yZSBjbGVhcmluZyBQQUdFQ0FD SEUgc3RhdHVzICovCj4gPiAtICAgICAgIGlmIChmMmZzX2luX3dhcm1fbm9kZV9saXN0KHNiaSwg Zm9saW8pKSB7Cj4gPiAtICAgICAgICAgICAgICAgc2VxID0gZjJmc19hZGRfZnN5bmNfbm9kZV9l bnRyeShzYmksIGZvbGlvKTsKPiA+ICsgICAgICAgLyogc2hvdWxkIGFkZCB0byBnbG9iYWwgbGlz dCBiZWZvcmUgY2xlYXJpbmcgQ0FDSEUgc3RhdHVzICovCj4gPiArICAgICAgIGlmIChmMmZzX2lu X3dhcm1fbm9kZV9saXN0KHNiaSwgZW50cnkpKSB7Cj4gPiArICAgICAgICAgICAgICAgc2VxID0g ZjJmc19hZGRfZnN5bmNfbm9kZV9lbnRyeShzYmksIGVudHJ5KTsKPiA+ICAgICAgICAgICAgICAg ICBpZiAoc2VxX2lkKQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgKnNlcV9pZCA9IHNlcTsK PiA+ICAgICAgICAgfQo+ID4KPiA+IC0gICAgICAgZm9saW9fc3RhcnRfd3JpdGViYWNrKGZvbGlv KTsKPiA+ICsgICAgICAgZjJmc19zdGFydF9jYWNoZV93cml0ZWJhY2soZW50cnkpOwo+ID4KPiA+ ICAgICAgICAgZmlvLm9sZF9ibGthZGRyID0gbmkuYmxrX2FkZHI7Cj4gPiAtICAgICAgIGYyZnNf ZG9fd3JpdGVfbm9kZV9wYWdlKG5pZCwgJmZpbyk7Cj4gPiAtICAgICAgIHNldF9ub2RlX2FkZHIo c2JpLCAmbmksIGZpby5uZXdfYmxrYWRkciwgaXNfZnN5bmNfZG5vZGUoc2JpLCBmb2xpbykpOwo+ ID4gKyAgICAgICBmMmZzX2RvX3dyaXRlX25vZGVfY2FjaGUobmlkLCAmZmlvKTsKPiA+ICsgICAg ICAgc2V0X25vZGVfYWRkcihzYmksICZuaSwgZmlvLm5ld19ibGthZGRyLCBpc19mc3luY19kbm9k ZShzYmksIGVudHJ5KSk7Cj4gPiAgICAgICAgIGRlY19wYWdlX2NvdW50KHNiaSwgRjJGU19ESVJU WV9OT0RFUyk7Cj4gPiAgICAgICAgIGYyZnNfdXBfcmVhZF90cmFjZSgmc2JpLT5ub2RlX3dyaXRl LCAmbGMpOwo+ID4KPiA+IC0gICAgICAgZm9saW9fdW5sb2NrKGZvbGlvKTsKPiA+ICsgICAgICAg ZjJmc191bmxvY2tfY2FjaGUoZW50cnkpOwo+ID4KPiA+ICAgICAgICAgaWYgKHVubGlrZWx5KGYy ZnNfY3BfZXJyb3Ioc2JpKSkpIHsKPiA+ICAgICAgICAgICAgICAgICBmMmZzX3N1Ym1pdF9tZXJn ZWRfd3JpdGUoc2JpLCBOT0RFKTsKPiA+IEBAIC0xODY3LDE3NiArMTg1NCwxNzEgQEAgc3RhdGlj IGJvb2wgX193cml0ZV9ub2RlX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8sIGJvb2wgYXRvbWlj LCBib29sIGRvX2ZzeW5jLAo+ID4gICAgICAgICByZXR1cm4gdHJ1ZTsKPiA+Cj4gPiAgcmVkaXJ0 eV9vdXQ6Cj4gPiAtICAgICAgIGZvbGlvX3JlZGlydHlfZm9yX3dyaXRlcGFnZSh3YmMsIGZvbGlv KTsKPiA+IC0gICAgICAgZm9saW9fdW5sb2NrKGZvbGlvKTsKPiA+ICsgICAgICAgZjJmc19jYWNo ZV9zZXRfZGlydHkoZW50cnkpOwo+ID4gKyAgICAgICBmMmZzX3VubG9ja19jYWNoZShlbnRyeSk7 Cj4gPiAgICAgICAgIHJldHVybiBmYWxzZTsKPiA+ICB9Cj4gPgo+ID4gLWludCBmMmZzX3dyaXRl X3NpbmdsZV9ub2RlX2ZvbGlvKHN0cnVjdCBmb2xpbyAqbm9kZV9mb2xpbywgaW50IHN5bmNfbW9k ZSwKPiA+ICtpbnQgZjJmc193cml0ZV9ub2RlX2NhY2hlKHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9j ayAqbm9kZV9lbnRyeSwgaW50IHN5bmNfbW9kZSwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAg IGJvb2wgbWFya19kaXJ0eSwgZW51bSBpb3N0YXRfdHlwZSBpb190eXBlKQo+ID4gIHsKPiA+ICAg ICAgICAgaW50IGVyciA9IDA7Cj4gPiAtICAgICAgIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCB3 YmMgPSB7Cj4gPiAtICAgICAgICAgICAgICAgLnN5bmNfbW9kZSA9IFdCX1NZTkNfQUxMLAo+ID4g LSAgICAgICAgICAgICAgIC5ucl90b193cml0ZSA9IDEsCj4gPiAtICAgICAgIH07Cj4gPgo+ID4g ICAgICAgICBpZiAoIXN5bmNfbW9kZSkgewo+ID4gLSAgICAgICAgICAgICAgIC8qIHNldCBwYWdl IGRpcnR5IGFuZCB3cml0ZSBpdCAqLwo+ID4gLSAgICAgICAgICAgICAgIGlmICghZm9saW9fdGVz dF93cml0ZWJhY2sobm9kZV9mb2xpbykpCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBmb2xp b19tYXJrX2RpcnR5KG5vZGVfZm9saW8pOwo+ID4gLSAgICAgICAgICAgICAgIGdvdG8gb3V0X2Zv bGlvOwo+ID4gKyAgICAgICAgICAgICAgIC8qIHNldCBjYWNoZSBkaXJ0eSBhbmQgd3JpdGUgaXQg Ki8KPiA+ICsgICAgICAgICAgICAgICBpZiAoIWYyZnNfY2FjaGVfdGVzdF93cml0ZWJhY2sobm9k ZV9lbnRyeSkpCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBmMmZzX21hcmtfY2FjaGVfZGly dHkobm9kZV9lbnRyeSk7Cj4gPiArICAgICAgICAgICAgICAgZ290byBvdXRfZW50cnk7Cj4gPiAg ICAgICAgIH0KPiA+Cj4gPiAtICAgICAgIGYyZnNfZm9saW9fd2FpdF93cml0ZWJhY2sobm9kZV9m b2xpbywgTk9ERSwgdHJ1ZSwgdHJ1ZSk7Cj4gPiArICAgICAgIGYyZnNfY2FjaGVfd2FpdF93cml0 ZWJhY2sobm9kZV9lbnRyeSk7Cj4gPgo+ID4gICAgICAgICBpZiAobWFya19kaXJ0eSkKPiA+IC0g ICAgICAgICAgICAgICBmb2xpb19tYXJrX2RpcnR5KG5vZGVfZm9saW8pOwo+ID4gLSAgICAgICBl bHNlIGlmICghZm9saW9fdGVzdF9kaXJ0eShub2RlX2ZvbGlvKSkKPiA+IC0gICAgICAgICAgICAg ICBnb3RvIG91dF9mb2xpbzsKPiA+ICsgICAgICAgICAgICAgICBmMmZzX21hcmtfY2FjaGVfZGly dHkobm9kZV9lbnRyeSk7Cj4gPiArICAgICAgIGVsc2UgaWYgKCFmMmZzX2NhY2hlX3Rlc3RfZGly dHkobm9kZV9lbnRyeSkpCj4gPiArICAgICAgICAgICAgICAgZ290byBvdXRfZW50cnk7Cj4gPgo+ ID4gLSAgICAgICBpZiAoIWZvbGlvX2NsZWFyX2RpcnR5X2Zvcl9pbyhub2RlX2ZvbGlvKSkgewo+ ID4gKyAgICAgICBpZiAoIWYyZnNfY2FjaGVfdGVzdF9hbmRfY2xlYXJfZGlydHkobm9kZV9lbnRy eSkpIHsKPiA+ICAgICAgICAgICAgICAgICBlcnIgPSAtRUFHQUlOOwo+ID4gLSAgICAgICAgICAg ICAgIGdvdG8gb3V0X2ZvbGlvOwo+ID4gKyAgICAgICAgICAgICAgIGdvdG8gb3V0X2VudHJ5Owo+ ID4gICAgICAgICB9Cj4gPgo+ID4gLSAgICAgICBpZiAoIV9fd3JpdGVfbm9kZV9mb2xpbyhub2Rl X2ZvbGlvLCBmYWxzZSwgZmFsc2UsIE5VTEwsCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICZ3YmMsIGZhbHNlLCBpb190eXBlLCBOVUxMKSkKPiA+ICsgICAgICAgaWYgKCFfX3dy aXRlX25vZGVfY2FjaGUobm9kZV9lbnRyeSwgZmFsc2UsIGZhbHNlLCBOVUxMLAo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlLCBmYWxzZSwgaW9fdHlwZSwgTlVMTCkpCj4g PiAgICAgICAgICAgICAgICAgZXJyID0gLUVBR0FJTjsKPiA+IC0gICAgICAgZ290byByZWxlYXNl X2ZvbGlvOwo+ID4gLW91dF9mb2xpbzoKPiA+IC0gICAgICAgZm9saW9fdW5sb2NrKG5vZGVfZm9s aW8pOwo+ID4gLXJlbGVhc2VfZm9saW86Cj4gPiAtICAgICAgIGYyZnNfZm9saW9fcHV0KG5vZGVf Zm9saW8sIGZhbHNlKTsKPiA+ICsgICAgICAgZ290byByZWxlYXNlX2VudHJ5Owo+ID4gK291dF9l bnRyeToKPiA+ICsgICAgICAgZjJmc191bmxvY2tfY2FjaGUobm9kZV9lbnRyeSk7Cj4gPiArcmVs ZWFzZV9lbnRyeToKPiA+ICsgICAgICAgZjJmc19wdXRfY2FjaGUobm9kZV9lbnRyeSwgZmFsc2Up Owo+ID4gICAgICAgICByZXR1cm4gZXJyOwo+ID4gIH0KPiA+Cj4gPiAtaW50IGYyZnNfbW92ZV9u b2RlX2ZvbGlvKHN0cnVjdCBmb2xpbyAqbm9kZV9mb2xpbywgaW50IGdjX3R5cGUpCj4gPiAraW50 IGYyZnNfbW92ZV9ub2RlX2NhY2hlKHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnksIGlu dCBnY190eXBlKQo+ID4gIHsKPiA+IC0gICAgICAgcmV0dXJuIGYyZnNfd3JpdGVfc2luZ2xlX25v ZGVfZm9saW8obm9kZV9mb2xpbywgZ2NfdHlwZSA9PSBGR19HQywKPiA+ICsgICAgICAgcmV0dXJu IGYyZnNfd3JpdGVfbm9kZV9jYWNoZShlbnRyeSwgZ2NfdHlwZSA9PSBGR19HQywKPiA+ICAgICAg ICAgICAgICAgICAgICAgICAgIHRydWUsIEZTX0dDX05PREVfSU8pOwo+ID4gIH0KPiA+Cj4gPiAt aW50IGYyZnNfZnN5bmNfbm9kZV9wYWdlcyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIHN0cnVj dCBpbm9kZSAqaW5vZGUsCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgd3JpdGVi YWNrX2NvbnRyb2wgKndiYywgYm9vbCBhdG9taWMsCj4gPiAtICAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBpbnQgKnNlcV9pZCkKPiA+ICtpbnQgZjJmc19mc3luY19ub2RlX2NhY2hlcyhz dHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIHN0cnVjdCBpbm9kZSAqaW5vZGUsCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhdG9taWMsIHVuc2lnbmVkIGlu dCAqc2VxX2lkKQo+ID4gIHsKPiA+ICAgICAgICAgcGdvZmZfdCBpbmRleDsKPiA+IC0gICAgICAg c3RydWN0IGZvbGlvX2JhdGNoIGZiYXRjaDsKPiA+ICsgICAgICAgc3RydWN0IGYyZnNfY2FjaGVk X2Jsb2NrICplbnRyaWVzW0YyRlNfT05TVEFDS19DQUNIRVNdOwo+ID4gICAgICAgICBpbnQgcmV0 ID0gMDsKPiA+IC0gICAgICAgc3RydWN0IGZvbGlvICpsYXN0X2ZvbGlvID0gTlVMTDsKPiA+ICsg ICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICpsYXN0X2VudHJ5ID0gTlVMTDsKPiA+ICAg ICAgICAgYm9vbCBtYXJrZWQgPSBmYWxzZTsKPiA+ICAgICAgICAgbmlkX3QgaW5vID0gaW5vZGUt PmlfaW5vOwo+ID4gLSAgICAgICBpbnQgbnJfZm9saW9zOwo+ID4gKyAgICAgICBpbnQgbnI7Cj4g PiAgICAgICAgIGludCBud3JpdHRlbiA9IDA7Cj4gPgo+ID4gICAgICAgICBpZiAoYXRvbWljKSB7 Cj4gPiAtICAgICAgICAgICAgICAgbGFzdF9mb2xpbyA9IGxhc3RfZnN5bmNfZG5vZGUoc2JpLCBp bm8pOwo+ID4gLSAgICAgICAgICAgICAgIGlmIChJU19FUlJfT1JfTlVMTChsYXN0X2ZvbGlvKSkK PiA+IC0gICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSX09SX1pFUk8obGFzdF9m b2xpbyk7Cj4gPiArICAgICAgICAgICAgICAgbGFzdF9lbnRyeSA9IGxhc3RfZnN5bmNfZG5vZGUo c2JpLCBpbm8pOwo+ID4gKyAgICAgICAgICAgICAgIGlmIChJU19FUlJfT1JfTlVMTChsYXN0X2Vu dHJ5KSkKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSX09SX1pFUk8o bGFzdF9lbnRyeSk7Cj4gPiAgICAgICAgIH0KPiA+ICByZXRyeToKPiA+IC0gICAgICAgZm9saW9f YmF0Y2hfaW5pdCgmZmJhdGNoKTsKPiA+ICAgICAgICAgaW5kZXggPSAwOwo+ID4KPiA+IC0gICAg ICAgd2hpbGUgKChucl9mb2xpb3MgPSBmaWxlbWFwX2dldF9mb2xpb3NfdGFnKE5PREVfTUFQUElO RyhzYmkpLCAmaW5kZXgsCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHBnb2ZmX3QpLTEsIFBBR0VDQUNIRV9UQUdfRElSVFksCj4gPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJmZiYXRjaCkpKSB7Cj4gPiArICAgICAgIHdoaWxlICgo bnIgPSBmMmZzX2NhY2hlX2dhbmdfbG9va3VwX3RhZyhOT0RFX0NBQ0hFKHNiaSksCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJpZXMsICZpbmRleCwgRjJGU19PTlNUQUNL X0NBQ0hFUywKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRjJGU19DQUNIRV9U QUdfRElSVFkpKSkgewo+ID4gICAgICAgICAgICAgICAgIGludCBpOwo+ID4KPiA+IC0gICAgICAg ICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnJfZm9saW9zOyBpKyspIHsKPiA+IC0gICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBmb2xpbyAqZm9saW8gPSBmYmF0Y2guZm9saW9zW2ldOwo+ID4g KyAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBucjsgaSsrKSB7Cj4gPiArICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5ID0gZW50cmllc1tp XTsKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc3VibWl0dGVkID0gZmFsc2U7Cj4g PiAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRvX2ZzeW5jID0gZmFsc2U7Cj4gPgo+ID4g ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVubGlrZWx5KGYyZnNfY3BfZXJyb3Ioc2JpKSkp IHsKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjJmc19mb2xpb19wdXQobGFz dF9mb2xpbywgZmFsc2UpOwo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xp b19iYXRjaF9yZWxlYXNlKCZmYmF0Y2gpOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBmMmZzX3B1dF9jYWNoZShsYXN0X2VudHJ5LCBmYWxzZSk7Cj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGYyZnNfY2FjaGVfZ2FuZ19yZWxlYXNlKGVudHJpZXMsIG5yKTsK PiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gLUVJTzsKPiA+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7Cj4gPiAgICAgICAgICAgICAgICAg ICAgICAgICB9Cj4gPgo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFJU19ETk9ERShz YmksIGZvbGlvKSB8fCAhaXNfY29sZF9ub2RlKHNiaSwgZm9saW8pKQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgaWYgKCFJU19ETk9ERShzYmksIGVudHJ5KSB8fCAhaXNfY29sZF9ub2RlKHNi aSwgZW50cnkpKQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK PiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGlmIChpbm9fb2Zfbm9kZShzYmksIGZvbGlvKSAh PSBpbm8pCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5vX29mX25vZGUoc2JpLCBl bnRyeSkgIT0gaW5vKQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51 ZTsKPiA+Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBmb2xpb19sb2NrKGZvbGlvKTsKPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgIGYyZnNfbG9ja19jYWNoZShlbnRyeSk7Cj4gPgo+ID4g LSAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVubGlrZWx5KCFpc19ub2RlX2ZvbGlvKHNiaSwg Zm9saW8pKSkgewo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVubGlrZWx5KCFmMmZz X2lzX25vZGVfY2FjaGUoZW50cnkpKSkgewo+ID4gIGNvbnRpbnVlX3VubG9jazoKPiA+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9saW9fdW5sb2NrKGZvbGlvKTsKPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZjJmc191bmxvY2tfY2FjaGUoZW50cnkpOwo+ID4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiA+ICAgICAgICAgICAg ICAgICAgICAgICAgIH0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGlmIChpbm9fb2Zfbm9k ZShzYmksIGZvbGlvKSAhPSBpbm8pCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5v X29mX25vZGUoc2JpLCBlbnRyeSkgIT0gaW5vKQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBnb3RvIGNvbnRpbnVlX3VubG9jazsKPiA+Cj4gPiAtICAgICAgICAgICAgICAgICAg ICAgICBpZiAoIWZvbGlvX3Rlc3RfZGlydHkoZm9saW8pICYmIGZvbGlvICE9IGxhc3RfZm9saW8p IHsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmICghZjJmc19jYWNoZV90ZXN0X2RpcnR5 KGVudHJ5KSAmJiBlbnRyeSAhPSBsYXN0X2VudHJ5KSB7Cj4gPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8qIHNvbWVvbmUgd3JvdGUgaXQgZm9yIHVzICovCj4gPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGdvdG8gY29udGludWVfdW5sb2NrOwo+ID4gICAgICAgICAg ICAgICAgICAgICAgICAgfQo+ID4KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGYyZnNfZm9s aW9fd2FpdF93cml0ZWJhY2soZm9saW8sIE5PREUsIHRydWUsIHRydWUpOwo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgZjJmc19jYWNoZV93YWl0X3dyaXRlYmFjayhlbnRyeSk7Cj4gPgo+ID4g LSAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhdG9taWMgfHwgZm9saW8gPT0gbGFzdF9mb2xp bykgewo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhdG9taWMgfHwgZW50cnkgPT0g bGFzdF9lbnRyeSkgewo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19mc3lu YyA9IHRydWU7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmNwdV9jb3Vu dGVyX2luYygmc2JpLT5yZl9ub2RlX2Jsb2NrX2NvdW50KTsKPiA+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaWYgKElTX0lOT0RFKHNiaSwgZm9saW8pKSB7Cj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGlmIChJU19JTk9ERShzYmksIGVudHJ5KSkgewo+ID4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc19pbm9kZV9mbGFnX3Nl dChpbm9kZSwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBGSV9ESVJUWV9JTk9ERSkpCj4gPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmMmZzX3VwZGF0ZV9pbm9kZShpbm9kZSwg Zm9saW8pOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZjJmc191cGRhdGVfaW5vZGUoaW5vZGUsIGVudHJ5KTsKPiA+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBt YXkgYmUgd3JpdHRlbiBieSBvdGhlciB0aHJlYWQgKi8KPiA+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaWYgKCFmb2xpb190ZXN0X2RpcnR5KGZvbGlvKSkKPiA+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xpb19tYXJrX2RpcnR5KGZvbGlvKTsKPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmMmZzX2NhY2hlX3Rlc3RfZGly dHkoZW50cnkpKQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYy ZnNfbWFya19jYWNoZV9kaXJ0eShlbnRyeSk7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICB9 Cj4gPgo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmb2xpb19jbGVhcl9kaXJ0eV9m b3JfaW8oZm9saW8pKQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmMmZzX2NhY2hl X3Rlc3RfYW5kX2NsZWFyX2RpcnR5KGVudHJ5KSkKPiA+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZ290byBjb250aW51ZV91bmxvY2s7Cj4gPgo+ID4gLSAgICAgICAgICAgICAgICAg ICAgICAgaWYgKCFfX3dyaXRlX25vZGVfZm9saW8oZm9saW8sIGF0b21pYyAmJgo+ID4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9saW8gPT0gbGFzdF9m b2xpbywKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmICghX193cml0ZV9ub2RlX2NhY2hl KGVudHJ5LCBhdG9taWMgJiYKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGVudHJ5ID09IGxhc3RfZW50cnksCj4gPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19mc3luYywgJnN1Ym1pdHRlZCwKPiA+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdiYywgdHJ1ZSwg RlNfTk9ERV9JTywKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRydWUsIHRydWUsIEZTX05PREVfSU8sCj4gPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXFfaWQpKSB7Cj4gPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGYyZnNfZm9saW9fcHV0KGxhc3RfZm9saW8sIGZhbHNlKTsKPiA+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9saW9fYmF0Y2hfcmVsZWFzZSgmZmJhdGNo KTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjJmc19wdXRfY2FjaGUobGFz dF9lbnRyeSwgZmFsc2UpOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmMmZz X2NhY2hlX2dhbmdfcmVsZWFzZShlbnRyaWVzLCBucik7Cj4gPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJldCA9IC1FSU87Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGdvdG8gb3V0Owo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgfQo+ID4gICAgICAgICAg ICAgICAgICAgICAgICAgaWYgKHN1Ym1pdHRlZCkKPiA+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbndyaXR0ZW4rKzsKPiA+Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBpZiAo Zm9saW8gPT0gbGFzdF9mb2xpbykgewo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBmMmZzX2ZvbGlvX3B1dChmb2xpbywgZmFsc2UpOwo+ID4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmb2xpb19iYXRjaF9yZWxlYXNlKCZmYmF0Y2gpOwo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgaWYgKGVudHJ5ID09IGxhc3RfZW50cnkpIHsKPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZjJmc19wdXRfY2FjaGUoZW50cnksIGZhbHNlKTsKPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZjJmc19jYWNoZV9nYW5nX3JlbGVhc2UoZW50cmll cywgbnIpOwo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZWQgPSB0cnVl Owo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG91dDsKPiA+ICAgICAg ICAgICAgICAgICAgICAgICAgIH0KPiA+ICAgICAgICAgICAgICAgICB9Cj4gPiAtICAgICAgICAg ICAgICAgZm9saW9fYmF0Y2hfcmVsZWFzZSgmZmJhdGNoKTsKPiA+ICsgICAgICAgICAgICAgICBm MmZzX2NhY2hlX2dhbmdfcmVsZWFzZShlbnRyaWVzLCBucik7Cj4gPiAgICAgICAgICAgICAgICAg Y29uZF9yZXNjaGVkKCk7Cj4gPiAgICAgICAgIH0KPiA+ICAgICAgICAgaWYgKGF0b21pYyAmJiAh bWFya2VkKSB7Cj4gPiAgICAgICAgICAgICAgICAgZjJmc19kZWJ1ZyhzYmksICJSZXRyeSB0byB3 cml0ZSBmc3luYyBtYXJrOiBpbm89JXUsIGlkeD0lbHgiLAo+ID4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgaW5vLCBsYXN0X2ZvbGlvLT5pbmRleCk7Cj4gPiAtICAgICAgICAgICAgICAgZm9s aW9fbG9jayhsYXN0X2ZvbGlvKTsKPiA+IC0gICAgICAgICAgICAgICBpZiAodW5saWtlbHkoIWlz X25vZGVfZm9saW8oc2JpLCBsYXN0X2ZvbGlvKSkpIHsKPiA+IC0gICAgICAgICAgICAgICAgICAg ICAgIGYyZnNfZm9saW9fcHV0KGxhc3RfZm9saW8sIHRydWUpOwo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgaW5vLCBsYXN0X2VudHJ5LT5pbmRleCk7Cj4gPiArICAgICAgICAgICAgICAg ZjJmc19sb2NrX2NhY2hlKGxhc3RfZW50cnkpOwo+ID4gKyAgICAgICAgICAgICAgIGlmICh1bmxp a2VseSghZjJmc19pc19ub2RlX2NhY2hlKGxhc3RfZW50cnkpKSkgewo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgZjJmc19wdXRfY2FjaGUobGFzdF9lbnRyeSwgdHJ1ZSk7Cj4gPiAgICAgICAg ICAgICAgICAgICAgICAgICByZXQgPSAtRUFHQUlOOwo+ID4gICAgICAgICAgICAgICAgICAgICAg ICAgZ290byBvdXQ7Cj4gPiAgICAgICAgICAgICAgICAgfQo+ID4gLSAgICAgICAgICAgICAgIGYy ZnNfZm9saW9fd2FpdF93cml0ZWJhY2sobGFzdF9mb2xpbywgTk9ERSwgdHJ1ZSwgdHJ1ZSk7Cj4g PiAtICAgICAgICAgICAgICAgZm9saW9fbWFya19kaXJ0eShsYXN0X2ZvbGlvKTsKPiA+IC0gICAg ICAgICAgICAgICBmb2xpb191bmxvY2sobGFzdF9mb2xpbyk7Cj4gPiArICAgICAgICAgICAgICAg ZjJmc19jYWNoZV93YWl0X3dyaXRlYmFjayhsYXN0X2VudHJ5KTsKPiA+ICsgICAgICAgICAgICAg ICBmMmZzX21hcmtfY2FjaGVfZGlydHkobGFzdF9lbnRyeSk7Cj4gPiArICAgICAgICAgICAgICAg ZjJmc191bmxvY2tfY2FjaGUobGFzdF9lbnRyeSk7Cj4gPiAgICAgICAgICAgICAgICAgZ290byBy ZXRyeTsKPiA+ICAgICAgICAgfQo+ID4gIG91dDoKPiA+ICAgICAgICAgaWYgKG53cml0dGVuKQo+ ID4gLSAgICAgICAgICAgICAgIGYyZnNfc3VibWl0X21lcmdlZF93cml0ZV9jb25kKHNiaSwgTlVM TCwgTlVMTCwgaW5vLCBOT0RFKTsKPiA+ICsgICAgICAgICAgICAgICBmMmZzX3N1Ym1pdF9tZXJn ZWRfd3JpdGVfY2FjaGUoc2JpLCBOVUxMLCBpbm8sIE5PREUpOwo+ID4gICAgICAgICByZXR1cm4g cmV0Owo+ID4gIH0KPiA+Cj4gPiArCj4gPiAgc3RhdGljIGludCBmMmZzX21hdGNoX2lubyhzdHJ1 Y3QgaW5vZGUgKmlub2RlLCB1NjQgaW5vLCB2b2lkICpkYXRhKQo+ID4gIHsKPiA+ICAgICAgICAg c3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpID0gRjJGU19JX1NCKGlub2RlKTsKPiA+IEBAIC0yMDYx LDE4ICsyMDQzLDE4IEBAIHN0YXRpYyBpbnQgZjJmc19tYXRjaF9pbm8oc3RydWN0IGlub2RlICpp bm9kZSwgdTY0IGlubywgdm9pZCAqZGF0YSkKPiA+ICAgICAgICAgcmV0dXJuIDE7Cj4gPiAgfQo+ ID4KPiA+IC1zdGF0aWMgYm9vbCBmbHVzaF9kaXJ0eV9pbm9kZShzdHJ1Y3QgZm9saW8gKmZvbGlv KQo+ID4gK3N0YXRpYyBib29sIGZsdXNoX2RpcnR5X2NhY2hlX2lub2RlKHN0cnVjdCBmMmZzX2Nh Y2hlZF9ibG9jayAqZW50cnkpCj4gPiAgewo+ID4gLSAgICAgICBzdHJ1Y3QgZjJmc19zYl9pbmZv ICpzYmkgPSBGMkZTX0ZfU0IoZm9saW8pOwo+ID4gKyAgICAgICBzdHJ1Y3QgZjJmc19zYl9pbmZv ICpzYmkgPSBlbnRyeS0+Y2FjaGUtPnNiaTsKPiA+ICAgICAgICAgc3RydWN0IGlub2RlICppbm9k ZTsKPiA+IC0gICAgICAgbmlkX3QgaW5vID0gaW5vX29mX25vZGUoc2JpLCBmb2xpbyk7Cj4gPiAr ICAgICAgIG5pZF90IGlubyA9IGlub19vZl9ub2RlKHNiaSwgZW50cnkpOwo+ID4KPiA+ICAgICAg ICAgaW5vZGUgPSBmaW5kX2lub2RlX25vd2FpdChzYmktPnNiLCBpbm8sIGYyZnNfbWF0Y2hfaW5v LCBOVUxMKTsKPiA+ICAgICAgICAgaWYgKCFpbm9kZSkKPiA+ICAgICAgICAgICAgICAgICByZXR1 cm4gZmFsc2U7Cj4gPgo+ID4gLSAgICAgICBmMmZzX3VwZGF0ZV9pbm9kZShpbm9kZSwgZm9saW8p Owo+ID4gLSAgICAgICBmb2xpb191bmxvY2soZm9saW8pOwo+ID4gKyAgICAgICBmMmZzX3VwZGF0 ZV9pbm9kZShpbm9kZSwgZW50cnkpOwo+ID4gKyAgICAgICBmMmZzX3VubG9ja19jYWNoZShlbnRy eSk7Cj4gPgo+ID4gICAgICAgICBpcHV0KGlub2RlKTsKPiA+ICAgICAgICAgcmV0dXJuIHRydWU7 Cj4gPiBAQCAtMjA4MSw3MiArMjA2Myw3MiBAQCBzdGF0aWMgYm9vbCBmbHVzaF9kaXJ0eV9pbm9k ZShzdHJ1Y3QgZm9saW8gKmZvbGlvKQo+ID4gIHZvaWQgZjJmc19mbHVzaF9pbmxpbmVfZGF0YShz dHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkpCj4gPiAgewo+ID4gICAgICAgICBwZ29mZl90IGluZGV4 ID0gMDsKPiA+IC0gICAgICAgc3RydWN0IGZvbGlvX2JhdGNoIGZiYXRjaDsKPiA+IC0gICAgICAg aW50IG5yX2ZvbGlvczsKPiA+IC0KPiA+IC0gICAgICAgZm9saW9fYmF0Y2hfaW5pdCgmZmJhdGNo KTsKPiA+ICsgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyaWVzW0YyRlNfT05T VEFDS19DQUNIRVNdOwo+ID4gKyAgICAgICB1bnNpZ25lZCBpbnQgbnI7Cj4gPgo+ID4gLSAgICAg ICB3aGlsZSAoKG5yX2ZvbGlvcyA9IGZpbGVtYXBfZ2V0X2ZvbGlvc190YWcoTk9ERV9NQVBQSU5H KHNiaSksICZpbmRleCwKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAocGdvZmZfdCktMSwgUEFHRUNBQ0hFX1RBR19ESVJUWSwKPiA+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmZmJhdGNoKSkpIHsKPiA+ICsgICAgICAgd2hpbGUgKChu ciA9IGYyZnNfY2FjaGVfZ2FuZ19sb29rdXBfdGFnKE5PREVfQ0FDSEUoc2JpKSwKPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cmllcywgJmluZGV4LCBGMkZTX09OU1RBQ0tf Q0FDSEVTLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGMkZTX0NBQ0hFX1RB R19ESVJUWSkpKSB7Cj4gPiAgICAgICAgICAgICAgICAgaW50IGk7Cj4gPgo+ID4gLSAgICAgICAg ICAgICAgIGZvciAoaSA9IDA7IGkgPCBucl9mb2xpb3M7IGkrKykgewo+ID4gLSAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IGZvbGlvICpmb2xpbyA9IGZiYXRjaC5mb2xpb3NbaV07Cj4gPiAr ICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG5yOyBpKyspIHsKPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnkgPSBlbnRyaWVzW2ld Owo+ID4KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGlmICghSVNfSU5PREUoc2JpLCBmb2xp bykpCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ID4gLQo+ ID4gLSAgICAgICAgICAgICAgICAgICAgICAgZm9saW9fbG9jayhmb2xpbyk7Cj4gPiArICAgICAg ICAgICAgICAgICAgICAgICBmMmZzX2xvY2tfY2FjaGUoZW50cnkpOwo+ID4KPiA+IC0gICAgICAg ICAgICAgICAgICAgICAgIGlmICh1bmxpa2VseSghaXNfbm9kZV9mb2xpbyhzYmksIGZvbGlvKSkp Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAodW5saWtlbHkoIWYyZnNfaXNfbm9kZV9j YWNoZShlbnRyeSkpKQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHVu bG9jazsKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGlmICghZm9saW9fdGVzdF9kaXJ0eShm b2xpbykpCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUlTX0lOT0RFKHNiaSwgZW50 cnkpKQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHVubG9jazsKPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgIGlmICghZjJmc19jYWNoZV90ZXN0X2RpcnR5KGVudHJ5 KSkKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byB1bmxvY2s7Cj4gPgo+ ID4gICAgICAgICAgICAgICAgICAgICAgICAgLyogZmx1c2ggaW5saW5lX2RhdGEsIGlmIGl0J3Mg YXN5bmMgY29udGV4dC4gKi8KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGlmIChmb2xpb190 ZXN0X2YyZnNfaW5saW5lKGZvbGlvKSkgewo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBmb2xpb19jbGVhcl9mMmZzX2lubGluZShmb2xpbyk7Cj4gPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGZvbGlvX3VubG9jayhmb2xpbyk7Cj4gPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGZsdXNoX2lubGluZV9kYXRhKHNiaSwgaW5vX29mX25vZGUoc2JpLCBm b2xpbykpOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYyZnNfY2FjaGVfdGVzdF9p bmxpbmUoZW50cnkpKSB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pZF90 IGlubyA9IGlub19vZl9ub2RlKHNiaSwgZW50cnkpOwo+ID4gKwo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmMmZzX2NhY2hlX2NsZWFyX2lubGluZShlbnRyeSk7Cj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYyZnNfdW5sb2NrX2NhY2hlKGVudHJ5KTsKPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmx1c2hfaW5saW5lX2RhdGEoc2JpLCBp bm8pOwo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiA+ICAg ICAgICAgICAgICAgICAgICAgICAgIH0KPiA+ICB1bmxvY2s6Cj4gPiAtICAgICAgICAgICAgICAg ICAgICAgICBmb2xpb191bmxvY2soZm9saW8pOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ZjJmc191bmxvY2tfY2FjaGUoZW50cnkpOwo+ID4gICAgICAgICAgICAgICAgIH0KPiA+IC0gICAg ICAgICAgICAgICBmb2xpb19iYXRjaF9yZWxlYXNlKCZmYmF0Y2gpOwo+ID4gKyAgICAgICAgICAg ICAgIGYyZnNfY2FjaGVfZ2FuZ19yZWxlYXNlKGVudHJpZXMsIG5yKTsKPiA+ICAgICAgICAgICAg ICAgICBjb25kX3Jlc2NoZWQoKTsKPiA+ICAgICAgICAgfQo+ID4gIH0KPiA+Cj4gPiAtaW50IGYy ZnNfc3luY19ub2RlX3BhZ2VzKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHdyaXRlYmFja19jb250cm9sICp3YmMsCj4g PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZG9fYmFsYW5jZSwgZW51bSBp b3N0YXRfdHlwZSBpb190eXBlKQo+ID4gK2ludCBmMmZzX3dyaXRlYmFja19ub2RlX2NhY2hlcyhz dHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIGxvbmcgbnJfdG9fd3JpdGUsCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICBib29sIHN5bmMsIGJvb2wgZG9fYmFsYW5jZSwgZW51bSBpb3N0YXRfdHlw ZSBpb190eXBlKQo+ID4gIHsKPiA+ICAgICAgICAgcGdvZmZfdCBpbmRleDsKPiA+IC0gICAgICAg c3RydWN0IGZvbGlvX2JhdGNoIGZiYXRjaDsKPiA+ICsgICAgICAgc3RydWN0IGYyZnNfY2FjaGVk X2Jsb2NrICplbnRyaWVzW0YyRlNfT05TVEFDS19DQUNIRVNdOwo+ID4gICAgICAgICBpbnQgc3Rl cCA9IDA7Cj4gPiAgICAgICAgIGludCBud3JpdHRlbiA9IDA7Cj4gPiAgICAgICAgIGludCByZXQg PSAwOwo+ID4gLSAgICAgICBpbnQgbnJfZm9saW9zLCBkb25lID0gMDsKPiA+IC0KPiA+IC0gICAg ICAgZm9saW9fYmF0Y2hfaW5pdCgmZmJhdGNoKTsKPiA+ICsgICAgICAgaW50IG5yLCBkb25lID0g MDsKPiA+Cj4gPiAgbmV4dF9zdGVwOgo+ID4gICAgICAgICBpbmRleCA9IDA7Cj4gPgo+ID4gLSAg ICAgICB3aGlsZSAoIWRvbmUgJiYgKG5yX2ZvbGlvcyA9IGZpbGVtYXBfZ2V0X2ZvbGlvc190YWco Tk9ERV9NQVBQSU5HKHNiaSksCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZp bmRleCwgKHBnb2ZmX3QpLTEsIFBBR0VDQUNIRV9UQUdfRElSVFksCj4gPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZmYmF0Y2gpKSkgewo+ID4gKyAgICAgICB3aGlsZSAoIWRvbmUg JiYgKG5yID0gZjJmc19jYWNoZV9nYW5nX2xvb2t1cF90YWcoTk9ERV9DQUNIRShzYmkpLAo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyaWVzLCAmaW5kZXgsIEYyRlNfT05T VEFDS19DQUNIRVMsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEYyRlNfQ0FD SEVfVEFHX0RJUlRZKSkpIHsKPiA+ICAgICAgICAgICAgICAgICBpbnQgaTsKPiA+Cj4gPiAtICAg ICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG5yX2ZvbGlvczsgaSsrKSB7Cj4gPiAtICAgICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3QgZm9saW8gKmZvbGlvID0gZmJhdGNoLmZvbGlvc1tpXTsK PiA+ICsgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnI7IGkrKykgewo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyeSA9IGVudHJp ZXNbaV07Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHN1Ym1pdHRlZCA9IGZhbHNl Owo+ID4KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmICghc3luYyAmJiB1bmxpa2VseShm cmVlemluZyhjdXJyZW50KSkpIHsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZG9uZSA9IDE7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgfQo+ID4gKwo+ID4gICAgICAgICAgICAgICAgICAgICAg ICAgLyogZ2l2ZSBhIHByaW9yaXR5IHRvIFdCX1NZTkMgdGhyZWFkcyAqLwo+ID4gLSAgICAgICAg ICAgICAgICAgICAgICAgaWYgKGF0b21pY19yZWFkKCZzYmktPndiX3N5bmNfcmVxW05PREVdKSAm Jgo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdiYy0+c3luY19t b2RlID09IFdCX1NZTkNfTk9ORSkgewo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF0 b21pY19yZWFkKCZzYmktPndiX3N5bmNfcmVxW05PREVdKSAmJiAhc3luYykgewo+ID4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lID0gMTsKPiA+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYnJlYWs7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICB9Cj4gPiBA QCAtMjE1NywyNyArMjEzOSwyNyBAQCBpbnQgZjJmc19zeW5jX25vZGVfcGFnZXMoc3RydWN0IGYy ZnNfc2JfaW5mbyAqc2JpLAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICogMS4gZGVudHJ5 IGRub2Rlcwo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICogMi4gZmlsZSBkbm9kZXMKPiA+ ICAgICAgICAgICAgICAgICAgICAgICAgICAqLwo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAg aWYgKHN0ZXAgPT0gMCAmJiBJU19ETk9ERShzYmksIGZvbGlvKSkKPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgIGlmIChzdGVwID09IDAgJiYgSVNfRE5PREUoc2JpLCBlbnRyeSkpCj4gPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ID4gLSAgICAgICAgICAgICAg ICAgICAgICAgaWYgKHN0ZXAgPT0gMSAmJiAoIUlTX0ROT0RFKHNiaSwgZm9saW8pIHx8Cj4gPiAt ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19jb2xkX25v ZGUoc2JpLCBmb2xpbykpKQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0ZXAgPT0g MSAmJiAoIUlTX0ROT0RFKHNiaSwgZW50cnkpIHx8Cj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpc19jb2xkX25vZGUoc2JpLCBlbnRyeSkpKQo+ID4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiA+IC0gICAgICAgICAg ICAgICAgICAgICAgIGlmIChzdGVwID09IDIgJiYgKCFJU19ETk9ERShzYmksIGZvbGlvKSB8fAo+ ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWlzX2Nv bGRfbm9kZShzYmksIGZvbGlvKSkpCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3Rl cCA9PSAyICYmICghSVNfRE5PREUoc2JpLCBlbnRyeSkgfHwKPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpc19jb2xkX25vZGUoc2JpLCBlbnRyeSkp KQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiA+ICBsb2Nr X25vZGU6Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBpZiAod2JjLT5zeW5jX21vZGUgPT0g V0JfU1lOQ19BTEwpCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGlvX2xv Y2soZm9saW8pOwo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWZvbGlvX3Ry eWxvY2soZm9saW8pKQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN5bmMpCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYyZnNfbG9ja19jYWNoZShlbnRyeSk7Cj4g PiArICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghZjJmc190cnlsb2NrX2NhY2hlKGVu dHJ5KSkKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gPgo+ ID4gLSAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVubGlrZWx5KCFpc19ub2RlX2ZvbGlvKHNi aSwgZm9saW8pKSkgewo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVubGlrZWx5KCFm MmZzX2lzX25vZGVfY2FjaGUoZW50cnkpKSkgewo+ID4gIGNvbnRpbnVlX3VubG9jazoKPiA+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9saW9fdW5sb2NrKGZvbGlvKTsKPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjJmc191bmxvY2tfY2FjaGUoZW50cnkpOwo+ ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiA+ICAgICAgICAg ICAgICAgICAgICAgICAgIH0KPiA+Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZv bGlvX3Rlc3RfZGlydHkoZm9saW8pKSB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAo IWYyZnNfY2FjaGVfdGVzdF9kaXJ0eShlbnRyeSkpIHsKPiA+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLyogc29tZW9uZSB3cm90ZSBpdCBmb3IgdXMgKi8KPiA+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZ290byBjb250aW51ZV91bmxvY2s7Cj4gPiAgICAgICAgICAg ICAgICAgICAgICAgICB9Cj4gPiBAQCAtMjE4NywzOCArMjE2OSwzOCBAQCBpbnQgZjJmc19zeW5j X25vZGVfcGFnZXMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBnb3RvIHdyaXRlX25vZGU7Cj4gPgo+ID4gICAgICAgICAgICAgICAg ICAgICAgICAgLyogZmx1c2ggaW5saW5lX2RhdGEgKi8KPiA+IC0gICAgICAgICAgICAgICAgICAg ICAgIGlmIChmb2xpb190ZXN0X2YyZnNfaW5saW5lKGZvbGlvKSkgewo+ID4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBmb2xpb19jbGVhcl9mMmZzX2lubGluZShmb2xpbyk7Cj4gPiAt ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGlvX3VubG9jayhmb2xpbyk7Cj4gPiAt ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsdXNoX2lubGluZV9kYXRhKHNiaSwgaW5v X29mX25vZGUoc2JpLCBmb2xpbykpOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYy ZnNfY2FjaGVfdGVzdF9pbmxpbmUoZW50cnkpKSB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGYyZnNfY2FjaGVfY2xlYXJfaW5saW5lKGVudHJ5KTsKPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZjJmc191bmxvY2tfY2FjaGUoZW50cnkpOwo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBmbHVzaF9pbmxpbmVfZGF0YShzYmksIGlub19vZl9u b2RlKHNiaSwgZW50cnkpKTsKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290 byBsb2NrX25vZGU7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICB9Cj4gPgo+ID4gICAgICAg ICAgICAgICAgICAgICAgICAgLyogZmx1c2ggZGlydHkgaW5vZGUgKi8KPiA+IC0gICAgICAgICAg ICAgICAgICAgICAgIGlmIChJU19JTk9ERShzYmksIGZvbGlvKSAmJiBmbHVzaF9kaXJ0eV9pbm9k ZShmb2xpbykpCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAoSVNfSU5PREUoc2JpLCBl bnRyeSkgJiYgZmx1c2hfZGlydHlfY2FjaGVfaW5vZGUoZW50cnkpKQo+ID4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBnb3RvIGxvY2tfbm9kZTsKPiA+ICB3cml0ZV9ub2RlOgo+ID4g LSAgICAgICAgICAgICAgICAgICAgICAgZjJmc19mb2xpb193YWl0X3dyaXRlYmFjayhmb2xpbywg Tk9ERSwgdHJ1ZSwgdHJ1ZSk7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBmMmZzX2NhY2hl X3dhaXRfd3JpdGViYWNrKGVudHJ5KTsKPiA+Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBp ZiAoIWZvbGlvX2NsZWFyX2RpcnR5X2Zvcl9pbyhmb2xpbykpCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICBpZiAoIWYyZnNfY2FjaGVfdGVzdF9hbmRfY2xlYXJfZGlydHkoZW50cnkpKQo+ID4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGNvbnRpbnVlX3VubG9jazsKPiA+ Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBpZiAoIV9fd3JpdGVfbm9kZV9mb2xpbyhmb2xp bywgZmFsc2UsIGZhbHNlLCAmc3VibWl0dGVkLAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHdiYywgZG9fYmFsYW5jZSwgaW9fdHlwZSwgTlVMTCkpIHsKPiA+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9saW9fYmF0Y2hfcmVsZWFzZSgmZmJhdGNo KTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmICghX193cml0ZV9ub2RlX2NhY2hlKGVu dHJ5LCBmYWxzZSwgZmFsc2UsICZzdWJtaXR0ZWQsCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3luYywgZG9fYmFsYW5jZSwgaW9fdHlwZSwgTlVMTCkpIHsKPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjJmc19jYWNoZV9nYW5nX3JlbGVhc2Uo ZW50cmllcywgbnIpOwo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSAt RUlPOwo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG91dDsKPiA+ICAg ICAgICAgICAgICAgICAgICAgICAgIH0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChz dWJtaXR0ZWQpCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG53cml0dGVuKys7 Cj4gPgo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgaWYgKC0td2JjLT5ucl90b193cml0ZSA9 PSAwKQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKC0tbnJfdG9fd3JpdGUgPT0gMCkK PiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gPiAgICAgICAgICAg ICAgICAgfQo+ID4gLSAgICAgICAgICAgICAgIGZvbGlvX2JhdGNoX3JlbGVhc2UoJmZiYXRjaCk7 Cj4gPiArICAgICAgICAgICAgICAgZjJmc19jYWNoZV9nYW5nX3JlbGVhc2UoZW50cmllcywgbnIp Owo+ID4gICAgICAgICAgICAgICAgIGNvbmRfcmVzY2hlZCgpOwo+ID4KPiA+IC0gICAgICAgICAg ICAgICBpZiAod2JjLT5ucl90b193cml0ZSA9PSAwKSB7Cj4gPiArICAgICAgICAgICAgICAgaWYg KG5yX3RvX3dyaXRlID09IDApIHsKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXAgPSAy Owo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gPiAgICAgICAgICAgICAgICAg fQo+ID4gQEAgLTIyMjYsNyArMjIwOCw3IEBAIGludCBmMmZzX3N5bmNfbm9kZV9wYWdlcyhzdHJ1 Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPgo+ID4gICAgICAgICBpZiAoc3RlcCA8IDIpIHsKPiA+ ICAgICAgICAgICAgICAgICBpZiAoIWlzX3NiaV9mbGFnX3NldChzYmksIFNCSV9DUF9ESVNBQkxF RCkgJiYKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2JjLT5zeW5jX21vZGUg PT0gV0JfU1lOQ19OT05FICYmIHN0ZXAgPT0gMSkKPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIXN5bmMgJiYgc3RlcCA9PSAxKQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAg Z290byBvdXQ7Cj4gPiAgICAgICAgICAgICAgICAgc3RlcCsrOwo+ID4gICAgICAgICAgICAgICAg IGdvdG8gbmV4dF9zdGVwOwo+ID4gQEAgLTIyNDAsNyArMjIyMiw3IEBAIGludCBmMmZzX3N5bmNf bm9kZV9wYWdlcyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPiAgICAgICAgIHJldHVybiBy ZXQ7Cj4gPiAgfQo+ID4KPiA+IC1pbnQgZjJmc193YWl0X29uX25vZGVfcGFnZXNfd3JpdGViYWNr KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+ICtpbnQgZjJmc193YWl0X29uX25vZGVfY2Fj aGVzX3dyaXRlYmFjayhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc2VxX2lkKQo+ ID4gIHsKPiA+ICAgICAgICAgc3RydWN0IGZzeW5jX25vZGVfZW50cnkgKmZuOwo+ID4gQEAgLTIy NDksNyArMjIzMSw3IEBAIGludCBmMmZzX3dhaXRfb25fbm9kZV9wYWdlc193cml0ZWJhY2soc3Ry dWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4gICAgICAgICB1bnNpZ25lZCBpbnQgY3VyX3NlcV9p ZCA9IDA7Cj4gPgo+ID4gICAgICAgICB3aGlsZSAoc2VxX2lkICYmIGN1cl9zZXFfaWQgPCBzZXFf aWQpIHsKPiA+IC0gICAgICAgICAgICAgICBzdHJ1Y3QgZm9saW8gKmZvbGlvOwo+ID4gKyAgICAg ICAgICAgICAgIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnk7Cj4gPgo+ID4gICAgICAg ICAgICAgICAgIHNwaW5fbG9ja19pcnFzYXZlKCZzYmktPmZzeW5jX25vZGVfbG9jaywgZmxhZ3Mp Owo+ID4gICAgICAgICAgICAgICAgIGlmIChsaXN0X2VtcHR5KGhlYWQpKSB7Cj4gPiBAQCAtMjI2 Miw5NCArMjI0NCw0OSBAQCBpbnQgZjJmc193YWl0X29uX25vZGVfcGFnZXNfd3JpdGViYWNrKHN0 cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr Owo+ID4gICAgICAgICAgICAgICAgIH0KPiA+ICAgICAgICAgICAgICAgICBjdXJfc2VxX2lkID0g Zm4tPnNlcV9pZDsKPiA+IC0gICAgICAgICAgICAgICBmb2xpbyA9IGZuLT5mb2xpbzsKPiA+IC0g ICAgICAgICAgICAgICBmb2xpb19nZXQoZm9saW8pOwo+ID4gKyAgICAgICAgICAgICAgIGVudHJ5 ID0gZm4tPmVudHJ5Owo+ID4gKyAgICAgICAgICAgICAgIGYyZnNfY2FjaGVfZ2V0KGVudHJ5KTsK PiA+ICAgICAgICAgICAgICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzYmktPmZzeW5jX25v ZGVfbG9jaywgZmxhZ3MpOwo+ID4KPiA+IC0gICAgICAgICAgICAgICBmMmZzX2ZvbGlvX3dhaXRf d3JpdGViYWNrKGZvbGlvLCBOT0RFLCB0cnVlLCBmYWxzZSk7Cj4gPiArICAgICAgICAgICAgICAg ZjJmc19sb2NrX2NhY2hlKGVudHJ5KTsKPiA+ICsgICAgICAgICAgICAgICBmMmZzX2NhY2hlX3dh aXRfd3JpdGViYWNrKGVudHJ5KTsKPiA+Cj4gPiAtICAgICAgICAgICAgICAgZm9saW9fcHV0KGZv bGlvKTsKPiA+ICsgICAgICAgICAgICAgICBmMmZzX3B1dF9jYWNoZShlbnRyeSwgdHJ1ZSk7Cj4g PiAgICAgICAgIH0KPiA+Cj4gPiAtICAgICAgIHJldHVybiBmaWxlbWFwX2NoZWNrX2Vycm9ycyhO T0RFX01BUFBJTkcoc2JpKSk7Cj4gPiArICAgICAgIHJldHVybiBmMmZzX2NwX2Vycm9yKHNiaSkg PyAtRUlPIDogMDsKPiA+ICB9Cj4gPgo+ID4gLXN0YXRpYyBpbnQgZjJmc193cml0ZV9ub2RlX3Bh Z2VzKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLAo+ID4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd2JjKQo+ID4gK2ludCBmMmZzX3dy aXRlX25vZGVfY2FjaGVzKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSkKPiA+ICB7Cj4gPiAtICAg ICAgIHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSA9IEYyRlNfTV9TQihtYXBwaW5nKTsKPiA+ICAg ICAgICAgc3RydWN0IGJsa19wbHVnIHBsdWc7Cj4gPiAtICAgICAgIGxvbmcgZGlmZjsKPiA+ICsg ICAgICAgbG9uZyBucl90b193cml0ZSA9IExPTkdfTUFYOwo+ID4KPiA+ICAgICAgICAgaWYgKHVu bGlrZWx5KGlzX3NiaV9mbGFnX3NldChzYmksIFNCSV9QT1JfRE9JTkcpKSkKPiA+IC0gICAgICAg ICAgICAgICBnb3RvIHNraXBfd3JpdGU7Cj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FQUdB SU47Cj4gPgo+ID4gICAgICAgICAvKiBiYWxhbmNpbmcgZjJmcydzIG1ldGFkYXRhIGluIGJhY2tn cm91bmQgKi8KPiA+ICAgICAgICAgZjJmc19iYWxhbmNlX2ZzX2JnKHNiaSwgdHJ1ZSk7Cj4gPgo+ ID4gLSAgICAgICAvKiBjb2xsZWN0IGEgbnVtYmVyIG9mIGRpcnR5IG5vZGUgcGFnZXMgYW5kIHdy aXRlIHRvZ2V0aGVyICovCj4gPiAtICAgICAgIGlmICh3YmMtPnN5bmNfbW9kZSAhPSBXQl9TWU5D X0FMTCAmJgo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgZ2V0X3BhZ2VzKHNiaSwgRjJGU19E SVJUWV9OT0RFUykgPAo+ID4gKyAgICAgICAvKiBjb2xsZWN0IGEgbnVtYmVyIG9mIGRpcnR5IG5v ZGUgY2FjaGVzIGFuZCB3cml0ZSB0b2dldGhlciAqLwo+ID4gKyAgICAgICBpZiAoZ2V0X3BhZ2Vz KHNiaSwgRjJGU19ESVJUWV9OT0RFUykgPAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG5yX3BhZ2VzX3RvX3NraXAoc2JpLCBOT0RFKSkKPiA+IC0gICAgICAgICAg ICAgICBnb3RvIHNraXBfd3JpdGU7Cj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FQUdBSU47 Cj4gPgo+ID4gLSAgICAgICBpZiAod2JjLT5zeW5jX21vZGUgPT0gV0JfU1lOQ19BTEwpCj4gPiAt ICAgICAgICAgICAgICAgYXRvbWljX2luYygmc2JpLT53Yl9zeW5jX3JlcVtOT0RFXSk7Cj4gPiAt ICAgICAgIGVsc2UgaWYgKGF0b21pY19yZWFkKCZzYmktPndiX3N5bmNfcmVxW05PREVdKSkgewo+ ID4gKyAgICAgICBpZiAoYXRvbWljX3JlYWQoJnNiaS0+d2Jfc3luY19yZXFbTk9ERV0pKSB7Cj4g PiAgICAgICAgICAgICAgICAgLyogdG8gYXZvaWQgcG90ZW50aWFsIGRlYWRsb2NrICovCj4gPiAg ICAgICAgICAgICAgICAgaWYgKGN1cnJlbnQtPnBsdWcpCj4gPiAgICAgICAgICAgICAgICAgICAg ICAgICBibGtfZmluaXNoX3BsdWcoY3VycmVudC0+cGx1Zyk7Cj4gPiAtICAgICAgICAgICAgICAg Z290byBza2lwX3dyaXRlOwo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUFHQUlOOwo+ID4g ICAgICAgICB9Cj4gPgo+ID4gLSAgICAgICB0cmFjZV9mMmZzX3dyaXRlcGFnZXMobWFwcGluZy0+ aG9zdCwgd2JjLCBOT0RFKTsKPiA+IC0KPiA+IC0gICAgICAgZGlmZiA9IG5yX3BhZ2VzX3RvX3dy aXRlKHNiaSwgTk9ERSwgd2JjKTsKPiA+ICsgICAgICAgbnJfdG9fd3JpdGUgPSBhZGp1c3RfZmx1 c2hfY2FjaGVfbnVtYmVyKHNiaSwgTk9ERSk7Cj4gPiAgICAgICAgIGJsa19zdGFydF9wbHVnKCZw bHVnKTsKPiA+IC0gICAgICAgZjJmc19zeW5jX25vZGVfcGFnZXMoc2JpLCB3YmMsIHRydWUsIEZT X05PREVfSU8pOwo+ID4gKyAgICAgICBmMmZzX3dyaXRlYmFja19ub2RlX2NhY2hlcyhzYmksIG5y X3RvX3dyaXRlLCBmYWxzZSwgdHJ1ZSwgRlNfTk9ERV9JTyk7Cj4gPiAgICAgICAgIGJsa19maW5p c2hfcGx1ZygmcGx1Zyk7Cj4gPiAtICAgICAgIHdiYy0+bnJfdG9fd3JpdGUgPSBtYXgoKGxvbmcp MCwgd2JjLT5ucl90b193cml0ZSAtIGRpZmYpOwo+ID4gLQo+ID4gLSAgICAgICBpZiAod2JjLT5z eW5jX21vZGUgPT0gV0JfU1lOQ19BTEwpCj4gPiAtICAgICAgICAgICAgICAgYXRvbWljX2RlYygm c2JpLT53Yl9zeW5jX3JlcVtOT0RFXSk7Cj4gPiAtICAgICAgIHJldHVybiAwOwo+ID4gLQo+ID4g LXNraXBfd3JpdGU6Cj4gPiAtICAgICAgIHdiYy0+cGFnZXNfc2tpcHBlZCArPSBnZXRfcGFnZXMo c2JpLCBGMkZTX0RJUlRZX05PREVTKTsKPiA+IC0gICAgICAgdHJhY2VfZjJmc193cml0ZXBhZ2Vz KG1hcHBpbmctPmhvc3QsIHdiYywgTk9ERSk7Cj4gPiAgICAgICAgIHJldHVybiAwOwo+ID4gIH0K PiA+Cj4gPiAtc3RhdGljIGJvb2wgZjJmc19kaXJ0eV9ub2RlX2ZvbGlvKHN0cnVjdCBhZGRyZXNz X3NwYWNlICptYXBwaW5nLAo+ID4gLSAgICAgICAgICAgICAgIHN0cnVjdCBmb2xpbyAqZm9saW8p Cj4gPiAtewo+ID4gLSAgICAgICB0cmFjZV9mMmZzX3NldF9wYWdlX2RpcnR5KGZvbGlvLCBOT0RF KTsKPiA+IC0KPiA+IC0gICAgICAgaWYgKCFmb2xpb190ZXN0X3VwdG9kYXRlKGZvbGlvKSkKPiA+ IC0gICAgICAgICAgICAgICBmb2xpb19tYXJrX3VwdG9kYXRlKGZvbGlvKTsKPiA+IC0jaWZkZWYg Q09ORklHX0YyRlNfQ0hFQ0tfRlMKPiA+IC0gICAgICAgaWYgKElTX0lOT0RFKEYyRlNfTV9TQiht YXBwaW5nKSwgZm9saW8pKQo+ID4gLSAgICAgICAgICAgICAgIGYyZnNfaW5vZGVfY2hrc3VtX3Nl dChGMkZTX01fU0IobWFwcGluZyksIGZvbGlvKTsKPiA+IC0jZW5kaWYKPiA+IC0gICAgICAgaWYg KGZpbGVtYXBfZGlydHlfZm9saW8obWFwcGluZywgZm9saW8pKSB7Cj4gPiAtICAgICAgICAgICAg ICAgaW5jX3BhZ2VfY291bnQoRjJGU19NX1NCKG1hcHBpbmcpLCBGMkZTX0RJUlRZX05PREVTKTsK PiA+IC0gICAgICAgICAgICAgICBmb2xpb19zZXRfZjJmc19yZWZlcmVuY2UoZm9saW8pOwo+ID4g LSAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwo+ID4gLSAgICAgICB9Cj4gPiAtICAgICAgIHJl dHVybiBmYWxzZTsKPiA+IC19Cj4gPiAtCj4gPiAtLyoKPiA+IC0gKiBTdHJ1Y3R1cmUgb2YgdGhl IGYyZnMgbm9kZSBvcGVyYXRpb25zCj4gPiAtICovCj4gPiAtY29uc3Qgc3RydWN0IGFkZHJlc3Nf c3BhY2Vfb3BlcmF0aW9ucyBmMmZzX25vZGVfYW9wcyA9IHsKPiA+IC0gICAgICAgLndyaXRlcGFn ZXMgICAgID0gZjJmc193cml0ZV9ub2RlX3BhZ2VzLAo+ID4gLSAgICAgICAuZGlydHlfZm9saW8g ICAgPSBmMmZzX2RpcnR5X25vZGVfZm9saW8sCj4gPiAtICAgICAgIC5pbnZhbGlkYXRlX2ZvbGlv ID0gZjJmc19pbnZhbGlkYXRlX2ZvbGlvLAo+ID4gLSAgICAgICAucmVsZWFzZV9mb2xpbyAgPSBm MmZzX3JlbGVhc2VfZm9saW8sCj4gPiAtICAgICAgIC5taWdyYXRlX2ZvbGlvICA9IGZpbGVtYXBf bWlncmF0ZV9mb2xpbywKPiA+IC19Owo+ID4gLQo+ID4gIHN0YXRpYyBzdHJ1Y3QgZnJlZV9uaWQg Kl9fbG9va3VwX2ZyZWVfbmlkX2xpc3Qoc3RydWN0IGYyZnNfbm1faW5mbyAqbm1faSwKPiA+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pZF90IG4pCj4g PiAgewo+ID4gQEAgLTI4NTAsMTIgKzI3ODcsMTIgQEAgaW50IGYyZnNfcmVjb3Zlcl9pbmxpbmVf eGF0dHIoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnQK PiA+ICB7Cj4gPiAgICAgICAgIHZvaWQgKnNyY19hZGRyLCAqZHN0X2FkZHI7Cj4gPiAgICAgICAg IHNpemVfdCBpbmxpbmVfc2l6ZTsKPiA+IC0gICAgICAgc3RydWN0IGZvbGlvICppZm9saW87Cj4g PiArICAgICAgIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqaWVudHJ5Owo+ID4gICAgICAgICBz dHJ1Y3QgZjJmc19pbm9kZSAqcmk7Cj4gPgo+ID4gLSAgICAgICBpZm9saW8gPSBmMmZzX2dldF9p bm9kZV9mb2xpbyhGMkZTX0lfU0IoaW5vZGUpLCBpbm9kZS0+aV9pbm8pOwo+ID4gLSAgICAgICBp ZiAoSVNfRVJSKGlmb2xpbykpCj4gPiAtICAgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIoaWZv bGlvKTsKPiA+ICsgICAgICAgaWVudHJ5ID0gZjJmc19nZXRfaW5vZGVfY2FjaGUoRjJGU19JX1NC KGlub2RlKSwgaW5vZGUtPmlfaW5vKTsKPiA+ICsgICAgICAgaWYgKElTX0VSUihpZW50cnkpKQo+ ID4gKyAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKGllbnRyeSk7Cj4gPgo+ID4gICAgICAg ICByaSA9ICZDQUNIRURfTk9ERShlbnRyeSktPmk7Cj4gPiAgICAgICAgIGlmIChyaS0+aV9pbmxp bmUgJiBGMkZTX0lOTElORV9YQVRUUikgewo+ID4gQEAgLTI4NzEsMTUgKzI4MDgsMTUgQEAgaW50 IGYyZnNfcmVjb3Zlcl9pbmxpbmVfeGF0dHIoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGYy ZnNfY2FjaGVkX2Jsb2NrICplbnQKPiA+ICAgICAgICAgICAgICAgICBnb3RvIHVwZGF0ZV9pbm9k ZTsKPiA+ICAgICAgICAgfQo+ID4KPiA+IC0gICAgICAgZHN0X2FkZHIgPSBpbmxpbmVfeGF0dHJf YWRkcihpbm9kZSwgaWZvbGlvKTsKPiA+IC0gICAgICAgc3JjX2FkZHIgPSBpbmxpbmVfeGF0dHJf YWRkcihpbm9kZSwgY2FjaGVfZm9saW8oZW50cnkpKTsKPiA+ICsgICAgICAgZHN0X2FkZHIgPSBp bmxpbmVfeGF0dHJfYWRkcihpbm9kZSwgaWVudHJ5KTsKPiA+ICsgICAgICAgc3JjX2FkZHIgPSBp bmxpbmVfeGF0dHJfYWRkcihpbm9kZSwgZW50cnkpOwo+ID4gICAgICAgICBpbmxpbmVfc2l6ZSA9 IGlubGluZV94YXR0cl9zaXplKGlub2RlKTsKPiA+Cj4gPiAtICAgICAgIGYyZnNfZm9saW9fd2Fp dF93cml0ZWJhY2soaWZvbGlvLCBOT0RFLCB0cnVlLCB0cnVlKTsKPiA+ICsgICAgICAgZjJmc19j YWNoZV93YWl0X3dyaXRlYmFjayhpZW50cnkpOwo+ID4gICAgICAgICBtZW1jcHkoZHN0X2FkZHIs IHNyY19hZGRyLCBpbmxpbmVfc2l6ZSk7Cj4gPiAgdXBkYXRlX2lub2RlOgo+ID4gLSAgICAgICBm MmZzX3VwZGF0ZV9pbm9kZShpbm9kZSwgaWZvbGlvKTsKPiA+IC0gICAgICAgZjJmc19mb2xpb19w dXQoaWZvbGlvLCB0cnVlKTsKPiA+ICsgICAgICAgZjJmc191cGRhdGVfaW5vZGUoaW5vZGUsIGll bnRyeSk7Cj4gPiArICAgICAgIGYyZnNfcHV0X2NhY2hlKGllbnRyeSwgdHJ1ZSk7Cj4gPiAgICAg ICAgIHJldHVybiAwOwo+ID4gIH0KPiA+Cj4gPiBAQCAtMjg5MCw3ICsyODI3LDcgQEAgaW50IGYy ZnNfcmVjb3Zlcl94YXR0cl9kYXRhKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmMmZzX2Nh Y2hlZF9ibG9jayAqZW50cnkKPiA+ICAgICAgICAgbmlkX3QgbmV3X3huaWQ7Cj4gPiAgICAgICAg IHN0cnVjdCBkbm9kZV9vZl9kYXRhIGRuOwo+ID4gICAgICAgICBzdHJ1Y3Qgbm9kZV9pbmZvIG5p Owo+ID4gLSAgICAgICBzdHJ1Y3QgZm9saW8gKnhmb2xpbzsKPiA+ICsgICAgICAgc3RydWN0IGYy ZnNfY2FjaGVkX2Jsb2NrICp4ZW50cnk7Cj4gPiAgICAgICAgIGludCBlcnI7Cj4gPgo+ID4gICAg ICAgICBpZiAoIXByZXZfeG5pZCkKPiA+IEBAIC0yOTExLDMyICsyODQ4LDMzIEBAIGludCBmMmZz X3JlY292ZXJfeGF0dHJfZGF0YShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZjJmc19jYWNo ZWRfYmxvY2sgKmVudHJ5Cj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9TUEM7Cj4gPgo+ ID4gICAgICAgICBzZXRfbmV3X2Rub2RlKCZkbiwgaW5vZGUsIE5VTEwsIE5VTEwsIG5ld194bmlk KTsKPiA+IC0gICAgICAgeGZvbGlvID0gZjJmc19uZXdfbm9kZV9mb2xpbygmZG4sIFhBVFRSX05P REVfT0ZGU0VUKTsKPiA+IC0gICAgICAgaWYgKElTX0VSUih4Zm9saW8pKSB7Cj4gPiArICAgICAg IHhlbnRyeSA9IGYyZnNfbmV3X25vZGVfY2FjaGUoJmRuLCBYQVRUUl9OT0RFX09GRlNFVCk7Cj4g PiArICAgICAgIGlmIChJU19FUlIoeGVudHJ5KSkgewo+ID4gICAgICAgICAgICAgICAgIGYyZnNf YWxsb2NfbmlkX2ZhaWxlZChzYmksIG5ld194bmlkKTsKPiA+IC0gICAgICAgICAgICAgICByZXR1 cm4gUFRSX0VSUih4Zm9saW8pOwo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKHhl bnRyeSk7Cj4gPiAgICAgICAgIH0KPiA+Cj4gPiAgICAgICAgIGYyZnNfYWxsb2NfbmlkX2RvbmUo c2JpLCBuZXdfeG5pZCk7Cj4gPiAtICAgICAgIGYyZnNfdXBkYXRlX2lub2RlX3BhZ2UoaW5vZGUp Owo+ID4gKyAgICAgICBmMmZzX3VwZGF0ZV9pbm9kZV9jYWNoZShpbm9kZSk7Cj4gPgo+ID4gLSAg ICAgICAvKiAzOiB1cGRhdGUgYW5kIHNldCB4YXR0ciBub2RlIHBhZ2UgZGlydHkgKi8KPiA+ICsg ICAgICAgLyogMzogdXBkYXRlIGFuZCBzZXQgeGF0dHIgbm9kZSBjYWNoZSBkaXJ0eSAqLwo+ID4g ICAgICAgICBpZiAoZW50cnkpIHsKPiA+IC0gICAgICAgICAgICAgICBtZW1jcHkoRjJGU19OT0RF KHhmb2xpbyksIENBQ0hFRF9OT0RFKGVudHJ5KSwKPiA+ICsgICAgICAgICAgICAgICBtZW1jcHko Q0FDSEVEX05PREUoeGVudHJ5KSwgQ0FDSEVEX05PREUoZW50cnkpLAo+ID4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBWQUxJRF9YQVRUUl9CTE9DS19TSVpFKGlub2RlKSk7Cj4gPiAt ICAgICAgICAgICAgICAgZm9saW9fbWFya19kaXJ0eSh4Zm9saW8pOwo+ID4gKyAgICAgICAgICAg ICAgIGYyZnNfbWFya19jYWNoZV9kaXJ0eSh4ZW50cnkpOwo+ID4gICAgICAgICB9Cj4gPiAtICAg ICAgIGYyZnNfZm9saW9fcHV0KHhmb2xpbywgdHJ1ZSk7Cj4gPiArICAgICAgIGYyZnNfcHV0X2Nh Y2hlKHhlbnRyeSwgdHJ1ZSk7Cj4gPgo+ID4gICAgICAgICByZXR1cm4gMDsKPiA+ICB9Cj4gPgo+ ID4gLWludCBmMmZzX3JlY292ZXJfaW5vZGVfcGFnZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmks IHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnkpCj4gPiAraW50IGYyZnNfcmVjb3Zlcl9p bm9kZV9jYWNoZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnkpCj4gPiAgewo+ ID4gICAgICAgICBzdHJ1Y3QgZjJmc19pbm9kZSAqc3JjLCAqZHN0Owo+ID4gLSAgICAgICBuaWRf dCBpbm8gPSBpbm9fb2Zfbm9kZShzYmksIGNhY2hlX2ZvbGlvKGVudHJ5KSk7Cj4gPiArICAgICAg IG5pZF90IGlubyA9IGlub19vZl9ub2RlKHNiaSwgZW50cnkpOwo+ID4gICAgICAgICBzdHJ1Y3Qg bm9kZV9pbmZvIG9sZF9uaSwgbmV3X25pOwo+ID4gLSAgICAgICBzdHJ1Y3QgZm9saW8gKmlmb2xp bzsKPiA+ICsgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICppZW50cnk7Cj4gPiAgICAg ICAgIGludCBlcnI7Cj4gPgo+ID4gICAgICAgICBlcnIgPSBmMmZzX2dldF9ub2RlX2luZm8oc2Jp LCBpbm8sICZvbGRfbmksIGZhbHNlKTsKPiA+IEBAIC0yOTQ2LDggKzI4ODQsOCBAQCBpbnQgZjJm c19yZWNvdmVyX2lub2RlX3BhZ2Uoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBzdHJ1Y3QgZjJm c19jYWNoZWRfYmxvY2sgKgo+ID4gICAgICAgICBpZiAodW5saWtlbHkob2xkX25pLmJsa19hZGRy ICE9IE5VTExfQUREUikpCj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gPiAg cmV0cnk6Cj4gPiAtICAgICAgIGlmb2xpbyA9IGYyZnNfZ3JhYl9jYWNoZV9mb2xpbyhOT0RFX01B UFBJTkcoc2JpKSwgaW5vLCBmYWxzZSk7Cj4gPiAtICAgICAgIGlmIChJU19FUlIoaWZvbGlvKSkg ewo+ID4gKyAgICAgICBpZW50cnkgPSBmMmZzX2dyYWJfbm9kZV9jYWNoZShzYmksIGlubyk7Cj4g PiArICAgICAgIGlmIChJU19FUlIoaWVudHJ5KSkgewo+ID4gICAgICAgICAgICAgICAgIG1lbWFs bG9jX3JldHJ5X3dhaXQoR0ZQX05PRlMpOwo+ID4gICAgICAgICAgICAgICAgIGdvdG8gcmV0cnk7 Cj4gPiAgICAgICAgIH0KPiA+IEBAIC0yOTU1LDEzICsyODkzLDEyIEBAIGludCBmMmZzX3JlY292 ZXJfaW5vZGVfcGFnZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIHN0cnVjdCBmMmZzX2NhY2hl ZF9ibG9jayAqCj4gPiAgICAgICAgIC8qIFNob3VsZCBub3QgdXNlIHRoaXMgaW5vZGUgZnJvbSBm cmVlIG5pZCBsaXN0ICovCj4gPiAgICAgICAgIHJlbW92ZV9mcmVlX25pZChzYmksIGlubyk7Cj4g Pgo+ID4gLSAgICAgICBpZiAoIWZvbGlvX3Rlc3RfdXB0b2RhdGUoaWZvbGlvKSkKPiA+IC0gICAg ICAgICAgICAgICBmb2xpb19tYXJrX3VwdG9kYXRlKGlmb2xpbyk7Cj4gPiAtICAgICAgIGZpbGxf bm9kZV9mb290ZXIoc2JpLCBpZm9saW8sIGlubywgaW5vLCAwLCB0cnVlKTsKPiA+IC0gICAgICAg c2V0X2NvbGRfbm9kZShzYmksIGlmb2xpbywgZmFsc2UpOwo+ID4gKyAgICAgICBmMmZzX2NhY2hl X3NldF91cHRvZGF0ZShpZW50cnkpOwo+ID4gKyAgICAgICBmaWxsX25vZGVfZm9vdGVyKHNiaSwg aWVudHJ5LCBpbm8sIGlubywgMCwgdHJ1ZSk7Cj4gPiArICAgICAgIHNldF9jb2xkX25vZGUoc2Jp LCBpZW50cnksIGZhbHNlKTsKPiA+Cj4gPiAgICAgICAgIHNyYyA9ICZDQUNIRURfTk9ERShlbnRy eSktPmk7Cj4gPiAtICAgICAgIGRzdCA9IEYyRlNfSU5PREUoaWZvbGlvKTsKPiA+ICsgICAgICAg ZHN0ID0gRjJGU19JTk9ERShpZW50cnkpOwo+ID4KPiA+ICAgICAgICAgbWVtY3B5KGRzdCwgc3Jj LCBvZmZzZXRvZihzdHJ1Y3QgZjJmc19pbm9kZSwgaV9leHQpKTsKPiA+ICAgICAgICAgZHN0LT5p X3NpemUgPSAwOwo+ID4gQEAgLTI5OTcsOCArMjkzNCw4IEBAIGludCBmMmZzX3JlY292ZXJfaW5v ZGVfcGFnZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9j ayAqCj4gPiAgICAgICAgICAgICAgICAgV0FSTl9PTigxKTsKPiA+ICAgICAgICAgc2V0X25vZGVf YWRkcihzYmksICZuZXdfbmksIE5FV19BRERSLCBmYWxzZSk7Cj4gPiAgICAgICAgIGluY192YWxp ZF9pbm9kZV9jb3VudChzYmkpOwo+ID4gLSAgICAgICBmb2xpb19tYXJrX2RpcnR5KGlmb2xpbyk7 Cj4gPiAtICAgICAgIGYyZnNfZm9saW9fcHV0KGlmb2xpbywgdHJ1ZSk7Cj4gPiArICAgICAgIGYy ZnNfbWFya19jYWNoZV9kaXJ0eShpZW50cnkpOwo+ID4gKyAgICAgICBmMmZzX3B1dF9jYWNoZShp ZW50cnksIHRydWUpOwo+ID4gICAgICAgICByZXR1cm4gMDsKPiA+ICB9Cj4gPgo+ID4gQEAgLTMw MjcsNyArMjk2NCw5IEBAIGludCBmMmZzX3Jlc3RvcmVfbm9kZV9zdW1tYXJ5KHN0cnVjdCBmMmZz X3NiX2luZm8gKnNiaSwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChJU19FUlIoZW50 cnkpKQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihl bnRyeSk7Cj4gPgo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgc3VtX2VudHJ5LT5uaWQgPSBG MkZTX05PREVfRk9PVEVSKHNiaSwgY2FjaGVfZm9saW8oZW50cnkpKS0+bmlkOwo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IG5vZGVfZm9vdGVyICpmb290ZXIgPSAoc3RydWN0IG5v ZGVfZm9vdGVyICopKGNhY2hlX2FkZHJlc3MoZW50cnkpICsKPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgRjJGU19CTEtTSVpFKHNiaSkgLSBzaXplb2Yoc3RydWN0IG5vZGVfZm9v dGVyKSk7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBzdW1fZW50cnktPm5pZCA9IGZvb3Rl ci0+bmlkOwo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgc3VtX2VudHJ5LT52ZXJzaW9uID0g MDsKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIHN1bV9lbnRyeS0+b2ZzX2luX25vZGUgPSAw Owo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgc3VtX2VudHJ5Kys7Cj4gPiBkaWZmIC0tZ2l0 IGEvZnMvZjJmcy9ub2RlLmggYi9mcy9mMmZzL25vZGUuaAo+ID4gaW5kZXggZTM3ZmIwZDYzMTIw Li5jOGQ2NmNhNTRlOTQgMTAwNjQ0Cj4gPiAtLS0gYS9mcy9mMmZzL25vZGUuaAo+ID4gKysrIGIv ZnMvZjJmcy9ub2RlLmgKPiA+IEBAIC00NCw4ICs0NCw4IEBAIHN0YXRpYyBpbmxpbmUgbmlkX3Qg ZjJmc19zdGFydF9uaWQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBuaWRfdCBuaWQpCj4gPiAg LyogdmVjdG9yIHNpemUgZm9yIGdhbmcgbG9vay11cCBmcm9tIG5hdCBjYWNoZSB0aGF0IGNvbnNp c3RzIG9mIHJhZGl4IHRyZWUgKi8KPiA+ICAjZGVmaW5lIE5BVF9WRUNfU0laRSAgIDMyCj4gPgo+ ID4gLS8qIHJldHVybiB2YWx1ZSBmb3IgcmVhZF9ub2RlX3BhZ2UgKi8KPiA+IC0jZGVmaW5lIExP Q0tFRF9QQUdFICAgIDEKPiA+ICsvKiByZXR1cm4gdmFsdWUgZm9yIHJlYWRfbm9kZV9jYWNoZSAq Lwo+ID4gKyNkZWZpbmUgTE9DS0VEX0NBQ0hFICAgMQo+ID4KPiA+ICAvKiBjaGVjayBwaW5uZWQg ZmlsZSdzIGFsaWdubWVudCBzdGF0dXMgb2YgcGh5c2ljYWwgYmxvY2tzICovCj4gPiAgI2RlZmlu ZSBGSUxFX05PVF9BTElHTkVEICAgICAgIDEKPiA+IEBAIC0yNDksNDIgKzI0OSw0MiBAQCBzdGF0 aWMgaW5saW5lIHZvaWQgc2V0X3RvX25leHRfbmF0KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwK PiA+ICB9Cj4gPgo+ID4gIHN0YXRpYyBpbmxpbmUgbmlkX3QgaW5vX29mX25vZGUoc3RydWN0IGYy ZnNfc2JfaW5mbyAqc2JpLAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBzdHJ1Y3QgZm9saW8gKm5vZGVfZm9saW8pCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnkpCj4gPiAgewo+ID4g LSAgICAgICByZXR1cm4gbGUzMl90b19jcHUoRjJGU19OT0RFX0ZPT1RFUihzYmksIG5vZGVfZm9s aW8pLT5pbm8pOwo+ID4gKyAgICAgICByZXR1cm4gbGUzMl90b19jcHUoRjJGU19OT0RFX0ZPT1RF UihzYmksIGVudHJ5KS0+aW5vKTsKPiA+ICB9Cj4gPgo+ID4gIHN0YXRpYyBpbmxpbmUgbmlkX3Qg bmlkX29mX25vZGUoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZm9saW8gKm5vZGVfZm9saW8pCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9j ayAqZW50cnkpCj4gPiAgewo+ID4gLSAgICAgICByZXR1cm4gbGUzMl90b19jcHUoRjJGU19OT0RF X0ZPT1RFUihzYmksIG5vZGVfZm9saW8pLT5uaWQpOwo+ID4gKyAgICAgICByZXR1cm4gbGUzMl90 b19jcHUoRjJGU19OT0RFX0ZPT1RFUihzYmksIGVudHJ5KS0+bmlkKTsKPiA+ICB9Cj4gPgo+ID4g IHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IG9mc19vZl9ub2RlKHN0cnVjdCBmMmZzX3NiX2lu Zm8gKnNiaSwKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0 IGZvbGlvICpub2RlX2ZvbGlvKQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5KQo+ID4gIHsKPiA+IC0gICAgICAg dW5zaWduZWQgaW50IGZsYWcgPSBsZTMyX3RvX2NwdShGMkZTX05PREVfRk9PVEVSKHNiaSwgbm9k ZV9mb2xpbyktPmZsYWcpOwo+ID4gKyAgICAgICB1bnNpZ25lZCBpbnQgZmxhZyA9IGxlMzJfdG9f Y3B1KEYyRlNfTk9ERV9GT09URVIoc2JpLCBlbnRyeSktPmZsYWcpOwo+ID4gICAgICAgICByZXR1 cm4gZmxhZyA+PiBPRkZTRVRfQklUX1NISUZUOwo+ID4gIH0KPiA+Cj4gPiAgc3RhdGljIGlubGlu ZSBfX3U2NCBjcHZlcl9vZl9ub2RlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGZvbGlvICpub2RlX2ZvbGlv KQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZjJmc19j YWNoZWRfYmxvY2sgKmVudHJ5KQo+ID4gIHsKPiA+IC0gICAgICAgcmV0dXJuIGxlNjRfdG9fY3B1 KEYyRlNfTk9ERV9GT09URVIoc2JpLCBub2RlX2ZvbGlvKS0+Y3BfdmVyKTsKPiA+ICsgICAgICAg cmV0dXJuIGxlNjRfdG9fY3B1KEYyRlNfTk9ERV9GT09URVIoc2JpLCBlbnRyeSktPmNwX3Zlcik7 Cj4gPiAgfQo+ID4KPiA+ICBzdGF0aWMgaW5saW5lIGJsb2NrX3QgbmV4dF9ibGthZGRyX29mX25v ZGUoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBzdHJ1Y3QgZm9saW8gKm5vZGVfZm9saW8pCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnkp Cj4gPiAgewo+ID4gLSAgICAgICByZXR1cm4gbGUzMl90b19jcHUoRjJGU19OT0RFX0ZPT1RFUihz YmksIG5vZGVfZm9saW8pLT5uZXh0X2Jsa2FkZHIpOwo+ID4gKyAgICAgICByZXR1cm4gbGUzMl90 b19jcHUoRjJGU19OT0RFX0ZPT1RFUihzYmksIGVudHJ5KS0+bmV4dF9ibGthZGRyKTsKPiA+ICB9 Cj4gPgo+ID4gIHN0YXRpYyBpbmxpbmUgdm9pZCBmaWxsX25vZGVfZm9vdGVyKHN0cnVjdCBmMmZz X3NiX2luZm8gKnNiaSwKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IGZvbGlvICpmb2xpbywgbmlkX3QgbmlkLAo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5LCBuaWRfdCBuaWQsCj4g PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pZF90IGlubywgdW5zaWduZWQgaW50 IG9mcywgYm9vbCByZXNldCkKPiA+ICB7Cj4gPiAtICAgICAgIHN0cnVjdCBmMmZzX25vZGUgKnJu ID0gRjJGU19OT0RFKGZvbGlvKTsKPiA+IC0gICAgICAgc3RydWN0IG5vZGVfZm9vdGVyICpmb290 ZXIgPSBGMkZTX05PREVfRk9PVEVSKHNiaSwgZm9saW8pOwo+ID4gKyAgICAgICBzdHJ1Y3QgZjJm c19ub2RlICpybiA9IENBQ0hFRF9OT0RFKGVudHJ5KTsKPiA+ICsgICAgICAgc3RydWN0IG5vZGVf Zm9vdGVyICpmb290ZXIgPSBGMkZTX05PREVfRk9PVEVSKHNiaSwgZW50cnkpOwo+ID4gICAgICAg ICB1bnNpZ25lZCBpbnQgb2xkX2ZsYWcgPSAwOwo+ID4KPiA+ICAgICAgICAgaWYgKHJlc2V0KQo+ ID4gQEAgLTI5Miw2ICsyOTIsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbF9ub2RlX2Zvb3Rl cihzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPiAgICAgICAgIGVsc2UKPiA+ICAgICAgICAg ICAgICAgICBvbGRfZmxhZyA9IGxlMzJfdG9fY3B1KGZvb3Rlci0+ZmxhZyk7Cj4gPgo+ID4gKyAg ICAgICBtZW1zZXQoZm9vdGVyLCAwLCBzaXplb2YoKmZvb3RlcikpOwo+ID4gICAgICAgICBmb290 ZXItPm5pZCA9IGNwdV90b19sZTMyKG5pZCk7Cj4gPiAgICAgICAgIGZvb3Rlci0+aW5vID0gY3B1 X3RvX2xlMzIoaW5vKTsKPiA+Cj4gPiBAQCAtMzAxLDE3ICszMDIsMTggQEAgc3RhdGljIGlubGlu ZSB2b2lkIGZpbGxfbm9kZV9mb290ZXIoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4gIH0K PiA+Cj4gPiAgc3RhdGljIGlubGluZSB2b2lkIGNvcHlfbm9kZV9mb290ZXIoc3RydWN0IGYyZnNf c2JfaW5mbyAqc2JpLAo+ID4gLSAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBmb2xpbyAqZHN0 LCBjb25zdCBzdHJ1Y3QgZm9saW8gKnNyYykKPiA+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgZjJm c19jYWNoZWRfYmxvY2sgKmRzdCwKPiA+ICsgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZjJm c19jYWNoZWRfYmxvY2sgKnNyYykKPiA+ICB7Cj4gPiAgICAgICAgIG1lbWNweShGMkZTX05PREVf Rk9PVEVSKHNiaSwgZHN0KSwgRjJGU19OT0RFX0ZPT1RFUihzYmksIHNyYyksCj4gPiAgICAgICAg ICAgICAgICBzaXplb2Yoc3RydWN0IG5vZGVfZm9vdGVyKSk7Cj4gPiAgfQo+ID4KPiA+ICBzdGF0 aWMgaW5saW5lIHZvaWQgZmlsbF9ub2RlX2Zvb3Rlcl9ibGthZGRyKHN0cnVjdCBmMmZzX3NiX2lu Zm8gKnNiaSwKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGZvbGlv ICpmb2xpbywgYmxvY2tfdCBibGthZGRyKQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5LCBibG9ja190IGJsa2FkZHIpCj4g PiAgewo+ID4gICAgICAgICBzdHJ1Y3QgZjJmc19jaGVja3BvaW50ICpja3B0ID0gRjJGU19DS1BU KHNiaSk7Cj4gPiAtICAgICAgIHN0cnVjdCBub2RlX2Zvb3RlciAqZm9vdGVyID0gRjJGU19OT0RF X0ZPT1RFUihzYmksIGZvbGlvKTsKPiA+ICsgICAgICAgc3RydWN0IG5vZGVfZm9vdGVyICpmb290 ZXIgPSBGMkZTX05PREVfRk9PVEVSKHNiaSwgZW50cnkpOwo+ID4gICAgICAgICBfX3U2NCBjcF92 ZXIgPSBjdXJfY3BfdmVyc2lvbihja3B0KTsKPiA+Cj4gPiAgICAgICAgIGlmIChfX2lzX3NldF9j a3B0X2ZsYWdzKGNrcHQsIENQX0NSQ19SRUNPVkVSWV9GTEFHKSkKPiA+IEBAIC0zMjEsMTkgKzMy MywyMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbF9ub2RlX2Zvb3Rlcl9ibGthZGRyKHN0cnVj dCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+ICAgICAgICAgZm9vdGVyLT5uZXh0X2Jsa2FkZHIgPSBj cHVfdG9fbGUzMihibGthZGRyKTsKPiA+ICB9Cj4gPgo+ID4gLXN0YXRpYyBpbmxpbmUgYm9vbCBp c19yZWNvdmVyYWJsZV9kbm9kZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIGNvbnN0IHN0cnVj dCBmb2xpbyAqZm9saW8pCj4gPiArc3RhdGljIGlubGluZSBib29sIGlzX3JlY292ZXJhYmxlX2Ru b2RlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3Qgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyeSkKPiA+ICB7Cj4g PiAgICAgICAgIHN0cnVjdCBmMmZzX2NoZWNrcG9pbnQgKmNrcHQgPSBGMkZTX0NLUFQoc2JpKTsK PiA+ICAgICAgICAgX191NjQgY3BfdmVyID0gY3VyX2NwX3ZlcnNpb24oY2twdCk7Cj4gPgo+ID4g ICAgICAgICAvKiBEb24ndCBjYXJlIGNyYyBwYXJ0LCBpZiBmc2NrLmYyZnMgc2V0cyBpdC4gKi8K PiA+ICAgICAgICAgaWYgKF9faXNfc2V0X2NrcHRfZmxhZ3MoY2twdCwgQ1BfTk9DUkNfUkVDT1ZF UllfRkxBRykpCj4gPiAtICAgICAgICAgICAgICAgcmV0dXJuIChjcF92ZXIgPDwgMzIpID09IChj cHZlcl9vZl9ub2RlKHNiaSwgZm9saW8pIDw8IDMyKTsKPiA+ICsgICAgICAgICAgICAgICByZXR1 cm4gKGNwX3ZlciA8PCAzMikgPT0gKGNwdmVyX29mX25vZGUoc2JpLCBlbnRyeSkgPDwgMzIpOwo+ ID4KPiA+ICAgICAgICAgaWYgKF9faXNfc2V0X2NrcHRfZmxhZ3MoY2twdCwgQ1BfQ1JDX1JFQ09W RVJZX0ZMQUcpKQo+ID4gICAgICAgICAgICAgICAgIGNwX3ZlciB8PSAoY3VyX2NwX2NyYyhja3B0 KSA8PCAzMik7Cj4gPgo+ID4gLSAgICAgICByZXR1cm4gY3BfdmVyID09IGNwdmVyX29mX25vZGUo c2JpLCBmb2xpbyk7Cj4gPiArICAgICAgIHJldHVybiBjcF92ZXIgPT0gY3B2ZXJfb2Zfbm9kZShz YmksIGVudHJ5KTsKPiA+ICB9Cj4gPgo+ID4gIC8qCj4gPiBAQCAtMzU4LDkgKzM2MSw5IEBAIHN0 YXRpYyBpbmxpbmUgYm9vbCBpc19yZWNvdmVyYWJsZV9kbm9kZShzdHJ1Y3QgZjJmc19zYl9pbmZv ICpzYmksIGNvbnN0IHN0cnVjdCBmCj4gPiAgICogICAgICAgICAgICAgICAgICAgICAgIGAtIGRp cmVjdCBub2RlCj4gPiAgICovCj4gPiAgc3RhdGljIGlubGluZSBib29sIElTX0ROT0RFKHN0cnVj dCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBzdHJ1Y3QgZm9saW8gKm5vZGVfZm9saW8pCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnkp Cj4gPiAgewo+ID4gLSAgICAgICB1bnNpZ25lZCBpbnQgb2ZzID0gb2ZzX29mX25vZGUoc2JpLCBu b2RlX2ZvbGlvKTsKPiA+ICsgICAgICAgdW5zaWduZWQgaW50IG9mcyA9IG9mc19vZl9ub2RlKHNi aSwgZW50cnkpOwo+ID4KPiA+ICAgICAgICAgaWYgKGYyZnNfaGFzX3hhdHRyX2Jsb2NrKG9mcykp Cj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cj4gPiBAQCAtMzc2LDI3ICszNzksMjcg QEAgc3RhdGljIGlubGluZSBib29sIElTX0ROT0RFKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwK PiA+ICAgICAgICAgcmV0dXJuIHRydWU7Cj4gPiAgfQo+ID4KPiA+IC1zdGF0aWMgaW5saW5lIGlu dCBzZXRfbmlkKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IGZvbGlvICpmb2xpbywgaW50IG9mZiwgbmlkX3QgbmlkLCBi b29sIGkpCj4gPiArc3RhdGljIGlubGluZSBib29sIHNldF9uaWQoc3RydWN0IGYyZnNfc2JfaW5m byAqc2JpLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Js b2NrICplbnRyeSwgaW50IG9mZiwgbmlkX3QgbmlkLCBib29sIGkpCj4gPiAgewo+ID4gLSAgICAg ICBzdHJ1Y3QgZjJmc19ub2RlICpybiA9IEYyRlNfTk9ERShmb2xpbyk7Cj4gPiAtICAgICAgIF9f bGUzMiAqaW5vZGVfbmlkcyA9IEYyRlNfSU5PREVfTklEUyhzYmksIGZvbGlvKTsKPiA+ICsgICAg ICAgc3RydWN0IGYyZnNfbm9kZSAqcm4gPSBDQUNIRURfTk9ERShlbnRyeSk7Cj4gPiArICAgICAg IF9fbGUzMiAqaW5vZGVfbmlkcyA9IEYyRlNfSU5PREVfTklEUyhzYmksIGVudHJ5KTsKPiA+ICsg ICAgICAgX19sZTMyICphZGRyID0gaSA/ICZpbm9kZV9uaWRzW29mZiAtIE5PREVfRElSMV9CTE9D SyhzYmkpXSA6ICZybi0+aW4ubmlkW29mZl07Cj4gPgo+ID4gLSAgICAgICBmMmZzX2ZvbGlvX3dh aXRfd3JpdGViYWNrKGZvbGlvLCBOT0RFLCB0cnVlLCB0cnVlKTsKPiA+ICsgICAgICAgZjJmc19j YWNoZV93YWl0X3dyaXRlYmFjayhlbnRyeSk7Cj4gPiArICAgICAgIGlmICgqYWRkciA9PSBjcHVf dG9fbGUzMihuaWQpKQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKPiA+Cj4gPiAt ICAgICAgIGlmIChpKQo+ID4gLSAgICAgICAgICAgICAgIGlub2RlX25pZHNbb2ZmIC0gTk9ERV9E SVIxX0JMT0NLKHNiaSldID0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGNwdV90b19sZTMy KG5pZCk7Cj4gPiAtICAgICAgIGVsc2UKPiA+IC0gICAgICAgICAgICAgICBybi0+aW4ubmlkW29m Zl0gPSBjcHVfdG9fbGUzMihuaWQpOwo+ID4gLSAgICAgICByZXR1cm4gZm9saW9fbWFya19kaXJ0 eShmb2xpbyk7Cj4gPiArICAgICAgICphZGRyID0gY3B1X3RvX2xlMzIobmlkKTsKPiA+ICsgICAg ICAgZjJmc19tYXJrX2NhY2hlX2RpcnR5KGVudHJ5KTsKPiA+ICsgICAgICAgcmV0dXJuIHRydWU7 Cj4gPiAgfQo+ID4KPiA+ICBzdGF0aWMgaW5saW5lIG5pZF90IGdldF9uaWQoc3RydWN0IGYyZnNf c2JfaW5mbyAqc2JpLAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz dHJ1Y3QgZm9saW8gKmZvbGlvLCBpbnQgb2ZmLCBib29sIGkpCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5LCBpbnQgb2ZmLCBi b29sIGkpCj4gPiAgewo+ID4gLSAgICAgICBzdHJ1Y3QgZjJmc19ub2RlICpybiA9IEYyRlNfTk9E RShmb2xpbyk7Cj4gPiAtICAgICAgIGNvbnN0IF9fbGUzMiAqaW5vZGVfbmlkcyA9IEYyRlNfSU5P REVfTklEUyhzYmksIGZvbGlvKTsKPiA+ICsgICAgICAgc3RydWN0IGYyZnNfbm9kZSAqcm4gPSBD QUNIRURfTk9ERShlbnRyeSk7Cj4gPiArICAgICAgIGNvbnN0IF9fbGUzMiAqaW5vZGVfbmlkcyA9 IEYyRlNfSU5PREVfTklEUyhzYmksIGVudHJ5KTsKPiA+ICAgICAgICAgaW50IG5pZF9pbmRleCA9 IG9mZiAtIE5PREVfRElSMV9CTE9DSyhzYmkpOwo+ID4KPiA+ICAgICAgICAgaWYgKGkpCj4gPiBA QCAtNDEyLDIwICs0MTUsMjEgQEAgc3RhdGljIGlubGluZSBuaWRfdCBnZXRfbmlkKHN0cnVjdCBm MmZzX3NiX2luZm8gKnNiaSwKPiA+ICAgKi8KPiA+Cj4gPiAgc3RhdGljIGlubGluZSBpbnQgaXNf bm9kZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IHN0cnVjdCBmb2xpbyAqZm9saW8sIGludCB0eXBlKQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyeSwg aW50IHR5cGUpCj4gPiAgewo+ID4gLSAgICAgICByZXR1cm4gbGUzMl90b19jcHUoRjJGU19OT0RF X0ZPT1RFUihzYmksIGZvbGlvKS0+ZmxhZykgJiBCSVQodHlwZSk7Cj4gPiArICAgICAgIHJldHVy biBsZTMyX3RvX2NwdShGMkZTX05PREVfRk9PVEVSKHNiaSwgZW50cnkpLT5mbGFnKSAmIEJJVCh0 eXBlKTsKPiA+ICB9Cj4gPgo+ID4gLSNkZWZpbmUgaXNfY29sZF9ub2RlKHNiaSwgZm9saW8pICAg ICAgIGlzX25vZGUoc2JpLCBmb2xpbywgQ09MRF9CSVRfU0hJRlQpCj4gPiAtI2RlZmluZSBpc19m c3luY19kbm9kZShzYmksIGZvbGlvKSAgICAgaXNfbm9kZShzYmksIGZvbGlvLCBGU1lOQ19CSVRf U0hJRlQpCj4gPiAtI2RlZmluZSBpc19kZW50X2Rub2RlKHNiaSwgZm9saW8pICAgICAgaXNfbm9k ZShzYmksIGZvbGlvLCBERU5UX0JJVF9TSElGVCkKPiA+ICsjZGVmaW5lIGlzX2NvbGRfbm9kZShz YmksIGVudHJ5KSAgICAgICBpc19ub2RlKHNiaSwgZW50cnksIENPTERfQklUX1NISUZUKQo+ID4g KyNkZWZpbmUgaXNfZnN5bmNfZG5vZGUoc2JpLCBlbnRyeSkgICAgIGlzX25vZGUoc2JpLCBlbnRy eSwgRlNZTkNfQklUX1NISUZUKQo+ID4gKyNkZWZpbmUgaXNfZGVudF9kbm9kZShzYmksIGVudHJ5 KSAgICAgIGlzX25vZGUoc2JpLCBlbnRyeSwgREVOVF9CSVRfU0hJRlQpCj4gPgo+ID4gIHN0YXRp YyBpbmxpbmUgdm9pZCBfX3NldF9tYXJrKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGZvbGlvICpmb2xpbywg Ym9vbCBtYXJrLCBpbnQgdHlwZSkKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBm MmZzX2NhY2hlZF9ibG9jayAqZW50cnksIGJvb2wgbWFyaywgaW50IHR5cGUpCj4gPiAgewo+ID4g LSAgICAgICBzdHJ1Y3Qgbm9kZV9mb290ZXIgKmZvb3RlciA9IEYyRlNfTk9ERV9GT09URVIoc2Jp LCBmb2xpbyk7Cj4gPiArICAgICAgIHN0cnVjdCBub2RlX2Zvb3RlciAqZm9vdGVyID0gRjJGU19O T0RFX0ZPT1RFUihzYmksIGVudHJ5KTsKPiA+ICAgICAgICAgdW5zaWduZWQgaW50IGZsYWcgPSBs ZTMyX3RvX2NwdShmb290ZXItPmZsYWcpOwo+ID4gKwo+ID4gICAgICAgICBpZiAobWFyaykKPiA+ ICAgICAgICAgICAgICAgICBmbGFnIHw9IEJJVCh0eXBlKTsKPiA+ICAgICAgICAgZWxzZQo+ID4g QEAgLTQzNCwxOSArNDM4LDE5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX3NldF9tYXJrKHN0cnVj dCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+ICB9Cj4gPgo+ID4gIHN0YXRpYyBpbmxpbmUgdm9pZCBz ZXRfY29sZF9ub2RlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGZvbGlvICpmb2xpbywgYm9vbCBpc19kaXIp Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVu dHJ5LCBib29sIGlzX2RpcikKPiA+ICB7Cj4gPiAtICAgICAgIF9fc2V0X21hcmsoc2JpLCBmb2xp bywgIWlzX2RpciwgQ09MRF9CSVRfU0hJRlQpOwo+ID4gKyAgICAgICBfX3NldF9tYXJrKHNiaSwg ZW50cnksICFpc19kaXIsIENPTERfQklUX1NISUZUKTsKPiA+ICB9Cj4gPgo+ID4gIHN0YXRpYyBp bmxpbmUgdm9pZCBzZXRfbWFyayhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBmb2xpbyAqZm9saW8sIGJvb2wgbWFyaywg aW50IHR5cGUpCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZjJmc19jYWNoZWRf YmxvY2sgKmVudHJ5LCBib29sIG1hcmssIGludCB0eXBlKQo+ID4gIHsKPiA+IC0gICAgICAgX19z ZXRfbWFyayhzYmksIGZvbGlvLCBtYXJrLCB0eXBlKTsKPiA+IC0KPiA+ICsgICAgICAgX19zZXRf bWFyayhzYmksIGVudHJ5LCBtYXJrLCB0eXBlKTsKPiA+ICAjaWZkZWYgQ09ORklHX0YyRlNfQ0hF Q0tfRlMKPiA+IC0gICAgICAgZjJmc19pbm9kZV9jaGtzdW1fc2V0KHNiaSwgZm9saW8pOwo+ID4g KyAgICAgICBmMmZzX2lub2RlX2Noa3N1bV9zZXQoc2JpLCBlbnRyeSk7Cj4gPiAgI2VuZGlmCj4g PiAgfQo+ID4gLSNkZWZpbmUgc2V0X2RlbnRyeV9tYXJrKHNiaSwgZm9saW8sIG1hcmspICAgICAg c2V0X21hcmsoc2JpLCBmb2xpbywgbWFyaywgREVOVF9CSVRfU0hJRlQpCj4gPiAtI2RlZmluZSBz ZXRfZnN5bmNfbWFyayhzYmksIGZvbGlvLCBtYXJrKSAgICAgICBzZXRfbWFyayhzYmksIGZvbGlv LCBtYXJrLCBGU1lOQ19CSVRfU0hJRlQpCj4gPiArCj4gPiArI2RlZmluZSBzZXRfZGVudHJ5X21h cmsoc2JpLCBlbnRyeSwgbWFyaykgICAgICBzZXRfbWFyayhzYmksIGVudHJ5LCBtYXJrLCBERU5U X0JJVF9TSElGVCkKPiA+ICsjZGVmaW5lIHNldF9mc3luY19tYXJrKHNiaSwgZW50cnksIG1hcmsp ICAgICAgIHNldF9tYXJrKHNiaSwgZW50cnksIG1hcmssIEZTWU5DX0JJVF9TSElGVCkKPiA+IGRp ZmYgLS1naXQgYS9mcy9mMmZzL3JlY292ZXJ5LmMgYi9mcy9mMmZzL3JlY292ZXJ5LmMKPiA+IGlu ZGV4IDkzNTY0ZTUzMmYyZi4uNTRiNTI0NjYwOWRlIDEwMDY0NAo+ID4gLS0tIGEvZnMvZjJmcy9y ZWNvdmVyeS5jCj4gPiArKysgYi9mcy9mMmZzL3JlY292ZXJ5LmMKPiA+IEBAIC0xOTAsNyArMTkw LDcgQEAgc3RhdGljIGludCByZWNvdmVyX2RlbnRyeShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1 Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmVudHJ5LAo+ID4gICAgICAgICBzdHJ1Y3QgZjJmc19kaXJf ZW50cnkgKmRlOwo+ID4gICAgICAgICBzdHJ1Y3QgZjJmc19maWxlbmFtZSBmbmFtZTsKPiA+ICAg ICAgICAgc3RydWN0IHFzdHIgdXNyX2ZuYW1lOwo+ID4gLSAgICAgICBzdHJ1Y3QgZm9saW8gKmZv bGlvOwo+ID4gKyAgICAgICB2b2lkICpkZW50cnlfYmxrID0gTlVMTDsKPiA+ICAgICAgICAgc3Ry dWN0IGlub2RlICpkaXIsICplaW5vZGU7Cj4gPiAgICAgICAgIHN0cnVjdCBmc3luY19pbm9kZV9l bnRyeSAqZnN5bmNfZW50cnk7Cj4gPiAgICAgICAgIGludCBlcnIgPSAwOwo+ID4gQEAgLTIxMyw3 ICsyMTMsOCBAQCBzdGF0aWMgaW50IHJlY292ZXJfZGVudHJ5KHN0cnVjdCBpbm9kZSAqaW5vZGUs IHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnksCj4gPiAgICAgICAgIGlmIChlcnIpCj4g PiAgICAgICAgICAgICAgICAgZ290byBvdXQ7Cj4gPiAgcmV0cnk6Cj4gPiAtICAgICAgIGRlID0g X19mMmZzX2ZpbmRfZW50cnkoZGlyLCAmZm5hbWUsICZmb2xpbyk7Cj4gPiArICAgICAgIGRlbnRy eV9ibGsgPSBOVUxMOwo+ID4gKyAgICAgICBkZSA9IF9fZjJmc19maW5kX2VudHJ5KGRpciwgJmZu YW1lLCAmZGVudHJ5X2Jsayk7Cj4gPiAgICAgICAgIGlmIChkZSAmJiBpbm9kZS0+aV9pbm8gPT0g bGUzMl90b19jcHUoZGUtPmlubykpCj4gPiAgICAgICAgICAgICAgICAgZ290byBvdXRfcHV0Owo+ ID4KPiA+IEBAIC0yMzgsMTEgKzIzOSwxMSBAQCBzdGF0aWMgaW50IHJlY292ZXJfZGVudHJ5KHN0 cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50cnksCj4gPiAg ICAgICAgICAgICAgICAgICAgICAgICBpcHV0KGVpbm9kZSk7Cj4gPiAgICAgICAgICAgICAgICAg ICAgICAgICBnb3RvIG91dF9wdXQ7Cj4gPiAgICAgICAgICAgICAgICAgfQo+ID4gLSAgICAgICAg ICAgICAgIGYyZnNfZGVsZXRlX2VudHJ5KGRlLCBmb2xpbywgZGlyLCBlaW5vZGUpOwo+ID4gKyAg ICAgICAgICAgICAgIGYyZnNfZGVsZXRlX2VudHJ5KGRlLCBkZW50cnlfYmxrLCBkaXIsIGVpbm9k ZSk7Cj4gPiAgICAgICAgICAgICAgICAgaXB1dChlaW5vZGUpOwo+ID4gICAgICAgICAgICAgICAg IGdvdG8gcmV0cnk7Cj4gPiAtICAgICAgIH0gZWxzZSBpZiAoSVNfRVJSKGZvbGlvKSkgewo+ID4g LSAgICAgICAgICAgICAgIGVyciA9IFBUUl9FUlIoZm9saW8pOwo+ID4gKyAgICAgICB9IGVsc2Ug aWYgKElTX0VSUihkZW50cnlfYmxrKSkgewo+ID4gKyAgICAgICAgICAgICAgIGVyciA9IFBUUl9F UlIoZGVudHJ5X2Jsayk7Cj4gPiAgICAgICAgIH0gZWxzZSB7Cj4gPiAgICAgICAgICAgICAgICAg ZXJyID0gZjJmc19hZGRfZGVudHJ5KGRpciwgJmZuYW1lLCBpbm9kZSwKPiA+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbm9kZS0+aV9pbm8sIGlub2RlLT5pX21vZGUp Owo+ID4gQEAgLTI1MiwxMSArMjUzLDExIEBAIHN0YXRpYyBpbnQgcmVjb3Zlcl9kZW50cnkoc3Ry dWN0IGlub2RlICppbm9kZSwgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICplbnRyeSwKPiA+ICAg ICAgICAgZ290byBvdXQ7Cj4gPgo+ID4gIG91dF9wdXQ6Cj4gPiAtICAgICAgIGYyZnNfZm9saW9f cHV0KGZvbGlvLCBmYWxzZSk7Cj4gPiArICAgICAgIGYyZnNfcHV0X2RlbnRyeV9ibG9jayhkZW50 cnlfYmxrLCBmYWxzZSk7Cj4gPiAgb3V0Ogo+ID4gICAgICAgICBuYW1lID0gcmVjb3Zlcl9wcmlu dGFibGVfbmFtZShpbm9kZSwgcmF3X2lub2RlLCAmbmFtZV9sZW4pOwo+ID4gICAgICAgICBmMmZz X25vdGljZShGMkZTX0lfU0IoaW5vZGUpLCAiJXM6IGlubyA9ICV4LCBuYW1lID0gJS4qcywgZGly ID0gJWxsdSwgZXJyID0gJWQiLAo+ID4gLSAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgaW5v X29mX25vZGUoRjJGU19JX1NCKGlub2RlKSwgY2FjaGVfZm9saW8oZW50cnkpKSwgbmFtZV9sZW4s IG5hbWUsCj4gPiArICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCBpbm9fb2Zfbm9kZShGMkZT X0lfU0IoaW5vZGUpLCBlbnRyeSksIG5hbWVfbGVuLCBuYW1lLAo+ID4gICAgICAgICAgICAgICAg ICAgICBJU19FUlIoZGlyKSA/IDAgOiBkaXItPmlfaW5vLCBlcnIpOwo+ID4gICAgICAgICByZXR1 cm4gZXJyOwo+ID4gIH0KPiA+IEBAIC0zNTcsNyArMzU4LDcgQEAgc3RhdGljIGludCByZWNvdmVy X2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqZW50 cnkpCj4gPiAgICAgICAgIG5hbWUgPSByZWNvdmVyX3ByaW50YWJsZV9uYW1lKGlub2RlLCByYXcs ICZuYW1lX2xlbik7Cj4gPgo+ID4gICAgICAgICBmMmZzX25vdGljZShGMkZTX0lfU0IoaW5vZGUp LCAiJXM6IGlubyA9ICV4LCBuYW1lID0gJS4qcywgaW5saW5lID0gJXgiLAo+ID4gLSAgICAgICAg ICAgICAgICAgICBfX2Z1bmNfXywgaW5vX29mX25vZGUoRjJGU19JX1NCKGlub2RlKSwgY2FjaGVf Zm9saW8oZW50cnkpKSwgbmFtZV9sZW4sIG5hbWUsCj4gPiArICAgICAgICAgICAgICAgICAgIF9f ZnVuY19fLCBpbm9fb2Zfbm9kZShGMkZTX0lfU0IoaW5vZGUpLCBlbnRyeSksIG5hbWVfbGVuLCBu YW1lLAo+ID4gICAgICAgICAgICAgICAgICAgICByYXctPmlfaW5saW5lKTsKPiA+ICAgICAgICAg cmV0dXJuIDA7Cj4gPiAgfQo+ID4gQEAgLTM5NywxNiArMzk4LDE2IEBAIHN0YXRpYyBpbnQgc2Fu aXR5X2NoZWNrX25vZGVfY2hhaW4oc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBibG9ja190IGJs a2FkZHIsCj4gPiAgICAgICAgICAgICAgICAgaWYgKElTX0VSUihlbnRyeSkpCj4gPiAgICAgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihlbnRyeSk7Cj4gPgo+ID4gLSAgICAgICAg ICAgICAgIGlmICghaXNfcmVjb3ZlcmFibGVfZG5vZGUoc2JpLCBjYWNoZV9mb2xpbyhlbnRyeSkp KSB7Cj4gPiArICAgICAgICAgICAgICAgaWYgKCFpc19yZWNvdmVyYWJsZV9kbm9kZShzYmksIGVu dHJ5KSkgewo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgZjJmc19wdXRfY2FjaGUoZW50cnks IHRydWUpOwo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgKmlzX2RldGVjdGluZyA9IGZhbHNl Owo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4gPiAgICAgICAgICAgICAg ICAgfQo+ID4KPiA+ICAgICAgICAgICAgICAgICByYV9ibG9ja3MgPSBhZGp1c3RfcG9yX3JhX2Js b2NrcyhzYmksIHJhX2Jsb2NrcywgKmJsa2FkZHJfZmFzdCwKPiA+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBuZXh0X2Jsa2FkZHJfb2Zfbm9kZShzYmksIGNhY2hlX2Zv bGlvKGVudHJ5KSkpOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG5leHRfYmxrYWRkcl9vZl9ub2RlKHNiaSwgZW50cnkpKTsKPiA+Cj4gPiAtICAgICAgICAgICAg ICAgKmJsa2FkZHJfZmFzdCA9IG5leHRfYmxrYWRkcl9vZl9ub2RlKHNiaSwgY2FjaGVfZm9saW8o ZW50cnkpKTsKPiA+ICsgICAgICAgICAgICAgICAqYmxrYWRkcl9mYXN0ID0gbmV4dF9ibGthZGRy X29mX25vZGUoc2JpLCBlbnRyeSk7Cj4gPiAgICAgICAgICAgICAgICAgZjJmc19wdXRfY2FjaGUo ZW50cnksIHRydWUpOwo+ID4KPiA+ICAgICAgICAgICAgICAgICBmMmZzX3JhX21ldGFfY2FjaGVz X2NvbmQoc2JpLCAqYmxrYWRkcl9mYXN0LCByYV9ibG9ja3MpOwo+ID4gQEAgLTQ0NiwyMiArNDQ3 LDIyIEBAIHN0YXRpYyBpbnQgZmluZF9mc3luY19kbm9kZXMoc3RydWN0IGYyZnNfc2JfaW5mbyAq c2JpLCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAg YnJlYWs7Cj4gPiAgICAgICAgICAgICAgICAgfQo+ID4KPiA+IC0gICAgICAgICAgICAgICBpZiAo IWlzX3JlY292ZXJhYmxlX2Rub2RlKHNiaSwgY2FjaGVfZm9saW8oZW50cnkpKSkgewo+ID4gKyAg ICAgICAgICAgICAgIGlmICghaXNfcmVjb3ZlcmFibGVfZG5vZGUoc2JpLCBlbnRyeSkpIHsKPiA+ ICAgICAgICAgICAgICAgICAgICAgICAgIGYyZnNfcHV0X2NhY2hlKGVudHJ5LCB0cnVlKTsKPiA+ ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ID4gICAgICAgICAgICAgICAgIH0KPiA+ Cj4gPiAtICAgICAgICAgICAgICAgaWYgKCFpc19mc3luY19kbm9kZShzYmksIGNhY2hlX2ZvbGlv KGVudHJ5KSkpCj4gPiArICAgICAgICAgICAgICAgaWYgKCFpc19mc3luY19kbm9kZShzYmksIGVu dHJ5KSkKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gbmV4dDsKPiA+Cj4gPiAtICAg ICAgICAgICAgICAgZnN5bmNfZW50cnkgPSBnZXRfZnN5bmNfaW5vZGUoaGVhZCwgaW5vX29mX25v ZGUoc2JpLCBjYWNoZV9mb2xpbyhlbnRyeSkpKTsKPiA+ICsgICAgICAgICAgICAgICBmc3luY19l bnRyeSA9IGdldF9mc3luY19pbm9kZShoZWFkLCBpbm9fb2Zfbm9kZShzYmksIGVudHJ5KSk7Cj4g PiAgICAgICAgICAgICAgICAgaWYgKCFmc3luY19lbnRyeSkgewo+ID4gICAgICAgICAgICAgICAg ICAgICAgICAgYm9vbCBxdW90YV9pbm9kZSA9IGZhbHNlOwo+ID4KPiA+ICAgICAgICAgICAgICAg ICAgICAgICAgIGlmICghY2hlY2tfb25seSAmJgo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIElTX0lOT0RFKHNiaSwgY2FjaGVfZm9saW8oZW50cnkpKSAmJgo+ID4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2RlbnRfZG5vZGUoc2Jp LCBjYWNoZV9mb2xpbyhlbnRyeSkpKSB7Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGVyciA9IGYyZnNfcmVjb3Zlcl9pbm9kZV9wYWdlKHNiaSwgZW50cnkpOwo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElTX0lOT0RFKHNiaSwgZW50cnkpICYm Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfZGVudF9kbm9k ZShzYmksIGVudHJ5KSkgewo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIg PSBmMmZzX3JlY292ZXJfaW5vZGVfY2FjaGUoc2JpLCBlbnRyeSk7Cj4gPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHsKPiA+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmMmZzX3B1dF9jYWNoZShlbnRyeSwgdHJ1ZSk7Cj4gPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gPiBAQCAtNDY5LDcgKzQ3 MCw3IEBAIHN0YXRpYyBpbnQgZmluZF9mc3luY19kbm9kZXMoc3RydWN0IGYyZnNfc2JfaW5mbyAq c2JpLCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBxdW90YV9pbm9kZSA9IHRydWU7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICB9 Cj4gPgo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgZnN5bmNfZW50cnkgPSBhZGRfZnN5bmNf aW5vZGUoc2JpLCBoZWFkLCBpbm9fb2Zfbm9kZShzYmksIGNhY2hlX2ZvbGlvKGVudHJ5KSksCj4g PiArICAgICAgICAgICAgICAgICAgICAgICBmc3luY19lbnRyeSA9IGFkZF9mc3luY19pbm9kZShz YmksIGhlYWQsIGlub19vZl9ub2RlKHNiaSwgZW50cnkpLAo+ID4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1b3RhX2lub2Rl KTsKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChJU19FUlIoZnN5bmNfZW50cnkpKSB7 Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IFBUUl9FUlIoZnN5bmNf ZW50cnkpOwo+ID4gQEAgLTQ4OCwxMSArNDg5LDExIEBAIHN0YXRpYyBpbnQgZmluZF9mc3luY19k bm9kZXMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLAo+ ID4gICAgICAgICAgICAgICAgIH0KPiA+ICAgICAgICAgICAgICAgICBmc3luY19lbnRyeS0+Ymxr YWRkciA9IGJsa2FkZHI7Cj4gPgo+ID4gLSAgICAgICAgICAgICAgIGlmIChJU19JTk9ERShzYmks IGNhY2hlX2ZvbGlvKGVudHJ5KSkgJiYgaXNfZGVudF9kbm9kZShzYmksIGNhY2hlX2ZvbGlvKGVu dHJ5KSkpCj4gPiArICAgICAgICAgICAgICAgaWYgKElTX0lOT0RFKHNiaSwgZW50cnkpICYmIGlz X2RlbnRfZG5vZGUoc2JpLCBlbnRyeSkpCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBmc3lu Y19lbnRyeS0+bGFzdF9kZW50cnkgPSBibGthZGRyOwo+ID4gIG5leHQ6Cj4gPiAgICAgICAgICAg ICAgICAgLyogY2hlY2sgbmV4dCBzZWdtZW50ICovCj4gPiAtICAgICAgICAgICAgICAgYmxrYWRk ciA9IG5leHRfYmxrYWRkcl9vZl9ub2RlKHNiaSwgY2FjaGVfZm9saW8oZW50cnkpKTsKPiA+ICsg ICAgICAgICAgICAgICBibGthZGRyID0gbmV4dF9ibGthZGRyX29mX25vZGUoc2JpLCBlbnRyeSk7 Cj4gPiAgICAgICAgICAgICAgICAgZjJmc19wdXRfY2FjaGUoZW50cnksIHRydWUpOwo+ID4KPiA+ ICAgICAgICAgICAgICAgICBlcnIgPSBzYW5pdHlfY2hlY2tfbm9kZV9jaGFpbihzYmksIGJsa2Fk ZHIsICZibGthZGRyX2Zhc3QsCj4gPiBAQCAtNTIwLDcgKzUyMSw3IEBAIHN0YXRpYyBpbnQgY2hl Y2tfaW5kZXhfaW5fcHJldl9ub2RlcyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPiAgICAg ICAgIHN0cnVjdCBmMmZzX3N1bW1hcnlfYmxvY2sgKnN1bV9ub2RlOwo+ID4gICAgICAgICBzdHJ1 Y3QgZjJmc19zdW1tYXJ5IHN1bTsKPiA+ICAgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2Nr ICplbnRyeSA9IE5VTEw7Cj4gPiAtICAgICAgIHN0cnVjdCBmb2xpbyAqbm9kZV9mb2xpbzsKPiA+ ICsgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICpub2RlX2VudHJ5Owo+ID4gICAgICAg ICBzdHJ1Y3QgZG5vZGVfb2ZfZGF0YSB0ZG4gPSAqZG47Cj4gPiAgICAgICAgIG5pZF90IGlubywg bmlkOwo+ID4gICAgICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlOwo+ID4gQEAgLTU1Myw3ICs1NTQs NyBAQCBzdGF0aWMgaW50IGNoZWNrX2luZGV4X2luX3ByZXZfbm9kZXMoc3RydWN0IGYyZnNfc2Jf aW5mbyAqc2JpLAo+ID4gICAgICAgICBuaWQgPSBsZTMyX3RvX2NwdShzdW0ubmlkKTsKPiA+ICAg ICAgICAgb2ZzX2luX25vZGUgPSBsZTE2X3RvX2NwdShzdW0ub2ZzX2luX25vZGUpOwo+ID4KPiA+ IC0gICAgICAgbWF4X2FkZHJzID0gQUREUlNfUEVSX1BBR0UoZG4tPm5vZGVfZm9saW8sIGRuLT5p bm9kZSk7Cj4gPiArICAgICAgIG1heF9hZGRycyA9IEFERFJTX1BFUl9QQUdFKGRuLT5ub2RlX2Vu dHJ5LCBkbi0+aW5vZGUpOwo+ID4gICAgICAgICBpZiAob2ZzX2luX25vZGUgPj0gbWF4X2FkZHJz KSB7Cj4gPiAgICAgICAgICAgICAgICAgZjJmc19lcnIoc2JpLCAiSW5jb25zaXN0ZW50IG9mc19p bl9ub2RlOiV1IGluIHN1bW1hcnksIGlubzolbGx1LCBuaWQ6JXUsIG1heDoldSIsCj4gPiAgICAg ICAgICAgICAgICAgICAgICAgICBvZnNfaW5fbm9kZSwgZG4tPmlub2RlLT5pX2lubywgbmlkLCBt YXhfYWRkcnMpOwo+ID4gQEAgLTU2Myw5ICs1NjQsOSBAQCBzdGF0aWMgaW50IGNoZWNrX2luZGV4 X2luX3ByZXZfbm9kZXMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4KPiA+ICAgICAgICAg aWYgKGRuLT5pbm9kZS0+aV9pbm8gPT0gbmlkKSB7Cj4gPiAgICAgICAgICAgICAgICAgdGRuLm5p ZCA9IG5pZDsKPiA+IC0gICAgICAgICAgICAgICBpZiAoIWRuLT5pbm9kZV9mb2xpb19sb2NrZWQp Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBmb2xpb19sb2NrKGRuLT5pbm9kZV9mb2xpbyk7 Cj4gPiAtICAgICAgICAgICAgICAgdGRuLm5vZGVfZm9saW8gPSBkbi0+aW5vZGVfZm9saW87Cj4g PiArICAgICAgICAgICAgICAgaWYgKCFkbi0+aW5vZGVfZW50cnlfbG9ja2VkKQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgZjJmc19sb2NrX2NhY2hlKGRuLT5pbm9kZV9lbnRyeSk7Cj4gPiAr ICAgICAgICAgICAgICAgdGRuLm5vZGVfZW50cnkgPSBkbi0+aW5vZGVfZW50cnk7Cj4gPiAgICAg ICAgICAgICAgICAgdGRuLm9mc19pbl9ub2RlID0gb2ZzX2luX25vZGU7Cj4gPiAgICAgICAgICAg ICAgICAgZ290byB0cnVuY2F0ZV9vdXQ7Cj4gPiAgICAgICAgIH0gZWxzZSBpZiAoZG4tPm5pZCA9 PSBuaWQpIHsKPiA+IEBAIC01NzQsMTMgKzU3NSwxMyBAQCBzdGF0aWMgaW50IGNoZWNrX2luZGV4 X2luX3ByZXZfbm9kZXMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4gICAgICAgICB9Cj4g Pgo+ID4gICAgICAgICAvKiBHZXQgdGhlIG5vZGUgcGFnZSAqLwo+ID4gLSAgICAgICBub2RlX2Zv bGlvID0gZjJmc19nZXRfbm9kZV9mb2xpbyhzYmksIG5pZCwgTk9ERV9UWVBFX1JFR1VMQVIpOwo+ ID4gLSAgICAgICBpZiAoSVNfRVJSKG5vZGVfZm9saW8pKQo+ID4gLSAgICAgICAgICAgICAgIHJl dHVybiBQVFJfRVJSKG5vZGVfZm9saW8pOwo+ID4gKyAgICAgICBub2RlX2VudHJ5ID0gZjJmc19n ZXRfbm9kZV9jYWNoZShzYmksIG5pZCwgTk9ERV9UWVBFX1JFR1VMQVIpOwo+ID4gKyAgICAgICBp ZiAoSVNfRVJSKG5vZGVfZW50cnkpKQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJS KG5vZGVfZW50cnkpOwo+ID4KPiA+IC0gICAgICAgb2Zmc2V0ID0gb2ZzX29mX25vZGUoc2JpLCBu b2RlX2ZvbGlvKTsKPiA+IC0gICAgICAgaW5vID0gaW5vX29mX25vZGUoc2JpLCBub2RlX2ZvbGlv KTsKPiA+IC0gICAgICAgZjJmc19mb2xpb19wdXQobm9kZV9mb2xpbywgdHJ1ZSk7Cj4gPiArICAg ICAgIG9mZnNldCA9IG9mc19vZl9ub2RlKHNiaSwgbm9kZV9lbnRyeSk7Cj4gPiArICAgICAgIGlu byA9IGlub19vZl9ub2RlKHNiaSwgbm9kZV9lbnRyeSk7Cj4gPiArICAgICAgIGYyZnNfcHV0X2Nh Y2hlKG5vZGVfZW50cnksIHRydWUpOwo+ID4KPiA+ICAgICAgICAgaWYgKGlubyAhPSBkbi0+aW5v ZGUtPmlfaW5vKSB7Cj4gPiAgICAgICAgICAgICAgICAgaW50IHJldDsKPiA+IEBAIC02MDYsOCAr NjA3LDggQEAgc3RhdGljIGludCBjaGVja19pbmRleF9pbl9wcmV2X25vZGVzKHN0cnVjdCBmMmZz X3NiX2luZm8gKnNiaSwKPiA+ICAgICAgICAgICogaWYgaW5vZGUgcGFnZSBpcyBsb2NrZWQsIHVu bG9jayB0ZW1wb3JhcmlseSwgYnV0IGl0cyByZWZlcmVuY2UKPiA+ICAgICAgICAgICogY291bnQg a2VlcHMgYWxpdmUuCj4gPiAgICAgICAgICAqLwo+ID4gLSAgICAgICBpZiAoaW5vID09IGRuLT5p bm9kZS0+aV9pbm8gJiYgZG4tPmlub2RlX2ZvbGlvX2xvY2tlZCkKPiA+IC0gICAgICAgICAgICAg ICBmb2xpb191bmxvY2soZG4tPmlub2RlX2ZvbGlvKTsKPiA+ICsgICAgICAgaWYgKGlubyA9PSBk bi0+aW5vZGUtPmlfaW5vICYmIGRuLT5pbm9kZV9lbnRyeV9sb2NrZWQpCj4gPiArICAgICAgICAg ICAgICAgZjJmc191bmxvY2tfY2FjaGUoZG4tPmlub2RlX2VudHJ5KTsKPiA+Cj4gPiAgICAgICAg IHNldF9uZXdfZG5vZGUoJnRkbiwgaW5vZGUsIE5VTEwsIE5VTEwsIDApOwo+ID4gICAgICAgICBp ZiAoZjJmc19nZXRfZG5vZGVfb2ZfZGF0YSgmdGRuLCBiaWR4LCBMT09LVVBfTk9ERSkpCj4gPiBA QCAtNjIwLDE1ICs2MjEsMTUgQEAgc3RhdGljIGludCBjaGVja19pbmRleF9pbl9wcmV2X25vZGVz KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+ICBvdXQ6Cj4gPiAgICAgICAgIGlmIChpbm8g IT0gZG4tPmlub2RlLT5pX2lubykKPiA+ICAgICAgICAgICAgICAgICBpcHV0KGlub2RlKTsKPiA+ IC0gICAgICAgZWxzZSBpZiAoZG4tPmlub2RlX2ZvbGlvX2xvY2tlZCkKPiA+IC0gICAgICAgICAg ICAgICBmb2xpb19sb2NrKGRuLT5pbm9kZV9mb2xpbyk7Cj4gPiArICAgICAgIGVsc2UgaWYgKGRu LT5pbm9kZV9lbnRyeV9sb2NrZWQpCj4gPiArICAgICAgICAgICAgICAgZjJmc19sb2NrX2NhY2hl KGRuLT5pbm9kZV9lbnRyeSk7Cj4gPiAgICAgICAgIHJldHVybiAwOwo+ID4KPiA+ICB0cnVuY2F0 ZV9vdXQ6Cj4gPiAgICAgICAgIGlmIChmMmZzX2RhdGFfYmxrYWRkcigmdGRuKSA9PSBibGthZGRy KQo+ID4gICAgICAgICAgICAgICAgIGYyZnNfdHJ1bmNhdGVfZGF0YV9ibG9ja3NfcmFuZ2UoJnRk biwgMSk7Cj4gPiAtICAgICAgIGlmIChkbi0+aW5vZGUtPmlfaW5vID09IG5pZCAmJiAhZG4tPmlu b2RlX2ZvbGlvX2xvY2tlZCkKPiA+IC0gICAgICAgICAgICAgICBmb2xpb191bmxvY2soZG4tPmlu b2RlX2ZvbGlvKTsKPiA+ICsgICAgICAgaWYgKGRuLT5pbm9kZS0+aV9pbm8gPT0gbmlkICYmICFk bi0+aW5vZGVfZW50cnlfbG9ja2VkKQo+ID4gKyAgICAgICAgICAgICAgIGYyZnNfdW5sb2NrX2Nh Y2hlKGRuLT5pbm9kZV9lbnRyeSk7Cj4gPiAgICAgICAgIHJldHVybiAwOwo+ID4gIH0KPiA+Cj4g PiBAQCAtNjU0LDExICs2NTUsMTEgQEAgc3RhdGljIGludCBkb19yZWNvdmVyX2RhdGEoc3RydWN0 IGYyZnNfc2JfaW5mbyAqc2JpLCBzdHJ1Y3QgaW5vZGUgKmlub2RlLAo+ID4gICAgICAgICBpbnQg ZXJyID0gMCwgcmVjb3ZlcmVkID0gMDsKPiA+Cj4gPiAgICAgICAgIC8qIHN0ZXAgMTogcmVjb3Zl ciB4YXR0ciAqLwo+ID4gLSAgICAgICBpZiAoSVNfSU5PREUoc2JpLCBjYWNoZV9mb2xpbyhlbnRy eSkpKSB7Cj4gPiArICAgICAgIGlmIChJU19JTk9ERShzYmksIGVudHJ5KSkgewo+ID4gICAgICAg ICAgICAgICAgIGVyciA9IGYyZnNfcmVjb3Zlcl9pbmxpbmVfeGF0dHIoaW5vZGUsIGVudHJ5KTsK PiA+ICAgICAgICAgICAgICAgICBpZiAoZXJyKQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAg Z290byBvdXQ7Cj4gPiAtICAgICAgIH0gZWxzZSBpZiAoZjJmc19oYXNfeGF0dHJfYmxvY2sob2Zz X29mX25vZGUoc2JpLCBjYWNoZV9mb2xpbyhlbnRyeSkpKSkgewo+ID4gKyAgICAgICB9IGVsc2Ug aWYgKGYyZnNfaGFzX3hhdHRyX2Jsb2NrKG9mc19vZl9ub2RlKHNiaSwgZW50cnkpKSkgewo+ID4g ICAgICAgICAgICAgICAgIGVyciA9IGYyZnNfcmVjb3Zlcl94YXR0cl9kYXRhKGlub2RlLCBlbnRy eSk7Cj4gPiAgICAgICAgICAgICAgICAgaWYgKCFlcnIpCj4gPiAgICAgICAgICAgICAgICAgICAg ICAgICByZWNvdmVyZWQrKzsKPiA+IEBAIC02NzQsOCArNjc1LDggQEAgc3RhdGljIGludCBkb19y ZWNvdmVyX2RhdGEoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBzdHJ1Y3QgaW5vZGUgKmlub2Rl LAo+ID4gICAgICAgICB9Cj4gPgo+ID4gICAgICAgICAvKiBzdGVwIDM6IHJlY292ZXIgZGF0YSBp bmRpY2VzICovCj4gPiAtICAgICAgIHN0YXJ0ID0gZjJmc19zdGFydF9iaWR4X29mX25vZGUob2Zz X29mX25vZGUoc2JpLCBjYWNoZV9mb2xpbyhlbnRyeSkpLCBpbm9kZSk7Cj4gPiAtICAgICAgIGVu ZCA9IHN0YXJ0ICsgYWRkcnNfcGVyX3BhZ2UoaW5vZGUsIElTX0lOT0RFKHNiaSwgY2FjaGVfZm9s aW8oZW50cnkpKSk7Cj4gPiArICAgICAgIHN0YXJ0ID0gZjJmc19zdGFydF9iaWR4X29mX25vZGUo b2ZzX29mX25vZGUoc2JpLCBlbnRyeSksIGlub2RlKTsKPiA+ICsgICAgICAgZW5kID0gc3RhcnQg KyBhZGRyc19wZXJfcGFnZShpbm9kZSwgSVNfSU5PREUoc2JpLCBlbnRyeSkpOwo+ID4KPiA+ICAg ICAgICAgc2V0X25ld19kbm9kZSgmZG4sIGlub2RlLCBOVUxMLCBOVUxMLCAwKTsKPiA+ICByZXRy eV9kbjoKPiA+IEBAIC02ODgsMTggKzY4OSwxOCBAQCBzdGF0aWMgaW50IGRvX3JlY292ZXJfZGF0 YShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIHN0cnVjdCBpbm9kZSAqaW5vZGUsCj4gPiAgICAg ICAgICAgICAgICAgZ290byBvdXQ7Cj4gPiAgICAgICAgIH0KPiA+Cj4gPiAtICAgICAgIGYyZnNf Zm9saW9fd2FpdF93cml0ZWJhY2soZG4ubm9kZV9mb2xpbywgTk9ERSwgdHJ1ZSwgdHJ1ZSk7Cj4g PiArICAgICAgIGYyZnNfY2FjaGVfd2FpdF93cml0ZWJhY2soZG4ubm9kZV9lbnRyeSk7Cj4gPgo+ ID4gICAgICAgICBlcnIgPSBmMmZzX2dldF9ub2RlX2luZm8oc2JpLCBkbi5uaWQsICZuaSwgZmFs c2UpOwo+ID4gICAgICAgICBpZiAoZXJyKQo+ID4gICAgICAgICAgICAgICAgIGdvdG8gZXJyOwo+ ID4KPiA+IC0gICAgICAgZjJmc19idWdfb24oc2JpLCBuaS5pbm8gIT0gaW5vX29mX25vZGUoc2Jp LCBjYWNoZV9mb2xpbyhlbnRyeSkpKTsKPiA+ICsgICAgICAgZjJmc19idWdfb24oc2JpLCBuaS5p bm8gIT0gaW5vX29mX25vZGUoc2JpLCBlbnRyeSkpOwo+ID4KPiA+IC0gICAgICAgaWYgKG9mc19v Zl9ub2RlKHNiaSwgZG4ubm9kZV9mb2xpbykgIT0gb2ZzX29mX25vZGUoc2JpLCBjYWNoZV9mb2xp byhlbnRyeSkpKSB7Cj4gPiArICAgICAgIGlmIChvZnNfb2Zfbm9kZShzYmksIGRuLm5vZGVfZW50 cnkpICE9IG9mc19vZl9ub2RlKHNiaSwgZW50cnkpKSB7Cj4gPiAgICAgICAgICAgICAgICAgZjJm c193YXJuKHNiaSwgIkluY29uc2lzdGVudCBvZnNfb2Zfbm9kZSwgaW5vOiVsbHUsIG9mczoldSwg JXUiLAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICBpbm9kZS0+aV9pbm8sIG9mc19vZl9u b2RlKHNiaSwgZG4ubm9kZV9mb2xpbyksCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgIG9m c19vZl9ub2RlKHNiaSwgY2FjaGVfZm9saW8oZW50cnkpKSk7Cj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgIGlub2RlLT5pX2lubywgb2ZzX29mX25vZGUoc2JpLCBkbi5ub2RlX2VudHJ5KSwK PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgb2ZzX29mX25vZGUoc2JpLCBlbnRyeSkpOwo+ ID4gICAgICAgICAgICAgICAgIGVyciA9IC1FRlNDT1JSVVBURUQ7Cj4gPiAgICAgICAgICAgICAg ICAgZjJmc19oYW5kbGVfZXJyb3Ioc2JpLCBFUlJPUl9JTkNPTlNJU1RFTlRfRk9PVEVSKTsKPiA+ ICAgICAgICAgICAgICAgICBmc2Vycm9yX3JlcG9ydF9maWxlX21ldGFkYXRhKGRuLmlub2RlLCBl cnIsIEdGUF9OT0ZTKTsKPiA+IEBAIC03MTAsNyArNzExLDcgQEAgc3RhdGljIGludCBkb19yZWNv dmVyX2RhdGEoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBzdHJ1Y3QgaW5vZGUgKmlub2RlLAo+ ID4gICAgICAgICAgICAgICAgIGJsb2NrX3Qgc3JjLCBkZXN0Owo+ID4KPiA+ICAgICAgICAgICAg ICAgICBzcmMgPSBmMmZzX2RhdGFfYmxrYWRkcigmZG4pOwo+ID4gLSAgICAgICAgICAgICAgIGRl c3QgPSBkYXRhX2Jsa2FkZHIoZG4uaW5vZGUsIGNhY2hlX2ZvbGlvKGVudHJ5KSwgZG4ub2ZzX2lu X25vZGUpOwo+ID4gKyAgICAgICAgICAgICAgIGRlc3QgPSBkYXRhX2Jsa2FkZHIoZG4uaW5vZGUs IGVudHJ5LCBkbi5vZnNfaW5fbm9kZSk7Cj4gPgo+ID4gICAgICAgICAgICAgICAgIGlmIChfX2lz X3ZhbGlkX2RhdGFfYmxrYWRkcihzcmMpICYmCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAh ZjJmc19pc192YWxpZF9ibGthZGRyKHNiaSwgc3JjLCBNRVRBX1BPUikpIHsKPiA+IEBAIC03ODUs MTYgKzc4NiwxNiBAQCBzdGF0aWMgaW50IGRvX3JlY292ZXJfZGF0YShzdHJ1Y3QgZjJmc19zYl9p bmZvICpzYmksIHN0cnVjdCBpbm9kZSAqaW5vZGUsCj4gPiAgICAgICAgICAgICAgICAgfQo+ID4g ICAgICAgICB9Cj4gPgo+ID4gLSAgICAgICBjb3B5X25vZGVfZm9vdGVyKHNiaSwgZG4ubm9kZV9m b2xpbywgY2FjaGVfZm9saW8oZW50cnkpKTsKPiA+IC0gICAgICAgZmlsbF9ub2RlX2Zvb3Rlcihz YmksIGRuLm5vZGVfZm9saW8sIGRuLm5pZCwgbmkuaW5vLAo+ID4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG9mc19vZl9ub2RlKHNiaSwgY2FjaGVfZm9saW8oZW50cnkp KSwgZmFsc2UpOwo+ID4gLSAgICAgICBmb2xpb19tYXJrX2RpcnR5KGRuLm5vZGVfZm9saW8pOwo+ ID4gKyAgICAgICBjb3B5X25vZGVfZm9vdGVyKHNiaSwgZG4ubm9kZV9lbnRyeSwgZW50cnkpOwo+ ID4gKyAgICAgICBmaWxsX25vZGVfZm9vdGVyKHNiaSwgZG4ubm9kZV9lbnRyeSwgZG4ubmlkLCBu aS5pbm8sCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2ZzX29m X25vZGUoc2JpLCBlbnRyeSksIGZhbHNlKTsKPiA+ICsgICAgICAgZjJmc19tYXJrX2NhY2hlX2Rp cnR5KGRuLm5vZGVfZW50cnkpOwo+ID4gIGVycjoKPiA+ICAgICAgICAgZjJmc19wdXRfZG5vZGUo JmRuKTsKPiA+ICBvdXQ6Cj4gPiAgICAgICAgIGYyZnNfbm90aWNlKHNiaSwgInJlY292ZXJfZGF0 YTogaW5vID0gJWxseCwgbmlkID0gJXggKGlfc2l6ZTogJXMpLCAiCj4gPiAgICAgICAgICAgICAg ICAgICAgICJyYW5nZSAoJXUsICV1KSwgcmVjb3ZlcmVkID0gJWQsIGVyciA9ICVkIiwKPiA+IC0g ICAgICAgICAgICAgICAgICAgaW5vZGUtPmlfaW5vLCBuaWRfb2Zfbm9kZShzYmksIGNhY2hlX2Zv bGlvKGVudHJ5KSksCj4gPiArICAgICAgICAgICAgICAgICAgIGlub2RlLT5pX2lubywgbmlkX29m X25vZGUoc2JpLCBlbnRyeSksCj4gPiAgICAgICAgICAgICAgICAgICAgIGZpbGVfa2VlcF9pc2l6 ZShpbm9kZSkgPyAia2VlcCIgOiAicmVjb3ZlciIsCj4gPiAgICAgICAgICAgICAgICAgICAgIHN0 YXJ0LCBlbmQsIHJlY292ZXJlZCwgZXJyKTsKPiA+ICAgICAgICAgcmV0dXJuIGVycjsKPiA+IEBA IC04MzMsMTMgKzgzNCwxMyBAQCBzdGF0aWMgaW50IHJlY292ZXJfZGF0YShzdHJ1Y3QgZjJmc19z Yl9pbmZvICpzYmksIHN0cnVjdCBsaXN0X2hlYWQgKmlub2RlX2xpc3QsCj4gPiAgICAgICAgICAg ICAgICAgICAgICAgICBicmVhazsKPiA+ICAgICAgICAgICAgICAgICB9Cj4gPgo+ID4gLSAgICAg ICAgICAgICAgIGlmICghaXNfcmVjb3ZlcmFibGVfZG5vZGUoc2JpLCBjYWNoZV9mb2xpbyhlbnRy eSkpKSB7Cj4gPiArICAgICAgICAgICAgICAgaWYgKCFpc19yZWNvdmVyYWJsZV9kbm9kZShzYmks IGVudHJ5KSkgewo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgZjJmc19wdXRfY2FjaGUoZW50 cnksIHRydWUpOwo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gPiAgICAgICAg ICAgICAgICAgfQo+ID4gICAgICAgICAgICAgICAgIHJlY292ZXJhYmxlX2Rub2RlKys7Cj4gPgo+ ID4gLSAgICAgICAgICAgICAgIGZzeW5jX2VudHJ5ID0gZ2V0X2ZzeW5jX2lub2RlKGlub2RlX2xp c3QsIGlub19vZl9ub2RlKHNiaSwgY2FjaGVfZm9saW8oZW50cnkpKSk7Cj4gPiArICAgICAgICAg ICAgICAgZnN5bmNfZW50cnkgPSBnZXRfZnN5bmNfaW5vZGUoaW5vZGVfbGlzdCwgaW5vX29mX25v ZGUoc2JpLCBlbnRyeSkpOwo+ID4gICAgICAgICAgICAgICAgIGlmICghZnN5bmNfZW50cnkpCj4g PiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG5leHQ7Cj4gPiAgICAgICAgICAgICAgICAg ZnN5bmNlZF9kbm9kZSsrOwo+ID4gQEAgLTg0OCw3ICs4NDksNyBAQCBzdGF0aWMgaW50IHJlY292 ZXJfZGF0YShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIHN0cnVjdCBsaXN0X2hlYWQgKmlub2Rl X2xpc3QsCj4gPiAgICAgICAgICAgICAgICAgICogSW4gdGhpcyBjYXNlLCB3ZSBjYW4gbG9zZSB0 aGUgbGF0ZXN0IGlub2RlKHgpLgo+ID4gICAgICAgICAgICAgICAgICAqIFNvLCBjYWxsIHJlY292 ZXJfaW5vZGUgZm9yIHRoZSBpbm9kZSB1cGRhdGUuCj4gPiAgICAgICAgICAgICAgICAgICovCj4g PiAtICAgICAgICAgICAgICAgaWYgKElTX0lOT0RFKHNiaSwgY2FjaGVfZm9saW8oZW50cnkpKSkg ewo+ID4gKyAgICAgICAgICAgICAgIGlmIChJU19JTk9ERShzYmksIGVudHJ5KSkgewo+ID4gICAg ICAgICAgICAgICAgICAgICAgICAgZXJyID0gcmVjb3Zlcl9pbm9kZShmc3luY19lbnRyeS0+aW5v ZGUsIGVudHJ5KTsKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHsKPiA+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjJmc19wdXRfY2FjaGUoZW50cnksIHRydWUp Owo+ID4gQEAgLTg3NSwxMCArODc2LDEwIEBAIHN0YXRpYyBpbnQgcmVjb3Zlcl9kYXRhKHN0cnVj dCBmMmZzX3NiX2luZm8gKnNiaSwgc3RydWN0IGxpc3RfaGVhZCAqaW5vZGVfbGlzdCwKPiA+ICAg ICAgICAgICAgICAgICAgICAgICAgIGxpc3RfbW92ZV90YWlsKCZmc3luY19lbnRyeS0+bGlzdCwg dG1wX2lub2RlX2xpc3QpOwo+ID4gIG5leHQ6Cj4gPiAgICAgICAgICAgICAgICAgcmFfYmxvY2tz ID0gYWRqdXN0X3Bvcl9yYV9ibG9ja3Moc2JpLCByYV9ibG9ja3MsIGJsa2FkZHIsCj4gPiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dF9ibGthZGRyX29mX25vZGUo c2JpLCBjYWNoZV9mb2xpbyhlbnRyeSkpKTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBuZXh0X2Jsa2FkZHJfb2Zfbm9kZShzYmksIGVudHJ5KSk7Cj4gPgo+ID4g ICAgICAgICAgICAgICAgIC8qIGNoZWNrIG5leHQgc2VnbWVudCAqLwo+ID4gLSAgICAgICAgICAg ICAgIGJsa2FkZHIgPSBuZXh0X2Jsa2FkZHJfb2Zfbm9kZShzYmksIGNhY2hlX2ZvbGlvKGVudHJ5 KSk7Cj4gPiArICAgICAgICAgICAgICAgYmxrYWRkciA9IG5leHRfYmxrYWRkcl9vZl9ub2RlKHNi aSwgZW50cnkpOwo+ID4gICAgICAgICAgICAgICAgIGYyZnNfcHV0X2NhY2hlKGVudHJ5LCB0cnVl KTsKPiA+Cj4gPiAgICAgICAgICAgICAgICAgZjJmc19yYV9tZXRhX2NhY2hlc19jb25kKHNiaSwg YmxrYWRkciwgcmFfYmxvY2tzKTsKPiA+IEBAIC05NDEsNyArOTQyLDcgQEAgaW50IGYyZnNfcmVj b3Zlcl9mc3luY19kYXRhKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgYm9vbCBjaGVja19vbmx5 KQo+ID4gICAgICAgICBmMmZzX3RydW5jYXRlX21ldGFfY2FjaGVzKHNiaSwgTUFJTl9CTEtBRERS KHNiaSksCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BWF9CTEtBRERSKHNi aSkgLSBNQUlOX0JMS0FERFIoc2JpKSk7Cj4gPiAgICAgICAgIGlmIChlcnIpIHsKPiA+IC0gICAg ICAgICAgICAgICB0cnVuY2F0ZV9pbm9kZV9wYWdlc19maW5hbChOT0RFX01BUFBJTkcoc2JpKSk7 Cj4gPiArICAgICAgICAgICAgICAgZjJmc190cnVuY2F0ZV9ub2RlX2NhY2hlcyhzYmksIDAsIFVM T05HX01BWCk7Cj4gPiAgICAgICAgICAgICAgICAgZjJmc190cnVuY2F0ZV9tZXRhX2NhY2hlcyhz YmksIDAsIFVMT05HX01BWCk7Cj4gPiAgICAgICAgIH0KPiA+Cj4gPiBkaWZmIC0tZ2l0IGEvZnMv ZjJmcy9zZWdtZW50LmMgYi9mcy9mMmZzL3NlZ21lbnQuYwo+ID4gaW5kZXggOWQwOGU3NjJiMTMx Li44N2UyNGQwMzA2ZTggMTAwNjQ0Cj4gPiAtLS0gYS9mcy9mMmZzL3NlZ21lbnQuYwo+ID4gKysr IGIvZnMvZjJmcy9zZWdtZW50LmMKPiA+IEBAIC0zMzUsOCArMzM1LDggQEAgc3RhdGljIGludCBf X2YyZnNfY29tbWl0X2F0b21pY193cml0ZShzdHJ1Y3QgaW5vZGUgKmlub2RlKQo+ID4gICAgICAg ICAgICAgICAgICAgICAgICAgZ290byBuZXh0Owo+ID4gICAgICAgICAgICAgICAgIH0KPiA+Cj4g PiAtICAgICAgICAgICAgICAgYmxlbiA9IG1pbigocGdvZmZfdClBRERSU19QRVJfUEFHRShkbi5u b2RlX2ZvbGlvLCBjb3dfaW5vZGUpLAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBsZW4pOwo+ID4gKyAgICAgICAgICAgICAgIGJsZW4gPSBtaW4oKHBnb2ZmX3QpYWRkcnNfcGVy X3BhZ2UoY293X2lub2RlLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJU19J Tk9ERShGMkZTX0lfU0IoY293X2lub2RlKSwgZG4ubm9kZV9lbnRyeSkpLCBsZW4pOwo+ID4gICAg ICAgICAgICAgICAgIGluZGV4ID0gb2ZmOwo+ID4gICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7 IGkgPCBibGVuOyBpKyssIGRuLm9mc19pbl9ub2RlKyssIGluZGV4KyspIHsKPiA+ICAgICAgICAg ICAgICAgICAgICAgICAgIGJsa2FkZHIgPSBmMmZzX2RhdGFfYmxrYWRkcigmZG4pOwo+ID4gQEAg LTM4MjYsNyArMzgyNiw4IEBAIHN0YXRpYyBpbnQgX19nZXRfc2VnbWVudF90eXBlXzQoc3RydWN0 IGYyZnNfaW9faW5mbyAqZmlvKQo+ID4gICAgICAgICAgICAgICAgIGVsc2UKPiA+ICAgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiBDVVJTRUdfQ09MRF9EQVRBOwo+ID4gICAgICAgICB9IGVs c2Ugewo+ID4gLSAgICAgICAgICAgICAgIGlmIChJU19ETk9ERShmaW8tPnNiaSwgZmlvLT5mb2xp bykgJiYgaXNfY29sZF9ub2RlKGZpby0+c2JpLCBmaW8tPmZvbGlvKSkKPiA+ICsgICAgICAgICAg ICAgICBmMmZzX2J1Z19vbihmaW8tPnNiaSwgIWZpby0+aXNfY2FjaGUpOwo+ID4gKyAgICAgICAg ICAgICAgIGlmIChJU19ETk9ERShmaW8tPnNiaSwgZmlvLT5jYWNoZV9lbnRyeSkgJiYgaXNfY29s ZF9ub2RlKGZpby0+c2JpLCBmaW8tPmNhY2hlX2VudHJ5KSkKPiA+ICAgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiBDVVJTRUdfV0FSTV9OT0RFOwo+ID4gICAgICAgICAgICAgICAgIGVsc2UK PiA+ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDVVJTRUdfQ09MRF9OT0RFOwo+ID4g QEAgLTM4ODQsOSArMzg4NSw5IEBAIHN0YXRpYyBpbnQgX19nZXRfc2VnbWVudF90eXBlXzYoc3Ry dWN0IGYyZnNfaW9faW5mbyAqZmlvKQo+ID4gICAgICAgICAgICAgICAgIHJldHVybiBmMmZzX3J3 X2hpbnRfdG9fc2VnX3R5cGUoRjJGU19JX1NCKGlub2RlKSwKPiA+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlub2RlLT5pX3dyaXRlX2hpbnQpOwo+ID4g ICAgICAgICB9IGVsc2Ugewo+ID4gLSAgICAgICAgICAgICAgIGlmIChJU19ETk9ERShmaW8tPnNi aSwgZmlvLT5mb2xpbykpCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXNfY29s ZF9ub2RlKGZpby0+c2JpLCBmaW8tPmZvbGlvKSA/IENVUlNFR19XQVJNX05PREUgOgo+ID4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSU0VHX0hPVF9O T0RFOwo+ID4gKyAgICAgICAgICAgICAgIGYyZnNfYnVnX29uKGZpby0+c2JpLCAhZmlvLT5pc19j YWNoZSk7Cj4gPiArICAgICAgICAgICAgICAgaWYgKElTX0ROT0RFKGZpby0+c2JpLCBmaW8tPmNh Y2hlX2VudHJ5KSkKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpc19jb2xkX25v ZGUoZmlvLT5zYmksIGZpby0+Y2FjaGVfZW50cnkpID8gQ1VSU0VHX1dBUk1fTk9ERSA6IENVUlNF R19IT1RfTk9ERTsKPiA+ICAgICAgICAgICAgICAgICByZXR1cm4gQ1VSU0VHX0NPTERfTk9ERTsK PiA+ICAgICAgICAgfQo+ID4gIH0KPiA+IEBAIC0zOTUzLDcgKzM5NTQsNyBAQCBzdGF0aWMgdm9p ZCBmMmZzX3JhbmRvbWl6ZV9jaHVuayhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPiAgICAg ICAgICAgICAgICAgZ2V0X3JhbmRvbV91MzJfaW5jbHVzaXZlKDEsIHNiaS0+bWF4X2ZyYWdtZW50 X2hvbGUpOwo+ID4gIH0KPiA+Cj4gPiAtaW50IGYyZnNfYWxsb2NhdGVfZGF0YV9ibG9jayhzdHJ1 Y3QgZjJmc19zYl9pbmZvICpzYmksIHN0cnVjdCBmb2xpbyAqZm9saW8sCj4gPiAraW50IGYyZnNf YWxsb2NhdGVfZGF0YV9ibG9jayhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPiAgICAgICAg ICAgICAgICAgYmxvY2tfdCBvbGRfYmxrYWRkciwgYmxvY2tfdCAqbmV3X2Jsa2FkZHIsCj4gPiAg ICAgICAgICAgICAgICAgc3RydWN0IGYyZnNfc3VtbWFyeSAqc3VtLCBpbnQgdHlwZSwKPiA+ICAg ICAgICAgICAgICAgICBzdHJ1Y3QgZjJmc19pb19pbmZvICpmaW8pCj4gPiBAQCAtNDA2MSwxMCAr NDA2MiwxMCBAQCBpbnQgZjJmc19hbGxvY2F0ZV9kYXRhX2Jsb2NrKHN0cnVjdCBmMmZzX3NiX2lu Zm8gKnNiaSwgc3RydWN0IGZvbGlvICpmb2xpbywKPiA+Cj4gPiAgICAgICAgIHVwX3dyaXRlKCZz aXRfaS0+c2VudHJ5X2xvY2spOwo+ID4KPiA+IC0gICAgICAgaWYgKGZvbGlvICYmIElTX05PREVT RUcoY3Vyc2VnLT5zZWdfdHlwZSkpIHsKPiA+IC0gICAgICAgICAgICAgICBmaWxsX25vZGVfZm9v dGVyX2Jsa2FkZHIoc2JpLCBmb2xpbywgTkVYVF9GUkVFX0JMS0FERFIoc2JpLCBjdXJzZWcpKTsK PiA+IC0KPiA+IC0gICAgICAgICAgICAgICBmMmZzX2lub2RlX2Noa3N1bV9zZXQoc2JpLCBmb2xp byk7Cj4gPiArICAgICAgIGlmIChmaW8gJiYgZmlvLT5pc19jYWNoZSAmJiBJU19OT0RFU0VHKGN1 cnNlZy0+c2VnX3R5cGUpKSB7Cj4gPiArICAgICAgICAgICAgICAgZmlsbF9ub2RlX2Zvb3Rlcl9i bGthZGRyKHNiaSwgZmlvLT5jYWNoZV9lbnRyeSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTkVYVF9GUkVFX0JMS0FERFIoc2JpLCBjdXJzZWcpKTsKPiA+ICsgICAgICAgICAg ICAgICBmMmZzX2lub2RlX2Noa3N1bV9zZXQoc2JpLCBmaW8tPmNhY2hlX2VudHJ5KTsKPiA+ICAg ICAgICAgfQo+ID4KPiA+ICAgICAgICAgaWYgKGZpbykgewo+ID4gQEAgLTQxNTIsMTYgKzQxNTMs MjQgQEAgc3RhdGljIHZvaWQgZG9fd3JpdGVfYmxvY2soc3RydWN0IGYyZnNfc3VtbWFyeSAqc3Vt LCBzdHJ1Y3QgZjJmc19pb19pbmZvICpmaW8pCj4gPiAgICAgICAgIGlmIChrZWVwX29yZGVyKQo+ ID4gICAgICAgICAgICAgICAgIGYyZnNfZG93bl9yZWFkKCZmaW8tPnNiaS0+aW9fb3JkZXJfbG9j ayk7Cj4gPgo+ID4gLSAgICAgICBlcnIgPSBmMmZzX2FsbG9jYXRlX2RhdGFfYmxvY2soZmlvLT5z YmksIGZvbGlvLCBmaW8tPm9sZF9ibGthZGRyLAo+ID4gKyAgICAgICBlcnIgPSBmMmZzX2FsbG9j YXRlX2RhdGFfYmxvY2soZmlvLT5zYmksIGZpby0+b2xkX2Jsa2FkZHIsCj4gPiAgICAgICAgICAg ICAgICAgICAgICAgICAmZmlvLT5uZXdfYmxrYWRkciwgc3VtLCB0eXBlLCBmaW8pOwo+ID4gICAg ICAgICBpZiAodW5saWtlbHkoZXJyKSkgewo+ID4gLSAgICAgICAgICAgICAgIGYyZnNfZXJyX3Jh dGVsaW1pdGVkKGZpby0+c2JpLAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgIiVzIEZhaWxl ZCB0byBhbGxvY2F0ZSBkYXRhIGJsb2NrLCBpbm86JXUsIGluZGV4OiVsdSwgdHlwZTolZCwgb2xk X2Jsa2FkZHI6MHgleCwgbmV3X2Jsa2FkZHI6MHgleCwgZXJyOiVkIiwKPiA+IC0gICAgICAgICAg ICAgICAgICAgICAgIF9fZnVuY19fLCBmaW8tPmlubywgZm9saW8tPmluZGV4LCB0eXBlLAo+ID4g LSAgICAgICAgICAgICAgICAgICAgICAgZmlvLT5vbGRfYmxrYWRkciwgZmlvLT5uZXdfYmxrYWRk ciwgZXJyKTsKPiA+IC0gICAgICAgICAgICAgICBmb2xpb19lbmRfd3JpdGViYWNrKGZvbGlvKTsK PiA+IC0gICAgICAgICAgICAgICBpZiAoZjJmc19pbl93YXJtX25vZGVfbGlzdChmaW8tPnNiaSwg Zm9saW8pKQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgZjJmc19kZWxfZnN5bmNfbm9kZV9l bnRyeShmaW8tPnNiaSwgZm9saW8pOwo+ID4gKyAgICAgICAgICAgICAgIGlmIChmaW8tPmlzX2Nh Y2hlKSB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBmMmZzX2Vycl9yYXRlbGltaXRlZChm aW8tPnNiaSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzIEZhaWxlZCB0 byBhbGxvY2F0ZSBkYXRhIGJsb2NrLCBpbm86JXUsIGluZGV4OiVsdSwgdHlwZTolZCwgb2xkX2Js a2FkZHI6MHgleCwgbmV3X2Jsa2FkZHI6MHgleCwgZXJyOiVkIiwKPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgX19mdW5jX18sIGZpby0+aW5vLCBmaW8tPmNhY2hlX2VudHJ5LT5p bmRleCwgdHlwZSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlvLT5vbGRf YmxrYWRkciwgZmlvLT5uZXdfYmxrYWRkciwgZXJyKTsKPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgIGlmIChmMmZzX2luX3dhcm1fbm9kZV9saXN0KGZpby0+c2JpLCBmaW8tPmNhY2hlX2VudHJ5 KSkKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjJmc19kZWxfZnN5bmNfbm9k ZV9lbnRyeShmaW8tPnNiaSwgZmlvLT5jYWNoZV9lbnRyeSk7Cj4gPiArICAgICAgICAgICAgICAg ICAgICAgICBmMmZzX2VuZF9jYWNoZV93cml0ZWJhY2soZmlvLT5jYWNoZV9lbnRyeSk7Cj4gPiAr ICAgICAgICAgICAgICAgfSBlbHNlIHsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGYyZnNf ZXJyX3JhdGVsaW1pdGVkKGZpby0+c2JpLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiJXMgRmFpbGVkIHRvIGFsbG9jYXRlIGRhdGEgYmxvY2ssIGlubzoldSwgaW5kZXg6JWx1 LCB0eXBlOiVkLCBvbGRfYmxrYWRkcjoweCV4LCBuZXdfYmxrYWRkcjoweCV4LCBlcnI6JWQiLAo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgZmlvLT5pbm8sIGZv bGlvLT5pbmRleCwgdHlwZSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlv LT5vbGRfYmxrYWRkciwgZmlvLT5uZXdfYmxrYWRkciwgZXJyKTsKPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgIGZvbGlvX2VuZF93cml0ZWJhY2soZm9saW8pOwo+ID4gKyAgICAgICAgICAgICAg IH0KPiA+ICAgICAgICAgICAgICAgICBmMmZzX2J1Z19vbihmaW8tPnNiaSwgIWlzX3NldF9ja3B0 X2ZsYWdzKGZpby0+c2JpLAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBDUF9FUlJPUl9GTEFHKSk7Cj4gPiAgICAgICAgICAgICAgICAg Z290byBvdXQ7Cj4gPiBAQCAtNDE3NCw3ICs0MTgzLDEwIEBAIHN0YXRpYyB2b2lkIGRvX3dyaXRl X2Jsb2NrKHN0cnVjdCBmMmZzX3N1bW1hcnkgKnN1bSwgc3RydWN0IGYyZnNfaW9faW5mbyAqZmlv KQo+ID4gICAgICAgICAgICAgICAgIGYyZnNfaW52YWxpZGF0ZV9pbnRlcm5hbF9jYWNoZShmaW8t PnNiaSwgZmlvLT5vbGRfYmxrYWRkciwgMSk7Cj4gPgo+ID4gICAgICAgICAvKiB3cml0ZW91dCBk aXJ0eSBwYWdlIGludG8gYmRldiAqLwo+ID4gLSAgICAgICBmMmZzX3N1Ym1pdF9wYWdlX3dyaXRl KGZpbyk7Cj4gPiArICAgICAgIGlmIChmaW8tPmlzX2NhY2hlKQo+ID4gKyAgICAgICAgICAgICAg IGYyZnNfc3VibWl0X2NhY2hlX3dyaXRlKGZpbyk7Cj4gPiArICAgICAgIGVsc2UKPiA+ICsgICAg ICAgICAgICAgICBmMmZzX3N1Ym1pdF9wYWdlX3dyaXRlKGZpbyk7Cj4gPgo+ID4gICAgICAgICBm MmZzX3VwZGF0ZV9kZXZpY2Vfc3RhdGUoZmlvLT5zYmksIGZpby0+aW5vLCBmaW8tPm5ld19ibGth ZGRyLCAxKTsKPiA+ICBvdXQ6Cj4gPiBAQCAtNDIxMCw3ICs0MjIyLDcgQEAgdm9pZCBmMmZzX2Rv X3dyaXRlX21ldGFfY2FjaGUoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4gICAgICAgICBm MmZzX3VwZGF0ZV9pb3N0YXQoc2JpLCBOVUxMLCBpb190eXBlLCBGMkZTX0JMS1NJWkUoc2JpKSk7 Cj4gPiAgfQo+ID4KPiA+IC12b2lkIGYyZnNfZG9fd3JpdGVfbm9kZV9wYWdlKHVuc2lnbmVkIGlu dCBuaWQsIHN0cnVjdCBmMmZzX2lvX2luZm8gKmZpbykKPiA+ICt2b2lkIGYyZnNfZG9fd3JpdGVf bm9kZV9jYWNoZSh1bnNpZ25lZCBpbnQgbmlkLCBzdHJ1Y3QgZjJmc19pb19pbmZvICpmaW8pCj4g PiAgewo+ID4gICAgICAgICBzdHJ1Y3QgZjJmc19zdW1tYXJ5IHN1bTsKPiA+Cj4gPiBAQCAtNDQw OSwxNCArNDQyMSwxMyBAQCB2b2lkIGYyZnNfcmVwbGFjZV9ibG9jayhzdHJ1Y3QgZjJmc19zYl9p bmZvICpzYmksIHN0cnVjdCBkbm9kZV9vZl9kYXRhICpkbiwKPiA+ICAgICAgICAgZjJmc191cGRh dGVfZGF0YV9ibGthZGRyKGRuLCBuZXdfYWRkcik7Cj4gPiAgfQo+ID4KPiA+IC12b2lkIGYyZnNf Zm9saW9fd2FpdF93cml0ZWJhY2soc3RydWN0IGZvbGlvICpmb2xpbywgZW51bSBwYWdlX3R5cGUg dHlwZSwKPiA+IC0gICAgICAgICAgICAgICBib29sIG9yZGVyZWQsIGJvb2wgbG9ja2VkKQo+ID4g K3ZvaWQgZjJmc19mb2xpb193YWl0X3dyaXRlYmFjayhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBib29s IG9yZGVyZWQsIGJvb2wgbG9ja2VkKQo+ID4gIHsKPiA+ICAgICAgICAgaWYgKGZvbGlvX3Rlc3Rf d3JpdGViYWNrKGZvbGlvKSkgewo+ID4gICAgICAgICAgICAgICAgIHN0cnVjdCBmMmZzX3NiX2lu Zm8gKnNiaSA9IEYyRlNfRl9TQihmb2xpbyk7Cj4gPgo+ID4gICAgICAgICAgICAgICAgIC8qIHN1 Ym1pdCBjYWNoZWQgTEZTIElPICovCj4gPiAtICAgICAgICAgICAgICAgZjJmc19zdWJtaXRfbWVy Z2VkX3dyaXRlX2ZvbGlvKHNiaSwgZm9saW8sIHR5cGUpOwo+ID4gKyAgICAgICAgICAgICAgIGYy ZnNfc3VibWl0X21lcmdlZF93cml0ZV9mb2xpbyhzYmksIGZvbGlvKTsKPiA+ICAgICAgICAgICAg ICAgICAvKiBzdWJtaXQgY2FjaGVkIElQVSBJTyAqLwo+ID4gICAgICAgICAgICAgICAgIGYyZnNf c3VibWl0X21lcmdlZF9pcHVfd3JpdGUoc2JpLCBOVUxMLCBmb2xpbyk7Cj4gPiAgICAgICAgICAg ICAgICAgaWYgKG9yZGVyZWQpIHsKPiA+IGRpZmYgLS1naXQgYS9mcy9mMmZzL3NlZ21lbnQuaCBi L2ZzL2YyZnMvc2VnbWVudC5oCj4gPiBpbmRleCAzMDgzMDY5YzkwOTIuLmIxMTQ2MWFjYzUyMCAx MDA2NDQKPiA+IC0tLSBhL2ZzL2YyZnMvc2VnbWVudC5oCj4gPiArKysgYi9mcy9mMmZzL3NlZ21l bnQuaAo+ID4gQEAgLTEwMTksMjYgKzEwMTksNiBAQCBzdGF0aWMgaW5saW5lIGxvbmcgYWRqdXN0 X2ZsdXNoX2NhY2hlX251bWJlcihzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIGludCB0eXBlKQo+ ID4gICAgICAgICByZXR1cm4gbnJfdG9fd3JpdGU7Cj4gPiAgfQo+ID4KPiA+IC0vKgo+ID4gLSAq IFdoZW4gd3JpdGluZyBwYWdlcywgaXQnZCBiZXR0ZXIgYWxpZ24gbnJfdG9fd3JpdGUgZm9yIHNl Z21lbnQgc2l6ZS4KPiA+IC0gKi8KPiA+IC1zdGF0aWMgaW5saW5lIGxvbmcgbnJfcGFnZXNfdG9f d3JpdGUoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBpbnQgdHlwZSwKPiA+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgKndi YykKPiA+IC17Cj4gPiAtICAgICAgIGxvbmcgbnJfdG9fd3JpdGUsIGRlc2lyZWQ7Cj4gPiAtCj4g PiAtICAgICAgIGlmICh3YmMtPnN5bmNfbW9kZSAhPSBXQl9TWU5DX05PTkUpCj4gPiAtICAgICAg ICAgICAgICAgcmV0dXJuIDA7Cj4gPiAtCj4gPiAtICAgICAgIG5yX3RvX3dyaXRlID0gd2JjLT5u cl90b193cml0ZTsKPiA+IC0gICAgICAgZGVzaXJlZCA9IEJJT19NQVhfVkVDUzsKPiA+IC0gICAg ICAgaWYgKHR5cGUgPT0gTk9ERSkKPiA+IC0gICAgICAgICAgICAgICBkZXNpcmVkIDw8PSAxOwo+ ID4gLQo+ID4gLSAgICAgICB3YmMtPm5yX3RvX3dyaXRlID0gZGVzaXJlZDsKPiA+IC0gICAgICAg cmV0dXJuIGRlc2lyZWQgLSBucl90b193cml0ZTsKPiA+IC19Cj4gPiAtCj4gPiAgc3RhdGljIGlu bGluZSB2b2lkIHdha2VfdXBfZGlzY2FyZF90aHJlYWQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2Jp LCBib29sIGZvcmNlKQo+ID4gIHsKPiA+ICAgICAgICAgc3RydWN0IGRpc2NhcmRfY21kX2NvbnRy b2wgKmRjYyA9IFNNX0koc2JpKS0+ZGNjX2luZm87Cj4gPiBkaWZmIC0tZ2l0IGEvZnMvZjJmcy9z aHJpbmtlci5jIGIvZnMvZjJmcy9zaHJpbmtlci5jCj4gPiBpbmRleCBiYWEwOWJjNjM1ODUuLjQ5 OTcxN2NkNjkzYyAxMDA2NDQKPiA+IC0tLSBhL2ZzL2YyZnMvc2hyaW5rZXIuYwo+ID4gKysrIGIv ZnMvZjJmcy9zaHJpbmtlci5jCj4gPiBAQCAtMzksNyArMzksOCBAQCBzdGF0aWMgdW5zaWduZWQg bG9uZyBfX2NvdW50X2V4dGVudF9jYWNoZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPgo+ ID4gIHN0YXRpYyB1bnNpZ25lZCBsb25nIF9fY291bnRfY2FjaGUoc3RydWN0IGYyZnNfc2JfaW5m byAqc2JpKQo+ID4gIHsKPiA+IC0gICAgICAgcmV0dXJuIE1FVEFfQ0FDSEUoc2JpKS0+bnVtX2Vu dHJpZXM7Cj4gPiArICAgICAgIHJldHVybiBNRVRBX0NBQ0hFKHNiaSktPm51bV9lbnRyaWVzICsK PiA+ICsgICAgICAgICAgICAgICBOT0RFX0NBQ0hFKHNiaSktPm51bV9lbnRyaWVzOwo+ID4gIH0K PiA+Cj4gPiAgdW5zaWduZWQgbG9uZyBmMmZzX3Nocmlua19jb3VudChzdHJ1Y3Qgc2hyaW5rZXIg KnNocmluaywKPiA+IGRpZmYgLS1naXQgYS9mcy9mMmZzL3N1cGVyLmMgYi9mcy9mMmZzL3N1cGVy LmMKPiA+IGluZGV4IGZhMTkxNTJjZDRkYS4uYmY0MmZiZmZhMzQ4IDEwMDY0NAo+ID4gLS0tIGEv ZnMvZjJmcy9zdXBlci5jCj4gPiArKysgYi9mcy9mMmZzL3N1cGVyLmMKPiA+IEBAIC0xODcyLDIw ICsxODcyLDggQEAgc3RhdGljIHN0cnVjdCBpbm9kZSAqZjJmc19hbGxvY19pbm9kZShzdHJ1Y3Qg c3VwZXJfYmxvY2sgKnNiKQo+ID4KPiA+ICBzdGF0aWMgaW50IGYyZnNfZHJvcF9pbm9kZShzdHJ1 Y3QgaW5vZGUgKmlub2RlKQo+ID4gIHsKPiA+IC0gICAgICAgc3RydWN0IGYyZnNfc2JfaW5mbyAq c2JpID0gRjJGU19JX1NCKGlub2RlKTsKPiA+ICAgICAgICAgaW50IHJldDsKPiA+Cj4gPiAtICAg ICAgIC8qCj4gPiAtICAgICAgICAqIGR1cmluZyBmaWxlc3lzdGVtIHNodXRkb3duLCBpZiBjaGVj a3BvaW50IGlzIGRpc2FibGVkLAo+ID4gLSAgICAgICAgKiBkcm9wIHVzZWxlc3MgbWV0YS9ub2Rl IGRpcnR5IHBhZ2VzLgo+ID4gLSAgICAgICAgKi8KPiA+IC0gICAgICAgaWYgKHVubGlrZWx5KGlz X3NiaV9mbGFnX3NldChzYmksIFNCSV9DUF9ESVNBQkxFRCkpKSB7Cj4gPiAtICAgICAgICAgICAg ICAgaWYgKGlub2RlLT5pX2lubyA9PSBGMkZTX05PREVfSU5PKHNiaSkpIHsKPiA+IC0gICAgICAg ICAgICAgICAgICAgICAgIHRyYWNlX2YyZnNfZHJvcF9pbm9kZShpbm9kZSwgMSk7Cj4gPiAtICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKPiA+IC0gICAgICAgICAgICAgICB9Cj4gPiAt ICAgICAgIH0KPiA+IC0KPiA+ICAgICAgICAgLyoKPiA+ICAgICAgICAgICogVGhpcyBpcyB0byBh dm9pZCBhIGRlYWRsb2NrIGNvbmRpdGlvbiBsaWtlIGJlbG93Lgo+ID4gICAgICAgICAgKiB3cml0 ZWJhY2tfc2luZ2xlX2lub2RlKGlub2RlKQo+ID4gQEAgLTE5MDYsNyArMTg5NCw3IEBAIHN0YXRp YyBpbnQgZjJmc19kcm9wX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpCj4gPiAgICAgICAgICAg ICAgICAgICAgICAgICBmMmZzX2lfc2l6ZV93cml0ZShpbm9kZSwgMCk7Cj4gPgo+ID4gICAgICAg ICAgICAgICAgICAgICAgICAgZjJmc19zdWJtaXRfbWVyZ2VkX3dyaXRlX2NvbmQoRjJGU19JX1NC KGlub2RlKSwKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbm9k ZSwgTlVMTCwgMCwgREFUQSk7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGlub2RlLCBOVUxMKTsKPiA+ICAgICAgICAgICAgICAgICAg ICAgICAgIHRydW5jYXRlX2lub2RlX3BhZ2VzX2ZpbmFsKGlub2RlLT5pX21hcHBpbmcpOwo+ID4K PiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChGMkZTX0hBU19CTE9DS1MoaW5vZGUpKQo+ ID4gQEAgLTE5ODAsMTEgKzE5NjgsNiBAQCB2b2lkIGYyZnNfaW5vZGVfc3luY2VkKHN0cnVjdCBp bm9kZSAqaW5vZGUpCj4gPiAgICovCj4gPiAgc3RhdGljIHZvaWQgZjJmc19kaXJ0eV9pbm9kZShz dHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgZmxhZ3MpCj4gPiAgewo+ID4gLSAgICAgICBzdHJ1Y3Qg ZjJmc19zYl9pbmZvICpzYmkgPSBGMkZTX0lfU0IoaW5vZGUpOwo+ID4gLQo+ID4gLSAgICAgICBp ZiAoaW5vZGUtPmlfaW5vID09IEYyRlNfTk9ERV9JTk8oc2JpKSkKPiA+IC0gICAgICAgICAgICAg ICByZXR1cm47Cj4gPiAtCj4gPiAgICAgICAgIGlmIChpc19pbm9kZV9mbGFnX3NldChpbm9kZSwg RklfQVVUT19SRUNPVkVSKSkKPiA+ICAgICAgICAgICAgICAgICBjbGVhcl9pbm9kZV9mbGFnKGlu b2RlLCBGSV9BVVRPX1JFQ09WRVIpOwo+ID4KPiA+IEBAIC0yMDgwLDcgKzIwNjMsNyBAQCBzdGF0 aWMgdm9pZCBmMmZzX3B1dF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKQo+ID4KPiA+ICAg ICAgICAgaWYgKGVyciB8fCBmMmZzX2NwX2Vycm9yKHNiaSkgfHwKPiA+ICAgICAgICAgICAgICAg ICB1bmxpa2VseShpc19zYmlfZmxhZ19zZXQoc2JpLCBTQklfQ1BfRElTQUJMRUQpKSkgewo+ID4g LSAgICAgICAgICAgICAgIHRydW5jYXRlX2lub2RlX3BhZ2VzX2ZpbmFsKE5PREVfTUFQUElORyhz YmkpKTsKPiA+ICsgICAgICAgICAgICAgICBmMmZzX3RydW5jYXRlX25vZGVfY2FjaGVzKHNiaSwg MCwgVUxPTkdfTUFYKTsKPiA+ICAgICAgICAgICAgICAgICBmMmZzX3RydW5jYXRlX21ldGFfY2Fj aGVzKHNiaSwgMCwgVUxPTkdfTUFYKTsKPiA+ICAgICAgICAgfQo+ID4KPiA+IEBAIC0yMDg4LDEx ICsyMDcxLDggQEAgc3RhdGljIHZvaWQgZjJmc19wdXRfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2Nr ICpzYikKPiA+Cj4gPiAgICAgICAgIGYyZnNfZGVzdHJveV9jb21wcmVzc19pbm9kZShzYmkpOwo+ ID4KPiA+IC0gICAgICAgaXB1dChzYmktPm5vZGVfaW5vZGUpOwo+ID4gLSAgICAgICBzYmktPm5v ZGVfaW5vZGUgPSBOVUxMOwo+ID4gLQo+ID4gLSAgICAgICBmMmZzX2Rlc3Ryb3lfY2FjaGUoTUVU QV9DQUNIRShzYmkpKTsKPiA+ICAgICAgICAgZjJmc19kZXN0cm95X2NhY2hlKE5PREVfQ0FDSEUo c2JpKSk7Cj4gPiArICAgICAgIGYyZnNfZGVzdHJveV9jYWNoZShNRVRBX0NBQ0hFKHNiaSkpOwo+ ID4KPiA+ICAgICAgICAgLyogU2hvdWxkIGNoZWNrIHRoZSBwYWdlIGNvdW50cyBhZnRlciBkcm9w cGluZyBhbGwgbm9kZS9tZXRhIHBhZ2VzICovCj4gPiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBO Ul9DT1VOVF9UWVBFOyBpKyspIHsKPiA+IEBAIC00NDQ1LDcgKzQ0MjUsNiBAQCBzdGF0aWMgdm9p ZCBpbml0X3NiX2luZm8oc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKQo+ID4gICAgICAgICBzYmkt PmFsbG9jYXRlX3NlY3Rpb25faGludCA9IGxlMzJfdG9fY3B1KHJhd19zdXBlci0+c2VjdGlvbl9j b3VudCk7Cj4gPiAgICAgICAgIHNiaS0+YWxsb2NhdGVfc2VjdGlvbl9wb2xpY3kgPSBBTExPQ0FU RV9GT1JXQVJEX05PSElOVDsKPiA+ICAgICAgICAgRjJGU19ST09UX0lOTyhzYmkpID0gbGUzMl90 b19jcHUocmF3X3N1cGVyLT5yb290X2lubyk7Cj4gPiAtICAgICAgIEYyRlNfTk9ERV9JTk8oc2Jp KSA9IGxlMzJfdG9fY3B1KHJhd19zdXBlci0+bm9kZV9pbm8pOwo+ID4gICAgICAgICBzYmktPmN1 cl92aWN0aW1fc2VjID0gTlVMTF9TRUNOTzsKPiA+ICAgICAgICAgc2JpLT5nY19tb2RlID0gR0Nf Tk9STUFMOwo+ID4gICAgICAgICBzYmktPm5leHRfdmljdGltX3NlZ1tCR19HQ10gPSBOVUxMX1NF R05POwo+ID4gQEAgLTUwOTYsNyArNTA3NSw3IEBAIHN0YXRpYyB2b2lkIGYyZnNfcmVzdG9yZV9k ZXZpY2VfYWxpYXMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKQo+ID4gIHsKPiA+ICAgICAgICAg c3RydWN0IGlub2RlICpyb290ID0gZF9pbm9kZShzYmktPnNiLT5zX3Jvb3QpOwo+ID4gICAgICAg ICBzdHJ1Y3QgZjJmc19kaXJfZW50cnkgKmRlOwo+ID4gLSAgICAgICBzdHJ1Y3QgZm9saW8gKmZv bGlvOwo+ID4gKyAgICAgICB2b2lkICpkZW50cnlfYmxvY2sgPSBOVUxMOwo+ID4gICAgICAgICBp bnQgaTsKPiA+Cj4gPiAgICAgICAgIGlmICghZjJmc19zYl9oYXNfZGV2aWNlX2FsaWFzKHNiaSkp Cj4gPiBAQCAtNTExMSw3ICs1MDkwLDcgQEAgc3RhdGljIHZvaWQgZjJmc19yZXN0b3JlX2Rldmlj ZV9hbGlhcyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkpCj4gPiAgICAgICAgICAgICAgICAgcXN0 ci5uYW1lID0gbmFtZTsKPiA+ICAgICAgICAgICAgICAgICBxc3RyLmxlbiA9IHN0cmxlbihuYW1l KTsKPiA+Cj4gPiAtICAgICAgICAgICAgICAgZGUgPSBmMmZzX2ZpbmRfZW50cnkocm9vdCwgJnFz dHIsICZmb2xpbyk7Cj4gPiArICAgICAgICAgICAgICAgZGUgPSBmMmZzX2ZpbmRfZW50cnkocm9v dCwgJnFzdHIsICZkZW50cnlfYmxvY2spOwo+ID4gICAgICAgICAgICAgICAgIGlmICghZGUpCj4g PiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiA+Cj4gPiBAQCAtNTEyMSw3ICs1 MTAwLDcgQEAgc3RhdGljIHZvaWQgZjJmc19yZXN0b3JlX2RldmljZV9hbGlhcyhzdHJ1Y3QgZjJm c19zYl9pbmZvICpzYmkpCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZERVYo aSkuaGFzX2FsaWFzID0gdHJ1ZTsKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGlwdXQoaW5v ZGUpOwo+ID4gICAgICAgICAgICAgICAgIH0KPiA+IC0gICAgICAgICAgICAgICBmMmZzX2ZvbGlv X3B1dChmb2xpbywgMCk7Cj4gPiArICAgICAgICAgICAgICAgZjJmc19wdXRfZGVudHJ5X2Jsb2Nr KGRlbnRyeV9ibG9jaywgZmFsc2UpOwo+ID4gICAgICAgICB9Cj4gPiAgfQo+ID4KPiA+IEBAIC01 Mzg1LDMzICs1MzY0LDI1IEBAIHN0YXRpYyBpbnQgZjJmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBl cl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYykKPiA+ICAgICAgICAgaWYgKGVycikK PiA+ICAgICAgICAgICAgICAgICBnb3RvIGZyZWVfbm07Cj4gPgo+ID4gLSAgICAgICAvKiBnZXQg YW4gaW5vZGUgZm9yIG5vZGUgc3BhY2UgKi8KPiA+IC0gICAgICAgc2JpLT5ub2RlX2lub2RlID0g ZjJmc19pZ2V0KHNiLCBGMkZTX05PREVfSU5PKHNiaSkpOwo+ID4gLSAgICAgICBpZiAoSVNfRVJS KHNiaS0+bm9kZV9pbm9kZSkpIHsKPiA+IC0gICAgICAgICAgICAgICBmMmZzX2VycihzYmksICJG YWlsZWQgdG8gcmVhZCBub2RlIGlub2RlIik7Cj4gPiAtICAgICAgICAgICAgICAgZXJyID0gUFRS X0VSUihzYmktPm5vZGVfaW5vZGUpOwo+ID4gLSAgICAgICAgICAgICAgIGdvdG8gZnJlZV9zdGF0 czsKPiA+IC0gICAgICAgfQo+ID4gLQo+ID4gICAgICAgICAvKiByZWFkIHJvb3QgaW5vZGUgYW5k IGRlbnRyeSAqLwo+ID4gICAgICAgICByb290ID0gZjJmc19pZ2V0KHNiLCBGMkZTX1JPT1RfSU5P KHNiaSkpOwo+ID4gICAgICAgICBpZiAoSVNfRVJSKHJvb3QpKSB7Cj4gPiAgICAgICAgICAgICAg ICAgZjJmc19lcnIoc2JpLCAiRmFpbGVkIHRvIHJlYWQgcm9vdCBpbm9kZSIpOwo+ID4gICAgICAg ICAgICAgICAgIGVyciA9IFBUUl9FUlIocm9vdCk7Cj4gPiAtICAgICAgICAgICAgICAgZ290byBm cmVlX25vZGVfaW5vZGU7Cj4gPiArICAgICAgICAgICAgICAgZ290byBmcmVlX2lub19lbnRyeTsK PiA+ICAgICAgICAgfQo+ID4gICAgICAgICBpZiAoIVNfSVNESVIocm9vdC0+aV9tb2RlKSB8fCAh cm9vdC0+aV9ibG9ja3MgfHwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICFyb290LT5pX3Np emUgfHwgIXJvb3QtPmlfbmxpbmspIHsKPiA+ICAgICAgICAgICAgICAgICBpcHV0KHJvb3QpOwo+ ID4gICAgICAgICAgICAgICAgIGVyciA9IC1FSU5WQUw7Cj4gPiAtICAgICAgICAgICAgICAgZ290 byBmcmVlX25vZGVfaW5vZGU7Cj4gPiArICAgICAgICAgICAgICAgZ290byBmcmVlX2lub19lbnRy eTsKPiA+ICAgICAgICAgfQo+ID4KPiA+ICAgICAgICAgZ2VuZXJpY19zZXRfc2JfZF9vcHMoc2Ip Owo+ID4gICAgICAgICBzYi0+c19yb290ID0gZF9tYWtlX3Jvb3Qocm9vdCk7IC8qIGFsbG9jYXRl IHJvb3QgZGVudHJ5ICovCj4gPiAgICAgICAgIGlmICghc2ItPnNfcm9vdCkgewo+ID4gICAgICAg ICAgICAgICAgIGVyciA9IC1FTk9NRU07Cj4gPiAtICAgICAgICAgICAgICAgZ290byBmcmVlX25v ZGVfaW5vZGU7Cj4gPiArICAgICAgICAgICAgICAgZ290byBmcmVlX2lub19lbnRyeTsKPiA+ICAg ICAgICAgfQo+ID4KPiA+ICAgICAgICAgZXJyID0gZjJmc19pbml0X2NvbXByZXNzX2lub2RlKHNi aSk7Cj4gPiBAQCAtNTU4Miw3ICs1NTUzLDcgQEAgc3RhdGljIGludCBmMmZzX2ZpbGxfc3VwZXIo c3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKQo+ID4gICAgICAg ICAgKiBTb21lIGRpcnR5IG1ldGEgcGFnZXMgY2FuIGJlIHByb2R1Y2VkIGJ5IGYyZnNfcmVjb3Zl cl9vcnBoYW5faW5vZGVzKCkKPiA+ICAgICAgICAgICogZmFpbGVkIGJ5IEVJTy4gVGhlbiwgaXB1 dChub2RlX2lub2RlKSBjYW4gdHJpZ2dlciBiYWxhbmNlX2ZzX2JnKCkKPiA+ICAgICAgICAgICog Zm9sbG93ZWQgYnkgZjJmc193cml0ZV9jaGVja3BvaW50KCkgdGhyb3VnaCBmMmZzX3dyaXRlX25v ZGVfcGFnZXMoKSwgd2hpY2gKPiA+IC0gICAgICAgICogZmFsbHMgaW50byBhbiBpbmZpbml0ZSBs b29wIGluIGYyZnNfc3luY19tZXRhX3BhZ2VzKCkuCj4gPiArICAgICAgICAqIGZhbGxzIGludG8g YW4gaW5maW5pdGUgbG9vcCBpbiBmMmZzX3N5bmNfbWV0YV9jYWNoZXMoKS4KPiA+ICAgICAgICAg ICovCj4gPiAgICAgICAgIGYyZnNfdHJ1bmNhdGVfbWV0YV9jYWNoZXMoc2JpLCAwLCBVTE9OR19N QVgpOwo+ID4gICAgICAgICAvKiBldmljdCBzb21lIGlub2RlcyBiZWluZyBjYWNoZWQgYnkgR0Mg Ki8KPiA+IEBAIC01NTkzLDEyICs1NTY0LDkgQEAgc3RhdGljIGludCBmMmZzX2ZpbGxfc3VwZXIo c3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKQo+ID4gIGZyZWVf cm9vdF9pbm9kZToKPiA+ICAgICAgICAgZHB1dChzYi0+c19yb290KTsKPiA+ICAgICAgICAgc2It PnNfcm9vdCA9IE5VTEw7Cj4gPiAtZnJlZV9ub2RlX2lub2RlOgo+ID4gK2ZyZWVfaW5vX2VudHJ5 Ogo+ID4gICAgICAgICBmMmZzX3JlbGVhc2VfaW5vX2VudHJ5KHNiaSwgdHJ1ZSk7Cj4gPiAtICAg ICAgIHRydW5jYXRlX2lub2RlX3BhZ2VzX2ZpbmFsKE5PREVfTUFQUElORyhzYmkpKTsKPiA+IC0g ICAgICAgaXB1dChzYmktPm5vZGVfaW5vZGUpOwo+ID4gLSAgICAgICBzYmktPm5vZGVfaW5vZGUg PSBOVUxMOwo+ID4gLWZyZWVfc3RhdHM6Cj4gPiArICAgICAgIGYyZnNfdHJ1bmNhdGVfbm9kZV9j YWNoZXMoc2JpLCAwLCBVTE9OR19NQVgpOwo+ID4gICAgICAgICBmMmZzX2Rlc3Ryb3lfc3RhdHMo c2JpKTsKPiA+ICBmcmVlX25tOgo+ID4gICAgICAgICAvKiBzdG9wIGRpc2NhcmQgdGhyZWFkIGJl Zm9yZSBkZXN0cm95aW5nIG5vZGUgbWFuYWdlciAqLwo+ID4gZGlmZiAtLWdpdCBhL2ZzL2YyZnMv eGF0dHIuYyBiL2ZzL2YyZnMveGF0dHIuYwo+ID4gaW5kZXggOTgwNTllNTgzYjA5Li40MzI4Yzlk OWRlNDUgMTAwNjQ0Cj4gPiAtLS0gYS9mcy9mMmZzL3hhdHRyLmMKPiA+ICsrKyBiL2ZzL2YyZnMv eGF0dHIuYwo+ID4gQEAgLTEzOCw3ICsxMzgsNyBAQCBzdGF0aWMgaW50IGYyZnNfeGF0dHJfYWR2 aXNlX3NldChjb25zdCBzdHJ1Y3QgeGF0dHJfaGFuZGxlciAqaGFuZGxlciwKPiA+Cj4gPiAgI2lm ZGVmIENPTkZJR19GMkZTX0ZTX1NFQ1VSSVRZCj4gPiAgc3RhdGljIGludCBmMmZzX2luaXR4YXR0 cnMoc3RydWN0IGlub2RlICppbm9kZSwgY29uc3Qgc3RydWN0IHhhdHRyICp4YXR0cl9hcnJheSwK PiA+IC0gICAgICAgICAgICAgICB2b2lkICpmb2xpbykKPiA+ICsgICAgICAgICAgICAgICB2b2lk ICpmc19kYXRhKQo+ID4gIHsKPiA+ICAgICAgICAgY29uc3Qgc3RydWN0IHhhdHRyICp4YXR0cjsK PiA+ICAgICAgICAgaW50IGVyciA9IDA7Cj4gPiBAQCAtMTQ2LDcgKzE0Niw3IEBAIHN0YXRpYyBp bnQgZjJmc19pbml0eGF0dHJzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IHN0cnVjdCB4YXR0 ciAqeGF0dHJfYXJyYXksCj4gPiAgICAgICAgIGZvciAoeGF0dHIgPSB4YXR0cl9hcnJheTsgeGF0 dHItPm5hbWUgIT0gTlVMTDsgeGF0dHIrKykgewo+ID4gICAgICAgICAgICAgICAgIGVyciA9IGYy ZnNfc2V0eGF0dHIoaW5vZGUsIEYyRlNfWEFUVFJfSU5ERVhfU0VDVVJJVFksCj4gPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHhhdHRyLT5uYW1lLCB4YXR0ci0+dmFsdWUsCj4gPiAt ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhhdHRyLT52YWx1ZV9sZW4sIGZvbGlvLCAw KTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGF0dHItPnZhbHVlX2xlbiwg ZnNfZGF0YSwgMCk7Cj4gPiAgICAgICAgICAgICAgICAgaWYgKGVyciA8IDApCj4gPiAgICAgICAg ICAgICAgICAgICAgICAgICBicmVhazsKPiA+ICAgICAgICAgfQo+ID4gQEAgLTE1NCwxMCArMTU0 LDEwIEBAIHN0YXRpYyBpbnQgZjJmc19pbml0eGF0dHJzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNv bnN0IHN0cnVjdCB4YXR0ciAqeGF0dHJfYXJyYXksCj4gPiAgfQo+ID4KPiA+ICBpbnQgZjJmc19p bml0X3NlY3VyaXR5KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBpbm9kZSAqZGlyLAo+ID4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcXN0ciAqcXN0ciwg c3RydWN0IGZvbGlvICppZm9saW8pCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IHN0cnVjdCBxc3RyICpxc3RyLCBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmllbnRy eSkKPiA+ICB7Cj4gPiAgICAgICAgIHJldHVybiBzZWN1cml0eV9pbm9kZV9pbml0X3NlY3VyaXR5 KGlub2RlLCBkaXIsIHFzdHIsCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYy ZnNfaW5pdHhhdHRycywgaWZvbGlvKTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZjJmc19pbml0eGF0dHJzLCBpZW50cnkpOwo+ID4gIH0KPiA+ICAjZW5kaWYKPiA+Cj4gPiBA QCAtMjczLDI1ICsyNzMsMjUgQEAgc3RhdGljIHN0cnVjdCBmMmZzX3hhdHRyX2VudHJ5ICpfX2Zp bmRfaW5saW5lX3hhdHRyKHN0cnVjdCBpbm9kZSAqaW5vZGUsCj4gPiAgICAgICAgIHJldHVybiBl bnRyeTsKPiA+ICB9Cj4gPgo+ID4gLXN0YXRpYyBpbnQgcmVhZF9pbmxpbmVfeGF0dHIoc3RydWN0 IGlub2RlICppbm9kZSwgc3RydWN0IGZvbGlvICppZm9saW8sCj4gPiArc3RhdGljIGludCByZWFk X2lubGluZV94YXR0cihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxv Y2sgKmllbnRyeSwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdm9pZCAqdHhhdHRyX2FkZHIpCj4gPiAgewo+ID4gICAgICAgICBzdHJ1 Y3QgZjJmc19zYl9pbmZvICpzYmkgPSBGMkZTX0lfU0IoaW5vZGUpOwo+ID4gICAgICAgICB1bnNp Z25lZCBpbnQgaW5saW5lX3NpemUgPSBpbmxpbmVfeGF0dHJfc2l6ZShpbm9kZSk7Cj4gPiAtICAg ICAgIHN0cnVjdCBmb2xpbyAqZm9saW8gPSBOVUxMOwo+ID4gKyAgICAgICBzdHJ1Y3QgZjJmc19j YWNoZWRfYmxvY2sgKmluX2VudHJ5ID0gTlVMTDsKPiA+ICAgICAgICAgdm9pZCAqaW5saW5lX2Fk ZHI7Cj4gPgo+ID4gLSAgICAgICBpZiAoaWZvbGlvKSB7Cj4gPiAtICAgICAgICAgICAgICAgaW5s aW5lX2FkZHIgPSBpbmxpbmVfeGF0dHJfYWRkcihpbm9kZSwgaWZvbGlvKTsKPiA+ICsgICAgICAg aWYgKGllbnRyeSkgewo+ID4gKyAgICAgICAgICAgICAgIGlubGluZV9hZGRyID0gaW5saW5lX3hh dHRyX2FkZHIoaW5vZGUsIGllbnRyeSk7Cj4gPiAgICAgICAgIH0gZWxzZSB7Cj4gPiAtICAgICAg ICAgICAgICAgZm9saW8gPSBmMmZzX2dldF9pbm9kZV9mb2xpbyhzYmksIGlub2RlLT5pX2lubyk7 Cj4gPiAtICAgICAgICAgICAgICAgaWYgKElTX0VSUihmb2xpbykpCj4gPiAtICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gUFRSX0VSUihmb2xpbyk7Cj4gPiArICAgICAgICAgICAgICAgaW5f ZW50cnkgPSBmMmZzX2dldF9pbm9kZV9jYWNoZShzYmksIGlub2RlLT5pX2lubyk7Cj4gPiArICAg ICAgICAgICAgICAgaWYgKElTX0VSUihpbl9lbnRyeSkpCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICByZXR1cm4gUFRSX0VSUihpbl9lbnRyeSk7Cj4gPgo+ID4gLSAgICAgICAgICAgICAgIGlu bGluZV9hZGRyID0gaW5saW5lX3hhdHRyX2FkZHIoaW5vZGUsIGZvbGlvKTsKPiA+ICsgICAgICAg ICAgICAgICBpbmxpbmVfYWRkciA9IGlubGluZV94YXR0cl9hZGRyKGlub2RlLCBpbl9lbnRyeSk7 Cj4gPiAgICAgICAgIH0KPiA+ICAgICAgICAgbWVtY3B5KHR4YXR0cl9hZGRyLCBpbmxpbmVfYWRk ciwgaW5saW5lX3NpemUpOwo+ID4gLSAgICAgICBmMmZzX2ZvbGlvX3B1dChmb2xpbywgdHJ1ZSk7 Cj4gPiArICAgICAgIGYyZnNfcHV0X2NhY2hlKGluX2VudHJ5LCB0cnVlKTsKPiA+Cj4gPiAgICAg ICAgIHJldHVybiAwOwo+ID4gIH0KPiA+IEBAIC0zMDEsMjMgKzMwMSwyMyBAQCBzdGF0aWMgaW50 IHJlYWRfeGF0dHJfYmxvY2soc3RydWN0IGlub2RlICppbm9kZSwgdm9pZCAqdHhhdHRyX2FkZHIp Cj4gPiAgICAgICAgIHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSA9IEYyRlNfSV9TQihpbm9kZSk7 Cj4gPiAgICAgICAgIG5pZF90IHhuaWQgPSBGMkZTX0koaW5vZGUpLT5pX3hhdHRyX25pZDsKPiA+ ICAgICAgICAgdW5zaWduZWQgaW50IGlubGluZV9zaXplID0gaW5saW5lX3hhdHRyX3NpemUoaW5v ZGUpOwo+ID4gLSAgICAgICBzdHJ1Y3QgZm9saW8gKnhmb2xpbzsKPiA+ICsgICAgICAgc3RydWN0 IGYyZnNfY2FjaGVkX2Jsb2NrICp4ZW50cnk7Cj4gPiAgICAgICAgIHZvaWQgKnhhdHRyX2FkZHI7 Cj4gPgo+ID4gICAgICAgICAvKiBUaGUgaW5vZGUgYWxyZWFkeSBoYXMgYW4gZXh0ZW5kZWQgYXR0 cmlidXRlIGJsb2NrLiAqLwo+ID4gLSAgICAgICB4Zm9saW8gPSBmMmZzX2dldF94bm9kZV9mb2xp byhzYmksIHhuaWQpOwo+ID4gLSAgICAgICBpZiAoSVNfRVJSKHhmb2xpbykpCj4gPiAtICAgICAg ICAgICAgICAgcmV0dXJuIFBUUl9FUlIoeGZvbGlvKTsKPiA+ICsgICAgICAgeGVudHJ5ID0gZjJm c19nZXRfeG5vZGVfY2FjaGUoc2JpLCB4bmlkKTsKPiA+ICsgICAgICAgaWYgKElTX0VSUih4ZW50 cnkpKQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKHhlbnRyeSk7Cj4gPgo+ID4g LSAgICAgICB4YXR0cl9hZGRyID0gZm9saW9fYWRkcmVzcyh4Zm9saW8pOwo+ID4gKyAgICAgICB4 YXR0cl9hZGRyID0gY2FjaGVfYWRkcmVzcyh4ZW50cnkpOwo+ID4gICAgICAgICBtZW1jcHkodHhh dHRyX2FkZHIgKyBpbmxpbmVfc2l6ZSwgeGF0dHJfYWRkciwKPiA+ICAgICAgICAgICAgICAgIFZB TElEX1hBVFRSX0JMT0NLX1NJWkUoaW5vZGUpKTsKPiA+IC0gICAgICAgZjJmc19mb2xpb19wdXQo eGZvbGlvLCB0cnVlKTsKPiA+ICsgICAgICAgZjJmc19wdXRfY2FjaGUoeGVudHJ5LCB0cnVlKTsK PiA+Cj4gPiAgICAgICAgIHJldHVybiAwOwo+ID4gIH0KPiA+Cj4gPiAtc3RhdGljIGludCBsb29r dXBfYWxsX3hhdHRycyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZm9saW8gKmlmb2xpbywK PiA+ICtzdGF0aWMgaW50IGxvb2t1cF9hbGxfeGF0dHJzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0 cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqaWVudHJ5LAo+ID4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBpbnQgaW5kZXgsIHVuc2lnbmVkIGludCBsZW4sCj4gPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBmMmZz X3hhdHRyX2VudHJ5ICoqeGUsCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZv aWQgKipiYXNlX2FkZHIsIGludCAqYmFzZV9zaXplLAo+ID4gQEAgLTM0MSw3ICszNDEsNyBAQCBz dGF0aWMgaW50IGxvb2t1cF9hbGxfeGF0dHJzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBm b2xpbyAqaWZvbGlvLAo+ID4KPiA+ICAgICAgICAgLyogcmVhZCBmcm9tIGlubGluZSB4YXR0ciAq Lwo+ID4gICAgICAgICBpZiAoaW5saW5lX3NpemUpIHsKPiA+IC0gICAgICAgICAgICAgICBlcnIg PSByZWFkX2lubGluZV94YXR0cihpbm9kZSwgaWZvbGlvLCB0eGF0dHJfYWRkcik7Cj4gPiArICAg ICAgICAgICAgICAgZXJyID0gcmVhZF9pbmxpbmVfeGF0dHIoaW5vZGUsIGllbnRyeSwgdHhhdHRy X2FkZHIpOwo+ID4gICAgICAgICAgICAgICAgIGlmIChlcnIpCj4gPiAgICAgICAgICAgICAgICAg ICAgICAgICBnb3RvIG91dDsKPiA+Cj4gPiBAQCAtMzg5LDcgKzM4OSw3IEBAIHN0YXRpYyBpbnQg bG9va3VwX2FsbF94YXR0cnMoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZvbGlvICppZm9s aW8sCj4gPiAgICAgICAgIHJldHVybiBlcnI7Cj4gPiAgfQo+ID4KPiA+IC1zdGF0aWMgaW50IHJl YWRfYWxsX3hhdHRycyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZm9saW8gKmlmb2xpbywK PiA+ICtzdGF0aWMgaW50IHJlYWRfYWxsX3hhdHRycyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1 Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmllbnRyeSwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKmJhc2VfYWRkcikKPiA+ICB7 Cj4gPiAgICAgICAgIHN0cnVjdCBmMmZzX3hhdHRyX2hlYWRlciAqaGVhZGVyOwo+ID4gQEAgLTQw Niw3ICs0MDYsNyBAQCBzdGF0aWMgaW50IHJlYWRfYWxsX3hhdHRycyhzdHJ1Y3QgaW5vZGUgKmlu b2RlLCBzdHJ1Y3QgZm9saW8gKmlmb2xpbywKPiA+Cj4gPiAgICAgICAgIC8qIHJlYWQgZnJvbSBp bmxpbmUgeGF0dHIgKi8KPiA+ICAgICAgICAgaWYgKGlubGluZV9zaXplKSB7Cj4gPiAtICAgICAg ICAgICAgICAgZXJyID0gcmVhZF9pbmxpbmVfeGF0dHIoaW5vZGUsIGlmb2xpbywgdHhhdHRyX2Fk ZHIpOwo+ID4gKyAgICAgICAgICAgICAgIGVyciA9IHJlYWRfaW5saW5lX3hhdHRyKGlub2RlLCBp ZW50cnksIHR4YXR0cl9hZGRyKTsKPiA+ICAgICAgICAgICAgICAgICBpZiAoZXJyKQo+ID4gICAg ICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsOwo+ID4gICAgICAgICB9Cj4gPiBAQCAtNDMz LDE0ICs0MzMsMTQgQEAgc3RhdGljIGludCByZWFkX2FsbF94YXR0cnMoc3RydWN0IGlub2RlICpp bm9kZSwgc3RydWN0IGZvbGlvICppZm9saW8sCj4gPiAgfQo+ID4KPiA+ICBzdGF0aWMgaW5saW5l IGludCB3cml0ZV9hbGxfeGF0dHJzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIF9fdTMyIGhzaXplLAo+ ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp0eGF0dHJfYWRkciwgc3Ry dWN0IGZvbGlvICppZm9saW8pCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZv aWQgKnR4YXR0cl9hZGRyLCBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmllbnRyeSkKPiA+ICB7 Cj4gPiAgICAgICAgIHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSA9IEYyRlNfSV9TQihpbm9kZSk7 Cj4gPiAgICAgICAgIHNpemVfdCBpbmxpbmVfc2l6ZSA9IGlubGluZV94YXR0cl9zaXplKGlub2Rl KTsKPiA+IC0gICAgICAgc3RydWN0IGZvbGlvICppbl9mb2xpbyA9IE5VTEw7Cj4gPiArICAgICAg IHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqaW5fZW50cnkgPSBOVUxMOwo+ID4gICAgICAgICB2 b2lkICp4YXR0cl9hZGRyOwo+ID4gICAgICAgICB2b2lkICppbmxpbmVfYWRkciA9IE5VTEw7Cj4g PiAtICAgICAgIHN0cnVjdCBmb2xpbyAqeGZvbGlvOwo+ID4gKyAgICAgICBzdHJ1Y3QgZjJmc19j YWNoZWRfYmxvY2sgKnhlbnRyeTsKPiA+ICAgICAgICAgbmlkX3QgbmV3X25pZCA9IDA7Cj4gPiAg ICAgICAgIGludCBlcnIgPSAwOwo+ID4KPiA+IEBAIC00NTAsNTYgKzQ1MCw1NSBAQCBzdGF0aWMg aW5saW5lIGludCB3cml0ZV9hbGxfeGF0dHJzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIF9fdTMyIGhz aXplLAo+ID4KPiA+ICAgICAgICAgLyogd3JpdGUgdG8gaW5saW5lIHhhdHRyICovCj4gPiAgICAg ICAgIGlmIChpbmxpbmVfc2l6ZSkgewo+ID4gLSAgICAgICAgICAgICAgIGlmIChpZm9saW8pIHsK PiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGlubGluZV9hZGRyID0gaW5saW5lX3hhdHRyX2Fk ZHIoaW5vZGUsIGlmb2xpbyk7Cj4gPiArICAgICAgICAgICAgICAgaWYgKGllbnRyeSkgewo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lX2FkZHIgPSBpbmxpbmVfeGF0dHJfYWRkcihp bm9kZSwgaWVudHJ5KTsKPiA+ICAgICAgICAgICAgICAgICB9IGVsc2Ugewo+ID4gLSAgICAgICAg ICAgICAgICAgICAgICAgaW5fZm9saW8gPSBmMmZzX2dldF9pbm9kZV9mb2xpbyhzYmksIGlub2Rl LT5pX2lubyk7Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBpZiAoSVNfRVJSKGluX2ZvbGlv KSkgewo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaW5fZW50cnkgPSBmMmZzX2dldF9pbm9k ZV9jYWNoZShzYmksIGlub2RlLT5pX2lubyk7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBp ZiAoSVNfRVJSKGluX2VudHJ5KSkgewo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBmMmZzX2FsbG9jX25pZF9mYWlsZWQoc2JpLCBuZXdfbmlkKTsKPiA+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIoaW5fZm9saW8pOwo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihpbl9lbnRyeSk7Cj4gPiAgICAg ICAgICAgICAgICAgICAgICAgICB9Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVf YWRkciA9IGlubGluZV94YXR0cl9hZGRyKGlub2RlLCBpbl9mb2xpbyk7Cj4gPiArICAgICAgICAg ICAgICAgICAgICAgICBpbmxpbmVfYWRkciA9IGlubGluZV94YXR0cl9hZGRyKGlub2RlLCBpbl9l bnRyeSk7Cj4gPiAgICAgICAgICAgICAgICAgfQo+ID4KPiA+IC0gICAgICAgICAgICAgICBmMmZz X2ZvbGlvX3dhaXRfd3JpdGViYWNrKGlmb2xpbyA/IGlmb2xpbyA6IGluX2ZvbGlvLAo+ID4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOT0RF LCB0cnVlLCB0cnVlKTsKPiA+ICsgICAgICAgICAgICAgICBmMmZzX2NhY2hlX3dhaXRfd3JpdGVi YWNrKGllbnRyeSA/IGllbnRyeSA6IGluX2VudHJ5KTsKPiA+ICAgICAgICAgICAgICAgICAvKiBu byBuZWVkIHRvIHVzZSB4YXR0ciBub2RlIGJsb2NrICovCj4gPiAgICAgICAgICAgICAgICAgaWYg KGhzaXplIDw9IGlubGluZV9zaXplKSB7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBlcnIg PSBmMmZzX3RydW5jYXRlX3hhdHRyX25vZGUoaW5vZGUpOwo+ID4gICAgICAgICAgICAgICAgICAg ICAgICAgZjJmc19hbGxvY19uaWRfZmFpbGVkKHNiaSwgbmV3X25pZCk7Cj4gPiAgICAgICAgICAg ICAgICAgICAgICAgICBpZiAoZXJyKSB7Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGYyZnNfZm9saW9fcHV0KGluX2ZvbGlvLCB0cnVlKTsKPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZjJmc19wdXRfY2FjaGUoaW5fZW50cnksIHRydWUpOwo+ID4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyOwo+ID4gICAgICAgICAgICAgICAg ICAgICAgICAgfQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgbWVtY3B5KGlubGluZV9hZGRy LCB0eGF0dHJfYWRkciwgaW5saW5lX3NpemUpOwo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAg Zm9saW9fbWFya19kaXJ0eShpZm9saW8gPyBpZm9saW8gOiBpbl9mb2xpbyk7Cj4gPiArICAgICAg ICAgICAgICAgICAgICAgICBmMmZzX21hcmtfY2FjaGVfZGlydHkoaWVudHJ5ID8gaWVudHJ5IDog aW5fZW50cnkpOwo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgZ290byBpbl9wYWdlX291dDsK PiA+ICAgICAgICAgICAgICAgICB9Cj4gPiAgICAgICAgIH0KPiA+Cj4gPiAgICAgICAgIC8qIHdy aXRlIHRvIHhhdHRyIG5vZGUgYmxvY2sgKi8KPiA+ICAgICAgICAgaWYgKEYyRlNfSShpbm9kZSkt PmlfeGF0dHJfbmlkKSB7Cj4gPiAtICAgICAgICAgICAgICAgeGZvbGlvID0gZjJmc19nZXRfeG5v ZGVfZm9saW8oc2JpLCBGMkZTX0koaW5vZGUpLT5pX3hhdHRyX25pZCk7Cj4gPiAtICAgICAgICAg ICAgICAgaWYgKElTX0VSUih4Zm9saW8pKSB7Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBl cnIgPSBQVFJfRVJSKHhmb2xpbyk7Cj4gPiArICAgICAgICAgICAgICAgeGVudHJ5ID0gZjJmc19n ZXRfeG5vZGVfY2FjaGUoc2JpLCBGMkZTX0koaW5vZGUpLT5pX3hhdHRyX25pZCk7Cj4gPiArICAg ICAgICAgICAgICAgaWYgKElTX0VSUih4ZW50cnkpKSB7Cj4gPiArICAgICAgICAgICAgICAgICAg ICAgICBlcnIgPSBQVFJfRVJSKHhlbnRyeSk7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBm MmZzX2FsbG9jX25pZF9mYWlsZWQoc2JpLCBuZXdfbmlkKTsKPiA+ICAgICAgICAgICAgICAgICAg ICAgICAgIGdvdG8gaW5fcGFnZV9vdXQ7Cj4gPiAgICAgICAgICAgICAgICAgfQo+ID4gICAgICAg ICAgICAgICAgIGYyZnNfYnVnX29uKHNiaSwgbmV3X25pZCk7Cj4gPiAtICAgICAgICAgICAgICAg ZjJmc19mb2xpb193YWl0X3dyaXRlYmFjayh4Zm9saW8sIE5PREUsIHRydWUsIHRydWUpOwo+ID4g KyAgICAgICAgICAgICAgIGYyZnNfY2FjaGVfd2FpdF93cml0ZWJhY2soeGVudHJ5KTsKPiA+ICAg ICAgICAgfSBlbHNlIHsKPiA+ICAgICAgICAgICAgICAgICBzdHJ1Y3QgZG5vZGVfb2ZfZGF0YSBk bjsKPiA+Cj4gPiAgICAgICAgICAgICAgICAgc2V0X25ld19kbm9kZSgmZG4sIGlub2RlLCBOVUxM LCBOVUxMLCBuZXdfbmlkKTsKPiA+IC0gICAgICAgICAgICAgICB4Zm9saW8gPSBmMmZzX25ld19u b2RlX2ZvbGlvKCZkbiwgWEFUVFJfTk9ERV9PRkZTRVQpOwo+ID4gLSAgICAgICAgICAgICAgIGlm IChJU19FUlIoeGZvbGlvKSkgewo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gUFRS X0VSUih4Zm9saW8pOwo+ID4gKyAgICAgICAgICAgICAgIHhlbnRyeSA9IGYyZnNfbmV3X25vZGVf Y2FjaGUoJmRuLCBYQVRUUl9OT0RFX09GRlNFVCk7Cj4gPiArICAgICAgICAgICAgICAgaWYgKElT X0VSUih4ZW50cnkpKSB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSBQVFJfRVJS KHhlbnRyeSk7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBmMmZzX2FsbG9jX25pZF9mYWls ZWQoc2JpLCBuZXdfbmlkKTsKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gaW5fcGFn ZV9vdXQ7Cj4gPiAgICAgICAgICAgICAgICAgfQo+ID4gICAgICAgICAgICAgICAgIGYyZnNfYWxs b2NfbmlkX2RvbmUoc2JpLCBuZXdfbmlkKTsKPiA+ICAgICAgICAgfQo+ID4gLSAgICAgICB4YXR0 cl9hZGRyID0gZm9saW9fYWRkcmVzcyh4Zm9saW8pOwo+ID4gKyAgICAgICB4YXR0cl9hZGRyID0g Y2FjaGVfYWRkcmVzcyh4ZW50cnkpOwo+ID4KPiA+ICAgICAgICAgaWYgKGlubGluZV9zaXplKQo+ ID4gICAgICAgICAgICAgICAgIG1lbWNweShpbmxpbmVfYWRkciwgdHhhdHRyX2FkZHIsIGlubGlu ZV9zaXplKTsKPiA+IEBAIC01MDcsMTkgKzUwNiwxOSBAQCBzdGF0aWMgaW5saW5lIGludCB3cml0 ZV9hbGxfeGF0dHJzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIF9fdTMyIGhzaXplLAo+ID4gICAgICAg ICAgICAgICAgVkFMSURfWEFUVFJfQkxPQ0tfU0laRShpbm9kZSkpOwo+ID4KPiA+ICAgICAgICAg aWYgKGlubGluZV9zaXplKQo+ID4gLSAgICAgICAgICAgICAgIGZvbGlvX21hcmtfZGlydHkoaWZv bGlvID8gaWZvbGlvIDogaW5fZm9saW8pOwo+ID4gLSAgICAgICBmb2xpb19tYXJrX2RpcnR5KHhm b2xpbyk7Cj4gPiArICAgICAgICAgICAgICAgZjJmc19tYXJrX2NhY2hlX2RpcnR5KGllbnRyeSA/ IGllbnRyeSA6IGluX2VudHJ5KTsKPiA+ICsgICAgICAgZjJmc19tYXJrX2NhY2hlX2RpcnR5KHhl bnRyeSk7Cj4gPgo+ID4gLSAgICAgICBmMmZzX2ZvbGlvX3B1dCh4Zm9saW8sIHRydWUpOwo+ID4g KyAgICAgICBmMmZzX3B1dF9jYWNoZSh4ZW50cnksIHRydWUpOwo+ID4gIGluX3BhZ2Vfb3V0Ogo+ ID4gLSAgICAgICBmMmZzX2ZvbGlvX3B1dChpbl9mb2xpbywgdHJ1ZSk7Cj4gPiArICAgICAgIGYy ZnNfcHV0X2NhY2hlKGluX2VudHJ5LCB0cnVlKTsKPiA+ICAgICAgICAgcmV0dXJuIGVycjsKPiA+ ICB9Cj4gPgo+ID4gIGludCBmMmZzX2dldHhhdHRyKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBp bmRleCwgY29uc3QgY2hhciAqbmFtZSwKPiA+IC0gICAgICAgICAgICAgICB2b2lkICpidWZmZXIs IHNpemVfdCBidWZmZXJfc2l6ZSwgc3RydWN0IGZvbGlvICppZm9saW8pCj4gPiArICAgICAgICAg ICAgICAgdm9pZCAqYnVmZmVyLCBzaXplX3QgYnVmZmVyX3NpemUsIHN0cnVjdCBmMmZzX2NhY2hl ZF9ibG9jayAqaWVudHJ5KQo+ID4gIHsKPiA+IC0gICAgICAgc3RydWN0IGYyZnNfeGF0dHJfZW50 cnkgKmVudHJ5ID0gTlVMTDsKPiA+ICsgICAgICAgc3RydWN0IGYyZnNfeGF0dHJfZW50cnkgKnhl ID0gTlVMTDsKPiA+ICAgICAgICAgaW50IGVycm9yOwo+ID4gICAgICAgICB1bnNpZ25lZCBpbnQg c2l6ZSwgbGVuOwo+ID4gICAgICAgICB2b2lkICpiYXNlX2FkZHIgPSBOVUxMOwo+ID4gQEAgLTUz MywxNiArNTMyLDE2IEBAIGludCBmMmZzX2dldHhhdHRyKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGlu dCBpbmRleCwgY29uc3QgY2hhciAqbmFtZSwKPiA+ICAgICAgICAgaWYgKGxlbiA+IEYyRlNfTkFN RV9MRU4pCj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuIC1FUkFOR0U7Cj4gPgo+ID4gLSAgICAg ICBpZiAoIWlmb2xpbykKPiA+ICsgICAgICAgaWYgKCFpZW50cnkpCj4gPiAgICAgICAgICAgICAg ICAgZjJmc19kb3duX3JlYWQoJkYyRlNfSShpbm9kZSktPmlfeGF0dHJfc2VtKTsKPiA+IC0gICAg ICAgZXJyb3IgPSBsb29rdXBfYWxsX3hhdHRycyhpbm9kZSwgaWZvbGlvLCBpbmRleCwgbGVuLCBu YW1lLAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZW50cnksICZiYXNlX2Fk ZHIsICZiYXNlX3NpemUsICZpc19pbmxpbmUpOwo+ID4gLSAgICAgICBpZiAoIWlmb2xpbykKPiA+ ICsgICAgICAgZXJyb3IgPSBsb29rdXBfYWxsX3hhdHRycyhpbm9kZSwgaWVudHJ5LCBpbmRleCwg bGVuLCBuYW1lLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmeGUsICZiYXNl X2FkZHIsICZiYXNlX3NpemUsICZpc19pbmxpbmUpOwo+ID4gKyAgICAgICBpZiAoIWllbnRyeSkK PiA+ICAgICAgICAgICAgICAgICBmMmZzX3VwX3JlYWQoJkYyRlNfSShpbm9kZSktPmlfeGF0dHJf c2VtKTsKPiA+ICAgICAgICAgaWYgKGVycm9yKQo+ID4gICAgICAgICAgICAgICAgIHJldHVybiBl cnJvcjsKPiA+Cj4gPiAtICAgICAgIHNpemUgPSBsZTE2X3RvX2NwdShlbnRyeS0+ZV92YWx1ZV9z aXplKTsKPiA+ICsgICAgICAgc2l6ZSA9IGxlMTZfdG9fY3B1KHhlLT5lX3ZhbHVlX3NpemUpOwo+ ID4KPiA+ICAgICAgICAgaWYgKGJ1ZmZlciAmJiBzaXplID4gYnVmZmVyX3NpemUpIHsKPiA+ICAg ICAgICAgICAgICAgICBlcnJvciA9IC1FUkFOR0U7Cj4gPiBAQCAtNTUwLDcgKzU0OSw3IEBAIGlu dCBmMmZzX2dldHhhdHRyKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBpbmRleCwgY29uc3QgY2hh ciAqbmFtZSwKPiA+ICAgICAgICAgfQo+ID4KPiA+ICAgICAgICAgaWYgKGJ1ZmZlcikgewo+ID4g LSAgICAgICAgICAgICAgIGNoYXIgKnB2YWwgPSBlbnRyeS0+ZV9uYW1lICsgZW50cnktPmVfbmFt ZV9sZW47Cj4gPiArICAgICAgICAgICAgICAgY2hhciAqcHZhbCA9IHhlLT5lX25hbWUgKyB4ZS0+ ZV9uYW1lX2xlbjsKPiA+Cj4gPiAgICAgICAgICAgICAgICAgaWYgKGJhc2Vfc2l6ZSAtIChwdmFs IC0gKGNoYXIgKiliYXNlX2FkZHIpIDwgc2l6ZSkgewo+ID4gICAgICAgICAgICAgICAgICAgICAg ICAgZXJyb3IgPSAtRVJBTkdFOwo+ID4gQEAgLTYzNCw3ICs2MzMsNyBAQCBzdGF0aWMgYm9vbCBm MmZzX3hhdHRyX3ZhbHVlX3NhbWUoc3RydWN0IGYyZnNfeGF0dHJfZW50cnkgKmVudHJ5LAo+ID4K PiA+ICBzdGF0aWMgaW50IF9fZjJmc19zZXR4YXR0cihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQg aW5kZXgsCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLCBjb25z dCB2b2lkICp2YWx1ZSwgc2l6ZV90IHNpemUsCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgZm9saW8gKmlmb2xpbywgaW50IGZsYWdzKQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICppZW50cnksIGludCBmbGFncykKPiA+ICB7Cj4g PiAgICAgICAgIHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSA9IEYyRlNfSV9TQihpbm9kZSk7Cj4g PiAgICAgICAgIHN0cnVjdCBmMmZzX3hhdHRyX2VudHJ5ICpoZXJlLCAqbGFzdDsKPiA+IEBAIC02 NTgsNyArNjU3LDcgQEAgc3RhdGljIGludCBfX2YyZnNfc2V0eGF0dHIoc3RydWN0IGlub2RlICpp bm9kZSwgaW50IGluZGV4LAo+ID4gICAgICAgICBpZiAoc2l6ZSA+IE1BWF9WQUxVRV9MRU4oaW5v ZGUpKQo+ID4gICAgICAgICAgICAgICAgIHJldHVybiAtRTJCSUc7Cj4gPiAgcmV0cnk6Cj4gPiAt ICAgICAgIGVycm9yID0gcmVhZF9hbGxfeGF0dHJzKGlub2RlLCBpZm9saW8sICZiYXNlX2FkZHIp Owo+ID4gKyAgICAgICBlcnJvciA9IHJlYWRfYWxsX3hhdHRycyhpbm9kZSwgaWVudHJ5LCAmYmFz ZV9hZGRyKTsKPiA+ICAgICAgICAgaWYgKGVycm9yKQo+ID4gICAgICAgICAgICAgICAgIHJldHVy biBlcnJvcjsKPiA+Cj4gPiBAQCAtNzc1LDcgKzc3NCw3IEBAIHN0YXRpYyBpbnQgX19mMmZzX3Nl dHhhdHRyKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBpbmRleCwKPiA+ICAgICAgICAgICAgICAg ICAqKHUzMiAqKSgodTggKilsYXN0ICsgbmV3c2l6ZSkgPSAwOwo+ID4gICAgICAgICB9Cj4gPgo+ ID4gLSAgICAgICBlcnJvciA9IHdyaXRlX2FsbF94YXR0cnMoaW5vZGUsIG5ld19oc2l6ZSwgYmFz ZV9hZGRyLCBpZm9saW8pOwo+ID4gKyAgICAgICBlcnJvciA9IHdyaXRlX2FsbF94YXR0cnMoaW5v ZGUsIG5ld19oc2l6ZSwgYmFzZV9hZGRyLCBpZW50cnkpOwo+ID4gICAgICAgICBpZiAoZXJyb3Ip Cj4gPiAgICAgICAgICAgICAgICAgZ290byBleGl0Owo+ID4KPiA+IEBAIC04MDksNyArODA4LDcg QEAgc3RhdGljIGludCBfX2YyZnNfc2V0eGF0dHIoc3RydWN0IGlub2RlICppbm9kZSwgaW50IGlu ZGV4LAo+ID4KPiA+ICBpbnQgZjJmc19zZXR4YXR0cihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQg aW5kZXgsIGNvbnN0IGNoYXIgKm5hbWUsCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHZvaWQgKnZhbHVlLCBzaXplX3Qgc2l6ZSwKPiA+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IGZvbGlvICppZm9saW8sIGludCBmbGFncykKPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGYyZnNfY2FjaGVkX2Jsb2NrICppZW50 cnksIGludCBmbGFncykKPiA+ICB7Cj4gPiAgICAgICAgIHN0cnVjdCBmMmZzX3NiX2luZm8gKnNi aSA9IEYyRlNfSV9TQihpbm9kZSk7Cj4gPiAgICAgICAgIHN0cnVjdCBmMmZzX2xvY2tfY29udGV4 dCBsYzsKPiA+IEBAIC04MjUsOSArODI0LDkgQEAgaW50IGYyZnNfc2V0eGF0dHIoc3RydWN0IGlu b2RlICppbm9kZSwgaW50IGluZGV4LCBjb25zdCBjaGFyICpuYW1lLAo+ID4gICAgICAgICAgICAg ICAgIHJldHVybiBlcnI7Cj4gPgo+ID4gICAgICAgICAvKiB0aGlzIGNhc2UgaXMgb25seSBmcm9t IGYyZnNfaW5pdF9pbm9kZV9tZXRhZGF0YSAqLwo+ID4gLSAgICAgICBpZiAoaWZvbGlvKQo+ID4g KyAgICAgICBpZiAoaWVudHJ5KQo+ID4gICAgICAgICAgICAgICAgIHJldHVybiBfX2YyZnNfc2V0 eGF0dHIoaW5vZGUsIGluZGV4LCBuYW1lLCB2YWx1ZSwKPiA+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUsIGlmb2xpbywgZmxhZ3MpOwo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSwgaWVudHJ5 LCBmbGFncyk7Cj4gPiAgICAgICAgIGYyZnNfYmFsYW5jZV9mcyhzYmksIHRydWUpOwo+ID4KPiA+ ICAgICAgICAgZjJmc19sb2NrX29wKHNiaSwgJmxjKTsKPiA+IGRpZmYgLS1naXQgYS9mcy9mMmZz L3hhdHRyLmggYi9mcy9mMmZzL3hhdHRyLmgKPiA+IGluZGV4IDc1YmVhYjJkMWVlMy4uODcwNTI0 YjY2N2VkIDEwMDY0NAo+ID4gLS0tIGEvZnMvZjJmcy94YXR0ci5oCj4gPiArKysgYi9mcy9mMmZz L3hhdHRyLmgKPiA+IEBAIC0xMzEsOSArMTMxLDkgQEAgZXh0ZXJuIGNvbnN0IHN0cnVjdCB4YXR0 cl9oYW5kbGVyIGYyZnNfeGF0dHJfc2VjdXJpdHlfaGFuZGxlcjsKPiA+ICBleHRlcm4gY29uc3Qg c3RydWN0IHhhdHRyX2hhbmRsZXIgKiBjb25zdCBmMmZzX3hhdHRyX2hhbmRsZXJzW107Cj4gPgo+ ID4gIGludCBmMmZzX3NldHhhdHRyKHN0cnVjdCBpbm9kZSAqLCBpbnQsIGNvbnN0IGNoYXIgKiwg Y29uc3Qgdm9pZCAqLAo+ID4gLSAgICAgICAgICAgICAgIHNpemVfdCwgc3RydWN0IGZvbGlvICos IGludCk7Cj4gPiArICAgICAgICAgICAgICAgc2l6ZV90LCBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxv Y2sgKiwgaW50KTsKPiA+ICBpbnQgZjJmc19nZXR4YXR0cihzdHJ1Y3QgaW5vZGUgKiwgaW50LCBj b25zdCBjaGFyICosIHZvaWQgKiwKPiA+IC0gICAgICAgICAgICAgICBzaXplX3QsIHN0cnVjdCBm b2xpbyAqKTsKPiA+ICsgICAgICAgICAgICAgICBzaXplX3QsIHN0cnVjdCBmMmZzX2NhY2hlZF9i bG9jayAqKTsKPiA+ICBzc2l6ZV90IGYyZnNfbGlzdHhhdHRyKHN0cnVjdCBkZW50cnkgKiwgY2hh ciAqLCBzaXplX3QpOwo+ID4gIGludCBfX2luaXQgZjJmc19pbml0X3hhdHRyX2NhY2hlKHZvaWQp Owo+ID4gIHZvaWQgZjJmc19kZXN0cm95X3hhdHRyX2NhY2hlKHZvaWQpOwo+ID4gQEAgLTE0Mywx MyArMTQzLDEzIEBAIHZvaWQgZjJmc19kZXN0cm95X3hhdHRyX2NhY2hlKHZvaWQpOwo+ID4gICNk ZWZpbmUgZjJmc19saXN0eGF0dHIgICAgICAgICBOVUxMCj4gPiAgc3RhdGljIGlubGluZSBpbnQg ZjJmc19zZXR4YXR0cihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgaW5kZXgsCj4gPiAgICAgICAg ICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgdm9pZCAqdmFsdWUsIHNpemVfdCBzaXpl LAo+ID4gLSAgICAgICAgICAgICAgIHN0cnVjdCBmb2xpbyAqZm9saW8sIGludCBmbGFncykKPiA+ ICsgICAgICAgICAgICAgICBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKmllbnRyeSwgaW50IGZs YWdzKQo+ID4gIHsKPiA+ICAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOwo+ID4gIH0KPiA+ICBz dGF0aWMgaW5saW5lIGludCBmMmZzX2dldHhhdHRyKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBp bmRleCwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIHZvaWQg KmJ1ZmZlciwKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBidWZmZXJfc2l6ZSwg c3RydWN0IGZvbGlvICpkZm9saW8pCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg YnVmZmVyX3NpemUsIHN0cnVjdCBmMmZzX2NhY2hlZF9ibG9jayAqaWVudHJ5KQo+ID4gIHsKPiA+ ICAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOwo+ID4gIH0KPiA+IEBAIC0xNTksMTAgKzE1OSwx MCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZjJmc19kZXN0cm95X3hhdHRyX2NhY2hlKHZvaWQpIHsg fQo+ID4KPiA+ICAjaWZkZWYgQ09ORklHX0YyRlNfRlNfU0VDVVJJVFkKPiA+ICBpbnQgZjJmc19p bml0X3NlY3VyaXR5KHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgaW5vZGUgKiwKPiA+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHFzdHIgKiwgc3RydWN0IGZvbGlv ICopOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcXN0 ciAqLCBzdHJ1Y3QgZjJmc19jYWNoZWRfYmxvY2sgKik7Cj4gPiAgI2Vsc2UKPiA+ICBzdGF0aWMg aW5saW5lIGludCBmMmZzX2luaXRfc2VjdXJpdHkoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0 IGlub2RlICpkaXIsCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0 cnVjdCBxc3RyICpxc3RyLCBzdHJ1Y3QgZm9saW8gKmlmb2xpbykKPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHFzdHIgKnFzdHIsIHN0cnVjdCBmMmZzX2Nh Y2hlZF9ibG9jayAqaWVudHJ5KQo+ID4gIHsKPiA+ICAgICAgICAgcmV0dXJuIDA7Cj4gPiAgfQo+ ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZjJmc19mcy5oIGIvaW5jbHVkZS9saW51eC9m MmZzX2ZzLmgKPiA+IGluZGV4IGMzMjU5MDRmNDYxZS4uYWM4NzQ0NmNjMDg2IDEwMDY0NAo+ID4g LS0tIGEvaW5jbHVkZS9saW51eC9mMmZzX2ZzLmgKPiA+ICsrKyBiL2luY2x1ZGUvbGludXgvZjJm c19mcy5oCj4gPiBAQCAtNDMsNyArNDMsNiBAQAo+ID4gICNkZWZpbmUgRjJGU19SRVNFUlZFRF9O T0RFX05VTSAgICAgICAgIDMKPiA+Cj4gPiAgI2RlZmluZSBGMkZTX1JPT1RfSU5PKHNiaSkgICAg ICgoc2JpKS0+cm9vdF9pbm9fbnVtKQo+ID4gLSNkZWZpbmUgRjJGU19OT0RFX0lOTyhzYmkpICAg ICAoKHNiaSktPm5vZGVfaW5vX251bSkKPiA+ICAjZGVmaW5lIEYyRlNfQ09NUFJFU1NfSU5PKHNi aSkgKE5NX0koc2JpKS0+bWF4X25pZCkKPiA+Cj4gPiAgI2RlZmluZSBGMkZTX01BWF9RVU9UQVMg ICAgICAgICAgICAgICAgMwo+ID4gLS0KPiA+IDIuNDkuMAo+ID4KPiA+Cj4gPgo+ID4gX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+IExpbnV4LWYyZnMt ZGV2ZWwgbWFpbGluZyBsaXN0Cj4gPiBMaW51eC1mMmZzLWRldmVsQGxpc3RzLnNvdXJjZWZvcmdl Lm5ldAo+ID4gaHR0cHM6Ly9saXN0cy5zb3VyY2Vmb3JnZS5uZXQvbGlzdHMvbGlzdGluZm8vbGlu dXgtZjJmcy1kZXZlbAo+IAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCj4gTGludXgtZjJmcy1kZXZlbCBtYWlsaW5nIGxpc3QKPiBMaW51eC1mMmZz LWRldmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldAo+IGh0dHBzOi8vbGlzdHMuc291cmNlZm9yZ2Uu bmV0L2xpc3RzL2xpc3RpbmZvL2xpbnV4LWYyZnMtZGV2ZWwKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51eC1mMmZzLWRldmVsIG1haWxpbmcgbGlz dApMaW51eC1mMmZzLWRldmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldApodHRwczovL2xpc3RzLnNv dXJjZWZvcmdlLm5ldC9saXN0cy9saXN0aW5mby9saW51eC1mMmZzLWRldmVsCg==