From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christopher Clark Subject: Re: [PATCH 13/25] argo: implement the register op Date: Fri, 21 Dec 2018 15:05:03 -0800 Message-ID: References: <1543627984-21394-1-git-send-email-christopher.w.clark@gmail.com> <1543627984-21394-14-git-send-email-christopher.w.clark@gmail.com> <20181212164721.hag6gc3akcm2gvhd@mac> <20181220125218.75t3cr3ehc6e4u6n@mac.citrite.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gaTr6-0008SA-8l for xen-devel@lists.xenproject.org; Fri, 21 Dec 2018 23:05:20 +0000 Received: by mail-lj1-x243.google.com with SMTP id s5-v6so6079552ljd.12 for ; Fri, 21 Dec 2018 15:05:18 -0800 (PST) In-Reply-To: <20181220125218.75t3cr3ehc6e4u6n@mac.citrite.net> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= Cc: Stefano Stabellini , Wei Liu , James McKenzie , Ross Philipson , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Jason Andryuk , Ian Jackson , Rich Persaud , Tim Deegan , Daniel Smith , Julien Grall , Paul Durrant , Jan Beulich , xen-devel , Eric Chanudet List-Id: xen-devel@lists.xenproject.org T24gVGh1LCBEZWMgMjAsIDIwMTggYXQgNDo1MiBBTSBSb2dlciBQYXUgTW9ubsOpIDxyb2dlci5w YXVAY2l0cml4LmNvbT4gd3JvdGU6Cj4KPiBPbiBXZWQsIERlYyAxOSwgMjAxOCBhdCAwOTo0MTo1 OVBNIC0wODAwLCBDaHJpc3RvcGhlciBDbGFyayB3cm90ZToKPiA+IE9uIFdlZCwgRGVjIDEyLCAy MDE4IGF0IDg6NDggQU0gUm9nZXIgUGF1IE1vbm7DqSA8cm9nZXIucGF1QGNpdHJpeC5jb20+IHdy b3RlOgo+ID4gPgo+ID4gPiBPbiBGcmksIE5vdiAzMCwgMjAxOCBhdCAwNTozMjo1MlBNIC0wODAw LCBDaHJpc3RvcGhlciBDbGFyayB3cm90ZToKPiA+ID4gPiArc3RhdGljIGlubGluZSB1aW50MTZf dAo+ID4gPiA+ICthcmdvX2hhc2hfZm4oY29uc3Qgc3RydWN0IGFyZ29fcmluZ19pZCAqaWQpCj4g PiA+Cj4gPiA+IE5vIG5lZWQgZm9yIHRoZSBhcmdvXyBwcmVmaXggZm9yIHN0YXRpYyBmdW5jdGlv bnMsIHRoaXMgaXMgYWxyZWFkeSBhbgo+ID4gPiBhcmdvIHNwZWNpZmljIGZpbGUuCj4gPgo+ID4g QWx0aG91Z2ggdGhlIGNvbXBpbGVyIGNvdWxkIGxpdmUgd2l0aG91dCB0aGUgcHJlZml4LCBJJ20g ZmluZGluZyBpdCBoZWxwZnVsIHRvCj4gPiB2ZXJ5IGVhc2lseSBkZXRlcm1pbmUgdGhhdCBmdW5j dGlvbnMgYmVpbmcgdXNlZCBhcmUgbm90IGRlZmluZWQgZWxzZXdoZXJlCj4gPiB3aXRoaW4gWGVu OyBzbyBJJ3ZlIGxlZnQgdGhlIHByZWZpeCBhcyBpcyBmb3IgdmVyc2lvbiB0d28gb2YgdGhpcyBz ZXJpZXMuCj4KPiBXaHkgZG8geW91IGNhcmUgd2hldGhlciB0aGV5IGFyZSBkZWZpbmVkIGVsc2V3 aGVyZSBpbiBYZW4/IFRoZSBzY29wZQo+IG9mIHN0YXRpYyBmdW5jdGlvbnMgaXMgbGltaXRlZCB0 byB0aGUgdHJhbnNsYXRpb24gdW5pdCBhbnl3YXkuCgpvaywgSSdsbCByZW1vdmUgdGhlIHByZWZp eGVzIC0geW91J3JlIHJpZ2h0IHRoYXQgSSBzaG91bGRuJ3QgY2FyZQp3aGV0aGVyIHRoZXkgYXJl IGRlZmluZWQgZWxzZXdoZXJlIGluIFhlbiwgYW5kIEphbidzIHBvaW50cyBhYm91dCB0aGUKc3Ry aW5nIHRhYmxlIGV4cGFuc2lvbiBhbmQgc2VyaWFsIGxpbmUgYmFuZHdpZHRoIGFyZSB0cnVlIC0g SSBoYWQgbm90CmNvbnNpZGVyZWQgdGhvc2UuIFdvdWxkIGFkZGluZyBhIG5vdGUgdG8gZGVzY3Jp YmUgdGhpcyByZWFzb25pbmcgdG8KdGhlIENPRElOR19TVFlMRSBkb2N1bWVudCBiZSB3ZWxjb21l PwoKPiA+ID4gPiArI2Vsc2UKPiA+ID4gPiArICAgICptZm4gPSBwMm1fbG9va3VwKGQsIF9nZm4o cGZuKSwgJnAybXQpOwo+ID4gPiA+ICsjZW5kaWYKPiA+ID4gPiArCj4gPiA+ID4gKyAgICBpZiAo ICFtZm5fdmFsaWQoKm1mbikgKQo+ID4gPiA+ICsgICAgICAgIHJldCA9IC1FSU5WQUw7Cj4gPiA+ ID4gKyNpZmRlZiBDT05GSUdfWDg2Cj4gPiA+ID4gKyAgICBlbHNlIGlmICggcDJtX2lzX3BhZ2lu ZyhwMm10KSB8fCAocDJtdCA9PSBwMm1fcmFtX2xvZ2RpcnR5KSApCj4gPiA+ID4gKyAgICAgICAg cmV0ID0gLUVBR0FJTjsKPiA+ID4gPiArI2VuZGlmCj4gPiA+ID4gKyAgICBlbHNlIGlmICggKHAy bXQgIT0gcDJtX3JhbV9ydykgfHwKPiA+ID4gPiArICAgICAgICAgICAgICAhZ2V0X3BhZ2VfYW5k X3R5cGUobWZuX3RvX3BhZ2UoKm1mbiksIGQsIFBHVF93cml0YWJsZV9wYWdlKSApCj4gPiA+ID4g KyAgICAgICAgcmV0ID0gLUVJTlZBTDsKPiA+ID4gPiArCj4gPiA+ID4gKyNpZmRlZiBDT05GSUdf WDg2Cj4gPiA+ID4gKyAgICBwdXRfZ2ZuKGQsIHBmbik7Cj4gPiA+Cj4gPiA+IElmIHlvdSBkbyB0 aGlzIHB1dF9nZm4gaGVyZSwgYnkgdGhlIHRpbWUgeW91IGNoZWNrIHRoYXQgdGhlIGdmbiAtPiBt Zm4KPiA+ID4gbWF0Y2hlcyB5b3VyIGV4cGVjdGF0aW9ucyB0aGUgZ3Vlc3QgbWlnaHQgaGF2ZSBz b21laG93IGNoYW5nZWQgdGhlIGdmbgo+ID4gPiAtPiBtZm4gbWFwcGluZyBhbHJlYWR5IChmb3Ig ZXhhbXBsZSBieSBiYWxsb29uaW5nIGRvd24gbWVtb3J5PykKPiA+Cj4gPiBJZiB0aGUgZ3Vlc3Qg ZG9lcyB0aGF0LCBJIHRoaW5rIGl0IG9ubHkgaGFybXMgaXRzZWxmLiBJZiBmb3Igc29tZSByZWFz b24KPiA+IGEgbWVtb3J5IGFjY2VzcyBpcyBkZW5pZWQsIHRoZW4gdGhlIG9wIHdvdWxkIGp1c3Qg ZmFpbC4gSSBkb24ndCB0aGluawo+ID4gdGhlcmUncyBhIG1vcmUgc2VyaW91cyBjb25zZXF1ZW5j ZSB0byBiZSB3b3JyaWVkIGFib3V0Lgo+Cj4gVGhlbiBJIHdvbmRlciB3aHkgeW91IG5lZWQgc3Vj aCBjaGVjayBpbiBhbnkgY2FzZSBpZiB0aGUgY29kZSBjYW4KPiBoYW5kbGUgc3VjaCBjYXNlcywg dGhlIG1vcmUgdGhhbiB0aGUgY2hlY2sgaXRzZWxmIGlzIHJhY3kuCgpPSywgc28gYXQgdGhlIHJv b3Qgb2YgdGhlIHF1ZXN0aW9uIGhlcmUgaXM6IGRvZXMgaXQgbWF0dGVyIHdoYXQgdGhlIHAybQp0 eXBlIG9mIHRoZSBtZW1vcnkgaXMgYXQgdGhlc2UgcG9pbnRzOgoKMSkgd2hlbiB0aGUgZ2ZuIGlz IHRyYW5zbGF0ZWQgdG8gbWZuLCBhdCB0aGUgdGltZSBvZiByaW5nIHJlZ2lzdHJhdGlvbgoKMikg d2hlbiB0aGUgaHlwZXJ2aXNvciB3cml0ZXMgaW50byBndWVzdCBtZW1vcnk6CiAgICAtIHdoZXJl IHRoZSB0eF9wdHIgaW5kZXggaXMgaW5pdGlhbGl6ZWQgaW4gdGhlIHJlZ2lzdGVyIG9wCiAgICAt IHdoZXJlIHJpbmdidWYgZGF0YSBpcyB3cml0dGVuIGluIHNlbmR2CiAgICAtIHdoZXJlIHJpbmcg ZGVzY3JpcHRpb24gZGF0YSBpcyB3cml0dGVuIGluIG5vdGlmeQoKb3IgaXMgaGF2aW5nIFBHVF93 cml0YWJsZV9wYWdlIHR5cGUgYW5kIG93bmVyc2hpcCBieSB0aGUgZG9tYWluCnN1ZmZpY2llbnQ/ CgpGb3IgMSksIEkgdGhpbmsgdGhlcmUncyBzb21lIHVzZSBpbiBzYXlpbmcgbm8gdG8gYSBndWVz dCB0aGF0IGhhcwpzdXBwbGllZCBhIHJlZ2lvbiB0aGF0IGFwcGVhcnMgbWlzY29uZmlndXJlZC4K CkZvciAyKSwgaW5wdXQgd291bGQgYmUgYXBwcmVjaWF0ZWQuIEl0IGN1cnJlbnRseSB3b3JrcyB1 bmRlciB0aGUKYXNzdW1wdGlvbiB0aGF0IGEgcDJtIHR5cGUgY2hlY2sgaXMgdW5uZWNlc3Nhcnks IHdoaWNoIGlzIHdoeSB0aGUKcHV0X2dmbiBpcyB3aGVyZSBpdCBpcy4KCkZvciBmdXJ0aGVyIGJh Y2tncm91bmQgY29udGV4dCwgaGVyZSdzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBzZWN0aW9u OgoKV2hlbiB0aGUgZ3Vlc3QgaW52b2tlcyB0aGUgaHlwZXJjYWxsIG9wZXJhdGlvbiB0byByZWdp c3RlciBhIHJpbmcsIGl0CmlkZW50aWZpZXMgdGhlIG1lbW9yeSB0aGF0IGl0IG93bnMgYW5kIHdh bnRzIHRoZSBoeXBlcnZpc29yIHRvIHVzZSBieQpzdXBwbHlpbmcgYW4gYXJyYXkgb2YgZ2ZucyAo b3IgaW4gdjIsIGFkZHJlc3NlcyB3aGljaCBhcmUgc2hpZnRlZCB0bwpleHRyYWN0IHRoZWlyIGdm bnMpLgoKVGhlIGh5cGVydmlzb3IgdHJhbnNsYXRlcyBmcm9tIGdmbnMgdG8gbWZucywgdXNpbmcg dGhlIHRyYW5zbGF0aW9uIHRoYXQKZXhpc3RzIGF0IHRoYXQgdGltZSwgYW5kIHRoZW4gcmVmZXJz IHRvIHRoYXQgbWVtb3J5IGludGVybmFsbHkgYnkgbWZuCmZyb20gdGhlcmUgb24gb3V0LiBUaGlz IGZpbmRfcmluZ19tZm4gZnVuY3Rpb24gaXMgd2hlcmUgdGhlIGdmbi0+bWZuCnRyYW5zbGF0aW9u IGhhcHBlbnMuICAoVGhlIHZhcmlhYmxlIG5hbWUgZG9lcyBuZWVkcyByZW5hbWluZyBmcm9tIHBm biwKYXMgeW91IG5vdGVkIC0gdGhhbmtzLikKClRvIGRvIHRoZSB0cmFuc2xhdGlvbiBmcm9tIGdm biB0byBtZm4sIChvbiB4ODYpIGl0J3MgdXNpbmcKZ2V0X2dmbl91bnNoYXJlLiBUaGF0J3MgZG9p bmcgdGhyZWUgdGhpbmdzOgoqIHJldHVybnMgdGhlIG1mbiwgaWYgdGhlcmUgaXMgb25lLgoqIHJl dHVybnMgdGhlIHAybSB0eXBlIG9mIHRoYXQgbWVtb3J5LgoqIGFjcXVpcmVzIGEgcmVmZXJlbmNl IHRvIHRoYXQgZ2ZuLCB3aGljaCBuZWVkcyB0byBiZSBkcm9wcGVkIGF0IHNvbWUKICBwb2ludC4K ClRoZSBwMm0gdHlwZSB0eXBlIGNoZWNrIG9uIHRoZSBnZm4gaW4gZmluZF9yaW5nX21mbiBhdCB0 aGF0IHRpbWUgaXMKcG9zc2libHkgY29uc2VydmF0aXZlLCByZWplY3RpbmcgbW9yZSB0eXBlcyB0 aGFuIHBlcmhhcHMgaXQgbmVlZHMgdG8sCmJ1dCB0aGUgdHlwZSB0aGF0IGl0IGFjY2VwdHMgKHAy bV9yYW1fcncpIGlzIHNhbmUuIEl0IGlzIGEgdmFsaWRhdGlvbiBvZgp0aGUgcDJtIHR5cGUgYXQg dGhhdCBpbnN0YW50LCBpbnRlbmRlZCB0byBkZXRlY3QgaWYgdGhlIGd1ZXN0IGhhcwpzdXBwbGll ZCBtZW1vcnkgdG8gdGhlIHJpbmcgcmVnaXN0ZXIgb3AgdGhhdCBkb2VzIG5vdCBtYWtlIHNlbnNl IGZvciBpdAp0byB1c2UgYXMgYSByaW5nLCBhcyBpbmRpY2F0ZWQgYnkgdGhlIGN1cnJlbnQgcDJt IHR5cGUsIGFuZCBpZiBzbywgZmFpbAplYXJseSwgb3IgaW5kaWNhdGUgdGhhdCBhIHJldHJ5IGxh dGVyIGlzIG5lZWRlZC4KClRoZW4gdGhlIGdldF9wYWdlX2FuZF90eXBlIGNhbGwgaXMgd2hlcmUg dGhlIG1lbW9yeSBpZGVudGlmaWVkIGJ5IHRoZQptZm4gdGhhdCB3YXMganVzdCBvYnRhaW5lZCwg Z2V0cyBsb2NrZWQgdG8gUEdUX3dyaXRhYmxlX3BhZ2UgdHlwZSwgYW5kCm93bmVyc2hpcCBmaXhl ZCB0byBpdHMgY3VycmVudCBvd25lciBkb21haW4sIGJ5IGFkZGluZyB0byBpdHMgcmVmZXJlbmNl CmNvdW50LgoKVGhlbiB0aGUgZ2ZuIHJlZmVyZW5jZSBjb3VudCBpcyBkcm9wcGVkIHdpdGggdGhl IHB1dF9nZm4gY2FsbC4gVGhpcwptZWFucyB0aGF0IHRoZSBndWVzdCBjYW4gZWxlY3QgdG8gY2hh bmdlIHRoZSBwMm0gdHlwZSBhZnRlcndhcmRzLCBpZiBpdAp3YW50czsgKGFueSBjaGFuZ2UgbmVl ZHMgdG8gYmUgY29uc2lzdGVudCB3aXRoIGl0cyBkb21haW4gb3duZXJzaGlwIGFuZApQR1Rfd3Jp dGFibGVfcGFnZSB0eXBlIHRob3VnaCAtLSBub3Qgc3VyZSBpZiB0aGF0IGNvbnN0cmFpbnMgcG9z c2libGUgdHlwZXMpLgoKVGhhdCBtZW1vcnkgY2FuIGhhdmUgZ3Vlc3Qtc3VwcGxpZWQgZGF0YSB3 cml0dGVuIGludG8gaXQsIGVpdGhlciBieSB0aGUKZG9tYWluIG93bmluZyB0aGUgcGFnZSBpdHNl bGYsIG9yIGluIHJlc3BvbnNlIHRvIGFyZ28gc2VuZHYgb3BlcmF0aW9ucwpieSBvdGhlciBkb21h aW5zIHRoYXQgYXJlIGF1dGhvcml6ZWQgdG8gdHJhbnNtaXQgaW50byB0aGUgcmluZy4KCllvdXIg bm90ZSB0aGF0IHRoZSAiY2hlY2sgaXRzZWxmIGlzIHJhY3kiOiBpZS4gdGhhdCBhIGNoYW5nZSBv ZiBwMm0gdHlwZQpjb3VsZCBvY2N1ciBpbW1lZGlhdGVseSBhZnRlcndhcmRzIGlzIHRydWUuCgpT bzogRG8geW91IHRoaW5rIHRoYXQgYSBjaGVjayBvbiB0aGUgY3VycmVudCBwMm0gdHlwZSBvZiB0 aGUgcGFnZXMgaW4KdGhlIHJpbmcgaXMgbmVlZGVkIGF0IHRoZSBwb2ludHMgd2hlcmUgdGhlIGh5 cGVydmlzb3IgaXNzdWVzIHdyaXRlcyBpbnRvCnRoYXQgcmluZyBtZW1vcnk/CgoKPiA+IEFib3Zl LCBpZiB3ZSdyZSBnb2luZyB0byB1c2UgdGhlIG1mbiwgdGhlbiB3ZSd2ZSBqdXN0IGRvbmUgYSBz dWNjZXNzZnVsOgo+ID4gICAgIGdldF9wYWdlX2FuZF90eXBlKG1mbl90b19wYWdlKCptZm4pLCBk LCBQR1Rfd3JpdGFibGVfcGFnZSkKPiA+Cj4gPiB3aGljaCBzaG91bGQgaG9sZCBpdCBpbiBhIHN0 YXRlIHRoYXQgd2UncmUgb2sgd2l0aCB1bnRpbCB3ZSdyZSBkb25lCj4gPiB3aXRoIGl0IC0tIHNl ZSBwdXRfcGFnZV9hbmRfdHlwZSBpbiBhcmdvX3JpbmdfcmVtb3ZlX21mbnMuCj4gPgo+ID4gPiA+ ICsgICAgICAgIC8qIFcoTDIpIHByb3RlY3RzIGFsbCB0aGUgZWxlbWVudHMgb2YgdGhlIGRvbWFp bidzIHJpbmdfaW5mbyAqLwo+ID4gPiA+ICsgICAgICAgIHdyaXRlX2xvY2soJmQtPmFyZ28tPmxv Y2spOwo+ID4gPgo+ID4gPiBJIGRvbid0IHVuZGVyc3RhbmQgdGhpcyBXKEwyKSBub21lbmNsYXR1 cmUsIGlzIHRoaXMgZXhwbGFpbiBzb21ld2hlcmU/Cj4gPgo+ID4gWWVzLCBzb3J0IG9mLiBMb2Nr ICJMMiIgaXMgdGhlIHBlci1kb21haW4gYXJnbyBsb2NrLCBpZGVudGlmaWVkIGluIGEKPiA+IGNv bW1lbnQgbmVhciB0aGUgdG9wIG9mIHRoZSBmaWxlLiBJdCdzIGEgcmVhZC13cml0ZSBsb2NrLCBz byAnVycgbWVhbnM6Cj4gPiB0YWtlIHRoZSB3cml0ZSBsb2NrIG9uIGl0Lgo+ID4KPiA+ID4gQWxz byB0aGVyZSdzIG5vIHN1Y2ggY29tbWVudCB3aGVuIHlvdSB0YWtlIHRoZSBnbG9iYWwgYXJnb19s b2NrIGFib3ZlLgo+ID4KPiA+IEwyIGNvdmVycyBtb3JlIGludGVyZXN0aW5nIHdvcmsgdGhhbiBM MSwgd2hpY2ggaXMgd2h5IHRoZXJlIGFyZSBtb3JlCj4gPiBjb21tZW50cyBwZXJ0YWluaW5nIHRv IGl0IHRoYW4gTDEuCj4KPiBJIHdvdWxkIGFkZCBzdWNoIGNvbW1lbnRzIGFib3V0IHdoaWNoIGxv Y2tzIHByb3RlY3Qgd2hhdCBpdGVtcyB0byB0aGUKPiBkZWNsYXJhdGlvbiBvZiB0aGUgbG9ja3Ms IHJhdGhlciB0aGFuIHRoZSB1c2FnZSBwbGFjZS4KCmFjaywgYW5kIHRob3NlIGNvbW1lbnRzIGFy ZSB0aGVyZSwgaW50cm9kdWNlZCBlYXJsaWVyIGluIHRoZSBzZXJpZXMuClRoZXJlJ3MgYSBkZWRp Y2F0ZWQgc2VjdGlvbiB3aXRoIGNvbW1lbnRzIG9uIGxvY2tpbmcgbmVhciB0aGUgdG9wCih0aXRs ZWQ6ICJsb2NraW5nIGlzIG9yZ2FuaXplZCBhcyBmb2xsb3dzIikgYW5kIGNvbW1lbnRzIHdpdGhp biB0aGUKYXJnb19yaW5nX2luZm8gZGF0YSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiBmb3IgcHJvdGVj dGlvbiBvZiBlYWNoIGZpZWxkLgoKPiBJIGRvbid0IHNlZSBhCj4gbG90IG9mIHZhbHVlIGluIHRo ZSBjb21tZW50cyB0aGVyZSB1bmxlc3MgdGhleSBtYXliZSBkZXNjcmliZSBhbgo+IGV4Y2VwdGlv biBvciBhIGNvcm5lciBjYXNlLCBidXQgdGhhdCBtaWdodCBqdXN0IGJlIG15IHRhc3RlLgoKYWNr LiBJdCdzIG5vdGFibGUgd2l0aCB0aGF0IHNwZWNpZmljIHNpdGUgdGhhdCBpdCdzIChpbnRlbnRp b25hbGx5LApuZWNlc3NhcmlseSkgYSB3cml0ZV9sb2NrIHRoYXQgaXMgYmVpbmcgdGFrZW4sIHJh dGhlciB0aGFuIGEKcmVhZF9sb2NrOyBtYXliZSB0aGF0J3MgZW5vdWdoIHRvIGZhbGwgdW5kZXIg eW91ciBleGNlcHRpb24KLyBjb3JuZXIgY2FzZSBjb25kaXRpb24uIEkgY2FuIGRyb3AgaXQgaWYg aXQncyByZWFsbHkgdW53YW50ZWQuCgo+ID4gPiA+ICsvKgo+ID4gPiA+ICsgKiBNZXNzYWdlcyBv biB0aGUgcmluZyBhcmUgcGFkZGVkIHRvIDEyOCBiaXRzCj4gPiA+ID4gKyAqIExlbiBoZXJlIHJl ZmVycyB0byB0aGUgZXhhY3QgbGVuZ3RoIG9mIHRoZSBkYXRhIG5vdCBpbmNsdWRpbmcgdGhlCj4g PiA+ID4gKyAqIDEyOCBiaXQgaGVhZGVyLiBUaGUgbWVzc2FnZSB1c2VzCj4gPiA+ID4gKyAqICgo bGVuICsgMHhmKSAmIH4weGYpICsgc2l6ZW9mKGFyZ29fcmluZ19tZXNzYWdlX2hlYWRlcikgYnl0 ZXMuCj4gPiA+ID4gKyAqIFVzaW5nIHR5cGVvZihhKSBtYWtlIGNsZWFyIHRoYXQgdGhpcyBkb2Vz IG5vdCB0cnVuY2F0ZSBhbnkgaGlnaC1vcmRlciBiaXRzLgo+ID4gPiA+ICsgKi8KPiA+ID4gPiAr I2RlZmluZSBBUkdPX1JPVU5EVVAoYSkgKCgoYSkgKyAweGYpICYgfih0eXBlb2YoYSkpMHhmKQo+ ID4gPgo+ID4gPiBXaHkgbm90IGp1c3QgdXNlIFJPVU5EVVA/Cj4gPiA+Cj4gPiA+IEFuZCBpbiBh bnkgY2FzZSB0aGlzIHNob3VsZG4ndCBiZSBvbiB0aGUgcHVibGljIGhlYWRlciBJTU8sIHNpbmNl IGl0J3MKPiA+ID4gbm90IHBhcnQgb2YgdGhlIGludGVyZmFjZSBBRkFJQ1QuCj4gPgo+ID4gV2Vs bCwgaW4gdmVyc2lvbiB0d28gaXQncyBub3c6IFhFTl9BUkdPX1JPVU5EVVAgOi0pCj4gPiBiZWNh dXNlIGl0IGRvZXMgbmVlZCB0byBiZSBpbiB0aGUgcHVibGljIGhlYWRlciBiZWNhdXNlIGl0J3Mg dXNlZCB3aXRoaW4gdGhlCj4gPiBMaW51eCBkZXZpY2UgZHJpdmVyLCBhbmQgaXRlbXMgaW4gdGhh dCBwdWJsaWMgWGVuIGhlYWRlciBuZWVkIHRoZSAneGVuJyBwcmVmaXgKPiA+IChzbyB0aGV5IG5v dyBkbykuICBXaXRoaW4gdGhlIExpbnV4IGNvZGUsIGl0J3MgdXNlZCB0byBjaG9vc2UgYSBzZW5z aWJsZSByaW5nCj4gPiBzaXplLCBhbmQgYWxzbyB1c2VkIHdoZW4gbWFuaXB1bGF0aW5nIHRoZSBy eF9wdHIgb24gdGhlIGd1ZXN0IHNpZGUuCj4KPiBJJ20gcXVpdGUgc3VyZSBMaW51eCAob3IgYW55 IG90aGVyIE9TKSB3aWxsIGhhdmUgYSByb3VuZHVwIGhlbHBlciwgb3IKPiBpZiB0aGVyZSdzIGlu ZGVlZCBhbiBPUyB3aXRob3V0IGEgcm91bmR1cCBoZWxwZXIgaXQgc2hvdWxkIGJlIGFkZGVkIHRv Cj4gdGhlIGdlbmVyaWMgT1MgY29kZS4gVGhlcmUncyBub3RoaW5nIFhlbiBvciBBUkdPIHNwZWNp ZmljIGluIHRoaXMKPiByb3VuZHVwIGhlbHBlciwgaGVuY2UgSSBzZWUgbm8gbmVlZCB0byBhZGQg aXQgdG8gdGhlIHB1YmxpYyBoZWFkZXIuCj4KPiBJIHRoaW5rIHlvdSBzaG91bGQgaW5zdGVhZDoK Pgo+ICNkZWZpbmUgWEVOX0FSR09fTUVTU0FHRV9TSVpFIDB4Zgo+Cj4gT3Igc29tZSBzdWNoIGFu ZCB1c2UgdGhhdCB2YWx1ZSB3aXRoIHRoZSBPUyByb3VuZHVwIGhlbHBlci4KCk9LLCBJJ2xsIGdv IGFuZCBsb29rLiBUaGFua3MgZm9yIHRoZSBzdWdnZXN0aW9uLgoKQ2hyaXN0b3BoZXIKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWls aW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVu cHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=