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 ESMTPS id 7A3934D6D3 for ; Sun, 23 Feb 2025 13:44:42 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 720E868C965; Sun, 23 Feb 2025 15:44:39 +0200 (EET) Received: from mail-ua1-f44.google.com (mail-ua1-f44.google.com [209.85.222.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 59A6268C4B3 for ; Sun, 23 Feb 2025 15:44:33 +0200 (EET) Received: by mail-ua1-f44.google.com with SMTP id a1e0cc1a2514c-868f322b8dfso2259402241.0 for ; Sun, 23 Feb 2025 05:44:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740318271; x=1740923071; darn=ffmpeg.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=07QOtIkuhnLmeOkkVT1yuo6Op4+PHH+ixxWqFlbu7eg=; b=WbCA2BgX2z89ScYS9GYeg7YxhjLSwe9Gr1CL3w8LMakOXpPL7Y6YtNTpDk2V9zz2sf LwoZyYJ6wZ4EhF0d76iwKOnBFVViNP7oB4cppTCC6XkrVeO4xrUyWBQMyvIEsEDtEGu8 k6wR/qQSuZv8h8YTlBRQ5RAnE5huBrzxw0I46z73/JJLqQIq27ymu16O5bOkHLtlFl20 3zzi2uKTb8V9j9JrQOhgmZIHY3H6BjfO10Zjeoy/tVrwDcRZBWM+1qAXilCIOtub/6AJ pCAKnTDr9trhK2NblcZ5zcG7nSdozIVb1O7E8ONdmZGLl3f4Lz0ysQxsWkFq2BVLVjf9 1qGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740318271; x=1740923071; 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=07QOtIkuhnLmeOkkVT1yuo6Op4+PHH+ixxWqFlbu7eg=; b=A5rcfjLBulDtqcuPri3CI/pawFLI+KvsjPk6UsUEjQK6WpY6H10CB7O43Hq3MjY6I9 2Tkbwp/pueHLzAyejC9byCOro3MgZicSuSKZ281LIBAF4aikdrmMxC+Bdz0b0/8J2xzc I8R5lRjd8xQ/BtnNAL6Xj42pfiwp/odNJOtgnrnUxKZFKq1fe2h8Ok0r8LL9BEqfbMLY GHgli+a9tBD8DDGLPO/0+nzVwzbLOXogDSBGXtsIPqfpVZsfjBHAKs0b118BqpfV6QNc DtQmfoMpN+INAwEVdU8LVmr9XxetDa9TaWWIuzdgvHmZb18hieMGB0cFUuee/Ae3bk0h 1OoQ== X-Gm-Message-State: AOJu0Yy5swZ3K/U2nc7id8+HyuISYxmOPcKvSAGYjhNRoWWU9czoyDHE eZDKe+anpyt14zv6zN193gCc/P1LNfhAXEinMIG4fhRS4RHqxFs/djqJaLY4goG/haHzYWf7N3H l26VgJWZffJOXUJmGO2CJx0pcbbgu3zRf X-Gm-Gg: ASbGncsczYU2iI41PJyPUj1KpIpYGUMfgXCd4O+yMCKTMY5MshBWEalY3DW+2MeUBnB 748/AAhse8BjsCUa58Dekzfsa1n6CBgh4SPO9trK04j2dQckMCItg/0KvMi4dUNcU153J/7TdZ3 STJ1BFSg== X-Google-Smtp-Source: AGHT+IFk4xzQQH8LAkxbuvMtP+0+Px+nKHqnX5oACDRbteZ7PLefyGtzoBsZs81prEZikBWYZUhb6srl1M42Ch/qrZE= X-Received: by 2002:a05:6102:26c5:b0:4bd:39c7:804d with SMTP id ada2fe7eead31-4bfc0bb4c97mr4080853137.0.1740318271460; Sun, 23 Feb 2025 05:44:31 -0800 (PST) MIME-Version: 1.0 References: <20250222075155.504540-1-nuomi2021@gmail.com> <20250222075155.504540-2-nuomi2021@gmail.com> In-Reply-To: From: Nuo Mi Date: Sun, 23 Feb 2025 21:44:17 +0800 X-Gm-Features: AWEUYZmWxUItR0qS39fDYPdusEMkdhWCzfYD-Q7EK54ViK_ClyrkiprRDOtW3WU Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH v3 2/2] lavc/vvc: Ensure subpictures don't overlap 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: T24gU3VuLCBGZWIgMjMsIDIwMjUgYXQgMTozNuKAr0FNIEZyYW5rIFBsb3dtYW4gPHBvc3RAZnJh bmtwbG93bWFuLmNvbT4gd3JvdGU6Cgo+IE9uIDIyLzAyLzIwMjUgMDc6NTEsIE51byBNaSB3cm90 ZToKPiA+IEZyb206IEZyYW5rIFBsb3dtYW4gPHBvc3RAZnJhbmtwbG93bWFuLmNvbT4KPiA+Cj4g PiBUaGlzIGlzIGVzc2VudGlhbGx5IGEgcmUtaW1wbGVtZW50YXRpb24gb2YKPiA+Cj4gaHR0cHM6 Ly9wYXRjaHdvcmsuZmZtcGVnLm9yZy9wcm9qZWN0L2ZmbXBlZy9wYXRjaC8yMDI0MTAwNTIyMzk1 NS41NDE1OC0xLXBvc3RAZnJhbmtwbG93bWFuLmNvbS8KPiA+Cj4gPiBUaGF0IHBhdGNoIHdhcyBu b3QgYXBwbGllZCBsYXN0IHRpbWUuICBJbnN0ZWFkIHdlIG9wdGVkIHRvIGlkZW50aWZ5Cj4gPiBp c3N1ZXMgd2hpY2ggY291bGQgYmUgY2F1c2VkIGJ5IGludmFsaWQgc3VicGljdHVyZSBsYXlvdXRz IGFuZCByZW1lZHkKPiA+IHRob3NlIGlzc3VlcyB3aGVyZSB0aGV5IG1hbmlmZXN0LCBlaXRoZXIg dGhyb3VnaCBlcnJvciBkZXRlY3Rpb24gb3IgY29kZQo+ID4gaGFyZGVuaW5nLiAgVGhpcyB3YXMg cHJpbWFyaWx5IGltcGxlbWVudGVkIGluIHRoZSBzZXQKPiA+IGh0dHBzOi8vcGF0Y2h3b3JrLmZm bXBlZy5vcmcvcHJvamVjdC9mZm1wZWcvbGlzdC8/c2VyaWVzPTEzMzgxLgo+ID4KPiA+IFRoaXMg aGFzIHdvcmtlZCB0byBzb21lIGRlZ3JlZSwgaG93ZXZlciBpc3N1ZXMgd2l0aCBzdWJwaWN0dXJl IGxheW91dHMKPiA+IGNvbnRpbnVlIHRvIGNyb3AgdXAgZnJvbSB0aGUgZnV6emVyIGFuZCBJJ3Zl IGZpeGVkIGEgbnVtYmVyIG9mIGJ1Z3MKPiA+IHJlbGF0ZWQgdG8gc3VicGljdHVyZSBsYXlvdXRz IHNpbmNlIHRoZW4uICBJIHRoaW5rIGl0J3MgYmVzdCB0byByZXR1cm4KPiA+IHRvIHRoZSBpbml0 aWFsIHBsYW4gYW5kIHNpbXBseSBjaGVjayBpZiB0aGUgc3VicGljdHVyZSBsYXlvdXQgaXMgdmFs aWQKPiA+IGluaXRpYWxseS4KPiA+Cj4gPiBUaGlzIGltcGxlbWVudGF0aW9uIGlzIGFsc28gbGln aHRlciB0aGFuIHRoZSBmaXJzdCB0aW1lIC0tIGJ5IGRvaW5nIGEKPiA+IGJpdCBtb3JlIGxvZ2lj IGluIHBwc19zdWJwaWNfbGVzc190aGFuX29uZV90aWxlX3NsaWNlLCB3ZSBhcmUgYWJsZSB0bwo+ ID4gc3RvcmUgYSB0aWxlX2luX3N1YnBpYyBtYXAgcmF0aGVyIHRoYW4gYSBjdHVfaW5fc3VicGlj IG1hcC4gIFRoaXMKPiA+IHJlZHVjZXMgdGhlIHNpemUgb2YgdGhlIG1hcCB0byB0aGUgcG9pbnQg aXQgYmVjb21lcyBwb3NzaWJsZSB0byBhbGxvY2F0ZQo+ID4gaXQgb24gdGhlIHN0YWNrLiAgU2lt aWxhciB0byA4YmQ2NmE4Yzk1ODdhZjYxYzdiNDY1NThiZTNjNGVlMzE3YzFhZjVhLAo+ID4gdGhl IGxheW91dCBpcyBhbHNvIHZhbGlkYXRlZCBpbiB0aGUgc2xpY2UgbWFwIGNvbnN0cnVjdGlvbiBj b2RlLCByYXRoZXIKPiA+IHRoYW4gaW4gdGhlIENCUywgd2hpY2ggYXZvaWRzIGR1cGxpY2F0aW5n IHNvbWUgbG9naWMuCj4gPgo+ID4gU2lnbmVkLW9mZi1ieTogRnJhbmsgUGxvd21hbiA8cG9zdEBm cmFua3Bsb3dtYW4uY29tPgo+ID4gLS0tCj4gPiAgbGliYXZjb2RlYy92dmMvcHMuYyB8IDU1ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQo+ID4gIDEgZmlsZSBj aGFuZ2VkLCA0NSBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKPiA+Cj4gPiBkaWZmIC0t Z2l0IGEvbGliYXZjb2RlYy92dmMvcHMuYyBiL2xpYmF2Y29kZWMvdnZjL3BzLmMKPiA+IGluZGV4 IGQ4Nzk0Mjc3ZDIuLjliOGFmNTUyNGIgMTAwNjQ0Cj4gPiAtLS0gYS9saWJhdmNvZGVjL3Z2Yy9w cy5jCj4gPiArKysgYi9saWJhdmNvZGVjL3Z2Yy9wcy5jCj4gPiBAQCAtNDUwLDI1ICs0NTAsNTAg QEAgc3RhdGljIHZvaWQgc3VicGljX3RpbGVzKGludCAqdGlsZV94LCBpbnQgKnRpbGVfeSwKPiBp bnQgKnRpbGVfeF9lbmQsIGludCAqdGlsZV95Xwo+ID4gICAgICAgICAgKCp0aWxlX3lfZW5kKSsr Owo+ID4gIH0KPiA+Cj4gPiAtc3RhdGljIHZvaWQgcHBzX3N1YnBpY19sZXNzX3RoYW5fb25lX3Rp bGVfc2xpY2UoVlZDUFBTICpwcHMsIGNvbnN0Cj4gVlZDU1BTICpzcHMsIGNvbnN0IGludCBpLCBj b25zdCBpbnQgdHgsIGNvbnN0IGludCB0eSwgaW50ICpvZmYpCj4gPiArc3RhdGljIGJvb2wgbWFy a190aWxlX2FzX3VzZWQoYm9vbCAqdGlsZV9pbl9zdWJwaWMsIGNvbnN0IGludCB0eCwgY29uc3QK PiBpbnQgdHksIGNvbnN0IGludCB0aWxlX2NvbHVtbnMpCj4gPiAgewo+ID4gKyAgICBjb25zdCBz aXplX3QgdGlsZV9pZHggPSB0eSAqIHRpbGVfY29sdW1ucyArIHR4Owo+ID4gKyAgICBpZiAodGls ZV9pbl9zdWJwaWNbdGlsZV9pZHhdKSB7Cj4gPiArICAgICAgICAvKiB0aGUgdGlsZSBpcyBjb3Zl cmVkIGJ5IG90aGVyIHN1YnBpY3R1cmVzICovCj4gPiArICAgICAgICByZXR1cm4gZmFsc2U7Cj4g PiArICAgIH0KPiA+ICsgICAgdGlsZV9pbl9zdWJwaWNbdGlsZV9pZHhdID0gdHJ1ZTsKPiA+ICsg ICAgcmV0dXJuIHRydWU7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgcHBzX3N1YnBpY19s ZXNzX3RoYW5fb25lX3RpbGVfc2xpY2UoVlZDUFBTICpwcHMsIGNvbnN0Cj4gVlZDU1BTICpzcHMs IGNvbnN0IGludCBpLCBjb25zdCBpbnQgdHgsIGNvbnN0IGludCB0eSwgaW50ICpvZmYsIGJvb2wK PiAqdGlsZV9pbl9zdWJwaWMpCj4gPiArewo+ID4gKyAgICBjb25zdCBpbnQgc3VicGljX2JvdHRv bSA9IHNwcy0+ci0+c3BzX3N1YnBpY19jdHVfdG9wX2xlZnRfeVtpXSArCj4gc3BzLT5yLT5zcHNf c3VicGljX2hlaWdodF9taW51czFbaV07Cj4gPiArICAgIGNvbnN0IGludCB0aWxlX2JvdHRvbSA9 IHBwcy0+cm93X2JkW3R5XSArCj4gcHBzLT5yLT5yb3dfaGVpZ2h0X3ZhbFt0eV0gLSAxOwo+ID4g KyAgICBjb25zdCBib29sIGlzX2ZpbmFsX3N1YnBpY19pbl90aWxlID0gc3VicGljX2JvdHRvbSA9 PSB0aWxlX2JvdHRvbTsKPiA+ICsKPiA+ICsgICAgaWYgKGlzX2ZpbmFsX3N1YnBpY19pbl90aWxl ICYmICFtYXJrX3RpbGVfYXNfdXNlZCh0aWxlX2luX3N1YnBpYywKPiB0eCwgdHksIHBwcy0+ci0+ bnVtX3RpbGVfY29sdW1ucykpCj4gPiArICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFU QTsKPiA+ICsKPiA+ICAgICAgcHBzLT5udW1fY3R1c19pbl9zbGljZVtpXSA9IHBwc19hZGRfY3R1 cyhwcHMsIG9mZiwKPiA+ICAgICAgICAgIHNwcy0+ci0+c3BzX3N1YnBpY19jdHVfdG9wX2xlZnRf eFtpXSwKPiBzcHMtPnItPnNwc19zdWJwaWNfY3R1X3RvcF9sZWZ0X3lbaV0sCj4gPiAgICAgICAg ICBzcHMtPnItPnNwc19zdWJwaWNfd2lkdGhfbWludXMxW2ldICsgMSwKPiBzcHMtPnItPnNwc19z dWJwaWNfaGVpZ2h0X21pbnVzMVtpXSArIDEpOwo+ID4gKwo+ID4gKyAgICByZXR1cm4gMDsKPiA+ ICB9Cj4gPgo+ID4gLXN0YXRpYyB2b2lkIHBwc19zdWJwaWNfb25lX29yX21vcmVfdGlsZXNfc2xp Y2UoVlZDUFBTICpwcHMsIGNvbnN0IGludAo+IHRpbGVfeCwgY29uc3QgaW50IHRpbGVfeSwgY29u c3QgaW50IHhfZW5kLCBjb25zdCBpbnQgeV9lbmQsIGNvbnN0IGludCBpLAo+IGludCAqb2ZmKQo+ ID4gK3N0YXRpYyBpbnQgcHBzX3N1YnBpY19vbmVfb3JfbW9yZV90aWxlc19zbGljZShWVkNQUFMg KnBwcywgY29uc3QgaW50Cj4gdGlsZV94LCBjb25zdCBpbnQgdGlsZV95LCBjb25zdCBpbnQgeF9l bmQsIGNvbnN0IGludCB5X2VuZCwKPiA+ICsgICAgY29uc3QgaW50IGksIGludCAqb2ZmLCBib29s ICp0aWxlX2luX3N1YnBpYykKPiA+ICB7Cj4gPiAgICAgIGZvciAoaW50IHR5ID0gdGlsZV95OyB0 eSA8IHlfZW5kOyB0eSsrKSB7Cj4gPiAgICAgICAgICBmb3IgKGludCB0eCA9IHRpbGVfeDsgdHgg PCB4X2VuZDsgdHgrKykgewo+ID4gKyAgICAgICAgICAgIGlmICghbWFya190aWxlX2FzX3VzZWQo dGlsZV9pbl9zdWJwaWMsIHR4LCB0eSwKPiBwcHMtPnItPm51bV90aWxlX2NvbHVtbnMpKQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiA+ICsKPiA+ICAg ICAgICAgICAgICBwcHMtPm51bV9jdHVzX2luX3NsaWNlW2ldICs9IHBwc19hZGRfY3R1cyhwcHMs IG9mZiwKPiA+ICAgICAgICAgICAgICAgICAgcHBzLT5jb2xfYmRbdHhdLCBwcHMtPnJvd19iZFt0 eV0sCj4gPiAgICAgICAgICAgICAgICAgIHBwcy0+ci0+Y29sX3dpZHRoX3ZhbFt0eF0sIHBwcy0+ ci0+cm93X2hlaWdodF92YWxbdHldKTsKPiA+ICAgICAgICAgIH0KPiA+ICAgICAgfQo+ID4gKyAg ICByZXR1cm4gMDsKPiA+ICB9Cj4gPgo+ID4gLXN0YXRpYyB2b2lkIHBwc19zdWJwaWNfc2xpY2Uo VlZDUFBTICpwcHMsIGNvbnN0IFZWQ1NQUyAqc3BzLCBjb25zdCBpbnQKPiBpLCBpbnQgKm9mZikK PiA+ICtzdGF0aWMgaW50IHBwc19zdWJwaWNfc2xpY2UoVlZDUFBTICpwcHMsIGNvbnN0IFZWQ1NQ UyAqc3BzLCBjb25zdCBpbnQKPiBpLCBpbnQgKm9mZiwgYm9vbCAqdGlsZV9pbl9zdWJwaWMpCj4g PiAgewo+ID4gICAgICBpbnQgdHgsIHR5LCB4X2VuZCwgeV9lbmQ7Cj4gPgo+ID4gQEAgLTQ3Nywx OSArNTAyLDMwIEBAIHN0YXRpYyB2b2lkIHBwc19zdWJwaWNfc2xpY2UoVlZDUFBTICpwcHMsIGNv bnN0Cj4gVlZDU1BTICpzcHMsIGNvbnN0IGludCBpLCBpbnQgKm8KPiA+Cj4gPiAgICAgIHN1YnBp Y190aWxlcygmdHgsICZ0eSwgJnhfZW5kLCAmeV9lbmQsIHNwcywgcHBzLCBpKTsKPiA+ICAgICAg aWYgKHR5ICsgMSA9PSB5X2VuZCAmJiBzcHMtPnItPnNwc19zdWJwaWNfaGVpZ2h0X21pbnVzMVtp XSArIDEgPAo+IHBwcy0+ci0+cm93X2hlaWdodF92YWxbdHldKQo+ID4gLSAgICAgICAgcHBzX3N1 YnBpY19sZXNzX3RoYW5fb25lX3RpbGVfc2xpY2UocHBzLCBzcHMsIGksIHR4LCB0eSwgb2ZmKTsK PiA+ICsgICAgICAgIHJldHVybiBwcHNfc3VicGljX2xlc3NfdGhhbl9vbmVfdGlsZV9zbGljZShw cHMsIHNwcywgaSwgdHgsIHR5LAo+IG9mZiwgdGlsZV9pbl9zdWJwaWMpOwo+ID4gICAgICBlbHNl Cj4gPiAtICAgICAgICBwcHNfc3VicGljX29uZV9vcl9tb3JlX3RpbGVzX3NsaWNlKHBwcywgdHgs IHR5LCB4X2VuZCwgeV9lbmQsCj4gaSwgb2ZmKTsKPiA+ICsgICAgICAgIHJldHVybiBwcHNfc3Vi cGljX29uZV9vcl9tb3JlX3RpbGVzX3NsaWNlKHBwcywgdHgsIHR5LCB4X2VuZCwKPiB5X2VuZCwg aSwgb2ZmLCB0aWxlX2luX3N1YnBpYyk7Cj4gPiAgfQo+ID4KPiA+IC1zdGF0aWMgdm9pZCBwcHNf c2luZ2xlX3NsaWNlX3Blcl9zdWJwaWMoVlZDUFBTICpwcHMsIGNvbnN0IFZWQ1NQUyAqc3BzLAo+ IGludCAqb2ZmKQo+ID4gK3N0YXRpYyBpbnQgcHBzX3NpbmdsZV9zbGljZV9wZXJfc3VicGljKFZW Q1BQUyAqcHBzLCBjb25zdCBWVkNTUFMgKnNwcywKPiBpbnQgKm9mZikKPiA+ICB7Cj4gPiAgICAg IGlmICghc3BzLT5yLT5zcHNfc3VicGljX2luZm9fcHJlc2VudF9mbGFnKSB7Cj4gPiAgICAgICAg ICBwcHNfc2luZ2xlX3NsaWNlX3BpY3R1cmUocHBzLCBvZmYpOwo+ID4gICAgICB9IGVsc2Ugewo+ ID4gLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwcHMtPnItPnBwc19udW1fc2xpY2VzX2lu X3BpY19taW51czEgKyAxOwo+IGkrKykKPiA+IC0gICAgICAgICAgICBwcHNfc3VicGljX3NsaWNl KHBwcywgc3BzLCBpLCBvZmYpOwo+ID4gKyAgICAgICAgYm9vbCB0aWxlX2luX3N1YnBpY1tWVkNf TUFYX1RJTEVTX1BFUl9BVV0gPSB7MH07Cj4gPiArICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8 IHBwcy0+ci0+cHBzX251bV9zbGljZXNfaW5fcGljX21pbnVzMSArIDE7Cj4gaSsrKSB7Cj4gPiAr ICAgICAgICAgICAgY29uc3QgaW50IHJldCA9IHBwc19zdWJwaWNfc2xpY2UocHBzLCBzcHMsIGks IG9mZiwKPiB0aWxlX2luX3N1YnBpYyk7Cj4gPiArICAgICAgICAgICAgaWYgKHJldCA8IDApCj4g PiArICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPiArICAgICAgICB9Cj4gPiArCj4gPiAr ICAgICAgICAvLyBXZSBvbmx5IHVzZSB0aWxlX2luX3N1YnBpYyB0byBjaGVjayB0aGF0IHRoZSBz dWJwaWN0dXJlcwo+IGRvbid0IG92ZXJsYXAKPiA+ICsgICAgICAgIC8vIGhlcmU7IHdlIGRvbid0 IHVzZSB0aWxlX2luX3N1YnBpYyB0byBjaGVjayB0aGF0IHRoZQo+IHN1YnBpY3R1cmVzIGNvdmVy Cj4gPiArICAgICAgICAvLyBldmVyeSB0aWxlLiAgSXQgaXMgcG9zc2libGUgdG8gYXZvaWQgZG9p bmcgdGhpcyB3b3JrIGhlcmUKPiBiZWNhdXNlIHRoZQo+ID4gKyAgICAgICAgLy8gY292ZXJpbmcg cHJvcGVydHkgb2Ygc3VicGljdHVyZXMgaXMgYWxyZWFkeSBndWFyYW50ZWVkIGJ5Cj4gdGhlIG1l Y2hhbmlzbXMKPiA+ICsgICAgICAgIC8vIHdoaWNoIGNoZWNrIGV2ZXJ5IENUVSBiZWxvbmdzIHRv IGEgc2xpY2UuCj4gPiAgICAgIH0KPiA+ICsgICAgcmV0dXJuIDA7Cj4gPiAgfQo+ID4KPiA+ICBz dGF0aWMgaW50IHBwc19vbmVfdGlsZV9zbGljZXMoVlZDUFBTICpwcHMsIGNvbnN0IGludCB0aWxl X2lkeCwgaW50IGksCj4gaW50ICpvZmYpCj4gPiBAQCAtNTQwLDggKzU3Niw3IEBAIHN0YXRpYyBp bnQgcHBzX3JlY3Rfc2xpY2UoVlZDUFBTICpwcHMsIGNvbnN0IFZWQ1NQUwo+ICpzcHMpCj4gPiAg ICAgIGludCB0aWxlX2lkeCA9IDAsIG9mZiA9IDA7Cj4gPgo+ID4gICAgICBpZiAoci0+cHBzX3Np bmdsZV9zbGljZV9wZXJfc3VicGljX2ZsYWcpIHsKPiA+IC0gICAgICAgIHBwc19zaW5nbGVfc2xp Y2VfcGVyX3N1YnBpYyhwcHMsIHNwcywgJm9mZik7Cj4gPiAtICAgICAgICByZXR1cm4gMDsKPiA+ ICsgICAgICAgIHJldHVybiBwcHNfc2luZ2xlX3NsaWNlX3Blcl9zdWJwaWMocHBzLCBzcHMsICZv ZmYpOwo+ID4gICAgICB9Cj4gPgo+ID4gICAgICBmb3IgKGludCBpID0gMDsgaSA8IHItPnBwc19u dW1fc2xpY2VzX2luX3BpY19taW51czEgKyAxOyBpKyspIHsKPgo+IFRoYW5rcywgTEdUTSEKPgpU aGFuayB5b3UgZm9yIHRoZSBwYXRjaCBhbmQgcmV2aWV3LgpBcHBsaWVkLgoKPgo+IC0tCj4gRnJh bmsKPgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4g ZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdAo+IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCj4gaHR0 cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCj4KPiBUbyB1bnN1 YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKPiBmZm1wZWctZGV2ZWwtcmVxdWVz dEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo+Cl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxp c3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlz dGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3Ig ZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vi c2NyaWJlIi4K