From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulo Zanoni Subject: =?utf-8?q?=5BPATCH_4/4=5D_Add_intel=5Fpanel=5Ffitter_?= =?utf-8?q?tool?= Date: Wed, 15 Feb 2012 16:04:28 -0200 Message-ID: <1329329068-25882-1-git-send-email-przanoni@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-yw0-f49.google.com (mail-yw0-f49.google.com [209.85.213.49]) by gabe.freedesktop.org (Postfix) with ESMTP id 0397BA0B1B for ; Wed, 15 Feb 2012 10:04:35 -0800 (PST) Received: by mail-yw0-f49.google.com with SMTP id j56so905343yhj.36 for ; Wed, 15 Feb 2012 10:04:35 -0800 (PST) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: intel-gfx@lists.freedesktop.org Cc: Paulo Zanoni List-Id: intel-gfx@lists.freedesktop.org RnJvbTogUGF1bG8gWmFub25pIDxwYXVsby5yLnphbm9uaUBpbnRlbC5jb20+CgpUaGUgdG9vbCBh bGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgcGFuZWwgZml0dGVyIHNldHRpbmdzLCBzbyB5b3UgY2Fu CmNoYW5nZSB0aGUgc2l6ZSBvZiB0aGUgc2NyZWVuIGJlaW5nIGRpc3BsYXllZCBvbiB5b3VyIG1v bml0b3Igd2l0aG91dApjaGFuZ2luZyB0aGUgcmVhbCBwaXhlbCBzaXplIG9mIHlvdXIgZGVza3Rv cC4gVGhlIGJpZ2dlc3QgdXNlIGNhc2UgZm9yCnRoaXMgdG9vbCBpcyB0byB3b3JrIGFyb3VuZCBv dmVyc2NhbiBkb25lIGJ5IFRWcyBhbmQgc29tZSBtb25pdG9ycyBpbgppbnRlcmxhY2VkIG1vZGUu Cgp2MjogcmV2aWV3cyBieSBCZW4sIENocmlzIGFuZCBSb2RyaWdvCiAtIGRvbid0IGluc3RhbGwK IC0gdXNlIGludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0CiAtIGNoZWNrIGZvciBtYXhpbXVtIFgg YW5kIFkgdmFsdWVzCiAtIGFkZCBhIGRpc2NsYWltZXIgc2F5aW5nIHRoaXMgaXMgbm90IHRoZSBy ZWFsIHNvbHV0aW9uCiAtIHByaW50IGxlc3Mgd2hlbiBwZiBpcyBkaXNhYmxlZCBhbmQgb3B0aW9u ICctbCcgaXMgdXNlZAoKU2lnbmVkLW9mZi1ieTogUGF1bG8gWmFub25pIDxwYXVsby5yLnphbm9u aUBpbnRlbC5jb20+Ci0tLQogbWFuL01ha2VmaWxlLmFtICAgICAgICAgICAgfCAgICAxICsKIG1h bi9pbnRlbF9wYW5lbF9maXR0ZXIubWFuIHwgICA1MCArKysrKysrCiB0b29scy8uZ2l0aWdub3Jl ICAgICAgICAgICB8ICAgIDEgKwogdG9vbHMvTWFrZWZpbGUuYW0gICAgICAgICAgfCAgICAzICst CiB0b29scy9pbnRlbF9wYW5lbF9maXR0ZXIuYyB8ICAzNDQgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKIDUgZmlsZXMgY2hhbmdlZCwgMzk4IGluc2VydGlvbnMo KyksIDEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgbWFuL2ludGVsX3BhbmVsX2Zp dHRlci5tYW4KIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9pbnRlbF9wYW5lbF9maXR0ZXIuYwoK ZGlmZiAtLWdpdCBhL21hbi9NYWtlZmlsZS5hbSBiL21hbi9NYWtlZmlsZS5hbQppbmRleCAyYjU0 MTk1Li4wZjE5N2E5IDEwMDY0NAotLS0gYS9tYW4vTWFrZWZpbGUuYW0KKysrIGIvbWFuL01ha2Vm aWxlLmFtCkBAIC03LDYgKzcsNyBAQCBhcHBtYW5fUFJFID0gCQkJCVwKIAlpbnRlbF9ncHVfdG9w Lm1hbgkJXAogCWludGVsX2d0dC5tYW4JCQlcCiAJaW50ZWxfbGlkLm1hbgkJCVwKKwlpbnRlbF9w YW5lbF9maXR0ZXIubWFuCQlcCiAJaW50ZWxfcmVnX2R1bXBlci5tYW4JCVwKIAlpbnRlbF9yZWdf cmVhZC5tYW4JCVwKIAlpbnRlbF9yZWdfd3JpdGUubWFuCQlcCmRpZmYgLS1naXQgYS9tYW4vaW50 ZWxfcGFuZWxfZml0dGVyLm1hbiBiL21hbi9pbnRlbF9wYW5lbF9maXR0ZXIubWFuCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhNDZhMmUKLS0tIC9kZXYvbnVsbAorKysgYi9t YW4vaW50ZWxfcGFuZWxfZml0dGVyLm1hbgpAQCAtMCwwICsxLDUwIEBACisuXCIgc2hvcnRoYW5k IGZvciBkb3VibGUgcXVvdGUgdGhhdCB3b3JrcyBldmVyeXdoZXJlLgorLmRzIHEgXE4nMzQnCisu VEggaW50ZWxfcGFuZWxfZml0dGVyIF9fYXBwbWFuc3VmZml4X18gX194b3JndmVyc2lvbl9fCisu U0ggTkFNRQoraW50ZWxfcGFuZWxfZml0dGVyIFwtIENoYW5nZSB0aGUgcGFuZWwgZml0dGVyIHNl dHRpbmdzCisuU0ggU1lOT1BTSVMKKy5CIGludGVsX3BhbmVsX2ZpdHRlciBbb3B0aW9uc10KKy5T SCBERVNDUklQVElPTgorLkIgaW50ZWxfcGFuZWxfZml0dGVyCitpcyBhIHRvb2wgdGhhdCBhbGxv d3MgeW91IHRvIGNoYW5nZSB0aGUgcGFuZWwgZml0dGVyIHNldHRpbmdzLCBzbyB5b3UgY2FuIGNo YW5nZQordGhlIHNpemUgb2YgdGhlIHNjcmVlbiBiZWluZyBkaXNwbGF5ZWQgb24geW91ciBtb25p dG9yIHdpdGhvdXQgY2hhbmdpbmcgdGhlIHJlYWwKK3BpeGVsIHNpemUgb2YgeW91ciBkZXNrdG9w LiBUaGUgYmlnZ2VzdCB1c2UgY2FzZSBmb3IgdGhpcyB0b29sIGlzIHRvIHdvcmsgYXJvdW5kCitv dmVyc2NhbiBkb25lIGJ5IFRWcyBhbmQgc29tZSBtb25pdG9ycyBpbiBpbnRlcmxhY2VkIG1vZGUu CisuU1MgT3B0aW9ucworLlRQCisuQiAtcCBbcGlwZV0KK3BpcGUgdG8gYmUgdXNlZCAoQSwgQiBv ciBDLCBidXQgQyBpcyBvbmx5IHByZXNlbnQgb24gSXZ5IEJyaWRnZSBhbmQgbmV3ZXIpLgorLlRQ CisuQiAteCBbdmFsdWVdCitmaW5hbCBzY3JlZW4gd2lkdGggc2l6ZSBpbiBwaXhlbHMgKG5lZWRz IC1wIG9wdGlvbikuCisuVFAKKy5CIC15IFt2YWx1ZV0KK2ZpbmFsIHNjcmVlbiBoZWlnaHQgc2l6 ZSBpbiBwaXhlbHMgKG5lZWRzIC1wIG9wdGlvbikuCisuVFAKKy5CIC1kCitkaXNhYmxlIHBhbmVs IGZpdHRlciAobmVlZHMgLXAgb3B0aW9uLCBpZ25vcmVzIC14IGFuZCAteSBvcHRpb25zKS4KKy5U UAorLkIgLWwKK2xpc3QgY3VycmVudCBzdGF0ZSBvZiBlYWNoIHBpcGUuCisuVFAKKy5CIC1oCitw cmludHMgdGhlIGhlbHAgbWVzc2FnZS4KKy5TUworCisuU0ggRVhBTVBMRVMKKy5UUAorLkIgaW50 ZWxfcGFuZWxfZml0dGVyIC1sCit3aWxsIGxpc3QgdGhlIGN1cnJlbnQgc3RhdHVzIG9mIGVhY2gg cGlwZSwgc28geW91IGNhbiBkZWNpZGUgd2hhdCB0byBkby4KKy5UUAorLkIgaW50ZWxfcGFuZWxf Zml0dGVyIC1wIEEgLXggMTg1MCAteSAxMDQwCit3aWxsIGNoYW5nZSB0aGUgcGlwZSBBIHNpemUg dG8gMTg1MHgxMDQwIHBpeGVscy4KKy5UUAorLkIgaW50ZWxfcGFuZWxfZml0dGVyIC1wIEEgLWQK K3dpbGwgZGlzYWJsZSB0aGUgcGFuZWwgZml0dGVyIGZvciBwaXBlIEEuCisKKy5TSCBOT1RFUwor SW4gdGhlIGZ1dHVyZSwgdGhlcmUgd2lsbCBiZSBzdXBwb3J0IGZvciB0aGlzIGZlYXR1cmUgaW5z aWRlIHRoZSBMaW51eCBLZXJuZWwuCisKK01hY2hpbmVzIG9sZGVyIHRoYW4gSXJvbmxha2UgYXJl IHN0aWxsIG5vdCBzdXBwb3J0ZWQsIGJ1dCBzdXBwb3J0IG1heSBiZQorcG9zc2libGUgdG8gaW1w bGVtZW50LgpkaWZmIC0tZ2l0IGEvdG9vbHMvLmdpdGlnbm9yZSBiL3Rvb2xzLy5naXRpZ25vcmUK aW5kZXggMGJiZGRlMS4uZWM4MmI2ZCAxMDA2NDQKLS0tIGEvdG9vbHMvLmdpdGlnbm9yZQorKysg Yi90b29scy8uZ2l0aWdub3JlCkBAIC0xMSw2ICsxMSw3IEBAIGludGVsX2dwdV90aW1lCiBpbnRl bF9ncHVfdG9wCiBpbnRlbF9ndHQKIGludGVsX2xpZAoraW50ZWxfcGFuZWxfZml0dGVyCiBpbnRl bF9yZWdfY2hlY2tlcgogaW50ZWxfcmVnX2R1bXBlcgogaW50ZWxfcmVnX3JlYWQKZGlmZiAtLWdp dCBhL3Rvb2xzL01ha2VmaWxlLmFtIGIvdG9vbHMvTWFrZWZpbGUuYW0KaW5kZXggOTcwY2M4ZC4u YTM2ODEzMCAxMDA2NDQKLS0tIGEvdG9vbHMvTWFrZWZpbGUuYW0KKysrIGIvdG9vbHMvTWFrZWZp bGUuYW0KQEAgLTE4LDcgKzE4LDggQEAgYmluX1BST0dSQU1TID0gCQkJCVwKIAogbm9pbnN0X1BS T0dSQU1TID0gCQkJXAogCWludGVsX2R1bXBfZGVjb2RlIAkJXAotCWludGVsX2xpZAorCWludGVs X2xpZAkJCVwKKwlpbnRlbF9wYW5lbF9maXR0ZXIKIAogZGlzdF9iaW5fU0NSSVBUUyA9IGludGVs X2dwdV9hYnJ0CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX3BhbmVsX2ZpdHRlci5jIGIvdG9v bHMvaW50ZWxfcGFuZWxfZml0dGVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uZjY3MjNkMQotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL2ludGVsX3BhbmVsX2ZpdHRlci5j CkBAIC0wLDAgKzEsMzQ0IEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMTIgSW50ZWwgQ29ycG9y YXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJn ZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFu ZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRv IGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRo b3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdl LCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVz IG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBT b2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBj b25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBl cm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwg YmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUK KyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBX SVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNM VURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU WSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1F TlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERF UlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElU WSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBB UklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FS RSBPUiBUSEUgVVNFIE9SIE9USEVSCisgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgor ICogQXV0aG9yczoKKyAqICAgICAgUGF1bG8gWmFub25pIDxwYXVsby5yLnphbm9uaUBpbnRlbC5j b20+CisgKi8KKworI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKyNp bmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5o PgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgImludGVsX2dwdV90b29scy5oIgorCitp bnQgZ2VuOworCit1aW50MzJfdCBIVE9UQUxbXSAgICAgPSB7IDB4NjAwMDAsIDB4NjEwMDAsIDB4 NjIwMDAgfTsKK3VpbnQzMl90IFZUT1RBTFtdICAgICA9IHsgMHg2MDAwQywgMHg2MTAwQywgMHg2 MjAwQyB9OwordWludDMyX3QgUElQRUNPTkZbXSAgID0geyAweDcwMDA4LCAweDcxMDA4LCAweDcy MDA4IH07Cit1aW50MzJfdCBQSVBFU1JDW10gICAgPSB7IDB4NjAwMUMsIDB4NjEwMUMsIDB4NjIw MUMgfTsKK3VpbnQzMl90IFBGX0NUUkwxW10gICA9IHsgMHg2ODA4MCwgMHg2ODg4MCwgMHg2OTA4 MCB9OwordWludDMyX3QgUEZfV0lOX1BPU1tdID0geyAweDY4MDcwLCAweDY4ODcwLCAweDY5MDcw IH07Cit1aW50MzJfdCBQRl9XSU5fU1pbXSAgPSB7IDB4NjgwNzQsIDB4Njg4NzQsIDB4NjkwNzQg fTsKKworI2RlZmluZSBQSVBFQ09ORl9FTkFCTEUgICAgICAgICAoMSA8PCAzMSkKKyNkZWZpbmUg UElQRUNPTkZfSU5URVJMQUNFX01BU0sgKDcgPDwgMjEpCisjZGVmaW5lIFBJUEVDT05GX1BGX1BE ICAgICAgICAgICgwIDw8IDIxKQorI2RlZmluZSBQSVBFQ09ORl9QRl9JRCAgICAgICAgICAoMSA8 PCAyMSkKKyNkZWZpbmUgUElQRUNPTkZfSUZfSUQgICAgICAgICAgKDMgPDwgMjEpCisKKyNkZWZp bmUgSFRPVEFMX0FDVElWRV9NQVNLICgweEZGRiA8PCAwKQorI2RlZmluZSBWVE9UQUxfQUNUSVZF X01BU0sgKDB4RkZGIDw8IDApCisKKyNkZWZpbmUgUElQRVNSQ19IT1JJWl9NQVNLICgweEZGRiA8 PCAxNikKKyNkZWZpbmUgUElQRVNSQ19WRVJUX01BU0sgICgweEZGRiA8PCAwKQorCisvKiNkZWZp bmUgUEZfRU5BQkxFICAgICgxIDw8IDMxKSovCisjZGVmaW5lIFBGX1BJUEVfTUFTSyAgICgzIDw8 IDI5KQorI2RlZmluZSBQRl9GSUxURVJfTUFTSyAoMyA8PCAyMykKKyNkZWZpbmUgUEZfRklMVEVS X01FRCAgKDEgPDwgMjMpCisjZGVmaW5lIFBGX1BJUEVfQSAgICAgICgwIDw8IDI5KQorI2RlZmlu ZSBQRl9QSVBFX0IgICAgICAoMSA8PCAyOSkKKyNkZWZpbmUgUEZfUElQRV9DICAgICAgKDIgPDwg MjkpCisKKyNkZWZpbmUgUEZfV0lOX1NaX1hfTUFTSyAoMHgxRkZGIDw8IDE2KQorI2RlZmluZSBQ Rl9XSU5fU1pfWV9NQVNLICgweEZGRiA8PCAwKQorCitzdHJ1Y3QgcGlwZV9pbmZvIHsKKwlib29s IGVuYWJsZWQ7CisJYm9vbCBwZl9lbmFibGVkOworCXVpbnQzMl90IGludGVybGFjZV9tb2RlOwor CXVpbnQzMl90IHRvdF93aWR0aDsgIC8qIGh0b3RhbCAqLworCXVpbnQzMl90IHRvdF9oZWlnaHQ7 IC8qIHZ0b3RhbCAqLworCXVpbnQzMl90IHNyY193aWR0aDsgIC8qIHBpcGVzcmMueCAqLworCXVp bnQzMl90IHNyY19oZWlnaHQ7IC8qIHBpcGVzcmMueSAqLworCXVpbnQzMl90IGRzdF93aWR0aDsg IC8qIHBmX3dpbl9zei54ICovCisJdWludDMyX3QgZHN0X2hlaWdodDsgLyogcGZfd2luX3N6Lnkg Ki8KK307CisKK3N0YXRpYyB2b2lkIHJlYWRfcGlwZV9pbmZvKGludCBpbnRlbF9waXBlLCBzdHJ1 Y3QgcGlwZV9pbmZvICppbmZvKQoreworCXVpbnQzMl90IGNvbmYsIHZ0b3RhbCwgaHRvdGFsLCBz cmMsIGN0cmwxLCB3aW5fc3o7CisKKwljb25mICAgPSBJTlJFRyhQSVBFQ09ORltpbnRlbF9waXBl XSk7CisJaHRvdGFsID0gSU5SRUcoSFRPVEFMW2ludGVsX3BpcGVdKTsKKwl2dG90YWwgPSBJTlJF RyhWVE9UQUxbaW50ZWxfcGlwZV0pOworCXNyYyAgICA9IElOUkVHKFBJUEVTUkNbaW50ZWxfcGlw ZV0pOworCWN0cmwxICA9IElOUkVHKFBGX0NUUkwxW2ludGVsX3BpcGVdKTsKKwl3aW5fc3ogPSBJ TlJFRyhQRl9XSU5fU1pbaW50ZWxfcGlwZV0pOworCisJaW5mby0+ZW5hYmxlZCA9IChjb25mICYg UElQRUNPTkZfRU5BQkxFKSA/IHRydWUgOiBmYWxzZTsKKwlpbmZvLT50b3Rfd2lkdGggPSAoaHRv dGFsICYgSFRPVEFMX0FDVElWRV9NQVNLKSArIDE7CisJaW5mby0+dG90X2hlaWdodCA9ICh2dG90 YWwgJiBWVE9UQUxfQUNUSVZFX01BU0spICsgMTsKKwlpbmZvLT5zcmNfd2lkdGggPSAoKHNyYyAm IFBJUEVTUkNfSE9SSVpfTUFTSykgPj4gMTYpICsgMTsKKwlpbmZvLT5zcmNfaGVpZ2h0ID0gKHNy YyAmIFBJUEVTUkNfVkVSVF9NQVNLKSArIDE7CisJaW5mby0+aW50ZXJsYWNlX21vZGUgPSBjb25m ICYgUElQRUNPTkZfSU5URVJMQUNFX01BU0s7CisJaW5mby0+cGZfZW5hYmxlZCA9IGN0cmwxICYg UEZfRU5BQkxFOworCWluZm8tPmRzdF93aWR0aCA9ICh3aW5fc3ogJiBQRl9XSU5fU1pfWF9NQVNL KSA+PiAxNjsKKwlpbmZvLT5kc3RfaGVpZ2h0ID0gd2luX3N6ICYgUEZfV0lOX1NaX1lfTUFTSzsK K30KKworc3RhdGljIHZvaWQgZHVtcF9waXBlKGludCBpbnRlbF9waXBlKQoreworCXN0cnVjdCBw aXBlX2luZm8gaW5mbzsKKworCXJlYWRfcGlwZV9pbmZvKGludGVsX3BpcGUsICZpbmZvKTsKKwor CXByaW50ZigiXG5QaXBlICVjOlxuIiwgaW50ZWxfcGlwZSArICdBJyk7CisKKwlwcmludGYoIi0g JXNcbiIsIGluZm8uZW5hYmxlZCA/ICJlbmFibGVkIiA6ICJkaXNhYmxlZCIpOworCWlmICghaW5m by5lbmFibGVkKQorCQlyZXR1cm47CisKKwlzd2l0Y2ggKGluZm8uaW50ZXJsYWNlX21vZGUpIHsK KwljYXNlIFBJUEVDT05GX1BGX1BEOgorCQlwcmludGYoIi0gcHJvZ3Jlc3NpdmVcbiIpOworCQli cmVhazsKKwljYXNlIFBJUEVDT05GX1BGX0lEOgorCQlwcmludGYoIi0gaW50ZXJsYWNlZCAocHJv Z3Jlc3NpdmUgZmV0Y2gpXG4iKTsKKwkJYnJlYWs7CisJY2FzZSBQSVBFQ09ORl9JRl9JRDoKKwkJ cHJpbnRmKCItIGludGVybGFjZWQgKGludGVybGFjZWQgZmV0Y2gpXG4iKTsKKwkJYnJlYWs7CisJ ZGVmYXVsdDoKKwkJYXNzZXJ0KDApOworCX0KKworCXByaW50ZigiLSBwZiAlc1xuIiwgaW5mby5w Zl9lbmFibGVkID8gImVuYWJsZWQiIDogImRpc2FibGVkIik7CisJaWYgKCFpbmZvLnBmX2VuYWJs ZWQpCisJCXJldHVybjsKKworCXByaW50ZigiLSB0b3QgJWR4JWRcbiIsIGluZm8udG90X3dpZHRo LCBpbmZvLnRvdF9oZWlnaHQpOworCXByaW50ZigiLSBzcmMgJWR4JWRcbiIsIGluZm8uc3JjX3dp ZHRoLCBpbmZvLnNyY19oZWlnaHQpOworCXByaW50ZigiLSBkc3QgJWR4JWRcbiIsIGluZm8uZHN0 X3dpZHRoLCBpbmZvLmRzdF9oZWlnaHQpOworfQorCitzdGF0aWMgdm9pZCBkdW1wX2luZm8odm9p ZCkKK3sKKwlpbnQgaTsKKwlpbnQgcGlwZXM7CisKKwlpZiAoZ2VuIDwgNykKKwkJcGlwZXMgPSAy OworCWVsc2UKKwkJcGlwZXMgPSAzOworCisJZm9yIChpID0gMDsgaSA8IHBpcGVzOyBpKyspIHsK KwkJZHVtcF9waXBlKGkpOworCX0KK30KKworc3RhdGljIGludCBjaGFuZ2Vfc2NyZWVuX3NpemUo aW50IGludGVsX3BpcGUsIGludCB4LCBpbnQgeSkKK3sKKwlzdHJ1Y3QgcGlwZV9pbmZvIGluZm87 CisJdWludDMyX3QgZHN0X3dpZHRoLCBkc3RfaGVpZ2h0LCBwb3NfeCwgcG9zX3k7CisJdWludDMy X3QgY3RybDFfdmFsOworCXVpbnQzMl90IHdpbl9wb3NfdmFsOworCXVpbnQzMl90IHdpbl9zel92 YWw7CisKKwlyZWFkX3BpcGVfaW5mbyhpbnRlbF9waXBlLCAmaW5mbyk7CisKKwlpZiAoeCA9PSAw KSB7CisJCWlmIChpbmZvLmRzdF93aWR0aCAhPSAwKQorCQkJZHN0X3dpZHRoID0gaW5mby5kc3Rf d2lkdGg7CisJCWVsc2UKKwkJCWRzdF93aWR0aCA9IGluZm8uc3JjX3dpZHRoOworCX0gZWxzZSB7 CisJCWRzdF93aWR0aCA9IHg7CisJfQorCisJaWYgKHkgPT0gMCkgeworCQlpZiAoaW5mby5kc3Rf aGVpZ2h0ICE9IDApCisJCQlkc3RfaGVpZ2h0ID0gaW5mby5kc3RfaGVpZ2h0OworCQllbHNlCisJ CQlkc3RfaGVpZ2h0ID0gaW5mby5zcmNfaGVpZ2h0OworCX0gZWxzZSB7CisJCWRzdF9oZWlnaHQg PSB5OworCX0KKworCXBvc194ID0gYWJzKChpbmZvLnRvdF93aWR0aCAtIGRzdF93aWR0aCkpIC8g MjsKKwlwb3NfeSA9IGFicygoaW5mby50b3RfaGVpZ2h0IC0gZHN0X2hlaWdodCkpIC8gMjsKKwor CWlmIChwb3NfeCA9PSAxKQorCQlwb3NfeCA9IDA7CisKKwlpZiAoaW5mby5zcmNfd2lkdGggLyAo ZG91YmxlKSBkc3Rfd2lkdGggPiAxLjEyNSkgeworCQlwcmludGYoIlggaXMgdG9vIHNtYWxsXG4i KTsKKwkJcmV0dXJuIDE7CisJfSBlbHNlIGlmIChpbmZvLnRvdF93aWR0aCA8IGRzdF93aWR0aCkg eworCQlwcmludGYoIlggaXMgdG9vIGJpZ1xuIik7CisJCXJldHVybiAxOworCX0gZWxzZSBpZiAo ZHN0X3dpZHRoICYgMSkgeworCQlwcmludGYoIlggbXVzdCBiZSBldmVuXG4iKTsKKwkJcmV0dXJu IDE7CisJfSBlbHNlIGlmIChpbmZvLnNyY19oZWlnaHQgLyAoZG91YmxlKSBkc3RfaGVpZ2h0ID4g MS4xMjUpIHsKKwkJcHJpbnRmKCJZIGlzIHRvbyBzbWFsbFxuIik7CisJCXJldHVybiAxOworCX0g ZWxzZSBpZiAoaW5mby50b3RfaGVpZ2h0IDwgZHN0X2hlaWdodCkgeworCQlwcmludGYoIlkgaXMg dG9vIGJpZ1xuIik7CisJCXJldHVybiAxOworCX0gZWxzZSBpZiAoZHN0X2hlaWdodCAmIDEpIHsK KwkJcHJpbnRmKCJZIG11c3QgYmUgZXZlblxuIik7CisJCXJldHVybiAxOworCX0KKworCXByaW50 ZigiQ2hhbmdpbmcgc2l6ZSBmb3IgcGlwZSAlYzpcbiIKKwkgICAgICAgIi0gd2lkdGg6ICAlZCAt PiAlZFxuIgorCSAgICAgICAiLSBoZWlnaHQ6ICVkIC0+ICVkXG4iCisJICAgICAgICItIHBvczog JWR4JWRcbiIsCisJICAgICAgIGludGVsX3BpcGUgKyAnQScsIGluZm8uc3JjX3dpZHRoLCBkc3Rf d2lkdGgsIGluZm8uc3JjX2hlaWdodCwKKwkgICAgICAgZHN0X2hlaWdodCwgcG9zX3gsIHBvc195 KTsKKworCWN0cmwxX3ZhbCA9IFBGX0VOQUJMRSB8IFBGX0ZJTFRFUl9NRUQ7CisKKwkvKiBUaGlz IGNhbiBicmVhayBzdHVmZiBpZiB0aGUgcGFuZWwgZml0dGVyIGlzIGFscmVhZHkgZW5hYmxlZCBm b3IKKwkgKiBhbm90aGVyIHBpcGUgKi8KKwlpZiAoZ2VuID49IDcpIHsKKwkJc3dpdGNoIChpbnRl bF9waXBlKSB7CisJCWNhc2UgMDoKKwkJCWN0cmwxX3ZhbCB8PSBQRl9QSVBFX0E7CisJCQlicmVh azsKKwkJY2FzZSAxOgorCQkJY3RybDFfdmFsIHw9IFBGX1BJUEVfQjsKKwkJCWJyZWFrOworCQlj YXNlIDI6CisJCQljdHJsMV92YWwgfD0gUEZfUElQRV9DOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6 CisJCQlhc3NlcnQoMCk7CisJCX0KKwl9CisJT1VUUkVHKFBGX0NUUkwxW2ludGVsX3BpcGVdLCBj dHJsMV92YWwpOworCisJd2luX3Bvc192YWwgPSBwb3NfeCA8PCAxNjsKKwl3aW5fcG9zX3ZhbCB8 PSBwb3NfeTsKKwlPVVRSRUcoUEZfV0lOX1BPU1tpbnRlbF9waXBlXSwgd2luX3Bvc192YWwpOwor CisJd2luX3N6X3ZhbCA9IGRzdF93aWR0aCA8PCAxNjsKKwl3aW5fc3pfdmFsIHw9IGRzdF9oZWln aHQ7CisJT1VUUkVHKFBGX1dJTl9TWltpbnRlbF9waXBlXSwgd2luX3N6X3ZhbCk7CisKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIGludCBkaXNhYmxlX3BhbmVsX2ZpdHRlcihpbnQgaW50ZWxfcGlw ZSkKK3sKKwlPVVRSRUcoUEZfQ1RSTDFbaW50ZWxfcGlwZV0sIDApOworCU9VVFJFRyhQRl9XSU5f UE9TW2ludGVsX3BpcGVdLCAwKTsKKwlPVVRSRUcoUEZfV0lOX1NaW2ludGVsX3BpcGVdLCAwKTsK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgcHJpbnRfdXNhZ2Uodm9pZCkKK3sKKwlwcmlu dGYoIk9wdGlvbnM6XG4iCisiICAtcCBwaXBlOiAgICBwaXBlIHRvIGJlIHVzZWQgKEEsIEIgb3Ig QylcbiIKKyIgIC14IHZhbHVlOiAgIGZpbmFsIHNjcmVlbiB3aWR0aCBzaXplIGluIHBpeGVsc1xu IgorIiAgLXkgdmFsdWU6ICAgZmluYWwgc2NyZWVuIGhlaWdodCBzaXplIGluIHBpeGVsc1xuIgor IiAgLWQ6ICAgICAgICAgZGlzYWJsZSBwYW5lbCBmaXR0ZXJcbiIKKyIgIC1sOiAgICAgICAgIGxp c3QgdGhlIGN1cnJlbnQgc3RhdGUgb2YgZWFjaCBwaXBlXG4iCisiICAtaDogICAgICAgICBwcmlu dHMgdGhpcyBtZXNzYWdlXG4iKTsKK30KKworaW50IG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2 W10pCit7CisJaW50IG9wdDsKKwlpbnQgcmV0ID0gMDsKKwljaGFyIGludGVsX3BpcGUgPSAnXDAn OworCWludCB4ID0gMCwgeSA9IDA7CisJYm9vbCBkb19kaXNhYmxlID0gZmFsc2UsIGRvX2R1bXAg PSBmYWxzZSwgZG9fdXNhZ2UgPSBmYWxzZTsKKwlzdHJ1Y3QgcGNpX2RldmljZSAqcGNpX2RldjsK Kwl1aW50MzJfdCBkZXZpZDsKKworCXByaW50ZigiV0FSTklORzpcbiIKKwkgICAgICAgIlRoaXMg dG9vbCBpcyBhIHdvcmthcm91bmQgZm9yIHBlb3BsZSB0aGF0IGRvbid0IGhhdmUgYSBLZXJuZWwg IgorCSAgICAgICAid2l0aCBvdmVyc2NhbiBjb21wZW5zYXRpb24gcHJvcGVydGllczogaXQgaXMg anVzdCBhIHRlbXBvcmFyeSAiCisJICAgICAgICJzb2x1dGlvbiB0aGF0IG1heSBvciBtYXkgbm90 IHdvcmsuIFVzZSBpdCBhdCB5b3VyIG93biByaXNrLlxuIik7CisKKwlwY2lfZGV2ID0gaW50ZWxf Z2V0X3BjaV9kZXZpY2UoKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChwY2lfZGV2LCAw KTsKKwlkZXZpZCA9IHBjaV9kZXYtPmRldmljZV9pZDsKKworCWlmICghSEFTX1BDSF9TUExJVChk ZXZpZCkpIHsKKwkJcHJpbnRmKCJUaGlzIHRvb2wgd2FzIG9ubHkgdGVzdGVkIG9uIElyb25sYWtl IGFuZCBuZXdlclxuIik7CisJCXJldCA9IDE7CisJCWdvdG8gb3V0OworCX0KKwlpZiAoSVNfR0VO NShkZXZpZCkpCisJCWdlbiA9IDU7CisJZWxzZSBpZiAoSVNfR0VONihkZXZpZCkpCisJCWdlbiA9 IDY7CisJZWxzZQorCQlnZW4gPSA3OworCisJd2hpbGUgKChvcHQgPSBnZXRvcHQoYXJnYywgYXJn diwgInA6eDp5OmRsaCIpKSAhPSAtMSkgeworCQlzd2l0Y2ggKG9wdCkgeworCQljYXNlICdwJzoK KwkJCWludGVsX3BpcGUgPSBvcHRhcmdbMF07CisJCQlpZiAoaW50ZWxfcGlwZSAhPSAnQScgJiYg aW50ZWxfcGlwZSAhPSAnQicgJiYKKwkJCSAgICAoZ2VuIDw9IDYgfHwgaW50ZWxfcGlwZSAhPSAn QycpKSB7CisJCQkJcHJpbnRmKCJJbnZhbGlkIHBpcGVcbiIpOworCQkJCXJldCA9IDE7CisJCQkJ Z290byBvdXQ7CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSAneCc6CisJCQl4ID0gYXRvaShvcHRh cmcpOworCQkJYnJlYWs7CisJCWNhc2UgJ3knOgorCQkJeSA9IGF0b2kob3B0YXJnKTsKKwkJCWJy ZWFrOworCQljYXNlICdkJzoKKwkJCWRvX2Rpc2FibGUgPSB0cnVlOworCQkJYnJlYWs7CisJCWNh c2UgJ2wnOgorCQkJZG9fZHVtcCA9IHRydWU7CisJCQlicmVhazsKKwkJY2FzZSAnaCc6CisJCQlk b191c2FnZSA9IHRydWU7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWRvX3VzYWdlID0gdHJ1 ZTsKKwkJCXJldCA9IDE7CisJCX0KKwl9CisKKwlpZiAoZG9fdXNhZ2UpIHsKKwkJcHJpbnRfdXNh Z2UoKTsKKwl9IGVsc2UgaWYgKGRvX2R1bXApIHsKKwkJZHVtcF9pbmZvKCk7CisJfSBlbHNlIGlm IChpbnRlbF9waXBlKSB7CisJCWlmIChkb19kaXNhYmxlKQorCQkJcmV0ID0gZGlzYWJsZV9wYW5l bF9maXR0ZXIoaW50ZWxfcGlwZSAtICdBJyk7CisJCWVsc2UKKwkJCXJldCA9IGNoYW5nZV9zY3Jl ZW5fc2l6ZShpbnRlbF9waXBlIC0gJ0EnLCB4LCB5KTsKKwl9IGVsc2UgeworCQlwcmludF91c2Fn ZSgpOworCQlyZXQgPSAxOworCX0KKworb3V0OgorCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5p KCk7CisJcmV0dXJuIHJldDsKK30KLS0gCjEuNy45CgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAo=