From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Oliveira Nascimento Subject: [PATCH 02/02] Reworked input layer and add more keys Date: Sat, 29 Nov 2008 18:48:58 -0200 Message-ID: <200811291849.02054.dnascimento@gmail.com> Reply-To: dnascimento@gmail.com Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qy0-f11.google.com ([209.85.221.11]:45008 "EHLO mail-qy0-f11.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752416AbYK2Uup (ORCPT ); Sat, 29 Nov 2008 15:50:45 -0500 Received: by qyk4 with SMTP id 4so2047211qyk.13 for ; Sat, 29 Nov 2008 12:50:44 -0800 (PST) Content-Disposition: inline Sender: linux-acpi-owner@vger.kernel.org List-Id: linux-acpi@vger.kernel.org To: linux-acpi@vger.kernel.org, Nicolas Trangez SSBtYWRlIHNvbWUgY2hhbmdlcyBpbiB0aGUgd29yayBvZiBOaWNvbGFzIHRvIHN1cHBvcnQgbXkg YXN1cyBNNTFTbiBsYXB0b3AuClRoZSBoaWdoZXIgZXZlbnQgaW4gbXkgbGFwdG9wIGlzIDE1MyBz byBJIHRoaW5rIHRoYXQgd2lsbCBub3QgYmUgcmVhc29uYWJsZQpkZWNsYXJlIGEgMTU0IGFycmF5 IGhhcmRjb2RpbmcgZWFjaCBrZXkuIEFuZCBpZiBhbm90aGVyIHRhYmxlIGJlIG5lY2Vzc2FyeQp0 aGUgd29yayB3aWxsIG5lZWQgdG8gYmUgcmVkb25lLgoKSSBmaWxsIGEgYXJyYXkgd2l0aCBLRVlf VU5LTk9XTiBhbmQgdGhlbiBhZnRlciBJIHB1dCB0aGUgY29kZXMgdGhhdCBJIGZvdW5kCmluIG15 IGxhcHRvcC4gQSBuZXcgdGFibGUgY2FuIGJlIGFkZGVkIHdpdGggb3RoZXIgdGFibGUgY29udGFu aW5nIG9ubHkgdGhlIApkaWZmZXJlbmNlcyBmb3IgZXhhbXBsZS4KClNvbWUga2V5cyBhcmUgb3Zl cnJpZGluZyBieSBmaXJtd2FyZSBidXQgSSBsZXQgaXQgaW4gdGhlIHRhYmxlIHRvIGtub3cgd2hp Y2gKZXZlbnRzIGFyZSBnZW5lcmF0ZWQuCgpTbyB0aGlzIHBhdGNoIGNoYW5nZSB0aGUgaW1wbGVt ZW50YXRpb24gb2YgdGhlIGtleW1hcCBmb2N1c2luZyBvbmx5IGluIHRoZQprZXlzIHRoYXQgZ2Vu ZXJhdGUga25vd24gZXZlbnRzLiBBbmQgYWxzbyBtYWtlcyBpdCBlYXNpZXIgdG8gc3VwcG9ydCBt b3JlCnRoYW4gb25lIGtleW1hcCB0YWJsZS4KCkFkZCBtb3JlIGtleXMgZXZlbnRzLgotLS0KIGRy aXZlcnMvbWlzYy9hc3VzLWxhcHRvcC5jIHwgIDE4MiArKysrKysrKysrKysrKysrKysrKystLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGVzIGNoYW5nZWQsIDg5IGluc2VydGlvbnMoKyksIDkz IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy9hc3VzLWxhcHRvcC5jIGIv ZHJpdmVycy9taXNjL2FzdXMtbGFwdG9wLmMKaW5kZXggNDZkYjNiMC4uYjJjYjdkYyAxMDA2NDQK LS0tIGEvZHJpdmVycy9taXNjL2FzdXMtbGFwdG9wLmMKKysrIGIvZHJpdmVycy9taXNjL2FzdXMt bGFwdG9wLmMKQEAgLTI0LDcgKzI0LDggQEAKICAqICBodHRwOi8vc291cmNlZm9yZ2UubmV0L3By b2plY3RzL2FjcGk0YXN1cy8KICAqCiAgKiAgQ3JlZGl0czoKLSAqICBOaWNvbGFzIFRyYW5nZXog IC0gSW5pdGlhbCB3b3JrIHRvIGxldCBBQ1BJIGJ1dHRvbnMgd29yayBvdmVyIElOUFVUIGxheWVy CisgKiAgRGFuaWVsIE5hc2NpbWVudG8gLSBSZXdvcmtlZCBpbnB1dCBsYXllciBhbmQgYWRkIG1v cmUga2V5cworICogIE5pY29sYXMgVHJhbmdleiAtIEluaXRpYWwgd29yayB0byBsZXQgQUNQSSBi dXR0b25zIHdvcmsgb3ZlciBJTlBVVCBsYXllcgogICogIFBvbnR1cyBGdWNocyAgIC0gSGVscGVy IGZ1bmN0aW9ucywgY2xlYW51cAogICogIEpvaGFubiBXaWVzbmVyIC0gU21hbGwgY29tcGlsZSBm aXhlcwogICogIEpvaG4gQmVsbW9udGUgIC0gQUNQSSBjb2RlIGZvciBUb3NoaWJhIGxhcHRvcCB3 YXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LgpAQCAtMjU0LDExICsyNTUsMTkgQEAgQVNVU19MRUQo cGxlZCwgInBob25lIik7CiBBU1VTX0xFRChnbGVkLCAiZ2FtaW5nIik7CiAKIC8qIElucHV0IGxh eWVyIHZhcmlhYmxlcyAqLworLyogTWFnaWMgbnVtYmVyIHNldCAxNTQgYmVjYXVzZSAxNTMgaXMg dGhlIGhpZ2hlc3QgZXZlbnQgaW4gTTUxU24gKi8KKyNkZWZpbmUgQVNVU19IT1RLX01BUF9MRU4g ICAgICAgMTU0CisjZGVmaW5lIEFTVVNfSE9US19NQVBfU0laRSAgICAgIEFTVVNfSE9US19NQVBf TEVOKnNpemVvZih0eXBlb2YoKmhvdGtfa2V5Y29kZV9tYXApKSAKKwogc3RhdGljIHUxNiAqaG90 a19rZXljb2RlX21hcDsKLXN0YXRpYyBpbnQgaG90a19rZXljb2RlX21hcF9zaXplOwogc3RhdGlj IHN0cnVjdCBpbnB1dF9kZXYgKmFzdXNfaG90a19pbnB1dGRldjsKIHN0YXRpYyBpbnQgYXN1c19o b3RrX2lucHV0ZGV2X3JlZ2lzdGVyZWQ7CiAKK3N0cnVjdCBrZXlfZXZlbnQgeworCXUxNiBrZXk7 CisJdTggIGV2ZW50OworfTsKKwogLyoKICAqIFRoaXMgZnVuY3Rpb24gZXZhbHVhdGVzIGFuIEFD UEkgbWV0aG9kLCBnaXZlbiBhbiBpbnQgYXMgcGFyYW1ldGVyLCB0aGUKICAqIG1ldGhvZCBpcyBz ZWFyY2hlZCB3aXRoaW4gdGhlIHNjb3BlIG9mIHRoZSBoYW5kbGUsIGNhbiBiZSBOVUxMLiBUaGUg b3V0cHV0CkBAIC03NDksOSArNzU4LDggQEAgc3RhdGljIHZvaWQgYXN1c19ob3RrX25vdGlmeShh Y3BpX2hhbmRsZSBoYW5kbGUsIHUzMiBldmVudCwgdm9pZCAqZGF0YSkKIAkJbGNkX2JsYW5rKEZC X0JMQU5LX1BPV0VSRE9XTik7CiAJfQogCi0JaWYgKGV2ZW50IDwgaG90a19rZXljb2RlX21hcF9z aXplKSB7CisJaWYgKGV2ZW50IDwgQVNVU19IT1RLX01BUF9MRU4pIHsKIAkJa2V5Y29kZSA9IGhv dGtfa2V5Y29kZV9tYXBbZXZlbnRdOwotCQlwcmludGsoIktleWNvZGU6ICUwNHggKCVkKVxuIiwg a2V5Y29kZSwga2V5Y29kZSk7CiAJfSBlbHNlIHsKIAkJa2V5Y29kZSA9IEtFWV9VTktOT1dOOwog CQlwcmludGsoIlNjYW5jb2RlICVkIG91dCBvZiBrZXltYXBcbiIsIGV2ZW50KTsKQEAgLTExNDUs MTA0ICsxMTUzLDk1IEBAIHN0YXRpYyB2b2lkIF9fZXhpdCBhc3VzX2xhcHRvcF9leGl0KHZvaWQp CiAJcGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoJmFzdXNwZl9kcml2ZXIpOwogfQogCi1zdGF0 aWMgaW50IGFzdXNfaG90a19pbml0KHZvaWQpCitzdGF0aWMgaW50IHNldF9rZXljb2RlX21hcCh2 b2lkKQogewotCWludCByZXQsIGk7CisJaW50IGk7CiAKLQlzdGF0aWMgdTE2IGtleWNvZGVfbWFw XzFbXSBfX2luaXRkYXRhID0gewotCQlLRVlfVU5LTk9XTiwgLyogMCAqLwotCQlLRVlfVU5LTk9X TiwgLyogMSAqLwotCQlLRVlfVU5LTk9XTiwgLyogMiAqLwotCQlLRVlfVU5LTk9XTiwgLyogMyAq LwotCQlLRVlfVU5LTk9XTiwgLyogNCAqLwotCQlLRVlfVU5LTk9XTiwgLyogNSAqLwotCQlLRVlf VU5LTk9XTiwgLyogNiAqLwotCQlLRVlfVU5LTk9XTiwgLyogNyAqLwotCQlLRVlfVU5LTk9XTiwg LyogOCAqLwotCQlLRVlfVU5LTk9XTiwgLyogOSAqLwotCQlLRVlfVU5LTk9XTiwgLyogMTAgKi8K LQkJS0VZX1VOS05PV04sIC8qIDExICovCi0JCUtFWV9VTktOT1dOLCAvKiAxMiAqLwotCQlLRVlf VU5LTk9XTiwgLyogMTMgKi8KLQkJS0VZX1VOS05PV04sIC8qIDE0ICovCi0JCUtFWV9VTktOT1dO LCAvKiAxNSAqLwotCQlLRVlfVU5LTk9XTiwgLyogMTYgKi8KLQkJS0VZX1VOS05PV04sIC8qIDE3 ICovCi0JCUtFWV9VTktOT1dOLCAvKiAxOCAqLwotCQlLRVlfVU5LTk9XTiwgLyogMTkgKi8KLQkJ S0VZX1VOS05PV04sIC8qIDIwICovCi0JCUtFWV9VTktOT1dOLCAvKiAyMSAqLwotCQlLRVlfVU5L Tk9XTiwgLyogMjIgKi8KLQkJS0VZX1VOS05PV04sIC8qIDIzICovCi0JCUtFWV9VTktOT1dOLCAv KiAyNCAqLwotCQlLRVlfVU5LTk9XTiwgLyogMjUgKi8KLQkJS0VZX1VOS05PV04sIC8qIDI2ICov Ci0JCUtFWV9VTktOT1dOLCAvKiAyNyAqLwotCQlLRVlfVU5LTk9XTiwgLyogMjggKi8KLQkJS0VZ X1VOS05PV04sIC8qIDI5ICovCi0JCUtFWV9VTktOT1dOLCAvKiAzMCAqLwotCQlLRVlfVU5LTk9X TiwgLyogMzEgKi8KLQkJS0VZX1VOS05PV04sIC8qIDMyICovCi0JCUtFWV9VTktOT1dOLCAvKiAz MyAqLwotCQlLRVlfVU5LTk9XTiwgLyogMzQgKi8KLQkJS0VZX1VOS05PV04sIC8qIDM1ICovCi0J CUtFWV9VTktOT1dOLCAvKiAzNiAqLwotCQlLRVlfVU5LTk9XTiwgLyogMzcgKi8KLQkJS0VZX1VO S05PV04sIC8qIDM4ICovCi0JCUtFWV9VTktOT1dOLCAvKiAzOSAqLwotCQlLRVlfVU5LTk9XTiwg LyogNDAgKi8KLQkJS0VZX1VOS05PV04sIC8qIDQxICovCi0JCUtFWV9VTktOT1dOLCAvKiA0MiAq LwotCQlLRVlfVU5LTk9XTiwgLyogNDMgKi8KLQkJS0VZX1VOS05PV04sIC8qIDQ0ICovCi0JCUtF WV9VTktOT1dOLCAvKiA0NSAqLwotCQlLRVlfVU5LTk9XTiwgLyogNDYgKi8KLQkJS0VZX1VOS05P V04sIC8qIDQ3ICovCi0JCUtFWV9VTktOT1dOLCAvKiA0OCAqLwotCQlLRVlfVU5LTk9XTiwgLyog NDkgKi8KLQkJS0VZX1VOS05PV04sIC8qIDUwICovCi0JCUtFWV9VTktOT1dOLCAvKiA1MSAqLwot CQlLRVlfVU5LTk9XTiwgLyogNTIgKi8KLQkJS0VZX1VOS05PV04sIC8qIDUzICovCi0JCUtFWV9V TktOT1dOLCAvKiA1NCAqLwotCQlLRVlfVU5LTk9XTiwgLyogNTUgKi8KLQkJS0VZX1VOS05PV04s IC8qIDU2ICovCi0JCUtFWV9VTktOT1dOLCAvKiA1NyAqLwotCQlLRVlfVU5LTk9XTiwgLyogNTgg Ki8KLQkJS0VZX1VOS05PV04sIC8qIDU5ICovCi0JCUtFWV9VTktOT1dOLCAvKiA2MCAqLwotCQlL RVlfVU5LTk9XTiwgLyogNjEgKi8KLQkJS0VZX1VOS05PV04sIC8qIDYyICovCi0JCUtFWV9VTktO T1dOLCAvKiA2MyAqLwotCQlLRVlfUFJFVklPVVNTT05HLCAvKiA2NCAqLwotCQlLRVlfTkVYVFNP TkcsIC8qIDY1ICovCi0JCUtFWV9VTktOT1dOLCAvKiA2NiAqLwotCQlLRVlfU1RPUCwgLyogNjcg Ki8KLQkJS0VZX1VOS05PV04sIC8qIDY4ICovCi0JCUtFWV9QTEFZUEFVU0UsIC8qIDY5ICovCi0J CUtFWV9VTktOT1dOLCAvKiA3MCAqLworCS8qIFNvbWUgb2YgdGhlc2UgdmFsdWVzIGFyZSBvdmV3 cml0ZW4gYnkgc29tZXRoaW5nICovCisJc3RhdGljIHN0cnVjdCBrZXlfZXZlbnQgbWFwXzFbXSA9 IHsKKwkJeyBLRVlfUkVTRVJWRUQsIDE3IH0sIC8qIEJyaWdodG5lc3MgdXAgICAqLyAKKwkJeyBL RVlfUkVTRVJWRUQsIDE4IH0sIC8qIEJyaWdodG5lc3MgdXAgICAqLyAKKwkJeyBLRVlfUkVTRVJW RUQsIDE5IH0sIC8qIEJyaWdodG5lc3MgdXAgICAqLyAKKwkJeyBLRVlfUkVTRVJWRUQsIDIwIH0s IC8qIEJyaWdodG5lc3MgdXAgICAqLyAKKwkJeyBLRVlfUkVTRVJWRUQsIDIxIH0sIC8qIEJyaWdo dG5lc3MgdXAgICAqLyAKKwkJeyBLRVlfUkVTRVJWRUQsIDIyIH0sIC8qIEJyaWdodG5lc3MgdXAg ICAqLyAKKwkJeyBLRVlfUkVTRVJWRUQsIDIzIH0sIC8qIEJyaWdodG5lc3MgdXAgICAqLyAKKwkJ eyBLRVlfUkVTRVJWRUQsIDI0IH0sIC8qIEJyaWdodG5lc3MgdXAgICAqLyAKKwkJeyBLRVlfUkVT RVJWRUQsIDI1IH0sIC8qIEJyaWdodG5lc3MgdXAgICAqLyAKKwkJeyBLRVlfUkVTRVJWRUQsIDI2 IH0sIC8qIEJyaWdodG5lc3MgdXAgICAqLyAKKwkJeyBLRVlfUkVTRVJWRUQsIDI3IH0sIC8qIEJy aWdodG5lc3MgdXAgICAqLyAKKwkJeyBLRVlfUkVTRVJWRUQsIDI4IH0sIC8qIEJyaWdodG5lc3Mg dXAgICAqLyAKKwkJeyBLRVlfUkVTRVJWRUQsIDI5IH0sIC8qIEJyaWdodG5lc3MgdXAgICAqLyAK KwkJeyBLRVlfUkVTRVJWRUQsIDMwIH0sIC8qIEJyaWdodG5lc3MgdXAgICAqLyAKKwkJeyBLRVlf UkVTRVJWRUQsIDMxIH0sIC8qIEJyaWdodG5lc3MgdXAgICAqLyAKKwkJeyBLRVlfUkVTRVJWRUQs IDMyIH0sIC8qIEJyaWdodG5lc3MgZG93biAqLyAKKwkJeyBLRVlfUkVTRVJWRUQsIDMzIH0sIC8q IEJyaWdodG5lc3MgZG93biAqLyAKKwkJeyBLRVlfUkVTRVJWRUQsIDM0IH0sIC8qIEJyaWdodG5l c3MgZG93biAqLyAKKwkJeyBLRVlfUkVTRVJWRUQsIDM1IH0sIC8qIEJyaWdodG5lc3MgZG93biAq LyAKKwkJeyBLRVlfUkVTRVJWRUQsIDM2IH0sIC8qIEJyaWdodG5lc3MgZG93biAqLyAKKwkJeyBL RVlfUkVTRVJWRUQsIDM3IH0sIC8qIEJyaWdodG5lc3MgZG93biAqLyAKKwkJeyBLRVlfUkVTRVJW RUQsIDM4IH0sIC8qIEJyaWdodG5lc3MgZG93biAqLyAKKwkJeyBLRVlfUkVTRVJWRUQsIDM5IH0s IC8qIEJyaWdodG5lc3MgZG93biAqLyAKKwkJeyBLRVlfUkVTRVJWRUQsIDQwIH0sIC8qIEJyaWdo dG5lc3MgZG93biAqLyAKKwkJeyBLRVlfUkVTRVJWRUQsIDQxIH0sIC8qIEJyaWdodG5lc3MgZG93 biAqLyAKKwkJeyBLRVlfUkVTRVJWRUQsIDQyIH0sIC8qIEJyaWdodG5lc3MgZG93biAqLyAKKwkJ eyBLRVlfUkVTRVJWRUQsIDQzIH0sIC8qIEJyaWdodG5lc3MgZG93biAqLyAKKwkJeyBLRVlfUkVT RVJWRUQsIDQ0IH0sIC8qIEJyaWdodG5lc3MgZG93biAqLyAKKwkJeyBLRVlfUkVTRVJWRUQsIDQ1 IH0sIC8qIEJyaWdodG5lc3MgZG93biAqLyAKKwkJeyBLRVlfUkVTRVJWRUQsIDQ2IH0sIC8qIEJy aWdodG5lc3MgZG93biAqLyAKKwkJeyBLRVlfVk9MVU1FVVAsIDQ4IH0sIAorCQl7IEtFWV9WT0xV TUVET1dOLCA0OSB9LAorCQl7IEtFWV9NVVRFLCAgICAgNTAgfSwKKwkJeyBLRVlfUkVTRVJWRUQs IDUxIH0sIC8qIExDRCBTd2l0Y2ggKi8KKwkJeyBLRVlfUkVTRVJWRUQsIDUyIH0sIC8qIExDRCBT d2l0Y2ggKi8KKwkJeyBLRVlfUFJFVklPVVNTT05HLCA2NCB9LCAKKwkJeyBLRVlfTkVYVFNPTkcs IDY1IH0sIAorCQl7IEtFWV9TVE9QLCAgICAgNjcgfSwgCisJCXsgS0VZX1BMQVlQQVVTRSw2OSB9 LCAKKwkJeyBLRVlfRU1BSUwsICAgIDgwIH0sIAorCQl7IEtFWV9XV1csICAgICAgODEgfSwgCisJ CXsgQlROX0VYVFJBLCAgICA5MiB9LCAgLyogUGVyZm9ybWFuY2UgKi8KKwkJeyBLRVlfV0xBTiwg ICAgIDkzIH0sCisJCXsgS0VZX1NXSVRDSFZJREVPTU9ERSwgICAgOTcgfSwKKwkJeyBCVE5fVE9V Q0gsICAgIDEwNyB9LCAvKiBMb2NrIE1vdXNlICovCisJCXsgS0VZX0JMVUVUT09USCwxMjUgfSwg LyogQmx1ZXRvb3RoIHVwICovCisJCXsgS0VZX0JMVUVUT09USCwxMjYgfSwgLyogQmx1ZXRvb3Ro IGRvd24gKi8KKwkJeyBLRVlfQ0FNRVJBLCAgIDEzMCB9LCAKKwkJeyBLRVlfVFYsICAgICAgIDEz OCB9LCAKKwkJeyBLRVlfTUVESUEsICAgIDE0OSB9LCAKKwkJeyBLRVlfUEhPTkUsICAgIDE1MyB9 CiAJfTsKLQotI2RlZmluZSBBU1VTX0hPVEtfTUFQX0xFTiAgICAgICBBUlJBWV9TSVpFKGtleWNv ZGVfbWFwXzEpCi0jZGVmaW5lIEFTVVNfSE9US19NQVBfU0laRSAgICAgIHNpemVvZihrZXljb2Rl X21hcF8xKQotI2RlZmluZSBBU1VTX0hPVEtfTUFQX1RZUEVTSVpFICBzaXplb2Yoa2V5Y29kZV9t YXBfMVswXSkKLQotCS8qIEFsd2F5cyB1c2UgZmlyc3Qga2V5bWFwLiBUT0RPIG1ha2UgdGhpcyBt b2RlbC1zcGVjaWZpYyAqLworIAogCWhvdGtfa2V5Y29kZV9tYXAgPSBrbWFsbG9jKEFTVVNfSE9U S19NQVBfU0laRSwgR0ZQX0tFUk5FTCk7Ci0JaG90a19rZXljb2RlX21hcF9zaXplID0gQVNVU19I T1RLX01BUF9MRU47CiAJaWYgKCFob3RrX2tleWNvZGVfbWFwKSB7CiAJCXByaW50ayhBU1VTX0VS UiAiZmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3Iga2V5bWFwXG4iKTsKIAkJcmV0dXJuIC1F Tk9NRU07CiAJfQotCXByaW50ayhBU1VTX05PVElDRSAidXNpbmcga2V5Y29kZV9tYXBfMVxuIik7 Ci0JbWVtY3B5KGhvdGtfa2V5Y29kZV9tYXAsICZrZXljb2RlX21hcF8xLCBBU1VTX0hPVEtfTUFQ X1NJWkUpOwotCS8qIFRPRE8gbWFrZSBzdXJlIG5vIEFDUEkgZXZlbnRzIGFyZSBzZW50IG9uIGtu b3duIGtleWNvZGVzICovCiAKIAlhc3VzX2hvdGtfaW5wdXRkZXYgPSBpbnB1dF9hbGxvY2F0ZV9k ZXZpY2UoKTsKIAlpZiAoIWFzdXNfaG90a19pbnB1dGRldikgewogCQlwcmludGsoQVNVU19FUlIg InVuYWJsZSB0byBhbGxvY2F0ZSBpbnB1dCBkZXZpY2VcbiIpOwogCQlyZXR1cm4gLUVOT01FTTsK IAl9CisJZm9yIChpID0gMDsgaSA8IEFTVVNfSE9US19NQVBfU0laRTsgaSsrKQorCQlob3RrX2tl eWNvZGVfbWFwW2ldID0gS0VZX1VOS05PV047CisKKwkvKiBBbHdheXMgdXNlIGZpcnN0IGtleW1h cC4gVE9ETyBtYWtlIHRoaXMgbW9kZWwtc3BlY2lmaWMKKwkgKiAobm90IHN1cmUgaWYgaXQncyBu ZWVkZWQgbW9yZSB0aGFuIG9uZSkgKi8KKwlwcmludGsoQVNVU19OT1RJQ0UgInVzaW5nIG1hcF8x XG4iKTsKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShtYXBfMSk7IGkrKykKKwkJaG90a19r ZXljb2RlX21hcFttYXBfMVtpXS5ldmVudF0gPSBtYXBfMVtpXS5rZXk7CisKKwlyZXR1cm4gMDsK K30KKworc3RhdGljIGludCBhc3VzX2hvdGtfaW5pdCh2b2lkKQoreworCWludCByZXQsIGk7CisK KwlpZiAoKHJldCA9IHNldF9rZXljb2RlX21hcCgpKSAhPSAwKQorCQlyZXR1cm4gcmV0OworCiAJ YXN1c19ob3RrX2lucHV0ZGV2LT5uYW1lID0gIkFzdXMgRXh0cmEgQnV0dG9ucyI7CiAJYXN1c19o b3RrX2lucHV0ZGV2LT5waHlzID0gQVNVU19IT1RLX0ZJTEUgIi9pbnB1dDAiOwogCWFzdXNfaG90 a19pbnB1dGRldi0+aWQuYnVzdHlwZSA9IEJVU19IT1NUOwpAQCAtMTI1NSwxNiArMTI1NCwxMyBA QCBzdGF0aWMgaW50IGFzdXNfaG90a19pbml0KHZvaWQpCiAJc2V0X2JpdChFVl9LRVksIGFzdXNf aG90a19pbnB1dGRldi0+ZXZiaXQpOwogCXNldF9iaXQoRVZfTVNDLCBhc3VzX2hvdGtfaW5wdXRk ZXYtPmV2Yml0KTsKIAlzZXRfYml0KE1TQ19TQ0FOLCBhc3VzX2hvdGtfaW5wdXRkZXYtPm1zY2Jp dCk7Ci0JYXN1c19ob3RrX2lucHV0ZGV2LT5rZXljb2Rlc2l6ZSA9IEFTVVNfSE9US19NQVBfVFlQ RVNJWkU7CisJYXN1c19ob3RrX2lucHV0ZGV2LT5rZXljb2Rlc2l6ZSA9IHNpemVvZihob3RrX2tl eWNvZGVfbWFwWzBdKTsKIAlhc3VzX2hvdGtfaW5wdXRkZXYtPmtleWNvZGVtYXggPSBBU1VTX0hP VEtfTUFQX0xFTjsKIAlhc3VzX2hvdGtfaW5wdXRkZXYtPmtleWNvZGUgPSBob3RrX2tleWNvZGVf bWFwOwogCWZvciAoaSA9IDA7IGkgPCBBU1VTX0hPVEtfTUFQX0xFTjsgaSsrKSB7CiAJCWlmICho b3RrX2tleWNvZGVfbWFwW2ldICE9IEtFWV9SRVNFUlZFRCkgewogCQkJc2V0X2JpdChob3RrX2tl eWNvZGVfbWFwW2ldLCBhc3VzX2hvdGtfaW5wdXRkZXYtPmtleWJpdCk7Ci0JCX0gLyplbHNlIHsK LQkJCWlmIChpIDwgc2l6ZW9mKGhvdGtfcmVzZXJ2ZWRfbWFzaykqOCkKLQkJCQlob3RrX3Jlc2Vy dmVkX21hc2sgfD0gMSA8PCBpOwotCQl9Ki8KKwkJfQogCX0KIAogCXJldCA9IGlucHV0X3JlZ2lz dGVyX2RldmljZShhc3VzX2hvdGtfaW5wdXRkZXYpOwotLSAKMS41LjYKCgAK