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 474EC4764F for ; Thu, 16 May 2024 15:00:45 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C0C4668D44F; Thu, 16 May 2024 18:00:44 +0300 (EEST) Received: from vidala.lynne.ee (vidala.pars.ee [116.203.72.101]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9F5F168D39C for ; Thu, 16 May 2024 18:00:37 +0300 (EEST) Message-ID: Date: Thu, 16 May 2024 17:00:25 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: ffmpeg-devel@ffmpeg.org References: <20240516100818.246162-1-dev@lynne.ee> <20240516100818.246162-9-dev@lynne.ee> Content-Language: en-US Autocrypt: addr=dev@lynne.ee; keydata= xjMEXnFG3BYJKwYBBAHaRw8BAQdA3FyJpqEdfQj4GA7OUWVrNheT9dUsIs+yUx6Hljr9mYvN FEx5bm5lIDxkZXZAbHlubmUuZWU+wpAEExYIADgWIQT+UBOcaAVyyv1SH42i/qXwPwNEZAUC XnFG3AIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRCi/qXwPwNEZOTWAQCSNEA+kZLI NZ2dsR5Qg988c0HXpOXThZEjg+h1TL7KGgEA3Gff0c28efI02S6iMxazrpdWGHqHk7JN7pCj nt397wzOOARecUbcEgorBgEEAZdVAQUBAQdAjDdFQ5H+AJ9vwXrOb7val460g45EsheIaL5S 7/zSaX8DAQgHwngEGBYIACAWIQT+UBOcaAVyyv1SH42i/qXwPwNEZAUCXnFG3AIbDAAKCRCi /qXwPwNEZKaxAQCHLV4gAk/B9JvRG27MYm22X3+5QRCLBtEILP29aDh+MQD/V8JFHATDXRY3 0LsmqR3sPQ0BJ1UFVZA5BUoIJPJZWwg= In-Reply-To: Subject: Re: [FFmpeg-devel] [PATCH 8/8] aacdec: add a decoder for AAC USAC (xHE-AAC) 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: , From: Lynne via ffmpeg-devel Reply-To: FFmpeg development discussions and patches Cc: Lynne Content-Type: multipart/mixed; boundary="===============2303184238474074029==" Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --===============2303184238474074029== Content-Language: en-US Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------YIhs74aVtYwpnpgWfRHB7Pjv" This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------YIhs74aVtYwpnpgWfRHB7Pjv Content-Type: multipart/mixed; boundary="------------ias555PaCMTJXAwjACplcpYa"; protected-headers="v1" From: Lynne To: ffmpeg-devel@ffmpeg.org Message-ID: Subject: Re: [FFmpeg-devel] [PATCH 8/8] aacdec: add a decoder for AAC USAC (xHE-AAC) References: <20240516100818.246162-1-dev@lynne.ee> <20240516100818.246162-9-dev@lynne.ee> In-Reply-To: --------------ias555PaCMTJXAwjACplcpYa Content-Type: multipart/mixed; boundary="------------gPcqcVvSTM0O0aRT9vN52mRw" --------------gPcqcVvSTM0O0aRT9vN52mRw Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 T24gMTYvMDUvMjAyNCAxMjoyNiwgQW5kcmVhcyBSaGVpbmhhcmR0IHdyb3RlOg0KPiBMeW5u ZSB2aWEgZmZtcGVnLWRldmVsOg0KPj4gVGhpcyBjb21taXQgYWRkcyBhIGRlY29kZXIgZm9y IHRoZSBmcmVxdWVuY3ktZG9tYWluIHBhcnQgb2YgVVNBQy4NCj4+DQo+PiBXaGF0IHdvcmtz Og0KPj4gICAtIE1vbm8NCj4+ICAgLSBTdGVyZW8gKG5vIHByZWRpY3Rpb24pDQo+PiAgIC0g U3RlcmVvIChtaWQvc2lkZSBjb2RpbmcpDQo+Pg0KPj4gV2hhdCBkb2Vzbid0Og0KPj4gICAt IFByZXJvbGwgZGVjb2RpbmcgKGV2ZXJ5IHNpbmdsZSBkZWNvZGVyIHNlZW1zIGZhdWx0eSBv ciB3ZWlyZD8pDQo+PiAgIC0gQ29tcGxleCBzdGVyZW8gcHJlZGljdGlvbg0KPj4NCj4+IEtu b3duIGlzc3VlczoNCj4+ICAgLSBTcGVjIGluY29tcGxpYW5jZSAobm9pc2Ugc3ludGhlc2lz IGluIHBhcnRpY3VsYXIpDQo+PiAgIC0gTGFjayBvZiByb2J1c3RuZXNzDQo+PiAtLS0NCj4g DQo+IA0KPj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvYWFjL2FhY2RlYy5oIGIvbGliYXZj b2RlYy9hYWMvYWFjZGVjLmgNCj4+IGluZGV4IDIwNTQ1YTI0ZDQuLjNlNjU5MmNmMGUgMTAw NjQ0DQo+PiAtLS0gYS9saWJhdmNvZGVjL2FhYy9hYWNkZWMuaA0KPj4gKysrIGIvbGliYXZj b2RlYy9hYWMvYWFjZGVjLmgNCj4+IEBAIC00Miw2ICs0Miw4IEBADQo+PiAgICNpbmNsdWRl ICJsaWJhdmNvZGVjL2F2Y29kZWMuaCINCj4+ICAgI2luY2x1ZGUgImxpYmF2Y29kZWMvbXBl ZzRhdWRpby5oIg0KPj4gICANCj4+ICsjaW5jbHVkZSAiYWFjZGVjX2FjLmgiDQo+PiArDQo+ PiAgIHR5cGVkZWYgc3RydWN0IEFBQ0RlY0NvbnRleHQgQUFDRGVjQ29udGV4dDsNCj4+ICAg DQo+PiAgIC8qKg0KPj4gQEAgLTY5LDYgKzcxLDMyIEBAIGVudW0gQ291cGxpbmdQb2ludCB7 DQo+PiAgICAgICBBRlRFUl9JTURDVCA9IDMsDQo+PiAgIH07DQo+PiAgIA0KPj4gK2VudW0g QUFDVXNhY0VsZW0gew0KPj4gKyAgICBJRF9VU0FDX1NDRSA9IDAsDQo+PiArICAgIElEX1VT QUNfQ1BFID0gMSwNCj4+ICsgICAgSURfVVNBQ19MRkUgPSAyLA0KPj4gKyAgICBJRF9VU0FD X0VYVCA9IDMsDQo+PiArfTsNCj4+ICsNCj4+ICtlbnVtIEV4dGVuc2lvbkhlYWRlclR5cGUg ew0KPj4gKyAgICBJRF9DT05GSUdfRVhUX0ZJTEwgPSAwLA0KPj4gKyAgICBJRF9DT05GSUdf RVhUX0xPVURORVNTX0lORk8gPSAyLA0KPj4gKyAgICBJRF9DT05GSUdfRVhUX1NUUkVBTV9J RCA9IDcsDQo+PiArfTsNCj4+ICsNCj4+ICtlbnVtIEFBQ1VzYWNFeHRlbnNpb24gew0KPj4g KyAgICBJRF9FWFRfRUxFX0ZJTEwsDQo+PiArICAgIElEX0VYVF9FTEVfTVBFR1MsDQo+PiAr ICAgIElEX0VYVF9FTEVfU0FPQywNCj4+ICsgICAgSURfRVhUX0VMRV9BVURJT1BSRVJPTEws DQo+PiArICAgIElEX0VYVF9FTEVfVU5JX0RSQywNCj4+ICt9Ow0KPj4gKw0KPj4gK2VudW0g QUFDVVNBQ0xvdWRuZXNzRXh0IHsNCj4+ICsgICAgVU5JRFJDTE9VREVYVF9URVJNID0gMHgw LA0KPj4gKyAgICBVTklEUkNMT1VERVhUX0VRID0gMHgxLA0KPj4gK307DQo+PiArDQo+PiAg IC8vIFN1cHBvc2VkIHRvIGJlIGVxdWFsIHRvIEFBQ19SRU5BTUUoKSBpbiBjYXNlIG9mIFVT RV9GSVhFRC4NCj4+ICAgI2RlZmluZSBSRU5BTUVfRklYRUQobmFtZSkgbmFtZSAjIyBfZml4 ZWQNCj4+ICAgDQo+PiBAQCAtOTMsNiArMTIxLDQwIEBAIHR5cGVkZWYgc3RydWN0IExvbmdU ZXJtUHJlZGljdGlvbiB7DQo+PiAgICAgICBpbnQ4X3QgdXNlZFtNQVhfTFRQX0xPTkdfU0ZC XTsNCj4+ICAgfSBMb25nVGVybVByZWRpY3Rpb247DQo+PiAgIA0KPj4gKy8qIFBlciBjaGFu bmVsIGNvcmUgbW9kZSAqLw0KPj4gK3R5cGVkZWYgc3RydWN0IEFBQ1VzYWNFbGVtRGF0YSB7 DQo+PiArICAgIHVpbnQ4X3QgY29yZV9tb2RlOw0KPj4gKyAgICB1aW50OF90IHNjYWxlX2Zh Y3Rvcl9ncm91cGluZzsNCj4+ICsNCj4+ICsgICAgLyogVGltZXdhcnBpbmcgcmF0aW8gKi8N Cj4+ICsjZGVmaW5lIE5VTV9UV19OT0RFUyAxNg0KPj4gKyAgICB1aW50OF90IHR3X3JhdGlv W05VTV9UV19OT0RFU107DQo+PiArDQo+PiArICAgIHN0cnVjdCB7DQo+PiArICAgICAgICB1 aW50OF90IGFjZWxwX2NvcmVfbW9kZSA6IDM7DQo+PiArICAgICAgICB1aW50OF90IGxwZF9t b2RlIDogNTsNCj4+ICsNCj4+ICsgICAgICAgIHVpbnQ4X3QgYnBmX2NvbnRyb2xfaW5mbyA6 IDE7DQo+PiArICAgICAgICB1aW50OF90IGNvcmVfbW9kZV9sYXN0IDogMTsNCj4+ICsgICAg ICAgIHVpbnQ4X3QgZmFjX2RhdGFfcHJlc2VudCA6IDE7DQo+PiArDQo+PiArICAgICAgICBp bnQgbGFzdF9scGRfbW9kZTsNCj4+ICsgICAgfSBsZHA7DQo+PiArDQo+PiArICAgIHN0cnVj dCB7DQo+PiArICAgICAgICB1bnNpZ25lZCBpbnQgc2VlZDsNCj4+ICsgICAgICAgIHVpbnQ4 X3QgbGV2ZWwgOiAzOw0KPj4gKyAgICAgICAgdWludDhfdCBvZmZzZXQgOiA1Ow0KPj4gKyAg ICB9IG5vaXNlOw0KPj4gKw0KPj4gKyAgICBzdHJ1Y3Qgew0KPj4gKyAgICAgICAgdWludDhf dCBnYWluOw0KPj4gKyAgICAgICAgdWludDMyX3Qga3ZbOCAvKiAoMTAyNCAvIDE2KSAvIDgg Ki9dWzhdOw0KPj4gKyAgICB9IGZhYzsNCj4+ICsNCj4+ICsgICAgQUFDQXJpdGhTdGF0ZSBh YzsNCj4+ICt9IEFBQ1VzYWNFbGVtRGF0YTsNCj4+ICsNCj4+ICAgLyoqDQo+PiAgICAqIElu ZGl2aWR1YWwgQ2hhbm5lbCBTdHJlYW0NCj4+ICAgICovDQo+PiBAQCAtMTQ1LDYgKzIwNyw3 IEBAIHR5cGVkZWYgc3RydWN0IENoYW5uZWxDb3VwbGluZyB7DQo+PiAgICAqLw0KPj4gICB0 eXBlZGVmIHN0cnVjdCBTaW5nbGVDaGFubmVsRWxlbWVudCB7DQo+PiAgICAgICBJbmRpdmlk dWFsQ2hhbm5lbFN0cmVhbSBpY3M7DQo+PiArICAgIEFBQ1VzYWNFbGVtRGF0YSB1ZTsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwgVVNBQyBlbGVtZW50IGRhdGENCj4+ICAg ICAgIFRlbXBvcmFsTm9pc2VTaGFwaW5nIHRuczsNCj4+ICAgICAgIGVudW0gQmFuZFR5cGUg YmFuZF90eXBlWzEyOF07ICAgICAgICAgICAgICAgICAgIC8vLzwgYmFuZCB0eXBlcw0KPj4g ICAgICAgaW50IHNmb1sxMjhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Ly8vPCBzY2FsZWZhY3RvciBvZmZzZXRzDQo+PiBAQCAtMTYzLDI1ICsyMjYsMTQxIEBAIHR5 cGVkZWYgc3RydWN0IFNpbmdsZUNoYW5uZWxFbGVtZW50IHsNCj4+ICAgICAgIH07DQo+PiAg IH0gU2luZ2xlQ2hhbm5lbEVsZW1lbnQ7DQo+PiAgIA0KPj4gK3R5cGVkZWYgc3RydWN0IEFB Q1VzYWNTdGVyZW8gew0KPj4gKyAgICB1aW50OF90IGNvbW1vbl93aW5kb3c7DQo+PiArICAg IHVpbnQ4X3QgY29tbW9uX3R3Ow0KPj4gKw0KPj4gKyAgICB1aW50OF90IG1zX21hc2tfbW9k ZTsNCj4+ICsgICAgdWludDhfdCBjb25maWdfaWR4Ow0KPj4gKw0KPj4gKyAgICBzdHJ1Y3Qg ew0KPj4gKyAgICAgICAgdWludDhfdCB1c2VfcHJldl9mcmFtZTsNCj4+ICsgICAgICAgIHVp bnQ4X3QgcHJlZF9kaXI7DQo+PiArICAgICAgICB1aW50OF90IGRlbHRhX2NvZGVfdGltZTsN Cj4+ICsgICAgICAgIHVpbnQ4X3QgcHJlZF91c2VkWzhdWzY0XTsNCj4+ICsNCj4+ICsgICAg ICAgIEFWQ29tcGxleEZsb2F0IHByZWRbOF1bNjRdOw0KPj4gKyAgICB9IGNwbHg7DQo+PiAr fSBBQUNVc2FjU3RlcmVvOw0KPj4gKw0KPj4gICAvKioNCj4+ICAgICogY2hhbm5lbCBlbGVt ZW50IC0gZ2VuZXJpYyBzdHJ1Y3QgZm9yIFNDRS9DUEUvQ0NFL0xGRQ0KPj4gICAgKi8NCj4+ ICAgdHlwZWRlZiBzdHJ1Y3QgQ2hhbm5lbEVsZW1lbnQgew0KPj4gICAgICAgaW50IHByZXNl bnQ7DQo+PiAgICAgICAvLyBDUEUgc3BlY2lmaWMNCj4+ICsgICAgdWludDhfdCBtYXhfc2Zi X3N0ZTsgICAgICAvLy88IChVU0FDKSBNYXhpbXVtIG9mIGJvdGggbWF4X3NmYiB2YWx1ZXMN Cj4+ICAgICAgIHVpbnQ4X3QgbXNfbWFza1sxMjhdOyAgICAgLy8vPCBTZXQgaWYgbWlkL3Np ZGUgc3RlcmVvIGlzIHVzZWQgZm9yIGVhY2ggc2NhbGVmYWN0b3Igd2luZG93IGJhbmQNCj4+ ICAgICAgIC8vIHNoYXJlZA0KPj4gICAgICAgU2luZ2xlQ2hhbm5lbEVsZW1lbnQgY2hbMl07 DQo+PiAgICAgICAvLyBDQ0Ugc3BlY2lmaWMNCj4+ICAgICAgIENoYW5uZWxDb3VwbGluZyBj b3VwOw0KPj4gKyAgICAvLyBVU0FDIHN0ZXJlbyBjb3VwbGluZyBkYXRhDQo+PiArICAgIEFB Q1VzYWNTdGVyZW8gdXM7DQo+PiAgIH0gQ2hhbm5lbEVsZW1lbnQ7DQo+PiAgIA0KPj4gK3R5 cGVkZWYgc3RydWN0IEFBQ1VTQUNMb3VkbmVzc0luZm8gew0KPj4gKyAgICB1aW50OF90IGRy Y19zZXRfaWQgOiA2Ow0KPj4gKyAgICB1aW50OF90IGRvd25taXhfaWQgOiA3Ow0KPj4gKyAg ICBzdHJ1Y3Qgew0KPj4gKyAgICAgICAgdWludDE2X3QgbHZsIDogMTI7DQo+PiArICAgICAg ICB1aW50OF90IHByZXNlbnQgOiAxOw0KPj4gKyAgICB9IHNhbXBsZV9wZWFrOw0KPj4gKw0K Pj4gKyAgICBzdHJ1Y3Qgew0KPj4gKyAgICAgICAgdWludDE2X3QgbHZsIDogMTI7DQo+PiAr ICAgICAgICB1aW50OF90IG1lYXN1cmVtZW50IDogNDsNCj4+ICsgICAgICAgIHVpbnQ4X3Qg cmVsaWFiaWxpdHkgOiAyOw0KPj4gKyAgICAgICAgdWludDhfdCBwcmVzZW50IDogMTsNCj4+ ICsgICAgfSB0cnVlX3BlYWs7DQo+PiArDQo+PiArICAgIHVpbnQ4X3QgbmJfbWVhc3VyZW1l bnRzIDogNDsNCj4+ICsgICAgc3RydWN0IHsNCj4+ICsgICAgICAgIHVpbnQ4X3QgbWV0aG9k X2RlZiA6IDQ7DQo+PiArICAgICAgICB1aW50OF90IG1ldGhvZF92YWw7DQo+PiArICAgICAg ICB1aW50OF90IG1lYXN1cmVtZW50IDogNDsNCj4+ICsgICAgICAgIHVpbnQ4X3QgcmVsaWFi aWxpdHkgOiAyOw0KPj4gKyAgICB9IG1lYXN1cmVtZW50c1sxNl07DQo+PiArfSBBQUNVU0FD TG91ZG5lc3NJbmZvOw0KPj4gKw0KPj4gK3R5cGVkZWYgc3RydWN0IEFBQ1VzYWNFbGVtQ29u ZmlnIHsNCj4+ICsgICAgZW51bSBBQUNVc2FjRWxlbSB0eXBlOw0KPj4gKw0KPj4gKyAgICB1 aW50OF90IHR3X21kY3QgOiAxOw0KPj4gKyAgICB1aW50OF90IG5vaXNlX2ZpbGwgOiAxOw0K Pj4gKw0KPj4gKyAgICB1aW50OF90IHN0ZXJlb19jb25maWdfaW5kZXg7DQo+PiArDQo+PiAr ICAgIHN0cnVjdCB7DQo+PiArICAgICAgICBpbnQgcmF0aW87DQo+PiArDQo+PiArICAgICAg ICB1aW50OF90IGhhcm1vbmljX3NiciA6IDE7IC8qIGhhcm1vbmljU0JSICovDQo+PiArICAg ICAgICB1aW50OF90IGJzX2ludGVydGVzIDogMTsgLyogYnNfaW50ZXJUZXMgKi8NCj4+ICsg ICAgICAgIHVpbnQ4X3QgYnNfcHZjIDogMTsgLyogYnNfcHZjICovDQo+PiArDQo+PiArICAg ICAgICBzdHJ1Y3Qgew0KPj4gKyAgICAgICAgICAgIHVpbnQ4X3Qgc3RhcnRfZnJlcTsgLyog ZGZsdF9zdGFydF9mcmVxICovDQo+PiArICAgICAgICAgICAgdWludDhfdCBzdG9wX2ZyZXE7 IC8qIGRmbHRfc3RvcF9mcmVxICovDQo+PiArDQo+PiArICAgICAgICAgICAgdWludDhfdCBm cmVxX3NjYWxlOyAvKiBkZmx0X2ZyZXFfc2NhbGUgKi8NCj4+ICsgICAgICAgICAgICB1aW50 OF90IGFsdGVyX3NjYWxlIDogMTsgLyogZGZsdF9hbHRlcl9zY2FsZSAqLw0KPj4gKyAgICAg ICAgICAgIHVpbnQ4X3Qgbm9pc2Vfc2NhbGU7IC8qIGRmbHRfbm9pc2Vfc2NhbGUgKi8NCj4+ ICsNCj4+ICsgICAgICAgICAgICB1aW50OF90IGxpbWl0ZXJfYmFuZHM7IC8qIGRmbHRfbGlt aXRlcl9iYW5kcyAqLw0KPj4gKyAgICAgICAgICAgIHVpbnQ4X3QgbGltaXRlcl9nYWluczsg LyogZGZsdF9saW1pdGVyX2dhaW5zICovDQo+PiArICAgICAgICAgICAgdWludDhfdCBpbnRl cnBvbF9mcmVxIDogMTsgLyogZGZsdF9pbnRlcnBvbF9mcmVxICovDQo+PiArICAgICAgICAg ICAgdWludDhfdCBzbW9vdGhpbmdfbW9kZSA6IDE7IC8qIGRmbHRfc21vb3RoaW5nX21vZGUg Ki8NCj4+ICsgICAgICAgIH0gZGZsdDsNCj4+ICsgICAgfSBzYnI7DQo+PiArDQo+PiArICAg IHN0cnVjdCB7DQo+PiArICAgICAgICB1aW50OF90IGZyZXFfcmVzOyAvKiBic0ZyZXFSZXMg Ki8NCj4+ICsgICAgICAgIHVpbnQ4X3QgZml4ZWRfZ2FpbjsgLyogYnNGaXhlZEdhaW5ETVgg Ki8NCj4+ICsgICAgICAgIHVpbnQ4X3QgdGVtcF9zaGFwZV9jb25maWc7IC8qIGJzVGVtcFNo YXBlQ29uZmlnICovDQo+PiArICAgICAgICB1aW50OF90IGRlY29ycl9jb25maWc7IC8qIGJz RGVjb3JyQ29uZmlnICovDQo+PiArICAgICAgICB1aW50OF90IGhpZ2hfcmF0ZV9tb2RlIDog MTsgLyogYnNIaWdoUmF0ZU1vZGUgKi8NCj4+ICsgICAgICAgIHVpbnQ4X3QgcGhhc2VfY29k aW5nIDogMTsgLyogYnNQaGFzZUNvZGluZyAqLw0KPj4gKw0KPj4gKyAgICAgICAgdWludDhf dCBvdHRzX2JhbmRzX3BoYXNlOyAvKiBic090dEJhbmRzUGhhc2UgKi8NCj4+ICsgICAgICAg IHVpbnQ4X3QgcmVzaWR1YWxfY29kaW5nOyAvKiBic1Jlc2lkdWFsQ29kaW5nICovDQo+PiAr ICAgICAgICB1aW50OF90IHJlc2lkdWFsX2JhbmRzOyAvKiBic1Jlc2lkdWFsQmFuZHMgKi8N Cj4+ICsgICAgICAgIHVpbnQ4X3QgcHNldWRvX2xyIDogMTsgLyogYnNQc2V1ZG9MciAqLw0K Pj4gKyAgICAgICAgdWludDhfdCBlbnZfcXVhbnRfbW9kZSA6IDE7IC8qIGJzRW52UXVhbnRN b2RlICovDQo+IA0KPiBJcyB1c2luZyBiaXRmaWVsZHMgcmVhbGx5IHdvcnRoIGl0IGdpdmVu IHRoYXQgdGhleSBmb3JjZSB0byB1c2UgbWFza2luZw0KPiBmb3IgYWNjZXNzZXM/DQo+IA0K Pj4gKyAgICB9IG1wczsNCj4+ICsNCj4+ICsgICAgc3RydWN0IHsNCj4+ICsgICAgICAgIGVu dW0gQUFDVXNhY0V4dGVuc2lvbiB0eXBlOw0KPj4gKyAgICAgICAgdWludDhfdCBwYXlsb2Fk X2ZyYWc7DQo+PiArICAgICAgICB1aW50MzJfdCBkZWZhdWx0X2xlbjsNCj4+ICsgICAgICAg IHVpbnQzMl90IHBsX2RhdGFfb2Zmc2V0Ow0KPj4gKyAgICAgICAgdWludDhfdCAqcGxfZGF0 YTsNCj4+ICsgICAgfSBleHQ7DQo+PiArfSBBQUNVc2FjRWxlbUNvbmZpZzsNCj4+ICsNCj4+ ICt0eXBlZGVmIHN0cnVjdCBBQUNVU0FDQ29uZmlnIHsNCj4+ICsgICAgdWludDhfdCBjb3Jl X3Nicl9mcmFtZV9sZW5faWR4OyAvKiBjb3JlU2JyRnJhbWVMZW5ndGhJbmRleCAqLw0KPj4g KyAgICB1aW50OF90IHJhdGVfaWR4Ow0KPj4gKyAgICB1aW50MTZfdCBjb3JlX2ZyYW1lX2xl bjsNCj4+ICsgICAgdWludDE2X3Qgc3RyZWFtX2lkZW50aWZpZXI7DQo+PiArDQo+PiArICAg IEFBQ1VzYWNFbGVtQ29uZmlnIGVsZW1zWzY0XTsNCj4+ICsgICAgaW50IG5iX2VsZW1zOw0K Pj4gKw0KPj4gKyAgICBzdHJ1Y3Qgew0KPj4gKyAgICAgICAgdWludDhfdCBuYl9hbGJ1bTsN Cj4+ICsgICAgICAgIEFBQ1VTQUNMb3VkbmVzc0luZm8gYWxidW1faW5mb1s2NF07DQo+PiAr ICAgICAgICB1aW50OF90IG5iX2luZm87DQo+PiArICAgICAgICBBQUNVU0FDTG91ZG5lc3NJ bmZvIGluZm9bNjRdOw0KPj4gKyAgICB9IGxvdWRuZXNzOw0KPj4gK30gQUFDVVNBQ0NvbmZp ZzsNCj4+ICsNCj4+ICAgdHlwZWRlZiBzdHJ1Y3QgT3V0cHV0Q29uZmlndXJhdGlvbiB7DQo+ PiAgICAgICBNUEVHNEF1ZGlvQ29uZmlnIG00YWM7DQo+PiAgICAgICB1aW50OF90IGxheW91 dF9tYXBbTUFYX0VMRU1fSUQqNF1bM107DQo+PiAgICAgICBpbnQgbGF5b3V0X21hcF90YWdz Ow0KPj4gICAgICAgQVZDaGFubmVsTGF5b3V0IGNoX2xheW91dDsNCj4+ICAgICAgIGVudW0g T0NTdGF0dXMgc3RhdHVzOw0KPj4gKyAgICBBQUNVU0FDQ29uZmlnIHVzYWM7DQo+PiAgIH0g T3V0cHV0Q29uZmlndXJhdGlvbjsNCj4+ICAgDQo+PiAgIC8qKg0KPj4gZGlmZiAtLWdpdCBh L2xpYmF2Y29kZWMvYWFjL2FhY2RlY19hYy5jIGIvbGliYXZjb2RlYy9hYWMvYWFjZGVjX2Fj LmMNCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiBpbmRleCAwMDAwMDAwMDAwLi4zMjZk NzE2YmQzDQo+PiAtLS0gL2Rldi9udWxsDQo+PiArKysgYi9saWJhdmNvZGVjL2FhYy9hYWNk ZWNfYWMuYw0KPj4gQEAgLTAsMCArMSwyMjQgQEANCj4+ICsvKg0KPj4gKyAqIEFBQyBkZWZp bml0aW9ucyBhbmQgc3RydWN0dXJlcw0KPj4gKyAqIENvcHlyaWdodCAoYykgMjAyNCBMeW5u ZQ0KPj4gKyAqDQo+PiArICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLg0KPj4gKyAq DQo+PiArICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vcg0KPj4gKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMNCj4+ICsgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXINCj4+ICsgKiB2ZXJzaW9u IDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4NCj4+ICsgKg0KPj4gKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KPj4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQo+PiArICogTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZSBHTlUNCj4+ICsgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLg0KPj4gKyAqDQo+PiArICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYw0KPj4gKyAqIExpY2Vuc2Ug YWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUN Cj4+ICsgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs b29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBDQo+PiArICovDQo+PiArDQo+PiArI2lu Y2x1ZGUgImxpYmF2Y29kZWMvYWFjdGFiLmgiDQo+PiArI2luY2x1ZGUgImFhY2RlY19hYy5o Ig0KPj4gKw0KPj4gK3VpbnQzMl90IGZmX2FhY19hY19tYXBfcHJvY2VzcyhBQUNBcml0aFN0 YXRlICpzdGF0ZSwgaW50IHJlc2V0LCBpbnQgTikNCj4+ICt7DQo+PiArICAgIGZsb2F0IHJh dGlvOw0KPj4gKyAgICBpZiAocmVzZXQpIHsNCj4+ICsgICAgICAgIG1lbXNldChzdGF0ZS0+ bGFzdCwgMCwgc2l6ZW9mKHN0YXRlLT5sYXN0KSk7DQo+PiArICAgICAgICBzdGF0ZS0+bGFz dF9sZW4gPSBOOw0KPj4gKyAgICAgICAgbWVtc2V0KHN0YXRlLT5jdXIsIDAsIHNpemVvZihz dGF0ZS0+Y3VyKSk7DQo+PiArICAgICAgICBzdGF0ZS0+Y3VyWzNdID0gMDsNCj4+ICsgICAg ICAgIHN0YXRlLT5jdXJbMl0gPSAwOw0KPj4gKyAgICAgICAgc3RhdGUtPmN1clsxXSA9IDA7 DQo+PiArICAgICAgICBzdGF0ZS0+Y3VyWzBdID0gMTsNCj4+ICsgICAgICAgIHN0YXRlLT5s YXN0WzBdID0gMCA8PCAxMjsNCj4+ICsgICAgICAgIHN0YXRlLT5zdGF0ZV9wcmUgPSAwOw0K Pj4gKyAgICAgICAgcmV0dXJuIDA7DQo+PiArICAgIH0gZWxzZSBpZiAoc3RhdGUtPmxhc3Rf bGVuICE9IE4pIHsNCj4+ICsgICAgICAgIGludCBpOw0KPj4gKyAgICAgICAgdWludDhfdCBs YXN0WzUxMiAvKiAyMDQ4IC8gNCAqL107DQo+PiArICAgICAgICBtZW1jcHkobGFzdCwgc3Rh dGUtPmxhc3QsIHNpemVvZihsYXN0KSk7DQo+PiArDQo+PiArICAgICAgICByYXRpbyA9IHN0 YXRlLT5sYXN0X2xlbiAvIChmbG9hdClOOw0KPj4gKyAgICAgICAgZm9yIChpID0gMDsgaSA8 IE4vMjsgaSsrKSB7DQo+PiArICAgICAgICAgICAgaW50IGsgPSAoaW50KShpICogcmF0aW8p Ow0KPj4gKyAgICAgICAgICAgIHN0YXRlLT5sYXN0W2ldID0gbGFzdFtrXTsNCj4+ICsgICAg ICAgIH0NCj4+ICsNCj4+ICsgICAgICAgIGZvciAoOyBpIDwgRkZfQVJSQVlfRUxFTVMoc3Rh dGUtPmxhc3QpOyBpKyspDQo+PiArICAgICAgICAgICAgc3RhdGUtPmxhc3RbaV0gPSAwOw0K Pj4gKw0KPj4gKyAgICAgICAgc3RhdGUtPmxhc3RfbGVuID0gTjsNCj4+ICsgICAgfQ0KPj4g Kw0KPj4gKyAgICBtZW1zZXQoc3RhdGUtPmN1ciwgMCwgc2l6ZW9mKHN0YXRlLT5jdXIpKTsN Cj4+ICsgICAgc3RhdGUtPmN1clszXSA9IDA7DQo+PiArICAgIHN0YXRlLT5jdXJbMl0gPSAw Ow0KPj4gKyAgICBzdGF0ZS0+Y3VyWzFdID0gMDsNCj4+ICsgICAgc3RhdGUtPmN1clswXSA9 IDE7DQo+PiArDQo+PiArICAgIHN0YXRlLT5zdGF0ZV9wcmUgPSBzdGF0ZS0+bGFzdFswXSA8 PCAxMjsNCj4+ICsgICAgcmV0dXJuIHN0YXRlLT5sYXN0WzBdIDw8IDEyOw0KPj4gK30NCj4+ ICsNCj4+ICtleHRlcm4gaW50IGVjX2RlYnVnOw0KPj4gKw0KPj4gK2ludCB0cmlnID0gMDsN Cj4+ICsNCj4+ICt1aW50MzJfdCBmZl9hYWNfYWNfZ2V0X2NvbnRleHQoQUFDQXJpdGhTdGF0 ZSAqc3RhdGUsIHVpbnQzMl90IGMsIGludCBpLCBpbnQgTikNCj4+ICt7DQo+PiArICAgIGMg PSBzdGF0ZS0+c3RhdGVfcHJlID4+IDg7DQo+PiArICAgIGMgPSBjICsgKHN0YXRlLT5sYXN0 W2kgKyAxXSA8PCA4KTsNCj4+ICsgICAgYyA9IChjIDw8IDQpOw0KPj4gKyAgICBjICs9IHN0 YXRlLT5jdXJbMV07DQo+PiArDQo+PiArICAgIHN0YXRlLT5zdGF0ZV9wcmUgPSBjOw0KPj4g Kw0KPj4gKyAgICBpZiAoaSA+IDMgJiYNCj4+ICsgICAgICAgICgoc3RhdGUtPmN1clszXSAr IHN0YXRlLT5jdXJbMl0gKyBzdGF0ZS0+Y3VyWzFdKSA8IDUpKQ0KPj4gKyAgICAgICAgcmV0 dXJuIGMgKyAweDEwMDAwOw0KPj4gKw0KPj4gKyAgICByZXR1cm4gYzsNCj4+ICt9DQo+PiAr DQo+PiArdWludDMyX3QgZmZfYWFjX2FjX2dldF9wayh1aW50MzJfdCBjKQ0KPj4gK3sNCj4+ ICsgICAgaW50IGlfbWluID0gLTE7DQo+PiArICAgIGludCBpLCBqOw0KPj4gKyAgICBpbnQg aV9tYXggPSBGRl9BUlJBWV9FTEVNUyhmZl9hYWNfYWNfbG9va3VwX20pIC0gMTsNCj4+ICsg ICAgd2hpbGUgKChpX21heCAtIGlfbWluKSA+IDEpIHsNCj4+ICsgICAgICAgIGkgPSBpX21p biArICgoaV9tYXggLSBpX21pbikgLyAyKTsNCj4+ICsgICAgICAgIGogPSBmZl9hYWNfYWNf aGFzaF9tW2ldOw0KPj4gKyAgICAgICAgaWYgKGMgPCAoaiA+PiA4KSkNCj4+ICsgICAgICAg ICAgICBpX21heCA9IGk7DQo+PiArICAgICAgICBlbHNlIGlmIChjID4gKGogPj4gOCkpDQo+ PiArICAgICAgICAgICAgaV9taW4gPSBpOw0KPj4gKyAgICAgICAgZWxzZQ0KPj4gKyAgICAg ICAgICAgIHJldHVybiAoaiAmIDB4RkYpOw0KPj4gKyAgICB9DQo+PiArICAgIHJldHVybiBm Zl9hYWNfYWNfbG9va3VwX21baV9tYXhdOw0KPj4gK30NCj4+ICsNCj4+ICt2b2lkIGZmX2Fh Y19hY191cGRhdGVfY29udGV4dChBQUNBcml0aFN0YXRlICpzdGF0ZSwgaW50IGlkeCwNCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBhLCB1aW50MTZfdCBi KQ0KPj4gK3sNCj4+ICsgICAgc3RhdGUtPmN1clswXSA9IGEgKyBiICsgMTsNCj4+ICsgICAg aWYgKHN0YXRlLT5jdXJbMF0gPiAweEYpDQo+PiArICAgICAgICBzdGF0ZS0+Y3VyWzBdID0g MHhGOw0KPj4gKw0KPj4gKyAgICBzdGF0ZS0+Y3VyWzNdID0gc3RhdGUtPmN1clsyXTsNCj4+ ICsgICAgc3RhdGUtPmN1clsyXSA9IHN0YXRlLT5jdXJbMV07DQo+PiArICAgIHN0YXRlLT5j dXJbMV0gPSBzdGF0ZS0+Y3VyWzBdOw0KPj4gKw0KPj4gKyAgICBzdGF0ZS0+bGFzdFtpZHhd ID0gc3RhdGUtPmN1clswXTsNCj4+ICt9DQo+PiArDQo+PiArLyogSW5pdGlhbGl6ZSBBQyAq Lw0KPj4gK3ZvaWQgZmZfYWFjX2FjX2luaXQoQUFDQXJpdGggKmFjLCBHZXRCaXRDb250ZXh0 ICpnYikNCj4+ICt7DQo+PiArICAgIGFjLT5sb3cgPSAwOw0KPj4gKyAgICBhYy0+aGlnaCA9 IFVJTlQxNl9NQVg7DQo+PiArICAgIGFjLT52YWwgPSBnZXRfYml0cyhnYiwgMTYpOw0KPj4g K30NCj4+ICsNCj4+ICt1aW50MTZfdCBmZl9hYWNfYWNfZGVjb2RlKEFBQ0FyaXRoICphYywg R2V0Qml0Q29udGV4dCAqZ2IsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCB1aW50MTZfdCAqY2RmLCB1aW50MTZfdCBjZGZfbGVuKQ0KPj4gK3sNCj4+ICsgICAgaW50 IHZhbCA9IGFjLT52YWw7DQo+PiArICAgIGludCBsb3cgPSBhYy0+bG93Ow0KPj4gKyAgICBp bnQgaGlnaCA9IGFjLT5oaWdoOw0KPj4gKw0KPj4gKyAgICBpbnQgcm5nID0gaGlnaCAtIGxv dyArIDE7DQo+PiArICAgIGludCBjID0gKCgoKGludCkodmFsIC0gbG93ICsgMSkpIDw8IDE0 KSAtICgoaW50KTEpKTsNCj4+ICsNCj4+ICsgICAgLyogTm90ZTogdGhpcyBjb3VsZCBiZSBk b25lIGZhc3RlciB2aWEgaGV1cmlzdGljcywgdGhlIHRvdGFsIG51bWJlciBvZg0KPj4gKyAg ICAgKiBjb25maWd1cmF0aW9ucyBpcyBsb3cgKi8NCj4+ICsgICAgY29uc3QgdWludDE2X3Qg KnAgPSBjZGYgLSAxOw0KPj4gKyAgICBjb25zdCB1aW50MTZfdCAqcTsNCj4+ICsNCj4+ICsg ICAgc3dpdGNoIChjZGZfbGVuKSB7DQo+PiArICAgIGNhc2UgMjoNCj4+ICsgICAgICAgIGlm ICgocFsxXSAqIHJuZykgPiBjKQ0KPj4gKyAgICAgICAgICAgIHAgKz0gMTsNCj4+ICsgICAg ICAgIGJyZWFrOw0KPj4gKyAgICBjYXNlIDQ6DQo+PiArICAgICAgICBpZiAoKHBbMl0gKiBy bmcpID4gYykNCj4+ICsgICAgICAgICAgICBwICs9IDI7DQo+PiArICAgICAgICBpZiAoKHBb MV0gKiBybmcpID4gYykNCj4+ICsgICAgICAgICAgICBwICs9IDE7DQo+PiArICAgICAgICBi cmVhazsNCj4+ICsgICAgY2FzZSAxNzoNCj4+ICsgICAgICAgIC8qIEZpcnN0IGNoZWNrIGlm IHRoZSBjdXJyZW50IHByb2JhYmlsaXR5IGlzIGV2ZW4gbWV0IGF0IGFsbCAqLw0KPj4gKyAg ICAgICAgaWYgKChwWzFdICogcm5nKSA8PSBjKQ0KPj4gKyAgICAgICAgICAgIGJyZWFrOw0K Pj4gKyAgICAgICAgcCArPSAxOw0KPj4gKyAgICAgICAgZm9yIChpbnQgaSA9IDg7IGkgPj0g MTsgaSA+Pj0gMSkNCj4+ICsgICAgICAgICAgICBpZiAoKHBbaV0gKiBybmcpID4gYykNCj4+ ICsgICAgICAgICAgICAgICAgcCArPSBpOw0KPj4gKyAgICAgICAgYnJlYWs7DQo+PiArICAg IGNhc2UgMjc6DQo+PiArICAgICAgICBjb25zdCB1aW50MTZfdCAqcF8yNCA9IHAgKyAyNDsN Cj4+ICsNCj4+ICsgICAgICAgIGlmICgocFsxNl0gKiBybmcpID4gYykNCj4+ICsgICAgICAg ICAgICBwICs9IDE2Ow0KPj4gKyAgICAgICAgaWYgKChwWzhdICogcm5nKSA+IGMpDQo+PiAr ICAgICAgICAgICAgcCArPSA4Ow0KPj4gKyAgICAgICAgaWYgKHAgIT0gcF8yNCkNCj4+ICsg ICAgICAgICAgICBpZiAoKHBbNF0gKiBybmcpID4gYykNCj4+ICsgICAgICAgICAgICAgICAg cCArPSA0Ow0KPj4gKyAgICAgICAgaWYgKChwWzJdICogcm5nKSA+IGMpDQo+PiArICAgICAg ICAgICAgcCArPSAyOw0KPj4gKw0KPj4gKyAgICAgICAgaWYgKHAgIT0gJnBfMjRbMl0pDQo+ PiArICAgICAgICAgICAgaWYgKChwWzFdICogcm5nKSA+IGMpDQo+PiArICAgICAgICAgICAg ICAgIHAgKz0gMTsNCj4+ICsgICAgICAgIGJyZWFrOw0KPj4gKyAgICBkZWZhdWx0Og0KPj4g KyAgICAgICAgLyogVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuICovDQo+PiArICAgICAgICBh dl9hc3NlcnQyKDApOw0KPj4gKyAgICB9DQo+PiArDQo+PiArICAgIGludCBzeW0gPSAoaW50 KSgocHRyZGlmZl90KShwIC0gY2RmKSkgKyAxOw0KPj4gKyAgICBpZiAoc3ltKQ0KPj4gKyAg ICAgICAgaGlnaCA9IGxvdyArICgocm5nICogY2RmW3N5bSAtIDFdKSA+PiAxNCkgLSAxOw0K Pj4gKyAgICBsb3cgKz0gKHJuZyAqIGNkZltzeW1dKSA+PiAxNDsNCj4+ICsNCj4+ICsgICAg LyogVGhpcyBsb29wIGNvdWxkIGJlIGRvbmUgZmFzdGVyICovDQo+PiArICAgIHdoaWxlICgx KSB7DQo+PiArICAgICAgICBpZiAoaGlnaCA8IDMyNzY4KSB7DQo+PiArICAgICAgICAgICAg Ow0KPj4gKyAgICAgICAgfSBlbHNlIGlmIChsb3cgPj0gMzI3NjgpIHsNCj4+ICsgICAgICAg ICAgICB2YWwgLT0gMzI3Njg7DQo+PiArICAgICAgICAgICAgbG93IC09IDMyNzY4Ow0KPj4g KyAgICAgICAgICAgIGhpZ2ggLT0gMzI3Njg7DQo+PiArICAgICAgICB9IGVsc2UgaWYgKGxv dyA+PSAxNjM4NCAmJiBoaWdoIDwgNDkxNTIpIHsNCj4+ICsgICAgICAgICAgICB2YWwgLT0g MTYzODQ7DQo+PiArICAgICAgICAgICAgbG93IC09IDE2Mzg0Ow0KPj4gKyAgICAgICAgICAg IGhpZ2ggLT0gMTYzODQ7DQo+PiArICAgICAgICB9IGVsc2Ugew0KPj4gKyAgICAgICAgICAg IGJyZWFrOw0KPj4gKyAgICAgICAgfQ0KPj4gKyAgICAgICAgbG93ICs9IGxvdzsNCj4+ICsg ICAgICAgIGhpZ2ggKz0gaGlnaCArIDE7DQo+PiArICAgICAgICB2YWwgPSAodmFsIDw8IDEp IHwgZ2V0X2JpdHMxKGdiKTsNCj4+ICsgICAgfTsNCj4+ICsNCj4+ICsgICAgYWMtPmxvdyA9 IGxvdzsNCj4+ICsgICAgYWMtPmhpZ2ggPSBoaWdoOw0KPj4gKyAgICBhYy0+dmFsID0gdmFs Ow0KPj4gKw0KPj4gKyAgICByZXR1cm4gc3ltOw0KPj4gK30NCj4+ICsNCj4+ICt2b2lkIGZm X2FhY19hY19maW5pc2goQUFDQXJpdGhTdGF0ZSAqc3RhdGUsIGludCBvZmZzZXQsIGludCBO KQ0KPj4gK3sNCj4+ICsgICAgaW50IGk7DQo+PiArDQo+PiArICAgIGZvciAoaSA9IG9mZnNl dDsgaSA8IE4vMjsgaSsrKQ0KPj4gKyAgICAgICAgc3RhdGUtPmxhc3RbaV0gPSAxOw0KPj4g Kw0KPj4gKyAgICBmb3IgKDsgaSA8IEZGX0FSUkFZX0VMRU1TKHN0YXRlLT5sYXN0KTsgaSsr KQ0KPj4gKyAgICAgICAgc3RhdGUtPmxhc3RbaV0gPSAwOw0KPj4gK30NCj4+IGRpZmYgLS1n aXQgYS9saWJhdmNvZGVjL2FhYy9hYWNkZWNfYWMuaCBiL2xpYmF2Y29kZWMvYWFjL2FhY2Rl Y19hYy5oDQo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4gaW5kZXggMDAwMDAwMDAwMC4u ZWY5NmJlZDc3MA0KPj4gLS0tIC9kZXYvbnVsbA0KPj4gKysrIGIvbGliYXZjb2RlYy9hYWMv YWFjZGVjX2FjLmgNCj4+IEBAIC0wLDAgKzEsNTQgQEANCj4+ICsvKg0KPj4gKyAqIEFBQyBk ZWZpbml0aW9ucyBhbmQgc3RydWN0dXJlcw0KPj4gKyAqIENvcHlyaWdodCAoYykgMjAyNCBM eW5uZQ0KPj4gKyAqDQo+PiArICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLg0KPj4g KyAqDQo+PiArICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vcg0KPj4gKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMNCj4+ICsgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXINCj4+ICsgKiB2ZXJz aW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4NCj4+ICsgKg0KPj4gKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KPj4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQo+PiArICog TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZSBHTlUNCj4+ICsgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLg0KPj4gKyAqDQo+PiArICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYw0KPj4gKyAqIExpY2Vu c2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh cmUNCj4+ICsgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo IEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBDQo+PiArICovDQo+PiArDQo+PiAr I2lmbmRlZiBBVkNPREVDX0FBQ0RFQ19BQ19IDQo+PiArI2RlZmluZSBBVkNPREVDX0FBQ0RF Q19BQ19IDQo+PiArDQo+PiArI2luY2x1ZGUgImxpYmF2Y29kZWMvZ2V0X2JpdHMuaCINCj4+ ICsNCj4+ICt0eXBlZGVmIHN0cnVjdCBBQUNBcml0aFN0YXRlIHsNCj4+ICsgICAgdWludDhf dCBsYXN0WzUxMiAvKiAyMDQ4IC8gNCAqL107DQo+PiArICAgIGludCBsYXN0X2xlbjsNCj4+ ICsgICAgdWludDhfdCBjdXJbNF07DQo+PiArICAgIHVpbnQxNl90IHN0YXRlX3ByZTsNCj4+ ICt9IEFBQ0FyaXRoU3RhdGU7DQo+PiArDQo+PiArdHlwZWRlZiBzdHJ1Y3QgQUFDQXJpdGgg ew0KPj4gKyAgICB1aW50MTZfdCBsb3c7DQo+PiArICAgIHVpbnQxNl90IGhpZ2g7DQo+PiAr ICAgIHVpbnQxNl90IHZhbDsNCj4+ICt9IEFBQ0FyaXRoOw0KPj4gKw0KPj4gKyNkZWZpbmUg RkZfQUFDX0FDX0VTQ0FQRSAxNg0KPj4gKw0KPj4gK3VpbnQzMl90IGZmX2FhY19hY19tYXBf cHJvY2VzcyhBQUNBcml0aFN0YXRlICpzdGF0ZSwgaW50IHJlc2V0LCBpbnQgbGVuKTsNCj4+ ICt1aW50MzJfdCBmZl9hYWNfYWNfZ2V0X2NvbnRleHQoQUFDQXJpdGhTdGF0ZSAqc3RhdGUs IHVpbnQzMl90IG9sZF9jLCBpbnQgaWR4LCBpbnQgbGVuKTsNCj4+ICt1aW50MzJfdCBmZl9h YWNfYWNfZ2V0X3BrKHVpbnQzMl90IGMpOw0KPj4gKw0KPj4gK3ZvaWQgZmZfYWFjX2FjX3Vw ZGF0ZV9jb250ZXh0KEFBQ0FyaXRoU3RhdGUgKnN0YXRlLCBpbnQgaWR4LCB1aW50MTZfdCBh LCB1aW50MTZfdCBiKTsNCj4+ICt2b2lkIGZmX2FhY19hY19pbml0KEFBQ0FyaXRoICphYywg R2V0Qml0Q29udGV4dCAqZ2IpOw0KPj4gKw0KPj4gK3VpbnQxNl90IGZmX2FhY19hY19kZWNv ZGUoQUFDQXJpdGggKmFjLCBHZXRCaXRDb250ZXh0ICpnYiwNCj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IHVpbnQxNl90ICpjZGYsIHVpbnQxNl90IGNkZl9sZW4pOw0K Pj4gKw0KPj4gK3ZvaWQgZmZfYWFjX2FjX2ZpbmlzaChBQUNBcml0aFN0YXRlICpzdGF0ZSwg aW50IG9mZnNldCwgaW50IG5iKTsNCj4+ICsNCj4+ICsjZW5kaWYgLyogQVZDT0RFQ19BQUNE RUNfQUNfSCAqLw0KPj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvYWFjL2FhY2RlY19kc3Bf dGVtcGxhdGUuYyBiL2xpYmF2Y29kZWMvYWFjL2FhY2RlY19kc3BfdGVtcGxhdGUuYw0KPj4g aW5kZXggNTlhNjlkODhmMy4uOGQzMWFmMjJmOCAxMDA2NDQNCj4+IC0tLSBhL2xpYmF2Y29k ZWMvYWFjL2FhY2RlY19kc3BfdGVtcGxhdGUuYw0KPj4gKysrIGIvbGliYXZjb2RlYy9hYWMv YWFjZGVjX2RzcF90ZW1wbGF0ZS5jDQo+PiBAQCAtODgsOCArODgsOCBAQCBzdGF0aWMgdm9p ZCBBQUNfUkVOQU1FKGFwcGx5X21pZF9zaWRlX3N0ZXJlbykoQUFDRGVjQ29udGV4dCAqYWMs IENoYW5uZWxFbGVtZW50DQo+PiAgICAgICBJTlRGTE9BVCAqY2gxID0gY3BlLT5jaFsxXS5B QUNfUkVOQU1FKGNvZWZmcyk7DQo+PiAgICAgICBjb25zdCB1aW50MTZfdCAqb2Zmc2V0cyA9 IGljcy0+c3diX29mZnNldDsNCj4+ICAgICAgIGZvciAoaW50IGcgPSAwOyBnIDwgaWNzLT5u dW1fd2luZG93X2dyb3VwczsgZysrKSB7DQo+PiAtICAgICAgICBmb3IgKGludCBzZmIgPSAw OyBzZmIgPCBpY3MtPm1heF9zZmI7IHNmYisrKSB7DQo+PiAtICAgICAgICAgICAgY29uc3Qg aW50IGlkeCA9IGcqaWNzLT5tYXhfc2ZiICsgc2ZiOw0KPj4gKyAgICAgICAgZm9yIChpbnQg c2ZiID0gMDsgc2ZiIDwgY3BlLT5tYXhfc2ZiX3N0ZTsgc2ZiKyspIHsNCj4+ICsgICAgICAg ICAgICBjb25zdCBpbnQgaWR4ID0gZypjcGUtPm1heF9zZmJfc3RlICsgc2ZiOw0KPj4gICAg ICAgICAgICAgICBpZiAoY3BlLT5tc19tYXNrW2lkeF0gJiYNCj4+ICAgICAgICAgICAgICAg ICAgIGNwZS0+Y2hbMF0uYmFuZF90eXBlW2lkeF0gPCBOT0lTRV9CVCAmJg0KPj4gICAgICAg ICAgICAgICAgICAgY3BlLT5jaFsxXS5iYW5kX3R5cGVbaWR4XSA8IE5PSVNFX0JUKSB7DQo+ PiBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9hYWMvYWFjZGVjX2xhdG0uaCBiL2xpYmF2Y29k ZWMvYWFjL2FhY2RlY19sYXRtLmgNCj4+IGluZGV4IGU0MGEyZmUxYTcuLjA0N2MxMWUwZmIg MTAwNjQ0DQo+PiAtLS0gYS9saWJhdmNvZGVjL2FhYy9hYWNkZWNfbGF0bS5oDQo+PiArKysg Yi9saWJhdmNvZGVjL2FhYy9hYWNkZWNfbGF0bS5oDQo+PiBAQCAtNTYsNyArNTYsOCBAQCBz dGF0aWMgaW50IGxhdG1fZGVjb2RlX2F1ZGlvX3NwZWNpZmljX2NvbmZpZyhzdHJ1Y3QgTEFU TUNvbnRleHQgKmxhdG1jdHgsDQo+PiAgIHsNCj4+ICAgICAgIEFBQ0RlY0NvbnRleHQgKmFj ICAgICA9ICZsYXRtY3R4LT5hYWNfY3R4Ow0KPj4gICAgICAgQVZDb2RlY0NvbnRleHQgKmF2 Y3R4ID0gYWMtPmF2Y3R4Ow0KPj4gLSAgICBNUEVHNEF1ZGlvQ29uZmlnIG00YWMgPSB7IDAg fTsNCj4+ICsgICAgT3V0cHV0Q29uZmlndXJhdGlvbiBvYyA9IHsgMCB9Ow0KPj4gKyAgICBN UEVHNEF1ZGlvQ29uZmlnICptNGFjID0gJm9jLm00YWM7DQo+PiAgICAgICBHZXRCaXRDb250 ZXh0IGdiYzsNCj4+ICAgICAgIGludCBjb25maWdfc3RhcnRfYml0ICA9IGdldF9iaXRzX2Nv dW50KGdiKTsNCj4+ICAgICAgIGludCBzeW5jX2V4dGVuc2lvbiAgICA9IDA7DQo+PiBAQCAt NzYsNyArNzcsNyBAQCBzdGF0aWMgaW50IGxhdG1fZGVjb2RlX2F1ZGlvX3NwZWNpZmljX2Nv bmZpZyhzdHJ1Y3QgTEFUTUNvbnRleHQgKmxhdG1jdHgsDQo+PiAgICAgICBpZiAoZ2V0X2Jp dHNfbGVmdChnYikgPD0gMCkNCj4+ICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElE REFUQTsNCj4+ICAgDQo+PiAtICAgIGJpdHNfY29uc3VtZWQgPSBkZWNvZGVfYXVkaW9fc3Bl Y2lmaWNfY29uZmlnX2diKE5VTEwsIGF2Y3R4LCAmbTRhYywNCj4+ICsgICAgYml0c19jb25z dW1lZCA9IGRlY29kZV9hdWRpb19zcGVjaWZpY19jb25maWdfZ2IoTlVMTCwgYXZjdHgsICZv YywNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICZnYmMsIGNvbmZpZ19zdGFydF9iaXQsDQo+PiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW5jX2V4dGVuc2lvbik7DQo+ PiAgIA0KPj4gQEAgLTg4LDExICs4OSwxMiBAQCBzdGF0aWMgaW50IGxhdG1fZGVjb2RlX2F1 ZGlvX3NwZWNpZmljX2NvbmZpZyhzdHJ1Y3QgTEFUTUNvbnRleHQgKmxhdG1jdHgsDQo+PiAg ICAgICAgIGFzY2xlbiA9IGJpdHNfY29uc3VtZWQ7DQo+PiAgIA0KPj4gICAgICAgaWYgKCFs YXRtY3R4LT5pbml0aWFsaXplZCB8fA0KPj4gLSAgICAgICAgYWMtPm9jWzFdLm00YWMuc2Ft cGxlX3JhdGUgIT0gbTRhYy5zYW1wbGVfcmF0ZSB8fA0KPj4gLSAgICAgICAgYWMtPm9jWzFd Lm00YWMuY2hhbl9jb25maWcgIT0gbTRhYy5jaGFuX2NvbmZpZykgew0KPj4gKyAgICAgICAg YWMtPm9jWzFdLm00YWMuc2FtcGxlX3JhdGUgIT0gbTRhYy0+c2FtcGxlX3JhdGUgfHwNCj4+ ICsgICAgICAgIGFjLT5vY1sxXS5tNGFjLmNoYW5fY29uZmlnICE9IG00YWMtPmNoYW5fY29u ZmlnKSB7DQo+PiAgIA0KPj4gICAgICAgICAgIGlmIChsYXRtY3R4LT5pbml0aWFsaXplZCkg ew0KPj4gLSAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0lORk8sICJhdWRpbyBj b25maWcgY2hhbmdlZCAoc2FtcGxlX3JhdGU9JWQsIGNoYW5fY29uZmlnPSVkKVxuIiwgbTRh Yy5zYW1wbGVfcmF0ZSwgbTRhYy5jaGFuX2NvbmZpZyk7DQo+PiArICAgICAgICAgICAgYXZf bG9nKGF2Y3R4LCBBVl9MT0dfSU5GTywgImF1ZGlvIGNvbmZpZyBjaGFuZ2VkIChzYW1wbGVf cmF0ZT0lZCwgY2hhbl9jb25maWc9JWQpXG4iLA0KPj4gKyAgICAgICAgICAgICAgICAgICBt NGFjLT5zYW1wbGVfcmF0ZSwgbTRhYy0+Y2hhbl9jb25maWcpOw0KPj4gICAgICAgICAgIH0g ZWxzZSB7DQo+PiAgICAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0RFQlVHLCAi aW5pdGlhbGl6aW5nIGxhdG1jdHhcbiIpOw0KPj4gICAgICAgICAgIH0NCj4+IEBAIC0yODAs NyArMjgyLDcgQEAgc3RhdGljIGludCBsYXRtX2RlY29kZV9mcmFtZShBVkNvZGVjQ29udGV4 dCAqYXZjdHgsIEFWRnJhbWUgKm91dCwNCj4+ICAgICAgICAgICB9IGVsc2Ugew0KPj4gICAg ICAgICAgICAgICBwdXNoX291dHB1dF9jb25maWd1cmF0aW9uKCZsYXRtY3R4LT5hYWNfY3R4 KTsNCj4+ICAgICAgICAgICAgICAgaWYgKChlcnIgPSBkZWNvZGVfYXVkaW9fc3BlY2lmaWNf Y29uZmlnKA0KPj4gLSAgICAgICAgICAgICAgICAgICAgJmxhdG1jdHgtPmFhY19jdHgsIGF2 Y3R4LCAmbGF0bWN0eC0+YWFjX2N0eC5vY1sxXS5tNGFjLA0KPj4gKyAgICAgICAgICAgICAg ICAgICAgJmxhdG1jdHgtPmFhY19jdHgsIGF2Y3R4LCAmbGF0bWN0eC0+YWFjX2N0eC5vY1sx XSwNCj4+ICAgICAgICAgICAgICAgICAgICAgICBhdmN0eC0+ZXh0cmFkYXRhLCBhdmN0eC0+ ZXh0cmFkYXRhX3NpemUqOExMLCAxKSkgPCAwKSB7DQo+PiAgICAgICAgICAgICAgICAgICBw b3Bfb3V0cHV0X2NvbmZpZ3VyYXRpb24oJmxhdG1jdHgtPmFhY19jdHgpOw0KPj4gICAgICAg ICAgICAgICAgICAgcmV0dXJuIGVycjsNCj4+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2Fh Yy9hYWNkZWNfbHBkLmMgYi9saWJhdmNvZGVjL2FhYy9hYWNkZWNfbHBkLmMNCj4+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0DQo+PiBpbmRleCAwMDAwMDAwMDAwLi5iZTM5ZTJjMTc1DQo+PiAt LS0gL2Rldi9udWxsDQo+PiArKysgYi9saWJhdmNvZGVjL2FhYy9hYWNkZWNfbHBkLmMNCj4+ IEBAIC0wLDAgKzEsMTkyIEBADQo+PiArLyoNCj4+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMjQg THlubmUgPGRldkBseW5uZS5lZT4NCj4+ICsgKg0KPj4gKyAqIFRoaXMgZmlsZSBpcyBwYXJ0 IG9mIEZGbXBlZy4NCj4+ICsgKg0KPj4gKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3INCj4+ICsgKiBtb2RpZnkgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljDQo+PiArICogTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyDQo+PiArICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQo+PiArICoNCj4+ICsgKiBGRm1wZWcgaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCj4+ICsgKiBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZg0KPj4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VDQo+PiArICogTGVzc2VyIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCj4+ICsgKg0KPj4gKyAqIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs aWMNCj4+ICsgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRv IHRoZSBGcmVlIFNvZnR3YXJlDQo+PiArICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQ0KPj4g KyAqLw0KPj4gKw0KPj4gKyNpbmNsdWRlICJhYWNkZWNfbHBkLmgiDQo+PiArI2luY2x1ZGUg ImFhY2RlY191c2FjLmgiDQo+PiArDQo+PiArY29uc3QgdWludDhfdCBmZl9hYWNfbHBkX21v ZGVfdGFiWzMyXVs0XSA9IHsNCj4+ICsgICAgeyAwLCAwLCAwLCAwIH0sDQo+PiArICAgIHsg MSwgMCwgMCwgMCB9LA0KPj4gKyAgICB7IDAsIDEsIDAsIDAgfSwNCj4+ICsgICAgeyAxLCAx LCAwLCAwIH0sDQo+PiArICAgIHsgMCwgMCwgMSwgMCB9LA0KPj4gKyAgICB7IDEsIDAsIDEs IDAgfSwNCj4+ICsgICAgeyAwLCAxLCAxLCAwIH0sDQo+PiArICAgIHsgMSwgMSwgMSwgMCB9 LA0KPj4gKyAgICB7IDAsIDAsIDAsIDEgfSwNCj4+ICsgICAgeyAxLCAwLCAwLCAxIH0sDQo+ PiArICAgIHsgMCwgMSwgMCwgMSB9LA0KPj4gKyAgICB7IDEsIDEsIDAsIDEgfSwNCj4+ICsg ICAgeyAwLCAwLCAxLCAxIH0sDQo+PiArICAgIHsgMSwgMCwgMSwgMSB9LA0KPj4gKyAgICB7 IDAsIDEsIDEsIDEgfSwNCj4+ICsgICAgeyAxLCAxLCAxLCAxIH0sDQo+PiArICAgIHsgMiwg MiwgMCwgMCB9LA0KPj4gKyAgICB7IDIsIDIsIDEsIDAgfSwNCj4+ICsgICAgeyAyLCAyLCAw LCAxIH0sDQo+PiArICAgIHsgMiwgMiwgMSwgMSB9LA0KPj4gKyAgICB7IDAsIDAsIDIsIDIg fSwNCj4+ICsgICAgeyAxLCAwLCAyLCAyIH0sDQo+PiArICAgIHsgMCwgMSwgMiwgMiB9LA0K Pj4gKyAgICB7IDEsIDEsIDIsIDIgfSwNCj4+ICsgICAgeyAyLCAyLCAyLCAyIH0sDQo+PiAr ICAgIHsgMywgMywgMywgMyB9LA0KPj4gKyAgICAvKiBMYXJnZXIgdmFsdWVzIGFyZSByZXNl cnZlZCwgYnV0IHBlcm1pdCB0aGVtIGZvciByZXNpbGllbmNlICovDQo+PiArICAgIHsgMCwg MCwgMCwgMCB9LA0KPj4gKyAgICB7IDAsIDAsIDAsIDAgfSwNCj4+ICsgICAgeyAwLCAwLCAw LCAwIH0sDQo+PiArICAgIHsgMCwgMCwgMCwgMCB9LA0KPj4gKyAgICB7IDAsIDAsIDAsIDAg fSwNCj4+ICsgICAgeyAwLCAwLCAwLCAwIH0sDQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMg dm9pZCBwYXJzZV9xbihHZXRCaXRDb250ZXh0ICpnYiwgaW50ICpxbiwgaW50IG5rX21vZGUs IGludCBub19xbikNCj4+ICt7DQo+PiArICAgIGlmIChua19tb2RlID09IDEpIHsNCj4+ICsg ICAgICAgIGZvciAoaW50IGsgPSAwOyBrIDwgbm9fcW47IGsrKykgew0KPj4gKyAgICAgICAg ICAgIHFuW2tdID0gZmZfYWFjX2dldF92bGNsYmYoZ2IpOw0KPj4gKyAgICAgICAgICAgIGlm IChxbltrXSkNCj4+ICsgICAgICAgICAgICAgICAgcW5ba10rKzsNCj4+ICsgICAgICAgIH0N Cj4+ICsgICAgICAgIHJldHVybjsNCj4+ICsgICAgfQ0KPj4gKw0KPj4gKyAgICBmb3IgKGlu dCBrID0gMDsgayA8IG5vX3FuOyBrKyspDQo+PiArICAgICAgICBxbltrXSA9IGdldF9iaXRz KGdiLCAyKSArIDI7DQo+PiArDQo+PiArICAgIGlmIChua19tb2RlID09IDIpIHsNCj4+ICsg ICAgICAgIGZvciAoaW50IGsgPSAwOyBrIDwgbm9fcW47IGsrKykgew0KPj4gKyAgICAgICAg ICAgIGlmIChxbltrXSA+IDQpIHsNCj4+ICsgICAgICAgICAgICAgICAgcW5ba10gPSBmZl9h YWNfZ2V0X3ZsY2xiZihnYik7DQo+PiArICAgICAgICAgICAgICAgIGlmIChxbltrXSkNCj4+ ICsgICAgICAgICAgICAgICAgICAgIHFuW2tdICs9IDQ7DQo+PiArICAgICAgICAgICAgfQ0K Pj4gKyAgICAgICAgfQ0KPj4gKyAgICAgICAgcmV0dXJuOw0KPj4gKyAgICB9DQo+PiArDQo+ PiArICAgIGZvciAoaW50IGsgPSAwOyBrIDwgbm9fcW47IGsrKykgew0KPj4gKyAgICAgICAg aWYgKHFuW2tdID4gNCkgew0KPj4gKyAgICAgICAgICAgIGludCBxbl9leHQgPSBmZl9hYWNf Z2V0X3ZsY2xiZihnYik7DQo+PiArICAgICAgICAgICAgc3dpdGNoIChxbl9leHQpIHsNCj4+ ICsgICAgICAgICAgICBjYXNlIDA6IHFuW2tdID0gNTsgYnJlYWs7DQo+PiArICAgICAgICAg ICAgY2FzZSAxOiBxbltrXSA9IDY7IGJyZWFrOw0KPj4gKyAgICAgICAgICAgIGNhc2UgMjog cW5ba10gPSAwOyBicmVhazsNCj4+ICsgICAgICAgICAgICBkZWZhdWx0OiBxbltrXSA9IHFu X2V4dCArIDQ7IGJyZWFrOw0KPj4gKyAgICAgICAgICAgIH0NCj4+ICsgICAgICAgIH0NCj4+ ICsgICAgfQ0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IHBhcnNlX2NvZGVib29rX2lk eChHZXRCaXRDb250ZXh0ICpnYiwgdWludDMyX3QgKmt2LA0KPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCBua19tb2RlLCBpbnQgbm9fcW4pDQo+PiArew0KPj4gKyAg ICBpbnQgbiwgbms7DQo+PiArDQo+PiArICAgIGludCBxblsyXTsNCj4+ICsgICAgcGFyc2Vf cW4oZ2IsIHFuLCBua19tb2RlLCBub19xbik7DQo+PiArDQo+PiArICAgIGZvciAoaW50IGsg PSAwOyBrIDwgbm9fcW47IGsrKykgew0KPj4gKyAgICAgICAgaWYgKHFuW2tdID4gNCkgew0K Pj4gKyAgICAgICAgICAgIG5rID0gKHFuW2tdIC0gMykgLyAyOw0KPj4gKyAgICAgICAgICAg IG4gPSBxbltrXSAtIG5rKjI7DQo+PiArICAgICAgICB9IGVsc2Ugew0KPj4gKyAgICAgICAg ICAgIG5rID0gMDsNCj4+ICsgICAgICAgICAgICBuID0gcW5ba107DQo+PiArICAgICAgICB9 DQo+PiArICAgIH0NCj4+ICsNCj4+ICsgICAgaW50IGlkeCA9IGdldF9iaXRzKGdiLCA0Km4p Ow0KPj4gKw0KPj4gKyAgICBpZiAobmsgPiAwKQ0KPj4gKyAgICAgICAgZm9yIChpbnQgaSA9 IDA7IGkgPCA4OyBpKyspDQo+PiArICAgICAgICAgICAga3ZbaV0gPSBnZXRfYml0cyhnYiwg bmspOw0KPj4gKw0KPj4gKyAgICByZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiAraW50IGZm X2FhY19wYXJzZV9mYWNfZGF0YShBQUNVc2FjRWxlbURhdGEgKmNlLCBHZXRCaXRDb250ZXh0 ICpnYiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB1c2VfZ2FpbiwgaW50 IGxlbikNCj4+ICt7DQo+PiArICAgIGludCByZXQ7DQo+PiArICAgIGlmICh1c2VfZ2FpbikN Cj4+ICsgICAgICAgIGNlLT5mYWMuZ2FpbiA9IGdldF9iaXRzKGdiLCA3KTsNCj4+ICsNCj4+ ICsgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW4vODsgaSsrKSB7DQo+PiArICAgICAgICBy ZXQgPSBwYXJzZV9jb2RlYm9va19pZHgoZ2IsIGNlLT5mYWMua3ZbaV0sIDEsIDEpOw0KPj4g KyAgICAgICAgaWYgKHJldCA8IDApDQo+PiArICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4+ ICsgICAgfQ0KPj4gKw0KPj4gKyAgICByZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiAraW50 IGZmX2FhY19sZHBfcGFyc2VfY2hhbm5lbF9zdHJlYW0oQUFDRGVjQ29udGV4dCAqYWMsIEFB Q1VTQUNDb25maWcgKnVzYWMsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQUFDVXNhY0VsZW1EYXRhICpjZSwgR2V0Qml0Q29udGV4dCAqZ2IpDQo+PiArew0K Pj4gKyAgICBjZS0+bGRwLmFjZWxwX2NvcmVfbW9kZSA9IGdldF9iaXRzKGdiLCAzKTsNCj4+ ICsgICAgY2UtPmxkcC5scGRfbW9kZSA9IGdldF9iaXRzKGdiLCA1KTsNCj4+ICsNCj4+ICsg ICAgY2UtPmxkcC5icGZfY29udHJvbF9pbmZvID0gZ2V0X2JpdHMxKGdiKTsNCj4+ICsgICAg Y2UtPmxkcC5jb3JlX21vZGVfbGFzdCA9IGdldF9iaXRzMShnYik7DQo+PiArICAgIGNlLT5s ZHAuZmFjX2RhdGFfcHJlc2VudCA9IGdldF9iaXRzMShnYik7DQo+PiArDQo+PiArICAgIGNv bnN0IHVpbnQ4X3QgKm1vZCA9IGZmX2FhY19scGRfbW9kZV90YWJbY2UtPmxkcC5scGRfbW9k ZV07DQo+PiArDQo+PiArICAgIGludCBmaXJzdF9sZHBfZmxhZyA9ICFjZS0+bGRwLmNvcmVf bW9kZV9sYXN0Ow0KPj4gKyAgICBpbnQgZmlyc3RfdGN4X2ZsYWcgPSAxOw0KPj4gKyAgICBp ZiAoZmlyc3RfbGRwX2ZsYWcpDQo+PiArICAgICAgICBjZS0+bGRwLmxhc3RfbHBkX21vZGUg PSAtMTsgLyogbGFzdF9sZHBfbW9kZSBpcyBhICoqU1RBVEVGVUwqKiB2YWx1ZSAqLw0KPj4g Kw0KPj4gKyAgICBpbnQgayA9IDA7DQo+PiArICAgIHdoaWxlIChrIDwgMCkgew0KPj4gKyAg ICAgICAgaWYgKCFrKSB7DQo+PiArICAgICAgICAgICAgaWYgKGNlLT5sZHAuY29yZV9tb2Rl X2xhc3QgJiYgY2UtPmxkcC5mYWNfZGF0YV9wcmVzZW50KQ0KPj4gKyAgICAgICAgICAgICAg ICBmZl9hYWNfcGFyc2VfZmFjX2RhdGEoY2UsIGdiLCAwLCB1c2FjLT5jb3JlX2ZyYW1lX2xl bi84KTsNCj4+ICsgICAgICAgIH0gZWxzZSB7DQo+PiArICAgICAgICAgICAgaWYgKCFjZS0+ bGRwLmxhc3RfbHBkX21vZGUgJiYgbW9kW2tdID4gMCB8fA0KPj4gKyAgICAgICAgICAgICAg ICBjZS0+bGRwLmxhc3RfbHBkX21vZGUgJiYgIW1vZFtrXSkNCj4+ICsgICAgICAgICAgICAg ICAgZmZfYWFjX3BhcnNlX2ZhY19kYXRhKGNlLCBnYiwgMCwgdXNhYy0+Y29yZV9mcmFtZV9s ZW4vOCk7DQo+PiArICAgICAgICB9DQo+PiArICAgICAgICBpZiAoIW1vZFtrXSkgew0KPj4g Ky8vICAgICAgICAgICAgcGFyc2VfYWNlbHBfY29kaW5nKCk7DQo+PiArICAgICAgICAgICAg Y2UtPmxkcC5sYXN0X2xwZF9tb2RlID0gMDsNCj4+ICsgICAgICAgICAgICBrKys7DQo+PiAr ICAgICAgICB9IGVsc2Ugew0KPj4gKy8vICAgICAgICAgICAgcGFyc2VfdGN4X2NvZGluZygp Ow0KPj4gKyAgICAgICAgICAgIGNlLT5sZHAubGFzdF9scGRfbW9kZSA9IG1vZFtrXTsNCj4+ ICsgICAgICAgICAgICBrICs9ICgxIDw8IChtb2Rba10gLSAxKSk7DQo+PiArICAgICAgICAg ICAgZmlyc3RfdGN4X2ZsYWcgPSAwOw0KPj4gKyAgICAgICAgfQ0KPj4gKyAgICB9DQo+PiAr DQo+PiArLy8gICAgcGFyc2VfbHBjX2RhdGEoZmlyc3RfbHBkX2ZsYWcpOw0KPj4gKw0KPj4g KyAgICBpZiAoIWNlLT5sZHAuY29yZV9tb2RlX2xhc3QgJiYgY2UtPmxkcC5mYWNfZGF0YV9w cmVzZW50KSB7DQo+PiArICAgICAgICB1aW50MTZfdCBsZW5fOCA9IHVzYWMtPmNvcmVfZnJh bWVfbGVuIC8gODsNCj4+ICsgICAgICAgIHVpbnQxNl90IGxlbl8xNiA9IHVzYWMtPmNvcmVf ZnJhbWVfbGVuIC8gMTY7DQo+PiArICAgICAgICB1aW50MTZfdCBmYWNfbGVuID0gZ2V0X2Jp dHMxKGdiKSAvKiBzaG9ydF9mYWNfZmxhZyAqLyA/IGxlbl84IDogbGVuXzE2Ow0KPj4gKyAg ICAgICAgaW50IHJldCA9IGZmX2FhY19wYXJzZV9mYWNfZGF0YShjZSwgZ2IsIDEsIGZhY19s ZW4pOw0KPj4gKyAgICAgICAgaWYgKHJldCA8IDApDQo+PiArICAgICAgICAgICAgcmV0dXJu IHJldDsNCj4+ICsgICAgfQ0KPj4gKw0KPj4gKyAgICByZXR1cm4gMDsNCj4+ICt9DQo+PiBk aWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9hYWMvYWFjZGVjX2xwZC5oIGIvbGliYXZjb2RlYy9h YWMvYWFjZGVjX2xwZC5oDQo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4gaW5kZXggMDAw MDAwMDAwMC4uOTI0ZmY3NWU1Mg0KPj4gLS0tIC9kZXYvbnVsbA0KPj4gKysrIGIvbGliYXZj b2RlYy9hYWMvYWFjZGVjX2xwZC5oDQo+PiBAQCAtMCwwICsxLDMzIEBADQo+PiArLyoNCj4+ ICsgKiBDb3B5cmlnaHQgKGMpIDIwMjQgTHlubmUgPGRldkBseW5uZS5lZT4NCj4+ICsgKg0K Pj4gKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4NCj4+ICsgKg0KPj4gKyAqIEZG bXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IN Cj4+ICsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl bmVyYWwgUHVibGljDQo+PiArICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyDQo+PiArICogdmVyc2lvbiAyLjEgb2YgdGhl IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQo+PiAr ICoNCj4+ICsgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwNCj4+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KPj4gKyAqIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VDQo+ PiArICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4N Cj4+ICsgKg0KPj4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMNCj4+ICsgKiBMaWNlbnNlIGFsb25nIHdpdGgg RkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlDQo+PiArICogRm91 bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9u LCBNQSAwMjExMC0xMzAxIFVTQQ0KPj4gKyAqLw0KPj4gKw0KPj4gKyNpZm5kZWYgQVZDT0RF Q19BQUNfQUFDREVDX0xQRF9IDQo+PiArI2RlZmluZSBBVkNPREVDX0FBQ19BQUNERUNfTFBE X0gNCj4+ICsNCj4+ICsjaW5jbHVkZSAiYWFjZGVjLmgiDQo+PiArI2luY2x1ZGUgImxpYmF2 Y29kZWMvZ2V0X2JpdHMuaCINCj4+ICsNCj4+ICtpbnQgZmZfYWFjX3BhcnNlX2ZhY19kYXRh KEFBQ1VzYWNFbGVtRGF0YSAqY2UsIEdldEJpdENvbnRleHQgKmdiLA0KPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50IHVzZV9nYWluLCBpbnQgbGVuKTsNCj4+ICsNCj4+ICtp bnQgZmZfYWFjX2xkcF9wYXJzZV9jaGFubmVsX3N0cmVhbShBQUNEZWNDb250ZXh0ICphYywg QUFDVVNBQ0NvbmZpZyAqdXNhYywNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBBQUNVc2FjRWxlbURhdGEgKmNlLCBHZXRCaXRDb250ZXh0ICpnYik7DQo+PiAr DQo+PiArI2VuZGlmIC8qIEFWQ09ERUNfQUFDX0FBQ0RFQ19MUERfSCAqLw0KPj4gZGlmZiAt LWdpdCBhL2xpYmF2Y29kZWMvYWFjL2FhY2RlY191c2FjLmMgYi9saWJhdmNvZGVjL2FhYy9h YWNkZWNfdXNhYy5jDQo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4gaW5kZXggMDAwMDAw MDAwMC4uNGI0OGM0ZDZjYQ0KPj4gLS0tIC9kZXYvbnVsbA0KPj4gKysrIGIvbGliYXZjb2Rl Yy9hYWMvYWFjZGVjX3VzYWMuYw0KPj4gQEAgLTAsMCArMSwxMjMwIEBADQo+PiArLyoNCj4+ ICsgKiBDb3B5cmlnaHQgKGMpIDIwMjQgTHlubmUgPGRldkBseW5uZS5lZT4NCj4+ICsgKg0K Pj4gKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4NCj4+ICsgKg0KPj4gKyAqIEZG bXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IN Cj4+ICsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl bmVyYWwgUHVibGljDQo+PiArICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyDQo+PiArICogdmVyc2lvbiAyLjEgb2YgdGhl IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQo+PiAr ICoNCj4+ICsgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwNCj4+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KPj4gKyAqIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VDQo+ PiArICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4N Cj4+ICsgKg0KPj4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMNCj4+ICsgKiBMaWNlbnNlIGFsb25nIHdpdGgg RkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlDQo+PiArICogRm91 bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9u LCBNQSAwMjExMC0xMzAxIFVTQQ0KPj4gKyAqLw0KPj4gKw0KPj4gKyNpbmNsdWRlICJhYWNk ZWNfdXNhYy5oIg0KPj4gKyNpbmNsdWRlICJhYWNkZWNfdGFiLmgiDQo+PiArI2luY2x1ZGUg ImFhY2RlY19scGQuaCINCj4+ICsjaW5jbHVkZSAiYWFjZGVjX2FjLmgiDQo+PiArDQo+PiAr I2luY2x1ZGUgImxpYmF2Y29kZWMvb3B1c2RzcC5oIg0KPj4gKyNpbmNsdWRlICJsaWJhdmNv ZGVjL2FhY3RhYi5oIg0KPj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvbWVtLmgiDQo+PiArI2lu Y2x1ZGUgImxpYmF2Y29kZWMvbXBlZzRhdWRpby5oIg0KPj4gKw0KPj4gKy8qIE51bWJlciBv ZiBzY2FsZWZhY3RvciBiYW5kcyBwZXIgY29tcGxleCBwcmVkaWN0aW9uIGJhbmQsIGVxdWFs IHRvIDIuICovDQo+PiArI2RlZmluZSBTRkJfUEVSX1BSRURfQkFORCAyDQo+PiArDQo+PiAr c3RhdGljIGlubGluZSB1aW50MzJfdCBnZXRfZXNjYXBlZF92YWx1ZShHZXRCaXRDb250ZXh0 ICpnYiwgaW50IG5iMSwgaW50IG5iMiwgaW50IG5iMykNCj4+ICt7DQo+PiArICAgIHVpbnQz Ml90IHZhbCA9IGdldF9iaXRzKGdiLCBuYjEpOw0KPj4gKyAgICBpZiAodmFsIDwgKCgxIDw8 IG5iMSkgLSAxKSkNCj4+ICsgICAgICAgIHJldHVybiB2YWw7DQo+PiArDQo+PiArICAgIHZh bCArPSBnZXRfYml0cyhnYiwgbmIyKTsNCj4+ICsgICAgaWYgKHZhbCA9PSAoKDEgPDwgbmIy KSAtIDEpKQ0KPj4gKyAgICAgICAgdmFsICs9IGdldF9iaXRzKGdiLCBuYjMpOw0KPj4gKw0K Pj4gKyAgICByZXR1cm4gdmFsOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IGFhY191 c2FjX3NhbXBsZXJhdGVbXSA9IHsNCj4gDQo+IE1pc3NpbmcgY29uc3QNCj4gDQo+PiArICAg IDk2MDAwLCA4ODIwMCwgNjQwMDAsIDQ4MDAwLCA0NDEwMCwgMzIwMDAsIDI0MDAwLCAyMjA1 MCwNCj4+ICsgICAgMTYwMDAsIDEyMDAwLCAxMTAyNSwgODAwMCwgNzM1MCwgLTEsIC0xLCA1 NzYwMCwgNTEyMDAsDQo+PiArICAgIDQwMDAwLCAzODQwMCwgMzQxNTAsIDI4ODAwLCAyNTYw MCwgMjAwMDAsIDE5MjAwLCAxNzA3NSwgMTQ0MDAsIDEyODAwLCA5NjAwLCAtMSwgLTEsIC0x LCAtMSwNCj4+ICt9Ow0KPj4gKw0KPiANCj4+ICtzdGF0aWMgaW50IHBhcnNlX2V4dF9lbGUo QUFDRGVjQ29udGV4dCAqYWMsIEFBQ1VzYWNFbGVtQ29uZmlnICplLA0KPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICBHZXRCaXRDb250ZXh0ICpnYikNCj4+ICt7DQo+PiArICAgIGlm IChnZXRfYml0czEoZ2IpKSB7IC8qIHVzYWNFeHRFbGVtZW50UHJlc2VudCAqLw0KPj4gKyAg ICAgICAgdWludDMyX3QgbGVuOw0KPj4gKyAgICAgICAgaWYgKGdldF9iaXRzMShnYikpIHsg LyogdXNhY0V4dEVsZW1lbnRVc2VEZWZhdWx0TGVuZ3RoICovDQo+PiArICAgICAgICAgICAg bGVuID0gZS0+ZXh0LmRlZmF1bHRfbGVuOw0KPj4gKyAgICAgICAgfSBlbHNlIHsNCj4+ICsg ICAgICAgICAgICBsZW4gPSBnZXRfYml0cyhnYiwgOCk7IC8qIHVzYWNFeHRFbGVtZW50UGF5 bG9hZExlbmd0aCAqLw0KPj4gKyAgICAgICAgICAgIGlmIChsZW4gPT0gMjU1KQ0KPj4gKyAg ICAgICAgICAgICAgICBsZW4gKz0gZ2V0X2JpdHMoZ2IsIDE2KSAtIDI7DQo+PiArICAgICAg ICB9DQo+PiArDQo+PiArICAgICAgICBpZiAobGVuKSB7DQo+PiArICAgICAgICAgICAgdWlu dDhfdCAqdG1wOw0KPj4gKyAgICAgICAgICAgIHVpbnQ4X3QgcGxfZnJhZ19zdGFydCA9IDE7 DQo+PiArICAgICAgICAgICAgdWludDhfdCBwbF9mcmFnX2VuZCA9IDE7DQo+PiArICAgICAg ICAgICAgaWYgKGUtPmV4dC5wYXlsb2FkX2ZyYWcpIHsNCj4+ICsgICAgICAgICAgICAgICAg cGxfZnJhZ19zdGFydCA9IGdldF9iaXRzMShnYik7IC8qIHVzYWNFeHRFbGVtZW50U3RhcnQg Ki8NCj4+ICsgICAgICAgICAgICAgICAgcGxfZnJhZ19lbmQgPSBnZXRfYml0czEoZ2IpOyAv KiB1c2FjRXh0RWxlbWVudFN0b3AgKi8NCj4+ICsgICAgICAgICAgICB9DQo+PiArDQo+PiAr ICAgICAgICAgICAgaWYgKHBsX2ZyYWdfc3RhcnQpDQo+PiArICAgICAgICAgICAgICAgIGUt PmV4dC5wbF9kYXRhX29mZnNldCA9IDA7DQo+PiArDQo+PiArICAgICAgICAgICAgdG1wID0g YXZfcmVhbGxvYyhlLT5leHQucGxfZGF0YSwgZS0+ZXh0LnBsX2RhdGFfb2Zmc2V0ICsgbGVu KTsNCj4+ICsgICAgICAgICAgICBpZiAoIXRtcCkgew0KPj4gKyAgICAgICAgICAgICAgICBm cmVlKGUtPmV4dC5wbF9kYXRhKTsNCj4gDQo+IFdyb25nIGRlYWxsb2NhdG9yLg0KPiANCj4+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsNCj4+ICsgICAgICAg ICAgICB9DQo+PiArICAgICAgICAgICAgZS0+ZXh0LnBsX2RhdGEgPSB0bXA7DQo+PiArDQo+ PiArICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47IGkrKykNCj4+ICsgICAg ICAgICAgICAgICAgZS0+ZXh0LnBsX2RhdGFbZS0+ZXh0LnBsX2RhdGFfb2Zmc2V0ICsgaV0g PSBnZXRfYml0cyhnYiwgOCk7DQo+PiArDQo+PiArICAgICAgICAgICAgaWYgKHBsX2ZyYWdf ZW5kKSB7DQo+PiArICAgICAgICAgICAgICAgIGludCByZXQ7DQo+PiArICAgICAgICAgICAg ICAgIGUtPmV4dC5wbF9kYXRhX29mZnNldCA9IDA7DQo+PiArICAgICAgICAgICAgICAgIHN3 aXRjaCAoZS0+ZXh0LnR5cGUpIHsNCj4+ICsgICAgICAgICAgICAgICAgY2FzZSBJRF9FWFRf RUxFX0ZJTEw6DQo+PiArICAgICAgICAgICAgICAgICAgICBhdl9mcmVlcCgmZS0+ZXh0LnBs X2RhdGEpOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+PiArICAgICAgICAg ICAgICAgIGNhc2UgSURfRVhUX0VMRV9BVURJT1BSRVJPTEw6DQo+PiArICAgICAgICAgICAg ICAgICAgICByZXQgPSBwYXJzZV9hdWRpb19wcmVyb2xsKGFjLCBlLT5leHQucGxfZGF0YSwN Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS0+ ZXh0LnBsX2RhdGFfb2Zmc2V0KTsNCj4+ICsgICAgICAgICAgICAgICAgICAgIGlmIChyZXQg PCAwKSB7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgYXZfZnJlZXAoJmUtPmV4dC5w bF9kYXRhKTsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPj4g KyAgICAgICAgICAgICAgICAgICAgfQ0KPj4gKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7 DQo+PiArICAgICAgICAgICAgICAgIGRlZmF1bHQ6DQo+PiArICAgICAgICAgICAgICAgICAg ICBhdl9mcmVlcCgmZS0+ZXh0LnBsX2RhdGEpOw0KPiANCj4gUG9pbnRsZXNzIGlmIHlvdSBh Ym9ydCBpbiB0aGUgbmV4dCBsaW5lDQo+IA0KPj4gKyAgICAgICAgICAgICAgICAgICAgLyog VGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuICovDQo+PiArICAgICAgICAgICAgICAgICAgICBh dl9hc3NlcnQwKDApOw0KPj4gKyAgICAgICAgICAgICAgICB9DQo+PiArICAgICAgICAgICAg fQ0KPj4gKyAgICAgICAgfQ0KPj4gKyAgICB9DQo+PiArDQo+PiArICAgIHJldHVybiAwOw0K Pj4gK30NCj4+ICsNCj4gDQo+IA0KPj4gKyNpbmNsdWRlICJsaWJhdmNvZGVjL29wdXNkc3Au aCINCj4+ICsNCj4+ICsjaWZuZGVmIEFWQ09ERUNfQUFDX0FBQ0RFQ19VU0FDX0gNCj4+ICsj ZGVmaW5lIEFWQ09ERUNfQUFDX0FBQ0RFQ19VU0FDX0gNCj4+ICsNCj4+ICsjaW5jbHVkZSAi YWFjZGVjLmgiDQo+PiArDQo+PiArI2luY2x1ZGUgImxpYmF2Y29kZWMvZ2V0X2JpdHMuaCIN Cj4+ICsNCj4+ICtzdGF0aWMgaW5saW5lIHVpbnQ4X3QgZmZfYWFjX2dldF92bGNsYmYoR2V0 Qml0Q29udGV4dCAqZ2IpDQo+PiArew0KPj4gKyAgICB1aW50OF90IHJldCA9IDA7DQo+PiAr ICAgIHdoaWxlIChnZXRfYml0czEoZ2IpICYmIHJldCA8PSAzNikNCj4+ICsgICAgICAgIHJl dCsrOw0KPj4gKyAgICByZXR1cm4gcmV0Ow0KPj4gK30NCj4gDQo+IExvb2sgYXQgdW5hcnku aA0KDQpUaGF0J3MgY29udmVuaWVudCwgdGhhbmtzLg0KDQpJJ3ZlIHN5bmNlZCBteSBjaGFu Z2VzIG9uIG15IHJlcG8gaW4NCmh0dHBzOi8vZ2l0aHViLmNvbS9jeWFucmVnL0ZGbXBlZy90 cmVlL3hoZQ0KVGhvdWdoIEknbGwgbGlrZWx5IHVwbG9hZCB0aGUgcGF0Y2hzZXQgb24gdGhl IE1MIGFnYWluIHRvbW9ycm93IHdpdGggDQpzb21lIGZpeGVzIGZvciBwcmVyb2xsIHBhcnNp bmcgYW5kIGNvbXBsZXggc3ludGguDQo= --------------gPcqcVvSTM0O0aRT9vN52mRw Content-Type: application/pgp-keys; name="OpenPGP_0xA2FEA5F03F034464.asc" Content-Disposition: attachment; filename="OpenPGP_0xA2FEA5F03F034464.asc" Content-Description: OpenPGP public key Content-Transfer-Encoding: quoted-printable -----BEGIN PGP PUBLIC KEY BLOCK----- xjMEXnFG3BYJKwYBBAHaRw8BAQdA3FyJpqEdfQj4GA7OUWVrNheT9dUsIs+yUx6H ljr9mYvNFEx5bm5lIDxkZXZAbHlubmUuZWU+wpAEExYIADgWIQT+UBOcaAVyyv1S H42i/qXwPwNEZAUCXnFG3AIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRCi /qXwPwNEZOTWAQCSNEA+kZLINZ2dsR5Qg988c0HXpOXThZEjg+h1TL7KGgEA3Gff 0c28efI02S6iMxazrpdWGHqHk7JN7pCjnt397wzOOARecUbcEgorBgEEAZdVAQUB AQdAjDdFQ5H+AJ9vwXrOb7val460g45EsheIaL5S7/zSaX8DAQgHwngEGBYIACAW IQT+UBOcaAVyyv1SH42i/qXwPwNEZAUCXnFG3AIbDAAKCRCi/qXwPwNEZKaxAQCH LV4gAk/B9JvRG27MYm22X3+5QRCLBtEILP29aDh+MQD/V8JFHATDXRY30LsmqR3s PQ0BJ1UFVZA5BUoIJPJZWwg=3D =3DylY5 -----END PGP PUBLIC KEY BLOCK----- --------------gPcqcVvSTM0O0aRT9vN52mRw-- --------------ias555PaCMTJXAwjACplcpYa-- --------------YIhs74aVtYwpnpgWfRHB7Pjv Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature.asc" -----BEGIN PGP SIGNATURE----- wnsEABYIACMWIQT+UBOcaAVyyv1SH42i/qXwPwNEZAUCZkYfiQUDAAAAAAAKCRCi/qXwPwNEZIBN AQCulj/tCtNZ+hBOFVBvc6uWbjTkPcwUJ1Ied7p97sOuYAD/R39De+Atv/N74UVHgcQngwE31XND i2SxcGZrPQLIgA8= =BLR7 -----END PGP SIGNATURE----- --------------YIhs74aVtYwpnpgWfRHB7Pjv-- --===============2303184238474074029== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". --===============2303184238474074029==--