From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Eliezer Tamir" Subject: [PATCH 7/8][BNX2X] resubmit as attachments: bnx2x_self_test.h Date: Mon, 08 Oct 2007 18:17:11 +0200 Message-ID: <470A5807.4020803@broadcom.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=------------050602050603010402030209 To: davem@davemloft.net, jeff@garzik.org, "netdev@vger.kernel.org" , "Michael Chan" Return-path: Received: from mms3.broadcom.com ([216.31.210.19]:4304 "EHLO MMS3.broadcom.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751736AbXJHQPy (ORCPT ); Mon, 8 Oct 2007 12:15:54 -0400 Sender: netdev-owner@vger.kernel.org List-Id: netdev.vger.kernel.org This is a multi-part message in MIME format. --------------050602050603010402030209 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit bnx2x_self_test.h - machine generated self test, plus the code that reports HW/FW/BC asserts --------------050602050603010402030209 Content-Type: text/plain; name=0007-add-bnx2x_self_test.h.txt Content-Transfer-Encoding: base64 Content-Disposition: inline; filename=0007-add-bnx2x_self_test.h.txt RnJvbSA1ZmYwOGNjNzNkMzcyY2NjNjZiZjhiYTBlMjU1NTQ0ZjIzNmZlZDA5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFbGllemVyIFRhbWlyIDxlbGllemVydEBicm9hZGNv bS5jb20+CkRhdGU6IE1vbiwgOCBPY3QgMjAwNyAxMTo1MzoyMCArMDIwMApTdWJqZWN0OiBb UEFUQ0ggNy84XSBhZGQgYm54Mnhfc2VsZl90ZXN0LmgKClNpZ25lZC1vZmYtYnk6IEVsaWV6 ZXIgVGFtaXIgPGVsaWV6ZXJ0QGJyb2FkY29tLmNvbT4KLS0tCiBkcml2ZXJzL25ldC9ibngy eF9zZWxmX3Rlc3QuaCB8IDEzODcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKIDEgZmlsZXMgY2hhbmdlZCwgMTM4NyBpbnNlcnRpb25zKCspLCAwIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JueDJ4X3NlbGZfdGVzdC5oIGIv ZHJpdmVycy9uZXQvYm54Mnhfc2VsZl90ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uYjFkNjJlNwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvbmV0L2Ju eDJ4X3NlbGZfdGVzdC5oCkBAIC0wLDAgKzEsMTM4NyBAQAorLyogYm54Mnhfc2VsZl90ZXN0 Lmg6IEJyb2FkY29tIEV2ZXJlc3QgbmV0d29yayBkcml2ZXIuCisgKgorICogQ29weXJpZ2h0 IChjKSAyMDA3IEJyb2FkY29tIENvcnBvcmF0aW9uCisgKgorICogVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgor ICovCisKKy8qIHNlbGYgdGVzdCAqLworc3RhdGljIGludCBibngyeF9pZGxlX2NoayhzdHJ1 Y3QgYm54MnggKmJwKQoreworCXUzMiB2YWwsIGksIHZhbDI7CisJdTMyIGVycm9ycyA9IDA7 CisJdTMyIHdhcm5pbmdzID0gMDsKKwl1MzIgdmFyclszMl07CisJdTMyIHVzZW1fZm9jX2Ny ZWRpdHNbNF0gPSB7MjYsIDc4LCAxNiwgMzJ9OworCXUzMiB4c2VtX2ZvY19jcmVkaXRzWzRd ID0gezAsIDI0LCAxMiwgMTAyfTsKKwl1MzIgY3NlbV9mb2NfY3JlZGl0c1s0XSA9IHsxNiwg MTgsIDQ4LCAxNH07CisJdTMyIHRzZW1fZm9jX2NyZWRpdHNbNF0gPSB7IDUyLCAyNCwgMTIs IDMyfTsKKwl1MzIgZm9jX251bSA9IDA7CisJdTggIGVycl9wa3QgPSAwOworCXUzMiBwY2lf cmVnOworLyogCURpc2FibGUgdGltZXIgc2NhbnMgZm9yIHBvcnQgMCwxICovCisvKiAgICAg aXNfZW5hYmxlX3RpbWVyMCA9IGxtX2Rpc2FibGVfdGltZXIocGRldiwgMCk7ICovCisvKiAg ICAgaXNfZW5hYmxlX3RpbWVyMSA9IGxtX2Rpc2FibGVfdGltZXIocGRldiwgMSk7ICovCisK KworLyogQ2hlY2sgZXJyb3JzIG9uIFBDSSBjb25maWd1cmF0aW9uIHNwYWNlIHVjb3JyX2Vy cl9zdGF0dXMgliAweDExNCAqLworLyogY2hlY2sgcG9ydCAwICovCisJdmFsID0gUkVHX1JE KGJwLCBHUkNCQVNFX1BYUENTLCAweDIxMTQpOworCWlmICgodmFsICYgMHgxRkYwMTApICE9 IDB4MCkgeworCQlCTlgyWF9FUlIoIkVycm9yIFBDSUUgSVAgZnVuY3Rpb24gJWQsIgorCQkg ICAiIHVjb3JyX2Vycl9zdGF0dXMgaXMgbm90IDB4MC4gRXF1YWwgdG8gMHgleFxuIiwKKwkJ ICAgYnAtPnBvcnQsIHZhbCk7CisJCWVycl9wa3QgPSAxOworCQllcnJvcnMrKzsKKwl9CisK Kwl2YWwgPSBSRUdfUkQoYnAsIEdSQ0JBU0VfUFhQQ1MsIDB4MjEyMCk7CisJaWYgKCgodmFs ICYgMHgzMUMxKSAhPSAweDIwMDApICYmICgodmFsICYgMHgzMUMxKSAhPSAwKSkgeworCQlC TlgyWF9FUlIoIkVycm9yIFBDSUUgSVAgZnVuY3Rpb24gJWQsIgorCQkgICAiIGNvcnJfZXJy X3N0YXR1cyBpcyBub3QgMHgyMDAwLiBFcXVhbCB0byAweCV4XG4iLAorCQkgICBicC0+cG9y dCwgdmFsKTsKKwkJZXJyX3BrdCA9IDE7CisJCWVycm9ycysrOworCX0KKworCXZhbCA9IFJF R19SRChicCwgR1JDQkFTRV9QWFBDUywgMHgyODE0KTsKKwlpZiAoKHZhbCAhPSAweDQwMTAw KSAmJiAodmFsICE9IDApKSB7CisJCUJOWDJYX0VSUigiRXJyb3IgUENJRSBJUCBmdW5jdGlv biAlZCwiCisJCSAgICIgYXR0ZW50aW9ucyByZWdpc3RlciBpcyBub3QgMHg0MDEwMC4gRXF1 YWwgdG8gMHgleFxuIiwKKwkJICAgYnAtPnBvcnQsIHZhbCk7CisJCWVycl9wa3QgPSAxOwor CQllcnJvcnMrKzsKKwl9CisKKwlpZiAoZXJyX3BrdCkgeworCQlwY2lfcmVnID0gMHgyMTJj OworCQlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7CisJCQl2YWwgPSBSRUdfUkQoYnAsIEdS Q0JBU0VfUFhQQ1MsIHBjaV9yZWcraSo0KTsKKwkJCUJOWDJYX0VSUigiRXJyb3IgUENJRSBJ UCBmdW5jdGlvbiAlZCwiCisJCQkgICAiIGVycm9yIHBhY2tldCBoZWFkZXIgJWQgIEVxdWFs IHRvIDB4JXhcbiIsCisJCQkgICBicC0+cG9ydCwgaSwgdmFsKTsKKwkJfQorCX0KKworLyog Q2hlY2sgdGhhdCBhbGwgVlFzIGluIFBYUCBhcmUgZW1wdHkJKi8KKwl2YXJyWzBdID0gUkVH X1JEKGJwLCBHUkNCQVNFX1BYUDIsIFBYUDJfUkVHSVNURVJTX1JRX1ZRMF9FTlRSWV9DTlQp OworCXZhcnJbMV0gPSBSRUdfUkQoYnAsIEdSQ0JBU0VfUFhQMiwgUFhQMl9SRUdJU1RFUlNf UlFfVlExX0VOVFJZX0NOVCk7CisJdmFyclsyXSA9IFJFR19SRChicCwgR1JDQkFTRV9QWFAy LCBQWFAyX1JFR0lTVEVSU19SUV9WUTJfRU5UUllfQ05UKTsKKwl2YXJyWzNdID0gUkVHX1JE KGJwLCBHUkNCQVNFX1BYUDIsIFBYUDJfUkVHSVNURVJTX1JRX1ZRM19FTlRSWV9DTlQpOwor CXZhcnJbNF0gPSBSRUdfUkQoYnAsIEdSQ0JBU0VfUFhQMiwgUFhQMl9SRUdJU1RFUlNfUlFf VlE0X0VOVFJZX0NOVCk7CisJdmFycls1XSA9IFJFR19SRChicCwgR1JDQkFTRV9QWFAyLCBQ WFAyX1JFR0lTVEVSU19SUV9WUTVfRU5UUllfQ05UKTsKKwl2YXJyWzZdID0gUkVHX1JEKGJw LCBHUkNCQVNFX1BYUDIsIFBYUDJfUkVHSVNURVJTX1JRX1ZRNl9FTlRSWV9DTlQpOworCXZh cnJbN10gPSBSRUdfUkQoYnAsIEdSQ0JBU0VfUFhQMiwgUFhQMl9SRUdJU1RFUlNfUlFfVlE3 X0VOVFJZX0NOVCk7CisJdmFycls4XSA9IFJFR19SRChicCwgR1JDQkFTRV9QWFAyLCBQWFAy X1JFR0lTVEVSU19SUV9WUThfRU5UUllfQ05UKTsKKwl2YXJyWzldID0gUkVHX1JEKGJwLCBH UkNCQVNFX1BYUDIsIFBYUDJfUkVHSVNURVJTX1JRX1ZROV9FTlRSWV9DTlQpOworCXZhcnJb MTBdID0gUkVHX1JEKGJwLCBHUkNCQVNFX1BYUDIsIFBYUDJfUkVHSVNURVJTX1JRX1ZRMTBf RU5UUllfQ05UKTsKKwl2YXJyWzExXSA9IFJFR19SRChicCwgR1JDQkFTRV9QWFAyLCBQWFAy X1JFR0lTVEVSU19SUV9WUTExX0VOVFJZX0NOVCk7CisJdmFyclsxMl0gPSBSRUdfUkQoYnAs IEdSQ0JBU0VfUFhQMiwgUFhQMl9SRUdJU1RFUlNfUlFfVlExMl9FTlRSWV9DTlQpOworCXZh cnJbMTNdID0gUkVHX1JEKGJwLCBHUkNCQVNFX1BYUDIsIFBYUDJfUkVHSVNURVJTX1JRX1ZR MTNfRU5UUllfQ05UKTsKKwl2YXJyWzE0XSA9IFJFR19SRChicCwgR1JDQkFTRV9QWFAyLCBQ WFAyX1JFR0lTVEVSU19SUV9WUTE0X0VOVFJZX0NOVCk7CisJdmFyclsxNV0gPSBSRUdfUkQo YnAsIEdSQ0JBU0VfUFhQMiwgUFhQMl9SRUdJU1RFUlNfUlFfVlExNV9FTlRSWV9DTlQpOwor CXZhcnJbMTZdID0gUkVHX1JEKGJwLCBHUkNCQVNFX1BYUDIsIFBYUDJfUkVHSVNURVJTX1JR X1ZRMTZfRU5UUllfQ05UKTsKKwl2YXJyWzE3XSA9IFJFR19SRChicCwgR1JDQkFTRV9QWFAy LCBQWFAyX1JFR0lTVEVSU19SUV9WUTE3X0VOVFJZX0NOVCk7CisJdmFyclsxOF0gPSBSRUdf UkQoYnAsIEdSQ0JBU0VfUFhQMiwgUFhQMl9SRUdJU1RFUlNfUlFfVlExOF9FTlRSWV9DTlQp OworCXZhcnJbMTldID0gUkVHX1JEKGJwLCBHUkNCQVNFX1BYUDIsIFBYUDJfUkVHSVNURVJT X1JRX1ZRMTlfRU5UUllfQ05UKTsKKwl2YXJyWzIwXSA9IFJFR19SRChicCwgR1JDQkFTRV9Q WFAyLCBQWFAyX1JFR0lTVEVSU19SUV9WUTIwX0VOVFJZX0NOVCk7CisJdmFyclsyMV0gPSBS RUdfUkQoYnAsIEdSQ0JBU0VfUFhQMiwgUFhQMl9SRUdJU1RFUlNfUlFfVlEyMV9FTlRSWV9D TlQpOworCXZhcnJbMjJdID0gUkVHX1JEKGJwLCBHUkNCQVNFX1BYUDIsIFBYUDJfUkVHSVNU RVJTX1JRX1ZRMjJfRU5UUllfQ05UKTsKKwl2YXJyWzIzXSA9IFJFR19SRChicCwgR1JDQkFT RV9QWFAyLCBQWFAyX1JFR0lTVEVSU19SUV9WUTIzX0VOVFJZX0NOVCk7CisJdmFyclsyNF0g PSBSRUdfUkQoYnAsIEdSQ0JBU0VfUFhQMiwgUFhQMl9SRUdJU1RFUlNfUlFfVlEyNF9FTlRS WV9DTlQpOworCXZhcnJbMjVdID0gUkVHX1JEKGJwLCBHUkNCQVNFX1BYUDIsIFBYUDJfUkVH SVNURVJTX1JRX1ZRMjVfRU5UUllfQ05UKTsKKwl2YXJyWzI2XSA9IFJFR19SRChicCwgR1JD QkFTRV9QWFAyLCBQWFAyX1JFR0lTVEVSU19SUV9WUTI2X0VOVFJZX0NOVCk7CisJdmFyclsy N10gPSBSRUdfUkQoYnAsIEdSQ0JBU0VfUFhQMiwgUFhQMl9SRUdJU1RFUlNfUlFfVlEyN19F TlRSWV9DTlQpOworCXZhcnJbMjhdID0gUkVHX1JEKGJwLCBHUkNCQVNFX1BYUDIsIFBYUDJf UkVHSVNURVJTX1JRX1ZRMjhfRU5UUllfQ05UKTsKKwl2YXJyWzI5XSA9IFJFR19SRChicCwg R1JDQkFTRV9QWFAyLCBQWFAyX1JFR0lTVEVSU19SUV9WUTI5X0VOVFJZX0NOVCk7CisJdmFy clszMF0gPSBSRUdfUkQoYnAsIEdSQ0JBU0VfUFhQMiwgUFhQMl9SRUdJU1RFUlNfUlFfVlEz MF9FTlRSWV9DTlQpOworCXZhcnJbMzFdID0gUkVHX1JEKGJwLCBHUkNCQVNFX1BYUDIsIFBY UDJfUkVHSVNURVJTX1JRX1ZRMzFfRU5UUllfQ05UKTsKKworCWZvciAoaSA9IDA7IGkgPCAz MjsgaSsrKSB7CisJCWlmICh2YXJyW2ldICE9IDApIHsKKwkJCWlmICgoaSA9PSAzKSAmJiAo dmFycltpXSA8PSAyKSkgeworCQkJCWNvbnRpbnVlOworCQkJfSBlbHNlIHsKKwkJCQlCTlgy WF9FUlIoIkVycm9yLCBQWFAsIFZRJWQgaXMgbm90IGVtcHR5LiIKKwkJCQkJICAiIEZpbGwg bGV2ZWwgZXF1YWwgdG8gJWRcbiIsCisJCQkJCSAgaSwgdmFycltpXSk7CisJCQkJZXJyb3Jz Kys7CisJCQl9CisJCX0KKwl9CisKKy8qIENoZWNrIHRoYXQgUFhQMiByZWdpc3RlciBycV91 Zmlmb19udW1fb2ZfZW50cnkgaXMgMCAqLworCXZhbCA9IFJFR19SRChicCwgR1JDQkFTRV9Q WFAyLCBQWFAyX1JFR0lTVEVSU19SUV9VRklGT19OVU1fT0ZfRU5UUlkpOworCWlmICh2YWwg IT0gMCkgeworCQlCTlgyWF9FUlIoIkVycm9yLCBQWFAsIHJxX3VmaWZvX251bV9vZl9lbnRy eSBpcyBub3QgemVyby4iCisJCQkgICIgdmFsdWUgZXF1YWxzICVkXG4iLCB2YWwpOworCQll cnJvcnMrKzsKKwl9CisKKyAvKiBDaGVjayB0aGF0IHJxX3JiY19kb25lIGlzIDEgKi8KKwl2 YWwgPSBSRUdfUkQoYnAsIEdSQ0JBU0VfUFhQMiwgUFhQMl9SRUdJU1RFUlNfUlFfUkJDX0RP TkUpOworCWlmICh2YWwgIT0gMSkgeworCQlCTlgyWF9FUlIoIkVycm9yLCBQWFAsIHJxX3Ji Y19kb25lIGlzIG5vdCAxLiIKKwkJCSAgIiB2YWx1ZSBlcXVhbHMgJWRcbiIsIHZhbCk7CisJ CWVycm9ycysrOworCX0KKworIC8qIENoZWNrIHRoYXQgcnFfY2ZnX2RvbmUgaXMgMSAqLwor CXZhbCA9IFJFR19SRChicCwgR1JDQkFTRV9QWFAyLCBQWFAyX1JFR0lTVEVSU19SUV9DRkdf RE9ORSk7CisJaWYgKHZhbCAhPSAxKSB7CisJCUJOWDJYX0VSUigiRXJyb3IsIFBYUCwgcnFf Y2ZnX2RvbmUgaXMgbm90IDEuICIKKwkJCSAgInZhbHVlIGVxdWFscyAlZFxuIiwgdmFsKTsK KwkJZXJyb3JzKys7CisJfQorCisgLyogQ2hlY2sgdGhhdCBycV9yZWFkX2NyZWRpdCBhbmQg cnFfd3JpdGVfY3JlZGl0IGFyZSAzICovCisJdmFsID0gUkVHX1JEKGJwLCBHUkNCQVNFX1BY UDIsIFBYUDJfUkVHSVNURVJTX1BTV1JRX0JXX0NSRURJVCk7CisJaWYgKHZhbCAhPSAweDFC KSB7CisJCUJOWDJYX0VSUigiRXJyb3IsIFBYUCwgcnFfcmVhZF9jcmVkaXQgYW5kIHJxX3dy aXRlX2NyZWRpdCAiCisJCQkgICJhcmUgbm90IDMuIHZhbHVlIGVxdWFscyAlZFxuIiwgdmFs KTsKKwkJZXJyb3JzKys7CisJfQorCisgLyogQ2hlY2sgdGhhdCByZF9zdGFydF9pbml0IGlz IDEgKi8KKwl2YWwgPSBSRUdfUkQoYnAsIEdSQ0JBU0VfUFhQMiwgUFhQMl9SRUdJU1RFUlNf UkRfU1RBUlRfSU5JVCk7CisJaWYgKHZhbCAhPSAxKSB7CisJCUJOWDJYX0VSUigiRXJyb3Is IFBYUCwgcmRfc3RhcnRfaW5pdCBpcyBub3QgMS4iCisJCQkgICIgdmFsdWUgZXF1YWxzICVk XG4iLCB2YWwpOworCQllcnJvcnMrKzsKKwl9CisKKy8qIENoZWNrIHRoYXQgcmRfaW5pdF9k b25lIGlzIDEgKi8KKwl2YWwgPSBSRUdfUkQoYnAsIEdSQ0JBU0VfUFhQMiwgUFhQMl9SRUdJ U1RFUlNfUkRfSU5JVF9ET05FKTsKKwlpZiAodmFsICE9IDEpIHsKKwkJQk5YMlhfRVJSKCJF cnJvciwgUFhQLCByZF9pbml0X2RvbmUgaXMgbm90IDEuICIKKwkJCSAgInZhbHVlIGVxdWFs cyAlZFxuIiwgdmFsKTsKKwkJZXJyb3JzKys7CisJfQorCisvKiAgQ2hlY2sgdGhhdCByZF9z cl9jbnQgZXF1YWxzIHJkX3NyX251bV9jZmcgKi8KKwl2YWwgPSBSRUdfUkQoYnAsIEdSQ0JB U0VfUFhQMiwgUFhQMl9SRUdJU1RFUlNfUkRfU1JfQ05UKTsKKwl2YWwyID0gUkVHX1JEKGJw LCBHUkNCQVNFX1BYUDIsIFBYUDJfUkVHSVNURVJTX1JEX1NSX05VTV9DRkcpOworCWlmICh2 YWwgIT0gKHZhbDItMSkpIHsKKwkJQk5YMlhfRVJSKCJXYXJuaW5nLCBQWFAsIHJkX3NyX2Nu dCAhPSByZF9zcl9udW1fY2ZnLTEuIgorCQkJICAiIHZhbHVlcyBhcmUgJWQgJWRcbiIsIHZh bCwgdmFsMik7CisJCXdhcm5pbmdzKys7CisJfQorCisvKiBDaGVjayB0aGF0IHJkX2Jsa19j bnQgZXF1YWxzIHJkX2Jsa19udW1fY2ZnICovCisJdmFsID0gUkVHX1JEKGJwLCBHUkNCQVNF X1BYUDIsIFBYUDJfUkVHSVNURVJTX1JEX0JMS19DTlQpOworCXZhbDIgPSBSRUdfUkQoYnAs IEdSQ0JBU0VfUFhQMiwgUFhQMl9SRUdJU1RFUlNfUkRfQkxLX05VTV9DRkcpOworCWlmICh2 YWwgIT0gdmFsMikgeworCQlCTlgyWF9FUlIoIkVycm9yLCBQWFAsIHJkX2Jsa19jbnQgaXMg bm90IGVxdWFsIHRvICIKKwkJCSAgInJkX2Jsa19udW1fY2ZnLiB2YWx1ZXMgYXJlICVkICVk XG4iLCB2YWwsIHZhbDIpOworCQllcnJvcnMrKzsKKwl9CisvKiBDaGVjayB0aGF0IGRlbGl2 ZXJ5IHBvcnRzIGFyZSBpZGxlICovCisJdmFsID0gUkVHX1JEKGJwLCBHUkNCQVNFX1BYUDIs IFBYUDJfUkVHSVNURVJTX1JEX1BPUlRfSVNfSURMRV8wKTsKKwlpZiAodmFsICE9IDEpIHsK KwkJQk5YMlhfRVJSKCJFcnJvciBQWFAyIFAwLCBBbGwgZGVsaXZlcnkgcG9ydHMgYXJlIG5v dCBpZGxlLiIKKwkJCSAgIiBFcXVhbCB0byAgJWRcbiIsIHZhbCk7CisJCWVycm9ycysrOwor CX0KKworLyogQ2hlY2sgdGhhdCBkZWxpdmVyeSBwb3J0cyBhcmUgaWRsZSAqLworCXZhbCA9 IFJFR19SRChicCwgR1JDQkFTRV9QWFAyLCBQWFAyX1JFR0lTVEVSU19SRF9QT1JUX0lTX0lE TEVfMSk7CisJaWYgKHZhbCAhPSAxKSB7CisJCUJOWDJYX0VSUigiRXJyb3IgUFhQMiBQMSwg QWxsIGRlbGl2ZXJ5IHBvcnRzIGFyZSBub3QgaWRsZS4iCisJCQkgICIgRXF1YWwgdG8gICVk XG4iLCB2YWwpOworCQllcnJvcnMrKzsKKwl9CisKKy8qIENoZWNrIHRoYXQgcmRfYWxtb3N0 X2Z1bGwgaXMgMCAqLworCXZhcnJbMF0gPSBSRUdfUkQoYnAsIEdSQ0JBU0VfUFhQMiwgUFhQ Ml9SRUdJU1RFUlNfUkRfQUxNT1NUX0ZVTExfMCk7CisJdmFyclsxXSA9IFJFR19SRChicCwg R1JDQkFTRV9QWFAyLCBQWFAyX1JFR0lTVEVSU19SRF9BTE1PU1RfRlVMTF8xKTsKKwl2YXJy WzJdID0gUkVHX1JEKGJwLCBHUkNCQVNFX1BYUDIsIFBYUDJfUkVHSVNURVJTX1JEX0FMTU9T VF9GVUxMXzIpOworCXZhcnJbM10gPSBSRUdfUkQoYnAsIEdSQ0JBU0VfUFhQMiwgUFhQMl9S RUdJU1RFUlNfUkRfQUxNT1NUX0ZVTExfMyk7CisJdmFycls0XSA9IFJFR19SRChicCwgR1JD QkFTRV9QWFAyLCBQWFAyX1JFR0lTVEVSU19SRF9BTE1PU1RfRlVMTF80KTsKKwl2YXJyWzVd ID0gUkVHX1JEKGJwLCBHUkNCQVNFX1BYUDIsIFBYUDJfUkVHSVNURVJTX1JEX0FMTU9TVF9G VUxMXzUpOworCXZhcnJbNl0gPSBSRUdfUkQoYnAsIEdSQ0JBU0VfUFhQMiwgUFhQMl9SRUdJ U1RFUlNfUkRfQUxNT1NUX0ZVTExfNik7CisJdmFycls3XSA9IFJFR19SRChicCwgR1JDQkFT RV9QWFAyLCBQWFAyX1JFR0lTVEVSU19SRF9BTE1PU1RfRlVMTF83KTsKKwl2YXJyWzhdID0g UkVHX1JEKGJwLCBHUkNCQVNFX1BYUDIsIFBYUDJfUkVHSVNURVJTX1JEX0FMTU9TVF9GVUxM XzgpOworCXZhcnJbOV0gPSBSRUdfUkQoYnAsIEdSQ0JBU0VfUFhQMiwgUFhQMl9SRUdJU1RF UlNfUkRfQUxNT1NUX0ZVTExfOSk7CisJdmFyclsxMF0gPSBSRUdfUkQoYnAsIEdSQ0JBU0Vf UFhQMiwgUFhQMl9SRUdJU1RFUlNfUkRfQUxNT1NUX0ZVTExfMTApOworCWZvciAoaSA9IDA7 aSA8IDExOyBpKyspIHsKKwkJaWYgKHZhcnJbaV0gIT0gMCkgeworCQkJQk5YMlhfRVJSKCJF cnJvciwgUFhQLCByZF9hbG1vc3RfZnVsbF8lZCBpcyBub3QgemVyby4iCisJCQkJICAiIFZh bHVlIGlzICVkXG4iLCBpLCB2YXJyW2ldKTsKKwkJCWVycm9ycysrOworCQl9CisJfQorCisJ LyogQ2hlY2sgdGhhdCBob3N0IGkvZiBkYXRhIGFuZCBkZXNjcmlwdG9yIEZJRk9zIGFyZSBl bXB0eSAqLworCXZhbCA9IFJFR19SRChicCwgR1JDQkFTRV9QWFAyLCBQWFAyX1JFR0lTVEVS U19IU1RfSEVBREVSX0ZJRk9fU1RBVFVTKTsKKwlpZiAodmFsICE9IDApIHsKKwkJQk5YMlhf RVJSKCJFcnJvciBQWFAyIEhTVCwgaGVhZGVyIEZJRk8gc3RhdHVzIGlzIG5vdCIKKwkJCSAg IiBlbXB0eSBhbmQgaXMgZXF1YWwgdG8gJWRcbiIsIHZhbCk7CisJCWVycm9ycysrOworCX0K KworCXZhbCA9IFJFR19SRChicCwgR1JDQkFTRV9QWFAyLCBQWFAyX1JFR0lTVEVSU19IU1Rf REFUQV9GSUZPX1NUQVRVUyk7CisJaWYgKHZhbCAhPSAwKSB7CisJCUJOWDJYX0VSUigiRXJy b3IgUFhQMiBIU1QsIGRhdGEgRklGTyBzdGF0dXMgaXMgbm90IgorCQkJICAiIGVtcHR5IGFu ZCBpcyBlcXVhbCB0byAlZFxuIiwgdmFsKTsKKwkJZXJyb3JzKys7CisJfQorCisgLyogQ2hl Y2sgdGhhdCBwZ2xfd3JpdGVfYmxvY2tlZCBhbmQgcGdsX3JlYWRfYmxvY2tlZCBpcyAwICov CisJdmFsID0gUkVHX1JEKGJwLCBHUkNCQVNFX1BYUDIsIFBYUDJfUkVHSVNURVJTX1BHTF9X UklURV9CTE9DS0VEKTsKKwlpZiAodmFsICE9IDApIHsKKwkJQk5YMlhfRVJSKCJFcnJvciBQ WFAyIHBnbF93cml0ZV9ibG9ja2VkIGlzIG5vdCB6ZXJvIGFuZCBpcyIKKwkJCSAgIiBlcXVh bCB0byAlZFxuIiwgdmFsKTsKKwkJZXJyb3JzKys7CisJfQorCXZhbCA9IFJFR19SRChicCwg R1JDQkFTRV9QWFAyLCBQWFAyX1JFR0lTVEVSU19QR0xfUkVBRF9CTE9DS0VEKTsKKwlpZiAo dmFsICE9IDApIHsKKwkJQk5YMlhfRVJSKCJFcnJvciBQWFAyIHBnbF9yZWFkX2Jsb2NrZWQg aXMgbm90IHplcm8gYW5kIGlzICIKKwkJCSAgImVxdWFsIHRvICVkXG4iLCB2YWwpOworCQll cnJvcnMrKzsKKwl9CisKKy8qIENoZWNrIHRoYXQgdGhlIEhTVCBJL0YgYXJiaXRlciBpcyBp ZGxlKi8KKwl2YWwgPSBSRUdfUkQoYnAsIEdSQ0JBU0VfUFhQLCBQWFBfUkVHSVNURVJTX0hT VF9BUkJfSVNfSURMRSk7CisJaWYgKHZhbCAhPSAxKSB7CisJCUJOWDJYX0VSUigiRXJyb3Ig UFhQIEhTVCwgYXJiaXRlciBpcyBub3QgaWRsZSEgJWRcbiIsIHZhbCk7CisJCWVycm9ycysr OworCX0KKworCXZhbCA9IFJFR19SRChicCwgR1JDQkFTRV9QWFAsIFBYUF9SRUdJU1RFUlNf SFNUX0NMSUVOVFNfV0FJVElOR19UT19BUkIpOworCWlmICh2YWwgIT0gMCkgeworCQlCTlgy WF9FUlIoIkVycm9yIFBYUCBIU1QsIG9uZSBvZiB0aGUgY2xpZW50cyBpcyIKKwkJCSAgIiB3 YWl0aW5nIGZvciBkZWxpdmVyeTogMHgleFxuIiwgdmFsKTsKKwkJZXJyb3JzKys7CisJfQor CisvKiBPbiBQWFAyIChnbHVlKSBjaGVjayB0aGF0IHRhZ19pc19yZWFkeSBpcyBlcXVhbCB0 byAxCisgICBhbmQgdGhhdCBkYXRhX2lzX3JlYWR5IGlzIGVxdWFsIHRvIDAqLworCXZhbCA9 IFJFR19SRChicCwgR1JDQkFTRV9QWFAyLCBQWFAyX1JFR0lTVEVSU19QR0xfVFhSX0NEVFMp OworCWlmICgoKHZhbD4+NSkmMSkgIT0gMSkgeworCQlCTlgyWF9FUlIoIkVycm9yLCBQWFAy OiBUYWcgaXMgbm90IHJlYWR5LlxuIik7CisJCWVycm9ycysrOworCX0KKworCXZhbCA9IFJF R19SRChicCwgR1JDQkFTRV9QWFAyLCBQWFAyX1JFR0lTVEVSU19QR0xfVFhXX0NEVFMpOwor CWlmICgoKHZhbD4+MTcpJjEpICE9IDApIHsKKwkJQk5YMlhfRVJSKCJFcnJvciwgUFhQMiBU aGVyZSBpcyBkYXRhIHdoaWNoIGlzIHJlYWR5LlxuIik7CisJCWVycm9ycysrOworCX0KKwor LyogQ2hlY2sgdGhhdCBhbGwgU1IgYXJlIHVudXNlZCAoY291bnRlciBlcXVhbCB0byAxMjcp Ki8KKwl2YWwgPSBSRUdfUkQoYnAsIEdSQ0JBU0VfUFhQMiwgUFhQMl9SRUdJU1RFUlNfUkRf U1JfQ05UKTsKKwlpZiAodmFsIDwgMTIzKSB7CisJCUJOWDJYX0VSUigiRXJyb3IsIFBYUDIs IFRoZSBudW1iZXIgb2YgdW51c2VkIFNScyA8IDEyMy4iCisJCQkgICIgRXF1YWwgdG8gJWRc biIsIHZhbCk7CisJCWVycm9ycysrOworCX0KKworLyogQ2hlY2sgdGhhdCBhbGwgcmVhZCBi bG9ja3MgYXJlIHVudXNlZCAqLworCXZhbCA9IFJFR19SRChicCwgR1JDQkFTRV9QWFAyLCBQ WFAyX1JFR0lTVEVSU19SRF9CTEtfQ05UKTsKKwlpZiAodmFsIDwgMTU2KSB7CisJCUJOWDJY X0VSUigiRXJyb3IsIFBYUDIsIFRoZSBudW1iZXIgb2YgdW51c2VkIFJlYWQgYmxvY2tzICIK KwkJCSAgIjwgMTU2LiBFcXVhbCB0byAlZFxuIiwgdmFsKTsKKwkJZXJyb3JzKys7CisJfQor LyogQ2hlY2sgdGhhdCBETUFFIHJlZ2lzdGVycyBnb19jby4uYzE1IGFyZSB6ZXJvICovCisJ dmFyclswXSA9IFJFR19SRChicCwgR1JDQkFTRV9ETUFFLCBETUFFX1JFR0lTVEVSU19HT19D MCk7CisJdmFyclsxXSA9IFJFR19SRChicCwgR1JDQkFTRV9ETUFFLCBETUFFX1JFR0lTVEVS U19HT19DMSk7CisJdmFyclsyXSA9IFJFR19SRChicCwgR1JDQkFTRV9ETUFFLCBETUFFX1JF R0lTVEVSU19HT19DMik7CisJdmFyclszXSA9IFJFR19SRChicCwgR1JDQkFTRV9ETUFFLCBE TUFFX1JFR0lTVEVSU19HT19DMyk7CisJdmFycls0XSA9IFJFR19SRChicCwgR1JDQkFTRV9E TUFFLCBETUFFX1JFR0lTVEVSU19HT19DNCk7CisJdmFycls1XSA9IFJFR19SRChicCwgR1JD QkFTRV9ETUFFLCBETUFFX1JFR0lTVEVSU19HT19DNSk7CisJdmFycls2XSA9IFJFR19SRChi cCwgR1JDQkFTRV9ETUFFLCBETUFFX1JFR0lTVEVSU19HT19DNik7CisJdmFycls3XSA9IFJF R19SRChicCwgR1JDQkFTRV9ETUFFLCBETUFFX1JFR0lTVEVSU19HT19DNyk7CisJdmFycls4 XSA9IFJFR19SRChicCwgR1JDQkFTRV9ETUFFLCBETUFFX1JFR0lTVEVSU19HT19DOCk7CisJ dmFycls5XSA9IFJFR19SRChicCwgR1JDQkFTRV9ETUFFLCBETUFFX1JFR0lTVEVSU19HT19D OSk7CisJdmFyclsxMF0gPSBSRUdfUkQoYnAsIEdSQ0JBU0VfRE1BRSwgRE1BRV9SRUdJU1RF UlNfR09fQzEwKTsKKwl2YXJyWzExXSA9IFJFR19SRChicCwgR1JDQkFTRV9ETUFFLCBETUFF X1JFR0lTVEVSU19HT19DMTEpOworCXZhcnJbMTJdID0gUkVHX1JEKGJwLCBHUkNCQVNFX0RN QUUsIERNQUVfUkVHSVNURVJTX0dPX0MxMik7CisJdmFyclsxM10gPSBSRUdfUkQoYnAsIEdS Q0JBU0VfRE1BRSwgRE1BRV9SRUdJU1RFUlNfR09fQzEzKTsKKwl2YXJyWzE0XSA9IFJFR19S RChicCwgR1JDQkFTRV9ETUFFLCBETUFFX1JFR0lTVEVSU19HT19DMTQpOworCXZhcnJbMTVd ID0gUkVHX1JEKGJwLCBHUkNCQVNFX0RNQUUsIERNQUVfUkVHSVNURVJTX0dPX0MxNSk7CisJ Zm9yIChpID0gMDtpIDwgMTY7IGkrKykgeworCQlpZiAodmFycltpXSAhPSAwKSB7CisJCQlC TlgyWF9FUlIoIkVycm9yLCBETUFFLCBHT19DJWQgaXMgbm90IGVtcHR5LiAiCisJCQkJICAi VmFsdWUgaXMgJWRcbiIsIGksIHZhcnJbaV0pOworCQkJZXJyb3JzKys7CisJCX0KKwl9CisK Ky8qIENoZWNrIHRoYXQgYWxsIEFDIGNvdW50ZXJzIGFyZSBlbXB0eSAoZXhwZWN0IGxlYWRp bmcgY29ubmVjdGlvbiAwKSAqLworCWZvciAoaSA9IDA7IGkgPCBDRkNfUkVHSVNURVJTX0FD VElWSVRZX0NPVU5URVJfU0laRSA7IGkrKykgeworCQl2YWwgPSBSRUdfUkQoYnAsIEdSQ0JB U0VfQ0ZDLAorCQkJICAgICBDRkNfUkVHSVNURVJTX0FDVElWSVRZX0NPVU5URVIgKyBpKjQp OworCQlpZiAoKHZhbCAhPSAwKSAmJiAoaSAhPSAwKSkgeworCQkJQk5YMlhfRVJSKCJFcnJv ciwgQ0ZDOiBMQ0lEICVkLCBBQyBpcyBub3QgemVyby4gIgorCQkJCSAgIkFDIGVxdWFsIHRv ICVkXG4iLCBpLCB2YWwpOworCQkJZXJyb3JzKys7CisJCX0KKwl9CisKKy8qIENoZWNrIHRo YXQgYWxsIFFNIHF1ZXVlcyBhcmUgZW1wdHkgKi8KKwlmb3IgKGkgPSAwOyBpIDwgNjQgOyBp KyspIHsKKwkJdmFsID0gUkVHX1JEKGJwLCBHUkNCQVNFX1FNLCBRTV9SRUdJU1RFUlNfUVRB U0tDVFJfMCArIGkqNCk7CisJCWlmICh2YWwgIT0gMCkgeworCQkJQk5YMlhfRVJSKCJFcnJv ciwgUU06IFEgJWQsIFF1ZXVlIGlzIG5vdCBlbXB0eS4gIgorCQkJCSAgIkZpbGwgbGV2ZWwg aXM6ICVkXG4iLCBpLCB2YWwpOworCQkJZXJyb3JzKys7CisJCX0KKwl9CisKKy8qIENoZWNr IHRoYXQgYWxsIFZPUSAwIGNyZWRpdCBpcyBmdWxsICovCisJdmFsID0gUkVHX1JEKGJwLCBH UkNCQVNFX1FNLCBRTV9SRUdJU1RFUlNfVk9RSU5JVENSRURJVF8wKTsKKwl2YWwyID0gUkVH X1JEKGJwLCBHUkNCQVNFX1FNLCBRTV9SRUdJU1RFUlNfVk9RQ1JFRElUXzApOworCWlmICh2 YWwyICE9IHZhbCkgeworCQlCTlgyWF9FUlIoIkVycm9yLCBRTTogVk9RMCwgVk9RIGNyZWRp dCBub3QgZXF1YWwgdG8gaW5pdGlhbCIKKwkJCSAgIiBjcmVkaXQuIGNyZWRpdDogJWQsIGlu aXRpYWwgY3JlZGl0OiAlZFxuIiwKKwkJCSAgdmFsMiwgdmFsKTsKKwkJZXJyb3JzKys7CisJ fQorCisvKiBDaGVjayB0aGF0IGFsbCBWT1EgMSBjcmVkaXQgaXMgZnVsbCAqLworCXZhbCA9 IFJFR19SRChicCwgR1JDQkFTRV9RTSwgUU1fUkVHSVNURVJTX1ZPUUlOSVRDUkVESVRfMSk7 CisJdmFsMiA9IFJFR19SRChicCwgR1JDQkFTRV9RTSwgUU1fUkVHSVNURVJTX1ZPUUNSRURJ VF8xKTsKKwlpZiAodmFsMiAhPSB2YWwpIHsKKwkJQk5YMlhfRVJSKCJFcnJvciwgUU06IFZP UTEsIFZPUSBjcmVkaXQgbm90IGVxdWFsIHRvIGluaXRpYWwiCisJCQkgICIgY3JlZGl0LiBj cmVkaXQ6ICVkLCBpbml0aWFsIGNyZWRpdDogJWRcbiIsCisJCQkgIHZhbDIsIHZhbCk7CisJ CWVycm9ycysrOworCX0KKworLyogQ2hlY2sgdGhhdCBhbGwgVk9RIDQgY3JlZGl0IGlzIGZ1 bGwgKi8KKwkvKiBDaGVjayB0aGF0IGFsbCBWT1EgMSBjcmVkaXQgaXMgZnVsbCAqLworCXZh bCA9IFJFR19SRChicCwgR1JDQkFTRV9RTSwgUU1fUkVHSVNURVJTX1ZPUUlOSVRDUkVESVRf NCk7CisJdmFsMiA9IFJFR19SRChicCwgR1JDQkFTRV9RTSwgUU1fUkVHSVNURVJTX1ZPUUNS RURJVF80KTsKKwlpZiAodmFsMiAhPSB2YWwpIHsKKwkJQk5YMlhfRVJSKCJFcnJvciwgUU06 IFZPUTQsIFZPUSBjcmVkaXQgbm90IGVxdWFsIHRvIGluaXRpYWwuIgorCQkJICAiIGNyZWRp dDogJWQsIGluaXRpYWwgY3JlZGl0OiAlZFxuIiwgdmFsMiwgdmFsKTsKKwkJZXJyb3JzKys7 CisJfQorCisvKiBDaGVjayB0aGF0IGFsbCBieXRlIGNyZWRpdCBmb3IgcG9ydCAwIGNyZWRp dCBpcyBmdWxsICovCisJdmFsID0gUkVHX1JEKGJwLCBHUkNCQVNFX1FNLCBRTV9SRUdJU1RF UlNfQllURUNSRElOSVRWQUwpOworCXZhbDIgPSBSRUdfUkQoYnAsIEdSQ0JBU0VfUU0sIFFN X1JFR0lTVEVSU19QT1JUMEJZVEVDUkQpOworCWlmICh2YWwyICE9IHZhbCkgeworCQlCTlgy WF9FUlIoIkVycm9yLCBRTTogcG9ydDAsIEJ5dGUgY3JlZGl0IG5vdCBlcXVhbCB0byBpbml0 aWFsIgorCQkJICAiIGNyZWRpdC4gY3JlZGl0OiAlZCwgaW5pdGlhbCBjcmVkaXQ6ICVkXG4i LAorCQkJICB2YWwyLCB2YWwpOworCQllcnJvcnMrKzsKKwl9CisKKy8qIENoZWNrIHRoYXQg YWxsIGJ5dGUgY3JlZGl0IGZvciBwb3J0IDEgY3JlZGl0IGlzIGZ1bGwgKi8KKwl2YWwyID0g UkVHX1JEKGJwLCBHUkNCQVNFX1FNLCBRTV9SRUdJU1RFUlNfUE9SVDFCWVRFQ1JEKTsKKwlp ZiAodmFsMiAhPSB2YWwpIHsKKwkJQk5YMlhfRVJSKCJFcnJvciwgUU06IHBvcnQxLCBCeXRl IGNyZWRpdCBub3QgZXF1YWwgdG8gaW5pdGlhbCAiCisJCQkgICJjcmVkaXQuIGNyZWRpdDog JWQsIGluaXRpYWwgY3JlZGl0OiAlZFxuIiwKKwkJCSAgdmFsMiwgdmFsKTsKKwkJZXJyb3Jz Kys7CisJfQorCisvKiBDaGVjayB0aGF0IFhYcSBsb2NrIHRhYmxlcyBhcmUgZW1wdCAqLwor CXZhbCA9IFJFR19SRChicCwgR1JDQkFTRV9DQ00sIENDTV9SRUdJU1RFUlNfQ0FNX09DQ1VQ KTsKKwlpZiAodmFsICE9IDApIHsKKwkJQk5YMlhfRVJSKCJFcnJvciwgQ0NNOiBDQU0gaXMg bm90IGVtcHR5LiAiCisJCQkgICJPY2N1cGFuY3kgZXF1YWwgdG86ICVkXG4iLCB2YWwpOwor CQllcnJvcnMrKzsKKwl9CisKKwl2YWwgPSBSRUdfUkQoYnAsIEdSQ0JBU0VfWENNLCBYQ01f UkVHSVNURVJTX0NBTV9PQ0NVUCk7CisJaWYgKHZhbCAhPSAwKSB7CisJCUJOWDJYX0VSUigi RXJyb3IsIFhDTTogQ0FNIGlzIG5vdCBlbXB0eS4gIgorCQkJICAiT2NjdXBhbmN5IGVxdWFs IHRvOiAlZFxuIiwgdmFsKTsKKwkJZXJyb3JzKys7CisJfQorCisJdmFsID0gUkVHX1JEKGJw LCBHUkNCQVNFX1RDTSwgVENNX1JFR0lTVEVSU19DQU1fT0NDVVApOworCWlmICh2YWwgIT0g MCkgeworCQlCTlgyWF9FUlIoIkVycm9yLCBUQ006IENBTSBpcyBub3QgZW1wdHkuICIKKwkJ CSAgIk9jY3VwYW5jeSBlcXVhbCB0bzogJWRcbiIsIHZhbCk7CisJCWVycm9ycysrOworCX0K KworCXZhbCA9IFJFR19SRChicCwgR1JDQkFTRV9VQ00sIFVDTV9SRUdJU1RFUlNfQ0FNX09D Q1VQKTsKKwlpZiAodmFsICE9IDApIHsKKwkJQk5YMlhfRVJSKCJFcnJvciwgVUNNOiBDQU0g aXMgbm90IGVtcHR5LiAiCisJCQkgICJPY2N1cGFuY3kgZXF1YWwgdG86ICVkXG4iLCB2YWwp OworCQllcnJvcnMrKzsKKwl9CisKKy8qIENoZWNrIHRoYXQgQlJCMSBpcyBlbXB0eTogICAq LworCXZhbCA9IFJFR19SRChicCwgR1JDQkFTRV9CUkIxLCBCUkIxX1JFR0lTVEVSU19OVU1f T0ZfRlVMTF9CTE9DS1MpOworCWlmICh2YWwgIT0gMCkgeworCQlCTlgyWF9FUlIoIkVycm9y LCBCUkI6IGlzIG5vdCBlbXB0eS4gT2NjdXBhbmN5IGVxdWFsIHRvOiIKKwkJCSAgIiAlZFxu IiwgdmFsKTsKKwkJZXJyb3JzKys7CisJfQorCisvKiBTRU1JIGNoZWNrcyAqLworLyogMS4g Y2hlY2sgdGhyZWFkIHJlYWR5IGlzIGVxdWFsIHRvIDAgKi8KKwl2YWwgPSBSRUdfUkQoYnAs IEdSQ0JBU0VfVFNFTSwgVFNFTV9SRUdJU1RFUlNfU0xFRVBfVEhSRUFEU19WQUxJRCk7CisJ aWYgKHZhbCAhPSAwKSB7CisJCUJOWDJYX0VSUigiRXJyb3IsIFRTRU06IFRoZXJlIGFyZSBz bGVicGluZyB0aHJlYWRzLiAiCisJCQkgICJTbGVicCBtYXNrIGlzIGVxdWFsIHRvOiAlZFxu IiwgdmFsKTsKKwkJZXJyb3JzKys7CisJfQorCisJdmFsID0gUkVHX1JEKGJwLCBHUkNCQVNF X1hTRU0sIFhTRU1fUkVHSVNURVJTX1NMRUVQX1RIUkVBRFNfVkFMSUQpOworCWlmICh2YWwg IT0gMCkgeworCQlCTlgyWF9FUlIoIkVycm9yLCBYU0VNOiBUaGVyZSBhcmUgc2xlYnBpbmcg dGhyZWFkcy4iCisJCQkgICIgU2xlYnAgbWFzayBpcyBlcXVhbCB0bzogJWRcbiIsIHZhbCk7 CisJCWVycm9ycysrOworCX0KKworCXZhbCA9IFJFR19SRChicCwgR1JDQkFTRV9VU0VNLCBV U0VNX1JFR0lTVEVSU19TTEVFUF9USFJFQURTX1ZBTElEKTsKKwlpZiAodmFsICE9IDApIHsK KwkJQk5YMlhfRVJSKCJFcnJvciwgVVNFTTogVGhlcmUgYXJlIHNsZWJwaW5nIHRocmVhZHMu IgorCQkJICAiIFNsZWJwIG1hc2sgaXMgZXF1YWwgdG86ICVkXG4iLCB2YWwpOworCQllcnJv cnMrKzsKKwl9CisKKwl2YWwgPSBSRUdfUkQoYnAsIEdSQ0JBU0VfQ1NFTSwgQ1NFTV9SRUdJ U1RFUlNfU0xFRVBfVEhSRUFEU19WQUxJRCk7CisJaWYgKHZhbCAhPSAwKSB7CisJCUJOWDJY X0VSUigiRXJyb3IsIENTRU06IFRoZXJlIGFyZSBzbGVicGluZyB0aHJlYWRzLiIKKwkJCSAg IiBTbGVicCBtYXNrIGlzIGVxdWFsIHRvOiAlZFxuIiwgdmFsKTsKKwkJZXJyb3JzKys7CisJ fQorCisvKiAyLiBjaGVjayBleHRlcm5hbCBzdG9yZSBmaWZvIGlzIGVtcHR5ICovCisKKwl2 YWwgPSBSRUdfUkQoYnAsIEdSQ0JBU0VfVFNFTSwgVFNFTV9SRUdJU1RFUlNfU0xPV19FWFRf U1RPUkVfRU1QVFkpOworCWlmICh2YWwgIT0gMSkgeworCQlCTlgyWF9FUlIoIkVycm9yLCBU U0VNOiBFeHRlcm5hbCBzdG9yZSBGSUZPIGlzIG5vdCBlbXB0eVxuIik7CisJCWVycm9ycysr OworCX0KKworCXZhbCA9IFJFR19SRChicCwgR1JDQkFTRV9YU0VNLCBYU0VNX1JFR0lTVEVS U19TTE9XX0VYVF9TVE9SRV9FTVBUWSk7CisJaWYgKHZhbCAhPSAxKSB7CisJCUJOWDJYX0VS UigiRXJyb3IsIFhTRU06IEV4dGVybmFsIHN0b3JlIEZJRk8gaXMgbm90IGVtcHR5XG4iKTsK KwkJZXJyb3JzKys7CisJfQorCisJdmFsID0gUkVHX1JEKGJwLCBHUkNCQVNFX1VTRU0sIFVT RU1fUkVHSVNURVJTX1NMT1dfRVhUX1NUT1JFX0VNUFRZKTsKKwlpZiAodmFsICE9IDEpIHsK KwkJQk5YMlhfRVJSKCJFcnJvciwgVVNFTTogRXh0ZXJuYWwgc3RvcmUgRklGTyBpcyBub3Qg ZW1wdHlcbiIpOworCQllcnJvcnMrKzsKKwl9CisKKwl2YWwgPSBSRUdfUkQoYnAsIEdSQ0JB U0VfQ1NFTSwgQ1NFTV9SRUdJU1RFUlNfU0xPV19FWFRfU1RPUkVfRU1QVFkpOworCWlmICh2 YWwgIT0gMSkgeworCQlCTlgyWF9FUlIoIkVycm9yLCBDU0VNOiBFeHRlcm5hbCBzdG9yZSBG SUZPIGlzIG5vdCBlbXB0eVxuIik7CisJCWVycm9ycysrOworCX0KKworLypTRE0gY2hlY2tz Ki8KKy8qMS4gSW5wdXQgcXVldWUgZW1wdHkKKyNzZXQgbmFtZSBbZm9ybWF0ICIlc1NETV9S RUdJU1RFUlNfUVVFVUVfRU1QVFkiICRpbnNdCisjc2V0IGxldmVsIFtyZWdfcmVhZCAtbiAk bmFtZV0KKyNpZiB7JGxldmVsICE9IDEgfSB7CisjICAgIHB1dHMgIkVycm9yLCAkaW5zLVNE TTogUGFyc2VyIGlucHV0IHF1ZXVlIGlzIG5vdCBlbXB0eS4iCisjICAgIGluY3IgZXJyb3Jz CisjfSovCisKKy8qMi4gUGFyc2VyIHNlcmlhbCBGSUZPIGNoZWNrKi8KKwl2YWwgPSBSRUdf UkQoYnAsIEdSQ0JBU0VfVFNETSwgVFNETV9SRUdJU1RFUlNfU1lOQ19QQVJTRVJfRU1QVFkp OworCWlmICh2YWwgIT0gMSkgeworCQlCTlgyWF9FUlIoIkVycm9yLCBUU0RNOiBQYXJzZXIg c2VyaWFsIEZJRk8gaXMgbm90IGVtcHR5LlxuIik7CisJCWVycm9ycysrOworCX0KKworCXZh bCA9IFJFR19SRChicCwgR1JDQkFTRV9YU0RNLCBYU0RNX1JFR0lTVEVSU19TWU5DX1BBUlNF Ul9FTVBUWSk7CisJaWYgKHZhbCAhPSAxKSB7CisJCUJOWDJYX0VSUigiRXJyb3IsIFhTRE06 IFBhcnNlciBzZXJpYWwgRklGTyBpcyBub3QgZW1wdHkuXG4iKTsKKwkJZXJyb3JzKys7CisJ fQorCisJdmFsID0gUkVHX1JEKGJwLCBHUkNCQVNFX1VTRE0sIFVTRE1fUkVHSVNURVJTX1NZ TkNfUEFSU0VSX0VNUFRZKTsKKwlpZiAodmFsICE9IDEpIHsKKwkJQk5YMlhfRVJSKCJFcnJv ciwgVVNETTogUGFyc2VyIHNlcmlhbCBGSUZPIGlzIG5vdCBlbXB0eS5cbiIpOworCQllcnJv cnMrKzsKKwl9CisKKwl2YWwgPSBSRUdfUkQoYnAsIEdSQ0JBU0VfQ1NETSwgQ1NETV9SRUdJ U1RFUlNfU1lOQ19QQVJTRVJfRU1QVFkpOworCWlmICh2YWwgIT0gMSkgeworCQlCTlgyWF9F UlIoIkVycm9yLCBDU0RNOiBQYXJzZXIgc2VyaWFsIEZJRk8gaXMgbm90IGVtcHR5LlxuIik7 CisJCWVycm9ycysrOworCX0KKworLyozLiBQYXJzZXIgc2VyaWFsIEZJRk8gY2hlY2sgKi8K KworCXZhbCA9IFJFR19SRChicCwgR1JDQkFTRV9UU0RNLCBUU0RNX1JFR0lTVEVSU19TWU5D X1NZTkNfRU1QVFkpOworCWlmICh2YWwgIT0gMSkgeworCQlCTlgyWF9FUlIoIkVycm9yLCBU U0RNOiBQYXJzZXIgU1lOQyBzZXJpYWwgRklGTyAiCisJCQkgICJpcyBub3QgZW1wdHkuXG4i KTsKKwkJZXJyb3JzKys7CisJfQorCisJdmFsID0gUkVHX1JEKGJwLCBHUkNCQVNFX1hTRE0s IFhTRE1fUkVHSVNURVJTX1NZTkNfU1lOQ19FTVBUWSk7CisJaWYgKHZhbCAhPSAxKSB7CisJ CUJOWDJYX0VSUigiRXJyb3IsIFhTRE06IFBhcnNlciBTWU5DIHNlcmlhbCBGSUZPICIKKwkJ CSAgImlzIG5vdCBlbXB0eS5cbiIpOworCQllcnJvcnMrKzsKKwl9CisKKwl2YWwgPSBSRUdf UkQoYnAsIEdSQ0JBU0VfVVNETSwgVVNETV9SRUdJU1RFUlNfU1lOQ19TWU5DX0VNUFRZKTsK KwlpZiAodmFsICE9IDEpIHsKKwkJQk5YMlhfRVJSKCJFcnJvciwgVVNETTogUGFyc2VyIFNZ TkMgc2VyaWFsIEZJRk8gIgorCQkJICAiaXMgbm90IGVtcHR5LlxuIik7CisJCWVycm9ycysr OworCX0KKworCXZhbCA9IFJFR19SRChicCwgR1JDQkFTRV9DU0RNLCBDU0RNX1JFR0lTVEVS U19TWU5DX1NZTkNfRU1QVFkpOworCWlmICh2YWwgIT0gMSkgeworCQlCTlgyWF9FUlIoIkVy cm9yLCBDU0RNOiBQYXJzZXIgU1lOQyBzZXJpYWwgRklGTyAiCisJCQkgICJpcyBub3QgZW1w dHkuXG4iKTsKKwkJZXJyb3JzKys7CisJfQorCisvKjQuIHB4cF9jdHJsIHJkX2RhdGEgZmlm byAgZW1wdHkgaW4gc2RtX2RtYV9yc3AgYmxvY2sqLworCXZhbCA9IFJFR19SRChicCwgR1JD QkFTRV9UU0RNLCBUU0RNX1JFR0lTVEVSU19SU1BfUFhQX0NUUkxfUkRBVEFfRU1QVFkpOwor CWlmICh2YWwgIT0gMSkgeworCQlCTlgyWF9FUlIoIkVycm9yLCBUU0RNOiBweHBfY3RybCBy ZF9kYXRhIGZpZm8gIG5vdCBlbXB0eSBpbiAiCisJCQkgICJzZG1fZG1hX3JzcCBibG9jay5c biIpOworCQllcnJvcnMrKzsKKwl9CisKKwl2YWwgPSBSRUdfUkQoYnAsIEdSQ0JBU0VfWFNE TSwgWFNETV9SRUdJU1RFUlNfUlNQX1BYUF9DVFJMX1JEQVRBX0VNUFRZKTsKKwlpZiAodmFs ICE9IDEpIHsKKwkJQk5YMlhfRVJSKCJFcnJvciwgWFNETTogcHhwX2N0cmwgcmRfZGF0YSBm aWZvICBub3QgZW1wdHkgaW4gIgorCQkJICAic2RtX2RtYV9yc3AgYmxvY2suXG4iKTsKKwkJ ZXJyb3JzKys7CisJfQorCisJdmFsID0gUkVHX1JEKGJwLCBHUkNCQVNFX1VTRE0sIFVTRE1f UkVHSVNURVJTX1JTUF9QWFBfQ1RSTF9SREFUQV9FTVBUWSk7CisJaWYgKHZhbCAhPSAxKSB7 CisJCUJOWDJYX0VSUigiRXJyb3IsIFVTRE06IHB4cF9jdHJsIHJkX2RhdGEgZmlmbyAgbm90 IGVtcHR5IGluICIKKwkJCSAgInNkbV9kbWFfcnNwIGJsb2NrLlxuIik7CisJCWVycm9ycysr OworCX0KKworCXZhbCA9IFJFR19SRChicCwgR1JDQkFTRV9DU0RNLCBDU0RNX1JFR0lTVEVS U19SU1BfUFhQX0NUUkxfUkRBVEFfRU1QVFkpOworCWlmICh2YWwgIT0gMSkgeworCQlCTlgy WF9FUlIoIkVycm9yLCBDU0RNOiBweHBfY3RybCByZF9kYXRhIGZpZm8gIG5vdCBlbXB0eSBp biAiCisJCQkgICJzZG1fZG1hX3JzcCBibG9jay5cbiIpOworCQllcnJvcnMrKzsKKwl9CisK Ky8qRE9SUSBmaWxsIGxldmVsIGNoZWNrICovCisJdmFsID0gUkVHX1JEKGJwLCBHUkNCQVNF X0RRLCBET1JRX1JFR0lTVEVSU19EUV9GSUxMX0xWTEYpOworCWlmICh2YWwgIT0gMCkgewor CQlCTlgyWF9FUlIoIkVycm9yLCBET1JROiBET1JRIGlzIG5vdCBlbXB0eS4gT2NjdXBhbmN5 IGVxdWFsIHRvOiIKKwkJCSAgIiAlZC5cbiIsIHZhbCk7CisJCWVycm9ycysrOworCX0KKwor LypDaGVjayB0aGF0IGFsbCBpbnRlcnJ1cHQgc3RhdHVzZXMgYXJlIHplcm8uKi8KKwl2YWwg PSBSRUdfUkQoYnAsIEdSQ0JBU0VfQ0ZDLCBDRkNfUkVHSVNURVJTX0NGQ19JTlRfU1RTKTsK KwlpZiAodmFsICE9IDApIHsKKwkJQk5YMlhfRVJSKCJFcnJvciwgQ0ZDOiBJbnRlcnJ1cHQg c3RhdHVzIGlzIG5vdCB6ZXJvLiAiCisJCQkgICJQZW5kaW5nIGludGVycnVwdHMgZXF1YWwg dG8gMHgleC5cbiIsIHZhbCk7CisJCWVycm9ycysrOworCX0KKworCXZhbCA9IFJFR19SRChi cCwgR1JDQkFTRV9DRFUsIENEVV9SRUdJU1RFUlNfQ0RVX0lOVF9TVFMpOworCWlmICh2YWwg IT0gMCkgeworCQlCTlgyWF9FUlIoIkVycm9yLCBDRFU6IEludGVycnVwdCBzdGF0dXMgaXMg bm90IHplcm8uICIKKwkJCSAgIlBlbmRpbmcgaW50ZXJydXB0cyBlcXVhbCB0byAweCV4Llxu IiwgdmFsKTsKKwkJZXJyb3JzKys7CisJfQorCisJdmFsID0gUkVHX1JEKGJwLCBHUkNCQVNF X0NDTSwgQ0NNX1JFR0lTVEVSU19DQ01fSU5UX1NUUyk7CisJaWYgKHZhbCAhPSAwKSB7CisJ CUJOWDJYX0VSUigiRXJyb3IsIENDTTogSW50ZXJydXB0IHN0YXR1cyBpcyBub3QgemVyby4g IgorCQkJICAiUGVuZGluZyBpbnRlcnJ1cHRzIGVxdWFsIHRvIDB4JXguXG4iLCB2YWwpOwor CQllcnJvcnMrKzsKKwl9CisKKwl2YWwgPSBSRUdfUkQoYnAsIEdSQ0JBU0VfWENNLCBYQ01f UkVHSVNURVJTX1hDTV9JTlRfU1RTKTsKKwlpZiAodmFsICE9IDB4MCkgeworCQlCTlgyWF9F UlIoIkVycm9yLCBYQ006IEludGVycnVwdCBzdGF0dXMgaXMgbm90IDB4MC4gIgorCQkJICAi UGVuZGluZyBpbnRlcnJ1cHRzIGVxdWFsIHRvIDB4JXguXG4iLCB2YWwpOworCQllcnJvcnMr KzsKKwl9CisKKwl2YWwgPSBSRUdfUkQoYnAsIEdSQ0JBU0VfVENNLCBUQ01fUkVHSVNURVJT X1RDTV9JTlRfU1RTKTsKKwlpZiAodmFsICE9IDApIHsKKwkJQk5YMlhfRVJSKCJFcnJvciwg VENNOiBJbnRlcnJ1cHQgc3RhdHVzIGlzIG5vdCB6ZXJvLiAiCisJCQkgICJQZW5kaW5nIGlu dGVycnVwdHMgZXF1YWwgdG8gMHgleC5cbiIsIHZhbCk7CisJCWVycm9ycysrOworCX0KKwor CXZhbCA9IFJFR19SRChicCwgR1JDQkFTRV9VQ00sIFVDTV9SRUdJU1RFUlNfVUNNX0lOVF9T VFMpOworCWlmICh2YWwgIT0gMCkgeworCQlCTlgyWF9FUlIoIkVycm9yLCBVQ006IEludGVy cnVwdCBzdGF0dXMgaXMgbm90IHplcm8uICIKKwkJCSAgIlBlbmRpbmcgaW50ZXJydXB0cyBl cXVhbCB0byAweCV4LlxuIiwgdmFsKTsKKwkJZXJyb3JzKys7CisJfQorCisJdmFsID0gUkVH X1JEKGJwLCBHUkNCQVNFX1BCRiwgUEJGX1JFR0lTVEVSU19QQkZfSU5UX1NUUyk7CisJaWYg KHZhbCAhPSAwKSB7CisJCUJOWDJYX0VSUigiRXJyb3IsIFBCRjogSW50ZXJydXB0IHN0YXR1 cyBpcyBub3QgemVyby4gIgorCQkJICAiUGVuZGluZyBpbnRlcnJ1cHRzIGVxdWFsIHRvIDB4 JXguXG4iLCB2YWwpOworCQllcnJvcnMrKzsKKwl9CisKKwl2YWwgPSBSRUdfUkQoYnAsIEdS Q0JBU0VfVElNRVJTLCBUTV9SRUdJU1RFUlNfVE1fSU5UX1NUUyk7CisJaWYgKHZhbCAhPSAw KSB7CisJCUJOWDJYX0VSUigiRXJyb3IsIFRJTUVSUzogSW50ZXJydXB0IHN0YXR1cyBpcyBu b3QgemVyby4gIgorCQkJICAiUGVuZGluZyBpbnRlcnJ1cHRzIGVxdWFsIHRvIDB4JXguXG4i LCB2YWwpOworCQllcnJvcnMrKzsKKwl9CisKKwl2YWwgPSBSRUdfUkQoYnAsIEdSQ0JBU0Vf RFEsIERPUlFfUkVHSVNURVJTX0RPUlFfSU5UX1NUUyk7CisJaWYgKHZhbCAhPSAwKSB7CisJ CUJOWDJYX0VSUigiRXJyb3IsIERPUlE6IEludGVycnVwdCBzdGF0dXMgaXMgbm90IHplcm8u ICIKKwkJCSAgIlBlbmRpbmcgaW50ZXJydXB0cyBlcXVhbCB0byAweCV4LlxuIiwgdmFsKTsK KwkJZXJyb3JzKys7CisJfQorCisJdmFsID0gUkVHX1JEKGJwLCBHUkNCQVNFX1NSQ0gsIFNS Q19SRUdJU1RFUlNfU1JDX0lOVF9TVFMpOworCWlmICh2YWwgIT0gMCkgeworCQlCTlgyWF9F UlIoIkVycm9yLCBTUkM6IEludGVycnVwdCBzdGF0dXMgaXMgbm90IHplcm8uICIKKwkJCSAg IlBlbmRpbmcgaW50ZXJydXB0cyBlcXVhbCB0byAweCV4LlxuIiwgdmFsKTsKKwkJZXJyb3Jz Kys7CisJfQorCisJdmFsID0gUkVHX1JEKGJwLCBHUkNCQVNFX1BSUywgUFJTX1JFR0lTVEVS U19QUlNfSU5UX1NUUyk7CisJaWYgKHZhbCAhPSAwKSB7CisJCUJOWDJYX0VSUigiRXJyb3Is IFBSUzogSW50ZXJydXB0IHN0YXR1cyBpcyBub3QgemVyby4gIgorCQkJICAiUGVuZGluZyBp bnRlcnJ1cHRzIGVxdWFsIHRvIDB4JXguXG4iLCB2YWwpOworCQllcnJvcnMrKzsKKwl9CisK Kwl2YWwgPSBSRUdfUkQoYnAsIEdSQ0JBU0VfQlJCMSwgQlJCMV9SRUdJU1RFUlNfQlJCMV9J TlRfU1RTKTsKKwlpZiAoKHZhbCAmIH4weEZDMDApICE9IDApIHsKKwkJQk5YMlhfRVJSKCJF cnJvciwgQlJCMTogSW50ZXJydXB0IHN0YXR1cyBpcyBub3QgemVyby4gIgorCQkJICAiUGVu ZGluZyBpbnRlcnJ1cHRzIGVxdWFsIHRvIDB4JXguXG4iLCB2YWwpOworCQllcnJvcnMrKzsK Kwl9CisKKy8qIENoZWNrIHB4cCBQT1JUIDAgaW50ZXJydXB0cyAqLworCXZhbCA9IFJFR19S RChicCwgR1JDQkFTRV9QWFAsIFBYUF9SRUdJU1RFUlNfUFhQX0lOVF9TVFNfMCk7CisJaWYg KHZhbCAhPSAwKSB7CisJCUJOWDJYX0VSUigiRXJyb3IsIFBYUCAwOiBJbnRlcnJ1cHQgc3Rh dHVzIGlzIG5vdCB6ZXJvLiAiCisJCQkgICJQZW5kaW5nIGludGVycnVwdHMgZXF1YWwgdG8g MHgleC5cbiIsIHZhbCk7CisJCWVycm9ycysrOworCX0KKworLyogQ2hlY2sgcHhwIFBPUlQg MSBpbnRlcnJ1cHRzICovCisJdmFsID0gUkVHX1JEKGJwLCBHUkNCQVNFX1BYUCwgUFhQX1JF R0lTVEVSU19QWFBfSU5UX1NUU18xKTsKKwlpZiAodmFsICE9IDApIHsKKwkJQk5YMlhfRVJS KCJFcnJvciwgUFhQIDE6IEludGVycnVwdCBzdGF0dXMgaXMgbm90IHplcm8uICIKKwkJCSAg IlBlbmRpbmcgaW50ZXJydXB0cyBlcXVhbCB0byAweCV4LlxuIiwgdmFsKTsKKwkJZXJyb3Jz Kys7CisJfQorCisvKiBDaGVjayBVUEIgaW50ZXJydXB0cyAqLworCXZhbCA9IFJFR19SRChi cCwgR1JDQkFTRV9VUEIsIFBCX1JFR0lTVEVSU19QQl9JTlRfU1RTKTsKKwlpZiAodmFsICE9 IDApIHsKKwkJQk5YMlhfRVJSKCJFcnJvciwgUEI6IEludGVycnVwdCBzdGF0dXMgaXMgbm90 IHplcm8uICIKKwkJCSAgIlBlbmRpbmcgaW50ZXJydXB0cyBlcXVhbCB0byAweCV4LlxuIiwg dmFsKTsKKwkJZXJyb3JzKys7CisJfQorCisvKiBDaGVjayBYUEIgaW50ZXJydXB0cyAqLwor CXZhbCA9IFJFR19SRChicCwgR1JDQkFTRV9YUEIsIFBCX1JFR0lTVEVSU19QQl9JTlRfU1RT KTsKKwlpZiAodmFsICE9IDApIHsKKwkJQk5YMlhfRVJSKCJFcnJvciwgUEI6IEludGVycnVw dCBzdGF0dXMgaXMgbm90IHplcm8uICIKKwkJCSAgIlBlbmRpbmcgaW50ZXJydXB0cyBlcXVh bCB0byAweCV4LlxuIiwgdmFsKTsKKwkJZXJyb3JzKys7CisJfQorCisvKkNoZWNrIGNyZWRp dHMgb2YgdGhlIERPUlEgdG8gdGhlIFhDTSovCisJdmFsID0gUkVHX1JEKGJwLCBHUkNCQVNF X0RRLCBET1JRX1JFR0lTVEVSU19SU1BBX0NSRF9DTlQpOworCWlmICh2YWwgIT0gMikgewor CQlCTlgyWF9FUlIoIkVycm9yIERPUlEsIENyZWRpdCB0byBYQ00gaXMgbm90IGZ1bGwuICIK KwkJCSAgIlZhbHVlIGlzICVkXG4iLCB2YWwpOworCQllcnJvcnMrKzsKKwl9CisKKy8qQ2hl Y2sgY3JlZGl0cyBvZiB0aGUgRE9SUSB0byB0aGUgVUNNKi8KKwl2YWwgPSBSRUdfUkQoYnAs IEdSQ0JBU0VfRFEsIERPUlFfUkVHSVNURVJTX1JTUEFfQ1JEX0NOVCk7CisJaWYgKHZhbCAh PSAyKSB7CisJCUJOWDJYX0VSUigiRXJyb3IgRE9SUSwgQ3JlZGl0IHRvIFVDTSBpcyBub3Qg ZnVsbC4iCisJCQkgICIgVmFsdWUgaXMgJWRcbiIsIHZhbCk7CisJCWVycm9ycysrOworCX0K KworLyogQ2hlY2sgdGhlcmUgYXJlIG5vIFFNIFZPUSBhbmQgYnl0ZSBjcmVkaXQgZXJyb3Jz Ki8KKwl2YWwgPSBSRUdfUkQoYnAsIEdSQ0JBU0VfUU0sIFFNX1JFR0lTVEVSU19WT1FDUkRF UlJSRUcpOworCWlmICh2YWwgIT0gMCkgeworCQlCTlgyWF9FUlIoIkVycm9yIFFNLCBDcmVk aXQgZXJyb3IgcmVnaXN0ZXIgaXMgbm90IHplcm8iCisJCQkgICIoYnl0ZSBvciBjcmVkaXQg b3ZlcmZsb3cvdW5kZXJmbG93KS4gVmFsdWUgaXMgJWRcbiIsCisJCSAgIHZhbCk7CisJCWVy cm9ycysrOworCX0KKy8qIENoZWNrIHRoYXQgQ0ZDIG51bV9sY2lkX2luc2lkZSBpcyA8PTIg Ki8KKwl2YWwgPSBSRUdfUkQoYnAsIEdSQ0JBU0VfQ0ZDLCBDRkNfUkVHSVNURVJTX05VTV9M Q0lEU19JTlNJREUpOworCWlmICh2YWwgPiAyKSB7CisJCUJOWDJYX0VSUigiRXJyb3IgQ0ZD LCBudW1fbGNpZF9pbnNpZGUgaXMgbGFyZ2VyIHRoYW4gMi4gIgorCQkJICAiVmFsdWUgaXMg JWRcbiIsIHZhbCk7CisJCWVycm9ycysrOworCX0KKworCXZhbCA9IFJFR19SRChicCwgR1JD QkFTRV9DRkMsIENGQ19SRUdJU1RFUlNfRVJST1JfVkVDVE9SKTsKKwlpZiAodmFsICE9IDAp IHsKKwkJQk5YMlhfRVJSKCJFcnJvciBDRkMsIGVycm9yIHZlY3RvciBpcyBub3QgemVyby4g VmFsdWUgaXMgJWRcbiIsCisJCQkgIHZhbCk7CisJCWVycm9ycysrOworCX0KKworCXZhbCA9 IFJFR19SRChicCwgR1JDQkFTRV9DRkMsIENGQ19SRUdJU1RFUlNfTlVNX0xDSURTX0FSUklW SU5HKTsKKwlpZiAodmFsICE9IDApIHsKKwkJQk5YMlhfRVJSKCJFcnJvciBDRkMsIG51bWJl ciBvZiBhcnJpdmluZyBMQ0lEcyBpcyBub3QgemVyby4gIgorCQkJICAiVmFsdWUgaXMgJWRc biIsIHZhbCk7CisJCWVycm9ycysrOworCX0KKworCXZhbCA9IFJFR19SRChicCwgR1JDQkFT RV9DRkMsIENGQ19SRUdJU1RFUlNfTlVNX0xDSURTX0FMTE9DKTsKKwlpZiAodmFsICE9IDAp IHsKKwkJQk5YMlhfRVJSKCJFcnJvciBDRkMsIG51bWJlciBvZiBhbGxvYyBMQ0lEcyBpcyBu b3QgemVyby4gIgorCQkJICAiVmFsdWUgaXMgJWRcbiIsIHZhbCk7CisJCWVycm9ycysrOwor CX0KKworCXZhbCA9IFJFR19SRChicCwgR1JDQkFTRV9DRkMsIENGQ19SRUdJU1RFUlNfTlVN X0xDSURTX0xFQVZJTkcpOworCWlmICh2YWwgIT0gMCkgeworCQlCTlgyWF9FUlIoIkVycm9y IENGQywgbnVtYmVyIG9mIGxlYXZpbmcgTENJRHMgaXMgbm90IHplcm8uICIKKwkJCSAgIlZh bHVlIGlzICVkXG4iLCB2YWwpOworCQllcnJvcnMrKzsKKwl9CisKKworCXZhbCA9IFJFR19S RChicCwgR1JDQkFTRV9DRkMsIENGQ19SRUdJU1RFUlNfTlVNX0xDSURTX0xFQVZJTkcpOwor CWlmICh2YWwgIT0gMCkgeworCQlCTlgyWF9FUlIoIkVycm9yIENGQywgbnVtYmVyIG9mIGxl YXZpbmcgTENJRHMgaXMgbm90IHplcm8uICIKKwkJCSAgIlZhbHVlIGlzICVkXG4iLCB2YWwp OworCQllcnJvcnMrKzsKKwl9CisKKwl2YWwgPSBSRUdfUkQoYnAsIEdSQ0JBU0VfRFEsIERP UlFfUkVHSVNURVJTX0RRX0ZVTExfU1QpOworCWlmICh2YWwgIT0gMCkgeworCQlCTlgyWF9F UlIoIkVycm9yIERPUlFfUkVHSVNURVJTX0RRX0ZVTExfU1QgaXMgbm90IHplcm8gIgorCQkJ ICAiVmFsdWUgaXMgJWRcbiIsIHZhbCk7CisJCWVycm9ycysrOworCX0KKworCS8qIENoZWNr IEFFVSByZWdpc3RlcnMgKGZ1bmMgMCkgKi8KKwl2YWwgPSBSRUdfUkQoYnAsIEdSQ0JBU0Vf TUlTQywKKwkJICAgICBNSVNDX1JFR0lTVEVSU19BRVVfQUZURVJfSU5WRVJUXzFfRlVOQ18w KTsKKwlpZiAoKHZhbCAmIH4weENGRkMpICE9IDApIHsKKwkJQk5YMlhfRVJSKCJXYXJuaW5n IE1JU0NfUkVHSVNURVJTX0FFVV9BRlRFUl9JTlZFUlRfMV9GVU5DXzAiCisJCQkgICIgYWZ0 ZXIgbWFzayAhPTAgKCV4KS4gbm8gc3VwcG9ydCBvZiAiCisJCQkgICJVTklDT1JFIGluIGRy aXZlciB5ZXRcbiIsICh2YWwgJiB+MHhDRkZDKSk7CisJCXdhcm5pbmdzKys7CisJfQorCXZh bCA9IFJFR19SRChicCwgR1JDQkFTRV9NSVNDLAorCQkgICAgIE1JU0NfUkVHSVNURVJTX0FF VV9BRlRFUl9JTlZFUlRfMl9GVU5DXzApOworCWlmICh2YWwgIT0gMCkgeworCQlCTlgyWF9F UlIoIkVycm9yIE1JU0NfUkVHSVNURVJTX0FFVV9BRlRFUl9JTlZFUlRfMl9GVU5DXzAiCisJ CQkgICIgaXMgbm90IHplcm8uIFZhbHVlIGlzICV4XG4iLCB2YWwpOworCQllcnJvcnMrKzsK Kwl9CisJdmFsID0gUkVHX1JEKGJwLCBHUkNCQVNFX01JU0MsCisJCSAgICAgTUlTQ19SRUdJ U1RFUlNfQUVVX0FGVEVSX0lOVkVSVF8zX0ZVTkNfMCk7CisJaWYgKCh2YWwgJiB+MHhDMjAw MDAwMCkgIT0gMCkgeworCQlCTlgyWF9FUlIoIkVycm9yIE1JU0NfUkVHSVNURVJTX0FFVV9B RlRFUl9JTlZFUlRfM19GVU5DXzAgIT0wICIKKwkJCSAgIigleCkuIG5vIE1DUCBjb2RlLlxu IiwgKHZhbCAmIH4weEMyMDAwMDAwKSk7CisJCXdhcm5pbmdzKys7CisJfQorCXZhbCA9IFJF R19SRChicCwgR1JDQkFTRV9NSVNDLAorCQkgICAgIE1JU0NfUkVHSVNURVJTX0FFVV9BRlRF Ul9JTlZFUlRfNF9GVU5DXzApOworCWlmICgodmFsICYgfjB4RkZGRkZGKSAhPSAwKSB7CisJ CUJOWDJYX0VSUigiRXJyb3IgTUlTQ19SRUdJU1RFUlNfQUVVX0FGVEVSX0lOVkVSVF80X0ZV TkNfMCIKKwkJCSAgIiBhZnRlciBtYXNrIGlzIG5vdCB6ZXJvLiBWYWx1ZSBpcyAleFxuIiwK KwkJCSAgKHZhbCAmIH4weEZGRkZGKSk7CisJCXdhcm5pbmdzKys7CisJfQorCisJLyogQ2hl Y2sgQUVVIHJlZ2lzdGVycyAoZnVuYyAxKSAqLworCXZhbCA9IFJFR19SRChicCwgR1JDQkFT RV9NSVNDLAorCQkgICAgIE1JU0NfUkVHSVNURVJTX0FFVV9BRlRFUl9JTlZFUlRfMV9GVU5D XzEpOworCWlmICgodmFsICYgfjB4Q0ZGQykgIT0gMCkgeworCQlCTlgyWF9FUlIoIldhcm5p bmcgTUlTQ19SRUdJU1RFUlNfQUVVX0FGVEVSX0lOVkVSVF8xX0ZVTkNfMSIKKwkJCSAgIiBh ZnRlciBtYXNrICE9MCAoJXgpXG4iLCAodmFsICYgfjB4Q0ZGQykpOworCQl3YXJuaW5ncysr OworCX0KKwl2YWwgPSBSRUdfUkQoYnAsIEdSQ0JBU0VfTUlTQywKKwkJICAgICBNSVNDX1JF R0lTVEVSU19BRVVfQUZURVJfSU5WRVJUXzJfRlVOQ18xKTsKKwlpZiAodmFsICE9IDApIHsK KwkJQk5YMlhfRVJSKCJFcnJvciBNSVNDX1JFR0lTVEVSU19BRVVfQUZURVJfSU5WRVJUXzJf RlVOQ18xIgorCQkJICAiIGlzIG5vdCB6ZXJvLiBWYWx1ZSBpcyAleFxuIiwgdmFsKTsKKwkJ d2FybmluZ3MrKzsKKwl9CisJdmFsID0gUkVHX1JEKGJwLCBHUkNCQVNFX01JU0MsCisJCSAg ICAgTUlTQ19SRUdJU1RFUlNfQUVVX0FGVEVSX0lOVkVSVF8zX0ZVTkNfMSk7CisJaWYgKCh2 YWwgJiB+MHhDMjAwMDAwMCkgIT0gMCkgeworCQlCTlgyWF9FUlIoIkVycm9yIE1JU0NfUkVH SVNURVJTX0FFVV9BRlRFUl9JTlZFUlRfM19GVU5DXzEiCisJCQkgICIgIT0wICgleCkuIG5v IE1DUCBjb2RlLlxuIiwgKHZhbCAmIH4weEMyMDAwMDAwKSk7CisJCXdhcm5pbmdzKys7CisJ fQorCXZhbCA9IFJFR19SRChicCwgR1JDQkFTRV9NSVNDLAorCQkgICAgIE1JU0NfUkVHSVNU RVJTX0FFVV9BRlRFUl9JTlZFUlRfNF9GVU5DXzEpOworCWlmICgodmFsICYgfjB4RkZGRkZG KSAhPSAwKSB7CisJCUJOWDJYX0VSUigiRXJyb3IgTUlTQ19SRUdJU1RFUlNfQUVVX0FGVEVS X0lOVkVSVF80X0ZVTkNfMSIKKwkJCSAgIiBhZnRlciBtYXNrIGlzIG5vdCB6ZXJvLiBWYWx1 ZSBpcyAleFxuIiwKKwkJCSAgKHZhbCAmIH4weEZGRkZGKSk7CisJCXdhcm5pbmdzKys7CisJ fQorCisJLyogQ2hlY2sgQUVVIHJlZ2lzdGVycyAoTUNQKSAqLworCXZhbCA9IFJFR19SRChi cCwgR1JDQkFTRV9NSVNDLCBNSVNDX1JFR0lTVEVSU19BRVVfQUZURVJfSU5WRVJUXzFfTUNQ KTsKKwlpZiAoKHZhbCAmIH4weENGRkMpICE9IDApIHsKKwkJQk5YMlhfRVJSKCJXYXJuaW5n IE1JU0NfUkVHSVNURVJTX0FFVV9BRlRFUl9JTlZFUlRfMV9NQ1AiCisJCQkgICIgYWZ0ZXIg bWFzayAhPTAgKCV4KS5cbiIsICh2YWwgJiB+MHhDRkZDKSk7CisJCXdhcm5pbmdzKys7CisJ fQorCXZhbCA9IFJFR19SRChicCwgR1JDQkFTRV9NSVNDLCBNSVNDX1JFR0lTVEVSU19BRVVf QUZURVJfSU5WRVJUXzJfTUNQKTsKKwlpZiAodmFsICE9IDApIHsKKwkJQk5YMlhfRVJSKCJX YXJuaW5nIE1JU0NfUkVHSVNURVJTX0FFVV9BRlRFUl9JTlZFUlRfMl9NQ1AgaXMiCisJCQkg ICIgbm90IHplcm8uIFZhbHVlIGlzICV4XG4iLCB2YWwpOworCQllcnJvcnMrKzsKKwl9CisJ dmFsID0gUkVHX1JEKGJwLCBHUkNCQVNFX01JU0MsIE1JU0NfUkVHSVNURVJTX0FFVV9BRlRF Ul9JTlZFUlRfM19NQ1ApOworCWlmICgodmFsICYgfjB4QzIwMDAwMDApICE9IDApIHsKKwkJ Qk5YMlhfRVJSKCJXYXJuaW5nIE1JU0NfUkVHSVNURVJTX0FFVV9BRlRFUl9JTlZFUlRfM19N Q1AgIT0wICIKKwkJCSAgIigleCkuIG5vIE1DUCBjb2RlLlxuIiwgKHZhbCAmIH4weEMyMDAw MDAwKSk7CisJCXdhcm5pbmdzKys7CisJfQorCXZhbCA9IFJFR19SRChicCwgR1JDQkFTRV9N SVNDLCBNSVNDX1JFR0lTVEVSU19BRVVfQUZURVJfSU5WRVJUXzRfTUNQKTsKKwlpZiAoKHZh bCAmIH4weEZGRkZGRikgIT0gMCkgeworCQlCTlgyWF9FUlIoIkVycm9yIE1JU0NfUkVHSVNU RVJTX0FFVV9BRlRFUl9JTlZFUlRfNF9NQ1AiCisJCQkgICIgYWZ0ZXIgbWFzayBpcyBub3Qg emVyby4gVmFsdWUgaXMgJXhcbiIsCisJCQkgICh2YWwgJiB+MHhGRkZGRikpOworCQl3YXJu aW5ncysrOworCX0KKworCS8qIEFkZCBpZGxlIGNoZWNrcyBmb3IgUEJGIGJsb2NrICovCisJ aWYgKCFSRUdfUkQoYnAsIEdSQ0JBU0VfUEJGLCBQQkZfUkVHSVNURVJTX0RJU0FCTEVfTkVX X1RBU0tfUFJPQ19QMCkpIHsKKwkJdmFsID0gUkVHX1JEKGJwLCBHUkNCQVNFX1BCRiwgUEJG X1JFR0lTVEVSU19QMF9DUkVESVQpOworCQl2YWwyID0gUkVHX1JEKGJwLCBHUkNCQVNFX1BC RiwgUEJGX1JFR0lTVEVSU19QMF9JTklUX0NSRCk7CisJCWlmICh2YWwgIT0gdmFsMikgewor CQkJQk5YMlhfRVJSKCJFcnJvciBQQkYsIFBCRl9SRUdJU1RFUlNfUDBfQ1JFRElUICVkICIK KwkJCQkgICJkaWZmZXJzIFBCRl9SRUdJU1RFUlNfUDBfSU5JVF9DUkQgJWRcbiIsCisJCQkJ ICAgdmFsLCB2YWwyKTsKKwkJCWVycm9ycysrOworCQl9CisJfQorCisJaWYgKCFSRUdfUkQo YnAsIEdSQ0JBU0VfUEJGLCBQQkZfUkVHSVNURVJTX0RJU0FCTEVfTkVXX1RBU0tfUFJPQ19Q MSkpIHsKKwkJdmFsID0gUkVHX1JEKGJwLCBHUkNCQVNFX1BCRiwgUEJGX1JFR0lTVEVSU19Q MV9DUkVESVQpOworCQl2YWwyID0gUkVHX1JEKGJwLCBHUkNCQVNFX1BCRiwgUEJGX1JFR0lT VEVSU19QMV9JTklUX0NSRCk7CisJCWlmICh2YWwgIT0gdmFsMikgeworCQkJQk5YMlhfRVJS KCJFcnJvciBQQkYsIFBCRl9SRUdJU1RFUlNfUDFfQ1JFRElUICVkIgorCQkJCSAgIiBkaWZm ZXJzIFBCRl9SRUdJU1RFUlNfUDFfSU5JVF9DUkQgJWRcbiIsCisJCQkJICB2YWwsIHZhbDIp OworCQkJZXJyb3JzKys7CisJCX0KKwl9CisKKwl2YWwgPSBSRUdfUkQoYnAsIEdSQ0JBU0Vf UEJGLCBQQkZfUkVHSVNURVJTX1A0X0NSRURJVCk7CisJdmFsMiA9IFJFR19SRChicCwgR1JD QkFTRV9QQkYsIFBCRl9SRUdJU1RFUlNfUDRfSU5JVF9DUkQpOworCWlmICh2YWwgIT0gdmFs MikgeworCQlCTlgyWF9FUlIoIkVycm9yIFBCRiwgUEJGX1JFR0lTVEVSU19QNF9DUkVESVQg JWQgZGlmZmVycyIKKwkJCSAgIiBQQkZfUkVHSVNURVJTX1A0X0lOSVRfQ1JEICVkXG4iLCB2 YWwsIHZhbDIpOworCQllcnJvcnMrKzsKKwl9CisJdmFsID0gUkVHX1JEKGJwLCBHUkNCQVNF X1BCRiwgUEJGX1JFR0lTVEVSU19QMF9UQVNLX0NOVCk7CisJaWYgKHZhbCAhPSAwKSB7CisJ CUJOWDJYX0VSUigiRXJyb3IgUEJGLCBQQkZfUkVHSVNURVJTX1AwX1RBU0tfQ05UIGlzIG5v dCB6ZXJvLiIKKwkJCSAgIiBWYWx1ZSBpcyAlZCBcbiIsIHZhbCk7CisJCWVycm9ycysrOwor CX0KKwl2YWwgPSBSRUdfUkQoYnAsIEdSQ0JBU0VfUEJGLCBQQkZfUkVHSVNURVJTX1AxX1RB U0tfQ05UKTsKKwlpZiAodmFsICE9IDApIHsKKwkJQk5YMlhfRVJSKCJFcnJvciBQQkYsIFBC Rl9SRUdJU1RFUlNfUDFfVEFTS19DTlQgaXMgbm90IHplcm8uIgorCQkJICAiIFZhbHVlIGlz ICVkIFxuIiwgdmFsKTsKKwkJZXJyb3JzKys7CisJfQorCXZhbCA9IFJFR19SRChicCwgR1JD QkFTRV9QQkYsIFBCRl9SRUdJU1RFUlNfUDRfVEFTS19DTlQpOworCWlmICh2YWwgIT0gMCkg eworCQlCTlgyWF9FUlIoIkVycm9yIFBCRiwgUEJGX1JFR0lTVEVSU19QNF9UQVNLX0NOVCBp cyBub3QgemVyby4iCisJCQkgICIgVmFsdWUgaXMgJWQgXG4iLCB2YWwpOworCQllcnJvcnMr KzsKKwl9CisKKwkvKiBFeHRyYSBjaGVja3MgZm9yIFhDTSBibG9ja3MgKi8KKwl2YWwgPSBS RUdfUkQoYnAsIEdSQ0JBU0VfWENNLCBYQ01fUkVHSVNURVJTX0NGQ19JTklUX0NSRCk7CisJ aWYgKHZhbCAhPSAxKSB7CisJCUJOWDJYX0VSUigiRXJyb3IgWENNLCBYQ01fUkVHSVNURVJT X0NGQ19JTklUX0NSRCAhPSAxLCIKKwkJCSAgIiBWYWx1ZSBpcyAlZFxuIiwgdmFsKTsKKwkJ ZXJyb3JzKys7CisJfQorCXZhbCA9IFJFR19SRChicCwgR1JDQkFTRV9YQ00sIFhDTV9SRUdJ U1RFUlNfWFFNX0lOSVRfQ1JEKTsKKwlpZiAodmFsICE9IDMyKSB7CisJCUJOWDJYX0VSUigi RXJyb3IgWENNLCBYQ01fUkVHSVNURVJTX1hRTV9JTklUX0NSRCAhPSAzMiwiCisJCQkgICIg VmFsdWUgaXMgJWRcbiIsIHZhbCk7CisJCWVycm9ycysrOworCX0KKwl2YWwgPSBSRUdfUkQo YnAsIEdSQ0JBU0VfWENNLCBYQ01fUkVHSVNURVJTX1RNX0lOSVRfQ1JEKTsKKwlpZiAodmFs ICE9IDQpIHsKKwkJQk5YMlhfRVJSKCJFcnJvciBYQ00sIFhDTV9SRUdJU1RFUlNfVE1fSU5J VF9DUkQgZGlmZmVyZW50ICIKKwkJCSAgInRoYW4gNCxWYWx1ZSBpcyAlZFxuIiwgdmFsKTsK KwkJZXJyb3JzKys7CisJfQorCXZhbCA9IFJFR19SRChicCwgR1JDQkFTRV9YQ00sIFhDTV9S RUdJU1RFUlNfRklDMF9JTklUX0NSRCk7CisJaWYgKHZhbCAhPSA2NCkgeworCQlCTlgyWF9F UlIoIkVycm9yIFhDTSwgWENNX1JFR0lTVEVSU19GSUMwX0lOSVRfQ1JEIGRpZmZlcmVudCIK KwkJCSAgIiB0aGFuIDY0LCBWYWx1ZSBpcyAlZFxuIiwgdmFsKTsKKwkJZXJyb3JzKys7CisJ fQorCXZhbCA9IFJFR19SRChicCwgR1JDQkFTRV9YQ00sIFhDTV9SRUdJU1RFUlNfRklDMV9J TklUX0NSRCk7CisJaWYgKHZhbCAhPSA2NCkgeworCQlCTlgyWF9FUlIoIkVycm9yIFhDTSwg WENNX1JFR0lTVEVSU19GSUMxX0lOSVRfQ1JEIGRpZmZlcmVudCIKKwkJCSAgIiB0aGFuIDY0 LCBWYWx1ZSBpcyAlZFxuIiwgdmFsKTsKKwkJZXJyb3JzKys7CisJfQorCS8qIEV4dHJhIGNo ZWNrcyBmb3IgVUNNIGJsb2NrcyAqLworCXZhbCA9IFJFR19SRChicCwgR1JDQkFTRV9VQ00s IFVDTV9SRUdJU1RFUlNfQ0ZDX0lOSVRfQ1JEKTsKKwlpZiAodmFsICE9IDEpIHsKKwkJQk5Y MlhfRVJSKCJFcnJvciBVQ00sIFVDTV9SRUdJU1RFUlNfQ0ZDX0lOSVRfQ1JEIGRpZmZlcmVu dCIKKwkJCSAgIiB0aGFuIDEsIFZhbHVlIGlzICVkXG4iLCB2YWwpOworCQllcnJvcnMrKzsK Kwl9CisJdmFsID0gUkVHX1JEKGJwLCBHUkNCQVNFX1VDTSwgVUNNX1JFR0lTVEVSU19VUU1f SU5JVF9DUkQpOworCWlmICh2YWwgIT0gMzIpIHsKKwkJQk5YMlhfRVJSKCJFcnJvciBVQ00s IFVDTV9SRUdJU1RFUlNfVVFNX0lOSVRfQ1JEIGRpZmZlcmVudCIKKwkJCSAgIiB0aGFuIDMy LCBWYWx1ZSBpcyAlZFxuIiwgdmFsKTsKKwkJZXJyb3JzKys7CisJfQorCXZhbCA9IFJFR19S RChicCwgR1JDQkFTRV9VQ00sIFVDTV9SRUdJU1RFUlNfVE1fSU5JVF9DUkQpOworCWlmICh2 YWwgIT0gNCkgeworCQlCTlgyWF9FUlIoIkVycm9yIFVDTSwgVUNNX1JFR0lTVEVSU19UTV9J TklUX0NSRCBkaWZmZXJlbnQiCisJCQkgICIgdGhhbiA0LCBWYWx1ZSBpcyAlZFxuIiwgdmFs KTsKKwkJZXJyb3JzKys7CisJfQorCXZhbCA9IFJFR19SRChicCwgR1JDQkFTRV9VQ00sIFVD TV9SRUdJU1RFUlNfRklDMF9JTklUX0NSRCk7CisJaWYgKHZhbCAhPSA2NCkgeworCQlCTlgy WF9FUlIoIkVycm9yIFVDTSwgVUNNX1JFR0lTVEVSU19GSUMwX0lOSVRfQ1JEIGRpZmZlcmVu dCIKKwkJCSAgIiB0aGFuIDY0LCBWYWx1ZSBpcyAlZFxuIiwgdmFsKTsKKwkJZXJyb3JzKys7 CisJfQorCXZhbCA9IFJFR19SRChicCwgR1JDQkFTRV9VQ00sIFVDTV9SRUdJU1RFUlNfRklD MV9JTklUX0NSRCk7CisJaWYgKHZhbCAhPSA2NCkgeworCQlCTlgyWF9FUlIoIkVycm9yIFVD TSwgVUNNX1JFR0lTVEVSU19GSUMxX0lOSVRfQ1JEIGRpZmZlcmVudCIKKwkJCSAgIiB0aGFu IDY0LCBWYWx1ZSBpcyAlZFxuIiwgdmFsKTsKKwkJZXJyb3JzKys7CisJfQorCS8qICBFeHRy YSBjaGVja3MgZm9yIFRDTSBibG9ja3MgKi8KKwl2YWwgPSBSRUdfUkQoYnAsIEdSQ0JBU0Vf VENNLCBUQ01fUkVHSVNURVJTX0NGQ19JTklUX0NSRCk7CisJaWYgKHZhbCAhPSAxKSB7CisJ CUJOWDJYX0VSUigiRXJyb3IgVENNLCBUQ01fUkVHSVNURVJTX0NGQ19JTklUX0NSRCBkaWZm ZXJlbnQgIgorCQkJICAidGhhbiAxLCBWYWx1ZSBpcyAlZFxuIiwgdmFsKTsKKwkJZXJyb3Jz Kys7CisJfQorCXZhbCA9IFJFR19SRChicCwgR1JDQkFTRV9UQ00sIFRDTV9SRUdJU1RFUlNf VFFNX0lOSVRfQ1JEKTsKKwlpZiAodmFsICE9IDMyKSB7CisJCUJOWDJYX0VSUigiRXJyb3Ig VENNLCBUQ01fUkVHSVNURVJTX1RRTV9JTklUX0NSRCBkaWZmZXJlbnQgIgorCQkJICAidGhh biAzMiwgVmFsdWUgaXMgJWRcbiIsIHZhbCk7CisJCWVycm9ycysrOworCX0KKwl2YWwgPSBS RUdfUkQoYnAsIEdSQ0JBU0VfVENNLCBUQ01fUkVHSVNURVJTX0ZJQzBfSU5JVF9DUkQpOwor CWlmICh2YWwgIT0gNjQpIHsKKwkJQk5YMlhfRVJSKCJFcnJvciBUQ00sIFRDTV9SRUdJU1RF UlNfRklDMF9JTklUX0NSRCBkaWZmZXJlbnQiCisJCQkgICIgdGhhbiA2NCwgVmFsdWUgaXMg JWRcbiIsIHZhbCk7CisJCWVycm9ycysrOworCX0KKwl2YWwgPSBSRUdfUkQoYnAsIEdSQ0JB U0VfVENNLCBUQ01fUkVHSVNURVJTX0ZJQzFfSU5JVF9DUkQpOworCWlmICh2YWwgIT0gNjQp IHsKKwkJQk5YMlhfRVJSKCJFcnJvciBUQ00sIFRDTV9SRUdJU1RFUlNfRklDMV9JTklUX0NS RCBkaWZmZXJlbnQiCisJCQkgICIgdGhhbiA2NCwgVmFsdWUgaXMgJWRcbiIsIHZhbCk7CisJ CWVycm9ycysrOworCX0KKwkvKiBFeHRyYSBjaGVja3MgZm9yIENDTSBibG9ja3MgKi8KKwl2 YWwgPSBSRUdfUkQoYnAsIEdSQ0JBU0VfQ0NNLCBDQ01fUkVHSVNURVJTX0NGQ19JTklUX0NS RCk7CisJaWYgKHZhbCAhPSAxKSB7CisJCUJOWDJYX0VSUigiRXJyb3IgQ0NNLCBDQ01fUkVH SVNURVJTX0NGQ19JTklUX0NSRCBkaWZmZXJlbnQiCisJCQkgICIgdGhhbiAxLCBWYWx1ZSBp cyAlZFxuIiwgdmFsKTsKKwkJZXJyb3JzKys7CisJfQorCXZhbCA9IFJFR19SRChicCwgR1JD QkFTRV9DQ00sIENDTV9SRUdJU1RFUlNfQ1FNX0lOSVRfQ1JEKTsKKwlpZiAodmFsICE9IDMy KSB7CisJCUJOWDJYX0VSUigiRXJyb3IgQ0NNLCBDQ01fUkVHSVNURVJTX1RRTV9JTklUX0NS RCBkaWZmZXJlbnQiCisJCQkgICIgdGhhbiAzMiwgVmFsdWUgaXMgJWRcbiIsIHZhbCk7CisJ CWVycm9ycysrOworCX0KKwl2YWwgPSBSRUdfUkQoYnAsIEdSQ0JBU0VfQ0NNLCBDQ01fUkVH SVNURVJTX0ZJQzBfSU5JVF9DUkQpOworCWlmICh2YWwgIT0gNjQpIHsKKwkJQk5YMlhfRVJS KCJFcnJvciBDQ00sIENDTV9SRUdJU1RFUlNfRklDMF9JTklUX0NSRCBkaWZmZXJlbnQiCisJ CQkgICIgdGhhbiA2NCwgVmFsdWUgaXMgJWRcbiIsIHZhbCk7CisJCWVycm9ycysrOworCX0K Kwl2YWwgPSBSRUdfUkQoYnAsIEdSQ0JBU0VfQ0NNLCBDQ01fUkVHSVNURVJTX0ZJQzFfSU5J VF9DUkQpOworCWlmICh2YWwgIT0gNjQpIHsKKwkJQk5YMlhfRVJSKCJFcnJvciBDQ00sIEND TV9SRUdJU1RFUlNfRklDMV9JTklUX0NSRCBkaWZmZXJlbnQiCisJCQkgICIgdGhhbiA2NCwg VmFsdWUgaXMgJWRcbiIsIHZhbCk7CisJCWVycm9ycysrOworCX0KKwkvKiBFeHRyYSBjaGVj a3MgZm9yIEZPQyBjcmVkaXRzICovCisJZm9yIChmb2NfbnVtID0gMDsgZm9jX251bSA8IDQ7 IGZvY19udW0rKykgeworCQl2YWwgPSBSRUdfUkQoYnAsIEdSQ0JBU0VfVVNFTSwKKwkJCSAg ICAgKFVTRU1fUkVHSVNURVJTX0ZBU1RfTUVNT1JZICsKKwkJCSAgICAgIDB4MTgwMDArZm9j X251bSoweDQwKSk7CisJCWlmICh2YWwgIT0gdXNlbV9mb2NfY3JlZGl0c1tmb2NfbnVtXSkg eworCQkJQk5YMlhfRVJSKCJFcnJvciBVU0VNLCBGT0MlZF9DUkVESVQgZGlmZmVyZW50IHRo YW4gJWQsIgorCQkJCSAgIiBWYWx1ZSBpcyAlZFxuIiwKKwkJCQkgIGZvY19udW0sIHVzZW1f Zm9jX2NyZWRpdHNbZm9jX251bV0sIHZhbCk7CisJCQllcnJvcnMrKzsKKwkJfQorCisJCXZh bCA9IFJFR19SRChicCwgR1JDQkFTRV9YU0VNLAorCQkJICAgICAoWFNFTV9SRUdJU1RFUlNf RkFTVF9NRU1PUlkgKworCQkJICAgICAgMHgxODAwMCArIGZvY19udW0qMHg0MCkpOworCQlp ZiAodmFsICE9IHhzZW1fZm9jX2NyZWRpdHNbZm9jX251bV0pIHsKKwkJCUJOWDJYX0VSUigi RXJyb3IgWFNFTSwgRk9DJWRfQ1JFRElUIGRpZmZlcmVudCB0aGFuICVkLCIKKwkJCQkgICIg VmFsdWUgaXMgJWRcbiIsCisJCQkJICBmb2NfbnVtLCB4c2VtX2ZvY19jcmVkaXRzW2ZvY19u dW1dLCB2YWwpOworCQkJZXJyb3JzKys7CisJCX0KKworCQl2YWwgPSBSRUdfUkQoYnAsIEdS Q0JBU0VfQ1NFTSwKKwkJCSAgICAgKENTRU1fUkVHSVNURVJTX0ZBU1RfTUVNT1JZICsKKwkJ CSAgICAgIDB4MTgwMDAgKyBmb2NfbnVtKjB4NDApKTsKKwkJaWYgKHZhbCAhPSBjc2VtX2Zv Y19jcmVkaXRzW2ZvY19udW1dKSB7CisJCQlCTlgyWF9FUlIoIkVycm9yIENTRU0sIEZPQyVk X0NSRURJVCBkaWZmZXJlbnQgdGhhbiAlZCwiCisJCQkJICAiIFZhbHVlIGlzICVkXG4iLAor CQkJCSAgZm9jX251bSwgY3NlbV9mb2NfY3JlZGl0c1tmb2NfbnVtXSwgdmFsKTsKKwkJCWVy cm9ycysrOworCQl9CisKKwkJdmFsID0gUkVHX1JEKGJwLCBHUkNCQVNFX1RTRU0sCisJCQkg ICAgIChUU0VNX1JFR0lTVEVSU19GQVNUX01FTU9SWSArCisJCQkgICAgICAweDE4MDAwICsg Zm9jX251bSoweDQwKSk7CisJCWlmICh2YWwgIT0gdHNlbV9mb2NfY3JlZGl0c1tmb2NfbnVt XSkgeworCQkJQk5YMlhfRVJSKCJFcnJvciBUU0VNLCBGT0MlZF9DUkVESVQgZGlmZmVyZW50 IHRoYW4gJWQsICIKKwkJCQkgICJWYWx1ZSBpcyAlZFxuIiwKKwkJCQkgIGZvY19udW0sIHRz ZW1fZm9jX2NyZWRpdHNbZm9jX251bV0sIHZhbCk7CisJCQllcnJvcnMrKzsKKwkJfQorCX0K KworCS8qIEV4dHJhIFBSUyBjaGVja3MgKi8KKwl2YWwgPSBSRUdfUkQoYnAsIEdSQ0JBU0Vf UFJTLCBQUlNfUkVHSVNURVJTX1RTRE1fQ1VSUkVOVF9DUkVESVQpOworCWlmICh2YWwgIT0g MCkgeworCQlCTlgyWF9FUlIoIkVycm9yIFBSUywgUFJTX1JFR0lTVEVSU19UU0RNX0NVUlJF TlRfQ1JFRElUICIKKwkJCSAgImRpZmZlcmVudCB0aGFuIDAsIgorCQkJICAiIFZhbHVlIGlz ICVkXG4iLCB2YWwpOworCQllcnJvcnMrKzsKKwl9CisJdmFsID0gUkVHX1JEKGJwLCBHUkNC QVNFX1BSUywgUFJTX1JFR0lTVEVSU19UQ01fQ1VSUkVOVF9DUkVESVQpOworCWlmICh2YWwg IT0gMCkgeworCQlCTlgyWF9FUlIoIkVycm9yIFBSUywgUFJTX1JFR0lTVEVSU19UQ01fQ1VS UkVOVF9DUkVESVQgIgorCQkJICAiZGlmZmVyZW50IHRoYW4gMCwiCisJCQkgICIgVmFsdWUg aXMgJWRcbiIsIHZhbCk7CisJCWVycm9ycysrOworCX0KKwl2YWwgPSBSRUdfUkQoYnAsIEdS Q0JBU0VfUFJTLCBQUlNfUkVHSVNURVJTX0NGQ19MRF9DVVJSRU5UX0NSRURJVCk7CisJaWYg KHZhbCAhPSAwKSB7CisJCUJOWDJYX0VSUigiRXJyb3IgUFJTLCBQUlNfUkVHSVNURVJTX0NG Q19MRF9DVVJSRU5UX0NSRURJVCAiCisJCQkgICJkaWZmZXJlbnQgdGhhbiAwLCBWYWx1ZSBp cyAlZFxuIiwgdmFsKTsKKwkJZXJyb3JzKys7CisJfQorCXZhbCA9IFJFR19SRChicCwgR1JD QkFTRV9QUlMsIFBSU19SRUdJU1RFUlNfQ0ZDX1NFQVJDSF9DVVJSRU5UX0NSRURJVCk7CisJ aWYgKHZhbCAhPSAwKSB7CisJCUJOWDJYX0VSUigiRXJyb3IgUFJTLCBQUlNfUkVHSVNURVJT X0NGQ19TRUFSQ0hfQ1VSUkVOVF9DUkVESVQgIgorCQkJICAiZGlmZmVyZW50IHRoYW4gMCwg VmFsdWUgaXMgJWRcbiIsIHZhbCk7CisJCWVycm9ycysrOworCX0KKwl2YWwgPSBSRUdfUkQo YnAsIEdSQ0JBU0VfUFJTLCBQUlNfUkVHSVNURVJTX1NSQ19DVVJSRU5UX0NSRURJVCk7CisJ aWYgKHZhbCAhPSAwKSB7CisJCUJOWDJYX0VSUigiRXJyb3IgUFJTLCBQUlNfUkVHSVNURVJT X1NSQ19DVVJSRU5UX0NSRURJVCAiCisJCQkgICJkaWZmZXJlbnQgdGhhbiAwLCBWYWx1ZSBp cyAlZFxuIiwgdmFsKTsKKwkJZXJyb3JzKys7CisJfQorCXZhbCA9IFJFR19SRChicCwgR1JD QkFTRV9QUlMsIFBSU19SRUdJU1RFUlNfUEVORElOR19CUkJfUFJTX1JRKTsKKwlpZiAodmFs ICE9IDApIHsKKwkJQk5YMlhfRVJSKCJFcnJvciBQUlMsIFBSU19SRUdJU1RFUlNfUEVORElO R19CUkJfUFJTX1JRICIKKwkJCSAgImRpZmZlcmVudCB0aGFuIDAsIFZhbHVlIGlzICVkXG4i LCB2YWwpOworCQllcnJvcnMrKzsKKwl9CisJdmFsID0gUkVHX1JEKGJwLCBHUkNCQVNFX1BS UywgUFJTX1JFR0lTVEVSU19QRU5ESU5HX0JSQl9DQUMwX1JRKTsKKwlpZiAodmFsICE9IDAp IHsKKwkJQk5YMlhfRVJSKCJFcnJvciBQUlMsIFBSU19SRUdJU1RFUlNfUEVORElOR19CUkJf Q0FDMF9SUSAiCisJCQkgICJkaWZmZXJlbnQgdGhhbiAwLFZhbHVlIGlzICVkXG4iLCB2YWwp OworCQllcnJvcnMrKzsKKwl9CisJdmFsID0gUkVHX1JEKGJwLCBHUkNCQVNFX1BSUywgUFJT X1JFR0lTVEVSU19QRU5ESU5HX0JSQl9DQUMxX1JRKTsKKwlpZiAodmFsICE9IDApIHsKKwkJ Qk5YMlhfRVJSKCJFcnJvciBQUlMsIFBSU19SRUdJU1RFUlNfUEVORElOR19CUkJfQ0FDMV9S USAiCisJCQkgICJkaWZmZXJlbnQgdGhhbiAwLCBWYWx1ZSBpcyAlZFxuIiwgdmFsKTsKKwkJ ZXJyb3JzKys7CisJfQorCXZhbCA9IFJFR19SRChicCwgR1JDQkFTRV9QUlMsIFBSU19SRUdJ U1RFUlNfUEVORElOR19CUkJfQ0FDMl9SUSk7CisJaWYgKHZhbCAhPSAwKSB7CisJCUJOWDJY X0VSUigiRXJyb3IgUFJTLCBQUlNfUkVHSVNURVJTX1BFTkRJTkdfQlJCX0NBQzJfUlEgIgor CQkJICAiZGlmZmVyZW50IHRoYW4gMCwgVmFsdWUgaXMgJWRcbiIsIHZhbCk7CisJCWVycm9y cysrOworCX0KKwl2YWwgPSBSRUdfUkQoYnAsIEdSQ0JBU0VfUFJTLCBQUlNfUkVHSVNURVJT X1BFTkRJTkdfQlJCX0NBQzNfUlEpOworCWlmICh2YWwgIT0gMCkgeworCQlCTlgyWF9FUlIo IkVycm9yIFBSUywgUFJTX1JFR0lTVEVSU19QRU5ESU5HX0JSQl9DQUMzX1JRICIKKwkJCSAg ImRpZmZlcmVudCB0aGFuIDAsIFZhbHVlIGlzICVkXG4iLCB2YWwpOworCQllcnJvcnMrKzsK Kwl9CisJdmFsID0gUkVHX1JEKGJwLCBHUkNCQVNFX1BSUywgUFJTX1JFR0lTVEVSU19QRU5E SU5HX0JSQl9DQUM0X1JRKTsKKwlpZiAodmFsICE9IDApIHsKKwkJQk5YMlhfRVJSKCJFcnJv ciBQUlMsIFBSU19SRUdJU1RFUlNfUEVORElOR19CUkJfQ0FDMF9SUSAiCisJCQkgICJkaWZm ZXJlbnQgdGhhbiAwLCBWYWx1ZSBpcyAlZFxuIiwgdmFsKTsKKwkJZXJyb3JzKys7CisJfQor CXZhbCA9IFJFR19SRChicCwgR1JDQkFTRV9QUlMsIFBSU19SRUdJU1RFUlNfUEVORElOR19C UkJfQ0FDNF9SUSk7CisJaWYgKHZhbCAhPSAwKSB7CisJCUJOWDJYX0VSUigiRXJyb3IgUFJT LCBQUlNfUkVHSVNURVJTX1BFTkRJTkdfQlJCX0NBQzBfUlEgIgorCQkJICAiZGlmZmVyZW50 IHRoYW4gMCwgVmFsdWUgaXMgJWRcbiIsIHZhbCk7CisJCWVycm9ycysrOworCX0KKwl2YWwg PSBSRUdfUkQoYnAsIEdSQ0JBU0VfUFJTLCBQUlNfUkVHSVNURVJTX1NFUklBTF9OVU1fU1RB VFVTX0xTQik7CisJaWYgKHZhbCAhPSAwKSB7CisJCUJOWDJYX0VSUigiRXJyb3IgUFJTLCBQ UlNfUkVHSVNURVJTX1NFUklBTF9OVU1fU1RBVFVTX0xTQiAiCisJCQkgICJkaWZmZXJlbnQg dGhhbiAwLCBWYWx1ZSBpcyAlZFxuIiwgdmFsKTsKKwkJZXJyb3JzKys7CisJfQorCXZhbCA9 IFJFR19SRChicCwgR1JDQkFTRV9QUlMsIFBSU19SRUdJU1RFUlNfU0VSSUFMX05VTV9TVEFU VVNfTVNCKTsKKwlpZiAodmFsICE9IDApIHsKKwkJQk5YMlhfRVJSKCJFcnJvciBQUlMsIFBS U19SRUdJU1RFUlNfU0VSSUFMX05VTV9TVEFUVVNfTVNCICIKKwkJCSAgImRpZmZlcmVudCB0 aGFuIDAsIFZhbHVlIGlzICVkXG4iLCB2YWwpOworCQllcnJvcnMrKzsKKwl9CisKKwl2YWwg PSBSRUdfUkQoYnAsIEdSQ0JBU0VfQ0RVLCBDRFVfUkVHSVNURVJTX0VSUk9SX0RBVEEpOwor CWlmICh2YWwgIT0gMCkgeworCQlCTlgyWF9FUlIoIkVycm9yIENEVSwgQ0RVX1JFR0lTVEVS U19FUlJPUl9EQVRBICIKKwkJCSAgIlZhbHVlIGlzICVkXG4iLCB2YWwpOworCQllcnJvcnMr KzsKKwl9CisJdmFsID0gUkVHX1JEKGJwLCBHUkNCQVNFX0NDTSwgQ0NNX1JFR0lTVEVSU19T VE9STV9MRU5HVEhfTUlTKTsKKwlpZiAodmFsICE9IDApIHsKKwkJQk5YMlhfRVJSKCJFcnJv ciBDQ00sIENDTV9SRUdJU1RFUlNfU1RPUk1fTEVOR1RIX01JUyIKKwkJCSAgIiBWYWx1ZSBp cyAlZFxuIiwgdmFsKTsKKwllcnJvcnMrKzsKKwl9CisJdmFsID0gUkVHX1JEKGJwLCBHUkNC QVNFX0NDTSwgQ0NNX1JFR0lTVEVSU19DU0RNX0xFTkdUSF9NSVMpOworCWlmICh2YWwgIT0g MCkgeworCQlCTlgyWF9FUlIoIkVycm9yIENDTSwgQ0NNX1JFR0lTVEVSU19DU0RNX0xFTkdU SF9NSVMgIgorCQkJICAiIFZhbHVlIGlzICVkXG4iLCB2YWwpOworCQllcnJvcnMrKzsKKwl9 CisJdmFsID0gUkVHX1JEKGJwLCBHUkNCQVNFX0NDTSwgQ0NNX1JFR0lTVEVSU19UU0VNX0xF TkdUSF9NSVMpOworCWlmICh2YWwgIT0gMCkgeworCQlCTlgyWF9FUlIoIkVycm9yIENDTSwg Q0NNX1JFR0lTVEVSU19UU0VNX0xFTkdUSF9NSVMiCisJCQkgICIgVmFsdWUgaXMgJWRcbiIs IHZhbCk7CisJCWVycm9ycysrOworCX0KKwl2YWwgPSBSRUdfUkQoYnAsIEdSQ0JBU0VfQ0NN LCBDQ01fUkVHSVNURVJTX1hTRU1fTEVOR1RIX01JUyk7CisJaWYgKHZhbCAhPSAwKSB7CisJ CUJOWDJYX0VSUigiRXJyb3IgQ0NNLCBDQ01fUkVHSVNURVJTX1hTRU1fTEVOR1RIX01JUyIK KwkJCSAgIiBWYWx1ZSBpcyAlZFxuIiwgdmFsKTsKKwkJZXJyb3JzKys7CisJfQorCXZhbCA9 IFJFR19SRChicCwgR1JDQkFTRV9DQ00sIENDTV9SRUdJU1RFUlNfVVNFTV9MRU5HVEhfTUlT KTsKKwlpZiAodmFsICE9IDApIHsKKwkJQk5YMlhfRVJSKCJFcnJvciBDQ00sIENDTV9SRUdJ U1RFUlNfVVNFTV9MRU5HVEhfTUlTIgorCQkJICAiVmFsdWUgaXMgJWRcbiIsIHZhbCk7CisJ CWVycm9ycysrOworCX0KKwl2YWwgPSBSRUdfUkQoYnAsIEdSQ0JBU0VfVENNLCBDQ01fUkVH SVNURVJTX1BCRl9MRU5HVEhfTUlTKTsKKwlpZiAodmFsICE9IDApIHsKKwkJQk5YMlhfRVJS KCJFcnJvciBDQ00sIENDTV9SRUdJU1RFUlNfUEJGX0xFTkdUSF9NSVMiCisJCQkgICIgVmFs dWUgaXMgJWRcbiIsIHZhbCk7CisJCWVycm9ycysrOworCX0KKwl2YWwgPSBSRUdfUkQoYnAs IEdSQ0JBU0VfVENNLCBUQ01fUkVHSVNURVJTX1NUT1JNX0xFTkdUSF9NSVMpOworCWlmICh2 YWwgIT0gMCkgeworCQlCTlgyWF9FUlIoIkVycm9yIENDTSwgVENNX1JFR0lTVEVSU19TVE9S TV9MRU5HVEhfTUlTIgorCQkJICAiIFZhbHVlIGlzICVkXG4iLCB2YWwpOworCQllcnJvcnMr KzsKKwl9CisJdmFsID0gUkVHX1JEKGJwLCBHUkNCQVNFX1RDTSwgVENNX1JFR0lTVEVSU19U U0RNX0xFTkdUSF9NSVMpOworCWlmICh2YWwgIT0gMCkgeworCQlCTlgyWF9FUlIoIkVycm9y IENDTSwgVENNX1JFR0lTVEVSU19UU0RNX0xFTkdUSF9NSVMiCisJCQkgICIgVmFsdWUgaXMg JWRcbiIsIHZhbCk7CisJCWVycm9ycysrOworCX0KKwl2YWwgPSBSRUdfUkQoYnAsIEdSQ0JB U0VfVENNLCBUQ01fUkVHSVNURVJTX1BSU19MRU5HVEhfTUlTKTsKKwlpZiAodmFsICE9IDAp IHsKKwkJQk5YMlhfRVJSKCJFcnJvciBDQ00sIFRDTV9SRUdJU1RFUlNfUFJTX0xFTkdUSF9N SVMiCisJCQkgICJWYWx1ZSBpcyAlZFxuIiwgdmFsKTsKKwllcnJvcnMrKzsKKwl9CisJdmFs ID0gUkVHX1JEKGJwLCBHUkNCQVNFX1RDTSwgVENNX1JFR0lTVEVSU19QQkZfTEVOR1RIX01J Uyk7CisJaWYgKHZhbCAhPSAwKSB7CisJCUJOWDJYX0VSUigiRXJyb3IgQ0NNLCBUQ01fUkVH SVNURVJTX1BCRl9MRU5HVEhfTUlTIgorCQkJICAiIFZhbHVlIGlzICVkXG4iLCB2YWwpOwor CQllcnJvcnMrKzsKKwl9CisJdmFsID0gUkVHX1JEKGJwLCBHUkNCQVNFX1RDTSwgVENNX1JF R0lTVEVSU19VU0VNX0xFTkdUSF9NSVMpOworCWlmICh2YWwgIT0gMCkgeworCQlCTlgyWF9F UlIoIkVycm9yIENDTSwgVENNX1JFR0lTVEVSU19VU0VNX0xFTkdUSF9NSVMiCisJCQkgICIg VmFsdWUgaXMgJWRcbiIsIHZhbCk7CisJCQllcnJvcnMrKzsKKwl9CisJdmFsID0gUkVHX1JE KGJwLCBHUkNCQVNFX1RDTSwgVENNX1JFR0lTVEVSU19VU0VNX0xFTkdUSF9NSVMpOworCWlm ICh2YWwgIT0gMCkgeworCQlCTlgyWF9FUlIoIkVycm9yIENDTSwgVENNX1JFR0lTVEVSU19V U0VNX0xFTkdUSF9NSVMiCisJCQkgICIgZGlmZmVyZW50IHRoYW4gMCwgVmFsdWUgaXMgJWRc biIsIHZhbCk7CisJCWVycm9ycysrOworCX0KKwl2YWwgPSBSRUdfUkQoYnAsIEdSQ0JBU0Vf VENNLCBUQ01fUkVHSVNURVJTX0NTRU1fTEVOR1RIX01JUyk7CisJaWYgKHZhbCAhPSAwKSB7 CisJCUJOWDJYX0VSUigiRXJyb3IgQ0NNLCBUQ01fUkVHSVNURVJTX0NTRU1fTEVOR1RIX01J UyIKKwkJCSAgIiBkaWZmZXJlbnQgdGhhbiAwLCBWYWx1ZSBpcyAlZFxuIiwgdmFsKTsKKwkJ ZXJyb3JzKys7CisJfQorCXZhbCA9IFJFR19SRChicCwgR1JDQkFTRV9VQ00sIFVDTV9SRUdJ U1RFUlNfU1RPUk1fTEVOR1RIX01JUyk7CisJaWYgKHZhbCAhPSAwKSB7CisJCUJOWDJYX0VS UigiRXJyb3IgQ0NNLCBVQ01fUkVHSVNURVJTX1NUT1JNX0xFTkdUSF9NSVMiCisJCQkgICIg ZGlmZmVyZW50IHRoYW4gMCwgVmFsdWUgaXMgJWRcbiIsIHZhbCk7CisJCWVycm9ycysrOwor CX0KKwl2YWwgPSBSRUdfUkQoYnAsIEdSQ0JBU0VfVUNNLCBVQ01fUkVHSVNURVJTX1VTRE1f TEVOR1RIX01JUyk7CisJaWYgKHZhbCAhPSAwKSB7CisJCUJOWDJYX0VSUigiRXJyb3IgQ0NN LCBVQ01fUkVHSVNURVJTX1VTRE1fTEVOR1RIX01JUyIKKwkJCSAgIiBkaWZmZXJlbnQgdGhh biAwLCBWYWx1ZSBpcyAlZFxuIiwgdmFsKTsKKwkJZXJyb3JzKys7CisJfQorCXZhbCA9IFJF R19SRChicCwgR1JDQkFTRV9VQ00sIFVDTV9SRUdJU1RFUlNfVFNFTV9MRU5HVEhfTUlTKTsK KwlpZiAodmFsICE9IDApIHsKKwkJQk5YMlhfRVJSKCJFcnJvciBDQ00sIFVDTV9SRUdJU1RF UlNfVFNFTV9MRU5HVEhfTUlTIgorCQkJICAiIGRpZmZlcmVudCB0aGFuIDAsIFZhbHVlIGlz ICVkXG4iLCB2YWwpOworCQllcnJvcnMrKzsKKwl9CisJdmFsID0gUkVHX1JEKGJwLCBHUkNC QVNFX1VDTSwgVUNNX1JFR0lTVEVSU19DU0VNX0xFTkdUSF9NSVMpOworCWlmICh2YWwgIT0g MCkgeworCQlCTlgyWF9FUlIoIkVycm9yIENDTSwgVUNNX1JFR0lTVEVSU19DU0VNX0xFTkdU SF9NSVMiCisJCQkgICIgZGlmZmVyZW50IHRoYW4gMCwgVmFsdWUgaXMgJWRcbiIsIHZhbCk7 CisJCWVycm9ycysrOworCX0KKwl2YWwgPSBSRUdfUkQoYnAsIEdSQ0JBU0VfVUNNLCBVQ01f UkVHSVNURVJTX1hTRU1fTEVOR1RIX01JUyk7CisJaWYgKHZhbCAhPSAwKSB7CisJCUJOWDJY X0VSUigiRXJyb3IgQ0NNLCBVQ01fUkVHSVNURVJTX1hTRU1fTEVOR1RIX01JUyIKKwkJCSAg IiBkaWZmZXJlbnQgdGhhbiAwLCBWYWx1ZSBpcyAlZFxuIiwgdmFsKTsKKwkJZXJyb3JzKys7 CisJfQorCXZhbCA9IFJFR19SRChicCwgR1JDQkFTRV9VQ00sIFVDTV9SRUdJU1RFUlNfRE9S UV9MRU5HVEhfTUlTKTsKKwlpZiAodmFsICE9IDApIHsKKwkJQk5YMlhfRVJSKCJFcnJvciBD Q00sIFVDTV9SRUdJU1RFUlNfRE9SUV9MRU5HVEhfTUlTIgorCQkJICAiIGRpZmZlcmVudCB0 aGFuIDAsIFZhbHVlIGlzICVkXG4iLCB2YWwpOworCQllcnJvcnMrKzsKKwl9CisJdmFsID0g UkVHX1JEKGJwLCBHUkNCQVNFX1hDTSwgWENNX1JFR0lTVEVSU19TVE9STV9MRU5HVEhfTUlT KTsKKwlpZiAodmFsICE9IDApIHsKKwkJQk5YMlhfRVJSKCJFcnJvciBDQ00sIFhDTV9SRUdJ U1RFUlNfU1RPUk1fTEVOR1RIX01JUyIKKwkJCSAgIiBkaWZmZXJlbnQgdGhhbiAwLCBWYWx1 ZSBpcyAlZFxuIiwgdmFsKTsKKwkJZXJyb3JzKys7CisJfQorCXZhbCA9IFJFR19SRChicCwg R1JDQkFTRV9YQ00sIFhDTV9SRUdJU1RFUlNfWFNETV9MRU5HVEhfTUlTKTsKKwlpZiAodmFs ICE9IDApIHsKKwkJQk5YMlhfRVJSKCJFcnJvciBDQ00sIFhDTV9SRUdJU1RFUlNfWFNETV9M RU5HVEhfTUlTICIKKwkJCSAgImRpZmZlcmVudCB0aGFuIDAsIFZhbHVlIGlzICVkXG4iLCB2 YWwpOworCQllcnJvcnMrKzsKKwl9CisJdmFsID0gUkVHX1JEKGJwLCBHUkNCQVNFX1hDTSwg WENNX1JFR0lTVEVSU19UU0VNX0xFTkdUSF9NSVMpOworCWlmICh2YWwgIT0gMCkgeworCQlC TlgyWF9FUlIoIkVycm9yIENDTSwgWENNX1JFR0lTVEVSU19UU0VNX0xFTkdUSF9NSVMgIgor CQkJICAiZGlmZmVyZW50IHRoYW4gMCwgVmFsdWUgaXMgJWRcbiIsIHZhbCk7CisJCWVycm9y cysrOworCX0KKwl2YWwgPSBSRUdfUkQoYnAsIEdSQ0JBU0VfWENNLCBYQ01fUkVHSVNURVJT X0NTRU1fTEVOR1RIX01JUyk7CisJaWYgKHZhbCAhPSAwKSB7CisJCUJOWDJYX0VSUigiRXJy b3IgQ0NNLCBYQ01fUkVHSVNURVJTX0NTRU1fTEVOR1RIX01JUyIKKwkJCSAgIiBkaWZmZXJl bnQgdGhhbiAwLCBWYWx1ZSBpcyAlZFxuIiwgdmFsKTsKKwkJZXJyb3JzKys7CisJfQorCXZh bCA9IFJFR19SRChicCwgR1JDQkFTRV9YQ00sIFhDTV9SRUdJU1RFUlNfVVNFTV9MRU5HVEhf TUlTKTsKKwlpZiAodmFsICE9IDApIHsKKwkJQk5YMlhfRVJSKCJFcnJvciBDQ00sIFhDTV9S RUdJU1RFUlNfVVNFTV9MRU5HVEhfTUlTIgorCQkJICAiIGRpZmZlcmVudCB0aGFuIDAsIFZh bHVlIGlzICVkXG4iLCB2YWwpOworCQllcnJvcnMrKzsKKwl9CisJdmFsID0gUkVHX1JEKGJw LCBHUkNCQVNFX1hDTSwgWENNX1JFR0lTVEVSU19ET1JRX0xFTkdUSF9NSVMpOworCWlmICh2 YWwgIT0gMCkgeworCQlCTlgyWF9FUlIoIkVycm9yIENDTSwgWENNX1JFR0lTVEVSU19ET1JR X0xFTkdUSF9NSVMiCisJCQkgICJkaWZmZXJlbnQgdGhhbiAwLCBWYWx1ZSBpcyAlZFxuIiwg dmFsKTsKKwkJZXJyb3JzKys7CisJfQorCXZhbCA9IFJFR19SRChicCwgR1JDQkFTRV9YQ00s IFhDTV9SRUdJU1RFUlNfRE9SUV9MRU5HVEhfTUlTKTsKKwlpZiAodmFsICE9IDApIHsKKwkJ Qk5YMlhfRVJSKCJFcnJvciBDQ00sIFhDTV9SRUdJU1RFUlNfRE9SUV9MRU5HVEhfTUlTIgor CQkJICAiIGRpZmZlcmVudCB0aGFuIDAsIFZhbHVlIGlzICVkXG4iLCB2YWwpOworCQllcnJv cnMrKzsKKwl9CisJdmFsID0gUkVHX1JEKGJwLCBHUkNCQVNFX1hDTSwgWENNX1JFR0lTVEVS U19QQkZfTEVOR1RIX01JUyk7CisJaWYgKHZhbCAhPSAwKSB7CisJCUJOWDJYX0VSUigiRXJy b3IgQ0NNLCBYQ01fUkVHSVNURVJTX1BCRl9MRU5HVEhfTUlTIgorCQkJICAiIGRpZmZlcmVu dCB0aGFuIDAsIFZhbHVlIGlzICVkXG4iLCB2YWwpOworCQllcnJvcnMrKzsKKwl9CisJdmFs ID0gUkVHX1JEKGJwLCBHUkNCQVNFX1hDTSwgWENNX1JFR0lTVEVSU19OSUcwX0xFTkdUSF9N SVMpOworCWlmICh2YWwgIT0gMCkgeworCQlCTlgyWF9FUlIoIkVycm9yIENDTSwgWENNX1JF R0lTVEVSU19OSUcwX0xFTkdUSF9NSVMiCisJCQkgICIgZGlmZmVyZW50IHRoYW4gMCwgVmFs dWUgaXMgJWRcbiIsIHZhbCk7CisJCWVycm9ycysrOworCX0KKwl2YWwgPSBSRUdfUkQoYnAs IEdSQ0JBU0VfWENNLCBYQ01fUkVHSVNURVJTX05JRzFfTEVOR1RIX01JUyk7CisJaWYgKHZh bCAhPSAwKSB7CisJCUJOWDJYX0VSUigiRXJyb3IgQ0NNLCBYQ01fUkVHSVNURVJTX05JRzFf TEVOR1RIX01JUyAiCisJCQkgICJkaWZmZXJlbnQgdGhhbiAwLCBWYWx1ZSBpcyAlZFxuIiwg dmFsKTsKKwkJZXJyb3JzKys7CisJfQorCisJaWYgKGVycm9ycyA9PSAwKSB7CisJCUJOWDJY X0VSUigiY29tcGxldGVkIHN1Y2Nlc3NmdWx5ICh3aXRoICVkIHdhcm5pbmdzKVxuIiwKKwkJ CSAgd2FybmluZ3MpOworCX0gZWxzZSB7CisJCUJOWDJYX0VSUigiZmFpbGVkICh3aXRoICVk IGVycm9ycywgJWQgd2FybmluZ3MpXG4iLAorCQkJICBlcnJvcnMsIHdhcm5pbmdzKTsKKwl9 CisJcmV0dXJuIGVycm9yczsKK30KKworc3RhdGljIGludCBibngyeF9tY19hc3NlcnQoc3Ry dWN0IGJueDJ4ICpicCkKK3sKKwl1OCBpLCBqOworCWludCByYyA9IDA7CisJY2hhciBsYXN0 X2lkeDsKKwljb25zdCBjaGFyIHN0b3JtW10gPSB7IlhUQ1UifTsKKwljb25zdCB1MzIgaW50 bWVtX2Jhc2VbXSA9IHsKKwkJQkFSX1hTVFJPUk1fSU5UTUVNLAorCQlCQVJfVFNUUk9STV9J TlRNRU0sCisJCUJBUl9DU1RST1JNX0lOVE1FTSwKKwkJQkFSX1VTVFJPUk1fSU5UTUVNCisJ fTsKKworCS8qIEdvIHRocm91Z2ggYWxsIGluc3RhbmNlcyBvZiBhbGwgU0VNSXMgKi8KKwlm b3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7CisJCWxhc3RfaWR4ID0gUkVHX1JEOChicCwgWFNU T1JNX0FTU0VSVF9MSVNUX0lOREVYX09GRlNFVCwKKwkJCQkgICBpbnRtZW1fYmFzZVtpXSk7 CisJCUJOWDJYX0VSUigiREFUQSAlY1NUT1JNX0FTU0VSVF9MSVNUX0lOREVYIDB4JXhcbiIs CisJCQkgIHN0b3JtW2ldLCBsYXN0X2lkeCk7CisKKwkvKiBwcmludCB0aGUgYXNzZXJ0cyAq LworI2RlZmluZSBTVFJPTV9BU1NFUlRfQVJSQVlfU0laRQkJNTAKKwkJZm9yIChqID0gMDsg aiA8IFNUUk9NX0FTU0VSVF9BUlJBWV9TSVpFOyBqKyspIHsKKwkJCXUzMiByb3cwLCByb3cx LCByb3cyLCByb3czOworCQkJcm93MCA9IFJFR19SRChicCwgWFNUT1JNX0FTU0VSVF9MSVNU X09GRlNFVChqKSwKKwkJCQkgICAgICBpbnRtZW1fYmFzZVtpXSk7CisJCQlyb3cxID0gUkVH X1JEKGJwLCBYU1RPUk1fQVNTRVJUX0xJU1RfT0ZGU0VUKGopICsgNCwKKwkJCQkgICAgICBp bnRtZW1fYmFzZVtpXSk7CisJCQlyb3cyID0gUkVHX1JEKGJwLCBYU1RPUk1fQVNTRVJUX0xJ U1RfT0ZGU0VUKGopICsgOCwKKwkJCQkgICAgICBpbnRtZW1fYmFzZVtpXSk7CisJCQlyb3cz ID0gUkVHX1JEKGJwLCBYU1RPUk1fQVNTRVJUX0xJU1RfT0ZGU0VUKGopICsgMTIsCisJCQkJ ICAgICAgaW50bWVtX2Jhc2VbaV0pOworCisJCQlpZiAocm93MCAhPSBDT01NT05fQVNNX0lO VkFMSURfQVNTRVJUX09QQ09ERSkgeworCQkJCUJOWDJYX0VSUigiREFUQSAlY1NUT1JNX0FT U0VSVF9JTkRFWCAweCV4ID0iCisJCQkJCSAgIiAweCUwOHggMHglMDh4IDB4JTA4eCAweCUw OHhcbiIsCisJCQkJCSAgc3Rvcm1baV0sIGosIHJvdzMsIHJvdzIsIHJvdzEsIHJvdzApOwor CQkJCXJjKys7CisJCQl9IGVsc2UgeworCQkJCWJyZWFrOworCQkJfQorCQl9CisJfQorCXJl dHVybiByYzsKK30KKwotLSAKMS40LjIKCg== --------------050602050603010402030209--