From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id DADD56EA51 for ; Mon, 16 Sep 2019 19:28:02 +0000 (UTC) Date: Mon, 16 Sep 2019 12:29:41 -0700 From: Manasi Navare Message-ID: <20190916192941.GB13413@intel.com> References: <20190912232830.13493-1-manasi.d.navare@intel.com> <20190913234809.29030-1-manasi.d.navare@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: Subject: Re: [igt-dev] [PATCH i-g-t v5] igt/tests/kms_dp_tiled_display: kms test for display port tiled displays List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Simon Ser Cc: "igt-dev@lists.freedesktop.org" , "madhumitha.tp@gmail.com" , Petri Latvala List-ID: T24gTW9uLCBTZXAgMTYsIDIwMTkgYXQgMDc6MTc6NTRQTSArMDAwMCwgU2ltb24gU2VyIHdyb3Rl Ogo+IE9uIFNhdHVyZGF5LCBTZXB0ZW1iZXIgMTQsIDIwMTkgMjo0NyBBTSwgTWFuYXNpIE5hdmFy ZSA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNvbT4gd3JvdGU6Cj4gPiBGcm9tOiBNYWRodW1pdGhh IFRvbGFrYW5haGFsbGkgUHJhZGVlcCA8bWFkaHVtaXRoYS50b2xha2FuYWhhbGxpLnByYWRlZXBA aW50ZWwuY29tPgo+ID4KPiA+IFRoaXMgdGVzdCB2YWxpZGF0ZXMgdGhlIHRpbGVkIERQIGRpc3Bs YXlzIHRvIGRpc3BsYXkgYSB0ZXN0IHBhdHRlcm4KPiA+IHNlYW1sZXNzbHkgYWNyb3NzIHRoZSB0 d28gdGlsZXMuIEl0IHZhbGlkYXRlcyB0aGUgdHJhbnNjb2RlciBwb3J0Cj4gPiBzeW5jIGZlYXR1 cmUgb24gaTkxNSB0byBnZXQgYSB0ZWFyZnJlZSB0aWxlZCBkaXNwbGF5IG91dHB1dC4KPiA+Cj4g PiBSZWxhdGVkIGtlcm5lbCB3b3JrIHBhdGNoZXMtCj4gPiBodHRwczovL3BhdGNod29yay5mcmVl ZGVza3RvcC5vcmcvc2VyaWVzLzY2NDAzLwo+ID4KPiA+IFRoaXMgdGVzdCBjYW4gZXZlbnR1YWxs eSBiZSBleHRlbmRlZCB0byBjb3ZlciB0aWxlZCBkaXNwbGF5IHN1cHBvcnQKPiA+IG9uIG90aGVy IGNvbm5lY3RvciB0eXBlcy4KPiA+Cj4gPiB2NToKPiA+ICogQWRkcmVzc2VzIG5ld2xpbmUgbml0 cyAoU2ltb24pCj4gPiAqIEFkZCAyMDE5IGNvcHlyaWdodCwgaWd0X2Rlc2NyaWJlIChQZXRyaSkK PiA+ICogQ2hlY2sgYWxsIHByZXYgY29ubmVjdG9ycyBmb3IgcGlwZSBhc3NpZ25tZW50cyAoU2lt b24pCj4gPiAqIENvbnRpbnVlIGlmIG51bV9oX3RpbGVzID0gMCAoU2ltb24pCj4gPiB2NDoKPiA+ ICogQWRkIHRoZSBsb2dpYyB0byBjaGVjayB0aGVyZSBhcmUKPiA+IHBhZ2UgZmxpcHMgcGVyIGNv bm5lY3RvciAoU2ltb24pCj4gPiAqIENhbGxvYyBpbnN0ZWFkIG9mIG1hbGxvYyB0byBpbml0aWFs aXplIChNYW5hc2kpCj4gPgo+ID4gdjM6Cj4gPiAqIEZpeCB0aGUgcG9pbnRlciBsZWFrcyAoU2lt b24pCj4gPiAqIENvZGUgaW5kZW50YXRpb24gKE1hbmFzaSkKPiA+ICogQ29tcGFyZSB0d28gY29u c2VjdXRpdmUgZmxpcCB0aW1lc3RhbXBzIChTaW1vbikKPiA+ICogVXNlIHNpbmdsZSBmYiBhY3Jv c3MgdGlsZXMgKFNpbW9uKQo+ID4gKiBGaXggcmVzZXQgbW9kZSBsb2dpYyAoTWFuYXNpKQo+ID4K PiA+IHYyOiBBZGRlZCBhIGNoZWNrIGZvciBjaGVja2luZyBwYWdlZmxpcCBldmVudCB0aW1lc3Rh bXBzIChTaW1vbiwgTWFuYXNpKQo+ID4gICAgIE1pbm9yIHN0eWxlIGNoYW5nZXMgKFNpbW9uKQo+ ID4gICAgQ29kZSBjbGVhbi11cCBhbmQgcmVvcmRlcmluZwo+ID4KPiA+IENjOiBNYW5hc2kgTmF2 YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50ZWwuY29tPgo+ID4gQ2M6IFBldHJpIExhdHZhbGEgPHBl dHJpLmxhdHZhbGFAaW50ZWwuY29tPgo+ID4gQ2M6IFNpbW9uIFNlciA8c2ltb24uc2VyQGludGVs LmNvbT4KPiA+IENjOiA8bWFkaHVtaXRoYS50cEBnbWFpbC5jb20+Cj4gPiBDYzogU2ltb24gU2Vy IDxjb250YWN0QGVtZXJzaW9uLmZyPgo+ID4gU2lnbmVkLW9mZi1ieTogTWFkaHVtaXRoYSBUb2xh a2FuYWhhbGxpIFByYWRlZXAgPG1hZGh1bWl0aGEudG9sYWthbmFoYWxsaS5wcmFkZWVwQGludGVs LmNvbT4KPiA+IFNpZ25lZC1vZmYtYnk6IE1hbmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5hdmFyZUBp bnRlbC5jb20+Cj4gPiAtLS0KPiA+ICB0ZXN0cy9NYWtlZmlsZS5zb3VyY2VzICAgICAgIHwgICAx ICsKPiA+ICB0ZXN0cy9rbXNfZHBfdGlsZWRfZGlzcGxheS5jIHwgNDIyICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCj4gPiAgdGVzdHMvbWVzb24uYnVpbGQgICAgICAgICAgICB8 ICAgMSArCj4gPiAgMyBmaWxlcyBjaGFuZ2VkLCA0MjQgaW5zZXJ0aW9ucygrKQo+ID4gIGNyZWF0 ZSBtb2RlIDEwMDY0NCB0ZXN0cy9rbXNfZHBfdGlsZWRfZGlzcGxheS5jCj4gPgo+ID4gZGlmZiAt LWdpdCBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCj4g PiBpbmRleCBjMDJlNGQ5NC4uNzU2MWFiOWIgMTAwNjQ0Cj4gPiAtLS0gYS90ZXN0cy9NYWtlZmls ZS5zb3VyY2VzCj4gPiArKysgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCj4gPiBAQCAtNDEsNiAr NDEsNyBAQCBURVNUU19wcm9ncyA9IFwKPiA+ICAJa21zX2N1cnNvcl9lZGdlX3dhbGsgXAo+ID4g IAlrbXNfY3Vyc29yX2xlZ2FjeSBcCj4gPiAgCWttc19kcF9kc2MgXAo+ID4gKwlrbXNfZHBfdGls ZWRfZGlzcGxheSBcCj4gPiAgCWttc19kcmF3X2NyYyBcCj4gPiAgCWttc19mYmNvbl9mYnQgXAo+ ID4gIAlrbXNfZmVuY2VfcGluX2xlYWsgXAo+ID4gZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19kcF90 aWxlZF9kaXNwbGF5LmMgYi90ZXN0cy9rbXNfZHBfdGlsZWRfZGlzcGxheS5jCj4gPiBuZXcgZmls ZSBtb2RlIDEwMDY0NAo+ID4gaW5kZXggMDAwMDAwMDAuLjllOTA0N2FlCj4gPiAtLS0gL2Rldi9u dWxsCj4gPiArKysgYi90ZXN0cy9rbXNfZHBfdGlsZWRfZGlzcGxheS5jCj4gPiBAQCAtMCwwICsx LDQyMiBAQAo+ID4gKy8qCj4gPiArICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRp b24KPiA+ICsgKgo+ID4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2Yg Y2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4gPiArICogY29weSBvZiB0aGlzIHNv ZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUi KSwKPiA+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBp bmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gPiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNv cHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4gPiAr ICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJz b25zIHRvIHdob20gdGhlCj4gPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBz dWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiA+ICsgKgo+ID4gKyAqIFRoZSBh Ym92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRp bmcgdGhlIG5leHQKPiA+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBj b3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4gPiArICogU29mdHdhcmUuCj4g PiArICoKPiA+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBX QVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ID4gKyAqIElNUExJRUQsIElOQ0xVRElO RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ ID4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1F TlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+ID4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBI T0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gPiArICog TElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhF UldJU0UsIEFSSVNJTkcKPiA+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRI IFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCj4gPiArICogSU4gVEhF IFNPRlRXQVJFLgo+ID4gKyAqCj4gPiArICogQXV0aG9yczoKPiA+ICsgKiAgTWFkaHVtaXRoYSBU b2xha2FuYWhhbGxpIFByYWRlZXAKPiA+ICsgKiAgICAgIDxtYWRodW1pdGhhLnRvbGFrYW5haGFs bGkucHJhZGVlcEBpbnRlbC5jb20+Cj4gPiArICogIE1hbmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5h dmFyZUBpbnRlbC5jb20+Cj4gPiArICoKPiA+ICsgKiBEaXNwbGF5IFBvcnQgVGlsZWQgRGlzcGxh eSBUZXN0Cj4gPiArICogVGhpcyB0ZXN0IHBhcnNlcyB0aGUgdGlsZSBpbmZvcm1hdGlvbiBvZiB0 aGUgY29ubmVjdG9ycyB0aGF0IGhhdmUgVElMRQo+ID4gKyAqIHByb3BlcnR5IHNldCwgc2V0cyB1 cCB0aGUgZnJhbWVidWZmZXIgd2l0aCBjb3JyZWN0IG9mZnNldHMgY29ycmVzcG9uZGluZyB0bwo+ ID4gKyAqIHRoZSB0aWxlIG9mZnNldHMgYW5kIGRvZXMgYW4gYXRvbWljIG1vZGVzZXQgd2l0aCB0 d28gQ1JUQ3MgZm9yIHR3bwo+ID4gKyAqIGNvbm5lY3RvcnMuIFBhZ2UgZmxpcCBldmVudCB0aW1l c3RhbXAgZnJvbSBlYWNoIENSVEMgaXMgY29sbGVjdGVkIGFuZAo+ID4gKyAqIGNvbXBhcmVkIHRv IG1ha2Ugc3VyZSB0aGF0IHRoZXkgb2NjdXJyZWQgaW4gYSBzeW5jaHJvbm91cyBtYW5uZXIuCj4g PiArICoKPiA+ICsgKiBUaGlzIHRlc3QgY3VycmVudGx5IHN1cHBvcnRzIG9ubHkgaG9yaXpvbnRh bGx5IHRpbGVkIGRpc3BsYXlzLCBpbiBsaW5lIHdpdGgKPiA+ICsgKiB0aGUgZGlzcGxheXMgc3Vw cG9ydGVkIGJ5IHRoZSBrZXJuZWwgYXQgdGhlIG1vbWVudC4KPiA+ICsgKi8KPiA+ICsKPiA+ICsj aW5jbHVkZSAiaWd0LmgiCj4gPiArI2luY2x1ZGUgInBvbGwuaCIKPiA+ICsjaW5jbHVkZSAiZHJt X21vZGUuaCIKPiA+ICsjaW5jbHVkZSAiZHJtX2ZvdXJjYy5oIgo+ID4gKwo+ID4gK0lHVF9URVNU X0RFU0NSSVBUSU9OKCJUZXN0IGZvciBUcmFuc2NvZGVyIFBvcnQgU3luYyBmb3IgRGlzcGxheSBQ b3J0IFRpbGVkIERpc3BsYXlzIik7Cj4gPiArCj4gPiArdHlwZWRlZiBzdHJ1Y3Qgewo+ID4gKwlp Z3Rfb3V0cHV0X3QgKm91dHB1dDsKPiA+ICsJaWd0X3RpbGVfaW5mb190IHRpbGU7Cj4gPiArCWVu dW0gcGlwZSBwaXBlOwo+ID4gKwlkcm1Nb2RlQ29ubmVjdG9yUHRyIGNvbm5lY3RvcjsKPiA+ICsJ Ym9vbCBnb3RfcGFnZV9mbGlwOwo+ID4gK30gZGF0YV9jb25uZWN0b3JfdDsKPiA+ICsKPiA+ICt0 eXBlZGVmIHN0cnVjdCB7Cj4gPiArCWludCBkcm1fZmQ7Cj4gPiArCWludCBudW1faF90aWxlczsK PiA+ICsJaWd0X2ZiX3QgZmJfdGVzdF9wYXR0ZXJuOwo+ID4gKwlpZ3RfZGlzcGxheV90ICpkaXNw bGF5Owo+ID4gKwlkYXRhX2Nvbm5lY3Rvcl90ICpjb25uczsKPiA+ICsJZW51bSBpZ3RfY29tbWl0 X3N0eWxlIGNvbW1pdDsKPiA+ICt9IGRhdGFfdDsKPiA+ICsKPiA+ICtzdGF0aWMgaW50IGRybV9w cm9wZXJ0eV9pc190aWxlKGRybU1vZGVQcm9wZXJ0eVB0ciBwcm9wKQo+ID4gK3sKPiA+ICsJcmV0 dXJuIChzdHJjbXAocHJvcC0+bmFtZSwgIlRJTEUiKSA/IDAgOiAxKSAmJgo+ID4gKwkJCSBkcm1f cHJvcGVydHlfdHlwZV9pcyhwcm9wLCBEUk1fTU9ERV9QUk9QX0JMT0IpOwo+ID4gK30KPiA+ICsK PiA+ICtzdGF0aWMgdm9pZCBnZXRfY29ubmVjdG9yX3RpbGVfcHJvcHMoZGF0YV90ICpkYXRhLCBk cm1Nb2RlQ29ubmVjdG9yUHRyIGNvbm4sCj4gPiArCQkJCSAgICAgaWd0X3RpbGVfaW5mb190ICp0 aWxlKQo+ID4gK3sKPiA+ICsJaW50IGkgPSAwOwo+ID4gKwlkcm1Nb2RlUHJvcGVydHlQdHIgcHJv cDsKPiA+ICsJZHJtTW9kZVByb3BlcnR5QmxvYlB0ciBibG9iOwo+ID4gKwo+ID4gKwlmb3IgKGkg PSAwOyBpIDwgY29ubi0+Y291bnRfcHJvcHM7IGkrKykgewo+ID4gKwkJcHJvcCA9IGRybU1vZGVH ZXRQcm9wZXJ0eShkYXRhLT5kcm1fZmQsIGNvbm4tPnByb3BzW2ldKTsKPiA+ICsKPiA+ICsJCWln dF9hc3NlcnQocHJvcCk7Cj4gPiArCj4gPiArCQlpZiAoIWRybV9wcm9wZXJ0eV9pc190aWxlKHBy b3ApKSB7Cj4gPiArCQkJZHJtTW9kZUZyZWVQcm9wZXJ0eShwcm9wKTsKPiA+ICsJCQljb250aW51 ZTsKPiA+ICsJCX0KPiA+ICsKPiA+ICsJCWJsb2IgPSBkcm1Nb2RlR2V0UHJvcGVydHlCbG9iKGRh dGEtPmRybV9mZCwKPiA+ICsJCQkJY29ubi0+cHJvcF92YWx1ZXNbaV0pOwo+ID4gKwo+ID4gKwkJ aWYgKCFibG9iKQo+ID4gKwkJCWdvdG8gY2xlYW51cDsKPiA+ICsKPiA+ICsJCWlndF9wYXJzZV9j b25uZWN0b3JfdGlsZV9ibG9iKGJsb2IsIHRpbGUpOwo+ID4gKwkJYnJlYWs7Cj4gPiArCX0KPiA+ ICsKPiA+ICtjbGVhbnVwOgo+ID4gKwlkcm1Nb2RlRnJlZVByb3BlcnR5KHByb3ApOwo+ID4gKwlk cm1Nb2RlRnJlZVByb3BlcnR5QmxvYihibG9iKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHZv aWQgZ2V0X251bWJlcl9vZl9oX3RpbGVzKGRhdGFfdCAqZGF0YSkKPiA+ICt7Cj4gPiArCWludCBp Owo+ID4gKwlkcm1Nb2RlUmVzUHRyIHJlczsKPiA+ICsJZHJtTW9kZUNvbm5lY3RvclB0ciBjb25u ZWN0b3I7Cj4gPiArCWlndF90aWxlX2luZm9fdCB0aWxlID0gey5udW1faF90aWxlID0gMH07Cj4g PiArCj4gPiArCWlndF9hc3NlcnQocmVzID0gZHJtTW9kZUdldFJlc291cmNlcyhkYXRhLT5kcm1f ZmQpKTsKPiA+ICsKPiA+ICsJZm9yIChpID0gMDsgaSA8IHJlcy0+Y291bnRfY29ubmVjdG9yczsg aSsrKSB7Cj4gPiArCQljb25uZWN0b3IgPSBkcm1Nb2RlR2V0Q29ubmVjdG9yQ3VycmVudChkYXRh LT5kcm1fZmQsCj4gPiArCQkJCQkJICAgICAgIHJlcy0+Y29ubmVjdG9yc1tpXSk7Cj4gPiArCj4g PiArCQlpZ3RfYXNzZXJ0KGNvbm5lY3Rvcik7Cj4gPiArCj4gPiArCQlpZiAoY29ubmVjdG9yLT5j b25uZWN0aW9uICE9IERSTV9NT0RFX0NPTk5FQ1RFRCB8fAo+ID4gKwkJICAgIGNvbm5lY3Rvci0+ Y29ubmVjdG9yX3R5cGUgIT0gRFJNX01PREVfQ09OTkVDVE9SX0Rpc3BsYXlQb3J0KSB7Cj4gPiAr CQkJZHJtTW9kZUZyZWVDb25uZWN0b3IoY29ubmVjdG9yKTsKPiA+ICsJCQljb250aW51ZTsKPiA+ ICsJCX0KPiA+ICsKPiA+ICsJCWdldF9jb25uZWN0b3JfdGlsZV9wcm9wcyhkYXRhLCBjb25uZWN0 b3IsICZ0aWxlKTsKPiA+ICsKPiA+ICsJCWlmICh0aWxlLm51bV9oX3RpbGUgPT0gMCkgewo+ID4g KwkJCWRybU1vZGVGcmVlQ29ubmVjdG9yKGNvbm5lY3Rvcik7Cj4gPiArCQkJY29udGludWU7Cj4g PiArCQl9Cj4gPiArCQlkYXRhLT5udW1faF90aWxlcyA9IHRpbGUubnVtX2hfdGlsZTsKPiA+ICsJ CWJyZWFrOwo+ID4gKwl9Cj4gPiArCj4gPiArCWRybU1vZGVGcmVlUmVzb3VyY2VzKHJlcyk7Cj4g PiArCWRybU1vZGVGcmVlQ29ubmVjdG9yKGNvbm5lY3Rvcik7Cj4gPiArfQo+ID4gKwo+ID4gK3N0 YXRpYyB2b2lkIGdldF9jb25uZWN0b3JzKGRhdGFfdCAqZGF0YSkKPiA+ICt7Cj4gPiArCWludCBj b3VudCA9IDA7Cj4gPiArCWlndF9vdXRwdXRfdCAqb3V0cHV0Owo+ID4gKwlkYXRhX2Nvbm5lY3Rv cl90ICpjb25ucyA9IGRhdGEtPmNvbm5zOwo+ID4gKwo+ID4gKwlmb3JfZWFjaF9jb25uZWN0ZWRf b3V0cHV0KGRhdGEtPmRpc3BsYXksIG91dHB1dCkgewo+ID4gKwkJY29ubnNbY291bnRdLmNvbm5l Y3RvciA9IGRybU1vZGVHZXRDb25uZWN0b3IoZGF0YS0+ZGlzcGxheS0+ZHJtX2ZkLAo+ID4gKwkJ CQkJCQkgICAgIG91dHB1dC0+aWQpOwo+ID4gKwo+ID4gKwkJaWd0X2Fzc2VydChjb25uc1tjb3Vu dF0uY29ubmVjdG9yKTsKPiA+ICsKPiA+ICsJCWlmIChjb25uc1tjb3VudF0uY29ubmVjdG9yLT5j b25uZWN0b3JfdHlwZSAhPQo+ID4gKwkJICAgIERSTV9NT0RFX0NPTk5FQ1RPUl9EaXNwbGF5UG9y dCkgewo+ID4gKwkJCWRybU1vZGVGcmVlQ29ubmVjdG9yKGNvbm5zW2NvdW50XS5jb25uZWN0b3Ip Owo+ID4gKwkJCWNvbnRpbnVlOwo+ID4gKwkJfQo+ID4gKwo+ID4gKwkJZ2V0X2Nvbm5lY3Rvcl90 aWxlX3Byb3BzKGRhdGEsIGNvbm5zW2NvdW50XS5jb25uZWN0b3IsCj4gPiArCQkJCQkgJmNvbm5z W2NvdW50XS50aWxlKTsKPiA+ICsKPiA+ICsJCWlmIChjb25uc1tjb3VudF0udGlsZS5udW1faF90 aWxlID09IDApIHsKPiA+ICsJCQlkcm1Nb2RlRnJlZUNvbm5lY3Rvcihjb25uc1tjb3VudF0uY29u bmVjdG9yKTsKPiA+ICsJCQljb250aW51ZTsKPiA+ICsJCX0KPiA+ICsKPiA+ICsJCS8qIENoZWNr IGlmIHRoZSBjb25uZWN0b3JzIGJlbG9uZyB0byB0aGUgc2FtZSB0aWxlIGdyb3VwICovCj4gPiAr CQlpZiAoY291bnQgPiAwKQo+ID4gKwkJCWlndF9hc3NlcnQoY29ubnNbY291bnRdLnRpbGUudGls ZV9ncm91cF9pZCA9PQo+ID4gKwkJCQkgICBjb25uc1tjb3VudC0xXS50aWxlLnRpbGVfZ3JvdXBf aWQpOwo+ID4gKwo+ID4gKwkJY291bnQrKzsKPiA+ICsJfQo+ID4gK30KPiA+ICsKPiA+ICtzdGF0 aWMgdm9pZAo+ID4gK3Jlc2V0X3BsYW5lKGlndF9vdXRwdXRfdCAqb3V0cHV0KQo+ID4gK3sKPiA+ ICsJaWd0X3BsYW5lX3QgKnByaW1hcnk7Cj4gPiArCj4gPiArCXByaW1hcnkgPSBpZ3Rfb3V0cHV0 X2dldF9wbGFuZV90eXBlKG91dHB1dCwgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSk7Cj4gPiArCWln dF9wbGFuZV9zZXRfZmIocHJpbWFyeSwgTlVMTCk7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2 b2lkIHJlc2V0X291dHB1dChpZ3Rfb3V0cHV0X3QgKm91dHB1dCkKPiA+ICt7Cj4gPiArCWlndF9v dXRwdXRfc2V0X3BpcGUob3V0cHV0LCBQSVBFX05PTkUpOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0 aWMgdm9pZCByZXNldF9tb2RlKGRhdGFfdCAqZGF0YSkKPiA+ICt7Cj4gPiArCWludCBjb3VudDsK PiA+ICsJaWd0X291dHB1dF90ICpvdXRwdXQ7Cj4gPiArCWRhdGFfY29ubmVjdG9yX3QgKmNvbm5z ID0gZGF0YS0+Y29ubnM7Cj4gPiArCj4gPiArCWZvciAoY291bnQgPSAwOyBjb3VudCA8IGRhdGEt Pm51bV9oX3RpbGVzOyBjb3VudCsrKSB7Cj4gPiArCQlvdXRwdXQgPSBpZ3Rfb3V0cHV0X2Zyb21f Y29ubmVjdG9yKGRhdGEtPmRpc3BsYXksCj4gPiArCQkJCQkJICAgY29ubnNbY291bnRdLmNvbm5l Y3Rvcik7Cj4gPiArCQlpZ3Rfb3V0cHV0X3NldF9waXBlKG91dHB1dCwgUElQRV9OT05FKTsKPiA+ ICsJfQo+ID4gKwlpZ3RfZGlzcGxheV9jb21taXQyKGRhdGEtPmRpc3BsYXksIGRhdGEtPmNvbW1p dCk7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkIHRlc3RfY2xlYW51cChkYXRhX3QgKmRh dGEpCj4gPiArewo+ID4gKwlpbnQgY291bnQ7Cj4gPiArCWRhdGFfY29ubmVjdG9yX3QgKmNvbm5z ID0gZGF0YS0+Y29ubnM7Cj4gPiArCj4gPiArCWZvciAoY291bnQgPSAwOyBjb3VudCA8IGRhdGEt Pm51bV9oX3RpbGVzOyBjb3VudCsrKSB7Cj4gPiArCQlpZiAoY29ubnNbY291bnRdLm91dHB1dCkg ewo+ID4gKwkJCXJlc2V0X3BsYW5lKGNvbm5zW2NvdW50XS5vdXRwdXQpOwo+ID4gKwkJCXJlc2V0 X291dHB1dChjb25uc1tjb3VudF0ub3V0cHV0KTsKPiA+ICsJCX0KPiA+ICsJfQo+ID4gKwlpZ3Rf cmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwgJmRhdGEtPmZiX3Rlc3RfcGF0dGVybik7Cj4gPiArCWln dF9kaXNwbGF5X2NvbW1pdDIoZGF0YS0+ZGlzcGxheSwgZGF0YS0+Y29tbWl0KTsKPiA+ICsJbWVt c2V0KGNvbm5zLCAwLCBzaXplb2YoZGF0YV9jb25uZWN0b3JfdCkgKiBkYXRhLT5udW1faF90aWxl cyk7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkIHNldHVwX21vZGUoZGF0YV90ICpkYXRh KQo+ID4gK3sKPiA+ICsJaW50IGNvdW50ID0gMCwgcHJldiA9IDA7Cj4gPiArCWJvb2wgcGlwZV9p bl91c2UgPSBmYWxzZTsKPiA+ICsJZW51bSBwaXBlIHBpcGU7Cj4gPiArCWlndF9vdXRwdXRfdCAq b3V0cHV0Owo+ID4gKwlkYXRhX2Nvbm5lY3Rvcl90ICpjb25ucyA9IGRhdGEtPmNvbm5zOwo+ID4g Kwo+ID4gKwkvKgo+ID4gKwkgKiBUaGUgb3V0cHV0IGlzIHNldCB0byBQSVBFX05PTkUgYW5kIHRo ZW4gYXNzaWduZWQgYSBwaXBlLgo+ID4gKwkgKiBUaGlzIGlzIGRvbmUgdG8gZW5zdXJlIGEgY29t cGxldGUgbW9kZXNldCBvY2N1cmVzIGV2ZXJ5Cj4gPiArCSAqIHRpbWUgdGhlIHRlc3QgaXMgcnVu Lgo+ID4gKwkgKi8KPiA+ICsJcmVzZXRfbW9kZShkYXRhKTsKPiA+ICsKPiA+ICsJZm9yIChjb3Vu dCA9IDA7IGNvdW50IDwgZGF0YS0+bnVtX2hfdGlsZXM7IGNvdW50KyspIHsKPiA+ICsJCW91dHB1 dCA9IGlndF9vdXRwdXRfZnJvbV9jb25uZWN0b3IoZGF0YS0+ZGlzcGxheSwKPiA+ICsJCQkJCQkg ICBjb25uc1tjb3VudF0uY29ubmVjdG9yKTsKPiA+ICsKPiA+ICsJCWZvcl9lYWNoX3BpcGUoZGF0 YS0+ZGlzcGxheSwgcGlwZSkgewo+ID4gKwkJCXBpcGVfaW5fdXNlID0gZmFsc2U7Cj4gPiArCQkJ aWYgKGNvdW50ID4gMCkgewo+ID4gKwkJCQlmb3IgKHByZXYgPSBjb3VudCAtIDE7IHByZXYgPj0g MDsgcHJldi0tKSB7Cj4gPiArCQkJCQlpZiAocGlwZSA9PSBjb25uc1twcmV2XS5waXBlKSB7Cj4g PiArCQkJCQkJcGlwZV9pbl91c2UgPSB0cnVlOwo+ID4gKwkJCQkJCWJyZWFrOwo+ID4gKwkJCQkJ fQo+ID4gKwkJCQl9Cj4gPiArCQkJCWlmIChwaXBlX2luX3VzZSkKPiA+ICsJCQkJCWNvbnRpbnVl Owo+ID4gKwkJCX0KPiA+ICsKPiA+ICsJCQlpZiAoaWd0X3BpcGVfY29ubmVjdG9yX3ZhbGlkKHBp cGUsIG91dHB1dCkpIHsKPiA+ICsJCQkJY29ubnNbY291bnRdLnBpcGUgPSBwaXBlOwo+ID4gKwkJ CQljb25uc1tjb3VudF0ub3V0cHV0ID0gb3V0cHV0Owo+ID4gKwo+ID4gKwkJCQlpZ3Rfb3V0cHV0 X3NldF9waXBlKGNvbm5zW2NvdW50XS5vdXRwdXQsCj4gPiArCQkJCQkJICAgIGNvbm5zW2NvdW50 XS5waXBlKTsKPiA+ICsJCQkJYnJlYWs7Cj4gPiArCQkJfQo+ID4gKwkJfQo+ID4gKwkJaWd0X2Fz c2VydChjb25uc1tjb3VudF0ucGlwZSAhPSBQSVBFX05PTkUpOwo+IAo+IE1pbm9yIG5pdDogc2hv dWxkIHRoaXMgYmUgaWd0X3JlcXVpcmUgaW5zdGVhZCwgc28gdGhhdCB3ZSBza2lwIHRoZSB0ZXN0 IGlmIHdlCj4gZG9uJ3QgaGF2ZSBlbm91Z2ggcGlwZXM/CgpZZXMgbWFrZXMgc2Vuc2UgdG8gbWFr ZSB0aGlzIGEgaWd0X3JlcXVpcmUgdG8gc2tpcCB0aGUgdGVzdCBpZiBIVyBjb25maWd1cmF0aW9u CmlzIG5vdCBzdXBwb3J0ZWQgV2lsbCBjaGFuZ2UgdGhpcyBhbmQgYWRkIHlvdXIgci1iIGFuZCBw dXNoIGl0CgpSZWdhcmRzCk1hbmFzaQoKPiAKPiBSZWdhcmRsZXNzLCB0aGlzIGlzOgo+IAo+IFJl dmlld2VkLWJ5OiBTaW1vbiBTZXIgPHNpbW9uLnNlckBpbnRlbC5jb20+Cj4gCj4gRmVlbCBmcmVl IHRvIHB1c2ggaXQsIHRoYW5rcyBmb3IgeW91ciB3b3JrIQo+IAo+ID4gKwl9Cj4gPiArCWlndF9k aXNwbGF5X2NvbW1pdF9hdG9taWMoZGF0YS0+ZGlzcGxheSwgRFJNX01PREVfQVRPTUlDX0FMTE9X X01PREVTRVQsCj4gPiArCQkJCSAgTlVMTCk7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lk IHNldHVwX2ZyYW1lYnVmZmVyKGRhdGFfdCAqZGF0YSkKPiA+ICt7Cj4gPiArCWludCBjb3VudDsK PiA+ICsJaWd0X3BsYW5lX3QgKnByaW1hcnk7Cj4gPiArCWludCBmYl9oX3NpemUgPSAwLCBmYl92 X3NpemUgPSAwOwo+ID4gKwlkYXRhX2Nvbm5lY3Rvcl90ICpjb25ucyA9IGRhdGEtPmNvbm5zOwo+ ID4gKwo+ID4gKwlmb3IgKGNvdW50ID0gMDsgY291bnQgPCBkYXRhLT5udW1faF90aWxlczsgY291 bnQrKykgewo+ID4gKwo+ID4gKwkJZmJfaF9zaXplICs9IGNvbm5zW2NvdW50XS50aWxlLnRpbGVf aF9zaXplOwo+ID4gKwkJLyogV2Ugc3VwcG9ydCBvbmx5IGhvcml6b250YWwgdGlsZXMsIHNvIHZl cnRpY2FsIHNpemUgaXMgc2FtZQo+ID4gKwkJICogZm9yIGFsbCB0aWxlcyBhbmQgbmVlZHMgdG8g YmUgYXNzaWduZWQgb25seSBvbmNlLgo+ID4gKwkJICovCj4gPiArCQlpZiAoIWZiX3Zfc2l6ZSkK PiA+ICsJCQlmYl92X3NpemUgPSBjb25uc1tjb3VudF0udGlsZS50aWxlX3Zfc2l6ZTsKPiA+ICsK PiA+ICsJCWlmIChjb3VudCA+IDApCj4gPiArCQkJaWd0X2Fzc2VydChjb25uc1tjb3VudF0udGls ZS50aWxlX3Zfc2l6ZSA9PQo+ID4gKwkJCQkgICBjb25uc1tjb3VudC0xXS50aWxlLnRpbGVfdl9z aXplKTsKPiA+ICsJfQo+ID4gKwo+ID4gKwlpZ3RfY3JlYXRlX3BhdHRlcm5fZmIoZGF0YS0+ZHJt X2ZkLAo+ID4gKwkJCSAgICAgIGZiX2hfc2l6ZSwKPiA+ICsJCQkgICAgICBmYl92X3NpemUsCj4g PiArCQkJICAgICAgRFJNX0ZPUk1BVF9YQkdSODg4OCwKPiA+ICsJCQkgICAgICBMT0NBTF9EUk1f Rk9STUFUX01PRF9OT05FLAo+ID4gKwkJCSAgICAgICZkYXRhLT5mYl90ZXN0X3BhdHRlcm4pOwo+ ID4gKwo+ID4gKwlmb3IgKGNvdW50ID0gMDsgY291bnQgPCBkYXRhLT5udW1faF90aWxlczsgY291 bnQrKykgewo+ID4gKwkJcHJpbWFyeSA9IGlndF9vdXRwdXRfZ2V0X3BsYW5lX3R5cGUoY29ubnNb Y291bnRdLm91dHB1dCwKPiA+ICsJCQkJCQkgICAgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSk7Cj4g PiArCj4gPiArCQlpZ3RfcGxhbmVfc2V0X2ZiKHByaW1hcnksICZkYXRhLT5mYl90ZXN0X3BhdHRl cm4pOwo+ID4gKwo+ID4gKwkJaWd0X2ZiX3NldF9zaXplKCZkYXRhLT5mYl90ZXN0X3BhdHRlcm4s IHByaW1hcnksCj4gPiArCQkJCWNvbm5zW2NvdW50XS50aWxlLnRpbGVfaF9zaXplLAo+ID4gKwkJ CQljb25uc1tjb3VudF0udGlsZS50aWxlX3Zfc2l6ZSk7Cj4gPiArCj4gPiArCQlpZ3RfZmJfc2V0 X3Bvc2l0aW9uKCZkYXRhLT5mYl90ZXN0X3BhdHRlcm4sIHByaW1hcnksCj4gPiArCQkJCSAgICAo Y29ubnNbY291bnRdLnRpbGUudGlsZV9oX3NpemUgKgo+ID4gKwkJCQkgICAgIGNvbm5zW2NvdW50 XS50aWxlLnRpbGVfaF9sb2MpLAo+ID4gKwkJCQkgICAgKGNvbm5zW2NvdW50XS50aWxlLnRpbGVf dl9zaXplICoKPiA+ICsJCQkJICAgICBjb25uc1tjb3VudF0udGlsZS50aWxlX3ZfbG9jKSk7Cj4g PiArCj4gPiArCQlpZ3RfcGxhbmVfc2V0X3NpemUocHJpbWFyeSwKPiA+ICsJCQkJICAgY29ubnNb Y291bnRdLnRpbGUudGlsZV9oX3NpemUsCj4gPiArCQkJCSAgIGNvbm5zW2NvdW50XS50aWxlLnRp bGVfdl9zaXplKTsKPiA+ICsJfQo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBwYWdlX2Zs aXBfaGFuZGxlcihpbnQgZmQsIHVuc2lnbmVkIGludCBzZXEsCj4gPiArCQkJICAgICAgdW5zaWdu ZWQgaW50IHR2X3NlYywgdW5zaWduZWQgaW50IHR2X3VzZWMsCj4gPiArCQkJICAgICAgdW5zaWdu ZWQgaW50IGNydGNfaWQsIHZvaWQgKl9kYXRhKQo+ID4gK3sKPiA+ICsJZGF0YV90ICpkYXRhID0g X2RhdGE7Cj4gPiArCWRhdGFfY29ubmVjdG9yX3QgKmNvbm47Cj4gPiArCWJvb2wgaXNfb25fdGlt ZSA9IGZhbHNlOwo+ID4gKwlzdGF0aWMgdW5zaWduZWQgaW50IF90dl9zZWMsIF90dl91c2VjOwo+ ID4gKwlpbnQgaTsKPiA+ICsKPiA+ICsJaWd0X2RlYnVnKCJQYWdlIEZsaXAgRXZlbnQgcmVjZWl2 ZWQgZnJvbSBDUlRDOiVkIGF0ICV1OiV1XG4iLCBjcnRjX2lkLAo+ID4gKwkJICB0dl9zZWMsIHR2 X3VzZWMpOwo+ID4gKwo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgZGF0YS0+bnVtX2hfdGlsZXM7IGkr Kykgewo+ID4gKwo+ID4gKwkJY29ubiA9ICZkYXRhLT5jb25uc1tpXTsKPiA+ICsJCWlmIChkYXRh LT5kaXNwbGF5LT5waXBlc1tjb25uLT5waXBlXS5jcnRjX2lkID09IGNydGNfaWQpIHsKPiA+ICsJ CQlpZ3RfYXNzZXJ0X2YoIWNvbm4tPmdvdF9wYWdlX2ZsaXAsCj4gPiArCQkJCSAgICAgIkdvdCB0 d28gcGFnZS1mbGlwcyBmb3IgQ1JUQyAldVxuIiwKPiA+ICsJCQkJICAgICBjcnRjX2lkKTsKPiA+ ICsJCQljb25uLT5nb3RfcGFnZV9mbGlwID0gdHJ1ZTsKPiA+ICsKPiA+ICsJCQkvKiBTa2lwIHRo ZSBmb2xsb3dpbmcgY2hlY2tzIGZvciB0aGUgZmlyc3QgcGFnZSBmbGlwIGV2ZW50ICovCj4gPiAr CQkJaWYgKF90dl9zZWMgPT0gMCB8fCBfdHZfdXNlYyA9PSAwKSB7Cj4gPiArCQkJCV90dl9zZWMg PSB0dl9zZWM7Cj4gPiArCQkJCV90dl91c2VjID0gdHZfdXNlYzsKPiA+ICsJCQkJcmV0dXJuOwo+ ID4gKwkJCX0KPiA+ICsJCQkvKgo+ID4gKwkJCSAqIEZvciBzZWFtbGVzcyB0ZWFyLWZyZWUgZGlz cGxheSwgdGhlIHBhZ2UgZmxpcCBldmVudCB0aW1lc3RhbXBzCj4gPiArCQkJICogZnJvbSBhbGwg dGhlIHRpbGVzIHNob3VsZCBub3QgZGlmZmVyIGJ5IG1vcmUgdGhhbiAxMHVzLgo+ID4gKwkJCSAq Lwo+ID4gKwkJCWlzX29uX3RpbWUgPSB0dl9zZWMgPT0gX3R2X3NlYyAmJiAoYWJzKHR2X3VzZWMg LSBfdHZfdXNlYykgPCAxMCk7Cj4gPiArCj4gPiArCQkJaWd0X2ZhaWxfb25fZighaXNfb25fdGlt ZSwgIkRlbGF5ZWQgcGFnZSBmbGlwIGV2ZW50IGZyb20gQ1JUQzolZCBhdCAldToldVxuIiwKPiA+ ICsJCQkJICAgICAgY3J0Y19pZCwgdHZfc2VjLCB0dl91c2VjKTsKPiA+ICsJCQlyZXR1cm47Cj4g PiArCQl9Cj4gPiArCX0KPiA+ICsKPiA+ICsJaWd0X2Fzc2VydF9mKGZhbHNlLCAiR290IHBhZ2Ut ZmxpcCBldmVudCBmb3IgdW5leHBlY3RlZCBDUlRDICV1XG4iLAo+ID4gKwkJICAgICBjcnRjX2lk KTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGJvb2wgZ290X2FsbF9wYWdlX2ZsaXBzKGRhdGFf dCAqZGF0YSkKPiA+ICt7Cj4gPiArCWludCBpOwo+ID4gKwo+ID4gKwlmb3IgKGkgPSAwOyBpIDwg ZGF0YS0+bnVtX2hfdGlsZXM7IGkrKykgewo+ID4gKwkJaWYgKCFkYXRhLT5jb25uc1tpXS5nb3Rf cGFnZV9mbGlwKQo+ID4gKwkJCXJldHVybiBmYWxzZTsKPiA+ICsJfQo+ID4gKwo+ID4gKwlyZXR1 cm4gdHJ1ZTsKPiA+ICt9Cj4gPiArCj4gPiAraWd0X21haW4KPiA+ICt7Cj4gPiArCWlndF9kaXNw bGF5X3QgZGlzcGxheTsKPiA+ICsJZGF0YV90IGRhdGEgPSB7MH07Cj4gPiArCXN0cnVjdCBwb2xs ZmQgcGZkID0gezB9Owo+ID4gKwlkcm1FdmVudENvbnRleHQgZHJtX2V2ZW50ID0gezB9Owo+ID4g KwlpbnQgcmV0Owo+ID4gKwo+ID4gKwlpZ3RfZml4dHVyZSB7Cj4gPiArCQlkYXRhLmRybV9mZCA9 IGRybV9vcGVuX2RyaXZlcl9tYXN0ZXIoRFJJVkVSX0FOWSk7Cj4gPiArCj4gPiArCQlrbXN0ZXN0 X3NldF92dF9ncmFwaGljc19tb2RlKCk7Cj4gPiArCQlpZ3RfZGlzcGxheV9yZXF1aXJlKCZkaXNw bGF5LCBkYXRhLmRybV9mZCk7Cj4gPiArCQlpZ3RfZGlzcGxheV9yZXNldCgmZGlzcGxheSk7Cj4g PiArCj4gPiArCQlkYXRhLmRpc3BsYXkgPSAmZGlzcGxheTsKPiA+ICsJCXBmZC5mZCA9IGRhdGEu ZHJtX2ZkOwo+ID4gKwkJcGZkLmV2ZW50cyA9IFBPTExJTjsKPiA+ICsJCWRybV9ldmVudC52ZXJz aW9uID0gMzsKPiA+ICsJCWRybV9ldmVudC5wYWdlX2ZsaXBfaGFuZGxlcjIgPSBwYWdlX2ZsaXBf aGFuZGxlcjsKPiA+ICsJCWRhdGEuY29tbWl0ID0gZGF0YS5kaXNwbGF5LT5pc19hdG9taWMgPyBD T01NSVRfQVRPTUlDIDogQ09NTUlUX0xFR0FDWTsKPiA+ICsJCWlndF9yZXF1aXJlKGRhdGEuY29t bWl0ID09IENPTU1JVF9BVE9NSUMpOwo+ID4gKwo+ID4gKwkJZ2V0X251bWJlcl9vZl9oX3RpbGVz KCZkYXRhKTsKPiA+ICsJCWlndF9kZWJ1ZygiTnVtYmVyIG9mIEhvcml6b250YWwgVGlsZXM6ICVk XG4iLCBkYXRhLm51bV9oX3RpbGVzKTsKPiA+ICsJCWlndF9yZXF1aXJlKGRhdGEubnVtX2hfdGls ZXMgPiAwKTsKPiA+ICsJCWRhdGEuY29ubnMgPSBjYWxsb2MoZGF0YS5udW1faF90aWxlcywgc2l6 ZW9mKGRhdGFfY29ubmVjdG9yX3QpKTsKPiA+ICsJfQo+ID4gKwo+ID4gKwlpZ3RfZGVzY3JpYmUo Ik1ha2Ugc3VyZSB0aGUgVGlsZWQgQ1JUQ3MgYXJlIHN5bmNocm9uaXplZCBhbmQgd2UgZ2V0ICIK PiA+ICsJCSAgICAgInBhZ2UgZmxpcHMgZm9yIGFsbCB0aWxlZCBDUlRDcyBpbiBvbmUgdmJsYW5r LiIpOwo+ID4gKwlpZ3Rfc3VidGVzdCgiYmFzaWMtdGVzdC1wYXR0ZXJuIikgewo+ID4gKwkJaWd0 X2Fzc2VydChkYXRhLmNvbm5zKTsKPiA+ICsKPiA+ICsJCWdldF9jb25uZWN0b3JzKCZkYXRhKTsK PiA+ICsJCXNldHVwX21vZGUoJmRhdGEpOwo+ID4gKwkJc2V0dXBfZnJhbWVidWZmZXIoJmRhdGEp Owo+ID4gKwkJaWd0X2Rpc3BsYXlfY29tbWl0X2F0b21pYyhkYXRhLmRpc3BsYXksIERSTV9NT0RF X0FUT01JQ19OT05CTE9DSyB8Cj4gPiArCQkJCQkgIERSTV9NT0RFX1BBR0VfRkxJUF9FVkVOVCwg JmRhdGEpOwo+ID4gKwkJd2hpbGUgKCFnb3RfYWxsX3BhZ2VfZmxpcHMoJmRhdGEpKSB7Cj4gPiAr CQkJcmV0ID0gcG9sbCgmcGZkLCAxLCAxMDAwKTsKPiA+ICsJCQlpZ3RfYXNzZXJ0KHJldCA9PSAx KTsKPiA+ICsJCQlkcm1IYW5kbGVFdmVudChkYXRhLmRybV9mZCwgJmRybV9ldmVudCk7Cj4gPiAr CQl9Cj4gPiArCj4gPiArCQl0ZXN0X2NsZWFudXAoJmRhdGEpOwo+ID4gKwl9Cj4gPiArCj4gPiAr CWlndF9maXh0dXJlIHsKPiA+ICsJCWZyZWUoZGF0YS5jb25ucyk7Cj4gPiArCQljbG9zZShkYXRh LmRybV9mZCk7Cj4gPiArCQlrbXN0ZXN0X3Jlc3RvcmVfdnRfbW9kZSgpOwo+ID4gKwkJaWd0X2Rp c3BsYXlfZmluaShkYXRhLmRpc3BsYXkpOwo+ID4gKwl9Cj4gPiArfQo+ID4gZGlmZiAtLWdpdCBh L3Rlc3RzL21lc29uLmJ1aWxkIGIvdGVzdHMvbWVzb24uYnVpbGQKPiA+IGluZGV4IGE3YjJiMzIy Li41MDI5MmRmOCAxMDA2NDQKPiA+IC0tLSBhL3Rlc3RzL21lc29uLmJ1aWxkCj4gPiArKysgYi90 ZXN0cy9tZXNvbi5idWlsZAo+ID4gQEAgLTI2LDYgKzI2LDcgQEAgdGVzdF9wcm9ncyA9IFsKPiA+ ICAJJ2ttc19jdXJzb3JfZWRnZV93YWxrJywKPiA+ICAJJ2ttc19jdXJzb3JfbGVnYWN5JywKPiA+ ICAJJ2ttc19kcF9kc2MnLAo+ID4gKwkna21zX2RwX3RpbGVkX2Rpc3BsYXknLAo+ID4gIAkna21z X2RyYXdfY3JjJywKPiA+ICAJJ2ttc19mYmNvbl9mYnQnLAo+ID4gIAkna21zX2ZlbmNlX3Bpbl9s ZWFrJywKPiA+IC0tCj4gPiAyLjE5LjEKPiAKPiAKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pZ3QtZGV2