From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH i-g-t 2/2] tests: Add kms plane alpha blending test. Date: Mon, 4 Jun 2018 15:49:51 +0200 Message-ID: <20180604134951.14079-2-maarten.lankhorst@linux.intel.com> References: <1527856871-3007-2-git-send-email-lowry.li@arm.com> <20180604134951.14079-1-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180604134951.14079-1-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: igt-dev@lists.freedesktop.org Cc: Lowry Li , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org U2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4 LmludGVsLmNvbT4KLS0tCiBsaWIvaWd0X2ttcy5jICAgICAgICAgICAgICAgICB8ICAgMiArCiBs aWIvaWd0X2ttcy5oICAgICAgICAgICAgICAgICB8ICAgMiArCiB0ZXN0cy9NYWtlZmlsZS5zb3Vy Y2VzICAgICAgICB8ICAgMSArCiB0ZXN0cy9rbXNfcGxhbmVfYWxwaGFfYmxlbmQuYyB8IDU2MSAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB0ZXN0cy9tZXNvbi5idWlsZCAgICAg ICAgICAgICB8ICAgMSArCiA1IGZpbGVzIGNoYW5nZWQsIDU2NyBpbnNlcnRpb25zKCspCiBjcmVh dGUgbW9kZSAxMDA2NDQgdGVzdHMva21zX3BsYW5lX2FscGhhX2JsZW5kLmMKCmRpZmYgLS1naXQg YS9saWIvaWd0X2ttcy5jIGIvbGliL2lndF9rbXMuYwppbmRleCA5YWM3Y2U3MzU0MmEuLmYzNDhm MWM3MWU1ZSAxMDA2NDQKLS0tIGEvbGliL2lndF9rbXMuYworKysgYi9saWIvaWd0X2ttcy5jCkBA IC0xNzMsNiArMTczLDggQEAgY29uc3QgY2hhciAqIGNvbnN0IGlndF9wbGFuZV9wcm9wX25hbWVz W0lHVF9OVU1fUExBTkVfUFJPUFNdID0gewogCVtJR1RfUExBTkVfVFlQRV0gPSAidHlwZSIsCiAJ W0lHVF9QTEFORV9ST1RBVElPTl0gPSAicm90YXRpb24iLAogCVtJR1RfUExBTkVfSU5fRk9STUFU U10gPSAiSU5fRk9STUFUUyIsCisJW0lHVF9QTEFORV9QSVhFTF9CTEVORF9NT0RFXSA9ICJwaXhl bCBibGVuZCBtb2RlIiwKKwlbSUdUX1BMQU5FX0FMUEhBXSA9ICJhbHBoYSIsCiB9OwogCiBjb25z dCBjaGFyICogY29uc3QgaWd0X2NydGNfcHJvcF9uYW1lc1tJR1RfTlVNX0NSVENfUFJPUFNdID0g ewpkaWZmIC0tZ2l0IGEvbGliL2lndF9rbXMuaCBiL2xpYi9pZ3Rfa21zLmgKaW5kZXggYjU1ODgx ODg1YjExLi43NjJlYWZiMmU0N2UgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3Rfa21zLmgKKysrIGIvbGli L2lndF9rbXMuaApAQCAtMjY0LDYgKzI2NCw4IEBAIGVudW0gaWd0X2F0b21pY19wbGFuZV9wcm9w ZXJ0aWVzIHsKICAgICAgICBJR1RfUExBTkVfVFlQRSwKICAgICAgICBJR1RfUExBTkVfUk9UQVRJ T04sCiAgICAgICAgSUdUX1BMQU5FX0lOX0ZPUk1BVFMsCisgICAgICAgSUdUX1BMQU5FX1BJWEVM X0JMRU5EX01PREUsCisgICAgICAgSUdUX1BMQU5FX0FMUEhBLAogICAgICAgIElHVF9OVU1fUExB TkVfUFJPUFMKIH07CiAKZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMgYi90ZXN0 cy9NYWtlZmlsZS5zb3VyY2VzCmluZGV4IDgxOTdkNTk0MTdiMy4uYjYwNzE4OWRjMzdhIDEwMDY0 NAotLS0gYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCisrKyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJj ZXMKQEAgLTIwMCw2ICsyMDAsNyBAQCBURVNUU19wcm9ncyA9IFwKIAlrbXNfcGlwZV9iX2NfaXZi IFwKIAlrbXNfcGlwZV9jcmNfYmFzaWMgXAogCWttc19wbGFuZSBcCisJa21zX3BsYW5lX2FscGhh X2JsZW5kIFwKIAlrbXNfcGxhbmVfbG93cmVzIFwKIAlrbXNfcGxhbmVfbXVsdGlwbGUgXAogCWtt c19wbGFuZV9zY2FsaW5nIFwKZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19wbGFuZV9hbHBoYV9ibGVu ZC5jIGIvdGVzdHMva21zX3BsYW5lX2FscGhhX2JsZW5kLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwLi44Y2U5YzQ2MGU5YzIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0 cy9rbXNfcGxhbmVfYWxwaGFfYmxlbmQuYwpAQCAtMCwwICsxLDU2MSBAQAorLyoKKyAqIENvcHly aWdodCDCqSAyMDE4IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJl YnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAq IGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVz ICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJl c3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRv IHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5z ZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQg cGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBz dWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29w eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBu ZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vi c3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdB UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQ UkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FS UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBB VVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1B R0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRS QUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENP Tk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUwor ICogSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworCisjaW5jbHVkZSAiaWd0LmgiCisjaW5jbHVk ZSA8bWF0aC5oPgorCitJR1RfVEVTVF9ERVNDUklQVElPTigiVGVzdCBwbGFuZSBhbHBoYSBhbmQg YmxlbmRpbmcgbW9kZSBwcm9wZXJ0aWVzIik7CisKK3R5cGVkZWYgc3RydWN0IHsKKwlpbnQgZ2Z4 X2ZkOworCWlndF9kaXNwbGF5X3QgZGlzcGxheTsKKwlzdHJ1Y3QgaWd0X2ZiIHhyZ2JfZmIsIGFy Z2JfZmJfMCwgYXJnYl9mYl9jb3ZfMCwgYXJnYl9mYl83ZSwgYXJnYl9mYl9jb3ZfN2UsIGFyZ2Jf ZmJfZmMsIGFyZ2JfZmJfY292X2ZjLCBhcmdiX2ZiXzEwMCwgYmxhY2tfZmIsIGdyYXlfZmI7CisJ aWd0X2NyY190IHJlZl9jcmM7CisJaWd0X3BpcGVfY3JjX3QgKnBpcGVfY3JjOworfSBkYXRhX3Q7 CisKK3N0YXRpYyB2b2lkIF9fZHJhd19ncmFkaWVudChzdHJ1Y3QgaWd0X2ZiICpmYiwgaW50IHcs IGludCBoLCBkb3VibGUgYSwgY2Fpcm9fdCAqY3IpCit7CisJY2Fpcm9fcGF0dGVybl90ICpwYXQ7 CisKKwlwYXQgPSBjYWlyb19wYXR0ZXJuX2NyZWF0ZV9saW5lYXIoMCwgMCwgdywgaCk7CisJY2Fp cm9fcGF0dGVybl9hZGRfY29sb3Jfc3RvcF9yZ2JhKHBhdCwgMC4wMCwgMC4wMCwgMC4wMCwgMC4w MCwgMS4pOworCWNhaXJvX3BhdHRlcm5fYWRkX2NvbG9yX3N0b3BfcmdiYShwYXQsIDAuMjUsIDEu MDAsIDEuMDAsIDAuMDAsIDEuKTsKKwljYWlyb19wYXR0ZXJuX2FkZF9jb2xvcl9zdG9wX3JnYmEo cGF0LCAwLjUwLCAwLjAwLCAxLjAwLCAxLjAwLCAxLik7CisJY2Fpcm9fcGF0dGVybl9hZGRfY29s b3Jfc3RvcF9yZ2JhKHBhdCwgMC43NSwgMS4wMCwgMC4wMCwgMS4wMCwgMS4pOworCWNhaXJvX3Bh dHRlcm5fYWRkX2NvbG9yX3N0b3BfcmdiYShwYXQsIDEuMDAsIDEuMDAsIDEuMDAsIDEuMDAsIDEu KTsKKworCWNhaXJvX3JlY3RhbmdsZShjciwgMCwgMCwgdywgaCk7CisJY2Fpcm9fc2V0X3NvdXJj ZShjciwgcGF0KTsKKwljYWlyb19zZXRfb3BlcmF0b3IoY3IsIENBSVJPX09QRVJBVE9SX1NPVVJD RSk7CisJY2Fpcm9fcGFpbnRfd2l0aF9hbHBoYShjciwgYSk7CisJY2Fpcm9fcGF0dGVybl9kZXN0 cm95KHBhdCk7Cit9CisKK3N0YXRpYyB2b2lkIGRyYXdfZ3JhZGllbnQoc3RydWN0IGlndF9mYiAq ZmIsIGludCB3LCBpbnQgaCwgZG91YmxlIGEpCit7CisJY2Fpcm9fdCAqY3IgPSBpZ3RfZ2V0X2Nh aXJvX2N0eChmYi0+ZmQsIGZiKTsKKworCV9fZHJhd19ncmFkaWVudChmYiwgdywgaCwgYSwgY3Ip OworCisJaWd0X3B1dF9jYWlyb19jdHgoZmItPmZkLCBmYiwgY3IpOworfQorCitzdGF0aWMgdm9p ZCBkcmF3X2dyYWRpZW50X2NvdmVyYWdlKHN0cnVjdCBpZ3RfZmIgKmZiLCBpbnQgdywgaW50IGgs IHVpbnQ4X3QgYSkKK3sKKwljYWlyb190ICpjciA9IGlndF9nZXRfY2Fpcm9fY3R4KGZiLT5mZCwg ZmIpOworCXVpbnQ4X3QgKmRhdGEgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKGZiLT5j YWlyb19zdXJmYWNlKTsKKwl1aW50MzJfdCBzdHJpZGUgPSBmYi0+c3RyaWRlOworCWludCBpOwor CisJX19kcmF3X2dyYWRpZW50KGZiLCB3LCBoLCAxLiwgY3IpOworCisJZm9yICg7IGgtLTsgZGF0 YSArPSBzdHJpZGUpCisJCWZvciAoaSA9IDA7IGkgPCB3OyBpKyspCisJCQlkYXRhW2kgKiA0ICsg M10gPSBhOworCisJaWd0X3B1dF9jYWlyb19jdHgoZmItPmZkLCBmYiwgY3IpOworfQorCitzdGF0 aWMgdm9pZCBkcmF3X3NxdWFyZXMoc3RydWN0IGlndF9mYiAqZmIsIGludCB3LCBpbnQgaCwgZG91 YmxlIGEpCit7CisJY2Fpcm9fdCAqY3IgPSBpZ3RfZ2V0X2NhaXJvX2N0eChmYi0+ZmQsIGZiKTsK KworCWlndF9wYWludF9jb2xvcl9hbHBoYShjciwgMCwgMCwgICAgICAgICB3IC8gMiwgaCAvIDIs IDEuLCAwLiwgMC4sIGEpOworCWlndF9wYWludF9jb2xvcl9hbHBoYShjciwgdyAvIDIsIDAsICAg ICB3IC8gMiwgaCAvIDIsIDAuLCAxLiwgMC4sIGEpOworCWlndF9wYWludF9jb2xvcl9hbHBoYShj ciwgMCwgaCAvIDIsICAgICB3IC8gMiwgaCAvIDIsIDAuLCAwLiwgMS4sIGEpOworCWlndF9wYWlu dF9jb2xvcl9hbHBoYShjciwgdyAvIDIsIGggLyAyLCB3IC8gNCwgaCAvIDIsIDEuLCAxLiwgMS4s IGEpOworCWlndF9wYWludF9jb2xvcl9hbHBoYShjciwgMyAqIHcgLyA0LCBoIC8gMiwgdyAvIDQs IGggLyAyLCAwLiwgMC4sIDAuLCBhKTsKKworCWlndF9wdXRfY2Fpcm9fY3R4KGZiLT5mZCwgZmIs IGNyKTsKK30KKworc3RhdGljIHZvaWQgZHJhd19zcXVhcmVzX2NvdmVyYWdlKHN0cnVjdCBpZ3Rf ZmIgKmZiLCBpbnQgdywgaW50IGgsIHVpbnQ4X3QgYXMpCit7CisJY2Fpcm9fdCAqY3IgPSBpZ3Rf Z2V0X2NhaXJvX2N0eChmYi0+ZmQsIGZiKTsKKwlpbnQgaSwgajsKKwl1aW50MzJfdCAqZGF0YSA9 ICh2b2lkICopY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShmYi0+Y2Fpcm9fc3VyZmFjZSk7 CisJdWludDMyX3Qgc3RyaWRlID0gZmItPnN0cmlkZSAvIDQ7CisJdWludDMyX3QgYSA9IGFzIDw8 IDI0OworCisJZm9yIChqID0gMDsgaiA8IGggLyAyOyBqKyspIHsKKwkJZm9yIChpID0gMDsgaSA8 IHcgLyAyOyBpKyspCisJCQlkYXRhW2ogKiBzdHJpZGUgKyBpXSA9IGEgfCAweGZmMDAwMDsKKwor CQlmb3IgKDsgaSA8IHc7IGkrKykKKwkJCWRhdGFbaiAqIHN0cmlkZSArIGldID0gYSB8IDB4ZmYw MDsKKwl9CisKKwlmb3IgKGogPSBoIC8gMjsgaiA8IGg7IGorKykgeworCQlmb3IgKGkgPSAwOyBp IDwgdyAvIDI7IGkrKykKKwkJCWRhdGFbaiAqIHN0cmlkZSArIGldID0gYSB8IDB4ZmY7CisKKwkJ Zm9yICg7IGkgPCAzICogdyAvIDQ7IGkrKykKKwkJCWRhdGFbaiAqIHN0cmlkZSArIGldID0gYSB8 IDB4ZmZmZmZmOworCisJCWZvciAoOyBpIDwgdzsgaSsrKQorCQkJZGF0YVtqICogc3RyaWRlICsg aV0gPSBhOworCX0KKworCWlndF9wdXRfY2Fpcm9fY3R4KGZiLT5mZCwgZmIsIGNyKTsKK30KKwor c3RhdGljIHZvaWQgcmVzZXRfYWxwaGEoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgZW51bSBwaXBl IHBpcGUpCit7CisJaWd0X3BsYW5lX3QgKnBsYW5lOworCisJZm9yX2VhY2hfcGxhbmVfb25fcGlw ZShkaXNwbGF5LCBwaXBlLCBwbGFuZSkgeworCQlpZiAoaWd0X3BsYW5lX2hhc19wcm9wKHBsYW5l LCBJR1RfUExBTkVfQUxQSEEpKQorCQkJaWd0X3BsYW5lX3NldF9wcm9wX3ZhbHVlKHBsYW5lLCBJ R1RfUExBTkVfQUxQSEEsIDB4ZmZmZik7CisKKwkJaWYgKGlndF9wbGFuZV9oYXNfcHJvcChwbGFu ZSwgSUdUX1BMQU5FX1BJWEVMX0JMRU5EX01PREUpKQorCQkJaWd0X3BsYW5lX3NldF9wcm9wX2Vu dW0ocGxhbmUsIElHVF9QTEFORV9QSVhFTF9CTEVORF9NT0RFLCAiUHJlLW11bHRpcGxpZWQiKTsK Kwl9Cit9CisKK3N0YXRpYyB2b2lkIHByZXBhcmVfY3J0YyhkYXRhX3QgKmRhdGEsIGlndF9vdXRw dXRfdCAqb3V0cHV0LCBlbnVtIHBpcGUgcGlwZSkKK3sKKwlkcm1Nb2RlTW9kZUluZm8gKm1vZGU7 CisJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZkYXRhLT5kaXNwbGF5OworCWludCB3LCBoOwor CWlndF9wbGFuZV90ICpwcmltYXJ5ID0gaWd0X3BpcGVfZ2V0X3BsYW5lX3R5cGUoJmRpc3BsYXkt PnBpcGVzW3BpcGVdLCBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsKKworCWlndF9kaXNwbGF5X3Jl c2V0KGRpc3BsYXkpOworCWlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBwaXBlKTsKKworCS8q IGNyZWF0ZSB0aGUgcGlwZV9jcmMgb2JqZWN0IGZvciB0aGlzIHBpcGUgKi8KKwlpZ3RfcGlwZV9j cmNfZnJlZShkYXRhLT5waXBlX2NyYyk7CisJZGF0YS0+cGlwZV9jcmMgPSBpZ3RfcGlwZV9jcmNf bmV3KGRhdGEtPmdmeF9mZCwgcGlwZSwgSU5URUxfUElQRV9DUkNfU09VUkNFX0FVVE8pOworCisJ bW9kZSA9IGlndF9vdXRwdXRfZ2V0X21vZGUob3V0cHV0KTsKKwl3ID0gbW9kZS0+aGRpc3BsYXk7 CisJaCA9IG1vZGUtPnZkaXNwbGF5OworCisJLyogcmVjcmVhdGUgYWxsIGZicyBpZiBpbmNvbXBh dGlibGUgKi8KKwlpZiAoZGF0YS0+eHJnYl9mYi53aWR0aCAhPSB3IHx8IGRhdGEtPnhyZ2JfZmIu aGVpZ2h0ICE9IGgpIHsKKwkJY2Fpcm9fdCAqY3I7CisKKwkJaWd0X3JlbW92ZV9mYihkYXRhLT5n ZnhfZmQsICZkYXRhLT54cmdiX2ZiKTsKKwkJaWd0X3JlbW92ZV9mYihkYXRhLT5nZnhfZmQsICZk YXRhLT5hcmdiX2ZiXzApOworCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmdmeF9mZCwgJmRhdGEtPmFy Z2JfZmJfY292XzApOworCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmdmeF9mZCwgJmRhdGEtPmFyZ2Jf ZmJfN2UpOworCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmdmeF9mZCwgJmRhdGEtPmFyZ2JfZmJfZmMp OworCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmdmeF9mZCwgJmRhdGEtPmFyZ2JfZmJfY292XzdlKTsK KwkJaWd0X3JlbW92ZV9mYihkYXRhLT5nZnhfZmQsICZkYXRhLT5hcmdiX2ZiX2Nvdl9mYyk7CisJ CWlndF9yZW1vdmVfZmIoZGF0YS0+Z2Z4X2ZkLCAmZGF0YS0+YXJnYl9mYl8xMDApOworCQlpZ3Rf cmVtb3ZlX2ZiKGRhdGEtPmdmeF9mZCwgJmRhdGEtPmJsYWNrX2ZiKTsKKwkJaWd0X3JlbW92ZV9m YihkYXRhLT5nZnhfZmQsICZkYXRhLT5ncmF5X2ZiKTsKKworCQlpZ3RfY3JlYXRlX2ZiKGRhdGEt PmdmeF9mZCwgdywgaCwKKwkJCSAgICAgIERSTV9GT1JNQVRfWFJHQjg4ODgsIExPQ0FMX0RSTV9G T1JNQVRfTU9EX05PTkUsCisJCQkgICAgICAmZGF0YS0+eHJnYl9mYik7CisJCWRyYXdfZ3JhZGll bnQoJmRhdGEtPnhyZ2JfZmIsIHcsIGgsIDEuKTsKKworCQlpZ3RfY3JlYXRlX2ZiKGRhdGEtPmdm eF9mZCwgdywgaCwKKwkJCSAgICAgIERSTV9GT1JNQVRfQVJHQjg4ODgsIExPQ0FMX0RSTV9GT1JN QVRfTU9EX05PTkUsCisJCQkgICAgICAmZGF0YS0+YXJnYl9mYl9jb3ZfMCk7CisJCWRyYXdfZ3Jh ZGllbnRfY292ZXJhZ2UoJmRhdGEtPmFyZ2JfZmJfY292XzAsIHcsIGgsIDApOworCisJCWlndF9j cmVhdGVfZmIoZGF0YS0+Z2Z4X2ZkLCB3LCBoLAorCQkJICAgICAgRFJNX0ZPUk1BVF9BUkdCODg4 OCwgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwKKwkJCSAgICAgICZkYXRhLT5hcmdiX2ZiXzAp OworCisJCWNyID0gaWd0X2dldF9jYWlyb19jdHgoZGF0YS0+Z2Z4X2ZkLCAmZGF0YS0+YXJnYl9m Yl8wKTsKKwkJaWd0X3BhaW50X2NvbG9yX2FscGhhKGNyLCAwLCAwLCB3LCBoLCAwLiwgMC4sIDAu LCAxLjApOworCQlpZ3RfcHV0X2NhaXJvX2N0eChkYXRhLT5nZnhfZmQsICZkYXRhLT5hcmdiX2Zi XzAsIGNyKTsKKworCQlpZ3RfY3JlYXRlX2ZiKGRhdGEtPmdmeF9mZCwgdywgaCwKKwkJCSAgICAg IERSTV9GT1JNQVRfQVJHQjg4ODgsIExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUsCisJCQkgICAg ICAmZGF0YS0+YXJnYl9mYl83ZSk7CisJCWRyYXdfc3F1YXJlcygmZGF0YS0+YXJnYl9mYl83ZSwg dywgaCwgMTI2LiAvIDI1NS4pOworCisJCWlndF9jcmVhdGVfZmIoZGF0YS0+Z2Z4X2ZkLCB3LCBo LAorCQkJICAgICAgRFJNX0ZPUk1BVF9BUkdCODg4OCwgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9O RSwKKwkJCSAgICAgICZkYXRhLT5hcmdiX2ZiX2Nvdl83ZSk7CisJCWRyYXdfc3F1YXJlc19jb3Zl cmFnZSgmZGF0YS0+YXJnYl9mYl9jb3ZfN2UsIHcsIGgsIDB4N2UpOworCisJCWlndF9jcmVhdGVf ZmIoZGF0YS0+Z2Z4X2ZkLCB3LCBoLAorCQkJICAgICAgRFJNX0ZPUk1BVF9BUkdCODg4OCwgTE9D QUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwKKwkJCSAgICAgICZkYXRhLT5hcmdiX2ZiX2ZjKTsKKwkJ ZHJhd19zcXVhcmVzKCZkYXRhLT5hcmdiX2ZiX2ZjLCB3LCBoLCAyNTIuIC8gMjU1Lik7CisKKwkJ aWd0X2NyZWF0ZV9mYihkYXRhLT5nZnhfZmQsIHcsIGgsCisJCQkgICAgICBEUk1fRk9STUFUX0FS R0I4ODg4LCBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLAorCQkJICAgICAgJmRhdGEtPmFyZ2Jf ZmJfY292X2ZjKTsKKwkJZHJhd19zcXVhcmVzX2NvdmVyYWdlKCZkYXRhLT5hcmdiX2ZiX2Nvdl9m YywgdywgaCwgMHhmYyk7CisKKwkJaWd0X2NyZWF0ZV9mYihkYXRhLT5nZnhfZmQsIHcsIGgsCisJ CQkgICAgICBEUk1fRk9STUFUX0FSR0I4ODg4LCBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLAor CQkJICAgICAgJmRhdGEtPmFyZ2JfZmJfMTAwKTsKKwkJZHJhd19ncmFkaWVudCgmZGF0YS0+YXJn Yl9mYl8xMDAsIHcsIGgsIDEuKTsKKworCQlpZ3RfY3JlYXRlX2ZiKGRhdGEtPmdmeF9mZCwgdywg aCwKKwkJCSAgICAgIERSTV9GT1JNQVRfWFJHQjg4ODgsIExPQ0FMX0RSTV9GT1JNQVRfTU9EX05P TkUsCisJCQkgICAgICAmZGF0YS0+YmxhY2tfZmIpOworCisJCWlndF9jcmVhdGVfY29sb3JfZmIo ZGF0YS0+Z2Z4X2ZkLCB3LCBoLAorCQkJCSAgICBEUk1fRk9STUFUX1hSR0I4ODg4LCBMT0NBTF9E Uk1fRk9STUFUX01PRF9OT05FLAorCQkJCSAgICAuNSwgLjUsIC41LCAmZGF0YS0+Z3JheV9mYik7 CisJfQorCisJaWd0X3BsYW5lX3NldF9mYihwcmltYXJ5LCAmZGF0YS0+YmxhY2tfZmIpOworCS8q IHJlc2V0IGFscGhhIHByb3BlcnR5IHRvIGRlZmF1bHQgKi8KKwlyZXNldF9hbHBoYShkaXNwbGF5 LCBwaXBlKTsKK30KKworc3RhdGljIHZvaWQgYmFzaWNfYWxwaGEoZGF0YV90ICpkYXRhLCBlbnVt IHBpcGUgcGlwZSwgaWd0X3BsYW5lX3QgKnBsYW5lKQoreworCWlndF9kaXNwbGF5X3QgKmRpc3Bs YXkgPSAmZGF0YS0+ZGlzcGxheTsKKwlpZ3RfY3JjX3QgcmVmX2NyYywgY3JjOworCWludCBpOwor CisJLyogVGVzdGNhc2UgMTogYWxwaGEgPSAwLjAsIHBsYW5lIHNob3VsZCBiZSB0cmFuc3BhcmFu dC4gKi8KKwlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9BVE9NSUMpOworCWln dF9waXBlX2NyY19zdGFydChkYXRhLT5waXBlX2NyYyk7CisJaWd0X3BpcGVfY3JjX2dldF9zaW5n bGUoZGF0YS0+cGlwZV9jcmMsICZyZWZfY3JjKTsKKworCWlndF9wbGFuZV9zZXRfZmIocGxhbmUs ICZkYXRhLT5hcmdiX2ZiXzApOworCisJLyogdHJhbnNwYXJhbnQgZmIgc2hvdWxkIGJlIHRyYW5z cGFyYW50LCBubyBtYXR0ZXIgd2hhdC4uICovCisJZm9yIChpID0gNzsgaSA8IDI1NjsgaSArPSA4 KSB7CisJCWlndF9wbGFuZV9zZXRfcHJvcF92YWx1ZShwbGFuZSwgSUdUX1BMQU5FX0FMUEhBLCBp IHwgKGkgPDwgOCkpOworCQlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9BVE9N SUMpOworCisJCWlndF9waXBlX2NyY19kcmFpbihkYXRhLT5waXBlX2NyYyk7CisJCWlndF9waXBl X2NyY19nZXRfc2luZ2xlKGRhdGEtPnBpcGVfY3JjLCAmY3JjKTsKKwkJaWd0X2Fzc2VydF9jcmNf ZXF1YWwoJnJlZl9jcmMsICZjcmMpOworCX0KKworCS8qIEFuZCB0ZXN0IGFscGhhID0gMCwgc2hv dWxkIGdpdmUgc2FtZSBDUkMsIGJ1dCBkb2Vzbid0IG9uIHNvbWUgaTkxNSBwbGF0Zm9ybXMuICov CisJaWd0X3BsYW5lX3NldF9wcm9wX3ZhbHVlKHBsYW5lLCBJR1RfUExBTkVfQUxQSEEsIDApOwor CWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7CisKKwlpZ3RfcGlw ZV9jcmNfZHJhaW4oZGF0YS0+cGlwZV9jcmMpOworCWlndF9waXBlX2NyY19nZXRfc2luZ2xlKGRh dGEtPnBpcGVfY3JjLCAmY3JjKTsKKwlpZ3RfcGlwZV9jcmNfc3RvcChkYXRhLT5waXBlX2NyYyk7 CisJaWd0X2Fzc2VydF9jcmNfZXF1YWwoJnJlZl9jcmMsICZjcmMpOworfQorCitzdGF0aWMgdm9p ZCBhcmdiX29wYXF1ZShkYXRhX3QgKmRhdGEsIGVudW0gcGlwZSBwaXBlLCBpZ3RfcGxhbmVfdCAq cGxhbmUpCit7CisJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZkYXRhLT5kaXNwbGF5OworCWln dF9jcmNfdCByZWZfY3JjLCBjcmM7CisKKwkvKiBhbHBoYSA9IDEuMCwgcGxhbmUgc2hvdWxkIGJl IGZ1bGx5IG9wYXF1ZSwgdGVzdCB3aXRoIGFuIG9wYXF1ZSBmYiAqLworCWlndF9wbGFuZV9zZXRf ZmIocGxhbmUsICZkYXRhLT54cmdiX2ZiKTsKKwlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXks IENPTU1JVF9BVE9NSUMpOworCWlndF9waXBlX2NyY19jb2xsZWN0X2NyYyhkYXRhLT5waXBlX2Ny YywgJnJlZl9jcmMpOworCisJaWd0X3BsYW5lX3NldF9mYihwbGFuZSwgJmRhdGEtPmFyZ2JfZmJf MTAwKTsKKwlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9BVE9NSUMpOworCWln dF9waXBlX2NyY19jb2xsZWN0X2NyYyhkYXRhLT5waXBlX2NyYywgJmNyYyk7CisKKwlpZ3RfYXNz ZXJ0X2NyY19lcXVhbCgmcmVmX2NyYywgJmNyYyk7Cit9CisKK3N0YXRpYyB2b2lkIGFyZ2JfdHJh bnNwYXJhbnQoZGF0YV90ICpkYXRhLCBlbnVtIHBpcGUgcGlwZSwgaWd0X3BsYW5lX3QgKnBsYW5l KQoreworCWlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsKKwlpZ3RfY3Jj X3QgcmVmX2NyYywgY3JjOworCisJLyogYWxwaGEgPSAxLjAsIHBsYW5lIHNob3VsZCBiZSBmdWxs eSBvcGFxdWUsIHRlc3Qgd2l0aCBhIHRyYW5zcGFyYW50IGZiICovCisJaWd0X3BsYW5lX3NldF9m YihwbGFuZSwgTlVMTCk7CisJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfQVRP TUlDKTsKKwlpZ3RfcGlwZV9jcmNfY29sbGVjdF9jcmMoZGF0YS0+cGlwZV9jcmMsICZyZWZfY3Jj KTsKKworCWlndF9wbGFuZV9zZXRfZmIocGxhbmUsICZkYXRhLT5hcmdiX2ZiXzApOworCWlndF9k aXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7CisJaWd0X3BpcGVfY3JjX2Nv bGxlY3RfY3JjKGRhdGEtPnBpcGVfY3JjLCAmY3JjKTsKKworCWlndF9hc3NlcnRfY3JjX2VxdWFs KCZyZWZfY3JjLCAmY3JjKTsKK30KKworc3RhdGljIHZvaWQgY29uc3RhbnRfYWxwaGFfbWluKGRh dGFfdCAqZGF0YSwgZW51bSBwaXBlIHBpcGUsIGlndF9wbGFuZV90ICpwbGFuZSkKK3sKKwlpZ3Rf ZGlzcGxheV90ICpkaXNwbGF5ID0gJmRhdGEtPmRpc3BsYXk7CisJaWd0X2NyY190IHJlZl9jcmMs IGNyYzsKKworCWlndF9wbGFuZV9zZXRfZmIocGxhbmUsIE5VTEwpOworCWlndF9kaXNwbGF5X2Nv bW1pdDIoZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7CisJaWd0X3BpcGVfY3JjX2NvbGxlY3RfY3Jj KGRhdGEtPnBpcGVfY3JjLCAmcmVmX2NyYyk7CisKKwlpZ3RfcGxhbmVfc2V0X3Byb3BfZW51bShw bGFuZSwgSUdUX1BMQU5FX1BJWEVMX0JMRU5EX01PREUsICJOb25lIik7CisJaWd0X3BsYW5lX3Nl dF9wcm9wX3ZhbHVlKHBsYW5lLCBJR1RfUExBTkVfQUxQSEEsIDApOworCWlndF9wbGFuZV9zZXRf ZmIocGxhbmUsICZkYXRhLT5hcmdiX2ZiXzEwMCk7CisJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNw bGF5LCBDT01NSVRfQVRPTUlDKTsKKwlpZ3RfcGlwZV9jcmNfY29sbGVjdF9jcmMoZGF0YS0+cGlw ZV9jcmMsICZjcmMpOworCWlndF9hc3NlcnRfY3JjX2VxdWFsKCZyZWZfY3JjLCAmY3JjKTsKKwor CWlndF9wbGFuZV9zZXRfZmIocGxhbmUsICZkYXRhLT5hcmdiX2ZiXzApOworCWlndF9kaXNwbGF5 X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7CisJaWd0X3BpcGVfY3JjX2NvbGxlY3Rf Y3JjKGRhdGEtPnBpcGVfY3JjLCAmY3JjKTsKKwlpZ3RfYXNzZXJ0X2NyY19lcXVhbCgmcmVmX2Ny YywgJmNyYyk7Cit9CisKK3N0YXRpYyB2b2lkIGNvbnN0YW50X2FscGhhX21pZChkYXRhX3QgKmRh dGEsIGVudW0gcGlwZSBwaXBlLCBpZ3RfcGxhbmVfdCAqcGxhbmUpCit7CisJaWd0X2Rpc3BsYXlf dCAqZGlzcGxheSA9ICZkYXRhLT5kaXNwbGF5OworCWlndF9jcmNfdCByZWZfY3JjLCBjcmM7CisK KwlpZiAocGxhbmUtPnR5cGUgIT0gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSkKKwkJaWd0X3BsYW5l X3NldF9mYihpZ3RfcGlwZV9nZXRfcGxhbmVfdHlwZSgmZGlzcGxheS0+cGlwZXNbcGlwZV0sIERS TV9QTEFORV9UWVBFX1BSSU1BUlkpLCAmZGF0YS0+Z3JheV9mYik7CisKKwlpZ3RfcGxhbmVfc2V0 X3Byb3BfZW51bShwbGFuZSwgSUdUX1BMQU5FX1BJWEVMX0JMRU5EX01PREUsICJOb25lIik7CisJ aWd0X3BsYW5lX3NldF9wcm9wX3ZhbHVlKHBsYW5lLCBJR1RfUExBTkVfQUxQSEEsIDB4N2ZmZik7 CisJaWd0X3BsYW5lX3NldF9mYihwbGFuZSwgJmRhdGEtPnhyZ2JfZmIpOworCWlndF9kaXNwbGF5 X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7CisJaWd0X3BpcGVfY3JjX2NvbGxlY3Rf Y3JjKGRhdGEtPnBpcGVfY3JjLCAmcmVmX2NyYyk7CisKKwlpZ3RfcGxhbmVfc2V0X2ZiKHBsYW5l LCAmZGF0YS0+YXJnYl9mYl9jb3ZfMCk7CisJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBD T01NSVRfQVRPTUlDKTsKKwlpZ3RfcGlwZV9jcmNfY29sbGVjdF9jcmMoZGF0YS0+cGlwZV9jcmMs ICZjcmMpOworCWlndF9hc3NlcnRfY3JjX2VxdWFsKCZyZWZfY3JjLCAmY3JjKTsKKworCWlndF9w bGFuZV9zZXRfZmIocGxhbmUsICZkYXRhLT5hcmdiX2ZiXzEwMCk7CisJaWd0X2Rpc3BsYXlfY29t bWl0MihkaXNwbGF5LCBDT01NSVRfQVRPTUlDKTsKKwlpZ3RfcGlwZV9jcmNfY29sbGVjdF9jcmMo ZGF0YS0+cGlwZV9jcmMsICZjcmMpOworCWlndF9hc3NlcnRfY3JjX2VxdWFsKCZyZWZfY3JjLCAm Y3JjKTsKK30KKworc3RhdGljIHZvaWQgY29uc3RhbnRfYWxwaGFfbWF4KGRhdGFfdCAqZGF0YSwg ZW51bSBwaXBlIHBpcGUsIGlndF9wbGFuZV90ICpwbGFuZSkKK3sKKwlpZ3RfZGlzcGxheV90ICpk aXNwbGF5ID0gJmRhdGEtPmRpc3BsYXk7CisJaWd0X2NyY190IHJlZl9jcmMsIGNyYzsKKworCWlm IChwbGFuZS0+dHlwZSAhPSBEUk1fUExBTkVfVFlQRV9QUklNQVJZKQorCQlpZ3RfcGxhbmVfc2V0 X2ZiKGlndF9waXBlX2dldF9wbGFuZV90eXBlKCZkaXNwbGF5LT5waXBlc1twaXBlXSwgRFJNX1BM QU5FX1RZUEVfUFJJTUFSWSksICZkYXRhLT5ncmF5X2ZiKTsKKworCWlndF9wbGFuZV9zZXRfZmIo cGxhbmUsICZkYXRhLT5hcmdiX2ZiXzEwMCk7CisJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5 LCBDT01NSVRfQVRPTUlDKTsKKwlpZ3RfcGlwZV9jcmNfY29sbGVjdF9jcmMoZGF0YS0+cGlwZV9j cmMsICZyZWZfY3JjKTsKKworCWlndF9wbGFuZV9zZXRfcHJvcF9lbnVtKHBsYW5lLCBJR1RfUExB TkVfUElYRUxfQkxFTkRfTU9ERSwgIk5vbmUiKTsKKwlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3Bs YXksIENPTU1JVF9BVE9NSUMpOworCWlndF9waXBlX2NyY19jb2xsZWN0X2NyYyhkYXRhLT5waXBl X2NyYywgJmNyYyk7CisJaWd0X2Fzc2VydF9jcmNfZXF1YWwoJnJlZl9jcmMsICZjcmMpOworCisJ aWd0X3BsYW5lX3NldF9mYihwbGFuZSwgJmRhdGEtPmFyZ2JfZmJfY292XzApOworCWlndF9kaXNw bGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7CisJaWd0X3BpcGVfY3JjX2NvbGxl Y3RfY3JjKGRhdGEtPnBpcGVfY3JjLCAmY3JjKTsKKwlpZ3RfYXNzZXJ0X2NyY19lcXVhbCgmcmVm X2NyYywgJmNyYyk7CisKKwlpZ3RfcGxhbmVfc2V0X2ZiKHBsYW5lLCAmZGF0YS0+eHJnYl9mYik7 CisJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfQVRPTUlDKTsKKwlpZ3RfcGlw ZV9jcmNfY29sbGVjdF9jcmMoZGF0YS0+cGlwZV9jcmMsICZjcmMpOworCWlndF9hc3NlcnRfY3Jj X2VxdWFsKCZyZWZfY3JjLCAmY3JjKTsKKworCWlndF9wbGFuZV9zZXRfZmIocGxhbmUsIE5VTEwp OworfQorCitzdGF0aWMgdm9pZCBhbHBoYV83ZWZjKGRhdGFfdCAqZGF0YSwgZW51bSBwaXBlIHBp cGUsIGlndF9wbGFuZV90ICpwbGFuZSkKK3sKKwlpZ3RfZGlzcGxheV90ICpkaXNwbGF5ID0gJmRh dGEtPmRpc3BsYXk7CisJaWd0X2NyY190IHJlZl9jcmMgPSB7fSwgY3JjID0ge307CisJaW50IGk7 CisKKwlpZiAocGxhbmUtPnR5cGUgIT0gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSkKKwkJaWd0X3Bs YW5lX3NldF9mYihpZ3RfcGlwZV9nZXRfcGxhbmVfdHlwZSgmZGlzcGxheS0+cGlwZXNbcGlwZV0s IERSTV9QTEFORV9UWVBFX1BSSU1BUlkpLCAmZGF0YS0+Z3JheV9mYik7CisKKwlpZ3RfcGlwZV9j cmNfc3RhcnQoZGF0YS0+cGlwZV9jcmMpOworCisJLyogZm9yIGNvdmVyYWdlLCBwbGFuZSBhbHBo YSBhbmQgZmIgYWxwaGEgc2hvdWxkIGJlIHN3YXBwYWJsZSwgc28gc3dhcCBmYiBhbmQgYWxwaGEg Ki8KKwlmb3IgKGkgPSAwOyBpIDwgMjU2OyBpICs9IDgpIHsKKwkJaWd0X3BsYW5lX3NldF9wcm9w X3ZhbHVlKHBsYW5lLCBJR1RfUExBTkVfQUxQSEEsICgoaS8yKSA8PCA4KSB8IChpLzIpKTsKKwkJ aWd0X3BsYW5lX3NldF9mYihwbGFuZSwgJmRhdGEtPmFyZ2JfZmJfZmMpOworCQlpZ3RfZGlzcGxh eV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9BVE9NSUMpOworCisJCWlndF9waXBlX2NyY19kcmFp bihkYXRhLT5waXBlX2NyYyk7CisJCWlndF9waXBlX2NyY19nZXRfc2luZ2xlKGRhdGEtPnBpcGVf Y3JjLCAmcmVmX2NyYyk7CisKKwkJaWd0X3BsYW5lX3NldF9wcm9wX3ZhbHVlKHBsYW5lLCBJR1Rf UExBTkVfQUxQSEEsIChpIDw8IDgpIHwgaSk7CisJCWlndF9wbGFuZV9zZXRfZmIocGxhbmUsICZk YXRhLT5hcmdiX2ZiXzdlKTsKKwkJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRf QVRPTUlDKTsKKworCQlpZ3RfcGlwZV9jcmNfZHJhaW4oZGF0YS0+cGlwZV9jcmMpOworCQlpZ3Rf cGlwZV9jcmNfZ2V0X3NpbmdsZShkYXRhLT5waXBlX2NyYywgJmNyYyk7CisJCWlndF9hc3NlcnRf Y3JjX2VxdWFsKCZyZWZfY3JjLCAmY3JjKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGNvdmVyYWdl XzdlZmMoZGF0YV90ICpkYXRhLCBlbnVtIHBpcGUgcGlwZSwgaWd0X3BsYW5lX3QgKnBsYW5lKQor eworCWlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsKKwlpZ3RfY3JjX3Qg cmVmX2NyYyA9IHt9LCBjcmMgPSB7fTsKKwlpbnQgaTsKKworCWlndF9wbGFuZV9zZXRfcHJvcF9l bnVtKHBsYW5lLCBJR1RfUExBTkVfUElYRUxfQkxFTkRfTU9ERSwgIkNvdmVyYWdlIik7CisJaWd0 X3BpcGVfY3JjX3N0YXJ0KGRhdGEtPnBpcGVfY3JjKTsKKworCS8qIGZvciBjb3ZlcmFnZSwgcGxh bmUgYWxwaGEgYW5kIGZiIGFscGhhIHNob3VsZCBiZSBzd2FwcGFibGUsIHNvIHN3YXAgZmIgYW5k IGFscGhhICovCisJZm9yIChpID0gMDsgaSA8IDI1NjsgaSArPSA4KSB7CisJCWlndF9wbGFuZV9z ZXRfcHJvcF92YWx1ZShwbGFuZSwgSUdUX1BMQU5FX0FMUEhBLCAoKGkvMikgPDwgOCkgfCAoaS8y KSk7CisJCWlndF9wbGFuZV9zZXRfZmIocGxhbmUsICZkYXRhLT5hcmdiX2ZiX2Nvdl9mYyk7CisJ CWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7CisKKwkJaWd0X3Bp cGVfY3JjX2RyYWluKGRhdGEtPnBpcGVfY3JjKTsKKwkJaWd0X3BpcGVfY3JjX2dldF9zaW5nbGUo ZGF0YS0+cGlwZV9jcmMsICZyZWZfY3JjKTsKKworCQlpZ3RfcGxhbmVfc2V0X3Byb3BfdmFsdWUo cGxhbmUsIElHVF9QTEFORV9BTFBIQSwgKGkgPDwgOCkgfCBpKTsKKwkJaWd0X3BsYW5lX3NldF9m YihwbGFuZSwgJmRhdGEtPmFyZ2JfZmJfY292XzdlKTsKKwkJaWd0X2Rpc3BsYXlfY29tbWl0Mihk aXNwbGF5LCBDT01NSVRfQVRPTUlDKTsKKworCQlpZ3RfcGlwZV9jcmNfZHJhaW4oZGF0YS0+cGlw ZV9jcmMpOworCQlpZ3RfcGlwZV9jcmNfZ2V0X3NpbmdsZShkYXRhLT5waXBlX2NyYywgJmNyYyk7 CisJCWlndF9hc3NlcnRfY3JjX2VxdWFsKCZyZWZfY3JjLCAmY3JjKTsKKwl9Cit9CisKK3N0YXRp YyB2b2lkIGNvdmVyYWdlX3ByZW11bHRfY29uc3RhbnQoZGF0YV90ICpkYXRhLCBlbnVtIHBpcGUg cGlwZSwgaWd0X3BsYW5lX3QgKnBsYW5lKQoreworCWlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAm ZGF0YS0+ZGlzcGxheTsKKwlpZ3RfY3JjX3QgcmVmX2NyYyA9IHt9LCBjcmMgPSB7fTsKKworCWln dF9waXBlX2NyY19zdGFydChkYXRhLT5waXBlX2NyYyk7CisKKwkvKiBTZXQgYSBiYWNrZ3JvdW5k IGNvbG9yIG9uIHRoZSBwcmltYXJ5IGZiIGZvciB0ZXN0aW5nICovCisJaWYgKHBsYW5lLT50eXBl ICE9IERSTV9QTEFORV9UWVBFX1BSSU1BUlkpCisJCWlndF9wbGFuZV9zZXRfZmIoaWd0X3BpcGVf Z2V0X3BsYW5lX3R5cGUoJmRpc3BsYXktPnBpcGVzW3BpcGVdLCBEUk1fUExBTkVfVFlQRV9QUklN QVJZKSwgJmRhdGEtPmdyYXlfZmIpOworCisJaWd0X3BsYW5lX3NldF9wcm9wX2VudW0ocGxhbmUs IElHVF9QTEFORV9QSVhFTF9CTEVORF9NT0RFLCAiQ292ZXJhZ2UiKTsKKwlpZ3RfcGxhbmVfc2V0 X2ZiKHBsYW5lLCAmZGF0YS0+YXJnYl9mYl9jb3ZfN2UpOworCWlndF9kaXNwbGF5X2NvbW1pdDIo ZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7CisKKwlpZ3RfcGlwZV9jcmNfZHJhaW4oZGF0YS0+cGlw ZV9jcmMpOworCWlndF9waXBlX2NyY19nZXRfc2luZ2xlKGRhdGEtPnBpcGVfY3JjLCAmcmVmX2Ny Yyk7CisKKwlpZ3RfcGxhbmVfc2V0X3Byb3BfZW51bShwbGFuZSwgSUdUX1BMQU5FX1BJWEVMX0JM RU5EX01PREUsICJQcmUtbXVsdGlwbGllZCIpOworCWlndF9wbGFuZV9zZXRfZmIocGxhbmUsICZk YXRhLT5hcmdiX2ZiXzdlKTsKKwlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9B VE9NSUMpOworCisJaWd0X3BpcGVfY3JjX2RyYWluKGRhdGEtPnBpcGVfY3JjKTsKKwlpZ3RfcGlw ZV9jcmNfZ2V0X3NpbmdsZShkYXRhLT5waXBlX2NyYywgJmNyYyk7CisJaWd0X2Fzc2VydF9jcmNf ZXF1YWwoJnJlZl9jcmMsICZjcmMpOworCisJaWd0X3BsYW5lX3NldF9wcm9wX2VudW0ocGxhbmUs IElHVF9QTEFORV9QSVhFTF9CTEVORF9NT0RFLCAiTm9uZSIpOworCWlndF9wbGFuZV9zZXRfcHJv cF92YWx1ZShwbGFuZSwgSUdUX1BMQU5FX0FMUEhBLCAweDdlN2UpOworCWlndF9wbGFuZV9zZXRf ZmIocGxhbmUsICZkYXRhLT5hcmdiX2ZiX2Nvdl83ZSk7CisJaWd0X2Rpc3BsYXlfY29tbWl0Mihk aXNwbGF5LCBDT01NSVRfQVRPTUlDKTsKKworCWlndF9waXBlX2NyY19kcmFpbihkYXRhLT5waXBl X2NyYyk7CisJaWd0X3BpcGVfY3JjX2dldF9zaW5nbGUoZGF0YS0+cGlwZV9jcmMsICZjcmMpOwor CWlndF9hc3NlcnRfY3JjX2VxdWFsKCZyZWZfY3JjLCAmY3JjKTsKK30KKworc3RhdGljIHZvaWQg cnVuX3Rlc3Rfb25fcGlwZV9wbGFuZXMoZGF0YV90ICpkYXRhLCBlbnVtIHBpcGUgcGlwZSwgYm9v bCBibGVuZCwKKwkJCQkgICAgdm9pZCgqdGVzdCkoZGF0YV90ICosIGVudW0gcGlwZSwgaWd0X3Bs YW5lX3QgKikpCit7CisJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZkYXRhLT5kaXNwbGF5Owor CWlndF9vdXRwdXRfdCAqb3V0cHV0ID0gaWd0X2dldF9zaW5nbGVfb3V0cHV0X2Zvcl9waXBlKGRp c3BsYXksIHBpcGUpOworCWlndF9wbGFuZV90ICpwbGFuZTsKKwlib29sIGZvdW5kID0gZmFsc2U7 CisKKwlmb3JfZWFjaF9wbGFuZV9vbl9waXBlKGRpc3BsYXksIHBpcGUsIHBsYW5lKSB7CisJCWlm ICghaWd0X3BsYW5lX2hhc19wcm9wKHBsYW5lLCBJR1RfUExBTkVfQUxQSEEpKQorCQkJY29udGlu dWU7CisKKwkJaWYgKGJsZW5kICYmICFpZ3RfcGxhbmVfaGFzX3Byb3AocGxhbmUsIElHVF9QTEFO RV9QSVhFTF9CTEVORF9NT0RFKSkKKwkJCWNvbnRpbnVlOworCisJCXByZXBhcmVfY3J0YyhkYXRh LCBvdXRwdXQsIHBpcGUpOworCisJCS8qIHJlc2V0IHBsYW5lIGFscGhhIHByb3BlcnRpZXMgYmV0 d2VlbiBlYWNoIHBsYW5lICovCisJCXJlc2V0X2FscGhhKGRpc3BsYXksIHBpcGUpOworCisJCWZv dW5kID0gdHJ1ZTsKKwkJaWd0X2luZm8oIlRlc3RpbmcgcGxhbmUgJXVcbiIsIHBsYW5lLT5pbmRl eCk7CisJCXRlc3QoZGF0YSwgcGlwZSwgcGxhbmUpOworCQlpZ3RfcGxhbmVfc2V0X2ZiKHBsYW5l LCBOVUxMKTsKKwl9CisKKwlpZ3RfcmVxdWlyZV9mKGZvdW5kLCAiTm8gcGxhbmVzIHdpdGggJXMg cHJvcGVydHkgZm91bmRcbiIsIGJsZW5kID8gInBpeGVsIGJsZW5kaW5nIG1vZGUiIDogImFscGhh Iik7Cit9CisKK3N0YXRpYyB2b2lkIHJ1bl9zdWJ0ZXN0cyhkYXRhX3QgKmRhdGEsIGVudW0gcGlw ZSBwaXBlKQoreworCWlndF9maXh0dXJlIHsKKwkJYm9vbCBmb3VuZCA9IGZhbHNlOworCQlpZ3Rf cGxhbmVfdCAqcGxhbmU7CisKKwkJaWd0X2Rpc3BsYXlfcmVxdWlyZV9vdXRwdXRfb25fcGlwZSgm ZGF0YS0+ZGlzcGxheSwgcGlwZSk7CisJCWZvcl9lYWNoX3BsYW5lX29uX3BpcGUoJmRhdGEtPmRp c3BsYXksIHBpcGUsIHBsYW5lKSB7CisJCQlpZiAoIWlndF9wbGFuZV9oYXNfcHJvcChwbGFuZSwg SUdUX1BMQU5FX0FMUEhBKSkKKwkJCQljb250aW51ZTsKKworCQkJZm91bmQgPSB0cnVlOworCQkJ YnJlYWs7CisJCX0KKworCQlpZ3RfcmVxdWlyZV9mKGZvdW5kLCAiRm91bmQgbm8gcGxhbmUgb24g cGlwZSAlcyB3aXRoIGFscGhhIGJsZW5kaW5nIHN1cHBvcnRlZFxuIiwKKwkJCSAgICAgIGttc3Rl c3RfcGlwZV9uYW1lKHBpcGUpKTsKKwl9CisKKwlpZ3Rfc3VidGVzdF9mKCJwaXBlLSVzLWFscGhh LWJhc2ljIiwga21zdGVzdF9waXBlX25hbWUocGlwZSkpCisJCXJ1bl90ZXN0X29uX3BpcGVfcGxh bmVzKGRhdGEsIHBpcGUsIGZhbHNlLCBiYXNpY19hbHBoYSk7CisKKwlpZ3Rfc3VidGVzdF9mKCJw aXBlLSVzLWFscGhhLTdlZmMiLCBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSkKKwkJcnVuX3Rlc3Rf b25fcGlwZV9wbGFuZXMoZGF0YSwgcGlwZSwgZmFsc2UsIGFscGhhXzdlZmMpOworCisJaWd0X3N1 YnRlc3RfZigicGlwZS0lcy1jb3ZlcmFnZS03ZWZjIiwga21zdGVzdF9waXBlX25hbWUocGlwZSkp CisJCXJ1bl90ZXN0X29uX3BpcGVfcGxhbmVzKGRhdGEsIHBpcGUsIHRydWUsIGNvdmVyYWdlXzdl ZmMpOworCisJaWd0X3N1YnRlc3RfZigicGlwZS0lcy1jb3ZlcmFnZS12cy1wcmVtdWx0LXZzLWNv bnN0YW50Iiwga21zdGVzdF9waXBlX25hbWUocGlwZSkpCisJCXJ1bl90ZXN0X29uX3BpcGVfcGxh bmVzKGRhdGEsIHBpcGUsIHRydWUsIGNvdmVyYWdlX3ByZW11bHRfY29uc3RhbnQpOworCisJaWd0 X3N1YnRlc3RfZigicGlwZS0lcy1hbHBoYS10cmFuc3BhcmFudC1mYiIsIGttc3Rlc3RfcGlwZV9u YW1lKHBpcGUpKQorCQlydW5fdGVzdF9vbl9waXBlX3BsYW5lcyhkYXRhLCBwaXBlLCBmYWxzZSwg YXJnYl90cmFuc3BhcmFudCk7CisKKwlpZ3Rfc3VidGVzdF9mKCJwaXBlLSVzLWFscGhhLW9wYXF1 ZS1mYiIsIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpKQorCQlydW5fdGVzdF9vbl9waXBlX3BsYW5l cyhkYXRhLCBwaXBlLCBmYWxzZSwgYXJnYl9vcGFxdWUpOworCisJaWd0X3N1YnRlc3RfZigicGlw ZS0lcy1jb25zdGFudC1hbHBoYS1taW4iLCBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSkKKwkJcnVu X3Rlc3Rfb25fcGlwZV9wbGFuZXMoZGF0YSwgcGlwZSwgdHJ1ZSwgY29uc3RhbnRfYWxwaGFfbWlu KTsKKworCWlndF9zdWJ0ZXN0X2YoInBpcGUtJXMtY29uc3RhbnQtYWxwaGEtbWlkIiwga21zdGVz dF9waXBlX25hbWUocGlwZSkpCisJCXJ1bl90ZXN0X29uX3BpcGVfcGxhbmVzKGRhdGEsIHBpcGUs IHRydWUsIGNvbnN0YW50X2FscGhhX21pZCk7CisKKwlpZ3Rfc3VidGVzdF9mKCJwaXBlLSVzLWNv bnN0YW50LWFscGhhLW1heCIsIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpKQorCQlydW5fdGVzdF9v bl9waXBlX3BsYW5lcyhkYXRhLCBwaXBlLCB0cnVlLCBjb25zdGFudF9hbHBoYV9tYXgpOworfQor CitpZ3RfbWFpbgoreworCWRhdGFfdCBkYXRhID0ge307CisJZW51bSBwaXBlIHBpcGU7CisKKwlp Z3RfZml4dHVyZSB7CisJCWlndF9za2lwX29uX3NpbXVsYXRpb24oKTsKKworCQlkYXRhLmdmeF9m ZCA9IGRybV9vcGVuX2RyaXZlcihEUklWRVJfQU5ZKTsKKwkJaWd0X3JlcXVpcmVfcGlwZV9jcmMo ZGF0YS5nZnhfZmQpOworCQlpZ3RfZGlzcGxheV9pbml0KCZkYXRhLmRpc3BsYXksIGRhdGEuZ2Z4 X2ZkKTsKKwkJaWd0X3JlcXVpcmUoZGF0YS5kaXNwbGF5LmlzX2F0b21pYyk7CisJfQorCisJZm9y X2VhY2hfcGlwZV9zdGF0aWMocGlwZSkKKwkJaWd0X3N1YnRlc3RfZ3JvdXAKKwkJCXJ1bl9zdWJ0 ZXN0cygmZGF0YSwgcGlwZSk7CisKKwlpZ3RfZml4dHVyZQorCQlpZ3RfZGlzcGxheV9maW5pKCZk YXRhLmRpc3BsYXkpOworfQpkaWZmIC0tZ2l0IGEvdGVzdHMvbWVzb24uYnVpbGQgYi90ZXN0cy9t ZXNvbi5idWlsZAppbmRleCA4MjZmM2M0Njc4ZDAuLjRiMmZjMjBiZjhmZSAxMDA2NDQKLS0tIGEv dGVzdHMvbWVzb24uYnVpbGQKKysrIGIvdGVzdHMvbWVzb24uYnVpbGQKQEAgLTE3Niw2ICsxNzYs NyBAQCB0ZXN0X3Byb2dzID0gWwogCSdrbXNfcGlwZV9iX2NfaXZiJywKIAkna21zX3BpcGVfY3Jj X2Jhc2ljJywKIAkna21zX3BsYW5lJywKKwkna21zX3BsYW5lX2FscGhhX2JsZW5kJywKIAkna21z X3BsYW5lX2xvd3JlcycsCiAJJ2ttc19wbGFuZV9tdWx0aXBsZScsCiAJJ2ttc19wbGFuZV9zY2Fs aW5nJywKLS0gCjIuMTcuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJp LWRldmVsCg==