Return-Path: From: "Gu, Chao Jie" To: Arman Uguray , BlueZ development , Johan Hedberg Subject: RE: [RFC v1 0/1] doc/gatt-api: New API properties and methods for the GATT D-Bus API. Date: Wed, 23 Jul 2014 13:22:08 +0000 Message-ID: <3D02B219753AD44CBDDDE484323B1774112D121F@SHSMSX104.ccr.corp.intel.com> References: <1405986034-29122-1-git-send-email-armansito@chromium.org> <20140722085507.GA29664@t440s.lan> In-Reply-To: Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Sender: linux-bluetooth-owner@vger.kernel.org List-ID: SGkgQXJtYW4sDQoNCj5UaGUgcHJvYmxlbSBpcyB0aGF0IE9iamVjdE1hbmFnZXIgaGFzIG5vIGNs ZWFyIHdheSB0byB0ZWxsIGEgY2xpZW50IHRoYXQgInRoaXMgc3Vic2V0IG9mIG9iamVjdCBwYXRo cyBoYXZlIGJlZW4gcHVibGlzaGVkIiBhbmQgd2hlbiB0aGV5IGFyZSBhbGwgYXZhaWxhYmxlIHZp YSBHZXRNYW5hZ2VkT2JqZWN0cy4gVGhlIG1vc3QgYSBjbGllbnQgY2FuIGRvIGlzIG9ic2VydmUg dGhlIEludGVyZmFjZXNBZGRlZCBzaWduYWwgYW5kIHRoYXQgc2lnbmFsIGlzIHNlbnQgb24gYSBw ZXIgb2JqZWN0IHBhdGggYmFzaXMuIEZvciBtb3N0IGV4dGVybmFsIGFwcGxpY2F0aW9ucywgDQo+ aXQgbWlnaHQgYmUgZW5vdWdoIGJ1dCBJIHdvdWxkIGxpa2UgYXBwbGljYXRpb24gQVBJcyB0byBo YXZlIHRvIGFiaWxpdHkgdG8gc2F5ICJhbGwgb2JqZWN0cyBwdWJsaXNoZWQsIHNlcnZpY2UgaXMg cmVhZHkgdG8gdXNlIi4NCg0KT2YgY291cnNlIGlmIERCdXMgaGFzIHRoZXNlIGFycmF5IG9iamVj dCBvZiBjaGFyYWN0ZXJpc3RpYyBwcm9wZXJ0eSwgdGhlcmUgaXMgbW9yZSBjbGVhciBhbmQgZWFz eSBmb3IgY2xpZW50IHRvIGdldC4gSG93ZXZlciwgaW4gbXkgb3BpbmlvbiwgYmx1ZXoganVzdCBw dXQgb3V0IGxlYXN0IGJ1dCBlbm91Z2ggaW5mb3JtYXRpb24gaW4gREJ1cyBIaWVyYXJjaHkgZm9y IGFwcGxpY2F0aW9uIHRvIHVzZS4gSnVzdCB5b3Ugc2FpZCwgdG8gYWRkIGFycmF5IG9iamVjdCBw cm9wZXJ0eSAsIHRoaXMgY291bGQgZXZlbiBiZSBhIHNpbXBsZSBib29sZWFuIHByb3BlcnR5IHN1 Y2ggYXMgIkRpc2NvdmVyeUNvbXBsZXRlIi4gVGhhdCB3b3VsZCBiZSBhZGQgbW9yZSBwcm9wZXJ0 eSBpbiBEQnVzLCBzbyBvbiB0aGUgY29udHJhcnkgaXQgd291bGQgbm90IGxldCBEQnVzIEhpZXJh cmNoeSBsb29rIHNpbXBsZSBhbmQgY2xlYXIuDQpUaHJvdWdoIHRoZSBvYmplY3RBZGRlZCBhbmQg SW50ZXJmYWNlQWRkZWQgU2lnbmFsLCBhcHBsaWNhdGlvbiBjYW4gYWNxdWlyZSB0aGlzIHN1YnNl dCBvZiBvYmplY3QgaW4gZmFjdC4gSSBhZG1pdCB0aGF0IGFwcGxpY2F0aW9ucyBoYXZlIHRvIGhh bmRsZSB0aGVzZSBvYmplY3QgaW5mb3JtYXRpb24gaW4gdGhlaXIgY29kZSB0byBnZXQgdGhpcyBz dWJzZXQgb2Ygb2JqZWN0IHBhdGhzLCBidXQgaXQgbWFrZSBzZW5zZS4gSWYgYmx1ZXogZXhwb3J0 IHRoZSBhcnJheSBvYmplY3Qgb2YgY2hhcmFjdGVyaXN0aWMgdG8gYXBwbGljYXRpb24gLCB3aHkg YWRhcHRlciBkaWQgbm90IGV4cG9ydCBhcnJheSBvYmplY3Qgb2YgZGV2aWNlcyBhbmQgZGV2aWNl IG5vdCBleHBvcnQgYXJyYXkgb2JqZWN0IG9mIHNlcnZpY2VzID8NCg0KPlRoaXMgaXMgZXhhY3Rs eSB0aGUgcHJvYmxlbS4gQSBzaW1wbGUgdXBkYXRlIG9mIHRoaXMgcHJvcGVydHkgbGV0cyB0aGUg dXNlciBrbm93IHRoYXQgdGhlIGhpZXJhcmNoeSBoYXMgYmVlbiBzZXQgdXAuIEZvciBhbGwgSSBj YXJlLCB0aGlzIGNvdWxkIGV2ZW4gYmUgYSBzaW1wbGUgYm9vbGVhbiBwcm9wZXJ0eSBzdWNoIGFz ICJEaXNjb3ZlcnlDb21wbGV0ZSINCj5idXQgSSBraW5kIG9mIGxpa2UgdGhlIGxpc3Qgb2YgY2hh cmFjdGVyaXN0aWNzIGV2ZW4gdGhvdWdoIEdldE1hbmFnZWRPYmplY3RzL0ludGVyZmFjZXNBZGRl ZCwgYXMgeW91IHNheSwgY2FuIGFjaGlldmUgdGhlIHNhbWUgcmVzdWx0LiBXZSBoYXZlIHRoZSBz aW1pbGFyICJJbmNsdWRlcyIgcHJvcGVydHkgYWxyZWFkeSwgc28gaXQncyBub3QgZW50aXJlbHkg aW5jb25zaXN0ZW50IGZyb20gYW4gQVBJIHN0YW5kcG9pbnQNCg0KU29tZSBwb2ludHMgSSBoYXZl IHJlZmVycmVkIHRvIGFzIGFib3ZlICwgdGhlcmUgaXMgYW5vdGhlciBwb2ludCBJIGRpc2FncmVl IHdpdGggeW91LiAiSW5jbHVkZWQgIiBwcm9wZXJ0eSBpcyB0b3RhbGx5IGRpZmZlcmVudCB3aXRo IGFycmF5IG9iamVjdCBvZiBjaGFyYWN0ZXJpc3RpYywgIkluY2x1ZGVzIiBwcm9wZXJ0eSBpcyBl c3NlbnRpYWwgdGhhdCBjb25mb3JtIHRvIGxlYXN0IGJ1dCBlbm91Z2ggaW5mb3JtYXRpb24gaW4g REJ1cyBwcmluY2lwbGUuIEJlY2F1c2UgaWYgYmx1ZXogZG9lcyBub3QgZXhwb3J0IGluY2x1ZGUg cHJvcGVydHksIGFwcGxpY2F0aW9uIHdpbGwgbm90IGtub3cgaWYgb25lIHNlcnZpY2UgaGF2ZSBp bmNsdWRlZCBzZXJ2aWNlIG9yIG5vdCwgYW5kIHdoaWNoIG9iamVjdCBzZXJ2aWNlcyBiZWxvbmcg dG8gaXQgaWYgaW5jbHVkZXMgZXhpc3QuIFRoZXNlIGluZm9ybWF0aW9uIGNhbm5vdCBiZSBhY2Nl c3NlZCB3aXRob3V0ICJJbmNsdWRlcyIgcHJvcGVydHkuDQoNCj5BcmUgeW91IHJlZmVycmluZyB0 byB0aGUgSGVhcnRSYXRlTWFuYWdlcjEgaGllcmFyY2h5PyBTaW5jZSB3ZSdyZSBub3cgYnVpbGRp bmcgYSBnZW5lcmljIEFQSSwgd2UgbmVlZCBhIHByb3BlciB3YXkgb2YgcmVmZXJlbmNlLWNvdW50 ZWQsIHBlci1jb25uZWN0aW9uIHdheSB0byBhY2Nlc3MgdGhlIENsaWVudCBDaGFyYWN0ZXJpc3Rp YyBDb25maWd1cmF0aW9uIGRlc2NyaXB0b3IuIEluIHRoaXMgcHJvcG9zYWwsIGNhbGxpbmcgV3Jp dGVWYWx1ZSBvbiB0aGUgQ0NDIGRlc2NyaXB0b3Igd2lsbCBhbHdheXMgZmFpbCB3aXRoIFdyaXRl Tm90UGVybWl0dGVkLg0KDQo+RG8geW91IGhhdmUgYW55IHN1Z2dlc3Rpb25zIGZvciB0aGUgbWV0 aG9kIG5hbWUgb3IgYXJlIHlvdSBPSyB3aXRoIFN0YXJ0Tm90aWZ5IGZvciBub3c/IFdlIGNhbiBh bHdheXMgY2hhbmdlIGl0IGxhdGVyLg0KDQpZZXMgLCBJIHJlZmVyIHRvIEhlYXJ0UmF0ZU1hbmFn ZXIxLiBUaGUgcmVhc29uIHRoYXQgSSByZWZlciB0byB0aGlzIEhlYXJ0UmF0ZU1hbmdlcjEgaXMg aW4gbXkgaW1wbGVtZXRhaXRvbiBmb3IgZXhpc3RpbmcgZ2F0dC1hcGksIEkgZm91bmQgTEUgcHJv ZmlsZSB3aWxsIGFsc28gYWZmZWN0IHRoZSBHYXR0IERCdXMgSGllcmFyY2h5LiBGb3IgZXhhbXBs ZSwgd2hlbiBhcHBsaWNhdGlvbiB1c2UgdGhlIFJlZ2lzdGVyV2F0Y2hlciBtZXRob2QgaW4gSGVh cnRyYXRlIHByb2ZpbGUsIGhlYXJ0cmF0ZSBjaGFyYWN0ZXJpc3RpYyB3aG9zZSBDQ0MgZGVzY3Jp cHRvciBub3RpZmljYXRpb24gYml0IGlzIG9uLiBUaGVuIGhlYXJ0cmF0ZSBjaGFyYWN0ZXJpc3Rp YyBpbiBEQnVzIGFuZCBpdHMnIENDQyBkZXNjcmlwdG9yIGhhdmUgdG8gZW1pdCBwcm9wZXJ0eWNo YW5nZWQgc2lnbmFsIHRvIGFwcGxpY2F0aW9uLiBXaGVuIHVucmVnc2l0ZXJXYXRjaGVyICxDQ0Mg ZGVzY3JpcHRvciBpbiBEQnVzIGFsc28gaGFzIHRvIGVtaXQgcHJvcGVydHljaGFuZ2VkIHNpZ25h bC4gRXZlbiBpZiBidWlsZGluZyB0aGlzIGdlbmVyaWMgQVBJLCBJdCBzdGlpbCBjYW4gbm90IGln bm9yZSB0aGlzIHRhc2suDQoNCkkgYW0gdG90YWxseSBvayB3aXRoIGdlbmVyaWMgbm90aWZ5IEFQ SSB0byBhcHBsaWNhdGlvbiwgYnV0IEkgYW0gYWZyYWlkIHRoYXQgdGhlcmUgd291bGQgYmUgY29u ZmxpY3QgYmV0d2VlbiBMRSBwcm9maWxlIGFuZCBnZW5lcmljIG5vdGlmeSBBUEkuIEJlY2F1c2Ug YXBwbGljYXRpb24gZG9lcyBub3Qga25vdyBSZWdpc3RlcldhdGNoZXIgbWV0aG9kIGhhcyBlbmFi bGUgdGhlIG5vdGlmaWNhdGlvbi4gSSBkbyBub3Qga25vdyBvcmcuYmx1ZXouSW5wcm9ncmVzcyBl cnJvciBjb2RlIGNvdWxkIHdhcm4gdGhpcyBjb25kaXRpb24gb3Igbm90LiANCg0KQlRXLCB5b3Ug c2FpZGkgdGhhdCBjYWxsaW5nIFdyaXRlVmFsdWUgb24gdGhlIENDQyBkZXNjcmlwdG9yIHdpbGwg YWx3YXlzIGZhaWwgd2l0aCBXcml0ZU5vdFBlcm1pdHRlZC4gSSB0aGluayBnYXR0X3dyaXRlX2No YXIgZnVuY3Rpb24gY2FuIHdyaXRlIENDQyBkZXNjcmlwdG9yICwgZG8geW91IG1lYW4gaW4gV3Jp dGVWYWx1ZSBtZXRob2QgdG8gcmVmdXNlIHdyaXRlIENDQyBkZXNjcmlwdG9yIG9uIHB1cnBvc2Ug YW5kIHJldHVybiBXcml0ZU5vdFBlcm1pdHRlZCA/DQoNClRoYW5rcw0KQ2hhb2ppZSBHdQ0KLS0t LS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IGFybWFuc2l0b0Bnb29nbGUuY29tIFttYWls dG86YXJtYW5zaXRvQGdvb2dsZS5jb21dIE9uIEJlaGFsZiBPZiBBcm1hbiBVZ3VyYXkNClNlbnQ6 IFdlZG5lc2RheSwgSnVseSAyMywgMjAxNCA0OjQxIEFNDQpUbzogQmx1ZVogZGV2ZWxvcG1lbnQ7 IEpvaGFuIEhlZGJlcmc7IEd1LCBDaGFvIEppZQ0KU3ViamVjdDogUmU6IFtSRkMgdjEgMC8xXSBk b2MvZ2F0dC1hcGk6IE5ldyBBUEkgcHJvcGVydGllcyBhbmQgbWV0aG9kcyBmb3IgdGhlIEdBVFQg RC1CdXMgQVBJLg0KDQpIaSBDaGFvamllLCBKb2hhbiwNCg0KUGxlYXNlIHNlZSBteSByZXNwb25z ZXMgaW5saW5lOg0KDQoNCj4+ICsgICAgICAgICAgICAgYXJyYXl7b2JqZWN0fSBDaGFyYWN0ZXJp c3RpY3MgW3JlYWQtb25seV0NCj4+ICsNCj4+ICsgICAgICAgICAgICAgICAgICAgICBBcnJheSBv ZiBvYmplY3QgcGF0aHMgcmVwcmVzZW50aW5nIHRoZSBjaGFyYWN0ZXJpc3RpY3MNCj4+ICsgICAg ICAgICAgICAgICAgICAgICBvZiB0aGlzIHNlcnZpY2UuIFRoaXMgcHJvcGVydHkgaXMgc2V0IG9u bHkgd2hlbiB0aGUNCj4+ICsgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJpc3RpYyBkaXNj b3ZlcnkgaGFzIGJlZW4gY29tcGxldGVkLCBob3dldmVyIHRoZQ0KPj4gKyAgICAgICAgICAgICAg ICAgICAgIGNoYXJhY3RlcmlzdGljIG9iamVjdHMgd2lsbCBiZWNvbWUgYXZhaWxhYmxlIHZpYQ0K Pj4gKyAgICAgICAgICAgICAgICAgICAgIE9iamVjdE1hbmFnZXIgYXMgc29vbiBhcyB0aGV5IGdl dCBkaXNjb3ZlcmVkLg0KPiBGb3IgdGhpcyBuZXcgcHJvcGVydHksIEkgdGhpbmsgdGhlcmUgaXMg bm90IGVzc2VudGlhbCBhcyBvdGhlciANCj4gcHJvcGVydHksIGJlY2F1c2Ugd2hlbiBjaGFyYWN0 ZXJpc3RpYyBkaXNjb3ZlcnkgaGFwcGVuICwgYWxsIHRoZSANCj4gb2JqZWN0IHBhdGggd2lsbCBz ZXR1cCBvbiBEQnVzIEhpZXJhcmNoeS4gQW5kIHVzZXIgY2FuIGdldCBhbGwgdGhlIGNoYXJhY3Rl cmlzdGljIGJ5IE9iamVjdE1hbmdlci4NCg0KVGhlIHByb2JsZW0gaXMgdGhhdCBPYmplY3RNYW5h Z2VyIGhhcyBubyBjbGVhciB3YXkgdG8gdGVsbCBhIGNsaWVudCB0aGF0ICJ0aGlzIHN1YnNldCBv ZiBvYmplY3QgcGF0aHMgaGF2ZSBiZWVuIHB1Ymxpc2hlZCIgYW5kIHdoZW4gdGhleSBhcmUgYWxs IGF2YWlsYWJsZSB2aWEgR2V0TWFuYWdlZE9iamVjdHMuIFRoZSBtb3N0IGEgY2xpZW50IGNhbiBk byBpcyBvYnNlcnZlIHRoZSBJbnRlcmZhY2VzQWRkZWQgc2lnbmFsIGFuZCB0aGF0IHNpZ25hbCBp cyBzZW50IG9uIGEgcGVyIG9iamVjdCBwYXRoIGJhc2lzLiBGb3IgbW9zdCBleHRlcm5hbCBhcHBs aWNhdGlvbnMsIGl0IG1pZ2h0IGJlIGVub3VnaCBidXQgSSB3b3VsZCBsaWtlIGFwcGxpY2F0aW9u IEFQSXMgdG8gaGF2ZSB0byBhYmlsaXR5IHRvIHNheSAiYWxsIG9iamVjdHMgcHVibGlzaGVkLCBz ZXJ2aWNlIGlzIHJlYWR5IHRvIHVzZSIuDQoNCg0KPiBUaHJvdWdoIHRoaXMsIFVzZXIgY2FuIHVz ZSB0aGVpciBvd24gc3RydWN0dXJlIHRvIGdldCB0aGlzIGFycmF5IG9mIG9iamVjdC4NCj4gVGhh dCBpcyBhbHNvIHdoeSB3ZSBuZWVkIG9iamVjdCBwcm9wZXJ0eSBzdWNoIGFzIERldmljZSwgU2Vy dmljZSBhbmQgc28gb24uDQo+DQo+IEFuZCBhbm90aGVyIHJlYXNvbiAsIGl0IGhhdmUgdG8gd2Fp dCBmb3IgY2hhcmFjdGVyaXN0aWMgZGlzY292ZXJ5IA0KPiBjb21wbGV0ZWQsIGl0IGFsc28gY2Fu IHNheSB0aGF0IGl0IGhhdmUgdG8gd2FpdCBmb3IgY2hhcmFjdGVyaXN0aWMgDQo+IHNldHVwIERC dXMgSGlyYXJjaHkgaXMgcmVhZHkuIFRoZXJlIGV4aXN0cyBhc3luY2hyb25vdXMgaXNzdWVzLCBp ZiANCj4gdXNlciBnZXQgdGhpcyBwcm9wZXJ0eSBvcGVyYXRpb24gYmVmb3JlIGFsbCB0aGUgY2hh cmFjdGVyaXN0aWMgREJ1cyBzZXR1cCBpcyByZWFkeSwgaXQgd2lsbCBtYWtlIGEgbWlzdGFrZS4N Cj4NCg0KVGhpcyBpcyBleGFjdGx5IHRoZSBwcm9ibGVtLiBBIHNpbXBsZSB1cGRhdGUgb2YgdGhp cyBwcm9wZXJ0eSBsZXRzIHRoZSB1c2VyIGtub3cgdGhhdCB0aGUgaGllcmFyY2h5IGhhcyBiZWVu IHNldCB1cC4gRm9yIGFsbCBJIGNhcmUsIHRoaXMgY291bGQgZXZlbiBiZSBhIHNpbXBsZSBib29s ZWFuIHByb3BlcnR5IHN1Y2ggYXMgIkRpc2NvdmVyeUNvbXBsZXRlIg0KYnV0IEkga2luZCBvZiBs aWtlIHRoZSBsaXN0IG9mIGNoYXJhY3RlcmlzdGljcyBldmVuIHRob3VnaCBHZXRNYW5hZ2VkT2Jq ZWN0cy9JbnRlcmZhY2VzQWRkZWQsIGFzIHlvdSBzYXksIGNhbiBhY2hpZXZlIHRoZSBzYW1lIHJl c3VsdC4gV2UgaGF2ZSB0aGUgc2ltaWxhciAiSW5jbHVkZXMiIHByb3BlcnR5IGFscmVhZHksIHNv IGl0J3Mgbm90IGVudGlyZWx5IGluY29uc2lzdGVudCBmcm9tIGFuIEFQSSBzdGFuZHBvaW50Lg0K DQoNCj4+ICsgICAgICAgICAgICAgdm9pZCBTdGFydE5vdGlmeSgpDQo+PiArDQo+PiArICAgICAg ICAgICAgICAgICAgICAgU3RhcnRzIGEgbm90aWZpY2F0aW9uIHNlc3Npb24gZnJvbSB0aGlzIGNo YXJhY3RlcmlzdGljDQo+PiArICAgICAgICAgICAgICAgICAgICAgaWYgaXQgc3VwcG9ydHMgdmFs dWUgbm90aWZpY2F0aW9ucyBvciBpbmRpY2F0aW9ucy4NCj4+ICsNCj4+ICsgICAgICAgICAgICAg ICAgICAgICBQb3NzaWJsZSBFcnJvcnM6IG9yZy5ibHVlei5FcnJvci5GYWlsZWQNCj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5ibHVlei5FcnJvci5JblByb2dy ZXNzDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuYmx1ZXou RXJyb3IuTm90U3VwcG9ydGVkDQo+IEFib3V0IHRoaXMgbWV0aG9kICwgSSB0aGluayBvdGhlciBM RSBwcm9maWxlIG9mZmVyIHNpbWlsYXIgaW50ZXJmYWNlIA0KPiB0byB1c2VyLCBzdWNoIGFzIGlu IGhlYXJ0cmF0ZSBwcm9maWxlLiBJdCB3aWxsIGdpdmUgcmVnaXN0ZXJ3YXRjaGVyIA0KPiBtZXRo b2QsIGluIHdoaWNoIGl0IHdpbGwgZW5hYmxlIG5vdGlmeSBmb3IgaGVhcnRyYXRlLiBUaGlzIHdp bGwgaGVscCANCj4gdG8gdHJhY2UgZGVzY3JpcHRvciBpbmNsdWRpbmcgbm90aWZpY2F0aW9uIGJp dCBjaGFuZ2VkIGFuZCBzZW5kIFByb3BlcnR5Y2hhbmdlZCBzaWduYWwuDQoNCkFyZSB5b3UgcmVm ZXJyaW5nIHRvIHRoZSBIZWFydFJhdGVNYW5hZ2VyMSBoaWVyYXJjaHk/IFNpbmNlIHdlJ3JlIG5v dyBidWlsZGluZyBhIGdlbmVyaWMgQVBJLCB3ZSBuZWVkIGEgcHJvcGVyIHdheSBvZiByZWZlcmVu Y2UtY291bnRlZCwgcGVyLWNvbm5lY3Rpb24gd2F5IHRvIGFjY2VzcyB0aGUgQ2xpZW50IENoYXJh Y3RlcmlzdGljIENvbmZpZ3VyYXRpb24gZGVzY3JpcHRvci4gSW4gdGhpcyBwcm9wb3NhbCwgY2Fs bGluZyBXcml0ZVZhbHVlIG9uIHRoZSBDQ0MgZGVzY3JpcHRvciB3aWxsIGFsd2F5cyBmYWlsIHdp dGggV3JpdGVOb3RQZXJtaXR0ZWQuDQoNCkRvIHlvdSBoYXZlIGFueSBzdWdnZXN0aW9ucyBmb3Ig dGhlIG1ldGhvZCBuYW1lIG9yIGFyZSB5b3UgT0sgd2l0aCBTdGFydE5vdGlmeSBmb3Igbm93PyBX ZSBjYW4gYWx3YXlzIGNoYW5nZSBpdCBsYXRlci4NCg0KDQo+ICJJbnN1ZmZpY2llbnQgQXV0aG9y aXphdGlvbiIgc2VlbXMgZGlmZmVyZW50IGZyb20gdGhlIG90aGVyIHR3byBpbiANCj4gdGhhdCBp dCdzIHNvbWV0aGluZyB0aGF0IGNhbid0IGJlIGF0dGVtcHRlZCB0byBiZSAiZml4ZWQiIGZyb20g dGhlIA0KPiBjbGllbnQgc2lkZS4gSXQgZWZmZWN0aXZlbHkgbWVhbnMgdGhhdCBvdXIgcmVxdWVz dCB3YXMgcmVqZWN0ZWQgYnkgdGhlIA0KPiByZW1vdGUgdXNlciwgZG9lc24ndCBpdD8NCg0KR29v ZCBwb2ludCwgdGhlcmUgaXMgcmVhbGx5IG5vdCBtdWNoIGJsdWV0b290aGQgb3IgdGhlIGV4dGVy bmFsIGFwcCBjYW4gZG8gaW4gdGhpcyBjYXNlIHNvIHdlIHNob3VsZCBwcm9iYWJseSBwcm9wYWdh dGUgdGhlIGF1dGhlbnRpY2F0aW9uIGVycm9yIHNlcGFyYXRlbHkgZnJvbSB0aGUgTm90UGFpcmVk IGNhc2VzLiBPciBkbyB5b3UgdGhpbmsgdGhhdCBpdCB3b3VsZCBiZSBiZW5lZmljaWFsIHRvIGhh dmUgc2VwYXJhdGUgZXJyb3IgZGVmaW5pdGlvbnMgZm9yIEVuY3J5cHRpb24gYW5kIEF1dGhlbnRp Y2F0aW9uIGFzIHdlbGw/IEhhdmluZyBFcnJvci5Ob3RQYWlyZWQgYW5kIEVycm9yLkF1dGhlbnRp Y2F0aW9uIHNlZW1zIHJlYXNvbmFibGUgdG8gbWUuDQoNCkNoZWVycywNCkFybWFuDQo=