From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rodrigo Vivi Subject: Re: [PATCH 1/5] drm/i915/bxt: Decode memory bandwidth and parameters Date: Thu, 16 Aug 2018 15:29:47 -0700 Message-ID: <20180816222947.GV3725@intel.com> References: <20180726141410.2185-1-mahesh1.kumar@intel.com> <20180726141410.2185-2-mahesh1.kumar@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id D9D4A6E535 for ; Thu, 16 Aug 2018 22:29:48 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20180726141410.2185-2-mahesh1.kumar@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Mahesh Kumar Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBKdWwgMjYsIDIwMTggYXQgMDc6NDQ6MDZQTSArMDUzMCwgTWFoZXNoIEt1bWFyIHdy b3RlOgo+IFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IHRvIGRlY29kZSBzeXN0ZW0gbWVtb3J5IGJh bmR3aWR0aCBhbmQgb3RoZXIKPiBwYXJhbWV0ZXJzIGZvciBicm94dG9uIHBsYXRmb3JtLCB3aGlj aCB3aWxsIGJlIHVzZWQgZm9yIGFyYml0cmF0ZWQKPiBkaXNwbGF5IG1lbW9yeSBiYW5kd2lkdGgg Y2FsY3VsYXRpb24gaW4gR0VOOSBiYXNlZCBwbGF0Zm9ybXMgYW5kCj4gV00gbGF0ZW5jeSBsZXZl bC0wIFdvcmstYXJvdW5kIGNhbGN1bGF0aW9uIG9uIEdFTjkrIHBsYXRmb3Jtcy4KPiAKPiBDaGFu Z2VzIHNpbmNlIFYxOgo+ICAtIHMvbWVtZGV2X2luZm8vZHJhbV9pbmZvCj4gCj4gU2lnbmVkLW9m Zi1ieTogTWFoZXNoIEt1bWFyIDxtYWhlc2gxLmt1bWFyQGludGVsLmNvbT4KPiAtLS0KPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyB8IDExNiArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggfCAg MTEgKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIHwgIDMwICsrKysrKysr KysrCj4gIDMgZmlsZXMgY2hhbmdlZCwgMTU3IGluc2VydGlvbnMoKykKPiAKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmMKPiBpbmRleCAxOGE0NWU3YTNkN2MuLjE2NjI5NjAxYzlmNCAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuYwo+IEBAIC0xMDcwLDYgKzEwNzAsMTE2IEBAIHN0YXRpYyB2b2lk IGludGVsX3Nhbml0aXplX29wdGlvbnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICAJaW50ZWxfZ3Z0X3Nhbml0aXplX29wdGlvbnMoZGV2X3ByaXYpOwo+ICB9Cj4gIAo+ICtz dGF0aWMgaW50Cj4gK2J4dF9nZXRfZHJhbV9pbmZvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiArewo+ICsJc3RydWN0IGRyYW1faW5mbyAqZHJhbV9pbmZvID0gJmRldl9wcml2 LT5kcmFtX2luZm87Cj4gKwl1MzIgZHJhbV9jaGFubmVsczsKPiArCXUzMiBtZW1fZnJlcV9raHos IHZhbDsKPiArCXU4IG51bV9hY3RpdmVfY2hhbm5lbHM7Cj4gKwlpbnQgaTsKPiArCj4gKwl2YWwg PSBJOTE1X1JFQUQoQlhUX1BfQ1JfTUNfQklPU19SRVFfMF8wXzApOwo+ICsJbWVtX2ZyZXFfa2h6 ID0gRElWX1JPVU5EX1VQKCh2YWwgJiBCWFRfUkVRX0RBVEFfTUFTSykgKgo+ICsJCQkJICAgIEJY VF9NRU1PUllfRlJFUV9NVUxUSVBMSUVSX0haLCAxMDAwKTsKPiArCj4gKwlkcmFtX2NoYW5uZWxz ID0gKHZhbCA+PiBCWFRfRFJBTV9DSEFOTkVMX0FDVElWRV9TSElGVCkgJgo+ICsJCQkJCUJYVF9E UkFNX0NIQU5ORUxfQUNUSVZFX01BU0s7Cj4gKwludW1fYWN0aXZlX2NoYW5uZWxzID0gaHdlaWdo dDMyKGRyYW1fY2hhbm5lbHMpOwo+ICsKPiArCS8qIEVhY2ggYWN0aXZlIGJpdCByZXByZXNlbnRz IDQtYnl0ZSBjaGFubmVsICovCj4gKwlkcmFtX2luZm8tPmJhbmR3aWR0aF9rYnBzID0gKG1lbV9m cmVxX2toeiAqIG51bV9hY3RpdmVfY2hhbm5lbHMgKiA0KTsKPiArCj4gKwlpZiAoZHJhbV9pbmZv LT5iYW5kd2lkdGhfa2JwcyA9PSAwKSB7Cj4gKwkJRFJNX0lORk8oIkNvdWxkbid0IGdldCBzeXN0 ZW0gbWVtb3J5IGJhbmR3aWR0aFxuIik7Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ ICsJLyoKPiArCSAqIE5vdyByZWFkIGVhY2ggRFVOSVQ4LzkvMTAvMTEgdG8gY2hlY2sgdGhlIHJh bmsgb2YgZWFjaCBkaW1tcy4KPiArCSAqLwo+ICsJZm9yIChpID0gQlhUX0RfQ1JfRFJQMF9EVU5J VF9TVEFSVDsgaSA8PSBCWFRfRF9DUl9EUlAwX0RVTklUX0VORDsgaSsrKSB7Cj4gKwkJdTggcmFu aywgc2l6ZSwgd2lkdGg7Cj4gKwkJZW51bSBkcmFtX3JhbmsgY2hfcmFuazsKPiArCj4gKwkJdmFs ID0gSTkxNV9SRUFEKEJYVF9EX0NSX0RSUDBfRFVOSVQoaSkpOwo+ICsJCWlmICh2YWwgPT0gMHhG RkZGRkZGRikKCndoeT8gYW55IHNwZWMgb3IgYW55IGNvbW1lbnQgaGVyZT8KCj4gKwkJCWNvbnRp bnVlOwo+ICsKPiArCQlkcmFtX2luZm8tPm51bV9jaGFubmVscysrOwo+ICsJCXJhbmsgPSB2YWwg JiBCWFRfRFJBTV9SQU5LX01BU0s7Cj4gKwkJd2lkdGggPSAodmFsID4+IEJYVF9EUkFNX1dJRFRI X1NISUZUKSAmIEJYVF9EUkFNX1dJRFRIX01BU0s7Cj4gKwkJc2l6ZSA9ICh2YWwgPj4gQlhUX0RS QU1fU0laRV9TSElGVCkgJiBCWFRfRFJBTV9TSVpFX01BU0s7Cj4gKwkJaWYgKHJhbmsgPT0gQlhU X0RSQU1fUkFOS19TSU5HTEUpCj4gKwkJCWNoX3JhbmsgPSBJOTE1X0RSQU1fUkFOS19TSU5HTEU7 Cj4gKwkJZWxzZSBpZiAocmFuayA9PSBCWFRfRFJBTV9SQU5LX0RVQUwpCj4gKwkJCWNoX3Jhbmsg PSBJOTE1X0RSQU1fUkFOS19EVUFMOwo+ICsJCWVsc2UKPiArCQkJY2hfcmFuayA9IEk5MTVfRFJB TV9SQU5LX0lOVkFMSUQ7Cj4gKwo+ICsJCWlmIChzaXplID09IEJYVF9EUkFNX1NJWkVfNEdCKQo+ ICsJCQlzaXplID0gNDsKPiArCQllbHNlIGlmIChzaXplID09IEJYVF9EUkFNX1NJWkVfNkdCKQo+ ICsJCQlzaXplID0gNjsKPiArCQllbHNlIGlmIChzaXplID09IEJYVF9EUkFNX1NJWkVfOEdCKQo+ ICsJCQlzaXplID0gODsKPiArCQllbHNlIGlmIChzaXplID09IEJYVF9EUkFNX1NJWkVfMTJHQikK PiArCQkJc2l6ZSA9IDEyOwo+ICsJCWVsc2UgaWYgKHNpemUgPT0gQlhUX0RSQU1fU0laRV8xNkdC KQo+ICsJCQlzaXplID0gMTY7Cj4gKwkJZWxzZQo+ICsJCQlzaXplID0gMDsKCnN3aXRjaCBjYXNl PyBvciBkZWZpbmUgdGhlc2UgQlhUX0RSQU1fU0laRSB3aXRoIGVudW1zPwoKPiArCj4gKwkJd2lk dGggPSAoMSA8PCB3aWR0aCkgKiA4Owo+ICsJCURSTV9ERUJVR19LTVMoImRyYW0gc2l6ZTolZEdC IHdpZHRoOlglZCByYW5rOiVzXG4iLCBzaXplLAo+ICsJCQkgICAgICB3aWR0aCwgcmFuayA9PSBC WFRfRFJBTV9SQU5LX1NJTkdMRSA/ICJzaW5nbGUiIDoKPiArCQkJICAgICAgcmFuayA9PSBCWFRf RFJBTV9SQU5LX0RVQUwgPyAiZHVhbCIgOiAidW5rbm93biIpOwo+ICsKPiArCQkvKgo+ICsJCSAq IElmIGFueSBvZiB0aGUgY2hhbm5lbCBpcyBzaW5nbGUgcmFuayBjaGFubmVsLAo+ICsJCSAqIHdv cnN0IGNhc2Ugb3V0cHV0IHdpbGwgYmUgc2FtZSBhcyBpZiBzaW5nbGUgcmFuawo+ICsJCSAqIG1l bW9yeSwgc28gY29uc2lkZXIgc2luZ2xlIHJhbmsgbWVtb3J5Lgo+ICsJCSAqLwo+ICsJCWlmIChk cmFtX2luZm8tPnJhbmsgPT0gSTkxNV9EUkFNX1JBTktfSU5WQUxJRCkKPiArCQkJZHJhbV9pbmZv LT5yYW5rID0gY2hfcmFuazsKPiArCQllbHNlIGlmIChjaF9yYW5rID09IEk5MTVfRFJBTV9SQU5L X1NJTkdMRSkKPiArCQkJZHJhbV9pbmZvLT5yYW5rID0gSTkxNV9EUkFNX1JBTktfU0lOR0xFOwo+ ICsJfQo+ICsKPiArCWlmIChkcmFtX2luZm8tPnJhbmsgPT0gSTkxNV9EUkFNX1JBTktfSU5WQUxJ RCkgewo+ICsJCURSTV9JTkZPKCJjb3VsZG4ndCBnZXQgbWVtb3J5IHJhbmsgaW5mb3JtYXRpb25c biIpOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCWRyYW1faW5mby0+dmFsaWQg PSB0cnVlOwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkCj4gK2ludGVsX2dl dF9kcmFtX2luZm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICt7Cj4gKwlz dHJ1Y3QgZHJhbV9pbmZvICpkcmFtX2luZm8gPSAmZGV2X3ByaXYtPmRyYW1faW5mbzsKPiArCWlu dCByZXQ7Cj4gKwo+ICsJZHJhbV9pbmZvLT52YWxpZCA9IGZhbHNlOwo+ICsJZHJhbV9pbmZvLT5y YW5rID0gSTkxNV9EUkFNX1JBTktfSU5WQUxJRDsKPiArCWRyYW1faW5mby0+YmFuZHdpZHRoX2ti cHMgPSAwOwo+ICsJZHJhbV9pbmZvLT5udW1fY2hhbm5lbHMgPSAwOwo+ICsKPiArCWlmICghSVNf QlJPWFRPTihkZXZfcHJpdikpCj4gKwkJcmV0dXJuOwoKSSB0aGluayB0aGlzIHNob3VsZCBiZSBj aGVja2VkIGVhcmxpZXIgYW5kIHByb2JhYmx5IHdpdGggc29tZQptYWNybyBORUVEX0VEUkFNX0lO Rk8oZGV2X3ByaXYpLi4uIHRvIHByZXBhcmUgZm9yIG90aGVyIHBsYXRmb3JtcwoKPiArCj4gKwly ZXQgPSBieHRfZ2V0X2RyYW1faW5mbyhkZXZfcHJpdik7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVy bjsKPiArCj4gKwlEUk1fREVCVUdfS01TKCJEUkFNIGJhbmR3aWR0aDolZCBLQnBzLCB0b3RhbC1j aGFubmVsczogJXVcbiIsCj4gKwkJICAgICAgZHJhbV9pbmZvLT5iYW5kd2lkdGhfa2JwcywgZHJh bV9pbmZvLT5udW1fY2hhbm5lbHMpOwo+ICsJRFJNX0RFQlVHX0tNUygiRFJBTSByYW5rOiAlcyBy YW5rXG4iLAo+ICsJCSAgICAgIChkcmFtX2luZm8tPnJhbmsgPT0gSTkxNV9EUkFNX1JBTktfRFVB TCkgPwo+ICsJCSAgICAgICJkdWFsIiA6ICJzaW5nbGUiKTsKPiArfQo+ICsKPiAgLyoqCj4gICAq IGk5MTVfZHJpdmVyX2luaXRfaHcgLSBzZXR1cCBzdGF0ZSByZXF1aXJpbmcgZGV2aWNlIGFjY2Vz cwo+ICAgKiBAZGV2X3ByaXY6IGRldmljZSBwcml2YXRlCj4gQEAgLTExODcsNiArMTI5NywxMiBA QCBzdGF0aWMgaW50IGk5MTVfZHJpdmVyX2luaXRfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ICAJCWdvdG8gZXJyX21zaTsKPiAgCj4gIAlpbnRlbF9vcHJlZ2lvbl9zZXR1 cChkZXZfcHJpdik7Cj4gKwkvKgo+ICsJICogRmlsbCB0aGUgZHJhbSBzdHJ1Y3R1cmUgdG8gZ2V0 IHRoZSBzeXN0ZW0gcmF3IGJhbmR3aWR0aCBhbmQKPiArCSAqIGRyYW0gaW5mby4gVGhpcyB3aWxs IGJlIHVzZWQgZm9yIG1lbW9yeSBsYXRlbmN5IGNhbGN1bGF0aW9uLgo+ICsJICovCj4gKwlpbnRl bF9nZXRfZHJhbV9pbmZvKGRldl9wcml2KTsKPiArCj4gIAo+ICAJcmV0dXJuIDA7Cj4gIAo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IDBmNDlmOTk4OGRmYS4uNDZmOTQyZmE3ZDYwIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTE5MDQsNiArMTkwNCwxNyBAQCBzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7Cj4gIAkJYm9vbCBkaXN0cnVzdF9iaW9zX3dtOwo+ICAJfSB3 bTsKPiAgCj4gKwlzdHJ1Y3QgZHJhbV9pbmZvIHsKPiArCQlib29sIHZhbGlkOwoKSSBkb24ndCB0 aGluayB3ZSBuZWVkIHRoaXMgZHVwbGljYXRlZCBhbmQgdW51c2VkICJ2YWxpZCIgYm9vbC4KCj4g KwkJdTggbnVtX2NoYW5uZWxzOwo+ICsJCWVudW0gZHJhbV9yYW5rIHsKPiArCQkJSTkxNV9EUkFN X1JBTktfSU5WQUxJRCA9IDAsCj4gKwkJCUk5MTVfRFJBTV9SQU5LX1NJTkdMRSwKPiArCQkJSTkx NV9EUkFNX1JBTktfRFVBTAo+ICsJCX0gcmFuazsKPiArCQl1MzIgYmFuZHdpZHRoX2ticHM7Cj4g Kwl9IGRyYW1faW5mbzsKPiArCj4gIAlzdHJ1Y3QgaTkxNV9ydW50aW1lX3BtIHJ1bnRpbWVfcG07 Cj4gIAo+ICAJc3RydWN0IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiBpbmRleCA1NTMwYzQ3 MGYzMGQuLjY2OTAwZDAyNzU3MCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3JlZy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+IEBAIC05 NjM0LDYgKzk2MzQsMzYgQEAgZW51bSBza2xfcG93ZXJfZ2F0ZSB7Cj4gICNkZWZpbmUgIERDX1NU QVRFX0RFQlVHX01BU0tfQ09SRVMJKDEgPDwgMCkKPiAgI2RlZmluZSAgRENfU1RBVEVfREVCVUdf TUFTS19NRU1PUllfVVAJKDEgPDwgMSkKPiAgCj4gKyNkZWZpbmUgQlhUX1BfQ1JfTUNfQklPU19S RVFfMF8wXzAJX01NSU8oTUNIQkFSX01JUlJPUl9CQVNFX1NOQiArIDB4NzExNCkKPiArI2RlZmlu ZSAgQlhUX1JFUV9EQVRBX01BU0sJCQkweDNGCj4gKyNkZWZpbmUgIEJYVF9EUkFNX0NIQU5ORUxf QUNUSVZFX1NISUZUCQkxMgo+ICsjZGVmaW5lICBCWFRfRFJBTV9DSEFOTkVMX0FDVElWRV9NQVNL CQkweEYKPiArI2RlZmluZSAgQlhUX01FTU9SWV9GUkVRX01VTFRJUExJRVJfSFoJCTEzMzMzMzMz Mwo+ICsKPiArI2RlZmluZSBCWFRfRF9DUl9EUlAwX0RVTklUOAkJCTB4MTAwMAo+ICsjZGVmaW5l IEJYVF9EX0NSX0RSUDBfRFVOSVQ5CQkJMHgxMjAwCj4gKyNkZWZpbmUgIEJYVF9EX0NSX0RSUDBf RFVOSVRfU1RBUlQJCTgKPiArI2RlZmluZSAgQlhUX0RfQ1JfRFJQMF9EVU5JVF9FTkQJCTExCj4g KyNkZWZpbmUgQlhUX0RfQ1JfRFJQMF9EVU5JVCh4KQlfTU1JTyhNQ0hCQVJfTUlSUk9SX0JBU0Vf U05CICsgXAo+ICsJCQkJICAgICAgX1BJQ0tfRVZFTigoeCkgLSA4LCBCWFRfRF9DUl9EUlAwX0RV TklUOCxcCj4gKwkJCQkJCSBCWFRfRF9DUl9EUlAwX0RVTklUOSkpCj4gKyNkZWZpbmUgIEJYVF9E UkFNX1JBTktfTUFTSwkJCTB4Mwo+ICsjZGVmaW5lICBCWFRfRFJBTV9SQU5LX1NJTkdMRQkJCTB4 MQo+ICsjZGVmaW5lICBCWFRfRFJBTV9SQU5LX0RVQUwJCQkweDMKPiArI2RlZmluZSAgQlhUX0RS QU1fV0lEVEhfTUFTSwkJCTB4Mwo+ICsjZGVmaW5lICBCWFRfRFJBTV9XSURUSF9TSElGVAkJCTQK PiArI2RlZmluZSAgQlhUX0RSQU1fV0lEVEhfWDgJCQkweDAKPiArI2RlZmluZSAgQlhUX0RSQU1f V0lEVEhfWDE2CQkJMHgxCj4gKyNkZWZpbmUgIEJYVF9EUkFNX1dJRFRIX1gzMgkJCTB4Mgo+ICsj ZGVmaW5lICBCWFRfRFJBTV9XSURUSF9YNjQJCQkweDMKPiArI2RlZmluZSAgQlhUX0RSQU1fU0la RV9NQVNLCQkJMHg3Cj4gKyNkZWZpbmUgIEJYVF9EUkFNX1NJWkVfU0hJRlQJCQk2Cj4gKyNkZWZp bmUgIEJYVF9EUkFNX1NJWkVfNEdCCQkJMHgwCj4gKyNkZWZpbmUgIEJYVF9EUkFNX1NJWkVfNkdC CQkJMHgxCj4gKyNkZWZpbmUgIEJYVF9EUkFNX1NJWkVfOEdCCQkJMHgyCj4gKyNkZWZpbmUgIEJY VF9EUkFNX1NJWkVfMTJHQgkJCTB4Mwo+ICsjZGVmaW5lICBCWFRfRFJBTV9TSVpFXzE2R0IJCQkw eDQKCmNvdWxkIHlvdSBwbGVhc2Ugc2hhcmUgb3IgcG9pbnQgbWUgdG8gdGhpcyBzcGVjPwoKPiAr Cj4gIC8qIFBsZWFzZSBzZWUgaHN3X3JlYWRfZGNvbXAoKSBhbmQgaHN3X3dyaXRlX2Rjb21wKCkg YmVmb3JlIHVzaW5nIHRoaXMgcmVnaXN0ZXIsCj4gICAqIHNpbmNlIG9uIEhTVyB3ZSBjYW4ndCB3 cml0ZSB0byBpdCB1c2luZyBJOTE1X1dSSVRFLiAqLwo+ICAjZGVmaW5lIERfQ09NUF9IU1cJCQlf TU1JTyhNQ0hCQVJfTUlSUk9SX0JBU0VfU05CICsgMHg1RjBDKQo+IC0tIAo+IDIuMTYuMgo+IAo+ IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeApfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFp bGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK