From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C Subject: [PATCH v6 07/10] drm/i915: Attach content type property Date: Thu, 2 May 2019 18:53:00 +0530 Message-ID: <20190502132303.27696-8-ramalingam.c@intel.com> References: <20190502132303.27696-1-ramalingam.c@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190502132303.27696-1-ramalingam.c@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, dri-devel@lists.freedesktop.org, daniel.vetter@intel.com, gwan-gyeong.mun@intel.com List-Id: intel-gfx@lists.freedesktop.org QXR0YWNoZXMgdGhlIGNvbnRlbnQgdHlwZSBwcm9wZXJ0eSBmb3IgSERDUDIuMiBjYXBhYmxlIGNv bm5lY3RvcnMuCgpJbXBsZW1lbnRzIHRoZSB1cGRhdGUgb2YgY29udGVudCB0eXBlIGZyb20gcHJv cGVydHkgYW5kIGFwcGx5IHRoZQpyZXN0cmljdGlvbiBvbiBIRENQIHZlcnNpb24gc2VsZWN0aW9u LgoKTmVlZCBBQ0sgZm9yIGNvbnRlbnQgdHlwZSBwcm9wZXJ0eSBmcm9tIHVzZXJzcGFjZSBjb25z dW1lci4KCnYyOgogIHMvY3BfY29udGVudF90eXBlL2NvbnRlbnRfcHJvdGVjdGlvbl90eXBlIFtk YW5pZWxdCiAgZGlzYWJsZSBhdCBoZGNwX2F0b21pY19jaGVjayB0byBhdm9pZCBjaGVjayBhdCBh dG9taWNfc2V0X3Byb3BlcnR5CglbTWFhcnRlbl0KdjM6CiAgcy9jb250ZW50X3Byb3RlY3Rpb25f dHlwZS9oZGNwX2NvbnRlbnRfdHlwZSBbUGVra2FdCnY0OgogIGhkY3AgZGlzYWJsZSBpbmNhc2Ug b2YgdHlwZSBjaGFuZ2UgaXMgbW92ZWQgaW50byBjb21taXQgW2RhbmllbF0uCnY1OgogIFNpbXBs aWZpZWQgdGhlIFR5cGUgY2hhbmdlIHByb2NlZHVyZS4gW0RhbmllbF0KClNpZ25lZC1vZmYtYnk6 IFJhbWFsaW5nYW0gQyA8cmFtYWxpbmdhbS5jQGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IERhbmll bCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGRpLmMgIHwgMzcgKysrKysrKysrKysrKysrKysrKysrLS0tLS0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYyB8IDQzICsrKysrKysrKysrKysrKysrKysrLS0tLS0t LS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuaCB8ICAyICstCiAzIGZpbGVz IGNoYW5nZWQsIDYwIGluc2VydGlvbnMoKyksIDIyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGRpLmMKaW5kZXggZjE4MWMyNmY2MmZkLi45YzdjYWYzOTk2NGEgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RkaS5jCkBAIC0zNDc0LDcgKzM0NzQsOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9l bmFibGVfZGRpKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCS8qIEVuYWJsZSBoZGNw IGlmIGl0J3MgZGVzaXJlZCAqLwogCWlmIChjb25uX3N0YXRlLT5jb250ZW50X3Byb3RlY3Rpb24g PT0KIAkgICAgRFJNX01PREVfQ09OVEVOVF9QUk9URUNUSU9OX0RFU0lSRUQpCi0JCWludGVsX2hk Y3BfZW5hYmxlKHRvX2ludGVsX2Nvbm5lY3Rvcihjb25uX3N0YXRlLT5jb25uZWN0b3IpKTsKKwkJ aW50ZWxfaGRjcF9lbmFibGUodG9faW50ZWxfY29ubmVjdG9yKGNvbm5fc3RhdGUtPmNvbm5lY3Rv ciksCisJCQkJICAodTgpY29ubl9zdGF0ZS0+aGRjcF9jb250ZW50X3R5cGUpOwogfQogCiBzdGF0 aWMgdm9pZCBpbnRlbF9kaXNhYmxlX2RkaV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwKQEAgLTM1NDMsMTUgKzM1NDQsMzkgQEAgc3RhdGljIHZvaWQgaW50ZWxfZGRpX3VwZGF0ZV9w aXBlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCQkJCSAgY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCQkJICBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5l Y3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKIHsKKwlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25u ZWN0b3IgPQorCQkJCXRvX2ludGVsX2Nvbm5lY3Rvcihjb25uX3N0YXRlLT5jb25uZWN0b3IpOwor CXN0cnVjdCBpbnRlbF9oZGNwICpoZGNwID0gJmNvbm5lY3Rvci0+aGRjcDsKKwlib29sIGNvbnRl bnRfcHJvdGVjdGlvbl90eXBlX2NoYW5nZWQgPQorCQkJY29ubl9zdGF0ZS0+aGRjcF9jb250ZW50 X3R5cGUgIT0gaGRjcC0+Y29udGVudF90eXBlOworCiAJaWYgKCFpbnRlbF9jcnRjX2hhc190eXBl KGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9IRE1JKSkKIAkJaW50ZWxfZGRpX3VwZGF0ZV9waXBl X2RwKGVuY29kZXIsIGNydGNfc3RhdGUsIGNvbm5fc3RhdGUpOwogCisJLyoKKwkgKiBEdXJpbmcg dGhlIEhEQ1AgZW5jcnlwdGlvbiBzZXNzaW9uIGlmIFR5cGUgY2hhbmdlIGlzIHJlcXVlc3RlZCwK KwkgKiBkaXNhYmxlIHRoZSBIRENQIGFuZCByZWVuYWJsZSBpdCB3aXRoIG5ldyBUWVBFIHZhbHVl LgorCSAqLwogCWlmIChjb25uX3N0YXRlLT5jb250ZW50X3Byb3RlY3Rpb24gPT0KLQkgICAgRFJN X01PREVfQ09OVEVOVF9QUk9URUNUSU9OX0RFU0lSRUQpCi0JCWludGVsX2hkY3BfZW5hYmxlKHRv X2ludGVsX2Nvbm5lY3Rvcihjb25uX3N0YXRlLT5jb25uZWN0b3IpKTsKLQllbHNlIGlmIChjb25u X3N0YXRlLT5jb250ZW50X3Byb3RlY3Rpb24gPT0KLQkJIERSTV9NT0RFX0NPTlRFTlRfUFJPVEVD VElPTl9VTkRFU0lSRUQpCi0JCWludGVsX2hkY3BfZGlzYWJsZSh0b19pbnRlbF9jb25uZWN0b3Io Y29ubl9zdGF0ZS0+Y29ubmVjdG9yKSk7CisJICAgIERSTV9NT0RFX0NPTlRFTlRfUFJPVEVDVElP Tl9VTkRFU0lSRUQgfHwKKwkgICAgY29udGVudF9wcm90ZWN0aW9uX3R5cGVfY2hhbmdlZCkKKwkJ aW50ZWxfaGRjcF9kaXNhYmxlKGNvbm5lY3Rvcik7CisKKwkvKgorCSAqIE1hcmsgdGhlIGhkY3Ag c3RhdGUgYXMgREVTSVJFRCBhZnRlciB0aGUgaGRjcCBkaXNhYmxlIG9mIHR5cGUKKwkgKiBjaGFu Z2UgcHJvY2VkdXJlLgorCSAqLworCWlmIChjb250ZW50X3Byb3RlY3Rpb25fdHlwZV9jaGFuZ2Vk KSB7CisJCW11dGV4X2xvY2soJmhkY3AtPm11dGV4KTsKKwkJaGRjcC0+dmFsdWUgPSBEUk1fTU9E RV9DT05URU5UX1BST1RFQ1RJT05fREVTSVJFRDsKKwkJc2NoZWR1bGVfd29yaygmaGRjcC0+cHJv cF93b3JrKTsKKwkJbXV0ZXhfdW5sb2NrKCZoZGNwLT5tdXRleCk7CisJfQorCisJaWYgKGNvbm5f c3RhdGUtPmNvbnRlbnRfcHJvdGVjdGlvbiA9PQorCSAgICBEUk1fTU9ERV9DT05URU5UX1BST1RF Q1RJT05fREVTSVJFRCB8fAorCSAgICBjb250ZW50X3Byb3RlY3Rpb25fdHlwZV9jaGFuZ2VkKQor CQlpbnRlbF9oZGNwX2VuYWJsZShjb25uZWN0b3IsICh1OCljb25uX3N0YXRlLT5oZGNwX2NvbnRl bnRfdHlwZSk7CiB9CiAKIHN0YXRpYyB2b2lkIGludGVsX2RkaV9zZXRfZmlhX2xhbmVfY291bnQo c3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9oZGNwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMK aW5kZXggYmUzNmQ1OTQxMjlkLi4yZTE1OWZmZDE3ZTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2hkY3AuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9o ZGNwLmMKQEAgLTE3NDcsMTQgKzE3NDcsMTUgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjb21wb25l bnRfb3BzIGk5MTVfaGRjcF9jb21wb25lbnRfb3BzID0gewogCS51bmJpbmQgPSBpOTE1X2hkY3Bf Y29tcG9uZW50X3VuYmluZCwKIH07CiAKLXN0YXRpYyBpbmxpbmUgaW50IGluaXRpYWxpemVfaGRj cF9wb3J0X2RhdGEoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQorc3RhdGljIGlu bGluZSBpbnQgaW5pdGlhbGl6ZV9oZGNwX3BvcnRfZGF0YShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICpjb25uZWN0b3IsCisJCQkJCSAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfaGRjcF9zaGltICpzaGlt KQogewogCXN0cnVjdCBpbnRlbF9oZGNwICpoZGNwID0gJmNvbm5lY3Rvci0+aGRjcDsKIAlzdHJ1 Y3QgaGRjcF9wb3J0X2RhdGEgKmRhdGEgPSAmaGRjcC0+cG9ydF9kYXRhOwogCiAJZGF0YS0+cG9y dCA9IGNvbm5lY3Rvci0+ZW5jb2Rlci0+cG9ydDsKIAlkYXRhLT5wb3J0X3R5cGUgPSAodTgpSERD UF9QT1JUX1RZUEVfSU5URUdSQVRFRDsKLQlkYXRhLT5wcm90b2NvbCA9ICh1OCloZGNwLT5zaGlt LT5wcm90b2NvbDsKKwlkYXRhLT5wcm90b2NvbCA9ICh1OClzaGltLT5wcm90b2NvbDsKIAogCWRh dGEtPmsgPSAxOwogCWlmICghZGF0YS0+c3RyZWFtcykKQEAgLTE4MDQsMTIgKzE4MDUsMTMgQEAg dm9pZCBpbnRlbF9oZGNwX2NvbXBvbmVudF9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKIAl9CiB9CiAKLXN0YXRpYyB2b2lkIGludGVsX2hkY3AyX2luaXQoc3RydWN0IGlu dGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQorc3RhdGljIHZvaWQgaW50ZWxfaGRjcDJfaW5pdChz dHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsCisJCQkgICAgIGNvbnN0IHN0cnVjdCBp bnRlbF9oZGNwX3NoaW0gKnNoaW0pCiB7CiAJc3RydWN0IGludGVsX2hkY3AgKmhkY3AgPSAmY29u bmVjdG9yLT5oZGNwOwogCWludCByZXQ7CiAKLQlyZXQgPSBpbml0aWFsaXplX2hkY3BfcG9ydF9k YXRhKGNvbm5lY3Rvcik7CisJcmV0ID0gaW5pdGlhbGl6ZV9oZGNwX3BvcnRfZGF0YShjb25uZWN0 b3IsIHNoaW0pOwogCWlmIChyZXQpIHsKIAkJRFJNX0RFQlVHX0tNUygiTWVpIGhkY3AgZGF0YSBp bml0IGZhaWxlZFxuIik7CiAJCXJldHVybjsKQEAgLTE4MjgsMjUgKzE4MzAsMjggQEAgaW50IGlu dGVsX2hkY3BfaW5pdChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsCiAJaWYgKCFz aGltKQogCQlyZXR1cm4gLUVJTlZBTDsKIAorCWlmIChpc19oZGNwMl9zdXBwb3J0ZWQoZGV2X3By aXYpKQorCQlpbnRlbF9oZGNwMl9pbml0KGNvbm5lY3Rvciwgc2hpbSk7CisKIAlyZXQgPQogCWRy bV9jb25uZWN0b3JfYXR0YWNoX2NvbnRlbnRfcHJvdGVjdGlvbl9wcm9wZXJ0eSgmY29ubmVjdG9y LT5iYXNlLAotCQkJCQkJCSBmYWxzZSk7Ci0JaWYgKHJldCkKKwkJCQkJCQkgaGRjcC0+aGRjcDJf c3VwcG9ydGVkKTsKKwlpZiAocmV0KSB7CisJCWhkY3AtPmhkY3AyX3N1cHBvcnRlZCA9IGZhbHNl OworCQlrZnJlZShoZGNwLT5wb3J0X2RhdGEuc3RyZWFtcyk7CiAJCXJldHVybiByZXQ7CisJfQog CiAJaGRjcC0+c2hpbSA9IHNoaW07CiAJbXV0ZXhfaW5pdCgmaGRjcC0+bXV0ZXgpOwogCUlOSVRf REVMQVlFRF9XT1JLKCZoZGNwLT5jaGVja193b3JrLCBpbnRlbF9oZGNwX2NoZWNrX3dvcmspOwog CUlOSVRfV09SSygmaGRjcC0+cHJvcF93b3JrLCBpbnRlbF9oZGNwX3Byb3Bfd29yayk7Ci0KLQlp ZiAoaXNfaGRjcDJfc3VwcG9ydGVkKGRldl9wcml2KSkKLQkJaW50ZWxfaGRjcDJfaW5pdChjb25u ZWN0b3IpOwogCWluaXRfd2FpdHF1ZXVlX2hlYWQoJmhkY3AtPmNwX2lycV9xdWV1ZSk7CiAKIAly ZXR1cm4gMDsKIH0KIAotaW50IGludGVsX2hkY3BfZW5hYmxlKHN0cnVjdCBpbnRlbF9jb25uZWN0 b3IgKmNvbm5lY3RvcikKK2ludCBpbnRlbF9oZGNwX2VuYWJsZShzdHJ1Y3QgaW50ZWxfY29ubmVj dG9yICpjb25uZWN0b3IsIHU4IGNvbnRlbnRfdHlwZSkKIHsKIAlzdHJ1Y3QgaW50ZWxfaGRjcCAq aGRjcCA9ICZjb25uZWN0b3ItPmhkY3A7CiAJdW5zaWduZWQgbG9uZyBjaGVja19saW5rX2ludGVy dmFsID0gRFJNX0hEQ1BfQ0hFQ0tfUEVSSU9EX01TOwpAQCAtMTg1Nyw2ICsxODYyLDcgQEAgaW50 IGludGVsX2hkY3BfZW5hYmxlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKIAog CW11dGV4X2xvY2soJmhkY3AtPm11dGV4KTsKIAlXQVJOX09OKGhkY3AtPnZhbHVlID09IERSTV9N T0RFX0NPTlRFTlRfUFJPVEVDVElPTl9FTkFCTEVEKTsKKwloZGNwLT5jb250ZW50X3R5cGUgPSBj b250ZW50X3R5cGU7CiAKIAkvKgogCSAqIENvbnNpZGVyaW5nIHRoYXQgSERDUDIuMiBpcyBtb3Jl IHNlY3VyZSB0aGFuIEhEQ1AxLjQsIElmIHRoZSBzZXR1cApAQCAtMTg2OCw4ICsxODc0LDEyIEBA IGludCBpbnRlbF9oZGNwX2VuYWJsZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3Ip CiAJCQljaGVja19saW5rX2ludGVydmFsID0gRFJNX0hEQ1AyX0NIRUNLX1BFUklPRF9NUzsKIAl9 CiAKLQkvKiBXaGVuIEhEQ1AyLjIgZmFpbHMsIEhEQ1AxLjQgd2lsbCBiZSBhdHRlbXB0ZWQgKi8K LQlpZiAocmV0ICYmIGludGVsX2hkY3BfY2FwYWJsZShjb25uZWN0b3IpKSB7CisJLyoKKwkgKiBX aGVuIEhEQ1AyLjIgZmFpbHMgYW5kIENvbnRlbnQgVHlwZSBpcyBub3QgVHlwZTEsIEhEQ1AxLjQg d2lsbAorCSAqIGJlIGF0dGVtcHRlZC4KKwkgKi8KKwlpZiAocmV0ICYmIGludGVsX2hkY3BfY2Fw YWJsZShjb25uZWN0b3IpICYmCisJICAgIGhkY3AtPmNvbnRlbnRfdHlwZSAhPSBEUk1fTU9ERV9I RENQX0NPTlRFTlRfVFlQRTEpIHsKIAkJcmV0ID0gX2ludGVsX2hkY3BfZW5hYmxlKGNvbm5lY3Rv cik7CiAJfQogCkBAIC0xOTUxLDEyICsxOTYxLDE1IEBAIHZvaWQgaW50ZWxfaGRjcF9hdG9taWNf Y2hlY2soc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKIAogCS8qCiAJICogTm90aGlu ZyB0byBkbyBpZiB0aGUgc3RhdGUgZGlkbid0IGNoYW5nZSwgb3IgSERDUCB3YXMgYWN0aXZhdGVk IHNpbmNlCi0JICogdGhlIGxhc3QgY29tbWl0CisJICogdGhlIGxhc3QgY29tbWl0LiBBbmQgYWxz byBubyBjaGFuZ2UgaW4gaGRjcCBjb250ZW50IHR5cGUuCiAJICovCiAJaWYgKG9sZF9jcCA9PSBu ZXdfY3AgfHwKIAkgICAgKG9sZF9jcCA9PSBEUk1fTU9ERV9DT05URU5UX1BST1RFQ1RJT05fREVT SVJFRCAmJgotCSAgICAgbmV3X2NwID09IERSTV9NT0RFX0NPTlRFTlRfUFJPVEVDVElPTl9FTkFC TEVEKSkKLQkJcmV0dXJuOworCSAgICAgbmV3X2NwID09IERSTV9NT0RFX0NPTlRFTlRfUFJPVEVD VElPTl9FTkFCTEVEKSkgeworCQlpZiAob2xkX3N0YXRlLT5oZGNwX2NvbnRlbnRfdHlwZSA9PQor CQkJCW5ld19zdGF0ZS0+aGRjcF9jb250ZW50X3R5cGUpCisJCQlyZXR1cm47CisJfQogCiAJY3J0 Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKG5ld19zdGF0ZS0+c3RhdGUs CiAJCQkJCQkgICBuZXdfc3RhdGUtPmNydGMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfaGRjcC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5oCmlu ZGV4IGJlOGRhODVjODY2YS4uMTM1NTViMDU0OTMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9oZGNwLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRj cC5oCkBAIC0yMSw3ICsyMSw3IEBAIHZvaWQgaW50ZWxfaGRjcF9hdG9taWNfY2hlY2soc3RydWN0 IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKIAkJCSAgICAgc3RydWN0IGRybV9jb25uZWN0b3Jf c3RhdGUgKm5ld19zdGF0ZSk7CiBpbnQgaW50ZWxfaGRjcF9pbml0KHN0cnVjdCBpbnRlbF9jb25u ZWN0b3IgKmNvbm5lY3RvciwKIAkJICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9oZGNwX3NoaW0gKmhk Y3Bfc2hpbSk7Ci1pbnQgaW50ZWxfaGRjcF9lbmFibGUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAq Y29ubmVjdG9yKTsKK2ludCBpbnRlbF9oZGNwX2VuYWJsZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICpjb25uZWN0b3IsIHU4IGNvbnRlbnRfdHlwZSk7CiBpbnQgaW50ZWxfaGRjcF9kaXNhYmxlKHN0 cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rvcik7CiBib29sIGlzX2hkY3Bfc3VwcG9ydGVk KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwb3J0IHBvcnQpOwogYm9v bCBpbnRlbF9oZGNwX2NhcGFibGUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKTsK LS0gCjIuMTkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4