From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: Re: [RFC PATCH 00/15] RFC: SGX virtualization design and draft patches Date: Tue, 11 Jul 2017 15:13:57 +0100 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-GB List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Kai Huang , xen-devel@lists.xen.org Cc: kevin.tian@intel.com, sstabellini@kernel.org, wei.liu2@citrix.com, George.Dunlap@eu.citrix.com, tim@xen.org, ian.jackson@eu.citrix.com, jbeulich@suse.com List-Id: xen-devel@lists.xenproject.org T24gMDkvMDcvMTcgMDk6MDMsIEthaSBIdWFuZyB3cm90ZToKPiBIaSBhbGwsCj4KPiBUaGlzIHNl cmllcyBpcyBSRkMgWGVuIFNHWCB2aXJ0dWFsaXphdGlvbiBzdXBwb3J0IGRlc2lnbiBhbmQgUkZD IGRyYWZ0IHBhdGNoZXMuCgpUaGFua3lvdSB2ZXJ5IG11Y2ggZm9yIHRoaXMgZGVzaWduIGRvYy4K Cj4gMi4gU0dYIFZpcnR1YWxpemF0aW9uIERlc2lnbgo+Cj4gMi4xIEhpZ2ggTGV2ZWwgVG9vbHN0 YWNrIENoYW5nZXM6Cj4KPiAyLjEuMSBOZXcgJ2VwYycgcGFyYW1ldGVyCj4KPiBFUEMgaXMgbGlt aXRlZCByZXNvdXJjZS4gSW4gb3JkZXIgdG8gdXNlIEVQQyBlZmZpY2llbnRseSBhbW9uZyBhbGwg ZG9tYWlucywKPiB3aGVuIGNyZWF0aW5nIGd1ZXN0LCBhZG1pbmlzdHJhdG9yIHNob3VsZCBiZSBh YmxlIHRvIHNwZWNpZnkgZG9tYWluJ3MgdmlydHVhbAo+IEVQQyBzaXplLiBBbmQgYWRtaW4KPiBh bGFvIHNob3VsZCBiZSBhYmxlIHRvIGdldCBhbGwgZG9tYWluJ3MgdmlydHVhbCBFUEMgc2l6ZS4K Pgo+IEZvciB0aGlzIHB1cnBvc2UsIGEgbmV3ICdlcGMgPSA8c2l6ZT4nIHBhcmFtZXRlciBpcyBh ZGRlZCB0byBYTCBjb25maWd1cmF0aW9uCj4gZmlsZS4gVGhpcyBwYXJhbWV0ZXIgc3BlY2lmaWVz IGd1ZXN0J3MgdmlydHVhbCBFUEMgc2l6ZS4gVGhlIEVQQyBiYXNlIGFkZHJlc3MKPiB3aWxsIGJl IGNhbGN1bGF0ZWQgYnkgdG9vbHN0YWNrIGludGVybmFsbHksIGFjY29yZGluZyB0byBndWVzdCdz IG1lbW9yeSBzaXplLAo+IE1NSU8gc2l6ZSwgZXRjLiAnZXBjJyBpcyBNQiBpbiB1bml0IGFuZCBh bnkgMU1CIGFsaWduZWQgdmFsdWUgd2lsbCBiZSBhY2NlcHRlZC4KCkhvdyB3aWxsIHRoaXMgaW50 ZXJhY3Qgd2l0aCBtdWx0aS1wYWNrYWdlIHNlcnZlcnM/ICBFdmVuIHRob3VnaCBpdHMgZmluZSAK dG8gaW1wbGVtZW50IHRoZSBzaW5nbGUtcGFja2FnZSBzdXBwb3J0IGZpcnN0LCB0aGUgZGVzaWdu IHNob3VsZCBiZSAKZXh0ZW5zaWJsZSB0byB0aGUgbXVsdGktcGFja2FnZSBjYXNlLgoKRmlyc3Qg b2YgYWxsLCB3aGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIG11bHRpLXBhY2thZ2UgU0dYPwoK KFNvbWV3aGVyZSkgeW91IG1lbnRpb24gY2hhbmdlcyB0byBzY2hlZHVsaW5nLiAgSSBwcmVzdW1l IHRoaXMgaXMgCmJlY2F1c2UgYSBndWVzdCB3aXRoIEVQQyBtYXBwaW5ncyBpbiBFUFQgbXVzdCBi ZSBzY2hlZHVsZWQgb24gdGhlIHNhbWUgCnBhY2thZ2UsIG9yIEVOQ0xVW0VFTlRFUl0gd2lsbCBm YWlsLiAgSSBwcmVzdW1lIGFsc28gdGhhdCBlYWNoIHBhY2thZ2UgCndpbGwgaGF2ZSBzZXBhcmF0 ZSwgdW5yZWxhdGVkIHByaXZhdGUga2V5cz8KCkkgcHJlc3VtZSB0aGVyZSBpcyBubyBzZW5zaWJs ZSB3YXkgKGV2ZW4gb24gbmF0aXZlKSBmb3IgYSBzaW5nbGUgbG9naWNhbCAKcHJvY2VzcyB0byB1 c2UgbXVsdGlwbGUgZGlmZmVyZW50IGVuY2xhdmVzPyAgQnkgZXh0ZW5zaW9uLCBkb2VzIGl0IG1h a2UgCnNlbnNlIHRvIHRyeSBhbmQgb2ZmZXIgcGFydHMgb2YgbXVsdGlwbGUgZW5jbGF2ZXMgdG8g YSBzaW5nbGUgVk0/Cgo+IDIuMS4zIE5vdGlmeSBkb21haW4ncyB2aXJ0dWFsIEVQQyBiYXNlIGFu ZCBzaXplIHRvIFhlbgo+Cj4gWGVuIG5lZWRzIHRvIGtub3cgZ3Vlc3QncyBFUEMgYmFzZSBhbmQg c2l6ZSBpbiBvcmRlciB0byBwb3B1bGF0ZSBFUEMgcGFnZXMgZm9yCj4gaXQuIFRvb2xzdGFjayBu b3RpZmllcyBFUEMgYmFzZSBhbmQgc2l6ZSB0byBYZW4gdmlhIFhFTl9ET01DVExfc2V0X2NwdWlk LgoKSSBhbSBjdXJyZW50bHkgaW4gdGhlIHByb2Nlc3Mgb2YgcmV3b3JraW5nIHRoZSBYZW4vVG9v bHN0YWNrIGludGVyZmFjZSAKd2hlbiBpdCBjb21lcyB0byBDUFVJRCBoYW5kbGluZy4gIFRoZSBs YXRlc3QgZGVzaWduIGlzIGF2YWlsYWJsZSBoZXJlOiAKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0 Lm9yZy9hcmNoaXZlcy9odG1sL3hlbi1kZXZlbC8yMDE3LTA3L21zZzAwMzc4Lmh0bWwgCmJ1dCB0 aGUgZW5kIHJlc3VsdCB3aWxsIGJlIHRoZSB0b29sc3RhY2sgZXhwcmVzc2luZyBpdHMgQ1BVSUQg cG9saWN5IGluIAp0ZXJtcyBvZiB0aGUgYXJjaGl0ZWN0dXJhbCBsYXlvdXQuCgpUaGVyZWZvcmUs IEkgd291bGQgZXhwZWN0IHRoYXQsIGhvd2V2ZXIgdGhlIHNldHRpbmcgaXMgcmVwcmVzZW50ZWQg aW4gCnRoZSBjb25maWd1cmF0aW9uIGZpbGUsIHhsL2xpYnhsIHdvdWxkIGNvbmZpZ3VyZSBpdCB3 aXRoIHRoZSBoeXBlcnZpc29yIApieSBzZXR0aW5nIENQVUlELjB4MTJbMl0gd2l0aCB0aGUgYXBw cm9wcmlhdGUgYmFzZSBhbmQgc2l6ZS4KCj4gMi4xLjQgTGF1bmNoIENvbnRyb2wgU3VwcG9ydCAo PykKPgo+IFhlbiBMYXVuY2ggQ29udHJvbCBTdXBwb3J0IGlzIGFib3V0IHRvIHN1cHBvcnQgcnVu bmluZyBtdWx0aXBsZSBkb21haW5zIHdpdGgKPiBlYWNoIHJ1bm5pbmcgaXRzIG93biBMRSBzaWdu ZWQgYnkgZGlmZmVyZW50IG93bmVycyAoaWYgSFcgYWxsb3dzLCBleHBsYWluZWQKPiBiZWxvdyku IEFzIGV4cGxhaW5lZCBpbiAxLjQgU0dYIExhdW5jaCBDb250cm9sLCBFSU5JVCBmb3IgTEUgKExh dW5jaCBFbmNsYXZlKQo+IG9ubHkgc3VjY2VlZHMgd2hlbiBTSEEyNTYoU0lHU1RSVUNULm1vZHVs dXMpIG1hdGNoZXMgSUEzMl9TR1hMRVBVQktFWUhBU0huLAo+IGFuZCBFSU5JVCBmb3Igb3RoZXIg ZW5jbGF2ZXMgd2lsbCBkZXJpdmUgRUlOSVRUT0tFTiBrZXkgYWNjb3JkaW5nIHRvCj4gSUEzMl9T R1hMRVBVQktFWUhBU0huLiBUaGVyZWZvcmUsIHRvIHN1cHBvcnQgdGhpcywgZ3Vlc3QncyB2aXJ0 dWFsCj4gSUEzMl9TR1hMRVBVQktFWUhBU0huIG11c3QgYmUgdXBkYXRlZCB0byBwaHlpc2NhbCBN U1JzIGJlZm9yZSBFSU5JVCAod2hpY2gKPiBhbHNvIG1lYW5zIHRoZSBwaHlzaWNhbCBJQTMyX1NH WExFUFVCS0VZSEFTSG4gbmVlZCB0byBiZSAqdW5sb2NrZWQqIGluIEJJT1MKPiBiZWZvcmUgYm9v dGluZyB0byBPUykuCj4KPiBGb3IgcGh5c2ljYWwgbWFjaGluZSwgaXQgaXMgQklPUydzIHdyaXRl cidzIGRlY2lzaW9uIHRoYXQgd2hldGhlciBCSU9TIHdvdWxkCj4gcHJvdmlkZSBpbnRlcmZhY2Ug Zm9yIHVzZXIgdG8gc3BlY2lmeSBjdXN0b21lcml6ZWQgSUEzMl9TR1hMRVBVQktFWUhBU0huIChp dAo+IGlzIGRlZmF1bHQgdG8gZGlnZXN0IG9mIEludGVsJ3Mgc2lnbmluZyBrZXkgYWZ0ZXIgcmVz ZXQpLiBJbiByZWFsaXR5LCBPUydzIFNHWAo+IGRyaXZlciBtYXkgcmVxdWlyZSBCSU9TIHRvIG1h a2UgTVNScyAqdW5sb2NrZWQqIGFuZCBhY3RpdmVseSB3cml0ZSB0aGUgaGFzaAo+IHZhbHVlIHRv IE1TUnMgaW4gb3JkZXIgdG8gcnVuIEVJTklUIHN1Y2Nlc3NmdWxseSwgYXMgaW4gdGhpcyBjYXNl LCB0aGUgZHJpdmVyCj4gd2lsbCBub3QgZGVwZW5kIG9uIEJJT1MncyBjYXBhYmlsaXR5ICh3aGV0 aGVyIGl0IGFsbG93cyB1c2VyIHRvIGN1c3RvbWVyaXplCj4gSUEzMl9TR1hMRVBVQktFWUhBU0hu IHZhbHVlKS4KPgo+IFRoZSBwcm9ibGVtIGlzIGZvciBYZW4sIGRvIHdlIG5lZWQgYSBuZXcgcGFy YW1ldGVyLCBzdWNoIGFzICdsZWhhc2g9PFNIQTI1Nj4nCj4gdG8gc3BlY2lmeSB0aGUgZGVmYXVs dCB2YWx1ZSBvZiBndXNldCdzIHZpcnR1YWwgSUEzMl9TR1hMRVBVQktFWUhBU0huPyBBbmQgZG8K PiB3ZSBuZWVkIGEgbmV3IHBhcmFtZXRlciwgc3VjaCBhcyAnbGV3cicgdG8gc3BlY2lmeSB3aGV0 aGVyIGd1ZXN0J3MgdmlydHVhbCBNU1JzCj4gYXJlIGxvY2tlZCBvciBub3QgYmVmb3JlIGhhbmRs aW5nIHRvIGd1ZXN0J3MgT1M/Cj4KPiBJIHRlbmRzIHRvIG5vdCBpbnRyb2R1Y2UgJ2xlaGFzaCcs IGFzIGl0IHNlZW1zIFNHWCBkcml2ZXIgd291bGQgYWN0aXZlbHkgdXBkYXRlCj4gdGhlIE1TUnMu IEFuZCBuZXcgcGFyYW1ldGVyIHdvdWxkIGFkZCBhZGRpdGlvbmFsIGNoYW5nZXMgZm9yIHVwcGVy IGxheWVyCj4gc29mdHdhcmUgKHN1Y2ggYXMgb3BlbnN0YWNrKS4gQW5kICdsZXdyJyBpcyBub3Qg bmVlZGVkIGVpdGhlciBhcyBYZW4gY2FuIGFsd2F5cwo+ICp1bmxvY2sqIHRoZSBNU1JzIHRvIGd1 ZXN0Lgo+Cj4gUGxlYXNlIGdpdmUgY29tbWVudHM/Cj4KPiBDdXJyZW50bHkgaW4gbXkgUkZDIHBh dGNoZXMgYWJvdmUgdHdvIHBhcmFtZXRlcnMgYXJlIG5vdCBpbXBsZW1lbnRlZC4KPiBYZW4gaHlw ZXJ2aXNvciB3aWxsIGFsd2F5cyAqdW5sb2NrKiB0aGUgTVNScy4gV2hldGhlciB0aGVyZSBpcyAn bGVoYXNoJwo+IHBhcmFtZXRlciBvciBub3QgZG9lc24ndCBpbXBhY3QgWGVuIGh5cGVydmlzb3In cyBlbXVsYXRpb24gb2YKPiBJQTMyX1NHWExFUFVCS0VZSEFTSG4uIFNlZSBiZWxvdyBYZW4gaHlw ZXJ2aXNvciBjaGFuZ2VzIGZvciBkZXRhaWxzLgoKUmVhZGluZyBhcm91bmQsIGFtIEkgY29ycmVj dCB3aXRoIHRoZSBmb2xsb3dpbmc/CgoxKSBTb21lIHByb2Nlc3NvcnMgaGF2ZSBubyBsYXVuY2gg Y29udHJvbC4gIFRoZXJlIGlzIG5vIHJlc3RyaWN0aW9uIG9uIAp3aGljaCBlbmNsYXZlcyBjYW4g Ym9vdC4KCjIpIFNvbWUgU2t5bGFrZSBjbGllbnQgcHJvY2Vzc29ycyBjbGFpbSB0byBoYXZlIGxh dW5jaCBjb250cm9sLCBidXQgdGhlIApNU1JzIGFyZSB1bmF2YWlsYWJsZSAoaXMgdGhpcyBhbiBl cnJhdHVtPykuICBUaGVzZSBhcmUgbGltaXRlZCB0byAKYm9vdGluZyBlbmNsYXZlcyBtYXRjaGlu ZyB0aGUgSW50ZWwgcHVibGljIGtleS4KCjMpIExhdW5jaCBjb250cm9sIG1heSBiZSBsb2NrZWQg YnkgdGhlIEJJT1MuICBUaGVyZSBtYXkgYmUgYSBjdXN0b20gCmhhc2gsIG9yIGl0IG1pZ2h0IGJl IHRoZSBJbnRlbCBkZWZhdWx0LiAgWGVuIGNhbid0IGFkanVzdCBpdCBhdCBhbGwsIGJ1dCAKY2Fu IHN1cHBvcnQgcnVubmluZyBhbnkgbnVtYmVyIG9mIFZNcyB3aXRoIG1hdGNoaW5nIGVuY2xhdmVz LgoKNCkgTGF1bmNoIGNvbnRyb2wgbWF5IGJlIHVubG9ja2VkIGJ5IHRoZSBCSU9TLiAgSW4gdGhp cyBjYXNlLCBYZW4gY2FuIApjb250ZXh0IHN3aXRjaCBhIGhhc2ggcGVyIGRvbWFpbiwgYW5kIHJ1 biBhbGwgZW5jbGF2ZXMuCgpUaGUgZXZlbnR1YWwgcGxhbnMgZm9yIENQVUlEIGFuZCBNU1IgbGV2 ZWxsaW5nIHNob3VsZCBhbGxvdyBhbGwgb2YgdGhlc2UgCnRvIGJlIGV4cHJlc3NlZCBpbiBzZW5z aWJsZSB3YXlzLCBhbmQgSSBkb24ndCBmb3JzZWUgYW55IGlzc3VlcyB3aXRoIApzdXBwb3J0aW5n IGFsbCBvZiB0aGVzZSBzY2VuYXJpb3MuCgoKCj4gMi4yIEhpZ2ggTGV2ZWwgWGVuIEh5cGVydmlz b3IgQ2hhbmdlczoKPgo+IDIuMi4xIEVQQyBNYW5hZ2VtZW50ICg/KQo+Cj4gWGVuIGh5cGVydmlz b3IgbmVlZHMgdG8gZGV0ZWN0IFNHWCwgZGlzY292ZXIgRVBDLCBhbmQgbWFuYWdlIEVQQyBiZWZv cmUKPiBzdXBwb3J0aW5nIFNHWCB0byBndWVzdC4gRVBDIGlzIGRldGVjdGVkIHZpYSBTR1ggQ1BV SUQgMHgxMi4weDIuIEl0J3MgcG9zc2libGUKPiB0aGF0IHRoZXJlIGFyZSBtdWx0aXBsZSBFUEMg c2VjdGlvbnMgKGVudW1lcmF0ZWQgdmlhIHN1Yi1sZWF2ZXMgMHgzIGFuZCBzbyBvbiwKPiB1bnRp bCBpbnZhaWQgRVBDIGlzIHJlcG9ydGVkKSwgYnV0IHRoaXMgaXMgb25seSB0cnVlIG9uIG11bHRp cGxlLXNvY2tldCBzZXJ2ZXIKPiBtYWNoaW5lcy4gRm9yIHNlcnZlciBtYWNoaW5lcyB0aGVyZSBh cmUgYWRkaXRpb25hbCB0aGluZ3MgYWxzbyBuZWVkcyB0byBiZSBkb25lLAo+IHN1Y2ggYXMgTlVN QSBFUEMsIHNjaGVkdWxpbmcsIGV0Yy4gV2Ugd2lsbCBzdXBwb3J0IHNlcnZlciBtYWNoaW5lIGlu IHRoZSBmdXR1cmUKPiBidXQgY3VycmVudGx5IHdlIG9ubHkgc3VwcG9ydCBvbmUgRVBDLgo+Cj4g RVBDIGlzIHJlcG9ydGVkIGFzIHJlc2VydmVkIG1lbW9yeSAoc28gaXQgaXMgbm90IHJlcG9ydGVk IGFzIG5vcm1hbCBtZW1vcnkpLgo+IEVQQyBtdXN0IGJlIG1hbmFnZWQgaW4gNEsgcGFnZXMuIENQ VSBoYXJkd2FyZSB1c2VzIEVQQ00gdG8gdHJhY2sgc3RhdHVzIG9mIGVhY2gKPiBFUEMgcGFnZXMu IFhlbiBuZWVkcyB0byBtYW5hZ2UgRVBDIGFuZCBwcm92aWRlIGZ1bmN0aW9ucyB0bywgaWUsIGFs bG9jIGFuZCBmcmVlCj4gRVBDIHBhZ2VzIGZvciBndWVzdC4KPgo+IFRoZXJlIGFyZSB0d28gd2F5 cyB0byBtYW5hZ2UgRVBDOiBNYW5hZ2UgRVBDIHNlcGFyYXRlbHk7IG9yIEludGVncmF0ZSBpdCB0 bwo+IGV4aXN0aW5nIG1lbW9yeSBtYW5hZ2VtZW50IGZyYW1ld29yay4KPgo+IEl0IGlzIGVhc3kg dG8gbWFuYWdlIEVQQyBzZXBhcmF0ZWx5LCBhcyBjdXJyZW50bHkgRVBDIGlzIHByZXR0eSBzbWFs bCAofjEwME1CKSwKPiBhbmQgd2UgY2FuIGV2ZW4gcHV0IHRoZW0gaW4gYSBzaW5nbGUgbGlzdC4g SG93ZXZlciBpdCBpcyBub3QgZmxleGlibGUsIGZvcgo+IGV4YW1wbGUsIHlvdSB3aWxsIGhhdmUg dG8gd3JpdGUgbmV3IGFsZ29yaXRobXMgd2hlbiBFUEMgYmVjb21lcyBsYXJnZXIsIGV4LCBHQi4K PiBBbmQgeW91IGhhdmUgdG8gd3JpdGUgbmV3IGNvZGUgdG8gc3VwcG9ydCBOVU1BIEVQQyAoYWx0 aG91Z2ggdGhpcyB3aWxsIG5vdCBjb21lCj4gaW4gc2hvcnQgdGltZSkuCj4KPiBJbnRlZ3JhdGlu ZyBFUEMgdG8gZXhpc3RpbmcgbWVtb3J5IG1hbmFnZW1lbnQgZnJhbWV3b3JrIHNlZW1zIG1vcmUg cmVhc29uYWJsZSwKPiBhcyBpbiB0aGlzIHdheSB3ZSBjYW4gcmVzdW1lIG1lbW9yeSBtYW5hZ2Vt ZW50IGRhdGEgc3RydWN0dXJlcy9hbGdvcml0aG1zLCBhbmQKPiBpdCB3aWxsIGJlIG1vcmUgZmxl eGlibGUgdG8gc3VwcG9ydCBsYXJnZXIgRVBDIGFuZCBwb3RlbnRpYWxseSBOVU1BIEVQQy4gQnV0 Cj4gbW9kaWZ5aW5nIE1NIGZyYW1ld29yayBoYXMgYSBoaWdoZXIgcmlzayB0byBicmVhayBleGlz dGluZyBtZW1vcnkgbWFuYWdlbWVudAo+IGNvZGUgKHBvdGVudGlhbGx5IG1vcmUgYnVncykuCj4K PiBJbiBteSBSRkMgcGF0Y2hlcyBjdXJyZW50bHkgd2UgY2hvb3NlIHRvIG1hbmFnZSBFUEMgc2Vw YXJhdGVseS4gQSBuZXcKPiBzdHJ1Y3R1cmUgZXBjX3BhZ2UgaXMgYWRkZWQgdG8gcmVwcmVzZW50 IGEgc2luZ2xlIDRLIEVQQyBwYWdlLiBBIHdob2xlIGFycmF5Cj4gb2Ygc3RydWN0IGVwY19wYWdl IHdpbGwgYmUgYWxsb2NhdGVkIGR1cmluZyBFUEMgaW5pdGlhbGl6YXRpb24sIHNvIHRoYXQgZ2l2 ZW4KPiB0aGUgb3RoZXIsIG9uZSBvZiBQRk4gb2YgRVBDIHBhZ2UgYW5kICdzdHJ1Y3QgZXBjX3Bh Z2UnIGNhbiBiZSBnb3QgYnkgYWRkaW5nCj4gb2Zmc2V0Lgo+Cj4gQnV0IG1heWJlIGludGVncmF0 aW5nIEVQQyB0byBNTSBmcmFtZXdvcmsgaXMgbW9yZSByZWFzb25hYmxlLiBDb21tZW50cz8KPgo+ IDIuMi4yIEVQQyBWaXJ0dWFsaXphdGlvbiAoPykKCkl0IGxvb2tzIGxpa2UgbWFuYWdpbmcgdGhl IEVQQyBpcyB2ZXJ5IHNpbWlsYXIgdG8gbWFuYWdpbmcgdGhlIE5WRElNTSAKcmFuZ2VzLiAgV2Ug aGF2ZSBhIChzZXQgb2YpIHBoeXNpY2FsIGFkZHJlc3MgcmFuZ2VzIHdoaWNoIG5lZWQgNGsgCm93 bmVyc2hpcCBncmFudWxhcml0eSB0byBkaWZmZXJlbnQgZG9tYWlucy4KCkkgdGhpbmsgaW50ZWdy YXRpbmcgdGhpcyBpbnRvIHN0cnVjdCBwYWdlX3N0cnVjdCBpcyB0aGUgYmV0dGVyIHdheSB0byBn by4KCj4KPiBUaGlzIHBhcnQgaXMgaG93IHRvIHBvcHVsYXRlIEVQQyBmb3IgZ3Vlc3RzLiBXZSBo YXZlIDMgY2hvaWNlczoKPiAgICAgIC0gU3RhdGljIFBhcnRpdGlvbmluZwo+ICAgICAgLSBPdmVy c3Vic2NyaXB0aW9uCj4gICAgICAtIEJhbGxvb25pbmcKPgo+IFN0YXRpYyBQYXJ0aXRpb25pbmcg bWVhbnMgYWxsIEVQQyBwYWdlcyB3aWxsIGJlIGFsbG9jYXRlZCBhbmQgbWFwcGVkIHRvIGd1ZXN0 Cj4gd2hlbiBpdCBpcyBjcmVhdGVkLCBhbmQgdGhlcmUncyBubyBydW50aW1lIGNoYW5nZSBvZiBw YWdlIHRhYmxlIG1hcHBpbmdzIGZvciBFUEMKPiBwYWdlcy4gT3ZlcnN1YnNjcmlwdGlvbiBtZWFu cyBYZW4gaHlwZXJ2aXNvciBzdXBwb3J0cyBFUEMgcGFnZSBzd2FwcGluZyBiZXR3ZWVuCj4gZG9t YWlucywgbWVhbmluZyBYZW4gaXMgYWJsZSB0byBldmljdCBFUEMgcGFnZSBmcm9tIGFub3RoZXIg ZG9tYWluIGFuZCBhc3NpZ24gaXQKPiB0byB0aGUgZG9tYWluIHRoYXQgbmVlZHMgdGhlIEVQQy4g V2l0aCBvdmVyc3Vic2NyaXB0aW9uLCBFUEMgY2FuIGJlIGFzc2lnbmVkIHRvCj4gZG9tYWluIG9u IGRlbWFuZCwgd2hlbiBFUFQgdmlvbGF0aW9uIGhhcHBlbnMuIEJhbGxvb25pbmcgaXMgc2ltaWxh ciB0byBtZW1vcnkKPiBiYWxsb29uaW5nLiBJdCBpcyBiYXNpY2FsbHkgIlN0YXRpYyBQYXJ0aXRp b25pbmciICsgIkJhbGxvb24gZHJpdmVyIiBpbiBndWVzdC4KPgo+IFN0YXRpYyBQYXJ0aXRpb25p bmcgaXMgdGhlIGVhc2llc3Qgd2F5IGluIHRlcm1zIG9mIGltcGxlbWVudGF0aW9uLCBhbmQgdGhl cmUKPiB3aWxsIGJlIG5vIGh5cGVydmlzb3Igb3ZlcmhlYWQgKGV4Y2VwdCBFUFQgb3ZlcmhlYWQg b2YgY291cnNlKSwgYmVjYXVzZSBpbgo+ICJTdGF0aWMgcGFydGl0aW9uaW5nIiwgdGhlcmUgaXMg bm8gRVBUIHZpb2xhdGlvbiBmb3IgRVBDLCBhbmQgWGVuIGRvZXNuJ3QgbmVlZAo+IHRvIHR1cm4g b24gRU5DTFMgVk1FWElUIGZvciBndWVzdCBhcyBFTkNMUyBydW5zIHBlcmZlY3RseSBpbiBub24t cm9vdCBtb2RlLgo+Cj4gQmFsbG9vbmluZyBpcyAiU3RhdGljIFBhcnRpdGlvbmluZyIgKyAiQmFs bG9vbiBkcml2ZXIiIGluIGd1ZXN0LiBMaWtlICJTdGF0aWMKPiBQYXJhdGl0aW9uaW5nIiwgYmFs bG9vbmluZyBkb2Vzbid0IG5lZWQgdG8gdHVybiBvbiBFTkNMUyBWTUVYSVQsIGFuZCBkb2Vzbid0 Cj4gaGF2ZSBFUFQgdmlvbGF0aW9uIGZvciBFUEMgZWl0aGVyLiBUbyBzdXBwb3J0IGJhbGxvb25p bmcsIHdlIG5lZWQgYmFsbG9vbmluZwo+IGRyaXZlciBpbiBndWVzdCB0byBpc3N1ZSBoeXBlcmNh bGwgdG8gZ2l2ZSB1cCBvciByZWNsYWltIEVQQyBwYWdlcy4gSW4gdGVybXMgb2YKPiBoeXBlcmNh bGwsIHdlIGhhdmUgdHdvIGNob2ljZXM6IDEpIEFkZCBuZXcgaHlwZXJjYWxsIGZvciBFUEMgYmFs bG9vbmluZzsgMikKPiBVc2luZyBleGlzdGluZyBYRU5NRU1fe2luY3JlYXNlL2RlY3JlYXNlfV9y ZXNlcnZhdGlvbiB3aXRoIG5ldyBtZW1vcnkgZmxhZywgaWUsCj4gWEVOTUVNRl9lcGMuIEknbGwg ZGlzY3VzcyBtb3JlIHJlZ2FyZGluZyB0byBhZGRpbmcgZGVkaWNhdGVkIGh5cGVyY2FsbCBvciBu b3QKPiBsYXRlci4KPgo+IE92ZXJzdWJzY3JpcHRpb24gbG9va3MgbmljZSBidXQgaXQgcmVxdWly ZXMgbW9yZSBjb21wbGljYXRlZCBpbXBsZW1ldGF0aW9uLgo+IEZpcnN0bHksIGFzIGV4cGxhaW5l ZCBpbiAxLjMuMyBFUEMgRXZpY3Rpb24gJiBSZWxvYWQsIHdlIG5lZWQgdG8gZm9sbG93IHNwZWNp ZmljCj4gc3RlcHMgdG8gZXZpY3QgRVBDIHBhZ2VzLCBhbmQgaW4gb3JkZXIgdG8gZG8gdGhhdCwg YmFzaWNhbGx5IFhlbiBuZWVkcyB0byB0cmFwCj4gRU5DTFMgZnJvbSBndWVzdCBhbmQga2VlcCB0 cmFjayBvZiBFUEMgcGFnZSBzdGF0dXMgYW5kIGVuY2xhdmUgaW5mbyBmcm9tIGFsbAo+IGd1ZXN0 LiBUaGlzIGlzIGJlY2F1c2U6Cj4gICAgICAtIFRvIGV2aWN0IHJlZ3VsYXIgRVBDIHBhZ2UsIFhl biBuZWVkcyB0byBrbm93IFNFQ1MgbG9jYXRpb24KPiAgICAgIC0gWGVuIG5lZWRzIHRvIGtub3cg RVBDIHBhZ2UgdHlwZTogZXZpY3RpbmcgcmVndWxhciBFUEMgYW5kIGV2aWN0aW5nIFNFQ1MsCj4g ICAgICAgIFZBIHBhZ2UgaGF2ZSBkaWZmZXJlbnQgc3RlcHMuCj4gICAgICAtIFhlbiBuZWVkcyB0 byBrbm93IEVQQyBwYWdlIHN0YXR1czogd2hldGhlciB0aGUgcGFnZSBpcyBibG9ja2VkIG9yIG5v dC4KPgo+IFRob3NlIGluZm8gY2FuIG9ubHkgYmUgZ290IGJ5IHRyYXBwaW5nIEVOQ0xTIGZyb20g Z3Vlc3QsIGFuZCBwYXJzaW5nIGl0cwo+IHBhcmFtZXRlcnMgKHRvIGlkZW50aWZ5IFNFQ1MgcGFn ZSwgZXRjKS4gUGFyc2luZyBFTkNMUyBwYXJhbWV0ZXJzIG1lYW5zIHdlIG5lZWQKPiB0byBrbm93 IHdoaWNoIEVOQ0xTIGxlYWYgaXMgYmVpbmcgdHJhcHBlZCwgYW5kIHdlIG5lZWQgdG8gdHJhbnNs YXRlIGd1ZXN0J3MKPiB2aXJ0dWFsIGFkZHJlc3MgdG8gZ2V0IHBoeXNpY2FsIGFkZHJlc3MgaW4g b3JkZXIgdG8gbG9jYXRlIEVQQyBwYWdlLiBBbmQgb25jZQo+IEVOQ0xTIGlzIHRyYXBwZWQsIHdl IGhhdmUgdG8gZW11bGF0ZSBFTkNMUyBpbiBYZW4sIHdoaWNoIG1lYW5zIHdlIG5lZWQgdG8KPiBy ZWNvbnN0cnVjdCBFTkNMUyBwYXJhbWV0ZXJzIGJ5IHJlbWFwcGluZyBhbGwgZ3Vlc3QncyB2aXJ0 dWFsIGFkZHJlc3MgdG8gWGVuJ3MKPiB2aXJ0dWFsIGFkZHJlc3MgKGd2YS0+Z3BhLT5wYS0+eGVu X3ZhKSwgYXMgRU5DTFMgYWx3YXlzIHVzZSAqZWZmZWN0aXZlIGFkZHJlc3MqCj4gd2hpY2ggaXMg YWJsZSB0byBiZSB0cmFzbGF0ZWQgYnkgcHJvY2Vzc29yIHdoZW4gcnVubmluZyBFTkNMUy4KPgo+ ICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KPiAgICAgICAgICAgICAgICAgIHwgICBFTkNMUyAgIHwKPiAgICAgIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Cj4gICAgICAgICAgICAgICAgICB8ICAgICAgICAgIC98XAo+ICAgICAgRU5DTFMgVk1FWElUfCAg ICAgICAgICAgfCBWTUVOVFJZCj4gICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8Cj4gICAg ICAgICAgICAgICAgIFx8LyAgICAgICAgICB8Cj4KPiAJCTEpIHBhcnNlIEVOQ0xTIHBhcmFtZXRl cnMKPiAJCTIpIHJlY29uc3RydWN0KHJlbWFwKSBndWVzdCdzIEVOQ0xTIHBhcmFtZXRlcnMKPiAJ CTMpIHJ1biBFTkNMUyBvbiBiZWhhbGYgb2YgZ3Vlc3QgKGFuZCBza2lwIEVOQ0xTKQo+IAkJNCkg b24gc3VjY2VzcywgdXBkYXRlIEVQQy9lbmNsYXZlIGluZm8sIG9yIGluamVjdCBlcnJvcgo+Cj4g QW5kIFhlbiBuZWVkcyB0byBtYWludGFpbiBlYWNoIEVQQyBwYWdlJ3Mgc3RhdHVzICh0eXBlLCBi bG9ja2VkIG9yIG5vdCwgaW4KPiBlbmNsYXZlIG9yIG5vdCwgZXRjKS4gWGVuIGFsc28gbmVlZHMg dG8gbWFpbnRhaW4gYWxsIEVuY2xhdmUncyBpbmZvIGZyb20gYWxsCj4gZ3Vlc3RzLCBpbiBvcmRl ciB0byBmaW5kIHRoZSBjb3JyZWN0IFNFQ1MgZm9yIHJlZ3VsYXIgRVBDIHBhZ2UsIGFuZCBlbmNs YXZlJ3MKPiBsaW5lYXIgYWRkcmVzcyBhcyB3ZWxsLgo+Cj4gU28gaW4gZ2VuZXJhbCwgIlN0YXRp YyBQYXJ0aXRpb25pbmciIGhhcyBzaW1wbGVzdCBpbXBsZW1lbnRhdGlvbiwgYnV0IG9idmlvdXNs eQo+IG5vdCB0aGUgYmVzdCB3YXkgdG8gdXNlIEVQQyBlZmZpY2llbnRseTsgIkJhbGxvb25pbmci IGhhcyBhbGwgcHJvcyBvZiBTdGF0aWMKPiBQYXJ0aXRpb25pbmcgYnV0IHJlcXVpZXMgZ3Vlc3Qg YmFsbG9vbiBkcml2ZXI7ICJPdmVyc3Vic2NyaXB0aW9uIiBpcyBiZXN0IGluCj4gdGVybXMgb2Yg ZmxleGliaWxpdHkgYnV0IHJlcXVpcmVzIGNvbXBsaWNhdGVkIGh5cGVydmlzb3IgaW1wbGVtZXRh dGlvbi4KPgo+IFdlIGhhdmUgaW1wbGVtZW50ZWQgIlN0YXRpYyBQYXJ0aXRpb25pbmciIGluIFJG QyBwYXRjaGVzLCBidXQgbmVlZHMgeW91cgo+IGZlZWRiYWNrIG9uIHdoZXRoZXIgaXQgaXMgZW5v dWdoLiBJZiBub3QsIHdoaWNoIG9uZSBzaG91bGQgd2UgZG8gYXQgbmV4dCBzdGFnZQo+IC0tIEJh bGxvb25pbmcgb3IgT3ZlcnN1YnNjcmlwdGlvbi4gSU1PIEJhbGxvb25pbmcgbWF5IGJlIGdvb2Qg ZW5vdWdoLCBnaXZlbiBmYWN0Cj4gdGhhdCBjdXJyZW50bHkgbWVtb3J5IGlzIGFsc28gIlN0YXRp YyBQYXJ0aXRpb25pbmciICsgIkJhbGxvb25pbmciLgo+Cj4gQ29tbWVudHM/CgpEZWZpbml0ZWx5 IGdvIGZvciBzdGF0aWMgcGFydGl0aW9uaW5nIHRvIGJlZ2luIHdpdGguICBUaGlzIGlzIGZhciAK c2ltcGxlciB0byBpbXBsZW1lbnQuCgpJIGNhbid0IHNlZSBhIHByZXNzaW5nIHVzZWNhc2UgZm9y IG92ZXJzdWJzY3JpcHRpb24gb3IgYmFsbG9vbmluZy4gQW55IApkYXRhY2VudGVyIHdvcmsgd2ls bCBiZSB1c2luZyBleGNsdXNpdmVseSBzdGF0aWMsIGFuZCBJIGV4cGVjdCBzdGF0aWMgCndpbGwg ZmluZSBmb3IgYWxsIChvciBhdCBsZWFzdCwgbW9zdCkgY2xpZW50IHVzZWNhc2VzLgoKPgo+IDIu Mi4zIFBvcHVsYXRlIEVQQyBmb3IgR3Vlc3QKPgo+IFRvb2xzdGFjayBub3RpZmllcyBYZW4gYWJv dXQgZG9tYWluJ3MgRVBDIGJhc2UgYW5kIHNpemUgYnkgWEVOX0RPTUNUTF9zZXRfY3B1aWQsCj4g c28gY3VycmVudGx5IFhlbiBwb3B1bGF0ZXMgYWxsIEVQQyBwYWdlcyBmb3IgZ3Vlc3QgaW4gWEVO X0RPTUNUTF9zZXRfY3B1aWQsCj4gcGFydGljdWxhcmx5LCBpbiBoYW5kbGluZyBYRU5fRE9NQ1RM X3NldF9jcHVpZCBmb3IgQ1BVSUQuMHgxMi4weDIuIE9uY2UgWGVuCj4gY2hlY2tzIHRoZSB2YWx1 ZXMgcGFzc2VkIGZyb20gdG9vbHN0YWNrIGlzIHZhbGlkLCBYZW4gd2lsbCBhbGxvY2F0ZSBhbGwg RVBDCj4gcGFnZXMgYW5kIHNldHVwIEVQVCBtYXBwaW5ncyBmb3IgZ3Vlc3QuCj4KPiAyLjIuNCBO ZXcgRGVkaWNhdGVkIEh5cGVyY2FsbCAoPykKCkFsbCB0aGlzIGluZm9ybWF0aW9uIHNob3VsZCAo ZXZlbnR1YWxseSkgYmUgYXZhaWxhYmxlIHZpYSB0aGUgCmFwcHJvcHJpYXRlIFNZU0NUTF9nZXRf e2NwdWlkLG1zcn1fcG9saWN5IGh5cGVyY2FsbHMuICBJIGRvbid0IHNlZSBhbnkgCm5lZWQgZm9y IGRlZGljYXRlZCBoeXBlcmNhbGxzLgoKPiAyLjIuOSBHdWVzdCBTdXNwZW5kICYgUmVzdW1lCj4K PiBPbiBoYXJkd2FyZSwgRVBDIGlzIGRlc3Ryb3llZCB3aGVuIHBvd2VyIGdvZXMgdG8gUzMtUzUu IFNvIFhlbiB3aWxsIGRlc3Ryb3kKPiBndWVzdCdzIEVQQyB3aGVuIGd1ZXN0J3MgcG93ZXIgZ29l cyBpbnRvIFMzLVM1LiBDdXJyZW50bHkgWGVuIGlzIG5vdGlmaWVkIGJ5Cj4gUWVtdSBpbiB0ZXJt cyBvZiBTIFN0YXRlIGNoYW5nZSB2aWEgSFZNX1BBUkFNX0FDUElfU19TVEFURSwgd2hlcmUgWGVu IHdpbGwKPiBkZXN0cm95IEVQQyBpZiBTIFN0YXRlIGlzIFMzLVM1Lgo+Cj4gU3BlY2lmaWNhbGx5 LCBYZW4gd2lsbCBydW4gRVJFTU9WRSBmb3IgZ3Vlc3QncyBlYWNoIEVQQyBwYWdlLCBhcyBndWVz dCBtYXkKPiBub3QgaGFuZGxlIEVQQyBzdXNwZW5kICYgcmVzdW1lIGNvcnJlY3RseSwgaW4gd2hp Y2ggY2FzZSBwaHlzaWNhbGx5IGd1ZXN0J3MgRVBDCj4gcGFnZXMgbWF5IHN0aWxsIGJlIHZhbGlk LCBzbyBYZW4gbmVlZHMgdG8gcnVuIEVSRU1PVkUgdG8gbWFrZSBzdXJlIGFsbCBFUEMKPiBwYWdl cyBhcmUgYmVjb21pbmcgaW52YWxpZC4gT3RoZXJ3aXNlIGZ1cnRoZXIgb3BlcmF0aW9uIGluIGd1 ZXN0IG9uIEVQQyBtYXkKPiBmYXVsdCBhcyBpdCBhc3N1bWVzIGFsbCBFUEMgcGFnZXMgYXJlIGlu dmFsaWQgYWZ0ZXIgZ3Vlc3QgaXMgcmVzdW1lZC4KPgo+IEZvciBTRUNTIHBhZ2UsIEVSRU1PVkUg bWF5IGZhdWx0IHdpdGggU0dYX0NISUxEX1BSRVNFTlQsIGluIHdoaWNoIGNhc2UgWGVuIHdpbGwK PiBrZWVwIHRoaXMgU0VDUyBwYWdlIGludG8gYSBsaXN0LCBhbmQgY2FsbCBFUkVNT1ZFIGZvciB0 aGVtIGFnYWluIGFmdGVyIGFsbCBFUEMKPiBwYWdlcyBoYXZlIGJlZW4gY2FsbGVkIHdpdGggRVJF TU9WRS4gVGhpcyB0aW1lIHRoZSBFUkVNT1ZFIG9uIFNFQ1Mgd2lsbCBzdWNjZWVkCj4gYXMgYWxs IGNoaWxkcmVuIChyZWd1bGFyIEVQQyBwYWdlcykgaGF2ZSBhbHJlYWR5IGJlZW4gcmVtb3ZlZC4K Pgo+IDIuMi4xMCBEZXN0cm95aW5nIERvbWFpbgo+Cj4gTm9ybWFsbHkgWGVuIGp1c3QgZnJlZXMg YWxsIEVQQyBwYWdlcyBmb3IgZG9tYWluIHdoZW4gaXQgaXMgZGVzdHJveWVkLiBCdXQgWGVuCj4g d2lsbCBhbHNvIGRvIEVSRU1PVkUgb24gYWxsIGd1ZXN0J3MgRVBDIHBhZ2VzIChkZXNjcmliZWQg aW4gYWJvdmUgMi4yLjcpIGJlZm9yZQo+IGZyZWUgdGhlbSwgYXMgZ3Vlc3QgbWF5IHNodXRkb3du IHVuZXhwZWN0ZWQgKGV4LCB1c2VyIGtpbGxzIGd1ZXN0KSwgYW5kIGluIHRoaXMKPiBjYXNlLCBn dWVzdCdzIEVQQyBtYXkgc3RpbGwgYmUgdmFsaWQuCj4KPiAyLjMgQWRkaXRpb25hbCBQb2ludDog TGl2ZSBNaWdyYXRpb24sIFNuYXBzaG90IFN1cHBvcnQgKD8pCgpIb3cgYmlnIGlzIHRoZSBFUEM/ ICBJZiB3ZSBhcmUgdGFsa2luZyBNQiByYXRoZXIgdGhhbiBHQiwgbW92ZW1lbnQgb2YgCnRoZSBF UEMgY291bGQgYmUgYWZ0ZXIgdGhlIHBhdXNlLCB3aGljaCB3b3VsZCBhZGQgc29tZSBsYXRlbmN5 IHRvIGxpdmUgCm1pZ3JhdGlvbiBidXQgc2hvdWxkIHdvcmsuICBJIGV4cGVjdCB0aGF0IHBlb3Bs ZSB3b3VsZCBwcmVmZXIgdG8gaGF2ZSAKdGhlIGZsZXhpYmlsaXR5IG9mIG1pZ3JhdGlvbiBldmVu IGF0IHRoZSBjb3N0IG9mIGV4dHJhIGxhdGVuY3kuCgp+QW5kcmV3CgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhl bi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK