From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville Syrjala Subject: [PATCH v2 01/12] drm/i915: Store DIMM rank information as a number Date: Wed, 6 Mar 2019 22:35:40 +0200 Message-ID: <20190306203551.24592-2-ville.syrjala@linux.intel.com> References: <20190306203551.24592-1-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 988D46E1B7 for ; Wed, 6 Mar 2019 20:35:56 +0000 (UTC) In-Reply-To: <20190306203551.24592-1-ville.syrjala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCkxp ZmUgd2lsbCBiZSBlYXNpZXIgbGF0ZXIgaWYgd2UgaGF2ZSB0aGUgcmFua3Mgc3RvcmVkCmFzIGEg YmFyZSBudW1iZXIuCgp2Mjogcy8lZC8ldS8gYWxsIG92ZXIgKEphbmkpCgpSZXZpZXdlZC1ieTog SmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogVmlsbGUg U3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5jIHwgOTIgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0t LS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIHwgMTEgKystLQogMiBmaWxlcyBj aGFuZ2VkLCA0NSBpbnNlcnRpb25zKCspLCA1OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuYwppbmRleCBiNTQ4YzI5MjczOGMuLmVjM2ZiMzQ5ZDQ5ZSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5jCkBAIC0xMDY4LDI4ICsxMDY4LDI4IEBAIHN0YXRpYyB2b2lkIGludGVsX3Nhbml0 aXplX29wdGlvbnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWludGVsX2d2 dF9zYW5pdGl6ZV9vcHRpb25zKGRldl9wcml2KTsKIH0KIAotc3RhdGljIGVudW0gZHJhbV9yYW5r IHNrbF9nZXRfZGltbV9yYW5rKHU4IHNpemUsIHUzMiByYW5rKQorc3RhdGljIGludCBza2xfZ2V0 X2RpbW1fcmFua3ModTggc2l6ZSwgdTMyIHJhbmspCiB7CiAJaWYgKHNpemUgPT0gMCkKLQkJcmV0 dXJuIEk5MTVfRFJBTV9SQU5LX0lOVkFMSUQ7CisJCXJldHVybiAwOwogCWlmIChyYW5rID09IFNL TF9EUkFNX1JBTktfU0lOR0xFKQotCQlyZXR1cm4gSTkxNV9EUkFNX1JBTktfU0lOR0xFOworCQly ZXR1cm4gMTsKIAllbHNlIGlmIChyYW5rID09IFNLTF9EUkFNX1JBTktfRFVBTCkKLQkJcmV0dXJu IEk5MTVfRFJBTV9SQU5LX0RVQUw7CisJCXJldHVybiAyOwogCi0JcmV0dXJuIEk5MTVfRFJBTV9S QU5LX0lOVkFMSUQ7CisJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBib29sCi1za2xfaXNfMTZnYl9k aW1tKGVudW0gZHJhbV9yYW5rIHJhbmssIHU4IHNpemUsIHU4IHdpZHRoKQorc2tsX2lzXzE2Z2Jf ZGltbSh1OCByYW5rcywgdTggc2l6ZSwgdTggd2lkdGgpCiB7Ci0JaWYgKHJhbmsgPT0gSTkxNV9E UkFNX1JBTktfU0lOR0xFICYmIHdpZHRoID09IDggJiYgc2l6ZSA9PSAxNikKKwlpZiAocmFua3Mg PT0gMSAmJiB3aWR0aCA9PSA4ICYmIHNpemUgPT0gMTYpCiAJCXJldHVybiB0cnVlOwotCWVsc2Ug aWYgKHJhbmsgPT0gSTkxNV9EUkFNX1JBTktfRFVBTCAmJiB3aWR0aCA9PSA4ICYmIHNpemUgPT0g MzIpCisJZWxzZSBpZiAocmFua3MgPT0gMiAmJiB3aWR0aCA9PSA4ICYmIHNpemUgPT0gMzIpCiAJ CXJldHVybiB0cnVlOwotCWVsc2UgaWYgKHJhbmsgPT0gU0tMX0RSQU1fUkFOS19TSU5HTEUgJiYg d2lkdGggPT0gMTYgJiYgc2l6ZSA9PSA4KQorCWVsc2UgaWYgKHJhbmtzID09IDEgJiYgd2lkdGgg PT0gMTYgJiYgc2l6ZSA9PSA4KQogCQlyZXR1cm4gdHJ1ZTsKLQllbHNlIGlmIChyYW5rID09IFNL TF9EUkFNX1JBTktfRFVBTCAmJiB3aWR0aCA9PSAxNiAmJiBzaXplID09IDE2KQorCWVsc2UgaWYg KHJhbmtzID09IDIgJiYgd2lkdGggPT0gMTYgJiYgc2l6ZSA9PSAxNikKIAkJcmV0dXJuIHRydWU7 CiAKIAlyZXR1cm4gZmFsc2U7CkBAIC0xMTIwLDI4ICsxMTIwLDI0IEBAIHNrbF9kcmFtX2dldF9j aGFubmVsX2luZm8oc3RydWN0IGRyYW1fY2hhbm5lbF9pbmZvICpjaCwgdTMyIHZhbCkKIAogCXRt cF9sID0gdmFsICYgU0tMX0RSQU1fUkFOS19NQVNLOwogCXRtcF9zID0gc192YWwgJiBTS0xfRFJB TV9SQU5LX01BU0s7Ci0JY2gtPmxfaW5mby5yYW5rID0gc2tsX2dldF9kaW1tX3JhbmsoY2gtPmxf aW5mby5zaXplLCB0bXBfbCk7Ci0JY2gtPnNfaW5mby5yYW5rID0gc2tsX2dldF9kaW1tX3Jhbmso Y2gtPnNfaW5mby5zaXplLCB0bXBfcyk7Ci0KLQlpZiAoY2gtPmxfaW5mby5yYW5rID09IEk5MTVf RFJBTV9SQU5LX0RVQUwgfHwKLQkgICAgY2gtPnNfaW5mby5yYW5rID09IEk5MTVfRFJBTV9SQU5L X0RVQUwpCi0JCWNoLT5yYW5rID0gSTkxNV9EUkFNX1JBTktfRFVBTDsKLQllbHNlIGlmIChjaC0+ bF9pbmZvLnJhbmsgPT0gSTkxNV9EUkFNX1JBTktfU0lOR0xFICYmCi0JCSBjaC0+c19pbmZvLnJh bmsgPT0gSTkxNV9EUkFNX1JBTktfU0lOR0xFKQotCQljaC0+cmFuayA9IEk5MTVfRFJBTV9SQU5L X0RVQUw7CisJY2gtPmxfaW5mby5yYW5rcyA9IHNrbF9nZXRfZGltbV9yYW5rcyhjaC0+bF9pbmZv LnNpemUsIHRtcF9sKTsKKwljaC0+c19pbmZvLnJhbmtzID0gc2tsX2dldF9kaW1tX3JhbmtzKGNo LT5zX2luZm8uc2l6ZSwgdG1wX3MpOworCisJaWYgKGNoLT5sX2luZm8ucmFua3MgPT0gMiB8fCBj aC0+c19pbmZvLnJhbmtzID09IDIpCisJCWNoLT5yYW5rcyA9IDI7CisJZWxzZSBpZiAoY2gtPmxf aW5mby5yYW5rcyA9PSAxICYmIGNoLT5zX2luZm8ucmFua3MgPT0gMSkKKwkJY2gtPnJhbmtzID0g MjsKIAllbHNlCi0JCWNoLT5yYW5rID0gSTkxNV9EUkFNX1JBTktfU0lOR0xFOworCQljaC0+cmFu a3MgPSAxOwogCi0JY2gtPmlzXzE2Z2JfZGltbSA9IHNrbF9pc18xNmdiX2RpbW0oY2gtPmxfaW5m by5yYW5rLCBjaC0+bF9pbmZvLnNpemUsCisJY2gtPmlzXzE2Z2JfZGltbSA9IHNrbF9pc18xNmdi X2RpbW0oY2gtPmxfaW5mby5yYW5rcywgY2gtPmxfaW5mby5zaXplLAogCQkJCQkgICAgY2gtPmxf aW5mby53aWR0aCkgfHwKLQkJCSAgIHNrbF9pc18xNmdiX2RpbW0oY2gtPnNfaW5mby5yYW5rLCBj aC0+c19pbmZvLnNpemUsCisJCQkgICBza2xfaXNfMTZnYl9kaW1tKGNoLT5zX2luZm8ucmFua3Ms IGNoLT5zX2luZm8uc2l6ZSwKIAkJCQkJICAgIGNoLT5zX2luZm8ud2lkdGgpOwogCi0JRFJNX0RF QlVHX0tNUygiKHNpemU6d2lkdGg6cmFuaykgTCglZEdCOlglZDolcykgUyglZEdCOlglZDolcylc biIsCi0JCSAgICAgIGNoLT5sX2luZm8uc2l6ZSwgY2gtPmxfaW5mby53aWR0aCwKLQkJICAgICAg Y2gtPmxfaW5mby5yYW5rID8gImR1YWwiIDogInNpbmdsZSIsCi0JCSAgICAgIGNoLT5zX2luZm8u c2l6ZSwgY2gtPnNfaW5mby53aWR0aCwKLQkJICAgICAgY2gtPnNfaW5mby5yYW5rID8gImR1YWwi IDogInNpbmdsZSIpOworCURSTV9ERUJVR19LTVMoIihzaXplOndpZHRoOnJhbmtzKSBMKCV1R0I6 WCV1OiV1KSBTKCV1R0I6WCV1OiV1KVxuIiwKKwkJICAgICAgY2gtPmxfaW5mby5zaXplLCBjaC0+ bF9pbmZvLndpZHRoLCBjaC0+bF9pbmZvLnJhbmtzLAorCQkgICAgICBjaC0+c19pbmZvLnNpemUs IGNoLT5zX2luZm8ud2lkdGgsIGNoLT5zX2luZm8ucmFua3MpOwogCiAJcmV0dXJuIDA7CiB9CkBA IC0xMTU0LDcgKzExNTAsNyBAQCBpbnRlbF9pc19kcmFtX3N5bW1ldHJpYyh1MzIgdmFsX2NoMCwg dTMyIHZhbF9jaDEsCiAJCShjaDAtPnNfaW5mby5zaXplID09IDAgfHwKIAkJIChjaDAtPmxfaW5m by5zaXplID09IGNoMC0+c19pbmZvLnNpemUgJiYKIAkJICBjaDAtPmxfaW5mby53aWR0aCA9PSBj aDAtPnNfaW5mby53aWR0aCAmJgotCQkgIGNoMC0+bF9pbmZvLnJhbmsgPT0gY2gwLT5zX2luZm8u cmFuaykpKTsKKwkJICBjaDAtPmxfaW5mby5yYW5rcyA9PSBjaDAtPnNfaW5mby5yYW5rcykpKTsK IH0KIAogc3RhdGljIGludApAQCAtMTE4NSwxMyArMTE4MSwxMiBAQCBza2xfZHJhbV9nZXRfY2hh bm5lbHNfaW5mbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJICogd2lsbCBi ZSBzYW1lIGFzIGlmIHNpbmdsZSByYW5rIG1lbW9yeSwgc28gY29uc2lkZXIgc2luZ2xlIHJhbmsK IAkgKiBtZW1vcnkuCiAJICovCi0JaWYgKGNoMC5yYW5rID09IEk5MTVfRFJBTV9SQU5LX1NJTkdM RSB8fAotCSAgICBjaDEucmFuayA9PSBJOTE1X0RSQU1fUkFOS19TSU5HTEUpCi0JCWRyYW1faW5m by0+cmFuayA9IEk5MTVfRFJBTV9SQU5LX1NJTkdMRTsKKwlpZiAoY2gwLnJhbmtzID09IDEgfHwg Y2gxLnJhbmtzID09IDEpCisJCWRyYW1faW5mby0+cmFua3MgPSAxOwogCWVsc2UKLQkJZHJhbV9p bmZvLT5yYW5rID0gbWF4KGNoMC5yYW5rLCBjaDEucmFuayk7CisJCWRyYW1faW5mby0+cmFua3Mg PSBtYXgoY2gwLnJhbmtzLCBjaDEucmFua3MpOwogCi0JaWYgKGRyYW1faW5mby0+cmFuayA9PSBJ OTE1X0RSQU1fUkFOS19JTlZBTElEKSB7CisJaWYgKGRyYW1faW5mby0+cmFua3MgPT0gMCkgewog CQlEUk1fSU5GTygiY291bGRuJ3QgZ2V0IG1lbW9yeSByYW5rIGluZm9ybWF0aW9uXG4iKTsKIAkJ cmV0dXJuIC1FSU5WQUw7CiAJfQpAQCAtMTI2Miw4ICsxMjU3LDcgQEAgYnh0X2dldF9kcmFtX2lu Zm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCSAqIE5vdyByZWFkIGVhY2gg RFVOSVQ4LzkvMTAvMTEgdG8gY2hlY2sgdGhlIHJhbmsgb2YgZWFjaCBkaW1tcy4KIAkgKi8KIAlm b3IgKGkgPSBCWFRfRF9DUl9EUlAwX0RVTklUX1NUQVJUOyBpIDw9IEJYVF9EX0NSX0RSUDBfRFVO SVRfRU5EOyBpKyspIHsKLQkJdTggc2l6ZSwgd2lkdGg7Ci0JCWVudW0gZHJhbV9yYW5rIHJhbms7 CisJCXU4IHNpemUsIHdpZHRoLCByYW5rczsKIAkJdTMyIHRtcDsKIAogCQl2YWwgPSBJOTE1X1JF QUQoQlhUX0RfQ1JfRFJQMF9EVU5JVChpKSk7CkBAIC0xMjc0LDExICsxMjY4LDExIEBAIGJ4dF9n ZXRfZHJhbV9pbmZvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJdG1wID0g dmFsICYgQlhUX0RSQU1fUkFOS19NQVNLOwogCiAJCWlmICh0bXAgPT0gQlhUX0RSQU1fUkFOS19T SU5HTEUpCi0JCQlyYW5rID0gSTkxNV9EUkFNX1JBTktfU0lOR0xFOworCQkJcmFua3MgPSAxOwog CQllbHNlIGlmICh0bXAgPT0gQlhUX0RSQU1fUkFOS19EVUFMKQotCQkJcmFuayA9IEk5MTVfRFJB TV9SQU5LX0RVQUw7CisJCQlyYW5rcyA9IDI7CiAJCWVsc2UKLQkJCXJhbmsgPSBJOTE1X0RSQU1f UkFOS19JTlZBTElEOworCQkJcmFua3MgPSAwOwogCiAJCXRtcCA9IHZhbCAmIEJYVF9EUkFNX1NJ WkVfTUFTSzsKIAkJaWYgKHRtcCA9PSBCWFRfRFJBTV9TSVpFXzRHQikKQEAgLTEyOTYsMjIgKzEy OTAsMjEgQEAgYnh0X2dldF9kcmFtX2luZm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQogCiAJCXRtcCA9ICh2YWwgJiBCWFRfRFJBTV9XSURUSF9NQVNLKSA+PiBCWFRfRFJBTV9X SURUSF9TSElGVDsKIAkJd2lkdGggPSAoMSA8PCB0bXApICogODsKLQkJRFJNX0RFQlVHX0tNUygi ZHJhbSBzaXplOiVkR0Igd2lkdGg6WCVkIHJhbms6JXNcbiIsIHNpemUsCi0JCQkgICAgICB3aWR0 aCwgcmFuayA9PSBJOTE1X0RSQU1fUkFOS19TSU5HTEUgPyAic2luZ2xlIiA6Ci0JCQkgICAgICBy YW5rID09IEk5MTVfRFJBTV9SQU5LX0RVQUwgPyAiZHVhbCIgOiAidW5rbm93biIpOworCQlEUk1f REVCVUdfS01TKCJkcmFtIHNpemU6JXVHQiB3aWR0aDpYJXUgcmFua3M6JXVcbiIsCisJCQkgICAg ICBzaXplLCB3aWR0aCwgcmFua3MpOwogCiAJCS8qCiAJCSAqIElmIGFueSBvZiB0aGUgY2hhbm5l bCBpcyBzaW5nbGUgcmFuayBjaGFubmVsLAogCQkgKiB3b3JzdCBjYXNlIG91dHB1dCB3aWxsIGJl IHNhbWUgYXMgaWYgc2luZ2xlIHJhbmsKIAkJICogbWVtb3J5LCBzbyBjb25zaWRlciBzaW5nbGUg cmFuayBtZW1vcnkuCiAJCSAqLwotCQlpZiAoZHJhbV9pbmZvLT5yYW5rID09IEk5MTVfRFJBTV9S QU5LX0lOVkFMSUQpCi0JCQlkcmFtX2luZm8tPnJhbmsgPSByYW5rOwotCQllbHNlIGlmIChyYW5r ID09IEk5MTVfRFJBTV9SQU5LX1NJTkdMRSkKLQkJCWRyYW1faW5mby0+cmFuayA9IEk5MTVfRFJB TV9SQU5LX1NJTkdMRTsKKwkJaWYgKGRyYW1faW5mby0+cmFua3MgPT0gMCkKKwkJCWRyYW1faW5m by0+cmFua3MgPSByYW5rczsKKwkJZWxzZSBpZiAocmFua3MgPT0gMSkKKwkJCWRyYW1faW5mby0+ cmFua3MgPSAxOwogCX0KIAotCWlmIChkcmFtX2luZm8tPnJhbmsgPT0gSTkxNV9EUkFNX1JBTktf SU5WQUxJRCkgeworCWlmIChkcmFtX2luZm8tPnJhbmtzID09IDApIHsKIAkJRFJNX0lORk8oImNv dWxkbid0IGdldCBtZW1vcnkgcmFuayBpbmZvcm1hdGlvblxuIik7CiAJCXJldHVybiAtRUlOVkFM OwogCX0KQEAgLTEzMjgsNyArMTMyMSw3IEBAIGludGVsX2dldF9kcmFtX2luZm8oc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWludCByZXQ7CiAKIAlkcmFtX2luZm8tPnZhbGlk ID0gZmFsc2U7Ci0JZHJhbV9pbmZvLT5yYW5rID0gSTkxNV9EUkFNX1JBTktfSU5WQUxJRDsKKwlk cmFtX2luZm8tPnJhbmtzID0gMDsKIAlkcmFtX2luZm8tPmJhbmR3aWR0aF9rYnBzID0gMDsKIAlk cmFtX2luZm8tPm51bV9jaGFubmVscyA9IDA7CiAKQEAgLTEzNTgsOSArMTM1MSw4IEBAIGludGVs X2dldF9kcmFtX2luZm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQlzcHJp bnRmKGJhbmR3aWR0aF9zdHIsICJ1bmtub3duIik7CiAJRFJNX0RFQlVHX0tNUygiRFJBTSBiYW5k d2lkdGg6JXMsIHRvdGFsLWNoYW5uZWxzOiAldVxuIiwKIAkJICAgICAgYmFuZHdpZHRoX3N0ciwg ZHJhbV9pbmZvLT5udW1fY2hhbm5lbHMpOwotCURSTV9ERUJVR19LTVMoIkRSQU0gcmFuazogJXMg cmFuayAxNkdCLWRpbW06JXNcbiIsCi0JCSAgICAgIChkcmFtX2luZm8tPnJhbmsgPT0gSTkxNV9E UkFNX1JBTktfRFVBTCkgPwotCQkgICAgICAiZHVhbCIgOiAic2luZ2xlIiwgeWVzbm8oZHJhbV9p bmZvLT5pc18xNmdiX2RpbW0pKTsKKwlEUk1fREVCVUdfS01TKCJEUkFNIHJhbmtzOiAldSwgMTZH Qi1kaW1tOiVzXG4iLAorCQkgICAgICBkcmFtX2luZm8tPnJhbmtzLCB5ZXNubyhkcmFtX2luZm8t PmlzXzE2Z2JfZGltbSkpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IDNi OGUzNTRlYzhiMy4uNmY4ZTk5MTBiYjQ3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTE4 MjYsMTEgKzE4MjYsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7CiAJCWJvb2wgdmFsaWQ7 CiAJCWJvb2wgaXNfMTZnYl9kaW1tOwogCQl1OCBudW1fY2hhbm5lbHM7Ci0JCWVudW0gZHJhbV9y YW5rIHsKLQkJCUk5MTVfRFJBTV9SQU5LX0lOVkFMSUQgPSAwLAotCQkJSTkxNV9EUkFNX1JBTktf U0lOR0xFLAotCQkJSTkxNV9EUkFNX1JBTktfRFVBTAotCQl9IHJhbms7CisJCXU4IHJhbmtzOwog CQl1MzIgYmFuZHdpZHRoX2ticHM7CiAJCWJvb2wgc3ltbWV0cmljX21lbW9yeTsKIAl9IGRyYW1f aW5mbzsKQEAgLTIwNTgsMTAgKzIwNTQsOSBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7CiAK IHN0cnVjdCBkcmFtX2NoYW5uZWxfaW5mbyB7CiAJc3RydWN0IGluZm8gewotCQl1OCBzaXplLCB3 aWR0aDsKLQkJZW51bSBkcmFtX3JhbmsgcmFuazsKKwkJdTggc2l6ZSwgd2lkdGgsIHJhbmtzOwog CX0gbF9pbmZvLCBzX2luZm87Ci0JZW51bSBkcmFtX3JhbmsgcmFuazsKKwl1OCByYW5rczsKIAli b29sIGlzXzE2Z2JfZGltbTsKIH07CiAKLS0gCjIuMTkuMgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4