From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH i-g-t v6] tests/kms_plane_multiple: CRC based atomic correctness test Date: Tue, 8 Nov 2016 14:14:05 +0100 Message-ID: <7bb64220-4bc7-0e5a-e5cf-ed54bb967d72@linux.intel.com> References: <1478606062-6564-1-git-send-email-mika.kahola@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id A2DEC6E522 for ; Tue, 8 Nov 2016 13:14:07 +0000 (UTC) In-Reply-To: <1478606062-6564-1-git-send-email-mika.kahola@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Mika Kahola , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T3AgMDgtMTEtMTYgb20gMTI6NTQgc2NocmVlZiBNaWthIEthaG9sYToKPiBUaGlzIGlzIGEgdGVz dGNhc2Ugd2l0aCBtdWx0aXBsZSBwbGFuZXMuIFRoZSBpZGVhIGhlcmUgaXMgdGhlIGZvbGxvd2lu Zwo+Cj4gIC0gZHJhdyBhIHVuaWZvcm0gZnJhbWUgd2l0aCBibHVlIGNvbG9yCj4gIC0gZ3JhYiBj cmMgZm9yIHJlZmVyZW5jZQo+ICAtIHB1dCBwbGFuZXMgcmFuZG9tbHkgb24gdG9wIHdpdGggdGhl IHNhbWUgYmx1ZSBjb2xvcgo+ICAtIHB1bmNoIGhvbGVzIHdpdGggYmxhY2sgY29sb3IgaW50byB0 aGUgcHJpbWFyeSBmcmFtZWJ1ZmZlcgo+ICAtIGlkZWFsbHkgdGhlIHBsYW5lcyBzaG91bGQgY292 ZXIgdGhlc2UgaG9sZXMgc28gdGhhdCB0aGUgb3V0cHV0IGlzIHRoZQo+ICAgIGlkZW50aWNhbCB0 byByZWZlcmVuY2UgY3JjCj4gIC0gY29tcG9zaXRlIGFsbCB3aXRoIG9uZSBpb2N0bCBjYWxsCj4g IC0gZ3JhYiBjcmMgYW5kIHZlcmlmeSB0aGF0IHRoZSByZWZlcmVuY2UgY3JjIGlzIGVxdWFsCj4g IC0gcmVwZWF0IHRoaXMgZm9yIHNldmVyYWwgaXRlcmF0aW9ucyB0byBtYXhpbWl6ZSBjb3ZlcmFn ZQo+Cj4gdjY6IFJlbmFtZSB0ZXN0X3BsYW5lcygpIHRvIHByZXBhcmVfcGxhbmVzKCkgKE1hYXJ0 ZW4pCj4gICAgIFdoZW4gZ3JhYmJpbmcgcmVmZXJlbmNlIGNyYywga2VlcCBmcmFtZWJ1ZmZlciBh bmQgY3JjIGVuYWJsZWQgZm9yCj4gICAgIGF0b21pYyBtb2RlIHNldHRpbmcuIChNYWFydGVuKQo+ ICAgICBGaXggY3JjIGNvbGxlY3Rpb24gZm9yIGxlZ2FjeSBtb2Rlc2V0dGluZyAoTWFhcnRlbikK Pgo+IHY1OiBSZW1vdmUgbGltaXQgZm9yIG1heCBudW1iZXIgb2YgaXRlcmF0aW9ucyBhbmQgYWRk IHBvc3NpYmlsaXR5IHRvCj4gICAgIGxvb3AgZm9yZXZlciAoRGFuaWVsKQo+ICAgICBSZW1vdmUg SU5fUkFOR0UoKSBtYWNybyAoTWFhcnRlbikKPiAgICAgUmVtb3ZlIGxvZyBmaWxlIGFuZCBzaG93 IHJhbmRvbSBudW1iZXIgc2VlZCBvbiBzY3JlZW4gaW5zdGVhZCAoTWFhcnRlbikKPiAgICAgU3Bs aXQgbGVnYWN5IGFuZCBhdG9taWMgcGxhbmUgdGVzdHMgb24gb3duIGZ1bmN0aW9ucyAoTWFhcnRl bikKPiAgICAgcmVtb3ZlIHRlc3RfYXRvbWljKCkgZnVuY3Rpb24gYW5kIHBhc3MgdGVzdCBtb2Rl IGluZm8gYXMKPiAgICAgcGFyYW1ldGVyIChNYWFydGVuKQo+ICAgICBVc2UgYmlnZ2VyIHJlY3Rh bmdsZSBzaXplICgyNTZ4MjU2KSBmb3Igbm9uLWN1cnNvciBwbGFuZXMgYW5kCj4gICAgIHNtYWxs ZXIgKDEyOHgxMjgpIHNpemUgZm9yIGN1cnNvciBwbGFuZSAoTWFhcnRlbikKPgo+IHY0OiBGb3Ig YXRvbWljIHRlc3QgZW5hYmxlIGNyYyBjYXB0dXJpbmcgYmVmb3JlIGVudGVyaW5nIGludG8gYQo+ ICAgICBpdGVyYXRpb24gbG9vcC4gQWZ0ZXIgZWFjaCBpdGVyYXRpb24sIGNoZWNrIHRoYXQgcGFn ZSBmbGlwCj4gICAgIGRpZG4ndCB0YWtlIG5vIG1vcmUgdGhhbiAxIHZibGFuaywgZmV0Y2ggYWxs IGNyYydzIGFuZCBjaGVjawo+ICAgICB0aGUgdmFsdWVzLgo+Cj4gICAgIEludHJvZHVjZSBuZXcg Y29tbWFuZCBsaW5lIHBhcmFtZXRlciBmb3IgdGhlIG51bWJlciBvZiBpdGVyYXRpb25zLgo+ICAg ICBUaGUgdGVzdCBydW4gZnJvbSAxIHRvIDI1NiBpdGVyYXRpb25zLgo+Cj4gdjM6IENsZWFudXAg YnkgcmVtb3Zpbmcgc2VwYXJhdGUgcGxhbmUgYXJyYXkKPiAgICAgRm9yIGF0b21pYywgcGFzcyBE Uk1fTU9ERV9QQUdFX0ZMSVBfRVZFTlQKPiAgICAgR3JhYiBjcmMgYnkgdXNpbmcgaWd0X3BpcGVf Y3JjX2dldF9jcmMgaW5zdGVhZCBvZiBpZ3RfcGlwZV9jcmNfY29sbGVjdF9jcmMKPiAgICAgUmVu YW1lIG5wbGFuZXMgdmFyaWFibGUgdG8gbWF4X3BsYW5lcwo+ICAgICBUbyBvcHRpbWl6ZSB0ZXN0 IGV4ZWN1dGlvbiwgcnVuIGl0ZXJhdGlvbnMgYWZ0ZXIgdGhlIG1vZGVzZXQKPgo+IHYyOiBLZWVw IGEgbG9nZmlsZSBvbiByYW5kb20gbnVtYmVyIHNlZWRzIHBlciBzdWJ0ZXN0IHRoYXQgYXJlIG5v dCBza2lwcGVkCj4gICAgIGR1ZSB0byB1bm1ldCB0ZXN0IHJlcXVpcmVtZW50cwo+Cj4gU2lnbmVk LW9mZi1ieTogTWlrYSBLYWhvbGEgPG1pa2Eua2Fob2xhQGludGVsLmNvbT4KPiAtLS0KPiAgdGVz dHMvTWFrZWZpbGUuc291cmNlcyAgICAgfCAgIDEgKwo+ICB0ZXN0cy9rbXNfcGxhbmVfbXVsdGlw bGUuYyB8IDUwMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK PiAgMiBmaWxlcyBjaGFuZ2VkLCA1MDIgaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2 NDQgdGVzdHMva21zX3BsYW5lX211bHRpcGxlLmMKPgo+IGRpZmYgLS1naXQgYS90ZXN0cy9NYWtl ZmlsZS5zb3VyY2VzIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwo+IGluZGV4IDZkMDgxYzMuLmZm ZDU5YzEgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvTWFrZWZpbGUuc291cmNlcwo+ICsrKyBiL3Rlc3Rz L01ha2VmaWxlLnNvdXJjZXMKPiBAQCAtMTA1LDYgKzEwNSw3IEBAIFRFU1RTX3Byb2dzX00gPSBc Cj4gIAlrbXNfcGlwZV9jb2xvciBcCj4gIAlrbXNfcGlwZV9jcmNfYmFzaWMgXAo+ICAJa21zX3Bs YW5lIFwKPiArCWttc19wbGFuZV9tdWx0aXBsZSBcCj4gIAlrbXNfcHJvcGVydGllcyBcCj4gIAlr bXNfcHNyX3NpbmtfY3JjIFwKPiAgCWttc19yZW5kZXIgXAo+IGRpZmYgLS1naXQgYS90ZXN0cy9r bXNfcGxhbmVfbXVsdGlwbGUuYyBiL3Rlc3RzL2ttc19wbGFuZV9tdWx0aXBsZS5jCj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi5mMzE2NDg4Cj4gLS0tIC9kZXYvbnVsbAo+ ICsrKyBiL3Rlc3RzL2ttc19wbGFuZV9tdWx0aXBsZS5jCj4gQEAgLTAsMCArMSw1MDEgQEAKPiAr LyoKPiArICogQ29weXJpZ2h0IMKpIDIwMTYgSW50ZWwgQ29ycG9yYXRpb24KPiArICoKPiArICog UGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJz b24gb2J0YWluaW5nIGEKPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVk IGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPiArICogdG8gZGVhbCBpbiB0 aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRh dGlvbgo+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlz aCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRo ZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4gKyAqIFNvZnR3 YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRp dGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBl cm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKPiArICogcGFyYWdyYXBoKSBzaGFs bCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRo ZQo+ICsgKiBTb2Z0d2FyZS4KPiArICoKPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJB UyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiArICogSU1Q TElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJD SEFOVEFCSUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBO T05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+ICsgKiBUSEUgQVVUSE9SUyBPUiBD T1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhF Ugo+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JU IE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElP TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCj4gKyAqIElO IFRIRSBTT0ZUV0FSRS4KPiArICoKPiArICovCj4gKwo+ICsjaW5jbHVkZSAiaWd0LmgiCj4gKyNp bmNsdWRlICJkcm10ZXN0LmgiCj4gKyNpbmNsdWRlIDxlcnJuby5oPgo+ICsjaW5jbHVkZSA8c3Rk Ym9vbC5oPgo+ICsjaW5jbHVkZSA8c3RkaW8uaD4KPiArI2luY2x1ZGUgPHN0cmluZy5oPgo+ICsj aW5jbHVkZSA8dGltZS5oPgo+ICsKPiArSUdUX1RFU1RfREVTQ1JJUFRJT04oIlRlc3QgYXRvbWlj IG1vZGUgc2V0dGluZyB3aXRoIG11bHRpcGxlIHBsYW5lcyAiKTsKPiArCj4gKyNkZWZpbmUgTUFY X0NSQ1MgICAgICAgICAgMQo+ICsjZGVmaW5lIFNJWkVfUExBTkUgICAgICAyNTYKPiArI2RlZmlu ZSBTSVpFX0NVUlNPUiAgICAgMTI4Cj4gKyNkZWZpbmUgTE9PUF9GT1JFVkVSICAgICAtMQo+ICsK PiArdHlwZWRlZiBzdHJ1Y3Qgewo+ICsJZmxvYXQgcmVkOwo+ICsJZmxvYXQgZ3JlZW47Cj4gKwlm bG9hdCBibHVlOwo+ICt9IGNvbG9yX3Q7Cj4gKwo+ICt0eXBlZGVmIHN0cnVjdCB7Cj4gKwlpbnQg ZHJtX2ZkOwo+ICsJaWd0X2Rpc3BsYXlfdCBkaXNwbGF5Owo+ICsJaWd0X3BpcGVfY3JjX3QgKnBp cGVfY3JjOwo+ICsJaWd0X3BsYW5lX3QgKnBsYW5lW0lHVF9NQVhfUExBTkVTXTsKPiArCXN0cnVj dCBpZ3RfZmIgZmJbSUdUX01BWF9QTEFORVNdOwo+ICt9IGRhdGFfdDsKPiArCj4gK3R5cGVkZWYg c3RydWN0IHsKPiArCWRhdGFfdCAqZGF0YTsKPiArCWlndF9jcmNfdCByZWZlcmVuY2VfY3JjOwo+ ICt9IHRlc3RfcG9zaXRpb25fdDsKPiArCj4gKy8qIENvbW1hbmQgbGluZSBwYXJhbWV0ZXJzLiAq Lwo+ICtzdHJ1Y3Qgewo+ICsJaW50IGl0ZXJhdGlvbnM7Cj4gKwlib29sIHVzZXJfc2VlZDsKPiAr CWludCBzZWVkOwo+ICt9IG9wdCA9IHsKPiArCS5pdGVyYXRpb25zID0gNjQsCj4gKwkudXNlcl9z ZWVkID0gZmFsc2UsCj4gKwkuc2VlZCA9IDEsCj4gK307Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHVp bnQzMl90IHBpcGVfc2VsZWN0KGludCBwaXBlKQo+ICt7Cj4gKwlpZiAocGlwZSA+IDEpCj4gKwkJ cmV0dXJuIHBpcGUgPDwgRFJNX1ZCTEFOS19ISUdIX0NSVENfU0hJRlQ7Cj4gKwllbHNlIGlmIChw aXBlID4gMCkKPiArCQlyZXR1cm4gRFJNX1ZCTEFOS19TRUNPTkRBUlk7Cj4gKwllbHNlCj4gKwkJ cmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgZ2V0X3ZibGFuayhpbnQg ZmQsIGludCBwaXBlLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCj4gK3sKPiArCXVuaW9uIGRybV93YWl0 X3ZibGFuayB2Ymw7Cj4gKwo+ICsJbWVtc2V0KCZ2YmwsIDAsIHNpemVvZih2YmwpKTsKPiArCXZi bC5yZXF1ZXN0LnR5cGUgPSBEUk1fVkJMQU5LX1JFTEFUSVZFIHwgcGlwZV9zZWxlY3QocGlwZSkg fCBmbGFnczsKPiArCWlmIChkcm1Jb2N0bChmZCwgRFJNX0lPQ1RMX1dBSVRfVkJMQU5LLCAmdmJs KSkKPiArCQlyZXR1cm4gMDsKPiArCj4gKwlyZXR1cm4gdmJsLnJlcGx5LnNlcXVlbmNlOwo+ICt9 Cj4gKwo+ICsvKgo+ICsgKiBDb21tb24gY29kZSBhY3Jvc3MgYWxsIHRlc3RzLCBhY3Rpbmcgb24g ZGF0YV90Cj4gKyAqLwo+ICtzdGF0aWMgdm9pZCB0ZXN0X2luaXQoZGF0YV90ICpkYXRhLCBlbnVt IHBpcGUgcGlwZSkKPiArewo+ICsJZGF0YS0+cGlwZV9jcmMgPSBpZ3RfcGlwZV9jcmNfbmV3KHBp cGUsIElOVEVMX1BJUEVfQ1JDX1NPVVJDRV9BVVRPKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQg dGVzdF9maW5pKGRhdGFfdCAqZGF0YSwgaWd0X291dHB1dF90ICpvdXRwdXQsIGludCBtYXhfcGxh bmVzKQo+ICt7Cj4gKwlmb3IgKGludCBpID0gSUdUX1BMQU5FX1BSSU1BUlk7IGkgPD0gbWF4X3Bs YW5lczsgaSsrKQo+ICsJCWlndF9wbGFuZV9zZXRfZmIoZGF0YS0+cGxhbmVbaV0sIE5VTEwpOwo+ ICsKPiArCS8qIHJlc2V0IHRoZSBjb25zdHJhaW50IG9uIHRoZSBwaXBlICovCj4gKwlpZ3Rfb3V0 cHV0X3NldF9waXBlKG91dHB1dCwgUElQRV9BTlkpOwo+ICsKPiArCWlndF9waXBlX2NyY19mcmVl KGRhdGEtPnBpcGVfY3JjKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQKPiArdGVzdF9ncmFiX2Ny YyhkYXRhX3QgKmRhdGEsIGlndF9vdXRwdXRfdCAqb3V0cHV0LCBlbnVtIHBpcGUgcGlwZSwgYm9v bCBhdG9taWMsCj4gKwkgICAgICBjb2xvcl90ICpjb2xvciwgdWludDY0X3QgdGlsaW5nLCBpZ3Rf Y3JjX3QgKmNyYyAvKiBvdXQgKi8pCj4gK3sKPiArCWRybU1vZGVNb2RlSW5mbyAqbW9kZTsKPiAr CWludCByZXQsIG47Cj4gKwo+ICsJaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIHBpcGUpOwo+ ICsKPiArCWRhdGEtPnBsYW5lW0lHVF9QTEFORV9QUklNQVJZXSA9IGlndF9vdXRwdXRfZ2V0X3Bs YW5lKG91dHB1dCwgSUdUX1BMQU5FX1BSSU1BUlkpOwo+ICsKPiArCW1vZGUgPSBpZ3Rfb3V0cHV0 X2dldF9tb2RlKG91dHB1dCk7Cj4gKwo+ICsJaWd0X2NyZWF0ZV9jb2xvcl9mYihkYXRhLT5kcm1f ZmQsIG1vZGUtPmhkaXNwbGF5LCBtb2RlLT52ZGlzcGxheSwKPiArCQkJICAgIERSTV9GT1JNQVRf WFJHQjg4ODgsCj4gKwkJCSAgICBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLAo+ICsJCQkgICAg Y29sb3ItPnJlZCwgY29sb3ItPmdyZWVuLCBjb2xvci0+Ymx1ZSwKPiArCQkJICAgICZkYXRhLT5m YltJR1RfUExBTkVfUFJJTUFSWV0pOwo+ICsKPiArCWlndF9wbGFuZV9zZXRfZmIoZGF0YS0+cGxh bmVbSUdUX1BMQU5FX1BSSU1BUlldLCAmZGF0YS0+ZmJbSUdUX1BMQU5FX1BSSU1BUlldKTsKPiAr Cj4gKwlyZXQgPSBpZ3RfZGlzcGxheV90cnlfY29tbWl0MigmZGF0YS0+ZGlzcGxheSwKPiArCQkJ CSAgICAgIGF0b21pYyA/IENPTU1JVF9BVE9NSUMgOiBDT01NSVRfTEVHQUNZKTsKPiArCWlndF9z a2lwX29uKHJldCAhPSAwKTsKPiArCj4gKwlpZ3RfcGlwZV9jcmNfc3RhcnQoZGF0YS0+cGlwZV9j cmMpOwo+ICsJbiA9IGlndF9waXBlX2NyY19nZXRfY3JjcyhkYXRhLT5waXBlX2NyYywgMSwgJmNy Yyk7Cj4gKwlpZ3RfYXNzZXJ0X2VxKG4sIDEpOwo+ICsKPiArCWlmICghYXRvbWljKSB7Cj4gKwkJ aWd0X3BpcGVfY3JjX3N0b3AoZGF0YS0+cGlwZV9jcmMpOwo+ICsKPiArCQlpZ3RfcGxhbmVfc2V0 X2ZiKGRhdGEtPnBsYW5lW0lHVF9QTEFORV9QUklNQVJZXSwgTlVMTCk7Cj4gKwo+ICsJCXJldCA9 IGlndF9kaXNwbGF5X3RyeV9jb21taXQyKCZkYXRhLT5kaXNwbGF5LCBDT01NSVRfTEVHQUNZKTsK PiArCQlpZ3Rfc2tpcF9vbihyZXQgIT0gMCk7Cj4gKwo+ICsJCWlndF9yZW1vdmVfZmIoZGF0YS0+ ZHJtX2ZkLCAmZGF0YS0+ZmJbSUdUX1BMQU5FX1BSSU1BUlldKTsKPiArCX0KXlRoaXMgY291bGQg dXNlIHNvbWUgZXhwbGFuYXRpb24sIHdoeSBkbyB0aGlzIG9ubHkgZm9yIGxlZ2FjeT8KCkJlc3Qg bm90IG1ha2UgdGhlIGF0b21pYyBhbmQgbGVnYWN5IHRlc3QgZGlmZmVyIHRvbyBtdWNoIGhlcmUu Cgp+TWFhcnRlbgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK