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 X-Spam-Level: X-Spam-Status: No, score=-15.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D5671C433DB for ; Wed, 6 Jan 2021 11:52:28 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 8A24A2310C for ; Wed, 6 Jan 2021 11:52:28 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8A24A2310C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=AWBJtg3TauCSbYnZHdcrGNrABzc3+/TKl5y1BrdP/oQ=; b=VqEkzUM8rw7jQeHTN5qooMA6h O5792lepTllsQ3V74hC10frHYn4AKrCT9/hMPPRETkKwl04Qvx+w7MTOGcmP/BJomF9cgNmgV4u8L QXG/r8iX6mZegGmQR3ecBhI5QzqAhZZnUH9fNJcIyPfXbiKsMV8kou6wfmm5xn98o0DJk8qf1IPK7 +ffOMs2FAFW+7p5KiBAhvYLQx0q/4he0/RbYQo/WV3ZsnUxAUKPIk1oJf9GvU9ndU3p1/jSziuxMY 1iCwzunrAHoeUo7mn6uIW7PR1oQ3fQMoueb8kI6HNmBJyACiRHHzrtnGX2E8hxLwph9zHZOmwH9W7 LdbnGQsWw==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kx7Ki-0002tW-GN; Wed, 06 Jan 2021 11:50:32 +0000 Received: from foss.arm.com ([217.140.110.172]) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kx7Kf-0002sj-N8 for linux-arm-kernel@lists.infradead.org; Wed, 06 Jan 2021 11:50:31 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 1E99DD6E; Wed, 6 Jan 2021 03:50:24 -0800 (PST) Received: from [192.168.0.130] (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 53F453F70D; Wed, 6 Jan 2021 03:50:21 -0800 (PST) Subject: Re: [PATCH 10/11] coresight: sink: Add TRBE driver To: Suzuki K Poulose , linux-arm-kernel@lists.infradead.org, coresight@lists.linaro.org References: <1608717823-18387-1-git-send-email-anshuman.khandual@arm.com> <1608717823-18387-11-git-send-email-anshuman.khandual@arm.com> <92b5ae56-df5d-3772-0206-b50ea4080c4f@arm.com> From: Anshuman Khandual Message-ID: <88a4d889-242a-2951-9c6e-e8712d013f46@arm.com> Date: Wed, 6 Jan 2021 17:20:38 +0530 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210106_065029_859668_32330A44 X-CRM114-Status: GOOD ( 43.76 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Linu Cherian , linux-kernel@vger.kernel.org, Mathieu Poirier , Mike Leach Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org CgpPbiAxLzUvMjEgNTowNyBQTSwgU3V6dWtpIEsgUG91bG9zZSB3cm90ZToKPiBPbiAxLzUvMjEg OToyOSBBTSwgQW5zaHVtYW4gS2hhbmR1YWwgd3JvdGU6Cj4+Cj4+Cj4+IE9uIDEvNC8yMSA5OjU4 IFBNLCBTdXp1a2kgSyBQb3Vsb3NlIHdyb3RlOgo+Pj4KPj4+IEhpIEFuc2h1bWFuLAo+Pj4KPj4+ IE9uIDEyLzIzLzIwIDEwOjAzIEFNLCBBbnNodW1hbiBLaGFuZHVhbCB3cm90ZToKPj4+PiBUcmFj ZSBCdWZmZXIgRXh0ZW5zaW9uIChUUkJFKSBpbXBsZW1lbnRzIGEgdHJhY2UgYnVmZmVyIHBlciBD UFUgd2hpY2ggaXMKPj4+PiBhY2Nlc3NpYmxlIHZpYSB0aGUgc3lzdGVtIHJlZ2lzdGVycy4gVGhl IFRSQkUgc3VwcG9ydHMgZGlmZmVyZW50IGFkZHJlc3NpbmcKPj4+PiBtb2RlcyBpbmNsdWRpbmcg Q1BVIHZpcnR1YWwgYWRkcmVzcyBhbmQgYnVmZmVyIG1vZGVzIGluY2x1ZGluZyB0aGUgY2lyY3Vs YXIKPj4+PiBidWZmZXIgbW9kZS4gVGhlIFRSQkUgYnVmZmVyIGlzIGFkZHJlc3NlZCBieSBhIGJh c2UgcG9pbnRlciAoVFJCQkFTRVJfRUwxKSwKPj4+PiBhbiB3cml0ZSBwb2ludGVyIChUUkJQVFJf RUwxKSBhbmQgYSBsaW1pdCBwb2ludGVyIChUUkJMSU1JVFJfRUwxKS4gQnV0IHRoZQo+Pj4+IGFj Y2VzcyB0byB0aGUgdHJhY2UgYnVmZmVyIGNvdWxkIGJlIHByb2hpYml0ZWQgYnkgYSBoaWdoZXIg ZXhjZXB0aW9uIGxldmVsCj4+Pj4gKEVMMyBvciBFTDIpLCBpbmRpY2F0ZWQgYnkgVFJCSURSX0VM MS5QLiBUaGUgVFJCRSBjYW4gYWxzbyBnZW5lcmF0ZSBhIENQVQo+Pj4+IHByaXZhdGUgaW50ZXJy dXB0IChQUEkpIG9uIGFkZHJlc3MgdHJhbnNsYXRpb24gZXJyb3JzIGFuZCB3aGVuIHRoZSBidWZm ZXIKPj4+PiBpcyBmdWxsLiBPdmVyYWxsIGltcGxlbWVudGF0aW9uIGhlcmUgaXMgaW5zcGlyZWQg ZnJvbSB0aGUgQXJtIFNQRSBkcml2ZXIuCj4+Pj4KPj4+PiBDYzogTWF0aGlldSBQb2lyaWVyIDxt YXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KPj4+PiBDYzogTWlrZSBMZWFjaCA8bWlrZS5sZWFj aEBsaW5hcm8ub3JnPgo+Pj4+IENjOiBTdXp1a2kgSyBQb3Vsb3NlIDxzdXp1a2kucG91bG9zZUBh cm0uY29tPgo+Pj4+IFNpZ25lZC1vZmYtYnk6IEFuc2h1bWFuIEtoYW5kdWFsIDxhbnNodW1hbi5r aGFuZHVhbEBhcm0uY29tPgo+Pj4+IC0tLQo+Pj4KPj4+Pgo+Pj4+IMKgwqAgRG9jdW1lbnRhdGlv bi90cmFjZS9jb3Jlc2lnaHQvY29yZXNpZ2h0LXRyYmUucnN0IHzCoCAzOSArCj4+Pj4gwqDCoCBh cmNoL2FybTY0L2luY2x1ZGUvYXNtL3N5c3JlZy5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB8wqDCoCAyICsKPj4+PiDCoMKgIGRyaXZlcnMvaHd0cmFjaW5nL2NvcmVzaWdodC9L Y29uZmlnwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDExICsKPj4+PiDCoMKgIGRyaXZl cnMvaHd0cmFjaW5nL2NvcmVzaWdodC9NYWtlZmlsZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8 wqDCoCAxICsKPj4+PiDCoMKgIGRyaXZlcnMvaHd0cmFjaW5nL2NvcmVzaWdodC9jb3Jlc2lnaHQt dHJiZS5jwqDCoMKgwqAgfCA5MjUgKysrKysrKysrKysrKysrKysrKysrKysKPj4+PiDCoMKgIGRy aXZlcnMvaHd0cmFjaW5nL2NvcmVzaWdodC9jb3Jlc2lnaHQtdHJiZS5owqDCoMKgwqAgfCAyNDgg KysrKysrCj4+Pj4gwqDCoCA2IGZpbGVzIGNoYW5nZWQsIDEyMjYgaW5zZXJ0aW9ucygrKQo+Pj4+ IMKgwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IERvY3VtZW50YXRpb24vdHJhY2UvY29yZXNpZ2h0L2Nv cmVzaWdodC10cmJlLnJzdAo+Pj4+IMKgwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvaHd0 cmFjaW5nL2NvcmVzaWdodC9jb3Jlc2lnaHQtdHJiZS5jCj4+Pj4gwqDCoCBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9od3RyYWNpbmcvY29yZXNpZ2h0L2NvcmVzaWdodC10cmJlLmgKPj4+Pgo+ IAo+Pj4+IGRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N5c3JlZy5oIGIvYXJj aC9hcm02NC9pbmNsdWRlL2FzbS9zeXNyZWcuaAo+Pj4+IGluZGV4IGU2OTYyYjEuLjJhOWJmYjcg MTAwNjQ0Cj4+Pj4gLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zeXNyZWcuaAo+Pj4+ICsr KyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3lzcmVnLmgKPj4+PiBAQCAtOTcsNiArOTcsNyBA QAo+Pj4+IMKgwqAgI2RlZmluZSBTRVRfUFNUQVRFX1VBTyh4KcKgwqDCoMKgwqDCoMKgIF9fZW1p dF9pbnN0KDB4ZDUwMDQwMWYgfCBQU1RBVEVfVUFPIHwgKCghIXgpIDw8IFBTVEFURV9JbW1fc2hp ZnQpKQo+Pj4+IMKgwqAgI2RlZmluZSBTRVRfUFNUQVRFX1NTQlMoeCnCoMKgwqDCoMKgwqDCoCBf X2VtaXRfaW5zdCgweGQ1MDA0MDFmIHwgUFNUQVRFX1NTQlMgfCAoKCEheCkgPDwgUFNUQVRFX0lt bV9zaGlmdCkpCj4+Pj4gwqDCoCAjZGVmaW5lIFNFVF9QU1RBVEVfVENPKHgpwqDCoMKgwqDCoMKg wqAgX19lbWl0X2luc3QoMHhkNTAwNDAxZiB8IFBTVEFURV9UQ08gfCAoKCEheCkgPDwgUFNUQVRF X0ltbV9zaGlmdCkpCj4+Pj4gKyNkZWZpbmUgVFNCX0NTWU5DwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBfX2VtaXRfaW5zdCgweGQ1MDMyMjVmKQo+Pj4+IMKgwqAgwqAgI2RlZmluZSBfX1NZU19CQVJS SUVSX0lOU04oQ1JtLCBvcDIsIFJ0KSBcCj4+Pj4gwqDCoMKgwqDCoMKgIF9fZW1pdF9pbnN0KDB4 ZDUwMDAwMDAgfCBzeXNfaW5zbigwLCAzLCAzLCAoQ1JtKSwgKG9wMikpIHwgKChSdCkgJiAweDFm KSkKPj4+PiBAQCAtODY5LDYgKzg3MCw3IEBACj4+Pj4gwqDCoCAjZGVmaW5lIElEX0FBNjRNTUZS Ml9DTlBfU0hJRlTCoMKgwqDCoMKgwqDCoCAwCj4+Pj4gwqDCoCDCoCAvKiBpZF9hYTY0ZGZyMCAq Lwo+Pj4+ICsjZGVmaW5lIElEX0FBNjRERlIwX1RSQkVfU0hJRlTCoMKgwqDCoMKgwqDCoCA0NAo+ Pj4+IMKgwqAgI2RlZmluZSBJRF9BQTY0REZSMF9UUkFDRV9GSUxUX1NISUZUwqDCoMKgIDQwCj4+ Pj4gwqDCoCAjZGVmaW5lIElEX0FBNjRERlIwX0RPVUJMRUxPQ0tfU0hJRlTCoMKgwqAgMzYKPj4+ PiDCoMKgICNkZWZpbmUgSURfQUE2NERGUjBfUE1TVkVSX1NISUZUwqDCoMKgIDMyCj4gCj4gCj4+ Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHd0cmFjaW5nL2NvcmVzaWdodC9NYWtlZmlsZSBiL2Ry aXZlcnMvaHd0cmFjaW5nL2NvcmVzaWdodC9NYWtlZmlsZQo+Pj4+IGluZGV4IGYyMGUzNTcuLmQ2 MDgxNjUgMTAwNjQ0Cj4+Pj4gLS0tIGEvZHJpdmVycy9od3RyYWNpbmcvY29yZXNpZ2h0L01ha2Vm aWxlCj4+Pj4gKysrIGIvZHJpdmVycy9od3RyYWNpbmcvY29yZXNpZ2h0L01ha2VmaWxlCj4+Pj4g QEAgLTIxLDUgKzIxLDYgQEAgb2JqLSQoQ09ORklHX0NPUkVTSUdIVF9TVE0pICs9IGNvcmVzaWdo dC1zdG0ubwo+Pj4+IMKgwqAgb2JqLSQoQ09ORklHX0NPUkVTSUdIVF9DUFVfREVCVUcpICs9IGNv cmVzaWdodC1jcHUtZGVidWcubwo+Pj4+IMKgwqAgb2JqLSQoQ09ORklHX0NPUkVTSUdIVF9DQVRV KSArPSBjb3Jlc2lnaHQtY2F0dS5vCj4+Pj4gwqDCoCBvYmotJChDT05GSUdfQ09SRVNJR0hUX0NU SSkgKz0gY29yZXNpZ2h0LWN0aS5vCj4+Pj4gK29iai0kKENPTkZJR19DT1JFU0lHSFRfVFJCRSkg Kz0gY29yZXNpZ2h0LXRyYmUubwo+Pj4+IMKgwqAgY29yZXNpZ2h0LWN0aS15IDo9IGNvcmVzaWdo dC1jdGktY29yZS5vwqDCoMKgIGNvcmVzaWdodC1jdGktcGxhdGZvcm0ubyBcCj4+Pj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgY29yZXNpZ2h0LWN0aS1zeXNmcy5vCj4+Pj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvaHd0cmFjaW5nL2NvcmVzaWdodC9jb3Jlc2lnaHQtdHJiZS5jIGIvZHJpdmVy cy9od3RyYWNpbmcvY29yZXNpZ2h0L2NvcmVzaWdodC10cmJlLmMKPj4+PiBuZXcgZmlsZSBtb2Rl IDEwMDY0NAo+Pj4+IGluZGV4IDAwMDAwMDAuLmJhMjgwZTYKPj4+PiAtLS0gL2Rldi9udWxsCj4+ Pj4gKysrIGIvZHJpdmVycy9od3RyYWNpbmcvY29yZXNpZ2h0L2NvcmVzaWdodC10cmJlLmMKPiAK Pj4+PiArc3RhdGljIHZvaWQgdHJiZV9yZXNldF9sb2NhbCh2b2lkKQo+Pj4+ICt7Cj4+Pj4gK8Kg wqDCoCB0cmJlX2Rpc2FibGVfYW5kX2RyYWluX2xvY2FsKCk7Cj4+Pj4gK8KgwqDCoCB3cml0ZV9z eXNyZWdfcygwLCBTWVNfVFJCUFRSX0VMMSk7Cj4+Pj4gK8KgwqDCoCB3cml0ZV9zeXNyZWdfcygw LCBTWVNfVFJCQkFTRVJfRUwxKTsKPj4+PiArwqDCoMKgIHdyaXRlX3N5c3JlZ19zKDAsIFNZU19U UkJTUl9FTDEpOwo+Pj4+ICvCoMKgwqAgaXNiKCk7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gKy8qCj4+ Pj4gKyAqIFRSQkUgQnVmZmVyIE1hbmFnZW1lbnQKPj4+PiArICoKPj4+PiArICogVGhlIFRSQkUg YnVmZmVyIHNwYW5zIGZyb20gdGhlIGJhc2UgcG9pbnRlciB0aWxsIHRoZSBsaW1pdCBwb2ludGVy LiBXaGVuIGVuYWJsZWQsCj4+Pj4gKyAqIGl0IHN0YXJ0cyB3cml0aW5nIHRyYWNlIGRhdGEgZnJv bSB0aGUgd3JpdGUgcG9pbnRlciBvbndhcmQgdGlsbCB0aGUgbGltaXQgcG9pbnRlci4KPj4+PiAr ICogV2hlbiB0aGUgd3JpdGUgcG9pbnRlciByZWFjaGVzIHRoZSBhZGRyZXNzIGp1c3QgYmVmb3Jl IHRoZSBsaW1pdCBwb2ludGVyLCBpdCBnZXRzCj4+Pj4gKyAqIHdyYXBwZWQgYXJvdW5kIGFnYWlu IHRvIHRoZSBiYXNlIHBvaW50ZXIuIFRoaXMgaXMgY2FsbGVkIGEgVFJCRSB3cmFwIGV2ZW50IHdo aWNoCj4+Pj4gKyAqIGlzIGFjY29tcGFuaWVkIGJ5IGFuIElSUS4KPj4+Cj4+PiBUaGlzIGlzIHRy dWUgZm9yIG9uZSBvZiB0aGUgbW9kZXMgb2Ygb3BlcmF0aW9uLCB0aGUgV1JBUCBtb2RlLCB3aGlj aCBjb3VsZCBiZSBzcGVjaWZpZWQKPj4+IGluIHRoZSBjb21tZW50LiBlLmcsCj4+Pgo+Pj4gVGhp cyBpcyBjYWxsZWQgYSBUUkJFIHdyYXAgZXZlbnQsIHdoaWNoIGdlbmVyYXRlcyBhIG1haW50ZW5h bmNlIGludGVycnVwdCB3aGVuIG9wZXJhdGVkCj4+PiBpbiBXUkFQIG1vZGUuCj4+Cj4+IFN1cmUs IHdpbGwgY2hhbmdlLgo+IAo+IFNvcnJ5LCBjb3JyZWN0aW5nIG15c2VsZjoKPiAKPiBzL3doZW4g b3BlcmF0ZWQgaW4gV1JBUCBtb2RlL3doZW4gb3BlcmF0ZWQgaW4gV1JBUCBvciBTVE9QIG1vZGUv CgpTdXJlLCB3aWxsIGNoYW5nZS4KCj4gCj4gLi4uCj4gCj4+Pj4gKwo+Pj4+ICtzdGF0aWMgdW5z aWduZWQgbG9uZyBnZXRfdHJiZV9saW1pdChzdHJ1Y3QgcGVyZl9vdXRwdXRfaGFuZGxlICpoYW5k bGUpCj4+Pgo+Pj4gbml0OiBUaGUgbmFtaW5nIGlzIGEgYml0IGNvbmZ1c2luZyB3aXRoIGdldF90 cmJlX2xpbWl0KCkgYW5kIGdldF90cmJlX2xpbWl0X3BvaW50ZXIoKS4KPj4+IE9uZSBjb21wdXRl cyB0aGUgVFJCRSBidWZmZXIgbGltaXQgYW5kIHRoZSBvdGhlciByZWFkcyB0aGUgaGFyZHdhcmUg TGltaXQgcG9pbnRlci4KPj4+IEl0IHdvdWxkIGJlIGdvb2QgaWYgZm9sbG93IGEgc2NoZW1lIGZv ciB0aGUgbmFtaW5ncy4KPj4+Cj4+PiBlLmcsIHRyYmVfbGltaXRfcG9pbnRlcigpICwgdHJiZV9i YXNlX3BvaW50ZXIoKSwgdHJiZV88cmVnaXN0ZXI+XzxuYW1lPiBmb3IgYW55dGhpbmcKPj4+IHRo YXQgcmVhZHMgdGhlIGhhcmR3YXJlIHJlZ2lzdGVyLgo+Pgo+PiBUaGUgY3VycmVudCBzY2hlbWUg aXMgaW4gdGhlIGZvcm0gZ2V0X3RyYmVfWFhYKCkgd2hlcmUgWFhYCj4+IGlzIGEgVFJCRSBoYXJk d2FyZSBjb21wb25lbnQgZS5nLgo+Pgo+PiBnZXRfdHJiZV9iYXNlX3BvaW50ZXIoKQo+PiBnZXRf dHJiZV9saW1pdF9wb2ludGVyKCkKPj4gZ2V0X3RyYmVfd3JpdGVfcG9pbnRlcigpCj4+IGdldF90 cmJlX2VjKCkKPj4gZ2V0X3RyYmVfYnNjKCkKPj4gZ2V0X3RyYmVfYWRkcmVzc19hbGlnbigpCj4+ IGdldF90cmJlX2ZsYWdfdXBkYXRlKCkKPj4KPj4+Cj4+PiBPciBtYXkgYmUgcmVuYW1lIHRoZSBn ZXRfdHJiZV9saW1pdCgpIHRvIGNvbXB1dGVfdHJiZV9idWZmZXJfbGltaXQoKQo+Pgo+PiBUaGlz IG1ha2VzIGl0IGNsZWFyLCB3aWxsIGNoYW5nZS4KPj4KPj4+Cj4+Pj4gK3sKPj4+PiArwqDCoMKg IHN0cnVjdCB0cmJlX2J1ZiAqYnVmID0gZXRtX3BlcmZfc2lua19jb25maWcoaGFuZGxlKTsKPj4+ PiArwqDCoMKgIHVuc2lnbmVkIGxvbmcgb2Zmc2V0Owo+Pj4+ICsKPj4+PiArwqDCoMKgIGlmIChi dWYtPnNuYXBzaG90KQo+Pj4+ICvCoMKgwqDCoMKgwqDCoCBvZmZzZXQgPSB0cmJlX3NuYXBzaG90 X29mZnNldChoYW5kbGUpOwo+Pj4+ICvCoMKgwqAgZWxzZQo+Pj4+ICvCoMKgwqDCoMKgwqDCoCBv ZmZzZXQgPSB0cmJlX25vcm1hbF9vZmZzZXQoaGFuZGxlKTsKPj4+PiArwqDCoMKgIHJldHVybiBi dWYtPnRyYmVfYmFzZSArIG9mZnNldDsKPj4+PiArfQo+Pj4+ICsKPj4+PiArc3RhdGljIHZvaWQg Y2xlYXJfdHJiZV9zdGF0ZSh2b2lkKQo+Pj4KPj4+IG5pdDogVGhlIG5hbWUgZG9lc24ndCBnaXZl IG11Y2ggY2x1ZSBhYm91dCB3aGF0IGl0IGlzIGRvaW5nLCBlc3BlY2lhbGx5LCBnaXZlbgo+Pj4g dGhlIGZvbGxvd2luZyAic2V0X3RyYmVfc3RhdGUoKSIgd2hpY2ggZG9lcyBjb21wbGV0ZWx5IGRp ZmZlcmVudCBmcm9tIHRoaXMgImNsZWFyIgo+Pj4gb3BlcmF0aW9uLgo+Pgo+PiBJIGFncmVlIHRo YXQgdGhlc2UgbmFtZXMgY291bGQgaGF2ZSBiZWVuIGJldHRlci4KPj4KPj4gcy9jbGVhcl90cmJl X3N0YXRlL3RyYmVfcmVzZXRfcGVyZl9zdGF0ZcKgIC0gQ2xlYXJzIFRSQkUgZnJvbSBjdXJyZW50 IHBlcmYgY29uZmlnCj4+IHMvc2V0X3RyYmVfc3RhdGUvdHJiZV9wcmVwYXJlX3BlcmZfc3RhdGXC oCAtIFByZXBhcmVzIFRSQkUgZm9yIHRoZSBuZXh0IHBlcmYgY29uZmlnCj4gCj4gUGxlYXNlIGRv bid0IHRpZSB0aGVtIHRvICJwZXJmIi4gVGhpcyBpcyBwdXJlIGhhcmR3YXJlIGNvbmZpZ3VyYXRp b24sIG5vdCBwZXJmLgoKT2theS4KCj4gCj4gQWxzbywgSSB3b25kZXIgaWYgd2UgbmVlZCBhIHNl cGFyYXRlICJzZXRfdHJiZV9zdGF0ZSIuIENvdWxkIHdlIG5vdCBpbml0aWFsaXplIHRoZSBMSU1J VFIKPiBhdCBvbmUgZ28gPwoKVGhlcmUgYXJlIHNvbWUgbGltaXRhdGlvbnMgd2hpY2ggY291bGQg cHJldmVudCB0aGF0LgoKPiAKPiBpLmUsIGRvIHNvbWV0aGluZyBsaWtlIDoKPiAKPiBzZXRfdHJi ZV9saW1pdF9wb2ludGVyKGxpbWl0LCBtb2RlKSA/Cj4gCj4gd2hlcmUgaXQgc2V0cyBhbGwgdGhl IGZpZWxkcyBvZiBsaW1pdCBwb2ludGVyLiBBbHNvLCB5b3UgbWF5IHdhbnQgdG8gZG9jdW1lbnQg dGhlIG1vZGUgd2UKPiBjaG9vc2UgZm9yIFRSQkUuIGkuZSwgRklMTCBTVE9QIG1vZGUgZm9yIHVz IHRvIGNvbGxlY3QgdGhlIHRyYWNlLgoKU3VyZSwgd2lsbCBkb2N1bWVudCB0aGUgVFJCRSBtb2Rl IGJlaW5nIGNob29zZW4gaGVyZS4KCj4gCj4+Cj4+Cj4+Pgo+Pj4gSSB3b3VsZCByYXRoZXIgb3Bl biBjb2RlIHRoaXMgd2l0aCBhIHdyaXRlIG9mIDAgdG8gdHJic3IgaW4gdGhlIGNhbGxlci4KPj4+ Cj4+Pj4gK3sKPj4+PiArwqDCoMKgIHU2NCB0cmJzciA9IHJlYWRfc3lzcmVnX3MoU1lTX1RSQlNS X0VMMSk7Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgV0FSTl9PTihpc190cmJlX2VuYWJsZWQoKSk7Cj4+ Pj4gK8KgwqDCoCB0cmJzciAmPSB+VFJCU1JfSVJROwo+Pj4+ICvCoMKgwqAgdHJic3IgJj0gflRS QlNSX1RSRzsKPj4+PiArwqDCoMKgIHRyYnNyICY9IH5UUkJTUl9XUkFQOwo+Pj4+ICvCoMKgwqAg dHJic3IgJj0gfihUUkJTUl9FQ19NQVNLIDw8IFRSQlNSX0VDX1NISUZUKTsKPj4+PiArwqDCoMKg IHRyYnNyICY9IH4oVFJCU1JfQlNDX01BU0sgPDwgVFJCU1JfQlNDX1NISUZUKTsKPj4+PiArwqDC oMKgIHRyYnNyICY9IH4oVFJCU1JfRlNDX01BU0sgPDwgVFJCU1JfRlNDX1NISUZUKTsKPj4+Cj4+ PiBCU0MgYW5kIEZTQyBhcmUgdGhlIHNhbWUgZmllbGRzIHVuZGVyIE1TUywgd2l0aCB0aGVpciBt ZWFuaW5ncyBkZXRlcm1pbmVkIGJ5IHRoZSBFQyBmaWVsZC4KPj4KPj4gQ291bGQganVzdCBkcm9w IHRoZSBGU0MgcGFydCBpZiByZXF1aXJlZC4KPj4KPj4+Cj4+PiBDb3VsZCB3ZSBzaW1wbHkgd3Jp dGUgMCB0byB0aGUgcmVnaXN0ZXIgPwo+Pgo+PiBJIHdvdWxkIHJlYWxseSBsaWtlIHRvIGF2b2lk IHRoYXQuIFRoaXMgZnVuY3Rpb24gY2xlYXJseSBlbnVtZXJhdGVzIGFsbAo+PiBpbmRpdmlkdWFs IGJpdCBmaWVsZHMgYmVpbmcgY2xlYXJlZCBmb3IgcmVzZXR0aW5nIGFzIHdlbGwgYXMgcHJlcGFy aW5nCj4+IHRoZSBUUkJFIGZvciB0aGUgbmV4dCBwZXJmIHNlc3Npb24uIENvbnZlcnRpbmcgdGhp cyBpbnRvIGEgMCB3cml0ZSBmb3IKPj4gU1lTX1RSQlNSX0VMMSBzb3VuZHMgZXhjZXNzaXZlIGFu ZCB0aGUgb25seSB0aGluZyBpdCB3b3VsZCBzYXZlIGlzIHRoZQo+PiByZWdpc3RlciByZWFkLgo+ IAo+Pgo+Pj4KPj4+PiArwqDCoMKgIHdyaXRlX3N5c3JlZ19zKHRyYnNyLCBTWVNfVFJCU1JfRUwx KTsKPj4+PiArfQo+Pj4+ICsKPj4+PiArc3RhdGljIHZvaWQgc2V0X3RyYmVfc3RhdGUodm9pZCkK Pj4+PiArewo+Pj4+ICvCoMKgwqAgdTY0IHRyYmxpbWl0ciA9IHJlYWRfc3lzcmVnX3MoU1lTX1RS QkxJTUlUUl9FTDEpOwo+Pj4+ICsKPj4+PiArwqDCoMKgIHRyYmxpbWl0ciAmPSB+VFJCTElNSVRS X05WTTsKPj4+PiArwqDCoMKgIHRyYmxpbWl0ciAmPSB+KFRSQkxJTUlUUl9GSUxMX01PREVfTUFT SyA8PCBUUkJMSU1JVFJfRklMTF9NT0RFX1NISUZUKTsKPj4+PiArwqDCoMKgIHRyYmxpbWl0ciAm PSB+KFRSQkxJTUlUUl9UUklHX01PREVfTUFTSyA8PCBUUkJMSU1JVFJfVFJJR19NT0RFX1NISUZU KTsKPj4+PiArwqDCoMKgIHRyYmxpbWl0ciB8PSAoVFJCRV9GSUxMX1NUT1AgJiBUUkJMSU1JVFJf RklMTF9NT0RFX01BU0spIDw8IFRSQkxJTUlUUl9GSUxMX01PREVfU0hJRlQ7Cj4+Pj4gK8KgwqDC oCB0cmJsaW1pdHIgfD0gKFRSQkVfVFJJR0dFUl9JR05PUkUgJiBUUkJMSU1JVFJfVFJJR19NT0RF X01BU0spIDw8IFRSQkxJTUlUUl9UUklHX01PREVfU0hJRlQ7Cj4+Pj4gK8KgwqDCoCB3cml0ZV9z eXNyZWdfcyh0cmJsaW1pdHIsIFNZU19UUkJMSU1JVFJfRUwxKTsKPj4+Cj4+PiBEbyB3ZSBuZWVk IHRvIHJlYWQtY29weS11cGRhdGUgaGVyZSA/IENvdWxkIHdlIHNpbXBseSB3cml0ZSAwID8KPj4+ IFNhbWUgYXMgYWJvdmUgY29tbWVudCwgY291bGQgd2Ugbm90IHNpbXBseSBvcGVuY29kZSBpdCBh dCB0aGUgY2FsbGVyID8KPj4+IENsZWFybHkgdGhlIG5hbWVzIGRvbid0IGhlbHAuCj4+Cj4+IFdp bGwgY2hhbmdlIHRoZSBuYW1lcyBhcyBwcm9wb3NlZCBvciBzb21ldGhpbmcgYmV0dGVyLiBCdXQg bGV0cyBsZWF2ZQo+PiB0aGVzZSBmdW5jdGlvbnMgYXMgaXMuIEJlc2lkZXMgVFJCRV9UUklHR0VS X0lHTk9SRSBhbHNvIGhhcyBhIHBvc2l0aXZlCj4+IHZhbHVlIChpLmUgMyksIHdyaXRpbmcgYWxs IDBzIGludG8gU1lTX1RSQkxJTUlUUl9FTDEgd2lsbCBub3QgYmUgaWRlYWwuCj4+Cj4gCj4gVGhl IHBvaW50IGlzLCB3ZSBkb24ndCBuZWVkIHRvIHByZXNlcnZlIHRoZSB2YWx1ZXMgZm9yIExJTUlU Ui4gQWxzbyBzZWUgbXkgY29tbWVudAo+IGFib3ZlLCBmb3IgZm9sZGluZyB0aGlzIHRvIHNldF90 cmJlX2xpbWl0X3BvaW50ZXIoKS4gSW4gYW55IGNhc2UsIEkgZG9uJ3QgdGhpbmsKPiB3ZSBzaG91 bGQgcmVseSBvbiB0aGUgdmFsdWVzIG9mIGZpZWxkcyB3ZSBjaGFuZ2UuIFNvIGl0IGlzIHNhZmVy IGFuZCBjbGVhbmVyIHRvCj4gc2V0IHNldCBhbGwgdGhlIGJpdHMgZm9yIExJTUlUUiwgaW5jbHVk aW5nIHRoZSBMSU1JVCBhZGRyZXNzIGluIG9uZSBnbywgd2l0aG91dAo+IHJlYWR5LWNvcHktdXBk YXRlLgoKVFJCRSBuZWVkcyB0byBiZSBkaXNhYmxlZCAod2hpY2ggaXMgYWxzbyBpbiB0aGUgTElN SVQgcmVnaXN0ZXIpIGJlZm9yZSB3ZSBjYW4gdXBkYXRlCmFueSBvdGhlciBmaWVsZHMgaW4gdGhl IExJTUlUIHJlZ2lzdGVyLiBTbyB0aGVyZSBpcyBhbHJlYWR5IGFuIG9yZGVyIGRlcGVuZGVuY3kg aGVyZS4KTG9va2luZyBhdCB0aGUgZnVuY3Rpb24gdHJiZV9lbmFibGVfaHcoKSwgaXQgZm9sbG93 cyBzb21ldGhpbmcgbGlrZQoKMS4gQ2xlYXIgYW5kIHNldCB0aGUgVFJCRSBtb2RlCS0gZm9sbG93 ZWQgYnkgYW4gaXNiKCkKMi4gVXBkYXRlIHRoZSBUUkJFIHBvaW50ZXJzCS0gZm9sbG93ZWQgYnkg YW4gaXNiKCkKMy4gU2V0IGl0IHJvbGxpbmcJCS0gZm9sbG93ZWQgYnkgVFNCX0NTWU5DCgpzdGF0 aWMgdm9pZCB0cmJlX2VuYWJsZV9odyhzdHJ1Y3QgdHJiZV9idWYgKmJ1ZikKewoKCVtTb2Z0d2Fy ZSBjaGVja3NdCiAgICAgICAgV0FSTl9PTihidWYtPnRyYmVfd3JpdGUgPCBidWYtPnRyYmVfYmFz ZSk7CiAgICAgICAgV0FSTl9PTihidWYtPnRyYmVfd3JpdGUgPj0gYnVmLT50cmJlX2xpbWl0KTsK CglbRGlzYWJsZSBUUkJFIGluIHRoZSBsaW1pdCByZWdpc3Rlcl0KICAgICAgICBzZXRfdHJiZV9k aXNhYmxlZCgpOwoKCVtDbGVhcnMgVFJCRSBzdGF0dXMgcmVnaXN0ZXJdCiAgICAgICAgdHJiZV9y ZXNldF9wZXJmX3N0YXRlKCk7CgoJW0NvbmZpZ3VyZXMgVFJCRSBtb2RlIGluIHRoZSBsaW1pdCBy ZWdpc3Rlcl0KICAgICAgICB0cmJlX3ByZXBhcmVfcGVyZl9zdGF0ZSgpOwoKICAgICAgICBpc2Io KTsKCglbVXBkYXRlIGFsbCByZXF1aXJlZCBwb2ludGVyc10KICAgICAgICBzZXRfdHJiZV9iYXNl X3BvaW50ZXIoYnVmLT50cmJlX2Jhc2UpOwogICAgICAgIHNldF90cmJlX2xpbWl0X3BvaW50ZXIo YnVmLT50cmJlX2xpbWl0KTsKICAgICAgICBzZXRfdHJiZV93cml0ZV9wb2ludGVyKGJ1Zi0+dHJi ZV93cml0ZSk7CiAgICAgICAgaXNiKCk7CgoJW1NldCBpdCByb2xsaW5nXQoKCVtVcGRhdGUgVFJC RSBzdGF0dXMgcmVnaXN0ZXIgc3RvcCBiaXRdCiAgICAgICAgc2V0X3RyYmVfcnVubmluZygpOwoK CVtVcGRhdGUgVFJCRSBsaW1pdCByZWdpc3RlciBlbmFibGUgYml0XQogICAgICAgIHNldF90cmJl X2VuYWJsZWQoKTsKICAgICAgICBzZXRfdHJiZV9mbHVzaCgpOwp9CgpzZXRfdHJiZV9kaXNhYmxl ZCgpIHNob3VsZCBiZSBjYWxsZWQgYmVmb3JlIHRyYmVfcmVzZXRfcGVyZl9zdGF0ZSgpIGFzIFRS QkUKbmVlZHMgdG8gYmUgc3RvcHBlZCBjb21wbGV0ZWx5IGJlZm9yZSBjbGVhcmluZyB0aGUgVFJC RSBzdGF0dXMgcmVnaXN0ZXIuCkhlbmNlIHNldF90cmJlX2Rpc2FibGVkKCkgY2Fubm90IGJlIG1v dmVkIGluc2lkZSB0cmJlX3ByZXBhcmVfcGVyZl9zdGF0ZSgpLgoKc2V0X3RyYmVfZW5hYmxlZCgp IGFsc28gY2Fubm90IGJlIGNhbGxlZCBiZWZvcmUgY29uZmlndXJpbmcgdGhlIFRSQkUgbW9kZQph bmQgdXBkYXRpbmcgYWxsIG90aGVyIHJlcXVpcmVkIHBvaW50ZXJzLiBTbyBzZXRfdHJiZV9lbmFi bGVkKCkgY2Fubm90IGJlCm1vdmVkIGluc2lkZSB0cmJlX3ByZXBhcmVfcGVyZl9zdGF0ZSgpLgoK VGhlIFRSQkUgbGltaXQgcmVnaXN0ZXIgbmVlZHMgdG8gYmUgd3JpdHRlbiBpbnRvIGluIGRpZmZl cmVudCBiYXRjaGVzIGV2ZW4KdGhvdWdoIHRoZSB1bmNoYW5nZWQgZmllbGRzIG5lZWQgbm90IGJl IHByZXNlcnZlZC4KCkJlc2lkZXMsIGZ1bmN0aW9uIG5hbWVzIGNvdWxkIGJlIGNoYW5nZWQgYXMg Zm9sbG93cyBhbmQgZG9jdW1lbnQgdGhlIG1vZGUKc2VsZWN0aW9uLgoKcy90cmJlX3Jlc2V0X3Bl cmZfc3RhdGUvY2xyX3RyYmVfc3RhdHVzLwpzL3RyYmVfcHJlcGFyZV9wZXJmX3N0YXRlL3NldF90 cmJlX21vZGUvCgpzZXRfdHJiZV9tb2RlKCkgbWlnaHQgYWxzbyB0YWtlIHRoZSBmaWxsIG1vZGUg YW5kIHRyaWdnZXIgbW9kZSBhcyBhcmd1bWVudHMuClRyaWdnZXIgbW9kZSBuZWVkcyB0byBiZSBz ZXQgY29ycmVjdGx5IGkuZSBUUkJFX1RSSUdHRVJfSUdOT1JFLgoKPiAKPiAKPj4+Cj4+Pj4gK30K Pj4+PiArCj4+Pj4gK3N0YXRpYyB2b2lkIHRyYmVfZW5hYmxlX2h3KHN0cnVjdCB0cmJlX2J1ZiAq YnVmKQo+Pj4+ICt7Cj4+Pj4gK8KgwqDCoCBXQVJOX09OKGJ1Zi0+dHJiZV93cml0ZSA8IGJ1Zi0+ dHJiZV9iYXNlKTsKPj4+PiArwqDCoMKgIFdBUk5fT04oYnVmLT50cmJlX3dyaXRlID49IGJ1Zi0+ dHJiZV9saW1pdCk7Cj4+Pj4gK8KgwqDCoCBzZXRfdHJiZV9kaXNhYmxlZCgpOwo+Pj4+ICvCoMKg wqAgY2xlYXJfdHJiZV9zdGF0ZSgpOwo+Pj4+ICvCoMKgwqAgc2V0X3RyYmVfc3RhdGUoKTsKPj4+ PiArwqDCoMKgIGlzYigpOwo+Pj4+ICvCoMKgwqAgc2V0X3RyYmVfYmFzZV9wb2ludGVyKGJ1Zi0+ dHJiZV9iYXNlKTsKPj4+PiArwqDCoMKgIHNldF90cmJlX2xpbWl0X3BvaW50ZXIoYnVmLT50cmJl X2xpbWl0KTsKPj4+PiArwqDCoMKgIHNldF90cmJlX3dyaXRlX3BvaW50ZXIoYnVmLT50cmJlX3dy aXRlKTsKPj4+Cj4+PiBXaGVyZSBkbyB3ZSBzZXQgdGhlIGZpbGwgbW9kZSA/Cj4+Cj4+IFRSQkVf RklMTF9TVE9QIGhhcyBhbHJlYWR5IGJlZW4gY29uZmlndXJlZCBpbiBzZXRfdHJiZV9zdGF0ZSgp Lgo+Pgo+IAo+IEFzIG1lbnRpb25lZCBhYm92ZSwgdGhpcyBuZWVkcyB0byBiZSBkb2N1bWVudGVk LiBJdCBpcyBub3QgZXZpZGVudAo+IGZvciBzb21lb25lIHdobyBpcyBsb29raW5nIGF0IHRoZSBj b2RlLiBlLmcsIEkgdGhvdWdodCB0aGUgc2V0X3RyYmVfc3RhdGUoKQo+IHdhcyBzaW1wbHkgc3Rv cHBpbmcgdGhlIFRSQkUuCj4gCj4gQWxzbywgbG9va2luZyBhdCB0aGUgc3BlYywgSSBmaW5kIHRo ZSBuYW1lcyBvZiB0aGUgZmlsbCBtb2RlcyBjb25mdXNpbmcuCj4gVGhlIG1vZGVzIGFyZSBGSUxM LCBXUkFQIGFuZCBDSVJDVUxBUiBCVUZGRVIuIFN0b3AgaXMganVzdCB0aGUgYmVoYXZpb3IKPiBv ZiBGSUxMLiBTbywgcGxlYXNlIGRvIG5vdCB1c2UgU1RPUCBmb3IgdGhlIG1vZGUgbmFtZS4KPiAK PiBBbHNvLCBwbGVhc2UgcmVuYW1lIHRoZSBtb2RlIHN5bWJvbHMgdG8gOgo+IAo+IFRSQkVfRklM TF9NT0RFX0ZJTEwKPiBUUkJFX0ZJTExfTU9ERV9XUkFQCj4gVFJCRV9GSUxMX01PREVfQ0lSQ1VM QVJfQlVGRkVSCj4gCj4gdG8gYWxpZ24gd2l0aCB0aGUgc3BlYy4KCk9rYXksIHdpbGwgY2hhbmdl IHRoZXNlIGFuZCBwb3NzaWJseSB0aGUgdHJpZ2dlciBtb2RlcyBhcyB3ZWxsLgoKPiAKPj4+Cj4+ Pj4gK8KgwqDCoCBpc2IoKTsKPj4+PiArwqDCoMKgIHNldF90cmJlX3J1bm5pbmcoKTsKPj4+PiAr wqDCoMKgIHNldF90cmJlX2VuYWJsZWQoKTsKPj4+PiArwqDCoMKgIHNldF90cmJlX2ZsdXNoKCk7 Cj4+Pj4gK30KPj4+PiArCj4gCj4gCj4+Pj4gKwo+Pj4+ICtzdGF0aWMgaW50IGFybV90cmJlX2Nw dV9zdGFydHVwKHVuc2lnbmVkIGludCBjcHUsIHN0cnVjdCBobGlzdF9ub2RlICpub2RlKQo+Pj4+ ICt7Cj4+Pj4gK8KgwqDCoCBzdHJ1Y3QgdHJiZV9kcnZkYXRhICpkcnZkYXRhID0gaGxpc3RfZW50 cnlfc2FmZShub2RlLCBzdHJ1Y3QgdHJiZV9kcnZkYXRhLCBob3RwbHVnX25vZGUpOwo+Pj4+ICsK Pj4+PiArwqDCoMKgIGlmIChjcHVtYXNrX3Rlc3RfY3B1KGNwdSwgJmRydmRhdGEtPnN1cHBvcnRl ZF9jcHVzKSkgewo+Pj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoIXBlcl9jcHUoY3NkZXZfc2luaywg Y3B1KSAmJiAoc3lzdGVtX3N0YXRlID09IFNZU1RFTV9SVU5OSU5HKSkgewo+Pj4KPj4+IFdoeSBp cyB0aGUgc3lzdGVtX3N0YXRlIGNoZWNrIHJlbGV2YW50IGhlcmUgPwo+Pgo+PiBJIGhhZCBhIGNv bmNlcm4gcmVnYXJkaW5nIHdoZXRoZXIgYXJtX3RyYmVfcHJvYmVfY29yZXNpZ2h0X2NwdSgpIGlu dm9jYXRpb25zCj4+IGZyb20gYXJtX3RyYmVfY3B1X3N0YXJ0dXAoKSBtaWdodCByYWNlIHdpdGgg aXRzIGludm9jYXRpb25zIGR1cmluZyBib290IGZyb20KPj4gYXJtX3RyYmVfZGV2aWNlX3Byb2Jl KCkuIENoZWNraW5nIGZvciBydW50aW1lIHN5c3RlbV9zdGF0ZSB3b3VsZCBlbnN1cmUgdGhhdAo+ PiBhIGNvbXBsZXRlIFRSQkUgcHJvYmUgb24gYSBnaXZlbiBjcHUgaXMgY2FsbGVkIG9ubHkgYWZ0 ZXIgdGhlIGJvb3QgaXMgY29tcGxldGUuCj4+IEJ1dCBpZiB0aGUgcmFjZSBjb25kaXRpb24gaXMg cmVhbGx5IG5ldmVyIHBvc3NpYmxlLCBjYW4ganVzdCBkcm9wIHRoaXMgY2hlY2suCj4gCj4gSSBk b24ndCB0aGluayB0aGV5IHNob3VsZC4KPiAKPiBTdXp1a2kKPiAKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBs aXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5m cmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK