From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: =?utf-8?b?4pyXIEZpLkNJLkNIRUNLUEFUQ0g6IHdhcm5pbmcg?= =?utf-8?q?for_drm/i915=3A_Interface_to_get_GFX_shmem_usage_stats_per_proc?= =?utf-8?q?ess?= Date: Mon, 26 Mar 2018 17:45:02 +0300 Message-ID: <87bmfagakx.fsf@intel.com> References: <1521728098-3669-1-git-send-email-praveen.paneri@intel.com> <20180322144521.5531.81057@emeril.freedesktop.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id B99696E4B1 for ; Mon, 26 Mar 2018 14:44:12 +0000 (UTC) In-Reply-To: <20180322144521.5531.81057@emeril.freedesktop.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Patchwork , Praveen Paneri Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAyMiBNYXIgMjAxOCwgUGF0Y2h3b3JrIDxwYXRjaHdvcmtAZW1lcmlsLmZyZWVkZXNr dG9wLm9yZz4gd3JvdGU6Cj4gPT0gU2VyaWVzIERldGFpbHMgPT0KPgo+IFNlcmllczogZHJtL2k5 MTU6IEludGVyZmFjZSB0byBnZXQgR0ZYIHNobWVtIHVzYWdlIHN0YXRzIHBlciBwcm9jZXNzCj4g VVJMICAgOiBodHRwczovL3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvc2VyaWVzLzQwNDY0Lwo+ IFN0YXRlIDogd2FybmluZwo+Cj4gPT0gU3VtbWFyeSA9PQo+Cj4gJCBkaW0gY2hlY2twYXRjaCBv cmlnaW4vZHJtLXRpcAoKSSBkb24ndCBtaW5kIHRoZSBmb28gPT0gTlVMTCBjb21wYXJpc29ucyBs ZWFkaW5nIHRvIHdhcm5pbmdzCkNIRUNLOkNPTVBBUklTT05fVE9fTlVMTDogQ29tcGFyaXNvbiB0 byBOVUxMIGNvdWxkIGJlIHdyaXR0ZW4gIiFmb28iCgpCdXQgZXZlcnl0aGluZyBlbHNlIGhlcmUg aXMgdmFsaWQsIGFuZCBzaG91bGQgYmUgZml4ZWQgYmVmb3JlIHN1Ym1pdHRpbmcKdGhpcyBmb3Ig cmVhbC4KCkJSLApKYW5pLgoKCj4gYTI1MDdkNjJiYjRjIGRybS9pOTE1OiBTeXNmcyBpbnRlcmZh Y2UgdG8gZ2V0IEdGWCBzaG1lbSB1c2FnZSBzdGF0cyBwZXIgcHJvY2Vzcwo+IC06MjI4OiBDSEVD SzpTUEFDSU5HOiBzcGFjZXMgcHJlZmVycmVkIGFyb3VuZCB0aGF0ICctJyAoY3R4OlZ4VikKPiAj MjI4OiBGSUxFOiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jOjYxMTg6Cj4gKwlpZiAo cmVzID4gMCAmJiBidWZmZXJbcmVzLTFdICE9ICdcMCcgJiYgbGVuIDwgUEFHRV9TSVpFKQo+ICAJ ICAgICAgICAgICAgICAgICAgICAgICAgIF4KPgo+IC06MjI5OiBDSEVDSzpTUEFDSU5HOiBzcGFj ZXMgcHJlZmVycmVkIGFyb3VuZCB0aGF0ICctJyAoY3R4OlZ4VikKPiAjMjI5OiBGSUxFOiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jOjYxMTk6Cj4gKwkJYnVmZmVyW3Jlcy0xXSA9ICdc MCc7Cj4gIAkJICAgICAgICAgIF4KPgo+IC06Mjc1OiBDSEVDSzpDT01QQVJJU09OX1RPX05VTEw6 IENvbXBhcmlzb24gdG8gTlVMTCBjb3VsZCBiZSB3cml0dGVuICIhZW50cnkiCj4gIzI3NTogRklM RTogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYzo2MTY1Ogo+ICsJCWlmIChlbnRyeSA9 PSBOVUxMKSB7Cj4KPiAtOjMxNTogQ0hFQ0s6UEFSRU5USEVTSVNfQUxJR05NRU5UOiBBbGlnbm1l bnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMKPiAjMzE1OiBGSUxFOiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbS5jOjYyMDU6Cj4gKwkJRFJNX0RFQlVHKCJDb3VsZG4ndCBmaW5k IG1hdGNoaW5nIHRnaWQgJWQgZm9yIG9iaiAlcFxuIiwKPiArCQkJCWN1cnJlbnRfdGdpZCwgb2Jq KTsKPgo+IC06MzI5OiBDSEVDSzpQQVJFTlRIRVNJU19BTElHTk1FTlQ6IEFsaWdubWVudCBzaG91 bGQgbWF0Y2ggb3BlbiBwYXJlbnRoZXNpcwo+ICMzMjk6IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtLmM6NjIxOToKPiArc3RhdGljIGludCBpOTE1X29ial9maW5kX2luc2VydF9p bl9oYXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gKwkJCQlzdHJ1Y3QgcGlk X3N0YXRfZW50cnkgKnBpZF9lbnRyeSwKPgo+IC06MzM2OiBDSEVDSzpQQVJFTlRIRVNJU19BTElH Tk1FTlQ6IEFsaWdubWVudCBzaG91bGQgbWF0Y2ggb3BlbiBwYXJlbnRoZXNpcwo+ICMzMzY6IEZJ TEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmM6NjIyNjoKPiArCXJldCA9IGRybV9o dF9maW5kX2l0ZW0oJnBpZF9lbnRyeS0+bmFtZWxpc3QsCj4gKwkJCQkodW5zaWduZWQgbG9uZykm b2JqLT5iYXNlLCAmaGFzaF9pdGVtKTsKPgo+IC06MzM4OiBDSEVDSzpCUkFDRVM6IGJyYWNlcyB7 fSBzaG91bGQgYmUgdXNlZCBvbiBhbGwgYXJtcyBvZiB0aGlzIHN0YXRlbWVudAo+ICMzMzg6IEZJ TEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmM6NjIyODoKPiArCWlmIChyZXQpIHsK PiBbLi4uXQo+ICsJfSBlbHNlCj4gWy4uLl0KPgo+IC06MzQxOiBDSEVDSzpDT01QQVJJU09OX1RP X05VTEw6IENvbXBhcmlzb24gdG8gTlVMTCBjb3VsZCBiZSB3cml0dGVuICIhZW50cnkiCj4gIzM0 MTogRklMRTogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYzo2MjMxOgo+ICsJCWlmIChl bnRyeSA9PSBOVUxMKSB7Cj4KPiAtOjM1MDogQ0hFQ0s6QlJBQ0VTOiBVbmJhbGFuY2VkIGJyYWNl cyBhcm91bmQgZWxzZSBzdGF0ZW1lbnQKPiAjMzUwOiBGSUxFOiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbS5jOjYyNDA6Cj4gKwl9IGVsc2UKPgo+IC06MzU3OiBDSEVDSzpQQVJFTlRIRVNJ U19BTElHTk1FTlQ6IEFsaWdubWVudCBzaG91bGQgbWF0Y2ggb3BlbiBwYXJlbnRoZXNpcwo+ICMz NTc6IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmM6NjI0NzoKPiArc3RhdGlj IGludCBpOTE1X29ial9zaGFyZWRfY291bnQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aiwKPiArCQkJCXN0cnVjdCBwaWRfc3RhdF9lbnRyeSAqcGlkX2VudHJ5LAo+Cj4gLTozNzE6IENI RUNLOkJSQUNFUzogYnJhY2VzIHt9IHNob3VsZCBiZSB1c2VkIG9uIGFsbCBhcm1zIG9mIHRoaXMg c3RhdGVtZW50Cj4gIzM3MTogRklMRTogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYzo2 MjYxOgo+ICsJaWYgKCFvYmotPmJhc2UubmFtZSAmJiAhb2JqLT5iYXNlLmRtYV9idWYpCj4gWy4u Ll0KPiArCWVsc2UgaWYgKG9iai0+YmFzZS5pbXBvcnRfYXR0YWNoKSB7Cj4gWy4uLl0KPgo+IC06 NDI5OiBDSEVDSzpTUEFDSU5HOiBzcGFjZXMgcHJlZmVycmVkIGFyb3VuZCB0aGF0ICcqJyAoY3R4 OlZ4VikKPiAjNDI5OiBGSUxFOiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jOjYzMTk6 Cj4gKwkJCWk5MTVfb2JqX2dldF9zaG1lbV9wYWdlc19hbGxvY2VkKG9iaikqUEFHRV9TSVpFOwo+ ICAJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgo+Cj4gLTo0Mzk6IENI RUNLOkJSQUNFUzogYnJhY2VzIHt9IHNob3VsZCBiZSB1c2VkIG9uIGFsbCBhcm1zIG9mIHRoaXMg c3RhdGVtZW50Cj4gIzQzOTogRklMRTogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYzo2 MzI5Ogo+ICsJCQlpZiAob2JqX3NoYXJlZF9jb3VudCA+IDEpIHsKPiBbLi4uXQo+ICsJCQl9IGVs c2UKPiBbLi4uXQo+Cj4gLTo0NDM6IENIRUNLOkJSQUNFUzogVW5iYWxhbmNlZCBicmFjZXMgYXJv dW5kIGVsc2Ugc3RhdGVtZW50Cj4gIzQ0MzogRklMRTogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW0uYzo2MzMzOgo+ICsJCQl9IGVsc2UKPgo+IC06NDgwOiBDSEVDSzpDT01QQVJJU09OX1RP X05VTEw6IENvbXBhcmlzb24gdG8gTlVMTCBjb3VsZCBiZSB3cml0dGVuICIhbmV3X2VudHJ5Igo+ ICM0ODA6IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmM6NjM3MDoKPiArCQkJ aWYgKG5ld19lbnRyeSA9PSBOVUxMKSB7Cj4KPiAtOjQ5MDogQ0hFQ0s6UEFSRU5USEVTSVNfQUxJ R05NRU5UOiBBbGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMKPiAjNDkwOiBG SUxFOiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jOjYzODA6Cj4gKwkJCXJldCA9IGRy bV9odF9jcmVhdGUoJm5ld19lbnRyeS0+bmFtZWxpc3QsCj4gKwkJCQkJRFJNX0RFQlVHX01BR0lD X0hBU0hfT1JERVIpOwo+Cj4gLTo1MTk6IENIRUNLOkJSQUNFUzogQmxhbmsgbGluZXMgYXJlbid0 IG5lY2Vzc2FyeSBiZWZvcmUgYSBjbG9zZSBicmFjZSAnfScKPiAjNTE5OiBGSUxFOiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jOjY0MDk6Cj4gKwo+ICsJfQo+Cj4gLTo1NDE6IENIRUNL OlBBUkVOVEhFU0lTX0FMSUdOTUVOVDogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVu dGhlc2lzCj4gIzU0MTogRklMRTogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYzo2NDMx Ogo+ICsJZXJyX3B1dHMobSwKPiArCQkiXG5cbiAgcGlkICAgVG90YWwgIFNoYXJlZCAgUHJpdiAg IFB1cmdlYWJsZSAgQWxsb2NlZCAgU2hhcmVkUEhZc2l6ZSAgIFNoYXJlZFBIWXByb3AgICAgUHJp dlBIWXNpemUgICBQdXJnZWFibGVQSFlzaXplICAgcHJvY2Vzc1xuIik7Cj4KPiAtOjU2MTogQ0hF Q0s6UEFSRU5USEVTSVNfQUxJR05NRU5UOiBBbGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFy ZW50aGVzaXMKPiAjNTYxOiBGSUxFOiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jOjY0 NTE6Cj4gKwkJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG5ld19waWRfZW50cnksIG5ld190ZW1w X2VudHJ5LAo+ICsJCQkmc29ydGVkX3BpZF9zdGF0cywgaGVhZCkgewo+Cj4gLTo1Njc6IFdBUk5J Tkc6TVVMVElMSU5FX0RFUkVGRVJFTkNFOiBBdm9pZCBtdWx0aXBsZSBsaW5lIGRlcmVmZXJlbmNl IC0gcHJlZmVyICduZXdfcGlkX2VudHJ5LT5zdGF0cy5waHlzX3NwYWNlX3NoYXJlZF9wcm9wb3J0 aW9uJwo+ICM1Njc6IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmM6NjQ1NzoK PiArCQkJCW5ld19waWRfZW50cnktPgo+ICsJCQkJc3RhdHMucGh5c19zcGFjZV9zaGFyZWRfcHJv cG9ydGlvbiArCj4KPiAtOjU3MjogQ0hFQ0s6UEFSRU5USEVTSVNfQUxJR05NRU5UOiBBbGlnbm1l bnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMKPiAjNTcyOiBGSUxFOiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbS5jOjY0NjI6Cj4gKwkJCQlsaXN0X2FkZF90YWlsKCZwaWRfZW50 cnktPmhlYWQsCj4gKwkJCQkJJm5ld19waWRfZW50cnktPmhlYWQpOwo+Cj4gLTo1NzY6IENIRUNL OlBBUkVOVEhFU0lTX0FMSUdOTUVOVDogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVu dGhlc2lzCj4gIzU3NjogRklMRTogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYzo2NDY2 Ogo+ICsJCQlpZiAobGlzdF9pc19sYXN0KCZuZXdfcGlkX2VudHJ5LT5oZWFkLAo+ICsJCQkJJnNv cnRlZF9waWRfc3RhdHMpKSB7Cj4KPiAtOjU3OTogQ0hFQ0s6UEFSRU5USEVTSVNfQUxJR05NRU5U OiBBbGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMKPiAjNTc5OiBGSUxFOiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jOjY0Njk6Cj4gKwkJCQlsaXN0X2FkZF90YWls KCZwaWRfZW50cnktPmhlYWQsCj4gKwkJCQkJCSZzb3J0ZWRfcGlkX3N0YXRzKTsKPgo+IC06NTg1 OiBDSEVDSzpQQVJFTlRIRVNJU19BTElHTk1FTlQ6IEFsaWdubWVudCBzaG91bGQgbWF0Y2ggb3Bl biBwYXJlbnRoZXNpcwo+ICM1ODU6IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt LmM6NjQ3NToKPiArCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwaWRfZW50cnksIHRlbXBfZW50 cnksCj4gKwkJCQkmc29ydGVkX3BpZF9zdGF0cywgaGVhZCkgewo+Cj4gLTo1ODk6IENIRUNLOlBB UkVOVEhFU0lTX0FMSUdOTUVOVDogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVudGhl c2lzCj4gIzU4OTogRklMRTogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYzo2NDc5Ogo+ ICsJCWVycl9wcmludGYobSwKPiArCQkJIiU1ZCAlNmQgJTZkICU2ZCAlOWQgJThkICUxNHpkSyAl MTR6ZEsgJTE0emRLICAlMTR6ZEsgICAgICVzIiwKPgo+IC06NTk2OiBDSEVDSzpTUEFDSU5HOiBz cGFjZXMgcHJlZmVycmVkIGFyb3VuZCB0aGF0ICcvJyAoY3R4OlZ4VikKPiAjNTk2OiBGSUxFOiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jOjY0ODY6Cj4gKwkJCSAgIHBpZF9lbnRyeS0+ c3RhdHMucGh5c19zcGFjZV9hbGxvY2F0ZWRfc2hhcmVkLzEwMjQsCj4gIAkJCSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgo+Cj4gLTo1OTc6IENIRUNLOlNQ QUNJTkc6IHNwYWNlcyBwcmVmZXJyZWQgYXJvdW5kIHRoYXQgJy8nIChjdHg6VnhWKQo+ICM1OTc6 IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmM6NjQ4NzoKPiArCQkJICAgcGlk X2VudHJ5LT5zdGF0cy5waHlzX3NwYWNlX3NoYXJlZF9wcm9wb3J0aW9uLzEwMjQsCj4gIAkJCSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KPgo+IC06NTk4 OiBDSEVDSzpTUEFDSU5HOiBzcGFjZXMgcHJlZmVycmVkIGFyb3VuZCB0aGF0ICcvJyAoY3R4OlZ4 VikKPiAjNTk4OiBGSUxFOiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jOjY0ODg6Cj4g KwkJCSAgIHBpZF9lbnRyeS0+c3RhdHMucGh5c19zcGFjZV9hbGxvY2F0ZWRfcHJpdi8xMDI0LAo+ ICAJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCj4KPiAt OjU5OTogQ0hFQ0s6U1BBQ0lORzogc3BhY2VzIHByZWZlcnJlZCBhcm91bmQgdGhhdCAnLycgKGN0 eDpWeFYpCj4gIzU5OTogRklMRTogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYzo2NDg5 Ogo+ICsJCQkgICBwaWRfZW50cnktPnN0YXRzLnBoeXNfc3BhY2VfcHVyZ2VhYmxlLzEwMjQsCj4g IAkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCj4KPiAtOjYwMjog Q0hFQ0s6Q09NUEFSSVNPTl9UT19OVUxMOiBDb21wYXJpc29uIHRvIE5VTEwgY291bGQgYmUgd3Jp dHRlbiAiIXRhc2siCj4gIzYwMjogRklMRTogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0u Yzo2NDkyOgo+ICsJCWlmICh0YXNrID09IE5VTEwpCj4KPiAtOjYwODogQ0hFQ0s6U1BBQ0lORzog c3BhY2VzIHByZWZlcnJlZCBhcm91bmQgdGhhdCAnLycgKGN0eDpWeFYpCj4gIzYwODogRklMRTog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYzo2NDk4Ogo+ICsJCQlwaWRfZW50cnktPnN0 YXRzLnBoeXNfc3BhY2Vfc2hhcmVkX3Byb3BvcnRpb24vMTAyNDsKPiAgCQkJICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgo+Cj4gLTo2MTA6IENIRUNLOlNQQUNJ Tkc6IHNwYWNlcyBwcmVmZXJyZWQgYXJvdW5kIHRoYXQgJy8nIChjdHg6VnhWKQo+ICM2MTA6IEZJ TEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmM6NjUwMDoKPiArCQkJcGlkX2VudHJ5 LT5zdGF0cy5waHlzX3NwYWNlX2FsbG9jYXRlZF9wcml2LzEwMjQ7Cj4gIAkJCSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KPgo+IC06NjE0OiBDSEVDSzpQQVJFTlRI RVNJU19BTElHTk1FTlQ6IEFsaWdubWVudCBzaG91bGQgbWF0Y2ggb3BlbiBwYXJlbnRoZXNpcwo+ ICM2MTQ6IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmM6NjUwNDoKPiArCQls aXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZW50cnksIG5leHQsCj4gKwkJCQkJJnBpZF9lbnRyeS0+ bmFtZWZyZWUsIGhlYWQpIHsKPgo+IC06NjE3OiBDSEVDSzpQQVJFTlRIRVNJU19BTElHTk1FTlQ6 IEFsaWdubWVudCBzaG91bGQgbWF0Y2ggb3BlbiBwYXJlbnRoZXNpcwo+ICM2MTc6IEZJTEU6IGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmM6NjUwNzoKPiArCQkJZHJtX2h0X3JlbW92ZV9p dGVtKCZwaWRfZW50cnktPm5hbWVsaXN0LAo+ICsJCQkJCSZlbnRyeS0+aGFzaF9pdGVtKTsKPgo+ IC06NjI4OiBDSEVDSzpQQVJFTlRIRVNJU19BTElHTk1FTlQ6IEFsaWdubWVudCBzaG91bGQgbWF0 Y2ggb3BlbiBwYXJlbnRoZXNpcwo+ICM2Mjg6IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtLmM6NjUxODoKPiArCWVycl9wdXRzKG0sCj4gKwkJIlx0XHRcdFx0XHRcdFx0XHQtLS0t LS0tLS0tLS0tLVx0LS0tLS0tLS0tLS0tLVx0LS0tLS0tLS1cbiIpOwo+Cj4gLTo2MzA6IENIRUNL OlBBUkVOVEhFU0lTX0FMSUdOTUVOVDogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVu dGhlc2lzCj4gIzYzMDogRklMRTogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYzo2NTIw Ogo+ICsJZXJyX3ByaW50ZihtLAo+ICsJCSJcdFx0XHRcdFx0XHRcdFx0JTEzemRLXHQlMTJ6ZEtc dFRvdGFsXG4iLAo+Cj4gLTo3NTQ6IENIRUNLOkxJTkVfU1BBQ0lORzogUGxlYXNlIHVzZSBhIGJs YW5rIGxpbmUgYWZ0ZXIgZnVuY3Rpb24vc3RydWN0L3VuaW9uL2VudW0gZGVjbGFyYXRpb25zCj4g Izc1NDogRklMRTogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jOjU1NToKPiAgfQo+ ICtzdGF0aWMgc3NpemVfdCBpOTE1X2dlbV9jbGllbnRzX3N0YXRlX3JlYWQoc3RydWN0IGZpbGUg KmZpbHAsCj4KPiAtOjc1NTogQ0hFQ0s6UEFSRU5USEVTSVNfQUxJR05NRU5UOiBBbGlnbm1lbnQg c2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMKPiAjNzU1OiBGSUxFOiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3N5c2ZzLmM6NTU2Ogo+ICtzdGF0aWMgc3NpemVfdCBpOTE1X2dlbV9jbGll bnRzX3N0YXRlX3JlYWQoc3RydWN0IGZpbGUgKmZpbHAsCj4gKwkJCQlzdHJ1Y3Qga29iamVjdCAq bWVtdHJhY2tfa29iaiwKPgo+IC06NzkxOiBDSEVDSzpMSU5FX1NQQUNJTkc6IFBsZWFzZSB1c2Ug YSBibGFuayBsaW5lIGFmdGVyIGZ1bmN0aW9uL3N0cnVjdC91bmlvbi9lbnVtIGRlY2xhcmF0aW9u cwo+ICM3OTE6IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYzo1OTM6Cj4g IH07Cj4gK3N0YXRpYyBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSBpOTE1X2dlbV9jbGllbnRfc3RhdGVf YXR0ciA9IHsKPgo+IC06NzkzOiBXQVJOSU5HOlNZTUJPTElDX1BFUk1TOiBTeW1ib2xpYyBwZXJt aXNzaW9ucyAnU19JUlVTUiB8IFNfSVdVU1IgfCBTX0lSR1JQIHwgU19JUk9USCcgYXJlIG5vdCBw cmVmZXJyZWQuIENvbnNpZGVyIHVzaW5nIG9jdGFsIHBlcm1pc3Npb25zICcwNjQ0Jy4KPiAjNzkz OiBGSUxFOiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmM6NTk1Ogo+ICsJLmF0dHIu bW9kZSA9IFNfSVJVU1IgfCBTX0lXVVNSIHwgU19JUkdSUCB8IFNfSVJPVEgsCj4KPiAtOjgxOTog Q0hFQ0s6T1BFTl9FTkRFRF9MSU5FOiBMaW5lcyBzaG91bGQgbm90IGVuZCB3aXRoIGEgJygnCj4g IzgxOTogRklMRTogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jOjYyMToKPiArCQly ZXQgPSBrb2JqZWN0X2luaXRfYW5kX2FkZCgKPgo+IC06ODIzOiBDSEVDSzpPUEVOX0VOREVEX0xJ TkU6IExpbmVzIHNob3VsZCBub3QgZW5kIHdpdGggYSAnKCcKPiAjODIzOiBGSUxFOiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmM6NjI1Ogo+ICsJCQlEUk1fRVJST1IoCj4KPiAtOjgy OTogQ0hFQ0s6UEFSRU5USEVTSVNfQUxJR05NRU5UOiBBbGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9w ZW4gcGFyZW50aGVzaXMKPiAjODI5OiBGSUxFOiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5 c2ZzLmM6NjMxOgo+ICsJCQlyZXQgPSBzeXNmc19jcmVhdGVfYmluX2ZpbGUoJmRldl9wcml2LT5t ZW10cmFja19rb2JqLAo+ICsJCQkJCSAgICAmaTkxNV9nZW1fY2xpZW50X3N0YXRlX2F0dHIpOwo+ Cj4gLTo4MzE6IENIRUNLOk9QRU5fRU5ERURfTElORTogTGluZXMgc2hvdWxkIG5vdCBlbmQgd2l0 aCBhICcoJwo+ICM4MzE6IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYzo2 MzM6Cj4gKwkJCQlEUk1fRVJST1IoCj4KPiAtOjg0NzogQ0hFQ0s6UEFSRU5USEVTSVNfQUxJR05N RU5UOiBBbGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMKPiAjODQ3OiBGSUxF OiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmM6NzE4Ogo+ICsJCXN5c2ZzX3JlbW92 ZV9iaW5fZmlsZSgmZGV2X3ByaXYtPm1lbXRyYWNrX2tvYmosCj4gKwkJCQkJJmk5MTVfZ2VtX2Ns aWVudF9zdGF0ZV9hdHRyKTsKPgo+IHRvdGFsOiAwIGVycm9ycywgMiB3YXJuaW5ncywgNDMgY2hl Y2tzLCA3NjYgbGluZXMgY2hlY2tlZAo+IDI3YmZhNTVkZDE2NSBkcm0vaTkxNTogQ2FsY3VsYXRl IHRvdGFsIHNobWVtIEdGWCBtZW1vcnkgY29uc3VtZWQKPiAtOjg0OiBDSEVDSzpVTk5FQ0VTU0FS WV9QQVJFTlRIRVNFUzogVW5uZWNlc3NhcnkgcGFyZW50aGVzZXMgYXJvdW5kICdvYmotPmhhc19i YWNraW5nX3BhZ2VzID09IDEnCj4gIzg0OiBGSUxFOiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbS5jOjQ4ODQ6Cj4gKwkJaWYgKCFvYmotPnN0b2xlbiAmJiAob2JqLT5oYXNfYmFja2luZ19w YWdlcyA9PSAxKSkgewo+Cj4gLToxMjY6IENIRUNLOlBBUkVOVEhFU0lTX0FMSUdOTUVOVDogQWxp Z25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVudGhlc2lzCj4gIzEyNjogRklMRTogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYzo2NTU0Ogo+ICsJZXJyX3ByaW50ZihtLCAiXG5Ub3Rh bCB1c2VkIEdGWCBTaG1lbSBQaHlzaWNhbCBzcGFjZSAlOHpkS1xuIiwKPiArCQkgIGRldl9wcml2 LT5tbS5waHlzX21lbV90b3RhbC8xMDI0KTsKPgo+IC06MTI2OiBDSEVDSzpTUEFDSU5HOiBzcGFj ZXMgcHJlZmVycmVkIGFyb3VuZCB0aGF0ICcvJyAoY3R4OlZ4VikKPiAjMTI2OiBGSUxFOiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jOjY1NTQ6Cj4gKwkJICBkZXZfcHJpdi0+bW0ucGh5 c19tZW1fdG90YWwvMTAyNCk7Cj4gIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCj4K PiB0b3RhbDogMCBlcnJvcnMsIDAgd2FybmluZ3MsIDMgY2hlY2tzLCAxMDEgbGluZXMgY2hlY2tl ZAo+IDBkOGQyNzhkZWZhYiBkcm0vaTkxNTogU3lzZnMgaW50ZXJmYWNlIHRvIGdldCBkZXRhaWxl ZCBHRlggYnVmZmVyIGluZm8gcGVyIHByb2Nlc3MKPiAtOjE2NzogQ0hFQ0s6Q09NUEFSSVNPTl9U T19OVUxMOiBDb21wYXJpc29uIHRvIE5VTEwgY291bGQgYmUgd3JpdHRlbiAiIWNsaWVudF9waWQi Cj4gIzE2NzogRklMRTogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYzozNjg5Ogo+ICsJ CWlmIChjbGllbnRfcGlkID09IE5VTEwpIHsKPgo+IC06MTc1OiBDSEVDSzpQQVJFTlRIRVNJU19B TElHTk1FTlQ6IEFsaWdubWVudCBzaG91bGQgbWF0Y2ggb3BlbiBwYXJlbnRoZXNpcwo+ICMxNzU6 IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmM6MzY5NzoKPiArCQlyZXQgPSBp OTE1X2dlbV9jcmVhdGVfc3lzZnNfZmlsZV9lbnRyeSgmaTkxNS0+ZHJtLAo+ICsJCQkJCQkgJmNs aWVudF9waWQtPm9ial9hdHRyKTsKPgo+IC06MTg3OiBDSEVDSzpCUkFDRVM6IEJsYW5rIGxpbmVz IGFyZW4ndCBuZWNlc3NhcnkgYmVmb3JlIGEgY2xvc2UgYnJhY2UgJ30nCj4gIzE4NzogRklMRTog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYzozNzA5Ogo+ICsKPiArCX0KPgo+IC06MjAx OiBDSEVDSzpVTk5FQ0VTU0FSWV9QQVJFTlRIRVNFUzogVW5uZWNlc3NhcnkgcGFyZW50aGVzZXMg YXJvdW5kICdjbGllbnRfcGlkLT50Z2lkID09IHRnaWQnCj4gIzIwMTogRklMRTogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYzozNzIzOgo+ICsJCWlmICgoY2xpZW50X3BpZC0+dGdpZCA9 PSB0Z2lkKSAmJgo+ICsJCSAgICAoLS1jbGllbnRfcGlkLT5vcGVuX29ial9jb3VudCA9PSAwKSkg ewo+Cj4gLToyNDk6IENIRUNLOkxJTkVfU1BBQ0lORzogUGxlYXNlIGRvbid0IHVzZSBtdWx0aXBs ZSBibGFuayBsaW5lcwo+ICMyNDk6IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt LmM6Mzc5MDoKPiAgCj4gKwo+Cj4gLTozMjI6IENIRUNLOlNQQUNJTkc6IHNwYWNlcyBwcmVmZXJy ZWQgYXJvdW5kIHRoYXQgJyonIChjdHg6VnhWKQo+ICMzMjI6IEZJTEU6IGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtLmM6NjQzNjoKPiArCQlucl9ieXRlcyA9IGk5MTVfb2JqX2dldF9zaG1l bV9wYWdlc19hbGxvY2VkKG9iaikqUEFHRV9TSVpFOwo+ICAJCSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KPgo+IC06MzI0OiBDSEVDSzpVTk5FQ0VTU0FS WV9QQVJFTlRIRVNFUzogVW5uZWNlc3NhcnkgcGFyZW50aGVzZXMgYXJvdW5kICdvYmotPm1tLm1h ZHYgIT0gX19JOTE1X01BRFZfUFVSR0VEJwo+ICMzMjQ6IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtLmM6NjQzODoKPiArCWlmICghZGlzY2FyZCAmJiAhb2JqLT5zdG9sZW4gJiYK PiArCQkJKG9iai0+bW0ubWFkdiAhPSBfX0k5MTVfTUFEVl9QVVJHRUQpICYmCj4gKwkJCShucl9i eXRlcyAhPSAwKSkgewo+Cj4gLTozMjQ6IENIRUNLOlVOTkVDRVNTQVJZX1BBUkVOVEhFU0VTOiBV bm5lY2Vzc2FyeSBwYXJlbnRoZXNlcyBhcm91bmQgJ25yX2J5dGVzICE9IDAnCj4gIzMyNDogRklM RTogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYzo2NDM4Ogo+ICsJaWYgKCFkaXNjYXJk ICYmICFvYmotPnN0b2xlbiAmJgo+ICsJCQkob2JqLT5tbS5tYWR2ICE9IF9fSTkxNV9NQURWX1BV UkdFRCkgJiYKPiArCQkJKG5yX2J5dGVzICE9IDApKSB7Cj4KPiAtOjMyNTogQ0hFQ0s6UEFSRU5U SEVTSVNfQUxJR05NRU5UOiBBbGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMK PiAjMzI1OiBGSUxFOiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jOjY0Mzk6Cj4gKwlp ZiAoIWRpc2NhcmQgJiYgIW9iai0+c3RvbGVuICYmCj4gKwkJCShvYmotPm1tLm1hZHYgIT0gX19J OTE1X01BRFZfUFVSR0VEKSAmJgo+Cj4gLTozMzU6IENIRUNLOlBBUkVOVEhFU0lTX0FMSUdOTUVO VDogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVudGhlc2lzCj4gIzMzNTogRklMRTog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYzo2NDQ5Ogo+ICsJaTkxNV9lcnJvcl9wcmlu dGYobSwKPiArCQkiJXA6ICU3emRLICAlMTB6ZEsgICAgICVjICAgICAgJWMgICAgICVzICAgICAg JXMgICAgICAlcyAgICAgJXMgICAgICVzIiwKPgo+IC06MzY4OiBDSEVDSzpQQVJFTlRIRVNJU19B TElHTk1FTlQ6IEFsaWdubWVudCBzaG91bGQgbWF0Y2ggb3BlbiBwYXJlbnRoZXNpcwo+ICMzNjg6 IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmM6NjQ4MjoKPiArCQlpOTE1X2Vy cm9yX3ByaW50ZihtLCAiICglZDogJWQpIiwKPiArCQkJICAgcGlkX2luZm9fZW50cnktPnRnaWQs Cj4KPiAtOjM4OTogQ0hFQ0s6QlJBQ0VTOiBCbGFuayBsaW5lcyBhcmVuJ3QgbmVjZXNzYXJ5IGFm dGVyIGFuIG9wZW4gYnJhY2UgJ3snCj4gIzM4OTogRklMRTogZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW0uYzo2NTAzOgo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShwaWRfaW5mbywgJm9iai0+ cGlkX2luZm8sIGhlYWQpIHsKPiArCj4KPiAtOjQzNTogQ0hFQ0s6Q09OQ0FURU5BVEVEX1NUUklO RzogQ29uY2F0ZW5hdGVkIHN0cmluZ3Mgc2hvdWxkIHVzZSBzcGFjZXMgYmV0d2VlbiBlbGVtZW50 cwo+ICM0MzU6IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmM6Njc5MjoKPiAr CWk5MTVfZXJyb3JfcHJpbnRmKG0sICIlIlNQQUNFU19TVFIoTlVNX1NQQUNFUykic1xuIiwgIiAi KTsKPgo+IC06NDM4OiBDSEVDSzpQQVJFTlRIRVNJU19BTElHTk1FTlQ6IEFsaWdubWVudCBzaG91 bGQgbWF0Y2ggb3BlbiBwYXJlbnRoZXNpcwo+ICM0Mzg6IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtLmM6Njc5NToKPiArCWVycl9wdXRzKG0sCj4gKwkJIlxuIE9iaiBJZGVudGlm aWVyICAgT2JqLVNpemUgUmVzaWRlbnQtU2l6ZSBQaW4gVGlsaW5nIERpcnR5IFNoYXJlZCBWbWFw IFN0b2xlbiBNYXBwYWJsZSAgQWxsb2NTdGF0ZSBHbG9iYWwvUFAgIEd0dE9mZnNldCAoUElEOiBo YW5kbGUgY291bnQpXG4iKTsKPgo+IC06NDQ4OiBDSEVDSzpQQVJFTlRIRVNJU19BTElHTk1FTlQ6 IEFsaWdubWVudCBzaG91bGQgbWF0Y2ggb3BlbiBwYXJlbnRoZXNpcwo+ICM0NDg6IEZJTEU6IGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmM6NjgwNToKPiArCQlyZXQgPSBpZHJfZm9yX2Vh Y2goJmZpbGUtPm9iamVjdF9pZHIsCj4gKwkJCQkmaTkxNV9kcm1fZ2VtX29ial9pbmZvLCAmb2Jq X3N0YXRfYnVmKTsKPgo+IC06NDYwOiBDSEVDSzpQQVJFTlRIRVNJU19BTElHTk1FTlQ6IEFsaWdu bWVudCBzaG91bGQgbWF0Y2ggb3BlbiBwYXJlbnRoZXNpcwo+ICM0NjA6IEZJTEU6IGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmM6NjgxNzoKPiArCWk5MTVfZXJyb3JfcHJpbnRmKG0sICIl NWQgJTh6ZEsgIiwgcGlkX25yKHRnaWQpLAo+ICsJCQkocGlkX2VudHJ5LnN0YXRzLnBoeXNfc3Bh Y2Vfc2hhcmVkX3Byb3BvcnRpb24gKwo+Cj4gLTo0NjE6IENIRUNLOlNQQUNJTkc6IHNwYWNlcyBw cmVmZXJyZWQgYXJvdW5kIHRoYXQgJy8nIChjdHg6VnhWKQo+ICM0NjE6IEZJTEU6IGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmM6NjgxODoKPiArCQkJIHBpZF9lbnRyeS5zdGF0cy5waHlz X3NwYWNlX2FsbG9jYXRlZF9wcml2KS8xMDI0KTsKPiAgCQkJICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KPgo+IC06NDY4OiBDSEVDSzpQQVJFTlRIRVNJU19BTElH Tk1FTlQ6IEFsaWdubWVudCBzaG91bGQgbWF0Y2ggb3BlbiBwYXJlbnRoZXNpcwo+ICM0Njg6IEZJ TEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmM6NjgyNToKPiArCQlkcm1faHRfcmVt b3ZlX2l0ZW0oJnBpZF9lbnRyeS5uYW1lbGlzdCwKPiArCQkJCSZlbnRyeS0+aGFzaF9pdGVtKTsK Pgo+IC06NDg5OiBDSEVDSzpQQVJFTlRIRVNJU19BTElHTk1FTlQ6IEFsaWdubWVudCBzaG91bGQg bWF0Y2ggb3BlbiBwYXJlbnRoZXNpcwo+ICM0ODk6IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtLmM6Njg2MzoKPiAraW50IGk5MTVfZ2VtX2dldF9vYmpfaW5mbyhzdHJ1Y3QgZHJt X2k5MTVfZXJyb3Jfc3RhdGVfYnVmICptLAo+ICsJCQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBz dHJ1Y3QgcGlkICp0Z2lkKQo+Cj4gLTo1MTI6IENIRUNLOlBBUkVOVEhFU0lTX0FMSUdOTUVOVDog QWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVudGhlc2lzCj4gIzUxMjogRklMRTogZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYzo4NjM6Cj4gK2ludCBpOTE1X29ial9z dGF0ZV9idWZfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICplYnVmLAo+ICsJ CQkJc2l6ZV90IGNvdW50KQo+Cj4gLTo1MTg6IENIRUNLOkNPTVBBUklTT05fVE9fTlVMTDogQ29t cGFyaXNvbiB0byBOVUxMIGNvdWxkIGJlIHdyaXR0ZW4gIiFlYnVmLT5idWYiCj4gIzUxODogRklM RTogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYzo4Njk6Cj4gKwlpZiAoZWJ1 Zi0+YnVmID09IE5VTEwpCj4KPiAtOjU0OTogQ0hFQ0s6TElORV9TUEFDSU5HOiBQbGVhc2UgdXNl IGEgYmxhbmsgbGluZSBhZnRlciBmdW5jdGlvbi9zdHJ1Y3QvdW5pb24vZW51bSBkZWNsYXJhdGlv bnMKPiAjNTQ5OiBGSUxFOiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmM6NTg1Ogo+ ICB9Cj4gKyNkZWZpbmUgR0VNX09CSl9TVEFUX0JVRl9TSVpFICg0KjEwMjQpIC8qIDRLQiAqLwo+ Cj4gLTo1NDk6IENIRUNLOlNQQUNJTkc6IHNwYWNlcyBwcmVmZXJyZWQgYXJvdW5kIHRoYXQgJyon IChjdHg6VnhWKQo+ICM1NDk6IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMu Yzo1ODU6Cj4gKyNkZWZpbmUgR0VNX09CSl9TVEFUX0JVRl9TSVpFICg0KjEwMjQpIC8qIDRLQiAq Lwo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KPgo+IC06NTUwOiBDSEVDSzpT UEFDSU5HOiBzcGFjZXMgcHJlZmVycmVkIGFyb3VuZCB0aGF0ICcqJyAoY3R4OlZ4VikKPiAjNTUw OiBGSUxFOiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmM6NTg2Ogo+ICsjZGVmaW5l IEdFTV9PQkpfU1RBVF9CVUZfU0laRV9NQVggKDEwMjQqMTAyNCkgLyogMU1CICovCj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KPgo+IC06NTU5OiBDSEVDSzpQQVJF TlRIRVNJU19BTElHTk1FTlQ6IEFsaWdubWVudCBzaG91bGQgbWF0Y2ggb3BlbiBwYXJlbnRoZXNp cwo+ICM1NTk6IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYzo1OTU6Cj4g K3N0YXRpYyBzc2l6ZV90IGk5MTVfZ2VtX3JlYWRfb2JqZWN0cyhzdHJ1Y3QgZmlsZSAqZmlscCwK PiArCQkJCXN0cnVjdCBrb2JqZWN0ICptZW10cmFja19rb2JqLAo+Cj4gLTo2MDE6IENIRUNLOk9Q RU5fRU5ERURfTElORTogTGluZXMgc2hvdWxkIG5vdCBlbmQgd2l0aCBhICcoJwo+ICM2MDE6IEZJ TEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYzo2Mzc6Cj4gKwkJRFJNX0VSUk9S KAo+Cj4gLTo2MTA6IENIRUNLOlBBUkVOVEhFU0lTX0FMSUdOTUVOVDogQWxpZ25tZW50IHNob3Vs ZCBtYXRjaCBvcGVuIHBhcmVudGhlc2lzCj4gIzYxMDogRklMRTogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9zeXNmcy5jOjY0NjoKPiArCQkJcmV0ID0gaTkxNV9vYmpfc3RhdGVfYnVmX2luaXQo JmF0dHJfcHJpdi0+YnVmLAo+ICsJCQkJYnVmX3NpemUpOwo+Cj4gLTo2MTI6IENIRUNLOk9QRU5f RU5ERURfTElORTogTGluZXMgc2hvdWxkIG5vdCBlbmQgd2l0aCBhICcoJwo+ICM2MTI6IEZJTEU6 IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYzo2NDg6Cj4gKwkJCQlEUk1fRVJST1Io Cj4KPiAtOjY0MzogQ0hFQ0s6UEFSRU5USEVTSVNfQUxJR05NRU5UOiBBbGlnbm1lbnQgc2hvdWxk IG1hdGNoIG9wZW4gcGFyZW50aGVzaXMKPiAjNjQzOiBGSUxFOiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3N5c2ZzLmM6Njc5Ogo+ICsJCQlyZXQgPSBpOTE1X29ial9zdGF0ZV9idWZfaW5pdCgm YXR0cl9wcml2LT5idWYsCj4gKwkJCQkJCWJ1Zl9zaXplKTsKPgo+IC06NjQ1OiBDSEVDSzpPUEVO X0VOREVEX0xJTkU6IExpbmVzIHNob3VsZCBub3QgZW5kIHdpdGggYSAnKCcKPiAjNjQ1OiBGSUxF OiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmM6NjgxOgo+ICsJCQkJRFJNX0VSUk9S KAo+Cj4gLTo2NTc6IENIRUNLOkJSQUNFUzogYnJhY2VzIHt9IHNob3VsZCBiZSB1c2VkIG9uIGFs bCBhcm1zIG9mIHRoaXMgc3RhdGVtZW50Cj4gIzY1NzogRklMRTogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9zeXNmcy5jOjY5MzoKPiArCWlmIChieXRlc19hdmFpbGFibGUgPiAwKSB7Cj4gWy4u Ll0KPiArCX0gZWxzZQo+IFsuLi5dCj4KPiAtOjY2MDogQ0hFQ0s6QlJBQ0VTOiBVbmJhbGFuY2Vk IGJyYWNlcyBhcm91bmQgZWxzZSBzdGF0ZW1lbnQKPiAjNjYwOiBGSUxFOiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3N5c2ZzLmM6Njk2Ogo+ICsJfSBlbHNlCj4KPiAtOjY5MDogV0FSTklORzpT WU1CT0xJQ19QRVJNUzogU3ltYm9saWMgcGVybWlzc2lvbnMgJ1NfSVJVU1IgfCBTX0lXVVNSIHwg U19JUkdSUCB8IFNfSVJPVEgnIGFyZSBub3QgcHJlZmVycmVkLiBDb25zaWRlciB1c2luZyBvY3Rh bCBwZXJtaXNzaW9ucyAnMDY0NCcuCj4gIzY5MDogRklMRTogZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9zeXNmcy5jOjcyNjoKPiArCW9ial9hdHRyLT5hdHRyLm1vZGUgPSBTX0lSVVNSIHwgU19J V1VTUiB8IFNfSVJHUlAgfCBTX0lST1RIOwo+Cj4gLTo3MDA6IENIRUNLOk9QRU5fRU5ERURfTElO RTogTGluZXMgc2hvdWxkIG5vdCBlbmQgd2l0aCBhICcoJwo+ICM3MDA6IEZJTEU6IGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYzo3MzY6Cj4gKwkJRFJNX0VSUk9SKAo+Cj4gLTo3MjM6 IENIRUNLOkNPTVBBUklTT05fVE9fTlVMTDogQ29tcGFyaXNvbiB0byBOVUxMIGNvdWxkIGJlIHdy aXR0ZW4gIiFvYmpfYXR0ciIKPiAjNzIzOiBGSUxFOiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3N5c2ZzLmM6NzU5Ogo+ICsJaWYgKFdBUk5fT04ob2JqX2F0dHIgPT0gTlVMTCkpCj4KPiB0b3Rh bDogMCBlcnJvcnMsIDEgd2FybmluZ3MsIDM0IGNoZWNrcywgNjY0IGxpbmVzIGNoZWNrZWQKPiA0 ODYyMDRiMGRhYzkgZHJtL2k5MTU6IE91dHB1dCB0aGUgdXNlciB2aXJ0dWFsIGFkZHJlc3NlcyBm b3IgR0ZYIGJ1ZmZlcnMKPiAtOjk3OiBDSEVDSzpQQVJFTlRIRVNJU19BTElHTk1FTlQ6IEFsaWdu bWVudCBzaG91bGQgbWF0Y2ggb3BlbiBwYXJlbnRoZXNpcwo+ICM5NzogRklMRTogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYzo2MzQ1Ogo+ICsJCQkJbGlzdF9mb3JfZWFjaF9lbnRyeV9z YWZlKHZpcnRfZW50cnksCj4gKwkJCQkJCXZpcnRfbmV4dCwKPgo+IC06MTY1OiBDSEVDSzpDT01Q QVJJU09OX1RPX05VTEw6IENvbXBhcmlzb24gdG8gTlVMTCBjb3VsZCBiZSB3cml0dGVuICIhbmV3 X2VudHJ5Igo+ICMxNjU6IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmM6NjQy NjoKPiArCQkJaWYgKG5ld19lbnRyeSA9PSBOVUxMKSB7Cj4KPiAtOjE3MjogQ0hFQ0s6UEFSRU5U SEVTSVNfQUxJR05NRU5UOiBBbGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMK PiAjMTcyOiBGSUxFOiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jOjY0MzM6Cj4gKwkJ CWxpc3RfYWRkX3RhaWwoJm5ld19lbnRyeS0+aGVhZCwKPiArCQkJCSZwaWRfZW50cnktPnZpcnRf YWRkcl9oZWFkKTsKPgo+IC06MjEyOiBDSEVDSzpQQVJFTlRIRVNJU19BTElHTk1FTlQ6IEFsaWdu bWVudCBzaG91bGQgbWF0Y2ggb3BlbiBwYXJlbnRoZXNpcwo+ICMyMTI6IEZJTEU6IGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmM6NjU3OToKPiArCQkJCWVycl9wcmludGYobSwgIiAlcCIs Cj4gKwkJCQkodm9pZCAqKSh2aXJ0X2VudHJ5LT51c2VyX3ZpcnRfYWRkciAmIH4xKSk7Cj4KPiAt OjIxNTogQ0hFQ0s6UEFSRU5USEVTSVNfQUxJR05NRU5UOiBBbGlnbm1lbnQgc2hvdWxkIG1hdGNo IG9wZW4gcGFyZW50aGVzaXMKPiAjMjE1OiBGSUxFOiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbS5jOjY1ODI6Cj4gKwkJCQllcnJfcHJpbnRmKG0sICIgJXAqIiwKPiArCQkJCSh2b2lkICop dmlydF9lbnRyeS0+dXNlcl92aXJ0X2FkZHIpOwo+Cj4gdG90YWw6IDAgZXJyb3JzLCAwIHdhcm5p bmdzLCA1IGNoZWNrcywgMTk5IGxpbmVzIGNoZWNrZWQKPiAwNWE0NzgyY2M3N2YgZHJtL2k5MTU6 IFVwZGF0ZSBwcm9jZXNzIG1tIHN0YXRzIGZvciBHZW4gR0ZYIG1lbW9yeQo+IC06ODA6IENIRUNL OlBBUkVOVEhFU0lTX0FMSUdOTUVOVDogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVu dGhlc2lzCj4gIzgwOiBGSUxFOiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jOjYzMDY6 Cj4gKwkJYWRkX21tX2NvdW50ZXIocGlkX2VudHJ5LT5hdHRyX3ByaXYtPm1tLCBNTV9GSUxFUEFH RVMsCj4gKwkJCQluZXdfc2l6ZSAtIG9sZF9zaXplKTsKPgo+IC06MjQ4OiBDSEVDSzpQQVJFTlRI RVNJU19BTElHTk1FTlQ6IEFsaWdubWVudCBzaG91bGQgbWF0Y2ggb3BlbiBwYXJlbnRoZXNpcwo+ ICMyNDg6IEZJTEU6IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYzo3NzA6Cj4gKwkJ YWRkX21tX2NvdW50ZXIoYXR0cl9wcml2LT5tbSwgTU1fRklMRVBBR0VTLAo+ICsJCQkJLWF0dHJf cHJpdi0+cnNzX3NpemUpOwo+Cj4gdG90YWw6IDAgZXJyb3JzLCAwIHdhcm5pbmdzLCAyIGNoZWNr cywgMTkyIGxpbmVzIGNoZWNrZWQKPgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAoKLS0gCkphbmkgTmlrdWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBU ZWNobm9sb2d5IENlbnRlcgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK