From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tomas Elf Subject: Re: [PATCH 1/2] drm/i915: Detach hangcheck from request lists Date: Tue, 19 May 2015 12:03:44 +0100 Message-ID: <555B1890.6020404@intel.com> References: <1431092395-23930-1-git-send-email-mika.kuoppala@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id CDB6A6E628 for ; Tue, 19 May 2015 04:03:46 -0700 (PDT) In-Reply-To: <1431092395-23930-1-git-send-email-mika.kuoppala@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Mika Kuoppala , "intel-gfx@lists.freedesktop.org" Cc: "miku@iki.fi" List-Id: intel-gfx@lists.freedesktop.org T24gMDgvMDUvMjAxNSAxNDozOSwgTWlrYSBLdW9wcGFsYSB3cm90ZToKPiBIYW5nY2hlY2sgdHJp ZXMgdG8gcGVlayBpbnRvIHJlcXVlc3QgbGlzdCB0byBzZWUKPiBpZiB0aGUgcmluZyB3YXMgYnVz eSBvciBub3QuIEJ1dCB0aGF0IGxlYWRzIHRvIHJhY2UKPiBhZ2FpbnN0IHRoZSBsaXN0IGFkZGl0 aW9uIGluIHJlcXVlc3Qgc3VibWlzc2lvbi4KPiBBbmQgaGFuZ2NoZWNrIHNhdyBhIHJpbmcgYmVp bmcgaWRsZSwgd2hlbiBpbiBmYWN0IHdvcmsgd2FzCj4ganVzdCBiZWluZyBzdWJtaXR0ZWQuCj4K PiBUaGVyZSBpcyBzdHJvbmcgZGVzaXJlIHRvIGtlZXAgaGFuZ2NoZWNrIHdpdGhvdXQKPiBsb2Nr cyBvZiBhbnkga2luZCBhcyBpdCBpcyBvdXIgbGFzdCBsaW5lIG9mIGRlZmVuc2UKPiBhZ2FpbnN0 IGZhaWx1cmVzIHRoYXQgc3VycGFzcyBvdXIgaW1hZ2luYXRpb24uCj4KPiBSZXdvcmsgdGhlIGhh bmdjaGVjayBsb2dpYyBzbyB0aGF0IHdlIGZpbmQgb3V0Cj4gdGhlIHJpbmcgYnVzeW5lc3MgYnkg aW5zcGVjdGluZyBodyBlbmdpbmUgc3RhdGUKPiBhbmQgb21pdCB0aGUgcmVxdWVzdC0+bGlzdCBp bnNwZWN0aW9uLgo+Cj4gdjI6IHN0YXJ0IGlzIHUzMiwgcHVzaCBmb3IgODAgY29scyAoQ2hyaXMp Cj4KPiBSZWZlcmVuY2VzOiBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNn aT9pZD04OTkzMQo+IFJlZmVyZW5jZXM6IGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hv d19idWcuY2dpP2lkPTg5NjQ0Cj4gUmVmZXJlbmNlczogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9w Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg5ODQKPiBSZWZlcmVuY2VzOiBodHRwczovL2J1Z3MuZnJl ZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD04ODk4MQo+IFJlZmVyZW5jZXM6IGh0dHBzOi8v YnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTg3NzMwCj4gQ2M6IENocmlzIFdp bHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IFNpZ25lZC1vZmYtYnk6IE1pa2EgS3Vv cHBhbGEgPG1pa2Eua3VvcHBhbGFAaW50ZWwuY29tPgo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgIHwgIDEwICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dwdV9lcnJvci5jICAgfCAgIDQgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfaXJxLmMgICAgICAgICB8IDIxNCArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQo+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIHwgICAzICsKPiAgIDQg ZmlsZXMgY2hhbmdlZCwgMTQ5IGluc2VydGlvbnMoKyksIDgyIGRlbGV0aW9ucygtKQo+Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCBhZGJiZGRhLi44YzY0N2JmIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBAQCAtMTI5NSw2ICsxMjk1LDcgQEAg c3RhdGljIGludCBpOTE1X2hhbmdjaGVja19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAq dW51c2VkKQo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2 X3ByaXZhdGU7Cj4gICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZzsKPiAgIAl1NjQgYWN0 aGRbSTkxNV9OVU1fUklOR1NdOwo+ICsJdTMyIHN0YXJ0W0k5MTVfTlVNX1JJTkdTXTsKPiAgIAl1 MzIgc2Vxbm9bSTkxNV9OVU1fUklOR1NdOwo+ICAgCWludCBpOwo+Cj4gQEAgLTEzMDgsNiArMTMw OSw3IEBAIHN0YXRpYyBpbnQgaTkxNV9oYW5nY2hlY2tfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0s IHZvaWQgKnVudXNlZCkKPiAgIAlmb3JfZWFjaF9yaW5nKHJpbmcsIGRldl9wcml2LCBpKSB7Cj4g ICAJCXNlcW5vW2ldID0gcmluZy0+Z2V0X3NlcW5vKHJpbmcsIGZhbHNlKTsKPiAgIAkJYWN0aGRb aV0gPSBpbnRlbF9yaW5nX2dldF9hY3RpdmVfaGVhZChyaW5nKTsKPiArCQlzdGFydFtpXSA9IEk5 MTVfUkVBRF9TVEFSVChyaW5nKTsKPiAgIAl9Cj4KPiAgIAlpbnRlbF9ydW50aW1lX3BtX3B1dChk ZXZfcHJpdik7Cj4gQEAgLTEzMjgsOCArMTMzMCwxNCBAQCBzdGF0aWMgaW50IGk5MTVfaGFuZ2No ZWNrX2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4gICAJCQkgICAobG9u ZyBsb25nKWFjdGhkW2ldKTsKPiAgIAkJc2VxX3ByaW50ZihtLCAiXHRtYXggQUNUSEQgPSAweCUw OGxseFxuIiwKPiAgIAkJCSAgIChsb25nIGxvbmcpcmluZy0+aGFuZ2NoZWNrLm1heF9hY3RoZCk7 Cj4gKwkJc2VxX3ByaW50ZihtLCAiXHRTVEFSVCA9IDB4JTA4eCBbY3VycmVudCAweCUwOHhdXG4i LAo+ICsJCQkgICByaW5nLT5oYW5nY2hlY2suc3RhcnQsCj4gKwkJCSAgIHN0YXJ0W2ldKTsKPiAr Cj4gICAJCXNlcV9wcmludGYobSwgIlx0c2NvcmUgPSAlZFxuIiwgcmluZy0+aGFuZ2NoZWNrLnNj b3JlKTsKPiAtCQlzZXFfcHJpbnRmKG0sICJcdGFjdGlvbiA9ICVkXG4iLCByaW5nLT5oYW5nY2hl Y2suYWN0aW9uKTsKPiArCQlzZXFfcHJpbnRmKG0sICJcdGFjdGlvbiA9ICVzIFslZF1cbiIsCj4g KwkJCSAgIGk5MTVfaGFuZ2NoZWNrX2FjdGlvbl90b19zdHIocmluZy0+aGFuZ2NoZWNrLmFjdGlv biksCj4gKwkJCSAgIHJpbmctPmhhbmdjaGVjay5hY3Rpb24pOwo+ICAgCX0KPgoKQmFzZWQgb24g ZmVlZGJhY2sgSSBoYXZlIHNlZW4gaW4gdGhlIHBhc3QgaXQgc2VlbXMgbGlrZSB3ZSB3YW50IHRv IGtlZXAgCnVucmVsYXRlZCBjaGFuZ2VzIHRvIHNlcGFyYXRlIHBhdGNoZXMuIFNvIGluIHRoaXMg Y2FzZSBtYXliZSB3ZSBzaG91bGQgCm1vdmUgdGhlIGRlYnVnZnMgY2hhbmdlcyBpbnRvIGl0cyBv d24gcGF0Y2ggcmF0aGVyIGtlZXAgaXQgdG9nZXRoZXIgd2l0aCAKdGhlIGhhbmdjaGVjayBjaGFu Z2VzPwoKPiAgIAlyZXR1cm4gMDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9ncHVfZXJyb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMK PiBpbmRleCBhM2UzMzBkLi45YzBkYjE5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ3B1X2Vycm9yLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dw dV9lcnJvci5jCj4gQEAgLTIyMCw3ICsyMjAsNyBAQCBzdGF0aWMgdm9pZCBwcmludF9lcnJvcl9i dWZmZXJzKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZV9idWYgKm0sCj4gICAJfQo+ICAgfQo+ Cj4gLXN0YXRpYyBjb25zdCBjaGFyICpoYW5nY2hlY2tfYWN0aW9uX3RvX3N0cihlbnVtIGludGVs X3JpbmdfaGFuZ2NoZWNrX2FjdGlvbiBhKQo+ICtjb25zdCBjaGFyICppOTE1X2hhbmdjaGVja19h Y3Rpb25fdG9fc3RyKGVudW0gaW50ZWxfcmluZ19oYW5nY2hlY2tfYWN0aW9uIGEpCj4gICB7Cj4g ICAJc3dpdGNoIChhKSB7Cj4gICAJY2FzZSBIQU5HQ0hFQ0tfSURMRToKPiBAQCAtMzAxLDcgKzMw MSw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfcmluZ19lcnJvcl9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVf ZXJyb3Jfc3RhdGVfYnVmICptLAo+ICAgCWVycl9wcmludGYobSwgIiAgcmluZy0+aGVhZDogMHgl MDh4XG4iLCByaW5nLT5jcHVfcmluZ19oZWFkKTsKPiAgIAllcnJfcHJpbnRmKG0sICIgIHJpbmct PnRhaWw6IDB4JTA4eFxuIiwgcmluZy0+Y3B1X3JpbmdfdGFpbCk7Cj4gICAJZXJyX3ByaW50Ziht LCAiICBoYW5nY2hlY2s6ICVzIFslZF1cbiIsCj4gLQkJICAgaGFuZ2NoZWNrX2FjdGlvbl90b19z dHIocmluZy0+aGFuZ2NoZWNrX2FjdGlvbiksCj4gKwkJICAgaTkxNV9oYW5nY2hlY2tfYWN0aW9u X3RvX3N0cihyaW5nLT5oYW5nY2hlY2tfYWN0aW9uKSwKPiAgIAkJICAgcmluZy0+aGFuZ2NoZWNr X3Njb3JlKTsKClNlZSBhYm92ZS4gTWF5YmUgeW91IGNvdWxkIHB1dCB0aGlzIGNoYW5nZSB0b2dl dGhlciB3aXRoIHRoZSBkZWJ1Z2ZzIApjaGFuZ2VzIGluIGEgc2VwYXJhdGUgcGF0Y2ggc2VlaW5n IGFzIGl0J3MgbW9yZSBhYm91dCBwcmVzZW50aW5nIHRoZSAKaGFuZ2NoZWNrIGFjdGlvbiBpbiBh IG1vcmUgaW5mb3JtYXRpdmUgd2F5IHJhdGhlciB0aGFuIGFueXRoaW5nIHJlbGF0ZWQgCnRvIHRo ZSBoYW5nY2hlY2sgbG9naWMgaXRzZWxmLgoKPiAgIH0KPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEu Ywo+IGluZGV4IDlkYTk1NWUuLmEzMjQ0YmQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9pcnEuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMK PiBAQCAtMjY4NSwyMCArMjY4NSw2IEBAIHN0YXRpYyB2b2lkIGdlbjhfZGlzYWJsZV92Ymxhbmso c3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IHBpcGUpCj4gICAJc3Bpbl91bmxvY2tfaXJxcmVz dG9yZSgmZGV2X3ByaXYtPmlycV9sb2NrLCBpcnFmbGFncyk7Cj4gICB9Cj4KPiAtc3RhdGljIHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqCj4gLXJpbmdfbGFzdF9yZXF1ZXN0KHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKnJpbmcpCj4gLXsKPiAtCXJldHVybiBsaXN0X2VudHJ5KHJpbmctPnJl cXVlc3RfbGlzdC5wcmV2LAo+IC0JCQkgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCwgbGlz dCk7Cj4gLX0KPiAtCj4gLXN0YXRpYyBib29sCj4gLXJpbmdfaWRsZShzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICpyaW5nKQo+IC17Cj4gLQlyZXR1cm4gKGxpc3RfZW1wdHkoJnJpbmctPnJlcXVlc3Rf bGlzdCkgfHwKPiAtCQlpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyaW5nX2xhc3RfcmVxdWVz dChyaW5nKSwgZmFsc2UpKTsKPiAtfQo+IC0KPiAgIHN0YXRpYyBib29sCj4gICBpcGVocl9pc19z ZW1hcGhvcmVfd2FpdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgaXBlaHIpCj4gICB7Cj4g QEAgLTI4ODIsNiArMjg2OCwxMDkgQEAgcmluZ19zdHVjayhzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICpyaW5nLCB1NjQgYWN0aGQpCj4gICAJcmV0dXJuIEhBTkdDSEVDS19IVU5HOwo+ICAgfQo+Cj4g K3N0YXRpYyBib29sIGVuZ2luZV9idXN5KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4g KwkJCWNvbnN0IHU2NCBhY3RoZCwgY29uc3QgdTMyIHN0YXJ0KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHJpbmctPmRldik7Cj4gKwl1MzIgdGFp bCwgaGVhZDsKPiArCj4gKwlpZiAocmluZy0+aGFuZ2NoZWNrLmFjdGhkICE9IGFjdGhkKQo+ICsJ CXJldHVybiB0cnVlOwo+ICsKPiArCWlmIChyaW5nLT5oYW5nY2hlY2suc3RhcnQgIT0gc3RhcnQp Cj4gKwkJcmV0dXJuIHRydWU7Cj4gKwo+ICsJaGVhZCA9IEk5MTVfUkVBRF9IRUFEKHJpbmcpICYg SEVBRF9BRERSOwo+ICsJdGFpbCA9IEk5MTVfUkVBRF9UQUlMKHJpbmcpICYgVEFJTF9BRERSOwo+ ICsKPiArCWlmIChoZWFkICE9IHRhaWwpCj4gKwkJcmV0dXJuIHRydWU7Cj4gKwo+ICsJLyogU3Rv cCByaW5ncyBtZWNoYW5pc20ga2VlcHMgaGVhZD09dGFpbCBldmVuIGlmCj4gKwkgKiAgdGhlcmUg aXMgd29yayB0byBiZSBkb25lLgo+ICsJICovCgoxLiBUaGUgcHJlZmVycmVkIHN0eWxlIGZvciBt dWx0aS1saW5lIGNvbW1lbnRzIGlzOgoKLyogKGVtcHR5IGxpbmUpCiAgKiAoZmlyc3QgbGluZSkK ICAqIChzZWNvbmQgbGluZSkKICAqLwoKMi4gSSBkb24ndCBxdWl0ZSB1bmRlcnN0YW5kIHRoZSBj b21tZW50LiBJIGtub3cgdGhlcmUgaXMgc3VjaCBhIHRoaW5nIGFzIApzdG9wX3JpbmdzLCB3aGlj aCB3ZSB1c2UgZm9yIHNpbXVsYXRpbmcgaGFuZ3MsIGJ1dCBob3cgZG9lcyB0aGF0IGZhY3RvciAK aW4gaGVyZT8gSWYgc3RvcF9yaW5ncyBhZmZlY3RzIHRoZSBzdGF0ZSBvZiBNTUlPIHRhaWwgcmVn aXN0ZXIgdnMuIApyaW5nYnVmZmVyIHRhaWwgdGhlbiBhIHNtYWxsIHJlbWFyayBleHBsYWluaW5n IHRoYXQgd291bGQgYmUgaGVscGZ1bC4KCj4gKwlpZiAocmluZy0+YnVmZmVyICYmCj4gKwkgICAg cmluZy0+YnVmZmVyLT50YWlsICE9IHRhaWwgJiYKPiArCSAgICB3YWl0cXVldWVfYWN0aXZlKCZy aW5nLT5pcnFfcXVldWUpKQo+ICsJCXJldHVybiB0cnVlOwo+ICsKCjEuIEZvciBzb21lIHJlYXNv biBnb2luZyBmcm9tIG9uZSB3YWl0cXVldWVfYWN0aXZlKCkgY2hlY2sgaW4gCmk5MTVfaGFuZ2No ZWNrX2VsYXBzZWQoKSB0byB0d28gc2VwYXJhdGUgY2FsbHMgaW4gdHdvIHNlcGFyYXRlIGZ1bmN0 aW9ucyAKZG9lcyBub3Qgc2l0IHBlcmZlY3RseSB3ZWxsIHdpdGggbWUuIE1heWJlIGl0J3Mgbm90 IHRoYXQgaW1wb3J0YW50IGJ1dCAKd291bGQgaXQgbWFrZSBzZW5zZSB0byB0YWtlIHRoZSBib2R5 IG9mIGNoZWNrX2Zvcl9taXNzZWRfaXJxKCkgYW5kIAppbnRlZ3JhdGUgaXQgaW4gZW5naW5lX2lk bGUoKSwgY2FsbCB3YWl0cXVldWVfYWN0aXZlKCkgb25jZSBhbmQgdXNlIHRoZSAKcmVzdWx0IHR3 aWNlOiBmaXJzdCBpbiB0aGUgY2hlY2sgaW4gdGhlIGJsb2NrIGFib3ZlIGFuZCB0aGVuIGluIHRo ZSAKbWlzc2luZyBpcnEgY2hlY2sgdGhhdCBmb2xsb3dzIGltbWVkaWF0ZWx5PwoKMi4gSW4gdGhl IGJsb2NrIGFib3ZlIHdoZXJlIHdlIGNoZWNrIHdhaXRxdWV1ZV9hY3RpdmUoKSB0b2dldGhlciB3 aXRoIAp0YWlsOiBBcmUgdGhlcmUgbm8gY2FzZXMgd2hlbiB3ZSBtaWdodCBiZSBpbnRlcmVzdGVk IGluIHRoZSB3YWl0cXVldWUgCmJlaW5nIGFjdGl2ZSBhbmQgTU1JTyB0YWlsID09IHJpbmdidWZm ZXIgdGFpbD8gQXJlIHRoZXJlIG5vIGNhc2VzIHdoZXJlIApzb21lIGNsaWVudCBtaWdodCBoYW5n IG9uIGluZGVmaW5pdGVseSBldmVuIHdoZW4gdGhlIHRhaWwgaGFzIGNhdWdodCB1cCAKdGhhdCB3 ZSBtaWdodCB3YW50IHRvIGRvIHNvbWV0aGluZyBhYm91dD8gRG8gd2Uga25vdyBmb3IgY2VydGFp biB0aGF0IAp3aGVuIHRhaWwgaGFzIGNhdWdodCB1cCB0aGUgc3RhdGUgb2Ygd2FpdHF1ZXVlX2Fj dGl2ZSgpIGlzIGlycmVsZXZhbnQ/IEkgCnRoaW5rIEknbSBtaXNzaW5nIHNvbWV0aGluZyBoZXJl IC0gcGxlYXNlIGVubGlnaHRlbiBtZS4gKGFuZCBtYXliZSAKY29uc2lkZXIgYWRkaW5nIGEgY29t bWVudCBleHBsYWluaW5nIHRoaXMgaW4gbm8gdW5jZXJ0YWluIHRlcm1zKQoKMy4gRG9pbmcgdGhl IHJpbmctPmJ1ZmZlciBjaGVjayBlbnN1cmVzIHRoYXQgaXQgd29uJ3QgcnVuIGluIGV4ZWNsaXN0 IAptb2RlIHNpbmNlIHJpbmctPmJ1ZmZlciBpcyBvbmx5IHNldCBpbiByaW5nYnVmZmVyIHN1Ym1p c3Npb24gbW9kZS4gClRoYXQncyBhIHBpdHkgc2luY2UgaXQncyB1c2VmdWwgdG8gY2hlY2sgd2Fp dHF1ZXVlX2FjdGl2ZSgpLgoKPiArCXJldHVybiBmYWxzZTsKPiArfQo+ICsKPiArI2RlZmluZSBl bmdpbmVfaWRsZShyaW5nLCBhY3RoZCwgc3RhcnQpICghZW5naW5lX2J1c3koKHJpbmcpLCAoYWN0 aGQpLCAoc3RhcnQpKSkKCmVuZ2luZV9pZGxlKCkgaGFzIG9uZSBjYWxsZXIuIFdoeSBub3QganVz dCBza2lwIHRoaXMgI2RlZmluZSBhbmQgYWRkIGEgISAKaW4gZnJvbnQgb2YgdGhlIGNhbGxpbmcg c3RhdGVtZW50IGluc3RlYWQgb2YgYWRkaW5nIG9uZSAjZGVmaW5lIGZvciBvbmUgCmZ1bmN0aW9u IGZvciBpdHMgc29sZSBjYWxsZXI/IEl0J3Mgbm90IGxpa2UgeW91J3JlIG1ha2luZyB0aGlzIHJl d3JpdGUgCmFueSBzbW9vdGhlciBieSByZXRhaW5pbmcgcGFydHMgb2YgdGhlIHNlbWFudGljcyBv ZiB0aGUgb2xkIAppOTE1X2hhbmdjaGVja19lbGFwc2VkKCkgaW1wbGVtZW50YXRpb24gKGJ5IGxl dHRpbmcgdGhlIGNoZWNrIGJlIG9uIAppZGxlbmVzcyByYXRoZXIgdGhhbiBidXN5bmVzcykgc2lu Y2UgeW91J3JlIHJlbmFtaW5nIGl0IGZyb20gcmluZ19pZGxlKCkgCnRvIGVuZ2luZV9pZGxlKCkg YW5kIGFkZGluZyBtb3JlIHBhcmFtZXRlcnMuIElzIGl0IGp1c3QgYSBxdWVzdGlvbiBvZiAKcGVy c29uYWwgdGFzdGUgb3IgaXMgdGhlcmUgYW55dGhpbmcgZWxzZSB0byBqdXN0aWZ5IHRoaXM/Cgo+ ICsKPiArc3RhdGljIGJvb2wgY2hlY2tfZm9yX21pc3NlZF9pcnEoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqcmluZykKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShyaW5nLT5kZXYpOwo+ICsJYm9vbCBpcnFfbWlzc2luZzsKPiArCj4gKwlpZiAoIXdh aXRxdWV1ZV9hY3RpdmUoJnJpbmctPmlycV9xdWV1ZSkpCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsK PiArCWlycV9taXNzaW5nID0gIXRlc3RfYW5kX3NldF9iaXQocmluZy0+aWQsCj4gKwkJCQkJJmRl dl9wcml2LT5ncHVfZXJyb3IubWlzc2VkX2lycV9yaW5ncyk7Cj4gKwo+ICsJaWYgKGlycV9taXNz aW5nKSB7Cj4gKwkJY29uc3QgYm9vbCBpcnFfdGVzdCA9Cj4gKwkJCWRldl9wcml2LT5ncHVfZXJy b3IudGVzdF9pcnFfcmluZ3MgJgo+ICsJCQlpbnRlbF9yaW5nX2ZsYWcocmluZyk7Cj4gKwo+ICsJ CWlmIChpcnFfdGVzdCkKPiArCQkJRFJNX0lORk8oIkZha2UgbWlzc2VkIGlycSBvbiAlc1xuIiwg cmluZy0+bmFtZSk7Cj4gKwkJZWxzZQo+ICsJCQlEUk1fRVJST1IoIk1pc3NlZCBpcnEgb24gJXNc biIsIHJpbmctPm5hbWUpOwo+ICsJfQo+ICsKPiArCXJldHVybiB0cnVlOwo+ICt9Cj4gKwo+ICtz dGF0aWMgYm9vbCBoYW5nY2hlY2tfaGFuZGxlX3N0dWNrX3Jpbmcoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqcmluZywgdTY0IGFjdGhkKQo+ICt7Cj4gKyNkZWZpbmUgQlVTWSAxCj4gKyNkZWZpbmUg S0lDSyA1Cj4gKyNkZWZpbmUgSFVORyAyMAo+ICsKPiArCXN0cnVjdCBpbnRlbF9yaW5nX2hhbmdj aGVjayAqaGMgPSAmcmluZy0+aGFuZ2NoZWNrOwo+ICsJYm9vbCB0aGVyZV9pc19ob3BlID0gdHJ1 ZTsKPiArCj4gKwkvKiBXZSBhbHdheXMgaW5jcmVtZW50IHRoZSBoYW5nY2hlY2sgc2NvcmUKPiAr CSAqIGlmIHRoZSByaW5nIGlzIGJ1c3kgYW5kIHN0aWxsIHByb2Nlc3NpbmcKPiArCSAqIHRoZSBz YW1lIHJlcXVlc3QsIHNvIHRoYXQgbm8gc2luZ2xlIHJlcXVlc3QKPiArCSAqIGNhbiBydW4gaW5k ZWZpbml0ZWx5IChzdWNoIGFzIGEgY2hhaW4gb2YKPiArCSAqIGJhdGNoZXMpLiBJZiB3ZSBkZXRl Y3QgYSBsb29wIGluIGFjdGhkLAo+ICsJICogd2UgaW5jcmVtZW50IHRoZSBidXN5bmVzcyB0d2lj ZSBhcyBmYXN0Lgo+ICsJICogSWYgdGhpcyByaW5nIGlzIGluIGEgbGVnaXRpbWF0ZSB3YWl0IGZv ciBhbm90aGVyCj4gKwkgKiByaW5nLCB3ZSBvbWl0IGluY3JlbWVudGluZyB0aGUgc2NvcmUuIElu IHRoYXQgY2FzZQo+ICsJICogdGhlIHdhaXRpbmcgcmluZyBpcyBhIHZpY3RpbSBhbmQgd2Ugd2Fu dCB0byBiZSBzdXJlIHdlCj4gKwkgKiBjYXRjaCB0aGUgcmlnaHQgY3VscHJpdC4gVGhlbiBldmVy eSB0aW1lIHdlIGRvIGtpY2sKPiArCSAqIHRoZSByaW5nLCBhZGQgYSBzbWFsbCBpbmNyZW1lbnQg dG8gdGhlCj4gKwkgKiBzY29yZSBzbyB0aGF0IHdlIGNhbiBjYXRjaCBhIGJhdGNoIHRoYXQgaXMK PiArCSAqIGJlaW5nIHJlcGVhdGVkbHkga2lja2VkIGFuZCBzbyByZXNwb25zaWJsZQo+ICsJICog Zm9yIHN0YWxsaW5nIHRoZSBtYWNoaW5lLgo+ICsJICovCgpTZWUgcHJlZmVycmVkIG11bHRpLWxp bmUgY29tbWVudCBmb3JtYXQuCgo+ICsJaGMtPmFjdGlvbiA9IHJpbmdfc3R1Y2socmluZywgYWN0 aGQpOwo+ICsKPiArCXN3aXRjaCAoaGMtPmFjdGlvbikgewo+ICsJY2FzZSBIQU5HQ0hFQ0tfSURM RToKPiArCWNhc2UgSEFOR0NIRUNLX1dBSVQ6Cj4gKwljYXNlIEhBTkdDSEVDS19BQ1RJVkU6Cj4g KwkJaGMtPnNjb3JlICs9IEJVU1k7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIEhBTkdDSEVDS19BQ1RJ VkVfTE9PUDoKPiArCQloYy0+c2NvcmUgKz0gMiAqIEJVU1k7Cj4gKwkJYnJlYWs7Cj4gKwljYXNl IEhBTkdDSEVDS19LSUNLOgo+ICsJCWhjLT5zY29yZSArPSBLSUNLOwo+ICsJCWJyZWFrOwo+ICsJ Y2FzZSBIQU5HQ0hFQ0tfSFVORzoKPiArCQloYy0+c2NvcmUgKz0gSFVORzsKPiArCQl0aGVyZV9p c19ob3BlID0gZmFsc2U7Cj4gKwkJYnJlYWs7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIHRoZXJlX2lz X2hvcGU7Cj4gK30KPiArCj4gICAvKgo+ICAgICogVGhpcyBpcyBjYWxsZWQgd2hlbiB0aGUgY2hp cCBoYXNuJ3QgcmVwb3J0ZWQgYmFjayB3aXRoIGNvbXBsZXRlZAo+ICAgICogYmF0Y2hidWZmZXJz IGluIGEgbG9uZyB0aW1lLiBXZSBrZWVwIHRyYWNrIHBlciByaW5nIHNlcW5vIHByb2dyZXNzIGFu ZAo+IEBAIC0yOTAwLDE1ICsyOTg5LDE0IEBAIHN0YXRpYyB2b2lkIGk5MTVfaGFuZ2NoZWNrX2Vs YXBzZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+ICAgCWludCBpOwo+ICAgCWludCBidXN5 X2NvdW50ID0gMCwgcmluZ3NfaHVuZyA9IDA7Cj4gICAJYm9vbCBzdHVja1tJOTE1X05VTV9SSU5H U10gPSB7IDAgfTsKPiAtI2RlZmluZSBCVVNZIDEKPiAtI2RlZmluZSBLSUNLIDUKPiAtI2RlZmlu ZSBIVU5HIDIwCj4KPiAgIAlpZiAoIWk5MTUuZW5hYmxlX2hhbmdjaGVjaykKPiAgIAkJcmV0dXJu Owo+Cj4gICAJZm9yX2VhY2hfcmluZyhyaW5nLCBkZXZfcHJpdiwgaSkgewo+ICsJCXN0cnVjdCBp bnRlbF9yaW5nX2hhbmdjaGVjayAqaGMgPSAmcmluZy0+aGFuZ2NoZWNrOwo+ICAgCQl1NjQgYWN0 aGQ7Cj4gKwkJdTMyIHN0YXJ0Owo+ICAgCQl1MzIgc2Vxbm87Cj4gICAJCWJvb2wgYnVzeSA9IHRy dWU7Cj4KPiBAQCAtMjkxNiw3NiArMzAwNCw0NCBAQCBzdGF0aWMgdm9pZCBpOTE1X2hhbmdjaGVj a19lbGFwc2VkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPgo+ICAgCQlzZXFubyA9IHJpbmct PmdldF9zZXFubyhyaW5nLCBmYWxzZSk7Cj4gICAJCWFjdGhkID0gaW50ZWxfcmluZ19nZXRfYWN0 aXZlX2hlYWQocmluZyk7Cj4gKwkJc3RhcnQgPSBJOTE1X1JFQURfU1RBUlQocmluZyk7Cj4KPiAt CQlpZiAocmluZy0+aGFuZ2NoZWNrLnNlcW5vID09IHNlcW5vKSB7Cj4gLQkJCWlmIChyaW5nX2lk bGUocmluZykpIHsKPiAtCQkJCXJpbmctPmhhbmdjaGVjay5hY3Rpb24gPSBIQU5HQ0hFQ0tfSURM RTsKPiAtCj4gLQkJCQlpZiAod2FpdHF1ZXVlX2FjdGl2ZSgmcmluZy0+aXJxX3F1ZXVlKSkgewo+ IC0JCQkJCS8qIElzc3VlIGEgd2FrZS11cCB0byBjYXRjaCBzdHVjayBoL3cuICovCj4gLQkJCQkJ aWYgKCF0ZXN0X2FuZF9zZXRfYml0KHJpbmctPmlkLCAmZGV2X3ByaXYtPmdwdV9lcnJvci5taXNz ZWRfaXJxX3JpbmdzKSkgewo+IC0JCQkJCQlpZiAoIShkZXZfcHJpdi0+Z3B1X2Vycm9yLnRlc3Rf aXJxX3JpbmdzICYgaW50ZWxfcmluZ19mbGFnKHJpbmcpKSkKPiAtCQkJCQkJCURSTV9FUlJPUigi SGFuZ2NoZWNrIHRpbWVyIGVsYXBzZWQuLi4gJXMgaWRsZVxuIiwKPiAtCQkJCQkJCQkgIHJpbmct Pm5hbWUpOwo+IC0JCQkJCQllbHNlCj4gLQkJCQkJCQlEUk1fSU5GTygiRmFrZSBtaXNzZWQgaXJx IG9uICVzXG4iLAo+IC0JCQkJCQkJCSByaW5nLT5uYW1lKTsKPiAtCQkJCQkJd2FrZV91cF9hbGwo JnJpbmctPmlycV9xdWV1ZSk7Cj4gLQkJCQkJfQo+IC0JCQkJCS8qIFNhZmVndWFyZCBhZ2FpbnN0 IGRyaXZlciBmYWlsdXJlICovCj4gLQkJCQkJcmluZy0+aGFuZ2NoZWNrLnNjb3JlICs9IEJVU1k7 Cj4gLQkJCQl9IGVsc2UKPiAtCQkJCQlidXN5ID0gZmFsc2U7Cj4gLQkJCX0gZWxzZSB7Cj4gLQkJ CQkvKiBXZSBhbHdheXMgaW5jcmVtZW50IHRoZSBoYW5nY2hlY2sgc2NvcmUKPiAtCQkJCSAqIGlm IHRoZSByaW5nIGlzIGJ1c3kgYW5kIHN0aWxsIHByb2Nlc3NpbmcKPiAtCQkJCSAqIHRoZSBzYW1l IHJlcXVlc3QsIHNvIHRoYXQgbm8gc2luZ2xlIHJlcXVlc3QKPiAtCQkJCSAqIGNhbiBydW4gaW5k ZWZpbml0ZWx5IChzdWNoIGFzIGEgY2hhaW4gb2YKPiAtCQkJCSAqIGJhdGNoZXMpLiBUaGUgb25s eSB0aW1lIHdlIGRvIG5vdCBpbmNyZW1lbnQKPiAtCQkJCSAqIHRoZSBoYW5nY2hlY2sgc2NvcmUg b24gdGhpcyByaW5nLCBpZiB0aGlzCj4gLQkJCQkgKiByaW5nIGlzIGluIGEgbGVnaXRpbWF0ZSB3 YWl0IGZvciBhbm90aGVyCj4gLQkJCQkgKiByaW5nLiBJbiB0aGF0IGNhc2UgdGhlIHdhaXRpbmcg cmluZyBpcyBhCj4gLQkJCQkgKiB2aWN0aW0gYW5kIHdlIHdhbnQgdG8gYmUgc3VyZSB3ZSBjYXRj aCB0aGUKPiAtCQkJCSAqIHJpZ2h0IGN1bHByaXQuIFRoZW4gZXZlcnkgdGltZSB3ZSBkbyBraWNr Cj4gLQkJCQkgKiB0aGUgcmluZywgYWRkIGEgc21hbGwgaW5jcmVtZW50IHRvIHRoZQo+IC0JCQkJ ICogc2NvcmUgc28gdGhhdCB3ZSBjYW4gY2F0Y2ggYSBiYXRjaCB0aGF0IGlzCj4gLQkJCQkgKiBi ZWluZyByZXBlYXRlZGx5IGtpY2tlZCBhbmQgc28gcmVzcG9uc2libGUKPiAtCQkJCSAqIGZvciBz dGFsbGluZyB0aGUgbWFjaGluZS4KPiAtCQkJCSAqLwo+IC0JCQkJcmluZy0+aGFuZ2NoZWNrLmFj dGlvbiA9IHJpbmdfc3R1Y2socmluZywKPiAtCQkJCQkJCQkgICAgYWN0aGQpOwo+IC0KPiAtCQkJ CXN3aXRjaCAocmluZy0+aGFuZ2NoZWNrLmFjdGlvbikgewo+IC0JCQkJY2FzZSBIQU5HQ0hFQ0tf SURMRToKPiAtCQkJCWNhc2UgSEFOR0NIRUNLX1dBSVQ6Cj4gLQkJCQljYXNlIEhBTkdDSEVDS19B Q1RJVkU6Cj4gLQkJCQkJYnJlYWs7Cj4gLQkJCQljYXNlIEhBTkdDSEVDS19BQ1RJVkVfTE9PUDoK PiAtCQkJCQlyaW5nLT5oYW5nY2hlY2suc2NvcmUgKz0gQlVTWTsKPiAtCQkJCQlicmVhazsKPiAt CQkJCWNhc2UgSEFOR0NIRUNLX0tJQ0s6Cj4gLQkJCQkJcmluZy0+aGFuZ2NoZWNrLnNjb3JlICs9 IEtJQ0s7Cj4gLQkJCQkJYnJlYWs7Cj4gLQkJCQljYXNlIEhBTkdDSEVDS19IVU5HOgo+IC0JCQkJ CXJpbmctPmhhbmdjaGVjay5zY29yZSArPSBIVU5HOwo+IC0JCQkJCXN0dWNrW2ldID0gdHJ1ZTsK PiAtCQkJCQlicmVhazsKPiAtCQkJCX0KPiAtCQkJfQo+IC0JCX0gZWxzZSB7Cj4gLQkJCXJpbmct PmhhbmdjaGVjay5hY3Rpb24gPSBIQU5HQ0hFQ0tfQUNUSVZFOwo+ICsJCWlmIChoYy0+c2Vxbm8g IT0gc2Vxbm8pIHsKPiArCQkJaGMtPmFjdGlvbiA9IEhBTkdDSEVDS19BQ1RJVkU7Cj4KPiAgIAkJ CS8qIEdyYWR1YWxseSByZWR1Y2UgdGhlIGNvdW50IHNvIHRoYXQgd2UgY2F0Y2ggRG9TCj4gICAJ CQkgKiBhdHRlbXB0cyBhY3Jvc3MgbXVsdGlwbGUgYmF0Y2hlcy4KPiAgIAkJCSAqLwo+IC0JCQlp ZiAocmluZy0+aGFuZ2NoZWNrLnNjb3JlID4gMCkKPiAtCQkJCXJpbmctPmhhbmdjaGVjay5zY29y ZS0tOwo+ICsJCQlpZiAoaGMtPnNjb3JlID4gMCkKPiArCQkJCWhjLT5zY29yZS0tOwo+Cj4gLQkJ CXJpbmctPmhhbmdjaGVjay5hY3RoZCA9IHJpbmctPmhhbmdjaGVjay5tYXhfYWN0aGQgPSAwOwo+ ICsJCQloYy0+bWF4X2FjdGhkID0gMDsKPiArCQkJZ290byBlbmdpbmVfY2hlY2tfZG9uZTsKPiAg IAkJfQo+Cj4gLQkJcmluZy0+aGFuZ2NoZWNrLnNlcW5vID0gc2Vxbm87Cj4gLQkJcmluZy0+aGFu Z2NoZWNrLmFjdGhkID0gYWN0aGQ7Cj4gKwkJaWYgKGVuZ2luZV9pZGxlKHJpbmcsIGFjdGhkLCBz dGFydCkpIHsKPiArCQkJYnVzeSA9IGNoZWNrX2Zvcl9taXNzZWRfaXJxKHJpbmcpOwo+ICsJCQlp ZiAoYnVzeSkgewo+ICsJCQkJLyogU3RhcnQgd2FraW5nIHVwIGlycmVzcGVjdGl2ZSBvZgo+ICsJ CQkJICAgb3VyIG1pc3NlZF9pcnEgYm9va2tlZXBpbmcgKi8KClNlZSBwcmVmZXJyZWQgbXVsdGkt bGluZSBjb21tZW50IGZvcm1hdC4KCj4gKwkJCQlpZiAoaGMtPnNjb3JlID49IEtJQ0spCj4gKwkJ CQkJd2FrZV91cF9hbGwoJnJpbmctPmlycV9xdWV1ZSk7Cj4gKwo+ICsJCQkJaGMtPnNjb3JlICs9 IEtJQ0s7Cj4gKwkJCQloYy0+YWN0aW9uID0gSEFOR0NIRUNLX0FDVElWRTsKPiArCQkJfSBlbHNl IHsKPiArCQkJCWhjLT5zY29yZSA9IDA7Cj4gKwkJCQloYy0+YWN0aW9uID0gSEFOR0NIRUNLX0lE TEU7Cj4gKwkJCX0KPiArCQkJZ290byBlbmdpbmVfY2hlY2tfZG9uZTsKPiArCQl9Cj4gKwo+ICsJ CWhhbmdjaGVja19oYW5kbGVfc3R1Y2tfcmluZyhyaW5nLCBhY3RoZCk7Cj4gKwo+ICtlbmdpbmVf Y2hlY2tfZG9uZToKPiArCQloYy0+c2Vxbm8gPSBzZXFubzsKPiArCQloYy0+YWN0aGQgPSBhY3Ro ZDsKPiArCQloYy0+c3RhcnQgPSBzdGFydDsKPiAgIAkJYnVzeV9jb3VudCArPSBidXN5Owo+ICAg CX0KPgoKWW91J3ZlIHJlYXJyYW5nZWQgcXVpdGUgYSBmZXcgdGhpbmdzLCBlc3BlY2lhbGx5IHRo ZSBnZW5lcmFsIGZsb3cgb2YgdGhlIAppZi1zdGF0ZW1lbnRzIGFuZCByZXBsYWNlZCBzZXZlcmFs IGJyYW5jaGVzIHdpdGggZ290byBlbmdpbmVfY2hlY2tfZG9uZS4gCk1heWJlIGl0IHdvdWxkIG1h a2UgdGhpbmdzIGV2ZW4gbW9yZSBjbGVhcmVyIGlmIHlvdSB3b3VsZCBhZGQgMS0yIAppbnRlcm1l ZGlhdGUgcGF0Y2hlcyB3aGVyZSB5b3UgaW50cm9kdWNlIHRoZXNlIHN0cnVjdHVyYWwgY2hhbmdl cyBmaXJzdCAKYmVmb3JlIHlvdSBzdGFydCBjaGFuZ2luZyBsb2dpYywgc3VjaCBhczoKCjEuIFJl cGxhY2luZyByZXF1ZXN0IGNoZWNrcyB3aXRoIE1NSU8gcmVnaXN0ZXIgY2hlY2tzIHRvIGRldGVy bWluZSAKZW5naW5lIGlkbGVuZXNzLgoKMi4gU2V0dGluZyBzY29yZSAwIGFuZCBhY3Rpb24gSURM RSB1cG9uIGVuZ2luZSBpZGxlIGFuZCAKY2hlY2tfZm9yX21pc3NlZF9pcnEgbm9uLWJ1c3kuCgpJ J20gc3VyZSBJIGNvdWxkIGRvIGEgZGVlcGVyIGFuYWx5c2lzIG9mIGFsbCBvZiB0aGUgY2hhbmdl cyBoZXJlIGJ1dCBJIAp0aGluayBpdCBtaWdodCBiZSBhIGdvb2QgaWRlYSB0byBzdGFydCBieSBz cGxpdHRpbmcgdGhpbmdzIHVwIGEgYml0LiBPciAKYW0gSSBiZWluZyBvdmVyemVhbG91cyBoZXJl PwoKVGhhbmtzLApUb21hcwoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcmluZ2J1ZmZlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5o Cj4gaW5kZXggMzlmNmRmYy4uODNlZGNlZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9yaW5nYnVmZmVyLmgKPiBAQCAtODMsMTEgKzgzLDE0IEBAIGVudW0gaW50ZWxfcmluZ19oYW5n Y2hlY2tfYWN0aW9uIHsKPiAgIAlIQU5HQ0hFQ0tfSFVORywKPiAgIH07Cj4KPiArY29uc3QgY2hh ciAqaTkxNV9oYW5nY2hlY2tfYWN0aW9uX3RvX3N0cihlbnVtIGludGVsX3JpbmdfaGFuZ2NoZWNr X2FjdGlvbiBhKTsKPiArCj4gICAjZGVmaW5lIEhBTkdDSEVDS19TQ09SRV9SSU5HX0hVTkcgMzEK Pgo+ICAgc3RydWN0IGludGVsX3JpbmdfaGFuZ2NoZWNrIHsKPiAgIAl1NjQgYWN0aGQ7Cj4gICAJ dTY0IG1heF9hY3RoZDsKPiArCXUzMiBzdGFydDsKPiAgIAl1MzIgc2Vxbm87Cj4gICAJaW50IHNj b3JlOwo+ICAgCWVudW0gaW50ZWxfcmluZ19oYW5nY2hlY2tfYWN0aW9uIGFjdGlvbjsKPgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK