From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v3 08/14] drm/i915/scheduler: Execute requests in order of priorities Date: Mon, 14 Nov 2016 11:15:52 +0000 Message-ID: References: <20161107135950.28861-1-chris@chris-wilson.co.uk> <20161114085703.16540-1-chris@chris-wilson.co.uk> <20161114085703.16540-8-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id A3B466E3AF for ; Mon, 14 Nov 2016 11:15:57 +0000 (UTC) In-Reply-To: <20161114085703.16540-8-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDE0LzExLzIwMTYgMDg6NTYsIENocmlzIFdpbHNvbiB3cm90ZToKPiBUcmFjayB0aGUgcHJp b3JpdHkgb2YgZWFjaCByZXF1ZXN0IGFuZCB1c2UgaXQgdG8gZGV0ZXJtaW5lIHRoZSBvcmRlciBp bgo+IHdoaWNoIHdlIHN1Ym1pdCByZXF1ZXN0cyB0byB0aGUgaGFyZHdhcmUgdmlhIGV4ZWNsaXN0 cy4KPgo+IFRoZSBwcmlvcml0eSBvZiB0aGUgcmVxdWVzdCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB1 c2VyIChldmVudHVhbGx5IHZpYQo+IHRoZSBjb250ZXh0KSBidXQgbWF5IGJlIG92ZXJyaWRkZW4g YXQgYW55IHRpbWUgYnkgdGhlIGRyaXZlci4gV2hlbiB3ZSBzZXQKPiB0aGUgcHJpb3JpdHkgb2Yg dGhlIHJlcXVlc3QsIHdlIGJ1bXAgdGhlIHByaW9yaXR5IG9mIGFsbCBvZiBpdHMKPiBkZXBlbmRl bmNpZXMgdG8gbWF0Y2ggLSBzbyB0aGF0IGEgaGlnaCBwcmlvcml0eSBkcmF3aW5nIG9wZXJhdGlv biBpcyBub3QKPiBzdHVjayBiZWhpbmQgYSBiYWNrZ3JvdW5kIHRhc2suCj4KPiBXaGVuIHRoZSBy ZXF1ZXN0IGlzIHJlYWR5IHRvIGV4ZWN1dGUgKGkuZS4gd2UgaGF2ZSBzaWduYWxlZCB0aGUgc3Vi bWl0Cj4gZmVuY2UgZm9sbG93aW5nIGNvbXBsZXRpb24gb2YgYWxsIGl0cyBkZXBlbmRlbmNpZXMs IGluY2x1ZGluZyB0aGlyZAo+IHBhcnR5IGZlbmNlcyksIHdlIHB1dCB0aGUgcmVxdWVzdCBpbnRv IGEgcHJpb3JpdHkgc29ydGVkIHJidHJlZSB0byBiZQo+IHN1Ym1pdHRlZCB0byB0aGUgaGFyZHdh cmUuIElmIHRoZSByZXF1ZXN0IGlzIGhpZ2hlciBwcmlvcml0eSB0aGFuIGFsbAo+IHBlbmRpbmcg cmVxdWVzdHMsIGl0IHdpbGwgYmUgc3VibWl0dGVkIG9uIHRoZSBuZXh0IGNvbnRleHQtc3dpdGNo Cj4gaW50ZXJydXB0IGFzIHNvb24gYXMgdGhlIGhhcmR3YXJlIGhhcyBjb21wbGV0ZWQgdGhlIGN1 cnJlbnQgcmVxdWVzdC4gV2UKPiBkbyBub3QgY3VycmVudGx5IHByZWVtcHQgYW55IGN1cnJlbnQg ZXhlY3V0aW9uIHRvIGltbWVkaWF0ZWx5IHJ1biBhIHZlcnkKPiBoaWdoIHByaW9yaXR5IHJlcXVl c3QsIGF0IGxlYXN0IG5vdCB5ZXQuCj4KPiBPbmUgbW9yZSBsaW1pdGF0aW9uLCBpcyB0aGF0IHRo aXMgaXMgZmlyc3QgaW1wbGVtZW50YXRpb24gaXMgZm9yCj4gZXhlY2xpc3RzIG9ubHkgc28gY3Vy cmVudGx5IGxpbWl0ZWQgdG8gZ2VuOC9nZW45Lgo+Cj4gdjI6IFJlcGxhY2UgcmVjdXJzaXZlIHBy aW9yaXR5IGluaGVyaXRhbmNlIGJ1bXBpbmcgd2l0aCBhbiBpdGVyYXRpdmUKPiBkZXB0aC1maXJz dCBzZWFyY2ggbGlzdC4KPiB2MzogbGlzdF9uZXh0X2VudHJ5KCkgZm9yIHdhbGtpbmcgbGlzdHMK Pgo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVr Pgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgICAgfCAg IDcgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICAgIHwgICAz ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYyAgICB8ICAgNSAr Kwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmggICAgfCAgIDggKy0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jIHwgICAxICsKPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgICAgIHwgICAzICstCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICAgICB8IDEzNSArKysrKysrKysr KysrKysrKysrKysrKysrKystLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVm ZmVyLmggICAgfCAgIDMgKy0KPiAgOCBmaWxlcyBjaGFuZ2VkLCAxNDkgaW5zZXJ0aW9ucygrKSwg MTYgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IGluZGV4 IDAzZTNjMmFmYmIwNi4uMWNjOTcxY2I2Y2IxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k ZWJ1Z2ZzLmMKPiBAQCAtNjMxLDggKzYzMSw5IEBAIHN0YXRpYyB2b2lkIHByaW50X3JlcXVlc3Qo c3RydWN0IHNlcV9maWxlICptLAo+ICAJCQkgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cnEsCj4gIAkJCSAgY29uc3QgY2hhciAqcHJlZml4KQo+ICB7Cj4gLQlzZXFfcHJpbnRmKG0sICIl cyV4IFsleDoleF0gQCAlZDogJXNcbiIsIHByZWZpeCwKPiArCXNlcV9wcmludGYobSwgIiVzJXgg WyV4OiV4XSBwcmlvPSVkIEAgJWRtczogJXNcbiIsIHByZWZpeCwKPiAgCQkgICBycS0+Z2xvYmFs X3NlcW5vLCBycS0+Y3R4LT5od19pZCwgcnEtPmZlbmNlLnNlcW5vLAo+ICsJCSAgIHJxLT5wcmlv dHJlZS5wcmlvcml0eSwKPiAgCQkgICBqaWZmaWVzX3RvX21zZWNzKGppZmZpZXMgLSBycS0+ZW1p dHRlZF9qaWZmaWVzKSwKPiAgCQkgICBycS0+dGltZWxpbmUtPmNvbW1vbi0+bmFtZSk7Cj4gIH0K PiBAQCAtMzIxNiw2ICszMjE3LDcgQEAgc3RhdGljIGludCBpOTE1X2VuZ2luZV9pbmZvKHN0cnVj dCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+Cj4gIAkJaWYgKGk5MTUuZW5hYmxlX2V4ZWNs aXN0cykgewo+ICAJCQl1MzIgcHRyLCByZWFkLCB3cml0ZTsKPiArCQkJc3RydWN0IHJiX25vZGUg KnJiOwo+Cj4gIAkJCXNlcV9wcmludGYobSwgIlx0RXhlY2xpc3Qgc3RhdHVzOiAweCUwOHggJTA4 eFxuIiwKPiAgCQkJCSAgIEk5MTVfUkVBRChSSU5HX0VYRUNMSVNUX1NUQVRVU19MTyhlbmdpbmUp KSwKPiBAQCAtMzI1NSw3ICszMjU3LDggQEAgc3RhdGljIGludCBpOTE1X2VuZ2luZV9pbmZvKHN0 cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+ICAJCQlyY3VfcmVhZF91bmxvY2soKTsK Pgo+ICAJCQlzcGluX2xvY2tfaXJxKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrKTsKPiAtCQkJbGlz dF9mb3JfZWFjaF9lbnRyeShycSwgJmVuZ2luZS0+ZXhlY2xpc3RfcXVldWUsIGV4ZWNsaXN0X2xp bmspIHsKPiArCQkJZm9yIChyYiA9IGVuZ2luZS0+ZXhlY2xpc3RfZmlyc3Q7IHJiOyByYiA9IHJi X25leHQocmIpKSB7Cj4gKwkJCQlycSA9IHJiX2VudHJ5KHJiLCB0eXBlb2YoKnJxKSwgcHJpb3Ry ZWUubm9kZSk7Cj4gIAkJCQlwcmludF9yZXF1ZXN0KG0sIHJxLCAiXHRcdFEgIik7Cj4gIAkJCX0K PiAgCQkJc3Bpbl91bmxvY2tfaXJxKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrKTsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtLmMKPiBpbmRleCBiMzMxZTU5NjZmZTIuLmE5ZDI3ZjNlODhkMiAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IEBAIC0yNzIyLDEwICsyNzIyLDExIEBAIHN0YXRpYyB2 b2lkIGk5MTVfZ2VtX2NsZWFudXBfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKPgo+ICAJCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrLCBmbGFn cyk7Cj4KPiAtCQlJTklUX0xJU1RfSEVBRCgmZW5naW5lLT5leGVjbGlzdF9xdWV1ZSk7Cj4gIAkJ aTkxNV9nZW1fcmVxdWVzdF9wdXQoZW5naW5lLT5leGVjbGlzdF9wb3J0WzBdLnJlcXVlc3QpOwo+ ICAJCWk5MTVfZ2VtX3JlcXVlc3RfcHV0KGVuZ2luZS0+ZXhlY2xpc3RfcG9ydFsxXS5yZXF1ZXN0 KTsKPiAgCQltZW1zZXQoZW5naW5lLT5leGVjbGlzdF9wb3J0LCAwLCBzaXplb2YoZW5naW5lLT5l eGVjbGlzdF9wb3J0KSk7Cj4gKwkJZW5naW5lLT5leGVjbGlzdF9xdWV1ZSA9IFJCX1JPT1Q7Cj4g KwkJZW5naW5lLT5leGVjbGlzdF9maXJzdCA9IE5VTEw7Cj4KPiAgCQlzcGluX3VubG9ja19pcnFy ZXN0b3JlKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrLCBmbGFncyk7Cj4gIAl9Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYwo+IGluZGV4IDc4Yzg3ZDk0ZDIwNS4uMTM1NzRh MWUyOWIxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVl c3QuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYwo+IEBA IC0xMzIsNiArMTMyLDcgQEAgX19pOTE1X3ByaW90cmVlX2FkZF9kZXBlbmRlbmN5KHN0cnVjdCBp OTE1X3ByaW90cmVlICpwdCwKPiAgCQkJICAgICAgIHN0cnVjdCBpOTE1X2RlcGVuZGVuY3kgKmRl cCwKPiAgCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCj4gIHsKPiArCUlOSVRfTElTVF9I RUFEKCZkZXAtPmRmc19saW5rKTsKPiAgCWxpc3RfYWRkKCZkZXAtPndhaXRfbGluaywgJnNpZ25h bC0+d2FpdGVyc19saXN0KTsKPiAgCWxpc3RfYWRkKCZkZXAtPnNpZ25hbF9saW5rLCAmcHQtPnNp Z25hbGVyc19saXN0KTsKPiAgCWRlcC0+c2lnbmFsZXIgPSBzaWduYWw7Cj4gQEAgLTE1OCw2ICsx NTksOCBAQCBpOTE1X3ByaW90cmVlX2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUs IHN0cnVjdCBpOTE1X3ByaW90cmVlICpwdCkKPiAgewo+ICAJc3RydWN0IGk5MTVfZGVwZW5kZW5j eSAqZGVwLCAqbmV4dDsKPgo+ICsJR0VNX0JVR19PTighUkJfRU1QVFlfTk9ERSgmcHQtPm5vZGUp KTsKPiArCj4gIAkvKiBFdmVyeW9uZSB3ZSBkZXBlbmRlZCB1cG9uICh0aGUgZmVuY2VzIHdlIHdh aXQgdG8gYmUgc2lnbmFsZWQpCj4gIAkgKiBzaG91bGQgcmV0aXJlIGJlZm9yZSB1cyBhbmQgcmVt b3ZlIHRoZW1zZWx2ZXMgZnJvbSBvdXIgbGlzdC4KPiAgCSAqIEhvd2V2ZXIsIHJldGlyZW1lbnQg aXMgcnVuIGluZGVwZW5kZW50bHkgb24gZWFjaCB0aW1lbGluZSBhbmQKPiBAQCAtMTgyLDYgKzE4 NSw4IEBAIGk5MTVfcHJpb3RyZWVfaW5pdChzdHJ1Y3QgaTkxNV9wcmlvdHJlZSAqcHQpCj4gIHsK PiAgCUlOSVRfTElTVF9IRUFEKCZwdC0+c2lnbmFsZXJzX2xpc3QpOwo+ICAJSU5JVF9MSVNUX0hF QUQoJnB0LT53YWl0ZXJzX2xpc3QpOwo+ICsJUkJfQ0xFQVJfTk9ERSgmcHQtPm5vZGUpOwo+ICsJ cHQtPnByaW9yaXR5ID0gSU5UX01JTjsKPiAgfQo+Cj4gIHZvaWQgaTkxNV9nZW1fcmV0aXJlX25v b3Aoc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAqYWN0aXZlLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9yZXF1ZXN0LmgKPiBpbmRleCA5NDNjMzlkMmE2MmEuLmUyYjA3N2RmMmRhMCAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmgKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmgKPiBAQCAtNDgsNiArNDgs NyBAQCBzdHJ1Y3QgaTkxNV9kZXBlbmRlbmN5IHsKPiAgCXN0cnVjdCBpOTE1X3ByaW90cmVlICpz aWduYWxlcjsKPiAgCXN0cnVjdCBsaXN0X2hlYWQgc2lnbmFsX2xpbms7Cj4gIAlzdHJ1Y3QgbGlz dF9oZWFkIHdhaXRfbGluazsKPiArCXN0cnVjdCBsaXN0X2hlYWQgZGZzX2xpbms7Cj4gIAl1bnNp Z25lZCBsb25nIGZsYWdzOwo+ICAjZGVmaW5lIEk5MTVfREVQRU5ERU5DWV9BTExPQyBCSVQoMCkK PiAgfTsKPiBAQCAtNjQsNiArNjUsMTAgQEAgc3RydWN0IGk5MTVfZGVwZW5kZW5jeSB7Cj4gIHN0 cnVjdCBpOTE1X3ByaW90cmVlIHsKPiAgCXN0cnVjdCBsaXN0X2hlYWQgc2lnbmFsZXJzX2xpc3Q7 IC8qIHRob3NlIGJlZm9yZSB1cywgd2UgZGVwZW5kIHVwb24gKi8KPiAgCXN0cnVjdCBsaXN0X2hl YWQgd2FpdGVyc19saXN0OyAvKiB0aG9zZSBhZnRlciB1cywgdGhleSBkZXBlbmQgdXBvbiB1cyAq Lwo+ICsJc3RydWN0IHJiX25vZGUgbm9kZTsKPiArCWludCBwcmlvcml0eTsKPiArI2RlZmluZSBJ OTE1X1BSSU9SSVRZX01BWCAxMDI0Cj4gKyNkZWZpbmUgSTkxNV9QUklPUklUWV9NSU4gKC1JOTE1 X1BSSU9SSVRZX01BWCkKPiAgfTsKPgo+ICAvKioKPiBAQCAtMTk0LDkgKzE5OSw2IEBAIHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRl ICpmaWxlX3ByaXY7Cj4gIAkvKiogZmlsZV9wcml2IGxpc3QgZW50cnkgZm9yIHRoaXMgcmVxdWVz dCAqLwo+ICAJc3RydWN0IGxpc3RfaGVhZCBjbGllbnRfbGlzdDsKPiAtCj4gLQkvKiogTGluayBp biB0aGUgZXhlY2xpc3Qgc3VibWlzc2lvbiBxdWV1ZSwgZ3VhcmRlZCBieSBleGVjbGlzdF9sb2Nr LiAqLwo+IC0Jc3RydWN0IGxpc3RfaGVhZCBleGVjbGlzdF9saW5rOwo+ICB9Owo+Cj4gIGV4dGVy biBjb25zdCBzdHJ1Y3QgZG1hX2ZlbmNlX29wcyBpOTE1X2ZlbmNlX29wczsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCj4gaW5kZXggOTQyZjUwMDBkMzcyLi40 NDYyMTEyNzI1ZWYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNf c3VibWlzc2lvbi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlz c2lvbi5jCj4gQEAgLTE1MzIsNiArMTUzMiw3IEBAIGludCBpOTE1X2d1Y19zdWJtaXNzaW9uX2Vu YWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkvKiBUYWtlIG92ZXIg ZnJvbSBtYW51YWwgY29udHJvbCBvZiBFTFNQIChleGVjbGlzdHMpICovCj4gIAlmb3JfZWFjaF9l bmdpbmUoZW5naW5lLCBkZXZfcHJpdiwgaWQpIHsKPiAgCQllbmdpbmUtPnN1Ym1pdF9yZXF1ZXN0 ID0gaTkxNV9ndWNfc3VibWl0Owo+ICsJCWVuZ2luZS0+c2NoZWR1bGUgPSBOVUxMOwo+Cj4gIAkJ LyogUmVwbGF5IHRoZSBjdXJyZW50IHNldCBvZiBwcmV2aW91c2x5IHN1Ym1pdHRlZCByZXF1ZXN0 cyAqLwo+ICAJCWxpc3RfZm9yX2VhY2hfZW50cnkocmVxdWVzdCwKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9lbmdpbmVfY3MuYwo+IGluZGV4IGM5MTcxYTA1ODQ3OC4uM2RhNGQ0NjZlMzMyIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKPiBAQCAtMjM5LDcgKzIz OSw4IEBAIHN0YXRpYyB2b2lkIGludGVsX2VuZ2luZV9pbml0X3RpbWVsaW5lKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgICovCj4gIHZvaWQgaW50ZWxfZW5naW5lX3NldHVwX2Nv bW1vbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gIHsKPiAtCUlOSVRfTElTVF9I RUFEKCZlbmdpbmUtPmV4ZWNsaXN0X3F1ZXVlKTsKPiArCWVuZ2luZS0+ZXhlY2xpc3RfcXVldWUg PSBSQl9ST09UOwo+ICsJZW5naW5lLT5leGVjbGlzdF9maXJzdCA9IE5VTEw7Cj4KPiAgCWludGVs X2VuZ2luZV9pbml0X3RpbWVsaW5lKGVuZ2luZSk7Cj4gIAlpbnRlbF9lbmdpbmVfaW5pdF9oYW5n Y2hlY2soZW5naW5lKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IGluZGV4IGQxYWVhNzQ2 MjUxNS4uZDEzYTMzNWFkODNhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2xyYy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBAQCAt NDMyLDkgKzQzMiwxMCBAQCBzdGF0aWMgYm9vbCBjYW5fbWVyZ2VfY3R4KGNvbnN0IHN0cnVjdCBp OTE1X2dlbV9jb250ZXh0ICpwcmV2LAo+Cj4gIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19kZXF1ZXVl KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgewo+IC0Jc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpjdXJzb3IsICpsYXN0Owo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpsYXN0Owo+ICAJc3RydWN0IGV4ZWNsaXN0X3BvcnQgKnBvcnQgPSBlbmdpbmUtPmV4ZWNs aXN0X3BvcnQ7Cj4gIAl1bnNpZ25lZCBsb25nIGZsYWdzOwo+ICsJc3RydWN0IHJiX25vZGUgKnJi Owo+ICAJYm9vbCBzdWJtaXQgPSBmYWxzZTsKPgo+ICAJbGFzdCA9IHBvcnQtPnJlcXVlc3Q7Cj4g QEAgLTQ3MSw3ICs0NzIsMTEgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2RlcXVldWUoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAJICovCj4KPiAgCXNwaW5fbG9ja19pcnFzYXZl KCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrLCBmbGFncyk7Cj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5 KGN1cnNvciwgJmVuZ2luZS0+ZXhlY2xpc3RfcXVldWUsIGV4ZWNsaXN0X2xpbmspIHsKPiArCXJi ID0gZW5naW5lLT5leGVjbGlzdF9maXJzdDsKPiArCXdoaWxlIChyYikgewo+ICsJCXN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqY3Vyc29yID0KPiArCQkJcmJfZW50cnkocmIsIHR5cGVvZigq Y3Vyc29yKSwgcHJpb3RyZWUubm9kZSk7Cj4gKwo+ICAJCS8qIENhbiB3ZSBjb21iaW5lIHRoaXMg cmVxdWVzdCB3aXRoIHRoZSBjdXJyZW50IHBvcnQ/IEl0IGhhcyB0bwo+ICAJCSAqIGJlIHRoZSBz YW1lIGNvbnRleHQvcmluZ2J1ZmZlciBhbmQgbm90IGhhdmUgYW55IGV4Y2VwdGlvbnMKPiAgCQkg KiAoZS5nLiBHVlQgc2F5aW5nIG5ldmVyIHRvIGNvbWJpbmUgY29udGV4dHMpLgo+IEBAIC01MDMs NiArNTA4LDExIEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSkKPiAgCQkJcG9ydCsrOwo+ICAJCX0KPgo+ICsJCXJiID0gcmJfbmV4 dChyYik7Cj4gKwkJcmJfZXJhc2UoJmN1cnNvci0+cHJpb3RyZWUubm9kZSwgJmVuZ2luZS0+ZXhl Y2xpc3RfcXVldWUpOwo+ICsJCVJCX0NMRUFSX05PREUoJmN1cnNvci0+cHJpb3RyZWUubm9kZSk7 Cj4gKwkJY3Vyc29yLT5wcmlvdHJlZS5wcmlvcml0eSA9IElOVF9NQVg7Cj4gKwo+ICAJCS8qIFdl IGtlZXAgdGhlIHByZXZpb3VzIGNvbnRleHQgYWxpdmUgdW50aWwgd2UgcmV0aXJlIHRoZQo+ICAJ CSAqIGZvbGxvd2luZyByZXF1ZXN0LiBUaGlzIGVuc3VyZXMgdGhhdCBhbnkgdGhlIGNvbnRleHQg b2JqZWN0Cj4gIAkJICogaXMgc3RpbGwgcGlubmVkIGZvciBhbnkgcmVzaWR1YWwgd3JpdGVzIHRo ZSBIVyBtYWtlcyBpbnRvIGl0Cj4gQEAgLTUxNywxMSArNTI3LDggQEAgc3RhdGljIHZvaWQgZXhl Y2xpc3RzX2RlcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAJCXN1Ym1p dCA9IHRydWU7Cj4gIAl9Cj4gIAlpZiAoc3VibWl0KSB7Cj4gLQkJLyogRGVjb3VwbGUgYWxsIHRo ZSByZXF1ZXN0cyBzdWJtaXR0ZWQgZnJvbSB0aGUgcXVldWUgKi8KPiAtCQllbmdpbmUtPmV4ZWNs aXN0X3F1ZXVlLm5leHQgPSAmY3Vyc29yLT5leGVjbGlzdF9saW5rOwo+IC0JCWN1cnNvci0+ZXhl Y2xpc3RfbGluay5wcmV2ID0gJmVuZ2luZS0+ZXhlY2xpc3RfcXVldWU7Cj4gLQo+ICAJCWk5MTVf Z2VtX3JlcXVlc3RfYXNzaWduKCZwb3J0LT5yZXF1ZXN0LCBsYXN0KTsKPiArCQllbmdpbmUtPmV4 ZWNsaXN0X2ZpcnN0ID0gcmI7Cj4gIAl9Cj4gIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdp bmUtPnRpbWVsaW5lLT5sb2NrLCBmbGFncyk7Cj4KPiBAQCAtNjI2LDYgKzYzMywzMiBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9scmNfaXJxX2hhbmRsZXIodW5zaWduZWQgbG9uZyBkYXRhKQo+ICAJaW50 ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQoZGV2X3ByaXYsIGVuZ2luZS0+ZndfZG9tYWlucyk7Cj4g IH0KPgo+ICtzdGF0aWMgYm9vbCBpbnNlcnRfcmVxdWVzdChzdHJ1Y3QgaTkxNV9wcmlvdHJlZSAq cHQsIHN0cnVjdCByYl9yb290ICpyb290KQo+ICt7Cj4gKwlzdHJ1Y3QgcmJfbm9kZSAqKnAsICpy YjsKPiArCWJvb2wgZmlyc3QgPSB0cnVlOwo+ICsKPiArCS8qIG1vc3QgcG9zaXRpdmUgcHJpb3Jp dHkgaXMgc2NoZWR1bGVkIGZpcnN0LCBlcXVhbCBwcmlvcml0aWVzIGZpZm8gKi8KPiArCXJiID0g TlVMTDsKPiArCXAgPSAmcm9vdC0+cmJfbm9kZTsKPiArCXdoaWxlICgqcCkgewo+ICsJCXN0cnVj dCBpOTE1X3ByaW90cmVlICpwb3M7Cj4gKwo+ICsJCXJiID0gKnA7Cj4gKwkJcG9zID0gcmJfZW50 cnkocmIsIHR5cGVvZigqcG9zKSwgbm9kZSk7Cj4gKwkJaWYgKHB0LT5wcmlvcml0eSA+IHBvcy0+ cHJpb3JpdHkpIHsKPiArCQkJcCA9ICZyYi0+cmJfbGVmdDsKPiArCQl9IGVsc2Ugewo+ICsJCQlw ID0gJnJiLT5yYl9yaWdodDsKPiArCQkJZmlyc3QgPSBmYWxzZTsKPiArCQl9Cj4gKwl9Cj4gKwly Yl9saW5rX25vZGUoJnB0LT5ub2RlLCByYiwgcCk7Cj4gKwlyYl9pbnNlcnRfY29sb3IoJnB0LT5u b2RlLCByb290KTsKPiArCj4gKwlyZXR1cm4gZmlyc3Q7Cj4gK30KPiArCj4gIHN0YXRpYyB2b2lk IGV4ZWNsaXN0c19zdWJtaXRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cXVlc3QpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcXVlc3Qt PmVuZ2luZTsKPiBAQCAtNjM0LDEzICs2NjcsOTYgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX3N1 Ym1pdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKPiAgCS8q IFdpbGwgYmUgY2FsbGVkIGZyb20gaXJxLWNvbnRleHQgd2hlbiB1c2luZyBmb3JlaWduIGZlbmNl cy4gKi8KPiAgCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrLCBmbGFn cyk7Cj4KPiAtCWxpc3RfYWRkX3RhaWwoJnJlcXVlc3QtPmV4ZWNsaXN0X2xpbmssICZlbmdpbmUt PmV4ZWNsaXN0X3F1ZXVlKTsKPiArCWlmIChpbnNlcnRfcmVxdWVzdCgmcmVxdWVzdC0+cHJpb3Ry ZWUsICZlbmdpbmUtPmV4ZWNsaXN0X3F1ZXVlKSkKPiArCQllbmdpbmUtPmV4ZWNsaXN0X2ZpcnN0 ID0gJnJlcXVlc3QtPnByaW90cmVlLm5vZGU7Cj4gIAlpZiAoZXhlY2xpc3RzX2Vsc3BfaWRsZShl bmdpbmUpKQo+ICAJCXRhc2tsZXRfaGlfc2NoZWR1bGUoJmVuZ2luZS0+aXJxX3Rhc2tsZXQpOwo+ Cj4gIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrLCBmbGFn cyk7Cj4gIH0KPgo+ICtzdGF0aWMgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqCj4gK3B0X2xvY2tf ZW5naW5lKHN0cnVjdCBpOTE1X3ByaW90cmVlICpwdCwgc3RydWN0IGludGVsX2VuZ2luZV9jcyAq bG9ja2VkKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gKwo+ICsJ ZW5naW5lID0gY29udGFpbmVyX29mKHB0LAo+ICsJCQkgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QsCj4gKwkJCSAgICAgIHByaW90cmVlKS0+ZW5naW5lOwo+ICsJaWYgKGVuZ2luZSAh PSBsb2NrZWQpIHsKPiArCQlpZiAobG9ja2VkKQo+ICsJCQlzcGluX3VubG9ja19pcnEoJmxvY2tl ZC0+dGltZWxpbmUtPmxvY2spOwo+ICsJCXNwaW5fbG9ja19pcnEoJmVuZ2luZS0+dGltZWxpbmUt PmxvY2spOwo+ICsJfQo+ICsKPiArCXJldHVybiBlbmdpbmU7Cj4gK30KPiArCj4gK3N0YXRpYyB2 b2lkIGV4ZWNsaXN0c19zY2hlZHVsZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVl c3QsIGludCBwcmlvKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSBO VUxMOwo+ICsJc3RydWN0IGk5MTVfZGVwZW5kZW5jeSAqZGVwLCAqcDsKPiArCXN0cnVjdCBpOTE1 X2RlcGVuZGVuY3kgc3RhY2s7Cj4gKwlMSVNUX0hFQUQoZGZzKTsKPiArCj4gKwlpZiAocHJpbyA8 PSBSRUFEX09OQ0UocmVxdWVzdC0+cHJpb3RyZWUucHJpb3JpdHkpKQo+ICsJCXJldHVybjsKPiAr Cj4gKwkvKiBOZWVkIEJLTCBpbiBvcmRlciB0byB1c2UgdGhlIHRlbXBvcmFyeSBsaW5rIGluc2lk ZSBpOTE1X2RlcGVuZGVuY3kgKi8KPiArCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnJlcXVlc3QtPmk5 MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsKPiArCXN0YWNrLnNpZ25hbGVyID0gJnJlcXVlc3Qt PnByaW90cmVlOwo+ICsJbGlzdF9hZGQoJnN0YWNrLmRmc19saW5rLCAmZGZzKTsKPiArCj4gKwkv KiBSZWN1cnNpdmVseSBidW1wIGFsbCBkZXBlbmRlbnQgcHJpb3JpdGllcyB0byBtYXRjaCB0aGUg bmV3IHJlcXVlc3QgKi8KCk1pc3NlZCBsYXN0IHRpbWUgcm91bmQgdGhhdCB0aGUgY29tbWVudCBu ZWVkcyB1cGRhdGluZy4KCj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZGVwLCBwLCAmZGZz LCBkZnNfbGluaykgewo+ICsJCXN0cnVjdCBpOTE1X3ByaW90cmVlICpwdCA9IGRlcC0+c2lnbmFs ZXI7Cj4gKwo+ICsJCWxpc3RfZm9yX2VhY2hfZW50cnkocCwgJnB0LT5zaWduYWxlcnNfbGlzdCwg c2lnbmFsX2xpbmspCj4gKwkJCWlmIChwcmlvID4gUkVBRF9PTkNFKHAtPnNpZ25hbGVyLT5wcmlv cml0eSkpCj4gKwkJCQlsaXN0X21vdmVfdGFpbCgmcC0+ZGZzX2xpbmssICZkZnMpOwo+ICsKPiAr CQlwID0gbGlzdF9uZXh0X2VudHJ5KGRlcCwgZGZzX2xpbmspOwo+ICsJCWlmICghUkJfRU1QVFlf Tk9ERSgmcHQtPm5vZGUpKQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJZW5naW5lID0gcHRfbG9j a19lbmdpbmUocHQsIGVuZ2luZSk7Cj4gKwo+ICsJCS8qIElmIGl0IGlzIG5vdCBhbHJlYWR5IGlu IHRoZSByYnRyZWUsIHdlIGNhbiB1cGRhdGUgdGhlCj4gKwkJICogcHJpb3JpdHkgaW5wbGFjZSBh bmQgc2tpcCBvdmVyIGl0IChhbmQgaXRzIGRlcGVuZGVuY2llcykKPiArCQkgKiBpZiBpdCBpcyBy ZWZlcmVuY2VkICphZ2FpbiogYXMgd2UgZGVzY2VuZCB0aGUgZGZzLgo+ICsJCSAqLwo+ICsJCWlm IChwcmlvID4gcHQtPnByaW9yaXR5ICYmIFJCX0VNUFRZX05PREUoJnB0LT5ub2RlKSkgewo+ICsJ CQlwdC0+cHJpb3JpdHkgPSBwcmlvOwo+ICsJCQlsaXN0X2RlbF9pbml0KCZkZXAtPmRmc19saW5r KTsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJLyogRmlmbyBhbmQgZGVwdGgtZmlyc3QgcmVwbGFjZW1l bnQgZW5zdXJlIG91ciBkZXBzIGV4ZWN1dGUgYmVmb3JlIHVzICovCj4gKwlsaXN0X2Zvcl9lYWNo X2VudHJ5X3NhZmVfcmV2ZXJzZShkZXAsIHAsICZkZnMsIGRmc19saW5rKSB7Cj4gKwkJc3RydWN0 IGk5MTVfcHJpb3RyZWUgKnB0ID0gZGVwLT5zaWduYWxlcjsKPiArCj4gKwkJSU5JVF9MSVNUX0hF QUQoJmRlcC0+ZGZzX2xpbmspOwo+ICsKPiArCQllbmdpbmUgPSBwdF9sb2NrX2VuZ2luZShwdCwg ZW5naW5lKTsKPiArCj4gKwkJaWYgKHByaW8gPD0gcHQtPnByaW9yaXR5KQo+ICsJCQljb250aW51 ZTsKPiArCj4gKwkJR0VNX0JVR19PTihSQl9FTVBUWV9OT0RFKCZwdC0+bm9kZSkpOwo+ICsKPiAr CQlwdC0+cHJpb3JpdHkgPSBwcmlvOwo+ICsJCXJiX2VyYXNlKCZwdC0+bm9kZSwgJmVuZ2luZS0+ ZXhlY2xpc3RfcXVldWUpOwo+ICsJCWlmIChpbnNlcnRfcmVxdWVzdChwdCwgJmVuZ2luZS0+ZXhl Y2xpc3RfcXVldWUpKQo+ICsJCQllbmdpbmUtPmV4ZWNsaXN0X2ZpcnN0ID0gJnB0LT5ub2RlOwo+ ICsJfQo+ICsKPiArCWlmIChlbmdpbmUpCj4gKwkJc3Bpbl91bmxvY2tfaXJxKCZlbmdpbmUtPnRp bWVsaW5lLT5sb2NrKTsKPiArCj4gKwkvKiBYWFggRG8gd2UgbmVlZCB0byBwcmVlbXB0IHRvIG1h a2Ugcm9vbSBmb3IgdXMgYW5kIG91ciBkZXBzPyAqLwo+ICt9Cj4gKwo+ICBpbnQgaW50ZWxfbG9n aWNhbF9yaW5nX2FsbG9jX3JlcXVlc3RfZXh0cmFzKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxdWVzdCkKPiAgewo+ICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVx dWVzdC0+ZW5naW5lOwo+IEBAIC0xNjc3LDggKzE3OTMsMTAgQEAgdm9pZCBpbnRlbF9leGVjbGlz dHNfZW5hYmxlX3N1Ym1pc3Npb24oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ ICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+ICAJZW51bSBpbnRlbF9lbmdpbmVf aWQgaWQ7Cj4KPiAtCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2LCBpZCkKPiArCWZv cl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2LCBpZCkgewo+ICAJCWVuZ2luZS0+c3VibWl0 X3JlcXVlc3QgPSBleGVjbGlzdHNfc3VibWl0X3JlcXVlc3Q7Cj4gKwkJZW5naW5lLT5zY2hlZHVs ZSA9IGV4ZWNsaXN0c19zY2hlZHVsZTsKPiArCX0KPiAgfQo+Cj4gIHN0YXRpYyB2b2lkCj4gQEAg LTE2OTEsNiArMTgwOSw3IEBAIGxvZ2ljYWxfcmluZ19kZWZhdWx0X3ZmdW5jcyhzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gIAllbmdpbmUtPmVtaXRfYnJlYWRjcnVtYiA9IGdlbjhf ZW1pdF9icmVhZGNydW1iOwo+ICAJZW5naW5lLT5lbWl0X2JyZWFkY3J1bWJfc3ogPSBnZW44X2Vt aXRfYnJlYWRjcnVtYl9zejsKPiAgCWVuZ2luZS0+c3VibWl0X3JlcXVlc3QgPSBleGVjbGlzdHNf c3VibWl0X3JlcXVlc3Q7Cj4gKwllbmdpbmUtPnNjaGVkdWxlID0gZXhlY2xpc3RzX3NjaGVkdWxl Owo+Cj4gIAllbmdpbmUtPmlycV9lbmFibGUgPSBnZW44X2xvZ2ljYWxfcmluZ19lbmFibGVfaXJx Owo+ICAJZW5naW5lLT5pcnFfZGlzYWJsZSA9IGdlbjhfbG9naWNhbF9yaW5nX2Rpc2FibGVfaXJx Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiBpbmRleCBiOTU4Mzk0 MWViNmIuLjM0NjZiNGU3N2U3YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9yaW5nYnVmZmVyLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5n YnVmZmVyLmgKPiBAQCAtMzQ4LDcgKzM0OCw4IEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mgewo+ ICAJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdDsKPiAgCQl1bnNpZ25lZCBp bnQgY291bnQ7Cj4gIAl9IGV4ZWNsaXN0X3BvcnRbMl07Cj4gLQlzdHJ1Y3QgbGlzdF9oZWFkIGV4 ZWNsaXN0X3F1ZXVlOwo+ICsJc3RydWN0IHJiX3Jvb3QgZXhlY2xpc3RfcXVldWU7Cj4gKwlzdHJ1 Y3QgcmJfbm9kZSAqZXhlY2xpc3RfZmlyc3Q7Cj4gIAl1bnNpZ25lZCBpbnQgZndfZG9tYWluczsK PiAgCWJvb2wgZGlzYWJsZV9saXRlX3Jlc3RvcmVfd2E7Cj4gIAlib29sIHByZWVtcHRfd2E7Cj4K Ckp1c3QgdGhlIGNvbW1lbnQgbmVlZHMgdG8gYmUgdXBkYXRlZC4gV2l0aCB0aGF0OgoKUmV2aWV3 ZWQtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+CgpSZWdhcmRz LAoKVHZydGtvCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=