From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id A7BCAC9830E for ; Thu, 24 Sep 2026 08:16:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Reply-To:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Message-Id:Date: References:In-Reply-To:Cc:To:Subject:From:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=1mj7dXtRpsKvSu+IPOn3bpC9m43Ej3QA141WqOp6QKM=; b=wbWh1AhVcvw2sx 2+uFjTp0mwqruY746hcaPcMz2jWKtAlKJ2XZujWIne+gVXioo3O4KKke45eh533nQrrhVOjha/4bX mfVSHwKipNA2pcdYTfltpl5M0VvG864XfJdV9yx8jkY0HW0psvGdz7cB6S8awMQnStd3gIAvbl3oE sTD6rABM+hynGkcR1zqQ+fBuCJx/KtK1utMjy+wocEhbwPPhzbkNvJIFUvbjfCC0iGM/Mr2aZVDeS d0uVQVxvjtYQBwZUnto5DdmgrLMeeBhvjChpnu6kQ/EcaDEfyCnTjtpi97xX5WuYpA7QC0hVE7s2b DlmbVKLj364ucKFijtwA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1x9ece-0000000AP8Q-2S5t; Thu, 24 Sep 2026 08:16:04 +0000 Received: from sea.source.kernel.org ([2600:3c0a:e001:78e:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1x9ecd-0000000AP7z-1JAD for linux-amlogic@lists.infradead.org; Thu, 24 Sep 2026 08:16:03 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id D938143F04; Thu, 24 Sep 2026 08:16:02 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 559A31F000FF; Thu, 24 Sep 2026 08:16:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1790237762; bh=GOxE0BXvtdjv6yfx25iDdB2Rz1L1dqVbBTy1rcGZPRQ=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=M/aFGvfqy7pgOMKCpVuB19dIQa2RdmWG+ha5MVpPOH7lqF/FHwNxAiIchg+Y5Liv/ v6RwWOWl01eDOFh8+b9Uz+sGPc8nbDDqej4MRkOYIv3IOY3N1SibhiTKTrEv1hwYC+ Sxvj+y9mOnohD+spa4ACK7qcwszSAn6YaIN4UgmXdnVhHmO8SSSGRABO6Q4aHc/C+6 ubsos+aAccquC8Hm746Ec8y3MLP11TbUvouSfz4fZdG0wpU0cq4kyrUkLCEydAgoUM OafWbwCmvf8oO7zL5H1EdfBsM8PCAflVO77s28qXVbHP6T4IFcTadNe3CdV0L7y4u+ PZyrQIp1JC17A== From: sashiko-bot@kernel.org Subject: Re: [PATCH v10 4/6] decoder: Add V4L2 stateless H.264 decoder driver To: "Zhentao Guo" Cc: robh@kernel.org, media-ci@linuxtv.org, devicetree@vger.kernel.org, neil.armstrong@linaro.org, conor+dt@kernel.org, linux-amlogic@lists.infradead.org In-Reply-To: <20260924-b4-s4-vdec-upstream-v10-4-1289303a58a4@amlogic.com> References: <20260924-b4-s4-vdec-upstream-v10-0-1289303a58a4@amlogic.com> <20260924-b4-s4-vdec-upstream-v10-4-1289303a58a4@amlogic.com> Date: Thu, 24 Sep 2026 08:16:01 +0000 Message-Id: <20260924081602.559A31F000FF@smtp.kernel.org> X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: sashiko-reviews@lists.linux.dev MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org VGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiEgU2FzaGlrbyBBSSByZXZpZXcgZm91bmQg MjAgcG90ZW50aWFsIGlzc3VlKHMpIHRvIGNvbnNpZGVyOgotIFtDcml0aWNhbF0gbWVkaWE6IGFt bG9naWM6IGFyYml0cmFyeSBwaHlzaWNhbCBtZW1vcnkgcmVhZCB2aWEgdW52YWxpZGF0ZWQgZmly c3RfbWJfaW5fc2xpY2UKLSBbQ3JpdGljYWxdIG1lZGlhOiBhbWxvZ2ljOiBoZWFwIGJ1ZmZlciBv dmVyZmxvdyBpbiByZWZlcmVuY2UgbGlzdCByZW9yZGVyaW5nCi0gW0hpZ2hdIG1lZGlhOiBhbWxv Z2ljOiBzb2Z0IGxvY2t1cCB2aWEgYXRvbWljIGJ1c3ktd2FpdCBpbiBhbWxfc3RvcF92ZGVjX2h3 KCkKLSBbSGlnaF0gbWVkaWE6IGFtbG9naWM6IFdBUk5fT04gZHVlIHRvIGRvdWJsZSBjb21wbGV0 aW9uIG9mIFY0TDIgY29udHJvbCByZXF1ZXN0cwotIFtIaWdoXSBtZWRpYTogYW1sb2dpYzogbWVt b3J5IGxlYWsgb2YgaDI2NCBjb250ZXh0IGFuZCBETUEgYnVmZmVycyBvbiBTVFJFQU1PTgotIFtI aWdoXSBtZWRpYTogYW1sb2dpYzogc2hpZnRpbmcgaGFyZHdhcmUgUmVmUGljTGlzdCBpbmRpY2Vz IG9uIGludmFsaWQgcmVmZXJlbmNlCi0gW0hpZ2hdIG1lZGlhOiBhbWxvZ2ljOiBpbmNvcnJlY3Qg YmFzZSBhZGRyZXNzIGZvciBjb2xsb2NhdGVkIGJ1ZmZlcnMgZHVlIHRvIDh4OCBzaGlmdAotIFtI aWdoXSBtZWRpYTogYW1sb2dpYzogVklGSUZPIHdyaXRlIHBvaW50ZXIgcHJvZ3JhbW1lZCBiZXlv bmQgcmluZyBidWZmZXIgYm91bmRzCi0gW0hpZ2hdIG1lZGlhOiBhbWxvZ2ljOiBpbmZpbml0ZSBw b2xsIHRpbWVvdXQgZGVhZGxvY2tzIHRoZSB0aHJlYWRlZCBJUlEgaGFuZGxlcgotIFtIaWdoXSBt ZWRpYTogYW1sb2dpYzogb3V0LW9mLWJvdW5kcyBETUEgd3JpdGUgZHVlIHRvIHVuZGVyc2l6ZWQg YnVmZmVycyBmb3IgaW50ZXJsYWNlZAotIFtIaWdoXSBtZWRpYTogYW1sb2dpYzogVUFGIHdoZW4g VklESU9DX1NUUkVBTU9GRiBmcmVlcyBjb250ZXh0IGNvbmN1cnJlbnRseQotIFtIaWdoXSBtZWRp YTogYW1sb2dpYzogT09CIERNQSB3cml0ZSBvZiBjb2xsb2NhdGVkIE1WcyBkdXJpbmcgZHluYW1p YyByZXNvbHV0aW9uIGNoYW5nZQotIFtIaWdoXSBtZWRpYTogYW1sb2dpYzogVUFGIG9mIE0yTSBk ZXZpY2UgYW5kIGRldm0gcmVzb3VyY2VzIHdoZW4gZmQgb3V0bGl2ZXMgcmVtb3ZlCi0gW0hpZ2hd IG1lZGlhOiBhbWxvZ2ljOiB0aHJlYWRlZCBJUlEgYWNjZXNzZXMgcG93ZXJlZC1vZmYgcmVnaXN0 ZXJzIGR1cmluZyByZW1vdmUKLSBbSGlnaF0gbWVkaWE6IGFtbG9naWM6IGNvbnRleHQgY2xlYW51 cCB1bmNvbmRpdGlvbmFsbHkgcmVzZXRzIHNoYXJlZCBoYXJkd2FyZQotIFtIaWdoXSBtZWRpYTog YW1sb2dpYzogZWFybHkgZGV2aWNlIHJlZ2lzdHJhdGlvbiBleHBvc2VzIHVucG93ZXJlZCBoYXJk d2FyZSB0byB1c2Vyc3BhY2UKLSBbSGlnaF0gbWVkaWE6IGFtbG9naWM6IG1pc3NpbmcgY2hlY2tz IG9uIGNsb2NrIGFuZCBwb3dlciBkb21haW4gZW5hYmxlbWVudAotIFtNZWRpdW1dIG1lZGlhOiBh bWxvZ2ljOiBhbGxvY2F0aW9uIGZhaWx1cmUgZm9yIGxhcmdlIGZpcm13YXJlIHVzaW5nIGt6YWxs b2MKLSBbTWVkaXVtXSBtZWRpYTogYW1sb2dpYzogc2lnbmVkIGludGVnZXIgb3ZlcmZsb3cgaW4g Y29sbG9jYXRlZCBidWZmZXIgYml0bWFzawotIFtMb3ddIG1lZGlhOiBhbWxvZ2ljOiBvdXQtb2Yt Ym91bmRzIHJlYWQgb2YgcmVvcmRlcl9jbWQgYXJyYXkgZHVlIHRvIG9mZi1ieS1vbmUgY2hlY2sK LS0KCmNvbW1pdCBkNzQ1ZDI5NDQ3MWIwZDE3NmVkYmE2N2IwNGJlZThhMGM2Yjk1YzA0CkF1dGhv cjogWmhlbnRhbyBHdW8gPHpoZW50YW8uZ3VvQGFtbG9naWMuY29tPgoKZGVjb2RlcjogQWRkIFY0 TDIgc3RhdGVsZXNzIEguMjY0IGRlY29kZXIgZHJpdmVyCgpUaGlzIGNvbW1pdCBhZGRzIGluaXRp YWwgc3VwcG9ydCBmb3IgdGhlIHY0bDIgc3RhdGVsZXNzIHZpZGVvIGRlY29kZXIgZHJpdmVyCm9u IHRoZSBBbWxvZ2ljIFM0IChTODA1WDIpIHBsYXRmb3JtLCBzdXBwb3J0aW5nIDgtYml0IEguMjY0 IHByb2dyZXNzaXZlIApiaXRzdHJlYW0gZGVjb2RpbmcuCgo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L21lZGlhL3BsYXRmb3JtL2FtbG9naWMvdmRlYy9hbWxfdmRlYy5jIGIvZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS9hbWxvZ2ljL3ZkZWMvYW1sX3ZkZWMuYwo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxh dGZvcm0vYW1sb2dpYy92ZGVjL2FtbF92ZGVjLmMKPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRm b3JtL2FtbG9naWMvdmRlYy9hbWxfdmRlYy5jClsgLi4uIF0KPiBAQCBtMm1vcHNfdmRlY19kZXZp Y2VfcnVuIEBACj4gIAlpZiAoc3JjX3JlcSkKPiAgCQl2NGwyX2N0cmxfcmVxdWVzdF9jb21wbGV0 ZShzcmNfcmVxLCAmY3R4LT5jdHJsX2hhbmRsZXIpOwo+ICAJaWYgKHJldCA8IDAgfHwgY3R4LT5j dXJyX2ZybV9lcnJfZmxhZykKPiAgCQlnb3RvIGVycl9jYW5jZWxfam9iOwo+ICAJdjRsMl9tMm1f YnVmX2RvbmVfYW5kX2pvYl9maW5pc2goZGV2LT5tMm1fZGV2X2RlYywgY3R4LT5tMm1fY3R4LAo+ ICAJCQkJCSBWQjJfQlVGX1NUQVRFX0RPTkUpOwpbIC4uLiBdCj4gQEAgdmIyb3BzX3ZkZWNfYnVm X3JlcXVlc3RfY29tcGxldGUgQEAKPiAgc3RhdGljIHZvaWQgdmIyb3BzX3ZkZWNfYnVmX3JlcXVl c3RfY29tcGxldGUoc3RydWN0IHZiMl9idWZmZXIgKnZiKQo+ICB7Cj4gIAlzdHJ1Y3QgYW1sX3Zk ZWNfY3R4ICpjdHggPSB2YjJfZ2V0X2Rydl9wcml2KHZiLT52YjJfcXVldWUpOwo+ICAKPiAgCXY0 bDJfY3RybF9yZXF1ZXN0X2NvbXBsZXRlKHZiLT5yZXFfb2JqLnJlcSwgJmN0eC0+Y3RybF9oYW5k bGVyKTsKPiAgfQoKW1NldmVyaXR5OiBIaWdoXQpXaWxsIHRoaXMgc2VxdWVuY2UgY2F1c2UgYSBk b3VibGUgY29tcGxldGlvbiBvZiB2NGwyIGNvbnRyb2wgcmVxdWVzdHM/IAoKU2luY2UgbTJtb3Bz X3ZkZWNfZGV2aWNlX3J1bigpIG1hbnVhbGx5IGNhbGxzIHY0bDJfY3RybF9yZXF1ZXN0X2NvbXBs ZXRlKCkgCmZvciB0aGUgc291cmNlIHJlcXVlc3QgYW5kIHRoZW4gbWFya3MgdGhlIGJ1ZmZlciBk b25lLCB0aGUgdmlkZW9idWYyIGNvcmUgCmF1dG9tYXRpY2FsbHkgaW52b2tlcyB2YjJvcHNfdmRl Y19idWZfcmVxdWVzdF9jb21wbGV0ZSgpLiBUaGlzIHNlY29uZGFyeSAKY2FsbGJhY2sgaW52b2tl cyB2NGwyX2N0cmxfcmVxdWVzdF9jb21wbGV0ZSgpIGFnYWluIG9uIHRoZSBzYW1lIHJlcXVlc3Qs IAp3aGljaCB0cmlnZ2VycyBhIHdhcm5fb24oKSBpbiB0aGUgbWVkaWEgcmVxdWVzdCBjb3JlLgoK WyAuLi4gXQo+IEBAIHZiMm9wc192ZGVjX3N0YXJ0X3N0cmVhbWluZyBAQAo+ICAJaWYgKFY0TDJf VFlQRV9JU19PVVRQVVQocS0+dHlwZSkpIHsKPiAgCQlzdHJ1Y3QgdmIyX3Y0bDJfYnVmZmVyICpz cmNfYnVmOwo+ICAKPiAgCQlpZiAoYW1sX3ZkZWNfaW5pdF9kZWNfaW5zdChjdHgpIDwgMCkgewo+ ICAJCQl3aGlsZSAoKHNyY19idWYgPSB2NGwyX20ybV9zcmNfYnVmX3JlbW92ZShjdHgtPm0ybV9j dHgpKSkKWyAuLi4gXQo+IEBAIHZiMm9wc192ZGVjX3N0b3Bfc3RyZWFtaW5nIEBACj4gIAlpZiAo IWN0eC0+aXNfb3V0cHV0X3N0cmVhbW9uICYmICFjdHgtPmlzX2NhcF9zdHJlYW1vbikKPiAgCQlh bWxfdmRlY19yZWxlYXNlX2luc3RhbmNlKGN0eCk7CgpbU2V2ZXJpdHk6IEhpZ2hdCkNvdWxkIHRo aXMgbGVhayB0aGUgaDI2NCBjb250ZXh0IGFuZCBkbWEgYnVmZmVycyBvbiBzdHJlYW0gdG9nZ2xl PwoKQ2FsbGluZyB2aWRpb2Nfc3RyZWFtb24gZm9yIHRoZSBvdXRwdXQgcXVldWUgdHJpZ2dlcnMg CnZiMm9wc192ZGVjX3N0YXJ0X3N0cmVhbWluZygpLCB3aGljaCBibGluZGx5IGFsbG9jYXRlcyBh IG5ldyBjb250ZXh0IHZpYSAKYW1sX2gyNjRfaW5pdCgpLiBJZiBhIHVzZXIgY2FsbHMgdmlkaW9j X3N0cmVhbW9mZiBvbiB0aGUgb3V0cHV0IHF1ZXVlIHdoaWxlIAp0aGUgY2FwdHVyZSBxdWV1ZSBy ZW1haW5zIGFjdGl2ZSwgdmIyb3BzX3ZkZWNfc3RvcF9zdHJlYW1pbmcoKSBza2lwcyBmcmVlaW5n IAp0aGUgY29udGV4dCBiZWNhdXNlIGJvdGggcXVldWVzIGFyZSBub3Qgc3RvcHBlZC4gQSBzdWJz ZXF1ZW50IHN0cmVhbW9uIG9uIAp0aGUgb3V0cHV0IHF1ZXVlIHdpbGwgYWxsb2NhdGUgYSBuZXcg Y29udGV4dCwgaXJyZXZlcnNpYmx5IGRyb3BwaW5nIHRoZSAKcG9pbnRlcnMgdG8gdGhlIG9sZCBj b250ZXh0IGFuZCBpdHMgZG1hIGFsbG9jYXRpb25zLgoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9t ZWRpYS9wbGF0Zm9ybS9hbWxvZ2ljL3ZkZWMvYW1sX3ZkZWNfZHJ2LmMgYi9kcml2ZXJzL21lZGlh L3BsYXRmb3JtL2FtbG9naWMvdmRlYy9hbWxfdmRlY19kcnYuYwo+IC0tLSBhL2RyaXZlcnMvbWVk aWEvcGxhdGZvcm0vYW1sb2dpYy92ZGVjL2FtbF92ZGVjX2Rydi5jCj4gKysrIGIvZHJpdmVycy9t ZWRpYS9wbGF0Zm9ybS9hbWxvZ2ljL3ZkZWMvYW1sX3ZkZWNfZHJ2LmMKWyAuLi4gXQo+IEBAIGZv cHNfdmNvZGVjX3JlbGVhc2UgQEAKPiAgc3RhdGljIGludCBmb3BzX3Zjb2RlY19yZWxlYXNlKHN0 cnVjdCBmaWxlICpmaWxlKQo+ICB7Cj4gIAlzdHJ1Y3QgYW1sX3ZkZWNfY3R4ICpjdHggPSBmaF90 b19kZWNfY3R4KGZpbGUpOwo+ICAKPiAgCXY0bDJfbTJtX2N0eF9yZWxlYXNlKGN0eC0+bTJtX2N0 eCk7ClsgLi4uIF0KPiBAQCBhbWxfdmRlY19kcnZfcmVtb3ZlIEBACj4gIAl2ZGVjX2Rpc2FibGUo ZGV2LT5kZWNfaHcpOwo+ICAJbWVkaWFfZGV2aWNlX3VucmVnaXN0ZXIoJmRldi0+bWRldik7Cj4g IAl2NGwyX20ybV91bnJlZ2lzdGVyX21lZGlhX2NvbnRyb2xsZXIoZGV2LT5tMm1fZGV2X2RlYyk7 Cj4gIAl2aWRlb191bnJlZ2lzdGVyX2RldmljZShkZXYtPnZmZCk7Cj4gIAltZWRpYV9kZXZpY2Vf Y2xlYW51cCgmZGV2LT5tZGV2KTsKPiAgCj4gIAl2NGwyX20ybV9yZWxlYXNlKGRldi0+bTJtX2Rl dl9kZWMpOwo+ICAJZGV2LT5wdmRlY19kYXRhLT5kZXN0cm95X2h3X3Jlc291cmNlKGRldik7Cgpb U2V2ZXJpdHk6IEhpZ2hdCkNhbiB0aGlzIGxlYWQgdG8gYSB1c2UtYWZ0ZXItZnJlZSBpZiB0aGUg ZmlsZSBkZXNjcmlwdG9yIG91dGxpdmVzIHRoZSAKZGV2aWNlIHJlbW92YWw/IAoKSW4gYW1sX3Zk ZWNfZHJ2X3JlbW92ZSgpLCB2NGwyX20ybV9yZWxlYXNlKCkgZXhwbGljaXRseSBmcmVlcyB0aGUg bTJtIGRldmljZS4KU2hvcnRseSBhZnRlciwgdGhlIGRldm0gaW5mcmFzdHJ1Y3R1cmUgZnJlZXMg dGhlIGFtbF92ZGVjX2RldiBzdHJ1Y3R1cmUuIApCZWNhdXNlIHZpZGVvX3VucmVnaXN0ZXJfZGV2 aWNlKCkgZG9lcyBub3QgZm9yY2libHkgY2xvc2Ugb3BlbiBmaWxlIApkZXNjcmlwdG9ycywgYW4g b3BlbiBmaWxlIGRlc2NyaXB0b3IgY2xvc2VkIGxhdGVyIHRyaWdnZXJzIApmb3BzX3Zjb2RlY19y ZWxlYXNlKCksIHdoaWNoIGFjY2Vzc2VzIHRoZSBtYW51YWxseSBmcmVlZCBtMm1fZGV2IGFuZCB0 aGUgCmRldm0tZnJlZWQgY3R4LT5kZXYuCgpbU2V2ZXJpdHk6IEhpZ2hdCkRvZXMgdGhpcyBleHBv c2UgdW5wb3dlcmVkIGhhcmR3YXJlIHRvIHVzZXJzcGFjZSBkdXJpbmcgcmVnaXN0cmF0aW9uIGFu ZCAKcmVtb3ZhbD8KCkluIGFtbF92ZGVjX2Rydl9wcm9iZSgpLCB2aWRlb19yZWdpc3Rlcl9kZXZp Y2UoKSBleHBvc2VzIHRoZSB2aWRlbyBub2RlIAp0byB1c2Vyc3BhY2UgYmVmb3JlIHZkZWNfZW5h YmxlKCkgcG93ZXJzIG9uIHRoZSBoYXJkd2FyZSBkb21haW5zLiBVc2Vyc3BhY2UgCmNvdWxkIG9w ZW4gdGhlIGRldmljZSBhbmQgYXR0ZW1wdCB0byBzdGFydCBqb2JzLiAKClNpbWlsYXJseSwgaW4g YW1sX3ZkZWNfZHJ2X3JlbW92ZSgpLCB2ZGVjX2Rpc2FibGUoKSBzaHV0cyBkb3duIGhhcmR3YXJl IApjbG9ja3MgYmVmb3JlIHZpZGVvX3VucmVnaXN0ZXJfZGV2aWNlKCkgYW5kIHY0bDJfbTJtX3Jl bGVhc2UoKSBzYWZlbHkgCmNhbmNlbCBvbmdvaW5nIG0ybSBqb2JzLiBBY2Nlc3NpbmcgdW5jbG9j a2VkIG9yIHVucG93ZXJlZCBtbWlvIHJlZ2lzdGVycyAKb2Z0ZW4gcmVzdWx0cyBpbiBhIHN5bmNo cm9ub3VzIGV4dGVybmFsIGFib3J0LgoKW1NldmVyaXR5OiBIaWdoXQpDb3VsZCB0aGUgdGhyZWFk ZWQgaXJxIGhhbmRsZXIgZXhlY3V0ZSBhbmQgYWNjZXNzIHVucG93ZXJlZCByZWdpc3RlcnMgaGVy ZT8KClRoZSBoYXJkd2FyZSBpcyBzaHV0IGRvd24gdmlhIHZkZWNfZGlzYWJsZSgpIGJlZm9yZSB0 aGUgaW50ZXJydXB0IHJlcXVlc3RlZCAKdmlhIGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEoKSBp cyBkaXNhYmxlZCBhbmQgc3luY2hyb25pemVkLiBJZiBhbiAKaW50ZXJydXB0IGZpcmVzIGp1c3Qg YmVmb3JlIHZkZWNfZGlzYWJsZSgpLCB0aGUgdGhyZWFkZWQgaXNyIGlzIHNjaGVkdWxlZC4gClRo ZSBydW5uaW5nIGgyNjRfdGhyZWFkZWRfaXNyX2Z1bmMoKSB3aWxsIHVuY29uZGl0aW9uYWxseSBy ZWFkIGZyb20gRE9TX0JVUyAKcmVnaXN0ZXJzIGxpa2UgRFBCX1NUQVRVU19SRUcsIHRyaWdnZXJp bmcgYSBzeW5jaHJvbm91cyBleHRlcm5hbCBhYm9ydC4KCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv bWVkaWEvcGxhdGZvcm0vYW1sb2dpYy92ZGVjL2FtbF92ZGVjX2h3LmMgYi9kcml2ZXJzL21lZGlh L3BsYXRmb3JtL2FtbG9naWMvdmRlYy9hbWxfdmRlY19ody5jCj4gLS0tIGEvZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS9hbWxvZ2ljL3ZkZWMvYW1sX3ZkZWNfaHcuYwo+ICsrKyBiL2RyaXZlcnMvbWVk aWEvcGxhdGZvcm0vYW1sb2dpYy92ZGVjL2FtbF92ZGVjX2h3LmMKWyAuLi4gXQo+IEBAIGFtbF9z dG9wX3ZkZWNfaHcgQEAKPiAgCXJldCA9IHJlYWRfcG9sbF90aW1lb3V0X2F0b21pYyhyZWFkX2Rv c19yZWcsIHJlZ192YWwsCj4gIAkJCQkgICAgICAgIShyZWdfdmFsICYgMHg4MDAwKSwKPiAgCQkJ CSAgICAgICAxMCwgMTAwMDAwLCB0cnVlLAo+ICAJCQkJICAgICAgIGh3LCBJTUVNX0RNQV9DVFJM KTsKPiAgCj4gIAlyZXQgPSByZWFkX3BvbGxfdGltZW91dF9hdG9taWMocmVhZF9kb3NfcmVnLCBy ZWdfdmFsLAo+ICAJCQkJICAgICAgICEocmVnX3ZhbCAmIDB4ODAwMCksCj4gIAkJCQkgICAgICAg MTAsIDEwMDAwMCwgdHJ1ZSwKPiAgCQkJCSAgICAgICBodywgTE1FTV9ETUFfQ1RSTCk7Cj4gIAo+ ICAJcmV0ID0gcmVhZF9wb2xsX3RpbWVvdXRfYXRvbWljKHJlYWRfZG9zX3JlZywgcmVnX3ZhbCwK PiAgCQkJCSAgICAgICAhKHJlZ192YWwgJiAweGZmZiksCj4gIAkJCQkgICAgICAgMTAsIDMwMDAw MCwgdHJ1ZSwKPiAgCQkJCSAgICAgICBodywgV1JSU1BfTE1FTSk7CgpbU2V2ZXJpdHk6IEhpZ2hd CkRvZXMgdGhpcyBzdGFsbCB0aGUgY3B1IGZvciBodW5kcmVkcyBvZiBtaWxsaXNlY29uZHM/CgpU aGUgYXRvbWljIHZhcmlhbnRzIG9mIHJlYWRfcG9sbF90aW1lb3V0IGludGVybmFsbHkgbG9vcCB3 aXRoIHVkZWxheSgpLCAKZm9yY2luZyB0aGUgY3B1IHRvIGJ1c3ktd2FpdCBjb250aW51b3VzbHku IFdhaXRpbmcgdXAgdG8gMzAwbXMgYXRvbWljYWxseSAKaXMgaGlnaGx5IGxpa2VseSB0byB0cmln Z2VyIHJjdSBzdGFsbHMgYW5kIHRoZSBzb2Z0IGxvY2t1cCB3YXRjaGRvZy4gClNpbmNlIHRoZSBj YWxsZXJzIHN1Y2ggYXMgYW1sX2gyNjRfZXhpdCgpIGV4ZWN1dGUgaW4gc2xlZXBhYmxlIGNvbnRl eHRzLCAKdGhlIG5vbi1hdG9taWMgcmVhZF9wb2xsX3RpbWVvdXQoKSBzaG91bGQgYmUgdXNlZCBp bnN0ZWFkLgoKWyAuLi4gXQo+IEBAIHBtX3ZkZWNfcG93ZXJfZG9tYWluX3Bvd2VyX29uIEBACj4g IAlpZiAoZ2F0ZV9ub2RlKSB7Cj4gIAkJY2xrX3ByZXBhcmVfZW5hYmxlKGdhdGVfbm9kZS0+Y2xr KTsKWyAuLi4gXQo+ICAJaWYgKGRldikgewo+ICAJCXBtX3J1bnRpbWVfZ2V0X3N5bmMoZGV2KTsK CltTZXZlcml0eTogSGlnaF0KQXJlIHRoZSByZXR1cm4gdmFsdWVzIGZvciBjbG9jayBhbmQgcG93 ZXIgZG9tYWluIGVuYWJsZW1lbnQgaW50ZW50aW9uYWxseSAKaWdub3JlZCBoZXJlPwoKSWYgdGhl c2UgY2FsbHMgZmFpbCB0byBlbmFibGUgdGhlIGhhcmR3YXJlIHJlc291cmNlcywgcHJvY2VlZGlu ZyB0byBhY2Nlc3MgCm1taW8gcmVnaXN0ZXJzIGluIGRvc19sb2NhbF9jb25maWcoKSB3aWxsIHJl c3VsdCBpbiBhIHN5bmNocm9ub3VzIGV4dGVybmFsIAphYm9ydCwgY3Jhc2hpbmcgdGhlIHN5c3Rl bS4KCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1sb2dpYy92ZGVjL2Ft bF92ZGVjX3RlZV9mdy5jIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbWxvZ2ljL3ZkZWMvYW1s X3ZkZWNfdGVlX2Z3LmMKPiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtbG9naWMvdmRl Yy9hbWxfdmRlY190ZWVfZncuYwo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1sb2dp Yy92ZGVjL2FtbF92ZGVjX3RlZV9mdy5jClsgLi4uIF0KPiBAQCBnZXRfZmlybXdhcmUgQEAKPiAg CS8qIGdldCByaWQgb2YgdGhlIGZpcnN0IDMySyBieXRlcyBwbGFpbnRleHQgKi8KPiAgCSpzaXpl ID0gZnctPnNpemUgLSBVQ09ERV9IRUFERVJfU0laRTsKPiAgCWJ1ZiA9IGt6YWxsb2MoKnNpemUs IEdGUF9LRVJORUwpOwo+ICAJaWYgKCFidWYpIHsKCltTZXZlcml0eTogTWVkaXVtXQpXaWxsIHRo aXMga3phbGxvYygpIHN1Y2NlZWQgZm9yIGxhcmdlIHZpZGVvIGZpcm13YXJlIGJsb2JzIG9uIGEg ZnJhZ21lbnRlZCAKc3lzdGVtPyAKClZpZGVvIGZpcm13YXJlIGlzIHR5cGljYWxseSBsYXJnZSwg YW5kIGt6YWxsb2MoKSByZXF1aXJlcyBwaHlzaWNhbGx5IApjb250aWd1b3VzIHBhZ2VzLiBTaW5j ZSB0aGlzIGJ1ZmZlciBpcyBvbmx5IHVzZWQgdG8gc3RhZ2UgZGF0YSBjb3B5aW5nIAppbnRvIHRl ZSBzaGFyZWQgbWVtb3J5IGluIGNodW5rcywgcGh5c2ljYWwgY29udGlndWl0eSBzZWVtcyB1bm5l Y2Vzc2FyeS4gClVzaW5nIHZtYWxsb2MoKSBvciBrdnphbGxvYygpIG1pZ2h0IGJlIG1vcmUgcmVs aWFibGUuCgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtbG9naWMvdmRl Yy9oMjY0LmMgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtbG9naWMvdmRlYy9oMjY0LmMKPiAt LS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtbG9naWMvdmRlYy9oMjY0LmMKPiArKysgYi9k cml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtbG9naWMvdmRlYy9oMjY0LmMKWyAuLi4gXQo+IEBAIGgy NjRfcHJlcGFyZV9pbnB1dCBAQAo+ICAJcmVnbWFwX3dyaXRlKGh3LT5tYXBbRE9TX0JVU10sIFZM RF9NRU1fVklGSUZPX1JQLAo+ICAJCSAgICAgcm91bmRfZG93bihzcmNfZG1hLCBWREVDX0ZJRk9f QUxJR04pKTsKPiAgCWR1bW15ID0gcGF5bG9hZF9zaXplICsgVkxEX1BBRERJTkdfU0laRTsKPiAg CXJlZ21hcF93cml0ZShody0+bWFwW0RPU19CVVNdLCBWTERfTUVNX1ZJRklGT19XUCwKPiAgCQkg ICAgIHJvdW5kX2Rvd24oKHNyY19kbWEgKyBkdW1teSksIFZERUNfRklGT19BTElHTikpOwoKW1Nl dmVyaXR5OiBIaWdoXQpDYW4gdGhpcyByaW5nIGJ1ZmZlciB3cml0ZSBwb2ludGVyIGV4Y2VlZCB0 aGUgZGVmaW5lZCBib3VuZGFyaWVzPwoKVGhlIGhhcmR3YXJlIGJpdHN0cmVhbSByaW5nIGJ1ZmZl ciBpcyBjb25maWd1cmVkIHdpdGggU1RBUlRfUFRSIGF0IHRoZSBzdGFydCAKb2YgdGhlIGRtYSBi dWZmZXIgYW5kIEVORF9QVFIgc3RyaWN0bHkgYXQgdGhlIGVuZCBvZiB0aGUgcGF5bG9hZC4gClBy b2dyYW1taW5nIFdQIHBhc3QgRU5EX1BUUiBjYXVzZXMgdGhlIGhhcmR3YXJlIHRvIGF0dGVtcHQg YW4gb3V0LW9mLWJvdW5kcyAKcGh5c2ljYWwgbWVtb3J5IHJlYWQuIEFsc28sIGJlY2F1c2UgdGhl IHJlYWQgcG9pbnRlciBtYXRoZW1hdGljYWxseSB3cmFwcyAKYXQgRU5EX1BUUiwgaXQgd2lsbCBu ZXZlciBlcXVhbCB0aGUgb3V0LW9mLWJvdW5kcyBXUCwgY2F1c2luZyB0aGUgaGFyZHdhcmUgCnRv IGJlbGlldmUgdGhlIGZpZm8gaXMgaW5maW5pdGVseSBmdWxsIGFuZCBzcGluIGVuZGxlc3NseS4K ClsgLi4uIF0KPiBAQCBjb25maWdfc3BzX3BhcmFtcyBAQAo+ICAJaDI2NF9jdHgtPmZyYW1lX3dp ZHRoID0gKHNwcy0+cGljX3dpZHRoX2luX21ic19taW51czEgKyAxKSA8PCA0Owo+ICAJaDI2NF9j dHgtPmZyYW1lX2hlaWdodCA9IChzcHMtPnBpY19oZWlnaHRfaW5fbWFwX3VuaXRzX21pbnVzMSAr IDEpIDw8IDQ7CgpbU2V2ZXJpdHk6IEhpZ2hdCklzIHRoZXJlIGEgcmlzayBvZiB1bmRlcnNpemVk IGJ1ZmZlciBhbGxvY2F0aW9ucyBmb3IgaW50ZXJsYWNlZCBzdHJlYW1zPwoKVGhlIGRyaXZlciBj b21wdXRlcyBmcmFtZV9oZWlnaHQgZGlyZWN0bHkgZnJvbSBwaWNfaGVpZ2h0X2luX21hcF91bml0 c19taW51czEgCndpdGhvdXQgY2hlY2tpbmcgdGhlIGZyYW1lX21ic19vbmx5X2ZsYWcuIEZvciBp bnRlcmxhY2VkIGNvbnRlbnQsIHRoaXMgCnNwZWNpZmllcyBoYWxmIHRoZSBhY3R1YWwgZnJhbWUg aGVpZ2h0LiBUaGlzIHJlc3VsdHMgaW4gYWxsb2NfY29sb2NhdGVfY21hKCkgCmFsbG9jYXRpbmcg YSBoYWxmLXNpemVkIGJ1ZmZlciwgY2F1c2luZyB0aGUgaGFyZHdhcmUgdG8gcGVyZm9ybSBhbiAK b3V0LW9mLWJvdW5kcyBkbWEgd3JpdGUgZHVyaW5nIGRlY29kaW5nLiBQcm9ncmVzc2l2ZS1vbmx5 IGRyaXZlcnMgdHlwaWNhbGx5IApyZWplY3Qgc3RyZWFtcyBtaXNzaW5nIHRoZSBWNEwyX0gyNjRf U1BTX0ZMQUdfRlJBTUVfTUJTX09OTFkgZmxhZy4KClsgLi4uIF0KPiBAQCByZW9yZGVyX3Nob3J0 X3Rlcm0gQEAKPiAgCW1lbWNweSgmcmVmX2xpc3RfcmVvcmRlcmVkWypyZWZfaWR4X2x4XSwgcGlj X2x4LCBzaXplb2Yoc3RydWN0IGgyNjRfZGVjb2RlX2J1Zl9zcGVjKSk7Cj4gIAlkZXZfZGJnKCZj dHgtPmRldi0+cGxhdF9kZXYtPmRldiwgIiVzIDogUmVmUGljTGlzdFhbJWQgXSA9IHBpYyAlcCBw aWNfbnVtKCVkKVxuIiwgX19mdW5jX18sCj4gIAkJKnJlZl9pZHhfbHgsIHBpY19seCwgcmVmX2xp c3RfcmVvcmRlcmVkWypyZWZfaWR4X2x4XS5kcGItPnBpY19udW0pOwo+ICAJKnJlZl9pZHhfbHgg PSAqcmVmX2lkeF9seCArIDE7ClsgLi4uIF0KPiBAQCByZW9yZGVyX2xvbmdfdGVybSBAQAo+ICAJ bWVtY3B5KCZyZWZfbGlzdFsqcmVmX2lkeF9seF0sIHBpY19sdCwgc2l6ZW9mKHN0cnVjdCBoMjY0 X2RlY29kZV9idWZfc3BlYykpOwo+ICAJZGV2X2RiZygmY3R4LT5kZXYtPnBsYXRfZGV2LT5kZXYs ICIlcyA6IFJlZlBpY0xpc3RYWyVkIF0gPSBwaWMgJXAgcGljX251bSglZClcbiIsIF9fZnVuY19f LAo+ICAJCSpyZWZfaWR4X2x4LCBwaWNfbHQsIHJlZl9saXN0WypyZWZfaWR4X2x4XS5kcGItPnBp Y19udW0pOwo+ICAJKnJlZl9pZHhfbHggPSAqcmVmX2lkeF9seCArIDE7ClsgLi4uIF0KPiBAQCBy ZW9yZGVyX3BpY3MgQEAKPiAgCXBpY19udW1fbHhfcHJlZCA9IGN1cnJfcGljX251bTsKPiAgCWZv ciAoaSA9IDA7IGkgPCBSRU9SREVSSU5HX0NPTU1BTkRfTUFYX1NJWkUgJiYgbW9kaWZpY2F0aW9u X29mX3BpY19udW1zX2lkY1tpXSAhPSAzOyBpKyspIHsKCltTZXZlcml0eTogQ3JpdGljYWxdCkNv dWxkIHRoaXMgbG9vcCBvdmVyZmxvdyB0aGUgcmVmX2xpc3QgYXJyYXlzPwoKVGhlIHJlZl9saXN0 IGFycmF5cyBpbiBhbWxfaDI2NF9jdHggYXJlIHN0YXRpY2FsbHkgc2l6ZWQgdG8gMTcgZWxlbWVu dHMuIApIb3dldmVyLCB0aGUgbG9vcCBwcm9jZXNzZXMgdXAgdG8gUkVPUkRFUklOR19DT01NQU5E X01BWF9TSVpFICgzMykgCnJlb3JkZXJpbmcgY29tbWFuZHMuIEJlY2F1c2UgdGhlcmUgaXMgbm8g Ym91bmRzIGNoZWNrIGVuc3VyaW5nIAoqcmVmX2lkeF9seCA8IDE3IGJlZm9yZSB0aGUgbWVtY3B5 IG9wZXJhdGlvbnMgaW4gcmVvcmRlcl9zaG9ydF90ZXJtIGFuZCAKcmVvcmRlcl9sb25nX3Rlcm0s IGEgY3JhZnRlZCBiaXRzdHJlYW0gd2l0aCBleGNlc3NpdmUgcmVvcmRlciBjb21tYW5kcyBjYW4g CnRyaWdnZXIgYSBkZXRlcm1pbmlzdGljIG91dC1vZi1ib3VuZHMgd3JpdGUgb2YgaDI2NF9kZWNv ZGVfYnVmX3NwZWMgc3RydWN0cyAKaW50byBhZGphY2VudCBoZWFwIG1lbW9yeS4KClsgLi4uIF0K PiBAQCBhbGxvY19jb2xvY2F0ZV9jbWEgQEAKPiAgCWlmIChoMjY0X2N0eC0+Y29sbGF0ZWRfY21h X3ZhZGRyKQo+ICAJCXJldHVybiAwOwo+ICAKPiAgCWh3ID0gdmRlY19nZXRfaHcoY3R4LT5kZXYp Owo+ICAJaWYgKCFodykKPiAgCQlyZXR1cm4gLTE7Cj4gIAo+ICAJLyogOTYgOmNvbCBidWYgc2l6 ZSBmb3IgZWFjaCBtYiAqLwo+ICAJaDI2NF9jdHgtPm9uZV9jb2xfYnVmX3NpemUgPSBoMjY0X2N0 eC0+bWJfdG90YWwgKiA5NjsKCltTZXZlcml0eTogSGlnaF0KRG9lcyB0aGlzIGxvZ2ljIGNvcnJl Y3RseSB1cGRhdGUgdGhlIGNvbGxvY2F0ZWQgYnVmZmVyIHNpemUgZHVyaW5nIGR5bmFtaWMgCnJl c29sdXRpb24gY2hhbmdlcz8KCldoZW4gYSBzdHJlYW0gZHluYW1pY2FsbHkgaW5jcmVhc2VzIGlu IHJlc29sdXRpb24sIGgyNjRfY3R4LT5tYl90b3RhbCAKaW5jcmVhc2VzLiBIb3dldmVyLCB0aGUg ZWFybHkgcmV0dXJuIGluIGFsbG9jX2NvbG9jYXRlX2NtYSgpIHByZXZlbnRzIApvbmVfY29sX2J1 Zl9zaXplIGZyb20gdXBkYXRpbmcuIFdoZW4gdGhlIGhhcmR3YXJlIGxhdGVyIGRlY29kZXMgYSBs YXJnZXIgCmZyYW1lLCBpdCBwcm9jZXNzZXMgdGhlIG5ldyBtYl90b3RhbCBtYWNyb2Jsb2NrcyBi dXQgdGhlIHBvaW50ZXIgCmNhbGN1bGF0aW9ucyByZWx5IG9uIHRoZSBvbGQgc2l6ZSwgY2F1c2lu ZyBhbiBvdXQtb2YtYm91bmRzIGRtYSB3cml0ZSAKb3V0c2lkZSB0aGUgY21hIGJ1ZmZlciBib3Vu ZHMuCgpbIC4uLiBdCj4gQEAgYWxsb2NhdGVfY29sb2NhdGVfYnVmIEBACj4gIAlmb3IgKGkgPSAw OyBpIDwgaDI2NF9jdHgtPmNvbG9jYXRlZF9idWZfbnVtOyBpKyspIHsKPiAgCQlpZiAoKChoMjY0 X2N0eC0+Y29sb2NhdGVkX2J1Zl9tYXAgPj4gaSkgJiAweDEpID09IDApIHsKPiAgCQkJaDI2NF9j dHgtPmNvbG9jYXRlZF9idWZfbWFwIHw9ICgxIDw8IGkpOwo+ICAJCQlicmVhazsKPiAgCQl9Cj4g IAl9ClsgLi4uIF0KPiBAQCByZWxlYXNlX2NvbG9jYXRlX2J1ZiBAQAo+ICAJCX0gZWxzZSB7Cj4g IAkJCWlmICgoKGgyNjRfY3R4LT5jb2xvY2F0ZWRfYnVmX21hcCA+PiBpbmRleCkgJiAweDEpID09 IDB4MSkgewo+ICAJCQkJaDI2NF9jdHgtPmNvbG9jYXRlZF9idWZfbWFwICY9ICh+KDEgPDwgaW5k ZXgpKTsKCltTZXZlcml0eTogTWVkaXVtXQpDYW4gc2hpZnRpbmcgYnkgMzEgYml0cyB0cmlnZ2Vy IHNpZ25lZCBpbnRlZ2VyIG92ZXJmbG93PwoKVGhlIGV4cHJlc3Npb24gKDEgPDwgaSkgdXNlcyBh IHNpZ25lZCAzMi1iaXQgaW50ZWdlci4gSWYgdGhlIDMxc3QgCmNvbGxvY2F0ZWQgYnVmZmVyIGlz IGFjY2Vzc2VkLCBpdCBvdmVyZmxvd3MgaW50byB0aGUgc2lnbiBiaXQsIHJlc3VsdGluZyAKaW4g dW5kZWZpbmVkIGJlaGF2aW9yLiBVc2luZyAxVSA8PCBpIG1pZ2h0IGJlIHNhZmVyLgoKWyAuLi4g XQo+IEBAIGdldF9tb2RpZmljYXRpb25fY21kIEBACj4gIAkJCWkrKzsKPiAgCj4gIAkJCWlmIChp ID49IFJFT1JERVJJTkdfQ09NTUFORF9NQVhfU0laRSkgewo+ICAJCQkJY3Vycl9zbGljZS0+cmVm X3BpY19saXN0X3Jlb3JkZXJpbmdfZmxhZ1tsaXN0XSA9IDA7Cj4gIAkJCQlicmVhazsKPiAgCQkJ fTsKPiAgCQkJaWYgKGogPiBSRU9SREVSX0NNRF9NQVgpIHsKPiAgCQkJCWN1cnJfc2xpY2UtPnJl Zl9waWNfbGlzdF9yZW9yZGVyaW5nX2ZsYWdbbGlzdF0gPSAwOwo+ICAJCQkJYnJlYWs7Cj4gIAkJ CX07Cj4gIAkJfSB3aGlsZSAodmFsICE9IDMpOwoKW1NldmVyaXR5OiBMb3ddCklzIHRoZSBsb29w IHRlcm1pbmF0aW9uIGNvbmRpdGlvbiBjb3JyZWN0IGhlcmU/CgpDaGVja2luZyBpZiAoaiA+IFJF T1JERVJfQ01EX01BWCkgZmFpbHMgdG8gYnJlYWsgdGhlIGxvb3Agd2hlbiBqIHJlYWNoZXMgCnRo ZSBhcnJheSBzaXplICg2NikuIEluIHRoZSBuZXh0IGl0ZXJhdGlvbiwgdGhlIGNvZGUgcmVhZHMg ZXhhY3RseSBvbmUgCmVsZW1lbnQgcGFzdCB0aGUgZW5kIG9mIHRoZSByZW9yZGVyX2NtZCBhcnJh eS4KClsgLi4uIF0KPiBAQCBoMjY0X2NvbmZpZ19kZWNvZGVfYnVmIEBACj4gIAlmb3IgKGkgPSAw OyBpIDwgaDI2NF9jdHgtPmxpc3Rfc2l6ZVswXTsgaSsrKSB7Cj4gIAkJaWYgKCFoMjY0X2N0eC0+ cmVmX2xpc3QwW2ldLnZhbGlkKQo+ICAJCQljb250aW51ZTsKPiAgCQljYW52YXNfcG9zID0gaDI2 NF9jdHgtPnJlZl9saXN0MFtpXS5jYW52YXNfcG9zOwoKW1NldmVyaXR5OiBIaWdoXQpEb2VzIHNr aXBwaW5nIGludmFsaWQgcmVmZXJlbmNlIGVudHJpZXMgY29ycnVwdCB0aGUgaGFyZHdhcmUncyBl eHBlY3RlZCAKaW5kZXggYXJyYXk/CgpJZiBhIHJlZmVyZW5jZSBmcmFtZSBpcyBtYXJrZWQgYXMg aW52YWxpZCwgdXNpbmcgY29udGludWUgc2tpcHMgCmFjY3VtdWxhdGluZyByZWZfY2ZnX29uY2Ug YW5kIHByZXZlbnRzIGogZnJvbSBpbmNyZW1lbnRpbmcuIFRoaXMgY29tcGFjdHMgCnRoZSByZWZl cmVuY2UgbGlzdCwgY2F1c2luZyBhbGwgc3Vic2VxdWVudCB2YWxpZCByZWZlcmVuY2VzIHRvIHNo aWZ0IGludG8gCmVhcmxpZXIgc2xvdHMuIFNoaWZ0aW5nIHRoZSBlbnRyaWVzIGJyZWFrcyB0ZW1w b3JhbCBwcmVkaWN0aW9uIGFuZCByZXN1bHRzIAppbiBzZXZlcmUgdmlzdWFsIGNvcnJ1cHRpb24u CgpbIC4uLiBdCj4gQEAgaDI2NF9jb25maWdfZGVjb2RlX2J1ZiBAQAo+ICAJCWNvbG9jYXRlX3dy X2FkciA9ICh1bnNpZ25lZCBpbnQpaDI2NF9jdHgtPmNvbGxhdGVkX2NtYV9hZGRyICsKPiAgCQkg ICAgKChoMjY0X2N0eC0+b25lX2NvbF9idWZfc2l6ZSAqCj4gIAkJICAgICAgaDI2NF9jdHgtPmN1 cnJfc3BlYy5jb2xfYnVmX2luZGV4KSA+PiAodXNlX21vZGVfOHg4X2ZsYWcgPyAyIDogMCkpOwo+ ICAJCWlmIChjb2xvY2F0ZV9hZHJfb2Zmc2V0ID4gaDI2NF9jdHgtPm9uZV9jb2xfYnVmX3NpemUg fHwKWyAuLi4gXQo+ICAJCQljb2xvY2F0ZV9yZF9hZHIgPSAodW5zaWduZWQgaW50KWgyNjRfY3R4 LT5jb2xsYXRlZF9jbWFfYWRkciArCj4gIAkJCSAgICAoKGgyNjRfY3R4LT5vbmVfY29sX2J1Zl9z aXplICoKPiAgCQkJICAgICAgY29sb2NhdGVfcGljLT5jb2xfYnVmX2luZGV4KSA+PiAodXNlX21v ZGVfOHg4X2ZsYWcKPiAgCQkJCQkJCSAgICAgICA/IDIgOiAwKSk7CgpbU2V2ZXJpdHk6IEhpZ2hd CklzIHRoZSA4eDggc2hpZnQgYXBwbGllZCB0byB0aGUgY29ycmVjdCBwYXJ0IG9mIHRoZSBvZmZz ZXQ/CgpCeSBzaGlmdGluZyB0aGUgZW50aXJlIGJhc2UgYWRkcmVzcyBjb21wdXRhdGlvbiBpbnN0 ZWFkIG9mIGp1c3QgdGhlIAppbnRyYS1idWZmZXIgb2Zmc2V0LCB0aGUgcGh5c2ljYWwgYmFzZSBh ZGRyZXNzZXMgZGl2ZXJnZS4gSWYgYSByZWZlcmVuY2UgCmZyYW1lIHdhcyB3cml0dGVuIHdpdGgg OHg4IG1vZGUgYnV0IHJlYWQgYnkgYSBjdXJyZW50IGZyYW1lIHdpdGhvdXQgOHg4IAptb2RlLCB0 aGUgaGFyZHdhcmUgd2lsbCByZWFkIGZyb20gbWlzbWF0Y2hlZCBwaHlzaWNhbCBtZW1vcnkgb2Zm c2V0cywgCmZldGNoaW5nIGdhcmJhZ2UgbW90aW9uIHZlY3RvcnMuCgpbIC4uLiBdCj4gQEAgaDI2 NF9jb25maWdfZGVjb2RlX2J1ZiBAQAo+ICAJcmVhZF9wb2xsX3RpbWVvdXQocmVhZF9kb3NfcmVn LCByZWdfdmFsLAo+ICAJCQkgICEocmVnX3ZhbCAmIDB4ODAwKSwKPiAgCQkJICAxMCwgMCwgdHJ1 ZSwgaHcsIEgyNjRfQ09fTUJfUldfQ1RMKTsKCltTZXZlcml0eTogSGlnaF0KV2lsbCBhIHRpbWVv dXQgcGFyYW1ldGVyIG9mIDAgY3JlYXRlIGFuIGluZmluaXRlIGxvb3A/CgpVc2luZyByZWFkX3Bv bGxfdGltZW91dCB3aXRoIGEgdGltZW91dF91cyBhcmd1bWVudCBvZiAwIGNyZWF0ZXMgYW4gaW5m aW5pdGUgCmxvb3AuIElmIHRoZSBoYXJkd2FyZSBiaXQgZmFpbHMgdG8gY2xlYXIsIHRoZSB0aHJl YWRlZCBpcnEgaGFuZGxlciB3aWxsIHNwaW4gCmZvcmV2ZXIuIEJlY2F1c2UgaXQgaG9sZHMgdGhl IGRyaXZlcidzIGdsb2JhbCBody0+Y3R4X211dGV4LCB0aGlzIHdpbGwgCnBlcm1hbmVudGx5IGRl YWRsb2NrIHRoZSBkZWNvZGVyLgoKWyAuLi4gXQo+IEBAIGgyNjRfY29uZmlnX2RlY29kZV9idWYg QEAKPiAgCWNvbG9jYXRlX2Fkcl9vZmZzZXQgPSBDT0xfU0laRV9GT1JfT05FX01COwo+ICAJaWYg KHVzZV9tb2RlXzh4OF9mbGFnKQo+ICAJCWNvbG9jYXRlX2Fkcl9vZmZzZXQgPj49IDI7Cj4gIAlj b2xvY2F0ZV9hZHJfb2Zmc2V0ICo9IGN1cnJfc2xpY2UtPmZpcnN0X21iX2luX3NsaWNlOwpbIC4u LiBdCj4gIAkJY29sb2NhdGVfd3JfYWRyID0gKHVuc2lnbmVkIGludCloMjY0X2N0eC0+Y29sbGF0 ZWRfY21hX2FkZHIgKwo+ICAJCSAgICAoKGgyNjRfY3R4LT5vbmVfY29sX2J1Zl9zaXplICoKPiAg CQkgICAgICBoMjY0X2N0eC0+Y3Vycl9zcGVjLmNvbF9idWZfaW5kZXgpID4+ICh1c2VfbW9kZV84 eDhfZmxhZyA/IDIgOiAwKSk7Cj4gIAkJaWYgKGNvbG9jYXRlX2Fkcl9vZmZzZXQgPiBoMjY0X2N0 eC0+b25lX2NvbF9idWZfc2l6ZSB8fApbIC4uLiBdCj4gIAkJCXZhbCAgPSAoKGNvbG9jYXRlX3Jk X2Fkcl9vZmZzZXQgKyBjb2xvY2F0ZV9yZF9hZHIpID4+IDMpIHwKPiAgCQkJCShjdXJfY29sb2Nh dGVfcmVmX3R5cGUgPDwgMjkpIHwKPiAgCQkJCShsMTBfc3RydWN0dXJlIDw8IDMwKTsKPiAgCQkJ cmVnbWFwX3dyaXRlKGh3LT5tYXBbRE9TX0JVU10sIEgyNjRfQ09fTUJfUkRfQUREUiwgdmFsKTsK CltTZXZlcml0eTogQ3JpdGljYWxdCklzIGl0IHNhZmUgdG8gdXNlIGZpcnN0X21iX2luX3NsaWNl IHdpdGhvdXQgdmFsaWRhdGlvbj8KClRoaXMgdmFsdWUgaXMgcGFyc2VkIGRpcmVjdGx5IGZyb20g dGhlIHVudHJ1c3RlZCBoMjY0IGJpdHN0cmVhbSBhbmQgCm11bHRpcGxpZWQgdG8gY29tcHV0ZSBj b2xvY2F0ZV9yZF9hZHJfb2Zmc2V0LiBXaGlsZSB0aGVyZSBpcyBhIGJvdW5kcyAKY2hlY2sgZm9y IGNvbG9jYXRlX3JkX2FkciArIG9uZV9jb2xfYnVmX3NpemUsIHRoZXJlIGlzIG5vIHZhbGlkYXRp b24gdGhhdCAKY29sb2NhdGVfcmRfYWRyX29mZnNldCBpdHNlbGYgcmVtYWlucyB3aXRoaW4gdGhl IGJ1ZmZlciBib3VuZHMgYmVmb3JlIApwcm9ncmFtbWluZyB0aGUgaGFyZHdhcmUgcmVhZCBhZGRy ZXNzLiBBIG1hbGljaW91cyBiaXRzdHJlYW0gc3VwcGx5aW5nIGEgCm1hc3NpdmUgZmlyc3RfbWJf aW5fc2xpY2UgY291bGQgY2F1c2UgYXJiaXRyYXJ5IHBoeXNpY2FsIG1lbW9yeSByZWFkcy4KClsg Li4uIF0KPiBAQCBhbWxfaDI2NF9leGl0IEBACj4gIAlpZiAoY3R4LT5kb3NfY2xrX2VuKQo+ICAJ CWFtbF9zdG9wX3ZkZWNfaHcoZGVjX2h3KTsKPiAgCj4gIAlpZiAoaDI2NF9jdHgtPmNvbGxhdGVk X2NtYV92YWRkcikgewpbIC4uLiBdCj4gIAlrZnJlZShjdHgtPmNvZGVjX3ByaXYpOwo+ICAJY3R4 LT5jb2RlY19wcml2ID0gTlVMTDsKPiAgfQpbIC4uLiBdCj4gQEAgYW1sX2gyNjRfZGVjX3J1biBA QAo+ICAJCWFtbF9zdG9wX3ZkZWNfaHcoZGVjX2h3KTsKPiAgCQlzeW5jaHJvbml6ZV9pcnEoZGVj X2h3LT5kZWNfaXJxKTsKPiAgCQloMjY0X3JlbGVhc2VfZGVjb2RlX3NwZWMoZGVjX2h3LCBjdHgp Owo+ICAJfQo+ICAKPiAgCWgyNjRfY3R4LT5pbml0X2ZsYWcgPSAwOwo+ICAJYW1sX3ZkZWNfc2V0 X2N1cnJfY3R4KGRlY19odywgTlVMTCk7CgpbU2V2ZXJpdHk6IEhpZ2hdCkNvdWxkIGEgY29uY3Vy cmVudCB2aWRpb2Nfc3RyZWFtb2ZmIHRyaWdnZXIgYSB1c2UtYWZ0ZXItZnJlZT8KCklmIHVzZXJz cGFjZSBjYWxscyB2aWRpb2Nfc3RyZWFtb2ZmLCBhbWxfaDI2NF9leGl0KCkgZnJlZXMgY3R4LT5j b2RlY19wcml2LiAKSG93ZXZlciwgaWYgYW1sX2gyNjRfZGVjX3J1bigpIGlzIGFjdGl2ZWx5IHNs ZWVwaW5nIG9uIAp3YWl0X2V2ZW50X2ludGVycnVwdGlibGVfdGltZW91dCgpIGluIHRoZSBtMm0g d29ya2VyIHRocmVhZCwgdGhlIGZvcmNlZCAKaGFyZHdhcmUgc3RvcCBjYXVzZXMgdGhlIHdhaXQg dG8gcmV0dXJuLiBUaGUgd29ya2VyIHRocmVhZCB3aWxsIGltbWVkaWF0ZWx5IApkZXJlZmVyZW5j ZSB0aGUgZnJlZWQgaDI2NF9jdHggd2l0aG91dCBhbnkgc3luY2hyb25pemF0aW9uLgoKW1NldmVy aXR5OiBIaWdoXQpEb2VzIHRoaXMgdGVhcmRvd24gc2VxdWVuY2UgdW5jb25kaXRpb25hbGx5IHJl c2V0IHNoYXJlZCBoYXJkd2FyZT8KClRoZSBhbWxfdmRlY19odyBibG9jayBpcyBhIGdsb2JhbCBy ZXNvdXJjZSBzaGFyZWQgYnkgYWxsIGFjdGl2ZSB2NGwyIGRlY29kZXIgCmluc3RhbmNlcy4gRHVy aW5nIHRlYXJkb3duLCBhbWxfaDI2NF9leGl0KCkgdW5jb25kaXRpb25hbGx5IGNhbGxzIAphbWxf c3RvcF92ZGVjX2h3KGRlY19odykgd2hpY2ggaXNzdWVzIHNvZnQgcmVzZXRzIHRvIHRoZSBzaGFy ZWQgRE9TX0JVUyAKcmVnaXN0ZXJzLiBUaGVyZSBpcyBubyBjaGVjayBlbnN1cmluZyB0aGF0IHRo ZSB0ZWFyaW5nLWRvd24gY29udGV4dCBhY3R1YWxseSAKb3ducyB0aGUgaGFyZHdhcmUuIElmIGFu b3RoZXIgY29udGV4dCBpcyBhY3RpdmVseSBkZWNvZGluZywgcmVzZXR0aW5nIHRoZSAKaGFyZHdh cmUgdW5kZXJuZWF0aCBpdCB3aWxsIGNhdXNlIHRpbWVvdXRzIGFuZCBzdGF0ZSBjb3JydXB0aW9u LgoKLS0gClNhc2hpa28gQUkgcmV2aWV3IMK3IGh0dHBzOi8vc2FzaGlrby5kZXYvIy9wYXRjaHNl dC8yMDI2MDkyNC1iNC1zNC12ZGVjLXVwc3RyZWFtLXYxMC0wLTEyODkzMDNhNThhNEBhbWxvZ2lj LmNvbT9wYXJ0PTQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmxpbnV4LWFtbG9naWMgbWFpbGluZyBsaXN0CmxpbnV4LWFtbG9naWNAbGlzdHMuaW5mcmFk ZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4 LWFtbG9naWMK