From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hans de Goede Subject: Re: [PATCH v2 12/13] drm/i915: Listen for PMIC bus access notifications Date: Sat, 28 Jan 2017 18:39:22 +0100 Message-ID: <520a81ba-d0df-2b8a-2ae9-0ce8d797b592@redhat.com> References: <20170123210958.18410-1-hdegoede@redhat.com> <20170123210958.18410-13-hdegoede@redhat.com> <20170127135255.GT31595@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170127135255.GT31595@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= Cc: Wolfram Sang , "russianneuromancer @ ya . ru" , intel-gfx , linux-i2c@vger.kernel.org, Jarkko Nikula , dri-devel@lists.freedesktop.org, "H . Peter Anvin" , Daniel Vetter , Thomas Gleixner , Andy Shevchenko , Mika Westerberg , Len Brown List-Id: linux-i2c@vger.kernel.org SGksCgpPbiAwMS8yNy8yMDE3IDAyOjUyIFBNLCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6Cj4gT24g TW9uLCBKYW4gMjMsIDIwMTcgYXQgMTA6MDk6NTdQTSArMDEwMCwgSGFucyBkZSBHb2VkZSB3cm90 ZToKPj4gTGlzdGVuIGZvciBQTUlDIGJ1cyBhY2Nlc3Mgbm90aWZpY2F0aW9ucyBhbmQgZ2V0IEZP UkNFV0FLRV9BTEwgd2hpbGUKPj4gdGhlIGJ1cyBpcyBhY2Nlc3NlZCB0byBhdm9pZCBuZWVkaW5n IHRvIGRvIGFueSBmb3JjZXdha2VzLCB3aGljaCBuZWVkCj4+IFBNSUMgYnVzIGFjY2Vzcywgd2hp bGUgdGhlIFBNSUMgYnVzIGlzIGJ1c3k6Cj4+Cj4+IFRoaXMgZml4ZXMgZXJyb3JzIGxpa2UgdGhl c2Ugc2hvd2luZyB1cCBpbiBkbWVzZywgdXN1YWxseSBmb2xsb3dlZAo+PiBieSBhIGdmeCBvciBz eXN0ZW0gZnJlZXplOgo+Pgo+PiBbZHJtOmZ3X2RvbWFpbnNfZ2V0IFtpOTE1XV0gKkVSUk9SKiBy ZW5kZXI6IHRpbWVkIG91dCB3YWl0aW5nIGZvciBmb3JjZXdha2UgYWNrIHJlcXVlc3QuCj4+IFtk cm06ZndfZG9tYWluc19nZXQgW2k5MTVdXSAqTUVESUEqIHJlbmRlcjogdGltZWQgb3V0IHdhaXRp bmcgZm9yIGZvcmNld2FrZSBhY2sgcmVxdWVzdC4KPj4gaTJjX2Rlc2lnbndhcmUgODA4NjIyQzE6 MDY6IHB1bml0IHNlbWFwaG9yZSB0aW1lZCBvdXQsIHJlc2V0dGluZwo+PiBpMmNfZGVzaWdud2Fy ZSA4MDg2MjJDMTowNjogUFVOSVQgU0VNOiAyCj4+IGkyY19kZXNpZ253YXJlIDgwODYyMkMxOjA2 OiBjb3VsZG4ndCBhY3F1aXJlIGJ1cyBvd25lcnNoaXAKPj4KPj4gRG93bnNpZGUgb2YgdGhpcyBh cHByb2FjaCBpcyB0aGF0IGl0IGNhdXNlcyB3YWtldXBzIHdoZW5ldmVyIHRoZSBQTUlDCj4+IGJ1 cyBpcyBhY2Nlc3NlZC4gVW5mb3J0dW5hdGVseSB3ZSBjYW5ub3Qgc2ltcGx5IHdhaXQgZm9yIHRo ZSBQTUlDIGJ1cwo+PiB0byBnbyBpZGxlIHdoZW4gd2UgaGl0IGEgcmFjZSwgYXMgZm9yY2V3YWtl cyBtYXkgYmUgZG9uZSBmcm9tIGludGVycnVwdAo+PiBoYW5kbGVycyB3aGVyZSB3ZSBjYW5ub3Qg c2xlZXAgdG8gd2FpdCBmb3IgdGhlIGkyYyBQTUlDIGJ1cyBhY2Nlc3MgdG8KPj4gZmluaXNoLgo+ Pgo+PiBOb3RlIHRoYXQgdGhlIG5vdGlmaWNhdGlvbnMgYW5kIHRodXMgdGhlIHdha2V1cHMgd2ls bCBvbmx5IGhhcHBlbiBvbgo+PiBiYXl0cmFpbCAvIGNoZXJyeXRyYWlsIGRldmljZXMgdXNpbmcg UE1JQ3Mgd2l0aCBhIHNoYXJlZCBpMmMgYnVzIGZvcgo+PiBQLVVuaXQgYW5kIGhvc3QgUE1JQyBh Y2Nlc3MgKGkyYyBidXNzZXMgd2l0aCBhIF9TRU0gbWV0aG9kIGluIHRoZWlyCj4+IEFQQ0kgbm9k ZSksIGUuZy4gYW4gYXhwMjg4IFBNSUMuCj4+Cj4+IEkgcGxhbiB0byB3cml0ZSBzb21lIHBhdGNo ZXMgZm9yIGRyaXZlcnMgYWNjZXNzaW5nIHRoZSBQTUlDIGJ1cyB0bwo+PiBsaW1pdCB0aGVpciBi dXMgYWNjZXNzZXMgdG8gYSBiYXJlIG1pbmltdW0gKGUuZy4gY2FjaGUgcmVnaXN0ZXJzLCBkbyBu b3QKPj4gdXBkYXRlIGJhdHRlcnkgbGV2ZWwgbW9yZSBvZnRlbiB0aGVuIDQgdGltZXMgYSBtaW51 dGUpLCB0byBsaW1pdCB0aGUKPj4gYW1vdW50IG9mIHdha2V1cHMuCj4+Cj4+IEJ1Z0xpbms6IGh0 dHBzOi8vYnVnemlsbGEua2VybmVsLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MjQxCj4+IFNpZ25l ZC1vZmYtYnk6IEhhbnMgZGUgR29lZGUgPGhkZWdvZWRlQHJlZGhhdC5jb20+Cj4+IFRlc3RlZC1i eTogdGFnb3JlcmVkZHkgPHRhZ29yZS5jaGFuZGFuQGdtYWlsLmNvbT4KPj4gLS0tCj4+IENoYW5n ZXMgaW4gdjI6Cj4+IC1TcGVsbGluZzogUC1Vbml0LCBQTUlDCj4+IC0tLQo+PiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgfCAgMSArCj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF91bmNvcmUuYyB8IDM1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Cj4+ICAyIGZpbGVzIGNoYW5nZWQsIDM2IGluc2VydGlvbnMoKykKPj4KPj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCj4+IGluZGV4IGM3MTczMjkuLjUyZjdkZGUgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaAo+PiBAQCAtNzIxLDYgKzcyMSw3IEBAIHN0cnVjdCBpbnRlbF91bmNvcmUgewo+ PiAgCWNvbnN0IHN0cnVjdCBpbnRlbF9mb3JjZXdha2VfcmFuZ2UgKmZ3X2RvbWFpbnNfdGFibGU7 Cj4+ICAJdW5zaWduZWQgaW50IGZ3X2RvbWFpbnNfdGFibGVfZW50cmllczsKPj4KPj4gKwlzdHJ1 Y3Qgbm90aWZpZXJfYmxvY2sgcG1pY19idXNfYWNjZXNzX25iOwo+PiAgCXN0cnVjdCBpbnRlbF91 bmNvcmVfZnVuY3MgZnVuY3M7Cj4+Cj4+ICAJdW5zaWduZWQgZmlmb19jb3VudDsKPj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMKPj4gaW5kZXggMzc2NzMwNy4uMTc1ZmUwMiAxMDA2NDQK Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMKPj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMKPj4gQEAgLTI1LDYgKzI1LDcgQEAKPj4g ICNpbmNsdWRlICJpbnRlbF9kcnYuaCIKPj4gICNpbmNsdWRlICJpOTE1X3ZncHUuaCIKPj4KPj4g KyNpbmNsdWRlIDxhc20vaW9zZl9tYmkuaD4KPj4gICNpbmNsdWRlIDxsaW51eC9wbV9ydW50aW1l Lmg+Cj4+Cj4+ICAjZGVmaW5lIEZPUkNFV0FLRV9BQ0tfVElNRU9VVF9NUyA1MAo+PiBAQCAtNDI5 LDEyICs0MzAsMTYgQEAgc3RhdGljIHZvaWQgX19pbnRlbF91bmNvcmVfZWFybHlfc2FuaXRpemUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+Pgo+PiAgdm9pZCBpbnRlbF91bmNv cmVfc3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICB7Cj4+ICsJ aW9zZl9tYmlfdW5yZWdpc3Rlcl9wbWljX2J1c19hY2Nlc3Nfbm90aWZpZXIoCj4+ICsJCSZkZXZf cHJpdi0+dW5jb3JlLnBtaWNfYnVzX2FjY2Vzc19uYik7Cj4+ICAJX19pbnRlbF91bmNvcmVfZm9y Y2V3YWtlX3Jlc2V0KGRldl9wcml2LCBmYWxzZSk7Cj4+ICB9Cj4+Cj4+ICB2b2lkIGludGVsX3Vu Y29yZV9yZXN1bWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgewo+PiAg CV9faW50ZWxfdW5jb3JlX2Vhcmx5X3Nhbml0aXplKGRldl9wcml2LCB0cnVlKTsKPj4gKwlpb3Nm X21iaV9yZWdpc3Rlcl9wbWljX2J1c19hY2Nlc3Nfbm90aWZpZXIoCj4+ICsJCSZkZXZfcHJpdi0+ dW5jb3JlLnBtaWNfYnVzX2FjY2Vzc19uYik7Cj4+ICAJaTkxNV9jaGVja19hbmRfY2xlYXJfZmF1 bHRzKGRldl9wcml2KTsKPj4gIH0KPgo+IFRoZSBlYXJseS9ub3JtYWwvbGF0ZSBzdXNwZW5kL3Jl c3VtZSBvcmRlcmluZyBzdGFydHMgdG8gYm90aGVyIG1lIGEKPiBsaXR0bGUgbW9yZSBub3cuIEkg d29uZGVyIGlmIHdlJ3JlIHRvdGFsbHkgc2FmZSB3cnQuIHRoZSBzdXNwZW5kL3Jlc3VtZQo+IG9y ZGVyIG9mIHRoZSBkZXZpY2VzIG5vdy4KCkFzIEkgbWVudGlvbmVkIGJlZm9yZSBJJ20gbm90IHRv dWNoaW5nIHRoZSBleGlzdGluZyBvcmRlcmluZy4gQXMgZm9yIHRoZQpuZXdseSBhZGRlZCBjYWxs cyB0aGUgdW5yZWdpc3RlciBtdXN0IGJlIGRvbmUgYmVmb3JlIGNhbGxpbmcKaW50ZWxfdW5jb3Jl X2ZvcmNld2FrZV9yZXNldCgpIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZQppOTE1X3BtaWNfYnVzX2Fj Y2Vzc19ub3RpZmllcigpIGhhcyBwdXQgYW55IGZvcmNld2FrZXMgaXQgbWF5IGhvbGQuIE5vdGUK dGhpcyBpcyBlbnN1cmVkIHRvIGhhcHBlbiBvbiB1bnJlZ2lzdGVyIGFzIGlvc2ZfbWJpX3VucmVn aXN0ZXJfcG1pY19idXNfYWNjZXNzX25vdGlmaWVyCndhaXRzIGZvciB0aGUgYnVzIHRvIGJlIGlk bGUgYmVmb3JlIHVucmVnaXN0ZXJpbmcgdGhlIG5vdGlmaWVyCihpbiBhIHJhY2UgZnJlZSBtYW5u ZXIgb2YgY291cnNlKS4KCkxpa2V3aXNlIGhlIGlvc2ZfbWJpX3JlZ2lzdGVyX3BtaWNfYnVzX2Fj Y2Vzc19ub3RpZmllcigpIGNhbGwgaXMKZG9uZSBhdCB0aGUgb25seSBwb3NzaWJsZSBzcG90LCBp dCBtdXN0IGJlIGRvbmUgYWZlcgpfX2ludGVsX3VuY29yZV9lYXJseV9zYW5pdGl6ZSBhbmQgSSBh ZGRlZCBhIFdBUk5fT04gdG8gZ2V0IGEgdHJhY2ViYWNrCmFuZCB0aGUgInRpbWVkIG91dCB3YWl0 aW5nIGZvciBmb3JjZXdha2UgYWNrIHJlcXVlc3QiIGVycm9ycyB0aGlzIHBhdGNoCmZpeGVzIGFy ZSB0cmlnZ2VyZWQgKG9uIHN1c3BlbmQvcmVzdW1lKSBmcm9tIGk5MTVfY2hlY2tfYW5kX2NsZWFy X2ZhdWx0cygpLgoKTm90ZSB0YWdvcmVyZWRkeSB3YXMgc2VlaW5nIHRoZXNlIHVuZGVyIGRpZmZl cmVudCBjaXJjdW1zdGFuY2VzLAp0aGlzIGlzIGp1c3QgdGhlIGNvZGUtcGF0aCBJIGhpdCBpbiBt eSB0ZXN0cy4KClNvIHdlIGNhbm5vdCBqdXN0IGRvIGEgaW9zZl9tYmlfcHVuaXRfYWNxdWlyZSBh cm91bmQgdGhlCmk5MTVfY2hlY2tfYW5kX2NsZWFyX2ZhdWx0cygpIGNhbGwsIHRoZXJlIGFyZSBt YW55IG90aGVyIHBsYWNlcwp3aGVyZSBhIGZvcmNld2FrZSBpcyBkb25lIGFuZCB3ZSBjb3VsZCBw b3RlbnRpYWxseSByYWNlLgoKPgo+PiBAQCAtMTM5MCw2ICsxMzk1LDI4IEBAIHN0YXRpYyB2b2lk IGludGVsX3VuY29yZV9md19kb21haW5zX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQo+PiAgCWRldl9wcml2LT51bmNvcmUuZndfZG9tYWluc190YWJsZV9lbnRyaWVzID0g QVJSQVlfU0laRSgoZCkpOyBcCj4+ICB9Cj4+Cj4+ICtzdGF0aWMgaW50IGk5MTVfcG1pY19idXNf YWNjZXNzX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsCj4+ICsJCQkJCSB1bnNp Z25lZCBsb25nIGFjdGlvbiwgdm9pZCAqZGF0YSkKPj4gK3sKPj4gKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBjb250YWluZXJfb2YobmIsCj4+ICsJCQlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSwgdW5jb3JlLnBtaWNfYnVzX2FjY2Vzc19uYik7Cj4+ICsKPj4gKwlzd2l0Y2gg KGFjdGlvbikgewo+PiArCWNhc2UgTUJJX1BNSUNfQlVTX0FDQ0VTU19CRUdJTjoKPj4gKwkJLyoK Pj4gKwkJICogZm9yY2V3YWtlIGFsbCB0byBtYWtlIHN1cmUgdGhhdCB3ZSBkb24ndCBuZWVkIHRv IGZvcmNld2FrZQo+PiArCQkgKiBhbnkgcG93ZXItcGxhbmVzIHdoaWxlIHRoZSBwbWljIGJ1cyBp cyBidXN5Lgo+PiArCQkgKi8KPj4gKwkJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoZGV2X3By aXYsIEZPUkNFV0FLRV9BTEwpOwo+Cj4gSSBtdXN0IHNheSBJIGRvbid0IHJlYWxseSBsaWtlIHRo aXMgc3R1ZmYgYXQgYWxsLiBCdXQgaWYgaXQgaGVscHMgSSBndWVzCj4gd2Ugc2hvdWxkIGdvIGZv ciBpdC4gSSdkIGxpa2UgdG8gc2VlIHRoZSBjb21tZW50IGVsYWJvcmF0ZSBhIGJpdCBtb3JlIG9u Cj4gd2h5IHdlIHRoaW5rIGl0J3MgaXMgbmVlZGVkLgoKT0ssIGhvdyBhYm91dDoKCiAgICAgICAg ICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAgKiBmb3JjZXdha2UgYWxsIG5vdyB0byBtYWtl IHN1cmUgdGhhdCB3ZSBkb24ndCBuZWVkIHRvIGRvIGEKICAgICAgICAgICAgICAgICAgKiBmb3Jj ZXdha2UgbGF0ZXIgd2hpY2ggb24gc3lzdGVtcyB3aGVyZSB0aGlzIG5vdGlmaWVyIGdldHMKICAg ICAgICAgICAgICAgICAgKiBjYWxsZWQgcmVxdWlyZXMgdGhlIHB1bml0IHRvIGFjY2VzcyB0byB0 aGUgc2hhcmVkIHBtaWMgaTJjCiAgICAgICAgICAgICAgICAgICogYnVzLCB3aGljaCB3aWxsIGJl IGJ1c3kgYWZ0ZXIgdGhpcyBub3RpZmljYXRpb24sIGxlYWRpbmcgdG86CiAgICAgICAgICAgICAg ICAgICogInJlbmRlcjogdGltZWQgb3V0IHdhaXRpbmcgZm9yIGZvcmNld2FrZSBhY2sgcmVxdWVz dC4iCiAgICAgICAgICAgICAgICAgICogZXJyb3JzLgogICAgICAgICAgICAgICAgICAqLwoKPwoK Pgo+PiArCQlicmVhazsKPj4gKwljYXNlIE1CSV9QTUlDX0JVU19BQ0NFU1NfRU5EOgo+PiArCQlp bnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7Cj4+ICsJ CWJyZWFrOwo+PiArCX0KPj4gKwo+PiArCXJldHVybiBOT1RJRllfT0s7Cj4+ICt9Cj4+ICsKPj4g IHZvaWQgaW50ZWxfdW5jb3JlX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+PiAgewo+PiAgCWk5MTVfY2hlY2tfdmdwdShkZXZfcHJpdik7Cj4+IEBAIC0xMzk5LDYgKzE0 MjYsOCBAQCB2b2lkIGludGVsX3VuY29yZV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPj4gIAlfX2ludGVsX3VuY29yZV9lYXJseV9zYW5pdGl6ZShkZXZfcHJpdiwgZmFs c2UpOwo+Pgo+PiAgCWRldl9wcml2LT51bmNvcmUudW5jbGFpbWVkX21taW9fY2hlY2sgPSAxOwo+ PiArCWRldl9wcml2LT51bmNvcmUucG1pY19idXNfYWNjZXNzX25iLm5vdGlmaWVyX2NhbGwgPQo+ PiArCQlpOTE1X3BtaWNfYnVzX2FjY2Vzc19ub3RpZmllcjsKPj4KPj4gIAlzd2l0Y2ggKElOVEVM X0lORk8oZGV2X3ByaXYpLT5nZW4pIHsKPj4gIAlkZWZhdWx0Ogo+PiBAQCAtMTQ1OCw2ICsxNDg3 LDkgQEAgdm9pZCBpbnRlbF91bmNvcmVfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4+ICAJCUFTU0lHTl9SRUFEX01NSU9fVkZVTkNTKHZncHUpOwo+PiAgCX0KPj4KPj4g Kwlpb3NmX21iaV9yZWdpc3Rlcl9wbWljX2J1c19hY2Nlc3Nfbm90aWZpZXIoCj4+ICsJCSZkZXZf cHJpdi0+dW5jb3JlLnBtaWNfYnVzX2FjY2Vzc19uYik7Cj4+ICsKPj4gIAlpOTE1X2NoZWNrX2Fu ZF9jbGVhcl9mYXVsdHMoZGV2X3ByaXYpOwo+PiAgfQo+PiAgI3VuZGVmIEFTU0lHTl9XUklURV9N TUlPX1ZGVU5DUwo+PiBAQCAtMTQ2NSw2ICsxNDk3LDkgQEAgdm9pZCBpbnRlbF91bmNvcmVfaW5p dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+Cj4+ICB2b2lkIGludGVsX3Vu Y29yZV9maW5pKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gIHsKPj4gKwlp b3NmX21iaV91bnJlZ2lzdGVyX3BtaWNfYnVzX2FjY2Vzc19ub3RpZmllcigKPj4gKwkJJmRldl9w cml2LT51bmNvcmUucG1pY19idXNfYWNjZXNzX25iKTsKPj4gKwo+PiAgCS8qIFBhcmFub2lhOiBt YWtlIHN1cmUgd2UgaGF2ZSBkaXNhYmxlZCBldmVyeXRoaW5nIGJlZm9yZSB3ZSBleGl0LiAqLwo+ PiAgCWludGVsX3VuY29yZV9zYW5pdGl6ZShkZXZfcHJpdik7Cj4+ICAJX19pbnRlbF91bmNvcmVf Zm9yY2V3YWtlX3Jlc2V0KGRldl9wcml2LCBmYWxzZSk7Cj4+IC0tCj4+IDIuOS4zCj4KCgpSZWdh cmRzLAoKSGFucwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK