From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Kasatkin, Dmitry" Subject: Re: [PATCH v3 05/12] ima: add appraise action keywords and default rules Date: Thu, 22 Mar 2012 16:27:17 +0200 Message-ID: References: <1332356057-3356-1-git-send-email-zohar@linux.vnet.ibm.com> <1332356057-3356-6-git-send-email-zohar@linux.vnet.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 Cc: linux-security-module@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, Al Viro , David Safford , Mimi Zohar To: Mimi Zohar Return-path: In-Reply-To: <1332356057-3356-6-git-send-email-zohar@linux.vnet.ibm.com> Sender: linux-kernel-owner@vger.kernel.org List-Id: linux-fsdevel.vger.kernel.org T24gV2VkLCBNYXIgMjEsIDIwMTIgYXQgODo1NCBQTSwgTWltaSBab2hhciA8em9oYXJAbGludXgu dm5ldC5pYm0uY29tPiB3cm90ZToKPiBVbmxpa2UgdGhlIElNQSBtZWFzdXJlbWVudCBwb2xpY3ks IHRoZSBhcHByYWlzZSBwb2xpY3kgY2FuIG5vdCBiZSBkZXBlbmRlbnQKPiBvbiBydW50aW1lIHBy b2Nlc3MgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIHRhc2sgdWlkLCBhcyB0aGUgJ3NlY3VyaXR5 LmltYScKPiB4YXR0ciBpcyB3cml0dGVuIG9uIGZpbGUgY2xvc2UgYW5kIG11c3QgYmUgdXBkYXRl ZCBlYWNoIHRpbWUgdGhlIGZpbGUgY2hhbmdlcywKPiByZWdhcmRsZXNzIG9mIHRoZSBjdXJyZW50 IHRhc2sgdWlkLgo+Cj4gVGhpcyBwYXRjaCBleHRlbmRzIHRoZSBwb2xpY3kgbGFuZ3VhZ2Ugd2l0 aCAnZm93bmVyJywgZGVmaW5lcyBhbiBhcHByYWlzZQo+IHBvbGljeSwgd2hpY2ggYXBwcmFpc2Vz IGFsbCBmaWxlcyBvd25lZCBieSByb290LCBhbmQgZGVmaW5lcyAnaW1hX2FwcHJhaXNlX3RjYics Cj4gYSBuZXcgYm9vdCBjb21tYW5kIGxpbmUgb3B0aW9uLCB0byBlbmFibGUgdGhlIGFwcHJhaXNl IHBvbGljeS4KPgo+IENoYW5nZWxvZyB2MzoKPiAtIHNlcGFyYXRlIHRoZSBtZWFzdXJlIGZyb20g dGhlIGFwcHJhaXNlIHJ1bGVzIGluIG9yZGVyIHRvIHN1cHBvcnQgbWVhc3VyaW5nCj4gwqB3aXRo b3V0IGFwcHJhaXNpbmcgYW5kIGFwcHJhaXNpbmcgd2l0aG91dCBtZWFzdXJpbmcuCj4gLSBjaGFu Z2UgYXBwcmFpc2FsIGRlZmF1bHQgZm9yIGZpbGVzeXN0ZW1zIHdpdGhvdXQgeGF0dHIgc3VwcG9y dCB0byBmYWlsCj4gLSB1cGRhdGUgZGVmYXVsdCBhcHByYWlzZSBwb2xpY3kgZm9yIGNncm91cHMK Pgo+IENoYW5nZWxvZyB2MToKPiAtIGRvbid0IGFwcHJhaXNlIFJBTUZTIChEbWl0cnkgS2FzYXRr aW4pCj4gLSBtZXJnZWQgcmVzdCBvZiAiaW1hOiBpbWFfbXVzdF9hcHByYWlzZV9vcl9tZWFzdXJl IEFQSSBjaGFuZ2UiIGNvbW1pdAo+IMKgKERtdGlyeSBLYXNhdGtpbikKPgo+IMKgaW1hX211c3Rf YXBwcmFpc2Vfb3JfbWVhc3VyZSgpIGNhbGxlZCBpbWFfbWF0Y2hfcG9saWN5IHR3aWNlLCB3aGlj aAo+IMKgc2VhcmNoZWQgdGhlIHBvbGljeSBmb3IgYSBtYXRjaGluZyBydWxlLiDCoE9uY2UgZm9y IGEgbWF0Y2hpbmcgbWVhc3VyZW1lbnQKPiDCoHJ1bGUgYW5kIHN1YnNlcXVlbnRseSBmb3IgYW4g YXBwcmFpc2FsIHJ1bGUuIFNlYXJjaGluZyB0aGUgcG9saWN5IHR3aWNlCj4gwqBpcyB1bm5lY2Vz c2FyeSBvdmVyaGVhZCwgd2hpY2ggY291bGQgYmUgbm90aWNlYWJsZSB3aXRoIGEgbGFyZ2UgcG9s aWN5Lgo+Cj4gwqBUaGUgbmV3IHZlcnNpb24gb2YgaW1hX211c3RfYXBwcmFpc2Vfb3JfbWVhc3Vy ZSgpIGRvZXMgZXZlcnl0aGluZyBpbiBhCj4gwqBzaW5nbGUgaXRlcmF0aW9uIHVzaW5nIGEgbmV3 IHZlcnNpb24gb2YgaW1hX21hdGNoX3BvbGljeSgpLiDCoEl0IHJldHVybnMKPiDCoElNQV9NRUFT VVJFLCBJTUFfQVBQUkFJU0UgbWFzay4KPgo+IMKgV2l0aCB0aGUgdXNlIG9mIGFjdGlvbiBtYXNr IG9ubHkgb25lIGVmZmljaWVudCBtYXRjaGluZyBmdW5jdGlvbgo+IMKgaXMgZW5vdWdoLiDCoFJl bW92ZWQgb3RoZXIgc3BlY2lmaWMgdmVyc2lvbnMgb2YgbWF0Y2hpbmcgZnVuY3Rpb25zLgo+Cj4g Q2hhbmdlbG9nOgo+IC0gY2hhbmdlICdvd25lcicgdG8gJ2Zvd25lcicgdG8gY29uZm9ybSB0byB0 aGUgbmV3IExTTSBjb25kaXRpb25zIHBvc3RlZCBieQo+IMKgUm9iZXJ0byBTYXNzdS4KPiAtIGZp eCBjYWxscyB0byBpbWFfbG9nX3N0cmluZygpCj4KPiBTaWduZWQtb2ZmLWJ5OiBNaW1pIFpvaGFy IDx6b2hhckB1cy5pYm0uY29tPgoKU2lnbmVkLW9mZi1ieTogRG1pdHJ5IEthc2F0a2luIDxkbWl0 cnkua2FzYXRraW5AaW50ZWwuY29tPgoKPiAtLS0KPiDCoERvY3VtZW50YXRpb24vQUJJL3Rlc3Rp bmcvaW1hX3BvbGljeSDCoHwgwqAgMjUgKysrKystCj4gwqBEb2N1bWVudGF0aW9uL2tlcm5lbC1w YXJhbWV0ZXJzLnR4dCDCoCB8IMKgIMKgNCArCj4gwqBzZWN1cml0eS9pbnRlZ3JpdHkvaW1hL2lt YV9hcHByYWlzZS5jIHwgwqAgwqA1ICstCj4gwqBzZWN1cml0eS9pbnRlZ3JpdHkvaW1hL2ltYV9w b2xpY3kuYyDCoCB8IMKgMTQ5ICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQo+IMKg NCBmaWxlcyBjaGFuZ2VkLCAxMzkgaW5zZXJ0aW9ucygrKSwgNDQgZGVsZXRpb25zKC0pCj4KPiBk aWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9pbWFfcG9saWN5IGIvRG9jdW1l bnRhdGlvbi9BQkkvdGVzdGluZy9pbWFfcG9saWN5Cj4gaW5kZXggNmNkNmRhZS4uZGNmZjgyMiAx MDA2NDQKPiAtLS0gYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2ltYV9wb2xpY3kKPiArKysg Yi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2ltYV9wb2xpY3kKPiBAQCAtMTIsMTEgKzEyLDE0 IEBAIERlc2NyaXB0aW9uOgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgdGhlbiBjbG9zaW5nIHRo ZSBmaWxlLiDCoFRoZSBuZXcgcG9saWN5IHRha2VzIGVmZmVjdCBhZnRlcgo+IMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgdGhlIGZpbGUgaW1hL3BvbGljeSBpcyBjbG9zZWQuCj4KPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIElNQSBhcHByYWlzYWwsIGlmIGNvbmZpZ3VyZWQsIHVzZXMgdGhlc2UgZmls ZSBtZWFzdXJlbWVudHMKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGZvciBsb2NhbCBtZWFzdXJl bWVudCBhcHByYWlzYWwuCj4gKwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgcnVsZSBmb3JtYXQ6 IGFjdGlvbiBbY29uZGl0aW9uIC4uLl0KPgo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgYWN0aW9u OiBtZWFzdXJlIHwgZG9udF9tZWFzdXJlCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBhY3Rpb246 IG1lYXN1cmUgfCBkb250X21lYXN1cmUgfCBhcHByYWlzZSB8IGRvbnRfYXBwcmFpc2UKPiDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoGNvbmRpdGlvbjo9IGJhc2UgfCBsc20KPiAtIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIGJhc2U6IMKgIFtbZnVuYz1dIFttYXNrPV0gW2ZzbWFnaWM9 XSBbdWlkPV1dCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBiYXNlOiDCoCBb W2Z1bmM9XSBbbWFzaz1dIFtmc21hZ2ljPV0gW3VpZD1dIFtmb3duZXJdXQo+IMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgbHNtOiDCoCDCoFtbc3Vial91c2VyPV0gW3N1Ympfcm9s ZT1dIFtzdWJqX3R5cGU9XQo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIFtvYmpfdXNlcj1dIFtvYmpfcm9sZT1dIFtvYmpfdHlwZT1dXQo+Cj4gQEAgLTI0 LDM2ICsyNyw1MCBAQCBEZXNjcmlwdGlvbjoKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoG1hc2s6PSBbTUFZX1JFQURdIFtNQVlfV1JJVEVdIFtNQVlfQVBQRU5EXSBbTUFZX0VY RUNdCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBmc21hZ2ljOj0gaGV4IHZh bHVlCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB1aWQ6PSBkZWNpbWFsIHZh bHVlCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmb3duZXI6PWRlY2ltYWwg dmFsdWUKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGxzbTogwqAgwqBhcmUgTFNNIHNwZWNpZmlj Cj4KPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGRlZmF1bHQgcG9saWN5Ogo+IMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIyBQUk9DX1NVUEVSX01BR0lDCj4gwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBkb250X21lYXN1cmUgZnNtYWdpYz0weDlmYTAKPiArIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRvbnRfYXBwcmFpc2UgZnNtYWdpYz0weDlm YTAKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCMgU1lTRlNfTUFHSUMKPiDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGRvbnRfbWVhc3VyZSBmc21hZ2ljPTB4 NjI2NTY1NzIKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRvbnRfYXBwcmFp c2UgZnNtYWdpYz0weDYyNjU2NTcyCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAjIERFQlVHRlNfTUFHSUMKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGRv bnRfbWVhc3VyZSBmc21hZ2ljPTB4NjQ2MjY3MjAKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIGRvbnRfYXBwcmFpc2UgZnNtYWdpYz0weDY0NjI2NzIwCj4gwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAjIFRNUEZTX01BR0lDCj4gwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqBkb250X21lYXN1cmUgZnNtYWdpYz0weDAxMDIxOTk0Cj4gKyDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkb250X2FwcHJhaXNlIGZzbWFnaWM9MHgwMTAy MTk5NAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgIyBSQU1GU19NQUdJQwo+ ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZG9udF9tZWFzdXJlIGZzbWFnaWM9 MHg4NTg0NThmNgo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZG9udF9hcHBy YWlzZSBmc21hZ2ljPTB4ODU4NDU4ZjYKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCMgU0VDVVJJVFlGU19NQUdJQwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgZG9udF9tZWFzdXJlIGZzbWFnaWM9MHg3MzYzNjY3Mwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgZG9udF9hcHByYWlzZSBmc21hZ2ljPTB4NzM2MzY2NzMKPgo+IMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgbWVhc3VyZSBmdW5jPUJQUk1fQ0hFQ0sKPiDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoG1lYXN1cmUgZnVuYz1GSUxFX01NQVAg bWFzaz1NQVlfRVhFQwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgbWVhc3Vy ZSBmdW5jPUZJTEVfQ0hFQ0sgbWFzaz1NQVlfUkVBRCB1aWQ9MAo+ICsgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgYXBwcmFpc2UgZm93bmVyPTAKPgo+IMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgVGhlIGRlZmF1bHQgcG9saWN5IG1lYXN1cmVzIGFsbCBleGVjdXRhYmxlcyBpbiBicHJt X2NoZWNrLAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgYWxsIGZpbGVzIG1tYXBwZWQgZXhlY3V0 YWJsZSBpbiBmaWxlX21tYXAsIGFuZCBhbGwgZmlsZXMKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKg IG9wZW4gZm9yIHJlYWQgYnkgcm9vdCBpbiBkb19maWxwX29wZW4uCj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCBvcGVuIGZvciByZWFkIGJ5IHJvb3QgaW4gZG9fZmlscF9vcGVuLiDCoFRoZSBkZWZh dWx0IGFwcHJhaXNhbAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcG9saWN5IGFwcHJhaXNlcyBh bGwgZmlsZXMgb3duZWQgYnkgcm9vdC4KPgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgRXhhbXBs ZXMgb2YgTFNNIHNwZWNpZmljIGRlZmluaXRpb25zOgo+Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqBTRUxpbnV4Ogo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIyBTRUxJTlVY X01BR0lDCj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkb250X21lYXN1cmUg ZnNtYWdpYz0weEY5N0NGRjhDCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBk b250X21lYXN1cmUgZnNtYWdpYz0weGY5N2NmZjhjCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCBkb250X2FwcHJhaXNlIGZzbWFnaWM9MHhmOTdjZmY4Ywo+Cj4gwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBkb250X21lYXN1cmUgb2JqX3R5cGU9dmFyX2xvZ190 Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkb250X2FwcHJhaXNlIG9ial90 eXBlPXZhcl9sb2dfdAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZG9udF9t ZWFzdXJlIG9ial90eXBlPWF1ZGl0ZF9sb2dfdAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgZG9udF9hcHByYWlzZSBvYmpfdHlwZT1hdWRpdGRfbG9nX3QKPiDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoG1lYXN1cmUgc3Vial91c2VyPXN5c3RlbV91IGZ1bmM9 RklMRV9DSEVDSyBtYXNrPU1BWV9SRUFECj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqBtZWFzdXJlIHN1Ympfcm9sZT1zeXN0ZW1fciBmdW5jPUZJTEVfQ0hFQ0sgbWFzaz1NQVlf UkVBRAo+Cj4gZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24va2VybmVsLXBhcmFtZXRlcnMudHh0 IGIvRG9jdW1lbnRhdGlvbi9rZXJuZWwtcGFyYW1ldGVycy50eHQKPiBpbmRleCBhODY3NjVkLi42 YzAwNDkxIDEwMDY0NAo+IC0tLSBhL0RvY3VtZW50YXRpb24va2VybmVsLXBhcmFtZXRlcnMudHh0 Cj4gKysrIGIvRG9jdW1lbnRhdGlvbi9rZXJuZWwtcGFyYW1ldGVycy50eHQKPiBAQCAtMTAwOCw2 ICsxMDA4LDEwIEBAIGJ5dGVzIHJlc3BlY3RpdmVseS4gU3VjaCBsZXR0ZXIgc3VmZml4ZXMgY2Fu IGFsc28gYmUgZW50aXJlbHkgb21pdHRlZC4KPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoEZvcm1hdDogeyAib2ZmIiB8ICJlbmZvcmNlIiB8ICJmaXgiIH0KPiDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGRlZmF1bHQ6ICJlbmZvcmNlIgo+Cj4gKyDCoCDCoCDC oCBpbWFfYXBwcmFpc2VfdGNiIFtJTUFdCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCBUaGUgYnVpbHRpbiBhcHByYWlzZSBwb2xpY3kgYXBwcmFpc2VzIGFsbCBmaWxlcwo+ICsg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgb3duZWQgYnkgdWlkPTAuCj4gKwo+IMKg IMKgIMKgIMKgaW1hX2F1ZGl0PSDCoCDCoCDCoFtJTUFdCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqBGb3JtYXQ6IHsgIjAiIHwgIjEiIH0KPiDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoDAgLS0gaW50ZWdyaXR5IGF1ZGl0aW5nIG1lc3NhZ2VzLiAoRGVmYXVs dCkKPiBkaWZmIC0tZ2l0IGEvc2VjdXJpdHkvaW50ZWdyaXR5L2ltYS9pbWFfYXBwcmFpc2UuYyBi L3NlY3VyaXR5L2ludGVncml0eS9pbWEvaW1hX2FwcHJhaXNlLmMKPiBpbmRleCA0ODY1ZjYxLi42 ODFjYjZlIDEwMDY0NAo+IC0tLSBhL3NlY3VyaXR5L2ludGVncml0eS9pbWEvaW1hX2FwcHJhaXNl LmMKPiArKysgYi9zZWN1cml0eS9pbnRlZ3JpdHkvaW1hL2ltYV9hcHByYWlzZS5jCj4gQEAgLTM2 LDcgKzM2LDEwIEBAIF9fc2V0dXAoImltYV9hcHByYWlzZT0iLCBkZWZhdWx0X2FwcHJhaXNlX3Nl dHVwKTsKPiDCoCovCj4gwqBpbnQgaW1hX211c3RfYXBwcmFpc2Uoc3RydWN0IGlub2RlICppbm9k ZSwgZW51bSBpbWFfaG9va3MgZnVuYywgaW50IG1hc2spCj4gwqB7Cj4gLSDCoCDCoCDCoCByZXR1 cm4gMDsKPiArIMKgIMKgIMKgIGlmICghaW1hX2FwcHJhaXNlKQo+ICsgwqAgwqAgwqAgwqAgwqAg wqAgwqAgcmV0dXJuIDA7Cj4gKwo+ICsgwqAgwqAgwqAgcmV0dXJuIGltYV9tYXRjaF9wb2xpY3ko aW5vZGUsIGZ1bmMsIG1hc2ssIElNQV9BUFBSQUlTRSk7Cj4gwqB9Cj4KPiDCoHN0YXRpYyB2b2lk IGltYV9maXhfeGF0dHIoc3RydWN0IGRlbnRyeSAqZGVudHJ5LAo+IGRpZmYgLS1naXQgYS9zZWN1 cml0eS9pbnRlZ3JpdHkvaW1hL2ltYV9wb2xpY3kuYyBiL3NlY3VyaXR5L2ludGVncml0eS9pbWEv aW1hX3BvbGljeS5jCj4gaW5kZXggOGVlMzAxYy4uMjM4YWEyYiAxMDA2NDQKPiAtLS0gYS9zZWN1 cml0eS9pbnRlZ3JpdHkvaW1hL2ltYV9wb2xpY3kuYwo+ICsrKyBiL3NlY3VyaXR5L2ludGVncml0 eS9pbWEvaW1hX3BvbGljeS5jCj4gQEAgLTI0LDYgKzI0LDcgQEAKPiDCoCNkZWZpbmUgSU1BX01B U0sgwqAgwqAgwqAgMHgwMDAyCj4gwqAjZGVmaW5lIElNQV9GU01BR0lDIMKgIMKgMHgwMDA0Cj4g wqAjZGVmaW5lIElNQV9VSUQgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAweDAwMDgKPiArI2RlZmlu ZSBJTUFfRk9XTkVSIMKgIMKgIDB4MDAxMAo+Cj4gwqAjZGVmaW5lIFVOS05PV04gwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAwCj4gwqAjZGVmaW5lIE1FQVNVUkUgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAxIMKgIMKgIMKgIC8qIHNhbWUgYXMgSU1BX01FQVNV UkUgKi8KPiBAQCAtMzgsNyArMzksNyBAQCBlbnVtIGxzbV9ydWxlX3R5cGVzIHsgTFNNX09CSl9V U0VSLCBMU01fT0JKX1JPTEUsIExTTV9PQkpfVFlQRSwKPiDCoCDCoCDCoCDCoExTTV9TVUJKX1VT RVIsIExTTV9TVUJKX1JPTEUsIExTTV9TVUJKX1RZUEUKPiDCoH07Cj4KPiAtc3RydWN0IGltYV9t ZWFzdXJlX3J1bGVfZW50cnkgewo+ICtzdHJ1Y3QgaW1hX3J1bGVfZW50cnkgewo+IMKgIMKgIMKg IMKgc3RydWN0IGxpc3RfaGVhZCBsaXN0Owo+IMKgIMKgIMKgIMKgaW50IGFjdGlvbjsKPiDCoCDC oCDCoCDCoHVuc2lnbmVkIGludCBmbGFnczsKPiBAQCAtNDYsNiArNDcsNyBAQCBzdHJ1Y3QgaW1h X21lYXN1cmVfcnVsZV9lbnRyeSB7Cj4gwqAgwqAgwqAgwqBpbnQgbWFzazsKPiDCoCDCoCDCoCDC oHVuc2lnbmVkIGxvbmcgZnNtYWdpYzsKPiDCoCDCoCDCoCDCoHVpZF90IHVpZDsKPiArIMKgIMKg IMKgIHVpZF90IGZvd25lcjsKPiDCoCDCoCDCoCDCoHN0cnVjdCB7Cj4gwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqB2b2lkICpydWxlOyDCoCDCoCAvKiBMU00gZmlsZSBtZXRhZGF0YSBzcGVjaWZpYyAq Lwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaW50IHR5cGU7IMKgIMKgIMKgIC8qIGF1ZGl0IHR5 cGUgKi8KPiBAQCAtNTQsNyArNTYsNyBAQCBzdHJ1Y3QgaW1hX21lYXN1cmVfcnVsZV9lbnRyeSB7 Cj4KPiDCoC8qCj4gwqAqIFdpdGhvdXQgTFNNIHNwZWNpZmljIGtub3dsZWRnZSwgdGhlIGRlZmF1 bHQgcG9saWN5IGNhbiBvbmx5IGJlCj4gLSAqIHdyaXR0ZW4gaW4gdGVybXMgb2YgLmFjdGlvbiwg LmZ1bmMsIC5tYXNrLCAuZnNtYWdpYywgYW5kIC51aWQKPiArICogd3JpdHRlbiBpbiB0ZXJtcyBv ZiAuYWN0aW9uLCAuZnVuYywgLm1hc2ssIC5mc21hZ2ljLCAudWlkLCBhbmQgLmZvd25lcgo+IMKg Ki8KPgo+IMKgLyoKPiBAQCAtNjMsNyArNjUsNyBAQCBzdHJ1Y3QgaW1hX21lYXN1cmVfcnVsZV9l bnRyeSB7Cj4gwqAqIG5vcm1hbCB1c2VycyBjYW4gZWFzaWx5IHJ1biB0aGUgbWFjaGluZSBvdXQg b2YgbWVtb3J5IHNpbXBseSBidWlsZGluZwo+IMKgKiBhbmQgcnVubmluZyBleGVjdXRhYmxlcy4K PiDCoCovCj4gLXN0YXRpYyBzdHJ1Y3QgaW1hX21lYXN1cmVfcnVsZV9lbnRyeSBkZWZhdWx0X3J1 bGVzW10gPSB7Cj4gK3N0YXRpYyBzdHJ1Y3QgaW1hX3J1bGVfZW50cnkgZGVmYXVsdF9ydWxlc1td ID0gewo+IMKgIMKgIMKgIMKgey5hY3Rpb24gPSBET05UX01FQVNVUkUsLmZzbWFnaWMgPSBQUk9D X1NVUEVSX01BR0lDLC5mbGFncyA9IElNQV9GU01BR0lDfSwKPiDCoCDCoCDCoCDCoHsuYWN0aW9u ID0gRE9OVF9NRUFTVVJFLC5mc21hZ2ljID0gU1lTRlNfTUFHSUMsLmZsYWdzID0gSU1BX0ZTTUFH SUN9LAo+IMKgIMKgIMKgIMKgey5hY3Rpb24gPSBET05UX01FQVNVUkUsLmZzbWFnaWMgPSBERUJV R0ZTX01BR0lDLC5mbGFncyA9IElNQV9GU01BR0lDfSwKPiBAQCAtNzksMTkgKzgxLDM5IEBAIHN0 YXRpYyBzdHJ1Y3QgaW1hX21lYXN1cmVfcnVsZV9lbnRyeSBkZWZhdWx0X3J1bGVzW10gPSB7Cj4g wqAgwqAgwqAgwqAgLmZsYWdzID0gSU1BX0ZVTkMgfCBJTUFfTUFTSyB8IElNQV9VSUR9LAo+IMKg fTsKPgo+IC1zdGF0aWMgTElTVF9IRUFEKG1lYXN1cmVfZGVmYXVsdF9ydWxlcyk7Cj4gLXN0YXRp YyBMSVNUX0hFQUQobWVhc3VyZV9wb2xpY3lfcnVsZXMpOwo+IC1zdGF0aWMgc3RydWN0IGxpc3Rf aGVhZCAqaW1hX21lYXN1cmU7Cj4gK3N0YXRpYyBzdHJ1Y3QgaW1hX3J1bGVfZW50cnkgZGVmYXVs dF9hcHByYWlzZV9ydWxlc1tdID0gewo+ICsgwqAgwqAgwqAgey5hY3Rpb24gPSBET05UX0FQUFJB SVNFLC5mc21hZ2ljID0gUFJPQ19TVVBFUl9NQUdJQywuZmxhZ3MgPSBJTUFfRlNNQUdJQ30sCj4g KyDCoCDCoCDCoCB7LmFjdGlvbiA9IERPTlRfQVBQUkFJU0UsLmZzbWFnaWMgPSBTWVNGU19NQUdJ QywuZmxhZ3MgPSBJTUFfRlNNQUdJQ30sCj4gKyDCoCDCoCDCoCB7LmFjdGlvbiA9IERPTlRfQVBQ UkFJU0UsLmZzbWFnaWMgPSBERUJVR0ZTX01BR0lDLC5mbGFncyA9IElNQV9GU01BR0lDfSwKPiAr IMKgIMKgIMKgIHsuYWN0aW9uID0gRE9OVF9BUFBSQUlTRSwuZnNtYWdpYyA9IFRNUEZTX01BR0lD LC5mbGFncyA9IElNQV9GU01BR0lDfSwKPiArIMKgIMKgIMKgIHsuYWN0aW9uID0gRE9OVF9BUFBS QUlTRSwuZnNtYWdpYyA9IFJBTUZTX01BR0lDLC5mbGFncyA9IElNQV9GU01BR0lDfSwKPiArIMKg IMKgIMKgIHsuYWN0aW9uID0gRE9OVF9BUFBSQUlTRSwuZnNtYWdpYyA9IFNFQ1VSSVRZRlNfTUFH SUMsLmZsYWdzID0gSU1BX0ZTTUFHSUN9LAo+ICsgwqAgwqAgwqAgey5hY3Rpb24gPSBET05UX0FQ UFJBSVNFLC5mc21hZ2ljID0gU0VMSU5VWF9NQUdJQywuZmxhZ3MgPSBJTUFfRlNNQUdJQ30sCj4g KyDCoCDCoCDCoCB7LmFjdGlvbiA9IERPTlRfQVBQUkFJU0UsLmZzbWFnaWMgPSBDR1JPVVBfU1VQ RVJfTUFHSUMsLmZsYWdzID0gSU1BX0ZTTUFHSUN9LAo+ICsgwqAgwqAgwqAgey5hY3Rpb24gPSBB UFBSQUlTRSwuZm93bmVyID0gMCwuZmxhZ3MgPSBJTUFfRk9XTkVSfSwKPiArfTsKPiArCj4gK3N0 YXRpYyBMSVNUX0hFQUQoaW1hX2RlZmF1bHRfcnVsZXMpOwo+ICtzdGF0aWMgTElTVF9IRUFEKGlt YV9wb2xpY3lfcnVsZXMpOwo+ICtzdGF0aWMgc3RydWN0IGxpc3RfaGVhZCAqaW1hX3J1bGVzOwo+ Cj4gLXN0YXRpYyBERUZJTkVfTVVURVgoaW1hX21lYXN1cmVfbXV0ZXgpOwo+ICtzdGF0aWMgREVG SU5FX01VVEVYKGltYV9ydWxlc19tdXRleCk7Cj4KPiDCoHN0YXRpYyBib29sIGltYV91c2VfdGNi IF9faW5pdGRhdGE7Cj4gLXN0YXRpYyBpbnQgX19pbml0IGRlZmF1bHRfcG9saWN5X3NldHVwKGNo YXIgKnN0cikKPiArc3RhdGljIGludCBfX2luaXQgZGVmYXVsdF9tZWFzdXJlX3BvbGljeV9zZXR1 cChjaGFyICpzdHIpCj4gwqB7Cj4gwqAgwqAgwqAgwqBpbWFfdXNlX3RjYiA9IDE7Cj4gwqAgwqAg wqAgwqByZXR1cm4gMTsKPiDCoH0KPiAtX19zZXR1cCgiaW1hX3RjYiIsIGRlZmF1bHRfcG9saWN5 X3NldHVwKTsKPiArX19zZXR1cCgiaW1hX3RjYiIsIGRlZmF1bHRfbWVhc3VyZV9wb2xpY3lfc2V0 dXApOwo+ICsKPiArc3RhdGljIGJvb2wgaW1hX3VzZV9hcHByYWlzZV90Y2IgX19pbml0ZGF0YTsK PiArc3RhdGljIGludCBfX2luaXQgZGVmYXVsdF9hcHByYWlzZV9wb2xpY3lfc2V0dXAoY2hhciAq c3RyKQo+ICt7Cj4gKyDCoCDCoCDCoCBpbWFfdXNlX2FwcHJhaXNlX3RjYiA9IDE7Cj4gKyDCoCDC oCDCoCByZXR1cm4gMTsKPiArfQo+ICtfX3NldHVwKCJpbWFfYXBwcmFpc2VfdGNiIiwgZGVmYXVs dF9hcHByYWlzZV9wb2xpY3lfc2V0dXApOwo+Cj4gwqAvKioKPiDCoCogaW1hX21hdGNoX3J1bGVz IC0gZGV0ZXJtaW5lIHdoZXRoZXIgYW4gaW5vZGUgbWF0Y2hlcyB0aGUgbWVhc3VyZSBydWxlLgo+ IEBAIC0xMDIsNyArMTI0LDcgQEAgX19zZXR1cCgiaW1hX3RjYiIsIGRlZmF1bHRfcG9saWN5X3Nl dHVwKTsKPiDCoCoKPiDCoCogUmV0dXJucyB0cnVlIG9uIHJ1bGUgbWF0Y2gsIGZhbHNlIG9uIGZh aWx1cmUuCj4gwqAqLwo+IC1zdGF0aWMgYm9vbCBpbWFfbWF0Y2hfcnVsZXMoc3RydWN0IGltYV9t ZWFzdXJlX3J1bGVfZW50cnkgKnJ1bGUsCj4gK3N0YXRpYyBib29sIGltYV9tYXRjaF9ydWxlcyhz dHJ1Y3QgaW1hX3J1bGVfZW50cnkgKnJ1bGUsCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqBzdHJ1Y3QgaW5vZGUgKmlub2RlLCBlbnVtIGltYV9ob29rcyBmdW5jLCBp bnQgbWFzaykKPiDCoHsKPiDCoCDCoCDCoCDCoHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrID0gY3Vy cmVudDsKPiBAQCAtMTE4LDYgKzE0MCw4IEBAIHN0YXRpYyBib29sIGltYV9tYXRjaF9ydWxlcyhz dHJ1Y3QgaW1hX21lYXN1cmVfcnVsZV9lbnRyeSAqcnVsZSwKPiDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoHJldHVybiBmYWxzZTsKPiDCoCDCoCDCoCDCoGlmICgocnVsZS0+ZmxhZ3MgJiBJTUFfVUlE KSAmJiBydWxlLT51aWQgIT0gY3JlZC0+dWlkKQo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgcmV0 dXJuIGZhbHNlOwo+ICsgwqAgwqAgwqAgaWYgKChydWxlLT5mbGFncyAmIElNQV9GT1dORVIpICYm IHJ1bGUtPmZvd25lciAhPSBpbm9kZS0+aV91aWQpCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBy ZXR1cm4gZmFsc2U7Cj4gwqAgwqAgwqAgwqBmb3IgKGkgPSAwOyBpIDwgTUFYX0xTTV9SVUxFUzsg aSsrKSB7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBpbnQgcmMgPSAwOwo+IMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgdTMyIG9zaWQsIHNpZDsKPiBAQCAtMTcwLDEwICsxOTQsMTAgQEAgc3RhdGlj IGJvb2wgaW1hX21hdGNoX3J1bGVzKHN0cnVjdCBpbWFfbWVhc3VyZV9ydWxlX2VudHJ5ICpydWxl LAo+IMKgaW50IGltYV9tYXRjaF9wb2xpY3koc3RydWN0IGlub2RlICppbm9kZSwgZW51bSBpbWFf aG9va3MgZnVuYywgaW50IG1hc2ssCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaW50 IGZsYWdzKQo+IMKgewo+IC0gwqAgwqAgwqAgc3RydWN0IGltYV9tZWFzdXJlX3J1bGVfZW50cnkg KmVudHJ5Owo+ICsgwqAgwqAgwqAgc3RydWN0IGltYV9ydWxlX2VudHJ5ICplbnRyeTsKPiDCoCDC oCDCoCDCoGludCBhY3Rpb24gPSAwLCBhY3RtYXNrID0gZmxhZ3MgfCAoZmxhZ3MgPDwgMSk7Cj4K PiAtIMKgIMKgIMKgIGxpc3RfZm9yX2VhY2hfZW50cnkoZW50cnksIGltYV9tZWFzdXJlLCBsaXN0 KSB7Cj4gKyDCoCDCoCDCoCBsaXN0X2Zvcl9lYWNoX2VudHJ5KGVudHJ5LCBpbWFfcnVsZXMsIGxp c3QpIHsKPgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKCEoZW50cnktPmFjdGlvbiAmIGFj dG1hc2spKQo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgY29udGludWU7Cj4g QEAgLTE5NCwyMiArMjE4LDMxIEBAIGludCBpbWFfbWF0Y2hfcG9saWN5KHN0cnVjdCBpbm9kZSAq aW5vZGUsIGVudW0gaW1hX2hvb2tzIGZ1bmMsIGludCBtYXNrLAo+IMKgLyoqCj4gwqAqIGltYV9p bml0X3BvbGljeSAtIGluaXRpYWxpemUgdGhlIGRlZmF1bHQgbWVhc3VyZSBydWxlcy4KPiDCoCoK PiAtICogaW1hX21lYXN1cmUgcG9pbnRzIHRvIGVpdGhlciB0aGUgbWVhc3VyZV9kZWZhdWx0X3J1 bGVzIG9yIHRoZQo+IC0gKiB0aGUgbmV3IG1lYXN1cmVfcG9saWN5X3J1bGVzLgo+ICsgKiBpbWFf cnVsZXMgcG9pbnRzIHRvIGVpdGhlciB0aGUgaW1hX2RlZmF1bHRfcnVsZXMgb3IgdGhlCj4gKyAq IHRoZSBuZXcgaW1hX3BvbGljeV9ydWxlcy4KPiDCoCovCj4gwqB2b2lkIF9faW5pdCBpbWFfaW5p dF9wb2xpY3kodm9pZCkKPiDCoHsKPiAtIMKgIMKgIMKgIGludCBpLCBlbnRyaWVzOwo+ICsgwqAg wqAgwqAgaW50IGksIG1lYXN1cmVfZW50cmllcywgYXBwcmFpc2VfZW50cmllczsKPgo+IMKgIMKg IMKgIMKgLyogaWYgIWltYV91c2VfdGNiIHNldCBlbnRyaWVzID0gMCBzbyB3ZSBsb2FkIE5PIGRl ZmF1bHQgcnVsZXMgKi8KPiAtIMKgIMKgIMKgIGlmIChpbWFfdXNlX3RjYikKPiAtIMKgIMKgIMKg IMKgIMKgIMKgIMKgIGVudHJpZXMgPSBBUlJBWV9TSVpFKGRlZmF1bHRfcnVsZXMpOwo+IC0gwqAg wqAgwqAgZWxzZQo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgZW50cmllcyA9IDA7Cj4gLQo+IC0g wqAgwqAgwqAgZm9yIChpID0gMDsgaSA8IGVudHJpZXM7IGkrKykKPiAtIMKgIMKgIMKgIMKgIMKg IMKgIMKgIGxpc3RfYWRkX3RhaWwoJmRlZmF1bHRfcnVsZXNbaV0ubGlzdCwgJm1lYXN1cmVfZGVm YXVsdF9ydWxlcyk7Cj4gLSDCoCDCoCDCoCBpbWFfbWVhc3VyZSA9ICZtZWFzdXJlX2RlZmF1bHRf cnVsZXM7Cj4gKyDCoCDCoCDCoCBtZWFzdXJlX2VudHJpZXMgPSBpbWFfdXNlX3RjYiA/IEFSUkFZ X1NJWkUoZGVmYXVsdF9ydWxlcykgOiAwOwo+ICsgwqAgwqAgwqAgYXBwcmFpc2VfZW50cmllcyA9 IGltYV91c2VfYXBwcmFpc2VfdGNiID8KPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgQVJSQVlfU0laRShkZWZhdWx0X2FwcHJhaXNlX3J1bGVzKSA6IDA7Cj4gKwo+ICsgwqAg wqAgwqAgZm9yIChpID0gMDsgaSA8IG1lYXN1cmVfZW50cmllcyArIGFwcHJhaXNlX2VudHJpZXM7 IGkrKykgewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKGkgPCBtZWFzdXJlX2VudHJpZXMp Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBsaXN0X2FkZF90YWlsKCZkZWZh dWx0X3J1bGVzW2ldLmxpc3QsCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCAmaW1hX2RlZmF1bHRfcnVsZXMpOwo+ICsgwqAgwqAgwqAgwqAg wqAgwqAgwqAgZWxzZSB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpbnQg aiA9IGkgLSBtZWFzdXJlX2VudHJpZXM7Cj4gKwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgbGlzdF9hZGRfdGFpbCgmZGVmYXVsdF9hcHByYWlzZV9ydWxlc1tqXS5saXN0LAo+ ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg JmltYV9kZWZhdWx0X3J1bGVzKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0KPiArIMKgIMKg IMKgIH0KPiArCj4gKyDCoCDCoCDCoCBpbWFfcnVsZXMgPSAmaW1hX2RlZmF1bHRfcnVsZXM7Cj4g wqB9Cj4KPiDCoC8qKgo+IEBAIC0yMjYsOCArMjU5LDggQEAgdm9pZCBpbWFfdXBkYXRlX3BvbGlj eSh2b2lkKQo+IMKgIMKgIMKgIMKgaW50IHJlc3VsdCA9IDE7Cj4gwqAgwqAgwqAgwqBpbnQgYXVk aXRfaW5mbyA9IDA7Cj4KPiAtIMKgIMKgIMKgIGlmIChpbWFfbWVhc3VyZSA9PSAmbWVhc3VyZV9k ZWZhdWx0X3J1bGVzKSB7Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpbWFfbWVhc3VyZSA9ICZt ZWFzdXJlX3BvbGljeV9ydWxlczsKPiArIMKgIMKgIMKgIGlmIChpbWFfcnVsZXMgPT0gJmltYV9k ZWZhdWx0X3J1bGVzKSB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpbWFfcnVsZXMgPSAmaW1h X3BvbGljeV9ydWxlczsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGNhdXNlID0gImNvbXBsZXRl IjsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHJlc3VsdCA9IDA7Cj4gwqAgwqAgwqAgwqB9Cj4g QEAgLTIzOCwxNCArMjcxLDE3IEBAIHZvaWQgaW1hX3VwZGF0ZV9wb2xpY3kodm9pZCkKPiDCoGVu dW0gewo+IMKgIMKgIMKgIMKgT3B0X2VyciA9IC0xLAo+IMKgIMKgIMKgIMKgT3B0X21lYXN1cmUg PSAxLCBPcHRfZG9udF9tZWFzdXJlLAo+ICsgwqAgwqAgwqAgT3B0X2FwcHJhaXNlLCBPcHRfZG9u dF9hcHByYWlzZSwKPiDCoCDCoCDCoCDCoE9wdF9vYmpfdXNlciwgT3B0X29ial9yb2xlLCBPcHRf b2JqX3R5cGUsCj4gwqAgwqAgwqAgwqBPcHRfc3Vial91c2VyLCBPcHRfc3Vial9yb2xlLCBPcHRf c3Vial90eXBlLAo+IC0gwqAgwqAgwqAgT3B0X2Z1bmMsIE9wdF9tYXNrLCBPcHRfZnNtYWdpYywg T3B0X3VpZAo+ICsgwqAgwqAgwqAgT3B0X2Z1bmMsIE9wdF9tYXNrLCBPcHRfZnNtYWdpYywgT3B0 X3VpZCwgT3B0X2Zvd25lcgo+IMKgfTsKPgo+IMKgc3RhdGljIG1hdGNoX3RhYmxlX3QgcG9saWN5 X3Rva2VucyA9IHsKPiDCoCDCoCDCoCDCoHtPcHRfbWVhc3VyZSwgIm1lYXN1cmUifSwKPiDCoCDC oCDCoCDCoHtPcHRfZG9udF9tZWFzdXJlLCAiZG9udF9tZWFzdXJlIn0sCj4gKyDCoCDCoCDCoCB7 T3B0X2FwcHJhaXNlLCAiYXBwcmFpc2UifSwKPiArIMKgIMKgIMKgIHtPcHRfZG9udF9hcHByYWlz ZSwgImRvbnRfYXBwcmFpc2UifSwKPiDCoCDCoCDCoCDCoHtPcHRfb2JqX3VzZXIsICJvYmpfdXNl cj0lcyJ9LAo+IMKgIMKgIMKgIMKge09wdF9vYmpfcm9sZSwgIm9ial9yb2xlPSVzIn0sCj4gwqAg wqAgwqAgwqB7T3B0X29ial90eXBlLCAib2JqX3R5cGU9JXMifSwKPiBAQCAtMjU2LDEwICsyOTIs MTEgQEAgc3RhdGljIG1hdGNoX3RhYmxlX3QgcG9saWN5X3Rva2VucyA9IHsKPiDCoCDCoCDCoCDC oHtPcHRfbWFzaywgIm1hc2s9JXMifSwKPiDCoCDCoCDCoCDCoHtPcHRfZnNtYWdpYywgImZzbWFn aWM9JXMifSwKPiDCoCDCoCDCoCDCoHtPcHRfdWlkLCAidWlkPSVzIn0sCj4gKyDCoCDCoCDCoCB7 T3B0X2Zvd25lciwgImZvd25lcj0lcyJ9LAo+IMKgIMKgIMKgIMKge09wdF9lcnIsIE5VTEx9Cj4g wqB9Owo+Cj4gLXN0YXRpYyBpbnQgaW1hX2xzbV9ydWxlX2luaXQoc3RydWN0IGltYV9tZWFzdXJl X3J1bGVfZW50cnkgKmVudHJ5LAo+ICtzdGF0aWMgaW50IGltYV9sc21fcnVsZV9pbml0KHN0cnVj dCBpbWFfcnVsZV9lbnRyeSAqZW50cnksCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgY2hhciAqYXJncywgaW50IGxzbV9ydWxlLCBpbnQgYXVkaXRfdHlwZSkKPiDC oHsKPiDCoCDCoCDCoCDCoGludCByZXN1bHQ7Cj4gQEAgLTI4Myw3ICszMjAsNyBAQCBzdGF0aWMg dm9pZCBpbWFfbG9nX3N0cmluZyhzdHJ1Y3QgYXVkaXRfYnVmZmVyICphYiwgY2hhciAqa2V5LCBj aGFyICp2YWx1ZSkKPiDCoCDCoCDCoCDCoGF1ZGl0X2xvZ19mb3JtYXQoYWIsICIgIik7Cj4gwqB9 Cj4KPiAtc3RhdGljIGludCBpbWFfcGFyc2VfcnVsZShjaGFyICpydWxlLCBzdHJ1Y3QgaW1hX21l YXN1cmVfcnVsZV9lbnRyeSAqZW50cnkpCj4gK3N0YXRpYyBpbnQgaW1hX3BhcnNlX3J1bGUoY2hh ciAqcnVsZSwgc3RydWN0IGltYV9ydWxlX2VudHJ5ICplbnRyeSkKPiDCoHsKPiDCoCDCoCDCoCDC oHN0cnVjdCBhdWRpdF9idWZmZXIgKmFiOwo+IMKgIMKgIMKgIMKgY2hhciAqcDsKPiBAQCAtMjky LDYgKzMyOSw3IEBAIHN0YXRpYyBpbnQgaW1hX3BhcnNlX3J1bGUoY2hhciAqcnVsZSwgc3RydWN0 IGltYV9tZWFzdXJlX3J1bGVfZW50cnkgKmVudHJ5KQo+IMKgIMKgIMKgIMKgYWIgPSBhdWRpdF9s b2dfc3RhcnQoTlVMTCwgR0ZQX0tFUk5FTCwgQVVESVRfSU5URUdSSVRZX1JVTEUpOwo+Cj4gwqAg wqAgwqAgwqBlbnRyeS0+dWlkID0gLTE7Cj4gKyDCoCDCoCDCoCBlbnRyeS0+Zm93bmVyID0gLTE7 Cj4gwqAgwqAgwqAgwqBlbnRyeS0+YWN0aW9uID0gVU5LTk9XTjsKPiDCoCDCoCDCoCDCoHdoaWxl ICgocCA9IHN0cnNlcCgmcnVsZSwgIiBcdCIpKSAhPSBOVUxMKSB7Cj4gwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqBzdWJzdHJpbmdfdCBhcmdzW01BWF9PUFRfQVJHU107Cj4gQEAgLTMyMCwxMSArMzU4 LDI3IEBAIHN0YXRpYyBpbnQgaW1hX3BhcnNlX3J1bGUoY2hhciAqcnVsZSwgc3RydWN0IGltYV9t ZWFzdXJlX3J1bGVfZW50cnkgKmVudHJ5KQo+Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqBlbnRyeS0+YWN0aW9uID0gRE9OVF9NRUFTVVJFOwo+IMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgYnJlYWs7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjYXNlIE9w dF9hcHByYWlzZToKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGltYV9sb2df c3RyaW5nKGFiLCAiYWN0aW9uIiwgImFwcHJhaXNlIik7Cj4gKwo+ICsgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgaWYgKGVudHJ5LT5hY3Rpb24gIT0gVU5LTk9XTikKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJlc3VsdCA9IC1FSU5WQUw7 Cj4gKwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZW50cnktPmFjdGlvbiA9 IEFQUFJBSVNFOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYnJlYWs7Cj4g KyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjYXNlIE9wdF9kb250X2FwcHJhaXNlOgo+ICsgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaW1hX2xvZ19zdHJpbmcoYWIsICJhY3Rpb24iLCAi ZG9udF9hcHByYWlzZSIpOwo+ICsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IGlmIChlbnRyeS0+YWN0aW9uICE9IFVOS05PV04pCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXN1bHQgPSAtRUlOVkFMOwo+ICsKPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGVudHJ5LT5hY3Rpb24gPSBET05UX0FQUFJBSVNFOwo+ ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYnJlYWs7Cj4gwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqBjYXNlIE9wdF9mdW5jOgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgaW1hX2xvZ19zdHJpbmcoYWIsICJmdW5jIiwgYXJnc1swXS5mcm9tKTsKPgo+IMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKGVudHJ5LT5mdW5jKQo+IC0gwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmVzdWx0IMKgPSAtRUlOVkFM Owo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmVzdWx0 ID0gLUVJTlZBTDsKPgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKHN0 cmNtcChhcmdzWzBdLmZyb20sICJGSUxFX0NIRUNLIikgPT0gMCkKPiDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGVudHJ5LT5mdW5jID0gRklMRV9DSEVDSzsK PiBAQCAtMzg5LDYgKzQ0MywyMyBAQCBzdGF0aWMgaW50IGltYV9wYXJzZV9ydWxlKGNoYXIgKnJ1 bGUsIHN0cnVjdCBpbWFfbWVhc3VyZV9ydWxlX2VudHJ5ICplbnRyeSkKPiDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGVudHJ5LT5mbGFn cyB8PSBJTUFfVUlEOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgfQo+IMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgYnJlYWs7Cj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCBjYXNlIE9wdF9mb3duZXI6Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCBpbWFfbG9nX3N0cmluZyhhYiwgImZvd25lciIsIGFyZ3NbMF0uZnJvbSk7Cj4gKwo+ICsg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKGVudHJ5LT5mb3duZXIgIT0gLTEp IHsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJlc3Vs dCA9IC1FSU5WQUw7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCBicmVhazsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0KPiArCj4g KyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXN1bHQgPSBzdHJpY3Rfc3RydG91 bChhcmdzWzBdLmZyb20sIDEwLCAmbG51bSk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCBpZiAoIXJlc3VsdCkgewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgZW50cnktPmZvd25lciA9ICh1aWRfdCkgbG51bTsKPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChlbnRyeS0+Zm93bmVyICE9 IGxudW0pCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCByZXN1bHQgPSAtRUlOVkFMOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgZWxzZQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZW50cnktPmZsYWdzIHw9IElNQV9GT1dORVI7 Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9Cj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCBicmVhazsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGNhc2Ug T3B0X29ial91c2VyOgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaW1hX2xv Z19zdHJpbmcoYWIsICJvYmpfdXNlciIsIGFyZ3NbMF0uZnJvbSk7Cj4gwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqByZXN1bHQgPSBpbWFfbHNtX3J1bGVfaW5pdChlbnRyeSwgYXJn c1swXS5mcm9tLAo+IEBAIC00NDAsNyArNTExLDcgQEAgc3RhdGljIGludCBpbWFfcGFyc2VfcnVs ZShjaGFyICpydWxlLCBzdHJ1Y3QgaW1hX21lYXN1cmVfcnVsZV9lbnRyeSAqZW50cnkpCj4gwqB9 Cj4KPiDCoC8qKgo+IC0gKiBpbWFfcGFyc2VfYWRkX3J1bGUgLSBhZGQgYSBydWxlIHRvIG1lYXN1 cmVfcG9saWN5X3J1bGVzCj4gKyAqIGltYV9wYXJzZV9hZGRfcnVsZSAtIGFkZCBhIHJ1bGUgdG8g aW1hX3BvbGljeV9ydWxlcwo+IMKgKiBAcnVsZSAtIGltYSBtZWFzdXJlbWVudCBwb2xpY3kgcnVs ZQo+IMKgKgo+IMKgKiBVc2VzIGEgbXV0ZXggdG8gcHJvdGVjdCB0aGUgcG9saWN5IGxpc3QgZnJv bSBtdWx0aXBsZSBjb25jdXJyZW50IHdyaXRlcnMuCj4gQEAgLTQ1MCwxMiArNTIxLDEyIEBAIHNz aXplX3QgaW1hX3BhcnNlX2FkZF9ydWxlKGNoYXIgKnJ1bGUpCj4gwqB7Cj4gwqAgwqAgwqAgwqBj b25zdCBjaGFyICpvcCA9ICJ1cGRhdGVfcG9saWN5IjsKPiDCoCDCoCDCoCDCoGNoYXIgKnA7Cj4g LSDCoCDCoCDCoCBzdHJ1Y3QgaW1hX21lYXN1cmVfcnVsZV9lbnRyeSAqZW50cnk7Cj4gKyDCoCDC oCDCoCBzdHJ1Y3QgaW1hX3J1bGVfZW50cnkgKmVudHJ5Owo+IMKgIMKgIMKgIMKgc3NpemVfdCBy ZXN1bHQsIGxlbjsKPiDCoCDCoCDCoCDCoGludCBhdWRpdF9pbmZvID0gMDsKPgo+IMKgIMKgIMKg IMKgLyogUHJldmVudCBpbnN0YWxsZWQgcG9saWN5IGZyb20gY2hhbmdpbmcgKi8KPiAtIMKgIMKg IMKgIGlmIChpbWFfbWVhc3VyZSAhPSAmbWVhc3VyZV9kZWZhdWx0X3J1bGVzKSB7Cj4gKyDCoCDC oCDCoCBpZiAoaW1hX3J1bGVzICE9ICZpbWFfZGVmYXVsdF9ydWxlcykgewo+IMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgaW50ZWdyaXR5X2F1ZGl0X21zZyhBVURJVF9JTlRFR1JJVFlfU1RBVFVTLCBO VUxMLAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgTlVMTCwgb3AsICJhbHJlYWR5IGV4aXN0cyIsCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAtRUFDQ0VTLCBhdWRpdF9pbmZvKTsKPiBAQCAt NDg4LDkgKzU1OSw5IEBAIHNzaXplX3QgaW1hX3BhcnNlX2FkZF9ydWxlKGNoYXIgKnJ1bGUpCj4g wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqByZXR1cm4gcmVzdWx0Owo+IMKgIMKgIMKgIMKgfQo+Cj4g LSDCoCDCoCDCoCBtdXRleF9sb2NrKCZpbWFfbWVhc3VyZV9tdXRleCk7Cj4gLSDCoCDCoCDCoCBs aXN0X2FkZF90YWlsKCZlbnRyeS0+bGlzdCwgJm1lYXN1cmVfcG9saWN5X3J1bGVzKTsKPiAtIMKg IMKgIMKgIG11dGV4X3VubG9jaygmaW1hX21lYXN1cmVfbXV0ZXgpOwo+ICsgwqAgwqAgwqAgbXV0 ZXhfbG9jaygmaW1hX3J1bGVzX211dGV4KTsKPiArIMKgIMKgIMKgIGxpc3RfYWRkX3RhaWwoJmVu dHJ5LT5saXN0LCAmaW1hX3BvbGljeV9ydWxlcyk7Cj4gKyDCoCDCoCDCoCBtdXRleF91bmxvY2so JmltYV9ydWxlc19tdXRleCk7Cj4KPiDCoCDCoCDCoCDCoHJldHVybiBsZW47Cj4gwqB9Cj4gQEAg LTQ5OCwxMiArNTY5LDEyIEBAIHNzaXplX3QgaW1hX3BhcnNlX2FkZF9ydWxlKGNoYXIgKnJ1bGUp Cj4gwqAvKiBpbWFfZGVsZXRlX3J1bGVzIGNhbGxlZCB0byBjbGVhbnVwIGludmFsaWQgcG9saWN5 ICovCj4gwqB2b2lkIGltYV9kZWxldGVfcnVsZXModm9pZCkKPiDCoHsKPiAtIMKgIMKgIMKgIHN0 cnVjdCBpbWFfbWVhc3VyZV9ydWxlX2VudHJ5ICplbnRyeSwgKnRtcDsKPiArIMKgIMKgIMKgIHN0 cnVjdCBpbWFfcnVsZV9lbnRyeSAqZW50cnksICp0bXA7Cj4KPiAtIMKgIMKgIMKgIG11dGV4X2xv Y2soJmltYV9tZWFzdXJlX211dGV4KTsKPiAtIMKgIMKgIMKgIGxpc3RfZm9yX2VhY2hfZW50cnlf c2FmZShlbnRyeSwgdG1wLCAmbWVhc3VyZV9wb2xpY3lfcnVsZXMsIGxpc3QpIHsKPiArIMKgIMKg IMKgIG11dGV4X2xvY2soJmltYV9ydWxlc19tdXRleCk7Cj4gKyDCoCDCoCDCoCBsaXN0X2Zvcl9l YWNoX2VudHJ5X3NhZmUoZW50cnksIHRtcCwgJmltYV9wb2xpY3lfcnVsZXMsIGxpc3QpIHsKPiDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoGxpc3RfZGVsKCZlbnRyeS0+bGlzdCk7Cj4gwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqBrZnJlZShlbnRyeSk7Cj4gwqAgwqAgwqAgwqB9Cj4gLSDCoCDCoCDCoCBt dXRleF91bmxvY2soJmltYV9tZWFzdXJlX211dGV4KTsKPiArIMKgIMKgIMKgIG11dGV4X3VubG9j aygmaW1hX3J1bGVzX211dGV4KTsKPiDCoH0KPiAtLQo+IDEuNy42LjUKPgo=