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 5508A4B14E for ; Thu, 30 May 2024 01:05:05 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 693BE68D504; Thu, 30 May 2024 04:05:00 +0300 (EEST) Received: from mail-pl1-f178.google.com (mail-pl1-f178.google.com [209.85.214.178]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3529F68D2E5 for ; Thu, 30 May 2024 04:04:54 +0300 (EEST) Received: by mail-pl1-f178.google.com with SMTP id d9443c01a7336-1f082d92864so3155465ad.1 for ; Wed, 29 May 2024 18:04:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717031091; x=1717635891; darn=ffmpeg.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:to:subject:user-agent:mime-version:date:message-id:from :to:cc:subject:date:message-id:reply-to; bh=3DRiUSYh8ZGZhxPW8Rzy1Ooj+WgTpG73bEVcMeIYbkQ=; b=GHDtB84JvZiGTb5TBMFaE9i5z+VSGw+KH8Pbn27IGE8RXfWjebmCwVvE53kyMQH3/c tym45oYMGAGDg05tLLJDaw7AoEihrLae4rTvidRVkJs2BDBDIwL0EOPyEMnbRsu5OL2Q 6xutlfrs3XsPyCxdIfsEkUN7H4o4BeDe1kHGvF9GGaPZocGj45YPKwNeyxSRYfXj9f3h qUhQE7NV1d+p0hSb6jWVdHypXb02keCi1vJEyXKj923xRnp8NfixwHzDpj97auNm9R6g 8U7eWKy+5i87ZHzGkBsyUdnvuIgfGTbMES/a1qugPMvix+CzUnfG1UaElhUXA6a+dE40 hE1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717031091; x=1717635891; h=content-transfer-encoding:in-reply-to:from:content-language :references:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=3DRiUSYh8ZGZhxPW8Rzy1Ooj+WgTpG73bEVcMeIYbkQ=; b=dgQCoIRHrG/hxB3m/r1OTCM9rjcn1aTfgyVhDd2DqrCjG1dH008/HZLdWc7gcwpFmw p4Vd6S/YlE1bIfSO4kqPPAGCqfub+PoaAXn/DinEV/LzTyoZvnNiXwnSeByRTCRpYLzO gkwP2EHlc+BBsq7JqonqVlsAfQk65HNzm8x4oMT6CQcPqosOgUzuFi4uGntDRgGjhKpm yKYPYuI8LYwGzZ+OBJkuQcd2z44cXETzYv0AHvvgvKYlPhvTqwca7UwQSvU+gZGnw136 /0bRSGYwK0fiYWLCzSrT33x5wDV6vDVVBfTVZ4MjqBA6J6CpFwYkimIJ9ZsdkM6+9ALz pvWg== X-Gm-Message-State: AOJu0YypNP5v0bNEtQD/PQMwUTERs4VrqdqCzPunP1JeknFj6Jsyq3/J BciFrjWE3fQFbP6dxlg6Bai8fax1m5agemAXY3MXQNobrPEWp+R5wQxqCw== X-Google-Smtp-Source: AGHT+IH5/j3TdN0a85vd78JEP/JtKx/7H0VI1K+8E1vuZjO9JjCEZwxa1FEt6oUoVD1lJRyMyCYOKg== X-Received: by 2002:a17:903:234e:b0:1f4:8a01:283e with SMTP id d9443c01a7336-1f6192f7e88mr8092995ad.5.1717031091255; Wed, 29 May 2024 18:04:51 -0700 (PDT) Received: from [192.168.0.10] ([190.194.167.233]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-1f615b219d4sm4098395ad.100.2024.05.29.18.04.49 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 29 May 2024 18:04:50 -0700 (PDT) Message-ID: <8d670e76-1b41-4139-b8dc-d00a1aae75bc@gmail.com> Date: Wed, 29 May 2024 22:04:49 -0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: ffmpeg-devel@ffmpeg.org References: <20240529214632.9843-1-jamrial@gmail.com> <20240529214632.9843-5-jamrial@gmail.com> Content-Language: en-US From: James Almer In-Reply-To: Subject: Re: [FFmpeg-devel] [PATCH 5/6] fftools/ffmpeg: support applying container level cropping 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: T24gNS8yOS8yMDI0IDEwOjAxIFBNLCBMeW5uZSB2aWEgZmZtcGVnLWRldmVsIHdyb3RlOgo+IE9u IDI5LzA1LzIwMjQgMjM6NDYsIEphbWVzIEFsbWVyIHdyb3RlOgo+PiBTaWduZWQtb2ZmLWJ5OiBK YW1lcyBBbG1lciA8amFtcmlhbEBnbWFpbC5jb20+Cj4+IC0tLQo+PiDCoCBmZnRvb2xzL2ZmbXBl Zy5owqDCoMKgwqDCoMKgwqAgfMKgIDcgKysrKysrKwo+PiDCoCBmZnRvb2xzL2ZmbXBlZ19kZW11 eC5jwqAgfCAxNiArKysrKysrKysrKysrKysrCj4+IMKgIGZmdG9vbHMvZmZtcGVnX2ZpbHRlci5j IHwgMTEgKysrKysrKysrKysKPj4gwqAgZmZ0b29scy9mZm1wZWdfb3B0LmPCoMKgwqAgfMKgIDMg KysrCj4+IMKgIDQgZmlsZXMgY2hhbmdlZCwgMzcgaW5zZXJ0aW9ucygrKQo+Pgo+PiBkaWZmIC0t Z2l0IGEvZmZ0b29scy9mZm1wZWcuaCBiL2ZmdG9vbHMvZmZtcGVnLmgKPj4gaW5kZXggZmU3NTcw NmFmZC4uZjkwOGUxNjU0OSAxMDA2NDQKPj4gLS0tIGEvZmZ0b29scy9mZm1wZWcuaAo+PiArKysg Yi9mZnRvb2xzL2ZmbXBlZy5oCj4+IEBAIC0xNTUsNiArMTU1LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg T3B0aW9uc0NvbnRleHQgewo+PiDCoMKgwqDCoMKgIFNwZWNpZmllck9wdExpc3QgaHdhY2NlbF9k ZXZpY2VzOwo+PiDCoMKgwqDCoMKgIFNwZWNpZmllck9wdExpc3QgaHdhY2NlbF9vdXRwdXRfZm9y bWF0czsKPj4gwqDCoMKgwqDCoCBTcGVjaWZpZXJPcHRMaXN0IGF1dG9yb3RhdGU7Cj4+ICvCoMKg wqAgU3BlY2lmaWVyT3B0TGlzdCBhcHBseV9jcm9wcGluZzsKPj4gwqDCoMKgwqDCoCAvKiBvdXRw dXQgb3B0aW9ucyAqLwo+PiDCoMKgwqDCoMKgIFN0cmVhbU1hcCAqc3RyZWFtX21hcHM7Cj4+IEBA IC0yMzksNiArMjQwLDcgQEAgZW51bSBJRmlsdGVyRmxhZ3Mgewo+PiDCoMKgwqDCoMKgIElGSUxU RVJfRkxBR19BVVRPUk9UQVRFwqDCoMKgwqAgPSAoMSA8PCAwKSwKPj4gwqDCoMKgwqDCoCBJRklM VEVSX0ZMQUdfUkVJTklUwqDCoMKgwqDCoMKgwqDCoCA9ICgxIDw8IDEpLAo+PiDCoMKgwqDCoMKg IElGSUxURVJfRkxBR19DRlLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgID0gKDEgPDwgMiksCj4+ICvC oMKgwqAgSUZJTFRFUl9GTEFHX0NST1DCoMKgwqDCoMKgwqDCoMKgwqDCoCA9ICgxIDw8IDMpLAo+ PiDCoCB9Owo+PiDCoCB0eXBlZGVmIHN0cnVjdCBJbnB1dEZpbHRlck9wdGlvbnMgewo+PiBAQCAt MjU0LDYgKzI1NiwxMSBAQCB0eXBlZGVmIHN0cnVjdCBJbnB1dEZpbHRlck9wdGlvbnMgewo+PiDC oMKgwqDCoMKgwqAgKiBhY2N1cmF0ZSAqLwo+PiDCoMKgwqDCoMKgIEFWUmF0aW9uYWzCoMKgwqDC oMKgwqDCoMKgwqAgZnJhbWVyYXRlOwo+PiArwqDCoMKgIHVuc2lnbmVkIGNyb3BfdG9wOwo+PiAr wqDCoMKgIHVuc2lnbmVkIGNyb3BfYm90dG9tOwo+PiArwqDCoMKgIHVuc2lnbmVkIGNyb3BfbGVm dDsKPj4gK8KgwqDCoCB1bnNpZ25lZCBjcm9wX3JpZ2h0Owo+PiArCj4+IMKgwqDCoMKgwqAgaW50 wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3ViMnZpZGVvX3dpZHRoOwo+PiDCoMKg wqDCoMKgIGludMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN1YjJ2aWRlb19oZWln aHQ7Cj4+IGRpZmYgLS1naXQgYS9mZnRvb2xzL2ZmbXBlZ19kZW11eC5jIGIvZmZ0b29scy9mZm1w ZWdfZGVtdXguYwo+PiBpbmRleCAxY2E4ZDgwNGFlLi40MTc4YjhmODQwIDEwMDY0NAo+PiAtLS0g YS9mZnRvb2xzL2ZmbXBlZ19kZW11eC5jCj4+ICsrKyBiL2ZmdG9vbHMvZmZtcGVnX2RlbXV4LmMK Pj4gQEAgLTY2LDYgKzY2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgRGVtdXhTdHJlYW0gewo+PiDCoMKg wqDCoMKgIGludMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBoYXZl X3N1YjJ2aWRlbzsKPj4gwqDCoMKgwqDCoCBpbnTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcmVpbml0X2ZpbHRlcnM7Cj4+IMKgwqDCoMKgwqAgaW50wqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGF1dG9yb3RhdGU7Cj4+ICvCoMKgwqAg aW50wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFwcGx5X2Nyb3Bw aW5nOwo+PiDCoMKgwqDCoMKgIGludMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB3cmFwX2NvcnJlY3Rpb25fZG9uZTsKPj4gQEAgLTEwMDAsMTEgKzEwMDEsMjAgQEAg aW50IGlzdF9maWx0ZXJfYWRkKElucHV0U3RyZWFtICppc3QsIAo+PiBJbnB1dEZpbHRlciAqaWZp bHRlciwgaW50IGlzX3NpbXBsZSwKPj4gwqDCoMKgwqDCoCBpc3QtPmZpbHRlcnNbaXN0LT5uYl9m aWx0ZXJzIC0gMV0gPSBpZmlsdGVyOwo+PiDCoMKgwqDCoMKgIGlmIChpc3QtPnBhci0+Y29kZWNf dHlwZSA9PSBBVk1FRElBX1RZUEVfVklERU8pIHsKPj4gK8KgwqDCoMKgwqDCoMKgIGNvbnN0IEFW UGFja2V0U2lkZURhdGEgKnNkID0gCj4+IGF2X3BhY2tldF9zaWRlX2RhdGFfZ2V0KGlzdC0+c3Qt PmNvZGVjcGFyLT5jb2RlZF9zaWRlX2RhdGEsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCj4+IGlzdC0+c3QtPmNvZGVjcGFy LT5uYl9jb2RlZF9zaWRlX2RhdGEsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCj4+IEFWX1BLVF9EQVRBX0ZSQU1FX0NST1BQ SU5HKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChpc3QtPmZyYW1lcmF0ZS5udW0gPiAwICYm IGlzdC0+ZnJhbWVyYXRlLmRlbiA+IDApIHsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg b3B0cy0+ZnJhbWVyYXRlID0gaXN0LT5mcmFtZXJhdGU7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIG9wdHMtPmZsYWdzIHw9IElGSUxURVJfRkxBR19DRlI7Cj4+IMKgwqDCoMKgwqDCoMKg wqDCoCB9IGVsc2UKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb3B0cy0+ZnJhbWVyYXRl ID0gYXZfZ3Vlc3NfZnJhbWVfcmF0ZShkLT5mLmN0eCwgaXN0LT5zdCwgCj4+IE5VTEwpOwo+PiAr wqDCoMKgwqDCoMKgwqAgaWYgKHNkICYmIHNkLT5zaXplID09IHNpemVvZih1aW50MzJfdCkgKiA0 KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG9wdHMtPmNyb3BfdG9wwqDCoMKgID0gQVZf UkwzMihzZC0+ZGF0YSArwqAgMCk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG9wdHMtPmNy b3BfYm90dG9tID0gQVZfUkwzMihzZC0+ZGF0YSArwqAgNCk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIG9wdHMtPmNyb3BfbGVmdMKgwqAgPSBBVl9STDMyKHNkLT5kYXRhICvCoCA4KTsKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb3B0cy0+Y3JvcF9yaWdodMKgID0gQVZfUkwzMihzZC0+ ZGF0YSArIDEyKTsKPj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4gwqDCoMKgwqDCoCB9IGVsc2UgaWYg KGlzdC0+cGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9TVUJUSVRMRSkgewo+PiDCoMKg wqDCoMKgwqDCoMKgwqAgLyogQ29tcHV0ZSB0aGUgc2l6ZSBvZiB0aGUgY2FudmFzIGZvciB0aGUg c3VidGl0bGVzIHN0cmVhbS4KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIElmIHRoZSBzdWJ0 aXRsZXMgY29kZWNwYXIgaGFzIHNldCBhIHNpemUsIHVzZSBpdC4gCj4+IE90aGVyd2lzZSB1c2Ug dGhlCj4+IEBAIC0xMDU5LDYgKzEwNjksNyBAQCBpbnQgaXN0X2ZpbHRlcl9hZGQoSW5wdXRTdHJl YW0gKmlzdCwgSW5wdXRGaWx0ZXIgCj4+ICppZmlsdGVyLCBpbnQgaXNfc2ltcGxlLAo+PiDCoMKg wqDCoMKgwqDCoMKgwqAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKPj4gwqDCoMKgwqDCoCBvcHRz LT5mbGFncyB8PSBJRklMVEVSX0ZMQUdfQVVUT1JPVEFURSAqICEhKGRzLT5hdXRvcm90YXRlKSB8 Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgSUZJTFRFUl9GTEFHX0NS T1DCoMKgwqDCoMKgwqAgKiAhIShkcy0+YXBwbHlfY3JvcHBpbmcpIHwKPj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBJRklMVEVSX0ZMQUdfUkVJTklUwqDCoMKgwqAg KiAhIShkcy0+cmVpbml0X2ZpbHRlcnMpOwo+PiDCoMKgwqDCoMKgIHJldHVybiBkcy0+c2NoX2lk eF9kZWM7Cj4+IEBAIC0xMjQxLDYgKzEyNTIsOSBAQCBzdGF0aWMgaW50IGlzdF9hZGQoY29uc3Qg T3B0aW9uc0NvbnRleHQgKm8sIAo+PiBEZW11eGVyICpkLCBBVlN0cmVhbSAqc3QpCj4+IMKgwqDC oMKgwqAgZHMtPmF1dG9yb3RhdGUgPSAxOwo+PiDCoMKgwqDCoMKgIE1BVENIX1BFUl9TVFJFQU1f T1BUKGF1dG9yb3RhdGUsIGksIGRzLT5hdXRvcm90YXRlLCBpYywgc3QpOwo+PiArwqDCoMKgIGRz LT5hcHBseV9jcm9wcGluZyA9IDE7Cj4+ICvCoMKgwqAgTUFUQ0hfUEVSX1NUUkVBTV9PUFQoYXBw bHlfY3JvcHBpbmcsIGksIGRzLT5hcHBseV9jcm9wcGluZywgaWMsIHN0KTsKPj4gKwo+PiDCoMKg wqDCoMKgIE1BVENIX1BFUl9TVFJFQU1fT1BUKGNvZGVjX3RhZ3MsIHN0ciwgY29kZWNfdGFnLCBp Yywgc3QpOwo+PiDCoMKgwqDCoMKgIGlmIChjb2RlY190YWcpIHsKPj4gwqDCoMKgwqDCoMKgwqDC oMKgIHVpbnQzMl90IHRhZyA9IHN0cnRvbChjb2RlY190YWcsICZuZXh0LCAwKTsKPj4gQEAgLTEz NjIsNiArMTM3Niw4IEBAIHN0YXRpYyBpbnQgaXN0X2FkZChjb25zdCBPcHRpb25zQ29udGV4dCAq bywgCj4+IERlbXV4ZXIgKmQsIEFWU3RyZWFtICpzdCkKPj4gwqDCoMKgwqDCoCBkcy0+ZGVjX29w dHMuZmxhZ3MgfD0gREVDT0RFUl9GTEFHX0JJVEVYQUNUICogISFvLT5iaXRleGFjdDsKPj4gK8Kg wqDCoCBhdl9kaWN0X3NldF9pbnQoJmRzLT5kZWNvZGVyX29wdHMsICJhcHBseV9jcm9wcGluZyIs IAo+PiBkcy0+YXBwbHlfY3JvcHBpbmcsIDApOwo+PiArCj4+IMKgwqDCoMKgwqAgLyogQXR0YWNo ZWQgcGljcyBhcmUgc3BhcnNlLCB0aGVyZWZvcmUgd2Ugd291bGQgbm90IHdhbnQgdG8gCj4+IGRl bGF5IHRoZWlyIGRlY29kaW5nCj4+IMKgwqDCoMKgwqDCoCAqIHRpbGwgRU9GLiAqLwo+PiDCoMKg wqDCoMKgIGlmIChpc3QtPnN0LT5kaXNwb3NpdGlvbiAmIEFWX0RJU1BPU0lUSU9OX0FUVEFDSEVE X1BJQykKPj4gZGlmZiAtLWdpdCBhL2ZmdG9vbHMvZmZtcGVnX2ZpbHRlci5jIGIvZmZ0b29scy9m Zm1wZWdfZmlsdGVyLmMKPj4gaW5kZXggMTJjY2E2ODRiNC4uYTMxZmExYmU3ZiAxMDA2NDQKPj4g LS0tIGEvZmZ0b29scy9mZm1wZWdfZmlsdGVyLmMKPj4gKysrIGIvZmZ0b29scy9mZm1wZWdfZmls dGVyLmMKPj4gQEAgLTE3MDEsNiArMTcwMSwxNyBAQCBzdGF0aWMgaW50IAo+PiBjb25maWd1cmVf aW5wdXRfdmlkZW9fZmlsdGVyKEZpbHRlckdyYXBoICpmZywgQVZGaWx0ZXJHcmFwaCAqZ3JhcGgs Cj4+IMKgwqDCoMKgwqAgZGVzYyA9IGF2X3BpeF9mbXRfZGVzY19nZXQoaWZwLT5mb3JtYXQpOwo+ PiDCoMKgwqDCoMKgIGF2X2Fzc2VydDAoZGVzYyk7Cj4+ICvCoMKgwqAgaWYgKChpZnAtPm9wdHMu ZmxhZ3MgJiBJRklMVEVSX0ZMQUdfQ1JPUCkgJiYKPj4gK8KgwqDCoMKgwqDCoMKgICEoZGVzYy0+ ZmxhZ3MgJiBBVl9QSVhfRk1UX0ZMQUdfSFdBQ0NFTCkpIHsKPj4gK8KgwqDCoMKgwqDCoMKgIGNo YXIgY3JvcF9idWZbNjRdOwo+PiArwqDCoMKgwqDCoMKgwqAgc25wcmludGYoY3JvcF9idWYsIHNp emVvZihjcm9wX2J1ZiksICJ3PWl3LSVkLSVkOmg9aWgtJWQtJWQiLAo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgaWZwLT5vcHRzLmNyb3BfbGVmdCwgaWZwLT5vcHRzLmNyb3Bf cmlnaHQsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZnAtPm9wdHMuY3Jv cF90b3AsIGlmcC0+b3B0cy5jcm9wX2JvdHRvbSk7Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXQgPSBp bnNlcnRfZmlsdGVyKCZsYXN0X2ZpbHRlciwgJnBhZF9pZHgsICJjcm9wIiwgY3JvcF9idWYpOwo+ PiArwqDCoMKgwqDCoMKgwqAgaWYgKHJldCA8IDApCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHJldHVybiByZXQ7Cj4+ICvCoMKgwqAgfQo+IAo+IFRoZSBjcm9wIGZpbHRlciBzdXBwb3J0cyBo YXJkd2FyZSBmcmFtZXMgdG9vLgoKSXQgZXhwb3J0cyB0aGUgdmFsdWVzIHdpdGhpbiB0aGUgQVZG cmFtZSBmaWVsZHMuIElmIHRoYXQncyBhY2NlcHRhYmxlIAp0aGVuIGkgY2FuIHJlbW92ZSB0aGlz IGNoZWNrLgoKPiAKPj4gKwo+PiDCoMKgwqDCoMKgIC8vIFRPRE86IGluc2VydCBod2FjY2VsIGVu YWJsZWQgZmlsdGVycyBsaWtlIHRyYW5zcG9zZV92YWFwaSAKPj4gaW50byB0aGUgZ3JhcGgKPj4g wqDCoMKgwqDCoCBpZnAtPmRpc3BsYXltYXRyaXhfYXBwbGllZCA9IDA7Cj4+IMKgwqDCoMKgwqAg aWYgKChpZnAtPm9wdHMuZmxhZ3MgJiBJRklMVEVSX0ZMQUdfQVVUT1JPVEFURSkgJiYKPj4gZGlm ZiAtLWdpdCBhL2ZmdG9vbHMvZmZtcGVnX29wdC5jIGIvZmZ0b29scy9mZm1wZWdfb3B0LmMKPj4g aW5kZXggOTEwZTRhMzM2Yi4uMGM1MGNlMTZiYSAxMDA2NDQKPj4gLS0tIGEvZmZ0b29scy9mZm1w ZWdfb3B0LmMKPj4gKysrIGIvZmZ0b29scy9mZm1wZWdfb3B0LmMKPj4gQEAgLTE3MzIsNiArMTcz Miw5IEBAIGNvbnN0IE9wdGlvbkRlZiBvcHRpb25zW10gPSB7Cj4+IMKgwqDCoMKgwqAgeyAiYXV0 b3NjYWxlIizCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIE9QVF9UWVBFX0JPT0ws wqDCoCBPUFRfUEVSU1RSRUFNIHwgCj4+IE9QVF9FWFBFUlQgfCBPUFRfT1VUUFVULAo+PiDCoMKg wqDCoMKgwqDCoMKgwqAgeyAub2ZmID0gT0ZGU0VUKGF1dG9zY2FsZSkgfSwKPj4gwqDCoMKgwqDC oMKgwqDCoMKgICJhdXRvbWF0aWNhbGx5IGluc2VydCBhIHNjYWxlIGZpbHRlciBhdCB0aGUgZW5k IG9mIHRoZSAKPj4gZmlsdGVyIGdyYXBoIiB9LAo+PiArwqDCoMKgIHsgImFwcGx5X2Nyb3BwaW5n IizCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgT1BUX1RZUEVfQk9PTCzCoMKgIE9QVF9QRVJTVFJF QU0gfCAKPj4gT1BUX0VYUEVSVCB8IE9QVF9JTlBVVCwKPj4gK8KgwqDCoMKgwqDCoMKgIHsgLm9m ZiA9IE9GRlNFVChhcHBseV9jcm9wcGluZykgfSwKPj4gK8KgwqDCoMKgwqDCoMKgICJhcHBseSBm cmFtZSBjcm9wcGluZyIgfSwKPiAKPiBBbnkgcmVhc29uIHdoeSBpdCBjYW4ndCBiZSBlbmFibGVk IGJ5IGRlZmF1bHQ/CgpJcyBpcy4gTG9vayBhdCB0aGUgbGluZSBhYm92ZSB0aGUgcmVsZXZhbnQg TUFUQ0hfUEVSX1NUUkVBTV9PUFQgbGluZS4KCj4gCj4+IMKgwqDCoMKgwqAgeyAiZml4X3N1Yl9k dXJhdGlvbl9oZWFydGJlYXQiLCBPUFRfVFlQRV9CT09MLMKgwqAgT1BUX1ZJREVPIHwgCj4+IE9Q VF9FWFBFUlQgfCBPUFRfUEVSU1RSRUFNIHwgT1BUX09VVFBVVCwKPj4gwqDCoMKgwqDCoMKgwqDC oMKgIHsgLm9mZiA9IE9GRlNFVChmaXhfc3ViX2R1cmF0aW9uX2hlYXJ0YmVhdCkgfSwKPj4gwqDC oMKgwqDCoMKgwqDCoMKgICJzZXQgdGhpcyB2aWRlbyBvdXRwdXQgc3RyZWFtIHRvIGJlIGEgaGVh cnRiZWF0IHN0cmVhbSBmb3IgIgo+IAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCj4gZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdAo+IGZmbXBlZy1k ZXZlbEBmZm1wZWcub3JnCj4gaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZt cGVnLWRldmVsCj4gCj4gVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWls Cj4gZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2Ny aWJlIi4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZmZt cGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpodHRwczovL2Zm bXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKClRvIHVuc3Vic2NyaWJlLCB2 aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3Jn IHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=