From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lucas Stach Subject: [PATCH v2 1/8] drm/etnaviv: split out cmdbuf mapping into address space Date: Wed, 17 Apr 2019 15:50:16 +0200 Message-ID: <20190417135023.26977-2-l.stach@pengutronix.de> References: <20190417135023.26977-1-l.stach@pengutronix.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by gabe.freedesktop.org (Postfix) with ESMTPS id EB1406E052 for ; Wed, 17 Apr 2019 13:50:28 +0000 (UTC) In-Reply-To: <20190417135023.26977-1-l.stach@pengutronix.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: etnaviv@lists.freedesktop.org Cc: patchwork-lst@pengutronix.de, kernel@pengutronix.de, dri-devel@lists.freedesktop.org, Russell King List-Id: dri-devel@lists.freedesktop.org VGhpcyBhbGxvd3MgdG8gZGVjb3VwbGUgdGhlIGNtZGJ1ZiBzdWJhbGxvY2F0b3IgY3JlYXRlIGFu ZCBtYXBwaW5nCnRoZSByZWdpb24gaW50byB0aGUgR1BVIGFkZHJlc3Mgc3BhY2UuIEFsbG93aW5n IG11bHRpcGxlIEFTIHRvIHNoYXJlCmEgc2luZ2xlIGNtZGJ1ZiBzdWJhbGxvYy4KClNpZ25lZC1v ZmYtYnk6IEx1Y2FzIFN0YWNoIDxsLnN0YWNoQHBlbmd1dHJvbml4LmRlPgotLS0KIGRyaXZlcnMv Z3B1L2RybS9ldG5hdml2L2V0bmF2aXZfYnVmZmVyLmMgfCAyMyArKysrLS0tCiBkcml2ZXJzL2dw dS9kcm0vZXRuYXZpdi9ldG5hdml2X2NtZGJ1Zi5jIHwgNDIgKysrKysrKy0tLS0tLQogZHJpdmVy cy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9jbWRidWYuaCB8IDEyICsrKy0KIGRyaXZlcnMvZ3B1 L2RybS9ldG5hdml2L2V0bmF2aXZfZHVtcC5jICAgfCAgNiArLQogZHJpdmVycy9ncHUvZHJtL2V0 bmF2aXYvZXRuYXZpdl9ncHUuYyAgICB8IDI2ICsrKysrKy0tCiBkcml2ZXJzL2dwdS9kcm0vZXRu YXZpdi9ldG5hdml2X2dwdS5oICAgIHwgIDMgKy0KIGRyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0 bmF2aXZfbW11LmMgICAgfCA3OCArKysrKysrKysrKysrLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1 L2RybS9ldG5hdml2L2V0bmF2aXZfbW11LmggICAgfCAxMiArKy0tCiA4IGZpbGVzIGNoYW5nZWQs IDEyMyBpbnNlcnRpb25zKCspLCA3OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2X2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2V0bmF2 aXYvZXRuYXZpdl9idWZmZXIuYwppbmRleCAxNjBjZTNjMDYwYTUuLjQwMWFkZjkwNWQ5NSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9idWZmZXIuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2X2J1ZmZlci5jCkBAIC0xMTYsNyArMTE2LDgg QEAgc3RhdGljIHZvaWQgZXRuYXZpdl9idWZmZXJfZHVtcChzdHJ1Y3QgZXRuYXZpdl9ncHUgKmdw dSwKIAl1MzIgKnB0ciA9IGJ1Zi0+dmFkZHIgKyBvZmY7CiAKIAlkZXZfaW5mbyhncHUtPmRldiwg InZpcnQgJXAgcGh5cyAweCUwOHggZnJlZSAweCUwOHhcbiIsCi0JCQlwdHIsIGV0bmF2aXZfY21k YnVmX2dldF92YShidWYpICsgb2ZmLCBzaXplIC0gbGVuICogNCAtIG9mZik7CisJCQlwdHIsIGV0 bmF2aXZfY21kYnVmX2dldF92YShidWYsICZncHUtPmNtZGJ1Zl9tYXBwaW5nKSArCisJCQlvZmYs IHNpemUgLSBsZW4gKiA0IC0gb2ZmKTsKIAogCXByaW50X2hleF9kdW1wKEtFUk5fSU5GTywgImNt ZCAiLCBEVU1QX1BSRUZJWF9PRkZTRVQsIDE2LCA0LAogCQkJcHRyLCBsZW4gKiA0LCAwKTsKQEAg LTE0OSw3ICsxNTAsOCBAQCBzdGF0aWMgdTMyIGV0bmF2aXZfYnVmZmVyX3Jlc2VydmUoc3RydWN0 IGV0bmF2aXZfZ3B1ICpncHUsCiAJaWYgKGJ1ZmZlci0+dXNlcl9zaXplICsgY21kX2R3b3JkcyAq IHNpemVvZih1NjQpID4gYnVmZmVyLT5zaXplKQogCQlidWZmZXItPnVzZXJfc2l6ZSA9IDA7CiAK LQlyZXR1cm4gZXRuYXZpdl9jbWRidWZfZ2V0X3ZhKGJ1ZmZlcikgKyBidWZmZXItPnVzZXJfc2l6 ZTsKKwlyZXR1cm4gZXRuYXZpdl9jbWRidWZfZ2V0X3ZhKGJ1ZmZlciwgJmdwdS0+Y21kYnVmX21h cHBpbmcpICsKKwkgICAgICAgYnVmZmVyLT51c2VyX3NpemU7CiB9CiAKIHUxNiBldG5hdml2X2J1 ZmZlcl9pbml0KHN0cnVjdCBldG5hdml2X2dwdSAqZ3B1KQpAQCAtMTYyLDggKzE2NCw4IEBAIHUx NiBldG5hdml2X2J1ZmZlcl9pbml0KHN0cnVjdCBldG5hdml2X2dwdSAqZ3B1KQogCWJ1ZmZlci0+ dXNlcl9zaXplID0gMDsKIAogCUNNRF9XQUlUKGJ1ZmZlcik7Ci0JQ01EX0xJTksoYnVmZmVyLCAy LCBldG5hdml2X2NtZGJ1Zl9nZXRfdmEoYnVmZmVyKSArCi0JCSBidWZmZXItPnVzZXJfc2l6ZSAt IDQpOworCUNNRF9MSU5LKGJ1ZmZlciwgMiwgZXRuYXZpdl9jbWRidWZfZ2V0X3ZhKGJ1ZmZlciwg JmdwdS0+Y21kYnVmX21hcHBpbmcpCisJCSArIGJ1ZmZlci0+dXNlcl9zaXplIC0gNCk7CiAKIAly ZXR1cm4gYnVmZmVyLT51c2VyX3NpemUgLyA4OwogfQpAQCAtMjg5LDggKzI5MSw4IEBAIHZvaWQg ZXRuYXZpdl9zeW5jX3BvaW50X3F1ZXVlKHN0cnVjdCBldG5hdml2X2dwdSAqZ3B1LCB1bnNpZ25l ZCBpbnQgZXZlbnQpCiAKIAkvKiBBcHBlbmQgd2FpdGxpbmsgKi8KIAlDTURfV0FJVChidWZmZXIp OwotCUNNRF9MSU5LKGJ1ZmZlciwgMiwgZXRuYXZpdl9jbWRidWZfZ2V0X3ZhKGJ1ZmZlcikgKwot CQkJICAgIGJ1ZmZlci0+dXNlcl9zaXplIC0gNCk7CisJQ01EX0xJTksoYnVmZmVyLCAyLCBldG5h dml2X2NtZGJ1Zl9nZXRfdmEoYnVmZmVyLCAmZ3B1LT5jbWRidWZfbWFwcGluZykKKwkJICsgYnVm ZmVyLT51c2VyX3NpemUgLSA0KTsKIAogCS8qCiAJICogS2ljayBvZmYgdGhlICdzeW5jIHBvaW50 JyBjb21tYW5kIGJ5IHJlcGxhY2luZyB0aGUgcHJldmlvdXMKQEAgLTMxNyw3ICszMTksNyBAQCB2 b2lkIGV0bmF2aXZfYnVmZmVyX3F1ZXVlKHN0cnVjdCBldG5hdml2X2dwdSAqZ3B1LCB1MzIgZXhl Y19zdGF0ZSwKIAlpZiAoZHJtX2RlYnVnICYgRFJNX1VUX0RSSVZFUikKIAkJZXRuYXZpdl9idWZm ZXJfZHVtcChncHUsIGJ1ZmZlciwgMCwgMHg1MCk7CiAKLQlsaW5rX3RhcmdldCA9IGV0bmF2aXZf Y21kYnVmX2dldF92YShjbWRidWYpOworCWxpbmtfdGFyZ2V0ID0gZXRuYXZpdl9jbWRidWZfZ2V0 X3ZhKGNtZGJ1ZiwgJmdwdS0+Y21kYnVmX21hcHBpbmcpOwogCWxpbmtfZHdvcmRzID0gY21kYnVm LT5zaXplIC8gODsKIAogCS8qCkBAIC00MTAsMTIgKzQxMiwxMyBAQCB2b2lkIGV0bmF2aXZfYnVm ZmVyX3F1ZXVlKHN0cnVjdCBldG5hdml2X2dwdSAqZ3B1LCB1MzIgZXhlY19zdGF0ZSwKIAlDTURf TE9BRF9TVEFURShidWZmZXIsIFZJVlNfR0xfRVZFTlQsIFZJVlNfR0xfRVZFTlRfRVZFTlRfSUQo ZXZlbnQpIHwKIAkJICAgICAgIFZJVlNfR0xfRVZFTlRfRlJPTV9QRSk7CiAJQ01EX1dBSVQoYnVm ZmVyKTsKLQlDTURfTElOSyhidWZmZXIsIDIsIGV0bmF2aXZfY21kYnVmX2dldF92YShidWZmZXIp ICsKLQkJCSAgICBidWZmZXItPnVzZXJfc2l6ZSAtIDQpOworCUNNRF9MSU5LKGJ1ZmZlciwgMiwg ZXRuYXZpdl9jbWRidWZfZ2V0X3ZhKGJ1ZmZlciwgJmdwdS0+Y21kYnVmX21hcHBpbmcpCisJCSAr IGJ1ZmZlci0+dXNlcl9zaXplIC0gNCk7CiAKIAlpZiAoZHJtX2RlYnVnICYgRFJNX1VUX0RSSVZF UikKIAkJcHJfaW5mbygic3RyZWFtIGxpbmsgdG8gMHglMDh4IEAgMHglMDh4ICVwXG4iLAotCQkJ cmV0dXJuX3RhcmdldCwgZXRuYXZpdl9jbWRidWZfZ2V0X3ZhKGNtZGJ1ZiksCisJCQlyZXR1cm5f dGFyZ2V0LAorCQkJZXRuYXZpdl9jbWRidWZfZ2V0X3ZhKGNtZGJ1ZiwgJmdwdS0+Y21kYnVmX21h cHBpbmcpLAogCQkJY21kYnVmLT52YWRkcik7CiAKIAlpZiAoZHJtX2RlYnVnICYgRFJNX1VUX0RS SVZFUikgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9jbWRi dWYuYyBiL2RyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZfY21kYnVmLmMKaW5kZXggYTNj NDRmMTQ1YzFkLi4xYmM1MjkzOTk3ODMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ldG5h dml2L2V0bmF2aXZfY21kYnVmLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZp dl9jbWRidWYuYwpAQCAtNiw5ICs2LDkgQEAKICNpbmNsdWRlIDxkcm0vZHJtX21tLmg+CiAKICNp bmNsdWRlICJldG5hdml2X2NtZGJ1Zi5oIgorI2luY2x1ZGUgImV0bmF2aXZfZ2VtLmgiCiAjaW5j bHVkZSAiZXRuYXZpdl9ncHUuaCIKICNpbmNsdWRlICJldG5hdml2X21tdS5oIgotI2luY2x1ZGUg ImV0bmF2aXZfcGVyZm1vbi5oIgogCiAjZGVmaW5lIFNVQkFMTE9DX1NJWkUJCVNaXzI1NksKICNk ZWZpbmUgU1VCQUxMT0NfR1JBTlVMRQlTWl80SwpAQCAtMjAsMTAgKzIwLDYgQEAgc3RydWN0IGV0 bmF2aXZfY21kYnVmX3N1YmFsbG9jIHsKIAl2b2lkICp2YWRkcjsKIAlkbWFfYWRkcl90IHBhZGRy OwogCi0JLyogR1BVIG1hcHBpbmcgKi8KLQl1MzIgaW92YTsKLQlzdHJ1Y3QgZHJtX21tX25vZGUg dnJhbV9ub2RlOyAvKiBvbmx5IHVzZWQgb24gTU1VdjIgKi8KLQogCS8qIGFsbG9jYXRpb24gbWFu YWdlbWVudCAqLwogCXN0cnVjdCBtdXRleCBsb2NrOwogCURFQ0xBUkVfQklUTUFQKGdyYW51bGVf bWFwLCBTVUJBTExPQ19HUkFOVUxFUyk7CkBAIC00NywyOSArNDMsMzYgQEAgZXRuYXZpdl9jbWRi dWZfc3ViYWxsb2NfbmV3KHN0cnVjdCBldG5hdml2X2dwdSAqIGdwdSkKIAogCXN1YmFsbG9jLT52 YWRkciA9IGRtYV9hbGxvY193YyhncHUtPmRldiwgU1VCQUxMT0NfU0laRSwKIAkJCQkgICAgICAg JnN1YmFsbG9jLT5wYWRkciwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFzdWJhbGxvYy0+dmFkZHIpCisJ aWYgKCFzdWJhbGxvYy0+dmFkZHIpIHsKKwkJcmV0ID0gLUVOT01FTTsKIAkJZ290byBmcmVlX3N1 YmFsbG9jOwotCi0JcmV0ID0gZXRuYXZpdl9pb21tdV9nZXRfc3ViYWxsb2NfdmEoZ3B1LCBzdWJh bGxvYy0+cGFkZHIsCi0JCQkJCSAgICAmc3ViYWxsb2MtPnZyYW1fbm9kZSwgU1VCQUxMT0NfU0la RSwKLQkJCQkJICAgICZzdWJhbGxvYy0+aW92YSk7Ci0JaWYgKHJldCkKLQkJZ290byBmcmVlX2Rt YTsKKwl9CiAKIAlyZXR1cm4gc3ViYWxsb2M7CiAKLWZyZWVfZG1hOgotCWRtYV9mcmVlX3djKGdw dS0+ZGV2LCBTVUJBTExPQ19TSVpFLCBzdWJhbGxvYy0+dmFkZHIsIHN1YmFsbG9jLT5wYWRkcik7 CiBmcmVlX3N1YmFsbG9jOgogCWtmcmVlKHN1YmFsbG9jKTsKIAotCXJldHVybiBOVUxMOworCXJl dHVybiBFUlJfUFRSKHJldCk7Cit9CisKK2ludCBldG5hdml2X2NtZGJ1Zl9zdWJhbGxvY19tYXAo c3RydWN0IGV0bmF2aXZfY21kYnVmX3N1YmFsbG9jICpzdWJhbGxvYywKKwkJCQlzdHJ1Y3QgZXRu YXZpdl9pb21tdSAqbW11LAorCQkJCXN0cnVjdCBldG5hdml2X3ZyYW1fbWFwcGluZyAqbWFwcGlu ZywKKwkJCQl1MzIgbWVtb3J5X2Jhc2UpCit7CisJcmV0dXJuIGV0bmF2aXZfaW9tbXVfZ2V0X3N1 YmFsbG9jX3ZhKG1tdSwgbWFwcGluZywgbWVtb3J5X2Jhc2UsCisJCQkJCSAgICAgc3ViYWxsb2Mt PnBhZGRyLCBTVUJBTExPQ19TSVpFKTsKK30KKwordm9pZCBldG5hdml2X2NtZGJ1Zl9zdWJhbGxv Y191bm1hcChzdHJ1Y3QgZXRuYXZpdl9pb21tdSAqbW11LAorCQkJCSAgIHN0cnVjdCBldG5hdml2 X3ZyYW1fbWFwcGluZyAqbWFwcGluZykKK3sKKwlldG5hdml2X2lvbW11X3B1dF9zdWJhbGxvY192 YShtbXUsIG1hcHBpbmcpOwogfQogCiB2b2lkIGV0bmF2aXZfY21kYnVmX3N1YmFsbG9jX2Rlc3Ry b3koc3RydWN0IGV0bmF2aXZfY21kYnVmX3N1YmFsbG9jICpzdWJhbGxvYykKIHsKLQlldG5hdml2 X2lvbW11X3B1dF9zdWJhbGxvY192YShzdWJhbGxvYy0+Z3B1LCAmc3ViYWxsb2MtPnZyYW1fbm9k ZSwKLQkJCQkgICAgICBTVUJBTExPQ19TSVpFLCBzdWJhbGxvYy0+aW92YSk7CiAJZG1hX2ZyZWVf d2Moc3ViYWxsb2MtPmdwdS0+ZGV2LCBTVUJBTExPQ19TSVpFLCBzdWJhbGxvYy0+dmFkZHIsCiAJ CSAgICBzdWJhbGxvYy0+cGFkZHIpOwogCWtmcmVlKHN1YmFsbG9jKTsKQEAgLTEyMyw5ICsxMjYs MTAgQEAgdm9pZCBldG5hdml2X2NtZGJ1Zl9mcmVlKHN0cnVjdCBldG5hdml2X2NtZGJ1ZiAqY21k YnVmKQogCXdha2VfdXBfYWxsKCZzdWJhbGxvYy0+ZnJlZV9ldmVudCk7CiB9CiAKLXUzMiBldG5h dml2X2NtZGJ1Zl9nZXRfdmEoc3RydWN0IGV0bmF2aXZfY21kYnVmICpidWYpCit1MzIgZXRuYXZp dl9jbWRidWZfZ2V0X3ZhKHN0cnVjdCBldG5hdml2X2NtZGJ1ZiAqYnVmLAorCQkJICBzdHJ1Y3Qg ZXRuYXZpdl92cmFtX21hcHBpbmcgKm1hcHBpbmcpCiB7Ci0JcmV0dXJuIGJ1Zi0+c3ViYWxsb2Mt PmlvdmEgKyBidWYtPnN1YmFsbG9jX29mZnNldDsKKwlyZXR1cm4gbWFwcGluZy0+aW92YSArIGJ1 Zi0+c3ViYWxsb2Nfb2Zmc2V0OwogfQogCiBkbWFfYWRkcl90IGV0bmF2aXZfY21kYnVmX2dldF9w YShzdHJ1Y3QgZXRuYXZpdl9jbWRidWYgKmJ1ZikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9ldG5hdml2L2V0bmF2aXZfY21kYnVmLmggYi9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5h dml2X2NtZGJ1Zi5oCmluZGV4IDRkNWQxYTc3ZWIyYS4uMTFkOTVmMDVjMDE3IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2X2NtZGJ1Zi5oCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9ldG5hdml2L2V0bmF2aXZfY21kYnVmLmgKQEAgLTksOCArOSw5IEBACiAjaW5jbHVk ZSA8bGludXgvdHlwZXMuaD4KIAogc3RydWN0IGV0bmF2aXZfZ3B1Oworc3RydWN0IGV0bmF2aXZf aW9tbXU7CitzdHJ1Y3QgZXRuYXZpdl92cmFtX21hcHBpbmc7CiBzdHJ1Y3QgZXRuYXZpdl9jbWRi dWZfc3ViYWxsb2M7Ci1zdHJ1Y3QgZXRuYXZpdl9wZXJmbW9uX3JlcXVlc3Q7CiAKIHN0cnVjdCBl dG5hdml2X2NtZGJ1ZiB7CiAJLyogc3ViYWxsb2NhdG9yIHRoaXMgY21kYnVmIGlzIGFsbG9jYXRl ZCBmcm9tICovCkBAIC0yNSwxMyArMjYsMjAgQEAgc3RydWN0IGV0bmF2aXZfY21kYnVmIHsKIHN0 cnVjdCBldG5hdml2X2NtZGJ1Zl9zdWJhbGxvYyAqCiBldG5hdml2X2NtZGJ1Zl9zdWJhbGxvY19u ZXcoc3RydWN0IGV0bmF2aXZfZ3B1ICogZ3B1KTsKIHZvaWQgZXRuYXZpdl9jbWRidWZfc3ViYWxs b2NfZGVzdHJveShzdHJ1Y3QgZXRuYXZpdl9jbWRidWZfc3ViYWxsb2MgKnN1YmFsbG9jKTsKK2lu dCBldG5hdml2X2NtZGJ1Zl9zdWJhbGxvY19tYXAoc3RydWN0IGV0bmF2aXZfY21kYnVmX3N1YmFs bG9jICpzdWJhbGxvYywKKwkJCQlzdHJ1Y3QgZXRuYXZpdl9pb21tdSAqbW11LAorCQkJCXN0cnVj dCBldG5hdml2X3ZyYW1fbWFwcGluZyAqbWFwcGluZywKKwkJCQl1MzIgbWVtb3J5X2Jhc2UpOwor dm9pZCBldG5hdml2X2NtZGJ1Zl9zdWJhbGxvY191bm1hcChzdHJ1Y3QgZXRuYXZpdl9pb21tdSAq bW11LAorCQkJCSAgIHN0cnVjdCBldG5hdml2X3ZyYW1fbWFwcGluZyAqbWFwcGluZyk7CiAKIAog aW50IGV0bmF2aXZfY21kYnVmX2luaXQoc3RydWN0IGV0bmF2aXZfY21kYnVmX3N1YmFsbG9jICpz dWJhbGxvYywKIAkJc3RydWN0IGV0bmF2aXZfY21kYnVmICpjbWRidWYsIHUzMiBzaXplKTsKIHZv aWQgZXRuYXZpdl9jbWRidWZfZnJlZShzdHJ1Y3QgZXRuYXZpdl9jbWRidWYgKmNtZGJ1Zik7CiAK LXUzMiBldG5hdml2X2NtZGJ1Zl9nZXRfdmEoc3RydWN0IGV0bmF2aXZfY21kYnVmICpidWYpOwor dTMyIGV0bmF2aXZfY21kYnVmX2dldF92YShzdHJ1Y3QgZXRuYXZpdl9jbWRidWYgKmJ1ZiwKKwkJ CSAgc3RydWN0IGV0bmF2aXZfdnJhbV9tYXBwaW5nICptYXBwaW5nKTsKIGRtYV9hZGRyX3QgZXRu YXZpdl9jbWRidWZfZ2V0X3BhKHN0cnVjdCBldG5hdml2X2NtZGJ1ZiAqYnVmKTsKIAogI2VuZGlm IC8qIF9fRVROQVZJVl9DTURCVUZfSF9fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v ZXRuYXZpdi9ldG5hdml2X2R1bXAuYyBiL2RyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZf ZHVtcC5jCmluZGV4IDMzODU0Yzk0Y2I4NS4uZjU1NzFlMTJiODZlIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2X2R1bXAuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v ZXRuYXZpdi9ldG5hdml2X2R1bXAuYwpAQCAtMTgxLDE0ICsxODEsMTYgQEAgdm9pZCBldG5hdml2 X2NvcmVfZHVtcChzdHJ1Y3QgZXRuYXZpdl9ncHUgKmdwdSkKIAlldG5hdml2X2NvcmVfZHVtcF9t bXUoJml0ZXIsIGdwdSwgbW11X3NpemUpOwogCWV0bmF2aXZfY29yZV9kdW1wX21lbSgmaXRlciwg RVREVU1QX0JVRl9SSU5HLCBncHUtPmJ1ZmZlci52YWRkciwKIAkJCSAgICAgIGdwdS0+YnVmZmVy LnNpemUsCi0JCQkgICAgICBldG5hdml2X2NtZGJ1Zl9nZXRfdmEoJmdwdS0+YnVmZmVyKSk7CisJ CQkgICAgICBldG5hdml2X2NtZGJ1Zl9nZXRfdmEoJmdwdS0+YnVmZmVyLAorCQkJCQkJICAgICZn cHUtPmNtZGJ1Zl9tYXBwaW5nKSk7CiAKIAlzcGluX2xvY2tfaXJxc2F2ZSgmZ3B1LT5zY2hlZC5q b2JfbGlzdF9sb2NrLCBmbGFncyk7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeShzX2pvYiwgJmdwdS0+ c2NoZWQucmluZ19taXJyb3JfbGlzdCwgbm9kZSkgewogCQlzdWJtaXQgPSB0b19ldG5hdml2X3N1 Ym1pdChzX2pvYik7CiAJCWV0bmF2aXZfY29yZV9kdW1wX21lbSgmaXRlciwgRVREVU1QX0JVRl9D TUQsCiAJCQkJICAgICAgc3VibWl0LT5jbWRidWYudmFkZHIsIHN1Ym1pdC0+Y21kYnVmLnNpemUs Ci0JCQkJICAgICAgZXRuYXZpdl9jbWRidWZfZ2V0X3ZhKCZzdWJtaXQtPmNtZGJ1ZikpOworCQkJ CSAgICAgIGV0bmF2aXZfY21kYnVmX2dldF92YSgmc3VibWl0LT5jbWRidWYsCisJCQkJICAgICAg JmdwdS0+Y21kYnVmX21hcHBpbmcpKTsKIAl9CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZ3B1 LT5zY2hlZC5qb2JfbGlzdF9sb2NrLCBmbGFncyk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9ldG5hdml2L2V0bmF2aXZfZ3B1LmMgYi9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5h dml2X2dwdS5jCmluZGV4IDcyZDAxZTg3MzE2MC4uYTcwZmY0Yzc3YThhIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2X2dwdS5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9ldG5hdml2L2V0bmF2aXZfZ3B1LmMKQEAgLTY4Myw4ICs2ODMsOCBAQCBzdGF0aWMgdm9pZCBl dG5hdml2X2dwdV9od19pbml0KHN0cnVjdCBldG5hdml2X2dwdSAqZ3B1KQogCXByZWZldGNoID0g ZXRuYXZpdl9idWZmZXJfaW5pdChncHUpOwogCiAJZ3B1X3dyaXRlKGdwdSwgVklWU19ISV9JTlRS X0VOQkwsIH4wVSk7Ci0JZXRuYXZpdl9ncHVfc3RhcnRfZmUoZ3B1LCBldG5hdml2X2NtZGJ1Zl9n ZXRfdmEoJmdwdS0+YnVmZmVyKSwKLQkJCSAgICAgcHJlZmV0Y2gpOworCWV0bmF2aXZfZ3B1X3N0 YXJ0X2ZlKGdwdSwgZXRuYXZpdl9jbWRidWZfZ2V0X3ZhKCZncHUtPmJ1ZmZlciwKKwkJCSAgICAg JmdwdS0+Y21kYnVmX21hcHBpbmcpLCBwcmVmZXRjaCk7CiB9CiAKIGludCBldG5hdml2X2dwdV9p bml0KHN0cnVjdCBldG5hdml2X2dwdSAqZ3B1KQpAQCAtNzYwLDcgKzc2MCwxNSBAQCBpbnQgZXRu YXZpdl9ncHVfaW5pdChzdHJ1Y3QgZXRuYXZpdl9ncHUgKmdwdSkKIAlpZiAoSVNfRVJSKGdwdS0+ Y21kYnVmX3N1YmFsbG9jKSkgewogCQlkZXZfZXJyKGdwdS0+ZGV2LCAiRmFpbGVkIHRvIGNyZWF0 ZSBjbWRidWYgc3ViYWxsb2NhdG9yXG4iKTsKIAkJcmV0ID0gUFRSX0VSUihncHUtPmNtZGJ1Zl9z dWJhbGxvYyk7Ci0JCWdvdG8gZmFpbDsKKwkJZ290byBkZXN0cm95X2lvbW11OworCX0KKworCXJl dCA9IGV0bmF2aXZfY21kYnVmX3N1YmFsbG9jX21hcChncHUtPmNtZGJ1Zl9zdWJhbGxvYywgZ3B1 LT5tbXUsCisJCQkJCSAgJmdwdS0+Y21kYnVmX21hcHBpbmcsCisJCQkJCSAgZ3B1LT5tZW1vcnlf YmFzZSk7CisJaWYgKHJldCkgeworCQlkZXZfZXJyKGdwdS0+ZGV2LCAiZmFpbGVkIHRvIG1hcCBj bWRidWYgc3ViYWxsb2NcbiIpOworCQlnb3RvIGRlc3Ryb3lfc3ViYWxsb2M7CiAJfQogCiAJLyog Q3JlYXRlIGJ1ZmZlcjogKi8KQEAgLTc2OCwxMSArNzc2LDExIEBAIGludCBldG5hdml2X2dwdV9p bml0KHN0cnVjdCBldG5hdml2X2dwdSAqZ3B1KQogCQkJCSAgUEFHRV9TSVpFKTsKIAlpZiAocmV0 KSB7CiAJCWRldl9lcnIoZ3B1LT5kZXYsICJjb3VsZCBub3QgY3JlYXRlIGNvbW1hbmQgYnVmZmVy XG4iKTsKLQkJZ290byBkZXN0cm95X2lvbW11OworCQlnb3RvIHVubWFwX3N1YmFsbG9jOwogCX0K IAogCWlmIChncHUtPm1tdS0+dmVyc2lvbiA9PSBFVE5BVklWX0lPTU1VX1YxICYmCi0JICAgIGV0 bmF2aXZfY21kYnVmX2dldF92YSgmZ3B1LT5idWZmZXIpID4gMHg4MDAwMDAwMCkgeworCSAgICBl dG5hdml2X2NtZGJ1Zl9nZXRfdmEoJmdwdS0+YnVmZmVyLCAmZ3B1LT5jbWRidWZfbWFwcGluZykg PiAweDgwMDAwMDAwKSB7CiAJCXJldCA9IC1FSU5WQUw7CiAJCWRldl9lcnIoZ3B1LT5kZXYsCiAJ CQkiY29tbWFuZCBidWZmZXIgb3V0c2lkZSB2YWxpZCBtZW1vcnkgd2luZG93XG4iKTsKQEAgLTgw MCw2ICs4MDgsMTEgQEAgaW50IGV0bmF2aXZfZ3B1X2luaXQoc3RydWN0IGV0bmF2aXZfZ3B1ICpn cHUpCiBmcmVlX2J1ZmZlcjoKIAlldG5hdml2X2NtZGJ1Zl9mcmVlKCZncHUtPmJ1ZmZlcik7CiAJ Z3B1LT5idWZmZXIuc3ViYWxsb2MgPSBOVUxMOwordW5tYXBfc3ViYWxsb2M6CisJZXRuYXZpdl9j bWRidWZfc3ViYWxsb2NfdW5tYXAoZ3B1LT5tbXUsICZncHUtPmNtZGJ1Zl9tYXBwaW5nKTsKK2Rl c3Ryb3lfc3ViYWxsb2M6CisJZXRuYXZpdl9jbWRidWZfc3ViYWxsb2NfZGVzdHJveShncHUtPmNt ZGJ1Zl9zdWJhbGxvYyk7CisJZ3B1LT5jbWRidWZfc3ViYWxsb2MgPSBOVUxMOwogZGVzdHJveV9p b21tdToKIAlldG5hdml2X2lvbW11X2Rlc3Ryb3koZ3B1LT5tbXUpOwogCWdwdS0+bW11ID0gTlVM TDsKQEAgLTE2NzYsNiArMTY4OSw5IEBAIHN0YXRpYyB2b2lkIGV0bmF2aXZfZ3B1X3VuYmluZChz dHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1hc3RlciwKIAlpZiAoZ3B1LT5idWZm ZXIuc3ViYWxsb2MpCiAJCWV0bmF2aXZfY21kYnVmX2ZyZWUoJmdwdS0+YnVmZmVyKTsKIAorCWlm IChncHUtPmNtZGJ1Zl9tYXBwaW5nLnVzZSA9PSAxKQorCQlldG5hdml2X2NtZGJ1Zl9zdWJhbGxv Y191bm1hcChncHUtPm1tdSwgJmdwdS0+Y21kYnVmX21hcHBpbmcpOworCiAJaWYgKGdwdS0+Y21k YnVmX3N1YmFsbG9jKSB7CiAJCWV0bmF2aXZfY21kYnVmX3N1YmFsbG9jX2Rlc3Ryb3koZ3B1LT5j bWRidWZfc3ViYWxsb2MpOwogCQlncHUtPmNtZGJ1Zl9zdWJhbGxvYyA9IE5VTEw7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2X2dwdS5oIGIvZHJpdmVycy9ncHUv ZHJtL2V0bmF2aXYvZXRuYXZpdl9ncHUuaAppbmRleCA5YmNmMTUxZjcwNmIuLjhjNjg4NjliYTE4 MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9ncHUuaAorKysg Yi9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2X2dwdS5oCkBAIC03LDYgKzcsNyBAQAog I2RlZmluZSBfX0VUTkFWSVZfR1BVX0hfXwogCiAjaW5jbHVkZSAiZXRuYXZpdl9jbWRidWYuaCIK KyNpbmNsdWRlICJldG5hdml2X2dlbS5oIgogI2luY2x1ZGUgImV0bmF2aXZfZHJ2LmgiCiAKIHN0 cnVjdCBldG5hdml2X2dlbV9zdWJtaXQ7CkBAIC04NCw3ICs4NSw2IEBAIHN0cnVjdCBldG5hdml2 X2V2ZW50IHsKIH07CiAKIHN0cnVjdCBldG5hdml2X2NtZGJ1Zl9zdWJhbGxvYzsKLXN0cnVjdCBl dG5hdml2X2NtZGJ1ZjsKIHN0cnVjdCByZWd1bGF0b3I7CiBzdHJ1Y3QgY2xrOwogCkBAIC0xMDEs NiArMTAxLDcgQEAgc3RydWN0IGV0bmF2aXZfZ3B1IHsKIAlzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVs ZXIgc2NoZWQ7CiAKIAkvKiAncmluZyctYnVmZmVyOiAqLworCXN0cnVjdCBldG5hdml2X3ZyYW1f bWFwcGluZyBjbWRidWZfbWFwcGluZzsKIAlzdHJ1Y3QgZXRuYXZpdl9jbWRidWYgYnVmZmVyOwog CWludCBleGVjX3N0YXRlOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9l dG5hdml2X21tdS5jIGIvZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9tbXUuYwppbmRl eCA4MDY5ZjlmMzZhMmUuLjA3MDUwOWExZjk0OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2V0bmF2aXYvZXRuYXZpdl9tbXUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5h dml2X21tdS5jCkBAIC0zMzIsNTIgKzMzMiw2MiBAQCB2b2lkIGV0bmF2aXZfaW9tbXVfcmVzdG9y ZShzdHJ1Y3QgZXRuYXZpdl9ncHUgKmdwdSkKIAkJZXRuYXZpdl9pb21tdXYyX3Jlc3RvcmUoZ3B1 KTsKIH0KIAotaW50IGV0bmF2aXZfaW9tbXVfZ2V0X3N1YmFsbG9jX3ZhKHN0cnVjdCBldG5hdml2 X2dwdSAqZ3B1LCBkbWFfYWRkcl90IHBhZGRyLAotCQkJCSAgc3RydWN0IGRybV9tbV9ub2RlICp2 cmFtX25vZGUsIHNpemVfdCBzaXplLAotCQkJCSAgdTMyICppb3ZhKQoraW50IGV0bmF2aXZfaW9t bXVfZ2V0X3N1YmFsbG9jX3ZhKHN0cnVjdCBldG5hdml2X2lvbW11ICptbXUsCisJCQkJICBzdHJ1 Y3QgZXRuYXZpdl92cmFtX21hcHBpbmcgKm1hcHBpbmcsCisJCQkJICB1MzIgbWVtb3J5X2Jhc2Us IGRtYV9hZGRyX3QgcGFkZHIsCisJCQkJICBzaXplX3Qgc2l6ZSkKIHsKLQlzdHJ1Y3QgZXRuYXZp dl9pb21tdSAqbW11ID0gZ3B1LT5tbXU7CisJc3RydWN0IGRybV9tbV9ub2RlICpub2RlOworCWlu dCByZXQ7CiAKIAlpZiAobW11LT52ZXJzaW9uID09IEVUTkFWSVZfSU9NTVVfVjEpIHsKLQkJKmlv dmEgPSBwYWRkciAtIGdwdS0+bWVtb3J5X2Jhc2U7CisJCW1hcHBpbmctPmlvdmEgPSBwYWRkciAt IG1lbW9yeV9iYXNlOworCQltYXBwaW5nLT51c2UgPSAxOworCQlsaXN0X2FkZF90YWlsKCZtYXBw aW5nLT5tbXVfbm9kZSwgJm1tdS0+bWFwcGluZ3MpOwogCQlyZXR1cm4gMDsKLQl9IGVsc2Ugewot CQlpbnQgcmV0OworCX0KIAotCQltdXRleF9sb2NrKCZtbXUtPmxvY2spOwotCQlyZXQgPSBldG5h dml2X2lvbW11X2ZpbmRfaW92YShtbXUsIHZyYW1fbm9kZSwgc2l6ZSk7Ci0JCWlmIChyZXQgPCAw KSB7Ci0JCQltdXRleF91bmxvY2soJm1tdS0+bG9jayk7Ci0JCQlyZXR1cm4gcmV0OwotCQl9Ci0J CXJldCA9IGV0bmF2aXZfZG9tYWluX21hcChtbXUtPmRvbWFpbiwgdnJhbV9ub2RlLT5zdGFydCwg cGFkZHIsCi0JCQkJCSBzaXplLCBFVE5BVklWX1BST1RfUkVBRCk7Ci0JCWlmIChyZXQgPCAwKSB7 Ci0JCQlkcm1fbW1fcmVtb3ZlX25vZGUodnJhbV9ub2RlKTsKLQkJCW11dGV4X3VubG9jaygmbW11 LT5sb2NrKTsKLQkJCXJldHVybiByZXQ7Ci0JCX0KLQkJZ3B1LT5tbXUtPm5lZWRfZmx1c2ggPSB0 cnVlOwotCQltdXRleF91bmxvY2soJm1tdS0+bG9jayk7CisJbm9kZSA9ICZtYXBwaW5nLT52cmFt X25vZGU7CiAKLQkJKmlvdmEgPSAodTMyKXZyYW1fbm9kZS0+c3RhcnQ7Ci0JCXJldHVybiAwOwor CW11dGV4X2xvY2soJm1tdS0+bG9jayk7CisKKwlyZXQgPSBldG5hdml2X2lvbW11X2ZpbmRfaW92 YShtbXUsIG5vZGUsIHNpemUpOworCWlmIChyZXQgPCAwKQorCQlnb3RvIHVubG9jazsKKworCW1h cHBpbmctPmlvdmEgPSBub2RlLT5zdGFydDsKKwlyZXQgPSBldG5hdml2X2RvbWFpbl9tYXAobW11 LT5kb21haW4sIG5vZGUtPnN0YXJ0LCBwYWRkciwgc2l6ZSwKKwkJCQkgRVROQVZJVl9QUk9UX1JF QUQpOworCisJaWYgKHJldCA8IDApIHsKKwkJZHJtX21tX3JlbW92ZV9ub2RlKG5vZGUpOworCQln b3RvIHVubG9jazsKIAl9CisKKwlsaXN0X2FkZF90YWlsKCZtYXBwaW5nLT5tbXVfbm9kZSwgJm1t dS0+bWFwcGluZ3MpOworCW1tdS0+bmVlZF9mbHVzaCA9IHRydWU7Cit1bmxvY2s6CisJbXV0ZXhf dW5sb2NrKCZtbXUtPmxvY2spOworCisJcmV0dXJuIHJldDsKIH0KIAotdm9pZCBldG5hdml2X2lv bW11X3B1dF9zdWJhbGxvY192YShzdHJ1Y3QgZXRuYXZpdl9ncHUgKmdwdSwKLQkJCQkgICBzdHJ1 Y3QgZHJtX21tX25vZGUgKnZyYW1fbm9kZSwgc2l6ZV90IHNpemUsCi0JCQkJICAgdTMyIGlvdmEp Cit2b2lkIGV0bmF2aXZfaW9tbXVfcHV0X3N1YmFsbG9jX3ZhKHN0cnVjdCBldG5hdml2X2lvbW11 ICptbXUsCisJCSAgc3RydWN0IGV0bmF2aXZfdnJhbV9tYXBwaW5nICptYXBwaW5nKQogewotCXN0 cnVjdCBldG5hdml2X2lvbW11ICptbXUgPSBncHUtPm1tdTsKKwlzdHJ1Y3QgZHJtX21tX25vZGUg Km5vZGUgPSAmbWFwcGluZy0+dnJhbV9ub2RlOwogCi0JaWYgKG1tdS0+dmVyc2lvbiA9PSBFVE5B VklWX0lPTU1VX1YyKSB7Ci0JCW11dGV4X2xvY2soJm1tdS0+bG9jayk7Ci0JCWV0bmF2aXZfZG9t YWluX3VubWFwKG1tdS0+ZG9tYWluLCBpb3ZhLCBzaXplKTsKLQkJZHJtX21tX3JlbW92ZV9ub2Rl KHZyYW1fbm9kZSk7Ci0JCW11dGV4X3VubG9jaygmbW11LT5sb2NrKTsKLQl9CisJbWFwcGluZy0+ dXNlID0gMDsKKworCWlmIChtbXUtPnZlcnNpb24gPT0gRVROQVZJVl9JT01NVV9WMSkKKwkJcmV0 dXJuOworCisJbXV0ZXhfbG9jaygmbW11LT5sb2NrKTsKKwlldG5hdml2X2RvbWFpbl91bm1hcCht bXUtPmRvbWFpbiwgbm9kZS0+c3RhcnQsIG5vZGUtPnNpemUpOworCWRybV9tbV9yZW1vdmVfbm9k ZShub2RlKTsKKwltdXRleF91bmxvY2soJm1tdS0+bG9jayk7CiB9CisKIHNpemVfdCBldG5hdml2 X2lvbW11X2R1bXBfc2l6ZShzdHJ1Y3QgZXRuYXZpdl9pb21tdSAqaW9tbXUpCiB7CiAJcmV0dXJu IGlvbW11LT5kb21haW4tPm9wcy0+ZHVtcF9zaXplKGlvbW11LT5kb21haW4pOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9tbXUuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9ldG5hdml2L2V0bmF2aXZfbW11LmgKaW5kZXggYTBkYjE3ZmZiNjg2Li5mZTFjOWQ2YjkzMzQg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZfbW11LmgKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9tbXUuaApAQCAtNTksMTIgKzU5LDEyIEBA IGludCBldG5hdml2X2lvbW11X21hcF9nZW0oc3RydWN0IGV0bmF2aXZfaW9tbXUgKm1tdSwKIHZv aWQgZXRuYXZpdl9pb21tdV91bm1hcF9nZW0oc3RydWN0IGV0bmF2aXZfaW9tbXUgKm1tdSwKIAlz dHJ1Y3QgZXRuYXZpdl92cmFtX21hcHBpbmcgKm1hcHBpbmcpOwogCi1pbnQgZXRuYXZpdl9pb21t dV9nZXRfc3ViYWxsb2NfdmEoc3RydWN0IGV0bmF2aXZfZ3B1ICpncHUsIGRtYV9hZGRyX3QgcGFk ZHIsCi0JCQkJICBzdHJ1Y3QgZHJtX21tX25vZGUgKnZyYW1fbm9kZSwgc2l6ZV90IHNpemUsCi0J CQkJICB1MzIgKmlvdmEpOwotdm9pZCBldG5hdml2X2lvbW11X3B1dF9zdWJhbGxvY192YShzdHJ1 Y3QgZXRuYXZpdl9ncHUgKmdwdSwKLQkJCQkgICBzdHJ1Y3QgZHJtX21tX25vZGUgKnZyYW1fbm9k ZSwgc2l6ZV90IHNpemUsCi0JCQkJICAgdTMyIGlvdmEpOworaW50IGV0bmF2aXZfaW9tbXVfZ2V0 X3N1YmFsbG9jX3ZhKHN0cnVjdCBldG5hdml2X2lvbW11ICptbXUsCisJCQkJICBzdHJ1Y3QgZXRu YXZpdl92cmFtX21hcHBpbmcgKm1hcHBpbmcsCisJCQkJICB1MzIgbWVtb3J5X2Jhc2UsIGRtYV9h ZGRyX3QgcGFkZHIsCisJCQkJICBzaXplX3Qgc2l6ZSk7Cit2b2lkIGV0bmF2aXZfaW9tbXVfcHV0 X3N1YmFsbG9jX3ZhKHN0cnVjdCBldG5hdml2X2lvbW11ICptbXUsCisJCQkJICAgc3RydWN0IGV0 bmF2aXZfdnJhbV9tYXBwaW5nICptYXBwaW5nKTsKIAogc2l6ZV90IGV0bmF2aXZfaW9tbXVfZHVt cF9zaXplKHN0cnVjdCBldG5hdml2X2lvbW11ICppb21tdSk7CiB2b2lkIGV0bmF2aXZfaW9tbXVf ZHVtcChzdHJ1Y3QgZXRuYXZpdl9pb21tdSAqaW9tbXUsIHZvaWQgKmJ1Zik7Ci0tIAoyLjIwLjEK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZl bCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==