hibyr1: implement USB DAC
rockbox-gerrit-noreply--- via rockbox-cvs <[email protected]> Wed, 22 Jul 2026 15:22:47 -0400
| Newsgroups | gmane.comp.systems.archos.rockbox.cvs |
|---|---|
| Message-ID | <[email protected]> |
Y29tbWl0IGRiZDUzZWY4YWVjODgxYzIwODVhNmE1YWJmYWJkYjhkMmM0ODhiMjQKQXV0aG9yOiBN aWNoYWVsIE1jQWxsaXN0ZXIgPG1lQG1pY2hhZWxtY2FsbGlzdGVyLm9yZz4KRGF0ZTogICBUdWUg SnVsIDIxIDAwOjM4OjUzIDIwMjYgKzAxMDAKCiAgICBoaWJ5cjE6IGltcGxlbWVudCBVU0IgREFD CiAgICAKICAgIEltcGxlbWVudCB0aGUgVVNCIEF1ZGlvIENsYXNzIERBQyBvbiB0aGUgSGlCeSBS MSBhbmQgUjNQcm9JSSwgZHJpdmVuIGJ5CiAgICB0aGUgdXNiX2F1ZGlvIHNldHRpbmcgZnJvbSB0 aGUgc2NhZmZvbGRpbmcgcGF0Y2g6IHRoZSBob3N0IHBsYXlzIGF1ZGlvCiAgICBvdmVyIFVTQiBh bmQgdGhlIHBsYXllcidzIENTNDMxMzEgcmVuZGVycyBpdC4KICAgIAogICAgVGhlIHZlbmRvciBr ZXJuZWwgcHJvdmlkZXMgYSBVQUMgZ2FkZ2V0IGZ1bmN0aW9uICJ1YWNfc2EiIHdob3NlIGNoYXIK ICAgIGRldmljZSAvZGV2L3VhY19zYSBkZWxpdmVycyB0aGUgaG9zdCdzIFBDTTogdGhlIGlzb2No cm9ub3VzIE9VVCBmcmFtZXMKICAgIGFyZSBjb252ZXJ0ZWQgdG8gbGVmdC1qdXN0aWZpZWQgUzE2 LWluLVMzMiBzdGVyZW8gYW5kIHF1ZXVlZCBpbiBhIGtlcm5lbAogICAgcmluZywgZHJhaW5lZCB3 aXRoIGEgbm9uLWJsb2NraW5nIHJlYWQoKS4gVGhlIGRhdGEgcGF0aCBsaXZlcyBpbgogICAgdXNi LWRhYy1oaWJ5LmMgLS0gYSBwdW1wIHRocmVhZCBkcmFpbnMgL2Rldi91YWNfc2EgaW50byBhIHNt YWxsCiAgICBzaW5nbGUtcHJvZHVjZXIvc2luZ2xlLWNvbnN1bWVyIHJpbmcgYW5kIHRoZSBtaXhl ciBjYWxsYmFjayBoYW5kcyB0aGF0CiAgICBQQ00gdG8gdGhlIGNvZGVjIHRocm91Z2ggdGhlIG5v cm1hbCBBTFNBIG91dHB1dCBwYXRoLiBObyByZXNhbXBsaW5nIGlzCiAgICBuZWVkZWQgYmVjYXVz ZSBSb2NrYm94IGNsb2NrcyB0aGUgY29kZWMgYXQgdGhlIGhvc3QtbmVnb3RpYXRlZCByYXRlLgog ICAgCiAgICBUaGUgREFDIGlzIGJ1aWx0IG9uIHRoZSBleGlzdGluZyBjb25maWdmcyBnYWRnZXQg YW5kIGJpbmRzIHRoZSBVREMgbGlrZQogICAgQURCLCB3aGlsZSB1c2JfcG93ZXJfb25seSBrZWVw cyB0aGUgVVNCIHRocmVhZCBvdXQgb2YgdGhlIHdheS4gSW4gY2hhcmdlCiAgICBtb2RlIGl0IGlz IGEgc3RhbmRhbG9uZSBzZWxmLWJvdW5kIGdhZGdldC4gSW4gYWRiIG1vZGUgaXQgaXMgY29tcG9z ZWQKICAgIGFsb25nc2lkZSBhZGIgb24gb25lIGdhZGdldCBzbyB0aGUgaG9zdCBnZXRzIGEgc291 bmQgY2FyZCBhbmQgYWRiIGF0CiAgICBvbmNlOyB1YWNfc2EgbXVzdCBiZSB0aGUgZmlyc3QtbGlu a2VkIGZ1bmN0aW9uIChhdWRpbyBpbnRlcmZhY2VzIDAtMSkKICAgIGJlY2F1c2UgdGhlIHZlbmRv ciBmdW5jdGlvbiBoYXJkLWNvZGVzIGl0cyBpbnRlcmZhY2UgbnVtYmVycy4KICAgIAogICAgVGhl IHB1bXAgaXMgaGFyZHdhcmUtb25seSwgc28gdXNiLWRhYy1oaWJ5LmMgaXMgZXhjbHVkZWQgZnJv bSBzaW11bGF0b3IKICAgIGJ1aWxkczsgdGhlIHVzYl9hdWRpb19nZXRfYWN0aXZlKCkgcGxheWJh Y2staW50ZXJsb2NrIHN0dWIgbGl2ZXMgd2l0aCB0aGUKICAgIHNjYWZmb2xkaW5nLgogICAgCiAg ICBUaGUgUjNQcm9JSSBzaGFyZXMgdGhpcyBob3N0ZWQgSGlCeSBwb3J0IGFuZCB0aGUgc2FtZSB1 c2Vyc3BhY2UgZ2FkZ2V0LAogICAgYW5kIHRoZSBkYXRhIHBhdGggaXMgY29kZWMtYWdub3N0aWMs IHNvIG5vdGhpbmcgaGVyZSBpcyBSMS1zcGVjaWZpYy4KICAgIE9ubHkgdGhlIFIxIGhhcyBiZWVu IHZhbGlkYXRlZCBvbi1kZXZpY2UuCiAgICAKICAgIENvLUF1dGhvcmVkLUJ5OiBDbGF1ZGUgT3B1 cyA0LjgKICAgIENoYW5nZS1JZDogSTY0YzU3ZWRlMjdmNDExYTJjNjFkNDFhN2UwZmExMjdiNTFh N2I1YjkKCmRpZmYgLS1naXQgYS9kb2NzL0NSRURJVFMgYi9kb2NzL0NSRURJVFMKaW5kZXggZDFh YzBjZmRjNy4uZDQzMzgyZWZiNSAxMDA2NDQKLS0tIGEvZG9jcy9DUkVESVRTCisrKyBiL2RvY3Mv Q1JFRElUUwpAQCAtNzYzLDYgKzc2Myw3IEBAIEVpdmluZCDDmGRlZ8OlcmQKIFRldW4gdmFuIERh bGVuCiBBZGFtIE4uIEJ1cmtlCiBMw6ogS2jDoW5oIELDrG5oCitNaWNoYWVsIE1jQWxsaXN0ZXIK IAogVGhlIGxpYm1hZCB0ZWFtCiBUaGUgd2F2cGFjayB0ZWFtCmRpZmYgLS1naXQgYS9maXJtd2Fy ZS9TT1VSQ0VTIGIvZmlybXdhcmUvU09VUkNFUwppbmRleCA1OGJjNzUzZmM0Li4yMDI1NzU1OTVm IDEwMDY0NAotLS0gYS9maXJtd2FyZS9TT1VSQ0VTCisrKyBiL2Zpcm13YXJlL1NPVVJDRVMKQEAg LTE4Nyw2ICsxODcsMTAgQEAgdGFyZ2V0L2hvc3RlZC9oaWJ5L2hpYnlsaW51eF9jb2RlYy5jCiAj ZW5kaWYKICNlbmRpZgogCisjaWYgKGRlZmluZWQoSElCWV9SMSkgfHwgZGVmaW5lZChISUJZX1Iz UFJPSUkpKSAmJiAhZGVmaW5lZChTSU1VTEFUT1IpCit0YXJnZXQvaG9zdGVkL2hpYnkvdXNiLWRh Yy1oaWJ5LmMKKyNlbmRpZgorCiAjaWYgZGVmaW5lZChBR1BURUtfUk9DS0VSKSAmJiAhZGVmaW5l ZChTSU1VTEFUT1IpCiB0YXJnZXQvaG9zdGVkL2FncHRlay9idXR0b24tYWdwdGVrLmMKIHRhcmdl dC9ob3N0ZWQvYWdwdGVrL2RlYnVnLWFncHRlay5jCmRpZmYgLS1naXQgYS9maXJtd2FyZS9leHBv cnQvY29uZmlnL2hpYnlyMS5oIGIvZmlybXdhcmUvZXhwb3J0L2NvbmZpZy9oaWJ5cjEuaAppbmRl eCBmODMwNzkxZDllLi5iYjIwYjBiMWEyIDEwMDY0NAotLS0gYS9maXJtd2FyZS9leHBvcnQvY29u ZmlnL2hpYnlyMS5oCisrKyBiL2Zpcm13YXJlL2V4cG9ydC9jb25maWcvaGlieXIxLmgKQEAgLTg0 LDYgKzg0LDcgQEAKIAogLyogVVNCICovCiAjZGVmaW5lIEhBVkVfVVNCX0FEQgorI2RlZmluZSBI QVZFX0hPU1RfVVNCX0FVRElPCiAjZGVmaW5lIEhBVkVfVVNCX1BPV0VSCiAjZGVmaW5lIFVTQl9W SURfU1RSICIzMkJCIgogI2RlZmluZSBVU0JfUElEX1NUUiAiMDEwMSIKZGlmZiAtLWdpdCBhL2Zp cm13YXJlL2V4cG9ydC9jb25maWcvaGlieXIzcHJvaWkuaCBiL2Zpcm13YXJlL2V4cG9ydC9jb25m aWcvaGlieXIzcHJvaWkuaAppbmRleCBmZmIwYzY5ZjE2Li45MmQzMzhhZWUyIDEwMDY0NAotLS0g YS9maXJtd2FyZS9leHBvcnQvY29uZmlnL2hpYnlyM3Byb2lpLmgKKysrIGIvZmlybXdhcmUvZXhw b3J0L2NvbmZpZy9oaWJ5cjNwcm9paS5oCkBAIC04Nyw2ICs4Nyw3IEBACiAKIC8qIFVTQiAqLwog I2RlZmluZSBIQVZFX1VTQl9BREIKKyNkZWZpbmUgSEFWRV9IT1NUX1VTQl9BVURJTwogI2RlZmlu ZSBIQVZFX1VTQl9QT1dFUgogI2RlZmluZSBVU0JfVklEX1NUUiAiMzJCQiIKICNkZWZpbmUgVVNC X1BJRF9TVFIgIjAxMDEiCmRpZmYgLS1naXQgYS9maXJtd2FyZS90YXJnZXQvaG9zdGVkL2hpYnkv dXNiLWRhYy1oaWJ5LmMgYi9maXJtd2FyZS90YXJnZXQvaG9zdGVkL2hpYnkvdXNiLWRhYy1oaWJ5 LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNGI2NDFhMjMxNAotLS0g L2Rldi9udWxsCisrKyBiL2Zpcm13YXJlL3RhcmdldC9ob3N0ZWQvaGlieS91c2ItZGFjLWhpYnku YwpAQCAtMCwwICsxLDIxNCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAg X19fX19fX19fXyAgICAgICAgICAgICAgIF9fICAgX19fLgorICogICBPcGVuICAgICAgXF9fX19f XyAgIFwgX19fXyAgIF9fX18gfCAgfCBfXF8gfF9fICAgX19fX19fXyAgX19fCisgKiAgIFNvdXJj ZSAgICAgfCAgICAgICBfLy8gIF8gXF8vIF9fX1x8ICB8LyAvfCBfXyBcIC8gIF8gXCAgXC8gIC8K KyAqICAgSnVrZWJveCAgICB8ICAgIHwgICAoICA8Xz4gKSAgXF9fX3wgICAgPCB8IFxfXCAoICA8 Xz4gPiA8ICA8CisgKiAgIEZpcm13YXJlICAgfF9fX198XyAgL1xfX19fLyBcX19fICA+X198XyBc fF9fXyAgL1xfX19fL19fL1xfIFwKKyAqICAgICAgICAgICAgICAgICAgICAgXC8gICAgICAgICAg ICBcLyAgICAgXC8gICAgXC8gICAgICAgICAgICBcLworICoKKyAqIENvcHlyaWdodCAoQykgMjAy NiBieSBNaWNoYWVsIE1jQWxsaXN0ZXIKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYXMgcHVibGlz aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIKKyAq IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor ICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywg V0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxp ZWQuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIEhvc3QtUENNIHB1bXAgZm9yIHRo ZSBIaUJ5IFVTQiBEQUMgZ2FkZ2V0IG1vZGUuCisgKgorICogVGhlIHZlbmRvciBrZXJuZWwncyBV QUMgZ2FkZ2V0IGZ1bmN0aW9uICJ1YWNfc2EiIGV4cG9zZXMgdGhlIGNoYXIgZGV2aWNlCisgKiAv ZGV2L3VhY19zYSwgd2hpY2ggZGVsaXZlcnMgdGhlIGhvc3QncyBQQ006IHRoZSBpc29jaHJvbm91 cyBPVVQgZnJhbWVzIGFyZQorICogY29udmVydGVkIHRvIGxlZnQtanVzdGlmaWVkIFMxNi1pbi1T MzIgc3RlcmVvIGFuZCBxdWV1ZWQgaW4gYSBrZXJuZWwgcmluZywKKyAqIGRyYWluZWQgd2l0aCBy ZWFkKCkuIHJlYWQoKSBpcyBub24tYmxvY2tpbmcgYW5kIHJldHVybnMgLTEgdW50aWwgYXQgbGVh c3QKKyAqIHRoZSByZXF1ZXN0ZWQgY291bnQgKHdoaWNoIG11c3QgYmUgPD0gdGhlIGtlcm5lbCBy aW5nLzIpIGlzIGJ1ZmZlcmVkLgorICoKKyAqIEEgcHVtcCB0aHJlYWQgZHJhaW5zIGl0IGludG8g YSBzbWFsbCBzaW5nbGUtcHJvZHVjZXIvc2luZ2xlLWNvbnN1bWVyCisgKiByaW5nLCB0aGUgbWl4 ZXIncyBnZXRfbW9yZSBjYWxsYmFjayBoYW5kcyB0aGF0IFBDTSB0byB0aGUgQ1M0MzEzMSB0aHJv dWdoCisgKiB0aGUgbm9ybWFsIEFMU0Egb3V0cHV0IHBhdGgsIHRoZSBzYW1lIHdheSBmaXJtd2Fy ZS91c2JzdGFjay91c2JfYXVkaW8uYworICogZHJpdmVzIGl0cyBob3N0LVBDTSBwbGF5YmFjay4K KyAqLworCisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUg PHB0aHJlYWQuaD4KKyNpbmNsdWRlIDxzdGRib29sLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+Cisj aW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjaW5jbHVkZSA8dW5p c3RkLmg+CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJrZXJuZWwuaCIKKyNpbmNs dWRlICJwY21fbWl4ZXIuaCIKKyNpbmNsdWRlICJwY21fc2FtcHIuaCIKKyNpbmNsdWRlICJzeXN0 ZW0uaCIKKyNpbmNsdWRlICJ0aHJlYWQuaCIKKyNpbmNsdWRlICJ1c2IuaCIKKyNpbmNsdWRlICJ1 c2ItZGFjLWhpYnkuaCIKKworLyojZGVmaW5lIExPR0ZfRU5BQkxFKi8KKyNpbmNsdWRlICJsb2dm LmgiCisKKyNkZWZpbmUgVUFDX1NBX0RFViAgICAgICAgIi9kZXYvdWFjX3NhIgorLyogaW9jdGw6 IGZpbGxzIGludFszXSA9IHsgZm10LCByYXRlX2h6LCBiaXRzIH0gKi8KKyNkZWZpbmUgVUFDX1NB X0dFVF9TVEFUVVMgMQorLyogdWFjX3NhIGRlbGl2ZXJzIFMzMiBzdGVyZW86IDggYnl0ZXMgcGVy IGZyYW1lICovCisjZGVmaW5lIFVBQ19TQV9GUkFNRV9TSVpFIDgKKworLyogUmluZyBvZiBTMTYg c3RlcmVvIGZyYW1lcy4gQSBwb3dlciBvZiB0d28gc28gaGVhZC90YWlsIHdyYXAgY2xlYW5seS4g Ki8KKyNkZWZpbmUgREFDX1JJTkdfRlJBTUVTICAgODE5MiAgLyogfjE4NiBtcyBhdCA0NC4xIGtI eiAqLworI2RlZmluZSBEQUNfQ0hVTktfRlJBTUVTICA1MTIgICAvKiBtaXhlciBidWZmZXIgZ3Jh bnVsYXJpdHkgKi8KKy8qIG9uZSByZWFkKCkncyB3b3J0aC4gTXVzdCBzdGF5IDw9IHRoZSBrZXJu ZWwgcmluZy8yICovCisjZGVmaW5lIERBQ19SRUFEX0JZVEVTICAgIChEQUNfQ0hVTktfRlJBTUVT ICogVUFDX1NBX0ZSQU1FX1NJWkUpCisKK3N0YXRpYyBpbnQxNl90IGRhY19yaW5nW0RBQ19SSU5H X0ZSQU1FUyAqIDJdOworc3RhdGljIHZvbGF0aWxlIHVuc2lnbmVkIGludCBkYWNfaGVhZDsgIC8q IGZyYW1lcyBwcm9kdWNlZDsgcHVtcCBvbmx5ICovCitzdGF0aWMgdm9sYXRpbGUgdW5zaWduZWQg aW50IGRhY190YWlsOyAgLyogZnJhbWVzIGNvbnN1bWVkOyBtaXhlciBvbmx5ICovCitzdGF0aWMg cHRocmVhZF90IGRhY190aHJlYWQ7CitzdGF0aWMgdm9sYXRpbGUgYm9vbCBkYWNfcnVubmluZzsK K3N0YXRpYyBpbnQgZGFjX2ZkID0gLTE7CisKKy8qIE1peGVyIGNhbGxiYWNrIChQQ00gZmVlZCBj b250ZXh0KS4gUmV0dXJucyB0aGUgbmV4dCBjaHVuayBmcm9tIHRoZSByaW5nLAorICogemVyby1w YWRkZWQgd2l0aCBzaWxlbmNlIG9uIHVuZGVycnVuIHNvIHRoZSBzdHJlYW0gbmV2ZXIgc3RhbGxz LiBEb3VibGUKKyAqIGJ1ZmZlcmVkIHNvIHRoZSByZXR1cm5lZCBwb2ludGVyIHN0YXlzIHZhbGlk IHVudGlsIHRoZSBmb2xsb3dpbmcgY2FsbC4gKi8KK3N0YXRpYyB2b2lkIGRhY19nZXRfbW9yZShj b25zdCB2b2lkICoqc3RhcnQsIHNpemVfdCAqc2l6ZSkKK3sKKyAgICBzdGF0aWMgaW50MTZfdCBv dXRbMl1bREFDX0NIVU5LX0ZSQU1FUyAqIDJdOworICAgIHN0YXRpYyBpbnQgd2hpY2g7CisgICAg aW50MTZfdCAqYnVmOworCisgICAgd2hpY2ggXj0gMTsKKyAgICBidWYgPSBvdXRbd2hpY2hdOwor CisgICAgdW5zaWduZWQgaW50IHRhaWwgPSBkYWNfdGFpbDsKKyAgICB1bnNpZ25lZCBpbnQgYXZh aWwgPSBkYWNfaGVhZCAtIHRhaWw7ICAgICAgICAgLyogd3JhcC1zYWZlICovCisgICAgYXZhaWwg PSBNSU4oYXZhaWwsIERBQ19DSFVOS19GUkFNRVMpOworCisgICAgZm9yICh1bnNpZ25lZCBpbnQg aSA9IDA7IGkgPCBhdmFpbDsgaSsrKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50IGlkeCA9 ICh0YWlsICsgaSkgJiAoREFDX1JJTkdfRlJBTUVTIC0gMSk7CisgICAgICAgIGJ1ZlsyICogaV0g ICAgID0gZGFjX3JpbmdbMiAqIGlkeF07CisgICAgICAgIGJ1ZlsyICogaSArIDFdID0gZGFjX3Jp bmdbMiAqIGlkeCArIDFdOworICAgIH0KKyAgICBtZW1zZXQoJmJ1ZlsyICogYXZhaWxdLCAwLAor ICAgICAgICAgICAoREFDX0NIVU5LX0ZSQU1FUyAtIGF2YWlsKSAqIDIgKiBzaXplb2YoaW50MTZf dCkpOworICAgIGRhY190YWlsID0gdGFpbCArIGF2YWlsOworCisgICAgKnN0YXJ0ID0gYnVmOwor ICAgICpzaXplID0gREFDX0NIVU5LX0ZSQU1FUyAqIDIgKiBzaXplb2YoaW50MTZfdCk7Cit9CisK Ky8qIERyYWluIC9kZXYvdWFjX3NhIGludG8gdGhlIHJpbmcuIFRoZSBkcml2ZXIncyBvbmx5IGZp bGUKKyAqIG9wZXJhdGlvbnMgYXJlIG9wZW4vcmVhZC9pb2N0bCAodGhlcmUgaXMgbm8gcG9sbCgp KSwgc28gcmV0cnkgd2l0aCBhCisgKiBzaG9ydCBzbGVlcCB3aGVuIHRoZSBob3N0IGhhcyBub3Qg cXVldWVkIGEgZnVsbCBjaHVuayB5ZXQuCisgKgorICogVGhpcyBpcyBhIHJhdyBwdGhyZWFkLCBu b3QgYSBSb2NrYm94IHRocmVhZCwgc28gaXQgbXVzdCB1c2UgdXNsZWVwKCkKKyAqIHJhdGhlciB0 aGFuIHRoZSBjb29wZXJhdGl2ZSBzbGVlcCgpICh3aGljaCBvbmx5IHRoZSBzY2hlZHVsZXIncyBv d24KKyAqIHRocmVhZHMgbWF5IGNhbGwpLiAqLworc3RhdGljIHZvaWQgKmRhY19wdW1wX3RocmVh ZCh2b2lkICphcmcpCit7CisgICAgaW50MzJfdCByYnVmW0RBQ19SRUFEX0JZVEVTIC8gc2l6ZW9m KGludDMyX3QpXTsKKyAgICAodm9pZClhcmc7CisKKyAgICB3aGlsZSAoZGFjX3J1bm5pbmcpCisg ICAgeworICAgICAgICB1bnNpZ25lZCBpbnQgaGVhZCA9IGRhY19oZWFkOworCisgICAgICAgIC8q IExlYXZlIHJvb20gZm9yIGEgZnVsbCByZWFkOyBlbHNlIHdhaXQgZm9yIHRoZSBtaXhlciB0byBk cmFpbiAqLworICAgICAgICBpZiAoaGVhZCAtIGRhY190YWlsID4gREFDX1JJTkdfRlJBTUVTIC0g REFDX0NIVU5LX0ZSQU1FUykKKyAgICAgICAgeworICAgICAgICAgICAgdXNsZWVwKDEwMDApOwor ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBzc2l6ZV90IG4gPSBy ZWFkKGRhY19mZCwgcmJ1ZiwgREFDX1JFQURfQllURVMpOworICAgICAgICBpZiAobiA8PSAwKQor ICAgICAgICB7CisgICAgICAgICAgICB1c2xlZXAoMTAwMCk7ICAgICAgIC8qIG5vIGhvc3QgZGF0 YSBxdWV1ZWQgeWV0ICovCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAg ICAgIGludCBmcmFtZXMgPSBuIC8gVUFDX1NBX0ZSQU1FX1NJWkU7CisgICAgICAgIGZvciAoaW50 IGkgPSAwOyBpIDwgZnJhbWVzOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVk IGludCBpZHggPSAoaGVhZCArIGkpICYgKERBQ19SSU5HX0ZSQU1FUyAtIDEpOworICAgICAgICAg ICAgZGFjX3JpbmdbMiAqIGlkeF0gICAgID0gKGludDE2X3QpKHJidWZbMiAqIGldICAgICA+PiAx Nik7CisgICAgICAgICAgICBkYWNfcmluZ1syICogaWR4ICsgMV0gPSAoaW50MTZfdCkocmJ1Zlsy ICogaSArIDFdID4+IDE2KTsKKyAgICAgICAgfQorICAgICAgICBkYWNfaGVhZCA9IGhlYWQgKyBm cmFtZXM7CisgICAgfQorCisgICAgcmV0dXJuIE5VTEw7Cit9CisKK2Jvb2wgdXNiX2RhY19zdGFy dCh2b2lkKQoreworICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWl4ZXJfcGxheV9jYnMgY2JzID0g eyAuZ2V0X21vcmUgPSBkYWNfZ2V0X21vcmUgfTsKKyAgICBpbnQgc3RbM10gPSB7MCwgMCwgMH07 CisgICAgdW5zaWduZWQgaW50IHJhdGU7CisKKyAgICAvKiBUaGUgbm9kZSBpcyBjcmVhdGVkIGFz eW5jaHJvbm91c2x5IHdoZW4gdGhlIFVEQyBiaW5kczsgZHVyaW5nIGJvb3QKKyAgICAgKiB0aGUg aG90cGx1ZyBoZWxwZXIgY2FuIGxhZyBiZWhpbmQsIHNvIHdhaXQgYnJpZWZseSBmb3IgaXQuIFRo aXMgcnVucworICAgICAqIG9uIGEgUm9ja2JveCB0aHJlYWQsIHNvIHNsZWVwKCkgeWllbGRzIHRv IHRoZSBjb29wZXJhdGl2ZSBzY2hlZHVsZXIKKyAgICAgKiBpbnN0ZWFkIG9mIHN0YWxsaW5nIGV2 ZXJ5IG90aGVyIHRocmVhZCB0aGUgd2F5IHVzbGVlcCgpIHdvdWxkLiAqLworICAgIGZvciAoaW50 IHRyaWVzID0gNTA7IHRyaWVzID4gMDsgdHJpZXMtLSkKKyAgICB7CisgICAgICAgIGRhY19mZCA9 IG9wZW4oVUFDX1NBX0RFViwgT19SRFdSKTsKKyAgICAgICAgaWYgKGRhY19mZCA+PSAwKQorICAg ICAgICAgICAgYnJlYWs7CisgICAgICAgIHNsZWVwKEhaIC8gNTApOyAgICAgLyogMjAgbXMgKi8K KyAgICB9CisgICAgaWYgKGRhY19mZCA8IDApCisgICAgeworICAgICAgICBsb2dmKCJ1YWNfc2Eg b3BlbiBmYWlsZWQgKCVkKSIsIGVycm5vKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K KworICAgIC8qIFBsYXkgYXQgdGhlIHJhdGUgdGhlIGhvc3QgbmVnb3RpYXRlZCAocmVwb3J0ZWQg YnkgdGhlIGtlcm5lbCkuICovCisgICAgaW9jdGwoZGFjX2ZkLCBVQUNfU0FfR0VUX1NUQVRVUywg c3QpOworICAgIGlmIChzdFsxXSA+PSBTQU1QUl84ICYmIHN0WzFdIDw9IFNBTVBSXzE5MikKKyAg ICAgICAgcmF0ZSA9ICh1bnNpZ25lZCBpbnQpc3RbMV07CisgICAgZWxzZQorICAgICAgICByYXRl ID0gU0FNUFJfNDQ7CisgICAgbWl4ZXJfc2V0X2ZyZXF1ZW5jeShyYXRlKTsKKworICAgIGRhY19o ZWFkID0gZGFjX3RhaWwgPSAwOworICAgIGRhY19ydW5uaW5nID0gdHJ1ZTsKKyAgICBpZiAocHRo cmVhZF9jcmVhdGUoJmRhY190aHJlYWQsIE5VTEwsIGRhY19wdW1wX3RocmVhZCwgTlVMTCkgIT0g MCkKKyAgICB7CisgICAgICAgIGxvZ2YoInVhY19zYSBwdW1wIHRocmVhZCBmYWlsZWQiKTsKKyAg ICAgICAgZGFjX3J1bm5pbmcgPSBmYWxzZTsKKyAgICAgICAgY2xvc2UoZGFjX2ZkKTsKKyAgICAg ICAgZGFjX2ZkID0gLTE7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtaXhl cl9jaGFubmVsX3NldF9hbXBsaXR1ZGUoUENNX01JWEVSX0NIQU5fVVNCQVVESU8sIE1JWF9BTVBf VU5JVFkpOworICAgIG1peGVyX2NoYW5uZWxfcGxheV9kYXRhKFBDTV9NSVhFUl9DSEFOX1VTQkFV RElPLCAmY2JzLCBOVUxMLCAwKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCB1c2JfZGFj X3N0b3Aodm9pZCkKK3sKKyAgICBpZiAoIWRhY19ydW5uaW5nKQorICAgICAgICByZXR1cm47CisK KyAgICBkYWNfcnVubmluZyA9IGZhbHNlOworICAgIHB0aHJlYWRfam9pbihkYWNfdGhyZWFkLCBO VUxMKTsKKyAgICBtaXhlcl9jaGFubmVsX3N0b3AoUENNX01JWEVSX0NIQU5fVVNCQVVESU8pOwor CisgICAgaWYgKGRhY19mZCA+PSAwKQorICAgIHsKKyAgICAgICAgY2xvc2UoZGFjX2ZkKTsKKyAg ICAgICAgZGFjX2ZkID0gLTE7CisgICAgfQorfQorCitib29sIHVzYl9hdWRpb19nZXRfYWN0aXZl KHZvaWQpCit7CisgICAgcmV0dXJuIGRhY19ydW5uaW5nOworfQpkaWZmIC0tZ2l0IGEvZmlybXdh cmUvdGFyZ2V0L2hvc3RlZC9oaWJ5L3VzYi1kYWMtaGlieS5oIGIvZmlybXdhcmUvdGFyZ2V0L2hv c3RlZC9oaWJ5L3VzYi1kYWMtaGlieS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAuLjBlMWM4NWQwYTkKLS0tIC9kZXYvbnVsbAorKysgYi9maXJtd2FyZS90YXJnZXQvaG9z dGVkL2hpYnkvdXNiLWRhYy1oaWJ5LmgKQEAgLTAsMCArMSwzNCBAQAorLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgorICogICAgICAgICAgICAgX19fX19fX19fXyAgICAgICAgICAgICAgIF9fICAgX19fLgor ICogICBPcGVuICAgICAgXF9fX19fXyAgIFwgX19fXyAgIF9fX18gfCAgfCBfXF8gfF9fICAgX19f X19fXyAgX19fCisgKiAgIFNvdXJjZSAgICAgfCAgICAgICBfLy8gIF8gXF8vIF9fX1x8ICB8LyAv fCBfXyBcIC8gIF8gXCAgXC8gIC8KKyAqICAgSnVrZWJveCAgICB8ICAgIHwgICAoICA8Xz4gKSAg XF9fX3wgICAgPCB8IFxfXCAoICA8Xz4gPiA8ICA8CisgKiAgIEZpcm13YXJlICAgfF9fX198XyAg L1xfX19fLyBcX19fICA+X198XyBcfF9fXyAgL1xfX19fL19fL1xfIFwKKyAqICAgICAgICAgICAg ICAgICAgICAgXC8gICAgICAgICAgICBcLyAgICAgXC8gICAgXC8gICAgICAgICAgICBcLworICoK KyAqIENvcHlyaWdodCAoQykgMjAyNiBieSBNaWNoYWVsIE1jQWxsaXN0ZXIKKyAqCisgKiBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQorICogYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDIKKyAqIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQg b24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKyAqIEtJTkQsIGVp dGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisjaWZu ZGVmIF9fVVNCX0RBQ19ISUJZX0hfXworI2RlZmluZSBfX1VTQl9EQUNfSElCWV9IX18KKworLyoq CisgKiBIb3N0LVBDTSBwdW1wIGZvciB0aGUgSGlCeSBVU0IgREFDIGdhZGdldCBtb2RlOiBkcmFp bnMgL2Rldi91YWNfc2EKKyAqIGludG8gdGhlIFBDTSBtaXhlci4gU3RhcnRlZC9zdG9wcGVkIGJ5 IHRoZSBVU0IgZ2FkZ2V0IGRyaXZlciB3aGVuIHRoZQorICogdWFjX3NhIGZ1bmN0aW9uIGlzIGJy b3VnaHQgdXAvdG9ybiBkb3duLgorICoKKyAqIHVzYl9kYWNfc3RhcnQoKSByZXR1cm5zIGZhbHNl IGlmIHRoZSB1YWNfc2EgZGV2aWNlIG5ldmVyIGFwcGVhcnMgKHRoZQorICogcHVtcCBpcyBub3Qg c3RhcnRlZCk7IHRoZSBjYWxsZXIgc2hvdWxkIGZhbGwgYmFjayB0byBhIHNhZmUgVVNCIG1vZGUu CisgKi8KK2Jvb2wgdXNiX2RhY19zdGFydCh2b2lkKTsKK3ZvaWQgdXNiX2RhY19zdG9wKHZvaWQp OworCisjZW5kaWYgLyogX19VU0JfREFDX0hJQllfSF9fICovCmRpZmYgLS1naXQgYS9maXJtd2Fy ZS90YXJnZXQvaG9zdGVkL2hpYnkvdXNiLWhpYnktZ2FkZ2V0LmMgYi9maXJtd2FyZS90YXJnZXQv aG9zdGVkL2hpYnkvdXNiLWhpYnktZ2FkZ2V0LmMKaW5kZXggYWYwNDY5MDI0OC4uNWY5ZjA1NWMw YyAxMDA2NDQKLS0tIGEvZmlybXdhcmUvdGFyZ2V0L2hvc3RlZC9oaWJ5L3VzYi1oaWJ5LWdhZGdl dC5jCisrKyBiL2Zpcm13YXJlL3RhcmdldC9ob3N0ZWQvaGlieS91c2ItaGlieS1nYWRnZXQuYwpA QCAtOCw2ICs4LDcgQEAKICAqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggYnkgTWFyY2luIEJ1a2F0 CiAgKiBDb3B5cmlnaHQgKEMpIDIwMjUgYnkgTWVsaXNzYSBBdXR1bW4KKyAqIENvcHlyaWdodCAo QykgMjAyNiBieSBNaWNoYWVsIE1jQWxsaXN0ZXIKICAqCiAgKiBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQpAQCAtMjAs NiArMjEsNyBAQAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKICNpbmNsdWRlIDxkaXJlbnQuaD4K KyNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN5cy9t b3VudC5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgpAQCAtMzIsNiArMzQsMTIgQEAKICNpbmNsdWRl ICJwb3dlci5oIgogI2luY2x1ZGUgInVzYi1oaWJ5LWdhZGdldC5oIgogCisjaW5jbHVkZSAiYXVk aW8uaCIKKyNpbmNsdWRlICJwY20uaCIKKyNpbmNsdWRlICJwY21fc2FtcHIuaCIKKyNpbmNsdWRl ICJ1c2JfY2g5LmgiCisjaW5jbHVkZSAidXNiLWRhYy1oaWJ5LmgiCisKICNpZmRlZiBIQVZFX0dF TkVSQUxfUFVSUE9TRV9MRUQKICNpbmNsdWRlICJsZWQtZ2VuZXJhbC1wdXJwb3NlLmgiCiAjZW5k aWYKQEAgLTQwLDE0ICs0OCwxOCBAQAogI2luY2x1ZGUgImxvZ2YuaCIKICNpbmNsdWRlIDxzdGRp by5oPgogCisvKiBDb25maWdmcyByb290IG9mIHRoZSBnYWRnZXQgY3JlYXRlZCBieSB1c2JfaW5p dF9kZXZpY2UoKSAqLworI2RlZmluZSBVU0JfR0FER0VUX1BBVEggICAiL3N5cy9rZXJuZWwvY29u ZmlnL3VzYl9nYWRnZXQvYWRiX2RlbW8iCisKIHN0YXRpYyBpbnQgX3VzYl9tb2RlID0gLTE7CiBz dGF0aWMgYm9vbCBfdXNiX2luaXQgPSBmYWxzZTsKIHN0YXRpYyBib29sIGlzX2FkYl9ydW5uaW5n ID0gZmFsc2U7CitzdGF0aWMgaW50IF91c2JfYXVkaW8gPSAwOyAgIC8qIHVzYl9hdWRpbyBzZXR0 aW5nOiAwIG5ldmVyIC4uIDMgd2hpbGUgbWFzcy1zdG9yYWdlICovCiAKIHZvaWQgZW5hYmxlX2Fk Yih2b2lkKTsKIHZvaWQgZW5hYmxlX21hc3Nfc3RvcmFnZSh2b2lkKTsKIHZvaWQgZW5hYmxlX2No YXJnaW5nKHZvaWQpOwotdm9pZCBlbmFibGVfdXNiX2F1ZGlvKHZvaWQpOworYm9vbCBlbmFibGVf dXNiX2F1ZGlvKHZvaWQpOwogCiB2b2lkIGRpc2FibGVfYWRiKHZvaWQpOwogdm9pZCBkaXNhYmxl X21hc3Nfc3RvcmFnZSh2b2lkKTsKQEAgLTU4LDE2ICs3MCw5IEBAIHZvaWQgY2xlYW51cF9yYmhv bWUodm9pZCk7CiB2b2lkIHN0YXJ0dXBfcmJob21lKHZvaWQpOwogI2VuZGlmCiAKLXZvaWQgaGli eV9zZXRfdXNiX21vZGUoaW50IG1vZGUpIHsKLSAgICBsb2dmKCI+Pj4+Pj4+Pj4+Pj4+Pj4+PiBo aWJ5X3NldF91c2JfbW9kZSglZClcbiIsIG1vZGUpOwotICAgIGlmICghX3VzYl9pbml0KSB7Ci0g ICAgICAgIGxvZ2YoIk5lZWQgdG8gaW5pdCB1c2IhXG4iKTsKLSAgICAgICAgdXNiX2luaXRfZGV2 aWNlKCk7Ci0gICAgfQotCi0gICAgaWYgKF91c2JfbW9kZSA9PSBtb2RlKQotICAgICAgICByZXR1 cm47Ci0KKy8qIEJyaW5nIHVwIHRoZSBnYWRnZXQgZm9yIGEgYmFzZSBVU0IgbW9kZSAobWFzcyBz dG9yYWdlIC8gY2hhcmdlIC8gYWRiKS4gKi8KK3N0YXRpYyB2b2lkIGNvbmZpZ3VyZV91c2JfbW9k ZShpbnQgbW9kZSkKK3sKICAgICBzd2l0Y2gobW9kZSkgewogICAgIGNhc2UgVVNCX01PREVfTUFT U19TVE9SQUdFOgogICAgICAgICBsb2dmKCJFbmFibGluZyBNYXNzIFN0b3JhZ2VcbiIpOwpAQCAt ODQsOCArODksMTA0IEBAIHZvaWQgaGlieV9zZXRfdXNiX21vZGUoaW50IG1vZGUpIHsKICAgICBk ZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9Cit9CisKKy8qIFdoZXRoZXIgdGhlIFVTQi1E QUMgZnVuY3Rpb24gc2hvdWxkIGJlIHJ1bm5pbmcsIGdpdmVuIHRoZSB1c2JfYXVkaW8KKyAqIHNl dHRpbmcgKG5ldmVyL2Fsd2F5cy93aGlsZV9jaGFyZ2Vfb25seS93aGlsZV9tYXNzX3N0b3JhZ2Up IGFuZCB0aGUKKyAqIGN1cnJlbnQgYmFzZSBVU0IgbW9kZS4gKi8KK3N0YXRpYyBib29sIGRhY19z aG91bGRfcnVuKHZvaWQpCit7CisgICAgc3dpdGNoIChfdXNiX2F1ZGlvKSB7CisgICAgY2FzZSAx OiByZXR1cm4gdHJ1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFsd2F5cyAq LworICAgIGNhc2UgMjogcmV0dXJuIF91c2JfbW9kZSA9PSBVU0JfTU9ERV9DSEFSR0U7ICAgICAg ICAvKiB3aGlsZSBjaGFyZ2Utb25seSAqLworICAgIGNhc2UgMzogcmV0dXJuIF91c2JfbW9kZSA9 PSBVU0JfTU9ERV9NQVNTX1NUT1JBR0U7ICAvKiB3aGlsZSBtYXNzLXN0b3JhZ2UgKi8KKyAgICBk ZWZhdWx0OiByZXR1cm4gZmFsc2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmV2 ZXIgKi8KKyAgICB9Cit9CiAKKy8qIFJlY29uY2lsZSB0aGUgREFDIGdhZGdldCB3aXRoIHRoZSBz ZXR0aW5nICsgY3VycmVudCBtb2RlLgorICoKKyAqIEluIGFkYiBtb2RlIHRoZSBEQUMgcmlkZXMg YWxvbmdzaWRlIGFkYiBhcyBhIGNvbXBvc2l0ZSBmdW5jdGlvbiwgc28gd2UKKyAqIHJlYnVpbGQg dGhlIGFkYiBnYWRnZXQgKGVuYWJsZV9hZGIoKSBjb21wb3NlcyB1YWNfc2Egd2hlbiBkYWNfc2hv dWxkX3J1bigpKS4KKyAqIEluIGNoYXJnZS9tYXNzLXN0b3JhZ2UgbW9kZSB0aGUgREFDIGlzIGEg c3RhbmRhbG9uZSBzZWxmLWJvdW5kIGdhZGdldC4gKi8KK3N0YXRpYyB2b2lkIGFwcGx5X3VzYl9h dWRpbyh2b2lkKQoreworICAgIGlmIChfdXNiX21vZGUgPT0gVVNCX01PREVfQURCKSB7CisgICAg ICAgIGVuYWJsZV9hZGIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGJvb2wgd2Fu dCA9IGRhY19zaG91bGRfcnVuKCk7CisgICAgYm9vbCBhY3RpdmUgPSB1c2JfYXVkaW9fZ2V0X2Fj dGl2ZSgpOworCisgICAgaWYgKHdhbnQgJiYgIWFjdGl2ZSkgeworICAgICAgICAvKiBlbmFibGVf dXNiX2F1ZGlvKCkgcmV0dXJucyBmYWxzZSBpZiBhcHBsaWVkIGJlZm9yZSBhdWRpb19pbml0KCkK KyAgICAgICAgICogKFBDTSBtaXhlciBub3QgdXAgeWV0IC0tIGUuZy4gYXQgYm9vdCkgb3IgaWYg dWFjX3NhIG5ldmVyIGNvbWVzCisgICAgICAgICAqIHVwLiBFaXRoZXIgd2F5IHJlc3RvcmUgdGhl IGJhc2UgbW9kZSBzbyB3ZSBuZXZlciBsZWF2ZSBhIGRlYWQKKyAgICAgICAgICogZ2FkZ2V0IGJl aGluZC4gKi8KKyAgICAgICAgaWYgKCFlbmFibGVfdXNiX2F1ZGlvKCkpCisgICAgICAgICAgICBj b25maWd1cmVfdXNiX21vZGUoX3VzYl9tb2RlKTsKKyAgICB9IGVsc2UgaWYgKCF3YW50ICYmIGFj dGl2ZSkgeworICAgICAgICBkaXNhYmxlX3VzYl9hdWRpbygpOworICAgICAgICBjb25maWd1cmVf dXNiX21vZGUoX3VzYl9tb2RlKTsKKyAgICB9Cit9CisKKy8qIHVzYl9zZXRfYXVkaW8oKSBpcyB0 aGUgdGFyZ2V0J3MgaW1wbGVtZW50YXRpb24gb2YgdGhlIHVzYl9hdWRpbyBzZXR0aW5nCisgKiBj YWxsYmFjayBkZWNsYXJlZCBpbiB1c2IuaCAoSEFWRV9IT1NUX1VTQl9BVURJTyk7IGl0IGRyaXZl cyB0aGUgREFDIGdhZGdldAorICogdXAgb3IgZG93bi4gKi8KK3ZvaWQgdXNiX3NldF9hdWRpbyhp bnQgdmFsdWUpCit7CisgICAgX3VzYl9hdWRpbyA9IHZhbHVlOworICAgIGFwcGx5X3VzYl9hdWRp bygpOworfQorCisvKiBDb21wb3NlIHVhY19zYSBpbnRvIHRoZSBhZGIgY29uZmlnLCBsaW5rZWQg RklSU1Qgc28gdGhlIGF1ZGlvIGludGVyZmFjZXMKKyAqIGFyZSAwLTEgKHRoZSB2ZW5kb3IgdWFj X3NhIGZ1bmN0aW9uIGhhcmQtY29kZXMgdGhlbSksIHdpdGggdGhlIERBQyBWSUQvUElECisgKiAr IElBRCBkZXNjcmlwdG9yLiBSZXR1cm5zIHRydWUgaWYgaXQgY29tcG9zZWQgdGhlIERBQy4gU2tp cHBlZCBiZWZvcmUKKyAqIGF1ZGlvX2luaXQoKSAobm8gUENNIG1peGVyIHlldCk7IHJlLWFwcGxp ZWQgb25jZSBpdCBpcyB1cC4gKi8KK3N0YXRpYyBib29sIGFkYl9jb21wb3NlX2RhYyh2b2lkKQor eworICAgIGlmICghZGFjX3Nob3VsZF9ydW4oKSB8fCAhcGNtX2lzX2luaXRpYWxpemVkKCkpCisg ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN5c2ZzX3NldF9zdHJpbmcoVVNCX0dBREdFVF9Q QVRIICIvaWRWZW5kb3IiLCAiMHgiIFVTQl9WSURfU1RSKTsKKyAgICBzeXNmc19zZXRfc3RyaW5n KFVTQl9HQURHRVRfUEFUSCAiL2lkUHJvZHVjdCIsICIweDAwMDQiKTsKKyAgICBzeXNmc19zZXRf aW50KFVTQl9HQURHRVRfUEFUSCAiL2JEZXZpY2VDbGFzcyIsIFVTQl9DTEFTU19NSVNDKTsKKyAg ICBzeXNmc19zZXRfaW50KFVTQl9HQURHRVRfUEFUSCAiL2JEZXZpY2VTdWJDbGFzcyIsIDIpOwor ICAgIHN5c2ZzX3NldF9pbnQoVVNCX0dBREdFVF9QQVRIICIvYkRldmljZVByb3RvY29sIiwgMSk7 CisKKyAgICBzeXN0ZW0oIm1rZGlyIC1wICIgVVNCX0dBREdFVF9QQVRIICIvZnVuY3Rpb25zL3Vh Y19zYS5hIik7CisgICAgc3lzZnNfc2V0X2ludChVU0JfR0FER0VUX1BBVEggIi9mdW5jdGlvbnMv dWFjX3NhLmEvY19jaG1hc2siLCAzKTsKKyAgICBzeXNmc19zZXRfaW50KFVTQl9HQURHRVRfUEFU SCAiL2Z1bmN0aW9ucy91YWNfc2EuYS9jX3NzaXplIiwgMik7CisgICAgc3lzZnNfc2V0X2ludChV U0JfR0FER0VUX1BBVEggIi9mdW5jdGlvbnMvdWFjX3NhLmEvY19zcmF0ZSIsIFNBTVBSXzQ4KTsK KyAgICBzeXN0ZW0oImxuIC1zZiAiIFVTQl9HQURHRVRfUEFUSCAiL2Z1bmN0aW9ucy91YWNfc2Eu YSAiIFVTQl9HQURHRVRfUEFUSCAiL2NvbmZpZ3MvYy4xLyIpOworICAgIHN5c2ZzX3NldF9zdHJp bmcoVVNCX0dBREdFVF9QQVRIICIvY29uZmlncy9jLjEvc3RyaW5ncy8weDQwOS9jb25maWd1cmF0 aW9uIiwgInVhYyxhZGIiKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBoaWJ5X3NldF91 c2JfbW9kZShpbnQgbW9kZSkgeworICAgIGxvZ2YoIj4+Pj4+Pj4+Pj4+Pj4+Pj4+IGhpYnlfc2V0 X3VzYl9tb2RlKCVkKVxuIiwgbW9kZSk7CisgICAgaWYgKCFfdXNiX2luaXQpIHsKKyAgICAgICAg bG9nZigiTmVlZCB0byBpbml0IHVzYiFcbiIpOworICAgICAgICB1c2JfaW5pdF9kZXZpY2UoKTsK KyAgICB9CisKKyAgICBpZiAoX3VzYl9tb2RlID09IG1vZGUpCisgICAgICAgIHJldHVybjsKKwor ICAgIC8qIERyb3AgYW55IGFjdGl2ZSBEQUMgYmVmb3JlIHJlY29uZmlndXJpbmcgdGhlIGJhc2Ug Z2FkZ2V0LiAqLworICAgIGlmICh1c2JfYXVkaW9fZ2V0X2FjdGl2ZSgpKQorICAgICAgICBkaXNh YmxlX3VzYl9hdWRpbygpOworCisgICAgLyogU2V0IHRoZSBtb2RlIGZpcnN0IHNvIGVuYWJsZV9h ZGIoKS9kYWNfc2hvdWxkX3J1bigpIHNlZSBpdC4gKi8KICAgICBfdXNiX21vZGUgPSBtb2RlOwor ICAgIGNvbmZpZ3VyZV91c2JfbW9kZShtb2RlKTsKKworICAgIC8qIGFkYiBjb21wb3NlcyB0aGUg REFDIGl0c2VsZiBpbiBlbmFibGVfYWRiKCk7IGNoYXJnZS9tYXNzLXN0b3JhZ2UgZ2V0CisgICAg ICogdGhlIHN0YW5kYWxvbmUgc2VsZi1ib3VuZCBEQUMgaGVyZS4gKi8KKyAgICBpZiAobW9kZSAh PSBVU0JfTU9ERV9BREIpCisgICAgICAgIGFwcGx5X3VzYl9hdWRpbygpOwogfQogCiAvKiBUT0RP OiBpbXBsZW1lbnQgdXNiIGRldGVjdGlvbiBwcm9wZXJseSAqLwpAQCAtMTEzLDcgKzIxNCw5IEBA IHZvaWQgdXNiX2VuYWJsZShib29sIG9uKQogICAgIGxvZ2YoIj4+Pj4+Pj4+Pj4+Pj4+Pj4+IHVz Yl9lbmFibGUoJWQpXG4iLCBvbik7CiAgICAgbG9nZigidXNiIGVuYWJsZSAlZCAlZFxuIiwgb24s IF91c2JfbW9kZSk7CiAKLSAgICBpZiAoX3VzYl9tb2RlID09IFVTQl9NT0RFX0FEQikKKyAgICAv KiBBREIgYmluZHMgdGhlIFVEQyBpdHNlbGYsIGFuZCBzbyBkb2VzIHRoZSBVU0ItREFDIHdoaWxl IGl0IGlzIGFjdGl2ZSwKKyAgICAgKiBzbyBsZWF2ZSB0aGUgVURDIGFsb25lIGluIHRob3NlIGNh c2VzLiAqLworICAgIGlmIChfdXNiX21vZGUgPT0gVVNCX01PREVfQURCIHx8IHVzYl9hdWRpb19n ZXRfYWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFJlLWFybSB0aGUgTFVOIG9u IGVhY2ggY29ubmVjdCwgb3RoZXJ3aXNlIHRoZSBkaXNrIGlzIG9ubHkgZXhwb3J0ZWQgdGhlIGZp cnN0IHRpbWUuCkBAIC0xNjQsMzUgKzI2Nyw1MSBAQCB2b2lkIGVuYWJsZV9jaGFyZ2luZyh2b2lk KSB7CiAKICAgICBkaXNhYmxlX21hc3Nfc3RvcmFnZSgpOwogICAgIGRpc2FibGVfYWRiKCk7Cisg ICAgZGlzYWJsZV91c2JfYXVkaW8oKTsKIH0KIAogdm9pZCBlbmFibGVfYWRiKHZvaWQpIHsKICAg ICBsb2dmKCI+Pj4+Pj4+Pj4+Pj4+Pj4+PiBzZXRfYWRiKClcbiIpOwogCi0gICAgLy8gRGlzYWJs ZSBtYXNzIHN0b3JhZ2UgaWYgaXQgd2FzIHJ1bm5pbmcKLSAgICBkaXNhYmxlX21hc3Nfc3RvcmFn ZSgpOwotCi0gICAgLy8gUmVtb3ZlIGFueSBsaW5nZXJpbmcgYWRiIGRhZW1vbiBhbmQgaXRzIHJl c3Bhd25lcgorICAgIC8vIFN0b3AgdGhlIHJlc3Bhd25lciBGSVJTVCBzbyBpdCBjYW4ndCByZWJp bmQgYWRiZCB1bmRlciB1cy4KICAgICBzeXN0ZW0oImtpbGxhbGwgYWRic2VydmVyLnNoIGFkYmQg Mj4vZGV2L251bGwiKTsKIAotICAgIHN5c3RlbSgibWtkaXIgLXAgL3N5cy9rZXJuZWwvY29uZmln L3VzYl9nYWRnZXQvYWRiX2RlbW8vY29uZmlncy9jLjEvc3RyaW5ncy8weDQwOSIpOwotICAgIHN5 c3RlbSgibWtkaXIgLXAgL3N5cy9rZXJuZWwvY29uZmlnL3VzYl9nYWRnZXQvYWRiX2RlbW8vZnVu Y3Rpb25zL2Zmcy5hZGIiKTsKLQotICAgIC8vIFVzZSB0aGUgYWRiIFZJRC9QSUQgc28gdGhlIGhv c3QgcmVjb2duaXNlcyB0aGUgZGV2aWNlCi0gICAgc3lzZnNfc2V0X3N0cmluZygiL3N5cy9rZXJu ZWwvY29uZmlnL3VzYl9nYWRnZXQvYWRiX2RlbW8vaWRWZW5kb3IiLCAiMHgxOGQxIik7Ci0gICAg c3lzZnNfc2V0X3N0cmluZygiL3N5cy9rZXJuZWwvY29uZmlnL3VzYl9nYWRnZXQvYWRiX2RlbW8v aWRQcm9kdWN0IiwgIjB4ZDAwMiIpOworICAgIC8qIERpc2FibGUgbWFzcyBzdG9yYWdlIGFuZCBV U0IgREFDIGlmIHRoZXkgd2VyZSBydW5uaW5nICh1bmJpbmRzIHRoZSBVREMKKyAgICAgKiBhbmQg Y2xlYXJzIGFueSB1YWNfc2EgbGluay9kZXNjcmlwdG9yKS4gKi8KKyAgICBkaXNhYmxlX21hc3Nf c3RvcmFnZSgpOworICAgIGRpc2FibGVfdXNiX2F1ZGlvKCk7CisKKyAgICAvKiBBbHNvIGRyb3Ag dGhlIGFkYiBmdW5jdGlvbiBsaW5rIHNvIHdlIGNvbnRyb2wgdGhlIGxpbmsgb3JkZXIgYmVsb3cK KyAgICAgKiAodWFjX3NhIG11c3QgYmUgbGlua2VkIGJlZm9yZSBhZGIgLS0gc2VlIGFkYl9jb21w b3NlX2RhYygpKS4gKi8KKyAgICBpZiAoYWNjZXNzKFVTQl9HQURHRVRfUEFUSCAiL2NvbmZpZ3Mv Yy4xL2Zmcy5hZGIiLCBGX09LKSA9PSAwKQorICAgICAgICBzeXN0ZW0oInJtICIgVVNCX0dBREdF VF9QQVRIICIvY29uZmlncy9jLjEvZmZzLmFkYiIpOworCisgICAgc3lzdGVtKCJta2RpciAtcCAi IFVTQl9HQURHRVRfUEFUSCAiL2NvbmZpZ3MvYy4xL3N0cmluZ3MvMHg0MDkiKTsKKyAgICBzeXN0 ZW0oIm1rZGlyIC1wICIgVVNCX0dBREdFVF9QQVRIICIvZnVuY3Rpb25zL2Zmcy5hZGIiKTsKKwor ICAgIC8qIENvbXBvc2UgdGhlIFVTQi1EQUMgKHVhY19zYSwgbGlua2VkIGZpcnN0KSBhbG9uZ3Np ZGUgYWRiIHdoZW4gdGhlCisgICAgICogdXNiX2F1ZGlvIHNldHRpbmcgd2FudHMgaXQ7IG90aGVy d2lzZSBwcmVzZW50IHBsYWluIGFkYi4gKi8KKyAgICBib29sIHdpdGhfZGFjID0gYWRiX2NvbXBv c2VfZGFjKCk7CisgICAgaWYgKCF3aXRoX2RhYykgeworICAgICAgICAvLyBVc2UgdGhlIGFkYiBW SUQvUElEIHNvIHRoZSBob3N0IHJlY29nbmlzZXMgdGhlIGRldmljZQorICAgICAgICBzeXNmc19z ZXRfc3RyaW5nKFVTQl9HQURHRVRfUEFUSCAiL2lkVmVuZG9yIiwgIjB4MThkMSIpOworICAgICAg ICBzeXNmc19zZXRfc3RyaW5nKFVTQl9HQURHRVRfUEFUSCAiL2lkUHJvZHVjdCIsICIweGQwMDIi KTsKKyAgICAgICAgc3lzZnNfc2V0X3N0cmluZyhVU0JfR0FER0VUX1BBVEggIi9jb25maWdzL2Mu MS9zdHJpbmdzLzB4NDA5L2NvbmZpZ3VyYXRpb24iLCAiYWRiIik7CisgICAgfQogCi0gICAgLy8g Tm93IHdlJ2xsIG92ZXJyaWRlIGNvbmZpZ3VyYXRpb24gYW5kIE1heFBvd2VyCi0gICAgc3lzZnNf c2V0X3N0cmluZygiL3N5cy9rZXJuZWwvY29uZmlnL3VzYl9nYWRnZXQvYWRiX2RlbW8vY29uZmln cy9jLjEvc3RyaW5ncy8weDQwOS9jb25maWd1cmF0aW9uIiwgImFkYiIpOwotICAgIHN5c2ZzX3Nl dF9pbnQoIi9zeXMva2VybmVsL2NvbmZpZy91c2JfZ2FkZ2V0L2FkYl9kZW1vL2NvbmZpZ3MvYy4x L01heFBvd2VyIiwgMTIwKTsKKyAgICBzeXNmc19zZXRfaW50KFVTQl9HQURHRVRfUEFUSCAiL2Nv bmZpZ3MvYy4xL01heFBvd2VyIiwgMTIwKTsKIAotICAgIC8vIEFuZCBsaW5rIHVwIHRoZSBhZGIg ZnVuY3Rpb24gdG8gdGhlIHVzYiBnYWRnZXQgY29uZmlnCi0gICAgc3lzdGVtKCJsbiAtc2YgL3N5 cy9rZXJuZWwvY29uZmlnL3VzYl9nYWRnZXQvYWRiX2RlbW8vZnVuY3Rpb25zL2Zmcy5hZGIgL3N5 cy9rZXJuZWwvY29uZmlnL3VzYl9nYWRnZXQvYWRiX2RlbW8vY29uZmlncy9jLjEvIik7CisgICAg Ly8gTGluayBhZGIgaW50byB0aGUgY29uZmlnIChhZnRlciB1YWNfc2EsIHNvIGFkYiBpcyB0aGUg bGF0ZXIgaW50ZXJmYWNlKQorICAgIHN5c3RlbSgibG4gLXNmICIgVVNCX0dBREdFVF9QQVRIICIv ZnVuY3Rpb25zL2Zmcy5hZGIgIiBVU0JfR0FER0VUX1BBVEggIi9jb25maWdzL2MuMS8iKTsKIAog ICAgIHN5c3RlbSgibWtkaXIgLXAgL2Rldi91c2ItZmZzL2FkYiIpOwogCiAgICAgLy8gTGV0IHRo ZSB2ZW5kb3IgcmVzcGF3bmVyIG1vdW50IGZ1bmN0aW9uZnMgYW5kIHJ1biBhZGJkLCB3aGljaCBi aW5kcyB0aGUgVURDLgogICAgIHN5c3RlbSgiL3NiaW4vYWRic2VydmVyLnNoIDQ0MCAmIik7CisK KyAgICAvKiB1YWNfc2EgaXMgYm91bmQgYnkgdGhlIHNhbWUgYXV0by1iaW5kOyBzdGFydCBwdW1w aW5nIC9kZXYvdWFjX3NhLiAqLworICAgIGlmICh3aXRoX2RhYykKKyAgICAgICAgdXNiX2RhY19z dGFydCgpOwogfQogCiAKQEAgLTIzMCw4ICszNDksOSBAQCB2b2lkIGRpc2FibGVfYWRiKHZvaWQp IHsKIHZvaWQgZW5hYmxlX21hc3Nfc3RvcmFnZSh2b2lkKSB7CiAgICAgbG9nZigiPj4+Pj4+Pj4+ Pj4+Pj4+Pj4gc2V0X21hc3Nfc3RvcmFnZSgpXG4iKTsKIAotICAgIC8vIERpc2FibGUgYWRiIGlm IGl0J3MgcnVubmluZworICAgIC8qIERpc2FibGUgYWRiIGFuZCBVU0IgREFDIGlmIHRoZXkncmUg cnVubmluZyAqLwogICAgIGRpc2FibGVfYWRiKCk7CisgICAgZGlzYWJsZV91c2JfYXVkaW8oKTsK IAogICAgIHN5c3RlbSgibWtkaXIgLXAgL3N5cy9rZXJuZWwvY29uZmlnL3VzYl9nYWRnZXQvYWRi X2RlbW8vZnVuY3Rpb25zL21hc3Nfc3RvcmFnZS4wL2x1bi4wIik7CiAgICAgc3lzdGVtKCJta2Rp ciAtcCAvc3lzL2tlcm5lbC9jb25maWcvdXNiX2dhZGdldC9hZGJfZGVtby9jb25maWdzL2MuMS9z dHJpbmdzLzB4NDA5Iik7CkBAIC0yNzAsMTggKzM5MCw5NiBAQCB2b2lkIGRpc2FibGVfbWFzc19z dG9yYWdlKHZvaWQpIHsKICAgICB9CiB9CiAKLSNpZiBkZWZpbmVkKEhBVkVfVVNCX0FVRElPKQot dm9pZCBlbmFibGVfdXNiX2F1ZGlvKHZvaWQpIHsKKy8qIFVTQiBEQUMgKFVTQiBBdWRpbyBDbGFz cyBnYWRnZXQpLgorICoKKyAqIFRoZSB2ZW5kb3Iga2VybmVsIHByb3ZpZGVzIGEgVUFDIGZ1bmN0 aW9uICJ1YWNfc2EiOyBidWlsZGluZyBpdCBpbnRvIHRoZQorICogZ2FkZ2V0IGFuZCBiaW5kaW5n IHRoZSBVREMgY3JlYXRlcyAvZGV2L3VhY19zYSwgd2hpY2ggdXNiLWRhYy1oaWJ5LmMgcHVtcHMK KyAqIGludG8gdGhlIFBDTSBtaXhlci4gZW5hYmxlX3VzYl9hdWRpbygpIGlzIHRoZSBzdGFuZGFs b25lIHBhdGggdXNlZCBpbgorICogY2hhcmdlL21hc3Mtc3RvcmFnZSBtb2RlOyBhZGIgbW9kZSBj b21wb3NlcyB1YWNfc2EgYWxvbmdzaWRlIGFkYiBpbgorICogZW5hYmxlX2FkYigpIGluc3RlYWQu ICovCisKK2Jvb2wgZW5hYmxlX3VzYl9hdWRpbyh2b2lkKQoreworICAgIGxvZ2YoIj4+Pj4+Pj4+ Pj4+Pj4+Pj4+IGVuYWJsZV91c2JfYXVkaW8oKVxuIik7CiAKKyAgICAvKiBUaGUgREFDIHB1bXAg ZmVlZHMgdGhlIFBDTSBtaXhlciwgd2hpY2ggaXNuJ3QgdXAgdW50aWwgYXVkaW9faW5pdCgpLCBz bworICAgICAqIGEgREFDIHNldHRpbmcgYXBwbGllZCBhdCBib290IGxhbmRzIHRvbyBlYXJseS4g QmFpbCBiZWZvcmUgdG91Y2hpbmcKKyAgICAgKiBhbnl0aGluZyBzbyB0aGUgY2FsbGVyIGNhbiBy ZXN0b3JlIHRoZSBiYXNlIG1vZGUuICovCisgICAgaWYgKCFwY21faXNfaW5pdGlhbGl6ZWQoKSkK KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLyogVGhlIERBQyBoYW5kcyB0aGUgb3V0cHV0 IHBhdGggdG8gdGhlIGhvc3QncyBQQ007IHN0b3AgbG9jYWwgcGxheWJhY2sKKyAgICAgKiBmaXJz dCAoaXQgY2FuJ3QgcmVzdGFydCB3aGlsZSB0aGUgREFDIGlzIGFjdGl2ZSkuICovCisgICAgYXVk aW9fc3RvcCgpOworCisgICAgLyogU3RhbmRhbG9uZSBEQUM6IHRlYXIgZG93biB0aGUgb3RoZXIg Z2FkZ2V0IGZ1bmN0aW9ucyBmaXJzdC4gKi8KKyAgICBkaXNhYmxlX21hc3Nfc3RvcmFnZSgpOwor ICAgIGRpc2FibGVfYWRiKCk7CisKKyAgICAvKiBCdWlsZCB0aGUgInVhY19zYSIgZnVuY3Rpb246 IHN0ZXJlbywgMTYtYml0LCBjYXB0dXJlIChob3N0LT5kZXZpY2UpLgorICAgICAqIFNldCBhbGwg dGhyZWUgZXhwbGljaXRseTogdGhlIGtlcm5lbCdzIGRlZmF1bHRzIGFyZSAzLzIvNjQwMDAsIHNv IGF0CisgICAgICogbGVhc3QgdGhlIDY0IGtIeiBjYXB0dXJlIHJhdGUgbXVzdCBhbHdheXMgYmUg b3ZlcnJpZGRlbi4gKi8KKyAgICBzeXN0ZW0oIm1rZGlyIC1wICIgVVNCX0dBREdFVF9QQVRIICIv ZnVuY3Rpb25zL3VhY19zYS5hIik7CisgICAgc3lzZnNfc2V0X2ludChVU0JfR0FER0VUX1BBVEgg Ii9mdW5jdGlvbnMvdWFjX3NhLmEvY19jaG1hc2siLCAzKTsKKyAgICBzeXNmc19zZXRfaW50KFVT Ql9HQURHRVRfUEFUSCAiL2Z1bmN0aW9ucy91YWNfc2EuYS9jX3NzaXplIiwgMik7CisgICAgc3lz ZnNfc2V0X2ludChVU0JfR0FER0VUX1BBVEggIi9mdW5jdGlvbnMvdWFjX3NhLmEvY19zcmF0ZSIs IFNBTVBSXzQ4KTsKKworICAgIC8qIFByZXNlbnQgYW4gSUFEIGF1ZGlvIGRldmljZSB3aXRoIHRo ZSBIaUJ5IERBQyBWSUQvUElEIHNvIHRoZSBob3N0CisgICAgICogcmVjb2duaXNlcyBpdCBhcyBh IFVTQiBEQUMuICovCisgICAgc3lzZnNfc2V0X2ludChVU0JfR0FER0VUX1BBVEggIi9iRGV2aWNl Q2xhc3MiLCBVU0JfQ0xBU1NfTUlTQyk7CisgICAgc3lzZnNfc2V0X2ludChVU0JfR0FER0VUX1BB VEggIi9iRGV2aWNlU3ViQ2xhc3MiLCAyKTsKKyAgICBzeXNmc19zZXRfaW50KFVTQl9HQURHRVRf UEFUSCAiL2JEZXZpY2VQcm90b2NvbCIsIDEpOworICAgIHN5c2ZzX3NldF9zdHJpbmcoVVNCX0dB REdFVF9QQVRIICIvaWRWZW5kb3IiLCAiMHgiIFVTQl9WSURfU1RSKTsKKyAgICBzeXNmc19zZXRf c3RyaW5nKFVTQl9HQURHRVRfUEFUSCAiL2lkUHJvZHVjdCIsICIweDAwMDQiKTsKKworICAgIHN5 c3RlbSgibWtkaXIgLXAgIiBVU0JfR0FER0VUX1BBVEggIi9jb25maWdzL2MuMS9zdHJpbmdzLzB4 NDA5Iik7CisgICAgc3lzZnNfc2V0X3N0cmluZyhVU0JfR0FER0VUX1BBVEgKKyAgICAgICAgICAg ICAgICAgICAgICIvY29uZmlncy9jLjEvc3RyaW5ncy8weDQwOS9jb25maWd1cmF0aW9uIiwgInVh YyIpOworICAgIHN5c2ZzX3NldF9pbnQoVVNCX0dBREdFVF9QQVRIICIvY29uZmlncy9jLjEvYm1B dHRyaWJ1dGVzIiwKKyAgICAgICAgICAgICAgICAgIFVTQl9DT05GSUdfQVRUX09ORSB8IFVTQl9D T05GSUdfQVRUX1NFTEZQT1dFUik7CisgICAgc3lzZnNfc2V0X2ludChVU0JfR0FER0VUX1BBVEgg Ii9jb25maWdzL2MuMS9NYXhQb3dlciIsIDEyMCk7CisKKyAgICBzeXN0ZW0oImxuIC1zZiAiIFVT Ql9HQURHRVRfUEFUSCAiL2Z1bmN0aW9ucy91YWNfc2EuYSAiCisgICAgICAgICAgIFVTQl9HQURH RVRfUEFUSCAiL2NvbmZpZ3MvYy4xLyIpOworCisgICAgLyogQmluZCB0aGUgVURDIG91cnNlbHZl cyAtLSBpbiBjaGFyZ2UgbW9kZSB0aGUgdXNiIHRocmVhZCBpcyBwb3dlci1vbmx5LAorICAgICAq IGFuZCB1c2JfZW5hYmxlKCkgYmFpbHMgd2hpbGUgdGhlIERBQyBpcyBhY3RpdmUsIHNvIG5vdGhp bmcgZWxzZSBiaW5kcworICAgICAqIGl0LiBUaGlzIGNyZWF0ZXMgL2Rldi91YWNfc2EuICovCisg ICAgc3lzZnNfc2V0X3N0cmluZyhVU0JfR0FER0VUX1BBVEggIi9VREMiLCAiMTM1MDAwMDAub3Rn X25ldyIpOworCisgICAgcmV0dXJuIHVzYl9kYWNfc3RhcnQoKTsKIH0KIAotdm9pZCBkaXNhYmxl X3VzYl9hdWRpbyh2b2lkKSB7Cit2b2lkIGRpc2FibGVfdXNiX2F1ZGlvKHZvaWQpCit7CisgICAg bG9nZigiPj4+Pj4+Pj4+Pj4+Pj4+Pj4gZGlzYWJsZV91c2JfYXVkaW8oKVxuIik7CisKKyAgICB1 c2JfZGFjX3N0b3AoKTsKKworICAgIC8qIFVuYmluZCB0aGUgVURDIGFuZCB0ZWFyIHRoZSBmdW5j dGlvbiBkb3duIHNvIHRoZSBuZXh0IG1vZGUgc3RhcnRzCisgICAgICogZnJvbSBhIGNsZWFuIGdh ZGdldC4gKi8KKyAgICBpZiAoYWNjZXNzKFVTQl9HQURHRVRfUEFUSCAiL1VEQyIsIEZfT0spID09 IDApCisgICAgICAgIHN5c2ZzX3NldF9zdHJpbmcoVVNCX0dBREdFVF9QQVRIICIvVURDIiwgIlxu Iik7CiAKKyAgICBpZiAoYWNjZXNzKFVTQl9HQURHRVRfUEFUSCAiL2NvbmZpZ3MvYy4xL3VhY19z YS5hIiwgRl9PSykgPT0gMCkKKyAgICAgICAgc3lzdGVtKCJybSAiIFVTQl9HQURHRVRfUEFUSCAi L2NvbmZpZ3MvYy4xL3VhY19zYS5hIik7CisKKyAgICBpZiAoYWNjZXNzKFVTQl9HQURHRVRfUEFU SCAiL2Z1bmN0aW9ucy91YWNfc2EuYSIsIEZfT0spID09IDApCisgICAgICAgIHN5c3RlbSgicm1k aXIgIiBVU0JfR0FER0VUX1BBVEggIi9mdW5jdGlvbnMvdWFjX3NhLmEiKTsKKworICAgIC8qIFJl c3RvcmUgYSBwbGFpbiAobm9uLUlBRCkgZGV2aWNlIGRlc2NyaXB0b3IgYW5kIHRoZSB0YXJnZXQn cyBvd24KKyAgICAgKiBWSUQvUElEIGZvciB0aGUgb3RoZXIgbW9kZXMuICovCisgICAgc3lzZnNf c2V0X2ludChVU0JfR0FER0VUX1BBVEggIi9iRGV2aWNlQ2xhc3MiLCBVU0JfQ0xBU1NfUEVSX0lO VEVSRkFDRSk7CisgICAgc3lzZnNfc2V0X2ludChVU0JfR0FER0VUX1BBVEggIi9iRGV2aWNlU3Vi Q2xhc3MiLCAwKTsKKyAgICBzeXNmc19zZXRfaW50KFVTQl9HQURHRVRfUEFUSCAiL2JEZXZpY2VQ cm90b2NvbCIsIDApOworICAgIHN5c2ZzX3NldF9zdHJpbmcoVVNCX0dBREdFVF9QQVRIICIvaWRW ZW5kb3IiLCAiMHgiIFVTQl9WSURfU1RSKTsKKyAgICBzeXNmc19zZXRfc3RyaW5nKFVTQl9HQURH RVRfUEFUSCAiL2lkUHJvZHVjdCIsICIweCIgVVNCX1BJRF9TVFIpOworCisgICAgaWYgKGFjY2Vz cyhVU0JfR0FER0VUX1BBVEgKKyAgICAgICAgICAgICAgICIvY29uZmlncy9jLjEvc3RyaW5ncy8w eDQwOS9jb25maWd1cmF0aW9uIiwgRl9PSykgPT0gMCkKKyAgICAgICAgc3lzZnNfc2V0X3N0cmlu ZyhVU0JfR0FER0VUX1BBVEgKKyAgICAgICAgICAgICAgICAgICAgICAgICAiL2NvbmZpZ3MvYy4x L3N0cmluZ3MvMHg0MDkvY29uZmlndXJhdGlvbiIsICIiKTsKIH0KLSNlbHNlCi12b2lkIGVuYWJs ZV91c2JfYXVkaW8odm9pZCkge30KLXZvaWQgZGlzYWJsZV91c2JfYXVkaW8odm9pZCkge30KLSNl bmRpZgogCiB2b2lkIHVzYl9pbml0X2RldmljZSh2b2lkKQogewotLSAKcm9ja2JveC1jdnMgbWFp bGluZyBsaXN0CnJvY2tib3gtY3ZzQGxpc3RzLmhheHguc2UKaHR0cHM6Ly9saXN0cy5oYXh4LnNl L21haWxtYW4vbGlzdGluZm8vcm9ja2JveC1jdnMK