From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau =?utf-8?B?TW9ubsOp?= Subject: Re: [PATCH v4 6/6] x86/microcode: Synchronize late microcode loading Date: Wed, 28 Nov 2018 16:22:09 +0100 Message-ID: <20181128152209.hqpgqtuy2mx7ytk6@mac> References: <1543383256-12371-1-git-send-email-chao.gao@intel.com> <1543383256-12371-7-git-send-email-chao.gao@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gS1kA-0007QT-Gi for xen-devel@lists.xenproject.org; Wed, 28 Nov 2018 15:27:14 +0000 Content-Disposition: inline In-Reply-To: <1543383256-12371-7-git-send-email-chao.gao@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Chao Gao Cc: Kevin Tian , Wei Liu , Jan Beulich , Andrew Cooper , Jun Nakajima , xen-devel@lists.xenproject.org, Thomas Gleixner , Borislav Petkov , Ashok Raj List-Id: xen-devel@lists.xenproject.org T24gV2VkLCBOb3YgMjgsIDIwMTggYXQgMDE6MzQ6MTZQTSArMDgwMCwgQ2hhbyBHYW8gd3JvdGU6 Cj4gVGhpcyBwYXRjaCBwb3J0cyBtaWNyb2NvZGUgaW1wcm92ZW1lbnQgcGF0Y2hlcyBmcm9tIGxp bnV4IGtlcm5lbC4KPiAKPiBCZWZvcmUgeW91IHJlYWQgYW55IGZ1cnRoZXI6IHRoZSBlYXJseSBs b2FkaW5nIG1ldGhvZCBpcyBzdGlsbCB0aGUKPiBwcmVmZXJyZWQgb25lIGFuZCB5b3Ugc2hvdWxk IGFsd2F5cyBkbyB0aGF0LiBUaGUgZm9sbG93aW5nIHBhdGNoIGlzCj4gaW1wcm92aW5nIHRoZSBs YXRlIGxvYWRpbmcgbWVjaGFuaXNtIGZvciBsb25nIHJ1bm5pbmcgam9icyBhbmQgY2xvdWQgdXNl Cj4gY2FzZXMuCj4gCj4gR2F0aGVyIGFsbCBjb3JlcyBhbmQgc2VyaWFsaXplIHRoZSBtaWNyb2Nv ZGUgdXBkYXRlIG9uIHRoZW0gYnkgZG9pbmcgaXQKPiBvbmUtYnktb25lIHRvIG1ha2UgdGhlIGxh dGUgdXBkYXRlIHByb2Nlc3MgYXMgcmVsaWFibGUgYXMgcG9zc2libGUgYW5kCj4gYXZvaWQgcG90 ZW50aWFsIGlzc3VlcyBjYXVzZWQgYnkgdGhlIG1pY3JvY29kZSB1cGRhdGUuCj4gCj4gU2lnbmVk LW9mZi1ieTogQ2hhbyBHYW8gPGNoYW8uZ2FvQGludGVsLmNvbT4KPiBUZXN0ZWQtYnk6IENoYW8g R2FvIDxjaGFvLmdhb0BpbnRlbC5jb20+Cj4gW2xpbnV4IGNvbW1pdDogYTUzMjFhZWM2NDEyYjIw YjVhZDE1ZGIyZDZiOTE2YzA1MzQ5ZGJmZl0KPiBbbGludXggY29tbWl0OiBiYjhjMTNkNjFhNjI5 Mjc2YTE2MmMxZDJiMWEyMGE4MTVjYmNmYmI3XQoKSWYgdGhpcyBwYXRjaCBpcyB0aGUgc3F1YXNo IG9mIHR3byBMaW51eCBjb21taXRzLCBwbGVhc2UgcG9zdCB0aGUKcG9ydGVkIHZlcnNpb25zIG9m IHRoZSB0d28gY29tbWl0cyBzZXBhcmF0ZWx5LgoKPiBDYzogS2V2aW4gVGlhbiA8a2V2aW4udGlh bkBpbnRlbC5jb20+Cj4gQ2M6IEp1biBOYWthamltYSA8anVuLm5ha2FqaW1hQGludGVsLmNvbT4K PiBDYzogQXNob2sgUmFqIDxhc2hvay5yYWpAaW50ZWwuY29tPgo+IENjOiBCb3Jpc2xhdiBQZXRr b3YgPGJwQHN1c2UuZGU+Cj4gQ2M6IFRob21hcyBHbGVpeG5lciA8dGdseEBsaW51dHJvbml4LmRl Pgo+IENjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgo+IENjOiBK YW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+Cj4gLS0tCj4gIHhlbi9hcmNoL3g4Ni9taWNy b2NvZGUuYyB8IDEyMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0t LS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgOTcgaW5zZXJ0aW9ucygrKSwgMjYgZGVsZXRpb25zKC0p Cj4gCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9taWNyb2NvZGUuYyBiL3hlbi9hcmNoL3g4 Ni9taWNyb2NvZGUuYwo+IGluZGV4IDBiNDM1ZjQuLmQ1YTJhOTQgMTAwNjQ0Cj4gLS0tIGEveGVu L2FyY2gveDg2L21pY3JvY29kZS5jCj4gKysrIGIveGVuL2FyY2gveDg2L21pY3JvY29kZS5jCj4g QEAgLTIyLDYgKzIyLDcgQEAKPiAgICovCj4gIAo+ICAjaW5jbHVkZSA8eGVuL2NwdS5oPgo+ICsj aW5jbHVkZSA8eGVuL2NwdW1hc2suaD4KPiAgI2luY2x1ZGUgPHhlbi9saWIuaD4KPiAgI2luY2x1 ZGUgPHhlbi9rZXJuZWwuaD4KPiAgI2luY2x1ZGUgPHhlbi9pbml0Lmg+Cj4gQEAgLTMwLDE4ICsz MSwyNSBAQAo+ICAjaW5jbHVkZSA8eGVuL3NtcC5oPgo+ICAjaW5jbHVkZSA8eGVuL3NvZnRpcnEu aD4KPiAgI2luY2x1ZGUgPHhlbi9zcGlubG9jay5oPgo+ICsjaW5jbHVkZSA8eGVuL3N0b3BfbWFj aGluZS5oPgo+ICAjaW5jbHVkZSA8eGVuL3Rhc2tsZXQuaD4KPiAgI2luY2x1ZGUgPHhlbi9ndWVz dF9hY2Nlc3MuaD4KPiAgI2luY2x1ZGUgPHhlbi9lYXJseWNwaW8uaD4KPiArI2luY2x1ZGUgPHhl bi93YXRjaGRvZy5oPgo+ICAKPiArI2luY2x1ZGUgPGFzbS9kZWxheS5oPgo+ICAjaW5jbHVkZSA8 YXNtL21zci5oPgo+ICAjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPgo+ICAjaW5jbHVkZSA8YXNt L3NldHVwLmg+Cj4gICNpbmNsdWRlIDxhc20vbWljcm9jb2RlLmg+Cj4gIAo+ICsvKiBCeSBkZWZh dWx0LCB3YWl0IGZvciAzMDAwMHVzICovCj4gKyNkZWZpbmUgTUlDUk9DT0RFX0RFRkFVTFRfVElN RU9VVF9VUyAzMDAwMAo+ICsKPiAgc3RhdGljIG1vZHVsZV90IF9faW5pdGRhdGEgdWNvZGVfbW9k Owo+ICBzdGF0aWMgc2lnbmVkIGludCBfX2luaXRkYXRhIHVjb2RlX21vZF9pZHg7Cj4gIHN0YXRp YyBib29sX3QgX19pbml0ZGF0YSB1Y29kZV9tb2RfZm9yY2VkOwo+ICtzdGF0aWMgdW5zaWduZWQg aW50IG5yX2NvcmVzOwo+ICAKPiAgLyoKPiAgICogSWYgd2Ugc2NhbiB0aGUgaW5pdHJhbWZzLmNw aW8gZm9yIHRoZSBlYXJseSBtaWNyb2NvZGUgY29kZQo+IEBAIC0xODksOCArMTk3LDcgQEAgc3Rh dGljIERFRklORV9TUElOTE9DSyhtaWNyb2NvZGVfbXV0ZXgpOwo+ICBERUZJTkVfUEVSX0NQVShz dHJ1Y3QgdWNvZGVfY3B1X2luZm8sIHVjb2RlX2NwdV9pbmZvKTsKPiAgCj4gIHN0cnVjdCBtaWNy b2NvZGVfaW5mbyB7Cj4gLSAgICB1bnNpZ25lZCBpbnQgY3B1Owo+IC0gICAgaW50IGVycm9yOwo+ ICsgICAgYXRvbWljX3QgY3B1X2luLCBjcHVfb3V0OwoKQ2FuIHlvdSBtYWtlIHRoaXMgdmFyaWFi bGVzIGdsb2JhbCB0byB0aGUgZmlsZSBhbmQganVzdCByZW1vdmUKbWljcm9jb2RlX2luZm8/Cgo+ ICB9Owo+ICAKPiAgc3RhdGljIHZvaWQgX19taWNyb2NvZGVfZmluaV9jcHUodW5zaWduZWQgaW50 IGNwdSkKPiBAQCAtMjQyLDMxICsyNDksNjIgQEAgc3RhdGljIGludCBtaWNyb2NvZGVfdXBkYXRl X2NwdSh2b2lkKQo+ICAgICAgcmV0dXJuIGVycjsKPiAgfQo+ICAKPiAtc3RhdGljIGxvbmcgZG9f bWljcm9jb2RlX3VwZGF0ZSh2b2lkICpfaW5mbykKPiArLyogV2FpdCBmb3IgYWxsIENQVXMgdG8g cmVuZGV6dm91cyB3aXRoIGEgdGltZW91dCAodXMpICovCj4gK3N0YXRpYyBpbnQgd2FpdF9mb3Jf Y3B1cyhhdG9taWNfdCAqY250LCB1bnNpZ25lZCBpbnQgdGltZW91dCkKPiAgewo+IC0gICAgc3Ry dWN0IG1pY3JvY29kZV9pbmZvICppbmZvID0gX2luZm87Cj4gLSAgICBpbnQgZXJyb3I7Cj4gKyAg ICB1bnNpZ25lZCBpbnQgY3B1cyA9IG51bV9vbmxpbmVfY3B1cygpOwo+ICAKPiAtICAgIEJVR19P TihpbmZvLT5jcHUgIT0gc21wX3Byb2Nlc3Nvcl9pZCgpKTsKPiArICAgIGF0b21pY19pbmMoY250 KTsKPiAgCj4gLSAgICBlcnJvciA9IG1pY3JvY29kZV91cGRhdGVfY3B1KCk7Cj4gLSAgICBpZiAo IGVycm9yICkKPiAtICAgICAgICBpbmZvLT5lcnJvciA9IGVycm9yOwo+ICsgICAgd2hpbGUgKCBh dG9taWNfcmVhZChjbnQpICE9IGNwdXMgKQo+ICsgICAgewo+ICsgICAgICAgIGlmICggdGltZW91 dCA8PSAwICkKPiArICAgICAgICB7Cj4gKyAgICAgICAgICAgIHByaW50aygiVGltZW91dCB3aGVu IHdhaXRpbmcgZm9yIENQVXMgY2FsbGluZyBpblxuIik7Cj4gKyAgICAgICAgICAgIHJldHVybiAt RUJVU1k7Cj4gKyAgICAgICAgfQo+ICsgICAgICAgIHVkZWxheSgxKTsKPiArICAgICAgICB0aW1l b3V0LS07Cj4gKyAgICB9Cj4gIAo+IC0gICAgaW5mby0+Y3B1ID0gY3B1bWFza19uZXh0KGluZm8t PmNwdSwgJmNwdV9vbmxpbmVfbWFwKTsKPiAtICAgIGlmICggaW5mby0+Y3B1IDwgbnJfY3B1X2lk cyApCj4gLSAgICAgICAgcmV0dXJuIGNvbnRpbnVlX2h5cGVyY2FsbF9vbl9jcHUoaW5mby0+Y3B1 LCBkb19taWNyb2NvZGVfdXBkYXRlLCBpbmZvKTsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gIAo+ IC0gICAgZXJyb3IgPSBpbmZvLT5lcnJvcjsKPiAtICAgIHhmcmVlKGluZm8pOwo+IC0gICAgcmV0 dXJuIGVycm9yOwo+ICtzdGF0aWMgaW50IGRvX21pY3JvY29kZV91cGRhdGUodm9pZCAqX2luZm8p Cj4gK3sKPiArICAgIHN0cnVjdCBtaWNyb2NvZGVfaW5mbyAqaW5mbyA9IF9pbmZvOwo+ICsgICAg dW5zaWduZWQgaW50IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKPiArICAgIGludCByZXQ7Cj4g Kwo+ICsgICAgcmV0ID0gd2FpdF9mb3JfY3B1cygmaW5mby0+Y3B1X2luLCBNSUNST0NPREVfREVG QVVMVF9USU1FT1VUX1VTKTsKPiArICAgIGlmICggcmV0ICkKPiArICAgICAgICByZXR1cm4gcmV0 Owo+ICsKPiArICAgIC8qCj4gKyAgICAgKiBJbml0aWF0ZSBhbiB1cGRhdGUgb24gYWxsIHByb2Nl c3NvcnMgd2hpY2ggZG9uJ3QgaGF2ZSBhbiBvbmxpbmUgc2libGluZwo+ICsgICAgICogdGhyZWFk IHdpdGggYSBsb3dlciB0aHJlYWQgaWQuIE90aGVyIHNpYmxpbmcgdGhyZWFkcyBqdXN0IGF3YWl0 IHRoZQo+ICsgICAgICogY29tcGxldGlvbiBvZiBtaWNyb2NvZGUgdXBkYXRlLgo+ICsgICAgICov Cj4gKyAgICBpZiAoIGNwdSA9PSBjcHVtYXNrX2ZpcnN0KHBlcl9jcHUoY3B1X3NpYmxpbmdfbWFz aywgY3B1KSkgKQo+ICsgICAgICAgIHJldCA9IG1pY3JvY29kZV91cGRhdGVfY3B1KCk7Cj4gKyAg ICAvKgo+ICsgICAgICogSW5jcmVhc2UgdGhlIHdhaXQgdGltZW91dCB0byBhIHNhZmUgdmFsdWUg aGVyZSBzaW5jZSB3ZSdyZSBzZXJpYWxpemluZwo+ICsgICAgICogdGhlIG1pY3JvY29kZSB1cGRh dGUgYW5kIHRoYXQgY291bGQgdGFrZSBhIHdoaWxlIG9uIGEgbGFyZ2UgbnVtYmVyIG9mCj4gKyAg ICAgKiBDUFVzLiBBbmQgdGhhdCBpcyBmaW5lIGFzIHRoZSAqYWN0dWFsKiB0aW1lb3V0IHdpbGwg YmUgZGV0ZXJtaW5lZCBieQo+ICsgICAgICogdGhlIGxhc3QgQ1BVIGZpbmlzaGVkIHVwZGF0aW5n IGFuZCB0aHVzIGN1dCBzaG9ydAo+ICsgICAgICovCj4gKyAgICBpZiAoIHdhaXRfZm9yX2NwdXMo JmluZm8tPmNwdV9vdXQsIE1JQ1JPQ09ERV9ERUZBVUxUX1RJTUVPVVRfVVMgKgo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBucl9jb3JlcykgKQoKSXNuJ3QgdGhpcyBs aWtlbHkgdG8gdHJpZ2dlciB0aGUgd2F0Y2hkb2cgb24gYmlnIHN5c3RlbXM/IE9oIEkgc2VlCmJl bG93IHRoYXQgeW91IGRpc2FibGUgdGhlIHdhdGNoZG9nLgoKPiArICAgICAgICBwYW5pYygiVGlt ZW91dCB3aGVuIGZpbmlzaGluZyB1cGRhdGluZyBtaWNyb2NvZGUiKTsKPiArCj4gKyAgICByZXR1 cm4gcmV0Owo+ICB9Cj4gIAo+ICBpbnQgbWljcm9jb2RlX3VwZGF0ZShYRU5fR1VFU1RfSEFORExF X1BBUkFNKGNvbnN0X3ZvaWQpIGJ1ZiwgdW5zaWduZWQgbG9uZyBsZW4pCj4gIHsKPiAgICAgIGlu dCByZXQ7Cj4gLSAgICBzdHJ1Y3QgbWljcm9jb2RlX2luZm8gKmluZm87Cj4gICAgICB1bnNpZ25l ZCBpbnQgY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpOwo+ICsgICAgc3RydWN0IG1pY3JvY29kZV9p bmZvICppbmZvOwo+ICAgICAgc3RydWN0IHVjb2RlX2NwdV9pbmZvICp1Y2kgPSAmcGVyX2NwdSh1 Y29kZV9jcHVfaW5mbywgY3B1KTsKPiAgICAgIHZvaWQgKiBidWZmZXI7Cj4gIAo+IEBAIC0yODMs MTkgKzMyMSwyMCBAQCBpbnQgbWljcm9jb2RlX3VwZGF0ZShYRU5fR1VFU1RfSEFORExFX1BBUkFN KGNvbnN0X3ZvaWQpIGJ1ZiwgdW5zaWduZWQgbG9uZyBsZW4pCj4gIAo+ICAgICAgcmV0ID0gY29w eV9mcm9tX2d1ZXN0KGJ1ZmZlciwgYnVmLCBsZW4pOwo+ICAgICAgaWYgKCByZXQgIT0gMCApCj4g KyAgICAgICAgZ290byBmcmVlOwo+ICsKPiArICAgIC8qIGNwdV9vbmxpbmVfbWFwIG11c3Qgbm90 IGNoYW5nZSBkdXJpbmcgdXBkYXRlICovCj4gKyAgICBpZiAoICFnZXRfY3B1X21hcHMoKSApCj4g ICAgICB7Cj4gLSAgICAgICAgeGZyZWUoaW5mbyk7Cj4gLSAgICAgICAgcmV0dXJuIHJldDsKPiAr ICAgICAgICByZXQgPSAtRUJVU1k7Cj4gKyAgICAgICAgZ290byBmcmVlOwo+ICAgICAgfQo+ICAK PiAgICAgIGlmICggbWljcm9jb2RlX29wcy0+c3RhcnRfdXBkYXRlICkKPiAgICAgIHsKPiAgICAg ICAgICByZXQgPSBtaWNyb2NvZGVfb3BzLT5zdGFydF91cGRhdGUoKTsKPiAgICAgICAgICBpZiAo IHJldCAhPSAwICkKPiAtICAgICAgICB7Cj4gLSAgICAgICAgICAgIHhmcmVlKGluZm8pOwo+IC0g ICAgICAgICAgICByZXR1cm4gcmV0Owo+IC0gICAgICAgIH0KPiArICAgICAgICAgICAgZ290byBw dXQ7Cj4gICAgICB9Cj4gIAo+ICAgICAgc3Bpbl9sb2NrKCZtaWNyb2NvZGVfbXV0ZXgpOwo+IEBA IC0zMTEsMTMgKzM1MCw0NSBAQCBpbnQgbWljcm9jb2RlX3VwZGF0ZShYRU5fR1VFU1RfSEFORExF X1BBUkFNKGNvbnN0X3ZvaWQpIGJ1ZiwgdW5zaWduZWQgbG9uZyBsZW4pCj4gICAgICBpZiAoIHJl dCA8PSAwICkKPiAgICAgIHsKPiAgICAgICAgICBwcmludGsoIk5vIHZhbGlkIG9yIG5ld2VyIG1p Y3JvY29kZSBmb3VuZC4gVXBkYXRlIGFib3J0IVxuIik7Cj4gLSAgICAgICAgcmV0dXJuIC1FSU5W QUw7Cj4gKyAgICAgICAgcmV0ID0gLUVJTlZBTDsKPiArICAgICAgICBnb3RvIHB1dDsKPiAgICAg IH0KPiAgCj4gLSAgICBpbmZvLT5lcnJvciA9IDA7Cj4gLSAgICBpbmZvLT5jcHUgPSBjcHVtYXNr X2ZpcnN0KCZjcHVfb25saW5lX21hcCk7Cj4gKyAgICBhdG9taWNfc2V0KCZpbmZvLT5jcHVfaW4s IDApOwo+ICsgICAgYXRvbWljX3NldCgmaW5mby0+Y3B1X291dCwgMCk7Cj4gKwo+ICsgICAgLyog Q2FsY3VsYXRlIHRoZSBudW1iZXIgb2Ygb25saW5lIENQVSBjb3JlICovCj4gKyAgICBucl9jb3Jl cyA9IDA7Cj4gKyAgICBmb3JfZWFjaF9vbmxpbmVfY3B1KGNwdSkKPiArICAgICAgICBpZiAoIGNw dSA9PSBjcHVtYXNrX2ZpcnN0KHBlcl9jcHUoY3B1X3NpYmxpbmdfbWFzaywgY3B1KSkgKQo+ICsg ICAgICAgICAgICBucl9jb3JlcysrOwo+ICsKPiArICAgIHByaW50aygiJWQgY29yZXMgYXJlIHRv IHVwZGF0ZSBpdHMgbWljcm9jb2RlXG4iLCBucl9jb3Jlcyk7Cj4gIAo+IC0gICAgcmV0dXJuIGNv bnRpbnVlX2h5cGVyY2FsbF9vbl9jcHUoaW5mby0+Y3B1LCBkb19taWNyb2NvZGVfdXBkYXRlLCBp bmZvKTsKPiArICAgIC8qCj4gKyAgICAgKiBXZSBpbnRlbmQgdG8gZGlzYWJsZSBpbnRlcnJ1cHQg Zm9yIGxvbmcgdGltZSwgd2hpY2ggbWF5IGxlYWQgdG8KPiArICAgICAqIHdhdGNoZG9nIHRpbWVv dXQuCj4gKyAgICAgKi8KPiArICAgIHdhdGNoZG9nX2Rpc2FibGUoKTsKPiArICAgIC8qCj4gKyAg ICAgKiBMYXRlIGxvYWRpbmcgZGFuY2UuIFdoeSB0aGUgaGVhdnktaGFuZGVkIHN0b3BfbWFjaGlu ZSBlZmZvcnQ/Cj4gKyAgICAgKgo+ICsgICAgICogLSBIVCBzaWJsaW5ncyBtdXN0IGJlIGlkbGUg YW5kIG5vdCBleGVjdXRlIG90aGVyIGNvZGUgd2hpbGUgdGhlIG90aGVyCj4gKyAgICAgKiAgIHNp YmxpbmcgaXMgbG9hZGluZyBtaWNyb2NvZGUgaW4gb3JkZXIgdG8gYXZvaWQgYW55IG5lZ2F0aXZl Cj4gKyAgICAgKiAgIGludGVyYWN0aW9ucyBjYXVzZSBieSB0aGUgbG9hZGluZy4KCldlbGwsIHRo ZSBIVCBzaWJsaW5ncyB3aWxsIGJlIGV4ZWN1dGluZyBjb2RlLCBzaW5jZSB0aGV5IGFyZSBpbiBh CndoaWxlIGxvb3Agd2FpdGluZyBmb3IgdGhlIG5vbi1zaWJsaW5ncyBjb3JlcyB0byBmaW5pc2gg dXBkYXRpbmcuCgpUaGFua3MsIFJvZ2VyLgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMu eGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3Rp bmZvL3hlbi1kZXZlbA==