Return-Path: From: Steve Gladden To: Joseph Hwang CC: Hieu Le , Barry Byford <31baz66@gmail.com>, "linux-bluetooth@vger.kernel.org" Date: Sun, 16 Oct 2016 17:56:49 -0400 Subject: RE: How can you set Transmit power level in Bluetooth LE mode for an LE beacon? Message-ID: References: In-Reply-To: Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Sender: linux-bluetooth-owner@vger.kernel.org List-ID: T2ssIHRoaXMgaXMgZ2V0dGluZyByZWFsbHkgZnJ1c3RyYXRpbmcuDQpXaHkgd291bGQgc29tZXRo aW5nIHNvIHNpbXBsZSBsaWtlIHRoaXMgYmUgc28gZGlmZmljdWx0PyAgDQoNCkFtIEkgcmVhbGx5 IHRoZSBvbmx5IHNoZWVwIG91dCBoZXJlIHRoYXQgaGFzIGFueSBpbnRlcmVzdCB3aGF0c29ldmVy IGluIHRoZSBwYXN0IDUgeWVhcnMgb24gaG93IHRvIGFjdHVhbGx5IHNldCBMRSB0cmFuc21pdCBw b3dlciBvbiBhIFVTQiBkZXZpY2U/ICAgDQpEbyBJIGp1c3Qgbm90IGdldCBpdD8gICAgIA0KUmVh bGx5IEkgZG9u4oCZdCBnZXQgaXQuICAgDQoNCkEgcmVhbGx5IHNpbXBsZSB0YXNrIGFuZCBub2Jv ZHkgb3V0IGhlcmUgZWl0aGVyIGtub3dzIG9yIGhhcyBhbnkgaW50ZXJlc3QgaW4gZG9pbmcgaXQu ICANCg0KTXkgcXVlc3Rpb24gaXMgbm90IGV2ZW4gdGVjaG5pY2FsIGF0IGFsbC4gICBJZiBJIGFj dHVhbGx5IGFza2VkIHNvbWV0aGluZyB0ZWNobmljYWwgb3V0IGhlcmUgd291bGQgd291bGQgaGFw cGVuPyAgDQoNCk5vIG9mZmVuc2UgdG8gYW55b25lIG91dCBoZXJlIGp1c3QgdG8gbXlzZWxmIHJl YWxseSBidXQgd2hhdCBnaXZlcz8gICANCg0KSG93IGNvdWxkIHBlb3BsZSB3b3JraW5nIHdpdGgg dGhpcyBzdHVmZiBOT1QgYmUgaW50ZXJlc3RlZCBpbiBzaW1wbHkgY29udHJvbGxpbmcgdGhlIFRY IHBvd2VyIG91dHB1dCB2ZXJzdXMganVzdCBsaXZpbmcgd2l0aCBzb21lIFVOS05PV04gREVGQVVM VCB0aGF0IGp1c3Qgc29ydGEgd29ya3MgaWYgeW914oCZcmUgaGFwcHkgd2l0aCBvbmx5IDIwIGZl ZXQgb2YgcmFuZ2UgYWx0aG91Z2ggdGhlIGNoaXAgY2FuIHB1dCBvdXQgKzEwZGJtIGFuZCBnbyBm dXJ0aGVyIA0KT3Igc2V0IGl0IHdheSBiYWNrIHRvIC00MGRibSBhbmQgZ2V0IGpzdHUgYSBmZXcg ZmVldCBhbmQgeWVhcnMgb2YgYmF0dGVyeSBsaWZlLiANCg0KSG93IHRoZSBhY3R1YWwgRi0gYXJl IHBlb3BsZSBOT1QgaW50ZXJlc3RlZCBpbiB0aGlzIGFuZCB0YWxraW5nIGFib3V0IGl0IGFuZCB3 b3JraW5nIHdpdGggaXQ/ICAg4pi6ICAgDQoNCkFsbCBJIGhhdmUgZm91bmQgb24gYmNjbWQgaXMg YSBQREYgZG9jdW1lbnQgZnJvbSAyMDA1IHRoYXQgcHJlZGF0ZXMgQU5ZIGtpbmQgb2YgQlRMRSBz dHVmZi4gICANCg0KQW5kIHRoYXTigJlzIGp1c3QgZm9yIHRoZSBDU1IgY2hpcHNldHMgdGhlIE9O RSB0aGF0IEkgY291bGQgZmluZCBkb2N1bWVudGF0aW9uIG9uLiAgIA0KDQpXaGF0IGFib3V0IGFs bCB0aGUgb3RoZXJzPyAgIA0KDQpXaGF0IGdpdmVzIGhlcmUgbWFuPyAgIA0KDQpBbSBJIGNvbXBs ZXRlbHkgaW4gdGhlIHdyb25nIHBsYWNlIHRvIGJlIGFza2luZyBhYm91dCB0aGlzPyAgIA0KDQpJ IGRvbuKAmXQgbWVhbiBhbnkgZGlzcmVzcGVjdCwgcmVhbGx5IEkgZG9u4oCZdCEgIA0KDQpCdXQg d2hlcmUgaW4gdGhlIHdvcmxkIGRvIEkgZ28gdG8gZ2V0IHRoaXMgYmFzaWMgaW5mb3JtYXRpb24/ ICAgDQoNCkFuZCB3aHkgZG9lcyBub2JvZHkgY2FyZSBvZiBoYXZlIGFueSBoYW5kcy1vbiBleHBl cmllbmNlIGhlcmUgYW5kL29yIGludGVyZXN0PyAgIA0KDQpUaGFua3MhISAgDQoNClN0ZXZlICAN Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KVHJpZWQgdGhhdCBvZiBjb3Vyc2UgYWxyZWFkeSBk YXlzIGFnby7CoCANCkFzIHdlbGwgYXMgYW55dGhpbmcgZWxzZSBhIHNpbXBsZSBnb29nbGUgc2Vh cmNoIHR1cm5zIHVwLsKgIA0KDQpUbyBzZXQgTWF4IHR4IHBvd2VyOg0Kc3VkbyBiY2NtZCBwc3Nl dCAtcyAweDAwMDAgMHgwMDE3IDEwDQpUbyBzZXQgZGVmYXVsdCB0eCBwb3dlcjoNCnN1ZG8gYmNj bWQgcHNzZXQgLXMgMHgwMDAwIDB4MDAyZCAxMMKgwqAgDQoNCkl0IGVhdHMgYm90aCBvZiB0aG9z ZSBjb21tYW5kcyBhbmQgZG9lcyBub3QgY29tcGxhaW4gbm8gZXJyb3JzIGJ1dCBhbHNvIG5vIGNo YW5nZSBpbiBUWCBwb3dlciBvdXRwdXQuIA0KSeKAmW0gd2F0Y2hpbmcgdGhlIGJlYWNvbnMgb24g YSByZWNlaXZlciBhbmQgYSBzcGVjdHJ1bSBhbmFseXNlci7CoCANCg0KSWYgSSBpc3N1ZTogfiMg aGNpY29uZmlnIGhjaTAgaW5xdHBsDQpoY2kwOsKgwqAgVHlwZTogQlIvRURSwqAgQnVzOiBVU0IN CsKgwqDCoMKgwqDCoMKgIEJEIEFkZHJlc3M6IDAwOjE1OjgzOkVBOjBBOkI5wqAgQUNMIE1UVTog MzEwOjEwwqAgU0NPIE1UVTogNjQ6OA0KwqDCoMKgwqDCoMKgwqAgSW5xdWlyeSB0cmFuc21pdCBw b3dlciBsZXZlbDogNA0KDQpBbHdheXMgcmVhZHMgYmFjayB0aGF0IOKAnDTigJ3CoMKgIA0KDQpJ c3N1aW5nIGVpdGhlcjrCoCANCg0KIyBiY2NtZCB3YXJtcmVzZXQgDQotb3INCiMgYmNjbWQgY29s ZHJlc2V0DQoNCnJlc3VsdHMgaW4gdHJhbnNtaXR0ZXIgb2ZmIGFuZCBoYXZlIHRvIGRvOsKgIA0K DQpoY2l0b29sIC1pIGhjaTAgY21kIDB4MDggMHgwMDA4IDFFIDAyIDAxIDFBIDFBIEZGIDRDIDAw IDAyIDE1IEUyIDBBIDM5IEY0IDczIEY1IDRCIEM0IEExIDJGIDAxIDczIDQ1IDI3IDcxIDUwIDBB IDI4IDBBIDI4IDAxIEZGDQotYW5kwqAgDQp+IyBoY2ljb25maWcgaGNpMCBsZWFkdjMNCg0KVG8g Z2V0IGl0IHRyYW5zbWl0dGluZyBhZ2FpbiAoYXQgdGhlIHNhbWUgbm9uIGNoYW5nZWQgbGV2ZWwu wqAgDQoNCkFuZCANCg0KfiMgaGNpY29uZmlnIGhjaTAgaW5xdHBsDQoNCmhjaTA6wqDCoCBUeXBl OiBCUi9FRFLCoCBCdXM6IFVTQg0KwqDCoMKgwqDCoMKgwqAgQkQgQWRkcmVzczogMDA6MTU6ODM6 RUE6MEE6QjnCoCBBQ0wgTVRVOiAzMTA6MTDCoCBTQ08gTVRVOiA2NDo4DQrCoMKgwqDCoMKgwqDC oCBJbnF1aXJ5IHRyYW5zbWl0IHBvd2VyIGxldmVsOiA0DQoNCkFsd2F5cyBzaG93cyDigJw04oCd IMKgwqANCg0KT24gdG9wIG9mIGV2ZXJ5dGhpbmcgSSBoYXZlIHN0YXRlZCBhbmQgdHJpZWQgaGVy ZS4uIA0KSSBkb27igJl0IHRoaW5rIHRoYXQgc2V0dGluZyAoaWYgaXQgZXZlbiB3b3JrZWQpIGhh cyBhbnkgcmVsYXRpb24gdG8gTEUgR0ZTSyBhZHZlcnRpc2luZyBtb2RlLsKgwqAgDQoNClByZXR0 eSBzdXJlIGl0IGRvZXMgbm90LsKgwqAgDQpUaGF0IChpZiBpdCB3b3JrZWQpIHNldHMgcG93ZXIg b24gQmFzaWMgUmF0ZSBhbmQgRURSIGFzIHNlZW4gaW4gdGhlIHJlc3VsdCDigJxoY2kwOsKgwqAg VHlwZTogQlIvRURSwqAgQnVzOiBVU0LigJ0gd2hlbiBpc3N1aW5nIHRoZSBoY2ljb25maWcgaGNp MCBpbnF0cGwgY29tbWFuZC4NCg0KDQoNCsKgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQpTdGV2ZSBH bGFkZGVuDQrCoA0KTWljaGlnYW4gQnJvYWRiYW5kIFN5c3RlbXMNCkNvbm5lY3RpbmcgWW91ciBC dXNpbmVzcyENCg0KDQoNCisxIDczNC41MjcuNzE1MCBEaXJlY3QNCisxIDI0OC4zMjcuNDM4OSBG YXgNCnN0ZXZlQG1pY2hpZ2FuYnJvYWRiYW5kLmNvbQ0Kd3d3Lm1pY2hpZ2FuYnJvYWRiYW5kLmNv bQ0KDQpGcm9tOiBKb3NlcGggSHdhbmcgW21haWx0bzpqb3NlcGhzaWhAZ29vZ2xlLmNvbV0gDQpT ZW50OiBXZWRuZXNkYXksIE9jdG9iZXIgMTIsIDIwMTYgMTE6NTUgQU0NClRvOiBTdGV2ZSBHbGFk ZGVuDQpDYzogSGlldSBMZTsgQmFycnkgQnlmb3JkOyBsaW51eC1ibHVldG9vdGhAdmdlci5rZXJu ZWwub3JnDQpTdWJqZWN0OiBSZTogSG93IGNhbiB5b3Ugc2V0IFRyYW5zbWl0IHBvd2VyIGxldmVs IGluIEJsdWV0b290aCBMRSBtb2RlIGZvciBhbiBMRSBiZWFjb24/DQoNCkhpIFN0ZXZlOg0KDQrC oCBNYXliZSB5b3UgY2FuIHRyeSBDU1IncyBjb21tYW5kIGxpbmUgdXRpbGl0eSwgYmNjbWQuIFRo ZSBzeXN0ZW0gY29udHJvbCBjb21tYW5kIE1heF9UeF9Qb3dlciBhbmQgRGVmYXVsdF9UeF9Qb3dl ciBhbGxvdyB5b3UgdG8gc2V0IHR4IHBvd2VyLg0KDQpHb29kIGx1Y2shDQoNCkpvc2VwaA0KDQoN Ck9uIFdlZCwgT2N0IDEyLCAyMDE2IGF0IDExOjMzIFBNLCBTdGV2ZSBHbGFkZGVuIDxzdGV2ZUBt aWNoaWdhbmJyb2FkYmFuZC5jb20+IHdyb3RlOg0KVGhhbmtzLA0KSSB3YXMgaG9waW5nIHRoZXJl IHdhcyBhbiBlYXNpZXIgd2F5IGFuZCBzb21laG93IGF0IHRoZSBjb21tYW5kIGxpbmUgYnV0IEkn bGwgZG8gd2hhdCBJIG5lZWQgdG8gZG8gYW5kIGZpZ3VyZSBpdCBvdXQgc29tZWhvdy4NCkkgdXN1 YWxseSBlbmQgdXAgb24gMTAgb3RoZXIgcmFiYml0IHRyYWlscyB3aGVuIGl0IGNvbWVzIHRvIGhh dmluZyB0byByZWNvbXBpbGUgYW55dGhpbmcgYmVjYXVzZSBpdCB1c3VhbGx5IGp1c3QgZmFpbHMg Zm9yIG1lIGFuZCBJJ20NCm5vdCB5ZXQgd2VsbCB2ZXJzZWQgaW4gdHJvdWJsZXNob290aW5nIHdo ZW4gdGhpbmdzIHdvbid0IGNvbXBpbGUgc3VjY2Vzc2Z1bGx5IGFzaWRlIGZyb20gd2hhdCBJIGNh biBlYXNpbHkgZ29vZ2xlLg0KDQpJIGFsc28gdGhpbmsgaXQncyBhIGxpdHRsZSBtb3JlIGNvbXBs aWNhdGVkIHRoYW4ganVzdCBzZXR0aW5nIHRoZSBwb3dlci4NCkkgaGF2ZSBnYXRoZXJlZCBhdCBs ZWFzdCB3aXQgaHRoZSBDU1IgY2hpcHNldCB0aGF0IHRoZXJlIGFyZSBhdCBsZWFzdCAzIHNlcGFy YXRlIHBvd2VyIHNldHRpbmdzIHRoYXQgY2FuIGJlIGFkanVzdGVkIGFuZCBub3QgYW55IG92ZXJh bGwgcG93ZXIgc2V0dGluZy4NClNvIHRoZSB2YXJpb3VzIG1vZHVsYXRpb24gbW9kZXMgKGluY2x1 ZGluZyBHRlNLIC1MRSBhZHZlcnRpc2luZy0pIG5lZWQgdG8gYmUgYWRkcmVzc2VkIGFuZCBzZXQg aW5kaXZpZHVhbGx5Lg0KVGhlcmUncyBub3QgYSBtYXN0ZXIgdHJhbnNtaXQgbGV2ZWwgdGhhdCBz ZXRzIHRoZW0gYWxsLg0KDQoNClN0ZXZlIEdsYWRkZW4NCsKgDQpNaWNoaWdhbiBCcm9hZGJhbmQg U3lzdGVtcw0KQ29ubmVjdGluZyBZb3VyIEJ1c2luZXNzIQ0KDQoNCg0KKzEgNzM0LjUyNy43MTUw wqBEaXJlY3QNCisxIDI0OC4zMjcuNDM4OcKgRmF4DQpzdGV2ZUBtaWNoaWdhbmJyb2FkYmFuZC5j b20NCnd3dy5taWNoaWdhbmJyb2FkYmFuZC5jb20NCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCkZyb206IEhpZXUgTGUgW21haWx0bzpoaWV1LmxlQHZlcmlrc3lzdGVtcy5jb21dDQpTZW50 OiBXZWRuZXNkYXksIE9jdG9iZXIgMTIsIDIwMTYgMTowMCBBTQ0KVG86IFN0ZXZlIEdsYWRkZW4N CkNjOiBCYXJyeSBCeWZvcmQ7IGxpbnV4LWJsdWV0b290aEB2Z2VyLmtlcm5lbC5vcmcNClN1Ympl Y3Q6IFJlOiBIb3cgY2FuIHlvdSBzZXQgVHJhbnNtaXQgcG93ZXIgbGV2ZWwgaW4gQmx1ZXRvb3Ro IExFIG1vZGUgZm9yIGFuIExFIGJlYWNvbj8NCg0KSGksDQoNCkluIG15IG9waW5pb24sIHRoZSBv bmx5IHdheSBJIGNhbiBmaW5kIHRvIGluY3JlYXNlIHRoZSB0eF9wb3dlciBpcyB0byByZWNvbXBp bGUgdGhlIGxpbnV4IGtlcm5lbC4gVGhlcmUgbWF5IGJlIGEgYmV0dGVyIHdheQ0KDQpJdCBzZWVt cyB0aGF0IGJsdWV0b290aCBzdGFjayB3aXRoaW4ga2VybmVsIHNlcGFyYXRlZCBpbnRvIHR3byBj bGFzc2VzOg0KMS4gSW5xdWlyeSBUeF9wb3dlci4NCjIuIEFkdmVydGlzZSBUeF9wb3dlci4NCg0K QW5kIHRoZSBkZWZhdWx0IHZhbHVlIGlzIDAuDQoNCllvdSBjYW4gdGFrZSBhIGxvb2sgYXQ6DQoq aGNpX2FsbG9jX2Rldih2b2lkKcKgIGZ1bmN0aW9uIHdpdGhpbiBuZXQvYmx1ZXRvb3RoL2hjaV9j b3JlLmMgZmlsZQ0KaGRldi0+aW5xX3R4X3Bvd2VyID0gSENJX1RYX1BPV0VSX0lOVkFMSUQ7IGFk dl90eF9wb3dlciA9DQpoZGV2LT5IQ0lfVFhfUE9XRVJfSU5WQUxJRDsNCg0KSG9wZSBpdCB3aWxs IGJlIGhlbHBmdWwgdG8geW91Lg0KDQpSZWdhcmRzLA0KSGlldS4NCg0KT24gV2VkLCBPY3QgMTIs IDIwMTYgYXQgMTI6NTIgQU0sIFN0ZXZlIEdsYWRkZW4gPHN0ZXZlQG1pY2hpZ2FuYnJvYWRiYW5k LmNvbT4gd3JvdGU6DQo+IFRoYW5rcyEhDQo+IFllcyBpdCdzIG5pY2UgdG8gaGVhciBmcm9tIHNv bWVib2R5Lg0KPg0KPiBJJ3ZlIGJlZW4gc2NvdXJpbmcgdGhlIHdlYiBzbyBmYXIgdG8gbm8gYXZh aWwgb24gd2hhdCBJIHRoaW5rIHNob3VsZCBiZSBhIHNpbXBsZSBhbmQgYWNjZXNzaWJsZSBzZXR0 aW5nLg0KPiBJdCdzIG9idmlvdXMgZnJvbSB0aGUgc3BlY3MgdGhhdCBtb3N0IGNoaXBzIGhhdmUg YSBwcm9ncmFtbWFibGUgKHNldHRhYmxlKSB0cmFuc21pdHRlciBwb3dlci4NCj4gQW5kIHdpdGgg YmVhY29ucyBpdCBpcyB2ZXJ5IGltcG9ydGFudCBhbmQgZXhwZWN0ZWQgdGhhdCBvbmUgc2hvdWxk IGJlIGFibGUgdG8gYWRqdXN0IHRoZSB0cmFuc21pdHRlciBsZXZlbC4NCj4gQWxsIG9mIHRoZSBz ZXJpYWwgYm9hcmRzIGRvIGl0IHdpdGggc2ltcGxlIEFUIGNvbW1hbmRzLg0KPg0KPiBJIGp1c3Qg ZG9uJ3QgZ2V0IHdoeSB0aGVyZSdzIG5vIGRvY3VtZW50YXRpb24gb24gaG93IHRvIGRvIGl0IHdp dGggYSBVU0IgZGV2aWNlISENCj4NCj4gVGhleSBzZWxsIGNsYXNzIDEgYmx1ZXRvb3RoIHVzYiBk b25nbGVzIGZvciBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIG1vcmUgcmFuZ2UgKDEwMG0pIGlz IHF1b3RlZCBvbiBtb3N0IGNsYXNzIDEgcHJvZHVjdHMuDQo+DQo+IEknZCBleHBlY3QgdGhlcmUg c2hvdWxkIGJlIGEgc3RyYWlnaHQgZm9yd2FyZCBlYXN5IHRvIHNldCBwb3dlciBpbiBMRSBtb2Rl IHRvIGdldCBtb3JlIHJhbmdlIG9yIHNhdmUgcG93ZXIgYW5kIGxpbWl0IHJhbmdlIHdoZW4gd2Fu dGVkLg0KPg0KPiBCdXQgSSdtIHJlYWxseSBub3QgZmluZGluZyB0aGlzIGluZm9ybWF0aW9uIG91 dCB0aGVyZSENCj4NCj4gSSBkb247dCB1bmRlcnN0YW5kIHdoYXQgSSBhbSBkb2luZyB3cm9uZyBv ciB3aHkgdGhpcyBpcyBzbyBkaWZmaWN1bHQNCj4gdG8gZmluZC7CoCA6KQ0KPg0KPg0KPg0KPg0K Pg0KPg0KPg0KPiBPbiAxMSBPY3RvYmVyIDIwMTYgYXQgMTc6NTAsIFN0ZXZlIEdsYWRkZW4gPHN0 ZXZlQG1pY2hpZ2FuYnJvYWRiYW5kLmNvbT4gd3JvdGU6DQo+PiBJcyB0aGlzIHRoaXMgbGlzdCBq dXN0IHNvbWUga2luZCBvZiBhdXRvbWF0ZWQgcGF0Y2ggYW5ub3VuY2VtZW50IGxvZyBhbmQgbm90 IGFuIGFjdHVhbCBtYWlsaW5nIGxpc3Qgd2hlcmUgeW91IGNhbiBhc2sgYW55dGhpbmcgYWJvdXQg Ymx1ZXRvb3RoLg0KPj4gVGhpcyBpcyBhbGwgSSBoYXZlIHNlZW4gaGVyZSBmb3IgdGhlIHBhc3Qg ZmV3IGRheXM/DQo+PiBXaGVyZSBjYW4gSSBhc2sgYW4gYWN0dWFsIHF1ZXN0aW9uIGFib3V0IGJs dWV0b290aD8NCj4NCj4gVGhlcmUgYXJlIHNvbWUgcmVhbCBodW1hbnMgaGVyZSB0b28hwqAgOi0p DQo+DQo+IElmIHlvdSBsb29rIGJhY2sgb24gdGhlIGFyY2hpdmUgb2YgdGhpcyBsaXN0IHlvdSB3 aWxsIHNlZSBhIG1peHR1cmUgb2YNCj4gcXVlc3Rpb25zIGFuZCBwYXRjaCByZXF1ZXN0cy4NCj4g bWFyYy5pbmZvLz9sPWxpbnV4LWJsdWV0b290aA0KPg0KPiBJJ3ZlIGtlcHQgcXVpZXQgYXMgSSdt IG5vdCBzdXJlIEkgY2FuIGFuc3dlciBxdWVzdGlvbnMuIFRvIG9mZmVyIHNvbWUNCj4gc2hhcmVk IGV4cGVyaWVuY2UsIEkgY2FuIHNheSB0aGF0IEkndmUgYmVlbiBleHBlcmltZW50aW5nIHdpdGgN Cj4gKEVkZHlzdG9uZSkgYmVhY29ucyBvbiBMaW51eCBzaW5nbGUgYm9hcmQgY29tcHV0ZXJzIGFj Y2Vzc2luZyBCbHVlWg0KPiB0aHJvdWdoIHRoZSBEQnVzIEFQSSB1c2luZyBQeXRob24uIEkgYWxz byBoYXZlIG5vdCBmb3VuZCBhIHdheSB0bw0KPiBjaGFuZ2UgdGhlIHBvd2VyIGxldmVsIG9mIGFk dmVydGlzZW1lbnRzIGVpdGhlci4gRm9yIHdoYXQgSSdtIGRvaW5nLA0KPiBqdXN0IG1ha2luZyBz dXJlIHRoZSBUWCBwb3dlciBpbiB0aGUgRWRkeXN0b25lIGFkdmVydCBtYXRjaGVzIHdoYXQgdGhl DQo+IGRvbmdsZSBpcyBhY3R1YWxseSBicm9hZGNhc3RpbmcgaGFzIGJlZW4gZ29vZCBlbm91Z2gu DQo+DQo+IFNvcnJ5IEkgY291bGRuJ3QgYmUgb2YgbW9yZSBoZWxwLg0KPg0KPiBSZWdhcmRzLA0K PiBCYXJyeQ0KPg0KPj4NCj4+DQo+Pg0KPj4NCj4+IFN0ZXZlIEdsYWRkZW4NCj4+DQo+PiBNaWNo aWdhbiBCcm9hZGJhbmQgU3lzdGVtcw0KPj4gQ29ubmVjdGluZyBZb3VyIEJ1c2luZXNzIQ0KPj4N Cj4+DQo+Pg0KPj4gKzEgNzM0LjUyNy43MTUwIERpcmVjdA0KPj4gKzEgMjQ4LjMyNy40Mzg5IEZh eA0KPj4gc3RldmVAbWljaGlnYW5icm9hZGJhbmQuY29tDQo+PiB3d3cubWljaGlnYW5icm9hZGJh bmQuY29tDQo+Pg0KPj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0K Pj4gRnJvbTogU3RldmUgR2xhZGRlbg0KPj4gU2VudDogU3VuZGF5LCBPY3RvYmVyIDA5LCAyMDE2 IDEyOjExIFBNDQo+PiBUbzogbGludXgtYmx1ZXRvb3RoQHZnZXIua2VybmVsLm9yZw0KPj4gU3Vi amVjdDogSG93IGNhbiB5b3Ugc2V0IFRyYW5zbWl0IHBvd2VyIGxldmVsIGluIEJsdWV0b290aCBM RSBtb2RlIGZvciBhbiBMRSBiZWFjb24/DQo+Pg0KPj4gSGksDQo+PiBNeSBuYW1lIGlzIFN0ZXZl IGFuZCBJIGFtIGxvY2F0ZWQgaW4gQW5uIEFyYm9yIE1pY2hpZ2FuIFVTQS4NCj4+DQo+PiBJIGFt IG5ld8KgIGJsdWV0b290aCBMRSBhbmQgbGF0ZWx5IGFtIG9ic2Vzc2VkIHdpdGggQmx1ZXRvb3Ro IExFIGJlYWNvbnMgYW5kIHRyeWluZyB0aGVtIG91dC4NCj4+DQo+PiBJIGhhdmUgcmVhZCBhcnRp Y2xlIGFmdGVyIGFydGljbGUgYW5kIHBhZ2UgYWZ0ZXIgcGFnZSBhYm91dCBob3cNCj4+IHBlb3Bs ZSBoYXZlIHNldHVwIHVwIGJlYWNvbnMgd2l0aCBVU0IgQlQgNC4wIGludGVyZmFjZXMgYXMgd2Vs bCBhcyBzZXJpYWwgYmx1ZXRvb3RoIGJvYXJkcy4NCj4+DQo+PiBJIGFtIGN1cnJlbnRseSBleHBl cmltZW50aW5nIHdpdGggYSBiZWFjb24gcnVubmluZyBvbiBhIFJhc3BiZXJyeSBQaS1CIGFuZCB1 c2luZyBhbiBleHRlcm5hbCBVU0IgQmx1ZXRvb3RoIDQuMCBjbGFzcyAxIGRvbmdsZS4NCj4+DQo+ PiBNeSBmcnVzdHJhdGlvbiBpcyB0aGF0IEkgaGF2ZSBub3QgYmVlbiBhYmxlIHRvIGZpbmQgYW55 IHVzZWZ1bA0KPj4gaW5mb3JtYXRpb24gaW4gaG93IHRvIGNoYW5nZSB0aGUgVHJhbnNtaXR0ZXIg cG93ZXIgbGV2ZWwgd2hlbiBpbiBMRSBtb2RlLg0KPj4NCj4+IFRoZSBkb25nbGUgYXBwZWFycyB0 byBiZSB3b3JraW5nIGF0IGRlZmF1bHQgbGV2ZWwgYmVsb3cgemVybyBkYm0uDQo+Pg0KPj4gVGhl IHdob2xlIHBvaW50IG9mIGJ1aWxkaW5nIHlvdXIgb3duIGJlYWNvbiB0aGlzIHdheSBpcyB0byBi ZSBhYmxlIHRvDQo+PiBjdXN0b21pemUgaXQgYW5kIHNldHRpbmcgdGhlIHBvd2VyIGxldmVsIGlz IGFuIGltcG9ydGFudCBrZXkgaXRlbSB0aGF0IHNob3VsZCBiZSBlYXNpbHkgYWNjZXNzaWJsZSB5 ZXQgSSBmaW5kIHRoYXQgTk9CT0RZIGV2ZXIgZXZlbiBtZW50aW9ucyBpdCBsZXQgYWxvbmUgZG8g dGhleSBleHBsYWluIG9yIHByb3ZpZGUgYSB3YXkgdG8gc2V0IHRoZSBwb3dlci4NCj4+DQo+Pg0K Pj4gRXZlcnkgdGV4dCB0aGF0IEkgaGF2ZSBmb3VuZCB0aGF0IGRldGFpbHMgYmVhY29uIHNldHVw cyBmcm9tIGNvbW1hbmQgbGluZSBuZXZlciBib3RoZXIgdG8gbWVudGlvbiBzZXR0aW5nIGJlYWNv biBUWCBwb3dlci4NCj4+DQo+PiBBbGwgdGhlIHBhZ2VzIEkgaGF2ZSBmb3VuZCBzZWVtIHRvIGNv cHkgZWFjaCBvdGhlciBhbmQgcmVwZWF0IHRoZQ0KPj4gc2FtZSBpbmZvcm1hdGlvbiBvdmVyICYg b3ZlciBCdXQgbmV2ZXIgZ2V0IGFyb3VuZCB0byBldmVuIG1lbnRpb25pbmcgb3IgZGlzY3Vzc2lu ZyBzZXR0aW5nIHRoZSBwb3dlciBvdXRwdXQgbGV2ZWwgb2YgdGhlIGJsdXRvb3RoIGRvbmdsZS4N Cj4+DQo+PiBzdWRvIGhjaXRvb2wgLWkgaGNpMCBjbWQgMHgwOCAweDAwMDggMUUgMDIgMDEgMUEg MUEgRkYgNEMgMDAgMDIgMTUgWw0KPj4gOTIgNzcgODMgMEEgQjIgRUIgNDkgMEYgQTEgREQgN0Yg RTMgOEMgNDkgMkUgREUgXSBbIDAwIDAwIF0gWyAwMCAwMCBdDQo+PiBDNSAwMA0KPj4NCj4+IFRo ZSBieXRlIGp1c3QgbGVmdCBvZiB0aGUgbGFzdCBvbmUgaXMgdGhlICJyZXBvcnRlZCIgVFggbGV2 ZWwgdGhhdCB5b3UgYXJlIHRyYW5zbWl0dGluZyBhdC4NCj4+IFdoaWNoIG1lYW5zIHlvdSdyZSBz dXBwb3NlZCB0byBrbm93IChvciBndWVzcz8pIHdoYXQgZGJtIGxldmVsIHlvdSBhcmUgYWN0dWFs bHkgdHJhbnNtaXR0aW5nIGF0IGFuZCBzZXQgaXQgaGVyZSB0byBkaXNwbGF5IHRvIHRoZSB3b3Js ZCB3aGF0IHlvdXIgdHJhbnNtaXR0ZXIgbGV2ZWwgaXMgc2V0IHRvIHNvIHRoZXkgY2FuIHJhbmdl IChndWVzcyBvciBlc3RpbWF0ZSBkaXN0YW5jZSBmcm9tIFRYKS4NCj4+IFRoaXMgdmFsdWUgZG9l cyBub3QgaW5mbHVlbmNlIG9yIHJlZmxlY3QgYWN0dWFsIHRyYW5zbWl0IHBvd2VyLg0KPj4NCj4+ IFBsZWFzZSBoZWxwISENCj4+DQo+PiBDb3VsZCB1c2UgYW55IHBvaW50ZXJzLg0KPj4NCj4+IEkn bSBhIGhhcmR3YXJlIGd1eSBhcyB3ZWxsIHNvIG5vdCB2ZXJ5IGV4cGVyaWVuY2VkIGluIHNvZnR3 YXJlL3Byb2dyYW1taW5nIGJ1dCBJJ20gd2lsbGluZyB0byB0cnkgYW55dGhpbmcgdG8gZ2V0IGNv bnRyb2wgb2YgdGhpcy4NCj4+DQo+PiBCZWVuIGF0IHRoaXMgZm9yIG92ZXIgYSB3ZWVrIGFuZCBo YXZlIHNvbWUgd29ya2luZyBiZWFjb25zIGJ1dCBubyBjb250cm9sIG9mIHRyYW5zbWl0IHBvd2Vy IGxldmVsLg0KPj4NCj4+IEFtIHVzaW5nIFRyZW5kbmV0IFVTQiBkb25nbGVzIHdoaWNoIGFwcGVh ciB0byB1c2UgYSBDYW1icmlkZ2UgQ2hpcC7CoCBCdXQgSSdtIG5vdCBleGFjdGx5IHN1cmUgd2hp Y2ggY2hpcC4NCj4+DQo+Pg0KPj4gOn4jIGxzdXNiDQo+PiBCdXMgMDAxIERldmljZSAwMDc6IElE IDBhMTI6MDAwMSBDYW1icmlkZ2UgU2lsaWNvbiBSYWRpbywgTHRkDQo+PiBCbHVldG9vdGggRG9u Z2xlIChIQ0kgbW9kZSkNCj4+DQo+Pg0KPj4gcm9vdEByYXNwYmVycnlwaTp+IyBoY2ljb25maWcg aGNpMA0KPj4gaGNpMDrCoCDCoFR5cGU6IEJSL0VEUsKgIEJ1czogVVNCDQo+PsKgIMKgIMKgIMKg IMKgQkQgQWRkcmVzczogMDA6MTU6ODM6RUE6MEE6QjnCoCBBQ0wgTVRVOiAzMTA6MTDCoCBTQ08g TVRVOiA2NDo4DQo+PsKgIMKgIMKgIMKgIMKgVVAgUlVOTklORw0KPj7CoCDCoCDCoCDCoCDCoFJY IGJ5dGVzOjc4MCBhY2w6MCBzY286MCBldmVudHM6NTAgZXJyb3JzOjANCj4+wqAgwqAgwqAgwqAg wqBUWCBieXRlczoxMTEwIGFjbDowIHNjbzowIGNvbW1hbmRzOjUwIGVycm9yczowDQo+Pg0KPj4N Cj4+DQo+Pg0KPj4NCj4+DQo+Pg0KPj4NCj4+DQo+Pg0KPj4NCj4+DQo+Pg0KPj4NCj4+IC0tDQo+ PiBUbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMgbGlzdDogc2VuZCB0aGUgbGluZSAidW5zdWJzY3Jp YmUNCj4+IGxpbnV4LWJsdWV0b290aCIgaW4gdGhlIGJvZHkgb2YgYSBtZXNzYWdlIHRvDQo+PiBt YWpvcmRvbW9Admdlci5rZXJuZWwub3JnIE1vcmUgbWFqb3Jkb21vIGluZm8gYXQNCj4+IGh0dHA6 Ly92Z2VyLmtlcm5lbC5vcmcvbWFqb3Jkb21vLWluZm8uaHRtbA0KPiAtLQ0KPiBUbyB1bnN1YnNj cmliZSBmcm9tIHRoaXMgbGlzdDogc2VuZCB0aGUgbGluZSAidW5zdWJzY3JpYmUNCj4gbGludXgt Ymx1ZXRvb3RoIiBpbiB0aGUgYm9keSBvZiBhIG1lc3NhZ2UgdG8gbWFqb3Jkb21vQHZnZXIua2Vy bmVsLm9yZw0KPiBNb3JlIG1ham9yZG9tbyBpbmZvIGF0wqAgaHR0cDovL3ZnZXIua2VybmVsLm9y Zy9tYWpvcmRvbW8taW5mby5odG1sDQoNCg0KDQotLQ0KLS0tLSBIaWV1IExlIC0tLQ0KDQoNCg0K DQotLSANCg0KSm9zZXBoIFNoeWgtSW4gSHdhbmcNCkVtYWlsOiBqb3NlcGhzaWhAZ29vZ2xlLmNv bQ0KDQo=