From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ed1-x543.google.com (mail-ed1-x543.google.com [IPv6:2a00:1450:4864:20::543]) by gabe.freedesktop.org (Postfix) with ESMTPS id 90D4489147 for ; Tue, 19 Feb 2019 07:57:24 +0000 (UTC) Received: by mail-ed1-x543.google.com with SMTP id g9so5372847eds.3 for ; Mon, 18 Feb 2019 23:57:24 -0800 (PST) From: Daniel Vetter Date: Tue, 19 Feb 2019 08:57:12 +0100 Message-Id: <20190219075716.11553-1-daniel.vetter@ffwll.ch> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 1/5] lib/tests: Add header for common helpers List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: IGT development Cc: Daniel Vetter List-ID: U3RhcnQgd2l0aCBpbnRlcm5hbF9hc3NlcnQsIG1vcmUgd2lsbCBmb2xsb3cuIFdoaWxlIGF0IGl0 LCB1c2UKaW50ZXJuYWxfYXNzZXJ0IGV2ZXJ5d2hlcmUgKGV4Y2VwdCB3aGVyZSB3ZSBjaGVjayBl eGl0IHN0YXR1cywgdGhvc2UKd2lsbCBnZXQgZGVkaWNhdGVkIGFzc2VydCBjaGVja3MpLgoKU2ln bmVkLW9mZi1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBpbnRlbC5jb20+Ci0tLQog bGliL3Rlc3RzL2lndF9hc3NlcnQuYyAgICAgICAgICB8ICA5ICstLS0tLS0tCiBsaWIvdGVzdHMv aWd0X2Nhbl9mYWlsLmMgICAgICAgIHwgMTIgKysrKystLS0tLS0KIGxpYi90ZXN0cy9pZ3RfY2Fu X2ZhaWxfc2ltcGxlLmMgfCAgNCArKy0tCiBsaWIvdGVzdHMvaWd0X2V4aXRfaGFuZGxlci5jICAg IHwgMjEgKysrKysrKysrLS0tLS0tLS0tCiBsaWIvdGVzdHMvaWd0X2ZvcmsuYyAgICAgICAgICAg IHwgIDkgKy0tLS0tLS0KIGxpYi90ZXN0cy9pZ3Rfc2VnZmF1bHQuYyAgICAgICAgfCAgOSArLS0t LS0tLQogbGliL3Rlc3RzL2lndF9zaW11bGF0aW9uLmMgICAgICB8ICA5ICstLS0tLS0tCiBsaWIv dGVzdHMvaWd0X3N1YnRlc3RfZ3JvdXAuYyAgIHwgMTkgKysrKysrKysrLS0tLS0tLS0KIGxpYi90 ZXN0cy9pZ3RfdGVzdHNfY29tbW9uLmggICAgfCAzOCArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKIDkgZmlsZXMgY2hhbmdlZCwgNzEgaW5zZXJ0aW9ucygrKSwgNTkgZGVsZXRpb25z KC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Rlc3RzL2lndF90ZXN0c19jb21tb24uaAoKZGlm ZiAtLWdpdCBhL2xpYi90ZXN0cy9pZ3RfYXNzZXJ0LmMgYi9saWIvdGVzdHMvaWd0X2Fzc2VydC5j CmluZGV4IDAwODJmZGExNDg1MS4uZTNjMWVjNDlkYWYyIDEwMDY0NAotLS0gYS9saWIvdGVzdHMv aWd0X2Fzc2VydC5jCisrKyBiL2xpYi90ZXN0cy9pZ3RfYXNzZXJ0LmMKQEAgLTIyLDcgKzIyLDYg QEAKICAqCiAgKi8KIAotI2luY2x1ZGUgPGFzc2VydC5oPgogI2luY2x1ZGUgPGVycm5vLmg+CiAj aW5jbHVkZSA8ZmxvYXQuaD4KICNpbmNsdWRlIDxsaW1pdHMuaD4KQEAgLTM2LDEzICszNSw3IEBA CiAKICNpbmNsdWRlICJpZ3RfY29yZS5oIgogCi0vKgotICogV2UgbmVlZCB0byBoaWRlIGFzc2Vy dCBmcm9tIHRoZSBjb2NjaSBpZ3QgdGVzdCByZWZhY3RvciBzcGF0Y2guCi0gKgotICogSU1QT1JU QU5UOiBUZXN0IGluZnJhc3RydWN0dXJlIHRlc3RzIGFyZSB0aGUgb25seSB2YWxpZCBwbGFjZXMg d2hlcmUgdXNpbmcKLSAqIGFzc2VydCBpcyBhbGxvd2VkLgotICovCi0jZGVmaW5lIGludGVybmFs X2Fzc2VydCBhc3NlcnQKKyNpbmNsdWRlICJpZ3RfdGVzdHNfY29tbW9uLmgiCiAKIGNoYXIgdGVz dFtdID0gInRlc3QiOwogY2hhciAqYXJndl9ydW5bXSA9IHsgdGVzdCB9OwpkaWZmIC0tZ2l0IGEv bGliL3Rlc3RzL2lndF9jYW5fZmFpbC5jIGIvbGliL3Rlc3RzL2lndF9jYW5fZmFpbC5jCmluZGV4 IDU2NjY4MjQyMmI2NC4uMWUzZDk1NTg3MjhmIDEwMDY0NAotLS0gYS9saWIvdGVzdHMvaWd0X2Nh bl9mYWlsLmMKKysrIGIvbGliL3Rlc3RzL2lndF9jYW5fZmFpbC5jCkBAIC0yMiwyMyArMjIsMjMg QEAKICAqCiAgKi8KIAotI2luY2x1ZGUgPGFzc2VydC5oPgogI2luY2x1ZGUgImlndF9jb3JlLmgi CiAKKyNpbmNsdWRlICJpZ3RfdGVzdHNfY29tbW9uLmgiCiAKIGlndF9tYWluCiB7Ci0JYXNzZXJ0 KGlndF9jYW5fZmFpbCgpID09IGZhbHNlKTsKKwlpbnRlcm5hbF9hc3NlcnQoaWd0X2Nhbl9mYWls KCkgPT0gZmFsc2UpOwogCiAJaWd0X2ZpeHR1cmUgewotCQlhc3NlcnQoaWd0X2Nhbl9mYWlsKCkp OworCQlpbnRlcm5hbF9hc3NlcnQoaWd0X2Nhbl9mYWlsKCkpOwogCX0KIAotCWFzc2VydChpZ3Rf Y2FuX2ZhaWwoKSA9PSBmYWxzZSk7CisJaW50ZXJuYWxfYXNzZXJ0KGlndF9jYW5fZmFpbCgpID09 IGZhbHNlKTsKIAogCWlndF9zdWJ0ZXN0KCJzdWJ0ZXN0IikgewotCQlhc3NlcnQoaWd0X2Nhbl9m YWlsKCkpOworCQlpbnRlcm5hbF9hc3NlcnQoaWd0X2Nhbl9mYWlsKCkpOwogCX0KIAotCWFzc2Vy dChpZ3RfY2FuX2ZhaWwoKSA9PSBmYWxzZSk7CisJaW50ZXJuYWxfYXNzZXJ0KGlndF9jYW5fZmFp bCgpID09IGZhbHNlKTsKIH0KZGlmZiAtLWdpdCBhL2xpYi90ZXN0cy9pZ3RfY2FuX2ZhaWxfc2lt cGxlLmMgYi9saWIvdGVzdHMvaWd0X2Nhbl9mYWlsX3NpbXBsZS5jCmluZGV4IDBkOWY2ZGQ0MDc2 Yy4uOGZmNDNkMTVmYTZiIDEwMDY0NAotLS0gYS9saWIvdGVzdHMvaWd0X2Nhbl9mYWlsX3NpbXBs ZS5jCisrKyBiL2xpYi90ZXN0cy9pZ3RfY2FuX2ZhaWxfc2ltcGxlLmMKQEAgLTIyLDExICsyMiwx MSBAQAogICoKICAqLwogCi0jaW5jbHVkZSA8YXNzZXJ0Lmg+CiAjaW5jbHVkZSAiaWd0X2NvcmUu aCIKIAorI2luY2x1ZGUgImlndF90ZXN0c19jb21tb24uaCIKIAogaWd0X3NpbXBsZV9tYWluCiB7 Ci0JYXNzZXJ0KGlndF9jYW5fZmFpbCgpKTsKKwlpbnRlcm5hbF9hc3NlcnQoaWd0X2Nhbl9mYWls KCkpOwogfQpkaWZmIC0tZ2l0IGEvbGliL3Rlc3RzL2lndF9leGl0X2hhbmRsZXIuYyBiL2xpYi90 ZXN0cy9pZ3RfZXhpdF9oYW5kbGVyLmMKaW5kZXggZjI5OTdiZDEzNjMzLi43NTQ2ZmRlNmQ2Zjgg MTAwNjQ0Ci0tLSBhL2xpYi90ZXN0cy9pZ3RfZXhpdF9oYW5kbGVyLmMKKysrIGIvbGliL3Rlc3Rz L2lndF9leGl0X2hhbmRsZXIuYwpAQCAtMjEsMTkgKzIxLDIwIEBACiAgKiBJTiBUSEUgU09GVFdB UkUuCiAgKi8KIAotI2luY2x1ZGUgPGFzc2VydC5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2lu Y2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8c3lzL3dh aXQuaD4KICNpbmNsdWRlICJpZ3RfY29yZS5oIgogCisjaW5jbHVkZSAiaWd0X3Rlc3RzX2NvbW1v bi5oIgorCiBpbnQgdGVzdDsKIGludCBwaXBlc1syXTsKIAogc3RhdGljIHZvaWQgZXhpdF9oYW5k bGVyMShpbnQgc2lnKQogewotCWFzc2VydCh0ZXN0ID09IDEpOworCWludGVybmFsX2Fzc2VydCh0 ZXN0ID09IDEpOwogCXRlc3QrKzsKIH0KIApAQCAtNDIsMTIgKzQzLDEyIEBAIHN0YXRpYyB2b2lk IGV4aXRfaGFuZGxlcjIoaW50IHNpZykKIAljaGFyIHRtcCA9IDE7CiAKIAkvKiBlbnN1cmUgZXhp dCBoYW5kbGVycyBhcmUgY2FsbGVkIGluIHJldmVyc2UgKi8KLQlhc3NlcnQodGVzdCA9PSAwKTsK KwlpbnRlcm5hbF9hc3NlcnQodGVzdCA9PSAwKTsKIAl0ZXN0Kys7CiAKIAkvKiB3ZSBuZWVkIHRv IGdldCBhIHNpZGUgZWZmZWN0IHRvIHRoZSBwYXJlbnQgdG8gbWFrZSBzdXJlIGV4aXQgaGFuZGxl cnMKIAkgKiBhY3R1YWxseSBydW4uICovCi0JYXNzZXJ0KHdyaXRlKHBpcGVzWzFdLCAmdG1wLCAx KSA9PSAxKTsKKwlpbnRlcm5hbF9hc3NlcnQod3JpdGUocGlwZXNbMV0sICZ0bXAsIDEpID09IDEp OwogfQogCiBlbnVtIHRlc3RfdHlwZSB7CkBAIC02Nyw3ICs2OCw3IEBAIHN0YXRpYyBpbnQgdGVz dGZ1bmMoZW51bSB0ZXN0X3R5cGUgdGVzdF90eXBlKQogCWludCBzdGF0dXM7CiAJY2hhciB0bXAg PSAwOwogCi0JYXNzZXJ0KHBpcGUyKHBpcGVzLCBPX05PTkJMT0NLKSA9PSAwKTsKKwlpbnRlcm5h bF9hc3NlcnQocGlwZTIocGlwZXMsIE9fTk9OQkxPQ0spID09IDApOwogCiAJcGlkID0gZm9yaygp OwogCkBAIC0xMDAsMTAgKzEwMSwxMCBAQCBzdGF0aWMgaW50IHRlc3RmdW5jKGVudW0gdGVzdF90 eXBlIHRlc3RfdHlwZSkKIAkJaWd0X2V4aXQoKTsKIAl9CiAKLQlhc3NlcnQod2FpdHBpZChwaWQs ICZzdGF0dXMsIDApICE9IC0xKTsKKwlpbnRlcm5hbF9hc3NlcnQod2FpdHBpZChwaWQsICZzdGF0 dXMsIDApICE9IC0xKTsKIAotCWFzc2VydChyZWFkKHBpcGVzWzBdLCAmdG1wLCAxKSA9PSAxKTsK LQlhc3NlcnQodG1wID09IDEpOworCWludGVybmFsX2Fzc2VydChyZWFkKHBpcGVzWzBdLCAmdG1w LCAxKSA9PSAxKTsKKwlpbnRlcm5hbF9hc3NlcnQodG1wID09IDEpOwogCiAJcmV0dXJuIHN0YXR1 czsKIH0KQEAgLTExMiw5ICsxMTMsOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp CiB7CiAJaW50IHN0YXR1czsKIAotCWFzc2VydCh0ZXN0ZnVuYyhTVUMpID09IDApOworCWludGVy bmFsX2Fzc2VydCh0ZXN0ZnVuYyhTVUMpID09IDApOwogCi0JYXNzZXJ0KHRlc3RmdW5jKE5PUk1B TCkgPT0gMCk7CisJaW50ZXJuYWxfYXNzZXJ0KHRlc3RmdW5jKE5PUk1BTCkgPT0gMCk7CiAKIAlz dGF0dXMgPSB0ZXN0ZnVuYyhGQUlMKTsKIAlhc3NlcnQoV0lGRVhJVEVEKHN0YXR1cykgJiYgV0VY SVRTVEFUVVMoc3RhdHVzKSA9PSAxKTsKZGlmZiAtLWdpdCBhL2xpYi90ZXN0cy9pZ3RfZm9yay5j IGIvbGliL3Rlc3RzL2lndF9mb3JrLmMKaW5kZXggZmE1YmI3NzAxYzA5Li4zOGM1NWQxMWY3ZWMg MTAwNjQ0Ci0tLSBhL2xpYi90ZXN0cy9pZ3RfZm9yay5jCisrKyBiL2xpYi90ZXN0cy9pZ3RfZm9y ay5jCkBAIC0yMiw3ICsyMiw2IEBACiAgKgogICovCiAKLSNpbmNsdWRlIDxhc3NlcnQuaD4KICNp bmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHN0ZGxpYi5o PgpAQCAtMzIsMTMgKzMxLDcgQEAKIAogI2luY2x1ZGUgImlndF9jb3JlLmgiCiAKLS8qCi0gKiBX ZSBuZWVkIHRvIGhpZGUgYXNzZXJ0IGZyb20gdGhlIGNvY2NpIGlndCB0ZXN0IHJlZmFjdG9yIHNw YXRjaC4KLSAqCi0gKiBJTVBPUlRBTlQ6IFRlc3QgaW5mcmFzdHJ1Y3R1cmUgdGVzdHMgYXJlIHRo ZSBvbmx5IHZhbGlkIHBsYWNlcyB3aGVyZSB1c2luZwotICogYXNzZXJ0IGlzIGFsbG93ZWQuCi0g Ki8KLSNkZWZpbmUgaW50ZXJuYWxfYXNzZXJ0IGFzc2VydAorI2luY2x1ZGUgImlndF90ZXN0c19j b21tb24uaCIKIAogY2hhciB0ZXN0W10gPSAidGVzdCI7CiBjaGFyICphcmd2X3J1bltdID0geyB0 ZXN0IH07CmRpZmYgLS1naXQgYS9saWIvdGVzdHMvaWd0X3NlZ2ZhdWx0LmMgYi9saWIvdGVzdHMv aWd0X3NlZ2ZhdWx0LmMKaW5kZXggODZmZWU1MzU0ZDY3Li5iZmJiZmY1NjRmYWMgMTAwNjQ0Ci0t LSBhL2xpYi90ZXN0cy9pZ3Rfc2VnZmF1bHQuYworKysgYi9saWIvdGVzdHMvaWd0X3NlZ2ZhdWx0 LmMKQEAgLTM4LDE5ICszOCwxMiBAQAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN5 cy93YWl0Lmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaW5jbHVkZSA8YXNzZXJ0Lmg+CiAj aW5jbHVkZSA8ZXJybm8uaD4KIAogI2luY2x1ZGUgImRybXRlc3QuaCIKICNpbmNsdWRlICJpZ3Rf Y29yZS5oIgogCi0vKgotICogV2UgbmVlZCB0byBoaWRlIGFzc2VydCBmcm9tIHRoZSBjb2NjaSBp Z3QgdGVzdCByZWZhY3RvciBzcGF0Y2guCi0gKgotICogSU1QT1JUQU5UOiBUZXN0IGluZnJhc3Ry dWN0dXJlIHRlc3RzIGFyZSB0aGUgb25seSB2YWxpZCBwbGFjZXMgd2hlcmUgdXNpbmcKLSAqIGFz c2VydCBpcyBhbGxvd2VkLgotICovCi0jZGVmaW5lIGludGVybmFsX2Fzc2VydCBhc3NlcnQKKyNp bmNsdWRlICJpZ3RfdGVzdHNfY29tbW9uLmgiCiAKIGJvb2wgc2ltcGxlOwogYm9vbCBydW5hOwpk aWZmIC0tZ2l0IGEvbGliL3Rlc3RzL2lndF9zaW11bGF0aW9uLmMgYi9saWIvdGVzdHMvaWd0X3Np bXVsYXRpb24uYwppbmRleCAyZWZjY2FjNGUzOTAuLjNmM2NkODhmZDA1OCAxMDA2NDQKLS0tIGEv bGliL3Rlc3RzL2lndF9zaW11bGF0aW9uLmMKKysrIGIvbGliL3Rlc3RzL2lndF9zaW11bGF0aW9u LmMKQEAgLTI4LDE5ICsyOCwxMiBAQAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN5 cy93YWl0Lmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaW5jbHVkZSA8YXNzZXJ0Lmg+CiAj aW5jbHVkZSA8ZXJybm8uaD4KIAogI2luY2x1ZGUgImRybXRlc3QuaCIKICNpbmNsdWRlICJpZ3Rf Y29yZS5oIgogCi0vKgotICogV2UgbmVlZCB0byBoaWRlIGFzc2VydCBmcm9tIHRoZSBjb2NjaSBp Z3QgdGVzdCByZWZhY3RvciBzcGF0Y2guCi0gKgotICogSU1QT1JUQU5UOiBUZXN0IGluZnJhc3Ry dWN0dXJlIHRlc3RzIGFyZSB0aGUgb25seSB2YWxpZCBwbGFjZXMgd2hlcmUgdXNpbmcKLSAqIGFz c2VydCBpcyBhbGxvd2VkLgotICovCi0jZGVmaW5lIGludGVybmFsX2Fzc2VydCBhc3NlcnQKKyNp bmNsdWRlICJpZ3RfdGVzdHNfY29tbW9uLmgiCiAKIGJvb2wgc2ltcGxlOwogYm9vbCBsaXN0X3N1 YnRlc3RzOwpkaWZmIC0tZ2l0IGEvbGliL3Rlc3RzL2lndF9zdWJ0ZXN0X2dyb3VwLmMgYi9saWIv dGVzdHMvaWd0X3N1YnRlc3RfZ3JvdXAuYwppbmRleCBjMjM2NGQ3OTlmMzYuLjc3ODNkMDIxZTVh MiAxMDA2NDQKLS0tIGEvbGliL3Rlc3RzL2lndF9zdWJ0ZXN0X2dyb3VwLmMKKysrIGIvbGliL3Rl c3RzL2lndF9zdWJ0ZXN0X2dyb3VwLmMKQEAgLTIyLDkgKzIyLDEwIEBACiAgKgogICovCiAKLSNp bmNsdWRlIDxhc3NlcnQuaD4KICNpbmNsdWRlICJpZ3RfY29yZS5oIgogCisjaW5jbHVkZSAiaWd0 X3Rlc3RzX2NvbW1vbi5oIgorCiBpZ3RfbWFpbgogewogCWJvb2wgdDEgPSBmYWxzZTsKQEAgLTQx LDcgKzQyLDcgQEAgaWd0X21haW4KIAkJCX0KIAogCQkJaWd0X3N1YnRlc3QoIm5vdC1ydW4iKSB7 Ci0JCQkJYXNzZXJ0KDApOworCQkJCWludGVybmFsX2Fzc2VydCgwKTsKIAkJCX0KIAogCQkJaWd0 X3N1YnRlc3RfZ3JvdXAgewpAQCAtNDksMzUgKzUwLDM1IEBAIGlndF9tYWluCiAJCQkJICogcmVz dG9yZSB0byAicnVuIHRlc3RjYXNlcyIgd2hlbiBhbiBvdXRlcgogCQkJCSAqIGdyb3VwIGlzIGFs cmVhZHkgaW4gU0tJUCBzdGF0ZS4gKi8KIAkJCQlpZ3Rfc3VidGVzdCgic3RpbGwtbm90LXJ1biIp IHsKLQkJCQkJYXNzZXJ0KDApOworCQkJCQlpbnRlcm5hbF9hc3NlcnQoMCk7CiAJCQkJfQogCQkJ fQogCQl9CiAKIAkJaWd0X3N1YnRlc3QoInJ1biIpIHsKIAkJCXQxID0gdHJ1ZTsKLQkJCWFzc2Vy dCgxKTsKKwkJCWludGVybmFsX2Fzc2VydCgxKTsKIAkJfQogCX0KIAogCWlndF9zdWJ0ZXN0X2dy b3VwIHsKIAkJaWd0X2ZpeHR1cmUgewotCQkJYXNzZXJ0KHQyID09IDApOworCQkJaW50ZXJuYWxf YXNzZXJ0KHQyID09IDApOwogCQkJdDIgPSAxOwogCQl9CiAKIAkJaWd0X3N1YnRlc3QoInJ1bi1h Z2FpbiIpIHsKLQkJCWFzc2VydCh0MiA9PSAxKTsKKwkJCWludGVybmFsX2Fzc2VydCh0MiA9PSAx KTsKIAkJCXQyID0gMjsKIAkJfQogCiAJCWlndF9maXh0dXJlIHsKLQkJCWFzc2VydCh0MiA9PSAy KTsKKwkJCWludGVybmFsX2Fzc2VydCh0MiA9PSAyKTsKIAkJCXQyID0gMzsKIAogCQl9CiAJfQog Ci0JYXNzZXJ0KHQxKTsKLQlhc3NlcnQodDIgPT0gMyk7CisJaW50ZXJuYWxfYXNzZXJ0KHQxKTsK KwlpbnRlcm5hbF9hc3NlcnQodDIgPT0gMyk7CiB9CmRpZmYgLS1naXQgYS9saWIvdGVzdHMvaWd0 X3Rlc3RzX2NvbW1vbi5oIGIvbGliL3Rlc3RzL2lndF90ZXN0c19jb21tb24uaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjliMzQ3YTQ1NjVkOQotLS0gL2Rldi9udWxs CisrKyBiL2xpYi90ZXN0cy9pZ3RfdGVzdHNfY29tbW9uLmgKQEAgLTAsMCArMSwzOCBAQAorLyoK KyAqIENvcHlyaWdodCDCqSAyMDE5IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lv biBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWlu aW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0 aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3 aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUg cmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwg c3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0 byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRv IGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUg YWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVk aW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3Bp ZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBU SEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkg S0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBU TyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwK KyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENM QUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9O IE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9G IE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBE RUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworCisjaWZuZGVmIElHVF9MSUJf VEVTVFNfQ09NTU9OX0gKKyNkZWZpbmUgSUdUX0xJQl9URVNUU19DT01NT05fSAorCisjaW5jbHVk ZSA8YXNzZXJ0Lmg+CisKKy8qCisgKiBXZSBuZWVkIHRvIGhpZGUgYXNzZXJ0IGZyb20gdGhlIGNv Y2NpIGlndCB0ZXN0IHJlZmFjdG9yIHNwYXRjaC4KKyAqCisgKiBJTVBPUlRBTlQ6IFRlc3QgaW5m cmFzdHJ1Y3R1cmUgdGVzdHMgYXJlIHRoZSBvbmx5IHZhbGlkIHBsYWNlcyB3aGVyZSB1c2luZwor ICogYXNzZXJ0IGlzIGFsbG93ZWQuCisgKi8KKyNkZWZpbmUgaW50ZXJuYWxfYXNzZXJ0IGFzc2Vy dAorCisjZW5kaWYKLS0gCjIuMjAuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p Z3QtZGV2