From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lan Tianyu Subject: Xen virtual IOMMU high level design doc V3 Date: Thu, 17 Nov 2016 23:36:35 +0800 Message-ID: <67e7233d-7f28-7b1f-05a6-286a2c61a939@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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <577BD8D002000078000FB3F7@prv-mh.provo.novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Jan Beulich , Kevin Tian , Andrew Cooper , "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 Q2hhbmdlIHNpbmNlIFYyOgoJMSkgVXBkYXRlIG1vdGl2YXRpb24gZm9yIFhlbiB2SU9NTVUgLSAy ODggdmNwdXMgc3VwcG9ydCBwYXJ0CglBZGQgZGVzY3JpcHRvciBhYm91dCBwbGFuIG9mIGluY3Jl YXNpbmcgdmNwdSBmcm9tIDEyOCB0byAyNTUgYW5kCmRlcGVuZGVuY3kgYmV0d2VlbiBYMkFQSUMg YW5kIGludGVycnVwdCByZW1hcHBpbmcuCgkyKSBVcGRhdGUgMy4xIE5ldyB2SU9NTVUgaHlwZXJj YWxsIGludGVyZmFjZQoJQ2hhbmdlIHZJT01NVSBoeXBlcmNhbGwgZnJvbSBzeXNjdGwgdG8gZG1v cCwgYWRkIG11bHRpIHZJT01NVQpjb25zaWRlcmF0aW9uIGNvbnNpZGVyYXRpb24gYW5kIGRyYWlu IGluLWZseSBETUEgc3ViY29tbWFuZAoJMykgVXBkYXRlIDMuNSBpbXBsZW1lbnRhdGlvbiBjb25z aWRlcmF0aW9uCglXZSBmb3VuZCBpdCdzIHN0aWxsIHNhZmUgdG8gZW5hYmxlIGludGVycnVwdCBy ZW1hcHBpbmcgZnVuY3Rpb24gYmVmb3JlIAphZGRpbmcgbDIgdHJhbnNsYXRpb24oRE1BIHRyYW5z bGF0aW9uKSB0byBpbmNyZWFzZSB2Y3B1IG51bWJlciA+MjU1LgoJNCkgVXBkYXRlIDMuMiBsMiB0 cmFuc2xhdGlvbiAtIHZpcnR1YWwgZGV2aWNlIHBhcnQKCUFkZCBwcm9wb3NhbCB0byBkZWFsIHdp dGggcmFjZSBiZXR3ZWVuIGluLWZseSBETUEgYW5kIGludmFsaWRhdGlvbiAKb3BlcmF0aW9uIGlu IGh5cGVydmlzb3IuCgk1KSBVcGRhdGUgNC40IFJlcG9ydCB2SU9NTVUgdG8gaHZtbG9hZGVyCglB ZGQgb3B0aW9uIG9mIGJ1aWxkaW5nIEFDUEkgRE1BUiB0YWJsZSBpbiB0aGUgdG9vbHN0YWNrIGZv ciBkaXNjdXNzaW9uLgoKQ2hhbmdlIHNpbmNlIFYxOgoJMSkgVXBkYXRlIG1vdGl2YXRpb24gZm9y IFhlbiB2SU9NTVUgLSAyODggdmNwdXMgc3VwcG9ydCBwYXJ0CgkyKSBDaGFuZ2UgZGVmaW5pdGlv biBvZiBzdHJ1Y3QgeGVuX3N5c2N0bF92aW9tbXVfb3AKCTMpIFVwZGF0ZSAiMy41IEltcGxlbWVu dGF0aW9uIGNvbnNpZGVyYXRpb24iIHRvIGV4cGxhaW4gd2h5IHdlIG5lZWRzIHRvCmVuYWJsZSBs MiB0cmFuc2xhdGlvbiBmaXJzdC4KCTQpIFVwZGF0ZSAiNC4zIFEzNSB2cyBJNDQweCIgLSBMaW51 eC9XaW5kb3dzIFZURCBkcml2ZXJzIGNhbiB3b3JrIG9uCnRoZSBlbXVsYXRlZCBJNDQwIGNoaXBz ZXQuCgk1KSBSZW1vdmUgc3RhbGUgc3RhdGVtZW50IGluIHRoZSAiMy4zIEludGVycnVwdCByZW1h cHBpbmciCgpDb250ZW50Ogo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIE1vdGl2YXRpb24gb2Yg dklPTU1VCgkxLjEgRW5hYmxlIG1vcmUgdGhhbiAyNTUgdmNwdXMKCTEuMiBTdXBwb3J0IFZGSU8t YmFzZWQgdXNlciBzcGFjZSBkcml2ZXIKCTEuMyBTdXBwb3J0IGd1ZXN0IFNoYXJlZCBWaXJ0dWFs IE1lbW9yeSAoU1ZNKQoyLiBYZW4gdklPTU1VIEFyY2hpdGVjdHVyZQoJMi4xIGwyIHRyYW5zbGF0 aW9uIG92ZXJ2aWV3CgkyLjIgSW50ZXJydXB0IHJlbWFwcGluZyBvdmVydmlldwozLiBYZW4gaHlw ZXJ2aXNvcgoJMy4xIE5ldyB2SU9NTVUgaHlwZXJjYWxsIGludGVyZmFjZQoJMy4yIGwyIHRyYW5z bGF0aW9uCgkzLjMgSW50ZXJydXB0IHJlbWFwcGluZwoJMy40IGwxIHRyYW5zbGF0aW9uCgkzLjUg SW1wbGVtZW50YXRpb24gY29uc2lkZXJhdGlvbgo0LiBRZW11Cgk0LjEgUWVtdSB2SU9NTVUgZnJh bWV3b3JrCgk0LjIgRHVtbXkgeGVuLXZJT01NVSBkcml2ZXIKCTQuMyBRMzUgdnMuIGk0NDB4Cgk0 LjQgUmVwb3J0IHZJT01NVSB0byBodm1sb2FkZXIKCgpHbG9zc2FyeToKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KbDEgdHJhbnNsYXRpb24gLSBmaXJzdC1sZXZlbCB0cmFuc2xhdGlvbiB0byByZW1h cCBhIHZpcnR1YWwgYWRkcmVzcyB0bwppbnRlcm1lZGlhdGUgKGd1ZXN0KSBwaHlzaWNhbCBhZGRy ZXNzLiAoR1ZBLT5HUEEpCmwyIHRyYW5zbGF0aW9uIC0gc2Vjb25kLWxldmVsIHRyYW5zbGF0aW9u cyB0byByZW1hcCBhIGludGVybWVkaWF0ZQpwaHlzaWNhbCBhZGRyZXNzIHRvIG1hY2hpbmUgKGhv c3QpIHBoeXNpY2FsIGFkZHJlc3MuIChHUEEtPkhQQSkKCjEgTW90aXZhdGlvbiBmb3IgWGVuIHZJ T01NVQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLjEgRW5hYmxlIG1vcmUgdGhhbiAyNTUgdmNw dSBzdXBwb3J0CkhQQyBjbG91ZCBzZXJ2aWNlIHJlcXVpcmVzIFZNIHByb3ZpZGVzIGhpZ2ggcGVy Zm9ybWFuY2UgcGFyYWxsZWwKY29tcHV0aW5nIGFuZCB3ZSBob3BlIHRvIGNyZWF0ZSBhIGh1Z2Ug Vk0gd2l0aCA+MjU1IHZjcHUgb24gb25lIG1hY2hpbmUKdG8gbWVldCBzdWNoIHJlcXVpcmVtZW50 LiBQaW4gZWFjaCB2Y3B1IHRvIHNlcGFyYXRlIHBjcHVzLgoKTm93IEhWTSBndWVzdCBjYW4gc3Vw cG9ydCAxMjggdmNwdXMgYXQgbW9zdC4gV2UgY2FuIGluY3JlYXNlIHZjcHUgbnVtYmVyCmZyb20g MTI4IHRvIDI1NSB2aWEgY2hhbmdpbmcgc29tZSBsaW1pdGF0aW9ucyBhbmQgZXh0ZW5kaW5nIHZj cHUgcmVsYXRlZApkYXRhIHN0cnVjdHVyZS4gVGhpcyBhbHNvIG5lZWRzIHRvIGNoYW5nZSB0aGUg cnVsZSBvZiBhbGxvY2F0aW5nIHZjcHUncwpBUElDIElELiBDdXJyZW50IHJ1bGUgaXMgIihBUElD IElEKSA9ICh2Y3B1IGluZGV4KSAqIDIiLiBXZSBuZWVkIHRvCmNoYW5nZSBpdCB0byAiKEFQSUMg SUQpID0gKHZjcHUgaW5kZXgpIi4gQW5kcmV3IENvb3BlcidzIENQVUlECmltcHJvdmVtZW50IHdv cmsgd2lsbCBjb3ZlciB0aGlzIHRvIGltcHJvdmUgZ3Vlc3QncyBjcHUgdG9wb2xvZ3kuIFdlCndp bGwgYmFzZSBvbiB0aGlzIHRvIGluY3JlYXNlIHZjcHUgbnVtYmVyIGZyb20gMTI4IHRvIDI1NS4K ClRvIHN1cHBvcnQgPjI1NSB2Y3B1cywgWDJBUElDIG1vZGUgaW4gZ3Vlc3QgaXMgbmVjZXNzYXJ5 IGJlY2F1c2UgbGVnYWN5CkFQSUMoWEFQSUMpIGp1c3Qgc3VwcG9ydHMgOC1iaXQgQVBJQyBJRCBh bmQgaXQgb25seSBjYW4gc3VwcG9ydCAyNTUKdmNwdXMgYXQgbW9zdC4gWDJBUElDIG1vZGUgc3Vw cG9ydHMgMzItYml0IEFQSUMgSUQgYW5kIGl0IHJlcXVpcmVzCmludGVycnVwdCBtYXBwaW5nIGZ1 bmN0aW9uIG9mIHZJT01NVS4KClRoZSByZWFzb24gZm9yIHRoaXMgaXMgdGhhdCB0aGVyZSBpcyBu byBtb2RpZmljYXRpb24gdG8gZXhpc3RpbmcgUENJIE1TSQphbmQgSU9BUElDIHdpdGggdGhlIGlu dHJvZHVjdGlvbiBvZiBYMkFQSUMuIFBDSSBNU0kvSU9BUElDIGNhbiBvbmx5IHNlbmQKaW50ZXJy dXB0IG1lc3NhZ2UgY29udGFpbmluZyA4LWJpdCBBUElDIElELCB3aGljaCBjYW5ub3QgYWRkcmVz cyA+MjU1CmNwdXMuIEludGVycnVwdCByZW1hcHBpbmcgc3VwcG9ydHMgMzItYml0IEFQSUMgSUQg YW5kIHNvIGl0J3MgbmVjZXNzYXJ5CnRvIGVuYWJsZSA+MjU1IGNwdXMgd2l0aCB4MmFwaWMgbW9k ZS4KCkJvdGggTGludXggYW5kIFdpbmRvd3MgcmVxdWlyZXMgaW50ZXJydXB0IHJlbWFwcGluZyB3 aGVuIGNwdSBudW1iZXIgaXMgPjI1NS4KCgoxLjIgU3VwcG9ydCBWRklPLWJhc2VkIHVzZXIgc3Bh Y2UgZHJpdmVyIChlLmcuIERQREspIGluIHRoZSBndWVzdApJdCByZWxpZXMgb24gdGhlIGwyIHRy YW5zbGF0aW9uIGNhcGFiaWxpdHkgKElPVkEtPkdQQSkgb24KdklPTU1VLiBwSU9NTVUgbDIgYmVj b21lcyBhIHNoYWRvd2luZyBzdHJ1Y3R1cmUgb2YKdklPTU1VIHRvIGlzb2xhdGUgRE1BIHJlcXVl c3RzIGluaXRpYXRlZCBieSB1c2VyIHNwYWNlIGRyaXZlci4KCgoKMS4zIFN1cHBvcnQgZ3Vlc3Qg U1ZNIChTaGFyZWQgVmlydHVhbCBNZW1vcnkpCkl0IHJlbGllcyBvbiB0aGUgbDEgdHJhbnNsYXRp b24gdGFibGUgY2FwYWJpbGl0eSAoR1ZBLT5HUEEpIG9uCnZJT01NVS4gcElPTU1VIG5lZWRzIHRv IGVuYWJsZSBib3RoIGwxIGFuZCBsMiB0cmFuc2xhdGlvbiBpbiBuZXN0ZWQKbW9kZSAoR1ZBLT5H UEEtPkhQQSkgZm9yIHBhc3N0aHJvdWdoIGRldmljZS4gSUdEIHBhc3N0aHJvdWdoCmlzIHRoZSBt YWluIHVzYWdlIHRvZGF5ICh0byBzdXBwb3J0IE9wZW5DTCAyLjAgU1ZNIGZlYXR1cmUpLiBJbiB0 aGUKZnV0dXJlIFNWTSBtaWdodCBiZSB1c2VkIGJ5IG90aGVyIEkvTyBkZXZpY2VzIHRvby4KCgoK Mi4gWGVuIHZJT01NVSBBcmNoaXRlY3R1cmUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCiogdklP TU1VIHdpbGwgYmUgaW5zaWRlIFhlbiBoeXBlcnZpc29yIGZvciBmb2xsb3dpbmcgZmFjdG9ycwoJ MSkgQXZvaWQgcm91bmQgdHJpcHMgYmV0d2VlbiBRZW11IGFuZCBYZW4gaHlwZXJ2aXNvcgoJMikg RWFzZSBvZiBpbnRlZ3JhdGlvbiB3aXRoIHRoZSByZXN0IG9mIHRoZSBoeXBlcnZpc29yCgkzKSBI Vk1saXRlL1BWSCBkb2Vzbid0IHVzZSBRZW11CiogRHVtbXkgeGVuLXZJT01NVSBpbiBRZW11IGFz IGEgd3JhcHBlciBvZiBuZXcgaHlwZXJjYWxsIHRvIGNyZWF0ZQovZGVzdHJveSB2SU9NTVUgaW4g aHlwZXJ2aXNvciBhbmQgZGVhbCB3aXRoIHZpcnR1YWwgUENJIGRldmljZSdzIGwyCnRyYW5zbGF0 aW9uLgoKMi4xIGwyIHRyYW5zbGF0aW9uIG92ZXJ2aWV3CkZvciBWaXJ0dWFsIFBDSSBkZXZpY2Us IGR1bW15IHhlbi12SU9NTVUgZG9lcyB0cmFuc2xhdGlvbiBpbiB0aGUKUWVtdSB2aWEgbmV3IGh5 cGVyY2FsbC4KCkZvciBwaHlzaWNhbCBQQ0kgZGV2aWNlLCB2SU9NTVUgaW4gaHlwZXJ2aXNvciBz aGFkb3dzIElPIHBhZ2UgdGFibGUgZnJvbQpJT1ZBLT5HUEEgdG8gSU9WQS0+SFBBIGFuZCBsb2Fk IHBhZ2UgdGFibGUgdG8gcGh5c2ljYWwgSU9NTVUuCgpUaGUgZm9sbG93aW5nIGRpYWdyYW0gc2hv d3MgbDIgdHJhbnNsYXRpb24gYXJjaGl0ZWN0dXJlLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwp8UWVtdSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0rICAgfAp8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAgVmlydHVhbCAgICB8ICAgfAp8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgIFBDSSBkZXZpY2UgICB8ICAgfAp8ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8ICAgfAp8ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0rICAgfAp8ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8RE1BICAgICAgICAgfAp8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWICAgICAgICAgICAgfAp8 ICArLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgUmVxdWVzdCAgKy0tLS0tLS0tLS0tLS0tLS0rICAg fAp8ICB8ICAgICAgICAgICAgICAgICAgICArPC0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICB8 ICAgfAp8ICB8ICBEdW1teSB4ZW4gdklPTU1VICB8IFRhcmdldCBHUEEgfCAgTWVtb3J5IHJlZ2lv biB8ICAgfAp8ICB8ICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0+KyAgICAgICAgICAg ICAgICB8ICAgfAp8ICArLS0tLS0tLS0tKy0tLS0tLS0tLS0rICAgICAgICAgICAgKy0tLS0tLS0r LS0tLS0tLS0rICAgfAp8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgICAgICAgICAgfAp8ICAgICAgICAgICAgfEh5cGVyY2FsbCAgICAgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgfAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKwp8SHlwZXJ2aXNvciAgfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgfAp8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAp8ICAgICAgICAgICAgdiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAp8ICAgICArLS0tLS0tKy0tLS0tLSsgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAp8ICAgICB8ICAgdklPTU1VICAgIHwg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAp8ICAgICArLS0tLS0tKy0tLS0t LSsgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAp8ICAgICAgICAgICAgfCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAp8ICAgICAgICAgICAg diAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAp8ICAgICArLS0t LS0tKy0tLS0tLSsgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAp8ICAgICB8 IElPTU1VIGRyaXZlcnwgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAp8ICAg ICArLS0tLS0tKy0tLS0tLSsgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAp8 ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg fAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKwp8SFcgICAgICAgICAgdiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWICAgICAg ICAgICAgfAp8ICAgICArLS0tLS0tKy0tLS0tLSsgICAgICAgICAgICAgICAgICstLS0tLS0tLS0t LS0tKyAgICAgfAp8ICAgICB8ICAgSU9NTVUgICAgICstLS0tLS0tLS0tLS0tLS0tPisgIE1lbW9y eSAgICAgfCAgICAgfAp8ICAgICArLS0tLS0tKy0tLS0tLSsgICAgICAgICAgICAgICAgICstLS0t LS0tLS0tLS0tKyAgICAgfAp8ICAgICAgICAgICAgXiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfAp8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfAp8ICAgICArLS0tLS0tKy0tLS0tLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfAp8ICAgICB8IFBDSSBEZXZpY2UgIHwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8ICAgICArLS0tLS0tLS0tLS0tLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwoKMi4yIEludGVycnVwdCByZW1hcHBp bmcgb3ZlcnZpZXcuCkludGVycnVwdHMgZnJvbSB2aXJ0dWFsIGRldmljZXMgYW5kIHBoeXNpY2Fs IGRldmljZXMgd2lsbCBiZSBkZWxpdmVyZWQKdG8gdkxBUElDIGZyb20gdklPQVBJQyBhbmQgdk1T SS4gdklPTU1VIHdpbGwgcmVtYXAgaW50ZXJydXB0IGR1cmluZyB0aGlzCnByb2NlZHVyZS4KCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCnxRZW11 ICAgICAgICAgICAgICAgICAgICAgICB8Vk0gICAgICAgICAgICAgICAgICAgICB8CnwgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICstLS0tLS0tLS0tLS0tLS0tKyAgICB8CnwgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IHwgIERldmljZSBkcml2ZXIgfCAgICB8CnwgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICstLS0tLS0tLSstLS0tLS0tKyAgICB8CnwgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgIF4gICAgICAgICAgICB8CnwgICAgICAgKy0tLS0tLS0tLS0t LS0tLS0rICB8ICstLS0tLS0tLSstLS0tLS0tKyAgICB8CnwgICAgICAgfCBWaXJ0dWFsIGRldmlj ZSB8ICB8IHwgIElSUSBzdWJzeXN0ZW0gfCAgICB8CnwgICAgICAgKy0tLS0tLS0rLS0tLS0tLS0r ICB8ICstLS0tLS0tLSstLS0tLS0tKyAgICB8CnwgICAgICAgICAgICAgICB8ICAgICAgICAgICB8 ICAgICAgICAgIF4gICAgICAgICAgICB8CnwgICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAg ICAgICAgIHwgICAgICAgICAgICB8CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rCnxoeXBlcnZpb3NyICAgICB8ICAgICAgICAgICAgICAgICAgICAg IHwgVklSUSAgICAgICB8CnwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgKy0tLS0tLS0tLSst LS0tLS0tLSsgICB8CnwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgIHZMQVBJQyAg ICAgIHwgICB8CnwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgKy0tLS0tLS0tLSstLS0tLS0t LSsgICB8CnwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIF4gICAgICAgICAg ICB8CnwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8 CnwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgKy0tLS0tLS0tLSstLS0tLS0tLSsgICB8Cnwg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgIHZJT01NVSAgICAgIHwgICB8CnwgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgKy0tLS0tLS0tLSstLS0tLS0tLSsgICB8CnwgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIF4gICAgICAgICAgICB8CnwgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8CnwgICAgICAgICAgICAg ICB8ICAgICAgICAgICAgKy0tLS0tLS0tLSstLS0tLS0tLSsgICB8CnwgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgfCAgIHZJT0FQSUMvdk1TSSAgIHwgICB8CnwgICAgICAgICAgICAgICB8ICAg ICAgICAgICAgKy0tLS0rLS0tLSstLS0tLS0tLSsgICB8CnwgICAgICAgICAgICAgICB8ICAgICAg ICAgICAgICAgICBeICAgIF4gICAgICAgICAgICB8CnwgICAgICAgICAgICAgICArLS0tLS0tLS0t LS0tLS0tLS0rICAgIHwgICAgICAgICAgICB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgICAgICAgICB8CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rCkhXICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHxJUlEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0t LS0tLS0rCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBQQ0kgRGV2aWNlICAg ICAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0t LSsKCgoKCjMgWGVuIGh5cGVydmlzb3IKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCjMuMSBOZXcgaHlwZXJj YWxsIFhFTl9kbW9wX3Zpb21tdV9vcApDcmVhdGUgYSBuZXcgZG1vcChkZXZpY2UgbW9kZWwgb3Bl cmF0aW9uIGh5ZXJjYWxsKSBmb3IgdklPTU1VIHNpbmNlIGl0CndpbGwgYmUgY2FsbGVkIGJ5IFFl bXUgZHVyaW5nIHJ1bnRpbWUuIFRoaXMgaHlwZXJjYWxsIGFsc28gc2hvdWxkCnN1cHBvcnQgUFYg SU9NTVUgd2hpY2ggaXMgc3RpbGwgdW5kZXIgUkZDIHJldmlldy4gSGVyZSBvbmx5IGNvdmVycwpO T04tUFYgcGFydC4KCjEpIERlZmluaXRpb24gb2YgInN0cnVjdCB4ZW5fZG1vcF92aW9tbXVfb3Ai IGFzIG5ldyBoeXBlcmNhbGwgcGFyYW1ldGVyLgoKc3RydWN0IHhlbl9kbW9wX3Zpb21tdV9vcCB7 Cgl1MzIgY21kOwoJdTMyIGRvbWlkOwoJdTMyIHZpb21tdV9pZDsKCXVuaW9uIHsKCQlzdHJ1Y3Qg ewoJCQl1MzIgY2FwYWJpbGl0aWVzOwoJCX0gcXVlcnlfY2FwYWJpbGl0aWVzOwoJCXN0cnVjdCB7 CgkJCS8qIElOIHBhcmFtZXRlcnMuICovCgkJCXUzMiBjYXBhYmlsaXRpZXM7CgkJCXU2NCBiYXNl X2FkZHJlc3M7CgkJCXN0cnVjdCB7CgkJCQl1MzIgc2l6ZTsKCQkJCVhFTl9HVUVTVF9IQU5ETEVf NjQodWludDMyKSBkZXZfbGlzdDsKCQkJfSBkZXZfc2NvcGU7CgkJCS8qIE91dCBwYXJhbWV0ZXJz LiAqLwoJCQl1MzIgdmlvbW11X2lkOwoJCX0gY3JlYXRlX2lvbW11OwoJICAgICAgICBzdHJ1Y3Qg ewoJCQkvKiBJTiBwYXJhbWV0ZXJzLiAqLwoJCQl1MzIgdnNiZGY7CiAgICAgICAgICAgICAgCQl1 NjQgaW92YTsKCSAgICAJCS8qIE91dCBwYXJhbWV0ZXJzLiAqLwogICAgICAgICAgICAgIAkJdTY0 IHRyYW5zbGF0ZWRfYWRkcjsKICAgICAgICAgICAgICAJCXU2NCBhZGRyX21hc2s7IC8qIFRyYW5z bGF0aW9uIHBhZ2Ugc2l6ZSAqLwogICAgICAgICAgICAgIAkJdTMyIHBlcm1pc3Npb247CiAgICAg ICAgICAJfSBsMl90cmFuc2xhdGlvbjsJCgl9Cn07CgoKRGVmaW5pdGlvbiBvZiBWSU9NTVUgYWNj ZXNzIHBlcm1pc3Npb246CiNkZWZpbmUgVklPTU1VX05PTkUgCTAKI2RlZmluZQlWSU9NTVVfUk8g ICAJMQojZGVmaW5lCVZJT01NVV9XTyAgIAkyCiNkZWZpbmUJVklPTU1VX1JXICAgIAkzCgoKRGVm aW5pdGlvbiBvZiBWSU9NTVUgc3Vib3BzOgojZGVmaW5lIFhFTl9ETU9QX3Zpb21tdV9xdWVyeV9j YXBhYmlsaXR5CQkwCiNkZWZpbmUgWEVOX0RNT1BfdmlvbW11X2NyZWF0ZQkJCQkxCiNkZWZpbmUg WEVOX0RNT1BfdmlvbW11X2Rlc3Ryb3kJCQkJMgojZGVmaW5lIFhFTl9ETU9QX3Zpb21tdV9kbWFf dHJhbnNsYXRpb25fZm9yX3ZwZGV2IAkzCiNkZWZpbmUgWEVOX0RNT1BfdmlvbW11X2RtYV9kcmFp bl9jb21wbGV0ZWQJCTQKCkRlZmluaXRpb24gb2YgVklPTU1VIGNhcGFiaWxpdGllcwojZGVmaW5l IFhFTl9WSU9NTVVfQ0FQQUJJTElUWV9sMV90cmFuc2xhdGlvbgkJKDEgPDwgMCkKI2RlZmluZSBY RU5fVklPTU1VX0NBUEFCSUxJVFlfbDJfdHJhbnNsYXRpb24JCSgxIDw8IDEpCiNkZWZpbmUgWEVO X1ZJT01NVV9DQVBBQklMSVRZX2ludGVycnVwdF9yZW1hcHBpbmcJKDEgPDwgMikKCgoyKSBEZXNp Z24gZm9yIHN1Ym9wcwotIFhFTl9ETU9QX3Zpb21tdV9xdWVyeV9jYXBhYmlsaXR5CglHZXQgdklP TU1VIGNhcGFiaWxpdGllcyhsMS9sMiB0cmFuc2xhdGlvbiBhbmQgaW50ZXJydXB0CnJlbWFwcGlu ZykuCgotIFhFTl9ETU9QX3Zpb21tdV9jcmVhdGUKCUNyZWF0ZSB2SU9NTVUgaW4gWGVuIGh5cGVy dmlzb3Igd2l0aCBkb21faWQsIGNhcGFiaWxpdGllcywgcmVnCmJhc2UgYWRkcmVzcyBhbmQgZGV2 aWNlIHNjb3BlLiBJZiBzaXplIG9mIGRldmljZSBsaXN0IGlzIDAsIGFsbCBQQ0kKZGV2aWNlcyBh cmUgdW5kZXIgdGhlIHZJT01NVSBleGNlcHRzIFBDSSBkZXZpY2VzIGFzc2lnbmVkIHRvIG90aGVy ClZJT01NVS4gaHlwZXJ2aXNvciByZXR1cm5zIHZJT01NVSBpZC4KCi0gWEVOX0RNT1BfdmlvbW11 X2Rlc3Ryb3kKCURlc3RvcnkgdklPTU1VIGluIFhlbiBoeXBlcnZpc29yIHdpdGggZG9tX2lkIGFz IHBhcmFtZXRlcnMuCgotIFhFTl9ETU9QX3Zpb21tdV9kbWFfdHJhbnNsYXRpb25fZm9yX3ZwZGV2 CiAgICAgICAgCVRyYW5zbGF0ZSBJT1ZBIHRvIEdQQSBmb3Igc3BlY2lmaWVkIHZpcnR1YWwgUENJ IGRldmljZSB3aXRoIGRvbQppZCwgUENJIGRldmljZSdzIGJkZiBhbmQgSU9WQSBhbmQgeGVuIGh5 cGVydmlzb3IgcmV0dXJucyB0cmFuc2xhdGVkIEdQQSwKYWRkcmVzcyBtYXNrIGFuZCBhY2Nlc3Mg cGVybWlzc2lvbi4KCi0gWEVOX0RNT1BfdmlvbW11X2RtYV9kcmFpbl9jb21wbGV0ZWQKCU5vdGlm eSBoeXBlcnZpc29yIHRoYXQgZHVtbXkgdklPTU1VIGhhcyBkcmFpbmVkIGluLWZseSBETUEgYWZ0 ZXIKaW52YWxpZGF0aW9uIG9wZXJhdGlvbiBhbmQgdklPTU1VIGNhbiBtYXJrIGludmFsaWRhdGlv biBjb21wbGV0ZWQgaW4KaW52YWxpZGF0aW9uIHJlZ2lzdGVyLgoKCjMuMiBsMiB0cmFuc2xhdGlv bgoxKSBGb3IgdmlydHVhbCBQQ0kgZGV2aWNlClhlbiBkdW1teSB4ZW4tdklPTU1VIGluIFFlbXUg dHJhbnNsYXRlcyBJT1ZBIHRvIHRhcmdldCBHUEEgdmlhIG5ldwpoeXBlcmNhbGwgd2hlbiBETUEg b3BlcmF0aW9uIGhhcHBlbnMuCgpXaGVuIGd1ZXN0IHRyaWdnZXJzIGEgaW52YWxpZGF0aW9uIG9w ZXJhdGlvbiwgdGhlcmUgbWF5YmUgaW4tZmx5IERNQQpyZXF1ZXN0IGZvciB2aXJ0dWFsIGRldmlj ZSBoYXMgYmVlbiB0cmFuc2xhdGVkIGJ5IHZJT01NVSBhbmQgcmV0dXJuIGJhY2sKUWVtdS4gQmVm b3JlIHZJT01NVSB0ZWxscyBpbnZhbGlkYXRpb24gY29tcGxldGVkLCBpdCdzIG5lY2Vzc2FyeSB0 byBtYWtlCnN1cmUgaW4tZmx5IERNQSBvcGVyYXRpb24gaXMgY29tcGxldGVkLgoKV2hlbiBJT01N VSBkcml2ZXIgaW52YWxpZGF0ZXMgSU9UTEIsIGl0IGFsc28gd2lsbCB3YWl0IHVudGlsIHRoZQpp bnZhbGlkYXRpb24gY29tcGxldGlvbi4gV2UgbWF5IHVzZSB0aGlzIHRvIGRyYWluIGluLWZseSBE TUEgb3BlcmF0aW9uCmZvciB2aXJ0dWFsIGRldmljZS4KCkd1ZXN0IHRyaWdnZXJzIGludmFsaWRh dGlvbiBvcGVyYXRpb24gYW5kIHRyaXAgaW50byB2SU9NTVUgaW4KaHlwZXJ2aXNvciB0byBmbHVz aCBjYWNoZSBkYXRhLiBBZnRlciB0aGlzLCBpdCBzaG91bGQgZ28gdG8gUWVtdSB0bwpkcmFpbiBp bi1mbHkgRE1BIHRyYW5zbGF0aW9uLgoKVG8gZG8gdGhhdCwgZHVtbXkgdklPTU1VIGluIFFlbXUg cmVnaXN0ZXJzIHRoZSBzYW1lIE1NSU8gcmVnaW9uIGFzCnZJT01NVSdzIGFuZCBlbXVsYXRpb24g cGFydCBvZiBpbnZhbGlkYXRpb24gb3BlcmF0aW9uIGluIFhlbiBoeXBlcnZpc29yCnJldHVybnMg WDg2RU1VTF9VTkhBTkRMRUFCTEUgYWZ0ZXIgZmx1c2ggY2FjaGUuIE1NSU8gZW11bGF0aW9uIHBh cnQgaXMKc3VwcG9zZWQgdG8gc2VuZCBldmVudCB0byBRZW11IGFuZCBkdW1teSB2SU9NTVUgZ2V0 IGEgY2hhbmNlIHRvIHN0YXJ0cyBhCnRocmVhZCB0byBkcmFpbiBpbi1mbHkgRE1BIGFuZCByZXR1 cm4gZW11bGF0aW9uIGRvbmUuCgpHdWVzdCBwb2xscyBJVlQoaW52YWxpZGF0ZSBJT1RMQikgYml0 IGluIHRoZSBJT1RMQiBpbnZhbGlkYXRlIHJlZ2lzdGVyCnVudGlsIGl0J3MgY2xlYXJlZCBhZnRl ciB0cmlnZ2VyaW5nIGludmFsaWRhdGlvbi4gRHVtbXkgdklPTU1VIGluIFFlbXUKbm90aWZpZXMg aHlwZXJ2aXNvciBkcmFpbiBvcGVyYXRpb24gY29tcGxldGVkIHZpYSBoeXBlcmNhbGwsIHZJT01N VQpjbGVhcnMgSVZUIGJpdCBhbmQgZ3Vlc3QgZmluaXNoIGludmFsaWRhdGlvbiBvcGVyYXRpb24u CgoKMikgRm9yIHBoeXNpY2FsIFBDSSBkZXZpY2UKRE1BIG9wZXJhdGlvbnMgZ28gdGhvdWdoIHBo eXNpY2FsIElPTU1VIGRpcmVjdGx5IGFuZCBJTyBwYWdlIHRhYmxlIGZvcgpJT1ZBLT5IUEEgc2hv dWxkIGJlIGxvYWRlZCBpbnRvIHBoeXNpY2FsIElPTU1VLiBXaGVuIGd1ZXN0IHVwZGF0ZXMKbDIg SU8gcGFnZSB0YWJsZSBwb2ludGVyIGZpZWxkIGluIHRoZSBjb250ZXh0IGVudHJ5LCBpdCBwcm92 aWRlcyBJTyBwYWdlCnRhYmxlIGZvciBJT1ZBLT5HUEEuIHZJT01NVSBuZWVkcyB0byBzaGFkb3cg bDIgSU8gcGFnZSB0YWJsZSwgdHJhbnNsYXRlCkdQQS0+SFBBIGFuZCB1cGRhdGUgc2hhZG93IHBh Z2UgdGFibGUoSU9WQS0+SFBBKSBwb2ludGVyIHRvIGwyClBhZ2UtdGFibGUgcG9pbnRlciBpbiBj b250ZXh0IGVudHJ5IG9mIHBoeXNpY2FsIElPTU1VLiBJT01NVSBkcml2ZXIKaW52YWxpZGF0ZXMg YXNzb2NpYXRlZCBwYWdlIGFmdGVyIGNoYW5naW5nIGwyIElPIHBhZ2UgdGFibGUgd2hlbiBjYWNo ZQptb2RlIGJpdCBpcyBzZXQgaW4gY2FwYWJpbGl0eSByZWdpc3Rlci4gV2UgY2FuIHVzZSB0aGlz IHRvIHNoYWRvdyBJTwpwYWdlIHRhYmxlLgoKTm93IGFsbCBQQ0kgZGV2aWNlcyBpbiBzYW1lIGh2 bSBkb21haW4gc2hhcmUgb25lIElPIHBhZ2UgdGFibGUKKEdQQS0+SFBBKSBpbiBwaHlzaWNhbCBJ T01NVSBkcml2ZXIgb2YgWGVuLiBUbyBzdXBwb3J0IHZJT01NVSBsMgp0cmFuc2xhdGlvbiwgSU9N TVUgZHJpdmVyIG5lZWRzIHRvIHN1cHBvcnQgbXVsdGlwbGUgYWRkcmVzcwpzcGFjZXMgcGVyIGRl dmljZSBlbnRyeS4gVXNpbmcgZXhpc3RpbmcgSU8gcGFnZSB0YWJsZShHUEEtPkhQQSkKYnkgZGVm YXVsdCBhbmQgc3dpdGNoIHRvIHNoYWRvdyBJTyBwYWdlIHRhYmxlKElPVkEtPkhQQSkgd2hlbiB2 SU9NTVUgbDIKdHJhbnNsYXRpb24gZnVuY3Rpb24gaXMgZW5hYmxlZC4gVGhlc2UgY2hhbmdlIHdp bGwgbm90IGFmZmVjdCBjdXJyZW50ClAyTSBsb2dpYy4KCjMuMyBJbnRlcnJ1cHQgcmVtYXBwaW5n CkludGVycnVwdHMgZnJvbSB2aXJ0dWFsIGRldmljZXMgYW5kIHBoeXNpY2FsIGRldmljZXMgd2ls bCBiZSBkZWxpdmVyZWQKdG8gdmxhcGljIGZyb20gdklPQVBJQyBhbmQgdk1TSS4gSXQgbmVlZHMg dG8gYWRkIGludGVycnVwdCByZW1hcHBpbmcKaG9va3MgaW4gdGhlIHZtc2lfZGVsaXZlcigpIGFu ZCBpb2FwaWNfZGVsaXZlcigpIHRvIGZpbmQgdGFyZ2V0IHZsYXBpYwphY2NvcmRpbmcgaW50ZXJy dXB0IHJlbWFwcGluZyB0YWJsZS4KCgozLjQgbDEgdHJhbnNsYXRpb24KVG8gZW5hYmxlIGwxIHRy YW5zbGF0aW9uIGluIGd1ZXN0CjEpIFhlbiBJT01NVSBkcml2ZXIgZW5hYmxlcyBuZXN0ZWQgdHJh bnNsYXRpb24gbW9kZQoyKSBTaGFkb3cgZ3Vlc3QgbDEgdHJhbnNsYXRpb24gcm9vdCB0YWJsZShQ QVNJRCB0YWJsZSBwb2ludGVyKSB0bwpwSU9NTVUncyBjb250ZXh0IGVudHJ5LgoKV2hlbiBwSU9N TVUgbmVzdGVkIHRyYW5zbGF0aW9uIGlzIGVuYWJsZWQsIGFueSBhZGRyZXNzIGdlbmVyYXRlZCBi eSBsMQp0cmFuc2xhdGlvbiBpcyB1c2VkIGFzIHRoZSBpbnB1dCBhZGRyZXNzIGZvciBuZXN0aW5n IHdpdGggbDIKdHJhbnNsYXRpb24uIFRoYXQgbWVhbnMgcElPTU1VIHdpbGwgdHJhbnNsYXRlIEdQ QS0+SFBBIGR1cmluZyBsMQp0cmFuc2xhdGlvbiBpbiBndWVzdCBhbmQgc28gcElPTU1VIG5lZWRz IHRvIGVuYWJsZSBib3RoIGwxIGFuZCBsMgp0cmFuc2xhdGlvbiBpbiBuZXN0ZWQgdHJhbnNsYXRp b24gbW9kZShHVkEtPkdQQS0+SFBBKSBmb3IgcGFzc3Rocm91Z2gKZGV2aWNlLiBUaGUgZ3Vlc3Qn cyBsMSB0cmFuc2xhdGlvbiByb290IHRhYmxlIGNhbiBiZSBkaXJlY3RseSB3cml0dGVuCmludG8g cElPTU1VIGNvbnRleHQgZW50cnkuCgpBbGwgYXJlIGhhbmRsZWQgaW4gaHlwZXJ2aXNvciBhbmQg bm8gaW50ZXJhY3Rpb25zIHdpdGggUWVtdSBhcmUgcmVxdWlyZWQuCgozLjUgSW1wbGVtZW50YXRp b24gY29uc2lkZXJhdGlvbgpWVC1kIHNwZWMgZG9lc24ndCBkZWZpbmUgYSBjYXBhYmlsaXR5IGJp dCBmb3IgdGhlIGwyIHRyYW5zbGF0aW9uLgpBcmNoaXRlY3R1cmFsbHkgdGhlcmUgaXMgbm8gd2F5 IHRvIHRlbGwgZ3Vlc3QgdGhhdCBsMiB0cmFuc2xhdGlvbgpjYXBhYmlsaXR5IGlzIG5vdCBhdmFp bGFibGUuIFdoZW4gTGludXggSW50ZWwgSU9NTVUgZHJpdmVyIGVuYWJsZXMgbDIKdHJhbnNsYXRp b24sIHBhbmljIGlmIGZhaWwgdG8gZW5hYmxlLgoKVGhlcmUgaXMgYSBrZXJuZWwgcGFyYW1ldGVy ICJpbnRlbF9pb21tdT1PTiIgYW5kIEtjb25maWcgb3B0aW9uCkNPTkZJR19JTlRFTF9JT01NVV9E RUZBVUxUX09OIHdoaWNoIGNvbnRyb2wgbDIgdHJhbnNsYXRpb24gZnVuY3Rpb24uCldoZW4gdGhl eSBhcmVuJ3Qgc2V0LCBsMiB0cmFuc2xhdGlvbiBmdW5jdGlvbiB3aWxsIG5vdCBiZSBlbmFibGVk IGJ5CklPTU1VIGRyaXZlciBldmVuIGlmIHNvbWUgdklPTU1VIHJlZ2lzdGVycyBzaG93IGwyIHRy YW5zbGF0aW9uIGZ1bmN0aW9uCmF2YWlsYWJsZS4gSW4gdGhlIG1lYW50aW1lLCBpcnEgcmVtYXBw aW5nIGZ1bmN0aW9uIHN0aWxsIGNhbiB3b3JrIHRvCnN1cHBvcnQgPjI1NSB2Y3B1cy4KCkNoZWNr ZWQgZGlzdHJpYnV0aW9uIFJIRUwsIFNMRVMsIE9yYWNsZSBhbmQgdWJ1bnR1IGRvbid0IHNldCB0 aGUga2VybmVsCnBhcmFtZXRlciBvciBzZWxlY3QgdGhlIEtjb25maWcgb3B0aW9uLiBTbyBpdCdz IHN0aWxsIHNhZmUgdG8gZW11bGF0ZQppbnRlcnJ1cHQgcmVtYXBwaW5nIGZpc3Qgd2l0aCBzb21l IGNhcGFiaWxpdHkgYml0cyhlLGcgU0FHQVcgb2YKQ2FwYWJpbGl0eSBSZWdpc3Rlcikgb2YgbDIg dHJhbnNsYXRpb24gZm9yID4yNTUgdmNwdXMgc3VwcG9ydCB3aXRob3V0IGwyCnRyYW5zbGF0aW9u IGVtdWxhdGlvbi4KClNob3dpbmcgbDIgY2FwYWJpbGl0eSBiaXRzIGlzIHRvIG1ha2Ugc3VyZSBJ T01NVSBkcml2ZXIgcGFyc2VzIEFDUEkgRE1BUgp0YWJsZXMgc3VjY2Vzc2Z1bGx5IGJlY2F1c2Ug SU9NTVUgZHJpdmVyIGFjY2VzcyB0aGVzZSBiaXRzIGR1cmluZwpyZWFkaW5nIEFDUEkgdGFibGVz LiBPdGhlcndpc2UsIElPTU1VIGluc3RhbmNlIHdpbGwgZnJlZWQgaWYgZmFpbC4KCklmIHNvbWVv bmUgYWRkICJpbnRlbF9pb21tdT1vbiIga2VybmVsIHBhcmFtZXRlciBtYW51YWxseSwgSU9NTVUg ZHJpdmVyCndpbGwgcGFuaWMgZ3Vlc3QgYmVjYXVzZSBpdCBjYW4ndCBlbmFibGUgRE1BIHJlbWFw cGluZyBmdW5jdGlvbiB2aWEgZ2NtZApyZWdpc3RlciBhbmQgIlRyYW5zbGF0aW9uIEVuYWJsZSBT dGF0dXMiIGJpdCBpbiBnc3RzIHJlZ2lzdGVyIGlzIG5ldmVyCnNldCBieSB2SU9NTVUuIFRoaXMg c2hvd3MgYWN0dWFsIHZJT01NVSBzdGF0dXMgdGhhdCB0aGVyZSBpcyBubyBsMgp0cmFuc2xhdGlv biBzdXBwb3J0IGFuZCB3YXJuIHVzZXIgc2hvdWxkIG5vdCBlbmFibGUgbDIgdHJhbnNsYXRpb24u CgoKCjQgUWVtdQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4xIFFlbXUgdklPTU1VIGZyYW1ld29y awpRZW11IGhhcyBhIGZyYW1ld29yayB0byBjcmVhdGUgdmlydHVhbCBJT01NVShlLmcuIHZpcnR1 YWwgaW50ZWwgVlREIGFuZApBTUQgSU9NTVUpIGFuZCByZXBvcnQgaW4gZ3Vlc3QgQUNQSSB0YWJs ZS4gU28gZm9yIFhlbiBzaWRlLCBhIGR1bW15Cnhlbi12SU9NTVUgd3JhcHBlciBpcyByZXF1aXJl ZCB0byBjb25uZWN0IHdpdGggYWN0dWFsIHZJT01NVSBpbiBYZW4uCkVzcGVjaWFsbHkgZm9yIGwy IHRyYW5zbGF0aW9uIG9mIHZpcnR1YWwgUENJIGRldmljZSBiZWNhdXNlCmVtdWxhdGlvbnMgb2Yg dmlydHVhbCBQQ0kgZGV2aWNlcyBhcmUgaW4gdGhlIFFlbXUuIFFlbXUncyB2SU9NTVUKZnJhbWV3 b3JrIHByb3ZpZGVzIGNhbGxiYWNrIHRvIGRlYWwgd2l0aCBsMiB0cmFuc2xhdGlvbiB3aGVuCkRN QSBvcGVyYXRpb25zIG9mIHZpcnR1YWwgUENJIGRldmljZXMgaGFwcGVuLgoKCjQuMiBEdW1teSB4 ZW4tdklPTU1VIGRyaXZlcgoxKSBRdWVyeSB2SU9NTVUgY2FwYWJpbGl0eShFLEcgRE1BIHRyYW5z bGF0aW9uLCBJbnRlcnJ1cHQgcmVtYXBwaW5nIGFuZApTaGFyZSBWaXJ0dWFsIE1lbW9yeSkgdmlh IGh5cGVyY2FsbC4KCjIpIENyZWF0ZSB2SU9NTVUgaW4gWGVuIGh5cGVydmlzb3IgdmlhIG5ldyBo eXBlcmNhbGwgd2l0aCBEUkhVIHJlZ2lzdGVyCmFkZHJlc3MgYW5kIGRlc2lyZWQgY2FwYWJpbGl0 eSBhcyBwYXJhbWV0ZXJzLiBEZXN0cm95IHZJT01NVSB3aGVuIFZNIGlzCmNsb3NlZC4KCjMpIFZp cnR1YWwgUENJIGRldmljZSdzIGwyIHRyYW5zbGF0aW9uClFlbXUgYWxyZWFkeSBwcm92aWRlcyBE TUEgdHJhbnNsYXRpb24gaG9vay4gSXQncyBjYWxsZWQgd2hlbiBETUEKdHJhbnNsYXRpb24gb2Yg dmlydHVhbCBQQ0kgZGV2aWNlIGhhcHBlbnMuIFRoZSBkdW1teSB4ZW4tdklPTU1VIHBhc3Nlcwpk ZXZpY2UgYmRmIGFuZCBJT1ZBIGludG8gWGVuIGh5cGVydmlzb3IgdmlhIG5ldyBpb21tdSBoeXBl cmNhbGwgYW5kCnJldHVybiBiYWNrIHRyYW5zbGF0ZWQgR1BBLgoKCjQuMyBRMzUgdnMgSTQ0MHgK VlQtRCBpcyBpbnRyb2R1Y2VkIHdpdGggUTM1IGNoaXBzZXQuIFByZXZpb3VzIGNvbmNlcm4gd2Fz IHRoYXQgVlRECmRyaXZlciBoYXMgYXNzdW1wdGlvbiB0aGF0IFZURCBvbmx5IGV4aXN0cyBvbiBR MzUgYW5kIG5ld2VyIGNoaXBzZXQgYW5kCndlIGhhdmUgdG8gZW5hYmxlIFEzNSBmaXJzdC4gQWZ0 ZXIgZXhwZXJpbWVudHMsIExpbnV4L1dpbmRvd3MgZ3Vlc3QgY2FuCmJvb3QgdXAgb24gdGhlIGVt dWxhdGVkIEk0NDB4IGNoaXBzZXQgd2l0aCBWVEQgYW5kIFZURCBkcml2ZXIgZW5hYmxlcwppbnRl cnJ1cHQgcmVtYXBwaW5nIGZ1bmN0aW9uLiBTbyB3ZSBjYW4gc2tpcCBRMzUgc3VwcG9ydCB0byBp bXBsZW1lbnQKdklPTU1VIGRpcmVjdGx5LgoKNC40IFJlcG9ydCB2SU9NTVUgdG8gaHZtbG9hZGVy Ckh2bWxvYWRlciBpcyBpbiBjaGFyZ2Ugb2YgYnVpbGRpbmcgQUNQSSB0YWJsZXMgZm9yIEd1ZXN0 IE9TIGFuZCBPUyAKcHJvYmVzIElPTU1VIHZpYSBBQ1BJIERNQVIgdGFibGUuIFRoZXJlIGlzIHR3 byB3YXlzIHRvIHBhc3MgRE1BUiB0YWJsZSAKdG8gaHZtbG9hZGVyLiBTbyBodm1sb2RlciBuZWVk cyB0byBrbm93IHdoZXRoZXIgdklPTU1VIGlzIGVuYWJsZWQgb3Igbm90IAphbmQgaXRzIGNhcGFi aWxpdHkgdG8gcHJlcGFyZSBBQ1BJIERNQVIgdGFibGUgZm9yIEd1ZXN0IE9TLgoKMSkgQnVpbGQg QUNQSSBETUFSIHRhYmxlIGluIFFlbXUgYW5kIHBhc3MgaXQgdG8gaHZtbG9hZGVyIHZpYSBYZW5z dG9yZS4KVGhpcyBzb2x1dGlvbiBpcyBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIHZOVkRJTU0gZGVz aWduKDQuMy4xCkJ1aWxkaW5nIEd1ZXN0IEFDUEkgVGFibGVzCmh0dHA6Ly93d3cuZ29zc2FtZXIt dGhyZWFkcy5jb20vbGlzdHMveGVuL2RldmVsLzQzOTc2NikuCgoKMikgQnVpbGQgQUNQSSBETUFS IHRhYmxlIGluIHRvb2xzdGFjawpOb3cgdG9vbCBzdGFjayBjYW4gYm9vdCBBQ1BJIERNQVIgdGFi bGUgYWNjb3JkaW5nIFZNIGNvbmZpZ3VyZSBhbmQgcGFzcwp0aG91Z2ggaXQgdG8gaHZtbG9hZGVy IHZpYSB4ZW5zdG9yZSBBQ1BJIFBUIGNoYW5uZWwuIEJ1dCB0aGUgdklPTU1VIE1NSU8KcmVnaW9u IGlzIG1hbmFnZWQgYnkgUWVtdSBhbmQgaXQncyBuZWVkIHRvIGJlIHBvcHVsYXRlZCBpbnRvIERN QVIKdGFibGUuIFdlIG1heSBoYXJkY29yZSBhbiBhZGRyZXNzIGluIGJvdGggUWVtdSBhbmQgdG9v bHN0YWNrIGFuZCB1c2UgdGhlIApzYW1lIGFkZHJlc3MgdG8gY3JlYXRlIHZJT01NVSBhbmQgYnVp bGQgRE1BUiB0YWJsZS4KCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpo dHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==