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 05A92C433EF for ; Tue, 25 Jan 2022 13:47:12 +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-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:References:CC:To:From:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=oZ1NJjpKSEJLYy+1xlchTYhTwUl1G9/mdtI9PnysnFs=; b=MFYXa+wDNG+6dn FVfem/RrWN2qDqCmrExN6gAQpQ053XjHV+s/nUPYX4/EZsviIUzVeVqH/B6bGbynU29/rVWw7JMRq /qlmwybOuckAK4cZzpPyegjXi6xypALNKlNy0GM053Q20LmSmLZcMFOq2aOtRz1YAaXkaw8g/isGj xYeJpjjSFdmpKMwAU5NC1kiw8yCdEfepPfAQG/aaJsUYYuG7NDqckf2qTMctZbSommh1bL7DIjZWP SU414AMyE/Y5X2ky6A/ah7Ce/1oadqlRKSKjAAP7uTK1eXVXrqGlQNeA2mfKWwM5xtPQIN+h2MKVH M/i7KL2vjfW00R+kmkRw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nCM8X-007yYt-3n; Tue, 25 Jan 2022 13:45:29 +0000 Received: from alexa-out.qualcomm.com ([129.46.98.28]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nCM8S-007yXy-B8 for linux-arm-kernel@lists.infradead.org; Tue, 25 Jan 2022 13:45:27 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1643118324; x=1674654324; h=message-id:date:mime-version:subject:from:to:cc: references:in-reply-to:content-transfer-encoding; bh=HURpl1upTjINrySocj7CNpx1S5F231lzFdM9zp+qynw=; b=osGg5xgaeY4AceViXISNlffnquM0Lexd7sUwN2XXGPhibVdBds8ptCz1 Byg068zBlyMsh5RI0Hamvq9HxP8bJPm4CX0hgLalMVdFBAdiA1da+vPwU 8j2V3atfqNzW5KPLQ5RhsgO+CAzw8SdGDzbXQPYfjsahy9UpTIUoKegpg M=; Received: from ironmsg-lv-alpha.qualcomm.com ([10.47.202.13]) by alexa-out.qualcomm.com with ESMTP; 25 Jan 2022 05:45:22 -0800 X-QCInternal: smtphost Received: from nasanex01c.na.qualcomm.com ([10.47.97.222]) by ironmsg-lv-alpha.qualcomm.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Jan 2022 05:45:21 -0800 Received: from nalasex01a.na.qualcomm.com (10.47.209.196) by nasanex01c.na.qualcomm.com (10.47.97.222) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.922.19; Tue, 25 Jan 2022 05:45:21 -0800 Received: from [10.50.36.220] (10.80.80.8) by nalasex01a.na.qualcomm.com (10.47.209.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.922.19; Tue, 25 Jan 2022 05:45:15 -0800 Message-ID: <66470ed1-8fc5-9f8d-02bb-efe02c882ab4@quicinc.com> Date: Tue, 25 Jan 2022 19:14:45 +0530 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.3.2 Subject: Re: [PATCH V6 2/7] soc: qcom: dcc:Add driver support for Data Capture and Compare unit(DCC) Content-Language: en-CA From: Souradeep Chowdhury To: Bjorn Andersson CC: Souradeep Chowdhury , Andy Gross , Rob Herring , , , , , "Sai Prakash Ranjan" , Sibi Sankar , Rajendra Nayak , References: <77a2ef02-384d-ce67-ae84-02c385eccd60@quicinc.com> In-Reply-To: X-Originating-IP: [10.80.80.8] X-ClientProxiedBy: nasanex01b.na.qualcomm.com (10.46.141.250) To nalasex01a.na.qualcomm.com (10.47.209.196) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220125_054524_494703_E5F8DCB1 X-CRM114-Status: GOOD ( 51.11 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Ck9uIDEvMTcvMjAyMiAxMToxOSBBTSwgU291cmFkZWVwIENob3dkaHVyeSB3cm90ZToKPgo+IE9u IDEvNy8yMDIyIDk6MjcgUE0sIEJqb3JuIEFuZGVyc3NvbiB3cm90ZToKPj4gT24gRnJpIDA3IEph biAwNzoyNyBQU1QgMjAyMiwgU291cmFkZWVwIENob3dkaHVyeSB3cm90ZToKPj4KPj4+IE9uIDEv Ny8yMDIyIDU6MzEgQU0sIEJqb3JuIEFuZGVyc3NvbiB3cm90ZToKPj4+PiBPbiBXZWQgMDUgSmFu IDIzOjU3IFBTVCAyMDIyLCBTb3VyYWRlZXAgQ2hvd2RodXJ5IHdyb3RlOgo+Pj4+Cj4+Pj4+IE9u IDEyLzE4LzIwMjEgMTo0MSBBTSwgQmpvcm4gQW5kZXJzc29uIHdyb3RlOgo+Pj4+Pj4gT24gVHVl IDEwIEF1ZyAxMjo1NCBDRFQgMjAyMSwgU291cmFkZWVwIENob3dkaHVyeSB3cm90ZToKPj4+Pj4+ Cj4+Pj4+Pj4gVGhlIERDQyBpcyBhIERNQSBFbmdpbmUgZGVzaWduZWQgdG8gY2FwdHVyZSBhbmQg c3RvcmUgZGF0YQo+Pj4+Pj4+IGR1cmluZyBzeXN0ZW0gY3Jhc2ggb3Igc29mdHdhcmUgdHJpZ2dl cnMuVGhlIERDQyBvcGVyYXRlcwo+Pj4+Pj4gUGxlYXNlIGluY2x1ZGUgYSBzcGFjZSBhZnRlciAn LicKPj4+Pj4gQWNrCj4+Pj4+Pj4gYmFzZWQgb24gdXNlciBpbnB1dHMgdmlhIHRoZSBzeXNmcyBp bnRlcmZhY2UuVGhlIHVzZXIgZ2l2ZXMKPj4+Pj4+PiBhZGRyZXNzZXMgYXMgaW5wdXRzIGFuZCB0 aGVzZSBhZGRyZXNzZXMgYXJlIHN0b3JlZCBpbiB0aGUKPj4+Pj4+PiBmb3JtIG9mIGxpbmtlZGxp c3RzLkluIGNhc2Ugb2YgYSBzeXN0ZW0gY3Jhc2ggb3IgYSBtYW51YWwKPj4+Pj4+IEkgdGhpbmsg dGhlIHVzZXIgY29uZmlndXJlcyB0aGUgRENDIGhhcmR3YXJlIHdpdGggImEgc2VxdWVuY2Ugb2YK Pj4+Pj4+IG9wZXJhdGlvbnMgdG8gYmUgcGVyZm9ybWVkIGFzIERDQyBpcyB0cmlnZ2VyZWQiLgo+ Pj4+Pj4KPj4+Pj4+IEFmYWljdCB0aGUgc2VxdWVuY2UgaXMgc3RvcmVkIGp1c3QgYXMgYSBzZXF1 ZW5jZSBvZiBvcGVyYXRpb25zIGluIAo+Pj4+Pj4gU1JBTSwKPj4+Pj4+IHRoZXJlJ3Mgbm8gbGlu a2VkIGxpc3QgaW52b2x2ZWQgLSBleGNlcHQgaW4geW91ciBpbnRlcm1lZGlhdGUKPj4+Pj4+IGlt cGxlbWVudGF0aW9uLgo+Pj4+PiBUaGUgdXNlciBqdXN0IGVudGVycyB0aGUgYWRkcmVzc2VzIGFz IGlucHV0IHdoZXJlYXMgdGhlIHNlcXVlbmNlIG9mCj4+Pj4+IG9wZXJhdGlvbnMgdGFrZXMKPj4+ Pj4KPj4+Pj4gcGxhY2UgYXMgcGVyIGNvbmZpZ3VyYXRpb24gY29kZSBpbnNpZGUgdGhlIGRyaXZl ci4gVGhlIGVuZCByZXN1bHQgCj4+Pj4+IGlzIHN0b3JhZ2UKPj4+Pj4gb2YgdGhlc2UKPj4+Pj4K Pj4+Pj4gYWRkcmVzc2VzIGluc2lkZSB0aGUgRENDIFNSQU0uIFRoZSBEQ0MgaGFyZHdhcmUgd2ls bCBjYXB0dXJlIHRoZSAKPj4+Pj4gdmFsdWUgYXQKPj4+Pj4gdGhlc2UKPj4+Pj4KPj4+Pj4gYWRk cmVzc2VzIG9uIGEgY3Jhc2ggb3IgbWFudWFsIHRyaWdnZXIgYnkgdGhlIHVzZXIuCj4+Pj4+Cj4+ Pj4+Pj4gc29mdHdhcmUgdHJpZ2dlciBieSB0aGUgdXNlciB0aHJvdWdoIHRoZSBzeXNmcyBpbnRl cmZhY2UsCj4+Pj4+Pj4gdGhlIGRjYyBjYXB0dXJlcyBhbmQgc3RvcmVzIHRoZSB2YWx1ZXMgYXQg dGhlc2UgYWRkcmVzc2VzLgo+Pj4+Pj4+IFRoaXMgcGF0Y2ggY29udGFpbnMgdGhlIGRyaXZlciB3 aGljaCBoYXMgYWxsIHRoZSBtZXRob2RzCj4+Pj4+Pj4gcGVydGFpbmluZyB0byB0aGUgc3lzZnMg aW50ZXJmYWNlLCBhdXhpbGlhcnkgZnVuY3Rpb25zIHRvCj4+Pj4+Pj4gc3VwcG9ydCBhbGwgdGhl IGZvdXIgZnVuZGFtZW50YWwgb3BlcmF0aW9ucyBvZiBkY2MgbmFtZWx5Cj4+Pj4+Pj4gcmVhZCwg d3JpdGUsIGZpcnN0IHJlYWQgdGhlbiB3cml0ZSBhbmQgbG9vcC5UaGUgcHJvYmUgbWV0aG9kCj4+ Pj4+PiAiZmlyc3QgcmVhZCB0aGVuIHdyaXRlIiBpcyBjYWxsZWQgInJlYWQvbW9kaWZ5L3dyaXRl Igo+Pj4+PiBBY2sKPj4+Pj4+PiBoZXJlIGluc3RhbnRpYXRlcyBhbGwgdGhlIHJlc291cmNlcyBu ZWNlc3NhcnkgZm9yIGRjYyB0bwo+Pj4+Pj4+IG9wZXJhdGUgbWFpbmx5IHRoZSBkZWRpY2F0ZWQg ZGNjIHNyYW0gd2hlcmUgaXQgc3RvcmVzIHRoZQo+Pj4+Pj4+IHZhbHVlcy5UaGUgRENDIGRyaXZl ciBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzCj4+Pj4+Pj4gd2l0aG91dCBnb2lu ZyBmb3IgYSByZWJvb3Qgc2luY2UgaXQgY2FuIHBlcmZvcm0gbWFudWFsCj4+Pj4+Pj4gdHJpZ2dl cnMuCj4+Pj4+Pj4KPj4+Pj4+PiBBbHNvIGFkZGVkIHRoZSBkb2N1bWVudGF0aW9uIGZvciBzeXNm cyBlbnRyaWVzCj4+Pj4+Pj4gYW5kIGV4cGxhaW5lZCB0aGUgZnVuY3Rpb25hbGl0aWVzIG9mIGVh Y2ggc3lzZnMgZmlsZSB0aGF0Cj4+Pj4+Pj4gaGFzIGJlZW4gY3JlYXRlZCBmb3IgZGNjLgo+Pj4+ Pj4+Cj4+Pj4+Pj4gVGhlIGZvbGxvd2luZyBpcyB0aGUganVzdGlmaWNhdGlvbiBvZiB1c2luZyBz eXNmcyBpbnRlcmZhY2UKPj4+Pj4+PiBvdmVyIHRoZSBvdGhlciBhbHRlcm5hdGl2ZXMgbGlrZSBp b2N0bHMKPj4+Pj4+Pgo+Pj4+Pj4+IGkpIEFzIGNhbiBiZSBzZWVuIGZyb20gdGhlIHN5c2ZzIGF0 dHJpYnV0ZSBkZXNjcmlwdGlvbnMsCj4+Pj4+Pj4gbW9zdCBvZiBpdCBkb2VzIGJhc2ljIGhhcmR3 YXJlIG1hbmlwdWxhdGlvbnMgbGlrZSBkY2NfZW5hYmxlLAo+Pj4+Pj4+IGRjY19kaXNhYmxlLCBj b25maWcgcmVzZXQgZXRjLiBBcyBhIHJlc3VsdCBzeXNmcyBpcyBwcmVmZXJyZWQKPj4+Pj4+PiBv dmVyIGlvY3RsIGFzIHdlIGp1c3QgbmVlZCB0byBlbnRlciBhIDAgb3IgMS4KPj4+Pj4+Pgo+Pj4+ Pj4gQXMgSSBtZW50aW9uZWQgaW4gb3VyIGNoYXQsIHVzaW5nIHN5c2ZzIGFsbG93cyB1cyB0byBv cGVyYXRlIHRoZQo+Pj4+Pj4gaW50ZXJmYWNlIHVzaW5nIHRoZSBzaGVsbCB3aXRob3V0IGFkZGl0 aW9uYWwgdG9vbHMuCj4+Pj4+Pgo+Pj4+Pj4gQnV0IEkgZG9uJ3QgdGhpbmsgdGhhdCBpdCdzIGVh c3kgdG8gaW1wbGVtZW50IAo+Pj4+Pj4gZW5hYmxlL2Rpc2FibGUvcmVzZXQgdXNpbmcKPj4+Pj4+ IHN5c2ZzIGlzIGEgc3Ryb25nIGFyZ3VtZW50LiBUaGUgZGlmZmljdWx0IHBhcnQgb2YgdGhpcyBB QkkgaXMgdGhlCj4+Pj4+PiBvcGVyYXRpb25zIHRvIG1hbmlwdWxhdGUgdGhlIHNlcXVlbmNlIG9m IG9wZXJhdGlvbnMsIHNvIHRoYXQncyAKPj4+Pj4+IHdoYXQgeW91Cj4+Pj4+PiBuZWVkIHRvIGhh dmUgYSBzb2xpZCBwbGFuIGZvci4KPj4+Pj4gVGhlIHN5c2ZzIGludGVyZmFjZSBpcyBiZWluZyB1 c2VkIHRvIGdldCB0aGUgYWRkcmVzc2VzIHZhbHVlcyAKPj4+Pj4gZW50ZXJlZCBieSB0aGUKPj4+ Pj4gdXNlcgo+Pj4+Pgo+Pj4+PiBhbmQgdG8gYWxzbyBnbyBmb3IgbWFudWFsIHRyaWdnZXJzLiBU aGUgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBhcmUgCj4+Pj4+IGtlcHQgYXMgYQo+Pj4+PiBwYXJ0 IG9mCj4+Pj4+Cj4+Pj4+IGZpeGVkIGRyaXZlciBjb2RlIHdoaWNoIGlzIGNhbGxlZCB3aGVuIHRo ZSB1c2VyIGVudGVycyB0aGUgZGF0YS4KPj4+Pj4KPj4+PiBCdXQgZG9lcyB0aGUgaGFyZHdhcmUg cmVhbGx5IGp1c3Qgb3BlcmF0ZSBvbiAiYWRkcmVzc2VzIHZhbHVlcyBlbnRlcmVkCj4+Pj4gYnkg dGhlIHVzZXIiLiBHaXZlbiB0aGUgdmFyaW91cyB0eXBlcyBvZiBvcGVyYXRpb25zOiByZWFkLCB3 cml0ZSwKPj4+PiByZWFkLW1vZGlmeS13cml0ZSBhbmQgbG9vcCBJIGdldCB0aGUgZmVlbGluZyB0 aGF0IHRoZSBoYXJkd2FyZQo+Pj4+ICJleGVjdXRlcyIgYSBzZXJpZXMgb2YgYWN0aW9ucy4KPj4+ Pgo+Pj4+IEknbSBkb24ndCB0aGluayB0aGUgcHJvcG9zZWQgc3lzZnMgaW50ZXJmYWNlIGJlc3Qg ZXhwb3NlcyB0aGlzIHRvIHRoZQo+Pj4+IHVzZXIgYW5kIEkgZG9uJ3QgdGhpbmsgdGhhdCAiaXQn cyBlYXN5IHRvIGltcGxlbWVudCBlbmFibGUvZGlzYWJsZQo+Pj4+IGF0dHJpYnV0ZXMgaW4gc3lz ZnMiIGlzIHJlYXNvbiBlbm91Z2ggdG8gZ28gd2l0aCB0aGF0IGFwcHJvYWNoLgo+Pj4gU28gdGhl IHN5c2ZzIGludGVyZmFjZSBoZXJlIGhhcyBiZWVuIGludHJvZHVjZWQga2VlcGluZyBpbiBtaW5k IGhvdyB0aGUKPj4+IERDQ19TUkFNIG5lZWRzIHRvIGJlCj4+Pgo+Pj4gcHJvZ3JhbW1lZCBmb3Ig dGhlIGRjYyBoYXJkd2FyZSB0byB3b3JrLiBXZSBhcmUgbWFpbnRhaW5pbmcgYSBsaXN0IGhlcmUK Pj4+IGJhc2VkIG9uIHRoZSBhZGRyZXNzCj4+Pgo+Pj4gZW50cnkuIFRoZSA0IGNhc2VzIGZvciB0 aGUgdHlwZSBvZiBhZGRyZXNzZXMgYXJlIGFzIGZvbGxvd3MtOgo+Pj4KPj4+IGkpIFJFQUQgQURE UkVTU0VTCj4+Pgo+Pj4gdXNlciBlbnRlcnMgc29tZXRoaW5nIGxpa2UgImVjaG8gPGFkZHI+IDxs ZW4+ID4gY29uZmlnIgo+Pj4KPj4+IERDQyBkcml2ZXIgc3RvcmVzIHRoZSA8YWRkcj4gYWxvbmcg d2l0aCB0aGUgbGVuZ3RoIGluZm9ybWF0aW9uIGluIHRoZQo+Pj4gRENDX1NSQU0uCj4+Pgo+Pj4g aWkpIFdSSVRFIEFERFJFU1NFUwo+Pj4KPj4+IFVzZXIgZW50ZXJzIHNvbWV0aGluZyBsaWtlICJl Y2hvIDxhZGRyPiA8d3JpdGVfdmFsPiAxwqAgPiBjb25maWdfd3JpdGUiCj4+Pgo+Pj4gRENDIHN0 b3JlcyB0aGUgPGFkZHI+IGZpcnN0IGluIHNyYW0gZm9sbG93ZWQgYnkgPHdyaXRlX3ZhbD4uCj4+ Pgo+Pj4gRm9yIHRoZSBhYm92ZSAyIHR5cGUgb2YgYWRkcmVzc2VzIHRoZXJlIHdvbid0IGJlIG11 Y2ggZGlmZmVyZW5jZSBpZiAKPj4+IHdlIHVzZQo+Pj4gSU9DVEwuCj4+Pgo+Pj4gSG93ZXZlciwg Zm9yIHRoZSBuZXh0IDIgdHlwZSBvZiBhZGRyZXNzZXMKPj4+Cj4+PiBpaWkpIExPT1AgQUREUkVT U0VTCj4+Pgo+Pj4gdXNlciBoYXMgdG8gZW50ZXIgc29tZXRoaW5nIGxpa2UgYmVsb3cKPj4+Cj4+ PiBlY2hvIDkgPiBsb29wCj4+PiBlY2hvIDB4MDE3NDEwMTAgMSA+IGNvbmZpZwo+Pj4gZWNobyAw eDAxNzQxMDE0IDEgPiBjb25maWcKPj4+IGVjaG8gMSA+IGxvb3AKPj4+Cj4+PiBUaGUgRENDIFNS QU0gd2lsbCBiZSBwcm9ncmFtbWVkIHByZWNpc2VseSBsaWtlIHRoZSBhYm92ZSBlbnRyaWVzIAo+ Pj4gd2hlcmUgdGhlCj4+PiBsb29wIGNvdW50IHdpbGwgYmUgc3RvcmVkIGZpcnN0Cj4+Pgo+Pj4g Zm9sbG93ZWQgYnkgbG9vcCBhZGRyZXNzZXMgYW5kIHRoZW4gYWdhaW4gYSAiZWNobyAxID4gbG9v cCAiIG1hcmtzIAo+Pj4gdGhlIGVuZAo+Pj4gb2YgbG9vcCBhZGRyZXNzZXMuCj4+Pgo+Pj4gaW4g RENDX1NSQU0uCj4+Pgo+Pj4gaXYpIFJFQURfV1JJVEUgQUREUkVTU0VTCj4+Pgo+Pj4gVXNlciBo YXMgdG8gZW50ZXIgc29tZXRoaW5nIGxpa2UgYmVsb3cKPj4+Cj4+PiBlY2hvIDxhZGRyPiA+IC9z eXMvYnVzL3BsYXRmb3JtL2RldmljZXMvLi4vY29uZmlnCj4+Pgo+Pj4gZWNobyA8bWFzaz4gPHZh bD4gPiAvc3lzL2J1cy9wbGF0Zm9ybS9kZXZpY2VzLy4uL3JkX21vZF93cgo+Pj4KPj4+IEhlcmUg Zmlyc3QgdGhlwqAgPGFkZHI+IGlzIHN0b3JlZCBpbiBEQ0NfU1JBTSBmb2xsb3dlZCBieSA8bWFz az4gYW5kIAo+Pj4gdGhlbiB0aGUKPj4+IDx2YWw+Lgo+Pj4KPj4+IFRoZSBhYm92ZSByZXByZXNl bnRhdGlvbiB0byB0aGUgdXNlciBzcGFjZSBpcyBjb25zaXN0ZW50IHdpdGggdGhlIGRjYwo+Pj4g aGFyZHdhcmUgaW4gdGVybXMgb2YKPj4+Cj4+PiB0aGUgd2F5IHRoZSBzZXF1ZW5jZSBvZiB2YWx1 ZXMgYXJlIHByb2dyYW1tZWQgaW4gdGhlIERDQyBTUkFNIC4gCj4+PiBNb3ZpbmcgdG8KPj4+IElP Q1RMIHdpbGwKPj4+Cj4+PiBvbmx5IGNoYW5nZSB0aGUgd2F5IHRoZSBSRUFEX1dSSVRFIGFkZHJl c3MgaXMgcmVwcmVzZW50ZWQgYWx0aG91Z2ggCj4+PiB1c2VyIHdpbGwKPj4+IGhhdmUgdG8gZW50 ZXIKPj4+Cj4+PiBtdWx0aXBsZSBwYXJhbWV0ZXJzIGF0IG9uY2UsIGxldCBtZSBrbm93IGlmIHdl IHN0aWxsIG5lZWQgdG8gZ28gZm9yIHRoZQo+Pj4gc2FtZS4KPj4+Cj4+IFNvIGlmIEkgdW5kZXJz dGFuZCBjb3JyZWN0bHksIG15IGNvbmNlcm4gaXMgdGhhdCBpZiBJIHdvdWxkIGxpa2UgdG8KPj4g cGVyZm9ybSBzb21ldGhpbmcgbGlrZSAoaW4gcHNldWRvIGNvZGUpOgo+Pgo+PiByZWFkbChYKQo+ PiB3cml0ZSgxLCBZKQo+PiByZWFkbChaKSA1IHRpbWVzCj4+Cj4+IHRoZW4gSSB3aWxsIGRvIHRo aXMgYXM6Cj4+Cj4+IGVjaG8gWCA+IGNvbmZpZwo+PiBlY2hvIFkgMSA+IGNvbmZpZ193cml0ZQo+ PiBlY2hvIDUgPiBsb29wCj4+IGVjaG8gWiA+IGNvbmZpZwo+PiBlY2hvIDEgPiBsb29wCj4+Cj4+ IEFuZCB0aGUgRENDIGRyaXZlciB3aWxsIHRoZW4gd3JpdGUgdGhpcyB0byBTUkFNIGFzIHNvbWV0 aGluZyBsaWtlOgo+Pgo+PiByZWFkIFgKPj4gd3JpdGUgWSwgMQo+PiBsb29wIDUKPj4gcmVhZCBa Cj4+IGxvb3AKPj4KPj4KPj4gSW4gb3RoZXIgd29yZHMsIG15IG1pbmQgYW5kIHRoZSBEQ0MgaGFz IHRoZSBzYW1lIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMKPj4gc2VxdWVuY2Ugb2Ygb3BlcmF0aW9u cywgYnV0IEkgaGF2ZSB0byBzaHVmZmxlIHRoZSBpbmZvcm1hdGlvbiBpbnRvIDQKPj4gZGlmZmVy ZW50IHN5c2ZzIGF0dHJpYnV0ZXMgdG8gZ2V0IHRoZXJlLgo+Pgo+PiBUaGUgZGVzaWduIGd1aWRl bGluZSBmb3Igc3lzZnMgaXMgdGhhdCBlYWNoIGF0dHJpYnV0ZSBzaG91bGQgaG9sZCBvbmUKPj4g dmFsdWUgcGVyIGF0dHJpYnV0ZSwgYnV0IGluIHlvdXIgbW9kZWwgdGhlIGF0dHJpYnV0ZXMgYXJl IHRhbmdsZWQgYW5kCj4+IHdyaXRpbmcgdGhpbmdzIHRvIHRoZW0gZGVwZW5kcyBvbiB3aGF0IGhh cyBiZWVuIHdyaXR0ZW4gaW4gdGhhdCBvciBvdGhlcgo+PiBhdHRyaWJ1dGVzIHByZXZpb3VzbHku Cj4+Cj4+IEkgc2ltcGx5IGRvbid0IHRoaW5rIHRoYXQncyBhIGdvb2QgQUJJLgo+Cj4gQWNrLgo+ Cj4gU2hvdWxkIEkgY2hhbmdlIHRoaXMgdG8gaGF2ZSBzZXBhcmF0ZSBzeXNmcyBmaWxlcyBkZWFs aW5nIHdpdGggCj4gc2VwYXJhdGUgdHlwZSBvZiBpbnN0cnVjdGlvbnM/Cj4KPiBGb3IgZXhhbXBs ZSBJIGNhbiBoYXZlIHNlcGFyYXRlIGZpbGVzIGxpa2UgY29uZmlnX3JlYWQsIAo+IGNvbmZpZ193 cml0ZShhbHJlYWR5IGV4aXN0cyksIGNvbmZpZ19sb29wCj4KPiBhbmQgY29uZmlnX3JlYWRfd3Jp dGUgdG8gaGFuZGxlIDQgZGlmZmVyZW50IHR5cGUgb2YgaW5zdHJ1Y3Rpb25zIHdpdGggCj4gaW5w dXRzIGxpa2UKPgo+IGVjaG8gPGxvb3Bfb2Zmc2V0PiA8bG9vcF9hZGRyZXNzX251bWJlcnM+IDxs b29wX2FkZHJlc3NfMT4gCj4gPGxvb3BfYWRkcmVzc18yPi4uID4gY29uZmlnX2xvb3AKPgo+IGVj aG8gPGFkZHJlc3M+IDxtYXNrPiA8dmFsPiA+IGNvbmZpZ19yZWFkX3dyaXRlCj4KPiBhbmQgc28g b24KCkhpIEJqb3JuLAoKCkZ1cnRoZXIgdG8gdGhpcywgc2luY2UgaW4gY2FzZSBvZiBzeXNmcyAs IHdlIGNhbm5vdCBoYXZlIG11bHRpcGxlIHZhbHVlcyAKZm9yIGEgc2luZ2xlIHN5c2ZzIGZpbGUs CgpoYW5kbGluZyBsb29wIGluc3RydWN0aW9ucyBiZWNvbWXCoCBkaWZmaWN1bHQuCgpTbyBjYW4g SSBnbyBmb3IgZGVidWdmcyBmb3IgdGhlIGFib3ZlIGltcGxlbWVudGF0aW9uPwoKSSBjYW4gaGF2 ZSBzZXBhcmF0ZSBkZWJ1Z2ZzIGZpbGVzIHRvIGhhbmRsZSBjb25maWdfbG9vcCAsIGNvbmZpZ19y ZWFkLCAKY29uZmlnX3dyaXRlLCBjb25maWdfcmVhZF93cml0ZQoKd2l0aCBpbnB1dHMgYXMgZm9s bG93cwoKLT7CoCBlY2hvIDxyZWFkX2FkZHJlc3M+wqAgPsKgIGNvbmZpZ19yZWFkCgotPsKgIGVj aG8gPHdyaXRlX2FkZHJlc3M+IDx3cml0ZV92YWw+wqAgPiBjb25maWdfd3JpdGUKCi0+wqAgZWNo byA8bG9vcF9jb3VudGVyPiA8bG9vcF9hZGRyZXNzX251bWJlcj4gPGxvb3BfYWRkcmVzczE+IAo8 bG9vcF9hZGRyZXNzMj4uLsKgID7CoCBjb25maWdfbG9vcAoKLT7CoCBlY2hvIDxyZWFkX3dyaXRl X2FkZHJlc3M+IDx3cml0ZV9tYXNrPiA8d3JpdGVfdmFsPsKgID7CoCBjb25maWdfcmVhZF93cml0 ZQoKTGV0IG1lIGtub3cgeW91ciB0aG91Z2h0cyByZWdhcmRpbmcgdGhpcy4KCgpUaGFua3MsCgpT b3VyYWRlZXAKCgo+Cj4+Cj4+IFsuLl0KPj4+Pj4+PiArwqDCoMKgwqDCoMKgwqAgVGhlIGFkZHJl c3MgYXJndW1lbnQgc2hvdWxkCj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGJlIGdpdmVuIG9mIHRo ZSBmb3JtIDxtYXNrPiA8dmFsdWU+LkZvciBkZWJ1Z2dpbmcKPj4+Pj4+PiArwqDCoMKgwqDCoMKg wqAgcHVycG9zZXMgc29tZXRpbWVzIHdlIG5lZWQgdG8gZmlyc3QgcmVhZCBmcm9tIGEgcmVnaXN0 ZXIKPj4+Pj4+PiArwqDCoMKgwqDCoMKgwqAgYW5kIHRoZW4gc2V0IHNvbWUgdmFsdWVzIHRvIHRo ZSByZWdpc3Rlci4KPj4+Pj4+PiArwqDCoMKgwqDCoMKgwqAgRXhhbXBsZToKPj4+Pj4+PiArwqDC oMKgwqDCoMKgwqAgZWNobyAweDgwMDAwMDAwID4gL3N5cy9idXMvcGxhdGZvcm0vZGV2aWNlcy8u Li4vY29uZmlnCj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIChTZXQgdGhlIGFkZHJlc3MgaW4gY29u ZmlnIGZpbGUpCj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGVjaG8gMHhGIDB4QSA+IC9zeXMvYnVz L3BsYXRmb3JtL2RldmljZXMvLi4uL3JkX21vZF93cgo+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCAo UHJvdmlkZSB0aGUgbWFzayBhbmQgdGhlIHZhbHVlIHRvIHdyaXRlKQo+Pj4+Pj4+ICsKPj4+Pj4+ PiArV2hhdDrCoMKgwqDCoMKgwqDCoMKgwqDCoCAvc3lzL2J1cy9wbGF0Zm9ybS9kZXZpY2VzLy4u Li9yZWFkeQo+Pj4+Pj4+ICtEYXRlOsKgwqDCoMKgwqDCoMKgwqDCoMKgIE1hcmNoIDIwMjEKPj4+ Pj4+PiArQ29udGFjdDrCoMKgwqDCoMKgwqDCoCBTb3VyYWRlZXAgQ2hvd2RodXJ5PHNjaG93ZGh1 QGNvZGVhdXJvcmEub3JnPgo+Pj4+Pj4+ICtEZXNjcmlwdGlvbjoKPj4+Pj4+PiArwqDCoMKgwqDC oMKgwqAgVGhpcyBmaWxlIGlzIHVzZWQgdG8gY2hlY2sgdGhlIHN0YXR1cyBvZiB0aGUgZGNjCj4+ Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGhhcmR3YXJlIGlmIGl0J3MgcmVhZHkgdG8gdGFrZSB0aGUg aW5wdXRzLgo+Pj4+Pj4gV2hlbiB3aWxsIHRoaXMgcmVhZCAiZmFsc2UiPwo+Pj4+PiBUaGlzIHdp bGwgZ2l2ZSBmYWxzZSBpZiB0aGUgRENDIGhhcmR3YXJlIGlzIG5vdCBpbiBhbiBvcGVyYXRpb25h bCAKPj4+Pj4gc3RhdGUuCj4+Pj4+Cj4+Pj4+IFdpbGwgdXBkYXRlIGFjY29yZGluZ2x5Lgo+Pj4+ Pgo+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBFeGFtcGxlOgo+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDC oCBjYXQgL3N5cy9idXMvcGxhdGZvcm0vZGV2aWNlcy8uLi4vcmVhZHkKPj4+Pj4+PiArCj4+Pj4+ Pj4gK1doYXQ6wqDCoMKgwqDCoMKgwqAgL3N5cy9idXMvcGxhdGZvcm0vZGV2aWNlcy8uLi4vY3Vy cl9saXN0Cj4+Pj4+Pj4gK0RhdGU6wqDCoMKgwqDCoMKgwqAgRmVicnVhcnkgMjAyMQo+Pj4+Pj4+ ICtDb250YWN0OsKgwqDCoCBTb3VyYWRlZXAgQ2hvd2RodXJ5PHNjaG93ZGh1QGNvZGVhdXJvcmEu b3JnPgo+Pj4+Pj4+ICtEZXNjcmlwdGlvbjoKPj4+Pj4+PiArwqDCoMKgwqDCoMKgwqAgVGhpcyBh dHRyaWJ1dGUgaXMgdXNlZCB0byBlbnRlciB0aGUgbGlua2xpc3QgdG8gYmUKPj4+Pj4+IEkgdGhp bmsgaXQgd291bGQgYmUgbW9yZSBhcHByb3ByaWF0ZSB0byB1c2UgdGhlIHZlcmIgInNlbGVjdCIg Cj4+Pj4+PiBoZXJlIGFuZAo+Pj4+Pj4gYWZhaWN0IGl0J3MgYSAibGlzdCIgYXMgdGhlICJsaW5r ZWQiIHBhcnQgb25seSByZWxhdGVzIHRvIHlvdXIKPj4+Pj4+IGltcGxlbWVudGF0aW9uKS4KPj4+ Pj4+Cj4+Pj4+PiBCdXQgdGhhdCBzYWlkLCBJIGRvbid0IGxpa2UgdGhpcyBBQkkuIEkgdGhpbmsg aXQgd291bGQgYmUgY2xlYW5lciAKPj4+Pj4+IGlmIHlvdQo+Pj4+Pj4gaGFkIHNwZWNpZmljIGF0 dHJpYnV0ZXMgZm9yIGVhY2ggb2YgdGhlIGxpc3RzLiBUaGF0IHdheSBpdCB3b3VsZCBiZQo+Pj4+ Pj4gY2xlYXIgdGhhdCB5b3UgaGF2ZSBOIGxpc3RzIGFuZCB0aGV5IGNhbiBiZSBjb25maWd1cmVk IGFuZCBlbmFibGVkCj4+Pj4+PiBpbmRlcGVuZGVudGx5LCBhbmQgdGhlcmUncyBubyBwb3NzaWJs ZSByYWNlIGNvbmRpdGlvbnMuCj4+Pj4+IFNvIHdlIGRvIGhhdmUgYXR0cmlidXRlcyBmb3IgaW5k ZXBlbmRlbnQgbGlzdHMgaW4gdGhpcyBjYXNlLiBUaGUgCj4+Pj4+IHVzZXIgaXMKPj4+Pj4gZ2l2 ZW4gdGhlIG9wdGlvbgo+Pj4+Pgo+Pj4+PiB0byBjb25maWd1cmUgbXVsdGlwbGUgbGlzdHMgYXQg b25lIGdvLiBGb3IgZXhhbXBsZSBJIGNhbiBkbwo+Pj4+Pgo+Pj4+PiBlY2hvIDEgPiBjdXJyX2xp c3QKPj4+Pj4KPj4+Pj4gZWNobyAweDE4MDAwMDEwIDEgPiBjb25maWcKPj4+Pj4gZWNobyAweDE4 MDAwMDI0IDEgPiBjb25maWcKPj4+Pj4KPj4+Pj4gVGhlbiBmb2xsb3dlZCBieQo+Pj4+Pgo+Pj4+ PiBlY2hvIDIgPiBjdXJyX2xpc3QKPj4+Pj4KPj4+Pj4gZWNobyAweDE4MDEwMDM4IDYgPiBjb25m aWcKPj4+Pj4gZWNobyAweDE4MDIwMDEwIDEgPiBjb25maWcKPj4+Pj4KPj4+Pj4gV2Ugd2lsbCBn ZXQgdGhlIG91dHB1dCBpbiB0ZXJtcyBvZiB0d28gc2VwYXJhdGUgbGlzdCBvZiByZWdpc3RlcnMg Cj4+Pj4+IHZhbHVlcy4KPj4+Pj4KPj4+PiBJIHVuZGVyc3RhbmQgdGhhdCB0aGlzIHdpbGwgZGVm aW5lIHR3byBsaXN0cyBvZiBvcGVyYXRpb25zIGFuZCB0aGF0IHdlCj4+Pj4gd2lsbCBnZXQgMiBh bmQgNyByZWdpc3RlcnMgZHVtcGVkLCByZXNwZWN0aXZlbHkuIFBlcmhhcHMgdW5saWtlbHksIGJ1 dAo+Pj4+IHdoYXQgaGFwcGVucyBpZiB5b3UgdHJ5IHRvIGRvIHRoZXNlIHR3byBvcGVyYXRpb25z IGNvbmN1cnJlbnRseT8KPj4+Pgo+Pj4+Cj4+Pj4gV2hhdCBJJ20gc3VnZ2VzdGluZyBoZXJlIGlz IHRoYXQgaWYgeW91IGhhdmUgTiBjb250ZXh0cywgeW91IHNob3VsZCAKPj4+PiBoYXZlCj4+Pj4g TiBpbnRlcmZhY2VzIHRvIG1vZGlmeSBlYWNoIG9uZSBpbmRlcGVuZGVudGx5IC0gc2ltcGx5IGJl Y2F1c2UgdGhhdCdzCj4+Pj4gZ2VuZXJhbGx5IGEgdmVyeSBnb29kIHRoaW5nLgo+Pj4gTm90IHN1 cmUgaWYgdGhlcmUgd2lsbCBldmVyIGJlIGEgY29uY3VycmVuY3kgaXNzdWUgaW4gdGhpcyBjYXNl Lgo+Pj4gVGhpcyBpcyBqdXN0IGFib3V0IHByb2dyYW1taW5nIHRoZSBEQ0MgU1JBTSBmcm9tIHRo ZSB1c2VyIGVudHJpZXMKPj4+IHNlcXVlbnRpYWxseS4KPj4gU28geW91J3ZlIGRlY2lkZWQgdGhh dCB0d28gc3VjaCBzZXF1ZW5jZXMgbXVzdCBub3QgaGFwcGVuIGF0IHRoZSBzYW1lCj4+IHRpbWUu IChJIGtub3cgaXQncyB1bmxpa2VseSwgYnV0IHRoZXJlJ3Mgbm90aGluZyBwcmV2ZW50aW5nIG1l IGZyb20KPj4gcnVubmluZyB0aGUgdHdvIHNuaXBwZXRzIG9mIGVjaG9zIGNvbmN1cnJlbnRseSBh bmQgdGhlIG91dGNvbWUgd2lsbCBiZQo+PiB1bmV4cGVjdGVkKQo+Cj4gU28gYXMgcGVyIHRoZSBk Y2MgaGFyZHdhcmUgY29uZmlndXJhdGlvbiBkb2N1bWVudCwgcGFyYWxsZWwgCj4gcHJvZ3JhbW1p bmcgb2YgbGlzdHMgYXJlIG5vdAo+Cj4gc3VwcG9ydGVkIGZvciBkY2MuIFdlIHByb2dyYW0gdGhl IGxpc3RzIHNlcXVlbnRpYWxseSBvbmUgYWZ0ZXIgdGhlIG90aGVyLgo+Cj4+Cj4+PiBUaGUgY3Vy cl9saXN0IG51bWJlciBpcyBub3RoaW5nIGJ1dCBzb21lIHJlZ2lzdGVyIHdyaXRlcwo+Pj4gZG9u ZSBpbiB0aGUgZGNjIHNvIHRoYXQgdGhlIGRjY19oYXJkd2FyZSBrbm93cyB0aGUgYmVnaW5uaW5n IGFuZCBlbmQKPj4+IG9mIGEgcGFydGljdWxhciBsaXN0IGFuZCBjYW4gZHVtcCB0aGUgY2FwdHVy ZWQgZGF0YSBhY2NvcmRpbmcuIEV2ZW4gaWYKPj4+IGFuIHVzZXIgY2hvb3NlcyBtdWx0aXBsZSBj dXJyX2xpc3QgZW50cmllcywgaXQgd2lsbCBiZSBwcm9ncmFtbWVkCj4+PiBzZXF1ZW50aWFsbHkg aW4gRENDX1NSQU0uCj4+Pgo+PiBTbyB0aGVyZSdzIG5vIHNlcGFyYXRpb24gYmV0d2VlbiB0aGUg bGlzdHMgaW4gdGhlIGhhcmR3YXJlPwo+Pgo+PiBMb29raW5nIGF0IHRoZSBkcml2ZXIgSSBnZXQg YSBzZW5zZSB0aGF0IHdlIGhhdmUgTiBsaXN0cyB0aGF0IGNhbiBiZQo+PiBjb25maWd1cmVkIGlu ZGVwZW5kZW50bHkgYW5kIHdpbGwgYmUgcnVuICJpbmRlcGVuZGVudGx5IiB1cG9uIGEgdHJpZ2dl ci4KPj4KPj4gSWYgdGhpcyBpc24ndCB0aGUgY2FzZSwgd2hhdCdzIHRoZSBwdXJwb3NlIG9mIHRo ZSBtdWx0aXBsZSBsaXN0cz8KPgo+IExpc3RzIGFyZSBwcm9ncmFtbWVkIHNlcXVlbnRpYWxseSBm cm9tIHRoZSBkcml2ZXIgcGVyc3BlY3RpdmUuCj4KPiBXZSBoYXZlIG11bHRpcGxlIGxpc3RzIGlu IGNhc2Ugb2YgZGNjIGJlY2F1c2UgbXVsdGlwbGUgc29mdHdhcmUgCj4gY29tcG9uZW50cyBtYXkg YmUgdXNpbmcKPgo+IGRjYyBoYXJkd2FyZSBhdCBvbmNlIGluIHdoaWNoIGNhc2UgdGhlcmUgYXJl IGluZGl2aWR1YWwgbGlzdHMgYWxsb3R0ZWQgCj4gZm9yIGVhY2ggaW5kaXZpZHVhbCBjb21wb25l bnRzLgo+Cj4gRm9yIGV4YW1wbGUga2VybmVsIG1pZ2h0IGhhdmUgYSBmZXcgbGlzdHMgdG8gYWNj ZXNzIHdoZXJlYXMgdGhlIHJlc3QgCj4gbWF5YmUgdXNlZCBieSBTREkgd2hpY2ggaXMgYQo+Cj4g c2VwYXJhdGUgY29tcG9uZW50LiBFYWNoIGxpc3QgaXMgb2YgYXJiaXRyYXJ5IGxlbmd0aCBhcyBl bnRlcmVkIGJ5IHRoZSAKPiB1c2VyIGFuZCBvbmUgbGlzdCBjYW4gYmUgdXBkYXRlZAo+Cj4gd2l0 aCBpdCdzIGJhc2UgYWRkcmVzcyBhZnRlciB0aGUgcHJldmlvdXMgbGlzdCBoYXMgYmVlbiBwcm9n cmFtbWVkIGluIAo+IERDQ19TUkFNIGxpa2UgYmVsb3cgOi0KPgo+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCByZXQgPSBfX2RjY19sbF9jZmcoZHJ2ZGF0YSwgbGlzdCk7Cj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChyZXQpIHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRjY193cml0ZWwoZHJ2ZGF0YSwgMCwgRENDX0xM X0xPQ0sobGlzdCkpOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgZ290byBlcnI7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPgo+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiAzLiBwcm9ncmFtIERDQ19SQU1fQ0ZHIHJl ZyAqLwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkY2Nfd3JpdGVsKGRydmRhdGEs IHJhbV9jZmdfYmFzZSArCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBkcnZkYXRhLT5yYW1fb2Zmc2V0LzQsIERDQ19MTF9CQVNFKGxpc3QpKTsKPgo+Cj4+ Cj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHVzZWQgd2hpbGUgYXBwZW5kaW5nIGFkZHJlc3Nlcy5U aGUgcmFuZ2Ugb2YgdmFsdWVzCj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGZvciB0aGlzIGNhbiBi ZSBmcm9tIDAgdG8gMy5UaGlzIGZlYXR1cmUgaXMgZ2l2ZW4gaW4KPj4+Pj4+PiArwqDCoMKgwqDC oMKgwqAgb3JkZXIgdG8gdXNlIGNlcnRhaW4gbGlua2VkbGlzdCBmb3IgY2VydGFpbiBkZWJ1Z2dp bmcKPj4+Pj4+PiArwqDCoMKgwqDCoMKgwqAgcHVycG9zZXMuCj4+Pj4+Pj4gK8KgwqDCoMKgwqDC oMKgIEV4YW1wbGU6Cj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGVjaG8gMCA+IC9zeXMvYnVzL3Bs YXRmb3JtL2RldmljZXMvMTBhMjAwMC5kY2MvY3Vycl9saXN0Cj4+Pj4+Pj4gKwo+Pj4+IFsuLl0K Pj4+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zb2MvcWNvbS9kY2MuYyBiL2RyaXZlcnMvc29j L3Fjb20vZGNjLmMKPj4+PiBbLi5dCj4+Pj4+Pj4gK3N0YXRpYyBpbnQgZGNjX3ZhbGlkX2xpc3Qo c3RydWN0IGRjY19kcnZkYXRhICpkcnZkYXRhLCBpbnQgCj4+Pj4+Pj4gY3Vycl9saXN0KQo+Pj4+ Pj4+ICt7Cj4+Pj4+Pj4gK8KgwqDCoCB1MzIgbG9ja19yZWc7Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ICvC oMKgwqAgaWYgKGxpc3RfZW1wdHkoJmRydmRhdGEtPmNmZ19oZWFkW2N1cnJfbGlzdF0pKQo+Pj4+ Pj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVJTlZBTDsKPj4+Pj4+PiArCj4+Pj4+Pj4gK8Kg wqDCoCBpZiAoZHJ2ZGF0YS0+ZW5hYmxlW2N1cnJfbGlzdF0pIHsKPj4+Pj4+PiArwqDCoMKgwqDC oMKgwqAgZGV2X2VycihkcnZkYXRhLT5kZXYsICJMaXN0ICVkIGlzIGFscmVhZHkgZW5hYmxlZFxu IiwKPj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGN1cnJfbGlzdCk7Cj4+ Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRUlOVkFMOwo+Pj4+Pj4+ICvCoMKgwqAgfQo+ Pj4+Pj4+ICsKPj4+Pj4+PiArwqDCoMKgIGxvY2tfcmVnID0gZGNjX3JlYWRsKGRydmRhdGEsIERD Q19MTF9MT0NLKGN1cnJfbGlzdCkpOwo+Pj4+Pj4gVW5kZXIgd2hhdCBjaXJjdW1zdGFuY2VzIHdv dWxkIHRoaXMgZGlmZmVyIGZyb20KPj4+Pj4+IGRydmRhdGEtPmVuYWJsZVtjdXJyX2xpc3R9Pwo+ Pj4+PiBTbyBsb2NraW5nIHRoZSBsaXN0IGlzIGRvbmUgb24gdGhlIHJlZ2lzdGVyIGFzIHNvb24g YXMgdGhlIHVzZXIgCj4+Pj4+IGVudGVycyB0aGUKPj4+Pj4gY3Vycl9saXN0IGVudHJ5IHdoZXJl YXMKPj4+Pj4KPj4+Pj4gdGhlIGxpc3QgaXMgbWFya2VkIGFzIGVuYWJsZWQgb25seSBvbiBzdWNj ZXNzZnVsbHkgcHJvZ3JhbW1pbmcgdGhlIAo+Pj4+PiBTUkFNCj4+Pj4+IGNvbnRlbnRzLiBTbyBh IGxpc3QgY2FuCj4+Pj4+Cj4+Pj4+IGJlIGxvY2tlZCBhbmQgbm90IG1hcmtlZCBlbmFibGVkIGlu IGNlcnRhaW4gY2FzZXMuIFRoZSBmaXJzdCBpcyAKPj4+Pj4gdXNlZCBzbyB0aGF0Cj4+Pj4+IHRo ZSB1c2VyIGRvZXNuJ3QKPj4+Pj4KPj4+Pj4gbWlzdGFrZW5seSBlbnRlciB0aGUgc2FtZSBjdXJy X2xpc3QgdHdpY2Ugd2hlcmVhcyB0aGUgbGF0ZXIgaXMgCj4+Pj4+IHVzZWQgdG8gbWFyawo+Pj4+ PiB0aGF0IHRoZSBsaXN0IGhhcyBiZWVuCj4+Pj4+Cj4+Pj4+IHN1Y2Nlc3NmdWxseSBjb25maWd1 cmVkLgo+Pj4+Pgo+Pj4+IFNvIHRoaXMgd2lsbCBtYXJrIHRoZSBsaXN0IGFzICJhY3RpdmVseSBp biB1c2UsIGJ1dCBkaXNhYmxlZCI/IFdoeSBpcwo+Pj4+IHRoaXMga2VwdCBpbiB0aGUgaGFyZHdh cmU/IFdoZW4gaXMgdGhpcyBub3QgdGhlIHNhbWUgYXMgdGhlIGxpc3Qgb2YKPj4+PiBvcGVyYXRp b25zIGZvciB0aGF0IGxpc3QgYmVpbmcgbm9uLWVtcHR5Pwo+Pj4gU28gdGhpcyBpcyBpbiBhY2Nv cmRhbmNlIHdpdGggdGhlIGRjYyBoYXJkd2FyZSBjb25maWd1cmF0aW9uCj4+PiByZXF1aXJlbWVu dC4gV2UgaGF2ZSB0byBsb2NrIHRoZSBsaXN0IGZpcnN0IGFuZCBhZnRlciB0aGF0IHByb2NlZWQK Pj4+IHdpdGggdGhlIHN1YnNlcXVlbnQgd3JpdGVzLgo+PiBCdXQgd2hhdCBkb2VzIHRoaXMgbWVh bj8gV2hhdCBoYXBwZW5zIHdoZW4gSSBsb2NrIGEgbGlzdD8KPj4KPj4gQWZhY2l0IHdlIGhhdmUg YSAibG9jayIgYml0IGFuZCBhbiAiZW5hYmxlIiBiaXQuIFNvIGluIHdoYXQgY2lyY3Vtc3RhbmNl Cj4+IGRvZXMgdGhlIGhhcmR3YXJlIGNhcmUgYWJvdXQgYSBsaXN0IGJlaW5nIGxvY2tlZD8gV291 bGRuJ3QgaXQgYmUKPj4gc3VmZmljaWVudCB0byBqdXN0IGhhdmUgdGhlIGVuYWJsZSBiaXQ/Cj4K PiBBcyBleHBsYWluZWQgYWJvdmUgbXVsdGlwbGUgc29mdHdhcmUgY29tcG9uZW50cyBtaWdodCBi ZSB1c2luZyBEQ0MgCj4gaGFyZHdhcmUgZm9yIHdoaWNoIGxvY2sgYml0IGlzCj4KPiBuZWNlc3Nh cnkuIEZyb20gb25seSBrZXJuZWwgcGVyc3BlY3RpdmUgZW5hYmxlIGJpdCBhbG9uZSBzdWZmaWNl cyBmb3IgCj4gdGhlIG9wZXJhdGlvbi4KPgo+Pgo+Pj4gQXMgcGVyIHRoZSBkcml2ZXIgY29kZSBi ZWxvdwo+Pj4KPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiAxLiBUYWtlIG93 bmVyc2hpcCBvZiB0aGUgbGlzdCAqLwo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgZGNjX3dyaXRlbChkcnZkYXRhLCBCSVQoMCksIERDQ19MTF9MT0NLKGxpc3QpKTsKPj4+Cj4+ PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiAyLiBQcm9ncmFtIGxpbmtlZC1s aXN0IGluIHRoZSBTUkFNICovCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBy YW1fY2ZnX2Jhc2UgPSBkcnZkYXRhLT5yYW1fY2ZnOwo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgcmV0ID0gX19kY2NfbGxfY2ZnKGRydmRhdGEsIGxpc3QpOwo+Pj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHJldCkgewo+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRjY193cml0ZWwoZHJ2ZGF0YSwgMCwg RENDX0xMX0xPQ0sobGlzdCkpOwo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGdvdG8gZXJyOwo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfQo+Pj4KPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIDMuIHBy b2dyYW0gRENDX1JBTV9DRkcgcmVnICovCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBkY2Nfd3JpdGVsKGRydmRhdGEsIHJhbV9jZmdfYmFzZSArCj4+PiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZHJ2ZGF0YS0+cmFtX29mZnNldC80 LCBEQ0NfTExfQkFTRShsaXN0KSk7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBkY2Nfd3JpdGVsKGRydmRhdGEsIGRydmRhdGEtPnJhbV9zdGFydCArCj4+PiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZHJ2ZGF0YS0+cmFtX29mZnNl dC80LCBEQ0NfRkRfQkFTRShsaXN0KSk7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBkY2Nfd3JpdGVsKGRydmRhdGEsIDB4RkZGLCBEQ0NfTExfVElNRU9VVChsaXN0KSk7Cj4+ Pgo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogNC4gQ2xlYXJzIGludGVy cnVwdCBzdGF0dXMgcmVnaXN0ZXIgKi8KPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGRjY193cml0ZWwoZHJ2ZGF0YSwgMCwgRENDX0xMX0lOVF9FTkFCTEUobGlzdCkpOwo+Pj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGNjX3dyaXRlbChkcnZkYXRhLCAoQklU KDApIHwgQklUKDEpIHwgQklUKDIpKSwKPj4+IERDQ19MTF9JTlRfU1RBVFVTKGxpc3QpKTsKPj4+ Cj4+PiBJbiBjYXNlIG9mIGFueSBlcnJvcnMgd2UgYWdhaW4gdW5sb2NrIHRoZSBsaXN0IGJlZm9y ZSBleGl0aW5nLgo+Pj4KPj4gU28gaXQgbmVlZHMgdG8gYmUgbG9ja2VkIHdoaWxlIFNSQU0gY29u dGFpbnMgYSB2YWxpZCBzZXF1ZW5jZSBvZgo+PiBvcGVyYXRpb25zPwo+Pgo+PiBPciBkb2VzIGl0 IG5lZWQgdG8gYmUgbG9ja2VkIHdoaWxlIHdlIHdyaXRlIHRvIFNSQU0/IElmIHNvLCB3aHkgaXMg dGhhdD8KPgo+IFNvIGl0IG5lZWRzIHRvIGJlIGxvY2tlZCB3aGlsZSBTUkFNIGNvbnRhaW5zIGEg dmFsaWQgc2VxdWVuY2Ugb2YgCj4gb3BlcmF0aW9ucy4KPgo+IFRoZSByZWFzb24gaGFzIGJlZW4g ZXhwbGFpbmVkIGFzIGFib3ZlLgo+Cj4+IFJlZ2FyZHMsCj4+IEJqb3JuCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxp bmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3Rz LmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==