From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 78B9489998 for ; Mon, 6 Sep 2021 06:38:30 +0000 (UTC) From: "Modem, Bhanuprakash" Date: Mon, 6 Sep 2021 06:38:26 +0000 Message-ID: References: <20210903162743.29851-1-ville.syrjala@linux.intel.com> <20210903162743.29851-6-ville.syrjala@linux.intel.com> In-Reply-To: <20210903162743.29851-6-ville.syrjala@linux.intel.com> Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t v3 5/7] tests/kms_color: Run each subtest only for a single connector List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Ville Syrjala , "igt-dev@lists.freedesktop.org" List-ID: PiBGcm9tOiBWaWxsZSBTeXJqYWxhIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4NCj4g U2VudDogRnJpZGF5LCBTZXB0ZW1iZXIgMywgMjAyMSA5OjU4IFBNDQo+IFRvOiBpZ3QtZGV2QGxp c3RzLmZyZWVkZXNrdG9wLm9yZw0KPiBDYzogTW9kZW0sIEJoYW51cHJha2FzaCA8YmhhbnVwcmFr YXNoLm1vZGVtQGludGVsLmNvbT4NCj4gU3ViamVjdDogW1BBVENIIGktZy10IHYzIDUvN10gdGVz dHMva21zX2NvbG9yOiBSdW4gZWFjaCBzdWJ0ZXN0IG9ubHkgZm9yIGENCj4gc2luZ2xlIGNvbm5l Y3Rvcg0KPiANCj4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4Lmlu dGVsLmNvbT4NCj4gDQo+IEZvciBtb3N0IG9mIHRoZSBzdWJ0ZXN0cyB0aGUgdXNlZCBjb25uZWN0 b3Igc2hvdWxkIG5vdCBtYXR0ZXIsDQo+IHNvIHJ1biBlYWNoIHN1YnRlc3QganVzdCBmb3IgYSBz aW5nbGUgY29ubmVjdG9yLg0KPiANCj4gU3VnZ2VzdGVkLWJ5OiBCaGFudXByYWthc2ggTW9kZW0g PEJoYW51cHJha2FzaC5tb2RlbUBpbnRlbC5jb20+DQo+IFNpZ25lZC1vZmYtYnk6IFZpbGxlIFN5 cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+DQo+IC0tLQ0KPiAgdGVzdHMv a21zX2NvbG9yLmMgfCA2MTIgKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KPiAgMSBmaWxlIGNoYW5nZWQsIDMwNiBpbnNlcnRpb25zKCspLCAzMDYgZGVsZXRp b25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvdGVzdHMva21zX2NvbG9yLmMgYi90ZXN0cy9rbXNf Y29sb3IuYw0KPiBpbmRleCBkYWJjNjk2M2U5ZTAuLmQ3OGM3ZTIxMTUxMSAxMDA2NDQNCj4gLS0t IGEvdGVzdHMva21zX2NvbG9yLmMNCj4gKysrIGIvdGVzdHMva21zX2NvbG9yLmMNCj4gQEAgLTM3 LDYgKzM3LDEwIEBAIHN0YXRpYyB2b2lkIHRlc3RfcGlwZV9kZWdhbW1hKGRhdGFfdCAqZGF0YSwN Cj4gIAkJeyAwLjAsIDEuMCwgMC4wIH0sDQo+ICAJCXsgMC4wLCAwLjAsIDEuMCB9DQo+ICAJfTsN Cj4gKwlkcm1Nb2RlTW9kZUluZm8gKm1vZGU7DQo+ICsJc3RydWN0IGlndF9mYiBmYl9tb2Rlc2V0 LCBmYjsNCj4gKwlpZ3RfY3JjX3QgY3JjX2Z1bGxnYW1tYSwgY3JjX2Z1bGxjb2xvcnM7DQo+ICsJ aW50IGZiX2lkLCBmYl9tb2Rlc2V0X2lkOw0KPiANCj4gIAlpZ3RfcmVxdWlyZShpZ3RfcGlwZV9v YmpfaGFzX3Byb3AocHJpbWFyeS0+cGlwZSwgSUdUX0NSVENfREVHQU1NQV9MVVQpKTsNCj4gIAlp Z3RfcmVxdWlyZShpZ3RfcGlwZV9vYmpfaGFzX3Byb3AocHJpbWFyeS0+cGlwZSwgSUdUX0NSVENf R0FNTUFfTFVUKSk7DQo+IEBAIC00NCw2OSArNDgsNjUgQEAgc3RhdGljIHZvaWQgdGVzdF9waXBl X2RlZ2FtbWEoZGF0YV90ICpkYXRhLA0KPiAgCWRlZ2FtbWFfbGluZWFyID0gZ2VuZXJhdGVfdGFi bGUoZGF0YS0+ZGVnYW1tYV9sdXRfc2l6ZSwgMS4wKTsNCj4gIAlkZWdhbW1hX2Z1bGwgPSBnZW5l cmF0ZV90YWJsZV9tYXgoZGF0YS0+ZGVnYW1tYV9sdXRfc2l6ZSk7DQo+IA0KPiAtCWZvcl9lYWNo X3ZhbGlkX291dHB1dF9vbl9waXBlKCZkYXRhLT5kaXNwbGF5LCBwcmltYXJ5LT5waXBlLT5waXBl LA0KPiBvdXRwdXQpIHsNCj4gLQkJZHJtTW9kZU1vZGVJbmZvICptb2RlOw0KPiAtCQlzdHJ1Y3Qg aWd0X2ZiIGZiX21vZGVzZXQsIGZiOw0KPiAtCQlpZ3RfY3JjX3QgY3JjX2Z1bGxnYW1tYSwgY3Jj X2Z1bGxjb2xvcnM7DQo+IC0JCWludCBmYl9pZCwgZmJfbW9kZXNldF9pZDsNCj4gKwlvdXRwdXQg PSBpZ3RfZ2V0X3NpbmdsZV9vdXRwdXRfZm9yX3BpcGUoJmRhdGEtPmRpc3BsYXksIHByaW1hcnkt PnBpcGUtDQo+ID5waXBlKTsNCj4gKwlpZ3RfcmVxdWlyZShvdXRwdXQpOw0KPiANCj4gLQkJaWd0 X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIHByaW1hcnktPnBpcGUtPnBpcGUpOw0KPiAtCQltb2Rl ID0gaWd0X291dHB1dF9nZXRfbW9kZShvdXRwdXQpOw0KPiArCWlndF9vdXRwdXRfc2V0X3BpcGUo b3V0cHV0LCBwcmltYXJ5LT5waXBlLT5waXBlKTsNCj4gKwltb2RlID0gaWd0X291dHB1dF9nZXRf bW9kZShvdXRwdXQpOw0KPiANCj4gLQkJLyogQ3JlYXRlIGEgZnJhbWVidWZmZXIgYXQgdGhlIHNp emUgb2YgdGhlIG91dHB1dC4gKi8NCj4gLQkJZmJfaWQgPSBpZ3RfY3JlYXRlX2ZiKGRhdGEtPmRy bV9mZCwNCj4gKwkvKiBDcmVhdGUgYSBmcmFtZWJ1ZmZlciBhdCB0aGUgc2l6ZSBvZiB0aGUgb3V0 cHV0LiAqLw0KPiArCWZiX2lkID0gaWd0X2NyZWF0ZV9mYihkYXRhLT5kcm1fZmQsDQo+ICsJCQkg ICAgICBtb2RlLT5oZGlzcGxheSwNCj4gKwkJCSAgICAgIG1vZGUtPnZkaXNwbGF5LA0KPiArCQkJ ICAgICAgRFJNX0ZPUk1BVF9YUkdCODg4OCwNCj4gKwkJCSAgICAgIERSTV9GT1JNQVRfTU9EX05P TkUsDQo+ICsJCQkgICAgICAmZmIpOw0KPiArCWlndF9hc3NlcnQoZmJfaWQpOw0KIA0KTWlub3I6 IHdlIGNhbiBnZXQgcmlkIG9mIGV4dHJhIHZhcmlhYmxlcyBieSB1cGRhdGluZyBsaWtlDQpgaWd0 X2Fzc2VydChpZ3RfY3JlYXRlX2ZiKCkpO2ANCg0KQW5kIHRoaXMgaXMgYXBwbGljYWJsZSBmb3Ig YWxsIHRoZSBwbGFjZXMuDQoNCj4gKw0KPiArCWZiX21vZGVzZXRfaWQgPSBpZ3RfY3JlYXRlX2Zi KGRhdGEtPmRybV9mZCwNCj4gIAkJCQkgICAgICBtb2RlLT5oZGlzcGxheSwNCj4gIAkJCQkgICAg ICBtb2RlLT52ZGlzcGxheSwNCj4gIAkJCQkgICAgICBEUk1fRk9STUFUX1hSR0I4ODg4LA0KPiAg CQkJCSAgICAgIERSTV9GT1JNQVRfTU9EX05PTkUsDQo+IC0JCQkJICAgICAgJmZiKTsNCj4gLQkJ aWd0X2Fzc2VydChmYl9pZCk7DQo+ICsJCQkJICAgICAgJmZiX21vZGVzZXQpOw0KPiArCWlndF9h c3NlcnQoZmJfbW9kZXNldF9pZCk7DQo+IA0KPiAtCQlmYl9tb2Rlc2V0X2lkID0gaWd0X2NyZWF0 ZV9mYihkYXRhLT5kcm1fZmQsDQo+IC0JCQkJCSAgICAgIG1vZGUtPmhkaXNwbGF5LA0KPiAtCQkJ CQkgICAgICBtb2RlLT52ZGlzcGxheSwNCj4gLQkJCQkJICAgICAgRFJNX0ZPUk1BVF9YUkdCODg4 OCwNCj4gLQkJCQkJICAgICAgRFJNX0ZPUk1BVF9NT0RfTk9ORSwNCj4gLQkJCQkJICAgICAgJmZi X21vZGVzZXQpOw0KPiAtCQlpZ3RfYXNzZXJ0KGZiX21vZGVzZXRfaWQpOw0KPiArCWlndF9wbGFu ZV9zZXRfZmIocHJpbWFyeSwgJmZiX21vZGVzZXQpOw0KPiArCWRpc2FibGVfY3RtKHByaW1hcnkt PnBpcGUpOw0KPiArCWRpc2FibGVfZ2FtbWEocHJpbWFyeS0+cGlwZSk7DQo+ICsJc2V0X2RlZ2Ft bWEoZGF0YSwgcHJpbWFyeS0+cGlwZSwgZGVnYW1tYV9saW5lYXIpOw0KPiArCWlndF9kaXNwbGF5 X2NvbW1pdCgmZGF0YS0+ZGlzcGxheSk7DQo+IA0KPiAtCQlpZ3RfcGxhbmVfc2V0X2ZiKHByaW1h cnksICZmYl9tb2Rlc2V0KTsNCj4gLQkJZGlzYWJsZV9jdG0ocHJpbWFyeS0+cGlwZSk7DQo+IC0J CWRpc2FibGVfZ2FtbWEocHJpbWFyeS0+cGlwZSk7DQo+IC0JCXNldF9kZWdhbW1hKGRhdGEsIHBy aW1hcnktPnBpcGUsIGRlZ2FtbWFfbGluZWFyKTsNCj4gLQkJaWd0X2Rpc3BsYXlfY29tbWl0KCZk YXRhLT5kaXNwbGF5KTsNCj4gKwkvKiBEcmF3IHNvbGlkIGNvbG9ycyB3aXRoIGxpbmVhciBkZWdh bW1hIHRyYW5zZm9ybWF0aW9uLiAqLw0KPiArCXBhaW50X3JlY3RhbmdsZXMoZGF0YSwgbW9kZSwg cmVkX2dyZWVuX2JsdWUsICZmYik7DQo+ICsJaWd0X3BsYW5lX3NldF9mYihwcmltYXJ5LCAmZmIp Ow0KPiArCWlndF9kaXNwbGF5X2NvbW1pdCgmZGF0YS0+ZGlzcGxheSk7DQo+ICsJaWd0X3dhaXRf Zm9yX3ZibGFuayhkYXRhLT5kcm1fZmQsDQo+ICsJCQkgICAgZGlzcGxheS0+cGlwZXNbcHJpbWFy eS0+cGlwZS0+cGlwZV0uY3J0Y19vZmZzZXQpOw0KPiArCWlndF9waXBlX2NyY19jb2xsZWN0X2Ny YyhkYXRhLT5waXBlX2NyYywgJmNyY19mdWxsY29sb3JzKTsNCj4gDQo+IC0JCS8qIERyYXcgc29s aWQgY29sb3JzIHdpdGggbGluZWFyIGRlZ2FtbWEgdHJhbnNmb3JtYXRpb24uICovDQo+IC0JCXBh aW50X3JlY3RhbmdsZXMoZGF0YSwgbW9kZSwgcmVkX2dyZWVuX2JsdWUsICZmYik7DQo+IC0JCWln dF9wbGFuZV9zZXRfZmIocHJpbWFyeSwgJmZiKTsNCj4gLQkJaWd0X2Rpc3BsYXlfY29tbWl0KCZk YXRhLT5kaXNwbGF5KTsNCj4gLQkJaWd0X3dhaXRfZm9yX3ZibGFuayhkYXRhLT5kcm1fZmQsDQo+ IC0JCQkJZGlzcGxheS0+cGlwZXNbcHJpbWFyeS0+cGlwZS0+cGlwZV0uY3J0Y19vZmZzZXQpOw0K PiAtCQlpZ3RfcGlwZV9jcmNfY29sbGVjdF9jcmMoZGF0YS0+cGlwZV9jcmMsICZjcmNfZnVsbGNv bG9ycyk7DQo+ICsJLyogRHJhdyBhIGdyYWRpZW50IHdpdGggZGVnYW1tYSBMVVQgdG8gcmVtYXAg YWxsDQo+ICsJICogdmFsdWVzIHRvIG1heCByZWQvZ3JlZW4vYmx1ZS4NCj4gKwkgKi8NCj4gKwlw YWludF9ncmFkaWVudF9yZWN0YW5nbGVzKGRhdGEsIG1vZGUsIHJlZF9ncmVlbl9ibHVlLCAmZmIp Ow0KPiArCWlndF9wbGFuZV9zZXRfZmIocHJpbWFyeSwgJmZiKTsNCj4gKwlzZXRfZGVnYW1tYShk YXRhLCBwcmltYXJ5LT5waXBlLCBkZWdhbW1hX2Z1bGwpOw0KPiArCWlndF9kaXNwbGF5X2NvbW1p dCgmZGF0YS0+ZGlzcGxheSk7DQo+ICsJaWd0X3dhaXRfZm9yX3ZibGFuayhkYXRhLT5kcm1fZmQs DQo+ICsJCQkgICAgZGlzcGxheS0+cGlwZXNbcHJpbWFyeS0+cGlwZS0+cGlwZV0uY3J0Y19vZmZz ZXQpOw0KPiArCWlndF9waXBlX2NyY19jb2xsZWN0X2NyYyhkYXRhLT5waXBlX2NyYywgJmNyY19m dWxsZ2FtbWEpOw0KPiANCj4gLQkJLyogRHJhdyBhIGdyYWRpZW50IHdpdGggZGVnYW1tYSBMVVQg dG8gcmVtYXAgYWxsDQo+IC0JCSAqIHZhbHVlcyB0byBtYXggcmVkL2dyZWVuL2JsdWUuDQo+IC0J CSAqLw0KPiAtCQlwYWludF9ncmFkaWVudF9yZWN0YW5nbGVzKGRhdGEsIG1vZGUsIHJlZF9ncmVl bl9ibHVlLCAmZmIpOw0KPiAtCQlpZ3RfcGxhbmVfc2V0X2ZiKHByaW1hcnksICZmYik7DQo+IC0J CXNldF9kZWdhbW1hKGRhdGEsIHByaW1hcnktPnBpcGUsIGRlZ2FtbWFfZnVsbCk7DQo+IC0JCWln dF9kaXNwbGF5X2NvbW1pdCgmZGF0YS0+ZGlzcGxheSk7DQo+IC0JCWlndF93YWl0X2Zvcl92Ymxh bmsoZGF0YS0+ZHJtX2ZkLA0KPiAtCQkJCWRpc3BsYXktPnBpcGVzW3ByaW1hcnktPnBpcGUtPnBp cGVdLmNydGNfb2Zmc2V0KTsNCj4gLQkJaWd0X3BpcGVfY3JjX2NvbGxlY3RfY3JjKGRhdGEtPnBp cGVfY3JjLCAmY3JjX2Z1bGxnYW1tYSk7DQo+ICsJLyogVmVyaWZ5IHRoYXQgdGhlIENSQyBvZiB0 aGUgc29mdHdhcmUgY29tcHV0ZWQgb3V0cHV0IGlzDQo+ICsJICogZXF1YWwgdG8gdGhlIENSQyBv ZiB0aGUgZGVnYW1tYSBMVVQgdHJhbnNmb3JtYXRpb24gb3V0cHV0Lg0KPiArCSAqLw0KPiArCWln dF9hc3NlcnRfY3JjX2VxdWFsKCZjcmNfZnVsbGdhbW1hLCAmY3JjX2Z1bGxjb2xvcnMpOw0KPiAN Cj4gLQkJLyogVmVyaWZ5IHRoYXQgdGhlIENSQyBvZiB0aGUgc29mdHdhcmUgY29tcHV0ZWQgb3V0 cHV0IGlzDQo+IC0JCSAqIGVxdWFsIHRvIHRoZSBDUkMgb2YgdGhlIGRlZ2FtbWEgTFVUIHRyYW5z Zm9ybWF0aW9uIG91dHB1dC4NCj4gLQkJICovDQo+IC0JCWlndF9hc3NlcnRfY3JjX2VxdWFsKCZj cmNfZnVsbGdhbW1hLCAmY3JjX2Z1bGxjb2xvcnMpOw0KPiAtDQo+IC0JCWRpc2FibGVfZGVnYW1t YShwcmltYXJ5LT5waXBlKTsNCj4gLQkJaWd0X3BsYW5lX3NldF9mYihwcmltYXJ5LCBOVUxMKTsN Cj4gLQkJaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIFBJUEVfTk9ORSk7DQo+IC0JCWlndF9k aXNwbGF5X2NvbW1pdCgmZGF0YS0+ZGlzcGxheSk7DQo+IC0JCWlndF9yZW1vdmVfZmIoZGF0YS0+ ZHJtX2ZkLCAmZmIpOw0KPiAtCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwgJmZiX21vZGVz ZXQpOw0KPiAtCX0NCj4gKwlkaXNhYmxlX2RlZ2FtbWEocHJpbWFyeS0+cGlwZSk7DQo+ICsJaWd0 X3BsYW5lX3NldF9mYihwcmltYXJ5LCBOVUxMKTsNCj4gKwlpZ3Rfb3V0cHV0X3NldF9waXBlKG91 dHB1dCwgUElQRV9OT05FKTsNCj4gKwlpZ3RfZGlzcGxheV9jb21taXQoJmRhdGEtPmRpc3BsYXkp Ow0KPiArCWlndF9yZW1vdmVfZmIoZGF0YS0+ZHJtX2ZkLCAmZmIpOw0KPiArCWlndF9yZW1vdmVf ZmIoZGF0YS0+ZHJtX2ZkLCAmZmJfbW9kZXNldCk7DQo+IA0KPiAgCWZyZWVfbHV0KGRlZ2FtbWFf bGluZWFyKTsNCj4gIAlmcmVlX2x1dChkZWdhbW1hX2Z1bGwpOw0KPiBAQCAtMTI3LDczICsxMjcs NzMgQEAgc3RhdGljIHZvaWQgdGVzdF9waXBlX2dhbW1hKGRhdGFfdCAqZGF0YSwNCj4gIAkJeyAw LjAsIDEuMCwgMC4wIH0sDQo+ICAJCXsgMC4wLCAwLjAsIDEuMCB9DQo+ICAJfTsNCj4gKwlkcm1N b2RlTW9kZUluZm8gKm1vZGU7DQo+ICsJc3RydWN0IGlndF9mYiBmYl9tb2Rlc2V0LCBmYjsNCj4g KwlpZ3RfY3JjX3QgY3JjX2Z1bGxnYW1tYSwgY3JjX2Z1bGxjb2xvcnM7DQo+ICsJaW50IGZiX2lk LCBmYl9tb2Rlc2V0X2lkOw0KPiANCj4gIAlpZ3RfcmVxdWlyZShpZ3RfcGlwZV9vYmpfaGFzX3By b3AocHJpbWFyeS0+cGlwZSwgSUdUX0NSVENfR0FNTUFfTFVUKSk7DQo+IA0KPiAgCWdhbW1hX2Z1 bGwgPSBnZW5lcmF0ZV90YWJsZV9tYXgoZGF0YS0+Z2FtbWFfbHV0X3NpemUpOw0KPiANCj4gLQlm b3JfZWFjaF92YWxpZF9vdXRwdXRfb25fcGlwZSgmZGF0YS0+ZGlzcGxheSwgcHJpbWFyeS0+cGlw ZS0+cGlwZSwNCj4gb3V0cHV0KSB7DQo+IC0JCWRybU1vZGVNb2RlSW5mbyAqbW9kZTsNCj4gLQkJ c3RydWN0IGlndF9mYiBmYl9tb2Rlc2V0LCBmYjsNCj4gLQkJaWd0X2NyY190IGNyY19mdWxsZ2Ft bWEsIGNyY19mdWxsY29sb3JzOw0KPiAtCQlpbnQgZmJfaWQsIGZiX21vZGVzZXRfaWQ7DQo+ICsJ b3V0cHV0ID0gaWd0X2dldF9zaW5nbGVfb3V0cHV0X2Zvcl9waXBlKCZkYXRhLT5kaXNwbGF5LCBw cmltYXJ5LT5waXBlLQ0KPiA+cGlwZSk7DQo+ICsJaWd0X3JlcXVpcmUob3V0cHV0KTsNCj4gDQo+ IC0JCWlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBwcmltYXJ5LT5waXBlLT5waXBlKTsNCj4g LQkJbW9kZSA9IGlndF9vdXRwdXRfZ2V0X21vZGUob3V0cHV0KTsNCj4gKwlpZ3Rfb3V0cHV0X3Nl dF9waXBlKG91dHB1dCwgcHJpbWFyeS0+cGlwZS0+cGlwZSk7DQo+ICsJbW9kZSA9IGlndF9vdXRw dXRfZ2V0X21vZGUob3V0cHV0KTsNCj4gDQo+IC0JCS8qIENyZWF0ZSBhIGZyYW1lYnVmZmVyIGF0 IHRoZSBzaXplIG9mIHRoZSBvdXRwdXQuICovDQo+IC0JCWZiX2lkID0gaWd0X2NyZWF0ZV9mYihk YXRhLT5kcm1fZmQsDQo+ICsJLyogQ3JlYXRlIGEgZnJhbWVidWZmZXIgYXQgdGhlIHNpemUgb2Yg dGhlIG91dHB1dC4gKi8NCj4gKwlmYl9pZCA9IGlndF9jcmVhdGVfZmIoZGF0YS0+ZHJtX2ZkLA0K PiArCQkJICAgICAgbW9kZS0+aGRpc3BsYXksDQo+ICsJCQkgICAgICBtb2RlLT52ZGlzcGxheSwN Cj4gKwkJCSAgICAgIERSTV9GT1JNQVRfWFJHQjg4ODgsDQo+ICsJCQkgICAgICBEUk1fRk9STUFU X01PRF9OT05FLA0KPiArCQkJICAgICAgJmZiKTsNCj4gKwlpZ3RfYXNzZXJ0KGZiX2lkKTsNCj4g Kw0KPiArCWZiX21vZGVzZXRfaWQgPSBpZ3RfY3JlYXRlX2ZiKGRhdGEtPmRybV9mZCwNCj4gIAkJ CQkgICAgICBtb2RlLT5oZGlzcGxheSwNCj4gIAkJCQkgICAgICBtb2RlLT52ZGlzcGxheSwNCj4g IAkJCQkgICAgICBEUk1fRk9STUFUX1hSR0I4ODg4LA0KPiAgCQkJCSAgICAgIERSTV9GT1JNQVRf TU9EX05PTkUsDQo+IC0JCQkJICAgICAgJmZiKTsNCj4gLQkJaWd0X2Fzc2VydChmYl9pZCk7DQo+ ICsJCQkJICAgICAgJmZiX21vZGVzZXQpOw0KPiArCWlndF9hc3NlcnQoZmJfbW9kZXNldF9pZCk7 DQo+IA0KPiAtCQlmYl9tb2Rlc2V0X2lkID0gaWd0X2NyZWF0ZV9mYihkYXRhLT5kcm1fZmQsDQo+ IC0JCQkJCSAgICAgIG1vZGUtPmhkaXNwbGF5LA0KPiAtCQkJCQkgICAgICBtb2RlLT52ZGlzcGxh eSwNCj4gLQkJCQkJICAgICAgRFJNX0ZPUk1BVF9YUkdCODg4OCwNCj4gLQkJCQkJICAgICAgRFJN X0ZPUk1BVF9NT0RfTk9ORSwNCj4gLQkJCQkJICAgICAgJmZiX21vZGVzZXQpOw0KPiAtCQlpZ3Rf YXNzZXJ0KGZiX21vZGVzZXRfaWQpOw0KPiArCWlndF9wbGFuZV9zZXRfZmIocHJpbWFyeSwgJmZi X21vZGVzZXQpOw0KPiArCWRpc2FibGVfY3RtKHByaW1hcnktPnBpcGUpOw0KPiArCWRpc2FibGVf ZGVnYW1tYShwcmltYXJ5LT5waXBlKTsNCj4gKwlzZXRfZ2FtbWEoZGF0YSwgcHJpbWFyeS0+cGlw ZSwgZ2FtbWFfZnVsbCk7DQogDQpUaGlzIGNvdWxkIGJlIGRpc2FibGVfZ2FtbWEoKSwgcmlnaHQ/ DQoNCj4gKwlpZ3RfZGlzcGxheV9jb21taXQoJmRhdGEtPmRpc3BsYXkpOw0KPiANCj4gLQkJaWd0 X3BsYW5lX3NldF9mYihwcmltYXJ5LCAmZmJfbW9kZXNldCk7DQo+IC0JCWRpc2FibGVfY3RtKHBy aW1hcnktPnBpcGUpOw0KPiAtCQlkaXNhYmxlX2RlZ2FtbWEocHJpbWFyeS0+cGlwZSk7DQo+IC0J CXNldF9nYW1tYShkYXRhLCBwcmltYXJ5LT5waXBlLCBnYW1tYV9mdWxsKTsNCj4gLQkJaWd0X2Rp c3BsYXlfY29tbWl0KCZkYXRhLT5kaXNwbGF5KTsNCj4gKwkvKiBEcmF3IHNvbGlkIGNvbG9ycyB3 aXRoIG5vIGdhbW1hIHRyYW5zZm9ybWF0aW9uLiAqLw0KPiArCXBhaW50X3JlY3RhbmdsZXMoZGF0 YSwgbW9kZSwgcmVkX2dyZWVuX2JsdWUsICZmYik7DQo+ICsJaWd0X3BsYW5lX3NldF9mYihwcmlt YXJ5LCAmZmIpOw0KPiArCWlndF9kaXNwbGF5X2NvbW1pdCgmZGF0YS0+ZGlzcGxheSk7DQo+ICsJ aWd0X3dhaXRfZm9yX3ZibGFuayhkYXRhLT5kcm1fZmQsDQo+ICsJCQkgICAgZGlzcGxheS0+cGlw ZXNbcHJpbWFyeS0+cGlwZS0+cGlwZV0uY3J0Y19vZmZzZXQpOw0KPiArCWlndF9waXBlX2NyY19j b2xsZWN0X2NyYyhkYXRhLT5waXBlX2NyYywgJmNyY19mdWxsY29sb3JzKTsNCj4gDQo+IC0JCS8q IERyYXcgc29saWQgY29sb3JzIHdpdGggbm8gZ2FtbWEgdHJhbnNmb3JtYXRpb24uICovDQo+IC0J CXBhaW50X3JlY3RhbmdsZXMoZGF0YSwgbW9kZSwgcmVkX2dyZWVuX2JsdWUsICZmYik7DQo+IC0J CWlndF9wbGFuZV9zZXRfZmIocHJpbWFyeSwgJmZiKTsNCj4gLQkJaWd0X2Rpc3BsYXlfY29tbWl0 KCZkYXRhLT5kaXNwbGF5KTsNCj4gLQkJaWd0X3dhaXRfZm9yX3ZibGFuayhkYXRhLT5kcm1fZmQs DQo+IC0JCQkJZGlzcGxheS0+cGlwZXNbcHJpbWFyeS0+cGlwZS0+cGlwZV0uY3J0Y19vZmZzZXQp Ow0KPiAtCQlpZ3RfcGlwZV9jcmNfY29sbGVjdF9jcmMoZGF0YS0+cGlwZV9jcmMsICZjcmNfZnVs bGNvbG9ycyk7DQo+ICsJLyogRHJhdyBhIGdyYWRpZW50IHdpdGggZ2FtbWEgTFVUIHRvIHJlbWFw IGFsbCB2YWx1ZXMNCj4gKwkgKiB0byBtYXggcmVkL2dyZWVuL2JsdWUuDQo+ICsJICovDQo+ICsJ cGFpbnRfZ3JhZGllbnRfcmVjdGFuZ2xlcyhkYXRhLCBtb2RlLCByZWRfZ3JlZW5fYmx1ZSwgJmZi KTsNCj4gKwlpZ3RfcGxhbmVfc2V0X2ZiKHByaW1hcnksICZmYik7DQogDQpBbmQgaGVyZSB3ZSBu ZWVkIHRvIHNldCB0aGUgZ2FtbWE6IHNldF9nYW1tYShnYW1tYV9tYXgpDQoNCldpdGggdGhlc2Ug Y2hhbmdlcywgdGhpcyBwYXRjaCBpcw0KUmV2aWV3ZWQtYnk6IEJoYW51cHJha2FzaCBNb2RlbSA8 QmhhbnVwcmFrYXNoLm1vZGVtQGludGVsLmNvbT4NCg0KLSBCaGFudQ0KDQo+ICsJaWd0X2Rpc3Bs YXlfY29tbWl0KCZkYXRhLT5kaXNwbGF5KTsNCj4gKwlpZ3Rfd2FpdF9mb3JfdmJsYW5rKGRhdGEt PmRybV9mZCwNCj4gKwkJCSAgICBkaXNwbGF5LT5waXBlc1twcmltYXJ5LT5waXBlLT5waXBlXS5j cnRjX29mZnNldCk7DQo+ICsJaWd0X3BpcGVfY3JjX2NvbGxlY3RfY3JjKGRhdGEtPnBpcGVfY3Jj LCAmY3JjX2Z1bGxnYW1tYSk7DQo+IA0KPiAtCQkvKiBEcmF3IGEgZ3JhZGllbnQgd2l0aCBnYW1t YSBMVVQgdG8gcmVtYXAgYWxsIHZhbHVlcw0KPiAtCQkgKiB0byBtYXggcmVkL2dyZWVuL2JsdWUu DQo+IC0JCSAqLw0KPiAtCQlwYWludF9ncmFkaWVudF9yZWN0YW5nbGVzKGRhdGEsIG1vZGUsIHJl ZF9ncmVlbl9ibHVlLCAmZmIpOw0KPiAtCQlpZ3RfcGxhbmVfc2V0X2ZiKHByaW1hcnksICZmYik7 DQo+IC0JCWlndF9kaXNwbGF5X2NvbW1pdCgmZGF0YS0+ZGlzcGxheSk7DQo+IC0JCWlndF93YWl0 X2Zvcl92YmxhbmsoZGF0YS0+ZHJtX2ZkLA0KPiAtCQkJCWRpc3BsYXktPnBpcGVzW3ByaW1hcnkt PnBpcGUtPnBpcGVdLmNydGNfb2Zmc2V0KTsNCj4gLQkJaWd0X3BpcGVfY3JjX2NvbGxlY3RfY3Jj KGRhdGEtPnBpcGVfY3JjLCAmY3JjX2Z1bGxnYW1tYSk7DQo+ICsJLyogVmVyaWZ5IHRoYXQgdGhl IENSQyBvZiB0aGUgc29mdHdhcmUgY29tcHV0ZWQgb3V0cHV0IGlzDQo+ICsJICogZXF1YWwgdG8g dGhlIENSQyBvZiB0aGUgZ2FtbWEgTFVUIHRyYW5zZm9ybWF0aW9uIG91dHB1dC4NCj4gKwkgKi8N Cj4gKwlpZ3RfYXNzZXJ0X2NyY19lcXVhbCgmY3JjX2Z1bGxnYW1tYSwgJmNyY19mdWxsY29sb3Jz KTsNCj4gDQo+IC0JCS8qIFZlcmlmeSB0aGF0IHRoZSBDUkMgb2YgdGhlIHNvZnR3YXJlIGNvbXB1 dGVkIG91dHB1dCBpcw0KPiAtCQkgKiBlcXVhbCB0byB0aGUgQ1JDIG9mIHRoZSBnYW1tYSBMVVQg dHJhbnNmb3JtYXRpb24gb3V0cHV0Lg0KPiAtCQkgKi8NCj4gLQkJaWd0X2Fzc2VydF9jcmNfZXF1 YWwoJmNyY19mdWxsZ2FtbWEsICZjcmNfZnVsbGNvbG9ycyk7DQo+IC0NCj4gLQkJZGlzYWJsZV9n YW1tYShwcmltYXJ5LT5waXBlKTsNCj4gLQkJaWd0X3BsYW5lX3NldF9mYihwcmltYXJ5LCBOVUxM KTsNCj4gLQkJaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIFBJUEVfTk9ORSk7DQo+IC0JCWln dF9kaXNwbGF5X2NvbW1pdCgmZGF0YS0+ZGlzcGxheSk7DQo+IC0JCWlndF9yZW1vdmVfZmIoZGF0 YS0+ZHJtX2ZkLCAmZmIpOw0KPiAtCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwgJmZiX21v ZGVzZXQpOw0KPiAtCX0NCj4gKwlkaXNhYmxlX2dhbW1hKHByaW1hcnktPnBpcGUpOw0KPiArCWln dF9wbGFuZV9zZXRfZmIocHJpbWFyeSwgTlVMTCk7DQo+ICsJaWd0X291dHB1dF9zZXRfcGlwZShv dXRwdXQsIFBJUEVfTk9ORSk7DQo+ICsJaWd0X2Rpc3BsYXlfY29tbWl0KCZkYXRhLT5kaXNwbGF5 KTsNCj4gKwlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwgJmZiKTsNCj4gKwlpZ3RfcmVtb3Zl X2ZiKGRhdGEtPmRybV9mZCwgJmZiX21vZGVzZXQpOw0KPiANCj4gIAlmcmVlX2x1dChnYW1tYV9m dWxsKTsNCj4gIH0NCj4gQEAgLTIxNiw2ICsyMTYsMTAgQEAgc3RhdGljIHZvaWQgdGVzdF9waXBl X2xlZ2FjeV9nYW1tYShkYXRhX3QgKmRhdGEsDQo+ICAJZHJtTW9kZUNydGMgKmttc19jcnRjOw0K PiAgCXVpbnQzMl90IGksIGxlZ2FjeV9sdXRfc2l6ZTsNCj4gIAl1aW50MTZfdCAqcmVkX2x1dCwg KmdyZWVuX2x1dCwgKmJsdWVfbHV0Ow0KPiArCWRybU1vZGVNb2RlSW5mbyAqbW9kZTsNCj4gKwlz dHJ1Y3QgaWd0X2ZiIGZiX21vZGVzZXQsIGZiOw0KPiArCWlndF9jcmNfdCBjcmNfZnVsbGdhbW1h LCBjcmNfZnVsbGNvbG9yczsNCj4gKwlpbnQgZmJfaWQsIGZiX21vZGVzZXRfaWQ7DQo+IA0KPiAg CWttc19jcnRjID0gZHJtTW9kZUdldENydGMoZGF0YS0+ZHJtX2ZkLCBwcmltYXJ5LT5waXBlLT5j cnRjX2lkKTsNCj4gIAlsZWdhY3lfbHV0X3NpemUgPSBrbXNfY3J0Yy0+Z2FtbWFfc2l6ZTsNCj4g QEAgLTIyNSw4MCArMjI5LDc2IEBAIHN0YXRpYyB2b2lkIHRlc3RfcGlwZV9sZWdhY3lfZ2FtbWEo ZGF0YV90ICpkYXRhLA0KPiAgCWdyZWVuX2x1dCA9IG1hbGxvYyhzaXplb2YodWludDE2X3QpICog bGVnYWN5X2x1dF9zaXplKTsNCj4gIAlibHVlX2x1dCA9IG1hbGxvYyhzaXplb2YodWludDE2X3Qp ICogbGVnYWN5X2x1dF9zaXplKTsNCj4gDQo+IC0JZm9yX2VhY2hfdmFsaWRfb3V0cHV0X29uX3Bp cGUoJmRhdGEtPmRpc3BsYXksIHByaW1hcnktPnBpcGUtPnBpcGUsDQo+IG91dHB1dCkgew0KPiAt CQlkcm1Nb2RlTW9kZUluZm8gKm1vZGU7DQo+IC0JCXN0cnVjdCBpZ3RfZmIgZmJfbW9kZXNldCwg ZmI7DQo+IC0JCWlndF9jcmNfdCBjcmNfZnVsbGdhbW1hLCBjcmNfZnVsbGNvbG9yczsNCj4gLQkJ aW50IGZiX2lkLCBmYl9tb2Rlc2V0X2lkOw0KPiArCW91dHB1dCA9IGlndF9nZXRfc2luZ2xlX291 dHB1dF9mb3JfcGlwZSgmZGF0YS0+ZGlzcGxheSwgcHJpbWFyeS0+cGlwZS0NCj4gPnBpcGUpOw0K PiArCWlndF9yZXF1aXJlKG91dHB1dCk7DQo+IA0KPiAtCQlpZ3Rfb3V0cHV0X3NldF9waXBlKG91 dHB1dCwgcHJpbWFyeS0+cGlwZS0+cGlwZSk7DQo+IC0JCW1vZGUgPSBpZ3Rfb3V0cHV0X2dldF9t b2RlKG91dHB1dCk7DQo+ICsJaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIHByaW1hcnktPnBp cGUtPnBpcGUpOw0KPiArCW1vZGUgPSBpZ3Rfb3V0cHV0X2dldF9tb2RlKG91dHB1dCk7DQo+IA0K PiAtCQkvKiBDcmVhdGUgYSBmcmFtZWJ1ZmZlciBhdCB0aGUgc2l6ZSBvZiB0aGUgb3V0cHV0LiAq Lw0KPiAtCQlmYl9pZCA9IGlndF9jcmVhdGVfZmIoZGF0YS0+ZHJtX2ZkLA0KPiArCS8qIENyZWF0 ZSBhIGZyYW1lYnVmZmVyIGF0IHRoZSBzaXplIG9mIHRoZSBvdXRwdXQuICovDQo+ICsJZmJfaWQg PSBpZ3RfY3JlYXRlX2ZiKGRhdGEtPmRybV9mZCwNCj4gKwkJCSAgICAgIG1vZGUtPmhkaXNwbGF5 LA0KPiArCQkJICAgICAgbW9kZS0+dmRpc3BsYXksDQo+ICsJCQkgICAgICBEUk1fRk9STUFUX1hS R0I4ODg4LA0KPiArCQkJICAgICAgRFJNX0ZPUk1BVF9NT0RfTk9ORSwNCj4gKwkJCSAgICAgICZm Yik7DQo+ICsJaWd0X2Fzc2VydChmYl9pZCk7DQo+ICsNCj4gKwlmYl9tb2Rlc2V0X2lkID0gaWd0 X2NyZWF0ZV9mYihkYXRhLT5kcm1fZmQsDQo+ICAJCQkJICAgICAgbW9kZS0+aGRpc3BsYXksDQo+ ICAJCQkJICAgICAgbW9kZS0+dmRpc3BsYXksDQo+ICAJCQkJICAgICAgRFJNX0ZPUk1BVF9YUkdC ODg4OCwNCj4gIAkJCQkgICAgICBEUk1fRk9STUFUX01PRF9OT05FLA0KPiAtCQkJCSAgICAgICZm Yik7DQo+IC0JCWlndF9hc3NlcnQoZmJfaWQpOw0KPiAtDQo+IC0JCWZiX21vZGVzZXRfaWQgPSBp Z3RfY3JlYXRlX2ZiKGRhdGEtPmRybV9mZCwNCj4gLQkJCQkJICAgICAgbW9kZS0+aGRpc3BsYXks DQo+IC0JCQkJCSAgICAgIG1vZGUtPnZkaXNwbGF5LA0KPiAtCQkJCQkgICAgICBEUk1fRk9STUFU X1hSR0I4ODg4LA0KPiAtCQkJCQkgICAgICBEUk1fRk9STUFUX01PRF9OT05FLA0KPiAtCQkJCQkg ICAgICAmZmJfbW9kZXNldCk7DQo+IC0JCWlndF9hc3NlcnQoZmJfbW9kZXNldF9pZCk7DQo+IC0N Cj4gLQkJaWd0X3BsYW5lX3NldF9mYihwcmltYXJ5LCAmZmJfbW9kZXNldCk7DQo+IC0JCWRpc2Fi bGVfZGVnYW1tYShwcmltYXJ5LT5waXBlKTsNCj4gLQkJZGlzYWJsZV9nYW1tYShwcmltYXJ5LT5w aXBlKTsNCj4gLQkJZGlzYWJsZV9jdG0ocHJpbWFyeS0+cGlwZSk7DQo+IC0JCWlndF9kaXNwbGF5 X2NvbW1pdCgmZGF0YS0+ZGlzcGxheSk7DQo+IC0NCj4gLQkJLyogRHJhdyBzb2xpZCBjb2xvcnMg d2l0aCBubyBnYW1tYSB0cmFuc2Zvcm1hdGlvbi4gKi8NCj4gLQkJcGFpbnRfcmVjdGFuZ2xlcyhk YXRhLCBtb2RlLCByZWRfZ3JlZW5fYmx1ZSwgJmZiKTsNCj4gLQkJaWd0X3BsYW5lX3NldF9mYihw cmltYXJ5LCAmZmIpOw0KPiAtCQlpZ3RfZGlzcGxheV9jb21taXQoJmRhdGEtPmRpc3BsYXkpOw0K PiAtCQlpZ3Rfd2FpdF9mb3JfdmJsYW5rKGRhdGEtPmRybV9mZCwNCj4gLQkJCQlkaXNwbGF5LT5w aXBlc1twcmltYXJ5LT5waXBlLT5waXBlXS5jcnRjX29mZnNldCk7DQo+IC0JCWlndF9waXBlX2Ny Y19jb2xsZWN0X2NyYyhkYXRhLT5waXBlX2NyYywgJmNyY19mdWxsY29sb3JzKTsNCj4gLQ0KPiAt CQkvKiBEcmF3IGEgZ3JhZGllbnQgd2l0aCBnYW1tYSBMVVQgdG8gcmVtYXAgYWxsIHZhbHVlcw0K PiAtCQkgKiB0byBtYXggcmVkL2dyZWVuL2JsdWUuDQo+IC0JCSAqLw0KPiAtCQlwYWludF9ncmFk aWVudF9yZWN0YW5nbGVzKGRhdGEsIG1vZGUsIHJlZF9ncmVlbl9ibHVlLCAmZmIpOw0KPiAtCQlp Z3RfcGxhbmVfc2V0X2ZiKHByaW1hcnksICZmYik7DQo+IC0NCj4gLQkJcmVkX2x1dFswXSA9IGdy ZWVuX2x1dFswXSA9IGJsdWVfbHV0WzBdID0gMDsNCj4gLQkJZm9yIChpID0gMTsgaSA8IGxlZ2Fj eV9sdXRfc2l6ZTsgaSsrKQ0KPiAtCQkJcmVkX2x1dFtpXSA9IGdyZWVuX2x1dFtpXSA9IGJsdWVf bHV0W2ldID0gMHhmZmZmOw0KPiAtCQlpZ3RfYXNzZXJ0X2VxKGRybU1vZGVDcnRjU2V0R2FtbWEo ZGF0YS0+ZHJtX2ZkLCBwcmltYXJ5LT5waXBlLQ0KPiA+Y3J0Y19pZCwNCj4gLQkJCQkJCSAgbGVn YWN5X2x1dF9zaXplLCByZWRfbHV0LCBncmVlbl9sdXQsDQo+IGJsdWVfbHV0KSwgMCk7DQo+IC0J CWlndF9kaXNwbGF5X2NvbW1pdCgmZGF0YS0+ZGlzcGxheSk7DQo+IC0JCWlndF93YWl0X2Zvcl92 YmxhbmsoZGF0YS0+ZHJtX2ZkLA0KPiAtCQkJCWRpc3BsYXktPnBpcGVzW3ByaW1hcnktPnBpcGUt PnBpcGVdLmNydGNfb2Zmc2V0KTsNCj4gLQkJaWd0X3BpcGVfY3JjX2NvbGxlY3RfY3JjKGRhdGEt PnBpcGVfY3JjLCAmY3JjX2Z1bGxnYW1tYSk7DQo+IC0NCj4gLQkJLyogVmVyaWZ5IHRoYXQgdGhl IENSQyBvZiB0aGUgc29mdHdhcmUgY29tcHV0ZWQgb3V0cHV0IGlzDQo+IC0JCSAqIGVxdWFsIHRv IHRoZSBDUkMgb2YgdGhlIGdhbW1hIExVVCB0cmFuc2Zvcm1hdGlvbiBvdXRwdXQuDQo+IC0JCSAq Lw0KPiAtCQlpZ3RfYXNzZXJ0X2NyY19lcXVhbCgmY3JjX2Z1bGxnYW1tYSwgJmNyY19mdWxsY29s b3JzKTsNCj4gLQ0KPiAtCQkvKiBSZXNldCBvdXRwdXQuICovDQo+IC0JCWZvciAoaSA9IDE7IGkg PCBsZWdhY3lfbHV0X3NpemU7IGkrKykNCj4gLQkJCXJlZF9sdXRbaV0gPSBncmVlbl9sdXRbaV0g PSBibHVlX2x1dFtpXSA9IGkgPDwgODsNCj4gLQ0KPiAtCQlpZ3RfYXNzZXJ0X2VxKGRybU1vZGVD cnRjU2V0R2FtbWEoZGF0YS0+ZHJtX2ZkLCBwcmltYXJ5LT5waXBlLQ0KPiA+Y3J0Y19pZCwNCj4g LQkJCQkJCSAgbGVnYWN5X2x1dF9zaXplLCByZWRfbHV0LCBncmVlbl9sdXQsDQo+IGJsdWVfbHV0 KSwgMCk7DQo+IC0JCWlndF9kaXNwbGF5X2NvbW1pdCgmZGF0YS0+ZGlzcGxheSk7DQo+IC0NCj4g LQkJaWd0X3BsYW5lX3NldF9mYihwcmltYXJ5LCBOVUxMKTsNCj4gLQkJaWd0X291dHB1dF9zZXRf cGlwZShvdXRwdXQsIFBJUEVfTk9ORSk7DQo+IC0JCWlndF9yZW1vdmVfZmIoZGF0YS0+ZHJtX2Zk LCAmZmIpOw0KPiAtCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwgJmZiX21vZGVzZXQpOw0K PiAtCX0NCj4gKwkJCQkgICAgICAmZmJfbW9kZXNldCk7DQo+ICsJaWd0X2Fzc2VydChmYl9tb2Rl c2V0X2lkKTsNCj4gKw0KPiArCWlndF9wbGFuZV9zZXRfZmIocHJpbWFyeSwgJmZiX21vZGVzZXQp Ow0KPiArCWRpc2FibGVfZGVnYW1tYShwcmltYXJ5LT5waXBlKTsNCj4gKwlkaXNhYmxlX2dhbW1h KHByaW1hcnktPnBpcGUpOw0KPiArCWRpc2FibGVfY3RtKHByaW1hcnktPnBpcGUpOw0KPiArCWln dF9kaXNwbGF5X2NvbW1pdCgmZGF0YS0+ZGlzcGxheSk7DQo+ICsNCj4gKwkvKiBEcmF3IHNvbGlk IGNvbG9ycyB3aXRoIG5vIGdhbW1hIHRyYW5zZm9ybWF0aW9uLiAqLw0KPiArCXBhaW50X3JlY3Rh bmdsZXMoZGF0YSwgbW9kZSwgcmVkX2dyZWVuX2JsdWUsICZmYik7DQo+ICsJaWd0X3BsYW5lX3Nl dF9mYihwcmltYXJ5LCAmZmIpOw0KPiArCWlndF9kaXNwbGF5X2NvbW1pdCgmZGF0YS0+ZGlzcGxh eSk7DQo+ICsJaWd0X3dhaXRfZm9yX3ZibGFuayhkYXRhLT5kcm1fZmQsDQo+ICsJCQkgICAgZGlz cGxheS0+cGlwZXNbcHJpbWFyeS0+cGlwZS0+cGlwZV0uY3J0Y19vZmZzZXQpOw0KPiArCWlndF9w aXBlX2NyY19jb2xsZWN0X2NyYyhkYXRhLT5waXBlX2NyYywgJmNyY19mdWxsY29sb3JzKTsNCj4g Kw0KPiArCS8qIERyYXcgYSBncmFkaWVudCB3aXRoIGdhbW1hIExVVCB0byByZW1hcCBhbGwgdmFs dWVzDQo+ICsJICogdG8gbWF4IHJlZC9ncmVlbi9ibHVlLg0KPiArCSAqLw0KPiArCXBhaW50X2dy YWRpZW50X3JlY3RhbmdsZXMoZGF0YSwgbW9kZSwgcmVkX2dyZWVuX2JsdWUsICZmYik7DQo+ICsJ aWd0X3BsYW5lX3NldF9mYihwcmltYXJ5LCAmZmIpOw0KPiArDQo+ICsJcmVkX2x1dFswXSA9IGdy ZWVuX2x1dFswXSA9IGJsdWVfbHV0WzBdID0gMDsNCj4gKwlmb3IgKGkgPSAxOyBpIDwgbGVnYWN5 X2x1dF9zaXplOyBpKyspDQo+ICsJCXJlZF9sdXRbaV0gPSBncmVlbl9sdXRbaV0gPSBibHVlX2x1 dFtpXSA9IDB4ZmZmZjsNCj4gKwlpZ3RfYXNzZXJ0X2VxKGRybU1vZGVDcnRjU2V0R2FtbWEoZGF0 YS0+ZHJtX2ZkLCBwcmltYXJ5LT5waXBlLT5jcnRjX2lkLA0KPiArCQkJCQkgIGxlZ2FjeV9sdXRf c2l6ZSwgcmVkX2x1dCwgZ3JlZW5fbHV0LCBibHVlX2x1dCksDQo+IDApOw0KPiArCWlndF9kaXNw bGF5X2NvbW1pdCgmZGF0YS0+ZGlzcGxheSk7DQo+ICsJaWd0X3dhaXRfZm9yX3ZibGFuayhkYXRh LT5kcm1fZmQsDQo+ICsJCQkgICAgZGlzcGxheS0+cGlwZXNbcHJpbWFyeS0+cGlwZS0+cGlwZV0u Y3J0Y19vZmZzZXQpOw0KPiArCWlndF9waXBlX2NyY19jb2xsZWN0X2NyYyhkYXRhLT5waXBlX2Ny YywgJmNyY19mdWxsZ2FtbWEpOw0KPiArDQo+ICsJLyogVmVyaWZ5IHRoYXQgdGhlIENSQyBvZiB0 aGUgc29mdHdhcmUgY29tcHV0ZWQgb3V0cHV0IGlzDQo+ICsJICogZXF1YWwgdG8gdGhlIENSQyBv ZiB0aGUgZ2FtbWEgTFVUIHRyYW5zZm9ybWF0aW9uIG91dHB1dC4NCj4gKwkgKi8NCj4gKwlpZ3Rf YXNzZXJ0X2NyY19lcXVhbCgmY3JjX2Z1bGxnYW1tYSwgJmNyY19mdWxsY29sb3JzKTsNCj4gKw0K PiArCS8qIFJlc2V0IG91dHB1dC4gKi8NCj4gKwlmb3IgKGkgPSAxOyBpIDwgbGVnYWN5X2x1dF9z aXplOyBpKyspDQo+ICsJCXJlZF9sdXRbaV0gPSBncmVlbl9sdXRbaV0gPSBibHVlX2x1dFtpXSA9 IGkgPDwgODsNCj4gKw0KPiArCWlndF9hc3NlcnRfZXEoZHJtTW9kZUNydGNTZXRHYW1tYShkYXRh LT5kcm1fZmQsIHByaW1hcnktPnBpcGUtPmNydGNfaWQsDQo+ICsJCQkJCSAgbGVnYWN5X2x1dF9z aXplLCByZWRfbHV0LCBncmVlbl9sdXQsIGJsdWVfbHV0KSwNCj4gMCk7DQo+ICsJaWd0X2Rpc3Bs YXlfY29tbWl0KCZkYXRhLT5kaXNwbGF5KTsNCj4gKw0KPiArCWlndF9wbGFuZV9zZXRfZmIocHJp bWFyeSwgTlVMTCk7DQo+ICsJaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIFBJUEVfTk9ORSk7 DQo+ICsJaWd0X3JlbW92ZV9mYihkYXRhLT5kcm1fZmQsICZmYik7DQo+ICsJaWd0X3JlbW92ZV9m YihkYXRhLT5kcm1fZmQsICZmYl9tb2Rlc2V0KTsNCj4gDQo+ICAJZnJlZShyZWRfbHV0KTsNCj4g IAlmcmVlKGdyZWVuX2x1dCk7DQo+IEBAIC0zMzEsOTMgKzMzMSw5MyBAQCBzdGF0aWMgdm9pZCB0 ZXN0X3BpcGVfbGVnYWN5X2dhbW1hX3Jlc2V0KGRhdGFfdCAqZGF0YSwNCj4gIAkJZGVnYW1tYV9s aW5lYXIgPSBnZW5lcmF0ZV90YWJsZShkYXRhLT5kZWdhbW1hX2x1dF9zaXplLCAxLjApOw0KPiAg CWdhbW1hX3plcm8gPSBnZW5lcmF0ZV90YWJsZV96ZXJvKGRhdGEtPmdhbW1hX2x1dF9zaXplKTsN Cj4gDQo+IC0JZm9yX2VhY2hfdmFsaWRfb3V0cHV0X29uX3BpcGUoJmRhdGEtPmRpc3BsYXksIHBy aW1hcnktPnBpcGUtPnBpcGUsDQo+IG91dHB1dCkgew0KPiAtCQlpZ3Rfb3V0cHV0X3NldF9waXBl KG91dHB1dCwgcHJpbWFyeS0+cGlwZS0+cGlwZSk7DQo+ICsJb3V0cHV0ID0gaWd0X2dldF9zaW5n bGVfb3V0cHV0X2Zvcl9waXBlKCZkYXRhLT5kaXNwbGF5LCBwcmltYXJ5LT5waXBlLQ0KPiA+cGlw ZSk7DQo+ICsJaWd0X3JlcXVpcmUob3V0cHV0KTsNCj4gDQo+IC0JCS8qIEVuc3VyZSB3ZSBoYXZl IGEgY2xlYW4gc3RhdGUgdG8gc3RhcnQgd2l0aC4gKi8NCj4gLQkJZGlzYWJsZV9kZWdhbW1hKHBy aW1hcnktPnBpcGUpOw0KPiAtCQlkaXNhYmxlX2N0bShwcmltYXJ5LT5waXBlKTsNCj4gLQkJZGlz YWJsZV9nYW1tYShwcmltYXJ5LT5waXBlKTsNCj4gLQkJaWd0X2Rpc3BsYXlfY29tbWl0KCZkYXRh LT5kaXNwbGF5KTsNCj4gKwlpZ3Rfb3V0cHV0X3NldF9waXBlKG91dHB1dCwgcHJpbWFyeS0+cGlw ZS0+cGlwZSk7DQo+IA0KPiAtCQkvKiBTZXQgYSBkZWdhbWEgJiBnYW1tYSBMVVQgYW5kIGEgQ1RN IHVzaW5nIHRoZQ0KPiAtCQkgKiBwcm9wZXJ0aWVzIGFuZCB2ZXJpZnkgdGhlIGNvbnRlbnQgb2Yg dGhlDQo+IC0JCSAqIHByb3BlcnRpZXMuICovDQo+IC0JCWlmIChpZ3RfcGlwZV9vYmpfaGFzX3By b3AocHJpbWFyeS0+cGlwZSwgSUdUX0NSVENfREVHQU1NQV9MVVQpKQ0KPiAtCQkJc2V0X2RlZ2Ft bWEoZGF0YSwgcHJpbWFyeS0+cGlwZSwgZGVnYW1tYV9saW5lYXIpOw0KPiAtCQlpZiAoaWd0X3Bp cGVfb2JqX2hhc19wcm9wKHByaW1hcnktPnBpcGUsIElHVF9DUlRDX0NUTSkpDQo+IC0JCQlzZXRf Y3RtKHByaW1hcnktPnBpcGUsIGN0bV9pZGVudGl0eSk7DQo+IC0JCXNldF9nYW1tYShkYXRhLCBw cmltYXJ5LT5waXBlLCBnYW1tYV96ZXJvKTsNCj4gLQkJaWd0X2Rpc3BsYXlfY29tbWl0KCZkYXRh LT5kaXNwbGF5KTsNCj4gKwkvKiBFbnN1cmUgd2UgaGF2ZSBhIGNsZWFuIHN0YXRlIHRvIHN0YXJ0 IHdpdGguICovDQo+ICsJZGlzYWJsZV9kZWdhbW1hKHByaW1hcnktPnBpcGUpOw0KPiArCWRpc2Fi bGVfY3RtKHByaW1hcnktPnBpcGUpOw0KPiArCWRpc2FibGVfZ2FtbWEocHJpbWFyeS0+cGlwZSk7 DQo+ICsJaWd0X2Rpc3BsYXlfY29tbWl0KCZkYXRhLT5kaXNwbGF5KTsNCj4gDQo+IC0JCWlmIChp Z3RfcGlwZV9vYmpfaGFzX3Byb3AocHJpbWFyeS0+cGlwZSwgSUdUX0NSVENfREVHQU1NQV9MVVQp KSB7DQo+IC0JCQlibG9iID0gZ2V0X2Jsb2IoZGF0YSwgcHJpbWFyeS0+cGlwZSwgSUdUX0NSVENf REVHQU1NQV9MVVQpOw0KPiAtCQkJaWd0X2Fzc2VydChibG9iICYmDQo+IC0JCQkJICAgYmxvYi0+ bGVuZ3RoID09IChzaXplb2Yoc3RydWN0IGRybV9jb2xvcl9sdXQpICoNCj4gLQkJCQkJCSAgICBk YXRhLT5kZWdhbW1hX2x1dF9zaXplKSk7DQo+IC0JCQlkcm1Nb2RlRnJlZVByb3BlcnR5QmxvYihi bG9iKTsNCj4gLQkJfQ0KPiArCS8qIFNldCBhIGRlZ2FtYSAmIGdhbW1hIExVVCBhbmQgYSBDVE0g dXNpbmcgdGhlDQo+ICsJICogcHJvcGVydGllcyBhbmQgdmVyaWZ5IHRoZSBjb250ZW50IG9mIHRo ZQ0KPiArCSAqIHByb3BlcnRpZXMuICovDQo+ICsJaWYgKGlndF9waXBlX29ial9oYXNfcHJvcChw cmltYXJ5LT5waXBlLCBJR1RfQ1JUQ19ERUdBTU1BX0xVVCkpDQo+ICsJCXNldF9kZWdhbW1hKGRh dGEsIHByaW1hcnktPnBpcGUsIGRlZ2FtbWFfbGluZWFyKTsNCj4gKwlpZiAoaWd0X3BpcGVfb2Jq X2hhc19wcm9wKHByaW1hcnktPnBpcGUsIElHVF9DUlRDX0NUTSkpDQo+ICsJCXNldF9jdG0ocHJp bWFyeS0+cGlwZSwgY3RtX2lkZW50aXR5KTsNCj4gKwlzZXRfZ2FtbWEoZGF0YSwgcHJpbWFyeS0+ cGlwZSwgZ2FtbWFfemVybyk7DQo+ICsJaWd0X2Rpc3BsYXlfY29tbWl0KCZkYXRhLT5kaXNwbGF5 KTsNCj4gDQo+IC0JCWlmIChpZ3RfcGlwZV9vYmpfaGFzX3Byb3AocHJpbWFyeS0+cGlwZSwgSUdU X0NSVENfQ1RNKSkgew0KPiAtCQkJYmxvYiA9IGdldF9ibG9iKGRhdGEsIHByaW1hcnktPnBpcGUs IElHVF9DUlRDX0NUTSk7DQo+IC0JCQlpZ3RfYXNzZXJ0KGJsb2IgJiYNCj4gLQkJCQkgICBibG9i LT5sZW5ndGggPT0gc2l6ZW9mKHN0cnVjdCBkcm1fY29sb3JfY3RtKSk7DQo+IC0JCQlkcm1Nb2Rl RnJlZVByb3BlcnR5QmxvYihibG9iKTsNCj4gLQkJfQ0KPiAtDQo+IC0JCWJsb2IgPSBnZXRfYmxv YihkYXRhLCBwcmltYXJ5LT5waXBlLCBJR1RfQ1JUQ19HQU1NQV9MVVQpOw0KPiArCWlmIChpZ3Rf cGlwZV9vYmpfaGFzX3Byb3AocHJpbWFyeS0+cGlwZSwgSUdUX0NSVENfREVHQU1NQV9MVVQpKSB7 DQo+ICsJCWJsb2IgPSBnZXRfYmxvYihkYXRhLCBwcmltYXJ5LT5waXBlLCBJR1RfQ1JUQ19ERUdB TU1BX0xVVCk7DQo+ICAJCWlndF9hc3NlcnQoYmxvYiAmJg0KPiAgCQkJICAgYmxvYi0+bGVuZ3Ro ID09IChzaXplb2Yoc3RydWN0IGRybV9jb2xvcl9sdXQpICoNCj4gLQkJCQkJICAgIGRhdGEtPmdh bW1hX2x1dF9zaXplKSk7DQo+IC0JCWx1dCA9IChzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqKSBibG9i LT5kYXRhOw0KPiAtCQlmb3IgKGkgPSAwOyBpIDwgZGF0YS0+Z2FtbWFfbHV0X3NpemU7IGkrKykN Cj4gLQkJCWlndF9hc3NlcnQobHV0W2ldLnJlZCA9PSAwICYmDQo+IC0JCQkJICAgbHV0W2ldLmdy ZWVuID09IDAgJiYNCj4gLQkJCQkgICBsdXRbaV0uYmx1ZSA9PSAwKTsNCj4gKwkJCQkJICAgIGRh dGEtPmRlZ2FtbWFfbHV0X3NpemUpKTsNCj4gIAkJZHJtTW9kZUZyZWVQcm9wZXJ0eUJsb2IoYmxv Yik7DQo+ICsJfQ0KPiANCj4gLQkJLyogU2V0IGEgZ2FtbWEgTFVUIHVzaW5nIHRoZSBsZWdhY3kg aW9jdGwgYW5kIHZlcmlmeQ0KPiAtCQkgKiB0aGUgY29udGVudCBvZiB0aGUgR0FNTUFfTFVUIHBy b3BlcnR5IGlzIGNoYW5nZWQNCj4gLQkJICogYW5kIHRoYXQgQ1RNIGFuZCBERUdBTU1BX0xVVCBh cmUgZW1wdHkuICovDQo+IC0JCWttc19jcnRjID0gZHJtTW9kZUdldENydGMoZGF0YS0+ZHJtX2Zk LCBwcmltYXJ5LT5waXBlLT5jcnRjX2lkKTsNCj4gLQkJbGVnYWN5X2x1dF9zaXplID0ga21zX2Ny dGMtPmdhbW1hX3NpemU7DQo+IC0JCWRybU1vZGVGcmVlQ3J0YyhrbXNfY3J0Yyk7DQo+ICsJaWYg KGlndF9waXBlX29ial9oYXNfcHJvcChwcmltYXJ5LT5waXBlLCBJR1RfQ1JUQ19DVE0pKSB7DQo+ ICsJCWJsb2IgPSBnZXRfYmxvYihkYXRhLCBwcmltYXJ5LT5waXBlLCBJR1RfQ1JUQ19DVE0pOw0K PiArCQlpZ3RfYXNzZXJ0KGJsb2IgJiYNCj4gKwkJCSAgIGJsb2ItPmxlbmd0aCA9PSBzaXplb2Yo c3RydWN0IGRybV9jb2xvcl9jdG0pKTsNCj4gKwkJZHJtTW9kZUZyZWVQcm9wZXJ0eUJsb2IoYmxv Yik7DQo+ICsJfQ0KPiANCj4gLQkJcmVkX2x1dCA9IG1hbGxvYyhzaXplb2YodWludDE2X3QpICog bGVnYWN5X2x1dF9zaXplKTsNCj4gLQkJZ3JlZW5fbHV0ID0gbWFsbG9jKHNpemVvZih1aW50MTZf dCkgKiBsZWdhY3lfbHV0X3NpemUpOw0KPiAtCQlibHVlX2x1dCA9IG1hbGxvYyhzaXplb2YodWlu dDE2X3QpICogbGVnYWN5X2x1dF9zaXplKTsNCj4gKwlibG9iID0gZ2V0X2Jsb2IoZGF0YSwgcHJp bWFyeS0+cGlwZSwgSUdUX0NSVENfR0FNTUFfTFVUKTsNCj4gKwlpZ3RfYXNzZXJ0KGJsb2IgJiYN Cj4gKwkJICAgYmxvYi0+bGVuZ3RoID09IChzaXplb2Yoc3RydWN0IGRybV9jb2xvcl9sdXQpICoN Cj4gKwkJCQkgICAgZGF0YS0+Z2FtbWFfbHV0X3NpemUpKTsNCj4gKwlsdXQgPSAoc3RydWN0IGRy bV9jb2xvcl9sdXQgKikgYmxvYi0+ZGF0YTsNCj4gKwlmb3IgKGkgPSAwOyBpIDwgZGF0YS0+Z2Ft bWFfbHV0X3NpemU7IGkrKykNCj4gKwkJaWd0X2Fzc2VydChsdXRbaV0ucmVkID09IDAgJiYNCj4g KwkJCSAgIGx1dFtpXS5ncmVlbiA9PSAwICYmDQo+ICsJCQkgICBsdXRbaV0uYmx1ZSA9PSAwKTsN Cj4gKwlkcm1Nb2RlRnJlZVByb3BlcnR5QmxvYihibG9iKTsNCj4gDQo+IC0JCWZvciAoaSA9IDA7 IGkgPCBsZWdhY3lfbHV0X3NpemU7IGkrKykNCj4gLQkJCXJlZF9sdXRbaV0gPSBncmVlbl9sdXRb aV0gPSBibHVlX2x1dFtpXSA9IDB4ZmZmZjsNCj4gKwkvKiBTZXQgYSBnYW1tYSBMVVQgdXNpbmcg dGhlIGxlZ2FjeSBpb2N0bCBhbmQgdmVyaWZ5DQo+ICsJICogdGhlIGNvbnRlbnQgb2YgdGhlIEdB TU1BX0xVVCBwcm9wZXJ0eSBpcyBjaGFuZ2VkDQo+ICsJICogYW5kIHRoYXQgQ1RNIGFuZCBERUdB TU1BX0xVVCBhcmUgZW1wdHkuICovDQo+ICsJa21zX2NydGMgPSBkcm1Nb2RlR2V0Q3J0YyhkYXRh LT5kcm1fZmQsIHByaW1hcnktPnBpcGUtPmNydGNfaWQpOw0KPiArCWxlZ2FjeV9sdXRfc2l6ZSA9 IGttc19jcnRjLT5nYW1tYV9zaXplOw0KPiArCWRybU1vZGVGcmVlQ3J0YyhrbXNfY3J0Yyk7DQo+ IA0KPiAtCQlpZ3RfYXNzZXJ0X2VxKGRybU1vZGVDcnRjU2V0R2FtbWEoZGF0YS0+ZHJtX2ZkLA0K PiAtCQkJCQkJICBwcmltYXJ5LT5waXBlLT5jcnRjX2lkLA0KPiAtCQkJCQkJICBsZWdhY3lfbHV0 X3NpemUsDQo+IC0JCQkJCQkgIHJlZF9sdXQsIGdyZWVuX2x1dCwgYmx1ZV9sdXQpLA0KPiAtCQkJ ICAgICAgMCk7DQo+IC0JCWlndF9kaXNwbGF5X2NvbW1pdCgmZGF0YS0+ZGlzcGxheSk7DQo+ICsJ cmVkX2x1dCA9IG1hbGxvYyhzaXplb2YodWludDE2X3QpICogbGVnYWN5X2x1dF9zaXplKTsNCj4g KwlncmVlbl9sdXQgPSBtYWxsb2Moc2l6ZW9mKHVpbnQxNl90KSAqIGxlZ2FjeV9sdXRfc2l6ZSk7 DQo+ICsJYmx1ZV9sdXQgPSBtYWxsb2Moc2l6ZW9mKHVpbnQxNl90KSAqIGxlZ2FjeV9sdXRfc2l6 ZSk7DQo+IA0KPiAtCQlpZiAoaWd0X3BpcGVfb2JqX2hhc19wcm9wKHByaW1hcnktPnBpcGUsIElH VF9DUlRDX0RFR0FNTUFfTFVUKSkNCj4gLQkJCWlndF9hc3NlcnQoZ2V0X2Jsb2IoZGF0YSwgcHJp bWFyeS0+cGlwZSwNCj4gLQkJCQkJICAgIElHVF9DUlRDX0RFR0FNTUFfTFVUKSA9PSBOVUxMKTsN Cj4gKwlmb3IgKGkgPSAwOyBpIDwgbGVnYWN5X2x1dF9zaXplOyBpKyspDQo+ICsJCXJlZF9sdXRb aV0gPSBncmVlbl9sdXRbaV0gPSBibHVlX2x1dFtpXSA9IDB4ZmZmZjsNCj4gDQo+IC0JCWlmIChp Z3RfcGlwZV9vYmpfaGFzX3Byb3AocHJpbWFyeS0+cGlwZSwgSUdUX0NSVENfQ1RNKSkNCj4gLQkJ CWlndF9hc3NlcnQoZ2V0X2Jsb2IoZGF0YSwgcHJpbWFyeS0+cGlwZSwgSUdUX0NSVENfQ1RNKSA9 PQ0KPiBOVUxMKTsNCj4gKwlpZ3RfYXNzZXJ0X2VxKGRybU1vZGVDcnRjU2V0R2FtbWEoZGF0YS0+ ZHJtX2ZkLA0KPiArCQkJCQkgIHByaW1hcnktPnBpcGUtPmNydGNfaWQsDQo+ICsJCQkJCSAgbGVn YWN5X2x1dF9zaXplLA0KPiArCQkJCQkgIHJlZF9sdXQsIGdyZWVuX2x1dCwgYmx1ZV9sdXQpLCAw KTsNCj4gKwlpZ3RfZGlzcGxheV9jb21taXQoJmRhdGEtPmRpc3BsYXkpOw0KPiANCj4gLQkJYmxv YiA9IGdldF9ibG9iKGRhdGEsIHByaW1hcnktPnBpcGUsIElHVF9DUlRDX0dBTU1BX0xVVCk7DQo+ IC0JCWlndF9hc3NlcnQoYmxvYiAmJg0KPiAtCQkJICAgYmxvYi0+bGVuZ3RoID09IChzaXplb2Yo c3RydWN0IGRybV9jb2xvcl9sdXQpICoNCj4gLQkJCQkJICAgIGxlZ2FjeV9sdXRfc2l6ZSkpOw0K PiAtCQlsdXQgPSAoc3RydWN0IGRybV9jb2xvcl9sdXQgKikgYmxvYi0+ZGF0YTsNCj4gLQkJZm9y IChpID0gMDsgaSA8IGxlZ2FjeV9sdXRfc2l6ZTsgaSsrKQ0KPiAtCQkJaWd0X2Fzc2VydChsdXRb aV0ucmVkID09IDB4ZmZmZiAmJg0KPiAtCQkJCSAgIGx1dFtpXS5ncmVlbiA9PSAweGZmZmYgJiYN Cj4gLQkJCQkgICBsdXRbaV0uYmx1ZSA9PSAweGZmZmYpOw0KPiAtCQlkcm1Nb2RlRnJlZVByb3Bl cnR5QmxvYihibG9iKTsNCj4gKwlpZiAoaWd0X3BpcGVfb2JqX2hhc19wcm9wKHByaW1hcnktPnBp cGUsIElHVF9DUlRDX0RFR0FNTUFfTFVUKSkNCj4gKwkJaWd0X2Fzc2VydChnZXRfYmxvYihkYXRh LCBwcmltYXJ5LT5waXBlLA0KPiArCQkJCSAgICBJR1RfQ1JUQ19ERUdBTU1BX0xVVCkgPT0gTlVM TCk7DQo+IA0KPiAtCQlpZ3RfcGxhbmVfc2V0X2ZiKHByaW1hcnksIE5VTEwpOw0KPiAtCQlpZ3Rf b3V0cHV0X3NldF9waXBlKG91dHB1dCwgUElQRV9OT05FKTsNCj4gLQl9DQo+ICsJaWYgKGlndF9w aXBlX29ial9oYXNfcHJvcChwcmltYXJ5LT5waXBlLCBJR1RfQ1JUQ19DVE0pKQ0KPiArCQlpZ3Rf YXNzZXJ0KGdldF9ibG9iKGRhdGEsIHByaW1hcnktPnBpcGUsIElHVF9DUlRDX0NUTSkgPT0gTlVM TCk7DQo+ICsNCj4gKwlibG9iID0gZ2V0X2Jsb2IoZGF0YSwgcHJpbWFyeS0+cGlwZSwgSUdUX0NS VENfR0FNTUFfTFVUKTsNCj4gKwlpZ3RfYXNzZXJ0KGJsb2IgJiYNCj4gKwkJICAgYmxvYi0+bGVu Z3RoID09IChzaXplb2Yoc3RydWN0IGRybV9jb2xvcl9sdXQpICoNCj4gKwkJCQkgICAgbGVnYWN5 X2x1dF9zaXplKSk7DQo+ICsJbHV0ID0gKHN0cnVjdCBkcm1fY29sb3JfbHV0ICopIGJsb2ItPmRh dGE7DQo+ICsJZm9yIChpID0gMDsgaSA8IGxlZ2FjeV9sdXRfc2l6ZTsgaSsrKQ0KPiArCQlpZ3Rf YXNzZXJ0KGx1dFtpXS5yZWQgPT0gMHhmZmZmICYmDQo+ICsJCQkgICBsdXRbaV0uZ3JlZW4gPT0g MHhmZmZmICYmDQo+ICsJCQkgICBsdXRbaV0uYmx1ZSA9PSAweGZmZmYpOw0KPiArCWRybU1vZGVG cmVlUHJvcGVydHlCbG9iKGJsb2IpOw0KPiArDQo+ICsJaWd0X3BsYW5lX3NldF9mYihwcmltYXJ5 LCBOVUxMKTsNCj4gKwlpZ3Rfb3V0cHV0X3NldF9waXBlKG91dHB1dCwgUElQRV9OT05FKTsNCj4g DQo+ICAJZnJlZV9sdXQoZGVnYW1tYV9saW5lYXIpOw0KPiAgCWZyZWVfbHV0KGdhbW1hX3plcm8p Ow0KPiBAQCAtNDQyLDg0ICs0NDIsODQgQEAgc3RhdGljIGJvb2wgdGVzdF9waXBlX2N0bShkYXRh X3QgKmRhdGEsDQo+ICAJaWd0X291dHB1dF90ICpvdXRwdXQ7DQo+ICAJYm9vbCByZXQgPSB0cnVl Ow0KPiAgCWlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsNCj4gKwlkcm1N b2RlTW9kZUluZm8gKm1vZGU7DQo+ICsJc3RydWN0IGlndF9mYiBmYl9tb2Rlc2V0LCBmYjsNCj4g KwlpZ3RfY3JjX3QgY3JjX3NvZnR3YXJlLCBjcmNfaGFyZHdhcmU7DQo+ICsJaW50IGZiX2lkLCBm Yl9tb2Rlc2V0X2lkOw0KPiANCj4gIAlpZ3RfcmVxdWlyZShpZ3RfcGlwZV9vYmpfaGFzX3Byb3Ao cHJpbWFyeS0+cGlwZSwgSUdUX0NSVENfQ1RNKSk7DQo+IA0KPiAgCWRlZ2FtbWFfbGluZWFyID0g Z2VuZXJhdGVfdGFibGUoZGF0YS0+ZGVnYW1tYV9sdXRfc2l6ZSwgMS4wKTsNCj4gIAlnYW1tYV9s aW5lYXIgPSBnZW5lcmF0ZV90YWJsZShkYXRhLT5nYW1tYV9sdXRfc2l6ZSwgMS4wKTsNCj4gDQo+ IC0JZm9yX2VhY2hfdmFsaWRfb3V0cHV0X29uX3BpcGUoJmRhdGEtPmRpc3BsYXksIHByaW1hcnkt PnBpcGUtPnBpcGUsDQo+IG91dHB1dCkgew0KPiAtCQlkcm1Nb2RlTW9kZUluZm8gKm1vZGU7DQo+ IC0JCXN0cnVjdCBpZ3RfZmIgZmJfbW9kZXNldCwgZmI7DQo+IC0JCWlndF9jcmNfdCBjcmNfc29m dHdhcmUsIGNyY19oYXJkd2FyZTsNCj4gLQkJaW50IGZiX2lkLCBmYl9tb2Rlc2V0X2lkOw0KPiAr CW91dHB1dCA9IGlndF9nZXRfc2luZ2xlX291dHB1dF9mb3JfcGlwZSgmZGF0YS0+ZGlzcGxheSwg cHJpbWFyeS0+cGlwZS0NCj4gPnBpcGUpOw0KPiArCWlndF9yZXF1aXJlKG91dHB1dCk7DQo+IA0K PiAtCQlpZ3Rfb3V0cHV0X3NldF9waXBlKG91dHB1dCwgcHJpbWFyeS0+cGlwZS0+cGlwZSk7DQo+ IC0JCW1vZGUgPSBpZ3Rfb3V0cHV0X2dldF9tb2RlKG91dHB1dCk7DQo+ICsJaWd0X291dHB1dF9z ZXRfcGlwZShvdXRwdXQsIHByaW1hcnktPnBpcGUtPnBpcGUpOw0KPiArCW1vZGUgPSBpZ3Rfb3V0 cHV0X2dldF9tb2RlKG91dHB1dCk7DQo+IA0KPiAtCQkvKiBDcmVhdGUgYSBmcmFtZWJ1ZmZlciBh dCB0aGUgc2l6ZSBvZiB0aGUgb3V0cHV0LiAqLw0KPiAtCQlmYl9pZCA9IGlndF9jcmVhdGVfZmIo ZGF0YS0+ZHJtX2ZkLA0KPiArCS8qIENyZWF0ZSBhIGZyYW1lYnVmZmVyIGF0IHRoZSBzaXplIG9m IHRoZSBvdXRwdXQuICovDQo+ICsJZmJfaWQgPSBpZ3RfY3JlYXRlX2ZiKGRhdGEtPmRybV9mZCwN Cj4gKwkJCSAgICAgIG1vZGUtPmhkaXNwbGF5LA0KPiArCQkJICAgICAgbW9kZS0+dmRpc3BsYXks DQo+ICsJCQkgICAgICBEUk1fRk9STUFUX1hSR0I4ODg4LA0KPiArCQkJICAgICAgRFJNX0ZPUk1B VF9NT0RfTk9ORSwNCj4gKwkJCSAgICAgICZmYik7DQo+ICsJaWd0X2Fzc2VydChmYl9pZCk7DQo+ ICsNCj4gKwlmYl9tb2Rlc2V0X2lkID0gaWd0X2NyZWF0ZV9mYihkYXRhLT5kcm1fZmQsDQo+ICAJ CQkJICAgICAgbW9kZS0+aGRpc3BsYXksDQo+ICAJCQkJICAgICAgbW9kZS0+dmRpc3BsYXksDQo+ ICAJCQkJICAgICAgRFJNX0ZPUk1BVF9YUkdCODg4OCwNCj4gIAkJCQkgICAgICBEUk1fRk9STUFU X01PRF9OT05FLA0KPiAtCQkJCSAgICAgICZmYik7DQo+IC0JCWlndF9hc3NlcnQoZmJfaWQpOw0K PiArCQkJCSAgICAgICZmYl9tb2Rlc2V0KTsNCj4gKwlpZ3RfYXNzZXJ0KGZiX21vZGVzZXRfaWQp Ow0KPiArCWlndF9wbGFuZV9zZXRfZmIocHJpbWFyeSwgJmZiX21vZGVzZXQpOw0KPiANCj4gLQkJ ZmJfbW9kZXNldF9pZCA9IGlndF9jcmVhdGVfZmIoZGF0YS0+ZHJtX2ZkLA0KPiAtCQkJCQkgICAg ICBtb2RlLT5oZGlzcGxheSwNCj4gLQkJCQkJICAgICAgbW9kZS0+dmRpc3BsYXksDQo+IC0JCQkJ CSAgICAgIERSTV9GT1JNQVRfWFJHQjg4ODgsDQo+IC0JCQkJCSAgICAgIERSTV9GT1JNQVRfTU9E X05PTkUsDQo+IC0JCQkJCSAgICAgICZmYl9tb2Rlc2V0KTsNCj4gLQkJaWd0X2Fzc2VydChmYl9t b2Rlc2V0X2lkKTsNCj4gLQkJaWd0X3BsYW5lX3NldF9mYihwcmltYXJ5LCAmZmJfbW9kZXNldCk7 DQo+IC0NCj4gLQkJLyoNCj4gLQkJICogRG9uJ3QgcHJvZ3JhbSBMVVQncyBmb3IgbWF4IENUTSBj YXNlcywgYXMgbGltaXRhdGlvbiBvZg0KPiAtCQkgKiByZXByZXNlbnRpbmcgaW50ZXJtZWRpYXRl IHZhbHVlcyBiZXR3ZWVuIDAgYW5kIDEuMCBjYXVzZXMNCj4gLQkJICogcm91bmRpbmcgaXNzdWVz IGFuZCBpbmFjY3VyYWNpZXMgbGVhZGluZyB0byBjcmMgbWlzbWF0Y2guDQo+IC0JCSAqLw0KPiAt CQlpZiAobWVtY21wKGJlZm9yZSwgYWZ0ZXIsIHNpemVvZihjb2xvcl90KSkpIHsNCj4gLQkJCXNl dF9kZWdhbW1hKGRhdGEsIHByaW1hcnktPnBpcGUsIGRlZ2FtbWFfbGluZWFyKTsNCj4gLQkJCXNl dF9nYW1tYShkYXRhLCBwcmltYXJ5LT5waXBlLCBnYW1tYV9saW5lYXIpOw0KPiAtCQl9IGVsc2Ug ew0KPiAtCQkJLyogRGlzYWJsZSBEZWdhbW1hIGFuZCBHYW1tYSBmb3IgY3RtIG1heCB0ZXN0ICov DQo+IC0JCQlkaXNhYmxlX2RlZ2FtbWEocHJpbWFyeS0+cGlwZSk7DQo+IC0JCQlkaXNhYmxlX2dh bW1hKHByaW1hcnktPnBpcGUpOw0KPiAtCQl9DQo+IC0NCj4gLQkJZGlzYWJsZV9jdG0ocHJpbWFy eS0+cGlwZSk7DQo+IC0JCWlndF9kaXNwbGF5X2NvbW1pdCgmZGF0YS0+ZGlzcGxheSk7DQo+IC0N Cj4gLQkJcGFpbnRfcmVjdGFuZ2xlcyhkYXRhLCBtb2RlLCBhZnRlciwgJmZiKTsNCj4gLQkJaWd0 X3BsYW5lX3NldF9mYihwcmltYXJ5LCAmZmIpOw0KPiAtCQlzZXRfY3RtKHByaW1hcnktPnBpcGUs IGN0bV9pZGVudGl0eSk7DQo+IC0JCWlndF9kaXNwbGF5X2NvbW1pdCgmZGF0YS0+ZGlzcGxheSk7 DQo+IC0JCWlndF93YWl0X2Zvcl92YmxhbmsoZGF0YS0+ZHJtX2ZkLA0KPiAtCQkJCWRpc3BsYXkt PnBpcGVzW3ByaW1hcnktPnBpcGUtPnBpcGVdLmNydGNfb2Zmc2V0KTsNCj4gLQkJaWd0X3BpcGVf Y3JjX2NvbGxlY3RfY3JjKGRhdGEtPnBpcGVfY3JjLCAmY3JjX3NvZnR3YXJlKTsNCj4gLQ0KPiAt CQkvKiBXaXRoIENUTSB0cmFuc2Zvcm1hdGlvbi4gKi8NCj4gLQkJcGFpbnRfcmVjdGFuZ2xlcyhk YXRhLCBtb2RlLCBiZWZvcmUsICZmYik7DQo+IC0JCWlndF9wbGFuZV9zZXRfZmIocHJpbWFyeSwg JmZiKTsNCj4gLQkJc2V0X2N0bShwcmltYXJ5LT5waXBlLCBjdG1fbWF0cml4KTsNCj4gLQkJaWd0 X2Rpc3BsYXlfY29tbWl0KCZkYXRhLT5kaXNwbGF5KTsNCj4gLQkJaWd0X3dhaXRfZm9yX3ZibGFu ayhkYXRhLT5kcm1fZmQsDQo+IC0JCQkJZGlzcGxheS0+cGlwZXNbcHJpbWFyeS0+cGlwZS0+cGlw ZV0uY3J0Y19vZmZzZXQpOw0KPiAtCQlpZ3RfcGlwZV9jcmNfY29sbGVjdF9jcmMoZGF0YS0+cGlw ZV9jcmMsICZjcmNfaGFyZHdhcmUpOw0KPiAtDQo+IC0JCS8qIFZlcmlmeSB0aGF0IHRoZSBDUkMg b2YgdGhlIHNvZnR3YXJlIGNvbXB1dGVkIG91dHB1dCBpcw0KPiAtCQkgKiBlcXVhbCB0byB0aGUg Q1JDIG9mIHRoZSBDVE0gbWF0cml4IHRyYW5zZm9ybWF0aW9uIG91dHB1dC4NCj4gLQkJICovDQo+ IC0JCXJldCAmPSAhaWd0X3NraXBfY3JjX2NvbXBhcmUgfHwgaWd0X2NoZWNrX2NyY19lcXVhbCgm Y3JjX3NvZnR3YXJlLA0KPiAmY3JjX2hhcmR3YXJlKTsNCj4gLQ0KPiAtCQlpZ3RfcGxhbmVfc2V0 X2ZiKHByaW1hcnksIE5VTEwpOw0KPiAtCQlpZ3Rfb3V0cHV0X3NldF9waXBlKG91dHB1dCwgUElQ RV9OT05FKTsNCj4gLQkJaWd0X3JlbW92ZV9mYihkYXRhLT5kcm1fZmQsICZmYik7DQo+IC0JCWln dF9yZW1vdmVfZmIoZGF0YS0+ZHJtX2ZkLCAmZmJfbW9kZXNldCk7DQo+ICsJLyoNCj4gKwkgKiBE b24ndCBwcm9ncmFtIExVVCdzIGZvciBtYXggQ1RNIGNhc2VzLCBhcyBsaW1pdGF0aW9uIG9mDQo+ ICsJICogcmVwcmVzZW50aW5nIGludGVybWVkaWF0ZSB2YWx1ZXMgYmV0d2VlbiAwIGFuZCAxLjAg Y2F1c2VzDQo+ICsJICogcm91bmRpbmcgaXNzdWVzIGFuZCBpbmFjY3VyYWNpZXMgbGVhZGluZyB0 byBjcmMgbWlzbWF0Y2guDQo+ICsJICovDQo+ICsJaWYgKG1lbWNtcChiZWZvcmUsIGFmdGVyLCBz aXplb2YoY29sb3JfdCkpKSB7DQo+ICsJCXNldF9kZWdhbW1hKGRhdGEsIHByaW1hcnktPnBpcGUs IGRlZ2FtbWFfbGluZWFyKTsNCj4gKwkJc2V0X2dhbW1hKGRhdGEsIHByaW1hcnktPnBpcGUsIGdh bW1hX2xpbmVhcik7DQo+ICsJfSBlbHNlIHsNCj4gKwkJLyogRGlzYWJsZSBEZWdhbW1hIGFuZCBH YW1tYSBmb3IgY3RtIG1heCB0ZXN0ICovDQo+ICsJCWRpc2FibGVfZGVnYW1tYShwcmltYXJ5LT5w aXBlKTsNCj4gKwkJZGlzYWJsZV9nYW1tYShwcmltYXJ5LT5waXBlKTsNCj4gIAl9DQo+IA0KPiAr CWRpc2FibGVfY3RtKHByaW1hcnktPnBpcGUpOw0KPiArCWlndF9kaXNwbGF5X2NvbW1pdCgmZGF0 YS0+ZGlzcGxheSk7DQo+ICsNCj4gKwlwYWludF9yZWN0YW5nbGVzKGRhdGEsIG1vZGUsIGFmdGVy LCAmZmIpOw0KPiArCWlndF9wbGFuZV9zZXRfZmIocHJpbWFyeSwgJmZiKTsNCj4gKwlzZXRfY3Rt KHByaW1hcnktPnBpcGUsIGN0bV9pZGVudGl0eSk7DQo+ICsJaWd0X2Rpc3BsYXlfY29tbWl0KCZk YXRhLT5kaXNwbGF5KTsNCj4gKwlpZ3Rfd2FpdF9mb3JfdmJsYW5rKGRhdGEtPmRybV9mZCwNCj4g KwkJCSAgICBkaXNwbGF5LT5waXBlc1twcmltYXJ5LT5waXBlLT5waXBlXS5jcnRjX29mZnNldCk7 DQo+ICsJaWd0X3BpcGVfY3JjX2NvbGxlY3RfY3JjKGRhdGEtPnBpcGVfY3JjLCAmY3JjX3NvZnR3 YXJlKTsNCj4gKw0KPiArCS8qIFdpdGggQ1RNIHRyYW5zZm9ybWF0aW9uLiAqLw0KPiArCXBhaW50 X3JlY3RhbmdsZXMoZGF0YSwgbW9kZSwgYmVmb3JlLCAmZmIpOw0KPiArCWlndF9wbGFuZV9zZXRf ZmIocHJpbWFyeSwgJmZiKTsNCj4gKwlzZXRfY3RtKHByaW1hcnktPnBpcGUsIGN0bV9tYXRyaXgp Ow0KPiArCWlndF9kaXNwbGF5X2NvbW1pdCgmZGF0YS0+ZGlzcGxheSk7DQo+ICsJaWd0X3dhaXRf Zm9yX3ZibGFuayhkYXRhLT5kcm1fZmQsDQo+ICsJCQkgICAgZGlzcGxheS0+cGlwZXNbcHJpbWFy eS0+cGlwZS0+cGlwZV0uY3J0Y19vZmZzZXQpOw0KPiArCWlndF9waXBlX2NyY19jb2xsZWN0X2Ny YyhkYXRhLT5waXBlX2NyYywgJmNyY19oYXJkd2FyZSk7DQo+ICsNCj4gKwkvKiBWZXJpZnkgdGhh dCB0aGUgQ1JDIG9mIHRoZSBzb2Z0d2FyZSBjb21wdXRlZCBvdXRwdXQgaXMNCj4gKwkgKiBlcXVh bCB0byB0aGUgQ1JDIG9mIHRoZSBDVE0gbWF0cml4IHRyYW5zZm9ybWF0aW9uIG91dHB1dC4NCj4g KwkgKi8NCj4gKwlyZXQgJj0gIWlndF9za2lwX2NyY19jb21wYXJlIHx8IGlndF9jaGVja19jcmNf ZXF1YWwoJmNyY19zb2Z0d2FyZSwNCj4gJmNyY19oYXJkd2FyZSk7DQo+ICsNCj4gKwlpZ3RfcGxh bmVfc2V0X2ZiKHByaW1hcnksIE5VTEwpOw0KPiArCWlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0 LCBQSVBFX05PTkUpOw0KPiArCWlndF9yZW1vdmVfZmIoZGF0YS0+ZHJtX2ZkLCAmZmIpOw0KPiAr CWlndF9yZW1vdmVfZmIoZGF0YS0+ZHJtX2ZkLCAmZmJfbW9kZXNldCk7DQo+ICsNCj4gIAlmcmVl X2x1dChkZWdhbW1hX2xpbmVhcik7DQo+ICAJZnJlZV9sdXQoZ2FtbWFfbGluZWFyKTsNCj4gDQo+ IC0tDQo+IDIuMzEuMQ0KDQo=