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 5178045E3A for ; Mon, 12 Jun 2023 15:40:21 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9490B68C3EF; Mon, 12 Jun 2023 18:40:18 +0300 (EEST) Received: from mail-vk1-f174.google.com (mail-vk1-f174.google.com [209.85.221.174]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5E52768C112 for ; Mon, 12 Jun 2023 18:40:12 +0300 (EEST) Received: by mail-vk1-f174.google.com with SMTP id 71dfb90a1353d-462a2998bceso1438924e0c.2 for ; Mon, 12 Jun 2023 08:40:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686584411; x=1689176411; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=QO+nsie+J5rKBTRiret2t/4yrKVNC5jTr7UE/UsrmuA=; b=h6bzBcqGGaQMosIrVsBFuCJFFFJCSBWcdQXFeEssIfXhoaAQgt3qletljKJg3cgfxb rhgXvAqr49UcNymzijkxG2NnxtIfcAtVJEHFoj2Xi+VA/CrtRv/2rHnnBmI6zLHcZ3f3 WQkgP9yL8iG9ilriT+BtaBhOfQTZbAB8GORl4XnzX6wgDfQavQYrA2w7Xw3fgoeDFdZl r03+kp2Siv7nKtEtTRz2cTCbMDLxzH2m/lYDETrJ+jbne5p+SgBSvq0HCVoNZK8o5n4o zyPt5Ym3ejdTV4xMCWxG+t0ANY80HcDUY4w3XPXpGyJH0ZlXJ+FNtl9Q7SIXb9s9Zr7p KJ5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686584411; x=1689176411; 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=QO+nsie+J5rKBTRiret2t/4yrKVNC5jTr7UE/UsrmuA=; b=CQDldACFZEuGsX+xRX2CCYzto5SbJPqTlidd2/+6M+3RMNjzOMnW32E93IGcXgNc6E ZnaQkjzvzu4AZ23IY3dJEb6tO1Gj/CyD2G0Kk2nFdMGkGU4BENZOpkwUnSD+MWcnSi6g iBtVpAHLjA27Zft/0dht652A9D8T3fcrxP/aI7NhsudVWZ1BVG8a9APYcxZlJvYNax9k 9kfndPlC61T0jdmAsUQQn8XnbYDlaA0u06bOnt9lZB+36aNhBxnNtNcqp4Uphl7LOYUJ +2jYS6HAWa+E2gCLtZmd9hWNuDTO7gCArRf/w0xeuofLnPo6bKoJZKEWx4iM/nSQU4YP JsIQ== X-Gm-Message-State: AC+VfDziwKuONlP/wOv/gZt1BE87RnA25CasqNNvNH8f4+mfoC5+aKVc qo32zsjvzrVE54tR786po/QHVJodo25WuGWeEJCccTAr X-Google-Smtp-Source: ACHHUZ78jTJkoxCz55DuXedJbNDHaRG97PQs8/7FbyugjyZRqwXtQaJmKe5El12gbtxSTfocICf6fccF/ZgJfFgTI7o= X-Received: by 2002:a67:ff1a:0:b0:43d:ee98:5613 with SMTP id v26-20020a67ff1a000000b0043dee985613mr1928323vsp.9.1686584410452; Mon, 12 Jun 2023 08:40:10 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Paul B Mahol Date: Mon, 12 Jun 2023 17:39:51 +0200 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH] avcodec: add VMX1 decoder 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: T24gU2F0LCBKdW4gMTAsIDIwMjMgYXQgMTI6MjTigK9QTSBBbmRyZWFzIFJoZWluaGFyZHQgPAph bmRyZWFzLnJoZWluaGFyZHRAb3V0bG9vay5jb20+IHdyb3RlOgoKPiBQYXVsIEIgTWFob2w6Cj4g PiArc3RhdGljIGF2X2NvbGQgaW50IGRlY29kZV9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCkK PiA+ICt7Cj4gPiArICAgIFZNSVhDb250ZXh0ICpzID0gYXZjdHgtPnByaXZfZGF0YTsKPiA+ICsK PiA+ICsgICAgYXZjdHgtPmJpdHNfcGVyX3Jhd19zYW1wbGUgPSA4Owo+ID4gKyAgICBhdmN0eC0+ cGl4X2ZtdCA9IEFWX1BJWF9GTVRfWVVWNDIyUDsKPiA+ICsKPiA+ICsgICAgYXZjdHgtPmNvZGVk X3dpZHRoID0gRkZBTElHTihhdmN0eC0+d2lkdGgsIDE2KTsKPiA+ICsgICAgYXZjdHgtPmNvZGVk X2hlaWdodCA9IEZGQUxJR04oYXZjdHgtPmhlaWdodCwgMTYpOwo+ID4gKwo+ID4gKyAgICBmZl9p ZGN0ZHNwX2luaXQoJnMtPmlkc3AsIGF2Y3R4KTsKPgo+IE1pc3NpbmcgaWRjdGRzcCBjb25maWd1 cmUgZGVwZW5kZW5jeS4KPgoKQWRkZWQuCgoKPgo+ID4gKyAgICBmZl9wZXJtdXRlX3NjYW50YWJs ZShzLT5zY2FuLCBmZl96aWd6YWdfZGlyZWN0LAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICBzLT5pZHNwLmlkY3RfcGVybXV0YXRpb24pOwo+ID4gKyAgICByZXR1cm4gMDsKPiA+ICt9Cj4g PiArCj4gPiArc3RhdGljIGlubGluZSBpbnQgZ2V0X3NlX2dvbG9tYl92bWl4KEdldEJpdENvbnRl eHQgKmdiKQo+ID4gK3sKPiA+ICsgICAgdW5zaWduZWQgaW50IGJ1ZiA9IGdldF91ZV9nb2xvbWJf bG9uZyhnYik7Cj4gPiArICAgIGludCBzaWduID0gKGJ1ZiAmIDEpIC0gMTsKPiA+ICsgICAgcmV0 dXJuICgoYnVmID4+IDEpIF4gKH5zaWduKSk7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBpbnQg ZGVjb2RlX2RjYWMoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgR2V0Qml0Q29udGV4dCAqZGNfZ2IsIEdldEJpdENvbnRleHQgKmFjX2diLAo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgKmRjcnVuLCB1bnNpZ25lZCAqYWNydW4sCj4g PiArICAgICAgICAgICAgICAgICAgICAgICBBVkZyYW1lICpmcmFtZSwgaW50IHdpZHRoLCBpbnQg YnksIGludCBwbGFuZSkKPiA+ICt7Cj4gPiArICAgIGNvbnN0IHB0cmRpZmZfdCBsaW5lc2l6ZSA9 IGZyYW1lLT5saW5lc2l6ZVtwbGFuZV07Cj4gPiArICAgIHVpbnQ4X3QgKmRzdCA9IGZyYW1lLT5k YXRhW3BsYW5lXSArIGJ5ICogbGluZXNpemU7Cj4gPiArICAgIHVuc2lnbmVkIGRjX3J1biA9ICpk Y3J1biwgYWNfcnVuID0gKmFjcnVuOwo+ID4gKyAgICBMT0NBTF9BTElHTkVEXzMyKGludDE2X3Qs IGJsb2NrLCBbNjRdKTsKPiA+ICsgICAgVk1JWENvbnRleHQgKnMgPSBhdmN0eC0+cHJpdl9kYXRh Owo+ID4gKyAgICBjb25zdCBpbnQxNl90ICpmYWN0b3JzID0gcy0+ZmFjdG9yczsKPiA+ICsgICAg Y29uc3QgdWludDhfdCAqc2NhbiA9IHMtPnNjYW47Cj4gPiArICAgIGNvbnN0IGludCBhZGQgPSBw bGFuZSA/IDAgOiAxMDI0Owo+ID4gKyAgICBpbnQgaSwgZGNfdiA9IDAsIGFjX3YgPSAwLCBkYyA9 IDA7Cj4gPiArCj4gPiArICAgIGZvciAoaW50IHkgPSAwOyB5IDwgMjsgeSsrKSB7Cj4gPiArICAg ICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4ICs9IDgpIHsKPiA+ICsgICAgICAgICAg ICBtZW1zZXQoYmxvY2ssIDAsIHNpemVvZigqYmxvY2spKjY0KTsKPiA+ICsKPiA+ICsgICAgICAg ICAgICBpZiAoZGNfcnVuID4gMCkgewo+ID4gKyAgICAgICAgICAgICAgICBkY19ydW4tLTsKPiA+ ICsgICAgICAgICAgICB9IGVsc2Ugewo+ID4gKyAgICAgICAgICAgICAgICBkY192ID0gZ2V0X3Nl X2dvbG9tYl92bWl4KGRjX2diKTsKPiA+ICsgICAgICAgICAgICAgICAgZGMgKz0gZGNfdjsKPiA+ ICsgICAgICAgICAgICAgICAgaWYgKCFkY192KQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZGNf cnVuID0gZ2V0X3VlX2dvbG9tYl9sb25nKGRjX2diKTsKPiA+ICsgICAgICAgICAgICB9Cj4gPiAr Cj4gPiArICAgICAgICAgICAgZm9yIChpbnQgbiA9IDA7IG4gPCA2NDsgbisrKSB7Cj4gPiArICAg ICAgICAgICAgICAgIGlmIChhY19ydW4gPiAwKSB7Cj4gPiArICAgICAgICAgICAgICAgICAgICBh Y19ydW4tLTsKPiA+ICsgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ID4gKyAgICAgICAg ICAgICAgICB9Cj4gPiArCj4gPiArICAgICAgICAgICAgICAgIGFjX3YgPSBnZXRfc2VfZ29sb21i X3ZtaXgoYWNfZ2IpOwo+ID4gKyAgICAgICAgICAgICAgICBpID0gc2NhbltuXTsKPiA+ICsgICAg ICAgICAgICAgICAgYmxvY2tbaV0gPSAoYWNfdiAqIGZhY3RvcnNbaV0pID4+IDQ7Cj4gPiArICAg ICAgICAgICAgICAgIGlmICghYWNfdikKPiA+ICsgICAgICAgICAgICAgICAgICAgIGFjX3J1biA9 IGdldF91ZV9nb2xvbWJfbG9uZyhhY19nYik7Cj4gPiArICAgICAgICAgICAgfQo+ID4gKwo+ID4g KyAgICAgICAgICAgIGJsb2NrWzBdID0gKChkYyArIGFkZCkgKiAxNikgPj4gNDsKPiA+ICsgICAg ICAgICAgICBzLT5pZHNwLmlkY3RfcHV0KGRzdCArIHgsIGxpbmVzaXplLCBibG9jayk7Cj4gPiAr ICAgICAgICB9Cj4gPiArCj4gPiArICAgICAgICBkc3QgKz0gOCAqIGxpbmVzaXplOwo+ID4gKyAg ICB9Cj4gPiArCj4gPiArICAgICpkY3J1biA9IGRjX3J1bjsKPiA+ICsgICAgKmFjcnVuID0gYWNf cnVuOwo+ID4gKwo+ID4gKyAgICByZXR1cm4gMDsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGlu dCBkZWNvZGVfc2xpY2UoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVkZyYW1lICpmcmFtZSwKPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpkY19zcmMsIHVuc2lnbmVk IGRjX3NsaWNlX3NpemUsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhf dCAqYWNfc3JjLCB1bnNpZ25lZCBhY19zbGljZV9zaXplLAo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgIGludCBieSkKPiA+ICt7Cj4gPiArICAgIHVuc2lnbmVkIGRjX3J1biA9IDAsIGFjX3J1 biA9IDA7Cj4gPiArICAgIEdldEJpdENvbnRleHQgZGNfZ2IsIGFjX2diOwo+ID4gKyAgICBpbnQg cmV0Owo+ID4gKwo+ID4gKyAgICByZXQgPSBpbml0X2dldF9iaXRzOCgmZGNfZ2IsIGRjX3NyYywg ZGNfc2xpY2Vfc2l6ZSk7Cj4gPiArICAgIGlmIChyZXQgPCAwKQo+ID4gKyAgICAgICAgcmV0dXJu IHJldDsKPiA+ICsKPiA+ICsgICAgcmV0ID0gaW5pdF9nZXRfYml0czgoJmFjX2diLCBhY19zcmMs IGFjX3NsaWNlX3NpemUpOwo+ID4gKyAgICBpZiAocmV0IDwgMCkKPiA+ICsgICAgICAgIHJldHVy biByZXQ7Cj4gPiArCj4gPiArICAgIGZvciAoaW50IHAgPSAwOyBwIDwgMzsgcCsrKSB7Cj4gPiAr ICAgICAgICBjb25zdCBpbnQgcnNoaWZ0ID0gISFwOwo+ID4gKyAgICAgICAgcmV0ID0gZGVjb2Rl X2RjYWMoYXZjdHgsICZkY19nYiwgJmFjX2diLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgJmRjX3J1biwgJmFjX3J1biwgZnJhbWUsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICBmcmFtZS0+d2lkdGggPj4gcnNoaWZ0LCBieSwgcCk7Cj4gPiArICAgICAgICBpZiAocmV0IDwg MCkKPiA+ICsgICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4gKwo+ID4gKyAgICAgICAgaWYgKGdl dF9iaXRzX2xlZnQoJmRjX2diKSA8IDApCj4gPiArICAgICAgICAgICAgcmV0dXJuIEFWRVJST1Jf SU5WQUxJRERBVEE7Cj4gPiArICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdCgmYWNfZ2IpIDwgMCkK PiA+ICsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiA+ICsKPiA+ICsg ICAgICAgIGFsaWduX2dldF9iaXRzKCZkY19nYik7Cj4gPiArICAgICAgICBhbGlnbl9nZXRfYml0 cygmYWNfZ2IpOwo+ID4gKyAgICB9Cj4gPiArCj4gPiArICAgIGlmIChnZXRfYml0c19sZWZ0KCZk Y19nYikgPiAwKQo+ID4gKyAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gPiAr ICAgIGlmIChnZXRfYml0c19sZWZ0KCZhY19nYikgPiAwKQo+ID4gKyAgICAgICAgcmV0dXJuIEFW RVJST1JfSU5WQUxJRERBVEE7Cj4gPiArCj4gPiArICAgIHJldHVybiAwOwo+ID4gK30KPiA+ICsK PiA+ICtzdGF0aWMgaW50IGRlY29kZV9zbGljZXMoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCB2b2lk ICphcmcsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIGludCBuLCBpbnQgdGhyZWFkX25i KQo+ID4gK3sKPiA+ICsgICAgVk1JWENvbnRleHQgKnMgPSBhdmN0eC0+cHJpdl9kYXRhOwo+ID4g KyAgICBjb25zdCB1aW50OF90ICpkY19zbGljZV9wdHIgPSBzLT5zbGljZXNbbl0uZGNfcHRyOwo+ ID4gKyAgICBjb25zdCB1aW50OF90ICphY19zbGljZV9wdHIgPSBzLT5zbGljZXNbbl0uYWNfcHRy Owo+ID4gKyAgICB1bnNpZ25lZCBkY19zbGljZV9zaXplID0gcy0+c2xpY2VzW25dLmRjX3NpemU7 Cj4gPiArICAgIHVuc2lnbmVkIGFjX3NsaWNlX3NpemUgPSBzLT5zbGljZXNbbl0uYWNfc2l6ZTsK PiA+ICsgICAgQVZGcmFtZSAqZnJhbWUgPSBhcmc7Cj4gPiArCj4gPiArICAgIHJldHVybiBkZWNv ZGVfc2xpY2UoYXZjdHgsIGZyYW1lLCBkY19zbGljZV9wdHIsIGRjX3NsaWNlX3NpemUsCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgYWNfc2xpY2VfcHRyLCBhY19zbGljZV9zaXplLCBuICog MTYpOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW50IGRlY29kZV9mcmFtZShBVkNvZGVjQ29u dGV4dCAqYXZjdHgsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgQVZGcmFtZSAqZnJhbWUs IGludCAqZ290X2ZyYW1lLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIEFWUGFja2V0ICph dnBrdCkKPiA+ICt7Cj4gPiArICAgIFZNSVhDb250ZXh0ICpzID0gYXZjdHgtPnByaXZfZGF0YTsK PiA+ICsgICAgdW5zaWduZWQgb2Zmc2V0ID0gMywgcTsKPiA+ICsgICAgaW50IHJldDsKPiA+ICsK PiA+ICsgICAgaWYgKGF2cGt0LT5zaXplIDw9IDcpCj4gPiArICAgICAgICByZXR1cm4gQVZFUlJP Ul9JTlZBTElEREFUQTsKPiA+ICsKPiA+ICsgICAgaWYgKGF2cGt0LT5kYXRhWzBdICE9IDB4MDEp Cj4gPiArICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiA+ICsKPiA+ICsgICAg cSA9IGF2X2NsaXAoOTkgLSBhdl9jbGlwKGF2cGt0LT5kYXRhWzFdLCAwLCA5OSksIDAsCj4gRkZf QVJSQVlfRUxFTVMocXVhbGl0eSkgLSAxKTsKPgo+IFRoZSBpbm5lciBhdl9jbGlwKCkgaXMgcmVk dW5kYW50Lgo+CgpUaGF0IGlzIG5vdCB2ZXJ5IGNyaXRpY2FsLgoKCj4KPiA+ICsgICAgZm9yIChp bnQgbiA9IDA7IG4gPCA2NDsgbisrKQo+ID4gKyAgICAgICAgcy0+ZmFjdG9yc1tuXSA9IHF1YW50 W25dICogcXVhbGl0eVtxXTsKPiA+ICsKPiA+ICsgICAgcy0+bmJfc2xpY2VzID0gYXZwa3QtPmRh dGFbMl07Cj4gPiArICAgIGlmICghcy0+bmJfc2xpY2VzIHx8IHMtPm5iX3NsaWNlcyA+IChhdmN0 eC0+aGVpZ2h0ICsgMTUpIC8gMTYpCj4gPiArICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElE REFUQTsKPiA+ICsKPiA+ICsgICAgcmV0ID0gZmZfdGhyZWFkX2dldF9idWZmZXIoYXZjdHgsIGZy YW1lLCAwKTsKPgo+IFRoaXMgc2hvdWxkIGJlIG1vdmVkIGFmdGVyIHRoZSBsb29wcyBiZWxvdyBp biBvcmRlciB0byBhdm9pZCBhbgo+IGFsbG9jYXRpb24gaW4gY2FzZSBvZiBpbnZhbGlkIGlucHV0 Lgo+CgpNb3ZlZC4KCgo+Cj4gPiArICAgIGlmIChyZXQgPCAwKQo+ID4gKyAgICAgICAgcmV0dXJu IHJldDsKPiA+ICsKPiA+ICsgICAgZm9yIChpbnQgbiA9IDA7IG4gPCBzLT5uYl9zbGljZXM7IG4r Kykgewo+ID4gKyAgICAgICAgdW5zaWduZWQgc2xpY2Vfc2l6ZTsKPiA+ICsKPiA+ICsgICAgICAg IGlmIChvZmZzZXQgKyA0ID4gYXZwa3QtPnNpemUpCj4gPiArICAgICAgICAgICAgcmV0dXJuIEFW RVJST1JfSU5WQUxJRERBVEE7Cj4gPiArCj4gPiArICAgICAgICBzbGljZV9zaXplID0gQVZfUkwz MihhdnBrdC0+ZGF0YSArIG9mZnNldCk7Cj4gPiArICAgICAgICBpZiAoc2xpY2Vfc2l6ZSA+IGF2 cGt0LT5zaXplKQo+ID4gKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ ID4gKwo+ID4gKyAgICAgICAgaWYgKGF2cGt0LT5zaXplIC0gc2xpY2Vfc2l6ZSAtIDRMTCA8IG9m ZnNldCkKPiA+ICsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiA+ICsK PiA+ICsgICAgICAgIHMtPnNsaWNlc1tuXS5kY19zaXplID0gc2xpY2Vfc2l6ZTsKPiA+ICsgICAg ICAgIHMtPnNsaWNlc1tuXS5kY19wdHIgPSBhdnBrdC0+ZGF0YSArIG9mZnNldCArIDQ7Cj4gPiAr ICAgICAgICBvZmZzZXQgKz0gc2xpY2Vfc2l6ZSArIDQ7Cj4gPiArICAgIH0KPiA+ICsKPiA+ICsg ICAgZm9yIChpbnQgbiA9IDA7IG4gPCBzLT5uYl9zbGljZXM7IG4rKykgewo+ID4gKyAgICAgICAg dW5zaWduZWQgc2xpY2Vfc2l6ZTsKPiA+ICsKPiA+ICsgICAgICAgIGlmIChvZmZzZXQgKyA0ID4g YXZwa3QtPnNpemUpCj4gPiArICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7 Cj4gPiArCj4gPiArICAgICAgICBzbGljZV9zaXplID0gQVZfUkwzMihhdnBrdC0+ZGF0YSArIG9m ZnNldCk7Cj4gPiArICAgICAgICBpZiAoc2xpY2Vfc2l6ZSA+IGF2cGt0LT5zaXplKQo+ID4gKyAg ICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ID4gKwo+ID4gKyAgICAgICAg aWYgKGF2cGt0LT5zaXplIC0gc2xpY2Vfc2l6ZSAtIDRMTCA8IG9mZnNldCkKPiA+ICsgICAgICAg ICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiA+ICsKPiA+ICsgICAgICAgIHMtPnNs aWNlc1tuXS5hY19zaXplID0gc2xpY2Vfc2l6ZTsKPiA+ICsgICAgICAgIHMtPnNsaWNlc1tuXS5h Y19wdHIgPSBhdnBrdC0+ZGF0YSArIG9mZnNldCArIDQ7Cj4gPiArICAgICAgICBvZmZzZXQgKz0g c2xpY2Vfc2l6ZSArIDQ7Cj4gPiArICAgIH0KPgo+IFRoZXNlIGxvb3BzIGNvdWxkIGJlIGNvbWJp bmVkIGlmIHlvdSBtb2RpZmllZCB0aGUgd2F5IHlvdSBzdG9yZWQgdGhlCj4gZGF0YSBieSBwdXR0 aW5nIHRoZSBkYyBpbmZvcm1hdGlvbiBpbnRvIHNsaWNlc1tuXSBhbmQgdGhlIGNvcnJlc3BvbmRp bmcKPiBhYyBpbmZvcm1hdGlvbiBpbnRvIHNsaWNlc1tuICsgbmJfc2xpY2VzXS4gSW4gdGhpcyBj YXNlLCB5b3Ugd291bGQgbmVlZAo+IHRvIHVucGFjayB0aGlzIGluIGRlY29kZV9zbGljZXMuCj4g SWYgeW91IGRvbid0IGRvIHRoaXMsIHRoZW4gdGhlcmUgaXMgbm8gbmVlZCB0byBwdXQgbmJfc2xp Y2VzIGluIHRoZQo+IGNvbnRleHQuIEl0IGNhbiBiZSBsb2NhbCB0byB0aGlzIGZ1bmN0aW9uLgo+ CgogTm90IHZlcnkgY3JpdGljYWwuCgoKPgo+ID4gKwo+ID4gKyAgICBhdmN0eC0+ZXhlY3V0ZTIo YXZjdHgsIGRlY29kZV9zbGljZXMsIGZyYW1lLCBOVUxMLCBzLT5uYl9zbGljZXMpOwo+ID4gKwo+ ID4gKyAgICBmcmFtZS0+cGljdF90eXBlID0gQVZfUElDVFVSRV9UWVBFX0k7Cj4gPiArICAgIGZy YW1lLT5mbGFncyB8PSBBVl9GUkFNRV9GTEFHX0tFWTsKPiA+ICsKPiA+ICsgICAgKmdvdF9mcmFt ZSA9IDE7Cj4gPiArCj4gPiArICAgIHJldHVybiBhdnBrdC0+c2l6ZTsKPiA+ICt9Cj4KPgoKV2ls bCBhcHBseSB3aXRoIGxvY2FsIGNoYW5nZXMgc29vbi4KCgo+IF9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdAo+ IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCj4gaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlz dGluZm8vZmZtcGVnLWRldmVsCj4KPiBUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwg b3IgZW1haWwKPiBmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAi dW5zdWJzY3JpYmUiLgo+Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcK aHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1 YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RA ZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4K