From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lan Tianyu Subject: Re: Xen virtual IOMMU high level design doc V2 Date: Thu, 20 Oct 2016 22:17:34 +0800 Message-ID: <884d6ac3-5f8a-a01a-f87d-26037b1069e3@intel.com> References: <5746B3FA.6020401@intel.com> <5746DF93.8090803@citrix.com> <57480327.60609@intel.com> <78d122f0-c773-7fa3-1258-c551937c508e@intel.com> <575081E8.6070609@citrix.com> <57518B78.6060604@citrix.com> <647d0b74-cecc-db33-1033-f7201c8a0af5@intel.com> <13fa96c1-4e66-e8a0-3b66-1c93ad2b6543@intel.com> <577BD8D002000078000FB3F7@prv-mh.provo.novell.com> <3f375a3e-0bbb-ca70-9ea2-e8a970a5dc72@intel.com> <4a8616a2-a576-aadc-993f-3d349f91f310@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <4a8616a2-a576-aadc-993f-3d349f91f310@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Andrew Cooper , Jan Beulich , Kevin Tian , "yang.zhang.wz@gmail.com" , Jun Nakajima , Stefano Stabellini Cc: "anthony.perard@citrix.com" , xuquan8@huawei.com, "xen-devel@lists.xensource.com" , "ian.jackson@eu.citrix.com" , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org SGkgQW5kcmV3OgoJVGhhbmtzIGZvciB5b3VyIHJldmlldy4KCk9uIDIwMTblubQxMOaciDE55pel IDAzOjE3LCBBbmRyZXcgQ29vcGVyIHdyb3RlOgo+IE9uIDE4LzEwLzE2IDE1OjE0LCBMYW4gVGlh bnl1IHdyb3RlOgo+PiBDaGFuZ2Ugc2luY2UgVjE6Cj4+ICAgICAxKSBVcGRhdGUgbW90aXZhdGlv biBmb3IgWGVuIHZJT01NVSAtIDI4OCB2Y3B1cyBzdXBwb3J0IHBhcnQKPj4gICAgIDIpIENoYW5n ZSBkZWZpbml0aW9uIG9mIHN0cnVjdCB4ZW5fc3lzY3RsX3Zpb21tdV9vcAo+PiAgICAgMykgVXBk YXRlICIzLjUgSW1wbGVtZW50YXRpb24gY29uc2lkZXJhdGlvbiIgdG8gZXhwbGFpbiB3aHkgd2UK Pj4gbmVlZHMgdG8gZW5hYmxlIGwyIHRyYW5zbGF0aW9uIGZpcnN0Lgo+PiAgICAgNCkgVXBkYXRl ICI0LjMgUTM1IHZzIEk0NDB4IiAtIExpbnV4L1dpbmRvd3MgVlREIGRyaXZlcnMgY2FuIHdvcmsK Pj4gb24gdGhlIGVtdWxhdGVkIEk0NDAgY2hpcHNldC4KPj4gICAgIDUpIFJlbW92ZSBzdGFsZSBz dGF0ZW1lbnQgaW4gdGhlICIzLjMgSW50ZXJydXB0IHJlbWFwcGluZyIKPj4KPj4gQ29udGVudDoK Pj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQo+Pgo+PiAxLiBNb3RpdmF0aW9uIG9mIHZJT01NVQo+ PiAgICAgMS4xIEVuYWJsZSBtb3JlIHRoYW4gMjU1IHZjcHVzCj4+ICAgICAxLjIgU3VwcG9ydCBW RklPLWJhc2VkIHVzZXIgc3BhY2UgZHJpdmVyCj4+ICAgICAxLjMgU3VwcG9ydCBndWVzdCBTaGFy ZWQgVmlydHVhbCBNZW1vcnkgKFNWTSkKPj4gMi4gWGVuIHZJT01NVSBBcmNoaXRlY3R1cmUKPj4g ICAgIDIuMSBsMiB0cmFuc2xhdGlvbiBvdmVydmlldwo+PiAgICAgMi4yIEludGVycnVwdCByZW1h cHBpbmcgb3ZlcnZpZXcKPj4gMy4gWGVuIGh5cGVydmlzb3IKPj4gICAgIDMuMSBOZXcgdklPTU1V IGh5cGVyY2FsbCBpbnRlcmZhY2UKPj4gICAgIDMuMiBsMiB0cmFuc2xhdGlvbgo+PiAgICAgMy4z IEludGVycnVwdCByZW1hcHBpbmcKPj4gICAgIDMuNCBsMSB0cmFuc2xhdGlvbgo+PiAgICAgMy41 IEltcGxlbWVudGF0aW9uIGNvbnNpZGVyYXRpb24KPj4gNC4gUWVtdQo+PiAgICAgNC4xIFFlbXUg dklPTU1VIGZyYW1ld29yawo+PiAgICAgNC4yIER1bW15IHhlbi12SU9NTVUgZHJpdmVyCj4+ICAg ICA0LjMgUTM1IHZzLiBpNDQweAo+PiAgICAgNC40IFJlcG9ydCB2SU9NTVUgdG8gaHZtbG9hZGVy Cj4+Cj4+Cj4+IDEgTW90aXZhdGlvbiBmb3IgWGVuIHZJT01NVQo+PiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Cj4+Cj4+IDEuMSBFbmFibGUgbW9yZSB0aGFuIDI1NSB2Y3B1IHN1cHBvcnQKPj4gSFBD IGNsb3VkIHNlcnZpY2UgcmVxdWlyZXMgVk0gcHJvdmlkZXMgaGlnaCBwZXJmb3JtYW5jZSBwYXJh bGxlbAo+PiBjb21wdXRpbmcgYW5kIHdlIGhvcGUgdG8gY3JlYXRlIGEgaHVnZSBWTSB3aXRoID4y NTUgdmNwdSBvbiBvbmUgbWFjaGluZQo+PiB0byBtZWV0IHN1Y2ggcmVxdWlyZW1lbnQuUGluZyBl YWNoIHZjcHVzIG9uIHNlcGFyYXRlZCBwY3B1cy4gTW9yZSB0aGFuCj4KPiBQaW4gPwo+CgpTb3Jy eSwgaXQncyBhIHR5cG8uCgo+IEFsc28sIGdyYW1tYXRpY2FsbHkgc3BlYWtpbmcsIEkgdGhpbmsg eW91IG1lYW4gImVhY2ggdmNwdSB0byBzZXBhcmF0ZQo+IHBjcHVzIi4KCgpZZXMuCgo+Cj4+IDI1 NSB2Y3B1cyBzdXBwb3J0IHJlcXVpcmVzIFgyQVBJQyBhbmQgTGludXggZGlzYWJsZXMgWDJBUElD IG1vZGUgaWYKPj4gdGhlcmUgaXMgbm8gaW50ZXJydXB0IHJlbWFwcGluZyBmdW5jdGlvbiB3aGlj aCBpcyBwcmVzZW50IGJ5IHZJT01NVS4KPj4gSW50ZXJydXB0IHJlbWFwcGluZyBmdW5jdGlvbiBo ZWxwcyB0byBkZWxpdmVyIGludGVycnVwdCB0byAjdmNwdSA+MjU1Lgo+Cj4gVGhpcyBpcyBvbmx5 IGEgcmVxdWlyZW1lbnQgZm9yIHhhcGljIGludGVycnVwdCBzb3VyY2VzLiAgeDJhcGljCj4gaW50 ZXJydXB0IHNvdXJjZXMgYWxyZWFkeSBkZWxpdmVyIGNvcnJlY3RseS4KClRoZSBrZXkgaXMgdGhl IEFQSUMgSUQuIFRoZXJlIGlzIG5vIG1vZGlmaWNhdGlvbiB0byBleGlzdGluZyBQQ0kgTVNJIGFu ZApJT0FQSUMgd2l0aCB0aGUgaW50cm9kdWN0aW9uIG9mIHgyYXBpYy4gUENJIE1TSS9JT0FQSUMg Y2FuIG9ubHkgc2VuZAppbnRlcnJ1cHQgbWVzc2FnZSBjb250YWluaW5nIDhiaXQgQVBJQyBJRCwg d2hpY2ggY2Fubm90IGFkZHJlc3MgPjI1NQpjcHVzLiBJbnRlcnJ1cHQgcmVtYXBwaW5nIHN1cHBv cnRzIDMyYml0IEFQSUMgSUQgc28gaXQncyBuZWNlc3NhcnkgdG8KZW5hYmxlID4yNTUgY3B1cyB3 aXRoIHgyYXBpYyBtb2RlLgoKSWYgTEFQSUMgaXMgaW4geDJhcGljIHdoaWxlIGludGVycnVwdCBy ZW1hcHBpbmcgaXMgZGlzYWJsZWQsIElPQVBJQwpjYW5ub3QgZGVsaXZlciBpbnRlcnJ1cHRzIHRv IGFsbCBjcHVzIGluIHRoZSBzeXN0ZW0gaWYgI2NwdSA+IDI1NS4KCgo+Cj4+Cj4+Cj4+IDEuMyBT dXBwb3J0IGd1ZXN0IFNWTSAoU2hhcmVkIFZpcnR1YWwgTWVtb3J5KQo+PiBJdCByZWxpZXMgb24g dGhlIGwxIHRyYW5zbGF0aW9uIHRhYmxlIGNhcGFiaWxpdHkgKEdWQS0+R1BBKSBvbgo+PiB2SU9N TVUuIHBJT01NVSBuZWVkcyB0byBlbmFibGUgYm90aCBsMSBhbmQgbDIgdHJhbnNsYXRpb24gaW4g bmVzdGVkCj4+IG1vZGUgKEdWQS0+R1BBLT5IUEEpIGZvciBwYXNzdGhyb3VnaCBkZXZpY2UuIElH RCBwYXNzdGhyb3VnaAo+PiBpcyB0aGUgbWFpbiB1c2FnZSB0b2RheSAodG8gc3VwcG9ydCBPcGVu Q0wgMi4wIFNWTSBmZWF0dXJlKS4gSW4gdGhlCj4+IGZ1dHVyZSBTVk0gbWlnaHQgYmUgdXNlZCBi eSBvdGhlciBJL08gZGV2aWNlcyB0b28uCj4KPiBBcyBhbiBhc2lkZSwgaG93IGlzIElHRCBpbnRl bmRpbmcgdG8gc3VwcG9ydCBTVk0/ICBXaWxsIGl0IGJlIHdpdGggUENJZQo+IEFUUy9QQVNJRCwg b3Igc29tZXRoaW5nIHJhdGhlciBtb3JlIG1hZ2ljIGFzIElHRCBpcyBvbiB0aGUgc2FtZSBwaWVj ZSBvZgo+IHNpbGljb24/CgpJR0Qgb24gU2t5bGFrZSBzdXBwb3J0cyBQQ0llIFBBU0lELgoKCj4K Pj4KPj4gMi4gWGVuIHZJT01NVSBBcmNoaXRlY3R1cmUKPj4gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KPj4KPj4KPj4gKiB2SU9NTVUgd2lsbCBiZSBpbnNpZGUgWGVuIGh5cGVydmlzb3IgZm9yIGZv bGxvd2luZyBmYWN0b3JzCj4+ICAgICAxKSBBdm9pZCByb3VuZCB0cmlwcyBiZXR3ZWVuIFFlbXUg YW5kIFhlbiBoeXBlcnZpc29yCj4+ICAgICAyKSBFYXNlIG9mIGludGVncmF0aW9uIHdpdGggdGhl IHJlc3Qgb2YgdGhlIGh5cGVydmlzb3IKPj4gICAgIDMpIEhWTWxpdGUvUFZIIGRvZXNuJ3QgdXNl IFFlbXUKPj4gKiBEdW1teSB4ZW4tdklPTU1VIGluIFFlbXUgYXMgYSB3cmFwcGVyIG9mIG5ldyBo eXBlcmNhbGwgdG8gY3JlYXRlCj4+IC9kZXN0b3J5IHZJT01NVSBpbiBoeXBlcnZpc29yIGFuZCBk ZWFsIHdpdGggdmlydHVhbCBQQ0kgZGV2aWNlJ3MgbDIKPj4gdHJhbnNsYXRpb24uCj4+Cj4+IDIu MSBsMiB0cmFuc2xhdGlvbiBvdmVydmlldwo+PiBGb3IgVmlydHVhbCBQQ0kgZGV2aWNlLCBkdW1t eSB4ZW4tdklPTU1VIGRvZXMgdHJhbnNsYXRpb24gaW4gdGhlCj4+IFFlbXUgdmlhIG5ldyBoeXBl cmNhbGwuCj4+Cj4+IEZvciBwaHlzaWNhbCBQQ0kgZGV2aWNlLCB2SU9NTVUgaW4gaHlwZXJ2aXNv ciBzaGFkb3dzIElPIHBhZ2UgdGFibGUgZnJvbQo+PiBJT1ZBLT5HUEEgdG8gSU9WQS0+SFBBIGFu ZCBsb2FkIHBhZ2UgdGFibGUgdG8gcGh5c2ljYWwgSU9NTVUuCj4+Cj4+IFRoZSBmb2xsb3dpbmcg ZGlhZ3JhbSBzaG93cyBsMiB0cmFuc2xhdGlvbiBhcmNoaXRlY3R1cmUuCj4KPiBXaGljaCBzY2Vu YXJpbyBpcyB0aGlzPyAgSXMgdGhpcyB0aGUgcGFzc3Rocm91Z2ggY2FzZSB3aGVyZSB0aGUgUWVt dQo+IFZpcnR1YWwgUENJIGRldmljZSBpcyBhIHNoYWRvdyBvZiB0aGUgcmVhbCBQQ0kgZGV2aWNl IGluIGhhcmR3YXJlPwo+CgpObywgdGhpcyBpcyBmb3IgdHJhZGl0aW9uYWwgdmlydHVhbCBwY2kg ZGV2aWNlIGVtdWxhdGVkIGJ5IFFlbXUgYW5kCnBhc3N0aG91Z2ggUENJIGRldmljZS4KCgo+PiAr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Kwo+PiB8UWVtdSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0t LS0rICAgfAo+PiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgVmly dHVhbCAgICB8ICAgfAo+PiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg IFBDSSBkZXZpY2UgICB8ICAgfAo+PiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAgICAgICAgICAgICB8ICAgfAo+PiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0rICAgfAo+PiB8ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8RE1BICAgICAgICAgfAo+PiB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWICAgICAgICAgICAgfAo+PiB8ICArLS0tLS0t LS0tLS0tLS0tLS0tLS0rICAgUmVxdWVzdCAgKy0tLS0tLS0tLS0tLS0tLS0rICAgfAo+PiB8ICB8 ICAgICAgICAgICAgICAgICAgICArPC0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICB8ICAgfAo+ PiB8ICB8ICBEdW1teSB4ZW4gdklPTU1VICB8IFRhcmdldCBHUEEgfCAgTWVtb3J5IHJlZ2lvbiB8 ICAgfAo+PiB8ICB8ICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0+KyAgICAgICAgICAg ICAgICB8ICAgfAo+PiB8ICArLS0tLS0tLS0tKy0tLS0tLS0tLS0rICAgICAgICAgICAgKy0tLS0t LS0rLS0tLS0tLS0rICAgfAo+PiB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgfAo+PiB8ICAgICAgICAgICAgfEh5cGVyY2FsbCAgICAgICAg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAo+PiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKwo+PiB8SHlwZXJ2aXNvciAgfCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAo+PiB8ICAgICAgICAgICAg fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAo+PiB8ICAgICAg ICAgICAgdiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAo+PiB8 ICAgICArLS0tLS0tKy0tLS0tLSsgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg fAo+PiB8ICAgICB8ICAgdklPTU1VICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAg ICAgICAgfAo+PiB8ICAgICArLS0tLS0tKy0tLS0tLSsgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgfAo+PiB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgfAo+PiB8ICAgICAgICAgICAgdiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgfAo+PiB8ICAgICArLS0tLS0tKy0tLS0tLSsgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAo+PiB8ICAgICB8IElPTU1VIGRyaXZlcnwg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAo+PiB8ICAgICArLS0tLS0tKy0t LS0tLSsgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAo+PiB8ICAgICAgICAg ICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAo+PiArLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKwo+ PiB8SFcgICAgICAgICAgdiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWICAgICAgICAg ICAgfAo+PiB8ICAgICArLS0tLS0tKy0tLS0tLSsgICAgICAgICAgICAgICAgICstLS0tLS0tLS0t LS0tKyAgICAgfAo+PiB8ICAgICB8ICAgSU9NTVUgICAgICstLS0tLS0tLS0tLS0tLS0tPisgIE1l bW9yeSAgICAgfCAgICAgfAo+PiB8ICAgICArLS0tLS0tKy0tLS0tLSsgICAgICAgICAgICAgICAg ICstLS0tLS0tLS0tLS0tKyAgICAgfAo+PiB8ICAgICAgICAgICAgXiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+PiB8ICAgICAgICAgICAgfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+PiB8ICAgICArLS0tLS0tKy0tLS0t LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+PiB8ICAgICB8IFBDSSBE ZXZpY2UgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+PiB8ICAgICAr LS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+PiAr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Kwo+Pgo+PiAyLjIgSW50ZXJydXB0IHJlbWFwcGluZyBvdmVydmlldy4KPj4gSW50ZXJydXB0cyBm cm9tIHZpcnR1YWwgZGV2aWNlcyBhbmQgcGh5c2ljYWwgZGV2aWNlcyB3aWxsIGJlIGRlbGl2ZXJl ZAo+PiB0byB2TEFQSUMgZnJvbSB2SU9BUElDIGFuZCB2TVNJLiB2SU9NTVUgd2lsbCByZW1hcCBp bnRlcnJ1cHQgZHVyaW5nIHRoaXMKPj4gcHJvY2VkdXJlLgo+Pgo+PiArLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+PiB8UWVtdSAgICAgICAgICAg ICAgICAgICAgICAgfFZNICAgICAgICAgICAgICAgICAgICAgfAo+PiB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCArLS0tLS0tLS0tLS0tLS0tLSsgICAgfAo+PiB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCB8ICBEZXZpY2UgZHJpdmVyIHwgICAgfAo+PiB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCArLS0tLS0tLS0rLS0tLS0tLSsgICAgfAo+PiB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAgICAgICBeICAgICAgICAgICAgfAo+PiB8ICAgICAgICstLS0tLS0t LS0tLS0tLS0tKyAgfCArLS0tLS0tLS0rLS0tLS0tLSsgICAgfAo+PiB8ICAgICAgIHwgVmlydHVh bCBkZXZpY2UgfCAgfCB8ICBJUlEgc3Vic3lzdGVtIHwgICAgfAo+PiB8ICAgICAgICstLS0tLS0t Ky0tLS0tLS0tKyAgfCArLS0tLS0tLS0rLS0tLS0tLSsgICAgfAo+PiB8ICAgICAgICAgICAgICAg fCAgICAgICAgICAgfCAgICAgICAgICBeICAgICAgICAgICAgfAo+PiB8ICAgICAgICAgICAgICAg fCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgfAo+PiArLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+PiB8aHlwZXJ2aW9zciAgICAg fCAgICAgICAgICAgICAgICAgICAgICB8IFZJUlEgICAgICAgfAo+PiB8ICAgICAgICAgICAgICAg fCAgICAgICAgICAgICstLS0tLS0tLS0rLS0tLS0tLS0rICAgfAo+PiB8ICAgICAgICAgICAgICAg fCAgICAgICAgICAgIHwgICAgICB2TEFQSUMgICAgICB8ICAgfAo+PiB8ICAgICAgICAgICAgICAg fCAgICAgICAgICAgICstLS0tLS0tLS0rLS0tLS0tLS0rICAgfAo+PiB8ICAgICAgICAgICAgICAg fCAgICAgICAgICAgICAgICAgICAgICBeICAgICAgICAgICAgfAo+PiB8ICAgICAgICAgICAgICAg fCAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAo+PiB8ICAgICAgICAgICAgICAg fCAgICAgICAgICAgICstLS0tLS0tLS0rLS0tLS0tLS0rICAgfAo+PiB8ICAgICAgICAgICAgICAg fCAgICAgICAgICAgIHwgICAgICB2SU9NTVUgICAgICB8ICAgfAo+PiB8ICAgICAgICAgICAgICAg fCAgICAgICAgICAgICstLS0tLS0tLS0rLS0tLS0tLS0rICAgfAo+PiB8ICAgICAgICAgICAgICAg fCAgICAgICAgICAgICAgICAgICAgICBeICAgICAgICAgICAgfAo+PiB8ICAgICAgICAgICAgICAg fCAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAo+PiB8ICAgICAgICAgICAgICAg fCAgICAgICAgICAgICstLS0tLS0tLS0rLS0tLS0tLS0rICAgfAo+PiB8ICAgICAgICAgICAgICAg fCAgICAgICAgICAgIHwgICB2SU9BUElDL3ZNU0kgICB8ICAgfAo+PiB8ICAgICAgICAgICAgICAg fCAgICAgICAgICAgICstLS0tKy0tLS0rLS0tLS0tLS0rICAgfAo+PiB8ICAgICAgICAgICAgICAg fCAgICAgICAgICAgICAgICAgXiAgICBeICAgICAgICAgICAgfAo+PiB8ICAgICAgICAgICAgICAg Ky0tLS0tLS0tLS0tLS0tLS0tKyAgICB8ICAgICAgICAgICAgfAo+PiB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAo+PiArLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+PiBIVyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8SVJRCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICBQQ0kgRGV2aWNlICAgICAgfAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+Cj4+Cj4+Cj4+Cj4+IDMgWGVuIGh5cGVydmlzb3IK Pj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KPj4KPj4gMy4xIE5ldyBoeXBlcmNhbGwgWEVOX1NZU0NUTF92 aW9tbXVfb3AKPj4gVGhpcyBoeXBlcmNhbGwgc2hvdWxkIGFsc28gc3VwcG9ydCBwdiBJT01NVSB3 aGljaCBpcyBzdGlsbCB1bmRlciBSRkMKPj4gcmV2aWV3LiBIZXJlIG9ubHkgY292ZXJzIG5vbi1w diBwYXJ0Lgo+Pgo+PiAxKSBEZWZpbml0aW9uIG9mICJzdHJ1Y3QgeGVuX3N5c2N0bF92aW9tbXVf b3AiIGFzIG5ldyBoeXBlcmNhbGwKPj4gcGFyYW1ldGVyLgo+Cj4gV2h5IGRpZCB5b3UgY2hvb3Nl IHN5c2N0bD8gIEFzIHRoZXNlIGFyZSBwZXItZG9tYWluLCBkb21jdGwgd291bGQgYmUgYQo+IG1v cmUgbG9naWNhbCBjaG9pY2UuICBIb3dldmVyLCBuZWl0aGVyIG9mIHRoZXNlIHNob3VsZCBiZSB1 c2FibGUgYnkKPiBRZW11LCBhbmQgd2UgYXJlIHRyeWluZyB0byBzcGxpdCBvdXQgIm5vcm1hbCBx ZW11IG9wZXJhdGlvbnMiIGludG8gZG1vcHMKPiB3aGljaCBjYW4gYmUgc2FmZWx5IGRlcHJpdmls ZWdlZC4KPgoKRG8geW91IGtub3cgd2hhdCdzIHRoZSBzdGF0dXMgb2YgZG1vcCBub3c/IEkganVz dCBmb3VuZCBzb21lIGRpc2N1c3Npb25zCmFib3V0IGRlc2lnbiBpbiB0aGUgbWFpbGxpc3QuIFdl IG1heSB1c2UgZG9tY3RsIGZpcnN0IGFuZCBtb3ZlIHRvIGRtb3AKd2hlbiBpdCdzIHJlYWR5PwoK Pgo+Pgo+PiBzdHJ1Y3QgeGVuX3N5c2N0bF92aW9tbXVfb3Agewo+PiAgICAgdTMyIGNtZDsKPj4g ICAgIHUzMiBkb21pZDsKPj4gICAgIHVuaW9uIHsKPj4gICAgICAgICBzdHJ1Y3Qgewo+PiAgICAg ICAgICAgICB1MzIgY2FwYWJpbGl0aWVzOwo+PiAgICAgICAgIH0gcXVlcnlfY2FwYWJpbGl0aWVz Owo+PiAgICAgICAgIHN0cnVjdCB7Cj4+ICAgICAgICAgICAgIHUzMiBjYXBhYmlsaXRpZXM7Cj4+ ICAgICAgICAgICAgIHU2NCBiYXNlX2FkZHJlc3M7Cj4+ICAgICAgICAgfSBjcmVhdGVfaW9tbXU7 Cj4+ICAgICAgICAgICAgIHN0cnVjdCB7Cj4+ICAgICAgICAgICAgIC8qIElOIHBhcmFtZXRlcnMu ICovCj4+ICAgICAgICAgICAgIHUxNiBzZWdtZW50Owo+PiAgICAgICAgICAgICAgICAgICAgIHU4 ICBidXM7Cj4+ICAgICAgICAgICAgICAgICAgICAgdTggIGRldmZuOwo+Cj4gSSB0aGluayB0aGlz IHdvdWxkIGJlIGNsZWFuZXIgYXMgdTMyIHZzYmRmLCB3aGljaCBtYWtlcyBpdCBjbGVhciB3aGlj aAo+IGFkZHJlc3Mgc3BhY2UgdG8gbG9vayBmb3Igc2JkZiBpbi4KCk9rLiBXaWxsIHVwZGF0ZS4K Cj4KPj4gICAgICAgICAgICAgICAgICAgICB1NjQgaW92YTsKPj4gICAgICAgICAgICAgICAgIC8q IE91dCBwYXJhbWV0ZXJzLiAqLwo+PiAgICAgICAgICAgICAgICAgICAgIHU2NCB0cmFuc2xhdGVk X2FkZHI7Cj4+ICAgICAgICAgICAgICAgICAgICAgdTY0IGFkZHJfbWFzazsgLyogVHJhbnNsYXRp b24gcGFnZSBzaXplICovCj4+ICAgICAgICAgICAgICAgICAgICAgSU9NTVVBY2Nlc3NGbGFncyBw ZXJtaXNzb247Cj4KPiBIb3cgaXMgdGhpcyB0cmFuc2xhdGlvbiBpbnRlbmRlZCB0byBiZSB1c2Vk PyAgSG93IGRvIHlvdSBwbGFuIHRvIGF2b2lkCj4gcmFjZSBjb25kaXRpb25zIHdoZXJlIHFlbXUg cmVxdWVzdHMgYSB0cmFuc2xhdGlvbiwgcmVjZWl2ZXMgb25lLCB0aGUKPiBndWVzdCBpbnZhbGlk YXRlZCB0aGUgbWFwcGluZywgYW5kIHRoZW4gcWVtdSB0cmllcyB0byB1c2UgaXRzIHRyYW5zbGF0 ZWQKPiBhZGRyZXNzPwo+Cj4gVGhlcmUgYXJlIG9ubHkgdHdvIHdheXMgSSBjYW4gc2VlIG9mIGRv aW5nIHRoaXMgcmFjZS1mcmVlLiAgT25lIGlzIHRvCj4gaW1wbGVtZW50IGEgIm1lbWNweSB3aXRo IHRyYW5zbGF0aW9uIiBoeXBlcmNhbGwsIGFuZCB0aGUgb3RoZXIgaXMgdG8KPiByZXF1aXJlIHRo ZSB1c2Ugb2YgQVRTIGluIHRoZSB2SU9NTVUsIHdoZXJlIHRoZSBndWVzdCBPUyBpcyByZXF1aXJl ZCB0bwo+IHdhaXQgZm9yIGEgcG9zaXRpdmUgcmVzcG9uc2UgZnJvbSB0aGUgdklPTU1VIGJlZm9y ZSBpdCBjYW4gc2FmZWx5IHJldXNlCj4gdGhlIG1hcHBpbmcuCj4KPiBUaGUgZm9ybWVyIGJlaGF2 ZXMgbGlrZSByZWFsIGhhcmR3YXJlIGluIHRoYXQgYW4gaW50ZXJtZWRpYXRlIGVudGl0eQo+IHBl cmZvcm1zIHRoZSB0cmFuc2xhdGlvbiB3aXRob3V0IGludGVyYWN0aW5nIHdpdGggdGhlIERNQSBz b3VyY2UuICBUaGUKPiBsYXR0ZXIgZXhwbGljaXRseSBleHBvc2luZyB0aGUgZmFjdCB0aGF0IGNh Y2hpbmcgaXMgZ29pbmcgb24gYXQgdGhlCj4gZW5kcG9pbnQgdG8gdGhlIE9TLgoKVGhlIGZvcm1l ciBvbmUgc2VlbXMgdG8gbW92ZSBETUEgb3BlcmF0aW9uIGludG8gaHlwZXJ2aXNvciBidXQgUWVt dSAKdklPTU1VIGZyYW1ld29yayBqdXN0IHBhc3NlcyBJT1ZBIHRvIGR1bW15IHhlbi12SU9NTVUg d2l0aG91dCBpbnB1dCBkYXRhIAphbmQgYWNjZXNzIGxlbmd0aC4gSSB3aWxsIGRpZyBtb3JlIHRv IGZpZ3VyZSBvdXQgc29sdXRpb24uCgo+Cj4+ICAgICAgICAgICAgIH0gbDJfdHJhbnNsYXRpb247 Cj4+IH07Cj4+Cj4+IHR5cGVkZWYgZW51bSB7Cj4+ICAgICBJT01NVV9OT05FID0gMCwKPj4gICAg IElPTU1VX1JPICAgPSAxLAo+PiAgICAgSU9NTVVfV08gICA9IDIsCj4+ICAgICBJT01NVV9SVyAg ID0gMywKPj4gfSBJT01NVUFjY2Vzc0ZsYWdzOwo+Cj4gTm8gZW51bWVyYXRpb25zIGluIGFuIEFC SSBwbGVhc2UuICBUaGV5IGFyZSBub3Qgc3RhYmxlIGluIEMuICBQbGVhc2UgdXMKPiBhIHUzMiBh bmQgbW9yZSAjZGVmaW5lJ3MKCgpPay4gV2lsbCB1cGRhdGUuCgo+Cj4+Cj4+Cj4+IERlZmluaXRp b24gb2YgVklPTU1VIHN1Ym9wczoKPj4gI2RlZmluZSBYRU5fU1lTQ1RMX3Zpb21tdV9xdWVyeV9j YXBhYmlsaXR5ICAgICAgICAwCj4+ICNkZWZpbmUgWEVOX1NZU0NUTF92aW9tbXVfY3JlYXRlICAg ICAgICAgICAgMQo+PiAjZGVmaW5lIFhFTl9TWVNDVExfdmlvbW11X2Rlc3Ryb3kgICAgICAgICAg ICAyCj4+ICNkZWZpbmUgWEVOX1NZU0NUTF92aW9tbXVfZG1hX3RyYW5zbGF0aW9uX2Zvcl92cGRl diAgICAgMwo+Pgo+PiBEZWZpbml0aW9uIG9mIFZJT01NVSBjYXBhYmlsaXRpZXMKPj4gI2RlZmlu ZSBYRU5fVklPTU1VX0NBUEFCSUxJVFlfbDFfdHJhbnNsYXRpb24gICAgKDEgPDwgMCkKPj4gI2Rl ZmluZSBYRU5fVklPTU1VX0NBUEFCSUxJVFlfbDJfdHJhbnNsYXRpb24gICAgKDEgPDwgMSkKPj4g I2RlZmluZSBYRU5fVklPTU1VX0NBUEFCSUxJVFlfaW50ZXJydXB0X3JlbWFwcGluZyAgICAoMSA8 PCAyKQo+Cj4gSG93IGFyZSB2SU9NTVVzIGdvaW5nIHRvIGJlIG1vZGVsbGVkIHRvIGd1ZXN0cz8g IE9uIHJlYWwgaGFyZHdhcmUsIHRoZXkKPiBhbGwgc2VlbSB0byBlbmQgYXNzb2NpYXRlZCB3aXRo IGEgUENJIGRldmljZSBvZiBzb21lIHNvcnQsIGV2ZW4gaWYgaXQgaXMKPiBqdXN0IHRoZSBMUEMg YnJpZGdlLgoKClRoaXMgZGVzaWduIGp1c3QgY29uc2lkZXJzIG9uZSB2SU9NTVUgaGFzIGFsbCBQ Q0kgZGV2aWNlIHVuZGVyIGl0cwpzcGVjaWZpZWQgUENJIFNlZ21lbnQuICJJTkNMVURFX1BDSV9B TEwiIGJpdCBvZiBEUkhEIHN0cnVjdCBpcyBzZXQgZm9yCnZJT01NVS4KCj4gCQo+IEhvdyBkbyB3 ZSBkZWFsIHdpdGggbXVsdGlwbGUgdklPTU1VcyBpbiBhIHNpbmdsZSBndWVzdD8KCkZvciBtdWx0 aS12SU9NTVUsIHdlIG5lZWQgdG8gYWRkIG5ldyBmaWVsZCBpbiB0aGUgc3RydWN0IGlvbW11X29w IHRvCmRlc2lnbmF0ZSBkZXZpY2Ugc2NvcGUgb2YgdklPTU1VcyBpZiB0aGV5IGFyZSB1bmRlciBz YW1lIFBDSQpzZWdtZW50LiBUaGlzIGFsc28gbmVlZHMgdG8gY2hhbmdlIERNQVIgdGFibGUuCgo+ Cj4+Cj4+Cj4+IDIpIERlc2lnbiBmb3Igc3Vib3BzCj4+IC0gWEVOX1NZU0NUTF92aW9tbXVfcXVl cnlfY2FwYWJpbGl0eQo+PiAgICAgICAgR2V0IHZJT01NVSBjYXBhYmlsaXRpZXMobDEvbDIgdHJh bnNsYXRpb24gYW5kIGludGVycnVwdAo+PiByZW1hcHBpbmcpLgo+Pgo+PiAtIFhFTl9TWVNDVExf dmlvbW11X2NyZWF0ZQo+PiAgICAgICBDcmVhdGUgdklPTU1VIGluIFhlbiBoeXBlcnZpc29yIHdp dGggZG9tX2lkLCBjYXBhYmlsaXRpZXMgYW5kIHJlZwo+PiBiYXNlIGFkZHJlc3MuCj4+Cj4+IC0g WEVOX1NZU0NUTF92aW9tbXVfZGVzdHJveQo+PiAgICAgICBEZXN0b3J5IHZJT01NVSBpbiBYZW4g aHlwZXJ2aXNvciB3aXRoIGRvbV9pZCBhcyBwYXJhbWV0ZXJzLgo+Pgo+PiAtIFhFTl9TWVNDVExf dmlvbW11X2RtYV90cmFuc2xhdGlvbl9mb3JfdnBkZXYKPj4gICAgICAgVHJhbnNsYXRlIElPVkEg dG8gR1BBIGZvciBzcGVjaWZpZWQgdmlydHVhbCBQQ0kgZGV2aWNlIHdpdGggZG9tIGlkLAo+PiBQ Q0kgZGV2aWNlJ3MgYmRmIGFuZCBJT1ZBIGFuZCB4ZW4gaHlwZXJ2aXNvciByZXR1cm5zIHRyYW5z bGF0ZWQgR1BBLAo+PiBhZGRyZXNzIG1hc2sgYW5kIGFjY2VzcyBwZXJtaXNzaW9uLgo+Pgo+Pgo+ PiAzLjIgbDIgdHJhbnNsYXRpb24KPj4gMSkgRm9yIHZpcnR1YWwgUENJIGRldmljZQo+PiBYZW4g ZHVtbXkgeGVuLXZJT01NVSBpbiBRZW11IHRyYW5zbGF0ZXMgSU9WQSB0byB0YXJnZXQgR1BBIHZp YSBuZXcKPj4gaHlwZXJjYWxsIHdoZW4gRE1BIG9wZXJhdGlvbiBoYXBwZW5zLgo+Pgo+PiAyKSBG b3IgcGh5c2ljYWwgUENJIGRldmljZQo+PiBETUEgb3BlcmF0aW9ucyBnbyB0aG91Z2ggcGh5c2lj YWwgSU9NTVUgZGlyZWN0bHkgYW5kIElPIHBhZ2UgdGFibGUgZm9yCj4+IElPVkEtPkhQQSBzaG91 bGQgYmUgbG9hZGVkIGludG8gcGh5c2ljYWwgSU9NTVUuIFdoZW4gZ3Vlc3QgdXBkYXRlcwo+PiBs MiBQYWdlLXRhYmxlIHBvaW50ZXIgZmllbGQsIGl0IHByb3ZpZGVzIElPIHBhZ2UgdGFibGUgZm9y Cj4+IElPVkEtPkdQQS4gdklPTU1VIG5lZWRzIHRvIHNoYWRvdyBsMiB0cmFuc2xhdGlvbiB0YWJs ZSwgdHJhbnNsYXRlCj4+IEdQQS0+SFBBIGFuZCB1cGRhdGUgc2hhZG93IHBhZ2UgdGFibGUoSU9W QS0+SFBBKSBwb2ludGVyIHRvIGwyCj4+IFBhZ2UtdGFibGUgcG9pbnRlciB0byBjb250ZXh0IGVu dHJ5IG9mIHBoeXNpY2FsIElPTU1VLgo+Cj4gSG93IGFyZSB5b3UgcHJvcG9zaW5nIHRvIGRvIHRo aXMgc2hhZG93aW5nPyAgRG8gd2UgbmVlZCB0byB0cmFwIGFuZAo+IGVtdWxhdGUgYWxsIHdyaXRl cyB0byB0aGUgdklPTU1VIHBhZ2V0YWJsZXMsIG9yIGlzIHRoZXJlIGEgYmV0dGVyIHdheSB0bwo+ IGtub3cgd2hlbiB0aGUgbWFwcGluZ3MgbmVlZCBpbnZhbGlkYXRpbmc/CgpObywgd2UgZG9uJ3Qg bmVlZCB0byB0cmFwIGFsbCB3cml0ZSB0byBJTyBwYWdlIHRhYmxlLgogRnJvbSBWVEQgc3BlYyA2 LjEsICJSZXBvcnRpbmcgdGhlIENhY2hpbmcgTW9kZSBhcyBTZXQgZm9yIHRoZQp2aXJ0dWFsIGhh cmR3YXJlIHJlcXVpcmVzIHRoZSBndWVzdCBzb2Z0d2FyZSB0byBleHBsaWNpdGx5IGlzc3VlCmlu dmFsaWRhdGlvbiBvcGVyYXRpb25zIG9uIHRoZSB2aXJ0dWFsIGhhcmR3YXJlIGZvciBhbnkvYWxs IHVwZGF0ZXMgdG8KdGhlIGd1ZXN0IHJlbWFwcGluZyBzdHJ1Y3R1cmVzLlRoZSB2aXJ0dWFsaXpp bmcgc29mdHdhcmUgbWF5IHRyYXAgdGhlc2UKZ3Vlc3QgaW52YWxpZGF0aW9uIG9wZXJhdGlvbnMg dG8ga2VlcCB0aGUgc2hhZG93IHRyYW5zbGF0aW9uIHN0cnVjdHVyZXMKY29uc2lzdGVudCB0byBn dWVzdCB0cmFuc2xhdGlvbiBzdHJ1Y3R1cmUgbW9kaWZpY2F0aW9ucywgd2l0aG91dApyZXNvcnRp bmcgdG8gb3RoZXIgbGVzcyBlZmZpY2llbnQgdGVjaG5pcXVlcy4iClNvIGFueSB1cGRhdGVzIG9m IElPIHBhZ2UgdGFibGUgd2lsbCBmb2xsb3cgaW52YWxpZGF0aW9uIG9wZXJhdGlvbiBhbmQKd2Ug dXNlIHRoZW0gdG8gZG8gc2hhZG93aW5nLgoKPgo+Pgo+PiBOb3cgYWxsIFBDSSBkZXZpY2VzIGlu IHNhbWUgaHZtIGRvbWFpbiBzaGFyZSBvbmUgSU8gcGFnZSB0YWJsZQo+PiAoR1BBLT5IUEEpIGlu IHBoeXNpY2FsIElPTU1VIGRyaXZlciBvZiBYZW4uIFRvIHN1cHBvcnQgbDIKPj4gdHJhbnNsYXRp b24gb2YgdklPTU1VLCBJT01NVSBkcml2ZXIgbmVlZCB0byBzdXBwb3J0IG11bHRpcGxlIGFkZHJl c3MKPj4gc3BhY2VzIHBlciBkZXZpY2UgZW50cnkuIFVzaW5nIGV4aXN0aW5nIElPIHBhZ2UgdGFi bGUoR1BBLT5IUEEpCj4+IGRlZmF1bHRseSBhbmQgc3dpdGNoIHRvIHNoYWRvdyBJTyBwYWdlIHRh YmxlKElPVkEtPkhQQSkgd2hlbiBsMgo+PiB0cmFuc2xhdGlvbiBmdW5jdGlvbiBpcyBlbmFibGVk LiBUaGVzZSBjaGFuZ2Ugd2lsbCBub3QgYWZmZWN0IGN1cnJlbnQKPj4gUDJNIGxvZ2ljLgo+Pgo+ PiAzLjMgSW50ZXJydXB0IHJlbWFwcGluZwo+PiBJbnRlcnJ1cHRzIGZyb20gdmlydHVhbCBkZXZp Y2VzIGFuZCBwaHlzaWNhbCBkZXZpY2VzIHdpbGwgYmUgZGVsaXZlcmVkCj4+IHRvIHZsYXBpYyBm cm9tIHZJT0FQSUMgYW5kIHZNU0kuIEl0IG5lZWRzIHRvIGFkZCBpbnRlcnJ1cHQgcmVtYXBwaW5n Cj4+IGhvb2tzIGluIHRoZSB2bXNpX2RlbGl2ZXIoKSBhbmQgaW9hcGljX2RlbGl2ZXIoKSB0byBm aW5kIHRhcmdldCB2bGFwaWMKPj4gYWNjb3JkaW5nIGludGVycnVwdCByZW1hcHBpbmcgdGFibGUu Cj4+Cj4+Cj4+IDMuNCBsMSB0cmFuc2xhdGlvbgo+PiBXaGVuIG5lc3RlZCB0cmFuc2xhdGlvbiBp cyBlbmFibGVkLCBhbnkgYWRkcmVzcyBnZW5lcmF0ZWQgYnkgbDEKPj4gdHJhbnNsYXRpb24gaXMg dXNlZCBhcyB0aGUgaW5wdXQgYWRkcmVzcyBmb3IgbmVzdGluZyB3aXRoIGwyCj4+IHRyYW5zbGF0 aW9uLiBQaHlzaWNhbCBJT01NVSBuZWVkcyB0byBlbmFibGUgYm90aCBsMSBhbmQgbDIgdHJhbnNs YXRpb24KPj4gaW4gbmVzdGVkIHRyYW5zbGF0aW9uIG1vZGUoR1ZBLT5HUEEtPkhQQSkgZm9yIHBh c3N0aHJvdWdoCj4+IGRldmljZS4KPgo+IEFsbCB0aGVzZSBsMSBhbmQgbDIgdHJhbnNsYXRpb25z IGFyZSBnZXR0aW5nIGNvbmZ1c2luZy4gIENvdWxkIHdlCj4gcGVyaGFwcyBjYWxsIHRoZW0gZ3Vl c3QgdHJhbnNsYXRpb24gYW5kIGhvc3QgdHJhbnNsYXRpb24sIG9yIGlzIHRoYXQKPiBsaWtlbHkg dG8gY2F1c2Ugb3RoZXIgcHJvYmxlbXM/CgpEZWZpbml0aW9ucyBvZiBsMSBhbmQgbDIgdHJhbnNs YXRpb24gZnJvbSBWVEQgc3BlYy4KZmlyc3QtbGV2ZWwgdHJhbnNsYXRpb24gdG8gcmVtYXAgYSB2 aXJ0dWFsIGFkZHJlc3MgdG8gaW50ZXJtZWRpYXRlCihndWVzdCkgcGh5c2ljYWwgYWRkcmVzcy4K c2Vjb25kLWxldmVsIHRyYW5zbGF0aW9ucyB0byByZW1hcCBhIGludGVybWVkaWF0ZSBwaHlzaWNh bCBhZGRyZXNzIHRvCm1hY2hpbmUgKGhvc3QpIHBoeXNpY2FsIGFkZHJlc3MuCmd1ZXN0IGFuZCBo b3N0IHRyYW5zbGF0aW9uIG1heWJlIG5vdCBzdWl0YWJsZSBmb3IgdGhlbT8KCj4KPj4KPj4gVlQt ZCBjb250ZXh0IGVudHJ5IHBvaW50cyB0byBndWVzdCBsMSB0cmFuc2xhdGlvbiB0YWJsZSB3aGlj aAo+PiB3aWxsIGJlIG5lc3QtdHJhbnNsYXRlZCBieSBsMiB0cmFuc2xhdGlvbiB0YWJsZSBhbmQg c28gaXQKPj4gY2FuIGJlIGRpcmVjdGx5IGxpbmtlZCB0byBjb250ZXh0IGVudHJ5IG9mIHBoeXNp Y2FsIElPTU1VLgo+Pgo+PiBUbyBlbmFibGUgbDEgdHJhbnNsYXRpb24gaW4gVk0KPj4gMSkgWGVu IElPTU1VIGRyaXZlciBlbmFibGVzIG5lc3RlZCB0cmFuc2xhdGlvbiBtb2RlCj4+IDIpIFVwZGF0 ZSBHUEEgcm9vdCBvZiBndWVzdCBsMSB0cmFuc2xhdGlvbiB0YWJsZSB0byBjb250ZXh0IGVudHJ5 Cj4+IG9mIHBoeXNpY2FsIElPTU1VLgo+Pgo+PiBBbGwgaGFuZGxlcyBhcmUgaW4gaHlwZXJ2aXNv ciBhbmQgbm8gaW50ZXJhY3Rpb24gd2l0aCBRZW11Lgo+Pgo+Pgo+PiAzLjUgSW1wbGVtZW50YXRp b24gY29uc2lkZXJhdGlvbgo+PiBWVC1kIHNwZWMgZG9lc24ndCBkZWZpbmUgYSBjYXBhYmlsaXR5 IGJpdCBmb3IgdGhlIGwyIHRyYW5zbGF0aW9uLgo+PiBBcmNoaXRlY3R1cmFsbHkgdGhlcmUgaXMg bm8gd2F5IHRvIHRlbGwgZ3Vlc3QgdGhhdCBsMiB0cmFuc2xhdGlvbgo+PiBjYXBhYmlsaXR5IGlz IG5vdCBhdmFpbGFibGUuIExpbnV4IEludGVsIElPTU1VIGRyaXZlciB0aGlua3MgbDIKPj4gdHJh bnNsYXRpb24gaXMgYWx3YXlzIGF2YWlsYWJsZSB3aGVuIFZURCBleGl0cyBhbmQgZmFpbCB0byBi ZSBsb2FkZWQKPj4gd2l0aG91dCBsMiB0cmFuc2xhdGlvbiBzdXBwb3J0IGV2ZW4gaWYgaW50ZXJy dXB0IHJlbWFwcGluZyBhbmQgbDEKPj4gdHJhbnNsYXRpb24gYXJlIGF2YWlsYWJsZS4gU28gaXQg bmVlZHMgdG8gZW5hYmxlIGwyIHRyYW5zbGF0aW9uIGZpcnN0Cj4+IGJlZm9yZSBvdGhlciBmdW5j dGlvbnMuCj4KPiBXaGF0IHRoZW4gaXMgdGhlIHB1cnBvc2Ugb2YgdGhlIG5lc3RlZCB0cmFuc2xh dGlvbiBzdXBwb3J0IGJpdCBpbiB0aGUKPiBleHRlbmRlZCBjYXBhYmlsaXR5IHJlZ2lzdGVyPwoK SXQncyB0byB0cmFuc2xhdGUgb3V0cHV0IEdQQSBmcm9tIGZpcnN0IGxldmVsIHRyYW5zbGF0aW9u KElPVkEtPkdQQSkgdG8gSFBBLgoKRGV0YWlsIHBsZWFzZSBzZWUgVlREIHNwZWMgLSAzLjggTmVz dGVkIFRyYW5zbGF0aW9uCiJXaGVuIE5lc3RpbmcgRW5hYmxlIChORVNURSkgZmllbGQgaXMgMSBp biBleHRlbmRlZC1jb250ZXh0LWVudHJpZXMsCnJlcXVlc3RzLXdpdGgtUEFTSUQgdHJhbnNsYXRl ZCB0aHJvdWdoIGZpcnN0LWxldmVsIHRyYW5zbGF0aW9uIGFyZSBhbHNvCnN1YmplY3RlZCB0byBu ZXN0ZWQgc2Vjb25kLWxldmVsIHRyYW5zbGF0aW9uLiBTdWNoIGV4dGVuZGVkY29udGV4dC0KZW50 cmllcyBjb250YWluIGJvdGggdGhlIHBvaW50ZXIgdG8gdGhlIFBBU0lELXRhYmxlICh3aGljaCBj b250YWlucyB0aGUKcG9pbnRlciB0byB0aGUgZmlyc3RsZXZlbCB0cmFuc2xhdGlvbiBzdHJ1Y3R1 cmVzKSwgYW5kIHRoZSBwb2ludGVyIHRvCnRoZSBzZWNvbmQtbGV2ZWwgdHJhbnNsYXRpb24gc3Ry dWN0dXJlcy4iCgoKPj4gNC40IFJlcG9ydCB2SU9NTVUgdG8gaHZtbG9hZGVyCj4+IEh2bWxvYWRl ciBpcyBpbiBjaGFyZ2Ugb2YgYnVpbGRpbmcgQUNQSSB0YWJsZXMgZm9yIEd1ZXN0IE9TIGFuZCBP Uwo+PiBwcm9iZXMgSU9NTVUgdmlhIEFDUEkgRE1BUiB0YWJsZS4gU28gaHZtbG9kZXIgbmVlZHMg dG8ga25vdyB3aGV0aGVyCj4+IHZJT01NVSBpcyBlbmFibGVkIG9yIG5vdCBhbmQgaXRzIGNhcGFi aWxpdHkgdG8gcHJlcGFyZSBBQ1BJIERNQVIgdGFibGUKPj4gZm9yIEd1ZXN0IE9TLgo+Pgo+PiBU aGVyZSBhcmUgdGhyZWUgd2F5cyB0byBkbyB0aGF0Lgo+PiAxKSBFeHRlbmQgc3RydWN0IGh2bV9p bmZvX3RhYmxlIGFuZCBhZGQgdmFyaWFibGVzIGluIHRoZSBzdHJ1Y3QKPj4gaHZtX2luZm9fdGFi bGUgdG8gcGFzcyB2SU9NTVUgaW5mb3JtYXRpb24gdG8gaHZtbG9hZGVyLiBCdXQgdGhpcwo+PiBy ZXF1aXJlcyB0byBhZGQgbmV3IHhjIGludGVyZmFjZSB0byB1c2Ugc3RydWN0IGh2bV9pbmZvX3Rh YmxlIGluIHRoZQo+PiBRZW11Lgo+Pgo+PiAyKSBQYXNzIHZJT01NVSBpbmZvcm1hdGlvbiB0byBo dm1sb2FkZXIgdmlhIFhlbnN0b3JlCj4+Cj4+IDMpIEJ1aWxkIEFDUEkgRE1BUiB0YWJsZSBpbiBR ZW11IGFuZCBwYXNzIGl0IHRvIGh2bWxvYWRlciB2aWEgWGVuc3RvcmUuCj4+IFRoaXMgc29sdXRp b24gaXMgYWxyZWFkeSBwcmVzZW50IGluIHRoZSB2TlZESU1NIGRlc2lnbig0LjMuMQo+PiBCdWls ZGluZyBHdWVzdCBBQ1BJIFRhYmxlcwo+PiBodHRwOi8vd3d3Lmdvc3NhbWVyLXRocmVhZHMuY29t L2xpc3RzL3hlbi9kZXZlbC80Mzk3NjYpLgo+Pgo+PiBUaGUgdGhpcmQgb3B0aW9uIHNlZW1zIG1v cmUgY2xlYXIgYW5kIGh2bWxvYWRlciBkb2Vzbid0IG5lZWQgdG8gZGVhbAo+PiB3aXRoIHZJT01N VSBzdHVmZnMgYW5kIGp1c3QgcGFzcyB0aHJvdWdoIERNQVIgdGFibGUgdG8gR3Vlc3QgT1MuIEFs bAo+PiB2SU9NTVUgc3BlY2lmaWMgc3R1ZmZzIHdpbGwgYmUgcHJvY2Vzc2VkIGluIHRoZSBkdW1t eSB4ZW4tdklPTU1VIGRyaXZlci4KPgo+IFBhcnQgb2YgQUNQSSB0YWJsZSBidWlsZGluZyBoYXMg bm93IG1vdmVkIGludG8gdGhlIHRvb2xzdGFjay4gIFVubGVzcwo+IHRoZSB0YWJsZSBuZWVkcyBj cmVhdGluZyBkeW5hbWljYWxseSAod2hpY2ggZG9lc24ndCBhcHBlYXIgdG8gYmUgdGhlCj4gY2Fz ZSksIGl0IGNhbiBiZSBkb25lIHdpdGhvdXQgYW55IGZ1cnRoZXIgY29tbXVuaWNhdGlvbi4KPgoK VGhlIERNQVIgdGFibGUgbmVlZHMgdG8gYmUgY3JlYXRlZCBhY2NvcmRpbmcgaW5wdXQgcGFyYW1l dGVycy4KLkUsRyBXaGVuIGludGVycnVwdCByZW1hcHBpbmcgaXMgZW5hYmxlZCwgSU5UUl9SRU1B UCBiaXQgaW4gdGhlIGRtYXIKc3RydWN0dXJlIG5lZWRzIHRvIGJlIHNldC4gU28gd2UgbmVlZCB0 byBjcmVhdGUgdGFibGUgZHluYW1pY2FsbHkgZHVyaW5nCmNyZWF0aW5nIFZNLgoKLS0gCkJlc3Qg cmVnYXJkcwpUaWFueXUgTGFuCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3Jn Cmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK