From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: Re: [PATCH RFC 18/20] libxc/acpi: Build ACPI tables for HVMlite guests Date: Mon, 6 Jun 2016 13:03:45 +0100 Message-ID: <20160606120345.GW14588@citrix.com> References: <1459905949-10358-1-git-send-email-boris.ostrovsky@oracle.com> <1459905949-10358-19-git-send-email-boris.ostrovsky@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1459905949-10358-19-git-send-email-boris.ostrovsky@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Boris Ostrovsky Cc: roger.pau@citrix.com, Wei Liu , Stefano Stabellini , xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org T24gVHVlLCBBcHIgMDUsIDIwMTYgYXQgMDk6MjU6NDdQTSAtMDQwMCwgQm9yaXMgT3N0cm92c2t5 IHdyb3RlOgo+IFNpZ25lZC1vZmYtYnk6IEJvcmlzIE9zdHJvdnNreSA8Ym9yaXMub3N0cm92c2t5 QG9yYWNsZS5jb20+Cj4gLS0tCj4gIHRvb2xzL2xpYnhjL01ha2VmaWxlICAgICAgICAgICAgICB8 ICAyMiArKystCj4gIHRvb2xzL2xpYnhjL2luY2x1ZGUveGNfZG9tLmggICAgICB8ICAgMSArCj4g IHRvb2xzL2xpYnhjL3hjX2FjcGkuYyAgICAgICAgICAgICB8IDI2OCArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwo+ICB0b29scy9saWJ4Yy94Y19kb21feDg2LmMgICAgICAg ICAgfCAgIDcgKwo+ICB0b29scy9saWJ4bC9saWJ4bF94ODYuYyAgICAgICAgICAgfCAgMTkgKy0t Cj4gIHhlbi9jb21tb24vbGliYWNwaS9NYWtlZmlsZSAgICAgICB8ICAgNSArLQo+ICB4ZW4vY29t bW9uL2xpYmFjcGkvYWNwaTJfMC5oICAgICAgfCAgIDIgKy0KPiAgeGVuL2NvbW1vbi9saWJhY3Bp L2J1aWxkLmMgICAgICAgIHwgICAyICstCj4gIHhlbi9jb21tb24vbGliYWNwaS9kc2R0X2VtcHR5 LmFzbCB8ICAyMiArKysrCj4gIDkgZmlsZXMgY2hhbmdlZCwgMzM1IGluc2VydGlvbnMoKyksIDEz IGRlbGV0aW9ucygtKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvbGlieGMveGNfYWNwaS5j Cj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vY29tbW9uL2xpYmFjcGkvZHNkdF9lbXB0eS5hc2wK PiAKCkkndmUgb25seSBkb25lIGEgdmVyeSByb3VnaCByZXZpZXcuCgo+IGRpZmYgLS1naXQgYS90 b29scy9saWJ4Yy9NYWtlZmlsZSBiL3Rvb2xzL2xpYnhjL01ha2VmaWxlCj4gaW5kZXggNjA4NDA0 Zi4uOTU2OWU1NCAxMDA2NDQKPiAtLS0gYS90b29scy9saWJ4Yy9NYWtlZmlsZQo+ICsrKyBiL3Rv b2xzL2xpYnhjL01ha2VmaWxlCj4gQEAgLTc5LDYgKzc5LDI2IEBAIEdVRVNUX1NSQ1MteSArPSAk KEVMRl9TUkNTLXkpCj4gICQocGF0c3Vic3QgJS5jLCUubywkKEVMRl9TUkNTLXkpKTogQ0ZMQUdT ICs9IC1Xbm8tcG9pbnRlci1zaWduCj4gICQocGF0c3Vic3QgJS5jLCUub3BpYywkKEVMRl9TUkNT LXkpKTogQ0ZMQUdTICs9IC1Xbm8tcG9pbnRlci1zaWduCj4gIAo+ICtBQ1BJX1BBVEggPSAkKFhF Tl9ST09UKS94ZW4vY29tbW9uL2xpYmFjcGkKPiArdnBhdGggJS5jICQoQUNQSV9QQVRIKQo+ICtB Q1BJX0ZJTEVTICA9IGRzZHRfYW55Y3B1LmMgZHNkdF8xNWNwdS5jIHN0YXRpY190YWJsZXMuYwo+ ICtBQ1BJX0ZJTEVTICs9IGRzZHRfYW55Y3B1X3FlbXVfeGVuLmMgZHNkdF9lbXB0eS5jIGJ1aWxk LmMKPiArQUNQSV9TUkNTID0gJChwYXRzdWJzdCAlLmMsJChBQ1BJX1BBVEgpLyUuYywkKEFDUElf RklMRVMpKQo+ICsKPiArLk5PVFBBUkFMTEVMOiAkKEFDUElfU1JDUykKCldoeSBpcyB0aGlzIG5l ZWRlZD8KCj4gKyQoQUNQSV9TUkNTKToKPiArCW1ha2UgLUMgJChBQ1BJX1BBVEgpCj4gKwo+ICsk KHBhdHN1YnN0ICUuYywlLm8sJChBQ1BJX1NSQ1MpKTogQ0ZMQUdTICs9IC1JJChBQ1BJX1BBVEgp Cj4gKyQocGF0c3Vic3QgJS5jLCUub3BpYywkKEFDUElfU1JDUykpOiBDRkxBR1MgKz0gLUkkKEFD UElfUEFUSCkKPiAreGNfYWNwaS5vOiBDRkxBR1MgKz0gLUkkKEFDUElfUEFUSCkKPiAreGNfYWNw aS5vcGljOiBDRkxBR1MgKz0gLUkkKEFDUElfUEFUSCkKPiArCj4gK0dVRVNUX1NSQ1MteSArPSAk KEFDUElfRklMRVMpCj4gKwo+ICskKHBhdHN1YnN0ICUuYywlLm8sJChFTEZfU1JDUy15KSk6IENG TEFHUyArPSAtV25vLXBvaW50ZXItc2lnbgo+ICskKHBhdHN1YnN0ICUuYywlLm9waWMsJChFTEZf U1JDUy15KSk6IENGTEFHUyArPSAtV25vLXBvaW50ZXItc2lnbgo+ICsKPiAgIyBuZXcgZG9tYWlu IGJ1aWxkZXIKPiAgR1VFU1RfU1JDUy15ICAgICAgICAgICAgICAgICArPSB4Y19kb21fY29yZS5j IHhjX2RvbV9ib290LmMKPiAgR1VFU1RfU1JDUy15ICAgICAgICAgICAgICAgICArPSB4Y19kb21f ZWxmbG9hZGVyLmMKPiBAQCAtODksNyArMTA5LDcgQEAgR1VFU1RfU1JDUy0kKENPTkZJR19BUk0p ICAgICArPSB4Y19kb21fYXJtemltYWdlbG9hZGVyLmMKPiAgR1VFU1RfU1JDUy15ICAgICAgICAg ICAgICAgICArPSB4Y19kb21fYmlubG9hZGVyLmMKPiAgR1VFU1RfU1JDUy15ICAgICAgICAgICAg ICAgICArPSB4Y19kb21fY29tcGF0X2xpbnV4LmMKPiAgCj4gLUdVRVNUX1NSQ1MtJChDT05GSUdf WDg2KSAgICAgKz0geGNfZG9tX3g4Ni5jCj4gK0dVRVNUX1NSQ1MtJChDT05GSUdfWDg2KSAgICAg Kz0geGNfZG9tX3g4Ni5jIHhjX2FjcGkuYwo+ICBHVUVTVF9TUkNTLSQoQ09ORklHX1g4NikgICAg ICs9IHhjX2NwdWlkX3g4Ni5jCj4gIEdVRVNUX1NSQ1MtJChDT05GSUdfQVJNKSAgICAgKz0geGNf ZG9tX2FybS5jCj4gIAo+IGRpZmYgLS1naXQgYS90b29scy9saWJ4Yy9pbmNsdWRlL3hjX2RvbS5o IGIvdG9vbHMvbGlieGMvaW5jbHVkZS94Y19kb20uaAo+IGluZGV4IDZlYmU5NDYuLjM4NDJmYjEg MTAwNjQ0Cj4gLS0tIGEvdG9vbHMvbGlieGMvaW5jbHVkZS94Y19kb20uaAo+ICsrKyBiL3Rvb2xz L2xpYnhjL2luY2x1ZGUveGNfZG9tLmgKPiBAQCAtNDA3LDYgKzQwNyw3IEBAIHZvaWQgKnhjX2Rv bV9wZm5fdG9fcHRyX3JldGNvdW50KHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSwgeGVuX3Bmbl90 IGZpcnN0LAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ZW5fcGZuX3QgY291 bnQsIHhlbl9wZm5fdCAqY291bnRfb3V0KTsKPiAgdm9pZCB4Y19kb21fdW5tYXBfb25lKHN0cnVj dCB4Y19kb21faW1hZ2UgKmRvbSwgeGVuX3Bmbl90IHBmbik7Cj4gIHZvaWQgeGNfZG9tX3VubWFw X2FsbChzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20pOwo+ICtpbnQgeGNfZG9tX2J1aWxkX2FjcGko c3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tKTsKPiAgCj4gIHN0YXRpYyBpbmxpbmUgdm9pZCAqeGNf ZG9tX3NlZ190b19wdHJfcGFnZXMoc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tLAo+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB4Y19kb21fc2VnICpzZWcsCj4g ZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL3hjX2FjcGkuYyBiL3Rvb2xzL2xpYnhjL3hjX2FjcGku Ywo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uMzE3M2Q0OQo+IC0tLSAv ZGV2L251bGwKPiArKysgYi90b29scy9saWJ4Yy94Y19hY3BpLmMKPiBAQCAtMCwwICsxLDI2OCBA QAo+ICsjaW5jbHVkZSA8c3RkaW8uaD4KPiArI2luY2x1ZGUgPHN0ZGxpYi5oPgo+ICsjaW5jbHVk ZSA8c3RyaW5nLmg+Cj4gKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgo+ICsjaW5jbHVkZSA8YXNzZXJ0 Lmg+Cj4gKwo+ICsjaW5jbHVkZSA8eGVuL3hlbi5oPgo+ICsjaW5jbHVkZSA8eGVuL2ZvcmVpZ24v eDg2XzMyLmg+Cj4gKyNpbmNsdWRlIDx4ZW4vZm9yZWlnbi94ODZfNjQuaD4KPiArI2luY2x1ZGUg PHhlbi9odm0vaHZtX2luZm9fdGFibGUuaD4KPiArI2luY2x1ZGUgPHhlbi9pby9wcm90b2NvbHMu aD4KPiArCj4gKyNpbmNsdWRlICJ4Z19wcml2YXRlLmgiCj4gKyNpbmNsdWRlICJ4Y19kb20uaCIK PiArI2luY2x1ZGUgInhlbmN0cmwuaCIKPiArCj4gKyNpbmNsdWRlICJhY3BpMl8wLmgiCj4gKwo+ ICsjZGVmaW5lIFJFU0VSVkVEX01FTU9SWV9EWU5BTUlDX1NUQVJUIDB4RkMwMDEwMDAKPiArI2Rl ZmluZSBBQ1BJX1BIWVNJQ0FMX0FERFJFU1MgICAgICAgICAweDAwMEVBMDIwCj4gKwo+ICsvKiBJ bml0aWFsIGFsbG9jYXRpb24gZm9yIEFDUEkgdGFibGVzICovCj4gKyNkZWZpbmUgTlVNX0FDUElf UEFHRVMgIDE2Cj4gKwo+ICsjZGVmaW5lIFBGTihwYWRkcikgICgocGFkZHIpID4+IFBBR0VfU0hJ RlQpCj4gKwo+ICtleHRlcm4gdW5zaWduZWQgY2hhciBkc2R0X2FueWNwdVtdLCBkc2R0XzE1Y3B1 W10sIGRzZHRfZW1wdHlbXTsKPiArZXh0ZXJuIGludCBkc2R0X2FueWNwdV9sZW4sIGRzZHRfMTVj cHVfbGVuLCBkc2R0X2VtcHR5X2xlbjsKPiArCj4gK3N0YXRpYyB1aW50NjRfdCBhbGxvY191cCwg YWxsb2NfZG93bjsKPiArc3RhdGljIHVuc2lnbmVkIGxvbmcgYmFzZV9hZGRyOwo+ICsKPiArLyog QXNzdW1lcyBjb250aWd1b3VzIHBoeXNpY2FsIHNwYWNlICovCj4gK3N0YXRpYyB1bnNpZ25lZCBs b25nIHZpcnRfdG9fcGh5cyh2b2lkICp2KQo+ICt7Cj4gKwlyZXR1cm4gKCgodW5zaWduZWQgbG9u Zyl2IC0gYmFzZV9hZGRyKSArIFJFU0VSVkVEX01FTU9SWV9EWU5BTUlDX1NUQVJUKTsKPiArfQo+ ICsKPiArc3RhdGljIHZvaWQgKm1lbV9hbGxvYyh1aW50MzJfdCBzaXplLCB1aW50MzJfdCBhbGln bikKPiArewo+ICsgICAgdWludDY0X3QgcywgZTsKPiArCj4gKyAgICAvKiBBbGlnbiB0byBhdCBs ZWFzdCAxNiBieXRlcy4gKi8KPiArICAgIGlmICggYWxpZ24gPCAxNiApCj4gKyAgICAgICAgYWxp Z24gPSAxNjsKPiArCj4gKyAgICBzID0gKGFsbG9jX3VwICsgYWxpZ24pICYgfigodWludDY0X3Qp YWxpZ24gLSAxKTsKPiArICAgIGUgPSBzICsgc2l6ZSAtIDE7Cj4gKwo+ICsgICAgLyogVE9ETzog UmVhbGxvY2F0ZSBtZW1vcnkgKi8KPiArICAgIGlmICgoZSA8IHMpIHx8IChlID49IGFsbG9jX2Rv d24pKSByZXR1cm4gTlVMTDsKPiArCj4gKyAgICB3aGlsZSAoIFBGTihhbGxvY191cCkgIT0gUEZO KGUpICkKPiArICAgIHsKPiArICAgICAgICBhbGxvY191cCArPSBQQUdFX1NJWkU7Cj4gKyAgICB9 Cj4gKwo+ICsgICAgYWxsb2NfdXAgPSBlOwo+ICsKPiArICAgIHJldHVybiAodm9pZCAqKSh1bnNp Z25lZCBsb25nKXM7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgaW5pdF9hY3BpX2NvbmZpZyhzdHJ1 Y3QgeGNfZG9tX2ltYWdlICpkb20sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgYWNwaV9jb25maWcgKmNvbmZpZykKPiArewo+ICsgICAgeGNfaW50ZXJmYWNlICp4Y2ggPSBk b20tPnhjaDsKPiArICAgIHVpbnQzMl90IGRvbWlkID0gZG9tLT5ndWVzdF9kb21pZDsKPiArICAg IHhjX2RvbWluZm9fdCBpbmZvOwo+ICsgICAgaW50IGksIHJjOwo+ICsKPiArICAgIG1lbXNldChj b25maWcsIDAsIHNpemVvZigqY29uZmlnKSk7Cj4gKwo+ICsgICAgY29uZmlnLT5kc2R0X2FueWNw dSA9IGNvbmZpZy0+ZHNkdF8xNWNwdSA9IGRzZHRfZW1wdHk7Cj4gKyAgICBjb25maWctPmRzZHRf YW55Y3B1X2xlbiA9IGNvbmZpZy0+ZHNkdF8xNWNwdV9sZW4gPSBkc2R0X2VtcHR5X2xlbjsKPiAr Cj4gKyAgICByYyA9IHhjX2RvbWFpbl9nZXRpbmZvKHhjaCwgZG9taWQsIDEsICZpbmZvKTsKPiAr ICAgIGlmICggcmMgPCAwICkKPiArICAgIHsKPiArICAgICAgICBET01QUklOVEYoIiVzOiBnZXRk b21haW5pbmZvIGZhaWxlZCAocmM9JWQpIiwgX19GVU5DVElPTl9fLCByYyk7Cj4gKyAgICAgICAg cmV0dXJuIHJjOwo+ICsgICAgfQo+ICsKPiArICAgIGNvbmZpZy0+YXBpY19tb2RlID0gMTsKPiAr Cj4gKyAgICBpZiAoIGRvbS0+bnJfdm5vZGVzICkKPiArICAgIHsKPiArICAgICAgICBzdHJ1Y3Qg YWNwaV9udW1hICpudW1hID0gJmNvbmZpZy0+bnVtYTsKPiArCj4gKyAgICAgICAgbnVtYS0+dm1l bXJhbmdlID0gY2FsbG9jKGRvbS0+bnJfdm1lbXJhbmdlcywKPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2l6ZW9mKCpudW1hLT52bWVtcmFuZ2UpKTsKPiArICAgICAgICBudW1h LT52ZGlzdGFuY2UgPSBjYWxsb2MoZG9tLT5ucl92bm9kZXMsCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNpemVvZigqbnVtYS0+dmRpc3RhbmNlKSk7Cj4gKyAgICAgICAgbnVt YS0+dmNwdV90b192bm9kZSA9IGNhbGxvYyhjb25maWctPm5yX3ZjcHVzLAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKCpudW1hLT52Y3B1X3RvX3Zub2RlKSk7 Cj4gKyAgICAgICAgaWYgKCAhbnVtYS0+dm1lbXJhbmdlIHx8ICFudW1hLT52ZGlzdGFuY2UgfHwg IW51bWEtPnZjcHVfdG9fdm5vZGUgKQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAgRE9NUFJJ TlRGKCIlczogT3V0IG9mIG1lbW9yeSIsIF9fRlVOQ1RJT05fXyk7Cj4gKyAgICAgICAgICAgIGZy ZWUobnVtYS0+dm1lbXJhbmdlKTsKPiArICAgICAgICAgICAgZnJlZShudW1hLT52ZGlzdGFuY2Up Owo+ICsgICAgICAgICAgICBmcmVlKG51bWEtPnZjcHVfdG9fdm5vZGUpOwo+ICsgICAgICAgICAg ICByZXR1cm4gLUVOT01FTTsKPiArICAgICAgICB9Cj4gKwo+ICsgICAgICAgIHJjID0geGNfZG9t YWluX2dldHZudW1hKHhjaCwgZG9taWQsICZudW1hLT5ucl92bm9kZXMsCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJm51bWEtPm5yX3ZtZW1yYW5nZXMsCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJmNvbmZpZy0+bnJfdmNwdXMsIG51bWEtPnZtZW1yYW5nZSwK PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1hLT52ZGlzdGFuY2UsIG51bWEt PnZjcHVfdG9fdm5vZGUpOwo+ICsKPiArCSAgICBpZiAoIHJjICkKPiArICAgICAgICB7Cj4gKyAg ICAgICAgICAgIERPTVBSSU5URigiJXM6IHhjX2RvbWFpbl9nZXR2bnVtYSBmYWlsZWQgKHJjPSVk KSIsIF9fRlVOQ1RJT05fXywgcmMpOwo+ICsgICAgICAgICAgICByZXR1cm4gcmM7Cj4gKyAgICAg ICAgfQo+ICsgICAgfQo+ICsgICAgZWxzZQo+ICsgICAgICAgIGNvbmZpZy0+bnJfdmNwdXMgPSBp bmZvLm1heF92Y3B1X2lkICsgMTsKClRoaXMgbG9va3Mgd3JvbmcsIGF0IGxlYXN0IGl0IGlzIG5v dCBpbW1lZGlhdGVseSBjbGVhciB3aHkgeW91IHdvdWxkCndhbnQgdG8gZG8gdGhpcy4KCj4gKwo+ ICsgICAgY29uZmlnLT52Y3B1X29ubGluZSA9IGNhbGxvYygoSFZNX01BWF9WQ1BVUyArIDcpIC8g OCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKCpjb25maWctPnZj cHVfb25saW5lKSk7Cj4gKyAgICBpZiAoIGNvbmZpZy0+dmNwdV9vbmxpbmUgPT0gTlVMTCApCj4g KyAgICB7Cj4gKyAgICAgICAgRE9NUFJJTlRGKCIlczogQ2FuJ3QgYWxsb2NhdGUgdmNwdV9vbmxp bmUiLCBfX0ZVTkNUSU9OX18pOwo+ICsgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ICsgICAgfQo+ ICsKPiArICAgIGZvciAoaT0wOyBpPGNvbmZpZy0+bnJfdmNwdXM7IGkrKykKCkNvZGluZyBzdHls ZS4KCj4gKyAgICAgICAgY29uZmlnLT52Y3B1X29ubGluZVtpIC8gOF0gfD0gMSA8PCAoaSAmIDcp Owo+ICsKPiArICAgIGNvbmZpZy0+bWVtX29wcy5hbGxvYyA9IG1lbV9hbGxvYzsKPiArICAgIGNv bmZpZy0+bWVtX29wcy52MnAgPSB2aXJ0X3RvX3BoeXM7Cj4gKwo+ICsgICAgcmV0dXJuIDA7Cj4g K30KPiArCj4gK2ludCB4Y19kb21fYnVpbGRfYWNwaShzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20p Cj4gK3sKPiArICAgIHN0cnVjdCBhY3BpX2NvbmZpZyBjb25maWc7Cj4gKyAgICB1aW50MzJfdCBk b21pZCA9IGRvbS0+Z3Vlc3RfZG9taWQ7Cj4gKyAgICB4Y19pbnRlcmZhY2UgKnhjaCA9IGRvbS0+ eGNoOwo+ICsgICAgaW50IHJjLCBpLCBhY3BpX3BhZ2VzX251bTsKPiArICAgIHhlbl9wZm5fdCBl eHRlbnQsICpleHRlbnRzOwo+ICsgICAgdm9pZCAqYWNwaV9wYWdlcywgKmFjcGlfcGh5c2ljYWw7 Cj4gKyAgICB2b2lkICpndWVzdF9pbmZvX3BhZ2UsICpndWVzdF9hY3BpX3BhZ2VzOwo+ICsKCk5l ZWQgdG8gaW5pdGlhbGlzZSB0aGVzZSB0byBOVUxMIGFuZCAwIGluIGNhc2UgeW91IHRha2UgdGhl IGV4aXQgcGF0aAplYXJsaWVyLgoKV2VpLgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMu eGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK