bluez RFCOMM connect fail on arm platform
Hi, All
I'm working on a project on arm platform (Cirrus EP9312 Board, Arm9) which utilized bluez. And I now encountered a problem: the rfcomm connection can't be established. Only occasionally can the rfcomm connection be established. I'm using a USB dongle with Broadcom bluetooth chip inside of hci version 2.0. This dongle works well on my Laptop with linux-iamge-2.6.18. So I don't think the problem lies in the bluetooth dongle.
My embeded arm platform runs the kernel 2.6.8-1 patched with patch from www.cirrus.com. But I don't think the patch file does anything related to bluetooth.
Is there any way to use the lastest bluetooth kernel source on a arm platform with kernel 2.6.8-1 ?
The typical output of hcidump is as following:
~ # hcidump -x -V HCI sniffer - Bluetooth packet analyzer ver 1.30 device: hci0 snap_len: 1028 filter: 0xffffffff < HCI Command: Create Connection (0x01|0x0005) plen 13 bdaddr 00:17:B0:B1:B2:CC ptype 0xcc18 rswitch 0x01 clkoffset 0x0000 Packet type: DM1 DM3 DM5 DH1 DH3 DH5 > HCI Event: Command Status (0x0f) plen 4 Create Connection (0x01|0x0005) status 0x00 ncmd 1 > HCI Event: Connect Complete (0x03) plen 11 status 0x00 handle 12 bdaddr 00:17:B0:B1:B2:CC type ACL encrypt 0x00 < ACL data: handle 12 flags 0x02 dlen 12 L2CAP(s): Connect req: psm 3 scid 0x0040 > HCI Event: Max Slots Change (0x1b) plen 3 handle 12 slots 5 > ACL data: handle 12 flags 0x02 dlen 16 L2CAP(s): Connect rsp: dcid 0x0040 scid 0x0040 result 0 status 0 Connection successful < ACL data: handle 12 flags 0x02 dlen 16 L2CAP(s): Config req: dcid 0x0040 flags 0x00 clen 4 MTU 1024 > ACL data: handle 12 flags 0x02 dlen 16 L2CAP(s): Config req: dcid 0x0040 flags 0x00 clen 4 MTU 32772 < ACL data: handle 12 flags 0x02 dlen 14 L2CAP(s): Config rsp: scid 0x0040 flags 0x00 result 0 clen 0 Success > ACL data: handle 12 flags 0x02 dlen 17 > ACL data: handle 12 flags 0x01 dlen 1 L2CAP(s): Config rsp: scid 0x0040 flags 0x00 result 0 clen 4 Success MTU 1024 < ACL data: handle 12 flags 0x02 dlen 8 L2CAP(d): cid 0x0040 len 4 [psm 3] RFCOMM(s): SABM: cr 1 dlci 0 pf 1 ilen 0 fcs 0x1c > HCI Event: Number of Completed Packets (0x13) plen 5 handle 12 packets 4 > ACL data: handle 12 flags 0x02 dlen 8 L2CAP(d): cid 0x0040 len 4 [psm 3] RFCOMM(s): UA: cr 1 dlci 0 pf 1 ilen 0 fcs 0xd7 < ACL data: handle 12 flags 0x02 dlen 18 L2CAP(d): cid 0x0040 len 14 [psm 3] RFCOMM(s): PN CMD: cr 1 dlci 0 pf 0 ilen 10 fcs 0x70 mcc_len 8 dlci 18 frame_type 0 credit_flow 15 pri 7 ack_timer 0 frame_size 1019 max_retrans 0 credits 7 > ACL data: handle 12 flags 0x02 dlen 18 L2CAP(d): cid 0x0040 len 14 [psm 3] RFCOMM(s): PN RSP: cr 0 dlci 0 pf 0 ilen 10 fcs 0xaa mcc_len 8 dlci 18 frame_type 0 credit_flow 14 pri 7 ack_timer 0 frame_size 1019 max_retrans 0 credits 0 < ACL data: handle 12 flags 0x02 dlen 8 L2CAP(d): cid 0x0040 len 4 [psm 3] RFCOMM(s): SABM: cr 1 dlci 18 pf 1 ilen 0 fcs 0x32 > HCI Event: Number of Completed Packets (0x13) plen 5 handle 12 packets 2 /* it takes seconds here outputing nothing */ < ACL data: handle 12 flags 0x02 dlen 8 L2CAP(d): cid 0x0040 len 4 [psm 3] RFCOMM(s): DISC: cr 1 dlci 18 pf 1 ilen 0 fcs 0xd3 < ACL data: handle 12 flags 0x02 dlen 8 L2CAP(d): cid 0x0040 len 4 [psm 3] RFCOMM(s): DISC: cr 1 dlci 0 pf 1 ilen 0 fcs 0xfd < ACL data: handle 12 flags 0x02 dlen 12 L2CAP(s): Disconn req: dcid 0x0040 scid 0x0040 > ACL data: handle 12 flags 0x02 dlen 8 L2CAP(d): cid 0x0040 len 4 [psm 3] RFCOMM(s): UA: cr 1 dlci 18 pf 1 ilen 0 fcs 0xf9 > ACL data: handle 12 flags 0x02 dlen 8 L2CAP(d): cid 0x0040 len 4 [psm 3] RFCOMM(s): UA: cr 1 dlci 0 pf 1 ilen 0 fcs 0xd7 > ACL data: handle 12 flags 0x02 dlen 12 L2CAP(s): Disconn rsp: dcid 0x0040 scid 0x0040 > HCI Event: Number of Completed Packets (0x13) plen 5 handle 12 packets 3 < HCI Command: Disconnect (0x01|0x0006) plen 3 handle 12 reason 0x13 Reason: Remote User Terminated Connection > HCI Event: Command Status (0x0f) plen 4 Disconnect (0x01|0x0006) status 0x00 ncmd 1 > HCI Event: Disconn Complete (0x05) plen 4 status 0x00 handle 12 reason 0x16 Reason: Connection Terminated by Local Host
The output of hciconfig -a is:
hci0: Type: USB
BD Address: 00:02:72:CA:DE:02 ACL MTU: 1017:8 SCO MTU: 64:0
UP RUNNING PSCAN ISCAN
RX bytes:71 acl:0 sco:0 events:8 errors:0
TX bytes:31 acl:0 sco:0 commands:8 errors:0
Features: 0xff 0xff 0x8d 0xfe 0x9b 0xf9 0x00 0x80
Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
Link policy:
Link mode: SLAVE ACCEPT
Name: 'BCM92045DG_Class1'
Class: 0x000000
Service Classes: Unspecified
Device Class: Miscellaneous,
HCI Ver: 2.0 (0x3) HCI Rev: 0x200a LMP Ver: 2.0 (0x3) LMP Subver: 0x4127
Manufacturer: Broadcom Corporation (15)Any tip or suggestion is welcome!
Thanks in advance!
Signature · 9 lines
------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ Bluez-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/bluez-users
Marcel Holtmann
maintainerHi,
Quoted 11 lines
I'm working on a project on arm platform (Cirrus EP9312 Board, Arm9) which utilized bluez. And I now encountered a problem: the rfcomm connection can't be established. Only occasionally can the rfcomm connection be established. I'm using a USB dongle with Broadcom bluetooth chip inside of hci version 2.0. This dongle works well on my Laptop with linux-iamge-2.6.18. So I don't think the problem lies in the bluetooth dongle.
My embeded arm platform runs the kernel 2.6.8-1 patched with patch from www.cirrus.com. But I don't think the patch file does anything related to bluetooth.
first of all. The 2.6.8 kernel is ancient and you should switch to a 2.6.19 and make Cirrus provide their patch for it. Not following the upstream kernel releases is a bad behavior of embedded system providers and they should be punished for that by not buying their systems.
Quoted 62 lines
Is there any way to use the lastest bluetooth kernel source on a arm platform with kernel 2.6.8-1 ?
The typical output of hcidump is as following:
~ # hcidump -x -V HCI sniffer - Bluetooth packet analyzer ver 1.30 device: hci0 snap_len: 1028 filter: 0xffffffff < HCI Command: Create Connection (0x01|0x0005) plen 13 bdaddr 00:17:B0:B1:B2:CC ptype 0xcc18 rswitch 0x01 clkoffset 0x0000 Packet type: DM1 DM3 DM5 DH1 DH3 DH5 > HCI Event: Command Status (0x0f) plen 4 Create Connection (0x01|0x0005) status 0x00 ncmd 1 > HCI Event: Connect Complete (0x03) plen 11 status 0x00 handle 12 bdaddr 00:17:B0:B1:B2:CC type ACL encrypt 0x00 < ACL data: handle 12 flags 0x02 dlen 12 L2CAP(s): Connect req: psm 3 scid 0x0040 > HCI Event: Max Slots Change (0x1b) plen 3 handle 12 slots 5 > ACL data: handle 12 flags 0x02 dlen 16 L2CAP(s): Connect rsp: dcid 0x0040 scid 0x0040 result 0 status 0 Connection successful < ACL data: handle 12 flags 0x02 dlen 16 L2CAP(s): Config req: dcid 0x0040 flags 0x00 clen 4 MTU 1024 > ACL data: handle 12 flags 0x02 dlen 16 L2CAP(s): Config req: dcid 0x0040 flags 0x00 clen 4 MTU 32772 < ACL data: handle 12 flags 0x02 dlen 14 L2CAP(s): Config rsp: scid 0x0040 flags 0x00 result 0 clen 0 Success > ACL data: handle 12 flags 0x02 dlen 17 > ACL data: handle 12 flags 0x01 dlen 1 L2CAP(s): Config rsp: scid 0x0040 flags 0x00 result 0 clen 4 Success MTU 1024 < ACL data: handle 12 flags 0x02 dlen 8 L2CAP(d): cid 0x0040 len 4 [psm 3] RFCOMM(s): SABM: cr 1 dlci 0 pf 1 ilen 0 fcs 0x1c > HCI Event: Number of Completed Packets (0x13) plen 5 handle 12 packets 4 > ACL data: handle 12 flags 0x02 dlen 8 L2CAP(d): cid 0x0040 len 4 [psm 3] RFCOMM(s): UA: cr 1 dlci 0 pf 1 ilen 0 fcs 0xd7 < ACL data: handle 12 flags 0x02 dlen 18 L2CAP(d): cid 0x0040 len 14 [psm 3] RFCOMM(s): PN CMD: cr 1 dlci 0 pf 0 ilen 10 fcs 0x70 mcc_len 8 dlci 18 frame_type 0 credit_flow 15 pri 7 ack_timer 0 frame_size 1019 max_retrans 0 credits 7 > ACL data: handle 12 flags 0x02 dlen 18 L2CAP(d): cid 0x0040 len 14 [psm 3] RFCOMM(s): PN RSP: cr 0 dlci 0 pf 0 ilen 10 fcs 0xaa mcc_len 8 dlci 18 frame_type 0 credit_flow 14 pri 7 ack_timer 0 frame_size 1019 max_retrans 0 credits 0 < ACL data: handle 12 flags 0x02 dlen 8 L2CAP(d): cid 0x0040 len 4 [psm 3] RFCOMM(s): SABM: cr 1 dlci 18 pf 1 ilen 0 fcs 0x32 > HCI Event: Number of Completed Packets (0x13) plen 5 handle 12 packets 2
Quoted 8 lines
/* it takes seconds here outputing nothing */ < ACL data: handle 12 flags 0x02 dlen 8 L2CAP(d): cid 0x0040 len 4 [psm 3] RFCOMM(s): DISC: cr 1 dlci 18 pf 1 ilen 0 fcs 0xd3
I am sorry, but that is not BlueZ fault. You are connection to RFCOMM channel 9 and the other side doesn't answer. We can only terminate the connection attempt after a timeout.
Regards
Marcel
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Bluez-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bluez-users
T24gU3VuLCBEZWMgMDMsIDIwMDYgYXQgMDI6NDQ6MzBQTSArMDEwMCwgTWFyY2VsIEhvbHRtYW5u IHdyb3RlOgo+IEhpLAo+IAo+ID4gTXkgZW1iZWRlZCBhcm0gcGxhdGZvcm0gcnVucyB0aGUga2Vy bmVsIDIuNi44LTEgcGF0Y2hlZCB3aXRoIHBhdGNoCj4gPiBmcm9tIHd3dy5jaXJydXMuY29tLiBC dXQgSSBkb24ndCB0aGluayB0aGUgcGF0Y2ggZmlsZSBkb2VzIGFueXRoaW5nCj4gPiByZWxhdGVk IHRvIGJsdWV0b290aC4KPiAKPiBmaXJzdCBvZiBhbGwuIFRoZSAyLjYuOCBrZXJuZWwgaXMgYW5j aWVudCBhbmQgeW91IHNob3VsZCBzd2l0Y2ggdG8gYQo+IDIuNi4xOSBhbmQgbWFrZSBDaXJydXMg cHJvdmlkZSB0aGVpciBwYXRjaCBmb3IgaXQuIE5vdCBmb2xsb3dpbmcgdGhlCj4gdXBzdHJlYW0g a2VybmVsIHJlbGVhc2VzIGlzIGEgYmFkIGJlaGF2aW9yIG9mIGVtYmVkZGVkIHN5c3RlbSBwcm92 aWRlcnMKPiBhbmQgdGhleSBzaG91bGQgYmUgcHVuaXNoZWQgZm9yIHRoYXQgYnkgbm90IGJ1eWlu ZyB0aGVpciBzeXN0ZW1zLgpUaGFuayB5b3UgZm9yIHRoZSBzdWdnZXN0aW9uLiBJIHdpbGwgdHJ5 IHRoYXQsIHRob3VnaCBJIGRvbid0IHRoaW5rCnRoZXkgd291bGQgcmVzcG9uZC4KCj4gCj4gPiBJ cyB0aGVyZSBhbnkgd2F5IHRvIHVzZSB0aGUgbGFzdGVzdCBibHVldG9vdGgga2VybmVsIHNvdXJj ZSBvbiBhIGFybQo+ID4gcGxhdGZvcm0gd2l0aCBrZXJuZWwgMi42LjgtMSA/Cj4gPiAKPiA+IFRo ZSB0eXBpY2FsIG91dHB1dCBvZiBoY2lkdW1wIGlzIGFzIGZvbGxvd2luZzoKPiA+IAo+ID4gCX4g IyBoY2lkdW1wIC14IC1WCj4gPiAJSENJIHNuaWZmZXIgLSBCbHVldG9vdGggcGFja2V0IGFuYWx5 emVyIHZlciAxLjMwCj4gPiAJZGV2aWNlOiBoY2kwIHNuYXBfbGVuOiAxMDI4IGZpbHRlcjogMHhm ZmZmZmZmZgo+ID4gCTwgSENJIENvbW1hbmQ6IENyZWF0ZSBDb25uZWN0aW9uICgweDAxfDB4MDAw NSkgcGxlbiAxMwo+ID4gCSAgICBiZGFkZHIgMDA6MTc6QjA6QjE6QjI6Q0MgcHR5cGUgMHhjYzE4 IHJzd2l0Y2ggMHgwMSBjbGtvZmZzZXQgMHgwMDAwCj4gPiAJICAgIFBhY2tldCB0eXBlOiBETTEg RE0zIERNNSBESDEgREgzIERINQo+ID4gCT4gSENJIEV2ZW50OiBDb21tYW5kIFN0YXR1cyAoMHgw ZikgcGxlbiA0Cj4gPiAJICAgIENyZWF0ZSBDb25uZWN0aW9uICgweDAxfDB4MDAwNSkgc3RhdHVz IDB4MDAgbmNtZCAxCj4gPiAJPiBIQ0kgRXZlbnQ6IENvbm5lY3QgQ29tcGxldGUgKDB4MDMpIHBs ZW4gMTEKPiA+IAkgICAgc3RhdHVzIDB4MDAgaGFuZGxlIDEyIGJkYWRkciAwMDoxNzpCMDpCMTpC MjpDQyB0eXBlIEFDTCBlbmNyeXB0IDB4MDAKPiA+IAk8IEFDTCBkYXRhOiBoYW5kbGUgMTIgZmxh Z3MgMHgwMiBkbGVuIDEyCj4gPiAJICAgIEwyQ0FQKHMpOiBDb25uZWN0IHJlcTogcHNtIDMgc2Np ZCAweDAwNDAKPiA+IAk+IEhDSSBFdmVudDogTWF4IFNsb3RzIENoYW5nZSAoMHgxYikgcGxlbiAz Cj4gPiAJICAgIGhhbmRsZSAxMiBzbG90cyA1Cj4gPiAJPiBBQ0wgZGF0YTogaGFuZGxlIDEyIGZs YWdzIDB4MDIgZGxlbiAxNgo+ID4gCSAgICBMMkNBUChzKTogQ29ubmVjdCByc3A6IGRjaWQgMHgw MDQwIHNjaWQgMHgwMDQwIHJlc3VsdCAwIHN0YXR1cyAwCj4gPiAJICAgICAgQ29ubmVjdGlvbiBz dWNjZXNzZnVsCj4gPiAJPCBBQ0wgZGF0YTogaGFuZGxlIDEyIGZsYWdzIDB4MDIgZGxlbiAxNgo+ ID4gCSAgICBMMkNBUChzKTogQ29uZmlnIHJlcTogZGNpZCAweDAwNDAgZmxhZ3MgMHgwMCBjbGVu IDQKPiA+IAkgICAgICBNVFUgMTAyNAo+ID4gCT4gQUNMIGRhdGE6IGhhbmRsZSAxMiBmbGFncyAw eDAyIGRsZW4gMTYKPiA+IAkgICAgTDJDQVAocyk6IENvbmZpZyByZXE6IGRjaWQgMHgwMDQwIGZs YWdzIDB4MDAgY2xlbiA0Cj4gPiAJICAgICAgTVRVIDMyNzcyCj4gPiAJPCBBQ0wgZGF0YTogaGFu ZGxlIDEyIGZsYWdzIDB4MDIgZGxlbiAxNAo+ID4gCSAgICBMMkNBUChzKTogQ29uZmlnIHJzcDog c2NpZCAweDAwNDAgZmxhZ3MgMHgwMCByZXN1bHQgMCBjbGVuIDAKPiA+IAkgICAgICBTdWNjZXNz Cj4gPiAJPiBBQ0wgZGF0YTogaGFuZGxlIDEyIGZsYWdzIDB4MDIgZGxlbiAxNwo+ID4gCT4gQUNM IGRhdGE6IGhhbmRsZSAxMiBmbGFncyAweDAxIGRsZW4gMQo+ID4gCSAgICBMMkNBUChzKTogQ29u ZmlnIHJzcDogc2NpZCAweDAwNDAgZmxhZ3MgMHgwMCByZXN1bHQgMCBjbGVuIDQKPiA+IAkgICAg ICBTdWNjZXNzCj4gPiAJICAgICAgTVRVIDEwMjQKPiA+IAk8IEFDTCBkYXRhOiBoYW5kbGUgMTIg ZmxhZ3MgMHgwMiBkbGVuIDgKPiA+IAkgICAgTDJDQVAoZCk6IGNpZCAweDAwNDAgbGVuIDQgW3Bz bSAzXQo+ID4gCSAgICAgIFJGQ09NTShzKTogU0FCTTogY3IgMSBkbGNpIDAgcGYgMSBpbGVuIDAg ZmNzIDB4MWMKPiA+IAk+IEhDSSBFdmVudDogTnVtYmVyIG9mIENvbXBsZXRlZCBQYWNrZXRzICgw eDEzKSBwbGVuIDUKPiA+IAkgICAgaGFuZGxlIDEyIHBhY2tldHMgNAo+ID4gCT4gQUNMIGRhdGE6 IGhhbmRsZSAxMiBmbGFncyAweDAyIGRsZW4gOAo+ID4gCSAgICBMMkNBUChkKTogY2lkIDB4MDA0 MCBsZW4gNCBbcHNtIDNdCj4gPiAJICAgICAgUkZDT01NKHMpOiBVQTogY3IgMSBkbGNpIDAgcGYg MSBpbGVuIDAgZmNzIDB4ZDcKPiA+IAk8IEFDTCBkYXRhOiBoYW5kbGUgMTIgZmxhZ3MgMHgwMiBk bGVuIDE4Cj4gPiAJICAgIEwyQ0FQKGQpOiBjaWQgMHgwMDQwIGxlbiAxNCBbcHNtIDNdCj4gPiAJ ICAgICAgUkZDT01NKHMpOiBQTiBDTUQ6IGNyIDEgZGxjaSAwIHBmIDAgaWxlbiAxMCBmY3MgMHg3 MCBtY2NfbGVuIDgKPiA+IAkgICAgICBkbGNpIDE4IGZyYW1lX3R5cGUgMCBjcmVkaXRfZmxvdyAx NSBwcmkgNyBhY2tfdGltZXIgMAo+ID4gCSAgICAgIGZyYW1lX3NpemUgMTAxOSBtYXhfcmV0cmFu cyAwIGNyZWRpdHMgNwo+ID4gCT4gQUNMIGRhdGE6IGhhbmRsZSAxMiBmbGFncyAweDAyIGRsZW4g MTgKPiA+IAkgICAgTDJDQVAoZCk6IGNpZCAweDAwNDAgbGVuIDE0IFtwc20gM10KPiA+IAkgICAg ICBSRkNPTU0ocyk6IFBOIFJTUDogY3IgMCBkbGNpIDAgcGYgMCBpbGVuIDEwIGZjcyAweGFhIG1j Y19sZW4gOAo+ID4gCSAgICAgIGRsY2kgMTggZnJhbWVfdHlwZSAwIGNyZWRpdF9mbG93IDE0IHBy aSA3IGFja190aW1lciAwCj4gPiAJICAgICAgZnJhbWVfc2l6ZSAxMDE5IG1heF9yZXRyYW5zIDAg Y3JlZGl0cyAwCj4gPiAJPCBBQ0wgZGF0YTogaGFuZGxlIDEyIGZsYWdzIDB4MDIgZGxlbiA4Cj4g PiAJICAgIEwyQ0FQKGQpOiBjaWQgMHgwMDQwIGxlbiA0IFtwc20gM10KPiA+IAkgICAgICBSRkNP TU0ocyk6IFNBQk06IGNyIDEgZGxjaSAxOCBwZiAxIGlsZW4gMCBmY3MgMHgzMgo+ID4gCT4gSENJ IEV2ZW50OiBOdW1iZXIgb2YgQ29tcGxldGVkIFBhY2tldHMgKDB4MTMpIHBsZW4gNQo+ID4gCSAg ICBoYW5kbGUgMTIgcGFja2V0cyAyCj4gPiAJCj4gPiAJCj4gPiAJCj4gPiAJLyogaXQgdGFrZXMg c2Vjb25kcyBoZXJlIG91dHB1dGluZyBub3RoaW5nICovCj4gPiAJCj4gPiAJCj4gPiAJCj4gPiAJ Cj4gPiAJPCBBQ0wgZGF0YTogaGFuZGxlIDEyIGZsYWdzIDB4MDIgZGxlbiA4Cj4gPiAJICAgIEwy Q0FQKGQpOiBjaWQgMHgwMDQwIGxlbiA0IFtwc20gM10KPiA+IAkgICAgICBSRkNPTU0ocyk6IERJ U0M6IGNyIDEgZGxjaSAxOCBwZiAxIGlsZW4gMCBmY3MgMHhkMwo+IAo+IEkgYW0gc29ycnksIGJ1 dCB0aGF0IGlzIG5vdCBCbHVlWiBmYXVsdC4gWW91IGFyZSBjb25uZWN0aW9uIHRvIFJGQ09NTQo+ IGNoYW5uZWwgOSBhbmQgdGhlIG90aGVyIHNpZGUgZG9lc24ndCBhbnN3ZXIuIFdlIGNhbiBvbmx5 IHRlcm1pbmF0ZSB0aGUKPiBjb25uZWN0aW9uIGF0dGVtcHQgYWZ0ZXIgYSB0aW1lb3V0LgpJdCBz ZWVtcyBsaWtlIHRoYXQuIEJ1dCBJJ20gc3VyZSB0aGF0IHRoZSBjZWxscGhvbmUgSSBhbSBwdXNo aW5nIHRvIGlzCnNhbmUuIEl0J3MgYSByYXRoZXIgbGFzdGVzdCBOb2tpYSBjZWxscGhvbmUgd2l0 aCByb2J1c3QgYmx1ZXRvb3RoCnN0YWNrLiBBbmQgSSBjYW4gc2VuZCBmaWxlcyB0byBpdCB0aHJv dWdoIE9CRVggT1BVU0ggZnJvbSBteSBsYXB0b3AKKGJsdWV6KSB3aXRoIG5vIHByb2JsZW0uIAoK QW5kIG5vdyBJIGFtIGRvaW5nIHNvbWUgT0JFWCBQVVNIIG9wZXJhdGlvbiBmcm9tIHRoZSBhcm0g Ym9hcmQgdG8gbXkKbGFwdG9wLCB3aXRoIGJvdGggc2lkZSBoY2lkdW1wLWVkLiBJIGNhbiBzZWUg dGhhdCBzb21ldGltZXMgdGhlIFJGQ09NTQpjb21tYW5kcy9yZXNwb25zZSBqdXN0IGdvdCBsb3N0 LiBOYW1lbHksIGNvbW1hbmQvcmVzcG9uc2Ugc2VudCBieSBvbmUKc2lkZSAoYXMgaGNpZHVtcCBz YXlzKSBkaWRuJ3QgcmVhY2ggdGhlIG90aGVyIHNpZGUgKGFzIGhjaWR1bXAgc2F5cykuClNvIHdo ZXJlIGNvdWxkIHRoZSBwcm9ibGVtIGxpZXM/IFdoYXQgaGFwcGVucyB3aGVuIEkgY2FsbCByZWFk IG9uIGEKUkZDT01NIHNvY2tldC4gQW5kIGRvZXMgTDJDQVAgcHJvdmlkZSBhIHNhZmUgdHJhbnNw b3J0IGxheWVyIGZvcgpSRkNPTU0sIGxpa2UgVENQIGZvciBIVFRQPwoKSG93IGNhbiBJIGNoZWNr IHRoYXQgdGhlIGRhdGEgc2VudCBhcyBzaG93ZWQgYnkgaGNpZHVtcCBpcyAqcmVhbGx5KgpzZW50 IHRocm91Z2ggdGhlIGJsdWV0b290aCByYWRpbyhvciBiYXNlYmFuZCk/IElzIHRoZXJlIGFueXdh eSB0byBhZGQKYW5vdGhlciBkdW1wIHByb2dyYW0gaW4gbG93ZXIgbGF5ZXJzKGJhc2ViYW5kLGV0 Yy4pPyBEb2VzIHRoaXMgaGFzCmFueXRoaW5nIHRvIGRvIHdpdGggSENJX1VTQj8KCj4gCj4gUmVn YXJkcwo+IAo+IE1hcmNlbAo+IAo+IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgotLSAKG1sz Mm3jgIrlrr/njovmmIzpvoTpmpDlsYXjgIsbW20KG1szM23kvZzogIXvvJrluLjlu7obW20K5riF 5rqq5rex5LiN5rWL77yM6ZqQ5aSE5oOf5a2k5LqR44CCCuadvumZhemcsuW+ruaciO+8jOa4heWF ieeKueS4uuWQm+OAggrojIXkuq3lrr/oirHlvbHvvIzoja/pmaLmu4voi5TnurnjgIIK5L2Z5Lqm 6LCi5pe25Y6777yM6KW/5bGx6bi+6bmk576k44CCCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRha2UgU3Vy dmV5cy4gRWFybiBDYXNoLiBJbmZsdWVuY2UgdGhlIEZ1dHVyZSBvZiBJVApKb2luIFNvdXJjZUZv cmdlLm5ldCdzIFRlY2hzYXkgcGFuZWwgYW5kIHlvdSdsbCBnZXQgdGhlIGNoYW5jZSB0byBzaGFy ZSB5b3VyCm9waW5pb25zIG9uIElUICYgYnVzaW5lc3MgdG9waWNzIHRocm91Z2ggYnJpZWYgc3Vy dmV5cyAtIGFuZCBlYXJuIGNhc2gKaHR0cDovL3d3dy50ZWNoc2F5LmNvbS9kZWZhdWx0LnBocD9w YWdlPWpvaW4ucGhwJnA9c291cmNlZm9yZ2UmQ0lEPURFVkRFVgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpCbHVlei11c2VycyBtYWlsaW5nIGxpc3QKQmx1 ZXotdXNlcnNAbGlzdHMuc291cmNlZm9yZ2UubmV0Cmh0dHBzOi8vbGlzdHMuc291cmNlZm9yZ2Uu bmV0L2xpc3RzL2xpc3RpbmZvL2JsdWV6LXVzZXJzCg==