From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joshua Whitehead Subject: Re: [RFC PATCH 0/4] Repurpose SEDF Scheduler for Real-time use Date: Thu, 26 Jun 2014 15:53:58 -0400 Message-ID: <53AC7A56.4010006@dornerworks.com> References: <1402689488-3577-1-git-send-email-josh.whitehead@dornerworks.com> <1403016280.16864.139.camel@Solace> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1403016280.16864.139.camel@Solace> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Dario Faggioli Cc: Ian Campbell , Stefano Stabellini , George Dunlap , Ian Jackson , Robert VanVossen , Xen-devel , Nate Studer List-Id: xen-devel@lists.xenproject.org T24gNi8xNy8yMDE0IDEwOjQ0IEFNLCBEYXJpbyBGYWdnaW9saSB3cm90ZToKPiBIaSBldmVyeW9u ZSBhZ2FpbiwKPiAKPiBJIGhhZCB0aGUgY2hhbmNlIHRvIGdpdmUgYSBjbG9zZSBsb29rIHRvIHRo ZSBwYXRjaGVzLCBzbyBoZXJlIEkgYW0uIDotKQo+IAo+IEZpcnN0IG9mIGFsbCwgdGhhbmtzIGFn YWluIEpvc2gsIFJvYmJpZSwgYW5kIE5hdGUgZm9yIHRoaXMgd29yayEKPiBUaGF0IGJlaW5nIHNh aWQuLi4KPgpIZWxsbyBldmVyeW9uZSwgc29ycnkgd2UgZGlkbid0IHJlc3BvbmQgdG8gdGhpcyBj b252ZXJzYXRpb24gc29vbmVyLCB0aGUgbGFzdApjb3VwbGUgd2Vla3MgaGF2ZSBiZWVuIGEgYml0 IGJ1c3kgYXJvdW5kIGhlcmUgd2l0aCBzb21lIG90aGVyIHByb2plY3RzIQoKVGhhbmtzIGZvciB5 b3VyIGZlZWRiYWNrIG9uIHRoaXMgRGFyaW8sIEkgd2lsbCBjb21tZW50IG9uIGVhY2ggYXJlYQpp bmRpdmlkdWFsbHksIGJ1dCBtYW55IG9mIHRoZSB0aGluZ3MgeW91IGJyb3VnaHQgdXAgd2VyZSBk ZWJhdGVzIHRoYXQgd2Ugd2VyZQpoYXZpbmcgaW50ZXJuYWxseSBoZXJlIGF0IERvcm5lcldvcmtz IGFuZCB3ZSBmaW5hbGx5IGRlY2lkZWQgdG8ganVzdCBwdXQgdGhlCnBhdGNoIG91dCBhbmQgZ2V0 IGEgZmVlbCBmb3Igd2hhdCBldmVyeW9uZSBlbHNlIHdhcyB0aGlua2luZywgd2hpY2ggaXMgZXhh Y3RseQp3aGF0IGhhcHBlbmVkIDotKSAgV2UgZG8gd2FudCB0byBtYWtlIGV2ZXJ5IGVmZm9ydCB0 byBub3Qgd29yayBpbiBhIHZhY3V1bSBhbmQKbWFrZSBzdXJlIHRoaXMgcGF0Y2ggc2VyaWVzIGlz IGEgYmVuZWZpdCB0byB0aGUgWGVuIGNvbW11bml0eSBhcyB3ZWxsIGFzIG91ciBvd24Kd29yay4g IFNvIGFsbCBjb21tZW50cyBhcmUgbW9zdCBkZWZpbml0ZWx5IHdlbGNvbWUsIGFuZCB3ZSBwbGFu IHRvIG1ha2UgYW55CmNoYW5nZXMgbmVjZXNzYXJ5IHRvIGxpbmUtdXAgd2l0aCB3aGF0IGlzIGRl Y2lkZWQgaXMgYmVzdCBmb3IgWGVuLgoKPiBPbiB2ZW4sIDIwMTQtMDYtMTMgYXQgMTU6NTggLTA0 MDAsIEpvc2ggV2hpdGVoZWFkIHdyb3RlOgo+PiBORUVEOgo+PiBXaXRoIHRoZSBpbmNyZWFzZWQg aW50ZXJlc3QgaW4gZW1iZWRkZWQgWGVuLCB0aGVyZSBpcyBhIG5lZWQgZm9yIGEgc3VpdGFibGUK Pj4gcmVhbC10aW1lIHNjaGVkdWxlci4gIFRoZSBhcmluYzY1MyBzY2hlZHVsZXIgY3VycmVudGx5 IG9ubHkgc3VwcG9ydHMgYQo+PiBzaW5nbGUgY29yZSBhbmQgaGFzIGxpbWl0ZWQgbmljaGUgYXBw ZWFsLCB3aGlsZSB0aGUgc2VkZiBzY2hlZHVsZXIgaXMKPj4gd2lkZWx5IGNvbnNpZGVyIGRlcHJl Y2F0ZWQgYW5kIGlzIGN1cnJlbnRseSBhIG1lc3MuICBUaGlzIHBhdGNoc2V0Cj4+IHJlcHVycG9z ZXMgdGhlIGN1cnJlbnQgc2VkZiBzY2hlZHVsZXIgYW5kIGFkZHMgYSBtb3JlIGNhcGFibGUgYW5k IHJvYnVzdCAKPj4gcmVhbC10aW1lIHNjaGVkdWxlciBzdWl0YWJsZSBmb3IgZW1iZWRkZWQgdXNl IHRvIHRoZSBYZW4gcmVwZXJ0b2lyZS4KPj4KPiBUaGF0IGRlc2NyaWJlcyBvdXIgY3VycmVudCBz aXR1YXRpb24gcXVpdGUgd2VsbC4gOi0pCj4gCj4+IFBST1BPU0VEIFNPTFVUSU9OOgo+PiBSZXB1 cnBvc2luZyBvZiB0aGUgc2VkZiBzY2hlZHVsZXIgd2FzIGFjY29tcGxpc2hlZCBieSBpbXBsZW1l bnRpbmcgdGhlCj4+IENvbnN0YW50IEJhbmR3aWR0aCBTZXJ2ZXIgKENCUykgYWxnb3JpdGhtIChv cmlnaW5hbGx5IHByb3Bvc2VkIGJ5IERhcmlvCj4+IEZhZ2dpb2xpKSB3aGljaCBpcyBjYXBhYmxl IG9mIHByb3Blcmx5IGhhbmRsaW5nIG1peGVkIHNvZnQgcmVhbC10aW1lIGFuZAo+PiBoYXJkIHJl YWwtdGltZSB0YXNrcyAoZG9tYWlucy92Y3B1cykgb24gdGhlIHNhbWUgc3lzdGVtLgo+Pgo+IFNv LCBhcyBhZ3JlZWQgdmlhIGNvbmYtY2FsbCwgYW5kIGFzIGltcGxpZWQgYnkgd2hhdCB5b3Ugc2F5 IHlvdXJzZWxmCj4gYmVsb3cgKHdoZW4gbWVudGlvbmluZyB0aGUgVEJTKSwgdGhlIHNvbHV0aW9u IGlzIHRvIGhhdmUgYSB3b3JraW5nCj4gZ2xvYmFsIEVERiBmcmFtZXdvcmssIG9uIHRvcCBvZiB3 aGljaCB3ZSBjYW4gcG90ZW50aWFsbHkgcHV0IG11bHRpcGxlCj4gYW5kIGRpZmZlcmVudCBidWRn ZXR0aW5nIGFsZ29yaXRobXMuCj4gCj4gRm9yIHRoYXQgZXhhY3QgcmVhc29uLCBJJ20gbm90IHN1 cmUgSSdkIGdvIGFsbCB0aGUgd2F5IGRvd24gdG8gU0NIRURfQ0JTCj4gYW5kIHNjaGVkX2Nicy5j LiBJbiBmYWN0LCBldmVuIHdpdGggdGhlIGFib3ZlICdiaWcgcGxhbicgaW4gbWluZCwgSQo+IGRv bid0IHRoaW5rIHJlbmFtaW5nL3N1YnN0aXR1dGluZyBTRURGIGlzIHRoYXQgaW1wb3J0YW50IGF0 IHRoaXMgc3RhZ2UuCj4gCj4gV2hhdCB3ZSBoYXZlIG5vdyBpbiBTRURGIGlzLCBiYXNpY2FsbHks IGFuIG91dGRhdGVkIGltcGxlbWVudGF0aW9uIG9mCj4gRURGIHdpdGggYW4gaGFja2lzaCBidWRn ZXR0aW5nIHNjaGVtZSBvbiB0b3Agb2YgaXQuCj4gV2hhdCB0aGlzIHBhdGNoc2V0IGlzIG1lYW50 IGF0IGlzIChhbHRob3VnaCBpbiBSRkMgc3RhdHVzKSBpbXBsZW1lbnRpbmcKPiBFREYgd2l0aCBh IHdlbGwga25vd24gYW5kIHdvcmtpbmcgYnVkZ2V0dGluZyBzY2hlbWUgb24gdG9wIG9mIGl0Lgo+ IAo+IFRoZXJlZm9yZSwgSSBkb24ndCB0aGluayB3ZSBuZWVkIHRvIGdvIHRocm91Z2ggdGhlIHJl bmFtaW5nIG9mIHRoZSBjCj4gZmlsZXMsIHRoZSBmdW5jdGlvbnMsIHRoZSBwYXJhbWV0ZXJzLCBl dGMuLi4ganVzdCBjaGFuZ2UgdGhlCj4gaW1wbGVtZW50YXRpb24hCj4gCkluZGVlZCB0aGlzIHdh cyBzb21ldGhpbmcgd2UgZGViYXRlZCBhcyB3ZWxsLiAgSSB0aGluayB0aGUgZmluYWwgYXJndW1l bnQgdGhhdAptYWRlIHVzIGRlY2lkZSB0byBzdWJtaXQgdGhlIHBhdGNoIHdpdGggdGhlIG5hbWUg Y2hhbmdlIHdhcyB0aGF0IHdlIGhhZCBtb2RpZmllZAp0aGUgU0VERiB0byBhIHNpZ25pZmljYW50 IGVub3VnaCBsZXZlbCB0aGF0IGlmIHRoZXJlIHdhcyBhbnlvbmUgc3RpbGwgdXNpbmcgU0VERgp0 aGV5IHdvdWxkIGJlIGNvbmZ1c2VkIGJ5IHRoZSBjaGFuZ2VzLiAgSG93ZXZlciBpZiB3ZSBmb2xs b3cgc29tZSBvZiB0aGUgb3RoZXIKY29tbWVudHMgYnkgeW91LCBHZW9yZ2UsIGFuZCBKYW4gKHVz aW5nIGlmLWRlZnMgdG8gcHJvdGVjdCB0aGluZ3MpIHRoaXMgc2hvdWxkCm5vdCBiZSBhIHByb2Js ZW0gYW5kIGxlYXZpbmcgdGhlIG5hbWluZyBzY2hlbWUgYXMgU0VERiBzaG91bGQgbm90IGJlIGFu IGlzc3VlLgooSSB3aWxsIHJlc3BvbmQgdG8gdGhlIGxhc3QgZS1tYWlsIHNlbnQgYnkgR2Vvcmdl IGFzIHdlbGwgd2hlbiBJJ20gZG9uZSB3aXRoCnRoaXMgb25lKQoKPiBDb25zaWRlciB0aGF0LCBh dCBsZWFzdCBhdCB0aGUgbGlieGwgbGV2ZWwsIHdlIGNvbW1pdHRlZCB0byBtYWludGFpbiBhCj4g c3RhYmxlIGFuZCBjb21waWxlIHRpbWUgYmFja3dhcmQgY29tcGF0aWJsZSBBUEkuIEdvaW5nIHRo cm91Z2ggc29tZXRoaW5nCj4gbGlrZSB0aGlzIHdvdWxkIHJlcXVpcmUgYSBsb3Qgb2YgdHJpY2tl cnksIGluIG9yZGVyIHRvIG1ha2UgdGhlIGFib3ZlCj4gdHJ1ZS4gCj4gCj4gVGhlIGdyZWF0IHZh bHVlIEkgc2VlIGluIHRoaXMgc2VyaWVzIGlzIHRoYXQgaXQgaXMgdGhlIGZpcnN0IHN0ZXAgaW4K PiB0dXJuaW5nIFNFREYgaW50byBzb21ldGhpbmcgdXNlZnVsLCBhbmQgeW91IGRvbid0IG5lZWQg dG8gY2hhbmdlIHRoZQo+IG5hbWUgYW5kIGtpbGwgdGhlIHBhcmFtZXRlcnMgZm9yIGRvaW5nIHRo YXQuCj4gCj4gSW4gZmFjdCwgYWJvdXQgdGhlIHBhcmFtZXRlcnM6Cj4gICogeW91JyByZSBhZGRp bmcgYSAnc29mdCcgcGFyYW0sIGJ1dCBJIHRoaW5rIHRoZSBleGlzdGluZyAnZXh0cmEnIGNhbgo+ ICAgIGJlIHVzZWQgdG8gbWVhbiBqdXN0IHRoYXQsIGNhbid0IGl0PyBJdCBzZWVtcyB0byBtZSB0 aGV5J3ZlIGdvdCBhCj4gICAgcHJldHR5IGNvbXBhdGlibGUgbWVhbmluZywgYXQgbGVhc3QgdXAg dG8gYSBjZXJ0YWluIGV4dGVudCAoaS5lLiwKPiAgICB3aGVuIGV4dHJhPTEgaXMgdXNlZCBvbiBh IGRvbWFpbiB3aXRoIGEgITAgYnVkZ2V0IGFuZCBzbGljZSkuCj4gICogJ2xhdGVuY3knLCBjZXJ0 YWlubHkgdGhlcmUgaXMgbm8gc3VjaCB0aGluZyBhcyBzY2FsaW5nIFUgaW4gdGhlCj4gICAgb3Jp Z2luYWwgQ0JTIGFsZ29yaXRobSwgYnV0IGl0IHdvbid0IGJlIHRvbyBkaWZmaWN1bHQgdG8gZG8g dGhhdC4KPiAgICBQZXJoYXBzIGFzIGEgc3Vic2VxdWVudCBzdGVwLCBpLmUuLCBzdGljayBhIFRP RE8gYWJvdXQgaXQgYXJvdW5kLCBmb3IKPiAgICBub3csIGJ1dCBqdXN0IGRvbid0IGtpbGwgaXQh Cj4gICogJ3dlaWdodCcgaXMgdGhlIG9ubHkgb25lIEknbSBhZnJhaWQgYWJvdXQsIGFzIHRoYXQg d2FzIG1lYW50IHRvIGJlCj4gICAgdXNlZnVsIHdoZW4gU0VERiB3YXMgdGhlIGRlZmF1bHQgc2No ZWR1bGVyIChzbyB1c2VkIGZvciBnZW5lcmFsCj4gICAgcHVycG9zZSB3b3JrbG9hZHMgYXMgd2Vs bCkuIFRoYXQncyB3aHkgSSdtIGFza2luZyBvdGhlciBwZW9wbGUgd2hhdAo+ICAgIHRoZSBjb25z dHJhaW50cyBvZiBBUEkgc3RhYmlsaXR5IGFyZSBpbiB0aGlzIHNpdHVhdGlvbi4gSG93ZXZlciwg ZXZlbgo+ICAgIGlmIHdlIGVuIHVwIGJlaW5nIHN0dWNrIHdpdGggaXQsIEkndmUgZ290IGEgZmV3 IGlkZWFzIG9uIGhvdyB0byB1c2UKPiAgICBpdCBpbiBhIHNpbWlsYXIgZW5vdWdoIHdheSB0byB0 aGUgb3JpZ2luYWwgbWVhbmluZy4gSS5lLiwgSSdkCj4gICAgcmVjb21tZW5kIHRoZSBzYW1lLiBJ Z25vcmUgaXQgYW5kIHB1dCBUT0RPcyBhcm91bmQsIGJ1dCBkb24ndCBnZXQgcmlkCj4gICAgb2Yg aXQuCj4gCkFnYWluIHdlIGRlYmF0ZWQgdGhlc2UgbmFtZSBjaGFuZ2VzLCB0aGUgcHJpbWFyeSBt b3RpdmF0b3Igd2FzIHRvIHVwZGF0ZSB0aGUKbGFuZ3VhZ2Ugb2YgdGhlIHBhcmFtZXRlcnMgdG8g cmVmbGVjdCB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgc2NoZWR1bGVyIGFuZCBnZXQKYXdheSBm cm9tIGl0J3MgcHJpb3IgKGN1cnJlbnQpIGRlcHJlY2F0ZWQvYnJva2VuIHN0YXRlLiAgSSB0aGlu ayBzb21lCiJpZi1kZWZlcnkiIGFzIHN1Z2dlc3RlZCBieSBHZW9yZ2UgYW5kIHBlcmhhcHMgYSAi VE9ETyIgYXMgeW91IHN1Z2dlc3QgbWF5IGJlCnRoZSBiZXN0IHNvbHV0aW9uIHRvIHVwZGF0aW5n IHRoZSBuYW1pbmcgd2hpbGUgbWFpbnRhaW5pbmcgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KCj4g SSB3b24ndCBjb21tZW50IG9uIHRoZSBkZXRhaWxzIG9mIHRoZSBhbGdvcml0aG0gaGVyZS4gSG93 ZXZlciwgc29tZXRoaW5nCj4gc2ltaWxhciB0byB3aGF0IHlvdSB3cm90ZSBpbiB0aGlzIGNvdmVy IGxldHRlciwgd291bGQgYmUgd2VsbCBzdWl0ZWQgZm9yCj4gYSBkb2N1bWVudCBpbiBkb2NzL21p c2MuIEkgY2FuIGNvbnRyaWJ1dGUgYW5kIGhlbHAgbWFrZSBpdCBhcyBjbGVhciBhbmQKPiBlYXN5 IHRvIHVuZGVyc3RhbmQgYXMgcG9zc2libGUsIG9mIGNvdXJzZS4KPiAKPiBBbHNvLCBzb21ldGhp bmcgc2ltaWxhciB0byB3aGF0IHlvdSBwdXQgaW4gdGhlICJVU0FHRSBJTlNUUlVDVElPTlMiLAo+ IHN0aWxsIG9mIHRoZSBjb3ZlciBsZXR0ZXIsIHdvdWxkIGZpdCB2ZXJ5IHdlbGwgaW4sIHN0aWxs IGluIGRvY3MvbWlzYywKPiB0aGUgZXF1aXZhbGVudCBvZiBzZWRmX3NjaGVkdWxlcl9taW5pLUhP V1RPLnR4dCAod2hldGhlciBieSByZXBsYWNpbmcKPiB0aGUgY29udGVudCBvZiBzdWNoIGZpbGUs IG9yIGtpbGxpbmcgaXQgYW5kIGNyZWF0aW5nIGEgbmV3IG9uZSwgSSBzdGlsbAo+IGRvbid0IGtu b3cpLgo+IApXZSB3b3VsZCBiZSBoYXBweSB0byBkbyB0aGlzLCBpdCdzIGFsd2F5cyBuaWNlIHRv IGZpbmQgZ29vZCBkb2N1bWVudGF0aW9uIHdoZW4KYXR0ZW1wdGluZyB0byB1c2UgYSBwYXJ0IG9m IFhlbiEgIFRoaXMgd291bGQgYWxzbyBsZXQgcGVvcGxlIGtub3cgdGhlIGludGVudCBvZgp0aGlz IHNjaGVkdWxlciBzbyB0aGF0IHRoZSBwZW9wbGUgd2hvIGRvbuKAmXQgbmVlZCBpdCwgZG9u4oCZ dCBlbmQgdXAgdXNpbmcgaXQuCgo+PiBGVVRVUkUgREVWRUxPUE1FTlQ6Cj4+IFRob3VnaCB1c2Vm dWwgaW4gaXRzIGN1cnJlbnQgc3RhdGUsIHRoZXJlIGFyZSBhIGZldyBhZGRpdGlvbmFsIGZlYXR1 cmVzIAo+PiBhbmQgbW9kaWZpY2F0aW9ucyB3ZSdkIGxpa2UgdG8gbWFrZSBpbiB0aGUgZnV0dXJl Ogo+Pgo+PiAxKSBNb3JlIGVmZmljaWVudCBtdWx0aXByb2Nlc3NvciBzdXBwb3J0IHRoYXQgbWFr ZXMgYmV0dGVyIHVzZSBvZgo+PiBhdmFpbGFibGUgY29yZXMuICBUaGlzIHdvdWxkIGxpa2VseSBi ZSBhY2NvbXBsaXNoZWQgdGhyb3VnaCB0aGUgdXNlIG9mIGEKPj4gZ2xvYmFsIEVERiBxdWV1ZSBm b3IgYWxsIGF2YWlsYWJsZSBQQ1BVcy4gIFRob3VnaCB0aGUgY3VycmVudCB2ZXJzaW9uCj4+IGRv ZXMgcmVjb2duaXplIGFuZCB1c2UgbXVsdGlwbGUgY29yZXMgaXQgdGFrZXMgc29tZSBjcmVhdGl2 ZSBhc3NpZ25pbmcKPj4gYW5kIHBpbm5pbmcgYnkgdGhlIHVzZXIgdG8gdXNlIHRoZW0gZWZmaWNp ZW50bHksIHRoZSBnb2FsIG9mIHRoaXMgY2hhbmdlCj4+IHdvdWxkIGJlIHRvIGhhdmUgdGhpcyBs b2FkIGJhbGFuY2luZyBvY2N1ciBzZWFtbGVzc2x5IGFuZCBhdXRvbWF0aWNhbGx5Lgo+Pgo+IFll cCwgd2UgZG8gbmVlZCB0aGlzLiBIb3dldmVyLCBJIGFncmVlIHRoYXQgd2Ugd2FudCBhbiBpbmNy ZW1lbnRhbAo+IGFwcHJvYWNoLiBXaGF0IEkgd2FzIGhvcGluZyB3YXMgdGhhdCwgZm9yIHR1cm5p bmcgdGhlIHNjaGVkdWxlciBmcm9tCj4gbG9jYWwgdG8gZ2xvYmFsLCB3ZSBjb3VsZCBib3Jyb3cg YSBmZXcgaWRlYXMgZnJvbSBjcmVkaXQyIChlLmcuLCAxCj4gcnVucXVldWUgcGVyIHNvY2tldCks IGFuZCBhIGZldyBjb2RlIGZyb20gUlQtWGVuIChhbmQgdGhvc2UgZ3V5cyBhcmUKPiBhbHNvIGNs b3NlIHRvIHN1Ym1pdHRpbmcgcGF0Y2hlcyBoZXJlIG9uIHhlbi1kZXZlbCkuCj4gCldlIGhhdmUg c29tZSBjaGFuZ2VzIGluIHRoZSB3b3JrcyB0aGF0IGltcGxlbWVudCB0aGlzLCBidXQgd2UgaGFk IHJlYWNoZWQgdGhlCnBvaW50IHdoZXJlIHdlIGp1c3Qgd2FudGVkIHRvIGdldCBzb21lIGRpc2N1 c3Npb24gZ29pbmcgb24gd2hhdCB0aGUgY29tbXVuaXR5CndhbnRlZCBiZWZvcmUgc3BlbmRpbmcg dG9vIG11Y2ggdGltZSBidWlsZGluZyBhICJjb21wbGV0ZSIgc29sdXRpb24gdGhhdCBtaWdodApu b3QgZml0IHRoZSBkZXNpcmVzIG9mIGFsbCBpbnRlcmVzdGVkIHBhcnRpZXMgOi0pCgo+PiAyKSBW Q1BVIGxldmVsIHBhcmFtZXRlciBhc3NpZ25tZW50cyBpbnN0ZWFkIG9mIHRoZSBjdXJyZW50IGRv bWFpbiBsZXZlbAo+PiBhc3NpZ25tZW50cy4gIFRoaXMgd291bGQgYWxsb3cgZm9yIG1vcmUgYWNj dXJhdGUgYW5kIGVmZmljaWVudCBkaXZpc2lvbiBvZgo+PiByZXNvdXJjZXMgYW1vbmdzdCBkb21h aW5zIGFuZCBjcHUgcG9vbHMuICBDdXJyZW50bHkgYWxsIHZjcHVzIHdpdGhpbiBhCj4+IGRvbWFp biBtdXN0IHVzZSB0aGUgc2FtZSBwZXJpb2QgYW5kIGJ1ZGdldCBwYXJhbWV0ZXJzLgo+Pgo+IFRo YXQgd291bGQgYmUgZ29vZC4gSXQgd291bGQgYmUgZXZlbiBiZXR0ZXIgdG8gZ28gZnVsbHkgaGll cmFyY2hpY2FsLAo+IGJ1dCB5ZXMsIGxldCdzIGxlYXZlIHRoaXMgdG8gYSBsYXRlciBkZXZlbG9w bWVudC4KPgpBZ2FpbiB3ZSBoYXZlIHBsYW5zIGZvciB0aGlzIHRoYXQgc2hvdWxkIGJlIGVhc3kg dG8gaW1wbGVtZW50LCBhbmQgZG9uJ3QgdGhpbmsKaXQgd291bGQgdGFrZSBtdWNoIHRpbWUsIGJ1 dCB3ZSB3YW50ZWQgbW9yZSBpbnB1dCBiZWZvcmUgY29udGludWluZyBibGluZGx5LiAgSQpiZWxp ZXZlIEkndmUgaGVhcmQgeW91IG1lbnRpb24gaGllcmFyY2hpY2FsIGFzc2lnbm1lbnRzIGJlZm9y ZS0gY291bGQgeW91IGdpdmUgYQpsaXR0bGUgbW9yZSBkZXRhaWwgb24gZXhhY3RseSB3aGF0IHlv dSBtZWFuIGJ5IHRoYXQgYW5kIG1heWJlIHdoYXQgeW91IHdvdWxkCmV4cGVjdCB0aGF0IHRvIGxv b2sgbGlrZSBpbiBhbiBhY3R1YWwgaW1wbGVtZW50YXRpb24/ICBXaGF0IGRvIHlvdSBzZWUgYXMg dGhlCmFkdmFudGFnZXMgdG8gdGhhdCBvdmVyIHNpbXBsZSBpbmRpdmlkdWFsIFZDUFUgbGV2ZWwg YXNzaWdubWVudHM/Cgo+PiAzKSBBbHRlcm5hdGUgc2NoZWR1bGluZyBhbGdvcml0aG1zIChlLmcu IFRvdGFsIEJhbmR3aWR0aCBTZXJ2ZXIpIGNvdWxkIG5vdwo+PiBiZSBpbXBsZW1lbnRlZCBpbiB0 aGlzIHNjaGVkdWxlciB3aXRoIHJlbGF0aXZlIGVhc2UgZ2l2ZW4gdGhlCj4+IHNpbXBsaWZpY2F0 aW9uIG9mIHRoZSB1bmRlcmx5aW5nIEVERiBzY2hlZHVsZXIgdGhhdCB3YXMgZG9uZSBhcyBwYXJ0 IG9mCj4+IHRoaXMgcGF0Y2hzZXQuICBUaGlzIHdvdWxkIGZ1cnRoZXIgZXhwYW5kIHRoZSBjYXBh YmlsaXRpZXMgb2YgWGVuIGluCj4+IGVtYmVkZGVkIHJlYWwtdGltZSBzeXN0ZW1zIGFuZCBnaXZl IGRldmVsb3BlcnMgbW9yZSBvcHRpb25zIHRvIGZpdCB0aGVpcgo+PiBpbmRpdmlkdWFsIHN5c3Rl bSByZXF1aXJlbWVudHMuCj4+Cj4gSW5kZWVkLiBBbmQgSSBjZXJ0YWlubHkgYW0gYWxsIGZvciBw cm92aWRpbmcgZGlmZmVyZW50IHNlcnZlciBhbGdvcml0aG1zCj4gYW5kIGltcGxlbWVudGF0aW9u cyAoYXMgc2FpZCBhYm92ZSBhbHJlYWR5KS4gQXQgc29tZSBwb2ludCwgYW5kIHBlcmhhcHMKPiBv ZmYtbGlzdCAoYXMgaXQgbWF5IGJlIHRvbyBzcGVjaWZpYyBoZXJlKSwgc29tZW9uZSBvZiB5b3Ug Z3V5cyB3aWxsIGhhdmUKPiB0byBleHBsYWluIHdoYXQgaXQgaXMgdGhhdCB5b3UgbGlrZSBpbiBU QlMgYmV0dGVyIHRoYW4gaW4gQ0JTLiBJIG1lYW4sCj4gYXMgZmFyIGFzIEkgcmVtZW1iZXIsIENC UyBpcyBhbiBpbXByb3ZlZCB2ZXJzaW9uIG9mIFRCUywgc28gd2h5IHN0aWNrCj4gd2l0aCB0aGUg b2xkIG9uZSB3aGVuIHdlIGNhbiBoYXZlIHRoZSBuZXcgb25lLi4uIG9yIGlzIGl0IHRoYXQgVEJT IGlzCj4gcGFydCBvZiBzb21lIHN0YW5kYXJkL2NlcnRpZmljYXRpb24vd2hhdGV2ZXI/Cj4gCkFz IGRpc2N1c3NlZCBhYm92ZSBvdXIgYmlnZ2VzdCBhcmd1bWVudCBGT1IgdGhlIG5hbWUgY2hhbmdl IHdhcyB0byBhdm9pZApjb25mdXNpb24sIHByb2JhYmx5IG91ciBiaWdnZXN0IGFyZ3VtZW50IEFH QUlOU1Qgd2FzIHRoYXQgd2UgYXJlIGludGVuZGluZyB0aGlzCnRvIGJlIGF2YWlsYWJsZSBpbiBz dWNoIGEgd2F5IHRoYXQgaXQgd291bGQgYmUgZWFzeSB0byBpbXBsZW1lbnQgb3RoZXIKYWxnb3Jp dGhtcyBvbiB0b3Agb2YgaXQuICBTbyBsZWF2aW5nIGl0IGFzICJzZWRmLmMiIGluc3RlYWQgd291 bGQgbWFrZSB0aGF0CnBvaW50IG1vcmUgcGxhaW4uCgpJbiB0aGUgY3VycmVudCBpbXBsZW1lbnRh dGlvbiwgYW55IHZjcHUvZG9tYWluIHRoYXQgaXMgImhhcmQgcmVhbC10aW1lIiAodGhlCmRlZmF1 bHQgZm9yIGFsbCBuZXcgdmNwdXMpIGlzIHRyZWF0ZWQgYXMgYSBwdXJlIEVERi0gaXQgZ2V0cyBp dHMgYnVkZ2V0IGZvciB0aGUKcGVyaW9kLCBubyBtb3JlLCBubyBsZXNzLCBhbmQgaWYgaXQgcnVu cyBvdXQgb2YgYnVkZ2V0IGl0IGhhcyB0byB3YWl0IHVudGlsIHRoZQpuZXh0IHBlcmlvZC4gIE9u bHkgd2hlbiB0aGUgInNvZnQiIGZsYWcgaXMgc2V0IGRvZXMgdGhlIENCUyBhbGdvcml0aG0gY29t ZSBpbiB0bwpwbGF5LiAgQmVjYXVzZSB0aGUgdW5kZXJseWluZyBiYXJlLWJvbmVzIEVERiBmdW5j dGlvbmFsaXR5IGlzIHRoZXJlIGl0IHdvdWxkCm1ha2UgaXQgYSBzaW1wbGUgbWF0dGVyIHRvIGlt cGxlbWVudCBvdGhlciBidWRnZXRpbmcgYWxnb3JpdGhtcyBhbmQgaGF2ZSB0aGVtCnRvZ2dsZWQg dmlhIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXJzLgoKV2UgaGF2ZSBubyBzcGVjaWFsIGF0dGFjaG1l bnQgdG8gVG90YWwgQmFuZHdpZHRoIFNlcnZlciwgdGhhdCB3YXMganVzdCB0aGUgZmlyc3QKZXhh bXBsZSBhbGdvcml0aG0gSSBoYXBwZW5lZCB0byB0aGluayBvZiB3aGVuIEkgd2FzIHdyaXRpbmcg dGhlIGNvdmVyIGxldHRlciA6LSkKIFRoZSBzeXN0ZW1zIHRoYXQgd2UgaGF2ZSBpbiBtaW5kIG9u IHdoaWNoIHdlIHdvdWxkIGxpa2UgdG8gdXNlIFhlbiB3aWxsIGluIGFsbApsaWtlbGlob29kIHVz ZSBDQlMgKG9yIEFSSU5DNjUzIGRlcGVuZGluZyBvbiB0aGUgY3VzdG9tZXIpIGFzIGl0IGlzIHN1 cGVyaW9yIGluCm1hbnkgd2F5cy4gIFdlIGp1c3Qgd2FudGVkIHRvIG1ha2Ugc3VyZSBpdCB3YXMg Y2xlYXIgdGhlIHBhdGNoIGxlZnQgaXQgb3BlbiBmb3IKdXMgb3IgYW55b25lIGVsc2UgdGhhdCBt aWdodCBoYXZlIGEgbmVlZCBmb3IgYSBkaWZmZXJlbnQgYWxnb3JpdGhtIGluIHRoZSBmdXR1cmUu Cgo+IFRoYW5rcyBhZ2FpbiBhbmQgUmVnYXJkcywKPiBEYXJpbwo+IAoKVGhhbmtzIGFnYWluIGZv ciB0aGUgZmVlZGJhY2ssIHRoaXMgaXMgZXhhY3RseSB3aGF0IHdlIHdlcmUgbG9va2luZyBmb3Iu ICBJIHdpbGwKcmVzcG9uZCB0byB5b3VyIG90aGVyIGNvbW1lbnRzIGluIHRoZSBvdGhlciBlLW1h aWxzIGFzIHdlbGwuCgotIEpvc2ggV2hpdGVoZWFkCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBs aXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=