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 98B38EB64DD for ; Thu, 17 Aug 2023 09:58:13 +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:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To: 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=2SdLIiJ5hVCC17nrVBcdjtzkQA0f5SterlGL/rPuaUU=; b=fVb8AZ0e/tHmWS vV9eHDUGDPWYfEY8mrGXVEek3LSQhop4PechPenvw2YxXwySKFL05MNRWf1bU2O8FHOqMZvpfeN/7 MHen1/hHN7B42OzUap5jHUEFNMlHVXbVpafUDFqaiEP0Hyb3rQi3xdvYnHQazbo0/TQ8DRlIfgkPU MH5XgXJmB5g8CmjYrI/8+2NF+5GROuEEKxQfuLTCWNjIBqpDWOS2/iX4MnjYqj2GenlmMVALzDEq/ MbGedry83Zwq9/l62bKpF2v4UACQh38cAFupnBmZvUISW7FOjhMGugBJCwEXZ++dF4DrFgFHhEKjz 5+54ac1cKPuHezCMZe/A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qWZlH-005zS6-13; Thu, 17 Aug 2023 09:57:51 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qWZlD-005zRg-1t for linux-arm-kernel@lists.infradead.org; Thu, 17 Aug 2023 09:57:49 +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 53B92D75; Thu, 17 Aug 2023 02:58:25 -0700 (PDT) Received: from [10.57.3.248] (unknown [10.57.3.248]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id ECCA03F64C; Thu, 17 Aug 2023 02:57:42 -0700 (PDT) Message-ID: <5f7e6321-5d19-e11e-2fc4-cda2d6cc6ffe@arm.com> Date: Thu, 17 Aug 2023 10:57:41 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.9.0 Subject: Re: [PATCH v2 1/2] coresight: trbe: Fix TRBE potential sleep in atomic context Content-Language: en-US To: hejunhao , Anshuman Khandual , Suzuki K Poulose Cc: coresight@lists.linaro.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, jonathan.cameron@huawei.com, mike.leach@linaro.org, linuxarm@huawei.com, yangyicong@huawei.com, prime.zeng@hisilicon.com References: <20230814093813.19152-1-hejunhao3@huawei.com> <20230816141008.535450-1-suzuki.poulose@arm.com> <80ef7a87-6adf-27bc-43ae-05ae5680e418@arm.com> <308c70c7-c8db-158a-d9ad-bcc1f0db77b9@huawei.com> From: James Clark In-Reply-To: <308c70c7-c8db-158a-d9ad-bcc1f0db77b9@huawei.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230817_025747_741340_A0A4A9C2 X-CRM114-Status: GOOD ( 31.63 ) 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-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 CgpPbiAxNy8wOC8yMDIzIDA5OjQxLCBoZWp1bmhhbyB3cm90ZToKPiBIaSBBbnNodW1hbiBLaGFu ZHVhbCwKPiAKPiAKPiBPbiAyMDIzLzgvMTcgMTU6MTMsIEFuc2h1bWFuIEtoYW5kdWFsIHdyb3Rl Ogo+PiBIZWxsbyBKdW5oYW8sCj4+Cj4+IE9uIDgvMTYvMjMgMTk6NDAsIFN1enVraSBLIFBvdWxv c2Ugd3JvdGU6Cj4+PiBGcm9tOiBKdW5oYW8gSGUgPGhlanVuaGFvM0BodWF3ZWkuY29tPgo+Pj4K Pj4+IHNtcF9jYWxsX2Z1bmN0aW9uX3NpbmdsZSgpIHdpbGwgYWxsb2NhdGUgYW4gSVBJIGludGVy cnVwdCB2ZWN0b3IgdG8KPj4+IHRoZSB0YXJnZXQgcHJvY2Vzc29yIGFuZCBzZW5kIGEgZnVuY3Rp b24gY2FsbCByZXF1ZXN0IHRvIHRoZSBpbnRlcnJ1cHQKPj4+IHZlY3Rvci4gQWZ0ZXIgdGhlIHRh cmdldCBwcm9jZXNzb3IgcmVjZWl2ZXMgdGhlIElQSSBpbnRlcnJ1cHQsIGl0IHdpbGwKPj4+IGV4 ZWN1dGUgYXJtX3RyYmVfcmVtb3ZlX2NvcmVzaWdodF9jcHUoKSBjYWxsIHJlcXVlc3QgaW4gdGhl IGludGVycnVwdAo+Pj4gaGFuZGxlci4KPj4+Cj4+PiBBY2NvcmRpbmcgdG8gdGhlIGRldmljZV91 bnJlZ2lzdGVyKCkgc3RhY2sgaW5mb3JtYXRpb24sIGlmIG90aGVyIHByb2Nlc3MKPj4+IGlzIHVz ZWluZyB0aGUgZGV2aWNlLCB0aGUgZG93bl93cml0ZSgpIG1heSBzbGVlcCwgYW5kIHRyaWdnZXIg ZGVhZGxvY2tzCj4+PiBvciB1bmV4cGVjdGVkIGVycm9ycy4KPj4+Cj4+PiDCoMKgIGFybV90cmJl X3JlbW92ZV9jb3Jlc2lnaHRfY3B1Cj4+PiDCoMKgwqDCoCBjb3Jlc2lnaHRfdW5yZWdpc3Rlcgo+ Pj4gwqDCoMKgwqDCoMKgIGRldmljZV91bnJlZ2lzdGVyCj4+PiDCoMKgwqDCoMKgwqDCoMKgIGRl dmljZV9kZWwKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgIGtvYmplY3RfZGVsCj4+PiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgX19rb2JqZWN0X2RlbAo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBzeXNmc19yZW1vdmVfZGlyCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBrZXJuZnNfcmVtb3ZlCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgZG93bl93cml0ZSAtLS0tLS0tLS0+IGl0IG1heSBzbGVlcAo+PiBCdXQgaG93IGRpZCB5b3Ug cmVhbGx5IGRldGVjdCB0aGlzIHByb2JsZW0gPyBEb2VzIHRoaXMgc2hvdyB1cCBhcyBhbgo+PiB3 YXJuaW5nIHdoZW4KPj4geW91IGVuYWJsZSBsb2NrZGVwIGRlYnVnID8gT1IgaXQgcmVhbGx5IGhh cHBlbmVkIGR1cmluZyBhIHJlYWwKPj4gd29ya2xvYWQgZXhlY3V0aW9uCj4+IGZvbGxvd2VkIGJ5 IFRSQkUgbW9kdWxlIHVubG9hZC4gQWx0aG91Z2ggdGhlIHByb2JsZW0gc2VlbXMgcGxhdXNpYmxl Cj4+ICh3aGljaCBuZWVkcwo+PiBmaXhpbmcpLCBqdXN0IHdvbmRlcmluZyBob3cgZGlkIHdlIHRy aWdnZXIgdGhpcy4KPiAKPiBZZXMsIGl0IHJlYWxseSBoYXBwZW5lZCBkdXJpbmcgYSByZWFsIHdv cmtsb2FkLgo+IAo+IElmIHRoZSBUUkJFIGRyaXZlciBpcyBsb2FkZWQgYW5kIHVubG9hZGVkIGN5 Y2xpY2FsbHkuIHRoZSB0ZXN0IHNjcmlwdAo+IGZvbGxvd2luZzoKPiAKPiDCoCBmb3IgKChpPTA7 aTw5OTk5OTtpKyspKQo+IMKgIGRvCj4gwqAgaW5zbW9kIGNvcmVzaWdodC10cmJlLmtvOwo+IMKg IHJtbW9kIGNvcmVzaWdodC10cmJlLmtvOwo+IMKgIGVjaG8gImxvb3AgJGkiOwo+IMKgIGRvbmUK PiAKPiBUaGUga2VybmVsIHdpbGwgcmVwb3J0IGEgcGFuaWMuCj4gCgpJIHdvbmRlciBob3cgZWFz eSBpdCB3b3VsZCBiZSB0byBhZGQgYSBrc2VsZnRlc3QgdG8gZG8gdGhpcyB3aXRoIGFsbCBvZgp0 aGUgQ29yZXNpZ2h0IG1vZHVsZXMuIEJlY2F1c2Ugd2UgYWxzbyBoYWQgYSBwcm9ibGVtIHdpdGgg YmFkIHJlZmVyZW5jZQpjb3VudGluZyBwcmV2ZW50aW5nIGFuIHVubG9hZCBvZiB0aGUgQ1RJIG1v ZHVsZS4gQWx0aG91Z2ggdGhhdCBkaWQKcmVxdWlyZSBzdGFydGluZyBhIHBlcmYgc2Vzc2lvbiwg d2hpY2ggbWlnaHQgY29tcGxpY2F0ZWQgdGhlIHRlc3QuCgo+Pj4gQWRkIGEgaGVscGVyIGFybV90 cmJlX2Rpc2FibGVfY3B1KCkgdG8gZGlzYWJsZSBUUkJFIHByZWNwdSBpcnEgYW5kIHJlc2V0Cj4+ PiBwZXIgVFJCRS4KPj4+IFNpbXBseSBjYWxsIGFybV90cmJlX3JlbW92ZV9jb3Jlc2lnaHRfY3B1 KCkgZGlyZWN0bHkgd2l0aG91dCB1c2VpbmcgdGhlCj4+PiBzbXBfY2FsbF9mdW5jdGlvbl9zaW5n bGUoKSwgd2hpY2ggaXMgdGhlIHNhbWUgYXMgcmVnaXN0ZXJpbmcgdGhlIFRSQkUKPj4+IGNvcmVz aWdodCBkZXZpY2UuCj4+Pgo+Pj4gRml4ZXM6IDNmYmY3ZjAxMWYyNCAoImNvcmVzaWdodDogc2lu azogQWRkIFRSQkUgZHJpdmVyIikKPj4+IFNpZ25lZC1vZmYtYnk6IEp1bmhhbyBIZSA8aGVqdW5o YW8zQGh1YXdlaS5jb20+Cj4+PiBMaW5rOgo+Pj4gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvci8y MDIzMDgxNDA5MzgxMy4xOTE1Mi0yLWhlanVuaGFvM0BodWF3ZWkuY29tCj4+PiBbIFJlbW92ZSBk dXBsaWNhdGUgY3B1bWFzayBjaGVja3MgZHVyaW5nIHJlbW92YWwgXQo+Pj4gU2lnbmVkLW9mZi1i eTogU3V6dWtpIEsgUG91bG9zZSA8c3V6dWtpLnBvdWxvc2VAYXJtLmNvbT4KPj4+IC0tLQo+Pj4g wqAgZHJpdmVycy9od3RyYWNpbmcvY29yZXNpZ2h0L2NvcmVzaWdodC10cmJlLmMgfCAzMyArKysr KysrKysrKy0tLS0tLS0tLQo+Pj4gwqAgMSBmaWxlIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyks IDE1IGRlbGV0aW9ucygtKQo+Pj4KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2h3dHJhY2luZy9j b3Jlc2lnaHQvY29yZXNpZ2h0LXRyYmUuYwo+Pj4gYi9kcml2ZXJzL2h3dHJhY2luZy9jb3Jlc2ln aHQvY29yZXNpZ2h0LXRyYmUuYwo+Pj4gaW5kZXggNzcyMDYxOTkwOWQ2Li4wMjVmNzBhZGVlNDcg MTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2h3dHJhY2luZy9jb3Jlc2lnaHQvY29yZXNpZ2h0LXRy YmUuYwo+Pj4gKysrIGIvZHJpdmVycy9od3RyYWNpbmcvY29yZXNpZ2h0L2NvcmVzaWdodC10cmJl LmMKPj4+IEBAIC0xMjI1LDYgKzEyMjUsMTcgQEAgc3RhdGljIHZvaWQgYXJtX3RyYmVfZW5hYmxl X2NwdSh2b2lkICppbmZvKQo+Pj4gwqDCoMKgwqDCoCBlbmFibGVfcGVyY3B1X2lycShkcnZkYXRh LT5pcnEsIElSUV9UWVBFX05PTkUpOwo+Pj4gwqAgfQo+Pj4gwqAgK3N0YXRpYyB2b2lkIGFybV90 cmJlX2Rpc2FibGVfY3B1KHZvaWQgKmluZm8pCj4+PiArewo+Pj4gK8KgwqDCoCBzdHJ1Y3QgdHJi ZV9kcnZkYXRhICpkcnZkYXRhID0gaW5mbzsKPj4+ICvCoMKgwqAgc3RydWN0IHRyYmVfY3B1ZGF0 YSAqY3B1ZGF0YSA9IHRoaXNfY3B1X3B0cihkcnZkYXRhLT5jcHVkYXRhKTsKPj4+ICsKPj4+ICvC oMKgwqAgZGlzYWJsZV9wZXJjcHVfaXJxKGRydmRhdGEtPmlycSk7Cj4+PiArwqDCoMKgIHRyYmVf cmVzZXRfbG9jYWwoY3B1ZGF0YSk7Cj4+PiArwqDCoMKgIGNwdWRhdGEtPmRydmRhdGEgPSBOVUxM Owo+Pj4gK30KPj4+ICsKPj4+ICsKPj4+IMKgIHN0YXRpYyB2b2lkIGFybV90cmJlX3JlZ2lzdGVy X2NvcmVzaWdodF9jcHUoc3RydWN0IHRyYmVfZHJ2ZGF0YQo+Pj4gKmRydmRhdGEsIGludCBjcHUp Cj4+PiDCoCB7Cj4+PiDCoMKgwqDCoMKgIHN0cnVjdCB0cmJlX2NwdWRhdGEgKmNwdWRhdGEgPSBw ZXJfY3B1X3B0cihkcnZkYXRhLT5jcHVkYXRhLCBjcHUpOwo+Pj4gQEAgLTEzMjYsMTggKzEzMzcs MTIgQEAgc3RhdGljIHZvaWQgYXJtX3RyYmVfcHJvYmVfY3B1KHZvaWQgKmluZm8pCj4+PiDCoMKg wqDCoMKgIGNwdW1hc2tfY2xlYXJfY3B1KGNwdSwgJmRydmRhdGEtPnN1cHBvcnRlZF9jcHVzKTsK Pj4+IMKgIH0KPj4+IMKgIC1zdGF0aWMgdm9pZCBhcm1fdHJiZV9yZW1vdmVfY29yZXNpZ2h0X2Nw dSh2b2lkICppbmZvKQo+Pj4gK3N0YXRpYyB2b2lkIGFybV90cmJlX3JlbW92ZV9jb3Jlc2lnaHRf Y3B1KHN0cnVjdCB0cmJlX2RydmRhdGEKPj4+ICpkcnZkYXRhLCBpbnQgY3B1KQo+Pj4gwqAgewo+ Pj4gLcKgwqDCoCBpbnQgY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpOwo+Pj4gLcKgwqDCoCBzdHJ1 Y3QgdHJiZV9kcnZkYXRhICpkcnZkYXRhID0gaW5mbzsKPj4+IC3CoMKgwqAgc3RydWN0IHRyYmVf Y3B1ZGF0YSAqY3B1ZGF0YSA9IHBlcl9jcHVfcHRyKGRydmRhdGEtPmNwdWRhdGEsIGNwdSk7Cj4+ PiDCoMKgwqDCoMKgIHN0cnVjdCBjb3Jlc2lnaHRfZGV2aWNlICp0cmJlX2NzZGV2ID0KPj4+IGNv cmVzaWdodF9nZXRfcGVyY3B1X3NpbmsoY3B1KTsKPj4+IMKgIC3CoMKgwqAgZGlzYWJsZV9wZXJj cHVfaXJxKGRydmRhdGEtPmlycSk7Cj4+PiAtwqDCoMKgIHRyYmVfcmVzZXRfbG9jYWwoY3B1ZGF0 YSk7Cj4+PiDCoMKgwqDCoMKgIGlmICh0cmJlX2NzZGV2KSB7Cj4+PiDCoMKgwqDCoMKgwqDCoMKg wqAgY29yZXNpZ2h0X3VucmVnaXN0ZXIodHJiZV9jc2Rldik7Cj4+PiAtwqDCoMKgwqDCoMKgwqAg Y3B1ZGF0YS0+ZHJ2ZGF0YSA9IE5VTEw7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgY29yZXNpZ2h0 X3NldF9wZXJjcHVfc2luayhjcHUsIE5VTEwpOwo+Pj4gwqDCoMKgwqDCoCB9Cj4+PiDCoCB9Cj4+ PiBAQCAtMTM2Niw4ICsxMzcxLDEwIEBAIHN0YXRpYyBpbnQgYXJtX3RyYmVfcmVtb3ZlX2NvcmVz aWdodChzdHJ1Y3QKPj4+IHRyYmVfZHJ2ZGF0YSAqZHJ2ZGF0YSkKPj4+IMKgIHsKPj4+IMKgwqDC oMKgwqAgaW50IGNwdTsKPj4+IMKgIC3CoMKgwqAgZm9yX2VhY2hfY3B1KGNwdSwgJmRydmRhdGEt PnN1cHBvcnRlZF9jcHVzKQo+Pj4gLcKgwqDCoMKgwqDCoMKgIHNtcF9jYWxsX2Z1bmN0aW9uX3Np bmdsZShjcHUsIGFybV90cmJlX3JlbW92ZV9jb3Jlc2lnaHRfY3B1LAo+Pj4gZHJ2ZGF0YSwgMSk7 Cj4+PiArwqDCoMKgIGZvcl9lYWNoX2NwdShjcHUsICZkcnZkYXRhLT5zdXBwb3J0ZWRfY3B1cykg ewo+Pj4gK8KgwqDCoMKgwqDCoMKgIHNtcF9jYWxsX2Z1bmN0aW9uX3NpbmdsZShjcHUsIGFybV90 cmJlX2Rpc2FibGVfY3B1LCBkcnZkYXRhLAo+Pj4gMSk7Cj4+PiArwqDCoMKgwqDCoMKgwqAgYXJt X3RyYmVfcmVtb3ZlX2NvcmVzaWdodF9jcHUoZHJ2ZGF0YSwgY3B1KTsKPj4+ICvCoMKgwqAgfQo+ Pj4gwqDCoMKgwqDCoCBmcmVlX3BlcmNwdShkcnZkYXRhLT5jcHVkYXRhKTsKPj4+IMKgwqDCoMKg wqAgcmV0dXJuIDA7Cj4+PiDCoCB9Cj4+PiBAQCAtMTQwNiwxMiArMTQxMyw4IEBAIHN0YXRpYyBp bnQgYXJtX3RyYmVfY3B1X3RlYXJkb3duKHVuc2lnbmVkIGludAo+Pj4gY3B1LCBzdHJ1Y3QgaGxp c3Rfbm9kZSAqbm9kZSkKPj4+IMKgIHsKPj4+IMKgwqDCoMKgwqAgc3RydWN0IHRyYmVfZHJ2ZGF0 YSAqZHJ2ZGF0YSA9IGhsaXN0X2VudHJ5X3NhZmUobm9kZSwgc3RydWN0Cj4+PiB0cmJlX2RydmRh dGEsIGhvdHBsdWdfbm9kZSk7Cj4+PiDCoCAtwqDCoMKgIGlmIChjcHVtYXNrX3Rlc3RfY3B1KGNw dSwgJmRydmRhdGEtPnN1cHBvcnRlZF9jcHVzKSkgewo+Pj4gLcKgwqDCoMKgwqDCoMKgIHN0cnVj dCB0cmJlX2NwdWRhdGEgKmNwdWRhdGEgPSBwZXJfY3B1X3B0cihkcnZkYXRhLT5jcHVkYXRhLAo+ Pj4gY3B1KTsKPj4+IC0KPj4+IC3CoMKgwqDCoMKgwqDCoCBkaXNhYmxlX3BlcmNwdV9pcnEoZHJ2 ZGF0YS0+aXJxKTsKPj4+IC3CoMKgwqDCoMKgwqDCoCB0cmJlX3Jlc2V0X2xvY2FsKGNwdWRhdGEp Owo+Pj4gLcKgwqDCoCB9Cj4+PiArwqDCoMKgIGlmIChjcHVtYXNrX3Rlc3RfY3B1KGNwdSwgJmRy dmRhdGEtPnN1cHBvcnRlZF9jcHVzKSkKPj4+ICvCoMKgwqDCoMKgwqDCoCBhcm1fdHJiZV9kaXNh YmxlX2NwdShkcnZkYXRhKTsKPj4gVGhpcyBjb2RlIGh1bmsgc2VlbXMgdW5yZWxhdGVkIHRvIHRo ZSBjb250ZXh0IGhlcmUgb3RoZXIgdGhhbiBqdXN0Cj4+IGZpbmRpbmcgYW5vdGhlciB1c2UgY2Fz ZQo+PiBmb3IgYXJtX3RyYmVfZGlzYWJsZV9jcHUoKS4gVGhlIHByb2JsZW0gaXMgLSBhcm1fdHJi ZV9kaXNhYmxlX2NwdSgpCj4+IHJlc2V0cyBjcHVkYXRhLT5kcnZkYXRhCj4+IHdoaWNoIG1pZ2h0 IG5vdCBnZXQgcmUtaW5pdGlhbGl6ZWQgYmFjayBpbiBhcm1fdHJiZV9jcHVfc3RhcnR1cCgpLCBh cwo+PiB0aGVyZSB3aWxsIHN0aWxsIGJlIGEKPj4gcGVyIGNwdSBzaW5rIGFzc29jaWF0ZWQgYXMg Y29uZmlybWVkIHdpdGggY29yZXNpZ2h0X2dldF9wZXJjcHVfc2luaygpLgo+PiBJIGd1ZXNzIGl0 IG1pZ2h0IGJlCj4+IGJldHRlciB0byBkcm9wIHRoaXMgY2hhbmdlIGFuZCBqdXN0IGtlZXAgZXZl cnl0aGluZyBsaW1pdGVkIHRvIFNNUCBJUEkKPj4gY2FsbGJhY2sgcmV3b3JraW5nIGluCj4+IGFy bV90cmJlX3JlbW92ZV9jb3Jlc2lnaHQoKS4KPiAKPiBPSywgd2lsbCBmaXggaXQuIFRoZSBjaGFu Z2UgaXMganVzdCB0byBzaW1wbGlmeSB0aGUgY29kZSBvZiBjcHVfdGVhcmRvd24uCj4gTWF5YmUg d2UgY2FuIGNvbnNpZGVyIHdoZXRoZXIgd2UgbmVlZCB0byBzZXQgImNwdWRhdGEtPmRydmRhdGEg PSBOVUxMIgo+IGluIGFybV90cmJlX2Rpc2FibGVfY3B1KCk/wqAgSWYgaXQncyBub3QgbmVjZXNz YXJ5LCBUaGlzIGNhbiBiZSBrZXB0Lgo+IFRoZW4gZHJvcCB0aGUgcmVsZWFzZSBjcHVkYXRhLT5k cnZkYXRhIGZyb20gYXJtX3RyYmVfZGlzYWJsZV9jcHUoKS4KPiAKPiBCZXN0IHJlZ2FyZHMsCj4g SnVuaGFvLgo+IAo+Pj4gwqDCoMKgwqDCoCByZXR1cm4gMDsKPj4+IMKgIH0KPj4+IMKgIAo+PiAu Cj4+Cj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K PiBDb3JlU2lnaHQgbWFpbGluZyBsaXN0IC0tIGNvcmVzaWdodEBsaXN0cy5saW5hcm8ub3JnCj4g VG8gdW5zdWJzY3JpYmUgc2VuZCBhbiBlbWFpbCB0byBjb3Jlc2lnaHQtbGVhdmVAbGlzdHMubGlu YXJvLm9yZwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K bGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZy YWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGlu dXgtYXJtLWtlcm5lbAo=