From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Nicolas Frayer To: git-commits@fedoraproject.org Subject: [rpms/grub2] rawhide: ieee1275/powerpc: implements fibre channel discovery for ofpathname Date: Fri, 26 Jun 2026 18:05:34 GMT Message-ID: <178249713438.1.13290556367073037944.rpms-grub2-d09439013e18@fedoraproject.org> List-ID: X-Git-Repo: rpms/grub2 X-Git-Branch: rawhide X-Git-Rev: d09439013e18832d91f0e3c24c3c424577f08859 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ3J1YjIKICAgICAgICAgICAgQnJhbmNoIDogcmF3aGlkZQogICAgICAgICAg ICBDb21taXQgOiBkMDk0MzkwMTNlMTg4MzJkOTFmMGUzYzI0YzNjNDI0NTc3ZjA4ODU5CiAgICAg ICAgICAgIEF1dGhvciA6IE5pY29sYXMgRnJheWVyIDxuZnJheWVyQHJlZGhhdC5jb20+CiAgICAg ICAgICAgIERhdGUgICA6IDIwMjYtMDYtMjZUMTE6Mzg6NTErMDI6MDAKICAgICAgICAgICAgU3Rh dHMgIDogKzE1NTgvLTEgaW4gOCBmaWxlKHMpCiAgICAgICAgICAgIFVSTCAgICA6IGh0dHBzOi8v c3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvZ3J1YjIvYy9kMDk0MzkwMTNlMTg4MzJkOTFmMGUz YzI0YzNjNDI0NTc3ZjA4ODU5P2JyYW5jaD1yYXdoaWRlCgogICAgICAgICAgICBMb2c6CiAgICAg ICAgICAgIGllZWUxMjc1L3Bvd2VycGM6IGltcGxlbWVudHMgZmlicmUgY2hhbm5lbCBkaXNjb3Zl cnkgZm9yIG9mcGF0aG5hbWUKClNpZ25lZC1vZmYtYnk6IE5pY29sYXMgRnJheWVyIDxuZnJheWVy QHJlZGhhdC5jb20+CgotLS0KZGlmZiAtLWdpdCBhLzA0MzktaWVlZTEyNzUtcG93ZXJwYy1pbXBs ZW1lbnRzLWZpYnJlLWNoYW5uZWwtZGlzY292ZXJ5LS5wYXRjaCBiLzA0MzktaWVlZTEyNzUtcG93 ZXJwYy1pbXBsZW1lbnRzLWZpYnJlLWNoYW5uZWwtZGlzY292ZXJ5LS5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODQ2YzAyCi0tLSAvZGV2L251bGwKKysrIGIvMDQz OS1pZWVlMTI3NS1wb3dlcnBjLWltcGxlbWVudHMtZmlicmUtY2hhbm5lbC1kaXNjb3ZlcnktLnBh dGNoCkBAIC0wLDAgKzEsMTIwIEBACitGcm9tIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBdm5pc2ggQ2hvdWhh biA8YXZuaXNoQGxpbnV4LmlibS5jb20+CitEYXRlOiBUaHUsIDI1IEp1biAyMDI2IDE4OjIzOjM2 ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGllZWUxMjc1L3Bvd2VycGM6IGltcGxlbWVudHMgZmli cmUgY2hhbm5lbCBkaXNjb3ZlcnkgZm9yCisgb2ZwYXRobmFtZQorCitncnViLW9mcGF0aG5hbWUg ZG9lc24ndCB3b3JrIHdpdGggZmlicmUgY2hhbm5lbCBiZWNhdXNlIHRoZXJlIGlzIG5vCitmdW5j dGlvbiBjdXJyZW50bHkgaW1wbGVtZW50ZWQgZm9yIGl0LgorVGhpcyBwYXRjaCBlbmFibGVzIGl0 IGJ5IHByaXZpZGluZyBhIGZ1bmN0aW9uIHRoYXQgbG9va3MgZm9yIHRoZSBwb3J0CituYW1lLCBi dWlsZGluZyB0aGUgZW50aXJlIHBhdGggZm9yIE9GIGRldmljZXMuCisKK1NpZ25lZC1vZmYtYnk6 IERpZWdvIERvbWluZ29zIDxkaWVnb2RvQGJyLmlibS5jb20+CitTaWduZWQtb2ZmLWJ5OiBBdm5p c2ggQ2hvdWhhbiA8YXZuaXNoQGxpbnV4LmlibS5jb20+CitSZXZpZXdlZC1ieTogTGVvIFNhbmRv dmFsIDxsc2FuZG92YUByZWRoYXQuY29tPgorUmV2aWV3ZWQtYnk6IFN1ZGhha2FyIEt1cHB1c2Ft eSA8c3VkaGFrYXJAbGludXguaWJtLmNvbT4KK1BhcnQtb2Y6IDxodHRwczovL2dpdGxhYi5mcmVl ZGVza3RvcC5vcmcvZ251LWdydWIvZ3J1Yi8tL21lcmdlX3JlcXVlc3RzLzE0Nj4KKy0tLQorIGdy dWItY29yZS9vc2RlcC9saW51eC9vZnBhdGguYyB8IDU4ICsrKysrKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCAy OSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dydWItY29yZS9vc2RlcC9saW51eC9vZnBh dGguYyBiL2dydWItY29yZS9vc2RlcC9saW51eC9vZnBhdGguYworaW5kZXggNzI3NzJjODdhNjZm Li41M2NmMzljZDE3NmQgMTAwNjQ0CistLS0gYS9ncnViLWNvcmUvb3NkZXAvbGludXgvb2ZwYXRo LmMKKysrKyBiL2dydWItY29yZS9vc2RlcC9saW51eC9vZnBhdGguYworQEAgLTM1MSwzNiArMzUx LDM2IEBAIG9mX3BhdGhfb2ZfaWRlKGNvbnN0IGNoYXIgKnN5c19kZXZuYW1lIF9fYXR0cmlidXRl X18oKHVudXNlZCkpLCBjb25zdCBjaGFyICpkZXZpCisgICByZXR1cm4gcmV0OworIH0KKyAKKy0K KysjZGVmaW5lIEJOQU1FX1NJWkUgMTUwCisgc3RhdGljIHZvaWQKKy1vZl9mY19wb3J0X25hbWUo Y29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqc3VicGF0aCwgY2hhciAqcG9ydF9uYW1lKQor K29mX2ZjX3BvcnRfbmFtZSAoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqc3VicGF0aCwg Y2hhciAqcG9ydF9uYW1lKQorIHsKKyAgIGNoYXIgKmJuYW1lLCAqYmFzZXBhdGgsICpwOworICAg aW50IGZkOworIAorLSAgYm5hbWUgPSB4bWFsbG9jKHNpemVvZihjaGFyKSoxNTApOworLSAgYmFz ZXBhdGggPSB4bWFsbG9jKHN0cmxlbihwYXRoKSk7CisrICBibmFtZSA9IHhtYWxsb2MgKHNpemVv ZiAoY2hhcikgKiBCTkFNRV9TSVpFKTsKKysgIGJhc2VwYXRoID0geG1hbGxvYyAoc3RybGVuIChw YXRoKSk7CisgCisgICAvKiBHZW5lcmF0ZSB0aGUgcGF0aCB0byBnZXQgcG9ydCBuYW1lIGluZm9y bWF0aW9uIGZyb20gdGhlIGRyaXZlICovCistICBzdHJuY3B5KGJhc2VwYXRoLHBhdGgsc3VicGF0 aC1wYXRoKTsKKy0gIGJhc2VwYXRoW3N1YnBhdGgtcGF0aC0xXSA9ICdcMCc7CistICBwID0gZ2V0 X2Jhc2VuYW1lKGJhc2VwYXRoKTsKKy0gIHNucHJpbnRmKGJuYW1lLHNpemVvZihjaGFyKSoxNTAs IiVzL2ZjX3RyYW5zcG9ydC8lcy9wb3J0X25hbWUiLGJhc2VwYXRoLHApOworKyAgc3RybmNweSAo YmFzZXBhdGgsIHBhdGgsIHN1YnBhdGgtcGF0aCk7CisrICBiYXNlcGF0aFtzdWJwYXRoLXBhdGgg LSAxXSA9ICdcMCc7CisrICBwID0gZ2V0X2Jhc2VuYW1lIChiYXNlcGF0aCk7CisrICBzbnByaW50 ZiAoYm5hbWUsIHNpemVvZiAoY2hhcikgKiBCTkFNRV9TSVpFLCAiJXMvZmNfdHJhbnNwb3J0LyVz L3BvcnRfbmFtZSIsIGJhc2VwYXRoLCBwKTsKKyAKKyAgIC8qIFJlYWQgdGhlIGluZm9ybWF0aW9u IGZyb20gdGhlIHBvcnQgbmFtZSAqLworICAgZmQgPSBvcGVuIChibmFtZSwgT19SRE9OTFkpOwor ICAgaWYgKGZkIDwgMCkKKyAgICAgZ3J1Yl91dGlsX2Vycm9yIChfKCJjYW5ub3Qgb3BlbiBgJXMn OiAlcyIpLCBibmFtZSwgc3RyZXJyb3IgKGVycm5vKSk7CisgCistICBpZiAocmVhZChmZCxwb3J0 X25hbWUsc2l6ZW9mKGNoYXIpKjE5KSA8IDApCisrICBpZiAocmVhZCAoZmQsIHBvcnRfbmFtZSwg c2l6ZW9mIChjaGFyKSAqMTkpIDwgMCkKKyAgICAgZ3J1Yl91dGlsX2Vycm9yIChfKCJjYW5ub3Qg cmVhZCBgJXMnOiAlcyIpLCBibmFtZSwgc3RyZXJyb3IgKGVycm5vKSk7CisgCistICBzc2NhbmYo cG9ydF9uYW1lLCIweCVzIixwb3J0X25hbWUpOworLSAgCistICBjbG9zZShmZCk7CisrICBzc2Nh bmYgKHBvcnRfbmFtZSwgIjB4JXMiLCBwb3J0X25hbWUpOworIAorLSAgZnJlZShibmFtZSk7Cist ICBmcmVlKGJhc2VwYXRoKTsKKysgIGNsb3NlIChmZCk7CisrCisrICBmcmVlIChibmFtZSk7Cisr ICBmcmVlIChiYXNlcGF0aCk7CisgfQorIAorICNpZmRlZiBfX3NwYXJjX18KK0BAIC02MTAsMTYg KzYxMCwxNiBAQCBvZl9wYXRoX29mX3Njc2koY29uc3QgY2hhciAqc3lzX2Rldm5hbWUgX19hdHRy aWJ1dGVfXygodW51c2VkKSksIGNvbnN0IGNoYXIgKmRldgorICAgZGlnaXRfc3RyaW5nID0gdHJh aWxpbmdfZGlnaXRzIChkZXZpY2UpOworICAgaWYgKHN0cm5jbXAgKG9mX3BhdGgsICIvdmRldmlj ZS8iLCBzaXplb2YgKCIvdmRldmljZS8iKSAtIDEpID09IDApCisgICAgIHsKKy0gICAgICBpZihz dHJzdHIob2ZfcGF0aCwidmZjLWNsaWVudCIpKQorLSAgICAgIHsKKy0JY2hhciAqIHBvcnRfbmFt ZSA9IHhtYWxsb2Moc2l6ZW9mKGNoYXIpKjE3KTsKKy0Jb2ZfZmNfcG9ydF9uYW1lKHN5c2ZzX3Bh dGgsIHAsIHBvcnRfbmFtZSk7CistCQorLQlzbnByaW50ZihkaXNrLHNpemVvZihkaXNrKSwiLyVz QCVzIiwgZGlza19uYW1lLCBwb3J0X25hbWUpOworLQlmcmVlKHBvcnRfbmFtZSk7CistICAgICAg fQorKyAgICAgIGlmIChzdHJzdHIgKG9mX3BhdGgsICJ2ZmMtY2xpZW50IikpCisrICAgICAgICB7 CisrCSAgIGNoYXIgKiBwb3J0X25hbWUgPSB4bWFsbG9jIChzaXplb2YgKGNoYXIpICogMTcpOwor KwkgICBvZl9mY19wb3J0X25hbWUgKHN5c2ZzX3BhdGgsIHAsIHBvcnRfbmFtZSk7CisrCisrICAg ICAgICAgIHNucHJpbnRmIChkaXNrLCBzaXplb2YgKGRpc2spLCAiLyVzQCVzIiwgZGlza19uYW1l LCBwb3J0X25hbWUpOworKwkgICBmcmVlIChwb3J0X25hbWUpOworKyAgICAgICAgfQorICAgICAg IGVsc2UKKy0gICAgICB7CisrICAgICAgICB7CisgICAgICAgdW5zaWduZWQgbG9uZyBpZCA9IDB4 ODAwMCB8ICh0Z3QgPDwgOCkgfCAoYnVzIDw8IDUpIHwgbHVuOworICAgICAgIGlmICgqZGlnaXRf c3RyaW5nID09ICdcMCcpCisgCXsKK0BAIC02MzQsMTIgKzYzNCwxMiBAQCBvZl9wYXRoX29mX3Nj c2koY29uc3QgY2hhciAqc3lzX2Rldm5hbWUgX19hdHRyaWJ1dGVfXygodW51c2VkKSksIGNvbnN0 IGNoYXIgKmRldgorIAkJICAgIi8lc0AlMDRseDAwMDAwMDAwMDAwMDolYyIsIGRpc2tfbmFtZSwg aWQsICdhJyArIChwYXJ0IC0gMSkpOworIAl9CisgCX0KKy0gICAgfSBlbHNlIGlmIChzdHJzdHIo b2ZfcGF0aCwiZmlicmUtY2hhbm5lbCIpfHwoc3Ryc3RyKG9mX3BhdGgsInZmYy1jbGllbnQiKSkp eworLQljaGFyICogcG9ydF9uYW1lID0geG1hbGxvYyhzaXplb2YoY2hhcikqMTcpOworLQlvZl9m Y19wb3J0X25hbWUoc3lzZnNfcGF0aCwgcCwgcG9ydF9uYW1lKTsKKy0JCistCXNucHJpbnRmKGRp c2ssc2l6ZW9mKGRpc2spLCIvJXNAJXMiLCBkaXNrX25hbWUsIHBvcnRfbmFtZSk7CistCWZyZWUo cG9ydF9uYW1lKTsKKysgICAgfSBlbHNlIGlmIChzdHJzdHIgKG9mX3BhdGgsICJmaWJyZS1jaGFu bmVsIikgfHwgKHN0cnN0ciAob2ZfcGF0aCwgInZmYy1jbGllbnQiKSkpeworKyAgICAgICAgY2hh ciAqIHBvcnRfbmFtZSA9IHhtYWxsb2MgKHNpemVvZiAoY2hhcikgKiAxNyk7CisrICAgICAgICBv Zl9mY19wb3J0X25hbWUgKHN5c2ZzX3BhdGgsIHAsIHBvcnRfbmFtZSk7CisrCisrCSBzbnByaW50 ZiAoZGlzaywgc2l6ZW9mIChkaXNrKSwgIi8lc0AlcyIsIGRpc2tfbmFtZSwgcG9ydF9uYW1lKTsK KysJIGZyZWUgKHBvcnRfbmFtZSk7CisgICAgIH0KKyAgIGVsc2UKKyAgICAgewoKZGlmZiAtLWdp dCBhLzA0NDAtaWVlZTEyNzUtaW1wbGVtZW50LUZDUC1tZXRob2RzLWZvci1XV1BOLWFuZC1MVU5z LnBhdGNoIGIvMDQ0MC1pZWVlMTI3NS1pbXBsZW1lbnQtRkNQLW1ldGhvZHMtZm9yLVdXUE4tYW5k LUxVTnMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWY4Yzg3ZQot LS0gL2Rldi9udWxsCisrKyBiLzA0NDAtaWVlZTEyNzUtaW1wbGVtZW50LUZDUC1tZXRob2RzLWZv ci1XV1BOLWFuZC1MVU5zLnBhdGNoCkBAIC0wLDAgKzEsMTQzIEBACitGcm9tIDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitG cm9tOiBBdm5pc2ggQ2hvdWhhbiA8YXZuaXNoQGxpbnV4LmlibS5jb20+CitEYXRlOiBNb24sIDIz IEZlYiAyMDI2IDE5OjE0OjA3ICswNTMwCitTdWJqZWN0OiBbUEFUQ0hdIGllZWUxMjc1OiBpbXBs ZW1lbnQgRkNQIG1ldGhvZHMgZm9yIFdXUE4gYW5kIExVTnMKKworVGhpcyBwYXRjaCBlbmFibGVz IHRoZSBmY3AtdGFyZ2V0cyBhbmQgZmNwLWx1bnMgbWV0aG9kcyB3aGljaCBhcmUKK3Jlc3BvbnNp YmxlIHRvIGdldCBXV1BOcyBhbmQgTFVOcyBmb3IgZmlicmUgY2hhbm5lbCBkZXZpY2VzLgorCitU aG9zZSBtZXRob2RzIGFyZSBzcGVjaWFsbHkgbmVjZXNzYXJ5IGlmIHRoZSBib290IGRpcmVjdG9y eSBhbmQgZ3J1YgoraW5zdGFsbGF0aW9uIGFyZSBpbiBkaWZmZXJlbnQgRkNQIGRpc2tzLCBhbGxv d2luZyB0aGUgZGV2X2l0ZXJhdGUoKQordG8gZmluZCB0aGUgV1dQTnMgYW5kIExVTnMgd2hlbiBj YWxsZWQgYnkgc2VhcmNoZnMudXVpZCB0b29sLgorCitTaWduZWQtb2ZmLWJ5OiBEaWVnbyBEb21p bmdvcyA8ZGllZ29kb0Bici5pYm0uY29tPgorU2lnbmVkLW9mZi1ieTogQXZuaXNoIENob3VoYW4g PGF2bmlzaEBsaW51eC5pYm0uY29tPgorUmV2aWV3ZWQtYnk6IExlbyBTYW5kb3ZhbCA8bHNhbmRv dmFAcmVkaGF0LmNvbT4KK1Jldmlld2VkLWJ5OiBTdWRoYWthciBLdXBwdXNhbXkgPHN1ZGhha2Fy QGxpbnV4LmlibS5jb20+CitQYXJ0LW9mOiA8aHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3Jn L2dudS1ncnViL2dydWIvLS9tZXJnZV9yZXF1ZXN0cy8xNDY+CistLS0KKyBncnViLWNvcmUvZGlz ay9pZWVlMTI3NS9vZmRpc2suYyB8IDExMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgMTEwIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24o LSkKKworZGlmZiAtLWdpdCBhL2dydWItY29yZS9kaXNrL2llZWUxMjc1L29mZGlzay5jIGIvZ3J1 Yi1jb3JlL2Rpc2svaWVlZTEyNzUvb2ZkaXNrLmMKK2luZGV4IDcxMjM3YjI1NjAwMy4uMDQyZjk4 Nzk3NTQ2IDEwMDY0NAorLS0tIGEvZ3J1Yi1jb3JlL2Rpc2svaWVlZTEyNzUvb2ZkaXNrLmMKKysr KyBiL2dydWItY29yZS9kaXNrL2llZWUxMjc1L29mZGlzay5jCitAQCAtMjI0LDcgKzIyNCwxMTYg QEAgZGV2X2l0ZXJhdGVfcmVhbCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqcGF0aCkK KyBzdGF0aWMgdm9pZAorIGRldl9pdGVyYXRlIChjb25zdCBzdHJ1Y3QgZ3J1Yl9pZWVlMTI3NV9k ZXZhbGlhcyAqYWxpYXMpCisgeworLSAgaWYgKGdydWJfc3RyY21wIChhbGlhcy0+dHlwZSwgInZz Y3NpIikgPT0gMCkKKysgIGlmIChncnViX3N0cmNtcCAoYWxpYXMtPnR5cGUsICJmY3AiKSA9PSAw KQorKyAgICB7CisrICAgICAgLyoKKysgICAgICAgKiBJZiB3ZSBhcmUgZGVhbGluZyB3aXRoIGZj cCBkZXZpY2VzLCB3ZSBuZWVkCisrICAgICAgICogdG8gZmluZCB0aGUgV1dQTnMgYW5kIExVTnMg dG8gaXRlcmF0ZSB0aGVtCisrICAgICAgICovCisrICAgICAgZ3J1Yl9pZWVlMTI3NV9paGFuZGxl X3QgaWhhbmRsZTsKKysgICAgICBncnViX3VpbnQ2NF90ICpwdHJfdGFyZ2V0cywgKnB0cl9sdW5z LCBrLCBsOworKyAgICAgIHVuc2lnbmVkIGludCBpLCBqLCBwb3M7CisrICAgICAgY2hhciAqYnVm LCAqYnVmcHRyOworKyAgICAgIHN0cnVjdCBzZXRfZmNwX3RhcmdldHNfYXJncworKyAgICAgIHsK KysgICAgICAgIHN0cnVjdCBncnViX2llZWUxMjc1X2NvbW1vbl9oZHIgY29tbW9uOworKyAgICAg ICAgZ3J1Yl9pZWVlMTI3NV9jZWxsX3QgbWV0aG9kOworKyAgICAgICAgZ3J1Yl9pZWVlMTI3NV9j ZWxsX3QgaWhhbmRsZTsKKysgICAgICAgIGdydWJfaWVlZTEyNzVfY2VsbF90IGNhdGNoX3Jlc3Vs dDsKKysgICAgICAgIGdydWJfaWVlZTEyNzVfY2VsbF90IG5lbnRyaWVzOworKyAgICAgICAgZ3J1 Yl9pZWVlMTI3NV9jZWxsX3QgdGFibGU7CisrICAgICAgfSBhcmdzX3RhcmdldHM7CisrCisrICAg ICAgc3RydWN0IHNldF9mY3BfbHVuc19hcmdzCisrICAgICAgeworKyAgICAgICAgc3RydWN0IGdy dWJfaWVlZTEyNzVfY29tbW9uX2hkciBjb21tb247CisrICAgICAgICBncnViX2llZWUxMjc1X2Nl bGxfdCBtZXRob2Q7CisrICAgICAgICBncnViX2llZWUxMjc1X2NlbGxfdCBpaGFuZGxlOworKyAg ICAgICAgZ3J1Yl9pZWVlMTI3NV9jZWxsX3Qgd3dwbl9oOworKyAgICAgICAgZ3J1Yl9pZWVlMTI3 NV9jZWxsX3Qgd3dwbl9sOworKyAgICAgICAgZ3J1Yl9pZWVlMTI3NV9jZWxsX3QgY2F0Y2hfcmVz dWx0OworKyAgICAgICAgZ3J1Yl9pZWVlMTI3NV9jZWxsX3QgbmVudHJpZXM7CisrICAgICAgICBn cnViX2llZWUxMjc1X2NlbGxfdCB0YWJsZTsKKysgICAgICB9IGFyZ3NfbHVuczsKKysKKysgICAg ICBzdHJ1Y3QgYXJnc19yZXQKKysgICAgICB7CisrICAgICAgICBncnViX3VpbnQ2NF90IGFkZHI7 CisrICAgICAgICBncnViX3VpbnQ2NF90IGxlbjsKKysgICAgICB9OworKworKyAgICAgIGlmIChn cnViX2llZWUxMjc1X29wZW4gKGFsaWFzLT5wYXRoLCAmaWhhbmRsZSkpCisrICAgICAgICB7Cisr ICAgICAgICAgIGdydWJfZHByaW50ZiAoImRpc2siLCAiZmFpbGVkIHRvIG9wZW4gdGhlIGRpc2sg d2hpbGUgaXRlcmF0aW5nIEZDUCBkaXNrIHBhdGg9JXNcbiIsIGFsaWFzLT5wYXRoKTsKKysgICAg ICAgICAgcmV0dXJuOworKyAgICAgICAgfQorKworKyAgICAgIC8qIFNldHVwIHRoZSBmY3AtdGFy Z2V0cyBtZXRob2QgdG8gY2FsbCB2aWEgcGZ3Ki8KKysgICAgICBJTklUX0lFRUUxMjc1X0NPTU1P TiAoJmFyZ3NfdGFyZ2V0cy5jb21tb24sICJjYWxsLW1ldGhvZCIsIDIsIDMpOworKyAgICAgIGFy Z3NfdGFyZ2V0cy5tZXRob2QgPSAoZ3J1Yl9pZWVlMTI3NV9jZWxsX3QpICJmY3AtdGFyZ2V0cyI7 CisrICAgICAgYXJnc190YXJnZXRzLmloYW5kbGUgPSBpaGFuZGxlOworKworKyAgICAgIC8qIFNl dHVwIHRoZSBmY3AtbHVucyBtZXRob2QgdG8gY2FsbCB2aWEgcGZ3ICovCisrICAgICAgSU5JVF9J RUVFMTI3NV9DT01NT04gKCZhcmdzX2x1bnMuY29tbW9uLCAiY2FsbC1tZXRob2QiLCA0LCAzKTsK KysgICAgICBhcmdzX2x1bnMubWV0aG9kID0gKGdydWJfaWVlZTEyNzVfY2VsbF90KSAiZmNwLWx1 bnMiOworKyAgICAgIGFyZ3NfbHVucy5paGFuZGxlID0gaWhhbmRsZTsKKysgICAgICBpZiAoSUVF RTEyNzVfQ0FMTF9FTlRSWV9GTiAoJmFyZ3NfdGFyZ2V0cykgPT0gLTEpCisrICAgICAgICB7Cisr ICAgICAgICAgIGdydWJfZHByaW50ZiAoImRpc2siLCAiZmFpbGVkIHRvIGdldCB0aGUgdGFyZ2V0 cyB3aGlsZSBpdGVyYXRpbmcgRkNQIGRpc2sgcGF0aD0lc1xuIiwgYWxpYXMtPnBhdGgpOworKyAg ICAgICAgICBncnViX2llZWUxMjc1X2Nsb3NlIChpaGFuZGxlKTsKKysgICAgICAgICAgcmV0dXJu OworKyAgICAgICAgfQorKyAgICAgIGJ1ZiA9IGdydWJfbWFsbG9jIChncnViX3N0cmxlbiAoYWxp YXMtPnBhdGgpICsgMzIgKyAzMik7CisrICAgICAgaWYgKCFidWYpCisrICAgICAgICB7CisrICAg ICAgICAgIGdydWJfaWVlZTEyNzVfY2xvc2UgKGloYW5kbGUpOworKyAgICAgICAgICByZXR1cm47 CisrICAgICAgICB9CisrICAgICAgYnVmcHRyID0gZ3J1Yl9zdHBjcHkgKGJ1ZiwgYWxpYXMtPnBh dGgpOworKworKyAgICAgIC8qCisrICAgICAgICogSXRlcmF0ZSBvdmVyIGVudHJpZXMgcmV0dXJu ZWQgYnkgcGZ3LiBFYWNoIGVudHJ5IGNvbnRhaW5zIGEKKysgICAgICAgKiBwb2ludGVyIHRvIHd3 cG4gdGFibGUgYW5kIGhpcyBsZW5ndGguCisrICAgICAgICovCisrICAgICAgc3RydWN0IGFyZ3Nf cmV0ICp0YXJnZXRzX3RhYmxlID0gKHN0cnVjdCBhcmdzX3JldCAqKSAoYXJnc190YXJnZXRzLnRh YmxlKTsKKysgICAgICBmb3IgKGkgPSAwOyBpIDwgYXJnc190YXJnZXRzLm5lbnRyaWVzOyBpKysp CisrICAgICAgICB7CisrICAgICAgICAgIHB0cl90YXJnZXRzID0gKGdydWJfdWludDY0X3QqKSB0 YXJnZXRzX3RhYmxlW2ldLmFkZHI7CisrICAgICAgICAgIC8qIEl0ZXJhdGUgb3ZlciBhbGwgd3dw bnMgaW4gZ2l2ZW4gdGFibGUgKi8KKysgICAgICAgICAgZm9yKGsgPSAwOyBrIDwgdGFyZ2V0c190 YWJsZVtpXS5sZW47IGsrKykKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICBhcmdzX2x1 bnMud3dwbl9sID0gKGdydWJfaWVlZTEyNzVfY2VsbF90KSAoKnB0cl90YXJnZXRzKTsKKysgICAg ICAgICAgICAgIGFyZ3NfbHVucy53d3BuX2ggPSAoZ3J1Yl9pZWVlMTI3NV9jZWxsX3QpICgqcHRy X3RhcmdldHMgPj4gMzIpOworKyAgICAgICAgICAgICAgcG9zID0gZ3J1Yl9zbnByaW50ZiAoYnVm cHRyLCAzMiwgIi9kaXNrQCUiIFBSSXhHUlVCX1VJTlQ2NF9ULAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBncnViX2dldF91bmFsaWduZWQ2NCAoKnB0cl90YXJnZXRzKyspKTsK KysgICAgICAgICAgICAgIC8qIEdldCB0aGUgbHVucyBmb3IgZ2l2ZW4gd3dwbiB0YXJnZXQgKi8K KysgICAgICAgICAgICAgIGlmIChJRUVFMTI3NV9DQUxMX0VOVFJZX0ZOICgmYXJnc19sdW5zKSA9 PSAtMSkKKysgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgIGdydWJfZHByaW50 ZiAoImRpc2siLCAiZmFpbGVkIHRvIGdldCB0aGUgTFVOUyB3aGlsZSBpdGVyYXRpbmcgRkNQIGRp c2sgcGF0aD0lc1xuIiwgYnVmKTsKKysgICAgICAgICAgICAgICAgICBncnViX2llZWUxMjc1X2Ns b3NlIChpaGFuZGxlKTsKKysgICAgICAgICAgICAgICAgICBncnViX2ZyZWUgKGJ1Zik7CisrICAg ICAgICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAg ICBzdHJ1Y3QgYXJnc19yZXQgKmx1bnNfdGFibGUgPSAoc3RydWN0IGFyZ3NfcmV0ICopIChhcmdz X2x1bnMudGFibGUpOworKworKyAgICAgICAgICAgICAgLyogSXRlcmF0ZSBvdmVyIGFsbCBMVU5z ICovCisrICAgICAgICAgICAgICBmb3IoaiA9IDA7IGogPCBhcmdzX2x1bnMubmVudHJpZXM7IGor KykKKysgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgIHB0cl9sdW5zID0gKGdy dWJfdWludDY0X3QqKSBsdW5zX3RhYmxlW2pdLmFkZHI7CisrICAgICAgICAgICAgICAgICAgZm9y KGwgPSAwOyBsIDwgbHVuc190YWJsZVtqXS5sZW47IGwrKykKKysgICAgICAgICAgICAgICAgICAg IHsKKysgICAgICAgICAgICAgICAgICAgICAgZ3J1Yl9zbnByaW50ZiAoJmJ1ZnB0cltwb3NdLCAz MCwgIiwlIiBQUkl4R1JVQl9VSU5UNjRfVCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBncnViX2dldF91bmFsaWduZWQ2NCAoKnB0cl9sdW5zKyspKTsKKysgICAgICAgICAg ICAgICAgICAgICAgZGV2X2l0ZXJhdGVfcmVhbCAoYnVmLCBidWYpOworKyAgICAgICAgICAgICAg ICAgICAgfQorKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQor KyAgICAgIGdydWJfaWVlZTEyNzVfY2xvc2UgKGloYW5kbGUpOworKyAgICAgIGdydWJfZnJlZSAo YnVmKTsKKysgICAgICByZXR1cm47CisrICAgIH0KKysgIGVsc2UgaWYgKGdydWJfc3RyY21wIChh bGlhcy0+dHlwZSwgInZzY3NpIikgPT0gMCkKKyAgICAgeworICAgICAgIHN0YXRpYyBncnViX2ll ZWUxMjc1X2loYW5kbGVfdCBpaGFuZGxlOworICAgICAgIHN0cnVjdCBzZXRfY29sb3JfYXJncwoK ZGlmZiAtLWdpdCBhLzA0NDEtaWVlZTEyNzUtY2hhbmdlLXRoZS1sb2dpYy1vZi1pZWVlMTI3NV9n ZXRfZGV2YXJncy5wYXRjaCBiLzA0NDEtaWVlZTEyNzUtY2hhbmdlLXRoZS1sb2dpYy1vZi1pZWVl MTI3NV9nZXRfZGV2YXJncy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li45NDlhNTkwCi0tLSAvZGV2L251bGwKKysrIGIvMDQ0MS1pZWVlMTI3NS1jaGFuZ2UtdGhlLWxv Z2ljLW9mLWllZWUxMjc1X2dldF9kZXZhcmdzLnBhdGNoCkBAIC0wLDAgKzEsNjMgQEAKK0Zyb20g MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKK0Zyb206IEF2bmlzaCBDaG91aGFuIDxhdm5pc2hAbGludXguaWJtLmNvbT4KK0Rh dGU6IE1vbiwgMjMgRmViIDIwMjYgMTk6MTQ6MDggKzA1MzAKK1N1YmplY3Q6IFtQQVRDSF0gaWVl ZTEyNzU6IGNoYW5nZSB0aGUgbG9naWMgb2YgaWVlZTEyNzVfZ2V0X2RldmFyZ3MoKQorCitVc3Vh bGx5IGdydWIgd2lsbCBwYXJzZSB0aGUgUEZXIGFyZ3VtZW50cyBieSBzZWFyY2hpbmcgZm9yIHRo ZSBmaXJzdCBvY2N1cmVuY2Ugb2YgdGhlIGNoYXJhY3RlciAnOicuCitIb3dldmVyLCB3ZSBjYW4g aGF2ZSB0aGlzIGNoYXIgbW9yZSB0aGFuIG9uY2Ugb24gTlFOLgorVGhpcyBwYXRjaCBjaGFuZ2Vz IHRoZSBsb2dpYyB0byBmaW5kIHRoZSBsYXN0IG9jY3VyZW5jZSBvZiB0aGlzIGNoYXIgc28gd2Ug Y2FuIGdldCB0aGUgcHJvcGVyIHZhbHVlcworZm9yIE5WTWVvRkMKKworU2lnbmVkLW9mZi1ieTog RGllZ28gRG9taW5nb3MgPGRpZWdvZG9AYnIuaWJtLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEF2bmlz aCBDaG91aGFuIDxhdm5pc2hAbGludXguaWJtLmNvbT4KK1Jldmlld2VkLWJ5OiBMZW8gU2FuZG92 YWwgPGxzYW5kb3ZhQHJlZGhhdC5jb20+CitSZXZpZXdlZC1ieTogU3VkaGFrYXIgS3VwcHVzYW15 IDxzdWRoYWthckBsaW51eC5pYm0uY29tPgorUGFydC1vZjogPGh0dHBzOi8vZ2l0bGFiLmZyZWVk ZXNrdG9wLm9yZy9nbnUtZ3J1Yi9ncnViLy0vbWVyZ2VfcmVxdWVzdHMvMTQ2PgorLS0tCisgZ3J1 Yi1jb3JlL2tlcm4vaWVlZTEyNzUvb3BlbmZ3LmMgfCAxOSArKysrKysrKysrKysrKysrKy0tCisg MSBmaWxlIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYg LS1naXQgYS9ncnViLWNvcmUva2Vybi9pZWVlMTI3NS9vcGVuZncuYyBiL2dydWItY29yZS9rZXJu L2llZWUxMjc1L29wZW5mdy5jCitpbmRleCA2NTYxNjI1NGUwMjEuLjBjOTA0Nzc2OTg2MCAxMDA2 NDQKKy0tLSBhL2dydWItY29yZS9rZXJuL2llZWUxMjc1L29wZW5mdy5jCisrKysgYi9ncnViLWNv cmUva2Vybi9pZWVlMTI3NS9vcGVuZncuYworQEAgLTMyNCw3ICszMjQsNyBAQCBncnViX2NsYWlt bWFwIChncnViX2FkZHJfdCBhZGRyLCBncnViX3NpemVfdCBzaXplKQorIHN0YXRpYyBjaGFyICoK KyBncnViX2llZWUxMjc1X2dldF9kZXZhcmdzIChjb25zdCBjaGFyICpwYXRoKQorIHsKKy0gIGNo YXIgKmNvbG9uID0gZ3J1Yl9zdHJjaHIgKHBhdGgsICc6Jyk7CisrICBjaGFyICpjb2xvbiA9IGdy dWJfc3RycmNociAocGF0aCwgJzonKTsKKyAKKyAgIGlmICghIGNvbG9uKQorICAgICByZXR1cm4g MDsKK0BAIC0zMzksNiArMzM5LDIxIEBAIGdydWJfaWVlZTEyNzVfZ2V0X2Rldm5hbWUgKGNvbnN0 IGNoYXIgKnBhdGgpCisgICBjaGFyICpjb2xvbiA9IGdydWJfc3RyY2hyIChwYXRoLCAnOicpOwor ICAgaW50IHBhdGhsZW4gPSBncnViX3N0cmxlbiAocGF0aCk7CisgICBzdHJ1Y3QgZ3J1Yl9pZWVl MTI3NV9kZXZhbGlhcyBjdXJhbGlhczsKKysKKysgIC8qIENoZWNrIHNvbWUgc3BlY2lhbCBjYXNl cyAqLworKyAgaWYgKGdydWJfc3Ryc3RyIChwYXRoLCAibnZtZS1vZiIpKQorKyAgICB7CisrICAg ICAgY2hhciAqbmFtZXNwYWNlX3NwbGl0ID0gZ3J1Yl9zdHJzdHIgKHBhdGgsICIvbmFtZXNwYWNl QCIpOworKyAgICAgIGlmIChuYW1lc3BhY2Vfc3BsaXQpCisrICAgICAgICB7CisrICAgICAgICAg IGNvbG9uID0gZ3J1Yl9zdHJjaHIgKG5hbWVzcGFjZV9zcGxpdCwgJzonKTsKKysgICAgICAgIH0K KysgICAgICBlbHNlCisrICAgICAgICB7CisrICAgICAgICAgIGNvbG9uID0gTlVMTDsKKysgICAg ICAgIH0KKysgICAgfQorKworICAgaWYgKGNvbG9uKQorICAgICBwYXRobGVuID0gKGludCkoY29s b24gLSBwYXRoKTsKKyAKK0BAIC01NzksNyArNTk0LDcgQEAgZ3J1Yl9pZWVlMTI3NV9nZXRfYm9v dF9kZXYgKHZvaWQpCisgICAgICAgcmV0dXJuIE5VTEw7CisgICAgIH0KKyAKKy0gIGJvb3RwYXRo ID0gKGNoYXIgKikgZ3J1Yl9tYWxsb2MgKChncnViX3NpemVfdCkgYm9vdHBhdGhfc2l6ZSArIDY0 KTsKKysgIGJvb3RwYXRoID0gKGNoYXIgKikgZ3J1Yl9tYWxsb2MgKChncnViX3NpemVfdCkgYm9v dHBhdGhfc2l6ZSArIDY0ICsgMjU2KTsKKyAgIGlmICghIGJvb3RwYXRoKQorICAgICB7CisgICAg ICAgZ3J1Yl9wcmludF9lcnJvciAoKTsKCmRpZmYgLS1naXQgYS8wNDQyLWllZWUxMjc1LW9mcGF0 aC1lbmFibGUtTlZNZW9GLWxvZ2ljYWwtZGV2aWNlLXRyYW5zbGEucGF0Y2ggYi8wNDQyLWllZWUx Mjc1LW9mcGF0aC1lbmFibGUtTlZNZW9GLWxvZ2ljYWwtZGV2aWNlLXRyYW5zbGEucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFiODExYgotLS0gL2Rldi9udWxsCisr KyBiLzA0NDItaWVlZTEyNzUtb2ZwYXRoLWVuYWJsZS1OVk1lb0YtbG9naWNhbC1kZXZpY2UtdHJh bnNsYS5wYXRjaApAQCAtMCwwICsxLDU0NyBAQAorRnJvbSAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQXZuaXNo IENob3VoYW4gPGF2bmlzaEBsaW51eC5pYm0uY29tPgorRGF0ZTogTW9uLCAyMyBGZWIgMjAyNiAx OToxNDoxMCArMDUzMAorU3ViamVjdDogW1BBVENIXSBpZWVlMTI3NTogb2ZwYXRoIGVuYWJsZSBO Vk1lb0YgbG9naWNhbCBkZXZpY2UgdHJhbnNsYXRlCisKK1RoaXMgcGF0Y2ggYWRkcyBjb2RlIHRv IGVuYWJsZSB0aGUgdHJhbnNsYXRpb24gb2YgbG9naWNhbCBkZXZpY2VzIHRvIHRoZSBvZiBOVk1l b0ZDIHBhdGhzLgorCitTaWduZWQtb2ZmLWJ5OiBEaWVnbyBEb21pbmdvcyA8ZGllZ29kb0Bici5p Ym0uY29tPgorU2lnbmVkLW9mZi1ieTogQXZuaXNoIENob3VoYW4gPGF2bmlzaEBsaW51eC5pYm0u Y29tPgorU2lnbmVkLW9mZi1ieTogTWljaGFlbCBDaGFuZyA8bWNoYW5nQHN1c2UuY29tPgorUmV2 aWV3ZWQtYnk6IExlbyBTYW5kb3ZhbCA8bHNhbmRvdmFAcmVkaGF0LmNvbT4KK1Jldmlld2VkLWJ5 OiBTdWRoYWthciBLdXBwdXNhbXkgPHN1ZGhha2FyQGxpbnV4LmlibS5jb20+CitQYXJ0LW9mOiA8 aHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2dudS1ncnViL2dydWIvLS9tZXJnZV9yZXF1 ZXN0cy8xNDY+CistLS0KKyBncnViLWNvcmUvb3NkZXAvbGludXgvb2ZwYXRoLmMgfCA0MzEgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KKyBpbmNsdWRlL2dydWIvdXRp bC9vZnBhdGguaCAgICAgfCAgMjggKysrCisgMiBmaWxlcyBjaGFuZ2VkLCA0NTAgaW5zZXJ0aW9u cygrKSwgOSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dydWItY29yZS9vc2RlcC9saW51 eC9vZnBhdGguYyBiL2dydWItY29yZS9vc2RlcC9saW51eC9vZnBhdGguYworaW5kZXggNTNjZjM5 Y2QxNzZkLi45NGJmYThlMjY4ZGMgMTAwNjQ0CistLS0gYS9ncnViLWNvcmUvb3NkZXAvbGludXgv b2ZwYXRoLmMKKysrKyBiL2dydWItY29yZS9vc2RlcC9saW51eC9vZnBhdGguYworQEAgLTEzNyw3 ICsxMzcsNyBAQCB0cmltX25ld2xpbmUgKGNoYXIgKnBhdGgpCisgICAgICplbmQtLSA9ICdcMCc7 CisgfQorIAorLSNkZWZpbmUgTUFYX0RJU0tfQ0FUICAgIDY0CisrI2RlZmluZSBNQVhfRElTS19D QVQgICAgNTEyCisgCisgc3RhdGljIGNoYXIgKgorIGZpbmRfb2JwcGF0aCAoY29uc3QgY2hhciAq c3lzZnNfcGF0aF9vcmlnKQorQEAgLTMxMyw2ICszMTMsOTEgQEAgZ2V0X2Jhc2VuYW1lKGNoYXIg KnApCisgICByZXR1cm4gcmV0OworIH0KKyAKKytpbnQKKythZGRfZmlsZW5hbWVfdG9fcGlsZSAo Y2hhciAqZmlsZW5hbWUsIHN0cnVjdCBvZnBhdGhfZmlsZXNfbGlzdF9yb290KiByb290KQorK3sK KysgIHN0cnVjdCBvZnBhdGhfZmlsZXNfbGlzdF9ub2RlKiBmaWxlOworKworKyAgZmlsZSA9IG1h bGxvYyAoc2l6ZW9mIChzdHJ1Y3Qgb2ZwYXRoX2ZpbGVzX2xpc3Rfbm9kZSkpOworKyAgaWYgKCFm aWxlKQorKyAgICByZXR1cm4gLTE7CisrCisrICBmaWxlLT5maWxlbmFtZSA9IG1hbGxvYyAoc2l6 ZW9mIChjaGFyKSAqIDEwMjQpOworKyAgaWYgKCFmaWxlLT5maWxlbmFtZSkKKysgICAgeworKyAg ICAgIGZyZWUgKGZpbGUpOworKyAgICAgIHJldHVybiAtMTsKKysgICAgfQorKworKyAgZ3J1Yl9z dHJjcHkgKGZpbGUtPmZpbGVuYW1lLCBmaWxlbmFtZSk7CisrICBpZiAocm9vdC0+Zmlyc3QgPT0g TlVMTCkKKysgICAgeworKyAgICAgIHJvb3QtPml0ZW1zID0gMTsKKysgICAgICByb290LT5maXJz dCA9IGZpbGU7CisrICAgICAgZmlsZS0+bmV4dCA9IE5VTEw7CisrICAgIH0KKysgIGVsc2UKKysg ICAgeworKyAgICAgIHJvb3QtPml0ZW1zKys7CisrICAgICAgZmlsZS0+bmV4dCA9IHJvb3QtPmZp cnN0OworKyAgICAgIHJvb3QtPmZpcnN0ID0gZmlsZTsKKysgICAgfQorKworKyAgcmV0dXJuIDA7 CisrfQorKworK3ZvaWQKKytmaW5kX2ZpbGUgKGNoYXIqIGZpbGVuYW1lLCBjaGFyKiBkaXJlY3Rv cnksIHN0cnVjdCBvZnBhdGhfZmlsZXNfbGlzdF9yb290KiByb290LCBpbnQgbWF4X2RlcHRoLCBp bnQgZGVwdGgpCisreworKyAgc3RydWN0IGRpcmVudCAqZXA7CisrICBzdHJ1Y3Qgc3RhdCBzdGF0 YnVmOworKyAgRElSICpkcDsKKysgIGludCByZXRfdmFsPTA7CisrICBjaGFyKiBmdWxsX3BhdGg7 CisrCisrICBpZiAoZGVwdGggPiBtYXhfZGVwdGgpCisrICAgIHsKKysgICAgICByZXR1cm47Cisr ICAgIH0KKysKKysgIGlmICgoZHAgPSBvcGVuZGlyIChkaXJlY3RvcnkpKSA9PSBOVUxMKQorKyAg ICB7CisrICAgICAgcmV0dXJuOworKyAgICB9CisrCisrICBmdWxsX3BhdGggPSBtYWxsb2MgKDEw MjQgKiBzaXplb2YgKGNoYXIpKTsKKysgIGlmICghZnVsbF9wYXRoKQorKyAgICByZXR1cm47Cisr CisrICB3aGlsZSAoKGVwID0gcmVhZGRpcihkcCkpICE9IE5VTEwpCisrICAgIHsKKysgICAgICBz bnByaW50ZiAoZnVsbF9wYXRoLCAxMDI0LCAiJXMvJXMiLCBkaXJlY3RvcnksIGVwLT5kX25hbWUp OworKyAgICAgIGxzdGF0IChmdWxsX3BhdGgsICZzdGF0YnVmKTsKKysKKysgICAgICBpZiAoU19J U0xOSyAoc3RhdGJ1Zi5zdF9tb2RlKSkKKysgICAgICAgIHsKKysgICAgICAgICAgY29udGludWU7 CisrICAgICAgICB9CisrCisrICAgICAgaWYgKCFzdHJjbXAgKGVwLT5kX25hbWUsICIuIikgfHwg IXN0cmNtcChlcC0+ZF9uYW1lLCAiLi4iKSkKKysgICAgICAgIHsKKysgICAgICAgICAgY29udGlu dWU7CisrICAgICAgICB9CisrCisrICAgICAgaWYgKCFzdHJjbXAgKGVwLT5kX25hbWUsIGZpbGVu YW1lKSkKKysgICAgICAgIHsKKysgICAgICAgICAgcmV0X3ZhbCA9IGFkZF9maWxlbmFtZV90b19w aWxlIChmdWxsX3BhdGgsIHJvb3QpOworKyAgICAgICAgICBpZiAocmV0X3ZhbCA9PSAtMSkKKysg ICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgIH0KKysKKysgICAgICBmaW5kX2ZpbGUgKGZp bGVuYW1lLCBmdWxsX3BhdGgsIHJvb3QsIG1heF9kZXB0aCwgZGVwdGgrMSk7CisrICAgIH0KKysK KysgIGZyZWUgKGZ1bGxfcGF0aCk7CisrICBjbG9zZWRpciAoZHApOworK30KKysKKyBzdGF0aWMg Y2hhciAqCisgb2ZfcGF0aF9vZl92ZGlzayhjb25zdCBjaGFyICpzeXNfZGV2bmFtZSBfX2F0dHJp YnV0ZV9fKCh1bnVzZWQpKSwKKyAJCSBjb25zdCBjaGFyICpkZXZpY2UsCitAQCAtMzgzLDcgKzQ2 OCwyNTcgQEAgb2ZfZmNfcG9ydF9uYW1lIChjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICpz dWJwYXRoLCBjaGFyICpwb3J0X25hbWUpCisgICBmcmVlIChiYXNlcGF0aCk7CisgfQorIAorLSNp ZmRlZiBfX3NwYXJjX18KKyt2b2lkCisrZnJlZV9vZnBhdGhfZmlsZXNfbGlzdCAoc3RydWN0IG9m cGF0aF9maWxlc19saXN0X3Jvb3QqIHJvb3QpCisreworKyAgc3RydWN0IG9mcGF0aF9maWxlc19s aXN0X25vZGUqIG5vZGUgPSByb290LT5maXJzdDsKKysgIHN0cnVjdCBvZnBhdGhfZmlsZXNfbGlz dF9ub2RlKiBuZXh0OworKworKyAgd2hpbGUgKG5vZGUhPU5VTEwpCisrICAgIHsKKysgICAgICBu ZXh0ID0gbm9kZS0+bmV4dDsKKysgICAgICBmcmVlIChub2RlLT5maWxlbmFtZSk7CisrICAgICAg ZnJlZSAobm9kZSk7CisrICAgICAgbm9kZSA9IG5leHQ7CisrICAgIH0KKysKKysgIGZyZWUgKHJv b3QpOworKyAgcmV0dXJuOworK30KKysKKytjaGFyKgorK29mX2ZpbmRfZmNfaG9zdCAoY2hhciog aG9zdF93d3BuKQorK3sKKysgIEZJTEUqIGZwOworKyAgY2hhciAqYnVmOworKyAgY2hhciAqcmV0 X3ZhbDsKKysgIGNoYXIgcG9ydG5hbWVfZmlsZW5hbWVbc2l6ZW9mICgicG9ydF9uYW1lIildID0g InBvcnRfbmFtZSI7CisrICBjaGFyIGRldmljZXNfcGF0aFtzaXplb2YgKCIvc3lzL2RldmljZXMi KV0gPSAiL3N5cy9kZXZpY2VzIjsKKysgIHN0cnVjdCBvZnBhdGhfZmlsZXNfbGlzdF9yb290KiBw b3J0bmFtZXNfZmlsZV9saXN0OworKyAgc3RydWN0IG9mcGF0aF9maWxlc19saXN0X25vZGUqIG5v ZGU7CisrCisrICByZXRfdmFsID0gbWFsbG9jIChzaXplb2YgKGNoYXIpICogMTAyNCk7CisrICBp ZiAoIXJldF92YWwpCisrICAgIHJldHVybiBOVUxMOworKworKyAgcG9ydG5hbWVzX2ZpbGVfbGlz dCA9IG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3Qgb2ZwYXRoX2ZpbGVzX2xpc3Rfcm9vdCkpOworKyAg aWYgKCFwb3J0bmFtZXNfZmlsZV9saXN0KQorKyAgICB7CisrICAgICAgZnJlZSAocmV0X3ZhbCk7 CisrICAgICAgcmV0dXJuIE5VTEw7CisrICAgIH0KKysKKysgIHBvcnRuYW1lc19maWxlX2xpc3Qt Pml0ZW1zID0gMDsKKysgIHBvcnRuYW1lc19maWxlX2xpc3QtPmZpcnN0ID0gTlVMTDsKKysgIGZp bmRfZmlsZSAocG9ydG5hbWVfZmlsZW5hbWUsIGRldmljZXNfcGF0aCwgcG9ydG5hbWVzX2ZpbGVf bGlzdCwgMTAsIDApOworKyAgbm9kZSA9IHBvcnRuYW1lc19maWxlX2xpc3QtPmZpcnN0OworKwor KyAgd2hpbGUgKG5vZGUgIT0gTlVMTCkKKysgICAgeworKyAgICAgIGZwID0gZm9wZW4obm9kZS0+ ZmlsZW5hbWUsICJyIik7CisrICAgICAgaWYgKCFmcCkKKysgICAgICAgIHsKKysgICAgICAgICAg bm9kZSA9IG5vZGUtPm5leHQ7CisrICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgfQorKwor KyAgICAgIGJ1ZiA9IG1hbGxvYyAoc2l6ZW9mIChjaGFyKSAqIDUxMik7CisrICAgICAgaWYgKCFi dWYpCisrICAgICAgICBicmVhazsKKysKKysgICAgICBmc2NhbmYgKGZwLCAiJXMiLCBidWYpOwor KyAgICAgIGZjbG9zZSAoZnApOworKworKyAgICAgIGlmICgoc3RyY21wIChidWYsIGhvc3Rfd3dw bikgPT0gMCkgJiYgZ3J1Yl9zdHJzdHIgKG5vZGUtPmZpbGVuYW1lLCAiZmNfaG9zdCIpKQorKyAg ICAgICAgeworKyAgICAgICAgICBmcmVlIChidWYpOworKyAgICAgICAgICBncnViX3N0cmNweSAo cmV0X3ZhbCwgbm9kZS0+ZmlsZW5hbWUpOworKyAgICAgICAgICBmcmVlX29mcGF0aF9maWxlc19s aXN0IChwb3J0bmFtZXNfZmlsZV9saXN0KTsKKysgICAgICAgICAgcmV0dXJuIHJldF92YWw7Cisr ICAgICAgICB9CisrCisrICAgICAgbm9kZSA9IG5vZGUtPm5leHQ7CisrICAgICAgZnJlZSAoYnVm KTsKKysgICAgfQorKyAgZnJlZV9vZnBhdGhfZmlsZXNfbGlzdCAocG9ydG5hbWVzX2ZpbGVfbGlz dCk7CisrICBmcmVlIChyZXRfdmFsKTsKKysgIHJldHVybiBOVUxMOworK30KKysKKytpbnQKKytv Zl9wYXRoX2dldF9udm1lb2ZfYWRhcHRlcl9pbmZvIChjaGFyKiBzeXNmc19wYXRoLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBvZnBhdGhfbnZtZW9mX2luZm8qIG52 bWVvZl9pbmZvKQorK3sKKysgIEZJTEUgKmZwOworKyAgY2hhciAqYnVmLCAqYnVmMiwgKmJ1ZjM7 CisrCisrICBudm1lb2ZfaW5mby0+aG9zdF93d3BuID0gbWFsbG9jIChzaXplb2YgKGNoYXIpICog MjU2KTsKKysgIG52bWVvZl9pbmZvLT50YXJnZXRfd3dwbiA9IG1hbGxvYyAoc2l6ZW9mIChjaGFy KSAqIDI1Nik7CisrICBudm1lb2ZfaW5mby0+bnFuID0gbWFsbG9jIChzaXplb2YgKGNoYXIpICog MjU2KTsKKysKKysgIGlmIChudm1lb2ZfaW5mby0+aG9zdF93d3BuID09IE5VTEwgfHwgbnZtZW9m X2luZm8tPnRhcmdldF93d3BuID09IE5VTEwgfHwgbnZtZW9mX2luZm8tPm5xbiA9PSBOVUxMKQor KyAgICB7CisrICAgICAgZnJlZSAobnZtZW9mX2luZm8tPmhvc3Rfd3dwbik7CisrICAgICAgZnJl ZSAobnZtZW9mX2luZm8tPnRhcmdldF93d3BuKTsKKysgICAgICBmcmVlIChudm1lb2ZfaW5mby0+ bnFuKTsKKysgICAgICByZXR1cm4gLTE7CisrICAgIH0KKysKKysgIGJ1ZiA9IG1hbGxvYyAoc2l6 ZW9mIChjaGFyKSAqIDUxMik7CisrICBpZiAoIWJ1ZikKKysgICAgeworKyAgICAgIGZyZWUgKG52 bWVvZl9pbmZvLT5ob3N0X3d3cG4pOworKyAgICAgIGZyZWUgKG52bWVvZl9pbmZvLT50YXJnZXRf d3dwbik7CisrICAgICAgZnJlZSAobnZtZW9mX2luZm8tPm5xbik7CisrICAgICAgcmV0dXJuIC0x OworKyAgICB9CisrCisrICBzbnByaW50ZiAoYnVmLCA1MTIsICIlcy9zdWJzeXNucW4iLCBzeXNm c19wYXRoKTsKKysgIGlmICghIChmcCA9IGZvcGVuIChidWYsICJyIikpIHx8CisrICAgICAgZnNj YW5mIChmcCwgIiVzIiwgbnZtZW9mX2luZm8tPm5xbikgIT0gMSkKKysgICAgeworKyAgICAgIGlm IChmcCkKKysJZmNsb3NlIChmcCk7CisrICAgICAgZnJlZSAobnZtZW9mX2luZm8tPmhvc3Rfd3dw bik7CisrICAgICAgZnJlZSAobnZtZW9mX2luZm8tPnRhcmdldF93d3BuKTsKKysgICAgICBmcmVl IChudm1lb2ZfaW5mby0+bnFuKTsKKysgICAgICBmcmVlIChidWYpOworKyAgICAgIHJldHVybiAt MTsKKysgICAgfQorKyAgZmNsb3NlIChmcCk7CisrCisrICBzbnByaW50ZiAoYnVmLCA1MTIsICIl cy9jbnRsaWQiLCBzeXNmc19wYXRoKTsKKysgIGlmICghIChmcCA9IGZvcGVuIChidWYsICJyIikp IHx8CisrICAgICAgZnNjYW5mIChmcCwgIiV1IiwgJihudm1lb2ZfaW5mby0+Y250bGlkKSkgIT0g MSkKKysgICAgeworKyAgICAgIGlmIChmcCkKKysJZmNsb3NlIChmcCk7CisrICAgICAgZnJlZSAo bnZtZW9mX2luZm8tPmhvc3Rfd3dwbik7CisrICAgICAgZnJlZSAobnZtZW9mX2luZm8tPnRhcmdl dF93d3BuKTsKKysgICAgICBmcmVlIChudm1lb2ZfaW5mby0+bnFuKTsKKysgICAgICBmcmVlIChi dWYpOworKyAgICAgIHJldHVybiAtMTsKKysgICAgfQorKyAgZmNsb3NlIChmcCk7CisrCisrICBz bnByaW50ZiAoYnVmLCA1MTIsICIlcy9hZGRyZXNzIiwgc3lzZnNfcGF0aCk7CisrICBidWYyID0g TlVMTDsKKysgIGZwID0gTlVMTDsKKysgIGlmICghIChidWYyID0gbWFsbG9jIChzaXplb2YgKGNo YXIpICogNTEyKSkgfHwKKysgICAgICAhIChmcCA9IGZvcGVuIChidWYsICJyIikpIHx8CisrICAg ICAgZnNjYW5mIChmcCwgIiVzIiwgYnVmMikgIT0gMSkKKysgICB7CisrICAgICAgaWYgKGZwKQor KwlmY2xvc2UgKGZwKTsKKysgICAgICBmcmVlIChudm1lb2ZfaW5mby0+aG9zdF93d3BuKTsKKysg ICAgICBmcmVlIChudm1lb2ZfaW5mby0+dGFyZ2V0X3d3cG4pOworKyAgICAgIGZyZWUgKG52bWVv Zl9pbmZvLT5ucW4pOworKyAgICAgIGZyZWUgKGJ1Zik7CisrICAgICAgZnJlZSAoYnVmMik7Cisr ICAgICAgcmV0dXJuIC0xOworKyAgICB9CisrCisrICBmY2xvc2UgKGZwKTsKKysKKysgIGlmICgh IChidWYzID0gc3RycmNociAoYnVmMiwgJy0nKSkpCisrICAgIHsKKysgICAgICBmcmVlIChudm1l b2ZfaW5mby0+aG9zdF93d3BuKTsKKysgICAgICBmcmVlIChudm1lb2ZfaW5mby0+dGFyZ2V0X3d3 cG4pOworKyAgICAgZnJlZSAobnZtZW9mX2luZm8tPm5xbik7CisrICAgICAgZnJlZSAoYnVmKTsK KysgICAgICBmcmVlIChidWYyKTsKKysgICAgICByZXR1cm4gLTE7CisrICAgIH0KKysgIGdydWJf bWVtY3B5IChudm1lb2ZfaW5mby0+aG9zdF93d3BuLCBidWYzICsgMSwgMjU2KTsKKysgIGlmICgh IChidWYzID0gc3RyY2hyIChidWYyLCAnLScpKQl8fAorKyAgICAgICEgKGJ1ZjMgPSBzdHJjaHIg KGJ1ZjMgKyAxLCAnLScpKSB8fAorKyAgICAgICEgKGJ1ZjMgPSBzdHJjaHIgKGJ1ZjMgKyAxLCAn eCcpKSkKKysgICAgeworKyAgICAgIGZyZWUgKG52bWVvZl9pbmZvLT5ob3N0X3d3cG4pOworKyAg ICAgIGZyZWUgKG52bWVvZl9pbmZvLT50YXJnZXRfd3dwbik7CisrICAgICAgZnJlZSAobnZtZW9m X2luZm8tPm5xbik7CisrICAgICAgZnJlZSAoYnVmKTsKKysgICAgICBmcmVlIChidWYyKTsKKysg ICAgICByZXR1cm4gLTE7CisrICAgIH0KKysgIGdydWJfbWVtY3B5IChudm1lb2ZfaW5mby0+dGFy Z2V0X3d3cG4sIGJ1ZjMgKyAxLCAyNTYpOworKyAgYnVmMyA9IHN0cmNociAobnZtZW9mX2luZm8t PnRhcmdldF93d3BuLCAnLCcpOworKyAgaWYgKGJ1ZjMpCisrICAgICpidWYzID0gJ1wwJzsKKysg IGZyZWUgKGJ1Zik7CisrICBmcmVlIChidWYyKTsKKysgIHJldHVybiAwOworK30KKysKKysjZGVm aW5lIE9GUEFUSF9NQVhfVUlOVF9IRVhfRElHSVRTIDgKKysjZGVmaW5lIE9GUEFUSF9NQVhfSU5U X0RJR0lUUyAxMAorKworK3N0YXRpYyBjaGFyICoKKytvZl9wYXRoX2dldF9udm1lX2NvbnRyb2xs ZXJfbmFtZV9ub2RlIChjb25zdCBjaGFyKiBkZXZuYW1lKQorK3sKKysgIGNoYXIgKmNvbnRyb2xs ZXJfbm9kZSwgKmVuZDsKKysKKysgIGNvbnRyb2xsZXJfbm9kZSA9IHhzdHJkdXAgKGRldm5hbWUp OworKyAgZW5kID0gZ3J1Yl9zdHJjaHIgKGNvbnRyb2xsZXJfbm9kZSArIDEsICduJyk7CisrICBp ZiAoZW5kICE9IE5VTEwpCisrICAgIHsKKysgICAgICAqZW5kID0gJ1wwJzsKKysgICAgfQorKwor KyAgcmV0dXJuIGNvbnRyb2xsZXJfbm9kZTsKKyt9CisrCisrdW5zaWduZWQgaW50Cisrb2ZfcGF0 aF9nZXRfbnZtZV9uc2lkIChjb25zdCBjaGFyKiBkZXZuYW1lKQorK3sKKysgIHVuc2lnbmVkIGlu dCBuc2lkOworKyAgY2hhciAqc3lzZnNfcGF0aCwgKmJ1ZjsKKysgIEZJTEUgKmZwOworKworKyAg YnVmID0gbWFsbG9jIChzaXplb2YoY2hhcikgKiA1MTIpOworKyAgaWYgKCFidWYpCisrICAgIHJl dHVybiAwOworKworKyAgc3lzZnNfcGF0aCA9IGJsb2NrX2RldmljZV9nZXRfc3lzZnNfcGF0aF9h bmRfbGluayAoZGV2bmFtZSk7CisrICBzbnByaW50ZiAoYnVmLCA1MTIsICIlcy8lcy9uc2lkIiwg c3lzZnNfcGF0aCwgZGV2bmFtZSk7CisrICBmcCA9IGZvcGVuKGJ1ZiwgInIiKTsKKysgIGlmICgh ZnApCisrICAgIHsKKysgICAgICBmcmVlIChzeXNmc19wYXRoKTsKKysgICAgICBmcmVlIChidWYp OworKyAgICAgIHJldHVybiAwOworKyAgICB9CisrCisrICBmc2NhbmYgKGZwLCAiJXUiLCAmKG5z aWQpKTsKKysgIGZjbG9zZSAoZnApOworKworKyAgZnJlZSAoc3lzZnNfcGF0aCk7CisrICBmcmVl IChidWYpOworKyAgcmV0dXJuIG5zaWQ7CisrfQorKworK3N0YXRpYyBjaGFyICoKKytudm1lX2dl dF9zeXNwYXRoIChjb25zdCBjaGFyICpudm1lZGV2KQorK3sKKysgIGNoYXIgKnN5c2ZzX3BhdGg7 CisrCisrICBzeXNmc19wYXRoID0gYmxvY2tfZGV2aWNlX2dldF9zeXNmc19wYXRoX2FuZF9saW5r IChudm1lZGV2KTsKKysgIGlmIChzdHJzdHIgKHN5c2ZzX3BhdGgsICJudm1lLXN1YnN5c3RlbSIp KQorKyAgICB7CisrICAgICAgY2hhciAqY29udHJvbGxlcl9ub2RlID0gb2ZfcGF0aF9nZXRfbnZt ZV9jb250cm9sbGVyX25hbWVfbm9kZSAobnZtZWRldik7CisrICAgICAgY2hhciAqYnVmID0geG1h bGxvYyAoc3RybGVuIChzeXNmc19wYXRoKSArIHN0cmxlbiAoIi8iKSArIHN0cmxlbiAoY29udHJv bGxlcl9ub2RlKSArIDEpOworKyAgICAgIHN0cmNweSAoYnVmLCBzeXNmc19wYXRoKTsKKysgICAg ICBzdHJjYXQgKGJ1ZiwgIi8iKTsKKysgICAgICBzdHJjYXQgKGJ1ZiwgY29udHJvbGxlcl9ub2Rl KTsKKysgICAgICBmcmVlIChzeXNmc19wYXRoKTsKKysgICAgICBmcmVlIChjb250cm9sbGVyX25v ZGUpOworKyAgICAgIHN5c2ZzX3BhdGggPSB4cmVhbHBhdGggKGJ1Zik7CisrICAgICAgZnJlZSAo YnVmKTsKKysgICAgfQorKworKyAgcmV0dXJuIHN5c2ZzX3BhdGg7CisrfQorKworIHN0YXRpYyBj aGFyICoKKyBvZl9wYXRoX29mX252bWUoY29uc3QgY2hhciAqc3lzX2Rldm5hbWUgX19hdHRyaWJ1 dGVfXygodW51c2VkKSksCisgCSAgICAgICAgY29uc3QgY2hhciAqZGV2aWNlLAorQEAgLTM5Miw2 ICs3MjcsOCBAQCBvZl9wYXRoX29mX252bWUoY29uc3QgY2hhciAqc3lzX2Rldm5hbWUgX19hdHRy aWJ1dGVfXygodW51c2VkKSksCisgeworICAgY2hhciAqc3lzZnNfcGF0aCwgKm9mX3BhdGgsIGRp c2tbTUFYX0RJU0tfQ0FUXTsKKyAgIGNvbnN0IGNoYXIgKmRpZ2l0X3N0cmluZywgKnBhcnRfZW5k OworKyAgaW50IGNoYXJzX3dyaXR0ZW4sIHJldF92YWw7CisrICBzdHJ1Y3Qgb2ZwYXRoX252bWVv Zl9pbmZvKiBudm1lb2ZfaW5mbzsKKyAKKyAgIGRpZ2l0X3N0cmluZyA9IHRyYWlsaW5nX2RpZ2l0 cyAoZGV2aWNlKTsKKyAgIHBhcnRfZW5kID0gZGV2aWNlbm9kZSArIHN0cmxlbiAoZGV2aWNlbm9k ZSkgLSAxOworQEAgLTQxMSwxNSArNzQ4LDk0IEBAIG9mX3BhdGhfb2ZfbnZtZShjb25zdCBjaGFy ICpzeXNfZGV2bmFtZSBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSwKKyAgICAgICAvKiBSZW1vdmUg dGhlIHAuICovCisgICAgICAgKmVuZCA9ICdcMCc7CisgICAgICAgc3NjYW5mIChkaWdpdF9zdHJp bmcsICIlZCIsICZwYXJ0KTsKKy0gICAgICBzbnByaW50ZiAoZGlzaywgc2l6ZW9mIChkaXNrKSwg Ii9kaXNrQDE6JWMiLCAnYScgKyAocGFydCAtIDEpKTsKKy0gICAgICBzeXNmc19wYXRoID0gYmxv Y2tfZGV2aWNlX2dldF9zeXNmc19wYXRoX2FuZF9saW5rIChudm1lZGV2KTsKKysgICAgICBzeXNm c19wYXRoID0gbnZtZV9nZXRfc3lzcGF0aCAobnZtZWRldik7CisrCisrICAgICAgLyogSWYgaXMg YSBOVk1lb0YgKi8KKysgICAgICBpZiAoc3Ryc3RyIChzeXNmc19wYXRoLCAibnZtZS1mYWJyaWNz IikpCisrICAgICAgICB7CisrICAgICAgICAgIG52bWVvZl9pbmZvID0gbWFsbG9jIChzaXplb2Yg KHN0cnVjdCBvZnBhdGhfbnZtZW9mX2luZm8pKTsKKysgICAgICAgICAgaWYgKCFudm1lb2ZfaW5m bykKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICBmcmVlIChudm1lZGV2KTsKKysgICAg ICAgICAgICAgIHJldHVybiBOVUxMOworKyAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgcmV0 X3ZhbCA9IG9mX3BhdGhfZ2V0X252bWVvZl9hZGFwdGVyX2luZm8gKHN5c2ZzX3BhdGgsIG52bWVv Zl9pbmZvKTsKKysgICAgICAgICAgaWYgKHJldF92YWwgPT0gLTEpCisrICAgICAgICAgICAgewor KyAgICAgICAgICAgICAgZnJlZSAobnZtZWRldik7CisrICAgICAgICAgICAgICBmcmVlIChudm1l b2ZfaW5mbyk7CisrICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKysgICAgICAgICAgICB9Cisr CisrICAgICAgICAgIGZyZWUgKHN5c2ZzX3BhdGgpOworKyAgICAgICAgICBzeXNmc19wYXRoID0g b2ZfZmluZF9mY19ob3N0IChudm1lb2ZfaW5mby0+aG9zdF93d3BuKTsKKysgICAgICAgICAgaWYg KCFzeXNmc19wYXRoKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgIGZyZWUgKG52bWVk ZXYpOworKyAgICAgICAgICAgICAgZnJlZSAobnZtZW9mX2luZm8tPmhvc3Rfd3dwbik7CisrICAg ICAgICAgICAgICBmcmVlIChudm1lb2ZfaW5mby0+dGFyZ2V0X3d3cG4pOworKyAgICAgICAgICAg ICAgZnJlZSAobnZtZW9mX2luZm8tPm5xbik7CisrICAgICAgICAgICAgICBmcmVlIChudm1lb2Zf aW5mbyk7CisrICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKysgICAgICAgICAgICB9CisrCisr ICAgICAgICAgIGNoYXJzX3dyaXR0ZW4gPSBzbnByaW50ZiAoZGlzayxzaXplb2YoZGlzayksICIv bnZtZS1vZi9jb250cm9sbGVyQCVzLCV4Om5xbj0lcyIsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbnZtZW9mX2luZm8tPnRhcmdldF93d3BuLDB4ZmZmZiwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudm1lb2ZfaW5mby0+bnFuKTsKKysgICAgICAg ICAgdW5zaWduZWQgaW50IG5zaWQgPSBvZl9wYXRoX2dldF9udm1lX25zaWQgKG52bWVkZXYpOwor KyAgICAgICAgICBpZiAobnNpZCkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICBzbnBy aW50ZiAoZGlzaytjaGFyc193cml0dGVuLCBzaXplb2YoIi9uYW1lc3BhY2VAIikgKyBPRlBBVEhf TUFYX1VJTlRfSEVYX0RJR0lUUyArIE9GUEFUSF9NQVhfSU5UX0RJR0lUUywKKysgICAgICAgICAg ICAgICAgICAgICAgICAiL25hbWVzcGFjZUAleDolZCIsIG5zaWQsIHBhcnQpOworKyAgICAgICAg ICAgIH0KKysgICAgICAgICAgZnJlZSAobnZtZW9mX2luZm8pOworKyAgICAgICAgfQorKyAgICAg IGVsc2UKKysgICAgICAgIHsKKysgICAgICAgICAgc25wcmludGYgKGRpc2ssIHNpemVvZiAoZGlz ayksICIvZGlza0AxOiVjIiwgJ2EnICsgKHBhcnQgLSAxKSk7CisrICAgICAgICB9CisgICAgICAg ZnJlZSAobnZtZWRldik7CisgICAgIH0KKyAgIGVsc2UKKyAgICAgeworICAgICAgIC8qIFdlIGRv IG5vdCBoYXZlIHRoZSBwYXJpdGlvbi4gKi8KKy0gICAgICBzbnByaW50ZiAoZGlzaywgc2l6ZW9m IChkaXNrKSwgIi9kaXNrQDEiKTsKKy0gICAgICBzeXNmc19wYXRoID0gYmxvY2tfZGV2aWNlX2dl dF9zeXNmc19wYXRoX2FuZF9saW5rIChkZXZpY2UpOworKyAgICAgIHN5c2ZzX3BhdGggPSBudm1l X2dldF9zeXNwYXRoIChkZXZpY2UpOworKyAgICAgIGlmIChzdHJzdHIgKHN5c2ZzX3BhdGgsICJu dm1lLWZhYnJpY3MiKSkKKysgICAgICAgIHsKKysgICAgICAgICAgbnZtZW9mX2luZm8gPSBtYWxs b2MgKHNpemVvZiAoc3RydWN0IG9mcGF0aF9udm1lb2ZfaW5mbykpOworKyAgICAgICAgICBpZiAo IW52bWVvZl9pbmZvKQorKyAgICAgICAgICAgIHJldHVybiBOVUxMOworKworKyAgICAgICAgICBy ZXRfdmFsID0gb2ZfcGF0aF9nZXRfbnZtZW9mX2FkYXB0ZXJfaW5mbyAoc3lzZnNfcGF0aCwgbnZt ZW9mX2luZm8pOworKyAgICAgICAgICBpZiAocmV0X3ZhbCA9PSAtMSkKKysgICAgICAgICAgICB7 CisrICAgICAgICAgICAgICBmcmVlIChudm1lb2ZfaW5mbyk7CisrICAgICAgICAgICAgICByZXR1 cm4gTlVMTDsKKysgICAgICAgICAgICB9CisrCisrICAgICAgICAgIHN5c2ZzX3BhdGggPSBvZl9m aW5kX2ZjX2hvc3QgKG52bWVvZl9pbmZvLT5ob3N0X3d3cG4pOworKyAgICAgICAgICBpZiAoIXN5 c2ZzX3BhdGgpCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgZnJlZSAobnZtZW9mX2lu Zm8pOworKyAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisrICAgICAgICAgICAgfQorKworKyAg ICAgICAgICBjaGFyc193cml0dGVuID0gc25wcmludGYgKGRpc2ssc2l6ZW9mKGRpc2spLCAiL252 bWUtb2YvY29udHJvbGxlckAlcywleDpucW49JXMiLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG52bWVvZl9pbmZvLT50YXJnZXRfd3dwbiwgMHhmZmZmLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG52bWVvZl9pbmZvLT5ucW4pOworKyAgICAgICAg ICB1bnNpZ25lZCBpbnQgbnNpZCA9IG9mX3BhdGhfZ2V0X252bWVfbnNpZCAoZGV2aWNlKTsKKysg ICAgICAgICAgaWYgKG5zaWQpCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgc25wcmlu dGYgKGRpc2srY2hhcnNfd3JpdHRlbixzaXplb2YoIi9uYW1lc3BhY2VAIikgKyBzaXplb2YoY2hh cikgKiBPRlBBVEhfTUFYX1VJTlRfSEVYX0RJR0lUUywKKysgICAgICAgICAgICAgICAgICAgICAg ICAiL25hbWVzcGFjZUAleCIsIG5zaWQpOworKyAgICAgICAgICAgIH0KKysgICAgICAgICAgZnJl ZSAobnZtZW9mX2luZm8pOworKyAgICAgICAgfQorKyAgICAgIGVsc2UKKysgICAgICAgIHsKKysg ICAgICAgICAgc25wcmludGYgKGRpc2ssIHNpemVvZiAoZGlzayksICIvZGlza0AxIik7CisrICAg ICAgICB9CisgICAgIH0KKyAKKyAgIG9mX3BhdGggPSBmaW5kX29icHBhdGggKHN5c2ZzX3BhdGgp OworQEAgLTQzMCw3ICs4NDYsNiBAQCBvZl9wYXRoX29mX252bWUoY29uc3QgY2hhciAqc3lzX2Rl dm5hbWUgX19hdHRyaWJ1dGVfXygodW51c2VkKSksCisgICBmcmVlIChzeXNmc19wYXRoKTsKKyAg IHJldHVybiBvZl9wYXRoOworIH0KKy0jZW5kaWYKKyAKKyBzdGF0aWMgaW50CisgdmVuZG9yX2lz X0FUQShjb25zdCBjaGFyICpwYXRoKQorQEAgLTg0MSwxMSArMTI1Niw5IEBAIGdydWJfdXRpbF9k ZXZuYW1lX3RvX29mcGF0aCAoY29uc3QgY2hhciAqc3lzX2Rldm5hbWUpCisgICAgIC8qIEFsbCB0 aGUgbW9kZWxzIEkndmUgc2VlbiBoYXZlIGEgZGV2YWxpYXMgImZsb3BweSIuCisgICAgICAgIE5l dyBtb2RlbHMgaGF2ZSBubyBmbG9wcHkgYXQgYWxsLiAqLworICAgICBvZnBhdGggPSB4c3RyZHVw ICgiZmxvcHB5Iik7CistI2lmZGVmIF9fc3BhcmNfXworICAgZWxzZSBpZiAoZGV2aWNlWzBdID09 ICduJyAmJiBkZXZpY2VbMV0gPT0gJ3YnICYmIGRldmljZVsyXSA9PSAnbScKKyAgICAgICAgICAg ICYmIGRldmljZVszXSA9PSAnZScpCisgICAgIG9mcGF0aCA9IG9mX3BhdGhfb2ZfbnZtZSAobmFt ZV9idWYsIGRldmljZSwgZGV2bm9kZSwgZGV2aWNlbm9kZSk7CistI2VuZGlmCisgICBlbHNlCisg ICAgIHsKKyAgICAgICBncnViX3V0aWxfd2FybiAoXygidW5rbm93biBkZXZpY2UgdHlwZSAlcyIp LCBkZXZpY2UpOworZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ3J1Yi91dGlsL29mcGF0aC5oIGIvaW5j bHVkZS9ncnViL3V0aWwvb2ZwYXRoLmgKK2luZGV4IGI0M2M1MjNjYjI2Ny4uN2FiMzc3YzdjYzQz IDEwMDY0NAorLS0tIGEvaW5jbHVkZS9ncnViL3V0aWwvb2ZwYXRoLmgKKysrKyBiL2luY2x1ZGUv Z3J1Yi91dGlsL29mcGF0aC5oCitAQCAtMyw0ICszLDMyIEBACisgCisgY2hhciAqZ3J1Yl91dGls X2Rldm5hbWVfdG9fb2ZwYXRoIChjb25zdCBjaGFyICpkZXZuYW1lKTsKKyAKKytzdHJ1Y3Qgb2Zw YXRoX2ZpbGVzX2xpc3Rfbm9kZQorK3sKKysgIGNoYXIqIGZpbGVuYW1lOworKyAgc3RydWN0IG9m cGF0aF9maWxlc19saXN0X25vZGUqIG5leHQ7CisrfTsKKysKKytzdHJ1Y3Qgb2ZwYXRoX2ZpbGVz X2xpc3Rfcm9vdAorK3sKKysgIGludCBpdGVtczsKKysgIHN0cnVjdCBvZnBhdGhfZmlsZXNfbGlz dF9ub2RlKiBmaXJzdDsKKyt9OworKworK3N0cnVjdCBvZnBhdGhfbnZtZW9mX2luZm8KKyt7Cisr ICBjaGFyKiBob3N0X3d3cG47CisrICBjaGFyKiB0YXJnZXRfd3dwbjsKKysgIGNoYXIqIG5xbjsK KysgIGludCBjbnRsaWQ7CisrICBpbnQgbnNpZDsKKyt9OworKworK2ludCBvZl9wYXRoX2dldF9u dm1lb2ZfYWRhcHRlcl9pbmZvIChjaGFyKiBzeXNmc19wYXRoLCBzdHJ1Y3Qgb2ZwYXRoX252bWVv Zl9pbmZvKiBudm1lb2ZfaW5mbyk7CisrdW5zaWduZWQgaW50IG9mX3BhdGhfZ2V0X252bWVfbnNp ZCAoY29uc3QgY2hhciogZGV2bmFtZSk7CisraW50IGFkZF9maWxlbmFtZV90b19waWxlIChjaGFy ICpmaWxlbmFtZSwgc3RydWN0IG9mcGF0aF9maWxlc19saXN0X3Jvb3QqIHJvb3QpOworK3ZvaWQg ZmluZF9maWxlIChjaGFyKiBmaWxlbmFtZSwgY2hhciogZGlyZWN0b3J5LCBzdHJ1Y3Qgb2ZwYXRo X2ZpbGVzX2xpc3Rfcm9vdCogcm9vdCwgaW50IG1heF9kZXB0aCwgaW50IGRlcHRoKTsKKytjaGFy KiBvZl9maW5kX2ZjX2hvc3QgKGNoYXIqIGhvc3Rfd3dwbik7Cisrdm9pZCBmcmVlX29mcGF0aF9m aWxlc19saXN0IChzdHJ1Y3Qgb2ZwYXRoX2ZpbGVzX2xpc3Rfcm9vdCogcm9vdCk7CisrCisgI2Vu ZGlmIC8qICEgR1JVQl9PRlBBVEhfTUFDSElORV9VVElMX0hFQURFUiAqLwoKZGlmZiAtLWdpdCBh LzA0NDMtaWVlZTEyNzUtc3VwcG9ydC1hZGRlZC1mb3ItbXVsdGlwbGUtbnZtZS1ib290cGF0aHMu cGF0Y2ggYi8wNDQzLWllZWUxMjc1LXN1cHBvcnQtYWRkZWQtZm9yLW11bHRpcGxlLW52bWUtYm9v dHBhdGhzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2YzY4ZTUK LS0tIC9kZXYvbnVsbAorKysgYi8wNDQzLWllZWUxMjc1LXN1cHBvcnQtYWRkZWQtZm9yLW11bHRp cGxlLW52bWUtYm9vdHBhdGhzLnBhdGNoCkBAIC0wLDAgKzEsMjE4IEBACitGcm9tIDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CitGcm9tOiBBdm5pc2ggQ2hvdWhhbiA8YXZuaXNoQGxpbnV4LmlibS5jb20+CitEYXRlOiBNb24s IDIzIEZlYiAyMDI2IDE5OjE0OjExICswNTMwCitTdWJqZWN0OiBbUEFUQ0hdIGllZWUxMjc1OiBz dXBwb3J0IGFkZGVkIGZvciBtdWx0aXBsZSBudm1lIGJvb3RwYXRocworCitUaGlzIHBhdGNoIHNl dHMgbXVwbHRpcGxlIE5WTWUgYm9vdC1kZXZpY2VzIGZvciBtb3JlIHJvYnVzdCBib290LgorU2Nl bmFyaW8gd2hlcmUgTlZNZSBtdWx0aXBhdGhzIGFyZSBhdmFpbGFibGUsIGFsbCB0aGUgYXZhaWxh YmxlIGJvb3RwYXRocyAoTWF4IDUpCit3aWxsIGJlIGFkZGVkIGFzIHRoZSBib290LWRldmljZS4K KworU2lnbmVkLW9mZi1ieTogQXZuaXNoIENob3VoYW4gPGF2bmlzaEBsaW51eC5pYm0uY29tPgor UmV2aWV3ZWQtYnk6IExlbyBTYW5kb3ZhbCA8bHNhbmRvdmFAcmVkaGF0LmNvbT4KK1Jldmlld2Vk LWJ5OiBTdWRoYWthciBLdXBwdXNhbXkgPHN1ZGhha2FyQGxpbnV4LmlibS5jb20+CitQYXJ0LW9m OiA8aHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2dudS1ncnViL2dydWIvLS9tZXJnZV9y ZXF1ZXN0cy8xNDY+CistLS0KKyBncnViLWNvcmUvb3NkZXAvbGludXgvb2ZwYXRoLmMgIHwgICA0 ICstCisgZ3J1Yi1jb3JlL29zZGVwL3VuaXgvcGxhdGZvcm0uYyB8IDEyMiArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKystCisgaW5jbHVkZS9ncnViL3V0aWwvaW5zdGFsbC5o ICAgICB8ICAgMyArCisgaW5jbHVkZS9ncnViL3V0aWwvb2ZwYXRoLmggICAgICB8ICAgNCArKwor IDQgZmlsZXMgY2hhbmdlZCwgMTMwIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2Rp ZmYgLS1naXQgYS9ncnViLWNvcmUvb3NkZXAvbGludXgvb2ZwYXRoLmMgYi9ncnViLWNvcmUvb3Nk ZXAvbGludXgvb2ZwYXRoLmMKK2luZGV4IDk0YmZhOGUyNjhkYy4uODI1MmZkMzhiMzJhIDEwMDY0 NAorLS0tIGEvZ3J1Yi1jb3JlL29zZGVwL2xpbnV4L29mcGF0aC5jCisrKysgYi9ncnViLWNvcmUv b3NkZXAvbGludXgvb2ZwYXRoLmMKK0BAIC0yMDksNyArMjA5LDcgQEAgZmluZF9vYnBwYXRoIChj b25zdCBjaGFyICpzeXNmc19wYXRoX29yaWcpCisgICAgIH0KKyB9CisgCistc3RhdGljIGNoYXIg KgorK2NoYXIgKgorIHhyZWFscGF0aCAoY29uc3QgY2hhciAqaW4pCisgeworICAgY2hhciAqb3V0 OworQEAgLTY5Nyw3ICs2OTcsNyBAQCBvZl9wYXRoX2dldF9udm1lX25zaWQgKGNvbnN0IGNoYXIq IGRldm5hbWUpCisgICByZXR1cm4gbnNpZDsKKyB9CisgCistc3RhdGljIGNoYXIgKgorK2NoYXIg KgorIG52bWVfZ2V0X3N5c3BhdGggKGNvbnN0IGNoYXIgKm52bWVkZXYpCisgeworICAgY2hhciAq c3lzZnNfcGF0aDsKK2RpZmYgLS1naXQgYS9ncnViLWNvcmUvb3NkZXAvdW5peC9wbGF0Zm9ybS5j IGIvZ3J1Yi1jb3JlL29zZGVwL3VuaXgvcGxhdGZvcm0uYworaW5kZXggZGU3MTIyMTFjZjA5Li4y ZWRhMDJiZjVmMjAgMTAwNjQ0CistLS0gYS9ncnViLWNvcmUvb3NkZXAvdW5peC9wbGF0Zm9ybS5j CisrKysgYi9ncnViLWNvcmUvb3NkZXAvdW5peC9wbGF0Zm9ybS5jCitAQCAtMjgsNiArMjgsMTAg QEAKKyAjaW5jbHVkZSA8ZGlyZW50Lmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRl IDxlcnJuby5oPgorKyNpbmNsdWRlIDxncnViL3V0aWwvb2ZwYXRoLmg+CisrI2luY2x1ZGUgPHN0 ZGJvb2wuaD4KKysKKysjZGVmaW5lIEJPT1RERVZfQlVGRkVSICAxMDAwCisgCisgc3RhdGljIGNo YXIgKgorIGdldF9vZnBhdGhuYW1lIChjb25zdCBjaGFyICpkZXYpCitAQCAtMTc2LDYgKzE4MCwx MTEgQEAgZ3J1Yl9pbnN0YWxsX3JlZ2lzdGVyX2VmaSAoZ3J1Yl9kZXZpY2VfdCBlZmlkaXJfZ3J1 Yl9kZXYsCisgICByZXR1cm4gcmV0OworIH0KKyAKKysKKytjaGFyICoKKythZGRfbXVsdGlwbGVf bnZtZV9ib290ZGV2aWNlcyAoY29uc3QgY2hhciAqaW5zdGFsbF9kZXZpY2UpCisreworKyAgY2hh ciAqc3lzZnNfcGF0aCwgKm52bWVfbnMsICpwdHIsICpub25fc3BsaXR0ZXJfcGF0aDsKKysgIHVu c2lnbmVkIGludCBuc2lkOworKyAgY2hhciAqbXVsdGlwYXRoX2Jvb3QsICpvZnBhdGgsICpleHRf ZGlyOworKyAgc3RydWN0IGRpcmVudCAqZXAsICpzcGxpdHRlcl9lcDsKKysgIERJUiAqZHAsICpz cGxpdHRlcl9kcDsKKysgIGNoYXIgKmNudGxfaWQsICpkaXJSMSwgKmRpclIyLCAqc3BsaXR0ZXJf aW5mb19wYXRoOworKyAgYm9vbCBpc19GQyA9IGZhbHNlLCBpc19zcGxpdHRlciA9IGZhbHNlOwor KworKyAgbnZtZV9ucyA9IGdydWJfc3Ryc3RyIChpbnN0YWxsX2RldmljZSwgIm52bWUiKTsKKysg IG5zaWQgPSBvZl9wYXRoX2dldF9udm1lX25zaWQgKG52bWVfbnMpOworKyAgaWYgKG5zaWQgPT0g MCkKKysgICAgcmV0dXJuIE5VTEw7CisrCisrICBzeXNmc19wYXRoID0gbnZtZV9nZXRfc3lzcGF0 aCAobnZtZV9ucyk7CisrICBvZnBhdGggPSB4YXNwcmludGYgKCIlcyIsIGdldF9vZnBhdGhuYW1l IChudm1lX25zKSk7CisrCisrICBpZiAoZ3J1Yl9zdHJzdHIgKG9mcGF0aCwgImZpYnJlLWNoYW5u ZWwiKSkKKysgICAgeworKyAgICAgIGNoYXIgKnRtcCA9IHhhc3ByaW50ZiAoIiVzL2RldmljZSIs IHN5c2ZzX3BhdGgpOworKyAgICAgIGZyZWUgKHN5c2ZzX3BhdGgpOworKyAgICAgIHN5c2ZzX3Bh dGggPSB0bXA7CisrICAgICAgaXNfRkMgPSB0cnVlOworKyAgICB9CisrICBlbHNlCisrICAgIHsK KysgICAgICBjaGFyICp0bXAgPSB4YXNwcmludGYgKCIlcy9zdWJzeXN0ZW0iLCBzeXNmc19wYXRo KTsKKysgICAgICBmcmVlIChzeXNmc19wYXRoKTsKKysgICAgICBzeXNmc19wYXRoID0gdG1wOwor KyAgICAgIGlzX0ZDID0gZmFsc2U7CisrICAgIH0KKysgIGlmIChpc19GQyA9PSBmYWxzZSkKKysg ICAgeworKyAgICAgIGNudGxfaWQgPSBncnViX3N0cnN0ciAobnZtZV9ucywgImUiKTsKKysgICAg ICBkaXJSMSA9IHhhc3ByaW50ZiAoIm52bWUlYyIsY250bF9pZFsxXSk7CisrCisrICAgICAgc3Bs aXR0ZXJfaW5mb19wYXRoID0geGFzcHJpbnRmICgiL3N5cy9ibG9jay8lcy9kZXZpY2UiLCBudm1l X25zKTsKKysgICAgICBzcGxpdHRlcl9kcCA9IG9wZW5kaXIgKHNwbGl0dGVyX2luZm9fcGF0aCk7 CisrICAgICAgaWYgKCFzcGxpdHRlcl9kcCkKKysgICAgICAgIHJldHVybiBOVUxMOworKworKyAg ICAgIHdoaWxlICgoc3BsaXR0ZXJfZXAgPSByZWFkZGlyIChzcGxpdHRlcl9kcCkpICE9IE5VTEwp CisrICAgICAgICB7CisrICAgICAgICAgIGlmIChncnViX3N0cnN0ciAoc3BsaXR0ZXJfZXAtPmRf bmFtZSwgIm52bWUiKSkKKysJICAgIHsKKysJICAgICAgaWYgKGdydWJfc3Ryc3RyIChzcGxpdHRl cl9lcC0+ZF9uYW1lLCBkaXJSMSkpCisrCSAgICAgICAgY29udGludWU7CisrCisrICAgICAgICAg ICAgICBleHRfZGlyID0gZ3J1Yl9zdHJjaHIgKHNwbGl0dGVyX2VwLT5kX25hbWUsICdlJyk7Cisr ICAgICAgICAgICAgICBpZiAoZ3J1Yl9zdHJjaHIgKGV4dF9kaXIsICduJykgPT0gTlVMTCkKKysJ ICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgZGlyUjIgPSB4YXNwcmludGYoIiVzIiwgc3Bs aXR0ZXJfZXAtPmRfbmFtZSk7CisrCSAgICAgICAgICBpc19zcGxpdHRlciA9IHRydWU7CisrCSAg ICAgICAgICBicmVhazsKKysJICAgICAgICB9CisrCSAgICB9CisrICAgICAgICB9CisrICAgICAg Y2xvc2VkaXIgKHNwbGl0dGVyX2RwKTsKKysgICAgfQorKyAgc3lzZnNfcGF0aCA9IHhyZWFscGF0 aCAoc3lzZnNfcGF0aCk7CisrICBkcCA9IG9wZW5kaXIgKHN5c2ZzX3BhdGgpOworKyAgaWYgKCFk cCkKKysgICAgcmV0dXJuIE5VTEw7CisrCisrICBwdHIgPSBtdWx0aXBhdGhfYm9vdCA9IHhtYWxs b2MgKEJPT1RERVZfQlVGRkVSKTsKKysgIGlmIChpc19zcGxpdHRlciA9PSBmYWxzZSAmJiBpc19G QyA9PSBmYWxzZSkKKysgICAgeworKyAgICAgIG5vbl9zcGxpdHRlcl9wYXRoID0geGFzcHJpbnRm ICgiJXMvbmFtZXNwYWNlQCV4OjEgIiwgZ2V0X29mcGF0aG5hbWUgKGRpclIxKSwgbnNpZCk7Cisr ICAgICAgc3RybmNweSAocHRyLCBub25fc3BsaXR0ZXJfcGF0aCwgc3RybGVuIChub25fc3BsaXR0 ZXJfcGF0aCkpOworKyAgICAgIHB0ciArPSBzdHJsZW4gKG5vbl9zcGxpdHRlcl9wYXRoKTsKKysg ICAgICBmcmVlIChub25fc3BsaXR0ZXJfcGF0aCk7CisrICAgIH0KKysgIGVsc2UKKysgICAgewor KyAgICAgIHdoaWxlICgoZXAgPSByZWFkZGlyIChkcCkpICE9IE5VTEwpCisrICAgICAgICB7Cisr ICAgICAgICAgIGNoYXIgKnBhdGg7CisrCisrICAgICAgICAgIGlmIChncnViX3N0cnN0ciAoZXAt PmRfbmFtZSwgIm52bWUiKSAhPSBOVUxMKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAg IGlmIChpc19GQyA9PSBmYWxzZSAmJiBncnViX3N0cnN0ciAoZXAtPmRfbmFtZSwgZGlyUjEpID09 IE5VTEwgJiYKKysgICAgICAgICAgICAgICAgICBncnViX3N0cnN0ciAoZXAtPmRfbmFtZSwgZGly UjIpID09IE5VTEwpCisrICAgICAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgICAgICAg cGF0aCA9IHhhc3ByaW50ZiAoIiVzL25hbWVzcGFjZUAleCAiLCBnZXRfb2ZwYXRobmFtZSAoZXAt PmRfbmFtZSksIG5zaWQpOworKyAgICAgICAgICAgICAgaWYgKChzdHJsZW4gKG11bHRpcGF0aF9i b290KSArIHN0cmxlbiAocGF0aCkpID4gQk9PVERFVl9CVUZGRVIpCisrICAgICAgICAgICAgICAg IHsKKysgICAgICAgICAgICAgICAgICBncnViX3V0aWxfd2FybiAoXygiTWF4aW11bSBmaXZlIGVu dHJpZXMgYXJlIGFsbG93ZWQgaW4gdGhlIGJvb3RsaXN0IikpOworKyAgICAgICAgICAgICAgICAg IGZyZWUgKHBhdGgpOworKyAgICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgICAg ICB9CisrICAgICAgICAgICAgICBzdHJuY3B5IChwdHIsIHBhdGgsIHN0cmxlbiAocGF0aCkpOwor KyAgICAgICAgICAgICAgcHRyICs9IHN0cmxlbiAocGF0aCk7CisrICAgICAgICAgICAgICBmcmVl IChwYXRoKTsKKysgICAgICAgICAgICB9CisrICAgICAgICB9CisrICAgIH0KKysgICotLXB0ciA9 ICdcMCc7CisrICBjbG9zZWRpciAoZHApOworKworKyAgcmV0dXJuIG11bHRpcGF0aF9ib290Owor K30KKysKKyB2b2lkCisgZ3J1Yl9pbnN0YWxsX3JlZ2lzdGVyX2llZWUxMjc1IChpbnQgaXNfcHJl cCwgY29uc3QgY2hhciAqaW5zdGFsbF9kZXZpY2UsCisgCQkJCWludCBwYXJ0bm8sIGNvbnN0IGNo YXIgKnJlbHBhdGgpCitAQCAtMjE1LDggKzMyNCwxOSBAQCBncnViX2luc3RhbGxfcmVnaXN0ZXJf aWVlZTEyNzUgKGludCBpc19wcmVwLCBjb25zdCBjaGFyICppbnN0YWxsX2RldmljZSwKKyAJfQor ICAgICAgICpwdHIgPSAnXDAnOworICAgICB9CisrICBlbHNlIGlmIChncnViX3N0cnN0ciAoaW5z dGFsbF9kZXZpY2UsICJudm1lIikpCisrICAgIHsKKysgICAgICBib290X2RldmljZSA9IGFkZF9t dWx0aXBsZV9udm1lX2Jvb3RkZXZpY2VzIChpbnN0YWxsX2RldmljZSk7CisrICAgIH0KKyAgIGVs c2UKKy0gICAgYm9vdF9kZXZpY2UgPSBnZXRfb2ZwYXRobmFtZSAoaW5zdGFsbF9kZXZpY2UpOwor KyAgICB7CisrICAgICAgYm9vdF9kZXZpY2UgPSBnZXRfb2ZwYXRobmFtZSAoaW5zdGFsbF9kZXZp Y2UpOworKyAgICAgIGlmIChncnViX3N0cnN0ciAoYm9vdF9kZXZpY2UsICJudm1lLW9mIikpCisr ICAgICAgICB7CisrICAgICAgICAgIGZyZWUgKGJvb3RfZGV2aWNlKTsKKysgICAgICAgICAgYm9v dF9kZXZpY2UgPSBhZGRfbXVsdGlwbGVfbnZtZV9ib290ZGV2aWNlcyAoaW5zdGFsbF9kZXZpY2Up OworKyAgICAgICAgfQorKyAgICB9CisgCisgICBpZiAoZ3J1Yl91dGlsX2V4ZWMgKChjb25zdCBj aGFyICogW10peyAibnZzZXRlbnYiLCAiYm9vdC1kZXZpY2UiLAorIAkgIGJvb3RfZGV2aWNlLCBO VUxMIH0pKQorZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ3J1Yi91dGlsL2luc3RhbGwuaCBiL2luY2x1 ZGUvZ3J1Yi91dGlsL2luc3RhbGwuaAoraW5kZXggZGJmM2MyMTZkNDEzLi44NTdjY2JiZTljMzgg MTAwNjQ0CistLS0gYS9pbmNsdWRlL2dydWIvdXRpbC9pbnN0YWxsLmgKKysrKyBiL2luY2x1ZGUv Z3J1Yi91dGlsL2luc3RhbGwuaAorQEAgLTI0MCw2ICsyNDAsOSBAQCBncnViX2luc3RhbGxfcmVn aXN0ZXJfZWZpIChncnViX2RldmljZV90IGVmaWRpcl9ncnViX2RldiwKKyAJCQkgICBjb25zdCBj aGFyICplZmlmaWxlX3BhdGgsCisgCQkJICAgY29uc3QgY2hhciAqZWZpX2Rpc3RyaWJ1dG9yKTsK KyAKKytjaGFyICoKKythZGRfbXVsdGlwbGVfbnZtZV9ib290ZGV2aWNlcyAoY29uc3QgY2hhciAq aW5zdGFsbF9kZXZpY2UpOworKworIHZvaWQKKyBncnViX2luc3RhbGxfcmVnaXN0ZXJfaWVlZTEy NzUgKGludCBpc19wcmVwLCBjb25zdCBjaGFyICppbnN0YWxsX2RldmljZSwKKyAJCQkJaW50IHBh cnRubywgY29uc3QgY2hhciAqcmVscGF0aCk7CitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ncnViL3V0 aWwvb2ZwYXRoLmggYi9pbmNsdWRlL2dydWIvdXRpbC9vZnBhdGguaAoraW5kZXggN2FiMzc3Yzdj YzQzLi45ZjlhNzUzZGNlYmIgMTAwNjQ0CistLS0gYS9pbmNsdWRlL2dydWIvdXRpbC9vZnBhdGgu aAorKysrIGIvaW5jbHVkZS9ncnViL3V0aWwvb2ZwYXRoLmgKK0BAIC0zMCw1ICszMCw5IEBAIGlu dCBhZGRfZmlsZW5hbWVfdG9fcGlsZSAoY2hhciAqZmlsZW5hbWUsIHN0cnVjdCBvZnBhdGhfZmls ZXNfbGlzdF9yb290KiByb290KTsKKyB2b2lkIGZpbmRfZmlsZSAoY2hhciogZmlsZW5hbWUsIGNo YXIqIGRpcmVjdG9yeSwgc3RydWN0IG9mcGF0aF9maWxlc19saXN0X3Jvb3QqIHJvb3QsIGludCBt YXhfZGVwdGgsIGludCBkZXB0aCk7CisgY2hhciogb2ZfZmluZF9mY19ob3N0IChjaGFyKiBob3N0 X3d3cG4pOworIHZvaWQgZnJlZV9vZnBhdGhfZmlsZXNfbGlzdCAoc3RydWN0IG9mcGF0aF9maWxl c19saXN0X3Jvb3QqIHJvb3QpOworK2NoYXIqIG52bWVfZ2V0X3N5c3BhdGggKGNvbnN0IGNoYXIg Km52bWVkZXYpOworK3Vuc2lnbmVkIGludCBvZl9wYXRoX2dldF9udm1lX25zaWQgKGNvbnN0IGNo YXIqIGRldm5hbWUpOworK2NoYXIqIHhyZWFscGF0aCAoY29uc3QgY2hhciAqaW4pOworKworIAor ICNlbmRpZiAvKiAhIEdSVUJfT0ZQQVRIX01BQ0hJTkVfVVRJTF9IRUFERVIgKi8KCmRpZmYgLS1n aXQgYS8wNDQ0LWllZWUxMjc1LWFkZC1zdXBwb3J0LWZvci1OVk1lb0ZDLnBhdGNoIGIvMDQ0NC1p ZWVlMTI3NS1hZGQtc3VwcG9ydC1mb3ItTlZNZW9GQy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi45MTQyZWExCi0tLSAvZGV2L251bGwKKysrIGIvMDQ0NC1pZWVlMTI3 NS1hZGQtc3VwcG9ydC1mb3ItTlZNZW9GQy5wYXRjaApAQCAtMCwwICsxLDQ1NyBAQAorRnJvbSAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQorRnJvbTogQXZuaXNoIENob3VoYW4gPGF2bmlzaEBsaW51eC5pYm0uY29tPgorRGF0 ZTogTW9uLCAyMyBGZWIgMjAyNiAxOToxNDowOSArMDUzMAorU3ViamVjdDogW1BBVENIXSBpZWVl MTI3NTogYWRkIHN1cHBvcnQgZm9yIE5WTWVvRkMKKworVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHRo ZSBmdW5jdGlvbnMgdG8gc2NhbiBhbmQgZGlzY292ZXJ5IG9mIE5WTWVvRkMuCisKK1NpZ25lZC1v ZmYtYnk6IERpZWdvIERvbWluZ29zIDxkaWVnb2RvQGJyLmlibS5jb20+CitTaWduZWQtb2ZmLWJ5 OiBBdm5pc2ggQ2hvdWhhbiA8YXZuaXNoQGxpbnV4LmlibS5jb20+CitSZXZpZXdlZC1ieTogTGVv IFNhbmRvdmFsIDxsc2FuZG92YUByZWRoYXQuY29tPgorUmV2aWV3ZWQtYnk6IFN1ZGhha2FyIEt1 cHB1c2FteSA8c3VkaGFrYXJAbGludXguaWJtLmNvbT4KK1BhcnQtb2Y6IDxodHRwczovL2dpdGxh Yi5mcmVlZGVza3RvcC5vcmcvZ251LWdydWIvZ3J1Yi8tL21lcmdlX3JlcXVlc3RzLzE0Nj4KKy0t LQorIGdydWItY29yZS9kaXNrL2llZWUxMjc1L29mZGlzay5jIHwgNDE4ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzMTIgaW5zZXJ0aW9u cygrKSwgMTA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2Rpc2svaWVl ZTEyNzUvb2ZkaXNrLmMgYi9ncnViLWNvcmUvZGlzay9pZWVlMTI3NS9vZmRpc2suYworaW5kZXgg MDQyZjk4Nzk3NTQ2Li5iYmQ2MWEzMmJlZTMgMTAwNjQ0CistLS0gYS9ncnViLWNvcmUvZGlzay9p ZWVlMTI3NS9vZmRpc2suYworKysrIGIvZ3J1Yi1jb3JlL2Rpc2svaWVlZTEyNzUvb2ZkaXNrLmMK K0BAIC0yNyw2ICsyNywxMCBAQAorICNpbmNsdWRlIDxncnViL2Vudi5oPgorICNpbmNsdWRlIDxn cnViL3NhZmVtYXRoLmg+CisgCisrI2RlZmluZSBFWFRFTkRfUEFUSF82NCAgNjQKKysjZGVmaW5l IEVYVEVORF9QQVRIXzUxMiA1MTIKKysjZGVmaW5lIFRBQkxFX1NJWkUgICAgICAyNTYKKysKKyBz dGF0aWMgY2hhciAqbGFzdF9kZXZwYXRoOworIHN0YXRpYyBncnViX2llZWUxMjc1X2loYW5kbGVf dCBsYXN0X2loYW5kbGU7CisgCitAQCAtMjIxLDExNyArMjI1LDMxOSBAQCBkZXZfaXRlcmF0ZV9y ZWFsIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpwYXRoKQorICAgcmV0dXJuOworIH0K KyAKKytzdGF0aWMgdm9pZAorK2Rldl9pdGVyYXRlX2ZjcF9kaXNrcyAoY29uc3Qgc3RydWN0IGdy dWJfaWVlZTEyNzVfZGV2YWxpYXMgKmFsaWFzKQorKyB7CisrICAvKgorKyAgICogSWYgd2UgYXJl IGRlYWxpbmcgd2l0aCBmY3AgZGV2aWNlcywgd2UgbmVlZAorKyAgICogdG8gZmluZCB0aGUgV1dQ TnMgYW5kIExVTnMgdG8gaXRlcmF0ZSB0aGVtCisrICAgKi8KKysgIGdydWJfaWVlZTEyNzVfaWhh bmRsZV90IGloYW5kbGU7CisrICBncnViX3VpbnQ2NF90ICpwdHJfdGFyZ2V0cywgKnB0cl9sdW5z LCBrLCBsOworKyAgdW5zaWduZWQgaW50IGksIGosIHBvczsKKysgIGNoYXIgKmJ1ZiwgKmJ1ZnB0 cjsKKysgIHN0cnVjdCBzZXRfZmNwX3RhcmdldHNfYXJncworKyAgeworKyAgICBzdHJ1Y3QgZ3J1 Yl9pZWVlMTI3NV9jb21tb25faGRyIGNvbW1vbjsKKysgICAgZ3J1Yl9pZWVlMTI3NV9jZWxsX3Qg bWV0aG9kOworKyAgICBncnViX2llZWUxMjc1X2NlbGxfdCBpaGFuZGxlOworKyAgICBncnViX2ll ZWUxMjc1X2NlbGxfdCBjYXRjaF9yZXN1bHQ7CisrICAgIGdydWJfaWVlZTEyNzVfY2VsbF90IG5l bnRyaWVzOworKyAgICBncnViX2llZWUxMjc1X2NlbGxfdCB0YWJsZTsKKysgIH0gYXJnc190YXJn ZXRzOworKworKyAgc3RydWN0IHNldF9mY3BfbHVuc19hcmdzCisrICB7CisrICAgIHN0cnVjdCBn cnViX2llZWUxMjc1X2NvbW1vbl9oZHIgY29tbW9uOworKyAgICBncnViX2llZWUxMjc1X2NlbGxf dCBtZXRob2Q7CisrICAgIGdydWJfaWVlZTEyNzVfY2VsbF90IGloYW5kbGU7CisrICAgIGdydWJf aWVlZTEyNzVfY2VsbF90IHd3cG5faDsKKysgICAgZ3J1Yl9pZWVlMTI3NV9jZWxsX3Qgd3dwbl9s OworKyAgICBncnViX2llZWUxMjc1X2NlbGxfdCBjYXRjaF9yZXN1bHQ7CisrICAgIGdydWJfaWVl ZTEyNzVfY2VsbF90IG5lbnRyaWVzOworKyAgICBncnViX2llZWUxMjc1X2NlbGxfdCB0YWJsZTsK KysgIH0gYXJnc19sdW5zOworKworKyAgc3RydWN0IGFyZ3NfcmV0CisrICB7CisrICAgIGdydWJf dWludDY0X3QgYWRkcjsKKysgICAgZ3J1Yl91aW50NjRfdCBsZW47CisrICB9OworKyAgc3RydWN0 IGFyZ3NfcmV0ICp0YXJnZXRzX3RhYmxlOworKyAgc3RydWN0IGFyZ3NfcmV0ICpsdW5zX3RhYmxl OworKworKyAgaWYgKGdydWJfaWVlZTEyNzVfb3BlbiAoYWxpYXMtPnBhdGgsICZpaGFuZGxlKSkK KysgICAgeworKyAgICAgIGdydWJfZHByaW50ZiAoImRpc2siLCAiZmFpbGVkIHRvIG9wZW4gdGhl IGRpc2sgd2hpbGUgaXRlcmF0aW5nIEZDUCBkaXNrIHBhdGg9JXNcbiIsIGFsaWFzLT5wYXRoKTsK KysgICAgICByZXR1cm47CisrICAgIH0KKysKKysgIC8qIFNldHVwIHRoZSBmY3AtdGFyZ2V0cyBt ZXRob2QgdG8gY2FsbCB2aWEgcGZ3Ki8KKysgIElOSVRfSUVFRTEyNzVfQ09NTU9OICgmYXJnc190 YXJnZXRzLmNvbW1vbiwgImNhbGwtbWV0aG9kIiwgMiwgMyk7CisrICBhcmdzX3RhcmdldHMubWV0 aG9kID0gKGdydWJfaWVlZTEyNzVfY2VsbF90KSAiZmNwLXRhcmdldHMiOworKyAgYXJnc190YXJn ZXRzLmloYW5kbGUgPSBpaGFuZGxlOworKworKyAgLyogU2V0dXAgdGhlIGZjcC1sdW5zIG1ldGhv ZCB0byBjYWxsIHZpYSBwZncgKi8KKysgIElOSVRfSUVFRTEyNzVfQ09NTU9OICgmYXJnc19sdW5z LmNvbW1vbiwgImNhbGwtbWV0aG9kIiwgNCwgMyk7CisrICBhcmdzX2x1bnMubWV0aG9kID0gKGdy dWJfaWVlZTEyNzVfY2VsbF90KSAiZmNwLWx1bnMiOworKyAgYXJnc19sdW5zLmloYW5kbGUgPSBp aGFuZGxlOworKyAgaWYgKElFRUUxMjc1X0NBTExfRU5UUllfRk4gKCZhcmdzX3RhcmdldHMpID09 IC0xKQorKyAgICB7CisrICAgICAgZ3J1Yl9kcHJpbnRmICgiZGlzayIsICJmYWlsZWQgdG8gZ2V0 IHRoZSB0YXJnZXRzIHdoaWxlIGl0ZXJhdGluZyBGQ1AgZGlzayBwYXRoPSVzXG4iLCBhbGlhcy0+ cGF0aCk7CisrICAgICAgZ3J1Yl9pZWVlMTI3NV9jbG9zZSAoaWhhbmRsZSk7CisrICAgICAgcmV0 dXJuOworKyAgICB9CisrICAvKiBBbGxvY2F0ZSBtZW1vcnkgZm9yIGJ1aWxkaW5nIHRoZSBwYXRo ICovCisrICBidWYgPSBncnViX21hbGxvYyAoZ3J1Yl9zdHJsZW4gKGFsaWFzLT5wYXRoKSArIEVY VEVORF9QQVRIXzY0KTsKKysgIGlmICghYnVmKQorKyAgICB7CisrICAgICAgZ3J1Yl9pZWVlMTI3 NV9jbG9zZSAoaWhhbmRsZSk7CisrICAgICAgcmV0dXJuOworKyAgICB9CisrICBidWZwdHIgPSBn cnViX3N0cGNweSAoYnVmLCBhbGlhcy0+cGF0aCk7CisrCisrICAvKgorKyAgICogSXRlcmF0ZSBv dmVyIGVudHJpZXMgcmV0dXJuZWQgYnkgcGZ3LiBFYWNoIGVudHJ5IGNvbnRhaW5zIGEKKysgICAq IHBvaW50ZXIgdG8gd3dwbiB0YWJsZSBhbmQgaGlzIGxlbmd0aC4KKysgICAqLworKyAgdGFyZ2V0 c190YWJsZSA9IChzdHJ1Y3QgYXJnc19yZXQgKikgKGFyZ3NfdGFyZ2V0cy50YWJsZSk7CisrICBm b3IgKGkgPSAwOyBpIDwgYXJnc190YXJnZXRzLm5lbnRyaWVzOyBpKyspCisrICAgIHsKKysgICAg ICBwdHJfdGFyZ2V0cyA9IChncnViX3VpbnQ2NF90KikgKGdydWJfYWRkcl90KSB0YXJnZXRzX3Rh YmxlW2ldLmFkZHI7CisrICAgICAgLyogSXRlcmF0ZSBvdmVyIGFsbCB3d3BucyBpbiBnaXZlbiB0 YWJsZSAqLworKyAgICAgIGZvciAoayA9IDA7IGsgPCB0YXJnZXRzX3RhYmxlW2ldLmxlbjsgaysr KQorKyAgICAgICAgeworKyAgICAgICAgICBhcmdzX2x1bnMud3dwbl9sID0gKGdydWJfaWVlZTEy NzVfY2VsbF90KSAoKnB0cl90YXJnZXRzKTsKKysgICAgICAgICAgYXJnc19sdW5zLnd3cG5faCA9 IChncnViX2llZWUxMjc1X2NlbGxfdCkgKCpwdHJfdGFyZ2V0cyA+PiAzMik7CisrICAgICAgICAg IHBvcyA9IGdydWJfc25wcmludGYgKGJ1ZnB0ciwgMzIsICIvZGlza0AlIiBQUkl4R1JVQl9VSU5U NjRfVCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3J1Yl9nZXRfdW5hbGlnbmVk NjQgKChjb25zdCB2b2lkICopIHB0cl90YXJnZXRzKSk7CisrICAgICAgICAgIHB0cl90YXJnZXRz Kys7CisrICAgICAgICAgIC8qIEdldCB0aGUgbHVucyBmb3IgZ2l2ZW4gd3dwbiB0YXJnZXQgKi8K KysgICAgICAgICAgaWYgKElFRUUxMjc1X0NBTExfRU5UUllfRk4gKCZhcmdzX2x1bnMpID09IC0x KQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgIGdydWJfZHByaW50ZiAoImRpc2siLCAi ZmFpbGVkIHRvIGdldCB0aGUgTFVOUyB3aGlsZSBpdGVyYXRpbmcgRkNQIGRpc2sgcGF0aD0lc1xu IiwgYnVmKTsKKysgICAgICAgICAgICAgIGdydWJfaWVlZTEyNzVfY2xvc2UgKGloYW5kbGUpOwor KyAgICAgICAgICAgICAgZ3J1Yl9mcmVlIChidWYpOworKyAgICAgICAgICAgICAgcmV0dXJuOwor KyAgICAgICAgICAgIH0KKysgICAgICAgICAgbHVuc190YWJsZSA9IChzdHJ1Y3QgYXJnc19yZXQg KikgKGFyZ3NfbHVucy50YWJsZSk7CisrCisrICAgICAgICAgIC8qIEl0ZXJhdGUgb3ZlciBhbGwg TFVOcyAqLworKyAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgYXJnc19sdW5zLm5lbnRyaWVzOyBq KyspCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgcHRyX2x1bnMgPSAoZ3J1Yl91aW50 NjRfdCopIChncnViX2FkZHJfdCkgbHVuc190YWJsZVtqXS5hZGRyOworKyAgICAgICAgICAgICAg Zm9yIChsID0gMDsgbCA8IGx1bnNfdGFibGVbal0ubGVuOyBsKyspCisrICAgICAgICAgICAgICAg IHsKKysgICAgICAgICAgICAgICAgICBncnViX3NucHJpbnRmICgmYnVmcHRyW3Bvc10sIDMwLCAi LCUiIFBSSXhHUlVCX1VJTlQ2NF9ULAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGdydWJfZ2V0X3VuYWxpZ25lZDY0ICgoY29uc3Qgdm9pZCAqKSBwdHJfbHVucykpOworKyAgICAg ICAgICAgICAgICAgIHB0cl9sdW5zKys7CisrICAgICAgICAgICAgICAgICAgZGV2X2l0ZXJhdGVf cmVhbCAoYnVmLCBidWYpOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgfQorKyAg ICAgICAgfQorKyAgICB9CisrICBncnViX2llZWUxMjc1X2Nsb3NlIChpaGFuZGxlKTsKKysgIGdy dWJfZnJlZSAoYnVmKTsKKysgIHJldHVybjsKKyt9CisrCisrc3RhdGljIHZvaWQKKytkZXZfaXRl cmF0ZV9mY3BfbnZtZW9mIChjb25zdCBzdHJ1Y3QgZ3J1Yl9pZWVlMTI3NV9kZXZhbGlhcyAqYWxp YXMpCisreworKyAgY2hhciAqYnVmcHRyOworKyAgZ3J1Yl9pZWVlMTI3NV9paGFuZGxlX3QgaWhh bmRsZTsKKysKKysgIC8qIENyZWF0ZSB0aGUgc3RydWN0cyBmb3IgdGhlIHBhcmFtZXRlcnMgcGFz c2luZyB0byBQRlcgKi8KKysgIHN0cnVjdCBudm1lX2FyZ3MKKysgIHsKKysgICAgc3RydWN0IGdy dWJfaWVlZTEyNzVfY29tbW9uX2hkciBjb21tb247CisrICAgIGdydWJfaWVlZTEyNzVfY2VsbF90 IG1ldGhvZDsKKysgICAgZ3J1Yl9pZWVlMTI3NV9jZWxsX3QgaWhhbmRsZTsKKysgICAgZ3J1Yl9p ZWVlMTI3NV9jZWxsX3QgY2F0Y2hfcmVzdWx0OworKyAgICBncnViX2llZWUxMjc1X2NlbGxfdCBu ZW50cmllczsKKysgICAgZ3J1Yl9pZWVlMTI3NV9jZWxsX3QgdGFibGU7CisrICB9IG52bWVfZGlz Y292ZXJ5X2NvbnRyb2xsZXJzX2FyZ3MsIG52bWVfY29udHJvbGxlcnNfYXJncywgbnZtZV9uYW1l c3BhY2VzX2FyZ3M7CisrCisrICAvKiBDcmVhdGUgdGhlIHN0cnVjdHMgZm9yIHRoZSByZXN1bHRz IGZyb20gUEZXICovCisrICBzdHJ1Y3QgZGlzY292ZXJ5X2NvbnRyb2xsZXJzX3RhYmxlX3N0cnVj dAorKyAgeworKyAgICBncnViX3VpbnQ2NF90IHRhYmxlW1RBQkxFX1NJWkVdOworKyAgICBncnVi X3VpbnQzMl90IGxlbjsKKysgIH0gZGlzY292ZXJ5X2NvbnRyb2xsZXJzX3RhYmxlOworKworKyAg LyoKKysgICAqIHN0cnVjdCBudm1lX2NvbnRyb2xsZXJzX3RhYmxlX2VudHJ5CisrICAgKiB0aGlz IHRoZSByZXR1cm4gb2YgbnZtZS1jb250cm9sbGVycyBtZXRob2QgdGFibGVzLCBjb250YWluaW5n OgorKyAgICogLSAyLWJ5dGUgY29udHJvbGxlciBJRAorKyAgICogLSAyNTYtYnl0ZSB0cmFuc3Bv cnQgYWRkcmVzcyBzdHJpbmcKKysgICAqIC0gMjU2LWJ5dGUgZmllbGQgY29udGFpbmluZyBudWxs LXRlcm1pbmF0ZWQgTlZNIHN1YnN5c3RlbSBOUU4gc3RyaW5nIHVwIHRvIDIyMyBjaGFyYWN0ZXJz CisrICAgKi8KKysgIHN0cnVjdCBudm1lX2NvbnRyb2xsZXJzX3RhYmxlX2VudHJ5CisrICB7Cisr ICAgIGdydWJfdWludDE2X3QgaWQ7CisrICAgIGNoYXIgd3dwbltUQUJMRV9TSVpFXTsKKysgICAg Y2hhciBucW5bVEFCTEVfU0laRV07CisrICB9OworKworKyAgc3RydWN0IG52bWVfY29udHJvbGxl cnNfdGFibGVfZW50cnlfcmVhbAorKyAgeworKyAgICBncnViX3VpbnQxNl90IGlkOworKyAgICBj aGFyIHd3cG5bVEFCTEVfU0laRV07CisrICAgIGNoYXIgbnFuW1RBQkxFX1NJWkVdOworKyAgfTsK KysKKysgIHN0cnVjdCBudm1lX2NvbnRyb2xsZXJzX3RhYmxlX2VudHJ5KiBudm1lX2NvbnRyb2xs ZXJzX3RhYmxlOworKyAgZ3J1Yl91aW50MzJfdCBudm1lX2NvbnRyb2xsZXJzX3RhYmxlX2VudHJp ZXM7CisrICBjaGFyICpidWY7CisrICB1bnNpZ25lZCBpbnQgaSA9IDA7CisrICBpbnQgY3VycmVu dF9idWZmZXJfaW5kZXg7CisrICBpbnQgbnZtZV9jb250cm9sbGVyX2luZGV4OworKyAgaW50IGJ1 ZnB0cl9wb3MyOworKyAgZ3J1Yl91aW50MzJfdCBuYW1lc3BhY2VfaW5kZXggPSAwOworKyAgc3Ry dWN0IG52bWVfY29udHJvbGxlcnNfdGFibGVfZW50cnkqIG52bWVfY29udHJvbGxlcnNfdGFibGVf YnVmOworKworKyAgbnZtZV9jb250cm9sbGVyc190YWJsZSA9IGdydWJfbWFsbG9jIChzaXplb2Yg KHN0cnVjdCBudm1lX2NvbnRyb2xsZXJzX3RhYmxlX2VudHJ5KSAqIFRBQkxFX1NJWkUpOworKyAg LyogQWxsb2NhdGUgbWVtb3J5IGZvciBidWlsZGluZyB0aGUgTlZNZW9GIHBhdGggKi8KKysgIGJ1 ZiA9IGdydWJfbWFsbG9jIChncnViX3N0cmxlbiAoYWxpYXMtPnBhdGgpICsgRVhURU5EX1BBVEhf NTEyKTsKKysKKysgIGlmICghYnVmIHx8ICFudm1lX2NvbnRyb2xsZXJzX3RhYmxlKQorKyAgICB7 CisrICAgICAgZ3J1Yl9mcmVlIChudm1lX2NvbnRyb2xsZXJzX3RhYmxlKTsKKysgICAgICBncnVi X2ZyZWUgKGJ1Zik7CisrICAgICAgcmV0dXJuOworKyAgICB9CisrCisrICAvKiBDb3B5IHRoZSBh bGlhcy0+cGF0aCB0byBidWYgc28gd2UgY2FuIHdvcmsgd2l0aCAqLworKyAgYnVmcHRyID0gZ3J1 Yl9zdHBjcHkgKGJ1ZiwgYWxpYXMtPnBhdGgpOworKyAgZ3J1Yl9zbnByaW50ZiAoYnVmcHRyLCAz MiwgIi9udm1lLW9mIik7CisrCisrICAvKgorKyAgICogIE9wZW4gdGhlIG52bWUtb2YgbGF5ZXIK KysgICAqICBFeC4gIC9wY2lAYnVzL2ZpYnJlLWNoYW5uZWxAQGRldixmdW5jL252bWUtb2YKKysg ICAqLworKyAgaWYgKGdydWJfaWVlZTEyNzVfb3BlbiAoYnVmLCAmaWhhbmRsZSkpCisrICAgIHsK KysgICAgICBncnViX2RwcmludGYgKCJkaXNrIiwgImZhaWxlZCB0byBvcGVuIHRoZSBkaXNrIHdo aWxlIGl0ZXJhdGluZyBGQ1AgZGlzayBwYXRoPSVzXG4iLCBidWYpOworKyAgICAgIGdydWJfZnJl ZSAobnZtZV9jb250cm9sbGVyc190YWJsZSk7CisrICAgICAgZ3J1Yl9mcmVlIChidWYpOworKyAg ICAgIHJldHVybjsKKysgICAgfQorKworKyAgLyoKKysgICAqIENhbGwgdG8gbnZtZS1kaXNjb3Zl cnktY29udHJvbGxlcnMgbWV0aG9kIGZyb20gdGhlIG52bWUtb2YgbGF5ZXIKKysgICAqIHRvIGdl dCBhIGxpc3Qgb2YgdGhlIE5WTWUgZGlzY292ZXJ5IGNvbnRyb2xsZXJzIHBlciB0aGUgYmluZGlu ZworKyAgICovCisrICBJTklUX0lFRUUxMjc1X0NPTU1PTiAoJm52bWVfZGlzY292ZXJ5X2NvbnRy b2xsZXJzX2FyZ3MuY29tbW9uLCAiY2FsbC1tZXRob2QiLCAyLCAyKTsKKysgIG52bWVfZGlzY292 ZXJ5X2NvbnRyb2xsZXJzX2FyZ3MubWV0aG9kID0gKGdydWJfaWVlZTEyNzVfY2VsbF90KSAibnZt ZS1kaXNjb3ZlcnktY29udHJvbGxlcnMiOworKyAgbnZtZV9kaXNjb3ZlcnlfY29udHJvbGxlcnNf YXJncy5paGFuZGxlID0gaWhhbmRsZTsKKysgIGlmIChJRUVFMTI3NV9DQUxMX0VOVFJZX0ZOICgm bnZtZV9kaXNjb3ZlcnlfY29udHJvbGxlcnNfYXJncykgPT0gLTEpCisrICAgIHsKKysgICAgICBn cnViX2RwcmludGYgKCJkaXNrIiwgImZhaWxlZCB0byBnZXQgdGhlIHRhcmdldHMgd2hpbGUgaXRl cmF0aW5nIEZDUCBkaXNrIHBhdGg9JXNcbiIsIGJ1Zik7CisrICAgICAgZ3J1Yl9mcmVlIChudm1l X2NvbnRyb2xsZXJzX3RhYmxlKTsKKysgICAgICBncnViX2ZyZWUgKGJ1Zik7CisrICAgICAgZ3J1 Yl9pZWVlMTI3NV9jbG9zZSAoaWhhbmRsZSk7CisrICAgICAgcmV0dXJuOworKyAgICB9CisrCisr ICAvKiBBZnRlciBjbG9zaW5nIHRoZSBkZXZpY2UsIHRoZSBpbmZvIGlzIGxvc3QuIFNvIGxldHMg Y29weSBlYWNoIGJ1ZmZlciBpbiB0aGUgYnVmZmVycyB0YWJsZSAqLworKyAgZGlzY292ZXJ5X2Nv bnRyb2xsZXJzX3RhYmxlLmxlbiA9IChncnViX3VpbnQzMl90KSBudm1lX2Rpc2NvdmVyeV9jb250 cm9sbGVyc19hcmdzLm5lbnRyaWVzOworKworKyAgZm9yIChpID0gMDsgaSA8IGRpc2NvdmVyeV9j b250cm9sbGVyc190YWJsZS5sZW47IGkrKykKKysgICAgeworKyAgICAgIGRpc2NvdmVyeV9jb250 cm9sbGVyc190YWJsZS50YWJsZVtpXSA9ICgoZ3J1Yl91aW50NjRfdCopIG52bWVfZGlzY292ZXJ5 X2NvbnRyb2xsZXJzX2FyZ3MudGFibGUpW2ldOworKyAgICB9CisrICBncnViX2llZWUxMjc1X2Ns b3NlIChpaGFuZGxlKTsKKysgIGdydWJfZHByaW50ZiAoIm9mZGlzayIsIk5WTWVvRjogRm91bmQg JWQgZGlzY292ZXJ5IGNvbnRyb2xsZXJzXG4iLCBkaXNjb3ZlcnlfY29udHJvbGxlcnNfdGFibGUu bGVuKTsKKysKKysgIC8qIEZvciBlYWNoIG52bWUgZGlzY292ZXJ5IGNvbnRyb2xsZXIgKi8KKysg IGZvciAoY3VycmVudF9idWZmZXJfaW5kZXggPSAwOyBjdXJyZW50X2J1ZmZlcl9pbmRleCA8IChp bnQpIGRpc2NvdmVyeV9jb250cm9sbGVyc190YWJsZS5sZW47IGN1cnJlbnRfYnVmZmVyX2luZGV4 KyspCisrICAgIHsKKysgICAgICBncnViX3NucHJpbnRmIChidWZwdHIsIDY0LCAiL252bWUtb2Yv Y29udHJvbGxlckAlIiBQUkl4R1JVQl9VSU5UNjRfVCAiLGZmZmYiLAorKyAgICAgICAgICAgICAg ICAgICAgIGRpc2NvdmVyeV9jb250cm9sbGVyc190YWJsZS50YWJsZVtjdXJyZW50X2J1ZmZlcl9p bmRleF0pOworKyAgICAgIGdydWJfZHByaW50ZiAoIm9mZGlzayIsICJudm1lb2YgY29udHJvbGxl cj0lc1xuIiwgYnVmKTsKKysgICAgICBpZiAoZ3J1Yl9pZWVlMTI3NV9vcGVuIChidWYsICZpaGFu ZGxlKSkKKysgICAgICAgIHsKKysgICAgICAgICAgZ3J1Yl9kcHJpbnRmICgib2ZkaXNrIiwgImZh aWxlZCB0byBvcGVuIHRoZSBkaXNrIHdoaWxlIGdldHRpbmcgbnZtZS1jb250cm9sbGVycyAgcGF0 aD0lc1xuIiwgYnVmKTsKKysgICAgICAgICAgY29udGludWU7CisrICAgICAgICB9CisrICAgICAg SU5JVF9JRUVFMTI3NV9DT01NT04gKCZudm1lX2NvbnRyb2xsZXJzX2FyZ3MuY29tbW9uLCAiY2Fs bC1tZXRob2QiLCAyLCAyKTsKKysgICAgICBudm1lX2NvbnRyb2xsZXJzX2FyZ3MubWV0aG9kID0g KGdydWJfaWVlZTEyNzVfY2VsbF90KSAibnZtZS1jb250cm9sbGVycyI7CisrICAgICAgbnZtZV9j b250cm9sbGVyc19hcmdzLmloYW5kbGUgPSBpaGFuZGxlOworKyAgICAgIG52bWVfY29udHJvbGxl cnNfYXJncy5jYXRjaF9yZXN1bHQgPSAwOworKworKyAgICAgIGlmIChJRUVFMTI3NV9DQUxMX0VO VFJZX0ZOICgmbnZtZV9jb250cm9sbGVyc19hcmdzKSA9PSAtMSkKKysgICAgICAgIHsKKysgICAg ICAgICAgZ3J1Yl9kcHJpbnRmICgib2ZkaXNrIiwgImZhaWxlZCB0byBnZXQgdGhlIG52bWUtY29u dHJvbGxlcnMgd2hpbGUgaXRlcmF0aW5nIEZDUCBkaXNrIHBhdGhcbiIpOworKyAgICAgICAgICBn cnViX2llZWUxMjc1X2Nsb3NlIChpaGFuZGxlKTsKKysgICAgICAgICAgY29udGludWU7CisrCX0K KysKKysgICAgICAvKiBDb3B5IHRoZSBidWZmZXIgbGlzdCB0byBudm1lX2NvbnRyb2xsZXJzX3Rh YmxlICovCisrICAgICAgbnZtZV9jb250cm9sbGVyc190YWJsZV9lbnRyaWVzID0gKChncnViX3Vp bnQzMl90KSBudm1lX2NvbnRyb2xsZXJzX2FyZ3MubmVudHJpZXMpOworKyAgICAgIG52bWVfY29u dHJvbGxlcnNfdGFibGVfYnVmID0gKHN0cnVjdCBudm1lX2NvbnRyb2xsZXJzX3RhYmxlX2VudHJ5 KikgbnZtZV9jb250cm9sbGVyc19hcmdzLnRhYmxlOworKyAgICAgIGZvciAoaSA9IDA7IGkgPCBu dm1lX2NvbnRyb2xsZXJzX3RhYmxlX2VudHJpZXM7IGkrKykKKysgICAgICAgIHsKKysJICBudm1l X2NvbnRyb2xsZXJzX3RhYmxlW2ldLmlkID0gKGdydWJfdWludDE2X3QpIG52bWVfY29udHJvbGxl cnNfdGFibGVfYnVmW2ldLmlkOworKyAgICAgICAgICBncnViX3N0cmNweSAobnZtZV9jb250cm9s bGVyc190YWJsZVtpXS53d3BuLCBudm1lX2NvbnRyb2xsZXJzX3RhYmxlX2J1ZltpXS53d3BuKTsK KysgICAgICAgICAgZ3J1Yl9zdHJjcHkgKG52bWVfY29udHJvbGxlcnNfdGFibGVbaV0ubnFuLCBu dm1lX2NvbnRyb2xsZXJzX3RhYmxlX2J1ZltpXS5ucW4pOworKwl9CisrICAgICAgZ3J1Yl9pZWVl MTI3NV9jbG9zZSAoaWhhbmRsZSk7CisrICAgICAgZ3J1Yl9kcHJpbnRmICgib2ZkaXNrIiwgIk5W TWVvRjogZm91bmQgJWQgbnZtZSBjb250cm9sbGVyc1xuIiwgKGludCkgbnZtZV9jb250cm9sbGVy c19hcmdzLm5lbnRyaWVzKTsKKysKKysgICAgICAvKiBGb3IgZWFjaCBudm1lIGNvbnRyb2xsZXIg Ki8KKysgICAgICBmb3IgKG52bWVfY29udHJvbGxlcl9pbmRleCA9IDA7IG52bWVfY29udHJvbGxl cl9pbmRleCA8IChpbnQpIG52bWVfY29udHJvbGxlcnNfYXJncy5uZW50cmllczsgbnZtZV9jb250 cm9sbGVyX2luZGV4KyspCisrICAgICAgICB7CisrICAgICAgICAgIC8qCisrCSAgICogT3BlbiB0 aGUgbnZtZSBjb250cm9sbGVyCisrICAgICAgICAgICAqIC9wY2lAYnVzL2ZpYnJlLWNoYW5uZWxA ZGV2LGZ1bmMvbnZtZS1vZi9jb250cm9sbGVyQHRyYW5zcG9ydC1hZGRyLGN0bHItaWQ6bnFuPXRn dC1zdWJzeXN0ZW0tbnFuCisrICAgICAgICAgICAqLworKyAgICAgICAgICBidWZwdHJfcG9zMiA9 IGdydWJfc25wcmludGYgKGJ1ZnB0ciwgNTEyLCAiL252bWUtb2YvY29udHJvbGxlckAlcyxmZmZm Om5xbj0lcyIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnZtZV9j b250cm9sbGVyc190YWJsZVtudm1lX2NvbnRyb2xsZXJfaW5kZXhdLnd3cG4sCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnZtZV9jb250cm9sbGVyc190YWJsZVtudm1l X2NvbnRyb2xsZXJfaW5kZXhdLm5xbik7CisrCSAgZ3J1Yl9kcHJpbnRmICgib2ZkaXNrIiwgIk5W TWVvRjogbnZtZW9mIGNvbnRyb2xsZXI9JXNcbiIsIGJ1Zik7CisrICAgICAgICAgIGlmIChncnVi X2llZWUxMjc1X29wZW4gKGJ1ZiwgJmloYW5kbGUpKQorKwkgICAgeworKyAgICAgICAgICAgICAg Z3J1Yl9kcHJpbnRmICgib2ZkaXNrIiwgImZhaWxlZCB0byBvcGVuIHRoZSBwYXRoPSVzXG4iLCBi dWYpOworKyAgICAgICAgICAgICAgY29udGludWU7CisrCSAgICB9CisrICAgICAgICAgIElOSVRf SUVFRTEyNzVfQ09NTU9OICgmbnZtZV9uYW1lc3BhY2VzX2FyZ3MuY29tbW9uLCAiY2FsbC1tZXRo b2QiLCAyLCAyKTsKKysgICAgICAgICAgbnZtZV9uYW1lc3BhY2VzX2FyZ3MubWV0aG9kID0gKGdy dWJfaWVlZTEyNzVfY2VsbF90KSAiZ2V0LW5hbWVzcGFjZS1saXN0IjsKKysgICAgICAgICAgbnZt ZV9uYW1lc3BhY2VzX2FyZ3MuaWhhbmRsZSA9IGloYW5kbGU7CisrICAgICAgICAgIG52bWVfbmFt ZXNwYWNlc19hcmdzLmNhdGNoX3Jlc3VsdCA9IDA7CisrCisrCSAgaWYgKElFRUUxMjc1X0NBTExf RU5UUllfRk4gKCZudm1lX25hbWVzcGFjZXNfYXJncykgPT0gLTEpCisrICAgICAgICAgICAgewor KyAgICAgICAgICAgICAgZ3J1Yl9kcHJpbnRmICgib2ZkaXNrIiwgImZhaWxlZCB0byBnZXQgdGhl IG52bWUtbmFtZXNwYWNlLWxpc3Qgd2hpbGUgaXRlcmF0aW5nIEZDUCBkaXNrIHBhdGhcbiIpOwor KyAgICAgICAgICAgICAgZ3J1Yl9pZWVlMTI3NV9jbG9zZSAoaWhhbmRsZSk7CisrICAgICAgICAg ICAgICBjb250aW51ZTsKKysgICAgICAgICAgICB9CisrICAgICAgICAgIGdydWJfdWludDMyX3Qg Km5hbWVzcGFjZXMgPSAoZ3J1Yl91aW50MzJfdCopIG52bWVfbmFtZXNwYWNlc19hcmdzLnRhYmxl OworKyAgICAgICAgICBncnViX2RwcmludGYgKCJvZmRpc2siLCAiTlZNZW9GOiBmb3VuZCAlZCBu YW1lc3BhY2VzXG4iLCAoaW50KW52bWVfbmFtZXNwYWNlc19hcmdzLm5lbnRyaWVzKTsKKysJICAg ICAgICAgICAgICAgIGdydWJfaWVlZTEyNzVfY2xvc2UgKGloYW5kbGUpOworKyAgICAgICAgICBu YW1lc3BhY2VfaW5kZXggPSAwOworKyAgICAgICAgICBmb3IgKG5hbWVzcGFjZV9pbmRleD0wOyBu YW1lc3BhY2VfaW5kZXggPCBudm1lX25hbWVzcGFjZXNfYXJncy5uZW50cmllczsgbmFtZXNwYWNl X2luZGV4KyspCisrICAgICAgICAgICAgeworKwkgICAgICBncnViX3NucHJpbnRmIChidWZwdHIr YnVmcHRyX3BvczIsIDUxMiwgIi9uYW1lc3BhY2VAJSJQUkl4R1JVQl9VSU5UMzJfVCwgbmFtZXNw YWNlc1tuYW1lc3BhY2VfaW5kZXhdKTsKKysgICAgICAgICAgICAgIGdydWJfZHByaW50ZiAoIm9m ZGlzayIsICJOVk1lb0Y6IG5hbWVzcGFjZT0lc1xuIiwgYnVmKTsKKysgICAgICAgICAgICAgIGRl dl9pdGVyYXRlX3JlYWwgKGJ1ZiwgYnVmKTsKKysgICAgICAgICAgICB9CisrICAgICAgICAgIGRl dl9pdGVyYXRlX3JlYWwgKGJ1ZiwgYnVmKTsKKysgICAgICAgIH0KKysgICAgfQorKyAgZ3J1Yl9m cmVlIChidWYpOworKyAgZ3J1Yl9mcmVlIChudm1lX2NvbnRyb2xsZXJzX3RhYmxlKTsKKysgIHJl dHVybjsKKyt9CisrCisgc3RhdGljIHZvaWQKKyBkZXZfaXRlcmF0ZSAoY29uc3Qgc3RydWN0IGdy dWJfaWVlZTEyNzVfZGV2YWxpYXMgKmFsaWFzKQorIHsKKyAgIGlmIChncnViX3N0cmNtcCAoYWxp YXMtPnR5cGUsICJmY3AiKSA9PSAwKQorICAgICB7CistICAgICAgLyoKKy0gICAgICAgKiBJZiB3 ZSBhcmUgZGVhbGluZyB3aXRoIGZjcCBkZXZpY2VzLCB3ZSBuZWVkCistICAgICAgICogdG8gZmlu ZCB0aGUgV1dQTnMgYW5kIExVTnMgdG8gaXRlcmF0ZSB0aGVtCistICAgICAgICovCistICAgICAg Z3J1Yl9pZWVlMTI3NV9paGFuZGxlX3QgaWhhbmRsZTsKKy0gICAgICBncnViX3VpbnQ2NF90ICpw dHJfdGFyZ2V0cywgKnB0cl9sdW5zLCBrLCBsOworLSAgICAgIHVuc2lnbmVkIGludCBpLCBqLCBw b3M7CistICAgICAgY2hhciAqYnVmLCAqYnVmcHRyOworLSAgICAgIHN0cnVjdCBzZXRfZmNwX3Rh cmdldHNfYXJncworLSAgICAgIHsKKy0gICAgICAgIHN0cnVjdCBncnViX2llZWUxMjc1X2NvbW1v bl9oZHIgY29tbW9uOworLSAgICAgICAgZ3J1Yl9pZWVlMTI3NV9jZWxsX3QgbWV0aG9kOworLSAg ICAgICAgZ3J1Yl9pZWVlMTI3NV9jZWxsX3QgaWhhbmRsZTsKKy0gICAgICAgIGdydWJfaWVlZTEy NzVfY2VsbF90IGNhdGNoX3Jlc3VsdDsKKy0gICAgICAgIGdydWJfaWVlZTEyNzVfY2VsbF90IG5l bnRyaWVzOworLSAgICAgICAgZ3J1Yl9pZWVlMTI3NV9jZWxsX3QgdGFibGU7CistICAgICAgfSBh cmdzX3RhcmdldHM7CistCistICAgICAgc3RydWN0IHNldF9mY3BfbHVuc19hcmdzCistICAgICAg eworLSAgICAgICAgc3RydWN0IGdydWJfaWVlZTEyNzVfY29tbW9uX2hkciBjb21tb247CistICAg ICAgICBncnViX2llZWUxMjc1X2NlbGxfdCBtZXRob2Q7CistICAgICAgICBncnViX2llZWUxMjc1 X2NlbGxfdCBpaGFuZGxlOworLSAgICAgICAgZ3J1Yl9pZWVlMTI3NV9jZWxsX3Qgd3dwbl9oOwor LSAgICAgICAgZ3J1Yl9pZWVlMTI3NV9jZWxsX3Qgd3dwbl9sOworLSAgICAgICAgZ3J1Yl9pZWVl MTI3NV9jZWxsX3QgY2F0Y2hfcmVzdWx0OworLSAgICAgICAgZ3J1Yl9pZWVlMTI3NV9jZWxsX3Qg bmVudHJpZXM7CistICAgICAgICBncnViX2llZWUxMjc1X2NlbGxfdCB0YWJsZTsKKy0gICAgICB9 IGFyZ3NfbHVuczsKKy0KKy0gICAgICBzdHJ1Y3QgYXJnc19yZXQKKy0gICAgICB7CistICAgICAg ICBncnViX3VpbnQ2NF90IGFkZHI7CistICAgICAgICBncnViX3VpbnQ2NF90IGxlbjsKKy0gICAg ICB9OworLQorLSAgICAgIGlmIChncnViX2llZWUxMjc1X29wZW4gKGFsaWFzLT5wYXRoLCAmaWhh bmRsZSkpCistICAgICAgICB7CistICAgICAgICAgIGdydWJfZHByaW50ZiAoImRpc2siLCAiZmFp bGVkIHRvIG9wZW4gdGhlIGRpc2sgd2hpbGUgaXRlcmF0aW5nIEZDUCBkaXNrIHBhdGg9JXNcbiIs IGFsaWFzLT5wYXRoKTsKKy0gICAgICAgICAgcmV0dXJuOworLSAgICAgICAgfQorLQorLSAgICAg IC8qIFNldHVwIHRoZSBmY3AtdGFyZ2V0cyBtZXRob2QgdG8gY2FsbCB2aWEgcGZ3Ki8KKy0gICAg ICBJTklUX0lFRUUxMjc1X0NPTU1PTiAoJmFyZ3NfdGFyZ2V0cy5jb21tb24sICJjYWxsLW1ldGhv ZCIsIDIsIDMpOworLSAgICAgIGFyZ3NfdGFyZ2V0cy5tZXRob2QgPSAoZ3J1Yl9pZWVlMTI3NV9j ZWxsX3QpICJmY3AtdGFyZ2V0cyI7CistICAgICAgYXJnc190YXJnZXRzLmloYW5kbGUgPSBpaGFu ZGxlOworLQorLSAgICAgIC8qIFNldHVwIHRoZSBmY3AtbHVucyBtZXRob2QgdG8gY2FsbCB2aWEg cGZ3ICovCistICAgICAgSU5JVF9JRUVFMTI3NV9DT01NT04gKCZhcmdzX2x1bnMuY29tbW9uLCAi Y2FsbC1tZXRob2QiLCA0LCAzKTsKKy0gICAgICBhcmdzX2x1bnMubWV0aG9kID0gKGdydWJfaWVl ZTEyNzVfY2VsbF90KSAiZmNwLWx1bnMiOworLSAgICAgIGFyZ3NfbHVucy5paGFuZGxlID0gaWhh bmRsZTsKKy0gICAgICBpZiAoSUVFRTEyNzVfQ0FMTF9FTlRSWV9GTiAoJmFyZ3NfdGFyZ2V0cykg PT0gLTEpCistICAgICAgICB7CistICAgICAgICAgIGdydWJfZHByaW50ZiAoImRpc2siLCAiZmFp bGVkIHRvIGdldCB0aGUgdGFyZ2V0cyB3aGlsZSBpdGVyYXRpbmcgRkNQIGRpc2sgcGF0aD0lc1xu IiwgYWxpYXMtPnBhdGgpOworLSAgICAgICAgICBncnViX2llZWUxMjc1X2Nsb3NlIChpaGFuZGxl KTsKKy0gICAgICAgICAgcmV0dXJuOworLSAgICAgICAgfQorLSAgICAgIGJ1ZiA9IGdydWJfbWFs bG9jIChncnViX3N0cmxlbiAoYWxpYXMtPnBhdGgpICsgMzIgKyAzMik7CistICAgICAgaWYgKCFi dWYpCistICAgICAgICB7CistICAgICAgICAgIGdydWJfaWVlZTEyNzVfY2xvc2UgKGloYW5kbGUp OworLSAgICAgICAgICByZXR1cm47CistICAgICAgICB9CistICAgICAgYnVmcHRyID0gZ3J1Yl9z dHBjcHkgKGJ1ZiwgYWxpYXMtPnBhdGgpOworLQorLSAgICAgIC8qCistICAgICAgICogSXRlcmF0 ZSBvdmVyIGVudHJpZXMgcmV0dXJuZWQgYnkgcGZ3LiBFYWNoIGVudHJ5IGNvbnRhaW5zIGEKKy0g ICAgICAgKiBwb2ludGVyIHRvIHd3cG4gdGFibGUgYW5kIGhpcyBsZW5ndGguCistICAgICAgICov CistICAgICAgc3RydWN0IGFyZ3NfcmV0ICp0YXJnZXRzX3RhYmxlID0gKHN0cnVjdCBhcmdzX3Jl dCAqKSAoYXJnc190YXJnZXRzLnRhYmxlKTsKKy0gICAgICBmb3IgKGkgPSAwOyBpIDwgYXJnc190 YXJnZXRzLm5lbnRyaWVzOyBpKyspCistICAgICAgICB7CistICAgICAgICAgIHB0cl90YXJnZXRz ID0gKGdydWJfdWludDY0X3QqKSB0YXJnZXRzX3RhYmxlW2ldLmFkZHI7CistICAgICAgICAgIC8q IEl0ZXJhdGUgb3ZlciBhbGwgd3dwbnMgaW4gZ2l2ZW4gdGFibGUgKi8KKy0gICAgICAgICAgZm9y KGsgPSAwOyBrIDwgdGFyZ2V0c190YWJsZVtpXS5sZW47IGsrKykKKy0gICAgICAgICAgICB7Cist ICAgICAgICAgICAgICBhcmdzX2x1bnMud3dwbl9sID0gKGdydWJfaWVlZTEyNzVfY2VsbF90KSAo KnB0cl90YXJnZXRzKTsKKy0gICAgICAgICAgICAgIGFyZ3NfbHVucy53d3BuX2ggPSAoZ3J1Yl9p ZWVlMTI3NV9jZWxsX3QpICgqcHRyX3RhcmdldHMgPj4gMzIpOworLSAgICAgICAgICAgICAgcG9z ID0gZ3J1Yl9zbnByaW50ZiAoYnVmcHRyLCAzMiwgIi9kaXNrQCUiIFBSSXhHUlVCX1VJTlQ2NF9U LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnViX2dldF91bmFsaWduZWQ2 NCAoKnB0cl90YXJnZXRzKyspKTsKKy0gICAgICAgICAgICAgIC8qIEdldCB0aGUgbHVucyBmb3Ig Z2l2ZW4gd3dwbiB0YXJnZXQgKi8KKy0gICAgICAgICAgICAgIGlmIChJRUVFMTI3NV9DQUxMX0VO VFJZX0ZOICgmYXJnc19sdW5zKSA9PSAtMSkKKy0gICAgICAgICAgICAgICAgeworLSAgICAgICAg ICAgICAgICAgIGdydWJfZHByaW50ZiAoImRpc2siLCAiZmFpbGVkIHRvIGdldCB0aGUgTFVOUyB3 aGlsZSBpdGVyYXRpbmcgRkNQIGRpc2sgcGF0aD0lc1xuIiwgYnVmKTsKKy0gICAgICAgICAgICAg ICAgICBncnViX2llZWUxMjc1X2Nsb3NlIChpaGFuZGxlKTsKKy0gICAgICAgICAgICAgICAgICBn cnViX2ZyZWUgKGJ1Zik7CistICAgICAgICAgICAgICAgICAgcmV0dXJuOworLSAgICAgICAgICAg ICAgICB9CistICAgICAgICAgICAgICBzdHJ1Y3QgYXJnc19yZXQgKmx1bnNfdGFibGUgPSAoc3Ry dWN0IGFyZ3NfcmV0ICopIChhcmdzX2x1bnMudGFibGUpOworLQorLSAgICAgICAgICAgICAgLyog SXRlcmF0ZSBvdmVyIGFsbCBMVU5zICovCistICAgICAgICAgICAgICBmb3IoaiA9IDA7IGogPCBh cmdzX2x1bnMubmVudHJpZXM7IGorKykKKy0gICAgICAgICAgICAgICAgeworLSAgICAgICAgICAg ICAgICAgIHB0cl9sdW5zID0gKGdydWJfdWludDY0X3QqKSBsdW5zX3RhYmxlW2pdLmFkZHI7Cist ICAgICAgICAgICAgICAgICAgZm9yKGwgPSAwOyBsIDwgbHVuc190YWJsZVtqXS5sZW47IGwrKykK Ky0gICAgICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgICAgZ3J1Yl9zbnBy aW50ZiAoJmJ1ZnB0cltwb3NdLCAzMCwgIiwlIiBQUkl4R1JVQl9VSU5UNjRfVCwKKy0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnViX2dldF91bmFsaWduZWQ2NCAoKnB0cl9s dW5zKyspKTsKKy0gICAgICAgICAgICAgICAgICAgICAgZGV2X2l0ZXJhdGVfcmVhbCAoYnVmLCBi dWYpOworLSAgICAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICB9CistICAgICAg ICAgICAgfQorLSAgICAgICAgfQorLSAgICAgIGdydWJfaWVlZTEyNzVfY2xvc2UgKGloYW5kbGUp OworLSAgICAgIGdydWJfZnJlZSAoYnVmKTsKKy0gICAgICByZXR1cm47CisrICAgICAgLyogSXRl cmF0ZSBkaXNrcyAqLworKyAgICAgIGRldl9pdGVyYXRlX2ZjcF9kaXNrcyAoYWxpYXMpOworKyAg ICAgIC8qIEl0ZXJhdGUgTlZNZW9GICovCisrICAgICAgZGV2X2l0ZXJhdGVfZmNwX252bWVvZiAo YWxpYXMpOworICAgICB9CisgICBlbHNlIGlmIChncnViX3N0cmNtcCAoYWxpYXMtPnR5cGUsICJ2 c2NzaSIpID09IDApCisgICAgIHsKCmRpZmYgLS1naXQgYS9ncnViLnBhdGNoZXMgYi9ncnViLnBh dGNoZXMKaW5kZXggNzRmMGFjZS4uNTBiYjA1NSAxMDA2NDQKLS0tIGEvZ3J1Yi5wYXRjaGVzCisr KyBiL2dydWIucGF0Y2hlcwpAQCAtNDM1LDMgKzQzNSw5IEBAIFBhdGNoMDQzNTogMDQzNS11dGls LWdydWItZWRpdGVudi1yZW1vdmUtc3RhbGUtZW52X2Jsb2NrLW9uLXVuc3VwcG9yLnBhdGNoCiBQ YXRjaDA0MzY6IDA0MzYtQ2hhbmdlLWxvZ2luLWVycm9yLW1lc3NhZ2UucGF0Y2gKIFBhdGNoMDQz NzogMDQzNy1tZHJhaWQtZml4LW1ldGFkYXRhLTEuMC1kZXRlY3Rpb24taW4tdXNlcnNwYWNlLXV0 aWxzLW9uLUlFRUUxMjc1LnBhdGNoCiBQYXRjaDA0Mzg6IDA0MzgtZ3J1Yi1pbnN0YWxsLXVzZS1z ZWFyY2guZnNfdXVpZC1mb3ItUkFJRDEtb24tSUVFRTEyNzUucGF0Y2gKK1BhdGNoMDQzOTogMDQz OS1pZWVlMTI3NS1wb3dlcnBjLWltcGxlbWVudHMtZmlicmUtY2hhbm5lbC1kaXNjb3ZlcnktLnBh dGNoCitQYXRjaDA0NDA6IDA0NDAtaWVlZTEyNzUtaW1wbGVtZW50LUZDUC1tZXRob2RzLWZvci1X V1BOLWFuZC1MVU5zLnBhdGNoCitQYXRjaDA0NDE6IDA0NDEtaWVlZTEyNzUtY2hhbmdlLXRoZS1s b2dpYy1vZi1pZWVlMTI3NV9nZXRfZGV2YXJncy5wYXRjaAorUGF0Y2gwNDQyOiAwNDQyLWllZWUx Mjc1LW9mcGF0aC1lbmFibGUtTlZNZW9GLWxvZ2ljYWwtZGV2aWNlLXRyYW5zbGEucGF0Y2gKK1Bh dGNoMDQ0MzogMDQ0My1pZWVlMTI3NS1zdXBwb3J0LWFkZGVkLWZvci1tdWx0aXBsZS1udm1lLWJv b3RwYXRocy5wYXRjaAorUGF0Y2gwNDQ0OiAwNDQ0LWllZWUxMjc1LWFkZC1zdXBwb3J0LWZvci1O Vk1lb0ZDLnBhdGNoCgpkaWZmIC0tZ2l0IGEvZ3J1YjIuc3BlYyBiL2dydWIyLnNwZWMKaW5kZXgg OGZhNDdiNS4uYzk1MTA4MyAxMDA2NDQKLS0tIGEvZ3J1YjIuc3BlYworKysgYi9ncnViMi5zcGVj CkBAIC0xNyw3ICsxNyw3IEBACiBOYW1lOgkJZ3J1YjIKIEVwb2NoOgkJMQogVmVyc2lvbjoJMi4x MgotUmVsZWFzZToJNjYlez9kaXN0fQorUmVsZWFzZToJNjclez9kaXN0fQogU3VtbWFyeToJQm9v dGxvYWRlciB3aXRoIHN1cHBvcnQgZm9yIExpbnV4LCBNdWx0aWJvb3QgYW5kIG1vcmUKIExpY2Vu c2U6CUdQTC0zLjAtb3ItbGF0ZXIKIFVSTDoJCWh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9n cnViLwpAQCAtNjI1LDYgKzYyNSw5IEBAIGZpCiAlZW5kaWYKIAogJWNoYW5nZWxvZworKiBUaHUg SnVuIDI1IDIwMjYgTmljb2xhcyBGcmF5ZXIgPG5mcmF5ZXJAcmVkaGF0LmNvbT4gLSAyLjEyLTY3 CistIGllZWUxMjc1L3Bvd2VycGM6IGltcGxlbWVudHMgZmlicmUgY2hhbm5lbCBkaXNjb3Zlcnkg Zm9yIG9mcGF0aG5hbWUKKwogKiBUaHUgSnVuIDI1IDIwMjYgTGVvIFNhbmRvdmFsIDxsc2FuZG92 YUByZWRoYXQuY29tPiAtIDIuMTItNjYKIC0gc3BlYyBlZmkgcG9zdHR0cmFuczogcmVtb3ZlIG1v dW50cG9pbnQgY2hlY2sKIC0gUmVzb2x2ZXM6ICMyNDkyMTQwCg==