From mboxrd@z Thu Jan 1 00:00:00 1970 From: George Dunlap Subject: Re: [PATCH 06/24] xen: credit2: implement yield() Date: Tue, 20 Sep 2016 14:25:55 +0100 Message-ID: <05754315-a448-13ae-7ec4-359b2342d675@citrix.com> References: <147145358844.25877.7490417583264534196.stgit@Solace.fritz.box> <147145429544.25877.17160453823324324872.stgit@Solace.fritz.box> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bmL3g-0002gw-A3 for xen-devel@lists.xenproject.org; Tue, 20 Sep 2016 13:26:00 +0000 In-Reply-To: <147145429544.25877.17160453823324324872.stgit@Solace.fritz.box> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Dario Faggioli , xen-devel@lists.xenproject.org Cc: George Dunlap , Andrew Cooper , Anshul Makkar , Jan Beulich List-Id: xen-devel@lists.xenproject.org T24gMTcvMDgvMTYgMTg6MTgsIERhcmlvIEZhZ2dpb2xpIHdyb3RlOgo+IFdoZW4gYSB2Y3B1IGV4 cGxpY2l0bHkgeWllbGRzIGl0IGlzIHVzdWFsbHkgZ2l2aW5nCj4gdXMgYW4gYWR2aWNlIG9mICJs ZXQgc29tZW9uZSBlbHNlIHJ1biBhbmQgY29tZSBiYWNrCj4gdG8gbWUgaW4gYSBiaXQuIgo+IAo+ IENyZWRpdDIgaXNuJ3QsIHNvIGZhciwgZG9pbmcgYW55dGhpbmcgd2hlbiBhIHZjcHUKPiB5aWVs ZHMsIHdoaWNoIG1lYW5zIGFuIHlpZWxkIGlzIGJhc2ljYWxseSBhIE5PUCAod2VsbCwKPiBhY3R1 YWxseSwgaXQncyBwdXJlIG92ZXJoZWFkLCBhcyBpdCBjYXVzZXMgdGhlIHNjaGVkdWxlcgo+IGtp Y2sgaW4sIGJ1dCB0aGUgcmVzdWx0IGlzIC0tYXQgbGVhc3QgOTklIG9mIHRoZSB0aW1lLS0KPiB0 aGF0IHRoZSB2ZXJ5IHNhbWUgdmNwdSB0aGF0IHlpZWxkZWQgY29udGludWVzIHRvIHJ1bikuCj4g Cj4gSW1wbGVtZW50IGEgInByZWVtcHQgYmlhcyIsIHRvIGJlIGFwcGxpZWQgdG8geWllbGRpbmcK PiB2Y3B1cy4gQmFzaWNhbGx5IHdoZW4gZXZhbHVhdGluZyB3aGF0IHZjcHUgdG8gcnVuIG5leHQs Cj4gaWYgYSB2Y3B1IHRoYXQgaGFzIGp1c3QgeWllbGRlZCBpcyBlbmNvdW50ZXJlZCwgd2UgZ2l2 ZQo+IGl0IGEgY3JlZGl0IHBlbmFsdHksIGFuZCBjaGVjayB3aGV0aGVyIHRoZXJlIGlzIGFueW9u ZQo+IGVsc2UgdGhhdCB3b3VsZCBiZXR0ZXIgdGFrZSBvdmVyIHRoZSBjcHUgKG9mIGNvdXJzZSwK PiBpZiB0aGVyZSBpc24ndCB0aGUgeWllbGRpbmcgdmNwdSB3aWxsIGNvbnRpbnVlKS4KPiAKPiBU aGUgdmFsdWUgb2YgdGhpcyBiaWFzIGNhbiBiZSBjb25maWd1cmVkIHdpdGggYSBib290Cj4gdGlt ZSBwYXJhbWV0ZXIsIGFuZCB0aGUgZGVmYXVsdCBpcyBzZXQgdG8gMSBtcy4KPiAKPiBBbHNvLCBh ZGQgYW4geWllbGQgcGVyZm9ybWFuY2UgY291bnRlciwgYW5kIGZpeCB0aGUKPiBzdHlsZSBvZiBh IGNvdXBsZSBvZiBjb21tZW50cy4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBEYXJpbyBGYWdnaW9saSA8 ZGFyaW8uZmFnZ2lvbGlAY2l0cml4LmNvbT4KPiAtLS0KPiBDYzogR2VvcmdlIER1bmxhcCA8Z2Vv cmdlLmR1bmxhcEBldS5jaXRyaXguY29tPgo+IENjOiBBbnNodWwgTWFra2FyIDxhbnNodWwubWFr a2FyQGNpdHJpeC5jb20+Cj4gQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KPiBD YzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KPiAtLS0KPiBOb3Rl IHRoYXQgdGhpcyAqb25seSogY29uc2lkZXIgdGhlIGJpYXMgZHVyaW5nIHRoZSB2ZXJ5IHNjaGVk dWxpbmcgZGVjaXNpb24KPiB0aGF0IHJldHVsdHMgZnJvbSB0aGUgdmNwdSBjYWxsaW5nIHlpZWxk LiBBZnRlciB0aGF0LCB0aGUgX19DU0ZMQUdfdmNwdV95aWVsZAo+IGZsYWcgaXMgcmVzZXQsIGFu ZCBkdXJpbmcgYWxsIGZ1cnV0ZSBzY2hlZHVsaW5nIGRlY2lzaW9ucywgdGhlIHZjcHUgd2lsbAo+ IGNvbXBldGUgd2l0aCB0aGUgb3RoZXIgb25lcyB3aXRoIGl0cyBvd24gYW1vdW50IG9mIGNyZWRp dHMuCj4gCj4gQWx0ZXJuYXRpdmVseSwgd2UgY2FuIGFjdHVhbGx5IF9zdWJ0cmFjdF8gc29tZSBj cmVkaXRzIHRvIGEgeWllbGRpbmcgdmNwdS4KPiBUaGF0IHdpbGwgc29ydCBvZiBtYWtlIHRoZSBl ZmZlY3Qgb2YgYSBjYWxsIHRvIHlpZWxkIGxhc3QgaW4gdGltZS4KPiAKPiBJJ20gbm90IHN1cmUg d2hpY2ggcGF0aCBpcyBiZXN0LiBQZXJzb25hbGx5LCBJIGxpa2UgdGhlIHN1YnRyYWN0IGFwcHJv YWNoCj4gKHBlcmhhcHMsIHdpdGggYSBzbWFsbGVyIGJpYXMgdGhhbiAxbXMpLCBidXQgSSB0aGlu ayB0aGUgIm9uZSBzaG90IiBiZWhhdmlvcgo+IGltcGxlbWVudGVkIGhlcmUgaXMgYSBnb29kIHN0 YXJ0aW5nIHBvaW50LiBJdCBpcyBfc29tZXRoaW5nXywgd2hpY2ggaXMgYmV0dGVyCj4gdGhhbiBu b3RoaW5nLCB3aGljaCBpcyB3aGF0IHdlIGhhdmUgd2l0aG91dCB0aGlzIHBhdGNoISA6LSkgSXQn cyBsaWdodHdlaWdodAo+IChpbiBpdHMgaW1wYWN0IG9uIHRoZSBjcmVkaXRpbmcgYWxnb3JpdGht LCBJIG1lYW4pLCBhbmQgYmVuY2htYXJrcyBsb29rcyBuaWNlLAo+IHNvIEkgcHJvcG9zZSB3ZSBn byBmb3IgdGhpcyBvbmUsIGFuZCBleHBsb3JlIHRoZSAicGVybWFuZW50IiAtLXN1YnRyYWN0aW9u Cj4gYmFzZWQtLSBzb2x1dGlvbiBhIGJpdCBtb3JlLgo+IC0tLQo+ICBkb2NzL21pc2MveGVuLWNv bW1hbmQtbGluZS5tYXJrZG93biB8ICAgMTAgKysrKysrCj4gIHhlbi9jb21tb24vc2NoZWRfY3Jl ZGl0Mi5jICAgICAgICAgIHwgICA2MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0t LQo+ICB4ZW4vY29tbW9uL3NjaGVkdWxlLmMgICAgICAgICAgICAgICB8ICAgIDIgKwo+ICB4ZW4v aW5jbHVkZS94ZW4vcGVyZmNfZGVmbi5oICAgICAgICB8ICAgIDEgKwo+ICA0IGZpbGVzIGNoYW5n ZWQsIDY4IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2Rv Y3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLm1hcmtkb3duIGIvZG9jcy9taXNjL3hlbi1jb21tYW5k LWxpbmUubWFya2Rvd24KPiBpbmRleCAzYTI1MGNiLi41ZjQ2OWIxIDEwMDY0NAo+IC0tLSBhL2Rv Y3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLm1hcmtkb3duCj4gKysrIGIvZG9jcy9taXNjL3hlbi1j b21tYW5kLWxpbmUubWFya2Rvd24KPiBAQCAtMTM4OSw2ICsxMzg5LDE2IEBAIENob29zZSB0aGUg ZGVmYXVsdCBzY2hlZHVsZXIuCj4gICMjIyBzY2hlZFxfY3JlZGl0MlxfbWlncmF0ZVxfcmVzaXN0 Cj4gID4gYD0gPGludGVnZXI+YAo+ICAKPiArIyMjIHNjaGVkXF9jcmVkaXQyXF95aWVsZFxfYmlh cwo+ICs+IGA9IDxpbnRlZ2VyPmAKPiArCj4gKz4gRGVmYXVsdDogYDEwMDBgCj4gKwo+ICtTZXQg aG93IG11Y2ggYSB5aWVsZGluZyB2Y3B1IHdpbGwgYmUgcGVuYWxpemVkLCBpbiBvcmRlciB0byBh Y3R1YWxseQo+ICtnaXZlIGEgY2hhbmNlIHRvIHJ1biB0byBzb21lIG90aGVyIHZjcHUuIFRoaXMg aXMgYmFzaWNhbGx5IGEgYmlhcywgaW4KPiArZmF2b3VyIG9mIHRoZSBub24teWllbGRpbmcgdmNw dXMsIGV4cHJlc3NlZCBpbiBtaWNyb3NlY29uZHMgKGRlZmF1bHQKPiAraXMgMW1zKS4KPiArCj4g ICMjIyBzY2hlZFxfY3JlZGl0XF90c2xpY2VcX21zCj4gID4gYD0gPGludGVnZXI+YAo+ICAKPiBk aWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9zY2hlZF9jcmVkaXQyLmMgYi94ZW4vY29tbW9uL3NjaGVk X2NyZWRpdDIuYwo+IGluZGV4IGEzZDdiZWIuLjU2OTE3NGIgMTAwNjQ0Cj4gLS0tIGEveGVuL2Nv bW1vbi9zY2hlZF9jcmVkaXQyLmMKPiArKysgYi94ZW4vY29tbW9uL3NjaGVkX2NyZWRpdDIuYwo+ IEBAIC0xNDQsNiArMTQ0LDkgQEAKPiAgI2RlZmluZSBDU0NIRUQyX01JR1JBVEVfUkVTSVNUICAg ICAgICgob3B0X21pZ3JhdGVfcmVzaXN0KSpNSUNST1NFQ1MoMSkpCj4gIC8qIEhvdyBtdWNoIHRv ICJjb21wZW5zYXRlIiBhIHZjcHUgZm9yIEwyIG1pZ3JhdGlvbiAqLwo+ICAjZGVmaW5lIENTQ0hF RDJfTUlHUkFURV9DT01QRU5TQVRJT04gTUlDUk9TRUNTKDUwKQo+ICsvKiBIb3cgYmlnIG9mIGEg YmlhcyB3ZSBzaG91bGQgaGF2ZSBhZ2FpbnN0IGEgeWllbGRpbmcgdmNwdSAqLwo+ICsjZGVmaW5l IENTQ0hFRDJfWUlFTERfQklBUyAgICAgICAgICAgKChvcHRfeWllbGRfYmlhcykqTUlDUk9TRUNT KDEpKQo+ICsjZGVmaW5lIENTQ0hFRDJfWUlFTERfQklBU19NSU4gICAgICAgQ1NDSEVEMl9NSU5f VElNRVIKPiAgLyogUmVzZXQ6IFZhbHVlIGJlbG93IHdoaWNoIGNyZWRpdCB3aWxsIGJlIHJlc2V0 LiAqLwo+ICAjZGVmaW5lIENTQ0hFRDJfQ1JFRElUX1JFU0VUICAgICAgICAgMAo+ICAvKiBNYXgg dGltZXI6IE1heGltdW0gdGltZSBhIGd1ZXN0IGNhbiBiZSBydW4gZm9yLiAqLwo+IEBAIC0xODEs MTEgKzE4NCwyMCBAQAo+ICAgKi8KPiAgI2RlZmluZSBfX0NTRkxBR19ydW5xX21pZ3JhdGVfcmVx dWVzdCAzCj4gICNkZWZpbmUgQ1NGTEFHX3J1bnFfbWlncmF0ZV9yZXF1ZXN0ICgxPDxfX0NTRkxB R19ydW5xX21pZ3JhdGVfcmVxdWVzdCkKPiAtCj4gKy8qCj4gKyAqIENTRkxBR192Y3B1X3lpZWxk OiB0aGlzIHZjcHUgd2FzIHJ1bm5pbmcsIGFuZCBoYXMgY2FsbGVkIHZjcHVfeWllbGQoKS4gVGhl Cj4gKyAqIHNjaGVkdWxlciBpcyBpbnZva2VkIHRvIHNlZSBpZiB3ZSBjYW4gZ2l2ZSB0aGUgY3B1 IHRvIHNvbWVvbmUgZWxzZSwgYW5kCj4gKyAqIGdldCBiYWNrIHRvIHRoZSB5aWVsZGluZyB2Y3B1 IGluIGEgd2hpbGUuCj4gKyAqLwo+ICsjZGVmaW5lIF9fQ1NGTEFHX3ZjcHVfeWllbGQgNAo+ICsj ZGVmaW5lIENTRkxBR192Y3B1X3lpZWxkICgxPDxfX0NTRkxBR192Y3B1X3lpZWxkKQo+ICAKPiAg c3RhdGljIHVuc2lnbmVkIGludCBfX3JlYWRfbW9zdGx5IG9wdF9taWdyYXRlX3Jlc2lzdCA9IDUw MDsKPiAgaW50ZWdlcl9wYXJhbSgic2NoZWRfY3JlZGl0Ml9taWdyYXRlX3Jlc2lzdCIsIG9wdF9t aWdyYXRlX3Jlc2lzdCk7Cj4gIAo+ICtzdGF0aWMgdW5zaWduZWQgaW50IF9fcmVhZF9tb3N0bHkg b3B0X3lpZWxkX2JpYXMgPSAxMDAwOwo+ICtpbnRlZ2VyX3BhcmFtKCJzY2hlZF9jcmVkaXQyX3lp ZWxkX2JpYXMiLCBvcHRfeWllbGRfYmlhcyk7Cj4gKwo+ICAvKgo+ICAgKiBVc2VmdWwgbWFjcm9z Cj4gICAqLwo+IEBAIC0xNDMyLDYgKzE0NDQsMTQgQEAgb3V0Ogo+ICB9Cj4gIAo+ICBzdGF0aWMg dm9pZAo+ICtjc2NoZWQyX3ZjcHVfeWllbGQoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBz dHJ1Y3QgdmNwdSAqdikKPiArewo+ICsgICAgc3RydWN0IGNzY2hlZDJfdmNwdSAqIGNvbnN0IHN2 YyA9IENTQ0hFRDJfVkNQVSh2KTsKPiArCj4gKyAgICBfX3NldF9iaXQoX19DU0ZMQUdfdmNwdV95 aWVsZCwgJnN2Yy0+ZmxhZ3MpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZAo+ICBjc2NoZWQyX2Nv bnRleHRfc2F2ZWQoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgdmNwdSAqdmMp Cj4gIHsKPiAgICAgIHN0cnVjdCBjc2NoZWQyX3ZjcHUgKiBjb25zdCBzdmMgPSBDU0NIRUQyX1ZD UFUodmMpOwo+IEBAIC0yMjQ3LDEwICsyMjY3LDIyIEBAIHJ1bnFfY2FuZGlkYXRlKHN0cnVjdCBj c2NoZWQyX3J1bnF1ZXVlX2RhdGEgKnJxZCwKPiAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKml0ZXI7 Cj4gICAgICBzdHJ1Y3QgY3NjaGVkMl92Y3B1ICpzbmV4dCA9IE5VTEw7Cj4gICAgICBzdHJ1Y3Qg Y3NjaGVkMl9wcml2YXRlICpwcnYgPSBDU0NIRUQyX1BSSVYocGVyX2NwdShzY2hlZHVsZXIsIGNw dSkpOwo+ICsgICAgaW50IHlpZWxkX2JpYXMgPSAwOwo+ICAKPiAgICAgIC8qIERlZmF1bHQgdG8g Y3VycmVudCBpZiBydW5uYWJsZSwgaWRsZSBvdGhlcndpc2UgKi8KPiAgICAgIGlmICggdmNwdV9y dW5uYWJsZShzY3Vyci0+dmNwdSkgKQo+ICsgICAgewo+ICsgICAgICAgIC8qCj4gKyAgICAgICAg ICogVGhlIHdheSB3ZSBhY3R1YWxseSB0YWtlIHlpZWxkcyBpbnRvIGFjY291bnQgaXMgbGlrZSB0 aGlzOgo+ICsgICAgICAgICAqIGlmIHNjdXJyIGlzIHlpZWxkaW5nLCB3aGVuIGNvbXBhcmluZyBp dHMgY3JlZGl0cyB3aXRoIG90aGVyCj4gKyAgICAgICAgICogdmNwdXMgaW4gdGhlIHJ1bnF1ZXVl LCBhY3QgbGlrZSB0aG9zZSBvdGhlciB2Y3B1cyBoYWQgeWllbGRfYmlhcwo+ICsgICAgICAgICAq IG1vcmUgY3JlZGl0cy4KPiArICAgICAgICAgKi8KPiArICAgICAgICBpZiAoIHVubGlrZWx5KHNj dXJyLT5mbGFncyAmIENTRkxBR192Y3B1X3lpZWxkKSApCj4gKyAgICAgICAgICAgIHlpZWxkX2Jp YXMgPSBDU0NIRUQyX1lJRUxEX0JJQVM7Cj4gKwo+ICAgICAgICAgIHNuZXh0ID0gc2N1cnI7Cj4g KyAgICB9Cj4gICAgICBlbHNlCj4gICAgICAgICAgc25leHQgPSBDU0NIRUQyX1ZDUFUoaWRsZV92 Y3B1W2NwdV0pOwo+ICAKPiBAQCAtMjI2OCw2ICsyMzAwLDcgQEAgcnVucV9jYW5kaWRhdGUoc3Ry dWN0IGNzY2hlZDJfcnVucXVldWVfZGF0YSAqcnFkLAo+ICAgICAgbGlzdF9mb3JfZWFjaCggaXRl ciwgJnJxZC0+cnVucSApCj4gICAgICB7Cj4gICAgICAgICAgc3RydWN0IGNzY2hlZDJfdmNwdSAq IHN2YyA9IGxpc3RfZW50cnkoaXRlciwgc3RydWN0IGNzY2hlZDJfdmNwdSwgcnVucV9lbGVtKTsK PiArICAgICAgICBpbnQgc3ZjX2NyZWRpdCA9IHN2Yy0+Y3JlZGl0ICsgeWllbGRfYmlhczsKPiAg Cj4gICAgICAgICAgLyogT25seSBjb25zaWRlciB2Y3B1cyB0aGF0IGFyZSBhbGxvd2VkIHRvIHJ1 biBvbiB0aGlzIHByb2Nlc3Nvci4gKi8KPiAgICAgICAgICBpZiAoICFjcHVtYXNrX3Rlc3RfY3B1 KGNwdSwgc3ZjLT52Y3B1LT5jcHVfaGFyZF9hZmZpbml0eSkgKQo+IEBAIC0yMjg4LDE5ICsyMzIx LDIzIEBAIHJ1bnFfY2FuZGlkYXRlKHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEgKnJxZCwK PiAgICAgICAgICAgICAgY29udGludWU7Cj4gICAgICAgICAgfQo+ICAKPiAtICAgICAgICAvKiBJ ZiB0aGlzIGlzIG9uIGEgZGlmZmVyZW50IHByb2Nlc3NvciwgZG9uJ3QgcHVsbCBpdCB1bmxlc3MK PiAtICAgICAgICAgKiBpdHMgY3JlZGl0IGlzIGF0IGxlYXN0IENTQ0hFRDJfTUlHUkFURV9SRVNJ U1QgaGlnaGVyLiAqLwo+ICsgICAgICAgIC8qCj4gKyAgICAgICAgICogSWYgdGhpcyBpcyBvbiBh IGRpZmZlcmVudCBwcm9jZXNzb3IsIGRvbid0IHB1bGwgaXQgdW5sZXNzCj4gKyAgICAgICAgICog aXRzIGNyZWRpdCBpcyBhdCBsZWFzdCBDU0NIRUQyX01JR1JBVEVfUkVTSVNUIGhpZ2hlci4KPiAr ICAgICAgICAgKi8KPiAgICAgICAgICBpZiAoIHN2Yy0+dmNwdS0+cHJvY2Vzc29yICE9IGNwdQo+ IC0gICAgICAgICAgICAgJiYgc25leHQtPmNyZWRpdCArIENTQ0hFRDJfTUlHUkFURV9SRVNJU1Qg PiBzdmMtPmNyZWRpdCApCj4gKyAgICAgICAgICAgICAmJiBzbmV4dC0+Y3JlZGl0ICsgQ1NDSEVE Ml9NSUdSQVRFX1JFU0lTVCA+IHN2Y19jcmVkaXQgKQo+ICAgICAgICAgIHsKPiAgICAgICAgICAg ICAgKCpwb3MpKys7Cj4gICAgICAgICAgICAgIFNDSEVEX1NUQVRfQ1JBTksobWlncmF0ZV9yZXNp c3RlZCk7Cj4gICAgICAgICAgICAgIGNvbnRpbnVlOwo+ICAgICAgICAgIH0KPiAgCj4gLSAgICAg ICAgLyogSWYgdGhlIG5leHQgb25lIG9uIHRoZSBsaXN0IGhhcyBtb3JlIGNyZWRpdCB0aGFuIGN1 cnJlbnQKPiAtICAgICAgICAgKiAob3IgaWRsZSwgaWYgY3VycmVudCBpcyBub3QgcnVubmFibGUp LCBjaG9vc2UgaXQuICovCj4gLSAgICAgICAgaWYgKCBzdmMtPmNyZWRpdCA+IHNuZXh0LT5jcmVk aXQgKQo+ICsgICAgICAgIC8qCj4gKyAgICAgICAgICogSWYgdGhlIG5leHQgb25lIG9uIHRoZSBs aXN0IGhhcyBtb3JlIGNyZWRpdCB0aGFuIGN1cnJlbnQKPiArICAgICAgICAgKiAob3IgaWRsZSwg aWYgY3VycmVudCBpcyBub3QgcnVubmFibGUpLCBjaG9vc2UgaXQuCj4gKyAgICAgICAgICovCj4g KyAgICAgICAgaWYgKCBzdmNfY3JlZGl0ID4gc25leHQtPmNyZWRpdCApCj4gICAgICAgICAgICAg IHNuZXh0ID0gc3ZjOwoKSG1tLCBpZiB3ZSBjaGFuZ2Ugc25leHQsIHNob3VsZG4ndCB3ZSBhbHNv IHplcm8gb3V0IHRoZSB5aWVsZCBiaWFzPwpPdGhlcndpc2UgdmNwdXMgY29tcGV0aW5nIHdpdGgg c25leHQgKHdoaWNoIHdpbGwgYXQgdGhpcyBwb2ludCBoYXZlIGhhZAp0aGUgWUlFTEQgZmxhZyBj bGVhcmVkKSB3aWxsIGJlIGdpdmVuIHRoZSB5aWVsZCBib251cyBhcyB3ZWxsLCB3aGljaCBpcwpu b3Qgd2hhdCB3ZSB3YW50LiAgSW4gZmFjdCwgSSB0aGluayBpbiB0aGlzIGNhc2Ugd2UnbGwgYWx3 YXlzIGNob29zZSB0aGUKKmxhc3QqIHZjcHUgb24gdGhlIGxpc3QgdW5sZXNzIHRoZXJlJ3Mgb25l IHdoZXJlIHRoZSBnYXAgYmV0d2VlbiBOIGFuZApOKzEgaXMgZ3JlYXRlciB0aGFuIFlJRUxEX0JJ QVMsIHdvbid0IGl0PwoKIC1HZW9yZ2UKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54 ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK