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=-4.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_PASS,URIBL_BLOCKED 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 23389C43387 for ; Mon, 24 Dec 2018 07:18:44 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id D009C2173B for ; Mon, 24 Dec 2018 07:18:43 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=synopsys.com header.i=@synopsys.com header.b="QGNtSUF4" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726765AbeLXHSm (ORCPT ); Mon, 24 Dec 2018 02:18:42 -0500 Received: from smtprelay4.synopsys.com ([198.182.47.9]:44608 "EHLO smtprelay.synopsys.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725927AbeLXHSm (ORCPT ); Mon, 24 Dec 2018 02:18:42 -0500 Received: from mailhost.synopsys.com (mailhost1.synopsys.com [10.12.238.239]) by smtprelay.synopsys.com (Postfix) with ESMTP id 9E7D824E242A; Sun, 23 Dec 2018 23:18:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=synopsys.com; s=mail; t=1545635921; bh=0huw/XRniSN/1u/8DADwlRhKafz6Ffg2P6Nygfq4EUI=; h=From:To:CC:Subject:Date:References:From; b=QGNtSUF4wDGt+PdJ52FOVa9Q6WNbP88Nn0kaNOt1/c8HRuB9d7Wge+U6aL6E5e67I ZjSuugijXJLgSMl7zWpTw3/TbF/BeIDsa6TOlVpfwdOEzJUvcs6cjeqJH6kMvSPJsd W8Fmg0DO3Bh6xFteyT0WAF9mc39r3XQJ3Y7iyQZPfBEAM7P3ymwgNuCWJlDZgea9uC JhcZ5XjlHkJEepELfGqxXFQR4WpsV9dBaeDU4nAAzSN2PQg584C0sJfCkSOfH0Fqzd FdCyJpLyekmcDh4PPLXOohxxW7kTUR2JbpK5FnqYWwpSdniBiQgI5N1OQWMdr1aVNc HG9aufeHj5hjg== Received: from US01WXQAHTC1.internal.synopsys.com (us01wxqahtc1.internal.synopsys.com [10.12.238.230]) by mailhost.synopsys.com (Postfix) with ESMTP id 63E6954A8; Sun, 23 Dec 2018 23:18:41 -0800 (PST) Received: from AM04WEHTCA.internal.synopsys.com (10.116.16.190) by US01WXQAHTC1.internal.synopsys.com (10.12.238.230) with Microsoft SMTP Server (TLS) id 14.3.408.0; Sun, 23 Dec 2018 23:18:40 -0800 Received: from AM04WEMBXA.internal.synopsys.com ([fe80::79c3:55f2:1f20:5bf4]) by am04wehtca.internal.synopsys.com ([::1]) with mapi id 14.03.0415.000; Mon, 24 Dec 2018 11:18:37 +0400 From: Minas Harutyunyan To: John Keeping , Minas Harutyunyan CC: Greg Kroah-Hartman , "linux-usb@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "arthur.petrosyan@synopsys.com" Subject: Re: [PATCH] usb: dwc2: gadget: fix ISOC frame overflow handling Thread-Topic: [PATCH] usb: dwc2: gadget: fix ISOC frame overflow handling Thread-Index: AQHUatZW7CBOg1jSlEOevZqXY6bG3Q== Date: Mon, 24 Dec 2018 07:18:36 +0000 Message-ID: <410670D7E743164D87FA6160E7907A56013A7C1D84@am04wembxa.internal.synopsys.com> References: <20181023134355.29829-1-john@metanate.com> <410670D7E743164D87FA6160E7907A56013A79E7CE@am04wembxa.internal.synopsys.com> <20181108173654.118f9e3e@donbot> <410670D7E743164D87FA6160E7907A56013A7A0F2B@am04wembxa.internal.synopsys.com> <410670D7E743164D87FA6160E7907A56013A7A12C1@am04wembxa.internal.synopsys.com> <20181109184246.33cb4487@donbot> <410670D7E743164D87FA6160E7907A56013A7A27D7@am04wembxa.internal.synopsys.com> <20181112224626.6b44568a@donbot> <410670D7E743164D87FA6160E7907A56013A7BAB28@am04wembxa.internal.synopsys.com> <20181218143504.027fc53c@donbot> <410670D7E743164D87FA6160E7907A56013A7BECBB@am04wembxa.internal.synopsys.com> <20181221160504.15e93827@donbot> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.116.70.132] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi John,=0A= =0A= On 12/21/2018 8:05 PM, John Keeping wrote:=0A= > Hi Minas,=0A= > =0A= > On Wed, 19 Dec 2018 14:09:01 +0000=0A= > Minas Harutyunyan wrote:=0A= > =0A= >> On 12/18/2018 6:35 PM, John Keeping wrote:=0A= >>> Hi Minas,=0A= >>>=0A= >>> On Fri, 14 Dec 2018 09:00:08 +0000=0A= >>> Minas Harutyunyan wrote:=0A= >>>> First of all, sorry for delayed answer.=0A= >>>> Looks like similar issue seen by Andrzej Pietrasiewicz=0A= >>>> : "dwc2 isochronous transfers issues". Same=0A= >>>> feedback provided to Andrzej.=0A= >>>>=0A= >>>> I run tests on 4.20.0-rc4 in DDMA. By default IN ISOC traffic=0A= >>>> failed because of BNA interrupts. It's happen because UAC2=0A= >>>> requests count set by default to 2. Our core and driver can't work=0A= >>>> in DDMA with descriptor list length equal to 2. It's not possible=0A= >>>> on time prepare next descriptors to avoid BNA interrupt.=0A= >>>>=0A= >>>> By changing UAC2_DEF_REQ_NUM to 4 all audio gadget tests passed=0A= >>>> smoothly. Could you please apply this patch and run tests in DDMA=0A= >>>> mode:=0A= >>>>=0A= >>>> diff --git a/drivers/usb/gadget/function/u_uac2.h=0A= >>>> b/drivers/usb/gadget/function/u_uac2.h=0A= >>>> index 8362ee572e1e..5e649259ab76 100644=0A= >>>> --- a/drivers/usb/gadget/function/u_uac2.h=0A= >>>> +++ b/drivers/usb/gadget/function/u_uac2.h=0A= >>>> @@ -21,7 +21,7 @@=0A= >>>> #define UAC2_DEF_CCHMASK 0x3=0A= >>>> #define UAC2_DEF_CSRATE 64000=0A= >>>> #define UAC2_DEF_CSSIZE 2=0A= >>>> -#define UAC2_DEF_REQ_NUM 2=0A= >>>> +#define UAC2_DEF_REQ_NUM 4=0A= >>>>=0A= >>>> struct f_uac2_opts {=0A= >>>> struct usb_function_instance func_inst;=0A= >>>>=0A= >>>>=0A= >>>> If it will OK on your side also then will switch to BDMA mode and=0A= >>>> debug.=0A= >>>=0A= >>> With DDMA enabled, I see the following error after the stream has=0A= >>> been running for a while (anything from a few seconds to a few=0A= >>> minutes):=0A= >>> -- >8 --=0A= >>> [ 1798.836322] dwc2 ff580000.usb: dwc2_hsotg_ep_disable: called for=0A= >>> ep0 [ 1798.836329] dwc2 ff580000.usb: dwc2_hsotg_ep_disable: called=0A= >>> for ep0 [ 1798.851092] dwc2 ff580000.usb: new device is high-speed=0A= >>> [ 1798.924461] dwc2 ff580000.usb: new device is high-speed=0A= >>> [ 1798.982887] dwc2 ff580000.usb: new address 25=0A= >>> [ 1799.002463] configfs-gadget gadget: high-speed config #1: config=0A= >>> -- 8< --=0A= >>>=0A= >>> On the host side (Linux 4.18.16 Intel xHCI), I see this logged at=0A= >>> the same time:=0A= >>> =0A= >>> -- >8 --=0A= >>> [1735740.716242] retire_capture_urb: usb 1-2.2.7: frame 0 active:=0A= >>> -71 [1735740.716990] retire_capture_urb: usb 1-2.2.7: frame 0=0A= >>> active: -71 [1735740.717906] retire_capture_urb: usb 1-2.2.7: frame=0A= >>> 0 active: -71 [1735740.718905] retire_capture_urb: usb 1-2.2.7:=0A= >>> frame 0 active: -71 [1735740.719916] retire_capture_urb: usb=0A= >>> 1-2.2.7: frame 0 active: -71 [1735740.720032] usb 1-2.2-port7:=0A= >>> disabled by hub (EMI?), re-enabling... [1735740.720036] usb=0A= >>> 1-2.2.7: USB disconnect, device number 28 [1735740.937500] usb=0A= >>> 1-2.2.7: new high-speed USB device number 29 using xhci_hcd -- 8< --=0A= >>>=0A= >>> The device does then enumerate and works for a period of time=0A= >>> before the same error happens again.=0A= >>> =0A= >> From logs not clear who initiate disconnect: host or device. More=0A= >> probably host, after some errors in retire_capture_urb initiate=0A= >> disconnect. Do you have any idea?=0A= >> Can't you connect device to host on same platform?=0A= >> If root cause of disconnect by host is device issue, i.e. not able to=0A= >> send to host data packets in time then I need device side dmesg log=0A= >> with debug enabled. USB trace around the disconnect will help to=0A= >> debug.=0A= > =0A= > I remember running a test with a hardware USB analyzer and which showed= =0A= > an isochronous packet with an incorrect length (much larger than it=0A= > should have been) when the failure occurred.=0A= > =0A= > I don't have any logs from that test and I'm out of the office at the=0A= > moment, but I will capture logs when I'm back in January.=0A= =0A= I think, if you enable debug prints, you will see BNA interrupts. So, my = =0A= recommendation is to increase more UAC2_DEF_REQ_NUM until BNA will =0A= disappear. Per me value of UAC2_DEF_REQ_NUM is platform's latency dependent= .=0A= =0A= Thanks,=0A= Minas=0A= =0A= > =0A= > =0A= > Thanks,=0A= > John=0A= > =0A= =0A= From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: usb: dwc2: gadget: fix ISOC frame overflow handling From: Minas Harutyunyan Message-Id: <410670D7E743164D87FA6160E7907A56013A7C1D84@am04wembxa.internal.synopsys.com> Date: Mon, 24 Dec 2018 07:18:36 +0000 To: John Keeping , Minas Harutyunyan Cc: Greg Kroah-Hartman , "linux-usb@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "arthur.petrosyan@synopsys.com" List-ID: SGkgSm9obiwKCk9uIDEyLzIxLzIwMTggODowNSBQTSwgSm9obiBLZWVwaW5nIHdyb3RlOgo+IEhp IE1pbmFzLAo+IAo+IE9uIFdlZCwgMTkgRGVjIDIwMTggMTQ6MDk6MDEgKzAwMDAKPiBNaW5hcyBI YXJ1dHl1bnlhbiA8bWluYXMuaGFydXR5dW55YW5Ac3lub3BzeXMuY29tPiB3cm90ZToKPiAKPj4g T24gMTIvMTgvMjAxOCA2OjM1IFBNLCBKb2huIEtlZXBpbmcgd3JvdGU6Cj4+PiBIaSBNaW5hcywK Pj4+Cj4+PiBPbiBGcmksIDE0IERlYyAyMDE4IDA5OjAwOjA4ICswMDAwCj4+PiBNaW5hcyBIYXJ1 dHl1bnlhbiA8bWluYXMuaGFydXR5dW55YW5Ac3lub3BzeXMuY29tPiB3cm90ZToKPj4+PiBGaXJz dCBvZiBhbGwsIHNvcnJ5IGZvciBkZWxheWVkIGFuc3dlci4KPj4+PiBMb29rcyBsaWtlIHNpbWls YXIgaXNzdWUgc2VlbiBieSBBbmRyemVqIFBpZXRyYXNpZXdpY3oKPj4+PiA8YW5kcnplai5wQHNh bXN1bmcuY29tPjogImR3YzIgaXNvY2hyb25vdXMgdHJhbnNmZXJzIGlzc3VlcyIuIFNhbWUKPj4+ PiBmZWVkYmFjayBwcm92aWRlZCB0byBBbmRyemVqLgo+Pj4+Cj4+Pj4gSSBydW4gdGVzdHMgb24g NC4yMC4wLXJjNCBpbiBERE1BLiBCeSBkZWZhdWx0IElOIElTT0MgdHJhZmZpYwo+Pj4+IGZhaWxl ZCBiZWNhdXNlIG9mIEJOQSBpbnRlcnJ1cHRzLiBJdCdzIGhhcHBlbiBiZWNhdXNlIFVBQzIKPj4+ PiByZXF1ZXN0cyBjb3VudCBzZXQgYnkgZGVmYXVsdCB0byAyLiBPdXIgY29yZSBhbmQgZHJpdmVy IGNhbid0IHdvcmsKPj4+PiBpbiBERE1BIHdpdGggZGVzY3JpcHRvciBsaXN0IGxlbmd0aCBlcXVh bCB0byAyLiBJdCdzIG5vdCBwb3NzaWJsZQo+Pj4+IG9uIHRpbWUgcHJlcGFyZSBuZXh0IGRlc2Ny aXB0b3JzIHRvIGF2b2lkIEJOQSBpbnRlcnJ1cHQuCj4+Pj4KPj4+PiBCeSBjaGFuZ2luZyBVQUMy X0RFRl9SRVFfTlVNIHRvIDQgYWxsIGF1ZGlvIGdhZGdldCB0ZXN0cyBwYXNzZWQKPj4+PiBzbW9v dGhseS4gQ291bGQgeW91IHBsZWFzZSBhcHBseSB0aGlzIHBhdGNoIGFuZCBydW4gdGVzdHMgaW4g RERNQQo+Pj4+IG1vZGU6Cj4+Pj4KPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0 L2Z1bmN0aW9uL3VfdWFjMi5oCj4+Pj4gYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdV91 YWMyLmgKPj4+PiBpbmRleCA4MzYyZWU1NzJlMWUuLjVlNjQ5MjU5YWI3NiAxMDA2NDQKPj4+PiAt LS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdV91YWMyLmgKPj4+PiArKysgYi9kcml2 ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdV91YWMyLmgKPj4+PiBAQCAtMjEsNyArMjEsNyBAQAo+ Pj4+ICAgICAjZGVmaW5lIFVBQzJfREVGX0NDSE1BU0sgMHgzCj4+Pj4gICAgICNkZWZpbmUgVUFD Ml9ERUZfQ1NSQVRFIDY0MDAwCj4+Pj4gICAgICNkZWZpbmUgVUFDMl9ERUZfQ1NTSVpFIDIKPj4+ PiAtI2RlZmluZSBVQUMyX0RFRl9SRVFfTlVNIDIKPj4+PiArI2RlZmluZSBVQUMyX0RFRl9SRVFf TlVNIDQKPj4+Pgo+Pj4+ICAgICBzdHJ1Y3QgZl91YWMyX29wdHMgewo+Pj4+ICAgICAgICAgICAg c3RydWN0IHVzYl9mdW5jdGlvbl9pbnN0YW5jZSAgICBmdW5jX2luc3Q7Cj4+Pj4KPj4+Pgo+Pj4+ IElmIGl0IHdpbGwgT0sgb24geW91ciBzaWRlIGFsc28gdGhlbiB3aWxsIHN3aXRjaCB0byBCRE1B IG1vZGUgYW5kCj4+Pj4gZGVidWcuCj4+Pgo+Pj4gV2l0aCBERE1BIGVuYWJsZWQsIEkgc2VlIHRo ZSBmb2xsb3dpbmcgZXJyb3IgYWZ0ZXIgdGhlIHN0cmVhbSBoYXMKPj4+IGJlZW4gcnVubmluZyBm b3IgYSB3aGlsZSAoYW55dGhpbmcgZnJvbSBhIGZldyBzZWNvbmRzIHRvIGEgZmV3Cj4+PiBtaW51 dGVzKToKPj4+IC0tID44IC0tCj4+PiBbIDE3OTguODM2MzIyXSBkd2MyIGZmNTgwMDAwLnVzYjog ZHdjMl9oc290Z19lcF9kaXNhYmxlOiBjYWxsZWQgZm9yCj4+PiBlcDAgWyAxNzk4LjgzNjMyOV0g ZHdjMiBmZjU4MDAwMC51c2I6IGR3YzJfaHNvdGdfZXBfZGlzYWJsZTogY2FsbGVkCj4+PiBmb3Ig ZXAwIFsgMTc5OC44NTEwOTJdIGR3YzIgZmY1ODAwMDAudXNiOiBuZXcgZGV2aWNlIGlzIGhpZ2gt c3BlZWQKPj4+IFsgMTc5OC45MjQ0NjFdIGR3YzIgZmY1ODAwMDAudXNiOiBuZXcgZGV2aWNlIGlz IGhpZ2gtc3BlZWQKPj4+IFsgMTc5OC45ODI4ODddIGR3YzIgZmY1ODAwMDAudXNiOiBuZXcgYWRk cmVzcyAyNQo+Pj4gWyAxNzk5LjAwMjQ2M10gY29uZmlnZnMtZ2FkZ2V0IGdhZGdldDogaGlnaC1z cGVlZCBjb25maWcgIzE6IGNvbmZpZwo+Pj4gLS0gODwgLS0KPj4+Cj4+PiBPbiB0aGUgaG9zdCBz aWRlIChMaW51eCA0LjE4LjE2IEludGVsIHhIQ0kpLCBJIHNlZSB0aGlzIGxvZ2dlZCBhdAo+Pj4g dGhlIHNhbWUgdGltZToKPj4+ICAgIAo+Pj4gLS0gPjggLS0KPj4+IFsxNzM1NzQwLjcxNjI0Ml0g cmV0aXJlX2NhcHR1cmVfdXJiOiB1c2IgMS0yLjIuNzogZnJhbWUgMCBhY3RpdmU6Cj4+PiAtNzEg WzE3MzU3NDAuNzE2OTkwXSByZXRpcmVfY2FwdHVyZV91cmI6IHVzYiAxLTIuMi43OiBmcmFtZSAw Cj4+PiBhY3RpdmU6IC03MSBbMTczNTc0MC43MTc5MDZdIHJldGlyZV9jYXB0dXJlX3VyYjogdXNi IDEtMi4yLjc6IGZyYW1lCj4+PiAwIGFjdGl2ZTogLTcxIFsxNzM1NzQwLjcxODkwNV0gcmV0aXJl X2NhcHR1cmVfdXJiOiB1c2IgMS0yLjIuNzoKPj4+IGZyYW1lIDAgYWN0aXZlOiAtNzEgWzE3MzU3 NDAuNzE5OTE2XSByZXRpcmVfY2FwdHVyZV91cmI6IHVzYgo+Pj4gMS0yLjIuNzogZnJhbWUgMCBh Y3RpdmU6IC03MSBbMTczNTc0MC43MjAwMzJdIHVzYiAxLTIuMi1wb3J0NzoKPj4+IGRpc2FibGVk IGJ5IGh1YiAoRU1JPyksIHJlLWVuYWJsaW5nLi4uIFsxNzM1NzQwLjcyMDAzNl0gdXNiCj4+PiAx LTIuMi43OiBVU0IgZGlzY29ubmVjdCwgZGV2aWNlIG51bWJlciAyOCBbMTczNTc0MC45Mzc1MDBd IHVzYgo+Pj4gMS0yLjIuNzogbmV3IGhpZ2gtc3BlZWQgVVNCIGRldmljZSBudW1iZXIgMjkgdXNp bmcgeGhjaV9oY2QgLS0gODwgLS0KPj4+Cj4+PiBUaGUgZGV2aWNlIGRvZXMgdGhlbiBlbnVtZXJh dGUgYW5kIHdvcmtzIGZvciBhIHBlcmlvZCBvZiB0aW1lCj4+PiBiZWZvcmUgdGhlIHNhbWUgZXJy b3IgaGFwcGVucyBhZ2Fpbi4KPj4+ICAgIAo+PiAgIEZyb20gbG9ncyBub3QgY2xlYXIgd2hvIGlu aXRpYXRlIGRpc2Nvbm5lY3Q6IGhvc3Qgb3IgZGV2aWNlLiAgTW9yZQo+PiBwcm9iYWJseSBob3N0 LCBhZnRlciBzb21lIGVycm9ycyBpbiByZXRpcmVfY2FwdHVyZV91cmIgaW5pdGlhdGUKPj4gZGlz Y29ubmVjdC4gRG8geW91IGhhdmUgYW55IGlkZWE/Cj4+IENhbid0IHlvdSBjb25uZWN0IGRldmlj ZSB0byBob3N0IG9uIHNhbWUgcGxhdGZvcm0/Cj4+IElmIHJvb3QgY2F1c2Ugb2YgZGlzY29ubmVj dCBieSBob3N0IGlzIGRldmljZSBpc3N1ZSwgaS5lLiBub3QgYWJsZSB0bwo+PiBzZW5kIHRvIGhv c3QgZGF0YSBwYWNrZXRzIGluIHRpbWUgdGhlbiBJIG5lZWQgZGV2aWNlIHNpZGUgZG1lc2cgbG9n Cj4+IHdpdGggZGVidWcgZW5hYmxlZC4gVVNCIHRyYWNlIGFyb3VuZCB0aGUgZGlzY29ubmVjdCB3 aWxsIGhlbHAgdG8KPj4gZGVidWcuCj4gCj4gSSByZW1lbWJlciBydW5uaW5nIGEgdGVzdCB3aXRo IGEgaGFyZHdhcmUgVVNCIGFuYWx5emVyIGFuZCB3aGljaCBzaG93ZWQKPiBhbiBpc29jaHJvbm91 cyBwYWNrZXQgd2l0aCBhbiBpbmNvcnJlY3QgbGVuZ3RoIChtdWNoIGxhcmdlciB0aGFuIGl0Cj4g c2hvdWxkIGhhdmUgYmVlbikgd2hlbiB0aGUgZmFpbHVyZSBvY2N1cnJlZC4KPiAKPiBJIGRvbid0 IGhhdmUgYW55IGxvZ3MgZnJvbSB0aGF0IHRlc3QgYW5kIEknbSBvdXQgb2YgdGhlIG9mZmljZSBh dCB0aGUKPiBtb21lbnQsIGJ1dCBJIHdpbGwgY2FwdHVyZSBsb2dzIHdoZW4gSSdtIGJhY2sgaW4g SmFudWFyeS4KCkkgdGhpbmssIGlmIHlvdSBlbmFibGUgZGVidWcgcHJpbnRzLCB5b3Ugd2lsbCBz ZWUgQk5BIGludGVycnVwdHMuIFNvLCBteSAKcmVjb21tZW5kYXRpb24gaXMgdG8gaW5jcmVhc2Ug bW9yZSBVQUMyX0RFRl9SRVFfTlVNIHVudGlsIEJOQSB3aWxsIApkaXNhcHBlYXIuIFBlciBtZSB2 YWx1ZSBvZiBVQUMyX0RFRl9SRVFfTlVNIGlzIHBsYXRmb3JtJ3MgbGF0ZW5jeSBkZXBlbmRlbnQu CgpUaGFua3MsCk1pbmFzCgo+IAo+IAo+IFRoYW5rcywKPiBKb2huCj4K