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 0ABE046546 for ; Sun, 21 May 2023 13:15:24 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7ECDA68C052; Sun, 21 May 2023 16:15:22 +0300 (EEST) Received: from sinikuusama2.dnainternet.net (sinikuusama2.dnainternet.net [83.102.40.152]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4C45668BF60 for ; Sun, 21 May 2023 16:15:16 +0300 (EEST) Received: from localhost (localhost [127.0.0.1]) by sinikuusama2.dnainternet.net (Postfix) with ESMTP id D239AE7DB for ; Sun, 21 May 2023 16:15:14 +0300 (EEST) X-Virus-Scanned: DNA Internet at dnainternet.net X-Spam-Flag: NO X-Spam-Score: 0.92 X-Spam-Level: X-Spam-Status: No, score=0.92 tagged_above=-9999 required=6 tests=[SPF_FAIL=0.919, SPF_HELO_NONE=0.001] autolearn=disabled Received: from sinikuusama2.dnainternet.net ([83.102.40.152]) by localhost (sinikuusama2.dnainternet.net [127.0.0.1]) (DNA Internet, port 10041) with ESMTP id P5RP9vtMbqLt for ; Sun, 21 May 2023 16:15:14 +0300 (EEST) Received: from luumupuu2.dnainternet.net (luumupuu2.dnainternet.net [83.102.40.55]) by sinikuusama2.dnainternet.net (Postfix) with ESMTP id 721FFE94A for ; Sun, 21 May 2023 16:15:14 +0300 (EEST) Received: from basile.localnet (87-92-194-88.rev.dnainternet.fi [87.92.194.88]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by luumupuu2.dnainternet.net (Postfix) with ESMTPS id 57E742C62 for ; Sun, 21 May 2023 16:15:13 +0300 (EEST) From: =?ISO-8859-1?Q?R=E9mi?= Denis-Courmont To: ffmpeg-devel@ffmpeg.org Date: Sun, 21 May 2023 16:15:12 +0300 Message-ID: <12209065.O9o76ZdvQC@basile.remlab.net> Organization: Remlab In-Reply-To: <20230521130319.13813-2-nuomi2021@gmail.com> References: <20230521130319.13813-1-nuomi2021@gmail.com> <20230521130319.13813-2-nuomi2021@gmail.com> MIME-Version: 1.0 Subject: Re: [FFmpeg-devel] [PATCH 01/14] vvcdec: add thread executor X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: TGUgc3VubnVudGFpbmEgMjEuIHRvdWtva3V1dGEgMjAyMywgMTYuMDMuMDYgRUVTVCBOdW8gTWkg YSDDqWNyaXQgOgo+IFRoZSBleGVjdXRvciBkZXNpZ24gcGF0dGVybiB3YXMgaW5yb2R1Y2VkIGJ5 IGphdmEKPiA8aHR0cHM6Ly9kb2NzLm9yYWNsZS5jb20vZW4vamF2YS9qYXZhc2UvMjAvZG9jcy9h cGkvamF2YS5iYXNlL2phdmEvdXRpbC9jb25jCj4gdXJyZW50L0V4ZWN1dG9yLmh0bWw+IGl0IGFs c28gYWRhcHRlZCBieSBweXRob24KPiA8aHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5 L2NvbmN1cnJlbnQuZnV0dXJlcy5odG1sPgo+IENvbXBhcmVkIHRvIGhhbmRjcmFmdGVkIHRocmVh ZCBwb29sIG1hbmFnZW1lbnQsIGl0IGdyZWF0bHkgc2ltcGxpZmllcyB0aGUKPiB0aHJlYWQgY29k ZS4gLS0tCj4gIGxpYmF2Y29kZWMvTWFrZWZpbGUgICAgICAgICAgIHwgICAxICsKPiAgbGliYXZj b2RlYy92dmMvTWFrZWZpbGUgICAgICAgfCAgIDQgKwo+ICBsaWJhdmNvZGVjL3Z2Yy92dmNfZXhl Y3V0b3IuYyB8IDE5MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIGxpYmF2 Y29kZWMvdnZjL3Z2Y19leGVjdXRvci5oIHwgIDczICsrKysrKysrKysrKysKPiAgNCBmaWxlcyBj aGFuZ2VkLCAyNzEgaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZjb2Rl Yy92dmMvTWFrZWZpbGUKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMvdnZjL3Z2Y19l eGVjdXRvci5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL3Z2Yy92dmNfZXhlY3V0 b3IuaAo+IAo+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL01ha2VmaWxlIGIvbGliYXZjb2RlYy9N YWtlZmlsZQo+IGluZGV4IGRhYjA5ZjQ4M2EuLmIxZmNiZjcxYjIgMTAwNjQ0Cj4gLS0tIGEvbGli YXZjb2RlYy9NYWtlZmlsZQo+ICsrKyBiL2xpYmF2Y29kZWMvTWFrZWZpbGUKPiBAQCAtNjIsNiAr NjIsNyBAQCBPQkpTID0gYWMzX3BhcnNlci5vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCj4gICAgICAgICAgICAgIFwgeGlwaC5vICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCj4gICAgIFwKPiAKPiAgIyBzdWJzeXN0ZW1z Cj4gK2luY2x1ZGUgJChTUkNfUEFUSCkvbGliYXZjb2RlYy92dmMvTWFrZWZpbGUKPiAgT0JKUy0k KENPTkZJR19BQU5EQ1RUQUJMRVMpICAgICAgICAgICAgKz0gYWFuZGN0dGFiLm8KPiAgT0JKUy0k KENPTkZJR19BQzNEU1ApICAgICAgICAgICAgICAgICAgKz0gYWMzZHNwLm8gYWMzLm8gYWMzdGFi Lm8KPiAgT0JKUy0kKENPTkZJR19BRFRTX0hFQURFUikgICAgICAgICAgICAgKz0gYWR0c19oZWFk ZXIubwo+IG1wZWc0YXVkaW9fc2FtcGxlX3JhdGVzLm8gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMv dnZjL01ha2VmaWxlCj4gYi9saWJhdmNvZGVjL3Z2Yy9NYWtlZmlsZQo+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMC4uYzRiOTNlMDM4OQo+IC0tLSAvZGV2L251bGwKPiAr KysgYi9saWJhdmNvZGVjL3Z2Yy9NYWtlZmlsZQo+IEBAIC0wLDAgKzEsNCBAQAo+ICtjbGVhbjo6 Cj4gKwkkKFJNKSAkKENMRUFOU1VGRklYRVM6JT1saWJhdmNvZGVjL3Z2Yy8lKQo+ICsKPiArT0JK Uy0kKENPTkZJR19WVkNfREVDT0RFUikgICAgICAgICAgKz0gIHZ2Yy92dmNfZXhlY3V0b3Iubwo+ IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3Z2Yy92dmNfZXhlY3V0b3IuYyBiL2xpYmF2Y29kZWMv dnZjL3Z2Y19leGVjdXRvci5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAw MDAwLi5mMmFmZGY3OWFlCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYmF2Y29kZWMvdnZjL3Z2 Y19leGVjdXRvci5jCj4gQEAgLTAsMCArMSwxOTMgQEAKPiArLyoKPiArICogVlZDIHZpZGVvIERl Y29kZXIKPiArICoKPiArICogQ29weXJpZ2h0IChDKSAyMDIyIE51byBNaQo+ICsgKgo+ICsgKiBU aGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCj4gKyAqCj4gKyAqIEZGbXBlZyBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKPiArICogbW9kaWZ5IGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+ICsgKiBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK PiArICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCj4gKyAqCj4gKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsgKiBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQo+ ICsgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+ICsg Kgo+ICsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2Vy IEdlbmVyYWwgUHVibGljCj4gKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwg d3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKPiArICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxCj4gVVNBICsg Ki8KPiArI2luY2x1ZGUgImxpYmF2dXRpbC9hdnV0aWwuaCIKPiArI2luY2x1ZGUgImxpYmF2dXRp bC90aHJlYWQuaCIKPiArCj4gKyNpbmNsdWRlICJ2dmNfZXhlY3V0b3IuaCIKClRoaXMgZG9lcyBu b3Qgc2VlbSBzcGVjaWZpYyB0byBWVkMgaW4gYW55IHdheSwgc28gdGhlIG5hbWluZyAoYW5kIGNo b2ljZSBvZiAKZm9sZGVyIHBsYWNlbWVudCkgaXMgcmF0aGVyIHdlaXJkLgoKPiArCj4gK3R5cGVk ZWYgc3RydWN0IFRocmVhZEluZm8gewo+ICsgICAgaW50IGlkeDsKPiArICAgIFZWQ0V4ZWN1dG9y ICplOwo+ICsgICAgcHRocmVhZF90IHRocmVhZDsKPiArfSBUaHJlYWRJbmZvOwo+ICsKPiArc3Ry dWN0IFZWQ0V4ZWN1dG9yIHsKPiArICAgIFZWQ1Rhc2tDYWxsYmFja3MgY2I7Cj4gKyAgICBUaHJl YWRJbmZvICp0aHJlYWRzOwo+ICsgICAgdWludDhfdCAqbG9jYWxfY29udGV4dHM7CgpJdCBzZWVt cyBvZGQgYW5kIG5lZWRsZXNzIGNvbXBsZXggdG8gc2VwYXJhdGUgdGhpcyBmcm9tIHRoZSB0aHJl YWQgaW5mby4gSXQgCmxvb2tzIGxpa2UgeW91IGNvdWxkIHNpbXBseSBhcHBlbmQgYSBwb2ludGVy IG9yIGEgZmxleGlibGUgYXJyYXkgdG8gVGhyZWFkSW5mbyAKaW5zdGVhZC4KCj4gKyAgICBpbnQg dGhyZWFkX2NvdW50Owo+ICsKPiArICAgIHB0aHJlYWRfbXV0ZXhfdCBsb2NrOwo+ICsgICAgcHRo cmVhZF9jb25kX3QgY29uZDsKPiArICAgIGludCBkaWU7Cj4gKyAgICBWVkNUYXNrbGV0ICp0YXNr czsKPiArfTsKPiArCj4gK3N0YXRpYyB2b2lkIHJlbW92ZV90YXNrKFZWQ1Rhc2tsZXQgKipwcmV2 LCBWVkNUYXNrbGV0ICp0KQo+ICt7Cj4gKyAgICAqcHJldiAgPSB0LT5uZXh0Owo+ICsgICAgdC0+ bmV4dCA9IE5VTEw7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGFkZF90YXNrKFZWQ1Rhc2tsZXQg KipwcmV2LCBWVkNUYXNrbGV0ICp0KQo+ICt7Cj4gKyAgICB0LT5uZXh0ID0gKnByZXY7Cj4gKyAg ICAqcHJldiAgID0gdDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgKmV4ZWN1dG9yX3dvcmtlcl90 YXNrKHZvaWQgKmRhdGEpCj4gK3sKPiArICAgIFRocmVhZEluZm8gKnRpID0gKFRocmVhZEluZm8q KWRhdGE7Cj4gKyAgICBWVkNFeGVjdXRvciAqZSA9IHRpLT5lOwo+ICsgICAgdm9pZCAqbGMgICAg ICAgPSBlLT5sb2NhbF9jb250ZXh0cyArIHRpLT5pZHggKgo+IGUtPmNiLmxvY2FsX2NvbnRleHRf c2l6ZTsKPiArICAgIFZWQ1Rhc2tsZXQgKipwcmV2Owo+ICsgICAgVlZDVGFza0NhbGxiYWNrcyAq Y2IgPSAmZS0+Y2I7Cj4gKwo+ICsgICAgcHRocmVhZF9tdXRleF9sb2NrKCZlLT5sb2NrKTsKPiAr ICAgIHdoaWxlICgxKSB7Cj4gKyAgICAgICAgVlZDVGFza2xldCogdCA9IE5VTEw7Cj4gKyAgICAg ICAgaWYgKGUtPmRpZSkgYnJlYWs7Cj4gKwo+ICsgICAgICAgIGZvciAocHJldiA9ICZlLT50YXNr czsgKnByZXY7IHByZXYgPSAmKCpwcmV2KS0+bmV4dCkgewo+ICsgICAgICAgICAgICBpZiAoY2It PnJlYWR5KCpwcmV2LCBjYi0+dXNlcl9kYXRhKSkgewo+ICsgICAgICAgICAgICAgICAgdCA9ICpw cmV2Owo+ICsgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAg ICB9Cj4gKyAgICAgICAgaWYgKHQpIHsKPiArICAgICAgICAgICAgLy9mb3VuZCBvbmUgdGFzawo+ ICsgICAgICAgICAgICByZW1vdmVfdGFzayhwcmV2LCB0KTsKPiArICAgICAgICAgICAgcHRocmVh ZF9tdXRleF91bmxvY2soJmUtPmxvY2spOwo+ICsgICAgICAgICAgICBjYi0+cnVuKHQsIGxjLCBj Yi0+dXNlcl9kYXRhKTsKPiArICAgICAgICAgICAgcHRocmVhZF9tdXRleF9sb2NrKCZlLT5sb2Nr KTsKPiArICAgICAgICB9IGVsc2Ugewo+ICsgICAgICAgICAgICAvL25vIHRhc2sgaW4gb25lIGxv b3AKPiArICAgICAgICAgICAgcHRocmVhZF9jb25kX3dhaXQoJmUtPmNvbmQsICZlLT5sb2NrKTsK PiArICAgICAgICB9Cj4gKyAgICB9Cj4gKyAgICBwdGhyZWFkX211dGV4X3VubG9jaygmZS0+bG9j ayk7Cj4gKyAgICByZXR1cm4gTlVMTDsKPiArfQo+ICsKPiArVlZDRXhlY3V0b3IqIGZmX3Z2Y19l eGVjdXRvcl9hbGxvYyhjb25zdCBWVkNUYXNrQ2FsbGJhY2tzICpjYiwgaW50Cj4gdGhyZWFkX2Nv dW50KSArewo+ICsgICAgVlZDRXhlY3V0b3IgKmU7Cj4gKyAgICBpbnQgaSwgaiwgcmV0Owo+ICsg ICAgaWYgKCFjYiB8fCAhY2ItPnVzZXJfZGF0YSB8fCAhY2ItPnJlYWR5IHx8ICFjYi0+cnVuIHx8 Cj4gIWNiLT5wcmlvcml0eV9oaWdoZXIpICsgICAgICAgIHJldHVybiBOVUxMOwo+ICsgICAgZSA9 IGF2X2NhbGxvYygxLCBzaXplb2YoKmUpKTsKPiArICAgIGlmICghZSkKPiArICAgICAgICByZXR1 cm4gTlVMTDsKPiArICAgIGUtPmNiID0gKmNiOwo+ICsKPiArICAgIGUtPmxvY2FsX2NvbnRleHRz ID0gYXZfbWFsbG9jKHRocmVhZF9jb3VudCAqIGUtPmNiLmxvY2FsX2NvbnRleHRfc2l6ZSk7Cj4g KyAgICBpZiAoIWUtPmxvY2FsX2NvbnRleHRzKQo+ICsgICAgICAgIGdvdG8gZnJlZV9leGVjdXRv cjsKPiArCj4gKyAgICBlLT50aHJlYWRzID0gYXZfY2FsbG9jKHRocmVhZF9jb3VudCwgc2l6ZW9m KCplLT50aHJlYWRzKSk7Cj4gKyAgICBpZiAoIWUtPnRocmVhZHMpCj4gKyAgICAgICAgZ290byBm cmVlX2NvbnRleHRzOwo+ICsgICAgZm9yIChpID0gMDsgaSA8IHRocmVhZF9jb3VudDsgaSsrKSB7 Cj4gKyAgICAgICAgVGhyZWFkSW5mbyAqdGkgPSBlLT50aHJlYWRzICsgaTsKPiArICAgICAgICB0 aS0+ZSA9IGU7Cj4gKyAgICAgICAgdGktPmlkeCA9IGk7Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0 ID0gcHRocmVhZF9tdXRleF9pbml0KCZlLT5sb2NrLCBOVUxMKTsKPiArICAgIGlmIChyZXQpCj4g KyAgICAgICAgZ290byBmcmVlX3RocmVhZHM7Cj4gKwo+ICsgICAgcmV0ID0gcHRocmVhZF9jb25k X2luaXQoJmUtPmNvbmQsIE5VTEwpOwo+ICsgICAgaWYgKHJldCkKPiArICAgICAgICBnb3RvIGRl c3Ryb3lfbG9jazsKPiArCj4gKyAgICBmb3IgKGkgPSAwOyBpIDwgdGhyZWFkX2NvdW50OyBpKysp IHsKPiArICAgICAgICBUaHJlYWRJbmZvICp0aSA9IGUtPnRocmVhZHMgKyBpOwo+ICsgICAgICAg IHJldCA9IHB0aHJlYWRfY3JlYXRlKCZ0aS0+dGhyZWFkLCBOVUxMLCBleGVjdXRvcl93b3JrZXJf dGFzaywgdGkpOwo+ICsgICAgICAgIGlmIChyZXQpCj4gKyAgICAgICAgICAgIGdvdG8gam9pbl90 aHJlYWRzOwo+ICsgICAgfQo+ICsgICAgZS0+dGhyZWFkX2NvdW50ID0gdGhyZWFkX2NvdW50Owo+ ICsgICAgcmV0dXJuIGU7Cj4gKwo+ICtqb2luX3RocmVhZHM6Cj4gKyAgICBwdGhyZWFkX211dGV4 X2xvY2soJmUtPmxvY2spOwo+ICsgICAgZS0+ZGllID0gMTsKPiArICAgIHB0aHJlYWRfY29uZF9i cm9hZGNhc3QoJmUtPmNvbmQpOwo+ICsgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmUtPmxvY2sp Owo+ICsgICAgZm9yIChqID0gMDsgaiA8IGk7IGorKykKPiArICAgICAgICBwdGhyZWFkX2pvaW4o ZS0+dGhyZWFkc1tqXS50aHJlYWQsIE5VTEwpOwo+ICsgICAgcHRocmVhZF9jb25kX2Rlc3Ryb3ko JmUtPmNvbmQpOwo+ICtkZXN0cm95X2xvY2s6Cj4gKyAgICBwdGhyZWFkX211dGV4X2Rlc3Ryb3ko JmUtPmxvY2spOwo+ICtmcmVlX3RocmVhZHM6Cj4gKyAgICBhdl9mcmVlKGUtPnRocmVhZHMpOwo+ ICtmcmVlX2NvbnRleHRzOgo+ICsgICAgYXZfZnJlZShlLT5sb2NhbF9jb250ZXh0cyk7Cj4gK2Zy ZWVfZXhlY3V0b3I6Cj4gKyAgICBmcmVlKGUpOwo+ICsgICAgcmV0dXJuIE5VTEw7Cj4gK30KPiAr Cj4gK3ZvaWQgZmZfdnZjX2V4ZWN1dG9yX2ZyZWUoVlZDRXhlY3V0b3IgKipleGVjdXRvcikKPiAr ewo+ICsgICAgVlZDRXhlY3V0b3IgKmU7Cj4gKyAgICBpZiAoIWV4ZWN1dG9yIHx8ICEqZXhlY3V0 b3IpCj4gKyAgICAgICAgcmV0dXJuOwo+ICsgICAgZSA9ICpleGVjdXRvcjsKPiArCj4gKyAgICAv L3NpbmdhbCBkaWUKPiArICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmZS0+bG9jayk7Cj4gKyAgICBl LT5kaWUgPSAxOwo+ICsgICAgcHRocmVhZF9jb25kX2Jyb2FkY2FzdCgmZS0+Y29uZCk7Cj4gKyAg ICBwdGhyZWFkX211dGV4X3VubG9jaygmZS0+bG9jayk7Cj4gKwo+ICsgICAgZm9yIChpbnQgaSA9 IDA7IGkgPCBlLT50aHJlYWRfY291bnQ7IGkrKykKPiArICAgICAgICBwdGhyZWFkX2pvaW4oZS0+ dGhyZWFkc1tpXS50aHJlYWQsIE5VTEwpOwo+ICsgICAgcHRocmVhZF9jb25kX2Rlc3Ryb3koJmUt PmNvbmQpOwo+ICsgICAgcHRocmVhZF9tdXRleF9kZXN0cm95KCZlLT5sb2NrKTsKPiArCj4gKyAg ICBhdl9mcmVlKGUtPnRocmVhZHMpOwo+ICsgICAgYXZfZnJlZShlLT5sb2NhbF9jb250ZXh0cyk7 Cj4gKwo+ICsgICAgYXZfZnJlZXAoZXhlY3V0b3IpOwo+ICt9Cj4gKwo+ICt2b2lkIGZmX3Z2Y19l eGVjdXRvcl9leGVjdXRlKFZWQ0V4ZWN1dG9yICplLCBWVkNUYXNrbGV0ICp0KQo+ICt7Cj4gKyAg ICBWVkNUYXNrQ2FsbGJhY2tzICpjYiA9ICZlLT5jYjsKPiArICAgIFZWQ1Rhc2tsZXQgKipwcmV2 Owo+ICsKPiArICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmZS0+bG9jayk7Cj4gKyAgICBmb3IgKHBy ZXYgPSAmZS0+dGFza3M7ICpwcmV2ICYmIGNiLT5wcmlvcml0eV9oaWdoZXIoKnByZXYsIHQpOyBw cmV2ID0KPiAmKCpwcmV2KS0+bmV4dCkgKyAgICAgICAgLyogbm90aGluZyAqLzsKPiArICAgIGFk ZF90YXNrKHByZXYsIHQpOwo+ICsgICAgcHRocmVhZF9jb25kX3NpZ25hbCgmZS0+Y29uZCk7Cj4g KyAgICBwdGhyZWFkX211dGV4X3VubG9jaygmZS0+bG9jayk7Cj4gK30KPiArCj4gK3ZvaWQgZmZf dnZjX2V4ZWN1dG9yX3dha2V1cChWVkNFeGVjdXRvciAqZSkKPiArewo+ICsgICAgcHRocmVhZF9t dXRleF9sb2NrKCZlLT5sb2NrKTsKPiArICAgIHB0aHJlYWRfY29uZF9icm9hZGNhc3QoJmUtPmNv bmQpOwo+ICsgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmUtPmxvY2spOwoKU2lnbmFsaW5nIGEg Y29uZGl0aW9uIHZhcmlhYmxlIHdpdGhvdXQgY2hhbmdpbmcgYW55IHN0YXRlIG1ha2VzIG5vIHNl bnNlLgoKPiArfQoKLS0gClLDqW1pIERlbmlzLUNvdXJtb250Cmh0dHA6Ly93d3cucmVtbGFiLm5l dC8KCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZmZt cGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpodHRwczovL2Zm bXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKClRvIHVuc3Vic2NyaWJlLCB2 aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3Jn IHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=