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 4AECF46544 for ; Sun, 21 May 2023 14:25:25 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DFA2A68C023; Sun, 21 May 2023 17:25:14 +0300 (EEST) Received: from mail-lf1-f45.google.com (mail-lf1-f45.google.com [209.85.167.45]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BB7F868BFF8 for ; Sun, 21 May 2023 17:25:08 +0300 (EEST) Received: by mail-lf1-f45.google.com with SMTP id 2adb3069b0e04-4f00c33c3d6so5921606e87.2 for ; Sun, 21 May 2023 07:25:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1684679107; x=1687271107; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=uoaHM1va5PuZdJw8fOmH41hMdfyGgRgZ2qURqKnCLzQ=; b=O3EHJUtDqpq9qTF6ElyZcNp4zVo9QD/hjUMA7LTuh7JL3HYwxkYOlhWHaaSrz4snmg zdXpVgQh1URf3TWy/lopcHS7LqfzyLHuFfF5NfB5U7UelQygg/3++brKgrDxpFA/x9/2 xjKAsr08Ln1UJOzi+pmFT+ovUI7CpDJoQQw9vdOivrDbKbYCcbNowPLi/MEOGphUk8dh lZsLzoeutJsDDHtVUIKIi3Pdci52diLj1iew6mSP0KYc3NFuBoqJ5RfJdUsPl6iXFAIN ivtTRDLJzekqG0Msd2y8fKu6UZ9L7PiF18N7SGB4ZzoyKU4xZFhga+fT8n1hQsi3SmLY pOyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684679107; x=1687271107; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=uoaHM1va5PuZdJw8fOmH41hMdfyGgRgZ2qURqKnCLzQ=; b=B1x1tXoKXKWLlgIRj33hU0DNL6Kagq7ttPsKQFaxOtCuRxSjxPyo+Pi8huRvPocQLV UpJsg+OjvBeWuFBMxHwjeytExLWT16NkX9Bj8sfjHK/6RuKJRVNdR9XkjzXMwR5m9a4m gHYeBA5g5JMwGfsyYt0g3dQwtG3UBBS3uwAdhyR3meR4aoL82Gjx2hbZMeqasy1WOu7q C//CRlHGqdo43c38HqEFszLg4tUEcpbthr3aw4S2+yTv6094yJfZOb1kra/YRY11CuUP Rhsqb+LThpUEplh6rpvtOipF+N8g+pnlPtTwVmLCuqcDMsGpFLqasZANj4w22W68z82j FcLw== X-Gm-Message-State: AC+VfDyROsPjO9GI7GIvjIKwEtGK+h6YBk9yGgf821hIKC0cG3ZU/2cc uMuAx5pHRrBSsp7t1rnOqq2dr0At1vFLKOKMUJTLSbdxiEs= X-Google-Smtp-Source: ACHHUZ4tafKJETKZorRd4aFAraNtpyWlR2BKfh1WtyOUHVh1bXuUVpCbpgvZdb+rmKeOM2aBIaiBy3yHh+yRM/H/Ujs= X-Received: by 2002:ac2:5d24:0:b0:4eb:104b:bf61 with SMTP id i4-20020ac25d24000000b004eb104bbf61mr2475325lfb.58.1684679106838; Sun, 21 May 2023 07:25:06 -0700 (PDT) MIME-Version: 1.0 References: <20230521130319.13813-1-nuomi2021@gmail.com> <20230521130319.13813-2-nuomi2021@gmail.com> <12209065.O9o76ZdvQC@basile.remlab.net> In-Reply-To: <12209065.O9o76ZdvQC@basile.remlab.net> From: Nuo Mi Date: Sun, 21 May 2023 22:24:56 +0800 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 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: SGkgUsOpbWksClRoYW5rIHlvdSBmb3IgdGhlIGNtbWVudHMKCk9uIFN1biwgTWF5IDIxLCAyMDIz IGF0IDk6MTXigK9QTSBSw6ltaSBEZW5pcy1Db3VybW9udCA8cmVtaUByZW1sYWIubmV0PiB3cm90 ZToKCj4gTGUgc3VubnVudGFpbmEgMjEuIHRvdWtva3V1dGEgMjAyMywgMTYuMDMuMDYgRUVTVCBO dW8gTWkgYSDDqWNyaXQgOgo+ID4gVGhlIGV4ZWN1dG9yIGRlc2lnbiBwYXR0ZXJuIHdhcyBpbnJv ZHVjZWQgYnkgamF2YQo+ID4gPAo+IGh0dHBzOi8vZG9jcy5vcmFjbGUuY29tL2VuL2phdmEvamF2 YXNlLzIwL2RvY3MvYXBpL2phdmEuYmFzZS9qYXZhL3V0aWwvY29uYwo+ID4gdXJyZW50L0V4ZWN1 dG9yLmh0bWw+IGl0IGFsc28gYWRhcHRlZCBieSBweXRob24KPiA+IDxodHRwczovL2RvY3MucHl0 aG9uLm9yZy8zL2xpYnJhcnkvY29uY3VycmVudC5mdXR1cmVzLmh0bWw+Cj4gPiBDb21wYXJlZCB0 byBoYW5kY3JhZnRlZCB0aHJlYWQgcG9vbCBtYW5hZ2VtZW50LCBpdCBncmVhdGx5IHNpbXBsaWZp ZXMgdGhlCj4gPiB0aHJlYWQgY29kZS4gLS0tCj4gPiAgbGliYXZjb2RlYy9NYWtlZmlsZSAgICAg ICAgICAgfCAgIDEgKwo+ID4gIGxpYmF2Y29kZWMvdnZjL01ha2VmaWxlICAgICAgIHwgICA0ICsK PiA+ICBsaWJhdmNvZGVjL3Z2Yy92dmNfZXhlY3V0b3IuYyB8IDE5MyArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCj4gPiAgbGliYXZjb2RlYy92dmMvdnZjX2V4ZWN1dG9yLmggfCAg NzMgKysrKysrKysrKysrKwo+ID4gIDQgZmlsZXMgY2hhbmdlZCwgMjcxIGluc2VydGlvbnMoKykK PiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy92dmMvTWFrZWZpbGUKPiA+ICBjcmVh dGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy92dmMvdnZjX2V4ZWN1dG9yLmMKPiA+ICBjcmVhdGUg bW9kZSAxMDA2NDQgbGliYXZjb2RlYy92dmMvdnZjX2V4ZWN1dG9yLmgKPiA+Cj4gPiBkaWZmIC0t Z2l0IGEvbGliYXZjb2RlYy9NYWtlZmlsZSBiL2xpYmF2Y29kZWMvTWFrZWZpbGUKPiA+IGluZGV4 IGRhYjA5ZjQ4M2EuLmIxZmNiZjcxYjIgMTAwNjQ0Cj4gPiAtLS0gYS9saWJhdmNvZGVjL01ha2Vm aWxlCj4gPiArKysgYi9saWJhdmNvZGVjL01ha2VmaWxlCj4gPiBAQCAtNjIsNiArNjIsNyBAQCBP QkpTID0gYWMzX3BhcnNlci5vCj4KPiA+ICAgICAgICAgICAgICBcIHhpcGgubwo+Cj4gPiAgICAg XAo+ID4KPiA+ICAjIHN1YnN5c3RlbXMKPiA+ICtpbmNsdWRlICQoU1JDX1BBVEgpL2xpYmF2Y29k ZWMvdnZjL01ha2VmaWxlCj4gPiAgT0JKUy0kKENPTkZJR19BQU5EQ1RUQUJMRVMpICAgICAgICAg ICAgKz0gYWFuZGN0dGFiLm8KPiA+ICBPQkpTLSQoQ09ORklHX0FDM0RTUCkgICAgICAgICAgICAg ICAgICArPSBhYzNkc3AubyBhYzMubyBhYzN0YWIubwo+ID4gIE9CSlMtJChDT05GSUdfQURUU19I RUFERVIpICAgICAgICAgICAgICs9IGFkdHNfaGVhZGVyLm8KPiA+IG1wZWc0YXVkaW9fc2FtcGxl X3JhdGVzLm8gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdnZjL01ha2VmaWxlCj4gPiBiL2xpYmF2 Y29kZWMvdnZjL01ha2VmaWxlCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gaW5kZXggMDAw MDAwMDAwMC4uYzRiOTNlMDM4OQo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysrIGIvbGliYXZjb2Rl Yy92dmMvTWFrZWZpbGUKPiA+IEBAIC0wLDAgKzEsNCBAQAo+ID4gK2NsZWFuOjoKPiA+ICsgICAg ICQoUk0pICQoQ0xFQU5TVUZGSVhFUzolPWxpYmF2Y29kZWMvdnZjLyUpCj4gPiArCj4gPiArT0JK Uy0kKENPTkZJR19WVkNfREVDT0RFUikgICAgICAgICAgKz0gIHZ2Yy92dmNfZXhlY3V0b3Iubwo+ ID4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdnZjL3Z2Y19leGVjdXRvci5jCj4gYi9saWJhdmNv ZGVjL3Z2Yy92dmNfZXhlY3V0b3IuYwo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+IGluZGV4 IDAwMDAwMDAwMDAuLmYyYWZkZjc5YWUKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL2xpYmF2 Y29kZWMvdnZjL3Z2Y19leGVjdXRvci5jCj4gPiBAQCAtMCwwICsxLDE5MyBAQAo+ID4gKy8qCj4g PiArICogVlZDIHZpZGVvIERlY29kZXIKPiA+ICsgKgo+ID4gKyAqIENvcHlyaWdodCAoQykgMjAy MiBOdW8gTWkKPiA+ICsgKgo+ID4gKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KPiA+ ICsgKgo+ID4gKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IKPiA+ICsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg TGVzc2VyIEdlbmVyYWwgUHVibGljCj4gPiArICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCj4gPiArICogdmVyc2lvbiAyLjEgb2Yg dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4gPiAr ICoKPiA+ICsgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKPiA+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ID4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCj4gPiArICogTGVzc2Vy IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPiA+ICsgKgo+ID4gKyAq IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh bCBQdWJsaWMKPiA+ICsgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRl IHRvIHRoZSBGcmVlIFNvZnR3YXJlCj4gPiArICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQQo+IDAyMTEwLTEzMDEKPiA+IFVTQSAr ICovCj4gPiArI2luY2x1ZGUgImxpYmF2dXRpbC9hdnV0aWwuaCIKPiA+ICsjaW5jbHVkZSAibGli YXZ1dGlsL3RocmVhZC5oIgo+ID4gKwo+ID4gKyNpbmNsdWRlICJ2dmNfZXhlY3V0b3IuaCIKPgo+ IFRoaXMgZG9lcyBub3Qgc2VlbSBzcGVjaWZpYyB0byBWVkMgaW4gYW55IHdheSwgc28gdGhlIG5h bWluZyAoYW5kIGNob2ljZQo+IG9mCj4gZm9sZGVyIHBsYWNlbWVudCkgaXMgcmF0aGVyIHdlaXJk Lgo+Cj4gPiArCj4gPiArdHlwZWRlZiBzdHJ1Y3QgVGhyZWFkSW5mbyB7Cj4gPiArICAgIGludCBp ZHg7Cj4gPiArICAgIFZWQ0V4ZWN1dG9yICplOwo+ID4gKyAgICBwdGhyZWFkX3QgdGhyZWFkOwo+ ID4gK30gVGhyZWFkSW5mbzsKPiA+ICsKPiA+ICtzdHJ1Y3QgVlZDRXhlY3V0b3Igewo+ID4gKyAg ICBWVkNUYXNrQ2FsbGJhY2tzIGNiOwo+ID4gKyAgICBUaHJlYWRJbmZvICp0aHJlYWRzOwo+ID4g KyAgICB1aW50OF90ICpsb2NhbF9jb250ZXh0czsKPgo+IEl0IHNlZW1zIG9kZCBhbmQgbmVlZGxl c3MgY29tcGxleCB0byBzZXBhcmF0ZSB0aGlzIGZyb20gdGhlIHRocmVhZCBpbmZvLgo+IEl0Cj4g bG9va3MgbGlrZSB5b3UgY291bGQgc2ltcGx5IGFwcGVuZCBhIHBvaW50ZXIgb3IgYSBmbGV4aWJs ZSBhcnJheSB0bwo+IFRocmVhZEluZm8KPiBpbnN0ZWFkLgo+CiBEbyB5b3UgbWVhbiBpbiBWVkNU YXNrbGV0PyBObywgd2UgZG8gbm90IHdhbnQgdG8gZXhwb3NlIFRocmVhZEluZm8gZGV0YWlscwp0 byB1c2Vycy4KCgo+ID4gKyAgICBpbnQgdGhyZWFkX2NvdW50Owo+ID4gKwo+ID4gKyAgICBwdGhy ZWFkX211dGV4X3QgbG9jazsKPiA+ICsgICAgcHRocmVhZF9jb25kX3QgY29uZDsKPiA+ICsgICAg aW50IGRpZTsKPiA+ICsgICAgVlZDVGFza2xldCAqdGFza3M7Cj4gPiArfTsKPiA+ICsKPiA+ICtz dGF0aWMgdm9pZCByZW1vdmVfdGFzayhWVkNUYXNrbGV0ICoqcHJldiwgVlZDVGFza2xldCAqdCkK PiA+ICt7Cj4gPiArICAgICpwcmV2ICA9IHQtPm5leHQ7Cj4gPiArICAgIHQtPm5leHQgPSBOVUxM Owo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBhZGRfdGFzayhWVkNUYXNrbGV0ICoqcHJl diwgVlZDVGFza2xldCAqdCkKPiA+ICt7Cj4gPiArICAgIHQtPm5leHQgPSAqcHJldjsKPiA+ICsg ICAgKnByZXYgICA9IHQ7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkICpleGVjdXRvcl93 b3JrZXJfdGFzayh2b2lkICpkYXRhKQo+ID4gK3sKPiA+ICsgICAgVGhyZWFkSW5mbyAqdGkgPSAo VGhyZWFkSW5mbyopZGF0YTsKPiA+ICsgICAgVlZDRXhlY3V0b3IgKmUgPSB0aS0+ZTsKPiA+ICsg ICAgdm9pZCAqbGMgICAgICAgPSBlLT5sb2NhbF9jb250ZXh0cyArIHRpLT5pZHggKgo+ID4gZS0+ Y2IubG9jYWxfY29udGV4dF9zaXplOwo+ID4gKyAgICBWVkNUYXNrbGV0ICoqcHJldjsKPiA+ICsg ICAgVlZDVGFza0NhbGxiYWNrcyAqY2IgPSAmZS0+Y2I7Cj4gPiArCj4gPiArICAgIHB0aHJlYWRf bXV0ZXhfbG9jaygmZS0+bG9jayk7Cj4gPiArICAgIHdoaWxlICgxKSB7Cj4gPiArICAgICAgICBW VkNUYXNrbGV0KiB0ID0gTlVMTDsKPiA+ICsgICAgICAgIGlmIChlLT5kaWUpIGJyZWFrOwo+ID4g Kwo+ID4gKyAgICAgICAgZm9yIChwcmV2ID0gJmUtPnRhc2tzOyAqcHJldjsgcHJldiA9ICYoKnBy ZXYpLT5uZXh0KSB7Cj4gPiArICAgICAgICAgICAgaWYgKGNiLT5yZWFkeSgqcHJldiwgY2ItPnVz ZXJfZGF0YSkpIHsKPiA+ICsgICAgICAgICAgICAgICAgdCA9ICpwcmV2Owo+ID4gKyAgICAgICAg ICAgICAgICBicmVhazsKPiA+ICsgICAgICAgICAgICB9Cj4gPiArICAgICAgICB9Cj4gPiArICAg ICAgICBpZiAodCkgewo+ID4gKyAgICAgICAgICAgIC8vZm91bmQgb25lIHRhc2sKPiA+ICsgICAg ICAgICAgICByZW1vdmVfdGFzayhwcmV2LCB0KTsKPiA+ICsgICAgICAgICAgICBwdGhyZWFkX211 dGV4X3VubG9jaygmZS0+bG9jayk7Cj4gPiArICAgICAgICAgICAgY2ItPnJ1bih0LCBsYywgY2It PnVzZXJfZGF0YSk7Cj4gPiArICAgICAgICAgICAgcHRocmVhZF9tdXRleF9sb2NrKCZlLT5sb2Nr KTsKPiA+ICsgICAgICAgIH0gZWxzZSB7Cj4gPiArICAgICAgICAgICAgLy9ubyB0YXNrIGluIG9u ZSBsb29wCj4gPiArICAgICAgICAgICAgcHRocmVhZF9jb25kX3dhaXQoJmUtPmNvbmQsICZlLT5s b2NrKTsKPiA+ICsgICAgICAgIH0KPiA+ICsgICAgfQo+ID4gKyAgICBwdGhyZWFkX211dGV4X3Vu bG9jaygmZS0+bG9jayk7Cj4gPiArICAgIHJldHVybiBOVUxMOwo+ID4gK30KPiA+ICsKPiA+ICtW VkNFeGVjdXRvciogZmZfdnZjX2V4ZWN1dG9yX2FsbG9jKGNvbnN0IFZWQ1Rhc2tDYWxsYmFja3Mg KmNiLCBpbnQKPiA+IHRocmVhZF9jb3VudCkgK3sKPiA+ICsgICAgVlZDRXhlY3V0b3IgKmU7Cj4g PiArICAgIGludCBpLCBqLCByZXQ7Cj4gPiArICAgIGlmICghY2IgfHwgIWNiLT51c2VyX2RhdGEg fHwgIWNiLT5yZWFkeSB8fCAhY2ItPnJ1biB8fAo+ID4gIWNiLT5wcmlvcml0eV9oaWdoZXIpICsg ICAgICAgIHJldHVybiBOVUxMOwo+ID4gKyAgICBlID0gYXZfY2FsbG9jKDEsIHNpemVvZigqZSkp Owo+ID4gKyAgICBpZiAoIWUpCj4gPiArICAgICAgICByZXR1cm4gTlVMTDsKPiA+ICsgICAgZS0+ Y2IgPSAqY2I7Cj4gPiArCj4gPiArICAgIGUtPmxvY2FsX2NvbnRleHRzID0gYXZfbWFsbG9jKHRo cmVhZF9jb3VudCAqCj4gZS0+Y2IubG9jYWxfY29udGV4dF9zaXplKTsKPiA+ICsgICAgaWYgKCFl LT5sb2NhbF9jb250ZXh0cykKPiA+ICsgICAgICAgIGdvdG8gZnJlZV9leGVjdXRvcjsKPiA+ICsK PiA+ICsgICAgZS0+dGhyZWFkcyA9IGF2X2NhbGxvYyh0aHJlYWRfY291bnQsIHNpemVvZigqZS0+ dGhyZWFkcykpOwo+ID4gKyAgICBpZiAoIWUtPnRocmVhZHMpCj4gPiArICAgICAgICBnb3RvIGZy ZWVfY29udGV4dHM7Cj4gPiArICAgIGZvciAoaSA9IDA7IGkgPCB0aHJlYWRfY291bnQ7IGkrKykg ewo+ID4gKyAgICAgICAgVGhyZWFkSW5mbyAqdGkgPSBlLT50aHJlYWRzICsgaTsKPiA+ICsgICAg ICAgIHRpLT5lID0gZTsKPiA+ICsgICAgICAgIHRpLT5pZHggPSBpOwo+ID4gKyAgICB9Cj4gPiAr Cj4gPiArICAgIHJldCA9IHB0aHJlYWRfbXV0ZXhfaW5pdCgmZS0+bG9jaywgTlVMTCk7Cj4gPiAr ICAgIGlmIChyZXQpCj4gPiArICAgICAgICBnb3RvIGZyZWVfdGhyZWFkczsKPiA+ICsKPiA+ICsg ICAgcmV0ID0gcHRocmVhZF9jb25kX2luaXQoJmUtPmNvbmQsIE5VTEwpOwo+ID4gKyAgICBpZiAo cmV0KQo+ID4gKyAgICAgICAgZ290byBkZXN0cm95X2xvY2s7Cj4gPiArCj4gPiArICAgIGZvciAo aSA9IDA7IGkgPCB0aHJlYWRfY291bnQ7IGkrKykgewo+ID4gKyAgICAgICAgVGhyZWFkSW5mbyAq dGkgPSBlLT50aHJlYWRzICsgaTsKPiA+ICsgICAgICAgIHJldCA9IHB0aHJlYWRfY3JlYXRlKCZ0 aS0+dGhyZWFkLCBOVUxMLCBleGVjdXRvcl93b3JrZXJfdGFzaywKPiB0aSk7Cj4gPiArICAgICAg ICBpZiAocmV0KQo+ID4gKyAgICAgICAgICAgIGdvdG8gam9pbl90aHJlYWRzOwo+ID4gKyAgICB9 Cj4gPiArICAgIGUtPnRocmVhZF9jb3VudCA9IHRocmVhZF9jb3VudDsKPiA+ICsgICAgcmV0dXJu IGU7Cj4gPiArCj4gPiAram9pbl90aHJlYWRzOgo+ID4gKyAgICBwdGhyZWFkX211dGV4X2xvY2so JmUtPmxvY2spOwo+ID4gKyAgICBlLT5kaWUgPSAxOwo+ID4gKyAgICBwdGhyZWFkX2NvbmRfYnJv YWRjYXN0KCZlLT5jb25kKTsKPiA+ICsgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmUtPmxvY2sp Owo+ID4gKyAgICBmb3IgKGogPSAwOyBqIDwgaTsgaisrKQo+ID4gKyAgICAgICAgcHRocmVhZF9q b2luKGUtPnRocmVhZHNbal0udGhyZWFkLCBOVUxMKTsKPiA+ICsgICAgcHRocmVhZF9jb25kX2Rl c3Ryb3koJmUtPmNvbmQpOwo+ID4gK2Rlc3Ryb3lfbG9jazoKPiA+ICsgICAgcHRocmVhZF9tdXRl eF9kZXN0cm95KCZlLT5sb2NrKTsKPiA+ICtmcmVlX3RocmVhZHM6Cj4gPiArICAgIGF2X2ZyZWUo ZS0+dGhyZWFkcyk7Cj4gPiArZnJlZV9jb250ZXh0czoKPiA+ICsgICAgYXZfZnJlZShlLT5sb2Nh bF9jb250ZXh0cyk7Cj4gPiArZnJlZV9leGVjdXRvcjoKPiA+ICsgICAgZnJlZShlKTsKPiA+ICsg ICAgcmV0dXJuIE5VTEw7Cj4gPiArfQo+ID4gKwo+ID4gK3ZvaWQgZmZfdnZjX2V4ZWN1dG9yX2Zy ZWUoVlZDRXhlY3V0b3IgKipleGVjdXRvcikKPiA+ICt7Cj4gPiArICAgIFZWQ0V4ZWN1dG9yICpl Owo+ID4gKyAgICBpZiAoIWV4ZWN1dG9yIHx8ICEqZXhlY3V0b3IpCj4gPiArICAgICAgICByZXR1 cm47Cj4gPiArICAgIGUgPSAqZXhlY3V0b3I7Cj4gPiArCj4gPiArICAgIC8vc2luZ2FsIGRpZQo+ ID4gKyAgICBwdGhyZWFkX211dGV4X2xvY2soJmUtPmxvY2spOwo+ID4gKyAgICBlLT5kaWUgPSAx Owo+ID4gKyAgICBwdGhyZWFkX2NvbmRfYnJvYWRjYXN0KCZlLT5jb25kKTsKPiA+ICsgICAgcHRo cmVhZF9tdXRleF91bmxvY2soJmUtPmxvY2spOwo+ID4gKwo+ID4gKyAgICBmb3IgKGludCBpID0g MDsgaSA8IGUtPnRocmVhZF9jb3VudDsgaSsrKQo+ID4gKyAgICAgICAgcHRocmVhZF9qb2luKGUt PnRocmVhZHNbaV0udGhyZWFkLCBOVUxMKTsKPiA+ICsgICAgcHRocmVhZF9jb25kX2Rlc3Ryb3ko JmUtPmNvbmQpOwo+ID4gKyAgICBwdGhyZWFkX211dGV4X2Rlc3Ryb3koJmUtPmxvY2spOwo+ID4g Kwo+ID4gKyAgICBhdl9mcmVlKGUtPnRocmVhZHMpOwo+ID4gKyAgICBhdl9mcmVlKGUtPmxvY2Fs X2NvbnRleHRzKTsKPiA+ICsKPiA+ICsgICAgYXZfZnJlZXAoZXhlY3V0b3IpOwo+ID4gK30KPiA+ ICsKPiA+ICt2b2lkIGZmX3Z2Y19leGVjdXRvcl9leGVjdXRlKFZWQ0V4ZWN1dG9yICplLCBWVkNU YXNrbGV0ICp0KQo+ID4gK3sKPiA+ICsgICAgVlZDVGFza0NhbGxiYWNrcyAqY2IgPSAmZS0+Y2I7 Cj4gPiArICAgIFZWQ1Rhc2tsZXQgKipwcmV2Owo+ID4gKwo+ID4gKyAgICBwdGhyZWFkX211dGV4 X2xvY2soJmUtPmxvY2spOwo+ID4gKyAgICBmb3IgKHByZXYgPSAmZS0+dGFza3M7ICpwcmV2ICYm IGNiLT5wcmlvcml0eV9oaWdoZXIoKnByZXYsIHQpOyBwcmV2Cj4gPQo+ID4gJigqcHJldiktPm5l eHQpICsgICAgICAgIC8qIG5vdGhpbmcgKi87Cj4gPiArICAgIGFkZF90YXNrKHByZXYsIHQpOwo+ ID4gKyAgICBwdGhyZWFkX2NvbmRfc2lnbmFsKCZlLT5jb25kKTsKPiA+ICsgICAgcHRocmVhZF9t dXRleF91bmxvY2soJmUtPmxvY2spOwo+ID4gK30KPiA+ICsKPiA+ICt2b2lkIGZmX3Z2Y19leGVj dXRvcl93YWtldXAoVlZDRXhlY3V0b3IgKmUpCj4gPiArewo+ID4gKyAgICBwdGhyZWFkX211dGV4 X2xvY2soJmUtPmxvY2spOwo+ID4gKyAgICBwdGhyZWFkX2NvbmRfYnJvYWRjYXN0KCZlLT5jb25k KTsKPiA+ICsgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmUtPmxvY2spOwo+Cj4gU2lnbmFsaW5n IGEgY29uZGl0aW9uIHZhcmlhYmxlIHdpdGhvdXQgY2hhbmdpbmcgYW55IHN0YXRlIG1ha2VzIG5v IHNlbnNlLgo+Ckl0J3MgZm9yIGVycm9yIGhhbmRsaW5nLgoKSW1hZ2luZyBsYXN0IGFsbCB0aHJl YWQgYXJlIHdhaXRpbmcgZm9yIHJlYWR5IGpvYnMgZXhjZXB0IHRoZSBsYXN0IG9uZS4KVGhlIGxh c3Qgb25lIHRocmVhZCBoYXMgc29tZSBlcnJvciwgaXQgcmVwb3J0cyBhbiBlcnJvciB0byB0aGUg Y2FsbGVyLgpUaGUgY2FsbGVyIG5lZWRzIHRvIHdha2UgdXAgdGhyZWFkcyB0byBmbHVzaCB0aGUg dGFzayBsaXN0LgoKCj4gPiArfQo+Cj4gLS0KPiBSw6ltaSBEZW5pcy1Db3VybW9udAo+IGh0dHA6 Ly93d3cucmVtbGFiLm5ldC8KPgo+Cj4KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwo+IGZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKPiBmZm1wZWctZGV2 ZWxAZmZtcGVnLm9yZwo+IGh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBl Zy1kZXZlbAo+Cj4gVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCj4g ZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJl Ii4KPgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1w ZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZt cGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZp c2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcg d2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==