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 4C51A4B539 for ; Fri, 7 Jun 2024 20:03:15 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CE48968D82B; Fri, 7 Jun 2024 23:03:12 +0300 (EEST) Received: from smtp1.dnsmadeeasy.com (smtp1.dnsmadeeasy.com [208.94.147.128]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7E07868D7CD for ; Fri, 7 Jun 2024 23:03:06 +0300 (EEST) Received: from smtp1.dnsmadeeasy.com (localhost [127.0.0.1]) by smtp1.dnsmadeeasy.com (Postfix) with ESMTP id DD5712F803CA; Fri, 7 Jun 2024 20:03:04 +0000 (UTC) X-Authenticated-Name: nate@nmssoftware.com Received: from stor01 (unknown [129.224.199.189]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp1.dnsmadeeasy.com (Postfix) with ESMTPSA; Fri, 7 Jun 2024 20:03:04 +0000 (UTC) Received: from marcus.forced.laptop (unknown [192.168.26.125]) by stor01 (Postfix) with ESMTP id D9D9A1F1511; Fri, 7 Jun 2024 15:03:03 -0500 (CDT) From: Marcus B Spencer To: ffmpeg-devel@ffmpeg.org Date: Fri, 7 Jun 2024 15:02:25 -0500 Message-ID: <20240607200226.171657-1-marcus@marcusspencer.xyz> X-Mailer: git-send-email 2.45.2 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v11] avcodec: add farbfeld encoder, decoder and demuxer 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 Cc: Marcus B Spencer 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: ZmFyYmZlbGQgaXMgYW4gdW5jb21wcmVzc2VkIGltYWdlIGZvcm1hdCB0aGF0IGlzIGEgcGFydCBv ZiBzdWNrbGVzcwp0b29scyAoaHR0cHM6Ly90b29scy5zdWNrbGVzcy5vcmcpLgoKSXRzIGRvY3Vt ZW50YXRpb24gaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdG9vbHMuc3Vja2xlc3Mub3JnL2ZhcmJm ZWxkLgoKQWRkIHN1cHBvcnQgZm9yIHRoaXMgaW1hZ2UgZm9ybWF0IGluIGF2Y29kZWMgYW5kIGF2 Zm9ybWF0LCBhbmQgdXBkYXRlIHRoZSBpbWFnZTIKZm9ybWF0IGFjY29yZGluZ2x5LgoKU2lnbmVk LW9mZi1ieTogTWFyY3VzIEIgU3BlbmNlciA8bWFyY3VzQG1hcmN1c3NwZW5jZXIueHl6PgotLS0K IENoYW5nZWxvZyAgICAgICAgICAgICAgICAgfCAgMSArCiBkb2MvZ2VuZXJhbF9jb250ZW50cy50 ZXhpIHwgIDIgKwogbGliYXZjb2RlYy9NYWtlZmlsZSAgICAgICB8ICAyICsKIGxpYmF2Y29kZWMv YWxsY29kZWNzLmMgICAgfCAgMiArCiBsaWJhdmNvZGVjL2NvZGVjX2Rlc2MuYyAgIHwgIDcgKysr CiBsaWJhdmNvZGVjL2NvZGVjX2lkLmggICAgIHwgIDEgKwogbGliYXZjb2RlYy9mYXJiZmVsZGRl Yy5jICB8IDgzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogbGliYXZjb2RlYy9m YXJiZmVsZGVuYy5jICB8IDk2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KwogbGliYXZjb2RlYy92ZXJzaW9uLmggICAgICB8ICA0ICstCiBsaWJhdmZvcm1hdC9NYWtlZmls ZSAgICAgIHwgIDEgKwogbGliYXZmb3JtYXQvYWxsZm9ybWF0cy5jICB8ICAxICsKIGxpYmF2Zm9y bWF0L2ltZzIuYyAgICAgICAgfCAgMSArCiBsaWJhdmZvcm1hdC9pbWcyZGVjLmMgICAgIHwgMTYg KysrKysrKwogbGliYXZmb3JtYXQvaW1nMmVuYy5jICAgICB8ICAyICstCiBsaWJhdmZvcm1hdC92 ZXJzaW9uLmggICAgIHwgIDQgKy0KIDE1IGZpbGVzIGNoYW5nZWQsIDIxOCBpbnNlcnRpb25zKCsp LCA1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMvZmFyYmZlbGRk ZWMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMvZmFyYmZlbGRlbmMuYwoKZGlmZiAt LWdpdCBhL0NoYW5nZWxvZyBiL0NoYW5nZWxvZwppbmRleCAwM2Q2YjI5YWQ4Li4xMDJjNzE4ZmZj IDEwMDY0NAotLS0gYS9DaGFuZ2Vsb2cKKysrIGIvQ2hhbmdlbG9nCkBAIC0xMiw2ICsxMiw3IEBA IHZlcnNpb24gPG5leHQ+OgogLSBxc3ZfcGFyYW1zIG9wdGlvbiBhZGRlZCBmb3IgUVNWIGVuY29k ZXJzCiAtIFZWQyBkZWNvZGVyIGNvbXBhdGlibGUgd2l0aCBEVkIgdGVzdCBjb250ZW50CiAtIHhI RS1BQUMgZGVjb2RlcgorLSBmYXJiZmVsZCBlbmNvZGVyLCBkZWNvZGVyIGFuZCBkZW11eGVyCiAK IAogdmVyc2lvbiA3LjA6CmRpZmYgLS1naXQgYS9kb2MvZ2VuZXJhbF9jb250ZW50cy50ZXhpIGIv ZG9jL2dlbmVyYWxfY29udGVudHMudGV4aQppbmRleCBlN2NmNGY4MjM5Li5mYWIzMDYxMGE0IDEw MDY0NAotLS0gYS9kb2MvZ2VuZXJhbF9jb250ZW50cy50ZXhpCisrKyBiL2RvYy9nZW5lcmFsX2Nv bnRlbnRzLnRleGkKQEAgLTg1Myw2ICs4NTMsOCBAQCBmb2xsb3dpbmcgaW1hZ2UgZm9ybWF0cyBh cmUgc3VwcG9ydGVkOgogICAgIEB0YWIgWCBQaXhNYXAgaW1hZ2UgZm9ybWF0CiBAaXRlbSBYV0Qg IEB0YWIgWCBAdGFiIFgKICAgICBAdGFiIFggV2luZG93IER1bXAgaW1hZ2UgZm9ybWF0CitAaXRl bSBGRiAgICAgICAgICAgQHRhYiBYIEB0YWIgWAorICAgIEB0YWIgZmFyYmZlbGQgdW5jb21wcmVz c2VkIGltYWdlIGZvcm1hdAogQGVuZCBtdWx0aXRhYmxlCiAKIEBjb2Rle1h9IG1lYW5zIHRoYXQg dGhlIGZlYXR1cmUgaW4gdGhhdCBjb2x1bW4gKGVuY29kaW5nIC8gZGVjb2RpbmcpIGlzIHN1cHBv cnRlZC4KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvTWFrZWZpbGUgYi9saWJhdmNvZGVjL01ha2Vm aWxlCmluZGV4IDhhYjQzOThiNmMuLjA4YTNkMzlhZjAgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMv TWFrZWZpbGUKKysrIGIvbGliYXZjb2RlYy9NYWtlZmlsZQpAQCAtMzU2LDYgKzM1Niw4IEBAIE9C SlMtJChDT05GSUdfRVNDQVBFMTMwX0RFQ09ERVIpICAgICAgICs9IGVzY2FwZTEzMC5vCiBPQkpT LSQoQ09ORklHX0VWUkNfREVDT0RFUikgICAgICAgICAgICArPSBldnJjZGVjLm8gYWNlbHBfdmVj dG9ycy5vIGxzcC5vCiBPQkpTLSQoQ09ORklHX0VYUl9ERUNPREVSKSAgICAgICAgICAgICArPSBl eHIubyBleHJkc3AubyBoYWxmMmZsb2F0Lm8KIE9CSlMtJChDT05GSUdfRVhSX0VOQ09ERVIpICAg ICAgICAgICAgICs9IGV4cmVuYy5vIGZsb2F0MmhhbGYubworT0JKUy0kKENPTkZJR19GQVJCRkVM RF9ERUNPREVSKSAgICAgICAgKz0gZmFyYmZlbGRkZWMubworT0JKUy0kKENPTkZJR19GQVJCRkVM RF9FTkNPREVSKSAgICAgICAgKz0gZmFyYmZlbGRlbmMubwogT0JKUy0kKENPTkZJR19GQVNUQVVE SU9fREVDT0RFUikgICAgICAgKz0gZmFzdGF1ZGlvLm8KIE9CSlMtJChDT05GSUdfRkZWMV9ERUNP REVSKSAgICAgICAgICAgICs9IGZmdjFkZWMubyBmZnYxLm8KIE9CSlMtJChDT05GSUdfRkZWMV9F TkNPREVSKSAgICAgICAgICAgICs9IGZmdjFlbmMubyBmZnYxLm8KZGlmZiAtLWdpdCBhL2xpYmF2 Y29kZWMvYWxsY29kZWNzLmMgYi9saWJhdmNvZGVjL2FsbGNvZGVjcy5jCmluZGV4IGIxMDJhODA2 OWUuLjlmOWVkYThlYzYgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvYWxsY29kZWNzLmMKKysrIGIv bGliYXZjb2RlYy9hbGxjb2RlY3MuYwpAQCAtMTE1LDYgKzExNSw4IEBAIGV4dGVybiBjb25zdCBG RkNvZGVjIGZmX2VzY2FwZTEyNF9kZWNvZGVyOwogZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfZXNj YXBlMTMwX2RlY29kZXI7CiBleHRlcm4gY29uc3QgRkZDb2RlYyBmZl9leHJfZW5jb2RlcjsKIGV4 dGVybiBjb25zdCBGRkNvZGVjIGZmX2V4cl9kZWNvZGVyOworZXh0ZXJuIGNvbnN0IEZGQ29kZWMg ZmZfZmFyYmZlbGRfZGVjb2RlcjsKK2V4dGVybiBjb25zdCBGRkNvZGVjIGZmX2ZhcmJmZWxkX2Vu Y29kZXI7CiBleHRlcm4gY29uc3QgRkZDb2RlYyBmZl9mZnYxX2VuY29kZXI7CiBleHRlcm4gY29u c3QgRkZDb2RlYyBmZl9mZnYxX2RlY29kZXI7CiBleHRlcm4gY29uc3QgRkZDb2RlYyBmZl9mZnZo dWZmX2VuY29kZXI7CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2NvZGVjX2Rlc2MuYyBiL2xpYmF2 Y29kZWMvY29kZWNfZGVzYy5jCmluZGV4IGEyOGVmNjgwNjEuLjMzZGJkMmNlOTQgMTAwNjQ0Ci0t LSBhL2xpYmF2Y29kZWMvY29kZWNfZGVzYy5jCisrKyBiL2xpYmF2Y29kZWMvY29kZWNfZGVzYy5j CkBAIC0xOTU5LDYgKzE5NTksMTMgQEAgc3RhdGljIGNvbnN0IEFWQ29kZWNEZXNjcmlwdG9yIGNv ZGVjX2Rlc2NyaXB0b3JzW10gPSB7CiAgICAgICAgIC5sb25nX25hbWUgPSBOVUxMX0lGX0NPTkZJ R19TTUFMTCgiTEVBRCBNQ01QIiksCiAgICAgICAgIC5wcm9wcyAgICAgPSBBVl9DT0RFQ19QUk9Q X0lOVFJBX09OTFkgfCBBVl9DT0RFQ19QUk9QX0xPU1NZLAogICAgIH0sCisgICAgeworICAgICAg ICAuaWQgICAgICAgID0gQVZfQ09ERUNfSURfRkFSQkZFTEQsCisgICAgICAgIC50eXBlICAgICAg PSBBVk1FRElBX1RZUEVfVklERU8sCisgICAgICAgIC5uYW1lICAgICAgPSAiZmFyYmZlbGQiLAor ICAgICAgICAubG9uZ19uYW1lID0gTlVMTF9JRl9DT05GSUdfU01BTEwoImZhcmJmZWxkIHVuY29t cHJlc3NlZCBpbWFnZSIpLAorICAgICAgICAucHJvcHMgICAgID0gQVZfQ09ERUNfUFJPUF9JTlRS QV9PTkxZIHwgQVZfQ09ERUNfUFJPUF9MT1NTTEVTUywKKyAgICB9LAogCiAgICAgLyogdmFyaW91 cyBQQ00gImNvZGVjcyIgKi8KICAgICB7CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2NvZGVjX2lk LmggYi9saWJhdmNvZGVjL2NvZGVjX2lkLmgKaW5kZXggMGFiMWUzNGE2MS4uZDRiMGQyM2Y3ZSAx MDA2NDQKLS0tIGEvbGliYXZjb2RlYy9jb2RlY19pZC5oCisrKyBiL2xpYmF2Y29kZWMvY29kZWNf aWQuaApAQCAtMzIyLDYgKzMyMiw3IEBAIGVudW0gQVZDb2RlY0lEIHsKICAgICBBVl9DT0RFQ19J RF9SVFYxLAogICAgIEFWX0NPREVDX0lEX1ZNSVgsCiAgICAgQVZfQ09ERUNfSURfTEVBRCwKKyAg ICBBVl9DT0RFQ19JRF9GQVJCRkVMRCwKIAogICAgIC8qIHZhcmlvdXMgUENNICJjb2RlY3MiICov CiAgICAgQVZfQ09ERUNfSURfRklSU1RfQVVESU8gPSAweDEwMDAwLCAgICAgLy8vPCBBIGR1bW15 IGlkIHBvaW50aW5nIGF0IHRoZSBzdGFydCBvZiBhdWRpbyBjb2RlY3MKZGlmZiAtLWdpdCBhL2xp YmF2Y29kZWMvZmFyYmZlbGRkZWMuYyBiL2xpYmF2Y29kZWMvZmFyYmZlbGRkZWMuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi42NDgzMDFkYmM2Ci0tLSAvZGV2L251bGwK KysrIGIvbGliYXZjb2RlYy9mYXJiZmVsZGRlYy5jCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBD b3B5cmlnaHQgKGMpIDIwMjQgTWFyY3VzIEIgU3BlbmNlciA8bWFyY3VzQG1hcmN1c3NwZW5jZXIu eHl6PgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdl LCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5k IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIOKAnFNvZnR3YXJl4oCdKSwgdG8K KyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3 aXRob3V0IGxpbWl0YXRpb24gdGhlCisgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1l cmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKKyAqIHNlbGwgY29w aWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNv ZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlz IHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9y IHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdB UkUgSVMgUFJPVklERUQg4oCcQVMgSVPigJ0sIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQs IEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhF IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisg KiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBE QU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENP TlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElO IENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5H UworICogSU4gVEhFIFNPRlRXQVJFLgorICovCisKKyNpbmNsdWRlICJhdmNvZGVjLmgiCisjaW5j bHVkZSAiYnl0ZXN0cmVhbS5oIgorI2luY2x1ZGUgImNvZGVjX2ludGVybmFsLmgiCisjaW5jbHVk ZSAiZGVjb2RlLmgiCisjaW5jbHVkZSAibGliYXZ1dGlsL2ltZ3V0aWxzLmgiCisjaW5jbHVkZSAi dGhyZWFkLmgiCisKK3N0YXRpYyBpbnQgZmFyYmZlbGRfZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250 ZXh0ICpjdHgsIEFWRnJhbWUgKnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnQgKmdvdF9mcmFtZSwgQVZQYWNrZXQgKnBrdCkKK3sKKyAgICBpbnQgd2lkdGgsIGhlaWdodDsK KyAgICBHZXRCeXRlQ29udGV4dCBnOworICAgIGludCByZXQ7CisKKyAgICBieXRlc3RyZWFtMl9p bml0KCZnLCBwa3QtPmRhdGEsIHBrdC0+c2l6ZSk7CisgICAgYnl0ZXN0cmVhbTJfc2tpcCgmZywg OCk7CisKKyAgICB3aWR0aCAgPSBieXRlc3RyZWFtMl9nZXRfYmUzMigmZyk7CisgICAgaGVpZ2h0 ID0gYnl0ZXN0cmVhbTJfZ2V0X2JlMzIoJmcpOworCisgICAgaWYgKChyZXQgPSBmZl9zZXRfZGlt ZW5zaW9ucyhjdHgsIHdpZHRoLCBoZWlnaHQpKSA8IDApCisgICAgICAgIHJldHVybiByZXQ7CisK KyAgICBjdHgtPnBpeF9mbXQgPSBBVl9QSVhfRk1UX1JHQkE2NEJFOworCisgICAgaWYgKGN0eC0+ c2tpcF9mcmFtZSA+PSBBVkRJU0NBUkRfQUxMKQorICAgICAgICByZXR1cm4gcGt0LT5zaXplOwor CisgICAgaWYgKChyZXQgPSBmZl90aHJlYWRfZ2V0X2J1ZmZlcihjdHgsIHAsIDApKSA8IDApCisg ICAgICAgIHJldHVybiByZXQ7CisKKyAgICBpZiAoKHJldCA9IGF2X2ltYWdlX2dldF9idWZmZXJf c2l6ZShjdHgtPnBpeF9mbXQsIHdpZHRoLCBoZWlnaHQsIDEpKSA8IDApCisgICAgICAgIHJldHVy biByZXQ7CisKKyAgICBpZiAoYnl0ZXN0cmVhbTJfZ2V0X2J5dGVzX2xlZnQoJmcpIDwgcmV0KQor ICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKworICAgIGF2X2ltYWdlX2ZpbGxf YXJyYXlzKAorICAgICAgICBwLT5kYXRhLAorICAgICAgICBwLT5saW5lc2l6ZSwKKyAgICAgICAg Zy5idWZmZXIsCisgICAgICAgIGN0eC0+cGl4X2ZtdCwKKyAgICAgICAgd2lkdGgsCisgICAgICAg IGhlaWdodCwKKyAgICAgICAgMQorICAgICk7CisKKyAgICAqZ290X2ZyYW1lID0gMTsKKworICAg IHJldHVybiBwa3QtPnNpemU7Cit9CisKK2NvbnN0IEZGQ29kZWMgZmZfZmFyYmZlbGRfZGVjb2Rl ciA9IHsKKyAgICAucC5uYW1lICAgICAgICAgPSAiZmFyYmZlbGQiLAorICAgIENPREVDX0xPTkdf TkFNRSgiZmFyYmZlbGQgdW5jb21wcmVzc2VkIGltYWdlIiksCisgICAgLnAudHlwZSAgICAgICAg ID0gQVZNRURJQV9UWVBFX1ZJREVPLAorICAgIC5wLmlkICAgICAgICAgICA9IEFWX0NPREVDX0lE X0ZBUkJGRUxELAorICAgIC5wLmNhcGFiaWxpdGllcyA9IEFWX0NPREVDX0NBUF9EUjEgfCBBVl9D T0RFQ19DQVBfRlJBTUVfVEhSRUFEUywKKyAgICAuY2Fwc19pbnRlcm5hbCAgPSBGRl9DT0RFQ19D QVBfU0tJUF9GUkFNRV9GSUxMX1BBUkFNLAorICAgIEZGX0NPREVDX0RFQ09ERV9DQihmYXJiZmVs ZF9kZWNvZGVfZnJhbWUpLAorfTsKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvZmFyYmZlbGRlbmMu YyBiL2xpYmF2Y29kZWMvZmFyYmZlbGRlbmMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwLi4yODAxMzI0ODUyCi0tLSAvZGV2L251bGwKKysrIGIvbGliYXZjb2RlYy9mYXJi ZmVsZGVuYy5jCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjQgTWFy Y3VzIEIgU3BlbmNlciA8bWFyY3VzQG1hcmN1c3NwZW5jZXIueHl6PgorICoKKyAqIFBlcm1pc3Np b24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFp bmluZyBhIGNvcHkKKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRh dGlvbiBmaWxlcyAodGhlIOKAnFNvZnR3YXJl4oCdKSwgdG8KKyAqIGRlYWwgaW4gdGhlIFNvZnR3 YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhl CisgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmli dXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKKyAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwg YW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNo ZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAq IFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNo YWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25z IG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQg4oCcQVMg SVPigJ0sIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJ RUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hB TlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklO RlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBBVVRIT1JTIE9SIENPUFlSSUdI VCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBM SUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVS V0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUg U09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJF LgorICovCisKKyNpbmNsdWRlICJhdmNvZGVjLmgiCisjaW5jbHVkZSAiYnl0ZXN0cmVhbS5oIgor I2luY2x1ZGUgImNvZGVjX2ludGVybmFsLmgiCisjaW5jbHVkZSAiZW5jb2RlLmgiCisjaW5jbHVk ZSAibGliYXZ1dGlsL2ltZ3V0aWxzLmgiCisKKyNkZWZpbmUgSEVBREVSX1NJWkUgMTYKKyNkZWZp bmUgUExBTkVfQ09VTlQgNCAvLyByZXF1aXJlZCBieSBhdl9pbWFnZV9jb3B5X3RvX2J1ZmZlcgor CitzdGF0aWMgaW50IGZhcmJmZWxkX2VuY29kZV9mcmFtZShBVkNvZGVjQ29udGV4dCAqY3R4LCBB VlBhY2tldCAqcGt0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQVZG cmFtZSAqcCwgaW50ICpnb3RfcGFja2V0KQoreworICAgIGludCByYXdfaW1nX3NpemUgPSBhdl9p bWFnZV9nZXRfYnVmZmVyX3NpemUoCisgICAgICAgIHAtPmZvcm1hdCwKKyAgICAgICAgcC0+d2lk dGgsCisgICAgICAgIHAtPmhlaWdodCwKKyAgICAgICAgMQorICAgICk7CisgICAgY29uc3QgdWlu dDhfdCAqcGxhbmVzWzRdOworICAgIGludDY0X3QgYnVmX3NpemU7CisgICAgdWludDhfdCAqYnVm OworICAgIGludCByZXQ7CisKKyAgICBpZiAocmF3X2ltZ19zaXplIDwgMCkKKyAgICAgICAgcmV0 dXJuIHJhd19pbWdfc2l6ZTsKKworI2lmIElOVF9NQVggPiBJTlQ2NF9NQVggLSBIRUFERVJfU0la RQorICAgIGlmIChyYXdfaW1nX3NpemUgPiBJTlQ2NF9NQVggLSBIRUFERVJfU0laRSkKKyAgICAg ICAgcmV0dXJuIEFWRVJST1IoRVJBTkdFKTsKKyNlbmRpZgorCisgICAgYnVmX3NpemUgPSAoaW50 NjRfdClyYXdfaW1nX3NpemUgKyBIRUFERVJfU0laRTsKKworICAgIGlmICgocmV0ID0gZmZfZ2V0 X2VuY29kZV9idWZmZXIoY3R4LCBwa3QsIGJ1Zl9zaXplLCAwKSkgPCAwKQorICAgICAgICByZXR1 cm4gcmV0OworCisgICAgYnVmID0gcGt0LT5kYXRhOworCisgICAgYnl0ZXN0cmVhbV9wdXRfYnVm ZmVyKCZidWYsICJmYXJiZmVsZCIsIDgpOworCisgICAgYnl0ZXN0cmVhbV9wdXRfYmUzMigmYnVm LCBjdHgtPndpZHRoKTsKKyAgICBieXRlc3RyZWFtX3B1dF9iZTMyKCZidWYsIGN0eC0+aGVpZ2h0 KTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgUExBTkVfQ09VTlQ7ICsraSkKKyAgICAgICAg cGxhbmVzW2ldID0gcC0+ZGF0YVtpXTsKKworICAgIGF2X2ltYWdlX2NvcHlfdG9fYnVmZmVyKAor ICAgICAgICBidWYsCisgICAgICAgIHJhd19pbWdfc2l6ZSwKKyAgICAgICAgcGxhbmVzLAorICAg ICAgICBwLT5saW5lc2l6ZSwKKyAgICAgICAgcC0+Zm9ybWF0LAorICAgICAgICBwLT53aWR0aCwK KyAgICAgICAgcC0+aGVpZ2h0LAorICAgICAgICAxCisgICAgKTsKKworICAgICpnb3RfcGFja2V0 ID0gMTsKKworICAgIHJldHVybiAwOworfQorCitjb25zdCBGRkNvZGVjIGZmX2ZhcmJmZWxkX2Vu Y29kZXIgPSB7CisgICAgLnAubmFtZSAgICAgICAgID0gImZhcmJmZWxkIiwKKyAgICBDT0RFQ19M T05HX05BTUUoImZhcmJmZWxkIHVuY29tcHJlc3NlZCBpbWFnZSIpLAorICAgIC5wLnR5cGUgICAg ICAgICA9IEFWTUVESUFfVFlQRV9WSURFTywKKyAgICAucC5pZCAgICAgICAgICAgPSBBVl9DT0RF Q19JRF9GQVJCRkVMRCwKKyAgICAucC5jYXBhYmlsaXRpZXMgPSBBVl9DT0RFQ19DQVBfRFIxIHwg QVZfQ09ERUNfQ0FQX0ZSQU1FX1RIUkVBRFMsCisgICAgRkZfQ09ERUNfRU5DT0RFX0NCKGZhcmJm ZWxkX2VuY29kZV9mcmFtZSksCisgICAgLnAucGl4X2ZtdHMgICAgID0gKGNvbnN0IGVudW0gQVZQ aXhlbEZvcm1hdFtdKXsKKyAgICAgICAgQVZfUElYX0ZNVF9SR0JBNjRCRSwKKyAgICAgICAgQVZf UElYX0ZNVF9OT05FCisgICAgfSwKK307CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3ZlcnNpb24u aCBiL2xpYmF2Y29kZWMvdmVyc2lvbi5oCmluZGV4IDM5ZGJlYzAyMDguLjdhY2IyNjFiYjMgMTAw NjQ0Ci0tLSBhL2xpYmF2Y29kZWMvdmVyc2lvbi5oCisrKyBiL2xpYmF2Y29kZWMvdmVyc2lvbi5o CkBAIC0yOSw4ICsyOSw4IEBACiAKICNpbmNsdWRlICJ2ZXJzaW9uX21ham9yLmgiCiAKLSNkZWZp bmUgTElCQVZDT0RFQ19WRVJTSU9OX01JTk9SICAgNgotI2RlZmluZSBMSUJBVkNPREVDX1ZFUlNJ T05fTUlDUk8gMTAxCisjZGVmaW5lIExJQkFWQ09ERUNfVkVSU0lPTl9NSU5PUiAgIDcKKyNkZWZp bmUgTElCQVZDT0RFQ19WRVJTSU9OX01JQ1JPIDEwMAogCiAjZGVmaW5lIExJQkFWQ09ERUNfVkVS U0lPTl9JTlQgIEFWX1ZFUlNJT05fSU5UKExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiwgXAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJBVkNPREVDX1ZF UlNJT05fTUlOT1IsIFwKZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L01ha2VmaWxlIGIvbGliYXZm b3JtYXQvTWFrZWZpbGUKaW5kZXggMWM0ZDlkZWNjZC4uNTg4YTA5NzE0OSAxMDA2NDQKLS0tIGEv bGliYXZmb3JtYXQvTWFrZWZpbGUKKysrIGIvbGliYXZmb3JtYXQvTWFrZWZpbGUKQEAgLTI4NCw2 ICsyODQsNyBAQCBPQkpTLSQoQ09ORklHX0lNQUdFX0NSSV9QSVBFX0RFTVVYRVIpICAgICArPSBp bWcyZGVjLm8gaW1nMi5vCiBPQkpTLSQoQ09ORklHX0lNQUdFX0REU19QSVBFX0RFTVVYRVIpICAg ICArPSBpbWcyZGVjLm8gaW1nMi5vCiBPQkpTLSQoQ09ORklHX0lNQUdFX0RQWF9QSVBFX0RFTVVY RVIpICAgICArPSBpbWcyZGVjLm8gaW1nMi5vCiBPQkpTLSQoQ09ORklHX0lNQUdFX0VYUl9QSVBF X0RFTVVYRVIpICAgICArPSBpbWcyZGVjLm8gaW1nMi5vCitPQkpTLSQoQ09ORklHX0lNQUdFX0ZB UkJGRUxEX1BJUEVfREVNVVhFUikrPSBpbWcyZGVjLm8gaW1nMi5vCiBPQkpTLSQoQ09ORklHX0lN QUdFX0dFTV9QSVBFX0RFTVVYRVIpICAgICArPSBpbWcyZGVjLm8gaW1nMi5vCiBPQkpTLSQoQ09O RklHX0lNQUdFX0dJRl9QSVBFX0RFTVVYRVIpICAgICArPSBpbWcyZGVjLm8gaW1nMi5vCiBPQkpT LSQoQ09ORklHX0lNQUdFX0hEUl9QSVBFX0RFTVVYRVIpICAgICArPSBpbWcyZGVjLm8gaW1nMi5v CmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9hbGxmb3JtYXRzLmMgYi9saWJhdmZvcm1hdC9hbGxm b3JtYXRzLmMKaW5kZXggMzA1ZmE0NjUzMi4uNjkwMGVlODE5OSAxMDA2NDQKLS0tIGEvbGliYXZm b3JtYXQvYWxsZm9ybWF0cy5jCisrKyBiL2xpYmF2Zm9ybWF0L2FsbGZvcm1hdHMuYwpAQCAtNTM3 LDYgKzUzNyw3IEBAIGV4dGVybiBjb25zdCBGRklucHV0Rm9ybWF0ICBmZl9pbWFnZV9jcmlfcGlw ZV9kZW11eGVyOwogZXh0ZXJuIGNvbnN0IEZGSW5wdXRGb3JtYXQgIGZmX2ltYWdlX2Rkc19waXBl X2RlbXV4ZXI7CiBleHRlcm4gY29uc3QgRkZJbnB1dEZvcm1hdCAgZmZfaW1hZ2VfZHB4X3BpcGVf ZGVtdXhlcjsKIGV4dGVybiBjb25zdCBGRklucHV0Rm9ybWF0ICBmZl9pbWFnZV9leHJfcGlwZV9k ZW11eGVyOworZXh0ZXJuIGNvbnN0IEZGSW5wdXRGb3JtYXQgIGZmX2ltYWdlX2ZhcmJmZWxkX3Bp cGVfZGVtdXhlcjsKIGV4dGVybiBjb25zdCBGRklucHV0Rm9ybWF0ICBmZl9pbWFnZV9nZW1fcGlw ZV9kZW11eGVyOwogZXh0ZXJuIGNvbnN0IEZGSW5wdXRGb3JtYXQgIGZmX2ltYWdlX2dpZl9waXBl X2RlbXV4ZXI7CiBleHRlcm4gY29uc3QgRkZJbnB1dEZvcm1hdCAgZmZfaW1hZ2VfaGRyX3BpcGVf ZGVtdXhlcjsKZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L2ltZzIuYyBiL2xpYmF2Zm9ybWF0L2lt ZzIuYwppbmRleCA5OTgxODY3ZjgyLi43N2VkYzdmZjliIDEwMDY0NAotLS0gYS9saWJhdmZvcm1h dC9pbWcyLmMKKysrIGIvbGliYXZmb3JtYXQvaW1nMi5jCkBAIC05NSw2ICs5NSw3IEBACiAgICAg VEFHKFFPSSwgICAgICAgICAgICAgcW9pICAgICAgKSBcCiAgICAgVEFHKFJBRElBTkNFX0hEUiwg ICAgaGRyICAgICAgKSBcCiAgICAgVEFHKFdCTVAsICAgICAgICAgICAgd2JtcCAgICAgKSBcCisg ICAgVEFHKEZBUkJGRUxELCAgICAgICAgZmYgICAgICAgKSBcCiAgICAgVEFHKE5PTkUsICAgICAg ICAgICAgICAgICAgICAgKQogCiAjZGVmaW5lIExFTkdUSF9DSEVDSyhDT0RFQ0lELCBTVFIpIFwK ZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L2ltZzJkZWMuYyBiL2xpYmF2Zm9ybWF0L2ltZzJkZWMu YwppbmRleCBhNDA2NzVkNDM0Li43MDA5MWM3MGYyIDEwMDY0NAotLS0gYS9saWJhdmZvcm1hdC9p bWcyZGVjLmMKKysrIGIvbGliYXZmb3JtYXQvaW1nMmRlYy5jCkBAIC0xMjA1LDYgKzEyMDUsMjEg QEAgc3RhdGljIGludCB2Ym5fcHJvYmUoY29uc3QgQVZQcm9iZURhdGEgKnApCiAgICAgcmV0dXJu IDA7CiB9CiAKK3N0YXRpYyBpbnQgZmFyYmZlbGRfcHJvYmUoY29uc3QgQVZQcm9iZURhdGEgKnAp Cit7CisgICAgaWYgKHAtPmJ1Zl9zaXplIDwgMTYpCisgICAgICAgIHJldHVybiAwOworCisgICAg aWYgKG1lbWNtcChwLT5idWYsICJmYXJiZmVsZCIsIDgpKQorICAgICAgICByZXR1cm4gMDsKKwor ICAgIC8vIGNoZWNrIGlmIHdpZHRoIG9yIGhlaWdodCBpcyB6ZXJvCisgICAgaWYgKEFWX1JCMzIo cC0+YnVmICsgOCkgPT0gMCB8fCBBVl9SQjMyKHAtPmJ1ZiArIDEyKSA9PSAwKQorICAgICAgICBy ZXR1cm4gMDsKKworICAgIHJldHVybiBBVlBST0JFX1NDT1JFX01BWCAtIDE7Cit9CisKICNkZWZp bmUgSU1BR0VBVVRPX0RFTVVYRVJfMChpbWduYW1lLCBjb2RlY2lkKQogI2RlZmluZSBJTUFHRUFV VE9fREVNVVhFUl8xKGltZ25hbWUsIGNvZGVjaWQpXAogY29uc3QgRkZJbnB1dEZvcm1hdCBmZl9p bWFnZV8gIyMgaW1nbmFtZSAjIyBfcGlwZV9kZW11eGVyID0ge1wKQEAgLTEyMzQsNiArMTI0OSw3 IEBAIElNQUdFQVVUT19ERU1VWEVSKGNyaSwgICAgICAgQ1JJKQogSU1BR0VBVVRPX0RFTVVYRVIo ZGRzLCAgICAgICBERFMpCiBJTUFHRUFVVE9fREVNVVhFUihkcHgsICAgICAgIERQWCkKIElNQUdF QVVUT19ERU1VWEVSKGV4ciwgICAgICAgRVhSKQorSU1BR0VBVVRPX0RFTVVYRVIoZmFyYmZlbGQs ICBGQVJCRkVMRCkKIElNQUdFQVVUT19ERU1VWEVSKGdlbSwgICAgICAgR0VNKQogSU1BR0VBVVRP X0RFTVVYRVIoZ2lmLCAgICAgICBHSUYpCiBJTUFHRUFVVE9fREVNVVhFUl9FWFQoaGRyLCAgIFJB RElBTkNFX0hEUiwgSERSKQpkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvaW1nMmVuYy5jIGIvbGli YXZmb3JtYXQvaW1nMmVuYy5jCmluZGV4IDUyNmExMWU1ZWUuLjEzMzU1YTZmYWQgMTAwNjQ0Ci0t LSBhL2xpYmF2Zm9ybWF0L2ltZzJlbmMuYworKysgYi9saWJhdmZvcm1hdC9pbWcyZW5jLmMKQEAg LTI3Niw3ICsyNzYsNyBAQCBjb25zdCBGRk91dHB1dEZvcm1hdCBmZl9pbWFnZTJfbXV4ZXIgPSB7 CiAgICAgLnAubG9uZ19uYW1lICAgID0gTlVMTF9JRl9DT05GSUdfU01BTEwoImltYWdlMiBzZXF1 ZW5jZSIpLAogICAgIC5wLmV4dGVuc2lvbnMgICA9ICJibXAsZHB4LGV4cixqbHMsanBlZyxqcGcs anhsLGxqcGcscGFtLHBibSxwY3gscGZtLHBnbSxwZ215dXYscGhtLCIKICAgICAgICAgICAgICAg ICAgICAgICAicG5nLHBwbSxzZ2ksdGdhLHRpZix0aWZmLGpwMixqMmMsajJrLHh3ZCxzdW4scmFz LHJzLGltMSxpbTgsIgotICAgICAgICAgICAgICAgICAgICAgICJpbTI0LHN1bnJhcyx2Ym4seGJt LHhmYWNlLHBpeCx5LGF2aWYscW9pLGhkcix3Ym1wIiwKKyAgICAgICAgICAgICAgICAgICAgICAi aW0yNCxzdW5yYXMsdmJuLHhibSx4ZmFjZSxwaXgseSxhdmlmLHFvaSxoZHIsd2JtcCxmZiIsCiAg ICAgLnByaXZfZGF0YV9zaXplID0gc2l6ZW9mKFZpZGVvTXV4RGF0YSksCiAgICAgLnAudmlkZW9f Y29kZWMgID0gQVZfQ09ERUNfSURfTUpQRUcsCiAgICAgLndyaXRlX2hlYWRlciAgID0gd3JpdGVf aGVhZGVyLApkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvdmVyc2lvbi5oIGIvbGliYXZmb3JtYXQv dmVyc2lvbi5oCmluZGV4IDQ2ODdjZDg1N2MuLmFmN2QwYTEwMjQgMTAwNjQ0Ci0tLSBhL2xpYmF2 Zm9ybWF0L3ZlcnNpb24uaAorKysgYi9saWJhdmZvcm1hdC92ZXJzaW9uLmgKQEAgLTMxLDggKzMx LDggQEAKIAogI2luY2x1ZGUgInZlcnNpb25fbWFqb3IuaCIKIAotI2RlZmluZSBMSUJBVkZPUk1B VF9WRVJTSU9OX01JTk9SICAgMwotI2RlZmluZSBMSUJBVkZPUk1BVF9WRVJTSU9OX01JQ1JPIDEw NAorI2RlZmluZSBMSUJBVkZPUk1BVF9WRVJTSU9OX01JTk9SICAgNAorI2RlZmluZSBMSUJBVkZP Uk1BVF9WRVJTSU9OX01JQ1JPIDEwMAogCiAjZGVmaW5lIExJQkFWRk9STUFUX1ZFUlNJT05fSU5U IEFWX1ZFUlNJT05fSU5UKExJQkFWRk9STUFUX1ZFUlNJT05fTUFKT1IsIFwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCQVZGT1JNQVRfVkVSU0lPTl9N SU5PUiwgXAotLSAKMi40NS4yCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcu b3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8g dW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1 ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==