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 1C2CD49918 for ; Sun, 23 Jun 2024 07:12:21 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CAE8668D4C2; Sun, 23 Jun 2024 10:12:17 +0300 (EEST) Received: from vidala.lynne.ee (vidala.pars.ee [116.203.72.101]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id CF91668D3C6 for ; Sun, 23 Jun 2024 10:12:10 +0300 (EEST) Message-ID: <59a0f598-fa1a-4523-a3bd-66cb8fac544a@lynne.ee> Date: Sun, 23 Jun 2024 09:11:58 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Beta To: ffmpeg-devel@ffmpeg.org References: <20240616085454.2560973-1-dev@lynne.ee> <20240616085454.2560973-6-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 6/6] aacdec_usac, aacsbr: implement SBR support for USAC 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="===============0068037348576493549==" 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) --===============0068037348576493549== Content-Language: en-US Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------M5Q4XpGdCazkWEaegplyPEeX" This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------M5Q4XpGdCazkWEaegplyPEeX Content-Type: multipart/mixed; boundary="------------olrk8RI2xjSMWDIoNPYSSQyd"; protected-headers="v1" From: Lynne To: ffmpeg-devel@ffmpeg.org Message-ID: <59a0f598-fa1a-4523-a3bd-66cb8fac544a@lynne.ee> Subject: Re: [PATCH 6/6] aacdec_usac, aacsbr: implement SBR support for USAC References: <20240616085454.2560973-1-dev@lynne.ee> <20240616085454.2560973-6-dev@lynne.ee> In-Reply-To: --------------olrk8RI2xjSMWDIoNPYSSQyd Content-Type: multipart/mixed; boundary="------------x0b43nGFp0f3TwjoGGgUOf0U" --------------x0b43nGFp0f3TwjoGGgUOf0U Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 T24gMjAvMDYvMjAyNCAwNDoxMiwgTHlubmUgd3JvdGU6DQo+IE9uIDE2LzA2LzIwMjQgMTA6 NTQsIEx5bm5lIHdyb3RlOg0KPj4gQ3VycmVudGx5LCBubyBlU0JSIGZlYXR1cmVzIGFyZSBz dXBwb3J0ZWQuDQo+PiBUaGFua2Z1bGx5LCBubyBlbmNvZGVycyBleGlzdCBmb3IgaXQgeWV0 Lg0KPj4gLS0tDQo+PiDCoCBsaWJhdmNvZGVjL2FhYy9hYWNkZWNfdXNhYy5jIHwgMTE5ICsr KysrKysrKysrKysrKy0tLQ0KPj4gwqAgbGliYXZjb2RlYy9hYWNzYnIuaMKgwqDCoMKgwqDC oMKgwqDCoCB8wqAgMTEgKysNCj4+IMKgIGxpYmF2Y29kZWMvYWFjc2JyX3RlbXBsYXRlLmMg fCAyMzIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0NCj4+IMKgIGxpYmF2 Y29kZWMvc2JyLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDMyICsrKy0tDQo+PiDC oCA0IGZpbGVzIGNoYW5nZWQsIDM1MSBpbnNlcnRpb25zKCspLCA0MyBkZWxldGlvbnMoLSkN Cj4+DQo+PiBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9hYWMvYWFjZGVjX3VzYWMuYyBiL2xp YmF2Y29kZWMvYWFjL2FhY2RlY191c2FjLmMNCj4+IGluZGV4IGU1NTA0MTE3ZDAuLjEzMmZm ZWU5YzIgMTAwNjQ0DQo+PiAtLS0gYS9saWJhdmNvZGVjL2FhYy9hYWNkZWNfdXNhYy5jDQo+ PiArKysgYi9saWJhdmNvZGVjL2FhYy9hYWNkZWNfdXNhYy5jDQo+PiBAQCAtMjMsNiArMjMs OCBAQA0KPj4gwqAgI2luY2x1ZGUgImFhY2RlY19scGQuaCINCj4+IMKgICNpbmNsdWRlICJh YWNkZWNfYWMuaCINCj4+ICsjaW5jbHVkZSAibGliYXZjb2RlYy9hYWNzYnIuaCINCj4+ICsN Cj4+IMKgICNpbmNsdWRlICJsaWJhdmNvZGVjL2FhY3RhYi5oIg0KPj4gwqAgI2luY2x1ZGUg ImxpYmF2dXRpbC9tZW0uaCINCj4+IMKgICNpbmNsdWRlICJsaWJhdmNvZGVjL21wZWc0YXVk aW8uaCINCj4+IEBAIC0xNDUsNyArMTQ3LDggQEAgc3RhdGljIGludCBkZWNvZGVfbG91ZG5l c3Nfc2V0KEFBQ0RlY0NvbnRleHQgKmFjLCANCj4+IEFBQ1VTQUNDb25maWcgKnVzYWMsDQo+ PiDCoMKgwqDCoMKgIHJldHVybiAwOw0KPj4gwqAgfQ0KPj4gLXN0YXRpYyB2b2lkIGRlY29k ZV91c2FjX3Nicl9kYXRhKEFBQ1VzYWNFbGVtQ29uZmlnICplLCBHZXRCaXRDb250ZXh0IA0K Pj4gKmdiKQ0KPj4gK3N0YXRpYyBpbnQgZGVjb2RlX3VzYWNfc2JyX2RhdGEoQUFDRGVjQ29u dGV4dCAqYWMsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQUFDVXNhY0VsZW1Db25maWcgKmUsIEdldEJpdENv bnRleHQgKmdiKQ0KPj4gwqAgew0KPj4gwqDCoMKgwqDCoCB1aW50OF90IGhlYWRlcl9leHRy YTE7DQo+PiDCoMKgwqDCoMKgIHVpbnQ4X3QgaGVhZGVyX2V4dHJhMjsNCj4+IEBAIC0xNTMs NiArMTU2LDEwIEBAIHN0YXRpYyB2b2lkIA0KPj4gZGVjb2RlX3VzYWNfc2JyX2RhdGEoQUFD VXNhY0VsZW1Db25maWcgKmUsIEdldEJpdENvbnRleHQgKmdiKQ0KPj4gwqDCoMKgwqDCoCBl LT5zYnIuaGFybW9uaWNfc2JyID0gZ2V0X2JpdHMxKGdiKTsgLyogaGFybW9uaWNTQlIgKi8N Cj4+IMKgwqDCoMKgwqAgZS0+c2JyLmJzX2ludGVydGVzID0gZ2V0X2JpdHMxKGdiKTsgLyog YnNfaW50ZXJUZXMgKi8NCj4+IMKgwqDCoMKgwqAgZS0+c2JyLmJzX3B2YyA9IGdldF9iaXRz MShnYik7IC8qIGJzX3B2YyAqLw0KPj4gK8KgwqDCoCBpZiAoZS0+c2JyLmhhcm1vbmljX3Ni ciB8fCBlLT5zYnIuYnNfaW50ZXJ0ZXMgfHwgZS0+c2JyLmJzX3B2Yykgew0KPj4gK8KgwqDC oMKgwqDCoMKgIGF2cHJpdl9yZXBvcnRfbWlzc2luZ19mZWF0dXJlKGFjLT5hdmN0eCwgIkFB QyBVU0FDIGVTQlIiKTsNCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gQVZFUlJPUl9QQVRD SFdFTENPTUU7DQo+PiArwqDCoMKgIH0NCj4+IMKgwqDCoMKgwqAgZS0+c2JyLmRmbHQuc3Rh cnRfZnJlcSA9IGdldF9iaXRzKGdiLCA0KTsgLyogZGZsdF9zdGFydF9mcmVxICovDQo+PiDC oMKgwqDCoMKgIGUtPnNici5kZmx0LnN0b3BfZnJlcSA9IGdldF9iaXRzKGdiLCA0KTsgLyog ZGZsdF9zdG9wX2ZyZXEgKi8NCj4+IEBAIC0xNzksNiArMTg2LDggQEAgc3RhdGljIHZvaWQg ZGVjb2RlX3VzYWNfc2JyX2RhdGEoQUFDVXNhY0VsZW1Db25maWcgDQo+PiAqZSwgR2V0Qml0 Q29udGV4dCAqZ2IpDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZS0+c2JyLmRmbHQuaW50ZXJw b2xfZnJlcSA9IGdldF9iaXRzMShnYik7IC8qIA0KPj4gZGZsdF9pbnRlcnBvbF9mcmVxICov DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZS0+c2JyLmRmbHQuc21vb3RoaW5nX21vZGUgPSBn ZXRfYml0czEoZ2IpOyAvKiANCj4+IGRmbHRfc21vb3RoaW5nX21vZGUgKi8NCj4+IMKgwqDC oMKgwqAgfQ0KPj4gKw0KPj4gK8KgwqDCoCByZXR1cm4gMDsNCj4+IMKgIH0NCj4+IMKgIHN0 YXRpYyB2b2lkIGRlY29kZV91c2FjX2VsZW1lbnRfY29yZShBQUNVc2FjRWxlbUNvbmZpZyAq ZSwNCj4+IEBAIC0xOTAsMTMgKzE5OSwxNyBAQCBzdGF0aWMgdm9pZCANCj4+IGRlY29kZV91 c2FjX2VsZW1lbnRfY29yZShBQUNVc2FjRWxlbUNvbmZpZyAqZSwNCj4+IMKgwqDCoMKgwqAg ZS0+c2JyLnJhdGlvID0gc2JyX3JhdGlvOw0KPj4gwqAgfQ0KPj4gLXN0YXRpYyB2b2lkIGRl Y29kZV91c2FjX2VsZW1lbnRfcGFpcihBQUNVc2FjRWxlbUNvbmZpZyAqZSwgDQo+PiBHZXRC aXRDb250ZXh0ICpnYikNCj4+ICtzdGF0aWMgaW50IGRlY29kZV91c2FjX2VsZW1lbnRfcGFp cihBQUNEZWNDb250ZXh0ICphYywNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFBQ1VzYWNFbGVt Q29uZmlnICplLCANCj4+IEdldEJpdENvbnRleHQgKmdiKQ0KPj4gwqAgew0KPj4gwqDCoMKg wqDCoCBlLT5zdGVyZW9fY29uZmlnX2luZGV4ID0gMDsNCj4+IMKgwqDCoMKgwqAgaWYgKGUt PnNici5yYXRpbykgew0KPj4gLcKgwqDCoMKgwqDCoMKgIGRlY29kZV91c2FjX3Nicl9kYXRh KGUsIGdiKTsNCj4+ICvCoMKgwqDCoMKgwqDCoCBpbnQgcmV0ID0gZGVjb2RlX3VzYWNfc2Jy X2RhdGEoYWMsIGUsIGdiKTsNCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAocmV0IDwgMCkNCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7DQo+PiDCoMKgwqDCoMKgwqDC oMKgwqAgZS0+c3RlcmVvX2NvbmZpZ19pbmRleCA9IGdldF9iaXRzKGdiLCAyKTsNCj4+IMKg wqDCoMKgwqAgfQ0KPj4gKw0KPj4gwqDCoMKgwqDCoCBpZiAoZS0+c3RlcmVvX2NvbmZpZ19p bmRleCkgew0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGUtPm1wcy5mcmVxX3JlcyA9IGdldF9i aXRzKGdiLCAzKTsgLyogYnNGcmVxUmVzICovDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZS0+ bXBzLmZpeGVkX2dhaW4gPSBnZXRfYml0cyhnYiwgMyk7IC8qIGJzRml4ZWRHYWluRE1YICov DQo+PiBAQCAtMjE2LDYgKzIyOSw4IEBAIHN0YXRpYyB2b2lkIA0KPj4gZGVjb2RlX3VzYWNf ZWxlbWVudF9wYWlyKEFBQ1VzYWNFbGVtQ29uZmlnICplLCBHZXRCaXRDb250ZXh0ICpnYikN Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoZS0+bXBzLnRlbXBfc2hhcGVfY29uZmlnID09 IDIpDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlLT5tcHMuZW52X3F1YW50X21v ZGUgPSBnZXRfYml0czEoZ2IpOyAvKiBic0VudlF1YW50TW9kZSAqLw0KPj4gwqDCoMKgwqDC oCB9DQo+PiArDQo+PiArwqDCoMKgIHJldHVybiAwOw0KPj4gwqAgfQ0KPj4gwqAgc3RhdGlj IGludCBkZWNvZGVfdXNhY19leHRlbnNpb24oQUFDRGVjQ29udGV4dCAqYWMsIA0KPj4gQUFD VXNhY0VsZW1Db25maWcgKmUsDQo+PiBAQCAtMjk0LDYgKzMwOSw5IEBAIGludCBmZl9hYWNf dXNhY19yZXNldF9zdGF0ZShBQUNEZWNDb250ZXh0ICphYywgDQo+PiBPdXRwdXRDb25maWd1 cmF0aW9uICpvYykNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFBQ1VzYWNTdGVy ZW8gKnVzID0gJmNoZS0+dXM7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtZW1z ZXQodXMsIDAsIHNpemVvZigqdXMpKTsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlm IChlLT5zYnIucmF0aW8pDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZm X2FhY19zYnJfY29uZmlnX3VzYWMoYWMsIGNoZSwgZSk7DQo+PiArDQo+PiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBmb3IgKGludCBqID0gMDsgaiA8IGNoOyBqKyspIHsNCj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgU2luZ2xlQ2hhbm5lbEVsZW1lbnQg KnNjZSA9ICZjaGUtPmNoW2NoXTsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgQUFDVXNhY0VsZW1EYXRhICp1ZSA9ICZzY2UtPnVlOw0KPj4gQEAgLTMyMCw2ICsz MzgsNyBAQCBpbnQgZmZfYWFjX3VzYWNfY29uZmlnX2RlY29kZShBQUNEZWNDb250ZXh0ICph YywgDQo+PiBBVkNvZGVjQ29udGV4dCAqYXZjdHgsDQo+PiDCoMKgwqDCoMKgIHVpbnQ4X3Qg ZnJlcV9pZHg7DQo+PiDCoMKgwqDCoMKgIHVpbnQ4X3QgY2hhbm5lbF9jb25maWdfaWR4Ow0K Pj4gwqDCoMKgwqDCoCBpbnQgbmJfY2hhbm5lbHMgPSAwOw0KPj4gK8KgwqDCoCBpbnQgcmF0 aW9fbXVsdCwgcmF0aW9fZGVjOw0KPj4gwqDCoMKgwqDCoCBpbnQgc2FtcGxlcmF0ZTsNCj4+ IMKgwqDCoMKgwqAgaW50IHNicl9yYXRpbzsNCj4+IMKgwqDCoMKgwqAgTVBFRzRBdWRpb0Nv bmZpZyAqbTRhYyA9ICZvYy0+bTRhYzsNCj4+IEBAIC0zNDAsOCArMzU5LDYgQEAgaW50IGZm X2FhY191c2FjX2NvbmZpZ19kZWNvZGUoQUFDRGVjQ29udGV4dCAqYWMsIA0KPj4gQVZDb2Rl Y0NvbnRleHQgKmF2Y3R4LA0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJu IEFWRVJST1IoRUlOVkFMKTsNCj4+IMKgwqDCoMKgwqAgfQ0KPj4gLcKgwqDCoCBtNGFjLT5z YW1wbGVfcmF0ZSA9IGF2Y3R4LT5zYW1wbGVfcmF0ZSA9IHNhbXBsZXJhdGU7DQo+PiAtDQo+ PiDCoMKgwqDCoMKgIHVzYWMtPmNvcmVfc2JyX2ZyYW1lX2xlbl9pZHggPSBnZXRfYml0cyhn YiwgMyk7IC8qIA0KPj4gY29yZVNickZyYW1lTGVuZ3RoSW5kZXggKi8NCj4+IMKgwqDCoMKg wqAgbTRhYy0+ZnJhbWVfbGVuZ3RoX3Nob3J0ID0gdXNhYy0+Y29yZV9zYnJfZnJhbWVfbGVu X2lkeCA9PSAwIHx8DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVzYWMtPmNvcmVfc2JyX2ZyYW1lX2xlbl9p ZHggPT0gMjsNCj4+IEBAIC0zNTQsNyArMzcxLDI2IEBAIGludCBmZl9hYWNfdXNhY19jb25m aWdfZGVjb2RlKEFBQ0RlY0NvbnRleHQgKmFjLCANCj4+IEFWQ29kZWNDb250ZXh0ICphdmN0 eCwNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdXNhYy0+Y29yZV9z YnJfZnJhbWVfbGVuX2lkeCA9PSA0ID8gMSA6DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIDA7DQo+PiArwqDCoMKgIGlmIChzYnJfcmF0aW8gPT0gMikgew0KPj4g K8KgwqDCoMKgwqDCoMKgIHJhdGlvX211bHQgPSA4Ow0KPj4gK8KgwqDCoMKgwqDCoMKgIHJh dGlvX2RlYyA9IDM7DQo+PiArwqDCoMKgIH0gZWxzZSBpZiAoc2JyX3JhdGlvID09IDMpIHsN Cj4+ICvCoMKgwqDCoMKgwqDCoCByYXRpb19tdWx0ID0gMjsNCj4+ICvCoMKgwqDCoMKgwqDC oCByYXRpb19kZWMgPSAxOw0KPj4gK8KgwqDCoCB9IGVsc2UgaWYgKHNicl9yYXRpbyA9PSA0 KSB7DQo+PiArwqDCoMKgwqDCoMKgwqAgcmF0aW9fbXVsdCA9IDQ7DQo+PiArwqDCoMKgwqDC oMKgwqAgcmF0aW9fZGVjID0gMTsNCj4+ICvCoMKgwqAgfSBlbHNlIHsNCj4+ICvCoMKgwqDC oMKgwqDCoCByYXRpb19tdWx0ID0gMTsNCj4+ICvCoMKgwqDCoMKgwqDCoCByYXRpb19kZWMg PSAxOw0KPj4gK8KgwqDCoCB9DQo+PiArDQo+PiArwqDCoMKgIGF2Y3R4LT5zYW1wbGVfcmF0 ZSA9IHNhbXBsZXJhdGU7DQo+PiArwqDCoMKgIG00YWMtPmV4dF9zYW1wbGVfcmF0ZSA9IHNh bXBsZXJhdGU7DQo+PiArwqDCoMKgIG00YWMtPnNhbXBsZV9yYXRlID0gKHNhbXBsZXJhdGUg KiByYXRpb19kZWMpIC8gcmF0aW9fbXVsdDsNCj4+ICsNCj4+IMKgwqDCoMKgwqAgbTRhYy0+ c2FtcGxpbmdfaW5kZXggPSBmZl9hYWNfc2FtcGxlX3JhdGVfaWR4KG00YWMtPnNhbXBsZV9y YXRlKTsNCj4+ICvCoMKgwqAgbTRhYy0+c2JyID0gc2JyX3JhdGlvID4gMDsNCj4+IMKgwqDC oMKgwqAgY2hhbm5lbF9jb25maWdfaWR4ID0gZ2V0X2JpdHMoZ2IsIDUpOyAvKiANCj4+IGNo YW5uZWxDb25maWd1cmF0aW9uSW5kZXggKi8NCj4+IMKgwqDCoMKgwqAgaWYgKCFjaGFubmVs X2NvbmZpZ19pZHgpIHsNCj4+IEBAIC00MjYsOCArNDYyLDExIEBAIGludCBmZl9hYWNfdXNh Y19jb25maWdfZGVjb2RlKEFBQ0RlY0NvbnRleHQgKmFjLCANCj4+IEFWQ29kZWNDb250ZXh0 ICphdmN0eCwNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBjYXNlIElEX1VTQUNfU0NFOiAvKiBT Q0UgKi8NCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIFVzYWNDb3JlQ29uZmln ICovDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZWNvZGVfdXNhY19lbGVtZW50 X2NvcmUoZSwgZ2IsIHNicl9yYXRpbyk7DQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBp ZiAoZS0+c2JyLnJhdGlvID4gMCkNCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgZGVjb2RlX3VzYWNfc2JyX2RhdGEoZSwgZ2IpOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgaWYgKGUtPnNici5yYXRpbyA+IDApIHsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgcmV0ID0gZGVjb2RlX3VzYWNfc2JyX2RhdGEoYWMsIGUsIGdiKTsNCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHJldCA8IDApDQo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsNCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0NCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGxheW91dF9tYXBbbWFwX2NvdW50XVswXSA9IFRZUEVfU0NFOw0KPj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgbGF5b3V0X21hcFttYXBfY291bnRdWzFdID0gZWxlbV9pZFswXSsr Ow0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCFtYXBfcG9zX3NldCkNCj4+ IEBAIC00MzcsNyArNDc2LDkgQEAgaW50IGZmX2FhY191c2FjX2NvbmZpZ19kZWNvZGUoQUFD RGVjQ29udGV4dCAqYWMsIA0KPj4gQVZDb2RlY0NvbnRleHQgKmF2Y3R4LA0KPj4gwqDCoMKg wqDCoMKgwqDCoMKgIGNhc2UgSURfVVNBQ19DUEU6IC8qIFVzYWNDaGFubmVsUGFpckVsZW1l bnRDb25mICovDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBVc2FjQ29yZUNv bmZpZyAqLw0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGVjb2RlX3VzYWNfZWxl bWVudF9jb3JlKGUsIGdiLCBzYnJfcmF0aW8pOw0KPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgZGVjb2RlX3VzYWNfZWxlbWVudF9wYWlyKGUsIGdiKTsNCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHJldCA9IGRlY29kZV91c2FjX2VsZW1lbnRfcGFpcihhYywgZSwgZ2IpOw0K Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHJldCA8IDApDQo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7DQo+PiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBsYXlvdXRfbWFwW21hcF9jb3VudF1bMF0gPSBUWVBFX0NQRTsNCj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxheW91dF9tYXBbbWFwX2NvdW50XVsxXSA9IGVs ZW1faWRbMV0rKzsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICghbWFwX3Bv c19zZXQpDQo+PiBAQCAtMTMwNywxMyArMTM0OCwxNCBAQCBzdGF0aWMgaW50IA0KPj4gZGVj b2RlX3VzYWNfY29yZV9jb2RlcihBQUNEZWNDb250ZXh0ICphYywgQUFDVVNBQ0NvbmZpZyAq dXNhYywNCj4+IMKgwqDCoMKgwqAgaW50IHJldDsNCj4+IMKgwqDCoMKgwqAgaW50IGFyaXRo X3Jlc2V0X2ZsYWc7DQo+PiDCoMKgwqDCoMKgIEFBQ1VzYWNTdGVyZW8gKnVzID0gJmNoZS0+ dXM7DQo+PiArwqDCoMKgIGludCBjb3JlX25iX2NoYW5uZWxzID0gbmJfY2hhbm5lbHM7DQo+ PiDCoMKgwqDCoMKgIC8qIExvY2FsIHN5bWJvbHMgKi8NCj4+IMKgwqDCoMKgwqAgdWludDhf dCBnbG9iYWxfZ2FpbjsNCj4+IMKgwqDCoMKgwqAgdXMtPmNvbW1vbl93aW5kb3cgPSAwOw0K Pj4gLcKgwqDCoCBmb3IgKGludCBjaCA9IDA7IGNoIDwgbmJfY2hhbm5lbHM7IGNoKyspIHsN Cj4+ICvCoMKgwqAgZm9yIChpbnQgY2ggPSAwOyBjaCA8IGNvcmVfbmJfY2hhbm5lbHM7IGNo KyspIHsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBTaW5nbGVDaGFubmVsRWxlbWVudCAqc2Nl ID0gJmNoZS0+Y2hbY2hdOw0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIEFBQ1VzYWNFbGVtRGF0 YSAqdWUgPSAmc2NlLT51ZTsNCj4+IEBAIC0xMzIzLDEzICsxMzY1LDE2IEBAIHN0YXRpYyBp bnQgDQo+PiBkZWNvZGVfdXNhY19jb3JlX2NvZGVyKEFBQ0RlY0NvbnRleHQgKmFjLCBBQUNV U0FDQ29uZmlnICp1c2FjLA0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHVlLT5jb3JlX21vZGUg PSBnZXRfYml0czEoZ2IpOw0KPj4gwqDCoMKgwqDCoCB9DQo+PiAtwqDCoMKgIGlmIChuYl9j aGFubmVscyA9PSAyKSB7DQo+PiArwqDCoMKgIGlmIChuYl9jaGFubmVscyA+IDEgJiYgZWMt PnN0ZXJlb19jb25maWdfaW5kZXggPT0gMSkNCj4+ICvCoMKgwqDCoMKgwqDCoCBjb3JlX25i X2NoYW5uZWxzID0gMTsNCj4+ICsNCj4+ICvCoMKgwqAgaWYgKGNvcmVfbmJfY2hhbm5lbHMg PT0gMikgew0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9IGRlY29kZV91c2FjX3N0ZXJl b19pbmZvKGFjLCB1c2FjLCBlYywgY2hlLCBnYiwgDQo+PiBpbmRlcF9mbGFnKTsNCj4+IMKg wqDCoMKgwqDCoMKgwqDCoCBpZiAocmV0KQ0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcmV0dXJuIHJldDsNCj4+IMKgwqDCoMKgwqAgfQ0KPj4gLcKgwqDCoCBmb3IgKGludCBj aCA9IDA7IGNoIDwgbmJfY2hhbm5lbHM7IGNoKyspIHsNCj4+ICvCoMKgwqAgZm9yIChpbnQg Y2ggPSAwOyBjaCA8IGNvcmVfbmJfY2hhbm5lbHM7IGNoKyspIHsNCj4+IMKgwqDCoMKgwqDC oMKgwqDCoCBTaW5nbGVDaGFubmVsRWxlbWVudCAqc2NlID0gJmNoZS0+Y2hbY2hdOw0KPj4g wqDCoMKgwqDCoMKgwqDCoMKgIEluZGl2aWR1YWxDaGFubmVsU3RyZWFtICppY3MgPSAmc2Nl LT5pY3M7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgQUFDVXNhY0VsZW1EYXRhICp1ZSA9ICZz Y2UtPnVlOw0KPj4gQEAgLTEzNDEsNyArMTM4Niw3IEBAIHN0YXRpYyBpbnQgZGVjb2RlX3Vz YWNfY29yZV9jb2RlcihBQUNEZWNDb250ZXh0IA0KPj4gKmFjLCBBQUNVU0FDQ29uZmlnICp1 c2FjLA0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29udGludWU7DQo+PiDCoMKg wqDCoMKgwqDCoMKgwqAgfQ0KPj4gLcKgwqDCoMKgwqDCoMKgIGlmICgobmJfY2hhbm5lbHMg PT0gMSkgfHwNCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoKGNvcmVfbmJfY2hhbm5lbHMgPT0g MSkgfHwNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChjaGUtPmNoWzBdLnVlLmNv cmVfbW9kZSAhPSBjaGUtPmNoWzFdLnVlLmNvcmVfbW9kZSkpDQo+PiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB1ZS0+dG5zX2RhdGFfcHJlc2VudCA9IGdldF9iaXRzMShnYik7DQo+ PiBAQCAtMTQyNCw3ICsxNDY5LDI5IEBAIHN0YXRpYyBpbnQgZGVjb2RlX3VzYWNfY29yZV9j b2RlcihBQUNEZWNDb250ZXh0IA0KPj4gKmFjLCBBQUNVU0FDQ29uZmlnICp1c2FjLA0KPj4g wqDCoMKgwqDCoMKgwqDCoMKgIH0NCj4+IMKgwqDCoMKgwqAgfQ0KPj4gLcKgwqDCoCBzcGVj dHJ1bV9kZWNvZGUoYWMsIHVzYWMsIGNoZSwgbmJfY2hhbm5lbHMpOw0KPj4gK8KgwqDCoCBp ZiAoZWMtPnNici5yYXRpbykgew0KPj4gK8KgwqDCoMKgwqDCoMKgIGludCBzYnJfY2ggPSBu Yl9jaGFubmVsczsNCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAobmJfY2hhbm5lbHMgPT0gMiAm Jg0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIShlYy0+c3RlcmVvX2NvbmZpZ19pbmRl eCA9PSAwIHx8IGVjLT5zdGVyZW9fY29uZmlnX2luZGV4IA0KPj4gPT0gMykpDQo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBzYnJfY2ggPSAxOw0KPj4gKw0KPj4gK8KgwqDCoMKgwqDC oMKgIHJldCA9IGZmX2FhY19zYnJfZGVjb2RlX3VzYWNfZGF0YShhYywgY2hlLCBlYywgZ2Is IHNicl9jaCwgDQo+PiBpbmRlcF9mbGFnKTsNCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAocmV0 IDwgMCkNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7DQo+PiArDQo+ PiArwqDCoMKgwqDCoMKgwqAgaWYgKGVjLT5zdGVyZW9fY29uZmlnX2luZGV4KSB7DQo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhdnByaXZfcmVwb3J0X21pc3NpbmdfZmVhdHVyZShh Yy0+YXZjdHgsICJBQUMgVVNBQyBNcHMyMTIiKTsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHJldHVybiBBVkVSUk9SX1BBVENIV0VMQ09NRTsNCj4+ICvCoMKgwqDCoMKgwqDCoCB9 DQo+PiArwqDCoMKgIH0NCj4+ICsNCj4+ICvCoMKgwqAgc3BlY3RydW1fZGVjb2RlKGFjLCB1 c2FjLCBjaGUsIGNvcmVfbmJfY2hhbm5lbHMpOw0KPj4gKw0KPj4gK8KgwqDCoCBpZiAoYWMt Pm9jWzFdLm00YWMuc2JyID4gMCkgew0KPj4gK8KgwqDCoMKgwqDCoMKgIGFjLT5wcm9jLnNi cl9hcHBseShhYywgY2hlLCBuYl9jaGFubmVscyA9PSAyID8gVFlQRV9DUEUgOiANCj4+IFRZ UEVfU0NFLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgY2hlLT5jaFswXS5vdXRwdXQsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjaGUtPmNoWzFdLm91dHB1dCk7 DQo+PiArwqDCoMKgIH0NCj4+IMKgwqDCoMKgwqAgcmV0dXJuIDA7DQo+PiDCoCB9DQo+PiBA QCAtMTU5MSw5ICsxNjU4LDI5IEBAIGludCBmZl9hYWNfdXNhY19kZWNvZGVfZnJhbWUoQVZD b2RlY0NvbnRleHQgDQo+PiAqYXZjdHgsIEFBQ0RlY0NvbnRleHQgKmFjLA0KPj4gwqDCoMKg wqDCoCBpbnQgaW5kZXBfZmxhZywgc2FtcGxlcyA9IDA7DQo+PiDCoMKgwqDCoMKgIGludCBh dWRpb19mb3VuZCA9IDA7DQo+PiDCoMKgwqDCoMKgIGludCBlbGVtX2lkWzMgLyogU0NFLCBD UEUsIExGRSAqL10gPSB7IDAsIDAsIDAgfTsNCj4+IC0NCj4+IMKgwqDCoMKgwqAgQVZGcmFt ZSAqZnJhbWUgPSBhYy0+ZnJhbWU7DQo+PiArwqDCoMKgIGludCByYXRpb19tdWx0LCByYXRp b19kZWM7DQo+PiArwqDCoMKgIEFBQ1VTQUNDb25maWcgKnVzYWMgPSAmYWMtPm9jWzFdLnVz YWM7DQo+PiArwqDCoMKgIGludCBzYnJfcmF0aW8gPSB1c2FjLT5jb3JlX3Nicl9mcmFtZV9s ZW5faWR4ID09IDIgPyAyIDoNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB1c2FjLT5jb3JlX3Nicl9mcmFtZV9sZW5faWR4ID09IDMgPyAzIDoNCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1c2FjLT5jb3JlX3Nicl9m cmFtZV9sZW5faWR4ID09IDQgPyAxIDoNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAwOw0KPj4gKw0KPj4gK8KgwqDCoCBpZiAoc2JyX3JhdGlvID09IDIp IHsNCj4+ICvCoMKgwqDCoMKgwqDCoCByYXRpb19tdWx0ID0gODsNCj4+ICvCoMKgwqDCoMKg wqDCoCByYXRpb19kZWMgPSAzOw0KPj4gK8KgwqDCoCB9IGVsc2UgaWYgKHNicl9yYXRpbyA9 PSAzKSB7DQo+PiArwqDCoMKgwqDCoMKgwqAgcmF0aW9fbXVsdCA9IDI7DQo+PiArwqDCoMKg wqDCoMKgwqAgcmF0aW9fZGVjID0gMTsNCj4+ICvCoMKgwqAgfSBlbHNlIGlmIChzYnJfcmF0 aW8gPT0gNCkgew0KPj4gK8KgwqDCoMKgwqDCoMKgIHJhdGlvX211bHQgPSA0Ow0KPj4gK8Kg wqDCoMKgwqDCoMKgIHJhdGlvX2RlYyA9IDE7DQo+PiArwqDCoMKgIH0gZWxzZSB7DQo+PiAr wqDCoMKgwqDCoMKgwqAgcmF0aW9fbXVsdCA9IDE7DQo+PiArwqDCoMKgwqDCoMKgwqAgcmF0 aW9fZGVjID0gMTsNCj4+ICvCoMKgwqAgfQ0KPj4gKw0KPj4gwqDCoMKgwqDCoCBmZl9hYWNf b3V0cHV0X2NvbmZpZ3VyZShhYywgYWMtPm9jWzFdLmxheW91dF9tYXAsIGFjLSANCj4+ID5v Y1sxXS5sYXlvdXRfbWFwX3RhZ3MsDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFjLT5vY1sxXS5zdGF0dXMsIDApOw0K Pj4gQEAgLTE2NjAsOCArMTc0NywxMCBAQCBpbnQgZmZfYWFjX3VzYWNfZGVjb2RlX2ZyYW1l KEFWQ29kZWNDb250ZXh0IA0KPj4gKmF2Y3R4LCBBQUNEZWNDb250ZXh0ICphYywNCj4+IMKg wqDCoMKgwqAgaWYgKGF1ZGlvX2ZvdW5kKQ0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHNhbXBs ZXMgPSBhYy0+b2NbMV0ubTRhYy5mcmFtZV9sZW5ndGhfc2hvcnQgPyA3NjggOiAxMDI0Ow0K Pj4gK8KgwqDCoCBzYW1wbGVzID0gKHNhbXBsZXMgKiByYXRpb19tdWx0KSAvIHJhdGlvX2Rl YzsNCj4+ICsNCj4+IMKgwqDCoMKgwqAgaWYgKGFjLT5vY1sxXS5zdGF0dXMgJiYgYXVkaW9f Zm91bmQpIHsNCj4+IC3CoMKgwqDCoMKgwqDCoCBhdmN0eC0+c2FtcGxlX3JhdGUgPSBhYy0+ b2NbMV0ubTRhYy5zYW1wbGVfcmF0ZTsNCj4+ICvCoMKgwqDCoMKgwqDCoCBhdmN0eC0+c2Ft cGxlX3JhdGUgPSBhYy0+b2NbMV0ubTRhYy5leHRfc2FtcGxlX3JhdGU7DQo+PiDCoMKgwqDC oMKgwqDCoMKgwqAgYXZjdHgtPmZyYW1lX3NpemUgPSBzYW1wbGVzOw0KPj4gwqDCoMKgwqDC oMKgwqDCoMKgIGFjLT5vY1sxXS5zdGF0dXMgPSBPQ19MT0NLRUQ7DQo+PiDCoMKgwqDCoMKg IH0NCj4+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2FhY3Nici5oIGIvbGliYXZjb2RlYy9h YWNzYnIuaA0KPj4gaW5kZXggZDQ1ODJkMTEwMC4uMzk1OGI0M2I5MSAxMDA2NDQNCj4+IC0t LSBhL2xpYmF2Y29kZWMvYWFjc2JyLmgNCj4+ICsrKyBiL2xpYmF2Y29kZWMvYWFjc2JyLmgN Cj4+IEBAIC04OCw2ICs4OCwxNyBAQCBpbnQgZmZfYWFjX3Nicl9kZWNvZGVfZXh0ZW5zaW9u KEFBQ0RlY0NvbnRleHQgKmFjLCANCj4+IENoYW5uZWxFbGVtZW50ICpjaGUsDQo+PiDCoCBp bnQgZmZfYWFjX3Nicl9kZWNvZGVfZXh0ZW5zaW9uX2ZpeGVkKEFBQ0RlY0NvbnRleHQgKmFj LCANCj4+IENoYW5uZWxFbGVtZW50ICpjaGUsDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgR2V0Qml0Q29udGV4dCAqZ2IsIGludCBjcmMsIA0KPj4gaW50IGNudCwgaW50IGlkX2Fh Yyk7DQo+PiArLyoqIER1ZSB0byBjaGFubmVsIGFsbG9jYXRpb24gbm90IGJlaW5nIGtub3du IHVwb24gU0JSIHBhcmFtZXRlciANCj4+IHRyYW5zbWlzc2lvbiwNCj4+ICsgKiBzdXBwbHkg dGhlIHBhcmFtZXRlcnMgc2VwYXJhdGVseS4NCj4+ICsgKiBGdW5jdGlvbmFsbHkgaWRlbnRp Y2FsIHRvIGZmX2FhY19zYnJfZGVjb2RlX2V4dGVuc2lvbigpICovDQo+PiAraW50IGZmX2Fh Y19zYnJfY29uZmlnX3VzYWMoQUFDRGVjQ29udGV4dCAqYWMsIENoYW5uZWxFbGVtZW50ICpj aGUsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBBQUNVc2FjRWxlbUNvbmZpZyAqdWUpOw0KPj4gKw0KPj4gKy8qKiBEZWNvZGUg ZnJhbWUgU0JSIGRhdGEsIFVTQUMuICovDQo+PiAraW50IGZmX2FhY19zYnJfZGVjb2RlX3Vz YWNfZGF0YShBQUNEZWNDb250ZXh0ICphYywgQ2hhbm5lbEVsZW1lbnQgKmNoZSwNCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBBQUNVc2FjRWxlbUNvbmZpZyAqdWUsIEdldEJpdENvbnRleHQgDQo+PiAqZ2Is DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgaW50IHNicl9jaCwgaW50IGluZGVwX2ZsYWcpOw0KPj4gKw0KPj4g wqAgLyoqIEFwcGx5IG9uZSBTQlIgZWxlbWVudCB0byBvbmUgQUFDIGVsZW1lbnQuICovDQo+ PiDCoCB2b2lkIGZmX2FhY19zYnJfYXBwbHkoQUFDRGVjQ29udGV4dCAqYWMsIENoYW5uZWxF bGVtZW50ICpjaGUsDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGludCBpZF9hYWMsIHZvaWQgLyogZmxvYXQgKi8gKkwsIHZvaWQgLyogZmxv YXQgDQo+PiAqLyAqUik7DQo+PiBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9hYWNzYnJfdGVt cGxhdGUuYyBiL2xpYmF2Y29kZWMvYWFjc2JyX3RlbXBsYXRlLmMNCj4+IGluZGV4IDg2ZjRk OGMyNmUuLmU1YmM0ZDQ2NTkgMTAwNjQ0DQo+PiAtLS0gYS9saWJhdmNvZGVjL2FhY3Nicl90 ZW1wbGF0ZS5jDQo+PiArKysgYi9saWJhdmNvZGVjL2FhY3Nicl90ZW1wbGF0ZS5jDQo+PiBA QCAtNTcsNiArNTcsNyBAQCBhdl9jb2xkIHZvaWQgQUFDX1JFTkFNRShmZl9hYWNfc2JyX2lu aXQpKHZvaWQpDQo+PiDCoCAvKiogUGxhY2VzIFNCUiBpbiBwdXJlIHVwc2FtcGxpbmcgbW9k ZS4gKi8NCj4+IMKgIHN0YXRpYyB2b2lkIHNicl90dXJub2ZmKFNwZWN0cmFsQmFuZFJlcGxp Y2F0aW9uICpzYnIpIHsNCj4+IMKgwqDCoMKgwqAgc2JyLT5zdGFydCA9IDA7DQo+PiArwqDC oMKgIHNici0+dXNhYyA9IDA7DQo+PiDCoMKgwqDCoMKgIHNici0+cmVhZHlfZm9yX2RlcXVh bnQgPSAwOw0KPj4gwqDCoMKgwqDCoCAvLyBJbml0IGRlZnVsdHMgdXNlZCBpbiBwdXJlIHVw c2FtcGxpbmcgbW9kZQ0KPj4gwqDCoMKgwqDCoCBzYnItPmt4WzFdID0gMzI7IC8vVHlwbyBp biBzcGVjLCBreCcgaW5pdHMgdG8gMzINCj4+IEBAIC0xODQsNyArMTg1LDggQEAgc3RhdGlj IHZvaWQgDQo+PiBzYnJfbWFrZV9mX3RhYmxlbGltKFNwZWN0cmFsQmFuZFJlcGxpY2F0aW9u ICpzYnIpDQo+PiDCoMKgwqDCoMKgIH0NCj4+IMKgIH0NCj4+IC1zdGF0aWMgdW5zaWduZWQg aW50IHJlYWRfc2JyX2hlYWRlcihTcGVjdHJhbEJhbmRSZXBsaWNhdGlvbiAqc2JyLCANCj4+ IEdldEJpdENvbnRleHQgKmdiKQ0KPj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgcmVhZF9zYnJf aGVhZGVyKFNwZWN0cmFsQmFuZFJlcGxpY2F0aW9uICpzYnIsDQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBHZXRCaXRDb250ZXh0ICpnYiwgaW50IGlzX3VzYWMpDQo+PiDCoCB7DQo+PiDCoMKg wqDCoMKgIHVuc2lnbmVkIGludCBjbnQgPSBnZXRfYml0c19jb3VudChnYik7DQo+PiDCoMKg wqDCoMKgIHVpbnQ4X3QgYnNfaGVhZGVyX2V4dHJhXzE7DQo+PiBAQCAtMTk0LDE1ICsxOTYs MjAgQEAgc3RhdGljIHVuc2lnbmVkIGludCANCj4+IHJlYWRfc2JyX2hlYWRlcihTcGVjdHJh bEJhbmRSZXBsaWNhdGlvbiAqc2JyLCBHZXRCaXRDb250ZXh0DQo+PiDCoMKgwqDCoMKgIHNi ci0+c3RhcnQgPSAxOw0KPj4gwqDCoMKgwqDCoCBzYnItPnJlYWR5X2Zvcl9kZXF1YW50ID0g MDsNCj4+ICvCoMKgwqAgc2JyLT51c2FjID0gaXNfdXNhYzsNCj4+IMKgwqDCoMKgwqAgLy8g U2F2ZSBsYXN0IHNwZWN0cnVtIHBhcmFtZXRlcnMgdmFyaWFibGVzIHRvIGNvbXBhcmUgdG8g bmV3IG9uZXMNCj4+IMKgwqDCoMKgwqAgbWVtY3B5KCZvbGRfc3BlY3RydW1fcGFyYW1zLCAm c2JyLT5zcGVjdHJ1bV9wYXJhbXMsIA0KPj4gc2l6ZW9mKFNwZWN0cnVtUGFyYW1ldGVycykp Ow0KPj4gLcKgwqDCoCBzYnItPmJzX2FtcF9yZXNfaGVhZGVywqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgPSBnZXRfYml0czEoZ2IpOw0KPj4gK8KgwqDCoCBpZiAoIWlzX3VzYWMpDQo+ PiArwqDCoMKgwqDCoMKgwqAgc2JyLT5ic19hbXBfcmVzX2hlYWRlcsKgwqDCoMKgwqDCoMKg wqDCoCA9IGdldF9iaXRzMShnYik7DQo+PiArDQo+PiDCoMKgwqDCoMKgIHNici0+c3BlY3Ry dW1fcGFyYW1zLmJzX3N0YXJ0X2ZyZXHCoCA9IGdldF9iaXRzKGdiLCA0KTsNCj4+IMKgwqDC oMKgwqAgc2JyLT5zcGVjdHJ1bV9wYXJhbXMuYnNfc3RvcF9mcmVxwqDCoCA9IGdldF9iaXRz KGdiLCA0KTsNCj4+IC3CoMKgwqAgc2JyLT5zcGVjdHJ1bV9wYXJhbXMuYnNfeG92ZXJfYmFu ZMKgID0gZ2V0X2JpdHMoZ2IsIDMpOw0KPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgc2tpcF9iaXRzKGdiLCAyKTsgLy8gDQo+PiBic19yZXNlcnZlZA0KPj4gKw0KPj4gK8Kg wqDCoCBpZiAoIWlzX3VzYWMpDQo+PiArwqDCoMKgwqDCoMKgwqAgc2JyLT5zcGVjdHJ1bV9w YXJhbXMuYnNfeG92ZXJfYmFuZCA9IGdldF9iaXRzKGdiLCAzKTsNCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNraXBfYml0cyhnYiwgMik7IC8vIA0KPj4gYnNf cmVzZXJ2ZWQNCj4+IMKgwqDCoMKgwqAgYnNfaGVhZGVyX2V4dHJhXzEgPSBnZXRfYml0czEo Z2IpOw0KPj4gwqDCoMKgwqDCoCBic19oZWFkZXJfZXh0cmFfMiA9IGdldF9iaXRzMShnYik7 DQo+PiBAQCAtNjQ1LDcgKzY1Miw3IEBAIHN0YXRpYyBpbnQgcmVhZF9zYnJfZ3JpZChBQUNE ZWNDb250ZXh0ICphYywgDQo+PiBTcGVjdHJhbEJhbmRSZXBsaWNhdGlvbiAqc2JyLA0KPj4g wqDCoMKgwqDCoCBzd2l0Y2ggKGJzX2ZyYW1lX2NsYXNzID0gZ2V0X2JpdHMoZ2IsIDIpKSB7 DQo+PiDCoMKgwqDCoMKgIGNhc2UgRklYRklYOg0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGJz X251bV9lbnYgPSAxIDw8IGdldF9iaXRzKGdiLCAyKTsNCj4+IC3CoMKgwqDCoMKgwqDCoCBp ZiAoYnNfbnVtX2VudiA+IDQpIHsNCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoYnNfbnVtX2Vu diA+IChzYnItPnVzYWMgPyA4IDogNSkpIHsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGF2X2xvZyhhYy0+YXZjdHgsIEFWX0xPR19FUlJPUiwNCj4+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIkludmFsaWQgYml0c3RyZWFtLCB0b28gbWFu eSBTQlIgZW52ZWxvcGVzIGluIA0KPj4gRklYRklYIHR5cGUgU0JSIGZyYW1lOiAlZFxuIiwN Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnNfbnVtX2Vu dik7DQo+PiBAQCAtNzkzLDEwICs4MDAsMjYgQEAgc3RhdGljIHZvaWQgY29weV9zYnJfZ3Jp ZChTQlJEYXRhICpkc3QsIGNvbnN0IA0KPj4gU0JSRGF0YSAqc3JjKSB7DQo+PiDCoCAvLy8g UmVhZCBob3cgdGhlIGVudmVsb3BlIGFuZCBub2lzZSBmbG9vciBkYXRhIGlzIGRlbHRhIGNv ZGVkDQo+PiDCoCBzdGF0aWMgdm9pZCByZWFkX3Nicl9kdGRmKFNwZWN0cmFsQmFuZFJlcGxp Y2F0aW9uICpzYnIsIA0KPj4gR2V0Qml0Q29udGV4dCAqZ2IsDQo+PiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgU0JSRGF0YSAqY2hfZGF0 YSkNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBTQlJEYXRhICpjaF9kYXRhLCBpbnQgaW5kZXBfZmxhZykNCj4+IMKgIHsNCj4+IC3C oMKgwqAgZ2V0X2JpdHMxX3ZlY3RvcihnYiwgY2hfZGF0YS0+YnNfZGZfZW52LMKgwqAgY2hf ZGF0YS0+YnNfbnVtX2Vudik7DQo+PiAtwqDCoMKgIGdldF9iaXRzMV92ZWN0b3IoZ2IsIGNo X2RhdGEtPmJzX2RmX25vaXNlLCBjaF9kYXRhLT5ic19udW1fbm9pc2UpOw0KPj4gK8KgwqDC oCBpZiAoc2JyLT51c2FjKSB7DQo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKGluZGVwX2ZsYWcp IHsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNoX2RhdGEtPmJzX2RmX2VudlswXSA9 IDA7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnZXRfYml0czFfdmVjdG9yKGdiLCAm Y2hfZGF0YS0+YnNfZGZfZW52WzFdLCBjaF9kYXRhLSANCj4+ID5ic19udW1fZW52IC0gMSk7 DQo+PiArwqDCoMKgwqDCoMKgwqAgfSBlbHNlIHsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGdldF9iaXRzMV92ZWN0b3IoZ2IsIGNoX2RhdGEtPmJzX2RmX2VudiwgY2hfZGF0YS0g DQo+PiA+YnNfbnVtX2Vudik7DQo+PiArwqDCoMKgwqDCoMKgwqAgfQ0KPj4gKw0KPj4gK8Kg wqDCoMKgwqDCoMKgIGlmIChpbmRlcF9mbGFnKSB7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBjaF9kYXRhLT5ic19kZl9ub2lzZVswXSA9IDA7DQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBnZXRfYml0czFfdmVjdG9yKGdiLCAmY2hfZGF0YS0+YnNfZGZfbm9pc2VbMV0s IGNoX2RhdGEtIA0KPj4gPmJzX251bV9ub2lzZSAtIDEpOw0KPj4gK8KgwqDCoMKgwqDCoMKg IH0gZWxzZSB7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnZXRfYml0czFfdmVjdG9y KGdiLCBjaF9kYXRhLT5ic19kZl9ub2lzZSwgY2hfZGF0YS0gDQo+PiA+YnNfbnVtX25vaXNl KTsNCj4+ICvCoMKgwqDCoMKgwqDCoCB9DQo+PiArwqDCoMKgIH0gZWxzZSB7DQo+PiArwqDC oMKgwqDCoMKgwqAgZ2V0X2JpdHMxX3ZlY3RvcihnYiwgY2hfZGF0YS0+YnNfZGZfZW52LMKg wqAgY2hfZGF0YS0+YnNfbnVtX2Vudik7DQo+PiArwqDCoMKgwqDCoMKgwqAgZ2V0X2JpdHMx X3ZlY3RvcihnYiwgY2hfZGF0YS0+YnNfZGZfbm9pc2UsIGNoX2RhdGEtIA0KPj4gPmJzX251 bV9ub2lzZSk7DQo+PiArwqDCoMKgIH0NCj4+IMKgIH0NCj4+IMKgIC8vLyBSZWFkIGludmVy c2UgZmlsdGVyaW5nIGRhdGENCj4+IEBAIC04MTEsNyArODM0LDcgQEAgc3RhdGljIHZvaWQg cmVhZF9zYnJfaW52ZihTcGVjdHJhbEJhbmRSZXBsaWNhdGlvbiANCj4+ICpzYnIsIEdldEJp dENvbnRleHQgKmdiLA0KPj4gwqAgfQ0KPj4gwqAgc3RhdGljIGludCByZWFkX3Nicl9lbnZl bG9wZShBQUNEZWNDb250ZXh0ICphYywgDQo+PiBTcGVjdHJhbEJhbmRSZXBsaWNhdGlvbiAq c2JyLCBHZXRCaXRDb250ZXh0ICpnYiwNCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFNCUkRhdGEgKmNoX2RhdGEsIGlu dCBjaCkNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBTQlJEYXRhICpjaF9kYXRhLCBpbnQgY2gpDQo+PiDCoCB7DQo+PiDC oMKgwqDCoMKgIGludCBiaXRzOw0KPj4gwqDCoMKgwqDCoCBpbnQgaSwgaiwgazsNCj4+IEBA IC04ODEsNiArOTA0LDEzIEBAIHN0YXRpYyBpbnQgcmVhZF9zYnJfZW52ZWxvcGUoQUFDRGVj Q29udGV4dCAqYWMsIA0KPj4gU3BlY3RyYWxCYW5kUmVwbGljYXRpb24gKnNiciwgR2UNCj4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQ0KPj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfQ0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIH0NCj4+ICvCoMKgwqDC oMKgwqDCoCBpZiAoc2JyLT51c2FjKSB7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBp ZiAoc2JyLT5pbnRlcl90ZXMpIHsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgY2hfZGF0YS0+dGVtcF9zaGFwZVtpXSA9IGdldF9iaXRzKGdiLCAxKTsNCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGNoX2RhdGEtPnRlbXBfc2hhcGVbaV0p DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY2hfZGF0YS0+ dGVtcF9zaGFwZV9tb2RlW2ldID0gZ2V0X2JpdHMoZ2IsIDIpOw0KPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfQ0KPj4gK8KgwqDCoMKgwqDCoMKgIH0NCj4+IMKgwqDCoMKgwqAgfQ0K Pj4gwqDCoMKgwqDCoCAvL2Fzc2lnbiAwdGggZWxlbWVudHMgb2YgZW52X2ZhY3NfcSBmcm9t IGxhc3QgZWxlbWVudHMNCj4+IEBAIC05NzAsNyArMTAwMCw3IEBAIHN0YXRpYyBpbnQgDQo+ PiByZWFkX3Nicl9zaW5nbGVfY2hhbm5lbF9lbGVtZW50KEFBQ0RlY0NvbnRleHQgKmFjLA0K Pj4gwqDCoMKgwqDCoCBpZiAocmVhZF9zYnJfZ3JpZChhYywgc2JyLCBnYiwgJnNici0+ZGF0 YVswXSkpDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC0xOw0KPj4gLcKgwqDCoCBy ZWFkX3Nicl9kdGRmKHNiciwgZ2IsICZzYnItPmRhdGFbMF0pOw0KPj4gK8KgwqDCoCByZWFk X3Nicl9kdGRmKHNiciwgZ2IsICZzYnItPmRhdGFbMF0sIDApOw0KPj4gwqDCoMKgwqDCoCBy ZWFkX3Nicl9pbnZmKHNiciwgZ2IsICZzYnItPmRhdGFbMF0pOw0KPj4gwqDCoMKgwqDCoCBp ZigocmV0ID0gcmVhZF9zYnJfZW52ZWxvcGUoYWMsIHNiciwgZ2IsICZzYnItPmRhdGFbMF0s IDApKSA8IDApDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsNCj4+IEBAIC05 OTYsOCArMTAyNiw4IEBAIHN0YXRpYyBpbnQgDQo+PiByZWFkX3Nicl9jaGFubmVsX3BhaXJf ZWxlbWVudChBQUNEZWNDb250ZXh0ICphYywNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAo cmVhZF9zYnJfZ3JpZChhYywgc2JyLCBnYiwgJnNici0+ZGF0YVswXSkpDQo+PiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLTE7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAg Y29weV9zYnJfZ3JpZCgmc2JyLT5kYXRhWzFdLCAmc2JyLT5kYXRhWzBdKTsNCj4+IC3CoMKg wqDCoMKgwqDCoCByZWFkX3Nicl9kdGRmKHNiciwgZ2IsICZzYnItPmRhdGFbMF0pOw0KPj4g LcKgwqDCoMKgwqDCoMKgIHJlYWRfc2JyX2R0ZGYoc2JyLCBnYiwgJnNici0+ZGF0YVsxXSk7 DQo+PiArwqDCoMKgwqDCoMKgwqAgcmVhZF9zYnJfZHRkZihzYnIsIGdiLCAmc2JyLT5kYXRh WzBdLCAwKTsNCj4+ICvCoMKgwqDCoMKgwqDCoCByZWFkX3Nicl9kdGRmKHNiciwgZ2IsICZz YnItPmRhdGFbMV0sIDApOw0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJlYWRfc2JyX2ludmYo c2JyLCBnYiwgJnNici0+ZGF0YVswXSk7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgbWVtY3B5 KHNici0+ZGF0YVsxXS5ic19pbnZmX21vZGVbMV0sIHNici0gDQo+PiA+ZGF0YVsxXS5ic19p bnZmX21vZGVbMF0sIHNpemVvZihzYnItPmRhdGFbMV0uYnNfaW52Zl9tb2RlWzBdKSk7DQo+ PiDCoMKgwqDCoMKgwqDCoMKgwqAgbWVtY3B5KHNici0+ZGF0YVsxXS5ic19pbnZmX21vZGVb MF0sIHNici0gDQo+PiA+ZGF0YVswXS5ic19pbnZmX21vZGVbMF0sIHNpemVvZihzYnItPmRh dGFbMV0uYnNfaW52Zl9tb2RlWzBdKSk7DQo+PiBAQCAtMTAxMyw4ICsxMDQzLDggQEAgc3Rh dGljIGludCANCj4+IHJlYWRfc2JyX2NoYW5uZWxfcGFpcl9lbGVtZW50KEFBQ0RlY0NvbnRl eHQgKmFjLA0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChyZWFkX3Nicl9ncmlkKGFjLCBz YnIsIGdiLCAmc2JyLT5kYXRhWzBdKSB8fA0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcmVhZF9zYnJfZ3JpZChhYywgc2JyLCBnYiwgJnNici0+ZGF0YVsxXSkpDQo+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLTE7DQo+PiAtwqDCoMKgwqDCoMKgwqAg cmVhZF9zYnJfZHRkZihzYnIsIGdiLCAmc2JyLT5kYXRhWzBdKTsNCj4+IC3CoMKgwqDCoMKg wqDCoCByZWFkX3Nicl9kdGRmKHNiciwgZ2IsICZzYnItPmRhdGFbMV0pOw0KPj4gK8KgwqDC oMKgwqDCoMKgIHJlYWRfc2JyX2R0ZGYoc2JyLCBnYiwgJnNici0+ZGF0YVswXSwgMCk7DQo+ PiArwqDCoMKgwqDCoMKgwqAgcmVhZF9zYnJfZHRkZihzYnIsIGdiLCAmc2JyLT5kYXRhWzFd LCAwKTsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZWFkX3Nicl9pbnZmKHNiciwgZ2IsICZz YnItPmRhdGFbMF0pOw0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJlYWRfc2JyX2ludmYoc2Jy LCBnYiwgJnNici0+ZGF0YVsxXSk7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgaWYoKHJldCA9 IHJlYWRfc2JyX2VudmVsb3BlKGFjLCBzYnIsIGdiLCAmc2JyLT5kYXRhWzBdLCAwKSkgDQo+ PiA8IDApDQo+PiBAQCAtMTEyOSw3ICsxMTU5LDcgQEAgaW50IEFBQ19SRU5BTUUoZmZfYWFj X3Nicl9kZWNvZGVfZXh0ZW5zaW9uKSANCj4+IChBQUNEZWNDb250ZXh0ICphYywgQ2hhbm5l bEVsZW1lbnQgKmMNCj4+IMKgwqDCoMKgwqAgbnVtX3Nicl9iaXRzKys7DQo+PiDCoMKgwqDC oMKgIGlmIChnZXRfYml0czEoZ2IpKSAvLyBic19oZWFkZXJfZmxhZw0KPj4gLcKgwqDCoMKg wqDCoMKgIG51bV9zYnJfYml0cyArPSByZWFkX3Nicl9oZWFkZXIoc2JyLCBnYik7DQo+PiAr wqDCoMKgwqDCoMKgwqAgbnVtX3Nicl9iaXRzICs9IHJlYWRfc2JyX2hlYWRlcihzYnIsIGdi LCAwKTsNCj4+IMKgwqDCoMKgwqAgaWYgKHNici0+cmVzZXQpDQo+PiDCoMKgwqDCoMKgwqDC oMKgwqAgc2JyX3Jlc2V0KGFjLCBzYnIpOw0KPj4gQEAgLTExNDgsNiArMTE3OCwxNzggQEAg aW50IEFBQ19SRU5BTUUoZmZfYWFjX3Nicl9kZWNvZGVfZXh0ZW5zaW9uKSANCj4+IChBQUNE ZWNDb250ZXh0ICphYywgQ2hhbm5lbEVsZW1lbnQgKmMNCj4+IMKgwqDCoMKgwqAgcmV0dXJu IGNudDsNCj4+IMKgIH0NCj4+ICsjaWYgIVVTRV9GSVhFRA0KPj4gK3N0YXRpYyB2b2lkIGNv cHlfdXNhY19kZWZhdWx0X2hlYWRlcihTcGVjdHJhbEJhbmRSZXBsaWNhdGlvbiAqc2JyLA0K Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBQUNVc2FjRWxlbUNvbmZpZyAqdWUpDQo+PiArew0K Pj4gK8KgwqDCoCBzYnItPmludGVyX3RlcyA9IHVlLT5zYnIuYnNfaW50ZXJ0ZXM7DQo+PiAr DQo+PiArwqDCoMKgIHNici0+c3BlY3RydW1fcGFyYW1zLmJzX3N0YXJ0X2ZyZXEgPSB1ZS0+ c2JyLmRmbHQuc3RhcnRfZnJlcTsNCj4+ICvCoMKgwqAgc2JyLT5zcGVjdHJ1bV9wYXJhbXMu YnNfc3RvcF9mcmVxID0gdWUtPnNici5kZmx0LnN0b3BfZnJlcTsNCj4+ICsNCj4+ICvCoMKg wqAgc2JyLT5zcGVjdHJ1bV9wYXJhbXMuYnNfZnJlcV9zY2FsZSA9IHVlLT5zYnIuZGZsdC5m cmVxX3NjYWxlOw0KPj4gK8KgwqDCoCBzYnItPnNwZWN0cnVtX3BhcmFtcy5ic19hbHRlcl9z Y2FsZSA9IHVlLT5zYnIuZGZsdC5hbHRlcl9zY2FsZTsNCj4+ICvCoMKgwqAgc2JyLT5zcGVj dHJ1bV9wYXJhbXMuYnNfbm9pc2VfYmFuZHMgPSB1ZS0+c2JyLmRmbHQubm9pc2VfYmFuZHM7 DQo+PiArDQo+PiArwqDCoMKgIHNici0+YnNfbGltaXRlcl9iYW5kcyA9IHVlLT5zYnIuZGZs dC5saW1pdGVyX2JhbmRzOw0KPj4gK8KgwqDCoCBzYnItPmJzX2xpbWl0ZXJfZ2FpbnMgPSB1 ZS0+c2JyLmRmbHQubGltaXRlcl9nYWluczsNCj4+ICvCoMKgwqAgc2JyLT5ic19pbnRlcnBv bF9mcmVxID0gdWUtPnNici5kZmx0LmludGVycG9sX2ZyZXE7DQo+PiArwqDCoMKgIHNici0+ YnNfc21vb3RoaW5nX21vZGUgPSB1ZS0+c2JyLmRmbHQuc21vb3RoaW5nX21vZGU7DQo+PiAr fQ0KPj4gKw0KPj4gK2ludCBmZl9hYWNfc2JyX2NvbmZpZ191c2FjKEFBQ0RlY0NvbnRleHQg KmFjLCBDaGFubmVsRWxlbWVudCAqY2hlLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQUFDVXNhY0VsZW1Db25maWcgKnVlKQ0K Pj4gK3sNCj4+ICvCoMKgwqAgU3BlY3RyYWxCYW5kUmVwbGljYXRpb24gKnNiciA9IGdldF9z YnIoY2hlKTsNCj4+ICvCoMKgwqAgc2JyX3R1cm5vZmYoc2JyKTsNCj4+ICvCoMKgwqAgcmV0 dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK2ludCBmZl9hYWNfc2JyX2RlY29kZV91c2FjX2Rh dGEoQUFDRGVjQ29udGV4dCAqYWMsIENoYW5uZWxFbGVtZW50ICpjaGUsDQo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgQUFDVXNhY0VsZW1Db25maWcgKnVlLCBHZXRCaXRDb250ZXh0IA0KPj4gKmdiLA0KPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGludCBzYnJfY2gsIGludCBpbmRlcF9mbGFnKQ0KPj4gK3sNCj4+ICvCoMKg wqAgaW50IHJldDsNCj4+ICvCoMKgwqAgU3BlY3RyYWxCYW5kUmVwbGljYXRpb24gKnNiciA9 IGdldF9zYnIoY2hlKTsNCj4+ICvCoMKgwqAgaW50IGluZm9fcHJlc2VudCA9IDE7DQo+PiAr wqDCoMKgIGludCBoZWFkZXJfcHJlc2VudCA9IDE7DQo+PiArDQo+PiArwqDCoMKgIHNici0+ cmVzZXQgPSAwOw0KPj4gK8KgwqDCoCBzYnItPnVzYWMgPSAxOw0KPj4gKw0KPj4gK8KgwqDC oCBzYnItPnNhbXBsZV9yYXRlID0gYWMtPm9jWzFdLm00YWMuZXh0X3NhbXBsZV9yYXRlOw0K Pj4gK8KgwqDCoCBzYnItPmlkX2FhYyA9IHNicl9jaCA9PSAyID8gVFlQRV9DUEUgOiBUWVBF X1NDRTsNCj4+ICsNCj4+ICvCoMKgwqAgaWYgKCFpbmRlcF9mbGFnKSB7DQo+PiArwqDCoMKg wqDCoMKgwqAgaW5mb19wcmVzZW50ID0gZ2V0X2JpdHMxKGdiKTsNCj4+ICvCoMKgwqDCoMKg wqDCoCBpZiAoaW5mb19wcmVzZW50KQ0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaGVh ZGVyX3ByZXNlbnQgPSBnZXRfYml0czEoZ2IpOw0KPj4gK8KgwqDCoMKgwqDCoMKgIGVsc2UN Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGhlYWRlcl9wcmVzZW50ID0gMDsNCj4+ICvC oMKgwqAgfQ0KPj4gKw0KPj4gK8KgwqDCoCBpZiAoaW5mb19wcmVzZW50KSB7DQo+PiArwqDC oMKgwqDCoMKgwqAgLyogU2JySW5mbygpICovDQo+PiArwqDCoMKgwqDCoMKgwqAgc2JyLT5i c19hbXBfcmVzX2hlYWRlciA9IGdldF9iaXRzMShnYik7DQo+PiArwqDCoMKgwqDCoMKgwqAg c2JyLT5zcGVjdHJ1bV9wYXJhbXMuYnNfeG92ZXJfYmFuZCA9IGdldF9iaXRzKGdiLCA0KTsN Cj4+ICvCoMKgwqDCoMKgwqDCoCBzYnItPmJzX3Nicl9wcmVwcm9jZXNzaW5nID0gZ2V0X2Jp dHMxKGdiKTsNCj4+ICvCoMKgwqDCoMKgwqDCoCAvKiBpZiAoYnNfcHZjKSAuLi4gKi8NCj4+ ICvCoMKgwqAgfQ0KPj4gKw0KPj4gK8KgwqDCoCBpZiAoaGVhZGVyX3ByZXNlbnQpIHsNCj4+ ICvCoMKgwqDCoMKgwqDCoCBpZiAoZ2V0X2JpdHMxKGdiKSkgew0KPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgaW50IG9sZF9ic19saW1pdGVyX2JhbmRzID0gc2JyLT5ic19saW1pdGVy X2JhbmRzOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgU3BlY3RydW1QYXJhbWV0ZXJz IG9sZF9zcGVjdHJ1bV9wYXJhbXM7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtZW1j cHkoJm9sZF9zcGVjdHJ1bV9wYXJhbXMsICZzYnItPnNwZWN0cnVtX3BhcmFtcywNCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2l6ZW9mKFNwZWN0cnVtUGFy YW1ldGVycykpOw0KPj4gKw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29weV91c2Fj X2RlZmF1bHRfaGVhZGVyKHNiciwgdWUpOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Ly8gQ2hlY2sgaWYgc3BlY3RydW0gcGFyYW1ldGVycyBjaGFuZ2VkDQo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBpZiAobWVtY21wKCZvbGRfc3BlY3RydW1fcGFyYW1zLCAmc2JyLT5z cGVjdHJ1bV9wYXJhbXMsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgc2l6ZW9mKFNwZWN0cnVtUGFyYW1ldGVycykpKQ0KPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzYnItPnJlc2V0ID0gMTsNCj4+ICsNCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGlmIChzYnItPmJzX2xpbWl0ZXJfYmFuZHMgIT0gb2xkX2Jz X2xpbWl0ZXJfYmFuZHMgJiYgISANCj4+IHNici0+cmVzZXQpDQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHNicl9tYWtlX2ZfdGFibGVsaW0oc2JyKTsNCj4+ICvCoMKg wqDCoMKgwqDCoCB9IGVsc2Ugew0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmVhZF9z YnJfaGVhZGVyKHNiciwgZ2IsIDEpOw0KPj4gK8KgwqDCoMKgwqDCoMKgIH0NCj4+ICsNCj4+ ICvCoMKgwqDCoMKgwqDCoCBzYnItPnN0YXJ0ID0gMTsNCj4+ICvCoMKgwqAgfQ0KPj4gKw0K Pj4gK8KgwqDCoCAvL1NhdmUgc29tZSBzdGF0ZSBmcm9tIHRoZSBwcmV2aW91cyBmcmFtZS4N Cj4+ICvCoMKgwqAgc2JyLT5reFswXSA9IHNici0+a3hbMV07DQo+PiArwqDCoMKgIHNici0+ bVswXSA9IHNici0+bVsxXTsNCj4+ICvCoMKgwqAgc2JyLT5reF9hbmRfbV9wdXNoZWQgPSAx Ow0KPj4gKw0KPj4gK8KgwqDCoCBpZiAoc2JyLT5yZXNldCkNCj4+ICvCoMKgwqDCoMKgwqDC oCBzYnJfcmVzZXQoYWMsIHNicik7DQo+PiArDQo+PiArwqDCoMKgIHNici0+cmVhZHlfZm9y X2RlcXVhbnQgPSAxOw0KPj4gKw0KPj4gK8KgwqDCoCBpbnQgc3RhcnQgPSBnZXRfYml0c19j b3VudChnYik7DQo+PiArDQo+PiArwqDCoMKgIGlmIChzYnJfY2ggPT0gMSkgeyAvKiBzYnJf c2luZ2xlX2NoYW5uZWxfZWxlbWVudCAqLw0KPj4gK8KgwqDCoMKgwqDCoMKgIC8qIGlmICho YXJtb25pY1NCUikgLi4uICovDQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKHJlYWRf c2JyX2dyaWQoYWMsIHNiciwgZ2IsICZzYnItPmRhdGFbMF0pKQ0KPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgcmV0dXJuIC0xOw0KPj4gKw0KPj4gK8KgwqDCoMKgwqDCoMKgIHJlYWRf c2JyX2R0ZGYoc2JyLCBnYiwgJnNici0+ZGF0YVswXSwgaW5kZXBfZmxhZyk7DQo+PiArwqDC oMKgwqDCoMKgwqAgcmVhZF9zYnJfaW52ZihzYnIsIGdiLCAmc2JyLT5kYXRhWzBdKTsNCj4+ ICsNCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoKHJldCA9IHJlYWRfc2JyX2VudmVsb3BlKGFj LCBzYnIsIGdiLCAmc2JyLT5kYXRhWzBdLCAwKSkgDQo+PiA8IDApDQo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Ow0KPj4gKw0KPj4gK8KgwqDCoMKgwqDCoMKgIGlm ICgocmV0ID0gcmVhZF9zYnJfbm9pc2UoYWMsIHNiciwgZ2IsICZzYnItPmRhdGFbMF0sIDAp KSA8IDApDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Ow0KPj4gKw0K Pj4gK8KgwqDCoMKgwqDCoMKgIGlmICgoc2JyLT5kYXRhWzBdLmJzX2FkZF9oYXJtb25pY19m bGFnID0gZ2V0X2JpdHMxKGdiKSkpDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnZXRf Yml0czFfdmVjdG9yKGdiLCBzYnItPmRhdGFbMF0uYnNfYWRkX2hhcm1vbmljLCBzYnItIA0K Pj4gPm5bMV0pOw0KPj4gK8KgwqDCoCB9IGVsc2UgaWYgKGdldF9iaXRzMShnYikpIHsgLyog YnNfY291cGxpbmcgPT0gMSAqLw0KPj4gK8KgwqDCoMKgwqDCoMKgIC8qIGlmIChoYXJtb25p Y1NCUikgLi4uICovDQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKHJlYWRfc2JyX2dy aWQoYWMsIHNiciwgZ2IsICZzYnItPmRhdGFbMF0pKQ0KPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcmV0dXJuIC0xOw0KPj4gK8KgwqDCoMKgwqDCoMKgIGNvcHlfc2JyX2dyaWQoJnNi ci0+ZGF0YVsxXSwgJnNici0+ZGF0YVswXSk7DQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqAg cmVhZF9zYnJfZHRkZihzYnIsIGdiLCAmc2JyLT5kYXRhWzBdLCBpbmRlcF9mbGFnKTsNCj4+ ICvCoMKgwqDCoMKgwqDCoCByZWFkX3Nicl9kdGRmKHNiciwgZ2IsICZzYnItPmRhdGFbMV0s IGluZGVwX2ZsYWcpOw0KPj4gKw0KPj4gK8KgwqDCoMKgwqDCoMKgIHJlYWRfc2JyX2ludmYo c2JyLCBnYiwgJnNici0+ZGF0YVswXSk7DQo+PiArwqDCoMKgwqDCoMKgwqAgbWVtY3B5KHNi ci0+ZGF0YVsxXS5ic19pbnZmX21vZGVbMV0sIHNici0gDQo+PiA+ZGF0YVsxXS5ic19pbnZm X21vZGVbMF0sDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzaXplb2Yoc2Jy LT5kYXRhWzFdLmJzX2ludmZfbW9kZVswXSkpOw0KPj4gK8KgwqDCoMKgwqDCoMKgIG1lbWNw eShzYnItPmRhdGFbMV0uYnNfaW52Zl9tb2RlWzBdLCBzYnItIA0KPj4gPmRhdGFbMF0uYnNf aW52Zl9tb2RlWzBdLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2l6ZW9m KHNici0+ZGF0YVsxXS5ic19pbnZmX21vZGVbMF0pKTsNCj4+ICsNCj4+ICvCoMKgwqDCoMKg wqDCoCBpZiAoKHJldCA9IHJlYWRfc2JyX2VudmVsb3BlKGFjLCBzYnIsIGdiLCAmc2JyLT5k YXRhWzBdLCAwKSkgDQo+PiA8IDApDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1 cm4gcmV0Ow0KPj4gK8KgwqDCoMKgwqDCoMKgIGlmICgocmV0ID0gcmVhZF9zYnJfbm9pc2Uo YWMsIHNiciwgZ2IsICZzYnItPmRhdGFbMF0sIDApKSA8IDApDQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCByZXR1cm4gcmV0Ow0KPj4gKw0KPj4gK8KgwqDCoMKgwqDCoMKgIGlmICgo cmV0ID0gcmVhZF9zYnJfZW52ZWxvcGUoYWMsIHNiciwgZ2IsICZzYnItPmRhdGFbMV0sIDEp KSANCj4+IDwgMCkNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7DQo+ PiArwqDCoMKgwqDCoMKgwqAgaWYgKChyZXQgPSByZWFkX3Nicl9ub2lzZShhYywgc2JyLCBn YiwgJnNici0+ZGF0YVsxXSwgMSkpIDwgMCkNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHJldHVybiByZXQ7DQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKChzYnItPmRhdGFb MF0uYnNfYWRkX2hhcm1vbmljX2ZsYWcgPSBnZXRfYml0czEoZ2IpKSkNCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGdldF9iaXRzMV92ZWN0b3IoZ2IsIHNici0+ZGF0YVswXS5ic19h ZGRfaGFybW9uaWMsIHNici0gDQo+PiA+blsxXSk7DQo+PiArwqDCoMKgwqDCoMKgwqAgaWYg KChzYnItPmRhdGFbMV0uYnNfYWRkX2hhcm1vbmljX2ZsYWcgPSBnZXRfYml0czEoZ2IpKSkN Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdldF9iaXRzMV92ZWN0b3IoZ2IsIHNici0+ ZGF0YVsxXS5ic19hZGRfaGFybW9uaWMsIHNici0gDQo+PiA+blsxXSk7DQo+PiArwqDCoMKg IH0gZWxzZSB7IC8qIGJzX2NvdXBsaW5nID09IDAgKi8NCj4+ICvCoMKgwqDCoMKgwqDCoCAv KiBpZiAoaGFybW9uaWNTQlIpIC4uLiAqLw0KPj4gK8KgwqDCoMKgwqDCoMKgIGlmIChyZWFk X3Nicl9ncmlkKGFjLCBzYnIsIGdiLCAmc2JyLT5kYXRhWzBdKSkNCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHJldHVybiAtMTsNCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAocmVhZF9z YnJfZ3JpZChhYywgc2JyLCBnYiwgJnNici0+ZGF0YVsxXSkpDQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCByZXR1cm4gLTE7DQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqAgcmVhZF9z YnJfZHRkZihzYnIsIGdiLCAmc2JyLT5kYXRhWzBdLCBpbmRlcF9mbGFnKTsNCj4+ICvCoMKg wqDCoMKgwqDCoCByZWFkX3Nicl9kdGRmKHNiciwgZ2IsICZzYnItPmRhdGFbMV0sIGluZGVw X2ZsYWcpOw0KPj4gKw0KPj4gK8KgwqDCoMKgwqDCoMKgIHJlYWRfc2JyX2ludmYoc2JyLCBn YiwgJnNici0+ZGF0YVswXSk7DQo+PiArwqDCoMKgwqDCoMKgwqAgcmVhZF9zYnJfaW52Zihz YnIsIGdiLCAmc2JyLT5kYXRhWzFdKTsNCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAo KHJldCA9IHJlYWRfc2JyX2VudmVsb3BlKGFjLCBzYnIsIGdiLCAmc2JyLT5kYXRhWzBdLCAw KSkgDQo+PiA8IDApDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Ow0K Pj4gK8KgwqDCoMKgwqDCoMKgIGlmICgocmV0ID0gcmVhZF9zYnJfZW52ZWxvcGUoYWMsIHNi ciwgZ2IsICZzYnItPmRhdGFbMV0sIDEpKSANCj4+IDwgMCkNCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHJldHVybiByZXQ7DQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKChy ZXQgPSByZWFkX3Nicl9ub2lzZShhYywgc2JyLCBnYiwgJnNici0+ZGF0YVswXSwgMCkpIDwg MCkNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7DQo+PiArwqDCoMKg wqDCoMKgwqAgaWYgKChyZXQgPSByZWFkX3Nicl9ub2lzZShhYywgc2JyLCBnYiwgJnNici0+ ZGF0YVsxXSwgMSkpIDwgMCkNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBy ZXQ7DQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKChzYnItPmRhdGFbMF0uYnNfYWRk X2hhcm1vbmljX2ZsYWcgPSBnZXRfYml0czEoZ2IpKSkNCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGdldF9iaXRzMV92ZWN0b3IoZ2IsIHNici0+ZGF0YVswXS5ic19hZGRfaGFybW9u aWMsIHNici0gDQo+PiA+blsxXSk7DQo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKChzYnItPmRh dGFbMV0uYnNfYWRkX2hhcm1vbmljX2ZsYWcgPSBnZXRfYml0czEoZ2IpKSkNCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGdldF9iaXRzMV92ZWN0b3IoZ2IsIHNici0+ZGF0YVsxXS5i c19hZGRfaGFybW9uaWMsIHNici0gDQo+PiA+blsxXSk7DQo+PiArwqDCoMKgIH0NCj4+ICsN Cj4+ICvCoMKgwqAgcmV0dXJuIDA7DQo+PiArfQ0KPj4gKyNlbmRpZg0KPj4gKw0KPj4gwqAg LyoqDQo+PiDCoMKgICogQW5hbHlzaXMgUU1GIEJhbmsgKDE0NDk2LTMgc3AwNCBwMjA2KQ0K Pj4gwqDCoCAqDQo+PiBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9zYnIuaCBiL2xpYmF2Y29k ZWMvc2JyLmgNCj4+IGluZGV4IGZlM2EzOTYwM2EuLjQwYmIzMGUwNGQgMTAwNjQ0DQo+PiAt LS0gYS9saWJhdmNvZGVjL3Nici5oDQo+PiArKysgYi9saWJhdmNvZGVjL3Nici5oDQo+PiBA QCAtNjgsOSArNjgsOSBAQCB0eXBlZGVmIHN0cnVjdCBTQlJEYXRhIHsNCj4+IMKgwqDCoMKg wqAgdW5zaWduZWTCoMKgwqDCoMKgwqDCoMKgwqDCoCBic19mcmFtZV9jbGFzczsNCj4+IMKg wqDCoMKgwqAgdW5zaWduZWTCoMKgwqDCoMKgwqDCoMKgwqDCoCBic19hZGRfaGFybW9uaWNf ZmxhZzsNCj4+IMKgwqDCoMKgwqAgQUFDX1NJR05FwqDCoMKgwqDCoMKgwqDCoMKgIGJzX251 bV9lbnY7DQo+PiAtwqDCoMKgIHVpbnQ4X3TCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJzX2Zy ZXFfcmVzWzddOw0KPj4gK8KgwqDCoCB1aW50OF90wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBi c19mcmVxX3Jlc1s5XTsNCj4+IMKgwqDCoMKgwqAgQUFDX1NJR05FwqDCoMKgwqDCoMKgwqDC oMKgIGJzX251bV9ub2lzZTsNCj4+IC3CoMKgwqAgdWludDhfdMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgYnNfZGZfZW52WzVdOw0KPj4gK8KgwqDCoCB1aW50OF90wqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBic19kZl9lbnZbOV07DQo+PiDCoMKgwqDCoMKgIHVpbnQ4X3TCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGJzX2RmX25vaXNlWzJdOw0KPj4gwqDCoMKgwqDCoCB1aW50OF90wqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBic19pbnZmX21vZGVbMl1bNV07DQo+PiDCoMKgwqDCoMKg IHVpbnQ4X3TCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJzX2FkZF9oYXJtb25pY1s0OF07DQo+ PiBAQCAtOTUsMjEgKzk1LDI0IEBAIHR5cGVkZWYgc3RydWN0IFNCUkRhdGEgew0KPj4gwqDC oMKgwqDCoCBERUNMQVJFX0FMSUdORUQoMTYsIElOVEZMT0FULCBZKVsyXVszOF1bNjRdWzJd Ow0KPj4gwqDCoMKgwqDCoCBERUNMQVJFX0FMSUdORUQoMTYsIEFBQ19GTE9BVCwgZ190ZW1w KVs0Ml1bNDhdOw0KPj4gwqDCoMKgwqDCoCBBQUNfRkxPQVTCoMKgwqDCoMKgwqDCoMKgwqAg cV90ZW1wWzQyXVs0OF07DQo+PiAtwqDCoMKgIHVpbnQ4X3TCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHNfaW5kZXhtYXBwZWRbOF1bNDhdOw0KPj4gK8KgwqDCoCB1aW50OF90wqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBzX2luZGV4bWFwcGVkWzldWzQ4XTsNCj4+IMKgwqDCoMKgwqAgLy8v RW52ZWxvcGUgc2NhbGVmYWN0b3JzDQo+PiAtwqDCoMKgIHVpbnQ4X3TCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGVudl9mYWNzX3FbNl1bNDhdOw0KPj4gLcKgwqDCoCBBQUNfRkxPQVTCoMKg wqDCoMKgwqDCoMKgwqAgZW52X2ZhY3NbNl1bNDhdOw0KPj4gK8KgwqDCoCB1aW50OF90wqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBlbnZfZmFjc19xWzldWzQ4XTsNCj4+ICvCoMKgwqAgQUFD X0ZMT0FUwqDCoMKgwqDCoMKgwqDCoMKgIGVudl9mYWNzWzldWzQ4XTsNCj4+IMKgwqDCoMKg wqAgLy8vTm9pc2Ugc2NhbGVmYWN0b3JzDQo+PiDCoMKgwqDCoMKgIHVpbnQ4X3TCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIG5vaXNlX2ZhY3NfcVszXVs1XTsNCj4+IMKgwqDCoMKgwqAgQUFD X0ZMT0FUwqDCoMKgwqDCoMKgwqDCoMKgIG5vaXNlX2ZhY3NbM11bNV07DQo+PiDCoMKgwqDC oMKgIC8vL0VudmVsb3BlIHRpbWUgYm9yZGVycw0KPj4gLcKgwqDCoCB1aW50OF90wqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB0X2Vudls4XTsNCj4+ICvCoMKgwqAgdWludDhfdMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgdF9lbnZbOV07DQo+PiDCoMKgwqDCoMKgIC8vL0VudmVsb3BlIHRp bWUgYm9yZGVyIG9mIHRoZSBsYXN0IGVudmVsb3BlIG9mIHRoZSBwcmV2aW91cyBmcmFtZQ0K Pj4gwqDCoMKgwqDCoCB1aW50OF90wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0X2Vudl9udW1f ZW52X29sZDsNCj4+IMKgwqDCoMKgwqAgLy8vTm9pc2UgdGltZSBib3JkZXJzDQo+PiDCoMKg wqDCoMKgIHVpbnQ4X3TCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHRfcVszXTsNCj4+IMKgwqDC oMKgwqAgdW5zaWduZWTCoMKgwqDCoMKgwqDCoMKgwqDCoCBmX2luZGV4bm9pc2U7DQo+PiDC oMKgwqDCoMKgIHVuc2lnbmVkwqDCoMKgwqDCoMKgwqDCoMKgwqAgZl9pbmRleHNpbmU7DQo+ PiArwqDCoMKgIC8vaW50ZXJfdGVzIChVU0FDKQ0KPj4gK8KgwqDCoCB1aW50OF90wqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB0ZW1wX3NoYXBlWzZdOw0KPj4gK8KgwqDCoCB1aW50OF90wqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB0ZW1wX3NoYXBlX21vZGVbNl07DQo+PiDCoMKgwqDCoMKg IC8qKiBAfSAqLw0KPj4gwqAgfSBTQlJEYXRhOw0KPj4gQEAgLTE0Miw5ICsxNDUsMTIgQEAg c3RydWN0IFNwZWN0cmFsQmFuZFJlcGxpY2F0aW9uIHsNCj4+IMKgwqDCoMKgwqAgaW50wqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0YXJ0Ow0KPj4gwqDCoMKgwqDCoCBpbnTC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmVhZHlfZm9yX2RlcXVhbnQ7DQo+PiDC oMKgwqDCoMKgIGludMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZF9hYWM7DQo+ PiArwqDCoMKgIGludMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1c2FjOw0KPj4g K8KgwqDCoCBpbnTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50ZXJfdGVzOyAv LyBVU0FDLW9ubHkNCj4+IMKgwqDCoMKgwqAgaW50wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHJlc2V0Ow0KPj4gwqDCoMKgwqDCoCBTcGVjdHJ1bVBhcmFtZXRlcnMgc3BlY3Ry dW1fcGFyYW1zOw0KPj4gwqDCoMKgwqDCoCBpbnTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgYnNfYW1wX3Jlc19oZWFkZXI7DQo+PiArwqDCoMKgIGludMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBic19zYnJfcHJlcHJvY2Vzc2luZzsgLy8gVVNBQy1vbmx5DQo+ PiDCoMKgwqDCoMKgIC8qKg0KPj4gwqDCoMKgwqDCoMKgICogQG5hbWUgVmFyaWFibGVzIGFz c29jaWF0ZWQgd2l0aCBic19oZWFkZXJfZXh0cmFfMg0KPj4gwqDCoMKgwqDCoMKgICogQHsN Cj4+IEBAIC0xOTYsMTggKzIwMiwxOCBAQCBzdHJ1Y3QgU3BlY3RyYWxCYW5kUmVwbGljYXRp b24gew0KPj4gwqDCoMKgwqDCoCAvLy9GaXJzdCBjb2VmZmljaWVudCB1c2VkIHRvIGZpbHRl ciB0aGUgc3ViYmFuZCBzaWduYWxzDQo+PiDCoMKgwqDCoMKgIERFQ0xBUkVfQUxJR05FRCgx NiwgSU5URkxPQVQsIGFscGhhMSlbNjRdWzJdOw0KPj4gwqDCoMKgwqDCoCAvLy9EZXF1YW50 aXplZCBlbnZlbG9wZSBzY2FsZWZhY3RvcnMsIHJlbWFwcGVkDQo+PiAtwqDCoMKgIEFBQ19G TE9BVMKgwqDCoMKgwqDCoMKgwqDCoCBlX29yaWdtYXBwZWRbN11bNDhdOw0KPj4gK8KgwqDC oCBBQUNfRkxPQVTCoMKgwqDCoMKgwqDCoMKgwqAgZV9vcmlnbWFwcGVkWzhdWzQ4XTsNCj4+ IMKgwqDCoMKgwqAgLy8vRGVxdWFudGl6ZWQgbm9pc2Ugc2NhbGVmYWN0b3JzLCByZW1hcHBl ZA0KPj4gLcKgwqDCoCBBQUNfRkxPQVTCoMKgwqDCoMKgwqDCoMKgwqAgcV9tYXBwZWRbN11b NDhdOw0KPj4gK8KgwqDCoCBBQUNfRkxPQVTCoMKgwqDCoMKgwqDCoMKgwqAgcV9tYXBwZWRb OF1bNDhdOw0KPj4gwqDCoMKgwqDCoCAvLy9TaW51c29pZGFsIHByZXNlbmNlLCByZW1hcHBl ZA0KPj4gLcKgwqDCoCB1aW50OF90wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzX21hcHBlZFs3 XVs0OF07DQo+PiArwqDCoMKgIHVpbnQ4X3TCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNfbWFw cGVkWzhdWzQ4XTsNCj4+IMKgwqDCoMKgwqAgLy8vRXN0aW1hdGVkIGVudmVsb3BlDQo+PiAt wqDCoMKgIEFBQ19GTE9BVMKgwqDCoMKgwqDCoMKgwqDCoCBlX2N1cnJbN11bNDhdOw0KPj4g K8KgwqDCoCBBQUNfRkxPQVTCoMKgwqDCoMKgwqDCoMKgwqAgZV9jdXJyWzhdWzQ4XTsNCj4+ IMKgwqDCoMKgwqAgLy8vQW1wbGl0dWRlIGFkanVzdGVkIG5vaXNlIHNjYWxlZmFjdG9ycw0K Pj4gLcKgwqDCoCBBQUNfRkxPQVTCoMKgwqDCoMKgwqDCoMKgwqAgcV9tWzddWzQ4XTsNCj4+ ICvCoMKgwqAgQUFDX0ZMT0FUwqDCoMKgwqDCoMKgwqDCoMKgIHFfbVs4XVs0OF07DQo+PiDC oMKgwqDCoMKgIC8vL1NpbnVzb2lkYWwgbGV2ZWxzDQo+PiAtwqDCoMKgIEFBQ19GTE9BVMKg wqDCoMKgwqDCoMKgwqDCoCBzX21bN11bNDhdOw0KPj4gLcKgwqDCoCBBQUNfRkxPQVTCoMKg wqDCoMKgwqDCoMKgwqAgZ2Fpbls3XVs0OF07DQo+PiArwqDCoMKgIEFBQ19GTE9BVMKgwqDC oMKgwqDCoMKgwqDCoCBzX21bOF1bNDhdOw0KPj4gK8KgwqDCoCBBQUNfRkxPQVTCoMKgwqDC oMKgwqDCoMKgwqAgZ2Fpbls4XVs0OF07DQo+PiDCoMKgwqDCoMKgIERFQ0xBUkVfQUxJR05F RCgzMiwgSU5URkxPQVQsIHFtZl9maWx0ZXJfc2NyYXRjaClbNV1bNjRdOw0KPj4gwqDCoMKg wqDCoCBBVlRYQ29udGV4dMKgwqDCoMKgwqDCoCAqbWRjdF9hbmE7DQo+PiDCoMKgwqDCoMKg IGF2X3R4X2ZuwqDCoMKgwqDCoMKgwqDCoMKgwqAgbWRjdF9hbmFfZm47DQo+IA0KPiBJJ2xs IHdhaXQgMiBtb3JlIGRheXMgYmVmb3JlIG1lcmdpbmcgdGhpcyBwYXRjaCwgYnV0IEknbGwg cHVzaCB0aGUgb3RoZXIgDQo+IDUgZml4L3ByZXAgcGF0Y2hlcyB0b21vcnJvdy4NCg0KTGFz dCBwYXRjaCBwdXNoZWQuDQo= --------------x0b43nGFp0f3TwjoGGgUOf0U 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----- --------------x0b43nGFp0f3TwjoGGgUOf0U-- --------------olrk8RI2xjSMWDIoNPYSSQyd-- --------------M5Q4XpGdCazkWEaegplyPEeX 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/qXwPwNEZAUCZnfKvgUDAAAAAAAKCRCi/qXwPwNEZMZo AP9f6GkIstPKiH/39cSZ2W25vU4PuUWuwYeATIPTeOzcTQEAmPmqUDnuFbWpFLDL+pcIOkJ0uafn kMXmFV+1Ia4ytgc= =W9hH -----END PGP SIGNATURE----- --------------M5Q4XpGdCazkWEaegplyPEeX-- --===============0068037348576493549== 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". --===============0068037348576493549==--