From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [PATCH v4 13/26] x86/cpu: Sysctl and common infrastructure for levelling context switching Date: Mon, 28 Mar 2016 13:37:24 -0400 Message-ID: <20160328173724.GL17944@char.us.oracle.com> References: <1458750989-28967-1-git-send-email-andrew.cooper3@citrix.com> <1458750989-28967-14-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1458750989-28967-14-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Andrew Cooper , Joao Martins Cc: Jan Beulich , Xen-devel List-Id: xen-devel@lists.xenproject.org T24gV2VkLCBNYXIgMjMsIDIwMTYgYXQgMDQ6MzY6MTZQTSArMDAwMCwgQW5kcmV3IENvb3BlciB3 cm90ZToKPiBBIHRvb2xzdGFjayBuZWVkcyB0byBrbm93IGhvdyBtdWNoIGNvbnRyb2wgWGVuIGhh cyBvdmVyIHRoZSB2aXNpYmxlIGNwdWlkCj4gdmFsdWVzIGluIFBWIGd1ZXN0cy4gIFByb3ZpZGUg YW4gZXhwbGljaXQgbWVjaGFuaXNtIHRvIHF1ZXJ5IHdoYXQgWGVuIGlzCj4gY2FwYWJsZSBvZi4K CklmIGl0IGlzIG9ubHkgZm9yIFBWLCB3aHkgZG9uJ3QgeW91IGFkZCB0aGF0IHN1Ym9wcyB3aXRo IHRoYXQgbmFtZT8KCj4gCj4gVGhpcyBpbnRlcmZhY2Ugd2lsbCBjdXJyZW50bHkgcmVwb3J0IG5v IGNhcGFiaWxpdGllcy4gIFRoaXMgY2hhbmdlIGlzCj4gc2NhZmZvbGRpbmcgZm9yIGZ1dHVyZSBw YXRjaGVzLCB3aGljaCB3aWxsIGludHJvZHVjZSBkZXRlY3Rpb24gYW5kIHN3aXRjaGluZwo+IGxv Z2ljLCBhZnRlciB3aGljaCB0aGUgaW50ZXJmYWNlIHdpbGwgcmVwb3J0IGhhcmR3YXJlIGNhcGFi aWxpdGllcyBjb3JyZWN0bHkuCgo+IAo+IFNpZ25lZC1vZmYtYnk6IEFuZHJldyBDb29wZXIgPGFu ZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Cj4gLS0tCj4gQ0M6IEphbiBCZXVsaWNoIDxKQmV1bGlj aEBzdXNlLmNvbT4KCkFsc28gSSB3b3VsZCBzdWdnZXN0IHlvdSBhZGQgSm9hbyBzbyBoZSBjYW4g YmUgaW5mb3JtZWQgb2YgdGhpcyBwYXRjaC4KKENDaW5nIGhpbSBoZXJlKS4KPiAKPiB2MjoKPiAg KiBzL2NwdW1hc2tzL2NwdWlkbWFza3MvCj4gdjM6Cj4gICogUmVpbnRyb2R1Y2UgWEVOX1NZU0NU TF9nZXRfbGV2ZWxsaW5nX2NhcHMgKHJlcXVlc3RlZCBieSBKb2FvIGZvciBzb21lCj4gICAgZGV2 ZWxvcG1lbnQgaGUgaGFzIHBsYW5uZWQpLgo+ICAqIFJlbmFtZSB0byBYRU5fU1lTQ1RMX2dldF9j cHVfbGV2ZWxsaW5nX2NhcHMsIGFuZCByZW5hbWUgdGhlIGNvbnN0YW50cyB0bwo+ICAgIG1hdGNo IHRoZSBYZW4gY29tbWFuZCBsaW5lIG9wdGlvbnMuCj4gdjQ6Cj4gICogTW92ZSBkZWNsYXJhdGlv bnMgZnJvbSBwcm9jZXNzb3IuaCB0byBjcHVpZC5oCj4gICogQVBJIGNvcnJlY3Rpb25zIGZvciBY RU5fU1lTQ1RMX2dldF9sZXZlbGxpbmdfY2Fwcwo+IC0tLQo+ICB4ZW4vYXJjaC94ODYvY3B1L2Nv bW1vbi5jICAgICAgICB8ICA2ICsrKysrKwo+ICB4ZW4vYXJjaC94ODYvc3lzY3RsLmMgICAgICAg ICAgICB8ICA2ICsrKysrKwo+ICB4ZW4vaW5jbHVkZS9hc20teDg2L2NwdWZlYXR1cmUuaCB8ICAx ICsKPiAgeGVuL2luY2x1ZGUvYXNtLXg4Ni9jcHVpZC5oICAgICAgfCAzMiArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKwo+ICB4ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3RsLmggICAgICB8 IDIzICsrKysrKysrKysrKysrKysrKysrKysrCj4gIDUgZmlsZXMgY2hhbmdlZCwgNjggaW5zZXJ0 aW9ucygrKQo+IAo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvY3B1L2NvbW1vbi5jIGIveGVu L2FyY2gveDg2L2NwdS9jb21tb24uYwo+IGluZGV4IGI1YzAyM2YuLjdlZjc1YjAgMTAwNjQ0Cj4g LS0tIGEveGVuL2FyY2gveDg2L2NwdS9jb21tb24uYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9jcHUv Y29tbW9uLmMKPiBAQCAtMzYsNiArMzYsMTIgQEAgaW50ZWdlcl9wYXJhbSgiY3B1aWRfbWFza19l eHRfZWN4Iiwgb3B0X2NwdWlkX21hc2tfZXh0X2VjeCk7Cj4gIHVuc2lnbmVkIGludCBvcHRfY3B1 aWRfbWFza19leHRfZWR4ID0gfjB1Owo+ICBpbnRlZ2VyX3BhcmFtKCJjcHVpZF9tYXNrX2V4dF9l ZHgiLCBvcHRfY3B1aWRfbWFza19leHRfZWR4KTsKPiAgCj4gK3Vuc2lnbmVkIGludCBfX2luaXRk YXRhIGV4cGVjdGVkX2xldmVsbGluZ19jYXA7Cj4gK3Vuc2lnbmVkIGludCBfX3JlYWRfbW9zdGx5 IGxldmVsbGluZ19jYXBzOwo+ICsKPiArREVGSU5FX1BFUl9DUFUoc3RydWN0IGNwdWlkbWFza3Ms IGNwdWlkbWFza3MpOwo+ICtzdHJ1Y3QgY3B1aWRtYXNrcyBfX3JlYWRfbW9zdGx5IGNwdWlkbWFz a19kZWZhdWx0czsKPiArCj4gIGNvbnN0IHN0cnVjdCBjcHVfZGV2ICpfX3JlYWRfbW9zdGx5IGNw dV9kZXZzW1g4Nl9WRU5ET1JfTlVNXSA9IHt9Owo+ICAKPiAgdW5zaWduZWQgaW50IHBhZGRyX2Jp dHMgX19yZWFkX21vc3RseSA9IDM2Owo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvc3lzY3Rs LmMgYi94ZW4vYXJjaC94ODYvc3lzY3RsLmMKPiBpbmRleCA1OGNiZDcwLi5mNjhjYmVjIDEwMDY0 NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9zeXNjdGwuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9zeXNj dGwuYwo+IEBAIC0xOTAsNiArMTkwLDEyIEBAIGxvbmcgYXJjaF9kb19zeXNjdGwoCj4gICAgICAg ICAgfQo+ICAgICAgICAgIGJyZWFrOwo+ICAKPiArICAgIGNhc2UgWEVOX1NZU0NUTF9nZXRfY3B1 X2xldmVsbGluZ19jYXBzOgo+ICsgICAgICAgIHN5c2N0bC0+dS5jcHVfbGV2ZWxsaW5nX2NhcHMu Y2FwcyA9IGxldmVsbGluZ19jYXBzOwo+ICsgICAgICAgIGlmICggX19jb3B5X2ZpZWxkX3RvX2d1 ZXN0KHVfc3lzY3RsLCBzeXNjdGwsIHUuY3B1X2xldmVsbGluZ19jYXBzLmNhcHMpICkKPiArICAg ICAgICAgICAgcmV0ID0gLUVGQVVMVDsKPiArICAgICAgICBicmVhazsKPiArCj4gICAgICBkZWZh dWx0Ogo+ICAgICAgICAgIHJldCA9IC1FTk9TWVM7Cj4gICAgICAgICAgYnJlYWs7Cj4gZGlmZiAt LWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvY3B1ZmVhdHVyZS5oIGIveGVuL2luY2x1ZGUvYXNt LXg4Ni9jcHVmZWF0dXJlLmgKPiBpbmRleCBlMjliMDI0Li44NGQzMjIwIDEwMDY0NAo+IC0tLSBh L3hlbi9pbmNsdWRlL2FzbS14ODYvY3B1ZmVhdHVyZS5oCj4gKysrIGIveGVuL2luY2x1ZGUvYXNt LXg4Ni9jcHVmZWF0dXJlLmgKPiBAQCAtODEsNiArODEsNyBAQAo+ICAjZGVmaW5lIGNwdV9oYXNf eHNhdmVjCQlib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfWFNBVkVDKQo+ICAjZGVmaW5lIGNwdV9o YXNfeGdldGJ2MQkJYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX1hHRVRCVjEpCj4gICNkZWZpbmUg Y3B1X2hhc194c2F2ZXMJCWJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9YU0FWRVMpCj4gKyNkZWZp bmUgY3B1X2hhc19oeXBlcnZpc29yCWJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9IWVBFUlZJU09S KQo+ICAKPiAgZW51bSBfY2FjaGVfdHlwZSB7Cj4gICAgICBDQUNIRV9UWVBFX05VTEwgPSAwLAo+ IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2NwdWlkLmggYi94ZW4vaW5jbHVkZS9h c20teDg2L2NwdWlkLmgKPiBpbmRleCA0NzI1NjcyLi45YTIxYzI1IDEwMDY0NAo+IC0tLSBhL3hl bi9pbmNsdWRlL2FzbS14ODYvY3B1aWQuaAo+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvY3B1 aWQuaAo+IEBAIC0zLDYgKzMsNyBAQAo+ICAKPiAgI2luY2x1ZGUgPGFzbS9jcHVmZWF0dXJlc2V0 Lmg+Cj4gICNpbmNsdWRlIDxhc20vY3B1aWQtYXV0b2dlbi5oPgo+ICsjaW5jbHVkZSA8YXNtL3Bl cmNwdS5oPgo+ICAKPiAgI2RlZmluZSBGU0NBUElOVFMgRkVBVFVSRVNFVF9OUl9FTlRSSUVTCj4g IAo+IEBAIC0xOCw2ICsxOSw3IEBACj4gIAo+ICAjaWZuZGVmIF9fQVNTRU1CTFlfXwo+ICAjaW5j bHVkZSA8eGVuL3R5cGVzLmg+Cj4gKyNpbmNsdWRlIDxwdWJsaWMvc3lzY3RsLmg+Cj4gIAo+ICBl eHRlcm4gY29uc3QgdWludDMyX3Qga25vd25fZmVhdHVyZXNbRlNDQVBJTlRTXTsKPiAgZXh0ZXJu IGNvbnN0IHVpbnQzMl90IHNwZWNpYWxfZmVhdHVyZXNbRlNDQVBJTlRTXTsKPiBAQCAtMzEsNiAr MzMsMzYgQEAgdm9pZCBjYWxjdWxhdGVfZmVhdHVyZXNldHModm9pZCk7Cj4gIAo+ICBjb25zdCB1 aW50MzJfdCAqbG9va3VwX2RlZXBfZGVwcyh1aW50MzJfdCBmZWF0dXJlKTsKPiAgCj4gKy8qCj4g KyAqIEV4cGVjdGVkIGxldmVsbGluZyBjYXBhYmlsaXRpZXMgKGdpdmVuIGNwdWlkIHZlbmRvci9m YW1pbHkgaW5mb3JtYXRpb24pLAo+ICsgKiBhbmQgbGV2ZWxsaW5nIGNhcGFiaWxpdGllcyBhY3R1 YWxseSBhdmFpbGFibGUgKGdpdmVuIE1TUiBwcm9iaW5nKS4KPiArICovCj4gKyNkZWZpbmUgTENB UF9mYXVsdGluZyBYRU5fU1lTQ1RMX0NQVV9MRVZFTENBUF9mYXVsdGluZwo+ICsjZGVmaW5lIExD QVBfMWNkICAgICAgKFhFTl9TWVNDVExfQ1BVX0xFVkVMQ0FQX2VjeCB8ICAgICAgICBcCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgWEVOX1NZU0NUTF9DUFVfTEVWRUxDQVBfZWR4KQo+ICsjZGVm aW5lIExDQVBfZTFjZCAgICAgKFhFTl9TWVNDVExfQ1BVX0xFVkVMQ0FQX2V4dGRfZWN4IHwgICBc Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgWEVOX1NZU0NUTF9DUFVfTEVWRUxDQVBfZXh0ZF9l ZHgpCj4gKyNkZWZpbmUgTENBUF9EYTEgICAgICBYRU5fU1lTQ1RMX0NQVV9MRVZFTENBUF94c2F2 ZV9lYXgKPiArI2RlZmluZSBMQ0FQXzZjICAgICAgIFhFTl9TWVNDVExfQ1BVX0xFVkVMQ0FQX3Ro ZXJtYWxfZWN4Cj4gKyNkZWZpbmUgTENBUF83YWIwICAgICAoWEVOX1NZU0NUTF9DUFVfTEVWRUxD QVBfbDdzMF9lYXggfCAgIFwKPiArICAgICAgICAgICAgICAgICAgICAgICBYRU5fU1lTQ1RMX0NQ VV9MRVZFTENBUF9sN3MwX2VieCkKPiArZXh0ZXJuIHVuc2lnbmVkIGludCBleHBlY3RlZF9sZXZl bGxpbmdfY2FwLCBsZXZlbGxpbmdfY2FwczsKPiArCj4gK3N0cnVjdCBjcHVpZG1hc2tzCj4gK3sK PiArICAgIHVpbnQ2NF90IF8xY2Q7Cj4gKyAgICB1aW50NjRfdCBlMWNkOwo+ICsgICAgdWludDY0 X3QgRGExOwo+ICsgICAgdWludDY0X3QgXzZjOwo+ICsgICAgdWludDY0X3QgXzdhYjA7Cj4gK307 Cj4gKwo+ICsvKiBQZXIgQ1BVIHNoYWRvd3Mgb2YgbWFza2luZyBNU1IgdmFsdWVzLCBmb3IgbGF6 eSBjb250ZXh0IHN3aXRjaGluZy4gKi8KPiArREVDTEFSRV9QRVJfQ1BVKHN0cnVjdCBjcHVpZG1h c2tzLCBjcHVpZG1hc2tzKTsKPiArCj4gKy8qIERlZmF1bHQgbWFza2luZyBNU1IgdmFsdWVzLCBj YWxjdWxhdGVkIGF0IGJvb3QuICovCj4gK2V4dGVybiBzdHJ1Y3QgY3B1aWRtYXNrcyBjcHVpZG1h c2tfZGVmYXVsdHM7Cj4gKwo+ICAjZW5kaWYgLyogX19BU1NFTUJMWV9fICovCj4gICNlbmRpZiAv KiAhX19YODZfQ1BVSURfSF9fICovCj4gIAo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJs aWMvc3lzY3RsLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3RsLmgKPiBpbmRleCA5NjY4MGVi Li4xYWIxNmRiIDEwMDY0NAo+IC0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwuaAo+ICsr KyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwuaAo+IEBAIC03NjYsNiArNzY2LDI3IEBAIHN0 cnVjdCB4ZW5fc3lzY3RsX3RtZW1fb3Agewo+ICB0eXBlZGVmIHN0cnVjdCB4ZW5fc3lzY3RsX3Rt ZW1fb3AgeGVuX3N5c2N0bF90bWVtX29wX3Q7Cj4gIERFRklORV9YRU5fR1VFU1RfSEFORExFKHhl bl9zeXNjdGxfdG1lbV9vcF90KTsKPiAgCj4gKy8qCj4gKyAqIFhFTl9TWVNDVExfZ2V0X2NwdV9s ZXZlbGxpbmdfY2FwcyAoeDg2IHNwZWNpZmljKQo+ICsgKgo+ICsgKiBSZXR1cm4gaGFyZHdhcmUg Y2FwYWJpbGl0aWVzIGNvbmNlcm5pbmcgbWFza2luZyBvciBmYXVsdGluZyBvZiB0aGUgY3B1aWQK PiArICogaW5zdHJ1Y3Rpb24gZm9yIFBWIGd1ZXN0cy4KPiArICovCj4gK3N0cnVjdCB4ZW5fc3lz Y3RsX2NwdV9sZXZlbGxpbmdfY2FwcyB7Cj4gKyNkZWZpbmUgWEVOX1NZU0NUTF9DUFVfTEVWRUxD QVBfZmF1bHRpbmcgICAgKDF1bCA8PCAgMCkgLyogQ1BVSUQgZmF1bHRpbmcgICAgKi8KPiArI2Rl ZmluZSBYRU5fU1lTQ1RMX0NQVV9MRVZFTENBUF9lY3ggICAgICAgICAoMXVsIDw8ICAxKSAvKiAw eDAwMDAwMDAxLmVjeCAgICAqLwo+ICsjZGVmaW5lIFhFTl9TWVNDVExfQ1BVX0xFVkVMQ0FQX2Vk eCAgICAgICAgICgxdWwgPDwgIDIpIC8qIDB4MDAwMDAwMDEuZWR4ICAgICovCj4gKyNkZWZpbmUg WEVOX1NZU0NUTF9DUFVfTEVWRUxDQVBfZXh0ZF9lY3ggICAgKDF1bCA8PCAgMykgLyogMHg4MDAw MDAwMS5lY3ggICAgKi8KPiArI2RlZmluZSBYRU5fU1lTQ1RMX0NQVV9MRVZFTENBUF9leHRkX2Vk eCAgICAoMXVsIDw8ICA0KSAvKiAweDgwMDAwMDAxLmVkeCAgICAqLwo+ICsjZGVmaW5lIFhFTl9T WVNDVExfQ1BVX0xFVkVMQ0FQX3hzYXZlX2VheCAgICgxdWwgPDwgIDUpIC8qIDB4MDAwMDAwMEQ6 MS5lYXggICovCj4gKyNkZWZpbmUgWEVOX1NZU0NUTF9DUFVfTEVWRUxDQVBfdGhlcm1hbF9lY3gg KDF1bCA8PCAgNikgLyogMHgwMDAwMDAwNi5lY3ggICAgKi8KPiArI2RlZmluZSBYRU5fU1lTQ1RM X0NQVV9MRVZFTENBUF9sN3MwX2VheCAgICAoMXVsIDw8ICA3KSAvKiAweDAwMDAwMDA3OjAuZWF4 ICAqLwo+ICsjZGVmaW5lIFhFTl9TWVNDVExfQ1BVX0xFVkVMQ0FQX2w3czBfZWJ4ICAgICgxdWwg PDwgIDgpIC8qIDB4MDAwMDAwMDc6MC5lYnggICovCj4gKyAgICB1aW50MzJfdCBjYXBzOwo+ICt9 Owo+ICt0eXBlZGVmIHN0cnVjdCB4ZW5fc3lzY3RsX2NwdV9sZXZlbGxpbmdfY2FwcyB4ZW5fc3lz Y3RsX2NwdV9sZXZlbGxpbmdfY2Fwc190Owo+ICtERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5f c3lzY3RsX2NwdV9sZXZlbGxpbmdfY2Fwc190KTsKPiArCj4gIHN0cnVjdCB4ZW5fc3lzY3RsIHsK PiAgICAgIHVpbnQzMl90IGNtZDsKPiAgI2RlZmluZSBYRU5fU1lTQ1RMX3JlYWRjb25zb2xlICAg ICAgICAgICAgICAgICAgICAxCj4gQEAgLTc5MSw2ICs4MTIsNyBAQCBzdHJ1Y3QgeGVuX3N5c2N0 bCB7Cj4gICNkZWZpbmUgWEVOX1NZU0NUTF9wY2l0b3BvaW5mbyAgICAgICAgICAgICAgICAgICAy Mgo+ICAjZGVmaW5lIFhFTl9TWVNDVExfcHNyX2NhdF9vcCAgICAgICAgICAgICAgICAgICAgMjMK PiAgI2RlZmluZSBYRU5fU1lTQ1RMX3RtZW1fb3AgICAgICAgICAgICAgICAgICAgICAgIDI0Cj4g KyNkZWZpbmUgWEVOX1NZU0NUTF9nZXRfY3B1X2xldmVsbGluZ19jYXBzICAgICAgICAyNQo+ICAg ICAgdWludDMyX3QgaW50ZXJmYWNlX3ZlcnNpb247IC8qIFhFTl9TWVNDVExfSU5URVJGQUNFX1ZF UlNJT04gKi8KPiAgICAgIHVuaW9uIHsKPiAgICAgICAgICBzdHJ1Y3QgeGVuX3N5c2N0bF9yZWFk Y29uc29sZSAgICAgICByZWFkY29uc29sZTsKPiBAQCAtODE2LDYgKzgzOCw3IEBAIHN0cnVjdCB4 ZW5fc3lzY3RsIHsKPiAgICAgICAgICBzdHJ1Y3QgeGVuX3N5c2N0bF9wc3JfY210X29wICAgICAg ICBwc3JfY210X29wOwo+ICAgICAgICAgIHN0cnVjdCB4ZW5fc3lzY3RsX3Bzcl9jYXRfb3AgICAg ICAgIHBzcl9jYXRfb3A7Cj4gICAgICAgICAgc3RydWN0IHhlbl9zeXNjdGxfdG1lbV9vcCAgICAg ICAgICAgdG1lbV9vcDsKPiArICAgICAgICBzdHJ1Y3QgeGVuX3N5c2N0bF9jcHVfbGV2ZWxsaW5n X2NhcHMgY3B1X2xldmVsbGluZ19jYXBzOwo+ICAgICAgICAgIHVpbnQ4X3QgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHBhZFsxMjhdOwo+ICAgICAgfSB1Owo+ICB9Owo+IC0tIAo+IDIuMS40 Cj4gCj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K PiBYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Cj4gWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKPiBodHRw Oi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3Rz Lnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==