From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 45965 invoked by alias); 20 Apr 2015 11:19:56 -0000 Mailing-List: contact ecos-patches-help@ecos.sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: ecos-patches-owner@ecos.sourceware.org Received: (qmail 45956 invoked by uid 89); 20 Apr 2015 11:19:55 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=3.2 required=5.0 tests=AWL,BAYES_50,KAM_LAZY_DOMAIN_SECURITY autolearn=no version=3.3.2 X-HELO: haven.inspiration.ch Received: from colen.ch (HELO haven.inspiration.ch) (212.55.218.197) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-SHA encrypted) ESMTPS; Mon, 20 Apr 2015 11:19:53 +0000 Received: from haven (haven.inspiration.ch [212.55.218.197]) by haven.inspiration.ch (Postfix) with ESMTP id D7979EEFE19 for ; Mon, 20 Apr 2015 13:19:21 +0200 (CEST) Received: from haven.inspiration.ch ([212.55.218.197]) by haven (haven.inspiration.ch [212.55.218.197]) (amavisd-new, port 10024) with ESMTP id 0g4sdjFbxGVG for ; Mon, 20 Apr 2015 13:18:41 +0200 (CEST) Received: by haven.inspiration.ch (Postfix, from userid 58) id 122FAEEFE24; Mon, 20 Apr 2015 13:18:41 +0200 (CEST) Received: from haven.inspiration.ch (haven.inspiration.ch [212.55.218.197]) (Authenticated sender: oliver.munz) by haven.inspiration.ch (Postfix) with ESMTPSA id DC11FEEFE19 for ; Mon, 20 Apr 2015 13:18:40 +0200 (CEST) MIME-Version: 1.0 Date: Mon, 20 Apr 2015 11:19:00 -0000 From: "oliver.munz" To: Subject: at91 emac ethernet driver lwip diff patch Message-ID: X-Sender: olimunz@snr.ch User-Agent: ITGarage Webmail/0.3.1 Content-Type: multipart/mixed; boundary="=_2778e1c474cd952f6be0b8d899c4fa11" X-SW-Source: 2015-04/txt/msg00001.txt.bz2 --=_2778e1c474cd952f6be0b8d899c4fa11 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-length: 170 This is a patch for the at91 emac driver and the lwIP stack. It should solve the no PBUF leak and other stack blocking errors. It also replaces some "\t" whit " "... --=_2778e1c474cd952f6be0b8d899c4fa11 Content-Transfer-Encoding: base64 Content-Type: application/octet-stream; charset=UTF-8; name=at91eth.diff; Content-Disposition: attachment; filename=at91eth.diff; Content-length: 21562 T25seSBpbiAvY3lnZHJpdmUvYy9BTEwvZWNvczIwMTUwMjA1Lm9saXMgZXRo IGZsaWNrcy9lY29zOiBlQ29zLmhoYwpPbmx5IGluIC9jeWdkcml2ZS9jL0FM TC9lY29zMjAxNTAyMDUub2xpcyBldGggZmxpY2tzL2Vjb3M6IGVDb3MuaGhw CmRpZmYgLXIgL2N5Z2RyaXZlL2MvQUxML2Vjb3MyMDE1MDIwNS9lY29zL3Bh Y2thZ2VzL2RldnMvZXRoL2FybS9hdDkxL2N1cnJlbnQvc3JjL2lmX2F0OTEu YyAiL2N5Z2RyaXZlL2MvQUxML2Vjb3MyMDE1MDIwNS5vbGlzIGV0aCBmbGlj a3MvZWNvcy9wYWNrYWdlcy9kZXZzL2V0aC9hcm0vYXQ5MS9jdXJyZW50L3Ny Yy9pZl9hdDkxLmMiCjQzLDQ0YzQzLDQ0CjwgLy8gQ29udHJpYnV0b3JzOiAg CjwgLy8gRGF0ZTogICAgICAgICAyMDA2LTA1LTEwCi0tLQo+IC8vIENvbnRy aWJ1dG9yczogT2xpdmVyIE11bnoKPiAvLyBEYXRlOiAgICAgICAgIDIwMTUt MDQtMjAKODhjODgKPCAjZGVmaW5lIF9ldGhfZHJ2X2luaXQoc2MsbWFjKQkJ CVwKLS0tCj4gI2RlZmluZSBfZXRoX2Rydl9pbml0KHNjLG1hYykgICAgICAg ICAgICBcCjkwYzkwCjwgI2RlZmluZSBfZXRoX2Rydl90eF9kb25lKHNjLGtl eSxzdGF0dXMpCQlcCi0tLQo+ICNkZWZpbmUgX2V0aF9kcnZfdHhfZG9uZShz YyxrZXksc3RhdHVzKSAgICAgICAgXAo5MmM5Mgo8ICNkZWZpbmUgX2V0aF9k cnZfcmVjdihzYyxsZW4pCQkJXAotLS0KPiAjZGVmaW5lIF9ldGhfZHJ2X3Jl Y3Yoc2MsbGVuKSAgICAgICAgICAgIFwKNTE3YzUxNwo8IAkJIHByaXYtPmlu dHJfdmVjdG9yKTsKLS0tCj4gICAgICAgICAgcHJpdi0+aW50cl92ZWN0b3Ip Owo4MTQsODI3YzgxNCw4MTUKPCBhdDkxX2V0aF9kZWxpdmVyKHN0cnVjdCBl dGhfZHJ2X3NjICpzYykKPCB7CjwgICAgYXQ5MV9ldGhfcHJpdl90ICpwcml2 ID0gKGF0OTFfZXRoX3ByaXZfdCAqKXNjLT5kcml2ZXJfcHJpdmF0ZTsKPCAK PCAgICBjeWdfdWludDMyIHRzcjsKPCAgICBjeWdfdWludDMyIHJzcjsKPCAK PCAgICBjeWdfdWludDMyIGN0cjsKPCAgICBjeWdfdWludDMyIGNudDsKPCAg ICBjeWdfdWludDMyIGlkeDsKPCAKPCAgICAvKiBHZXQgdGhlIFRyYW5zbWl0 IFN0YXR1cyAqLwo8ICAgIEhBTF9SRUFEX1VJTlQzMihwcml2LT5iYXNlK0FU OTFfRU1BQ19UU1IsdHNyKTsKPCAgICBIQUxfV1JJVEVfVUlOVDMyKHByaXYt PmJhc2UrQVQ5MV9FTUFDX1RTUix0c3IpOwotLS0KPiBhdDkxX2V0aF9kZWxp dmVyKHN0cnVjdCBldGhfZHJ2X3NjICpzYykgewo+ICAgICBhdDkxX2V0aF9w cml2X3QgKnByaXYgPSAoYXQ5MV9ldGhfcHJpdl90ICopIHNjLT5kcml2ZXJf cHJpdmF0ZTsKODI5LDgzMWM4MTcsODE4CjwgICAgLyogR2V0IHRoZSBSZWNl aXZlIFN0YXR1cyAqLwo8ICAgIEhBTF9SRUFEX1VJTlQzMihwcml2LT5iYXNl K0FUOTFfRU1BQ19SU1IscnNyKTsKPCAgICBIQUxfV1JJVEVfVUlOVDMyKHBy aXYtPmJhc2UrQVQ5MV9FTUFDX1JTUixyc3IpOwotLS0KPiAgICAgY3lnX3Vp bnQzMiB0c3I7Cj4gICAgIGN5Z191aW50MzIgcnNyOwo4MzJhODIwLDgyMQo+ ICAgICBjeWdfdWludDMyIGNudDsKPiAgICAgY3lnX3VpbnQzMiBpZHg7Cjgz NCw4ODZjODIzLDkxNwo8ICAgIC8vVE9ETzogVGhlIGludGVycnVwdHMgb3Ro ZXIgdGhhbiBSQ09NUCBhbmQgVENPTVAgbmVlZHMgdG8gYmUKPCAgICAvLyAg ICAgIGhhbmRsZWQgcHJvcGVybHkgZXNwZWNpYWxseSBzdHVmZiBsaWtlIFJC TkEgd2hpY2ggY291bGQgaGF2ZQo8ICAgIC8vICAgICAgc2VyaW91cyBlZmZl Y3RzIG9uIGRyaXZlciBwZXJmb3JtYW5jZQo8IAo8ICAgIC8qIFNlcnZpY2Ug dGhlIFRYIGJ1ZmZlcnMgKi8KPCAgICBpZiAodHNyJkFUOTFfRU1BQ19UU1Jf Q09MKSAgLy8xCjwgICAgewo8ICAgICAgIGRlYnVnMV9wcmludGYoIkFUOTFf RVRIOiBUeCBDT0xcbiIpOwo8ICAgIH0KPCAKPCAgICBpZiAodHNyJkFUOTFf RU1BQ19UU1JfUkxFKSAgLy8yCjwgICAgewo8ICAgICAgIGRlYnVnMV9wcmlu dGYoIkFUOTFfRVRIOiBUeCBSTEVcbiIpOwo8ICAgIH0KPCAKPCAgICBpZiAo dHNyJkFUOTFfRU1BQ19UU1JfQk5RKSAgLy80CjwgICAgewo8ICAgICAgIGRl YnVnMV9wcmludGYoIkFUOTFfRVRIOiBUeCBCRVhcbiIpOwo8ICAgIH0KPCAK PCAgICBpZiAodHNyJkFUOTFfRU1BQ19UU1JfVU5EKSAgLy82CjwgICAgewo8 ICAgICAgIGRlYnVnMV9wcmludGYoIkFUOTFfRVRIOiBUeCBVTkRcbiIpOwo8 ICAgIH0KPCAKPCAgICAvKiBDaGVjayB0aGF0IHRoZSBsYXN0IHRyYW5zbWlz c2lvbiBpcyBjb21wbGV0ZWQgKi8KPCAgICBpZiAodHNyJkFUOTFfRU1BQ19U U1JfQ09NUCkgLy81CjwgICAgewo8ICAgICAgIGF0OTFfcmVzZXRfdGJkKHBy aXYpOwo8ICAgICAgIF9ldGhfZHJ2X3R4X2RvbmUoc2MscHJpdi0+Y3Vycl90 eF9rZXksMCk7CjwgICAgICAgcHJpdi0+dHhfYnVzeSA9IGZhbHNlOwo8ICAg IH0KPCAKPCAgICAvKiBTZXJ2aWNlIHRoZSBSWCBidWZmZXJzIHdoZW4gd2Ug Z2V0IHNvbWV0aGluZyAqLwo8ICAgIGlmIChyc3ImQVQ5MV9FTUFDX1JTUl9S RUMpCjwgICAgewo8ICAgICAgIC8qIERvIHRoaXMgYWxsIHVudGlsIHdlIGZp bmQgdGhlIGZpcnN0IEVNQUMgQnVmZmVyICovCjwgICAgICAgd2hpbGUgKHBy aXYtPnJiZFtwcml2LT5jdXJyX3JiZF9pZHhdLmFkZHIgJiBBVDkxX0VNQUNf UkJEX0FERFJfT1dORVJfU1cpCjwgICAgICAgewo8IAo8ICAgICAgICAgIC8v Rmlyc3RseSB3YWxrIHRocm91Z2ggdG8gZWl0aGVyIHRoZSBmaXJzdCBidWZm ZXIgdGhhdCBiZWxvbmdzIAo8ICAgICAgICAgIC8vIHRvIHRoZSBjb250cm9s bGVyIG9yIHRoZSBmaXJzdCBTT0YKPCAgICAgICAgICB3aGlsZSAoKHByaXYt PnJiZFtwcml2LT5jdXJyX3JiZF9pZHhdLmFkZHIgJiAKPCAJCSBBVDkxX0VN QUNfUkJEX0FERFJfT1dORVJfU1cpICYmIAo8ICAgICAgICAgICAgICAgICAh KHByaXYtPnJiZFtwcml2LT5jdXJyX3JiZF9pZHhdLnNyICYgCjwgCQkgIEFU OTFfRU1BQ19SQkRfU1JfU09GKSkKPCAgICAgICAgICB7CjwgICAgICAgICAg ICAgcHJpdi0+cmJkW3ByaXYtPmN1cnJfcmJkX2lkeF0uYWRkciAmPSAKPCAJ ICAgICAgfihBVDkxX0VNQUNfUkJEX0FERFJfT1dORVJfU1cpOwo8ICAgICAg ICAgICAgIHByaXYtPmN1cnJfcmJkX2lkeCsrOwo8ICAgICAgICAgICAgIGlm IChwcml2LT5jdXJyX3JiZF9pZHggPj0gQ1lHTlVNX0RFVlNfRVRIX0FSTV9B VDkxX1JYX0JVRlMpCjwgICAgICAgICAgICAgewo8ICAgICAgICAgICAgICAg IHByaXYtPmN1cnJfcmJkX2lkeCA9IDA7Ci0tLQo+ICAgICAvKiBHZXQgdGhl IFRyYW5zbWl0IFN0YXR1cyAqLwo+ICAgICBIQUxfUkVBRF9VSU5UMzIocHJp di0+YmFzZStBVDkxX0VNQUNfVFNSLCB0c3IpOwo+ICAgICBIQUxfV1JJVEVf VUlOVDMyKHByaXYtPmJhc2UrQVQ5MV9FTUFDX1RTUiwgdHNyKTsKPiAKPiAg ICAgLyogR2V0IHRoZSBSZWNlaXZlIFN0YXR1cyAqLwo+ICAgICBIQUxfUkVB RF9VSU5UMzIocHJpdi0+YmFzZStBVDkxX0VNQUNfUlNSLCByc3IpOwo+ICAg ICBIQUxfV1JJVEVfVUlOVDMyKHByaXYtPmJhc2UrQVQ5MV9FTUFDX1JTUiwg cnNyKTsKPiAKPiAgICAgLy9UT0RPOiBUaGUgaW50ZXJydXB0cyBvdGhlciB0 aGFuIFJDT01QIGFuZCBUQ09NUCBuZWVkcyB0byBiZQo+ICAgICAvLyAgICAg IGhhbmRsZWQgcHJvcGVybHkgZXNwZWNpYWxseSBzdHVmZiBsaWtlIFJCTkEg d2hpY2ggY291bGQgaGF2ZQo+ICAgICAvLyAgICAgIHNlcmlvdXMgZWZmZWN0 cyBvbiBkcml2ZXIgcGVyZm9ybWFuY2UKPiAKPiAgICAgLyogU2VydmljZSB0 aGUgVFggYnVmZmVycyAqLwo+IAo+ICAgICBpZiAodHNyICYgQVQ5MV9FTUFD X1RTUl9DT0wpICAvLzEKPiAgICAgewo+ICAgICAgICAgZGVidWcxX3ByaW50 ZigiQVQ5MV9FVEg6IFR4IENPTFxuIik7Cj4gICAgIH0KPiAKPiAgICAgaWYg KHRzciAmIEFUOTFfRU1BQ19UU1JfUkxFKSAgLy8yCj4gICAgIHsKPiAgICAg ICAgIGRlYnVnMV9wcmludGYoIkFUOTFfRVRIOiBUeCBSTEVcbiIpOwo+ICAg ICB9Cj4gCj4gICAgIGlmICh0c3IgJiBBVDkxX0VNQUNfVFNSX0JOUSkgIC8v NAo+ICAgICB7Cj4gICAgICAgICBkZWJ1ZzFfcHJpbnRmKCJBVDkxX0VUSDog VHggQkVYXG4iKTsKPiAgICAgfQo+IAo+ICAgICBpZiAodHNyICYgQVQ5MV9F TUFDX1RTUl9VTkQpICAvLzYKPiAgICAgewo+ICAgICAgICAgZGVidWcxX3By aW50ZigiQVQ5MV9FVEg6IFR4IFVORFxuIik7Cj4gICAgIH0KPiAKPiAgICAg LyogQ2hlY2sgdGhhdCB0aGUgbGFzdCB0cmFuc21pc3Npb24gaXMgY29tcGxl dGVkICovCj4gLy8gICAgaWYgKHRzciAmIEFUOTFfRU1BQ19UU1JfQ09NUCkg eyAvLzUKPiAjaWYgMQo+ICAgICBpZiAodHNyICYgKEFUOTFfRU1BQ19UU1Jf Q09NUHxBVDkxX0VNQUNfVFNSX1JMRXxBVDkxX0VNQUNfVFNSX0JOUXxBVDkx X0VNQUNfVFNSX1VORCkpIHsgLyogYXV0byByZXRyYW5zbWl0ICovCj4gI2Vs c2UKPiAgICAgaWYgKHRzciAmIChBVDkxX0VNQUNfVFNSX0NPTVB8QVQ5MV9F TUFDX1RTUl9STEV8QVQ5MV9FTUFDX1RTUl9CTlF8QVQ5MV9FTUFDX1RTUl9V TkR8QVQ5MV9FTUFDX1RTUl9DT0wpKSB7Cj4gI2VuZGlmCj4gICAgICAgICBh dDkxX3Jlc2V0X3RiZChwcml2KTsKPiAgICAgICAgIHByaXYtPnR4X2J1c3kg PSBmYWxzZTsKPiAgICAgICAgIF9ldGhfZHJ2X3R4X2RvbmUoc2MsIHByaXYt PmN1cnJfdHhfa2V5LCAwKTsKPiAgICAgfQo+IAo+ICAgICAvKiBTZXJ2aWNl IHRoZSBSWCBidWZmZXJzIHdoZW4gd2UgZ2V0IHNvbWV0aGluZyAqLwo+ICAg ICBpZiAocnNyICYgQVQ5MV9FTUFDX1JTUl9SRUMpIHsKPiAKPiAjZGVmaW5l IE5PVF9ERUZJTkVEIC0xCj4gCj4gICAgICAgICBjeWdfaW50MzIgYmVncGFj ayA9IE5PVF9ERUZJTkVEOwo+ICAgICAgICAgY3lnX2ludDMyIGkgPSAwOwo+ IAo+ICAgICAgICAgaWR4ID0gcHJpdi0+Y3Vycl9yYmRfaWR4Owo+ICAgICAg ICAgY250ID0gMDsKPiAKPiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBDWUdO VU1fREVWU19FVEhfQVJNX0FUOTFfUlhfQlVGUzsgaSsrKSB7Cj4gCj4gICAg ICAgICAgICAgaWYgKHByaXYtPnJiZFtpZHhdLmFkZHIgJiBBVDkxX0VNQUNf UkJEX0FERFJfT1dORVJfU1cpewo+IAo+ICAgICAgICAgICAgICAgICBpZiAo cHJpdi0+cmJkW2lkeF0uc3IgJiBBVDkxX0VNQUNfUkJEX1NSX1NPRil7Cj4g ICAgICAgICAgICAgICAgICAgICBiZWdwYWNrID0gaWR4Owo+ICAgICAgICAg ICAgICAgICB9Cj4gICAgICAgICAgICAgICAgIGlmIChiZWdwYWNrICE9IE5P VF9ERUZJTkVEKXsKPiAgICAgICAgICAgICAgICAgICAgIGlmIChwcml2LT5y YmRbaWR4XS5zciAmIEFUOTFfRU1BQ19SQkRfU1JfTEVOX01BU0spIHsKPiAg ICAgICAgICAgICAgICAgICAgICAgICBjbnQgKz0gKHByaXYtPnJiZFtpZHhd LnNyICYgQVQ5MV9FTUFDX1JCRF9TUl9MRU5fTUFTSyk7Cj4gICAgICAgICAg ICAgICAgICAgICB9IGVsc2Ugewo+ICAgICAgICAgICAgICAgICAgICAgICAg IGNudCArPSBBVDkxX0VNQUNfUlhfQlVGRl9TSVpFOwo+ICAgICAgICAgICAg ICAgICAgICAgfQo+ICAgICAgICAgICAgICAgICB9IGVsc2Ugewo+ICAgICAg ICAgICAgICAgICAgICAgcHJpdi0+cmJkW2lkeF0uYWRkciAmPSB+KEFUOTFf RU1BQ19SQkRfQUREUl9PV05FUl9TVyk7Cj4gICAgICAgICAgICAgICAgIH0K PiAgICAgICAgICAgICAgICAgaWYgKHByaXYtPnJiZFtpZHhdLnNyICYgQVQ5 MV9FTUFDX1JCRF9TUl9FT0Ypewo+ICAgICAgICAgICAgICAgICAgICAgaWYg KGJlZ3BhY2sgPT0gTk9UX0RFRklORUQpewo+ICAgICAgICAgICAgICAgICAg ICAgICAgIGNudCA9IDA7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgcHJp di0+cmJkW2lkeF0uYWRkciAmPSB+KEFUOTFfRU1BQ19SQkRfQUREUl9PV05F Ul9TVyk7Cj4gICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewo+ICAgICAg ICAgICAgICAgICAgICAgICAgIHByaXYtPmN1cnJfcmJkX2lkeCA9IGJlZ3Bh Y2s7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgX2V0aF9kcnZfcmVjdihz YywgY250KTsKPiAgICAgICAgICAgICAgICAgICAgIH0KPiAgICAgICAgICAg ICAgICAgfQo+ICAgICAgICAgICAgIH0gZWxzZSB7Cj4gICAgICAgICAgICAg ICAgIGlmIChiZWdwYWNrICE9IE5PVF9ERUZJTkVEKXsKPiAgICAgICAgICAg ICAgICAgICAgIHdoaWxlIChiZWdwYWNrICE9IGlkeCl7Cj4gICAgICAgICAg ICAgICAgICAgICAgICAgcHJpdi0+cmJkW2JlZ3BhY2tdLmFkZHIgJj0gfihB VDkxX0VNQUNfUkJEX0FERFJfT1dORVJfU1cpOwo+ICAgICAgICAgICAgICAg ICAgICAgICAgIGJlZ3BhY2srKzsKPiAgICAgICAgICAgICAgICAgICAgICAg ICBpZiAoYmVncGFjayA+IENZR05VTV9ERVZTX0VUSF9BUk1fQVQ5MV9SWF9C VUZTLTEpIHsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVncGFj ayA9IDA7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgfQo+ICAgICAgICAg ICAgICAgICAgICAgfQo+IAo+ICAgICAgICAgICAgICAgICAgICAgYmVncGFj ayA9IE5PVF9ERUZJTkVEOwo+ICAgICAgICAgICAgICAgICAgICAgY250ID0g MDsKPiAgICAgICAgICAgICAgICAgfQo4ODgsOTA4YzkxOSw5MjEKPCAgICAg ICAgICB9CjwgCjwgICAgICAgICAgLyogQ2hlY2sgdGhhdCB3ZSBkaWQgZmlu ZCBhIFNPRiovCjwgICAgICAgICAgaWYgKChwcml2LT5yYmRbcHJpdi0+Y3Vy cl9yYmRfaWR4XS5hZGRyICYgCjwgCSAgICAgIEFUOTFfRU1BQ19SQkRfQURE Ul9PV05FUl9TVykgJiYgCjwgICAgICAgICAgICAgIChwcml2LT5yYmRbcHJp di0+Y3Vycl9yYmRfaWR4XS5zciAmIEFUOTFfRU1BQ19SQkRfU1JfU09GKSkK PCAgICAgICAgICB7CjwgICAgICAgICAgICAgY250ID0gMDsKPCAgICAgICAg ICAgICBmb3IgKGN0cj0wO2N0cjxDWUdOVU1fREVWU19FVEhfQVJNX0FUOTFf UlhfQlVGUztjdHIrKykKPCAgICAgICAgICAgICB7CjwgICAgICAgICAgICAg ICAgaWR4ID0gKGN0citwcml2LT5jdXJyX3JiZF9pZHgpJUNZR05VTV9ERVZT X0VUSF9BUk1fQVQ5MV9SWF9CVUZTOwo8ICAgICAgICAgICAgICAgIGNudCAr PSAocHJpdi0+cmJkW2lkeF0uc3IgJiBBVDkxX0VNQUNfUkJEX1NSX0xFTl9N QVNLKTsKPCAgICAgICAgICAgICAgICBpZiAocHJpdi0+cmJkW2lkeF0uc3Ig JiBBVDkxX0VNQUNfUkJEX1NSX0VPRikKPCAgICAgICAgICAgICAgICB7Cjwg ICAgICAgICAgICAgICAgICAgLyogVGhlIHJlY3YgZnVuY3Rpb24gd2lsbCBh ZGp1c3QgdGhlIGN1cnJlbnQgYnVmZmVyIGlkeCAKPCAgICAgICAgICAgICAg ICAgICAgICBhZnRlciB0aGUgYnVmZmVyIGhhcyBiZWVuIGNsZWFyZWQKPCAg ICAgICAgICAgICAgICAgICAgKi8KPCAgICAgICAgICAgICAgICAgICBpZiAo Y250KQo8ICAgICAgICAgICAgICAgICAgICAgIF9ldGhfZHJ2X3JlY3Yoc2Ms Y250KTsKPCAgICAgICAgICAgICAgICAgICBicmVhazsKPCAgICAgICAgICAg ICAgICB9Ci0tLQo+ICAgICAgICAgICAgIGlkeCsrOwo+ICAgICAgICAgICAg IGlmIChpZHggPiBDWUdOVU1fREVWU19FVEhfQVJNX0FUOTFfUlhfQlVGUy0x KSB7Cj4gICAgICAgICAgICAgICAgIGlkeCA9IDA7CjkxMCw5MjFjOTIzLDky NAo8ICAgICAgICAgIH0KPCAgICAgICB9CjwgICAgfQo8IAo8ICAgIGlmIChy c3ImQVQ5MV9FTUFDX1JTUl9CTkEpCjwgICAgewo8ICAgICAgIGRlYnVnMV9w cmludGYoIkFUOTFfRVRIOiBSeCBCTkFcbiIpOwo8ICAgIH0KPCAgICBpZiAo cnNyJkFUOTFfRU1BQ19SU1JfT1ZSKQo8ICAgIHsKPCAgICAgICBkZWJ1ZzFf cHJpbnRmKCJBVDkxX0VUSDogUnggT1ZSXG4iKTsKPCAgICB9Ci0tLQo+ICAg ICAgICAgfQo+ICAgICB9CjkyMmE5MjYsOTMxCj4gICAgIGlmIChyc3IgJiBB VDkxX0VNQUNfUlNSX0JOQSkgewo+ICAgICAgICAgZGVidWcxX3ByaW50Zigi QVQ5MV9FVEg6IFJ4IEJOQVxuIik7Cj4gICAgIH0KPiAgICAgaWYgKHJzciAm IEFUOTFfRU1BQ19SU1JfT1ZSKSB7Cj4gICAgICAgICBkZWJ1ZzFfcHJpbnRm KCJBVDkxX0VUSDogUnggT1ZSXG4iKTsKPiAgICAgfQo5MjUsOTQzYzkzNCw5 MzUKPCBzdGF0aWMgdm9pZAo8IGF0OTFfZXRoX3JlY3Yoc3RydWN0IGV0aF9k cnZfc2MgKnNjLAo8ICAgICAgICAgICAgICAgc3RydWN0IGV0aF9kcnZfc2cg KnNnX2xpc3QsCjwgICAgICAgICAgICAgICBpbnQgc2dfbGVuKQo8IHsKPCAg ICBhdDkxX2V0aF9wcml2X3QgKnByaXYgPSAoYXQ5MV9ldGhfcHJpdl90ICop c2MtPmRyaXZlcl9wcml2YXRlOwo8ICAgIGludCBpOwo8ICAgIGN5Z191aW50 MzIgYnl0ZXNfaW5fYnVmZmVyOwo8ICAgIGN5Z191aW50MzIgYnl0ZXNfaW5f bGlzdCA9IDA7CjwgICAgY3lnX3VpbnQzMiBieXRlc19uZWVkZWRfbGlzdCA9 IDA7CjwgICAgY3lnX3VpbnQzMiBidWZmZXJfcG9zID0gMDsKPCAgICBjeWdf dWludDggKiBzZ19idWY7CjwgICAgY3lnX3VpbnQzMiB0b3RhbF9ieXRlcyA9 IDA7CjwgCjwgICAgZm9yKGkgPSAwO2k8c2dfbGVuO2krKykKPCAgICB7Cjwg ICAgICAgd2hpbGUoYnl0ZXNfaW5fbGlzdCA8IHNnX2xpc3RbaV0ubGVuKQo8 ICAgICAgIHsKPCAgICAgICAgICBieXRlc19uZWVkZWRfbGlzdCA9IHNnX2xp c3RbaV0ubGVuIC0gYnl0ZXNfaW5fbGlzdDsKLS0tCj4gc3RhdGljIHZvaWQg Cj4gYXQ5MV9ldGhfcmVjdihzdHJ1Y3QgZXRoX2Rydl9zYyAqc2MsIHN0cnVj dCBldGhfZHJ2X3NnICpzZ19saXN0LCBpbnQgc2dfbGVuKSB7Cjk0NSw5NTRj OTM3LDk1NQo8ICAgICAgICAgIGlmKHByaXYtPnJiZFtwcml2LT5jdXJyX3Ji ZF9pZHhdLnNyICYgQVQ5MV9FTUFDX1JCRF9TUl9FT0YpCjwgICAgICAgICAg ewo8IAkgICAgICBieXRlc19pbl9idWZmZXIgPSAKPCAJCSgocHJpdi0+cmJk W3ByaXYtPmN1cnJfcmJkX2lkeF0uc3IgJiBBVDkxX0VNQUNfUkJEX1NSX0xF Tl9NQVNLKQo8IAkJIC0gdG90YWxfYnl0ZXMpIC0gYnVmZmVyX3BvczsKPCAg ICAgICAgICB9CjwgICAgICAgICAgZWxzZQo8ICAgICAgICAgIHsKPCAgICAg ICAgICAgICBieXRlc19pbl9idWZmZXIgPSBBVDkxX0VNQUNfUlhfQlVGRl9T SVpFIC0gYnVmZmVyX3BvczsKPCAgICAgICAgICB9Ci0tLQo+ICAgICBhdDkx X2V0aF9wcml2X3QgKnByaXYgPSAoYXQ5MV9ldGhfcHJpdl90ICopIHNjLT5k cml2ZXJfcHJpdmF0ZTsKPiAgICAgaW50IGk7Cj4gICAgIGN5Z191aW50MzIg Ynl0ZXNfaW5fYnVmZmVyID0gMDsKPiAgICAgY3lnX3VpbnQzMiBieXRlc19p bl9saXN0ID0gMDsKPiAgICAgY3lnX3VpbnQzMiBieXRlc19uZWVkZWRfbGlz dCA9IDA7Cj4gICAgIGN5Z191aW50MzIgYnVmZmVyX3BvcyA9IDA7Cj4gICAg IGN5Z191aW50OCAqIHNnX2J1ZjsKPiAgICAgY3lnX3VpbnQzMiB0b3RhbF9i eXRlcyA9IDA7Cj4gCj4gICAgIGZvciAoaSA9IDA7IGkgPCBzZ19sZW47IGkr Kykgewo+ICAgICAgICAgd2hpbGUgKGJ5dGVzX2luX2xpc3QgPCBzZ19saXN0 W2ldLmxlbikgewo+ICAgICAgICAgICAgIGJ5dGVzX25lZWRlZF9saXN0ID0g c2dfbGlzdFtpXS5sZW4gLSBieXRlc19pbl9saXN0Owo+IAo+ICAgICAgICAg ICAgIGlmIChwcml2LT5yYmRbcHJpdi0+Y3Vycl9yYmRfaWR4XS5zciAmIEFU OTFfRU1BQ19SQkRfU1JfTEVOX01BU0spIHsKPiAgICAgICAgICAgICAgICAg Ynl0ZXNfaW5fYnVmZmVyID0gKChwcml2LT5yYmRbcHJpdi0+Y3Vycl9yYmRf aWR4XS5zciAmIEFUOTFfRU1BQ19SQkRfU1JfTEVOX01BU0spIC0gdG90YWxf Ynl0ZXMpCj4gICAgICAgICAgICAgICAgICAgICAgICAgLSBidWZmZXJfcG9z Owo+ICAgICAgICAgICAgIH0gZWxzZSB7Cj4gICAgICAgICAgICAgICAgIGJ5 dGVzX2luX2J1ZmZlciA9IEFUOTFfRU1BQ19SWF9CVUZGX1NJWkUgLSBidWZm ZXJfcG9zOwo+ICAgICAgICAgICAgIH0KOTU2Yzk1Nwo8ICAgICAgICAgIHNn X2J1ZiA9IChjeWdfdWludDggKikoc2dfbGlzdFtpXS5idWYpOwotLS0KPiAg ICAgICAgICAgICBzZ19idWYgPSAoY3lnX3VpbnQ4ICopIChzZ19saXN0W2ld LmJ1Zik7Cjk1OCw5ODNjOTU5LDk3OQo8ICAgICAgICAgIGlmKGJ5dGVzX25l ZWRlZF9saXN0IDwgYnl0ZXNfaW5fYnVmZmVyKQo8ICAgICAgICAgIHsKPCAg ICAgICAgICAgICBpZihzZ19idWYgIT0gTlVMTCkKPCAgICAgICAgICAgICAg ICBtZW1jcHkoJnNnX2J1ZltieXRlc19pbl9saXN0XSwKPCAJCSAgICAgICZw cml2LT5yYltwcml2LT5jdXJyX3JiZF9pZHhdLnJiW2J1ZmZlcl9wb3NdLAo8 IAkJICAgICAgYnl0ZXNfbmVlZGVkX2xpc3QpOwo8ICAgICAgICAgICAgIGJ5 dGVzX2luX2xpc3QgKz0gYnl0ZXNfbmVlZGVkX2xpc3Q7CjwgICAgICAgICAg ICAgYnVmZmVyX3BvcyArPSBieXRlc19uZWVkZWRfbGlzdDsKPCAgICAgICAg ICAgICB0b3RhbF9ieXRlcyArPSBieXRlc19uZWVkZWRfbGlzdDsKPCAgICAg ICAgICB9CjwgICAgICAgICAgZWxzZQo8ICAgICAgICAgIHsKPCAgICAgICAg ICAgICBpZihzZ19idWYgIT0gTlVMTCkKPCAgICAgICAgICAgICAgIG1lbWNw eSgmc2dfYnVmW2J5dGVzX2luX2xpc3RdLAo8IAkJICAgICAmcHJpdi0+cmJb cHJpdi0+Y3Vycl9yYmRfaWR4XS5yYltidWZmZXJfcG9zXSwKPCAJCSAgICAg Ynl0ZXNfaW5fYnVmZmVyKTsKPCAgICAgICAgICAgICBieXRlc19pbl9saXN0 ICs9IGJ5dGVzX2luX2J1ZmZlcjsKPCAgICAgICAgICAgICB0b3RhbF9ieXRl cyArPSBieXRlc19pbl9idWZmZXI7CjwgCjwgICAgICAgICAgICAgLyogU3Rl cCBvdXIgYnVmZmVyIG9uIG9uZSAqLwo8ICAgICAgICAgICAgIHByaXYtPnJi ZFtwcml2LT5jdXJyX3JiZF9pZHhdLmFkZHIgJj0gCjwgCSAgICAgIH4oQVQ5 MV9FTUFDX1JCRF9BRERSX09XTkVSX1NXKTsKPCAgICAgICAgICAgICBwcml2 LT5jdXJyX3JiZF9pZHgrKzsKPCAgICAgICAgICAgICBpZihwcml2LT5jdXJy X3JiZF9pZHggPj0gQ1lHTlVNX0RFVlNfRVRIX0FSTV9BVDkxX1JYX0JVRlMp CjwgICAgICAgICAgICAgewo8ICAgICAgICAgICAgICAgIHByaXYtPmN1cnJf cmJkX2lkeCA9IDA7Ci0tLQo+ICAgICAgICAgICAgIGlmIChieXRlc19uZWVk ZWRfbGlzdCA8IGJ5dGVzX2luX2J1ZmZlcikgewo+ICAgICAgICAgICAgICAg ICBpZiAoc2dfYnVmICE9IE5VTEwpCj4gICAgICAgICAgICAgICAgICAgICBt ZW1jcHkoJnNnX2J1ZltieXRlc19pbl9saXN0XSwgJnByaXYtPnJiW3ByaXYt PmN1cnJfcmJkX2lkeF0ucmJbYnVmZmVyX3Bvc10sCj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGJ5dGVzX25lZWRlZF9saXN0KTsKPiAgICAgICAg ICAgICAgICAgYnl0ZXNfaW5fbGlzdCArPSBieXRlc19uZWVkZWRfbGlzdDsK PiAgICAgICAgICAgICAgICAgYnVmZmVyX3BvcyArPSBieXRlc19uZWVkZWRf bGlzdDsKPiAgICAgICAgICAgICAgICAgdG90YWxfYnl0ZXMgKz0gYnl0ZXNf bmVlZGVkX2xpc3Q7Cj4gICAgICAgICAgICAgfSBlbHNlIHsKPiAgICAgICAg ICAgICAgICAgaWYgKHNnX2J1ZiAhPSBOVUxMKQo+ICAgICAgICAgICAgICAg ICAgICAgbWVtY3B5KCZzZ19idWZbYnl0ZXNfaW5fbGlzdF0sICZwcml2LT5y Yltwcml2LT5jdXJyX3JiZF9pZHhdLnJiW2J1ZmZlcl9wb3NdLAo+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBieXRlc19pbl9idWZmZXIpOwo+ICAg ICAgICAgICAgICAgICBieXRlc19pbl9saXN0ICs9IGJ5dGVzX2luX2J1ZmZl cjsKPiAgICAgICAgICAgICAgICAgdG90YWxfYnl0ZXMgKz0gYnl0ZXNfaW5f YnVmZmVyOwo+IAo+ICAgICAgICAgICAgICAgICAvKiBTdGVwIG91ciBidWZm ZXIgb24gb25lICovCj4gICAgICAgICAgICAgICAgIHByaXYtPnJiZFtwcml2 LT5jdXJyX3JiZF9pZHhdLmFkZHIgJj0gfihBVDkxX0VNQUNfUkJEX0FERFJf T1dORVJfU1cpOwo+ICAgICAgICAgICAgICAgICBwcml2LT5jdXJyX3JiZF9p ZHgrKzsKPiAgICAgICAgICAgICAgICAgaWYgKHByaXYtPmN1cnJfcmJkX2lk eCA+IENZR05VTV9ERVZTX0VUSF9BUk1fQVQ5MV9SWF9CVUZTLTEpIHsKPiAg ICAgICAgICAgICAgICAgICAgIHByaXYtPmN1cnJfcmJkX2lkeCA9IDA7Cj4g ICAgICAgICAgICAgICAgIH0KPiAgICAgICAgICAgICAgICAgYnVmZmVyX3Bv cyA9IDA7Cjk4NSw5ODhjOTgxLDk4Mgo8ICAgICAgICAgICAgIGJ1ZmZlcl9w b3MgPSAwOwo8ICAgICAgICAgIH0KPCAgICAgICB9CjwgICAgfQotLS0KPiAg ICAgICAgIH0KPiAgICAgfQo5ODlhOTg0LDk4NQo+IAo+IApkaWZmIC1yIC9j eWdkcml2ZS9jL0FMTC9lY29zMjAxNTAyMDUvZWNvcy9wYWNrYWdlcy9pby9l dGgvY3VycmVudC9zcmMvbHdpcC9ldGhfZHJ2LmMgIi9jeWdkcml2ZS9jL0FM TC9lY29zMjAxNTAyMDUub2xpcyBldGggZmxpY2tzL2Vjb3MvcGFja2FnZXMv aW8vZXRoL2N1cnJlbnQvc3JjL2x3aXAvZXRoX2Rydi5jIgo0MTQsNDE4YzQx NCw0MTYKPCAgICAgaWYgKHAgPT0gTlVMTCkgewo8ICAgICAgICAgU1RBUlRf Q09OU09MRSgpOwo8ICAgICAgICAgZGlhZ19wcmludGYoImNhbm5vdCBhbGxv Y2F0ZSBwYnVmIHRvIHJlY2VpdmUgcGFja2V0XG4iKTsKPCAgICAgICAgIEVO RF9DT05TT0xFKCk7CjwgICAgICAgICByZXR1cm47Ci0tLQo+ICAgICB3aGls ZSAoIXApewo+ICAgICAgICAgY3lnX3RocmVhZF9kZWxheSgxMCk7Cj4gICAg ICAgICBwID0gcGJ1Zl9hbGxvYyhQQlVGX1JBVywgdG90YWxfbGVuLCBQQlVG X1BPT0wpOwpkaWZmIC1yIC9jeWdkcml2ZS9jL0FMTC9lY29zMjAxNTAyMDUv ZWNvcy9wYWNrYWdlcy9uZXQvbHdpcF90Y3BpcC9jdXJyZW50L2NkbC9sd2lw X25ldC5jZGwgIi9jeWdkcml2ZS9jL0FMTC9lY29zMjAxNTAyMDUub2xpcyBl dGggZmxpY2tzL2Vjb3MvcGFja2FnZXMvbmV0L2x3aXBfdGNwaXAvY3VycmVu dC9jZGwvbHdpcF9uZXQuY2RsIgo0MGM0MAo8ICMgQXV0aG9yKHMpOgkgU2lt b24gS2FsbHdlaXQKLS0tCj4gIyBBdXRob3Iocyk6ICAgICBTaW1vbiBLYWxs d2VpdAo1M2M1Mwo8IAkKLS0tCj4gICAgIAo1N2M1Nwo8ICAgICAgICAgICAg ICAgICAgICAgY29yZS9tZW1wLmMJICAgICAgICAgICAgICAgIFwKLS0tCj4g ICAgICAgICAgICAgICAgICAgICBjb3JlL21lbXAuYyAgICAgICAgICAgICAg ICAgICAgXAoxMzk0YzEzOTQKPCAgICAgICAgICAgICBkZWZhdWx0X3ZhbHVl ICAgOAotLS0KPiAgICAgICAgICAgICBkZWZhdWx0X3ZhbHVlICAgQ1lHTlVN X0tFUk5FTF9TWU5DSF9NQk9YX1FVRVVFX1NJWkUKMTQwM2MxNDAzCjwgICAg ICAgICAgICAgZGVmYXVsdF92YWx1ZSAgIDE2Ci0tLQo+ICAgICAgICAgICAg IGRlZmF1bHRfdmFsdWUgICBDWUdOVU1fS0VSTkVMX1NZTkNIX01CT1hfUVVF VUVfU0laRQpkaWZmIC1yIC9jeWdkcml2ZS9jL0FMTC9lY29zMjAxNTAyMDUv ZWNvcy9wYWNrYWdlcy9uZXQvbHdpcF90Y3BpcC9jdXJyZW50L3NyYy9lY29z L3NlcXVlbnRpYWwuYyAiL2N5Z2RyaXZlL2MvQUxML2Vjb3MyMDE1MDIwNS5v bGlzIGV0aCBmbGlja3MvZWNvcy9wYWNrYWdlcy9uZXQvbHdpcF90Y3BpcC9j dXJyZW50L3NyYy9lY29zL3NlcXVlbnRpYWwuYyIKMjcyZDI3MQo8ICAgICAg ICAgICAgIGlmIChzYy0+c3RhdGUgJiBFVEhfRFJWX05FRURTX0RFTElWRVJZ KSB7CjI3NGMyNzMKPCAgICAgICAgICAgICAgICAgY3lnX2Jvb2wgd2FzX2N0 cmxjX2ludDsKLS0tCj4gICAgICAgICAgICAgY3lnX2Jvb2wgd2FzX2N0cmxj X2ludDsKMjc2YzI3NQo8ICAgICAgICAgICAgICAgICBzYy0+c3RhdGUgJj0g fkVUSF9EUlZfTkVFRFNfREVMSVZFUlk7Ci0tLQo+ICAgICAgICAgICAgIHNj LT5zdGF0ZSAmPSB+RVRIX0RSVl9ORUVEU19ERUxJVkVSWTsKMjc4LDI4MGMy NzcsMjc5CjwgICAgICAgICAgICAgICAgIHdhc19jdHJsY19pbnQgPSBIQUxf Q1RSTENfQ0hFQ0soc2MtPmZ1bnMtPmludF92ZWN0b3Ioc2MpLAo8ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChp bnQpIHNjKTsKPCAgICAgICAgICAgICAgICAgaWYgKCF3YXNfY3RybGNfaW50 KSAvLyBGYWxsIHRocm91Z2ggYW5kIHJ1biBub3JtYWwgY29kZQotLS0KPiAg ICAgICAgICAgICB3YXNfY3RybGNfaW50ID0gSEFMX0NUUkxDX0NIRUNLKHNj LT5mdW5zLT5pbnRfdmVjdG9yKHNjKSwKPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpIHNjKTsKPiAgICAgICAg ICAgICBpZiAoIXdhc19jdHJsY19pbnQpIC8vIEZhbGwgdGhyb3VnaCBhbmQg cnVuIG5vcm1hbCBjb2RlCjI4MiwyODNjMjgxCjwgICAgICAgICAgICAgICAg ICAgICBzYy0+ZnVucy0+ZGVsaXZlcihzYyk7CjwgICAgICAgICAgICAgfQot LS0KPiAgICAgICAgICAgICAgICAgc2MtPmZ1bnMtPmRlbGl2ZXIoc2MpOwpk aWZmIC1yIC9jeWdkcml2ZS9jL0FMTC9lY29zMjAxNTAyMDUvZWNvcy9wYWNr YWdlcy9uZXQvbHdpcF90Y3BpcC9jdXJyZW50L3NyYy9lY29zL3N5c19hcmNo LmMgIi9jeWdkcml2ZS9jL0FMTC9lY29zMjAxNTAyMDUub2xpcyBldGggZmxp Y2tzL2Vjb3MvcGFja2FnZXMvbmV0L2x3aXBfdGNwaXAvY3VycmVudC9zcmMv ZWNvcy9zeXNfYXJjaC5jIgoxMTEsMTIwYzExMSwxMjAKPCAJICAgIHZhcl9k YXRhLAo8IAkgICAgc2l6ZW9mKHZhcl9kYXRhKSwKPCAJICAgICZ2YXJfaGFu ZGxlLAo8IAkgICAgJnZhcl9tZW1wb29sCjwgCSk7CjwgCQo8IAl0aHJlYWRz ID0gTlVMTDsKPCAJdG8ubmV4dCA9IE5VTEw7CjwgCQo8IAljeWdfbXV0ZXhf aW5pdCgmc3RhY2tfbXV0ZXgpOwotLS0KPiAgICAgICAgIHZhcl9kYXRhLAo+ ICAgICAgICAgc2l6ZW9mKHZhcl9kYXRhKSwKPiAgICAgICAgICZ2YXJfaGFu ZGxlLAo+ICAgICAgICAgJnZhcl9tZW1wb29sCj4gICAgICk7Cj4gICAgIAo+ ICAgICB0aHJlYWRzID0gTlVMTDsKPiAgICAgdG8ubmV4dCA9IE5VTEw7Cj4g ICAgIAo+ICAgICBjeWdfbXV0ZXhfaW5pdCgmc3RhY2tfbXV0ZXgpOwoyMTUs MjE2YzIxNSwyMTYKPCAJY3lnX21ib3ggKm1ib3g7CjwgCWN5Z19oYW5kbGVf dCBoYW5kbGU7Ci0tLQo+ICAgICBjeWdfbWJveCAqbWJveDsKPiAgICAgY3ln X2hhbmRsZV90IGhhbmRsZTsKMjIwLDIyM2MyMjAsMjIzCjwgCW1ib3ggPSAo Y3lnX21ib3ggKikgY3lnX21lbXBvb2xfdmFyX3RyeV9hbGxvYyh2YXJfaGFu ZGxlLCBzaXplb2YoY3lnX21ib3gpKTsKPCAJaWYgKCFtYm94KQo8IAkgICAg cmV0dXJuIFNZU19NQk9YX05VTEw7CjwgCWN5Z19tYm94X2NyZWF0ZSgmaGFu ZGxlLCBtYm94KTsKLS0tCj4gICAgIG1ib3ggPSAoY3lnX21ib3ggKikgY3ln X21lbXBvb2xfdmFyX3RyeV9hbGxvYyh2YXJfaGFuZGxlLCBzaXplb2YoY3ln X21ib3gpKTsKPiAgICAgaWYgKCFtYm94KQo+ICAgICAgICAgcmV0dXJuIFNZ U19NQk9YX05VTEw7Cj4gICAgIGN5Z19tYm94X2NyZWF0ZSgmaGFuZGxlLCBt Ym94KTsKMjMxYzIzMQo8IAlyZXR1cm4gaGFuZGxlOwotLS0KPiAgICAgcmV0 dXJuIGhhbmRsZTsKMjQ5LDI1MGMyNDksMjUwCjwgCWN5Z19tYm94X2RlbGV0 ZShtYm94KTsKPCAJY3lnX21lbXBvb2xfdmFyX2ZyZWUodmFyX2hhbmRsZSwg KHZvaWQgKikgbWJveCk7Ci0tLQo+ICAgICBjeWdfbWJveF9kZWxldGUobWJv eCk7Cj4gICAgIGN5Z19tZW1wb29sX3Zhcl9mcmVlKHZhcl9oYW5kbGUsICh2 b2lkICopIG1ib3gpOwoyNzAsMjcxYzI3MCwyNzEKPCBzeXNfbWJveF9wb3N0 KHN5c19tYm94X3QgbWJveCwgdm9pZCAqbXNnKQo8IHsKLS0tCj4gc3lzX21i b3hfcG9zdChzeXNfbWJveF90IG1ib3gsIHZvaWQgKm1zZyl7Cj4gCjI3M2My NzMKPCAgICAgaWYgKCFtc2cpCi0tLQo+ICAgICBpZiAoIW1zZyl7CjI3NWMy NzUsMjc4CjwgICAgIHdoaWxlIChjeWdfbWJveF9wdXQobWJveCwgbXNnKSA9 PSBmYWxzZSk7Ci0tLQo+ICAgICB9Cj4gICAgIHdoaWxlICghY3lnX21ib3hf cHV0KG1ib3gsIG1zZykpewo+ICAgICAgICAgY3lnX3RocmVhZF95aWVsZCgp Owo+ICAgICB9CjI3N2QyNzkKPCAK --=_2778e1c474cd952f6be0b8d899c4fa11--