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: Fri, 17 Aug 2018 10:43:37 -0700 Message-ID: <20180817174337.GA8880@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 mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id D56816E68C for ; Fri, 17 Aug 2018 17:43:37 +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 bC0wIFdvcmstYXJvdW5kIGNhbGN1bGF0aW9uIG9uIEdFTjkrIHBsYXRmb3Jtcy4KPgo+IENoYW5n ZXMgc2luY2UgVjE6Cj4gIC0gcy9tZW1kZXZfaW5mby9kcmFtX2luZm8KPgo+IFNpZ25lZC1vZmYt Ynk6IE1haGVzaCBLdW1hciA8bWFoZXNoMS5rdW1hckBpbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgfCAxMTYgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIHwgIDEx ICsrKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCB8ICAzMCArKysrKysrKysr Kwo+ICAzIGZpbGVzIGNoYW5nZWQsIDE1NyBpbnNlcnRpb25zKCspCj4KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmMKPiBpbmRleCAxOGE0NWU3YTNkN2MuLjE2NjI5NjAxYzlmNCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuYwo+IEBAIC0xMDcwLDYgKzEwNzAsMTE2IEBAIHN0YXRpYyB2b2lkIGlu dGVsX3Nhbml0aXplX29wdGlvbnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ ICAJaW50ZWxfZ3Z0X3Nhbml0aXplX29wdGlvbnMoZGV2X3ByaXYpOwo+ICB9Cj4KPiArc3RhdGlj IGludAo+ICtieHRfZ2V0X2RyYW1faW5mbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gK3sKPiArCXN0cnVjdCBkcmFtX2luZm8gKmRyYW1faW5mbyA9ICZkZXZfcHJpdi0+ZHJh bV9pbmZvOwo+ICsJdTMyIGRyYW1fY2hhbm5lbHM7Cj4gKwl1MzIgbWVtX2ZyZXFfa2h6LCB2YWw7 Cj4gKwl1OCBudW1fYWN0aXZlX2NoYW5uZWxzOwo+ICsJaW50IGk7Cj4gKwo+ICsJdmFsID0gSTkx NV9SRUFEKEJYVF9QX0NSX01DX0JJT1NfUkVRXzBfMF8wKTsKPiArCW1lbV9mcmVxX2toeiA9IERJ Vl9ST1VORF9VUCgodmFsICYgQlhUX1JFUV9EQVRBX01BU0spICoKPiArCQkJCSAgICBCWFRfTUVN T1JZX0ZSRVFfTVVMVElQTElFUl9IWiwgMTAwMCk7Cj4gKwo+ICsJZHJhbV9jaGFubmVscyA9ICh2 YWwgPj4gQlhUX0RSQU1fQ0hBTk5FTF9BQ1RJVkVfU0hJRlQpICYKPiArCQkJCQlCWFRfRFJBTV9D SEFOTkVMX0FDVElWRV9NQVNLOwo+ICsJbnVtX2FjdGl2ZV9jaGFubmVscyA9IGh3ZWlnaHQzMihk cmFtX2NoYW5uZWxzKTsKPiArCj4gKwkvKiBFYWNoIGFjdGl2ZSBiaXQgcmVwcmVzZW50cyA0LWJ5 dGUgY2hhbm5lbCAqLwo+ICsJZHJhbV9pbmZvLT5iYW5kd2lkdGhfa2JwcyA9IChtZW1fZnJlcV9r aHogKiBudW1fYWN0aXZlX2NoYW5uZWxzICogNCk7Cj4gKwo+ICsJaWYgKGRyYW1faW5mby0+YmFu ZHdpZHRoX2ticHMgPT0gMCkgewo+ICsJCURSTV9JTkZPKCJDb3VsZG4ndCBnZXQgc3lzdGVtIG1l bW9yeSBiYW5kd2lkdGhcbiIpOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCS8q Cj4gKwkgKiBOb3cgcmVhZCBlYWNoIERVTklUOC85LzEwLzExIHRvIGNoZWNrIHRoZSByYW5rIG9m IGVhY2ggZGltbXMuCj4gKwkgKi8KPiArCWZvciAoaSA9IEJYVF9EX0NSX0RSUDBfRFVOSVRfU1RB UlQ7IGkgPD0gQlhUX0RfQ1JfRFJQMF9EVU5JVF9FTkQ7IGkrKykgewo+ICsJCXU4IHJhbmssIHNp emUsIHdpZHRoOwo+ICsJCWVudW0gZHJhbV9yYW5rIGNoX3Jhbms7Cj4gKwo+ICsJCXZhbCA9IEk5 MTVfUkVBRChCWFRfRF9DUl9EUlAwX0RVTklUKGkpKTsKPiArCQlpZiAodmFsID09IDB4RkZGRkZG RkYpCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQlkcmFtX2luZm8tPm51bV9jaGFubmVscysrOwo+ ICsJCXJhbmsgPSB2YWwgJiBCWFRfRFJBTV9SQU5LX01BU0s7Cj4gKwkJd2lkdGggPSAodmFsID4+ IEJYVF9EUkFNX1dJRFRIX1NISUZUKSAmIEJYVF9EUkFNX1dJRFRIX01BU0s7Cj4gKwkJc2l6ZSA9 ICh2YWwgPj4gQlhUX0RSQU1fU0laRV9TSElGVCkgJiBCWFRfRFJBTV9TSVpFX01BU0s7Cj4gKwkJ aWYgKHJhbmsgPT0gQlhUX0RSQU1fUkFOS19TSU5HTEUpCj4gKwkJCWNoX3JhbmsgPSBJOTE1X0RS QU1fUkFOS19TSU5HTEU7Cj4gKwkJZWxzZSBpZiAocmFuayA9PSBCWFRfRFJBTV9SQU5LX0RVQUwp Cj4gKwkJCWNoX3JhbmsgPSBJOTE1X0RSQU1fUkFOS19EVUFMOwo+ICsJCWVsc2UKPiArCQkJY2hf cmFuayA9IEk5MTVfRFJBTV9SQU5LX0lOVkFMSUQ7Cj4gKwo+ICsJCWlmIChzaXplID09IEJYVF9E UkFNX1NJWkVfNEdCKQo+ICsJCQlzaXplID0gNDsKPiArCQllbHNlIGlmIChzaXplID09IEJYVF9E UkFNX1NJWkVfNkdCKQo+ICsJCQlzaXplID0gNjsKPiArCQllbHNlIGlmIChzaXplID09IEJYVF9E UkFNX1NJWkVfOEdCKQo+ICsJCQlzaXplID0gODsKPiArCQllbHNlIGlmIChzaXplID09IEJYVF9E UkFNX1NJWkVfMTJHQikKPiArCQkJc2l6ZSA9IDEyOwo+ICsJCWVsc2UgaWYgKHNpemUgPT0gQlhU X0RSQU1fU0laRV8xNkdCKQo+ICsJCQlzaXplID0gMTY7Cj4gKwkJZWxzZQo+ICsJCQlzaXplID0g MDsKPiArCj4gKwkJd2lkdGggPSAoMSA8PCB3aWR0aCkgKiA4Owo+ICsJCURSTV9ERUJVR19LTVMo ImRyYW0gc2l6ZTolZEdCIHdpZHRoOlglZCByYW5rOiVzXG4iLCBzaXplLAo+ICsJCQkgICAgICB3 aWR0aCwgcmFuayA9PSBCWFRfRFJBTV9SQU5LX1NJTkdMRSA/ICJzaW5nbGUiIDoKPiArCQkJICAg ICAgcmFuayA9PSBCWFRfRFJBTV9SQU5LX0RVQUwgPyAiZHVhbCIgOiAidW5rbm93biIpOwo+ICsK PiArCQkvKgo+ICsJCSAqIElmIGFueSBvZiB0aGUgY2hhbm5lbCBpcyBzaW5nbGUgcmFuayBjaGFu bmVsLAo+ICsJCSAqIHdvcnN0IGNhc2Ugb3V0cHV0IHdpbGwgYmUgc2FtZSBhcyBpZiBzaW5nbGUg cmFuawo+ICsJCSAqIG1lbW9yeSwgc28gY29uc2lkZXIgc2luZ2xlIHJhbmsgbWVtb3J5Lgo+ICsJ CSAqLwo+ICsJCWlmIChkcmFtX2luZm8tPnJhbmsgPT0gSTkxNV9EUkFNX1JBTktfSU5WQUxJRCkK PiArCQkJZHJhbV9pbmZvLT5yYW5rID0gY2hfcmFuazsKPiArCQllbHNlIGlmIChjaF9yYW5rID09 IEk5MTVfRFJBTV9SQU5LX1NJTkdMRSkKPiArCQkJZHJhbV9pbmZvLT5yYW5rID0gSTkxNV9EUkFN X1JBTktfU0lOR0xFOwo+ICsJfQo+ICsKPiArCWlmIChkcmFtX2luZm8tPnJhbmsgPT0gSTkxNV9E UkFNX1JBTktfSU5WQUxJRCkgewo+ICsJCURSTV9JTkZPKCJjb3VsZG4ndCBnZXQgbWVtb3J5IHJh bmsgaW5mb3JtYXRpb25cbiIpOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCWRy YW1faW5mby0+dmFsaWQgPSB0cnVlOwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyB2 b2lkCj4gK2ludGVsX2dldF9kcmFtX2luZm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJhbV9pbmZvICpkcmFtX2luZm8gPSAmZGV2X3ByaXYtPmRy YW1faW5mbzsKPiArCWludCByZXQ7Cj4gKwo+ICsJZHJhbV9pbmZvLT52YWxpZCA9IGZhbHNlOwo+ ICsJZHJhbV9pbmZvLT5yYW5rID0gSTkxNV9EUkFNX1JBTktfSU5WQUxJRDsKPiArCWRyYW1faW5m by0+YmFuZHdpZHRoX2ticHMgPSAwOwo+ICsJZHJhbV9pbmZvLT5udW1fY2hhbm5lbHMgPSAwOwo+ ICsKPiArCWlmICghSVNfQlJPWFRPTihkZXZfcHJpdikpCj4gKwkJcmV0dXJuOwo+ICsKPiArCXJl dCA9IGJ4dF9nZXRfZHJhbV9pbmZvKGRldl9wcml2KTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJu Owo+ICsKPiArCURSTV9ERUJVR19LTVMoIkRSQU0gYmFuZHdpZHRoOiVkIEtCcHMsIHRvdGFsLWNo YW5uZWxzOiAldVxuIiwKPiArCQkgICAgICBkcmFtX2luZm8tPmJhbmR3aWR0aF9rYnBzLCBkcmFt X2luZm8tPm51bV9jaGFubmVscyk7Cj4gKwlEUk1fREVCVUdfS01TKCJEUkFNIHJhbms6ICVzIHJh bmtcbiIsCj4gKwkJICAgICAgKGRyYW1faW5mby0+cmFuayA9PSBJOTE1X0RSQU1fUkFOS19EVUFM KSA/Cj4gKwkJICAgICAgImR1YWwiIDogInNpbmdsZSIpOwo+ICt9Cj4gKwo+ICAvKioKPiAgICog aTkxNV9kcml2ZXJfaW5pdF9odyAtIHNldHVwIHN0YXRlIHJlcXVpcmluZyBkZXZpY2UgYWNjZXNz Cj4gICAqIEBkZXZfcHJpdjogZGV2aWNlIHByaXZhdGUKPiBAQCAtMTE4Nyw2ICsxMjk3LDEyIEBA IHN0YXRpYyBpbnQgaTkxNV9kcml2ZXJfaW5pdF9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCj4gIAkJZ290byBlcnJfbXNpOwo+Cj4gIAlpbnRlbF9vcHJlZ2lvbl9zZXR1cChk ZXZfcHJpdik7Cj4gKwkvKgo+ICsJICogRmlsbCB0aGUgZHJhbSBzdHJ1Y3R1cmUgdG8gZ2V0IHRo ZSBzeXN0ZW0gcmF3IGJhbmR3aWR0aCBhbmQKPiArCSAqIGRyYW0gaW5mby4gVGhpcyB3aWxsIGJl IHVzZWQgZm9yIG1lbW9yeSBsYXRlbmN5IGNhbGN1bGF0aW9uLgo+ICsJICovCj4gKwlpbnRlbF9n ZXRfZHJhbV9pbmZvKGRldl9wcml2KTsKPiArCj4KPiAgCXJldHVybiAwOwo+Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCj4gaW5kZXggMGY0OWY5OTg4ZGZhLi40NmY5NDJmYTdkNjAgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMTkwNCw2ICsxOTA0LDE3IEBAIHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlIHsKPiAgCQlib29sIGRpc3RydXN0X2Jpb3Nfd207Cj4gIAl9IHdtOwo+Cj4g KwlzdHJ1Y3QgZHJhbV9pbmZvIHsKPiArCQlib29sIHZhbGlkOwo+ICsJCXU4IG51bV9jaGFubmVs czsKPiArCQllbnVtIGRyYW1fcmFuayB7Cj4gKwkJCUk5MTVfRFJBTV9SQU5LX0lOVkFMSUQgPSAw LAo+ICsJCQlJOTE1X0RSQU1fUkFOS19TSU5HTEUsCj4gKwkJCUk5MTVfRFJBTV9SQU5LX0RVQUwK PiArCQl9IHJhbms7Cj4gKwkJdTMyIGJhbmR3aWR0aF9rYnBzOwo+ICsJfSBkcmFtX2luZm87Cj4g Kwo+ICAJc3RydWN0IGk5MTVfcnVudGltZV9wbSBydW50aW1lX3BtOwo+Cj4gIAlzdHJ1Y3Qgewo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+IGluZGV4IDU1MzBjNDcwZjMwZC4uNjY5MDBkMDI3NTcw IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gQEAgLTk2MzQsNiArOTYzNCwzNiBAQCBl bnVtIHNrbF9wb3dlcl9nYXRlIHsKPiAgI2RlZmluZSAgRENfU1RBVEVfREVCVUdfTUFTS19DT1JF UwkoMSA8PCAwKQo+ICAjZGVmaW5lICBEQ19TVEFURV9ERUJVR19NQVNLX01FTU9SWV9VUAkoMSA8 PCAxKQo+Cj4gKyNkZWZpbmUgQlhUX1BfQ1JfTUNfQklPU19SRVFfMF8wXzAJX01NSU8oTUNIQkFS X01JUlJPUl9CQVNFX1NOQiArIDB4NzExNCkKPiArI2RlZmluZSAgQlhUX1JFUV9EQVRBX01BU0sJ CQkweDNGCj4gKyNkZWZpbmUgIEJYVF9EUkFNX0NIQU5ORUxfQUNUSVZFX1NISUZUCQkxMgo+ICsj ZGVmaW5lICBCWFRfRFJBTV9DSEFOTkVMX0FDVElWRV9NQVNLCQkweEYKClRoYW5rcyBhIGxvdCBm b3IgdGhlIHNwZWMgcG9pbnRlcnMuIEJ1dCBub3cgdGhhdCBJIG9wZW5lZCBpdCBhbmQKc3RhcnRl ZCB0byByZWFkaW5nIGhlcmUgaXQgd2FzIGhhcmQgdG8gcmV2aWV3IGFuZCBJIG5vdGljZWQgdGhp cwppcyBiZWNhdXNlIHRoZSB3YXkgdGhhdCBpdCBpcyBkZWZpbmVkIGhlcmUgZG9lc24ndCByZXNw ZWN0IG91cgpzdGFuZGFyZHMgYXMgZG9jdW1lbnRlZDoKCiIKKiBGb3IgYml0IGZpZWxkcywgZGVm aW5lIGEgYGBfTUFTS2BgIGFuZCBhIGBgX1NISUZUYGAgbWFjcm8uIERlZmluZSBiaXQgZmllbGQK ICogY29udGVudHMgc28gdGhhdCB0aGV5IGFyZSBhbHJlYWR5IHNoaWZ0ZWQgaW4gcGxhY2UsIGFu ZCBjYW4gYmUgZGlyZWN0bHkKICogT1InZC4KIgoKU28gcGxlYXNlIHByb3ZpZGUgYSBuZXcgdmVy c2lvbiB0aGF0IGZvbGxvd3MgdGhlIHJ1bGVzIGFuZAp0aGF0IGl0IGlzIGVhc2llciB0byByZXZp ZXcuIEFuZCBzb3JyeSBmb3Igbm90IG5vdGljaW5nIHRoaXMKb24geWVzdGVyZGF5J3MgcmV2aWV3 LgoKPiArI2RlZmluZSAgQlhUX01FTU9SWV9GUkVRX01VTFRJUExJRVJfSFoJCTEzMzMzMzMzMwo+ ICsKPiArI2RlZmluZSBCWFRfRF9DUl9EUlAwX0RVTklUOAkJCTB4MTAwMAo+ICsjZGVmaW5lIEJY VF9EX0NSX0RSUDBfRFVOSVQ5CQkJMHgxMjAwCj4gKyNkZWZpbmUgIEJYVF9EX0NSX0RSUDBfRFVO SVRfU1RBUlQJCTgKPiArI2RlZmluZSAgQlhUX0RfQ1JfRFJQMF9EVU5JVF9FTkQJCTExCj4gKyNk ZWZpbmUgQlhUX0RfQ1JfRFJQMF9EVU5JVCh4KQlfTU1JTyhNQ0hCQVJfTUlSUk9SX0JBU0VfU05C ICsgXAo+ICsJCQkJICAgICAgX1BJQ0tfRVZFTigoeCkgLSA4LCBCWFRfRF9DUl9EUlAwX0RVTklU OCxcCj4gKwkJCQkJCSBCWFRfRF9DUl9EUlAwX0RVTklUOSkpCj4gKyNkZWZpbmUgIEJYVF9EUkFN X1JBTktfTUFTSwkJCTB4Mwo+ICsjZGVmaW5lICBCWFRfRFJBTV9SQU5LX1NJTkdMRQkJCTB4MQo+ ICsjZGVmaW5lICBCWFRfRFJBTV9SQU5LX0RVQUwJCQkweDMKPiArI2RlZmluZSAgQlhUX0RSQU1f V0lEVEhfTUFTSwkJCTB4Mwo+ICsjZGVmaW5lICBCWFRfRFJBTV9XSURUSF9TSElGVAkJCTQKPiAr I2RlZmluZSAgQlhUX0RSQU1fV0lEVEhfWDgJCQkweDAKPiArI2RlZmluZSAgQlhUX0RSQU1fV0lE VEhfWDE2CQkJMHgxCj4gKyNkZWZpbmUgIEJYVF9EUkFNX1dJRFRIX1gzMgkJCTB4Mgo+ICsjZGVm aW5lICBCWFRfRFJBTV9XSURUSF9YNjQJCQkweDMKPiArI2RlZmluZSAgQlhUX0RSQU1fU0laRV9N QVNLCQkJMHg3Cj4gKyNkZWZpbmUgIEJYVF9EUkFNX1NJWkVfU0hJRlQJCQk2Cj4gKyNkZWZpbmUg IEJYVF9EUkFNX1NJWkVfNEdCCQkJMHgwCj4gKyNkZWZpbmUgIEJYVF9EUkFNX1NJWkVfNkdCCQkJ MHgxCj4gKyNkZWZpbmUgIEJYVF9EUkFNX1NJWkVfOEdCCQkJMHgyCj4gKyNkZWZpbmUgIEJYVF9E UkFNX1NJWkVfMTJHQgkJCTB4Mwo+ICsjZGVmaW5lICBCWFRfRFJBTV9TSVpFXzE2R0IJCQkweDQK PiArCj4gIC8qIFBsZWFzZSBzZWUgaHN3X3JlYWRfZGNvbXAoKSBhbmQgaHN3X3dyaXRlX2Rjb21w KCkgYmVmb3JlIHVzaW5nIHRoaXMgcmVnaXN0ZXIsCj4gICAqIHNpbmNlIG9uIEhTVyB3ZSBjYW4n dCB3cml0ZSB0byBpdCB1c2luZyBJOTE1X1dSSVRFLiAqLwo+ICAjZGVmaW5lIERfQ09NUF9IU1cJ CQlfTU1JTyhNQ0hCQVJfTUlSUk9SX0JBU0VfU05CICsgMHg1RjBDKQo+IC0tCj4gMi4xNi4yCj4K PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVs LWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==