From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 8C19C4561F for ; Wed, 8 Feb 2023 09:35:05 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3051868BEC5; Wed, 8 Feb 2023 11:35:02 +0200 (EET) Received: from nef.ens.fr (nef2.ens.fr [129.199.96.40]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 73826689CE2 for ; Wed, 8 Feb 2023 11:34:55 +0200 (EET) X-ENS-nef-client: 129.199.129.80 ( name = phare.normalesup.org ) Received: from phare.normalesup.org (phare.normalesup.org [129.199.129.80]) by nef.ens.fr (8.14.4/1.01.28121999) with ESMTP id 3189YsSm007394 for ; Wed, 8 Feb 2023 10:34:54 +0100 Received: by phare.normalesup.org (Postfix, from userid 1001) id 27DD8EB5BB; Wed, 8 Feb 2023 10:34:54 +0100 (CET) Date: Wed, 8 Feb 2023 10:34:54 +0100 From: Nicolas George To: FFmpeg development discussions and patches Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.4.3 (nef.ens.fr [129.199.96.32]); Wed, 08 Feb 2023 10:34:54 +0100 (CET) Subject: Re: [FFmpeg-devel] [PATCH] avfilter: use ff_inlink_make_frame_writable() X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: UGF1bCBCIE1haG9sICgxMjAyMy0wMi0wNyk6Cj4gT24gMi82LzIzLCBQYXVsIEIgTWFob2wgPG9u ZW1kYUBnbWFpbC5jb20+IHdyb3RlOgo+ID4gUGF0Y2ggYXR0YWNoZWQuCj4gPgo+IAo+IEJldHRl ciBwYXRjaCBhdHRhY2hlZC4KCj4gRnJvbSAxNWYwMDRjY2IxOTZlMzljNmM0MjllMmM5MzA0MTQ0 NGMxYTFlNDE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQo+IEZyb206IFBhdWwgQiBNYWhvbCA8 b25lbWRhQGdtYWlsLmNvbT4KPiBEYXRlOiBNb24sIDYgRmViIDIwMjMgMTQ6NTc6NTAgKzAxMDAK PiBTdWJqZWN0OiBbUEFUQ0hdIGF2ZmlsdGVyOiB1c2UgZmZfaW5saW5rX21ha2VfZnJhbWVfd3Jp dGFibGUoKQo+IAo+IFNpZ25lZC1vZmYtYnk6IFBhdWwgQiBNYWhvbCA8b25lbWRhQGdtYWlsLmNv bT4KPiAtLS0KPiAgbGliYXZmaWx0ZXIvYXZmX2FiaXRzY29wZS5jICAgICAgIHwgMTEgKysrKysr KystLQo+ICBsaWJhdmZpbHRlci9hdmZfYWhpc3RvZ3JhbS5jICAgICAgfCAgOSArKysrKystLQo+ ICBsaWJhdmZpbHRlci9hdmZfYXBoYXNlbWV0ZXIuYyAgICAgfCAgOSArKysrKystLQo+ICBsaWJh dmZpbHRlci9hdmZfYXZlY3RvcnNjb3BlLmMgICAgfCAgNyArKysrKystCj4gIGxpYmF2ZmlsdGVy L2F2Zl9zaG93c3BlY3RydW0uYyAgICB8ICA1ICsrKystCj4gIGxpYmF2ZmlsdGVyL2F2Zl9zaG93 dm9sdW1lLmMgICAgICB8ICA4ICsrKysrKy0tCj4gIGxpYmF2ZmlsdGVyL2ZfZWJ1cjEyOC5jICAg ICAgICAgICB8IDEwICsrKysrKystLQo+ICBsaWJhdmZpbHRlci9mX3Blcm1zLmMgICAgICAgICAg ICAgfCAgMyArKy0KPiAgbGliYXZmaWx0ZXIvZnJhbWVzeW5jLmMgICAgICAgICAgIHwgIDIgKy0K PiAgbGliYXZmaWx0ZXIvdmZfY292ZXJfcmVjdC5jICAgICAgIHwgIDkgKysrKysrLS0KPiAgbGli YXZmaWx0ZXIvdmZfZGVkb3QuYyAgICAgICAgICAgIHwgIDIgKy0KPiAgbGliYXZmaWx0ZXIvdmZf Zmxvb2RmaWxsLmMgICAgICAgIHwgIDUgKysrKy0KPiAgbGliYXZmaWx0ZXIvdmZfbGVuc2Z1bi5j ICAgICAgICAgIHwgIDggKysrKysrKy0KPiAgbGliYXZmaWx0ZXIvdmZfb3ZlcmxheV9jdWRhLmMg ICAgIHwgIDMgKystCj4gIGxpYmF2ZmlsdGVyL3ZmX3BhbGV0dGV1c2UuYyAgICAgICB8ICAyICst Cj4gIGxpYmF2ZmlsdGVyL3ZmX3Bob3Rvc2Vuc2l0aXZpdHkuYyB8ICAzICsrLQo+ICBsaWJhdmZp bHRlci92Zl9yZXBlYXRmaWVsZHMuYyAgICAgfCAzNCArKysrKysrKysrKysrKysrKysrKysrKyst LS0tLS0tCj4gIGxpYmF2ZmlsdGVyL3ZmX3NpZ25hbHN0YXRzLmMgICAgICB8IDE3ICsrKysrKysr KysrKy0tLS0KPiAgbGliYXZmaWx0ZXIvdmZfdGVsZWNpbmUuYyAgICAgICAgIHwgMTMgKysrKysr KysrKy0tCj4gIGxpYmF2ZmlsdGVyL3ZmX3ZpZHN0YWJkZXRlY3QuYyAgICB8IDEyICsrKysrKysr LS0tCj4gIDIwIGZpbGVzIGNoYW5nZWQsIDEzNCBpbnNlcnRpb25zKCspLCAzOCBkZWxldGlvbnMo LSkKPiAKPiBkaWZmIC0tZ2l0IGEvbGliYXZmaWx0ZXIvYXZmX2FiaXRzY29wZS5jIGIvbGliYXZm aWx0ZXIvYXZmX2FiaXRzY29wZS5jCj4gaW5kZXggNGZjM2MwNmVjYi4uNzgyZDU3ZTAzYSAxMDA2 NDQKPiAtLS0gYS9saWJhdmZpbHRlci9hdmZfYWJpdHNjb3BlLmMKPiArKysgYi9saWJhdmZpbHRl ci9hdmZfYWJpdHNjb3BlLmMKPiBAQCAtMjEzLDYgKzIxMyw3IEBAIHN0YXRpYyBpbnQgZmlsdGVy X2ZyYW1lKEFWRmlsdGVyTGluayAqaW5saW5rLCBBVkZyYW1lICppbnNhbXBsZXMpCj4gICAgICBB VkZpbHRlckxpbmsgKm91dGxpbmsgPSBjdHgtPm91dHB1dHNbMF07Cj4gICAgICBBdWRpb0JpdFNj b3BlQ29udGV4dCAqcyA9IGN0eC0+cHJpdjsKPiAgICAgIEFWRnJhbWUgKm91dHBpY3JlZjsKPiAr ICAgIGludCByZXQ7Cj4gIAo+ICAgICAgaWYgKHMtPm1vZGUgPT0gMCB8fCAhcy0+b3V0cGljcmVm KSB7Cj4gICAgICAgICAgb3V0cGljcmVmID0gZmZfZ2V0X3ZpZGVvX2J1ZmZlcihvdXRsaW5rLCBv dXRsaW5rLT53LCBvdXRsaW5rLT5oKTsKPiBAQCAtMjI4LDEwICsyMjksMTYgQEAgc3RhdGljIGlu dCBmaWx0ZXJfZnJhbWUoQVZGaWx0ZXJMaW5rICppbmxpbmssIEFWRnJhbWUgKmluc2FtcGxlcykK PiAgICAgIH0KPiAgCj4gICAgICBpZiAocy0+bW9kZSA9PSAxKSB7Cj4gLSAgICAgICAgYXZfZnJh bWVfbWFrZV93cml0YWJsZShzLT5vdXRwaWNyZWYpOwo+ICsgICAgICAgIHJldCA9IGZmX2lubGlu a19tYWtlX2ZyYW1lX3dyaXRhYmxlKG91dGxpbmssICZzLT5vdXRwaWNyZWYpOwo+ICsgICAgICAg IGlmIChyZXQgPCAwKSB7Cj4gKyAgICAgICAgICAgIGF2X2ZyYW1lX2ZyZWUoJmluc2FtcGxlcyk7 Cj4gKyAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICAgICAgfQo+ICAgICAgICAgIG91dHBp Y3JlZiA9IGF2X2ZyYW1lX2Nsb25lKHMtPm91dHBpY3JlZik7Cj4gLSAgICAgICAgaWYgKCFvdXRw aWNyZWYpCj4gKyAgICAgICAgaWYgKCFvdXRwaWNyZWYpIHsKPiArICAgICAgICAgICAgYXZfZnJh bWVfZnJlZSgmaW5zYW1wbGVzKTsKPiAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVN KTsKPiArICAgICAgICB9Cj4gICAgICB9Cj4gIAo+ICAgICAgb3V0cGljcmVmLT5wdHMgPSBhdl9y ZXNjYWxlX3EoaW5zYW1wbGVzLT5wdHMsIGlubGluay0+dGltZV9iYXNlLCBvdXRsaW5rLT50aW1l X2Jhc2UpOwo+IGRpZmYgLS1naXQgYS9saWJhdmZpbHRlci9hdmZfYWhpc3RvZ3JhbS5jIGIvbGli YXZmaWx0ZXIvYXZmX2FoaXN0b2dyYW0uYwo+IGluZGV4IGM0NTQ5MzczMGQuLjA2NDkwMTkyYTUg MTAwNjQ0Cj4gLS0tIGEvbGliYXZmaWx0ZXIvYXZmX2FoaXN0b2dyYW0uYwo+ICsrKyBiL2xpYmF2 ZmlsdGVyL2F2Zl9haGlzdG9ncmFtLmMKPiBAQCAtMjA5LDcgKzIwOSw3IEBAIHN0YXRpYyBpbnQg ZmlsdGVyX2ZyYW1lKEFWRmlsdGVyTGluayAqaW5saW5rLCBBVkZyYW1lICppbikKPiAgICAgIEF1 ZGlvSGlzdG9ncmFtQ29udGV4dCAqcyA9IGN0eC0+cHJpdjsKPiAgICAgIGNvbnN0IGludCBIID0g cy0+aGlzdG9ncmFtX2g7Cj4gICAgICBjb25zdCBpbnQgdyA9IHMtPnc7Cj4gLSAgICBpbnQgYywg eSwgbiwgcCwgYmluOwo+ICsgICAgaW50IGMsIHksIG4sIHAsIGJpbiwgcmV0Owo+ICAgICAgdWlu dDY0X3QgYWNtYXggPSAxOwo+ICAgICAgQVZGcmFtZSAqY2xvbmU7Cj4gIAo+IEBAIC0yMjksNyAr MjI5LDEyIEBAIHN0YXRpYyBpbnQgZmlsdGVyX2ZyYW1lKEFWRmlsdGVyTGluayAqaW5saW5rLCBB VkZyYW1lICppbikKPiAgICAgICAgICB9Cj4gICAgICB9Cj4gIAo+IC0gICAgYXZfZnJhbWVfbWFr ZV93cml0YWJsZShzLT5vdXQpOwo+ICsgICAgcmV0ID0gZmZfaW5saW5rX21ha2VfZnJhbWVfd3Jp dGFibGUob3V0bGluaywgJnMtPm91dCk7Cj4gKyAgICBpZiAocmV0IDwgMCkgewo+ICsgICAgICAg IGF2X2ZyYW1lX2ZyZWUoJmluKTsKPiArICAgICAgICByZXR1cm4gcmV0Owo+ICsgICAgfQo+ICsK PiAgICAgIGlmIChzLT5kbW9kZSA9PSBTRVBBUkFURSkgewo+ICAgICAgICAgIGZvciAoeSA9IDA7 IHkgPCB3OyB5KyspIHsKPiAgICAgICAgICAgICAgcy0+Y29tYmluZV9idWZmZXJbMyAqIHkgICAg XSA9IDA7Cj4gZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVyL2F2Zl9hcGhhc2VtZXRlci5jIGIvbGli YXZmaWx0ZXIvYXZmX2FwaGFzZW1ldGVyLmMKPiBpbmRleCAwZjc2OTI5ODJjLi5iZjlmOTIyNjM5 IDEwMDY0NAo+IC0tLSBhL2xpYmF2ZmlsdGVyL2F2Zl9hcGhhc2VtZXRlci5jCj4gKysrIGIvbGli YXZmaWx0ZXIvYXZmX2FwaGFzZW1ldGVyLmMKPiBAQCAtMjksNiArMjksNyBAQAo+ICAjaW5jbHVk ZSAibGliYXZ1dGlsL3BhcnNldXRpbHMuaCIKPiAgI2luY2x1ZGUgImxpYmF2dXRpbC90aW1lc3Rh bXAuaCIKPiAgI2luY2x1ZGUgImF2ZmlsdGVyLmgiCj4gKyNpbmNsdWRlICJmaWx0ZXJzLmgiCj4g ICNpbmNsdWRlICJmb3JtYXRzLmgiCj4gICNpbmNsdWRlICJhdWRpby5oIgo+ICAjaW5jbHVkZSAi dmlkZW8uaCIKPiBAQCAtMjQ2LDcgKzI0Nyw3IEBAIHN0YXRpYyBpbnQgZmlsdGVyX2ZyYW1lKEFW RmlsdGVyTGluayAqaW5saW5rLCBBVkZyYW1lICppbikKPiAgICAgIGZsb2F0IGZwaGFzZSA9IDA7 Cj4gICAgICBBVkZyYW1lICpvdXQ7Cj4gICAgICB1aW50OF90ICpkc3Q7Cj4gLSAgICBpbnQgaTsK PiArICAgIGludCBpLCByZXQ7Cj4gICAgICBpbnQgbW9ub19tZWFzdXJlbWVudDsKPiAgICAgIGlu dCBvdXRfcGhhc2VfbWVhc3VyZW1lbnQ7Cj4gICAgICBmbG9hdCB0b2xlcmFuY2UgPSAxLjBmIC0g cy0+dG9sZXJhbmNlOwo+IEBAIC0yNjUsOCArMjY2LDEyIEBAIHN0YXRpYyBpbnQgZmlsdGVyX2Zy YW1lKEFWRmlsdGVyTGluayAqaW5saW5rLCBBVkZyYW1lICppbikKPiAgICAgICAgICBmb3IgKGkg PSAwOyBpIDwgb3V0bGluay0+aDsgaSsrKQo+ICAgICAgICAgICAgICBtZW1zZXQob3V0LT5kYXRh WzBdICsgaSAqIG91dC0+bGluZXNpemVbMF0sIDAsIG91dGxpbmstPncgKiA0KTsKPiAgICAgIH0g ZWxzZSBpZiAocy0+ZG9fdmlkZW8pIHsKPiArICAgICAgICByZXQgPSBmZl9pbmxpbmtfbWFrZV9m cmFtZV93cml0YWJsZShvdXRsaW5rLCAmcy0+b3V0KTsKPiArICAgICAgICBpZiAocmV0IDwgMCkg ewo+ICsgICAgICAgICAgICBhdl9mcmFtZV9mcmVlKCZpbik7Cj4gKyAgICAgICAgICAgIHJldHVy biByZXQ7Cj4gKyAgICAgICAgfQo+ICAgICAgICAgIG91dCA9IHMtPm91dDsKPiAtICAgICAgICBh dl9mcmFtZV9tYWtlX3dyaXRhYmxlKHMtPm91dCk7Cj4gICAgICAgICAgZm9yIChpID0gb3V0bGlu ay0+aCAtIDE7IGkgPj0gMTA7IGktLSkKPiAgICAgICAgICAgICAgbWVtbW92ZShvdXQtPmRhdGFb MF0gKyAoaSAgKSAqIG91dC0+bGluZXNpemVbMF0sCj4gICAgICAgICAgICAgICAgICAgICAgb3V0 LT5kYXRhWzBdICsgKGktMSkgKiBvdXQtPmxpbmVzaXplWzBdLAo+IGRpZmYgLS1naXQgYS9saWJh dmZpbHRlci9hdmZfYXZlY3RvcnNjb3BlLmMgYi9saWJhdmZpbHRlci9hdmZfYXZlY3RvcnNjb3Bl LmMKPiBpbmRleCAzOTI3ZDgwYjQyLi42ZTQ1ZmQ5NTc1IDEwMDY0NAo+IC0tLSBhL2xpYmF2Zmls dGVyL2F2Zl9hdmVjdG9yc2NvcGUuYwo+ICsrKyBiL2xpYmF2ZmlsdGVyL2F2Zl9hdmVjdG9yc2Nv cGUuYwo+IEBAIC0yOTcsNiArMjk3LDcgQEAgc3RhdGljIGludCBmaWx0ZXJfZnJhbWUoQVZGaWx0 ZXJMaW5rICppbmxpbmssIEFWRnJhbWUgKmluc2FtcGxlcykKPiAgICAgIHVuc2lnbmVkIHgsIHk7 Cj4gICAgICB1bnNpZ25lZCBwcmV2X3ggPSBzLT5wcmV2X3gsIHByZXZfeSA9IHMtPnByZXZfeTsK PiAgICAgIGRvdWJsZSB6b29tID0gcy0+em9vbTsKPiArICAgIGludCByZXQ7Cj4gIAo+ICAgICAg aWYgKCFzLT5vdXRwaWNyZWYgfHwgcy0+b3V0cGljcmVmLT53aWR0aCAgIT0gb3V0bGluay0+dyB8 fAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+b3V0cGljcmVmLT5oZWlnaHQgIT0gb3V0 bGluay0+aCkgewo+IEBAIC0zMTQsNyArMzE1LDExIEBAIHN0YXRpYyBpbnQgZmlsdGVyX2ZyYW1l KEFWRmlsdGVyTGluayAqaW5saW5rLCBBVkZyYW1lICppbnNhbXBsZXMpCj4gICAgICBzLT5vdXRw aWNyZWYtPnB0cyA9IGF2X3Jlc2NhbGVfcShpbnNhbXBsZXMtPnB0cywgaW5saW5rLT50aW1lX2Jh c2UsIG91dGxpbmstPnRpbWVfYmFzZSk7Cj4gICAgICBzLT5vdXRwaWNyZWYtPmR1cmF0aW9uID0g MTsKPiAgCj4gLSAgICBhdl9mcmFtZV9tYWtlX3dyaXRhYmxlKHMtPm91dHBpY3JlZik7Cj4gKyAg ICByZXQgPSBmZl9pbmxpbmtfbWFrZV9mcmFtZV93cml0YWJsZShvdXRsaW5rLCAmcy0+b3V0cGlj cmVmKTsKPiArICAgIGlmIChyZXQgPCAwKSB7Cj4gKyAgICAgICAgYXZfZnJhbWVfZnJlZSgmaW5z YW1wbGVzKTsKPiArICAgICAgICByZXR1cm4gcmV0Owo+ICsgICAgfQo+ICAgICAgZmZfZmlsdGVy X2V4ZWN1dGUoY3R4LCBmYWRlLCBOVUxMLCBOVUxMLCBGRk1JTihvdXRsaW5rLT5oLCBmZl9maWx0 ZXJfZ2V0X25iX3RocmVhZHMoY3R4KSkpOwo+ICAKPiAgICAgIGlmICh6b29tIDwgMSkgewo+IGRp ZmYgLS1naXQgYS9saWJhdmZpbHRlci9hdmZfc2hvd3NwZWN0cnVtLmMgYi9saWJhdmZpbHRlci9h dmZfc2hvd3NwZWN0cnVtLmMKPiBpbmRleCAyNGE0MjRhMzRhLi40Y2U5NjQ3MDZmIDEwMDY0NAo+ IC0tLSBhL2xpYmF2ZmlsdGVyL2F2Zl9zaG93c3BlY3RydW0uYwo+ICsrKyBiL2xpYmF2ZmlsdGVy L2F2Zl9zaG93c3BlY3RydW0uYwo+IEBAIC0xNDQxLDcgKzE0NDEsMTAgQEAgc3RhdGljIGludCBw bG90X3NwZWN0cnVtX2NvbHVtbihBVkZpbHRlckxpbmsgKmlubGluaywgQVZGcmFtZSAqaW5zYW1w bGVzKQo+ICAgICAgICAgIH0KPiAgICAgIH0KPiAgCj4gLSAgICBhdl9mcmFtZV9tYWtlX3dyaXRh YmxlKHMtPm91dHBpY3JlZik7Cj4gKyAgICByZXQgPSBmZl9pbmxpbmtfbWFrZV9mcmFtZV93cml0 YWJsZShvdXRsaW5rLCAmcy0+b3V0cGljcmVmKTsKPiArICAgIGlmIChyZXQgPCAwKQo+ICsgICAg ICAgIHJldHVybiByZXQ7Cj4gKyAgICBvdXRwaWNyZWYgPSBzLT5vdXRwaWNyZWY7Cj4gICAgICAv KiBjb3B5IHRvIG91dHB1dCAqLwo+ICAgICAgaWYgKHMtPm9yaWVudGF0aW9uID09IFZFUlRJQ0FM KSB7Cj4gICAgICAgICAgaWYgKHMtPnNsaWRpbmcgPT0gU0NST0xMKSB7Cj4gZGlmZiAtLWdpdCBh L2xpYmF2ZmlsdGVyL2F2Zl9zaG93dm9sdW1lLmMgYi9saWJhdmZpbHRlci9hdmZfc2hvd3ZvbHVt ZS5jCj4gaW5kZXggMjRkNDJkMDMwZC4uZmE2NGQ1MjM3YSAxMDA2NDQKPiAtLS0gYS9saWJhdmZp bHRlci9hdmZfc2hvd3ZvbHVtZS5jCj4gKysrIGIvbGliYXZmaWx0ZXIvYXZmX3Nob3d2b2x1bWUu Ywo+IEBAIC0zMjQsNyArMzI0LDcgQEAgc3RhdGljIGludCBmaWx0ZXJfZnJhbWUoQVZGaWx0ZXJM aW5rICppbmxpbmssIEFWRnJhbWUgKmluc2FtcGxlcykKPiAgICAgIEFWRmlsdGVyTGluayAqb3V0 bGluayA9IGN0eC0+b3V0cHV0c1swXTsKPiAgICAgIFNob3dWb2x1bWVDb250ZXh0ICpzID0gY3R4 LT5wcml2Owo+ICAgICAgY29uc3QgaW50IHN0ZXAgPSBzLT5zdGVwOwo+IC0gICAgaW50IGMsIGos IGssIG1heF9kcmF3Owo+ICsgICAgaW50IGMsIGosIGssIG1heF9kcmF3LCByZXQ7Cj4gICAgICBj aGFyIGNoYW5uZWxfbmFtZVs2NF07Cj4gICAgICBBVkZyYW1lICpvdXQ7Cj4gIAo+IEBAIC00MzQs NyArNDM0LDExIEBAIHN0YXRpYyBpbnQgZmlsdGVyX2ZyYW1lKEFWRmlsdGVyTGluayAqaW5saW5r LCBBVkZyYW1lICppbnNhbXBsZXMpCj4gICAgICBvdXQgPSBhdl9mcmFtZV9jbG9uZShzLT5vdXQp Owo+ICAgICAgaWYgKCFvdXQpCj4gICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKPiAt ICAgIGF2X2ZyYW1lX21ha2Vfd3JpdGFibGUob3V0KTsKPiArICAgIHJldCA9IGZmX2lubGlua19t YWtlX2ZyYW1lX3dyaXRhYmxlKG91dGxpbmssICZvdXQpOwo+ICsgICAgaWYgKHJldCA8IDApIHsK PiArICAgICAgICBhdl9mcmFtZV9mcmVlKCZvdXQpOwo+ICsgICAgICAgIHJldHVybiByZXQ7Cj4g KyAgICB9Cj4gIAo+ICAgICAgLyogZHJhdyB2b2x1bWUgbGV2ZWwgKi8KPiAgICAgIGZvciAoYyA9 IDA7IGMgPCBpbmxpbmstPmNoX2xheW91dC5uYl9jaGFubmVscyAmJiBzLT5oID49IDggJiYgcy0+ ZHJhd192b2x1bWU7IGMrKykgewo+IGRpZmYgLS1naXQgYS9saWJhdmZpbHRlci9mX2VidXIxMjgu YyBiL2xpYmF2ZmlsdGVyL2ZfZWJ1cjEyOC5jCj4gaW5kZXggOGFmYWIzN2ZkYi4uZWYwZmI0YTUy YSAxMDA2NDQKPiAtLS0gYS9saWJhdmZpbHRlci9mX2VidXIxMjguYwo+ICsrKyBiL2xpYmF2Zmls dGVyL2ZfZWJ1cjEyOC5jCj4gQEAgLTYxOCw3ICs2MTgsNyBAQCBzdGF0aWMgaW50IGdhdGVfdXBk YXRlKHN0cnVjdCBpbnRlZ3JhdG9yICppbnRlZywgZG91YmxlIHBvd2VyLAo+ICAKPiAgc3RhdGlj IGludCBmaWx0ZXJfZnJhbWUoQVZGaWx0ZXJMaW5rICppbmxpbmssIEFWRnJhbWUgKmluc2FtcGxl cykKPiAgewoKPiAtICAgIGludCBpLCBjaCwgaWR4X2luc2FtcGxlOwo+ICsgICAgaW50IGksIGNo LCBpZHhfaW5zYW1wbGUsIHJldDsKPiAgICAgIEFWRmlsdGVyQ29udGV4dCAqY3R4ID0gaW5saW5r LT5kc3Q7Cj4gICAgICBFQlVSMTI4Q29udGV4dCAqZWJ1cjEyOCA9IGN0eC0+cHJpdjsKPiAgICAg IGNvbnN0IGludCBuYl9jaGFubmVscyA9IGVidXIxMjgtPm5iX2NoYW5uZWxzOwo+IEBAIC04MjEs NyArODIxLDEzIEBAIHN0YXRpYyBpbnQgZmlsdGVyX2ZyYW1lKEFWRmlsdGVyTGluayAqaW5saW5r LCBBVkZyYW1lICppbnNhbXBsZXMpCj4gICAgICAgICAgICAgICAgICB5X2xvdWRuZXNzX2x1X2dy YXBoID0gbHVfdG9feShlYnVyMTI4LCBsb3VkbmVzc18zMDAwIC0gZWJ1cjEyOC0+dGFyZ2V0KTsK PiAgICAgICAgICAgICAgICAgIHlfbG91ZG5lc3NfbHVfZ2F1Z2UgPSBsdV90b195KGVidXIxMjgs IGdhdWdlX3ZhbHVlKTsKPiAgCj4gLSAgICAgICAgICAgICAgICBhdl9mcmFtZV9tYWtlX3dyaXRh YmxlKHBpYyk7Cj4gKyAgICAgICAgICAgICAgICByZXQgPSBmZl9pbmxpbmtfbWFrZV9mcmFtZV93 cml0YWJsZShvdXRsaW5rLCAmZWJ1cjEyOC0+b3V0cGljcmVmKTsKPiArICAgICAgICAgICAgICAg IGlmIChyZXQgPCAwKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgYXZfZnJhbWVfZnJlZSgmaW5z YW1wbGVzKTsKPiArICAgICAgICAgICAgICAgICAgICBlYnVyMTI4LT5pbnNhbXBsZXMgPSBOVUxM Owo+ICsgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICAgICAgICAgICAgICB9 Cj4gKyAgICAgICAgICAgICAgICBwaWMgPSBlYnVyMTI4LT5vdXRwaWNyZWY7CgpZb3Ugc2hvdWxk IHJlbW92ZSB0aGUg4oCccGljID0gZWJ1cjEyOC0+b3V0cGljcmVm4oCdIHRoYXQgaGFwcGVucyB3 aGVuIGl0IGlzCmRlY2xhcmVkLCBzaW5jZSBpdCBpcyBub3cgYSBkZWFkIGFzc2lnbm1lbnQuCgo+ ICAgICAgICAgICAgICAgICAgLyogZHJhdyB0aGUgZ3JhcGggdXNpbmcgdGhlIHNob3J0LXRlcm0g bG91ZG5lc3MgKi8KPiAgICAgICAgICAgICAgICAgIHAgPSBwaWMtPmRhdGFbMF0gKyBlYnVyMTI4 LT5ncmFwaC55KnBpYy0+bGluZXNpemVbMF0gKyBlYnVyMTI4LT5ncmFwaC54KjM7Cj4gICAgICAg ICAgICAgICAgICBmb3IgKHkgPSAwOyB5IDwgZWJ1cjEyOC0+Z3JhcGguaDsgeSsrKSB7Cj4gZGlm ZiAtLWdpdCBhL2xpYmF2ZmlsdGVyL2ZfcGVybXMuYyBiL2xpYmF2ZmlsdGVyL2ZfcGVybXMuYwo+ IGluZGV4IGUyNmExNWZkMDYuLjk1ZmI5N2YyMDEgMTAwNjQ0Cj4gLS0tIGEvbGliYXZmaWx0ZXIv Zl9wZXJtcy5jCj4gKysrIGIvbGliYXZmaWx0ZXIvZl9wZXJtcy5jCj4gQEAgLTI0LDYgKzI0LDcg QEAKPiAgI2luY2x1ZGUgImxpYmF2dXRpbC9vcHQuaCIKPiAgI2luY2x1ZGUgImxpYmF2dXRpbC9y YW5kb21fc2VlZC5oIgo+ICAjaW5jbHVkZSAiYXVkaW8uaCIKPiArI2luY2x1ZGUgImZpbHRlcnMu aCIKPiAgI2luY2x1ZGUgInZpZGVvLmgiCj4gIAo+ICBlbnVtIG1vZGUgewo+IEBAIC05Niw3ICs5 Nyw3IEBAIHN0YXRpYyBpbnQgZmlsdGVyX2ZyYW1lKEFWRmlsdGVyTGluayAqaW5saW5rLCBBVkZy YW1lICpmcmFtZSkKPiAgICAgICAgICAgICBpbl9wZXJtID09IG91dF9wZXJtID8gIiAobm8tb3Ap IiA6ICIiKTsKPiAgCj4gICAgICBpZiAoaW5fcGVybSA9PSBSTyAmJiBvdXRfcGVybSA9PSBSVykg ewo+IC0gICAgICAgIGlmICgocmV0ID0gYXZfZnJhbWVfbWFrZV93cml0YWJsZShmcmFtZSkpIDwg MCkKPiArICAgICAgICBpZiAoKHJldCA9IGZmX2lubGlua19tYWtlX2ZyYW1lX3dyaXRhYmxlKGlu bGluaywgJmZyYW1lKSkgPCAwKQo+ICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICAgICAgfSBl bHNlIGlmIChpbl9wZXJtID09IFJXICYmIG91dF9wZXJtID09IFJPKSB7Cj4gICAgICAgICAgb3V0 ID0gYXZfZnJhbWVfY2xvbmUoZnJhbWUpOwo+IGRpZmYgLS1naXQgYS9saWJhdmZpbHRlci9mcmFt ZXN5bmMuYyBiL2xpYmF2ZmlsdGVyL2ZyYW1lc3luYy5jCj4gaW5kZXggZWU5MWU0Y2Y2OC4uNDIy ZjRmN2FkMSAxMDA2NDQKPiAtLS0gYS9saWJhdmZpbHRlci9mcmFtZXN5bmMuYwo+ICsrKyBiL2xp YmF2ZmlsdGVyL2ZyYW1lc3luYy5jCj4gQEAgLTI4OCw3ICsyODgsNyBAQCBpbnQgZmZfZnJhbWVz eW5jX2dldF9mcmFtZShGRkZyYW1lU3luYyAqZnMsIHVuc2lnbmVkIGluLCBBVkZyYW1lICoqcmZy YW1lLAo+ICAgICAgICAgIGlmIChuZWVkX2NvcHkpIHsKPiAgICAgICAgICAgICAgaWYgKCEoZnJh bWUgPSBhdl9mcmFtZV9jbG9uZShmcmFtZSkpKQo+ICAgICAgICAgICAgICAgICAgcmV0dXJuIEFW RVJST1IoRU5PTUVNKTsKPiAtICAgICAgICAgICAgaWYgKChyZXQgPSBhdl9mcmFtZV9tYWtlX3dy aXRhYmxlKGZyYW1lKSkgPCAwKSB7Cj4gKyAgICAgICAgICAgIGlmICgocmV0ID0gZmZfaW5saW5r X21ha2VfZnJhbWVfd3JpdGFibGUoZnMtPnBhcmVudC0+aW5wdXRzWzBdLCAmZnJhbWUpIDwgMCkp IHsKPiAgICAgICAgICAgICAgICAgIGF2X2ZyYW1lX2ZyZWUoJmZyYW1lKTsKPiAgICAgICAgICAg ICAgICAgIHJldHVybiByZXQ7Cj4gICAgICAgICAgICAgIH0KPiBkaWZmIC0tZ2l0IGEvbGliYXZm aWx0ZXIvdmZfY292ZXJfcmVjdC5jIGIvbGliYXZmaWx0ZXIvdmZfY292ZXJfcmVjdC5jCj4gaW5k ZXggMDFjOWYyYWJiYi4uNjQyNzQ3YTM1MSAxMDA2NDQKPiAtLS0gYS9saWJhdmZpbHRlci92Zl9j b3Zlcl9yZWN0LmMKPiArKysgYi9saWJhdmZpbHRlci92Zl9jb3Zlcl9yZWN0LmMKPiBAQCAtMjQs NiArMjQsNyBAQAo+ICAKPiAgI2luY2x1ZGUgImxpYmF2dXRpbC9pbWd1dGlscy5oIgo+ICAjaW5j bHVkZSAibGliYXZ1dGlsL29wdC5oIgo+ICsjaW5jbHVkZSAiZmlsdGVycy5oIgo+ICAjaW5jbHVk ZSAiaW50ZXJuYWwuaCIKPiAgCj4gICNpbmNsdWRlICJsYXZmdXRpbHMuaCIKPiBAQCAtMTI1LDcg KzEyNiw3IEBAIHN0YXRpYyBpbnQgZmlsdGVyX2ZyYW1lKEFWRmlsdGVyTGluayAqaW5saW5rLCBB VkZyYW1lICppbikKPiAgICAgIEFWRmlsdGVyQ29udGV4dCAqY3R4ID0gaW5saW5rLT5kc3Q7Cj4g ICAgICBDb3ZlckNvbnRleHQgKmNvdmVyID0gY3R4LT5wcml2Owo+ICAgICAgQVZEaWN0aW9uYXJ5 RW50cnkgKmV4LCAqZXksICpldywgKmVoOwo+IC0gICAgaW50IHggPSAtMSwgeSA9IC0xLCB3ID0g LTEsIGggPSAtMTsKPiArICAgIGludCByZXQsIHggPSAtMSwgeSA9IC0xLCB3ID0gLTEsIGggPSAt MTsKPiAgICAgIGNoYXIgKnhlbmRwdHIgPSBOVUxMLCAqeWVuZHB0ciA9IE5VTEwsICp3ZW5kcHRy ID0gTlVMTCwgKmhlbmRwdHIgPSBOVUxMOwo+ICAKPiAgICAgIGV4ID0gYXZfZGljdF9nZXQoaW4t Pm1ldGFkYXRhLCAibGF2ZmkucmVjdC54IiwgTlVMTCwgQVZfRElDVF9NQVRDSF9DQVNFKTsKPiBA QCAtMTcwLDcgKzE3MSwxMSBAQCBzdGF0aWMgaW50IGZpbHRlcl9mcmFtZShBVkZpbHRlckxpbmsg KmlubGluaywgQVZGcmFtZSAqaW4pCj4gICAgICB4ID0gYXZfY2xpcCh4LCAwLCBpbi0+d2lkdGgg IC0gdyk7Cj4gICAgICB5ID0gYXZfY2xpcCh5LCAwLCBpbi0+aGVpZ2h0IC0gaCk7Cj4gIAo+IC0g ICAgYXZfZnJhbWVfbWFrZV93cml0YWJsZShpbik7Cj4gKyAgICByZXQgPSBmZl9pbmxpbmtfbWFr ZV9mcmFtZV93cml0YWJsZShpbmxpbmssICZpbik7Cj4gKyAgICBpZiAocmV0IDwgMCkgewo+ICsg ICAgICAgIGF2X2ZyYW1lX2ZyZWUoJmluKTsKPiArICAgICAgICByZXR1cm4gcmV0Owo+ICsgICAg fQo+ICAKPiAgICAgIGlmIChjb3Zlci0+bW9kZSA9PSBNT0RFX0JMVVIpIHsKPiAgICAgICAgICBi bHVyIChjb3ZlciwgaW4sIHgsIHkpOwo+IGRpZmYgLS1naXQgYS9saWJhdmZpbHRlci92Zl9kZWRv dC5jIGIvbGliYXZmaWx0ZXIvdmZfZGVkb3QuYwo+IGluZGV4IGEwNjM4ZjQ1YjQuLjZjYTQ3YzI2 MmEgMTAwNjQ0Cj4gLS0tIGEvbGliYXZmaWx0ZXIvdmZfZGVkb3QuYwo+ICsrKyBiL2xpYmF2Zmls dGVyL3ZmX2RlZG90LmMKPiBAQCAtMjg5LDcgKzI4OSw3IEBAIHN0YXRpYyBpbnQgYWN0aXZhdGUo QVZGaWx0ZXJDb250ZXh0ICpjdHgpCj4gICAgICAgICAgICAgIHMtPmZyYW1lc1s0XSkgewo+ICAg ICAgICAgICAgICBvdXQgPSBhdl9mcmFtZV9jbG9uZShzLT5mcmFtZXNbMl0pOwo+ICAgICAgICAg ICAgICBpZiAob3V0ICYmICFjdHgtPmlzX2Rpc2FibGVkKSB7Cj4gLSAgICAgICAgICAgICAgICBy ZXQgPSBhdl9mcmFtZV9tYWtlX3dyaXRhYmxlKG91dCk7Cj4gKyAgICAgICAgICAgICAgICByZXQg PSBmZl9pbmxpbmtfbWFrZV9mcmFtZV93cml0YWJsZShpbmxpbmssICZvdXQpOwo+ICAgICAgICAg ICAgICAgICAgaWYgKHJldCA+PSAwKSB7Cj4gICAgICAgICAgICAgICAgICAgICAgaWYgKHMtPm0g JiAxKQo+ICAgICAgICAgICAgICAgICAgICAgICAgICBmZl9maWx0ZXJfZXhlY3V0ZShjdHgsIHMt PmRlZG90Y3Jhd2wsIG91dCwgTlVMTCwKPiBkaWZmIC0tZ2l0IGEvbGliYXZmaWx0ZXIvdmZfZmxv b2RmaWxsLmMgYi9saWJhdmZpbHRlci92Zl9mbG9vZGZpbGwuYwo+IGluZGV4IGRhNzQ3YzlmOWYu LjIxMjI1NWE3ODQgMTAwNjQ0Cj4gLS0tIGEvbGliYXZmaWx0ZXIvdmZfZmxvb2RmaWxsLmMKPiAr KysgYi9saWJhdmZpbHRlci92Zl9mbG9vZGZpbGwuYwo+IEBAIC0yMiw2ICsyMiw3IEBACj4gICNp bmNsdWRlICJsaWJhdnV0aWwvaW1ndXRpbHMuaCIKPiAgI2luY2x1ZGUgImxpYmF2dXRpbC9pbnRy ZWFkd3JpdGUuaCIKPiAgI2luY2x1ZGUgImF2ZmlsdGVyLmgiCj4gKyNpbmNsdWRlICJmaWx0ZXJz LmgiCj4gICNpbmNsdWRlICJmb3JtYXRzLmgiCj4gICNpbmNsdWRlICJpbnRlcm5hbC5oIgo+ICAj aW5jbHVkZSAidmlkZW8uaCIKPiBAQCAtMzE1LDggKzMxNiwxMCBAQCBzdGF0aWMgaW50IGZpbHRl cl9mcmFtZShBVkZpbHRlckxpbmsgKmxpbmssIEFWRnJhbWUgKmZyYW1lKQo+ICAgICAgICAgICAg ICBzLT5mcm9udCsrOwo+ICAgICAgICAgIH0KPiAgCj4gLSAgICAgICAgaWYgKHJldCA9IGF2X2Zy YW1lX21ha2Vfd3JpdGFibGUoZnJhbWUpKQo+ICsgICAgICAgIGlmIChyZXQgPSBmZl9pbmxpbmtf bWFrZV9mcmFtZV93cml0YWJsZShsaW5rLCAmZnJhbWUpKSB7Cj4gKyAgICAgICAgICAgIGF2X2Zy YW1lX2ZyZWUoJmZyYW1lKTsKPiAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiArICAgICAgICB9 Cj4gIAo+ICAgICAgICAgIHdoaWxlIChzLT5mcm9udCA+IHMtPmJhY2spIHsKPiAgICAgICAgICAg ICAgaW50IHgsIHk7Cj4gZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVyL3ZmX2xlbnNmdW4uYyBiL2xp YmF2ZmlsdGVyL3ZmX2xlbnNmdW4uYwo+IGluZGV4IDM1YzUyMmE3MjMuLmY1NDRhZjc3M2UgMTAw NjQ0Cj4gLS0tIGEvbGliYXZmaWx0ZXIvdmZfbGVuc2Z1bi5jCj4gKysrIGIvbGliYXZmaWx0ZXIv dmZfbGVuc2Z1bi5jCj4gQEAgLTMyLDYgKzMyLDcgQEAKPiAgI2luY2x1ZGUgImxpYmF2dXRpbC9v cHQuaCIKPiAgI2luY2x1ZGUgImxpYnN3c2NhbGUvc3dzY2FsZS5oIgo+ICAjaW5jbHVkZSAiYXZm aWx0ZXIuaCIKPiArI2luY2x1ZGUgImZpbHRlcnMuaCIKPiAgI2luY2x1ZGUgImZvcm1hdHMuaCIK PiAgI2luY2x1ZGUgImludGVybmFsLmgiCj4gICNpbmNsdWRlICJ2aWRlby5oIgo+IEBAIC00NDMs OSArNDQ0LDE0IEBAIHN0YXRpYyBpbnQgZmlsdGVyX2ZyYW1lKEFWRmlsdGVyTGluayAqaW5saW5r LCBBVkZyYW1lICppbikKPiAgICAgIEFWRnJhbWUgKm91dDsKPiAgICAgIFZpZ25ldHRpbmdUaHJl YWREYXRhIHZpZ25ldHRpbmdfdGhyZWFkX2RhdGE7Cj4gICAgICBEaXN0b3J0aW9uQ29ycmVjdGlv blRocmVhZERhdGEgZGlzdG9ydGlvbl9jb3JyZWN0aW9uX3RocmVhZF9kYXRhOwo+ICsgICAgaW50 IHJldDsKPiAgCj4gICAgICBpZiAobGVuc2Z1bi0+bW9kZSAmIFZJR05FVFRJTkcpIHsKPiAtICAg ICAgICBhdl9mcmFtZV9tYWtlX3dyaXRhYmxlKGluKTsKPiArICAgICAgICByZXQgPSBmZl9pbmxp bmtfbWFrZV9mcmFtZV93cml0YWJsZShpbmxpbmssICZpbik7Cj4gKyAgICAgICAgaWYgKHJldCA8 IDApIHsKPiArICAgICAgICAgICAgYXZfZnJhbWVfZnJlZSgmaW4pOwo+ICsgICAgICAgICAgICBy ZXR1cm4gcmV0Owo+ICsgICAgICAgIH0KPiAgCj4gICAgICAgICAgdmlnbmV0dGluZ190aHJlYWRf ZGF0YSA9IChWaWduZXR0aW5nVGhyZWFkRGF0YSkgewo+ICAgICAgICAgICAgICAud2lkdGggPSBp bmxpbmstPncsCj4gZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVyL3ZmX292ZXJsYXlfY3VkYS5jIGIv bGliYXZmaWx0ZXIvdmZfb3ZlcmxheV9jdWRhLmMKPiBpbmRleCA2OGMwMDQwNWZiLi5iMmNiYjlj NjI1IDEwMDY0NAo+IC0tLSBhL2xpYmF2ZmlsdGVyL3ZmX292ZXJsYXlfY3VkYS5jCj4gKysrIGIv bGliYXZmaWx0ZXIvdmZfb3ZlcmxheV9jdWRhLmMKPiBAQCAtMzIsNiArMzIsNyBAQAo+ICAjaW5j bHVkZSAibGliYXZ1dGlsL2V2YWwuaCIKPiAgCj4gICNpbmNsdWRlICJhdmZpbHRlci5oIgo+ICsj aW5jbHVkZSAiZmlsdGVycy5oIgo+ICAjaW5jbHVkZSAiZnJhbWVzeW5jLmgiCj4gICNpbmNsdWRl ICJpbnRlcm5hbC5oIgo+ICAKPiBAQCAtMjUyLDcgKzI1Myw3IEBAIHN0YXRpYyBpbnQgb3Zlcmxh eV9jdWRhX2JsZW5kKEZGRnJhbWVTeW5jICpmcykKPiAgICAgIGlmICghaW5wdXRfb3ZlcmxheSkK PiAgICAgICAgICByZXR1cm4gZmZfZmlsdGVyX2ZyYW1lKG91dGxpbmssIGlucHV0X21haW4pOwo+ ICAKPiAtICAgIHJldCA9IGF2X2ZyYW1lX21ha2Vfd3JpdGFibGUoaW5wdXRfbWFpbik7Cj4gKyAg ICByZXQgPSBmZl9pbmxpbmtfbWFrZV9mcmFtZV93cml0YWJsZShpbmxpbmssICZpbnB1dF9tYWlu KTsKPiAgICAgIGlmIChyZXQgPCAwKSB7Cj4gICAgICAgICAgYXZfZnJhbWVfZnJlZSgmaW5wdXRf bWFpbik7Cj4gICAgICAgICAgcmV0dXJuIHJldDsKPiBkaWZmIC0tZ2l0IGEvbGliYXZmaWx0ZXIv dmZfcGFsZXR0ZXVzZS5jIGIvbGliYXZmaWx0ZXIvdmZfcGFsZXR0ZXVzZS5jCj4gaW5kZXggOTQ0 ZmY1Yzc0ZC4uNWZhN2E2MDVjZSAxMDA2NDQKPiAtLS0gYS9saWJhdmZpbHRlci92Zl9wYWxldHRl dXNlLmMKPiArKysgYi9saWJhdmZpbHRlci92Zl9wYWxldHRldXNlLmMKPiBAQCAtNzgzLDcgKzc4 Myw3IEBAIHN0YXRpYyBpbnQgYXBwbHlfcGFsZXR0ZShBVkZpbHRlckxpbmsgKmlubGluaywgQVZG cmFtZSAqaW4sIEFWRnJhbWUgKipvdXRmKQo+ICAgICAgYXZfZnJhbWVfdW5yZWYocy0+bGFzdF9v dXQpOwo+ICAgICAgaWYgKChyZXQgPSBhdl9mcmFtZV9yZWYocy0+bGFzdF9pbiwgaW4pKSAgICAg ICA8IDAgfHwKPiAgICAgICAgICAocmV0ID0gYXZfZnJhbWVfcmVmKHMtPmxhc3Rfb3V0LCBvdXQp KSAgICAgPCAwIHx8Cj4gLSAgICAgICAgKHJldCA9IGF2X2ZyYW1lX21ha2Vfd3JpdGFibGUocy0+ bGFzdF9pbikpIDwgMCkgewo+ICsgICAgICAgIChyZXQgPSBmZl9pbmxpbmtfbWFrZV9mcmFtZV93 cml0YWJsZShpbmxpbmssICZzLT5sYXN0X2luKSkgPCAwKSB7Cj4gICAgICAgICAgYXZfZnJhbWVf ZnJlZSgmb3V0KTsKPiAgICAgICAgICAqb3V0ZiA9IE5VTEw7Cj4gICAgICAgICAgcmV0dXJuIHJl dDsKPiBkaWZmIC0tZ2l0IGEvbGliYXZmaWx0ZXIvdmZfcGhvdG9zZW5zaXRpdml0eS5jIGIvbGli YXZmaWx0ZXIvdmZfcGhvdG9zZW5zaXRpdml0eS5jCj4gaW5kZXggMWJiOTg0Y2M5My4uZTA1ZDRk MDI2MiAxMDA2NDQKPiAtLS0gYS9saWJhdmZpbHRlci92Zl9waG90b3NlbnNpdGl2aXR5LmMKPiAr KysgYi9saWJhdmZpbHRlci92Zl9waG90b3NlbnNpdGl2aXR5LmMKPiBAQCAtMjUsNiArMjUsNyBA QAo+ICAjaW5jbHVkZSAibGliYXZ1dGlsL3BpeGRlc2MuaCIKPiAgI2luY2x1ZGUgImF2ZmlsdGVy LmgiCj4gIAo+ICsjaW5jbHVkZSAiZmlsdGVycy5oIgo+ICAjaW5jbHVkZSAiZm9ybWF0cy5oIgo+ ICAjaW5jbHVkZSAiaW50ZXJuYWwuaCIKPiAgI2luY2x1ZGUgInZpZGVvLmgiCj4gQEAgLTI0Myw3 ICsyNDQsNyBAQCBzdGF0aWMgaW50IGZpbHRlcl9mcmFtZShBVkZpbHRlckxpbmsgKmlubGluaywg QVZGcmFtZSAqaW4pCj4gICAgICAgICAgICAgIC8qIGp1c3QgZHVwbGljYXRlIHRoZSBmcmFtZSAq Lwo+ICAgICAgICAgICAgICBzLT5oaXN0b3J5W3MtPmhpc3RvcnlfcG9zXSA9IDA7IC8qIGZyYW1l IHdhcyBkdXBsaWNhdGVkLCB0aHVzLCBkZWx0YSBpcyB6ZXJvICovCj4gICAgICAgICAgfSBlbHNl IHsKPiAtICAgICAgICAgICAgcmVzID0gYXZfZnJhbWVfbWFrZV93cml0YWJsZShzLT5sYXN0X2Zy YW1lX2F2KTsKPiArICAgICAgICAgICAgcmVzID0gZmZfaW5saW5rX21ha2VfZnJhbWVfd3JpdGFi bGUoaW5saW5rLCAmcy0+bGFzdF9mcmFtZV9hdik7Cj4gICAgICAgICAgICAgIGlmIChyZXMpIHsK PiAgICAgICAgICAgICAgICAgIGF2X2ZyYW1lX2ZyZWUoJmluKTsKPiAgICAgICAgICAgICAgICAg IHJldHVybiByZXM7Cj4gZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVyL3ZmX3JlcGVhdGZpZWxkcy5j IGIvbGliYXZmaWx0ZXIvdmZfcmVwZWF0ZmllbGRzLmMKPiBpbmRleCA5YzAyYzYxNjMxLi40ZGJl MzE5OWU4IDEwMDY0NAo+IC0tLSBhL2xpYmF2ZmlsdGVyL3ZmX3JlcGVhdGZpZWxkcy5jCj4gKysr IGIvbGliYXZmaWx0ZXIvdmZfcmVwZWF0ZmllbGRzLmMKPiBAQCAtMjAsNiArMjAsNyBAQAo+ICAK PiAgI2luY2x1ZGUgImxpYmF2dXRpbC9pbWd1dGlscy5oIgo+ICAjaW5jbHVkZSAiYXZmaWx0ZXIu aCIKPiArI2luY2x1ZGUgImZpbHRlcnMuaCIKPiAgI2luY2x1ZGUgImludGVybmFsLmgiCj4gIAo+ ICB0eXBlZGVmIHN0cnVjdCBSZXBlYXRGaWVsZHNDb250ZXh0IHsKPiBAQCAtNzUsNyArNzYsOCBA QCBzdGF0aWMgdm9pZCB1cGRhdGVfcHRzKEFWRmlsdGVyTGluayAqbGluaywgQVZGcmFtZSAqZiwg aW50NjRfdCBwdHMsIGludCBmaWVsZHMpCj4gICAgICAgICAgZi0+cHRzID0gQVZfTk9QVFNfVkFM VUU7Cj4gIH0KPiAgCj4gLXN0YXRpYyBpbnQgZmlsdGVyX2ZyYW1lKEFWRmlsdGVyTGluayAqaW5s aW5rLCBBVkZyYW1lICppbikgewo+ICtzdGF0aWMgaW50IGZpbHRlcl9mcmFtZShBVkZpbHRlckxp bmsgKmlubGluaywgQVZGcmFtZSAqaW4pCj4gK3sKPiAgICAgIEFWRmlsdGVyQ29udGV4dCAqY3R4 ID0gaW5saW5rLT5kc3Q7Cj4gICAgICBBVkZpbHRlckxpbmsgKm91dGxpbmsgPSBpbmxpbmstPmRz dC0+b3V0cHV0c1swXTsKPiAgICAgIFJlcGVhdEZpZWxkc0NvbnRleHQgKnMgPSBjdHgtPnByaXY7 Cj4gQEAgLTg1LDggKzg3LDEwIEBAIHN0YXRpYyBpbnQgZmlsdGVyX2ZyYW1lKEFWRmlsdGVyTGlu ayAqaW5saW5rLCBBVkZyYW1lICppbikgewo+ICAKPiAgICAgIGlmICghcy0+ZnJhbWUpIHsKPiAg ICAgICAgICBzLT5mcmFtZSA9IGF2X2ZyYW1lX2Nsb25lKGluKTsKPiAtICAgICAgICBpZiAoIXMt PmZyYW1lKQo+ICsgICAgICAgIGlmICghcy0+ZnJhbWUpIHsKPiArICAgICAgICAgICAgYXZfZnJh bWVfZnJlZSgmaW4pOwo+ICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwo+ICsg ICAgICAgIH0KPiAgICAgICAgICBzLT5mcmFtZS0+cHRzID0gQVZfTk9QVFNfVkFMVUU7Cj4gICAg ICB9Cj4gIAo+IEBAIC0xMDQsMTMgKzEwOCwxOSBAQCBzdGF0aWMgaW50IGZpbHRlcl9mcmFtZShB VkZpbHRlckxpbmsgKmlubGluaywgQVZGcmFtZSAqaW4pIHsKPiAgICAgICAgICBBVkZyYW1lICpu ZXc7Cj4gIAo+ICAgICAgICAgIG5ldyA9IGF2X2ZyYW1lX2Nsb25lKGluKTsKPiAtICAgICAgICBp ZiAoIW5ldykKPiArICAgICAgICBpZiAoIW5ldykgewo+ICsgICAgICAgICAgICBhdl9mcmFtZV9m cmVlKCZpbik7Cj4gICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7Cj4gKyAgICAg ICAgfQo+ICAKPiAgICAgICAgICByZXQgPSBmZl9maWx0ZXJfZnJhbWUob3V0bGluaywgbmV3KTsK PiAgCj4gICAgICAgICAgaWYgKGluLT5yZXBlYXRfcGljdCkgewo+IC0gICAgICAgICAgICBhdl9m cmFtZV9tYWtlX3dyaXRhYmxlKG91dCk7Cj4gKyAgICAgICAgICAgIHJldCA9IGZmX2lubGlua19t YWtlX2ZyYW1lX3dyaXRhYmxlKGlubGluaywgJm91dCk7Cj4gKyAgICAgICAgICAgIGlmIChyZXQg PCAwKSB7Cj4gKyAgICAgICAgICAgICAgICBhdl9mcmFtZV9mcmVlKCZpbik7Cj4gKyAgICAgICAg ICAgICAgICByZXR1cm4gcmV0Owo+ICsgICAgICAgICAgICB9Cj4gICAgICAgICAgICAgIHVwZGF0 ZV9wdHMob3V0bGluaywgb3V0LCBpbi0+cHRzLCAyKTsKPiAgICAgICAgICAgICAgZm9yIChpID0g MDsgaSA8IHMtPm5iX3BsYW5lczsgaSsrKSB7Cj4gICAgICAgICAgICAgICAgICBhdl9pbWFnZV9j b3B5X3BsYW5lKG91dC0+ZGF0YVtpXSwgb3V0LT5saW5lc2l6ZVtpXSAqIDIsCj4gQEAgLTEyMSw3 ICsxMzEsMTEgQEAgc3RhdGljIGludCBmaWx0ZXJfZnJhbWUoQVZGaWx0ZXJMaW5rICppbmxpbmss IEFWRnJhbWUgKmluKSB7Cj4gICAgICAgICAgfQo+ICAgICAgfSBlbHNlIHsKPiAgICAgICAgICBm b3IgKGkgPSAwOyBpIDwgcy0+bmJfcGxhbmVzOyBpKyspIHsKPiAtICAgICAgICAgICAgYXZfZnJh bWVfbWFrZV93cml0YWJsZShvdXQpOwo+ICsgICAgICAgICAgICByZXQgPSBmZl9pbmxpbmtfbWFr ZV9mcmFtZV93cml0YWJsZShpbmxpbmssICZvdXQpOwo+ICsgICAgICAgICAgICBpZiAocmV0IDwg MCkgewo+ICsgICAgICAgICAgICAgICAgYXZfZnJhbWVfZnJlZSgmaW4pOwo+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHJldDsKPiArICAgICAgICAgICAgfQo+ICAgICAgICAgICAgICBhdl9pbWFn ZV9jb3B5X3BsYW5lKG91dC0+ZGF0YVtpXSArIG91dC0+bGluZXNpemVbaV0sIG91dC0+bGluZXNp emVbaV0gKiAyLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluLT5kYXRhW2ld ICsgaW4tPmxpbmVzaXplW2ldLCBpbi0+bGluZXNpemVbaV0gKiAyLAo+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHMtPmxpbmVzaXplW2ldLCBzLT5wbGFuZWhlaWdodFtpXSAvIDIp Owo+IEBAIC0xMzMsMTMgKzE0NywxOSBAQCBzdGF0aWMgaW50IGZpbHRlcl9mcmFtZShBVkZpbHRl ckxpbmsgKmlubGluaywgQVZGcmFtZSAqaW4pIHsKPiAgICAgICAgICAgICAgQVZGcmFtZSAqbmV3 Owo+ICAKPiAgICAgICAgICAgICAgbmV3ID0gYXZfZnJhbWVfY2xvbmUoaW4pOwo+IC0gICAgICAg ICAgICBpZiAoIW5ldykKPiArICAgICAgICAgICAgaWYgKCFuZXcpIHsKPiArICAgICAgICAgICAg ICAgIGF2X2ZyYW1lX2ZyZWUoJmluKTsKPiAgICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9S KEVOT01FTSk7Cj4gKyAgICAgICAgICAgIH0KPiAgCj4gICAgICAgICAgICAgIHJldCA9IGZmX2Zp bHRlcl9mcmFtZShvdXRsaW5rLCBuZXcpOwo+ICAgICAgICAgICAgICBzdGF0ZSA9IDA7Cj4gICAg ICAgICAgfSBlbHNlIHsKPiAtICAgICAgICAgICAgYXZfZnJhbWVfbWFrZV93cml0YWJsZShvdXQp Owo+ICsgICAgICAgICAgICByZXQgPSBmZl9pbmxpbmtfbWFrZV9mcmFtZV93cml0YWJsZShpbmxp bmssICZvdXQpOwo+ICsgICAgICAgICAgICBpZiAocmV0IDwgMCkgewo+ICsgICAgICAgICAgICAg ICAgYXZfZnJhbWVfZnJlZSgmaW4pOwo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiAr ICAgICAgICAgICAgfQo+ICAgICAgICAgICAgICB1cGRhdGVfcHRzKG91dGxpbmssIG91dCwgaW4t PnB0cywgMSk7Cj4gICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzLT5uYl9wbGFuZXM7IGkr Kykgewo+ICAgICAgICAgICAgICAgICAgYXZfaW1hZ2VfY29weV9wbGFuZShvdXQtPmRhdGFbaV0s IG91dC0+bGluZXNpemVbaV0gKiAyLAo+IGRpZmYgLS1naXQgYS9saWJhdmZpbHRlci92Zl9zaWdu YWxzdGF0cy5jIGIvbGliYXZmaWx0ZXIvdmZfc2lnbmFsc3RhdHMuYwo+IGluZGV4IGU2Zjg0YmU5 YmEuLjA5YTkzMDEwZGEgMTAwNjQ0Cj4gLS0tIGEvbGliYXZmaWx0ZXIvdmZfc2lnbmFsc3RhdHMu Ywo+ICsrKyBiL2xpYmF2ZmlsdGVyL3ZmX3NpZ25hbHN0YXRzLmMKPiBAQCAtMjMsNiArMjMsNyBA QAo+ICAjaW5jbHVkZSAibGliYXZ1dGlsL2ludHJlYWR3cml0ZS5oIgo+ICAjaW5jbHVkZSAibGli YXZ1dGlsL29wdC5oIgo+ICAjaW5jbHVkZSAibGliYXZ1dGlsL3BpeGRlc2MuaCIKPiArI2luY2x1 ZGUgImZpbHRlcnMuaCIKPiAgI2luY2x1ZGUgImludGVybmFsLmgiCj4gIAo+ICBlbnVtIEZpbHRl ck1vZGUgewo+IEBAIC01NjUsNyArNTY2LDcgQEAgc3RhdGljIGludCBmaWx0ZXJfZnJhbWU4KEFW RmlsdGVyTGluayAqbGluaywgQVZGcmFtZSAqaW4pCj4gICAgICBpbnQgdG90aHVlID0gMDsKPiAg ICAgIGludCBkaWZ5ID0gMCwgZGlmdSA9IDAsIGRpZnYgPSAwOwo+ICAgICAgdWludDE2X3QgbWFz a3kgPSAwLCBtYXNrdSA9IDAsIG1hc2t2ID0gMDsKPiAtCj4gKyAgICBpbnQgcmV0Owo+ICAgICAg aW50IGZpbHRvdFtGSUxUX05VTUJdID0gezB9Owo+ICAgICAgQVZGcmFtZSAqcHJldjsKPiAgCj4g QEAgLTU4OCw3ICs1ODksMTEgQEAgc3RhdGljIGludCBmaWx0ZXJfZnJhbWU4KEFWRmlsdGVyTGlu ayAqbGluaywgQVZGcmFtZSAqaW4pCj4gIAo+ICAgICAgaWYgKHMtPm91dGZpbHRlciAhPSBGSUxU RVJfTk9ORSkgewo+ICAgICAgICAgIG91dCA9IGF2X2ZyYW1lX2Nsb25lKGluKTsKPiAtICAgICAg ICBhdl9mcmFtZV9tYWtlX3dyaXRhYmxlKG91dCk7Cj4gKyAgICAgICAgcmV0ID0gZmZfaW5saW5r X21ha2VfZnJhbWVfd3JpdGFibGUobGluaywgJm91dCk7Cj4gKyAgICAgICAgaWYgKHJldCA8IDAp IHsKPiArICAgICAgICAgICAgYXZfZnJhbWVfZnJlZSgmaW4pOwo+ICsgICAgICAgICAgICByZXR1 cm4gcmV0Owo+ICsgICAgICAgIH0KPiAgICAgIH0KPiAgCj4gICAgICBmZl9maWx0ZXJfZXhlY3V0 ZShjdHgsIGNvbXB1dGVfc2F0X2h1ZV9tZXRyaWNzOCwgJnRkX2h1ZXNhdCwKPiBAQCAtNzkwLDcg Kzc5NSw3IEBAIHN0YXRpYyBpbnQgZmlsdGVyX2ZyYW1lMTYoQVZGaWx0ZXJMaW5rICpsaW5rLCBB VkZyYW1lICppbikKPiAgCj4gICAgICBpbnQgZmlsdG90W0ZJTFRfTlVNQl0gPSB7MH07Cj4gICAg ICBBVkZyYW1lICpwcmV2Owo+IC0KPiArICAgIGludCByZXQ7Cj4gICAgICBBVkZyYW1lICpzYXQg PSBzLT5mcmFtZV9zYXQ7Cj4gICAgICBBVkZyYW1lICpodWUgPSBzLT5mcmFtZV9odWU7Cj4gICAg ICBjb25zdCB1aW50MTZfdCAqcF9zYXQgPSAodWludDE2X3QgKilzYXQtPmRhdGFbMF07Cj4gQEAg LTgxMCw3ICs4MTUsMTEgQEAgc3RhdGljIGludCBmaWx0ZXJfZnJhbWUxNihBVkZpbHRlckxpbmsg KmxpbmssIEFWRnJhbWUgKmluKQo+ICAKPiAgICAgIGlmIChzLT5vdXRmaWx0ZXIgIT0gRklMVEVS X05PTkUpIHsKPiAgICAgICAgICBvdXQgPSBhdl9mcmFtZV9jbG9uZShpbik7Cj4gLSAgICAgICAg YXZfZnJhbWVfbWFrZV93cml0YWJsZShvdXQpOwo+ICsgICAgICAgIHJldCA9IGZmX2lubGlua19t YWtlX2ZyYW1lX3dyaXRhYmxlKGxpbmssICZvdXQpOwo+ICsgICAgICAgIGlmIChyZXQgPCAwKSB7 Cj4gKyAgICAgICAgICAgIGF2X2ZyYW1lX2ZyZWUoJmluKTsKPiArICAgICAgICAgICAgcmV0dXJu IHJldDsKPiArICAgICAgICB9Cj4gICAgICB9Cj4gIAo+ICAgICAgZmZfZmlsdGVyX2V4ZWN1dGUo Y3R4LCBjb21wdXRlX3NhdF9odWVfbWV0cmljczE2LCAmdGRfaHVlc2F0LAo+IGRpZmYgLS1naXQg YS9saWJhdmZpbHRlci92Zl90ZWxlY2luZS5jIGIvbGliYXZmaWx0ZXIvdmZfdGVsZWNpbmUuYwo+ IGluZGV4IGU4ZGU2M2JiY2YuLjIyN2RlNmY3MzMgMTAwNjQ0Cj4gLS0tIGEvbGliYXZmaWx0ZXIv dmZfdGVsZWNpbmUuYwo+ICsrKyBiL2xpYmF2ZmlsdGVyL3ZmX3RlbGVjaW5lLmMKPiBAQCAtMjks NiArMjksNyBAQAo+ICAjaW5jbHVkZSAibGliYXZ1dGlsL29wdC5oIgo+ICAjaW5jbHVkZSAibGli YXZ1dGlsL3BpeGRlc2MuaCIKPiAgI2luY2x1ZGUgImF2ZmlsdGVyLmgiCj4gKyNpbmNsdWRlICJm aWx0ZXJzLmgiCj4gICNpbmNsdWRlICJmb3JtYXRzLmgiCj4gICNpbmNsdWRlICJpbnRlcm5hbC5o Igo+ICAjaW5jbHVkZSAidmlkZW8uaCIKPiBAQCAtMTgyLDcgKzE4MywxMSBAQCBzdGF0aWMgaW50 IGZpbHRlcl9mcmFtZShBVkZpbHRlckxpbmsgKmlubGluaywgQVZGcmFtZSAqaW5waWNyZWYpCj4g ICAgICB9Cj4gIAo+ICAgICAgaWYgKHMtPm9jY3VwaWVkKSB7Cj4gLSAgICAgICAgYXZfZnJhbWVf bWFrZV93cml0YWJsZShzLT5mcmFtZVtub3V0XSk7Cj4gKyAgICAgICAgcmV0ID0gZmZfaW5saW5r X21ha2VfZnJhbWVfd3JpdGFibGUoaW5saW5rLCAmcy0+ZnJhbWVbbm91dF0pOwo+ICsgICAgICAg IGlmIChyZXQgPCAwKSB7Cj4gKyAgICAgICAgICAgIGF2X2ZyYW1lX2ZyZWUoJmlucGljcmVmKTsK PiArICAgICAgICAgICAgcmV0dXJuIHJldDsKPiArICAgICAgICB9Cj4gICAgICAgICAgZm9yIChp ID0gMDsgaSA8IHMtPm5iX3BsYW5lczsgaSsrKSB7Cj4gICAgICAgICAgICAgIC8vIGZpbGwgaW4g dGhlIEVBUkxJRVIgZmllbGQgZnJvbSB0aGUgYnVmZmVyZWQgcGljCj4gICAgICAgICAgICAgIGF2 X2ltYWdlX2NvcHlfcGxhbmUocy0+ZnJhbWVbbm91dF0tPmRhdGFbaV0gKyBzLT5mcmFtZVtub3V0 XS0+bGluZXNpemVbaV0gKiBzLT5maXJzdF9maWVsZCwKPiBAQCAtMjA4LDcgKzIxMywxMSBAQCBz dGF0aWMgaW50IGZpbHRlcl9mcmFtZShBVkZpbHRlckxpbmsgKmlubGluaywgQVZGcmFtZSAqaW5w aWNyZWYpCj4gIAo+ICAgICAgd2hpbGUgKGxlbiA+PSAyKSB7Cj4gICAgICAgICAgLy8gb3V0cHV0 IFRISVMgaW1hZ2UgYXMtaXMKPiAtICAgICAgICBhdl9mcmFtZV9tYWtlX3dyaXRhYmxlKHMtPmZy YW1lW25vdXRdKTsKPiArICAgICAgICByZXQgPSBmZl9pbmxpbmtfbWFrZV9mcmFtZV93cml0YWJs ZShpbmxpbmssICZzLT5mcmFtZVtub3V0XSk7Cj4gKyAgICAgICAgaWYgKHJldCA8IDApIHsKPiAr ICAgICAgICAgICAgYXZfZnJhbWVfZnJlZSgmaW5waWNyZWYpOwo+ICsgICAgICAgICAgICByZXR1 cm4gcmV0Owo+ICsgICAgICAgIH0KPiAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcy0+bmJfcGxh bmVzOyBpKyspCj4gICAgICAgICAgICAgIGF2X2ltYWdlX2NvcHlfcGxhbmUocy0+ZnJhbWVbbm91 dF0tPmRhdGFbaV0sIHMtPmZyYW1lW25vdXRdLT5saW5lc2l6ZVtpXSwKPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnBpY3JlZi0+ZGF0YVtpXSwgaW5waWNyZWYtPmxpbmVzaXpl W2ldLAo+IGRpZmYgLS1naXQgYS9saWJhdmZpbHRlci92Zl92aWRzdGFiZGV0ZWN0LmMgYi9saWJh dmZpbHRlci92Zl92aWRzdGFiZGV0ZWN0LmMKPiBpbmRleCA2MmI5OThlMTcxLi5iMjdiMWU0MGE2 IDEwMDY0NAo+IC0tLSBhL2xpYmF2ZmlsdGVyL3ZmX3ZpZHN0YWJkZXRlY3QuYwo+ICsrKyBiL2xp YmF2ZmlsdGVyL3ZmX3ZpZHN0YWJkZXRlY3QuYwo+IEBAIC0yNyw2ICsyNyw3IEBACj4gICNpbmNs dWRlICJsaWJhdnV0aWwvb3B0LmgiCj4gICNpbmNsdWRlICJsaWJhdnV0aWwvcGl4ZGVzYy5oIgo+ ICAjaW5jbHVkZSAiYXZmaWx0ZXIuaCIKPiArI2luY2x1ZGUgImZpbHRlcnMuaCIKPiAgI2luY2x1 ZGUgImludGVybmFsLmgiCj4gIAo+ICAjaW5jbHVkZSAidmlkc3RhYnV0aWxzLmgiCj4gQEAgLTE0 OSwxMCArMTUwLDE1IEBAIHN0YXRpYyBpbnQgZmlsdGVyX2ZyYW1lKEFWRmlsdGVyTGluayAqaW5s aW5rLCBBVkZyYW1lICppbikKPiAgCj4gICAgICBBVkZpbHRlckxpbmsgKm91dGxpbmsgPSBpbmxp bmstPmRzdC0+b3V0cHV0c1swXTsKPiAgICAgIFZTRnJhbWUgZnJhbWU7Cj4gLSAgICBpbnQgcGxh bmU7Cj4gKyAgICBpbnQgcGxhbmUsIHJldDsKPiAgCj4gLSAgICBpZiAocy0+Y29uZi5zaG93ID4g MCAmJiAhYXZfZnJhbWVfaXNfd3JpdGFibGUoaW4pKQo+IC0gICAgICAgIGF2X2ZyYW1lX21ha2Vf d3JpdGFibGUoaW4pOwo+ICsgICAgaWYgKHMtPmNvbmYuc2hvdyA+IDAgJiYgIWF2X2ZyYW1lX2lz X3dyaXRhYmxlKGluKSkgewo+ICsgICAgICAgIHJldCA9IGZmX2lubGlua19tYWtlX2ZyYW1lX3dy aXRhYmxlKGlubGluaywgJmluKTsKPiArICAgICAgICBpZiAocmV0IDwgMCkgewo+ICsgICAgICAg ICAgICBhdl9mcmFtZV9mcmVlKCZpbik7Cj4gKyAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gKyAg ICAgICAgfQo+ICsgICAgfQo+ICAKPiAgICAgIGZvciAocGxhbmUgPSAwOyBwbGFuZSA8IG1kLT5m aS5wbGFuZXM7IHBsYW5lKyspIHsKPiAgICAgICAgICBmcmFtZS5kYXRhW3BsYW5lXSA9IGluLT5k YXRhW3BsYW5lXTsKCk5vIG90aGVyIHJlbWFyayBmcm9tIG1lLCB0aGFua3MuCgpSZWdhcmRzLAoK LS0gCiAgTmljb2xhcyBHZW9yZ2UKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZtcGVn Lm9yZwpodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKClRv IHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwtcmVx dWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=