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: Ondrej Holy To: git-commits@fedoraproject.org Subject: [rpms/freerdp2] epel10: Backport several CVE fixes Date: Tue, 01 Sep 2026 12:58:31 GMT Message-ID: <178826751176.1.12504132216976133895.rpms-freerdp2-178cb795e938@fedoraproject.org> List-ID: X-Git-Repo: rpms/freerdp2 X-Git-Branch: epel10 X-Git-Rev: 178cb795e9381a8a88491dcca5abbca88d7873e9 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZnJlZXJkcDIKICAgICAgICAgICAgQnJhbmNoIDogZXBlbDEwCiAgICAgICAg ICAgIENvbW1pdCA6IDE3OGNiNzk1ZTkzODFhOGE4ODQ5MWRjY2E1YWJiY2E4OGQ3ODczZTkKICAg ICAgICAgICAgQXV0aG9yIDogT25kcmVqIEhvbHkgPG9ob2x5QHJlZGhhdC5jb20+CiAgICAgICAg ICAgIERhdGUgICA6IDIwMjYtMDktMDFUMDg6NTU6NTgrMDA6MDAKICAgICAgICAgICAgU3RhdHMg IDogKzQ3MzcvLTEgaW4gNTMgZmlsZShzKQogICAgICAgICAgICBVUkwgICAgOiBodHRwczovL3Ny Yy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2ZyZWVyZHAyL2MvMTc4Y2I3OTVlOTM4MWE4YTg4NDkx ZGNjYTVhYmJjYTg4ZDc4NzNlOT9icmFuY2g9ZXBlbDEwCgogICAgICAgICAgICBMb2c6CiAgICAg ICAgICAgIEJhY2twb3J0IHNldmVyYWwgQ1ZFIGZpeGVzCgpJdCBmaXhlcyBDVkUtMjAyNi0yMjg1 MiwgQ1ZFLTIwMjYtMjI4NTQsIENWRS0yMDI2LTIyODU1LCBDVkUtMjAyNi0yMjg1NiwKQ1ZFLTIw MjYtMjI4NTgsIENWRS0yMDI2LTIyODU5LCBDVkUtMjAyNi0yMzUzMCwgQ1ZFLTIwMjYtMjM1MzEs IENWRS0yMDI2LTIzNTMyLApDVkUtMjAyNi0yMzUzMywgQ1ZFLTIwMjYtMjM1MzQsIENWRS0yMDI2 LTIzNzMyLCBDVkUtMjAyNi0yMzg4MywgQ1ZFLTIwMjYtMjM4ODQsCkNWRS0yMDI2LTIzOTQ4LCBD VkUtMjAyNi0yNDQ5MSwgQ1ZFLTIwMjYtMjQ2NzUsIENWRS0yMDI2LTI0Njc2LCBDVkUtMjAyNi0y NDY3OSwKQ1ZFLTIwMjYtMjQ2ODEsIENWRS0yMDI2LTI0NjgzLCBDVkUtMjAyNi0yNDY4NCwgQ1ZF LTIwMjYtMjU5NTIsIENWRS0yMDI2LTI2OTU1LApDVkUtMjAyNi0yNjk2NSwgQ1ZFLTIwMjYtMjY5 ODYsIENWRS0yMDI2LTI3OTUxLCBDVkUtMjAyNi0yOTc3NSwgQ1ZFLTIwMjYtMzE4MDYsCkNWRS0y MDI2LTMxODgzLCBDVkUtMjAyNi0zMTg4NCwgQ1ZFLTIwMjYtMzE4ODUsIENWRS0yMDI2LTMzOTgz LCBDVkUtMjAyNi0zMzk4NCwKQ1ZFLTIwMjYtMzM5ODUsIENWRS0yMDI2LTQ1NzAwLCBDVkUtMjAy Ni02NDYyNCwgQ1ZFLTIwMjYtNjcyODksIENWRS0yMDI2LTY3Mjk5IGFuZApDVkUtMjAyNi02ODU4 MC4KClJlc29sdmVzOiByaGJ6IzI0MzA5MTUsIHJoYnojMjQzMDkwNCwgcmhieiMyNDMwODk0LCBy aGJ6IzI0MzA5MTAsIHJoYnojMjQzMDg5OQpSZXNvbHZlczogcmhieiMyNDMwOTIwLCByaGJ6IzI0 MzA5MjksIHJoYnojMjQyOTc5MiwgcmhieiMyNDI5ODAxLCByaGJ6IzI0Mjk3ODIKUmVzb2x2ZXM6 IHJoYnojMjQ0MzE0NCwgcmhieiMyNDQyOTcxLCByaGJ6IzI0Mjk3ODAsIHJoYnojMjQyOTc5Niwg cmhieiMyNDI5Nzg2ClJlc29sdmVzOiByaGJ6IzI0MzgyNTgsIHJoYnojMjQzODI1NiwgcmhieiMy NDM4MjUyLCByaGJ6IzI0MzgzMjAsIHJoYnojMjQzODI1MwpSZXNvbHZlczogcmhieiMyNDM4MjU0 LCByaGJ6IzI0MzgyNTEsIHJoYnojMjQzODI2MSwgcmhieiMyNDQ3MzkyLCByaGJ6IzI0NTMyNDEK UmVzb2x2ZXM6IHJoYnojMjQ1MzIzOCwgcmhieiMyNDQyODAyLCByaGJ6IzI0NDI4MDAsIHJoYnoj MjQ0NzQyNywgcmhieiMyNDQ3NDMwClJlc29sdmVzOiByaGJ6IzI0NDc0MTEsIHJoYnojMjQ0NzQx NCwgcmhieiMyNDUzMjQ1LCByaGJ6IzI0NDI4MDcsIHJoYnojMjQ5MTY4NApSZXNvbHZlczogcmhi eiMyNTEwMjk0LCByaGJ6IzI1MTA2NDUsIHJoYnojMjUwMzY0NCwgcmhieiMyNTEwNDQ2CgpDby1B dXRob3JlZC1CeTogQ2xhdWRlIFNvbm5ldCA0LjYgKDFNIGNvbnRleHQpIDxub3JlcGx5QGFudGhy b3BpYy5jb20+CgotLS0KZGlmZiAtLWdpdCBhL2FsbG9jYXRpb25zLWZpeC1ncm93dGgtb2YtcHJl YWxsb2NhdGVkLWJ1ZmZlcnMucGF0Y2ggYi9hbGxvY2F0aW9ucy1maXgtZ3Jvd3RoLW9mLXByZWFs bG9jYXRlZC1idWZmZXJzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LjgzNDgzOWQKLS0tIC9kZXYvbnVsbAorKysgYi9hbGxvY2F0aW9ucy1maXgtZ3Jvd3RoLW9mLXBy ZWFsbG9jYXRlZC1idWZmZXJzLnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK0Zyb20gNTYzYTE5YTY4 M2Q2ZTBlN2IxMjE4ZTQ1NThhMGZiNzUzMzNiNWIzNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK K0Zyb206IE9uZHJlaiBIb2x5IDxvaG9seUByZWRoYXQuY29tPgorRGF0ZTogVHVlLCAyOCBBcHIg MjAyNiAwNDoxNDoyMyArMDAwMAorU3ViamVjdDogW1BBVENIXSBbYWxsb2NhdGlvbnNdIGZpeCBn cm93dGggb2YgcHJlYWxsb2NhdGVkIGJ1ZmZlcnMKKworUGFydGlhbCBiYWNrcG9ydCBvZiBjb21t aXQgMTE4YWZjMGI5NTRiYTlkNTYzMmI3ODM2YWQyNGU0NTQ1NTVlZDExMy4KKworT25seSB0aGUg YFN0cmVhbV9FbnN1cmVDYXBhY2l0eWAgZml4IGlzIGluY2x1ZGVkLiBPdGhlciBjaGFuZ2VzIGZy b20KK3RoZSB1cHN0cmVhbSBjb21taXQgKGBzaXplb2YoV0NIQVIpYCByZXBsYWNlbWVudHMsIGNv bGxlY3Rpb24gZ3Jvd3RoCitwYXR0ZXJucywgZW52aXJvbm1lbnQgYmxvY2sgaGFuZGxpbmcpIGFy ZSB1bnJlbGF0ZWQgdG8gQ1ZFLTIwMjYtMjc5NTEuCisKK01hZGUtd2l0aDogQ3Vyc29yCistLS0K KyB3aW5wci9saWJ3aW5wci91dGlscy9zdHJlYW0uYyB8IDYgKysrKy0tCisgMSBmaWxlIGNoYW5n ZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3dpbnBy L2xpYndpbnByL3V0aWxzL3N0cmVhbS5jIGIvd2lucHIvbGlid2lucHIvdXRpbHMvc3RyZWFtLmMK K2luZGV4IGNjMTE5YzcuLmNiMTQ1YjAgMTAwNjQ0CistLS0gYS93aW5wci9saWJ3aW5wci91dGls cy9zdHJlYW0uYworKysrIGIvd2lucHIvbGlid2lucHIvdXRpbHMvc3RyZWFtLmMKK0BAIC00MCw4 ICs0MCwxMCBAQCBCT09MIFN0cmVhbV9FbnN1cmVDYXBhY2l0eSh3U3RyZWFtKiBzLCBzaXplX3Qg c2l6ZSkKKyAKKyAJCWRvCisgCQl7CistCQkJbmV3X2NhcGFjaXR5ICo9IDI7CistCQl9IHdoaWxl IChuZXdfY2FwYWNpdHkgPCBzaXplKTsKKysJCQlpZiAobmV3X2NhcGFjaXR5ID4gU0laRV9NQVgg LSAxMjh1bGwpCisrCQkJCXJldHVybiBGQUxTRTsKKysJCQluZXdfY2FwYWNpdHkgKz0gMTI4dWxs OworKwkJfSB3aGlsZSAobmV3X2NhcGFjaXR5IDw9IHNpemUpOworIAorIAkJcG9zaXRpb24gPSBT dHJlYW1fR2V0UG9zaXRpb24ocyk7CisgCistLSAKKzIuNTMuMAorCgpkaWZmIC0tZ2l0IGEvY2Fj aGUtYml0bWFwLWluaXRpYWxpemUtb3ZlcmFsbG9jYXRlZC1iaXRtYXAtY2FjaGUtZXh0cmEtc2xv dC5wYXRjaCBiL2NhY2hlLWJpdG1hcC1pbml0aWFsaXplLW92ZXJhbGxvY2F0ZWQtYml0bWFwLWNh Y2hlLWV4dHJhLXNsb3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u ZjMwMWZiNwotLS0gL2Rldi9udWxsCisrKyBiL2NhY2hlLWJpdG1hcC1pbml0aWFsaXplLW92ZXJh bGxvY2F0ZWQtYml0bWFwLWNhY2hlLWV4dHJhLXNsb3QucGF0Y2gKQEAgLTAsMCArMSw1MiBAQAor RnJvbSAyMzMyMGE2ZDVmMmUxYzhhOWI3ZDZmNGUzYzJhMWIwOTg3NjU0MzIxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQorRnJvbTogT25kcmVqIEhvbHkgPG9ob2x5QHJlZGhhdC5jb20+CitEYXRl OiBUdWUsIDI4IEFwciAyMDI2IDA0OjI1OjU4ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIFtjYWNo ZSxiaXRtYXBdIGluaXRpYWxpemUgb3ZlcmFsbG9jYXRlZCBiaXRtYXAgY2FjaGUgZXh0cmEKKyBz bG90CisKK0JhY2twb3J0IG9mIGNvbW1pdCA4MjcwZTBiYjNkNjcyNmM5NDdkNTdjOTNiYTljYWE5 MmEwNTJiNTU3LgorCitBZGp1c3RlZCBodW5rIG9mZnNldHMgZm9yIDIuMTEuNy4KKworTWFkZS13 aXRoOiBDdXJzb3IKKy0tLQorIGxpYmZyZWVyZHAvY2FjaGUvYml0bWFwLmMgfCAxNiArKysrKysr KysrKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24o LSkKKworZGlmZiAtLWdpdCBhL2xpYmZyZWVyZHAvY2FjaGUvYml0bWFwLmMgYi9saWJmcmVlcmRw L2NhY2hlL2JpdG1hcC5jCitpbmRleCBiOGE0ZjIxLi4yMzMyMGE2IDEwMDY0NAorLS0tIGEvbGli ZnJlZXJkcC9jYWNoZS9iaXRtYXAuYworKysrIGIvbGliZnJlZXJkcC9jYWNoZS9iaXRtYXAuYwor QEAgLTMwMyw2ICszMDMsMTkgQEAgcmRwQml0bWFwQ2FjaGUqIGJpdG1hcF9jYWNoZV9uZXcocmRw U2V0dGluZ3MqIHNldHRpbmdzKQorIAkJY2VsbC0+bnVtYmVyID0gbnI7CisgCX0KKyAKKysJLyog aW5pdGlhbGl6ZSB0aGUgb3ZlcmFsbG9jYXRlZCBleHRyYSBzbG90IGZvciBvbGQgUkRQIHNlcnZl cnMgdGhhdCBzZW5kCisrCSAqIGNhY2hlSWQgPT0gbWF4Q2VsbHM7IHVzZSBhIG1pbmltYWwgYWxs b2NhdGlvbiBzaW5jZSBubyBwcm90b2NvbC1uZWdvdGlhdGVkCisrCSAqIGNhcGFjaXR5IGV4aXN0 cyBmb3IgdGhpcyBzbG90ICovCisrCXsKKysJCUJJVE1BUF9WMl9DRUxMKiBleHRyYSA9ICZiaXRt YXBDYWNoZS0+Y2VsbHNbYml0bWFwQ2FjaGUtPm1heENlbGxzXTsKKysJCS8qIGFsbG9jYXRlIGFu IGV4dHJhIGVudHJ5IGZvciBCSVRNQVBfQ0FDSEVfV0FJVElOR19MSVNUX0lOREVYICovCisrCQll eHRyYS0+ZW50cmllcyA9IChyZHBCaXRtYXAqKiljYWxsb2MoMSwgc2l6ZW9mKHJkcEJpdG1hcCop KTsKKysKKysJCWlmICghZXh0cmEtPmVudHJpZXMpCisrCQkJZ290byBmYWlsOworKwkJZXh0cmEt Pm51bWJlciA9IDA7CisrCX0KKysKKyAJcmV0dXJuIGJpdG1hcENhY2hlOworIGZhaWw6CisgCitA QCAtMzE1LDcgKzMyOCw4IEBAIHZvaWQgYml0bWFwX2NhY2hlX2ZyZWUocmRwQml0bWFwQ2FjaGUq IGJpdG1hcENhY2hlKQorIAlpZiAoYml0bWFwQ2FjaGUpCisgCXsKKyAJCVVJTlQzMiBpOworLQkJ Zm9yIChpID0gMDsgaSA8IGJpdG1hcENhY2hlLT5tYXhDZWxsczsgaSsrKQorKwkJLyogaXRlcmF0 ZSB0aHJvdWdoIG1heENlbGxzICsgMSB0byBhbHNvIGZyZWUgdGhlIG92ZXJhbGxvY2F0ZWQgZXh0 cmEgc2xvdCAqLworKwkJZm9yIChpID0gMDsgaSA8PSBiaXRtYXBDYWNoZS0+bWF4Q2VsbHM7IGkr KykKKyAJCXsKKyAJCQlVSU5UMzIgajsKKyAJCQlCSVRNQVBfVjJfQ0VMTCogY2VsbCA9ICZiaXRt YXBDYWNoZS0+Y2VsbHNbaV07CistLSAKKzIuNTMuMAorCgpkaWZmIC0tZ2l0IGEvY2FjaGUtYml0 bWFwLW92ZXJhbGxvY2F0ZS1iaXRtYXAtY2FjaGUucGF0Y2ggYi9jYWNoZS1iaXRtYXAtb3ZlcmFs bG9jYXRlLWJpdG1hcC1jYWNoZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi5kNWYwZWRjCi0tLSAvZGV2L251bGwKKysrIGIvY2FjaGUtYml0bWFwLW92ZXJhbGxvY2F0 ZS1iaXRtYXAtY2FjaGUucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSA2MDhjNWQ0MGY2YWI0 Y2FiZDRkNTc5M2IyZDY0MWY0MDFlMTQ2MjMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJv bTogT25kcmVqIEhvbHkgPG9ob2x5QHJlZGhhdC5jb20+CitEYXRlOiBUdWUsIDI4IEFwciAyMDI2 IDA0OjI1OjUyICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIFtjYWNoZSxiaXRtYXBdIG92ZXJhbGxv Y2F0ZSBiaXRtYXAgY2FjaGUKKworQmFja3BvcnQgb2YgY29tbWl0IGZmYWQ1OGZkMmIzMjllZmQ4 MWEzMjM5ZTlkN2UzYzkyN2I4ZTUwM2YuCisKK0FkanVzdGVkIGh1bmsgb2Zmc2V0cyBmb3IgMi4x MS43LgorCitNYWRlLXdpdGg6IEN1cnNvcgorLS0tCisgbGliZnJlZXJkcC9jYWNoZS9iaXRtYXAu YyB8IDUgKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9u KC0pCisKK2RpZmYgLS1naXQgYS9saWJmcmVlcmRwL2NhY2hlL2JpdG1hcC5jIGIvbGliZnJlZXJk cC9jYWNoZS9iaXRtYXAuYworaW5kZXggMGNlMjU5OS4uYjhhNGYyMSAxMDA2NDQKKy0tLSBhL2xp YmZyZWVyZHAvY2FjaGUvYml0bWFwLmMKKysrKyBiL2xpYmZyZWVyZHAvY2FjaGUvYml0bWFwLmMK K0BAIC0yODEsOCArMjgxLDEwIEBAIHJkcEJpdG1hcENhY2hlKiBiaXRtYXBfY2FjaGVfbmV3KHJk cFNldHRpbmdzKiBzZXR0aW5ncykKKyAJYml0bWFwQ2FjaGUtPnNldHRpbmdzID0gc2V0dGluZ3M7 CisgCWJpdG1hcENhY2hlLT51cGRhdGUgPSAoKGZyZWVyZHAqKXNldHRpbmdzLT5pbnN0YW5jZSkt PnVwZGF0ZTsKKyAJYml0bWFwQ2FjaGUtPmNvbnRleHQgPSBiaXRtYXBDYWNoZS0+dXBkYXRlLT5j b250ZXh0OworKworKwkvKiBvdmVyYWxsb2NhdGUgYnkgMS4gb2xkZXIgUkRQIHNlcnZlcnMgZG8g c2VuZCBhIG9mZiBieSAxIGNhY2hlIGluZGV4LiAqLworIAliaXRtYXBDYWNoZS0+Y2VsbHMgPQor LQkgICAgKEJJVE1BUF9WMl9DRUxMKiljYWxsb2Moc2V0dGluZ3MtPkJpdG1hcENhY2hlVjJOdW1D ZWxscywgc2l6ZW9mKEJJVE1BUF9WMl9DRUxMKSk7CisrCSAgICAoQklUTUFQX1YyX0NFTEwqKWNh bGxvYyhzZXR0aW5ncy0+Qml0bWFwQ2FjaGVWMk51bUNlbGxzICsgMXVsbCwgc2l6ZW9mKEJJVE1B UF9WMl9DRUxMKSk7CisgCisgCWlmICghYml0bWFwQ2FjaGUtPmNlbGxzKQorIAkJZ290byBmYWls OworLS0gCisyLjUzLjAKKwoKZGlmZiAtLWdpdCBhL2NhY2hlLW9mZnNjcmVlbi1pbnZhbGlkYXRl LWJpdG1hcC1iZWZvcmUtZnJlZS5wYXRjaCBiL2NhY2hlLW9mZnNjcmVlbi1pbnZhbGlkYXRlLWJp dG1hcC1iZWZvcmUtZnJlZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li4zM2UwOTRkCi0tLSAvZGV2L251bGwKKysrIGIvY2FjaGUtb2Zmc2NyZWVuLWludmFsaWRhdGUt Yml0bWFwLWJlZm9yZS1mcmVlLnBhdGNoCkBAIC0wLDAgKzEsNDYgQEAKK0Zyb20gNGE0MTI2Mzgw NDMwYTM1MTdkMTAxNWI2Mjg0NzViODE2NzA1Y2ViNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK K0Zyb206IE9uZHJlaiBIb2x5IDxvaG9seUByZWRoYXQuY29tPgorRGF0ZTogVGh1LCAyMiBKYW4g MjAyNiAxMjo1MjoxNiArMDEwMAorU3ViamVjdDogW1BBVENIXSBbY2FjaGUsb2Zmc2NyZWVuXSBp bnZhbGlkYXRlIGJpdG1hcCBiZWZvcmUgZnJlZQorCitCYWNrcG9ydCBvZiBjb21taXQgNTIxMDZh MjY3MjZhMmFiYTc3YWE2ZDg2MDE0ZDJlYjM1MDdmMDc4My4KKworQ28tQXV0aG9yZWQtQnk6IENs YXVkZSA8bm9yZXBseUBhbnRocm9waWMuY29tPgorLS0tCisgbGliZnJlZXJkcC9jYWNoZS9vZmZz Y3JlZW4uYyB8IDEwICsrKysrKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCsp LCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliZnJlZXJkcC9jYWNoZS9vZmZzY3Jl ZW4uYyBiL2xpYmZyZWVyZHAvY2FjaGUvb2Zmc2NyZWVuLmMKK2luZGV4IGNkYWQ1NmI0ZC4uMTFl NmNhZjIxIDEwMDY0NAorLS0tIGEvbGliZnJlZXJkcC9jYWNoZS9vZmZzY3JlZW4uYworKysrIGIv bGliZnJlZXJkcC9jYWNoZS9vZmZzY3JlZW4uYworQEAgLTE2MCw3ICsxNjAsNyBAQCB2b2lkIG9m ZnNjcmVlbl9jYWNoZV9wdXQocmRwT2Zmc2NyZWVuQ2FjaGUqIG9mZnNjcmVlbkNhY2hlLCBVSU5U MzIgaW5kZXgsIHJkcEJpdAorIAorIHZvaWQgb2Zmc2NyZWVuX2NhY2hlX2RlbGV0ZShyZHBPZmZz Y3JlZW5DYWNoZSogb2Zmc2NyZWVuQ2FjaGUsIFVJTlQzMiBpbmRleCkKKyB7CistCXJkcEJpdG1h cCogcHJldkJpdG1hcDsKKysJV0lOUFJfQVNTRVJUKG9mZnNjcmVlbkNhY2hlKTsKKyAKKyAJaWYg KGluZGV4ID49IG9mZnNjcmVlbkNhY2hlLT5tYXhFbnRyaWVzKQorIAl7CitAQCAtMTY4LDEwICsx NjgsMTYgQEAgdm9pZCBvZmZzY3JlZW5fY2FjaGVfZGVsZXRlKHJkcE9mZnNjcmVlbkNhY2hlKiBv ZmZzY3JlZW5DYWNoZSwgVUlOVDMyIGluZGV4KQorIAkJcmV0dXJuOworIAl9CisgCistCXByZXZC aXRtYXAgPSBvZmZzY3JlZW5DYWNoZS0+ZW50cmllc1tpbmRleF07CisrCXJkcEJpdG1hcCogcHJl dkJpdG1hcCA9IG9mZnNjcmVlbkNhY2hlLT5lbnRyaWVzW2luZGV4XTsKKyAKKyAJaWYgKHByZXZC aXRtYXAgIT0gTlVMTCkKKysJeworKwkJV0lOUFJfQVNTRVJUKG9mZnNjcmVlbkNhY2hlLT51cGRh dGUtPmNvbnRleHQpOworKworKwkJLyogRW5zdXJlIHRoYXQgdGhlIGJpdG1hcCBpcyBubyBsb25n ZXIgdXNlZCBpbiBHREkgKi8KKysJCUlGQ0FMTChwcmV2Qml0bWFwLT5TZXRTdXJmYWNlLCBvZmZz Y3JlZW5DYWNoZS0+dXBkYXRlLT5jb250ZXh0LCBOVUxMLCBGQUxTRSk7CisgCQlCaXRtYXBfRnJl ZShvZmZzY3JlZW5DYWNoZS0+dXBkYXRlLT5jb250ZXh0LCBwcmV2Qml0bWFwKTsKKysJfQorIAor IAlvZmZzY3JlZW5DYWNoZS0+ZW50cmllc1tpbmRleF0gPSBOVUxMOworIH0KKy0tIAorMi41Mi4w CisKCmRpZmYgLS1naXQgYS9jaGFubmVsLXJkcHNuZC1vbmx5LWNsZWFuLXVwLXRocmVhZC1iZWZv cmUtZnJlZS5wYXRjaCBiL2NoYW5uZWwtcmRwc25kLW9ubHktY2xlYW4tdXAtdGhyZWFkLWJlZm9y ZS1mcmVlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhZTk4MWEK LS0tIC9kZXYvbnVsbAorKysgYi9jaGFubmVsLXJkcHNuZC1vbmx5LWNsZWFuLXVwLXRocmVhZC1i ZWZvcmUtZnJlZS5wYXRjaApAQCAtMCwwICsxLDExNyBAQAorRnJvbSBiOTZiZmE0ODVhMjg2MzM1 YmNiNGM2OThmYTY0OTBmYjRhOThiOWU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTog T25kcmVqIEhvbHkgPG9ob2x5QHJlZGhhdC5jb20+CitEYXRlOiBGcmksIDEzIE1hciAyMDI2IDE1 OjQ3OjExICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFtjaGFubmVsLHJkcHNuZF0gb25seSBjbGVh biB1cCB0aHJlYWQgYmVmb3JlIGZyZWUKKworQmFja3BvcnQgb2YgY29tbWl0IGFmYTY4NTFkYzgw ODM1ZDMxMDFlNDBmY2VmNTFiNmM1YzBmNDNlYTUuCisKK01hZGUtd2l0aDogQ3Vyc29yCistLS0K KyBjaGFubmVscy9yZHBzbmQvY2xpZW50L3JkcHNuZF9tYWluLmMgfCAzNyArKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKyksIDE2IGRl bGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY2hhbm5lbHMvcmRwc25kL2NsaWVudC9yZHBzbmRf bWFpbi5jIGIvY2hhbm5lbHMvcmRwc25kL2NsaWVudC9yZHBzbmRfbWFpbi5jCitpbmRleCBjNzY2 MGE4NTcuLjU3NmUwNjVkMiAxMDA2NDQKKy0tLSBhL2NoYW5uZWxzL3JkcHNuZC9jbGllbnQvcmRw c25kX21haW4uYworKysrIGIvY2hhbm5lbHMvcmRwc25kL2NsaWVudC9yZHBzbmRfbWFpbi5jCitA QCAtMTMzLDYgKzEzMyw4IEBAIHN0cnVjdCByZHBzbmRfcGx1Z2luCisgCUJPT0wgYXBwbHlWb2x1 bWU7CisgfTsKKyAKKytzdGF0aWMgRFdPUkQgV0lOQVBJIHBsYXlfdGhyZWFkKExQVk9JRCBhcmcp OworKworIHN0YXRpYyBjb25zdCBjaGFyKiByZHBzbmRfaXNfZHluX3N0cihCT09MIGR5bmFtaWMp CisgeworIAlpZiAoZHluYW1pYykKK0BAIC0xMjY3LDcgKzEyNjksNiBAQCBzdGF0aWMgdm9pZCBj bGVhbnVwX2ludGVybmFscyhyZHBzbmRQbHVnaW4qIHJkcHNuZCkKKyAJaWYgKCFyZHBzbmQpCisg CQlyZXR1cm47CisgCistCXJkcHNuZF90ZXJtaW5hdGVfdGhyZWFkKHJkcHNuZCk7CisgCWlmIChy ZHBzbmQtPnBvb2wpCisgCQlTdHJlYW1Qb29sX1JldHVybihyZHBzbmQtPnBvb2wsIHJkcHNuZC0+ ZGF0YV9pbik7CisgCitAQCAtMTMzMSw2ICsxMzMyLDcgQEAgc3RhdGljIHZvaWQgZnJlZV9pbnRl cm5hbHMocmRwc25kUGx1Z2luKiByZHBzbmQpCisgCWlmICghcmRwc25kKQorIAkJcmV0dXJuOwor IAorKwlyZHBzbmRfdGVybWluYXRlX3RocmVhZChyZHBzbmQpOworIAlmcmVlcmRwX2RzcF9jb250 ZXh0X2ZyZWUocmRwc25kLT5kc3BfY29udGV4dCk7CisgCVN0cmVhbVBvb2xfRnJlZShyZHBzbmQt PnBvb2wpOworIAlyZHBzbmQtPnBvb2wgPSBOVUxMOworQEAgLTEzNTMsNiArMTM1NSwyMyBAQCBz dGF0aWMgQk9PTCBhbGxvY2F0ZV9pbnRlcm5hbHMocmRwc25kUGx1Z2luKiByZHBzbmQpCisgCQkJ cmV0dXJuIEZBTFNFOworIAl9CisgCisrCWlmICghcmRwc25kLT5xdWV1ZSkKKysJeworKwkJd09i amVjdCBvYmogPSB7IDAgfTsKKysKKysJCW9iai5mbk9iamVjdEZyZWUgPSBfcXVldWVfZnJlZTsK KysJCXJkcHNuZC0+cXVldWUgPSBNZXNzYWdlUXVldWVfTmV3KCZvYmopOworKwkJaWYgKCFyZHBz bmQtPnF1ZXVlKQorKwkJCXJldHVybiBGQUxTRTsKKysJfQorKworKwlpZiAoIXJkcHNuZC0+dGhy ZWFkKQorKwl7CisrCQlyZHBzbmQtPnRocmVhZCA9IENyZWF0ZVRocmVhZChOVUxMLCAwLCBwbGF5 X3RocmVhZCwgcmRwc25kLCAwLCBOVUxMKTsKKysJCWlmICghcmRwc25kLT50aHJlYWQpCisrCQkJ cmV0dXJuIEZBTFNFOworKwl9CisrCisgCXJldHVybiBUUlVFOworIH0KKyAKK0BAIC0xMzkxLDIz ICsxNDEwLDEyIEBAIHN0YXRpYyBEV09SRCBXSU5BUEkgcGxheV90aHJlYWQoTFBWT0lEIGFyZykK KyAKKyBzdGF0aWMgVUlOVCByZHBzbmRfdmlydHVhbF9jaGFubmVsX2V2ZW50X2luaXRpYWxpemVk KHJkcHNuZFBsdWdpbiogcmRwc25kKQorIHsKKy0Jd09iamVjdCBvYmogPSB7IDAgfTsKKy0KKyAJ aWYgKCFyZHBzbmQpCisgCQlyZXR1cm4gRVJST1JfSU5WQUxJRF9QQVJBTUVURVI7CisgCistCW9i ai5mbk9iamVjdEZyZWUgPSBfcXVldWVfZnJlZTsKKy0JcmRwc25kLT5xdWV1ZSA9IE1lc3NhZ2VR dWV1ZV9OZXcoJm9iaik7CistCWlmICghcmRwc25kLT5xdWV1ZSkKKy0JCXJldHVybiBDSEFOTkVM X1JDX05PX01FTU9SWTsKKy0KKyAJaWYgKCFhbGxvY2F0ZV9pbnRlcm5hbHMocmRwc25kKSkKKyAJ CXJldHVybiBDSEFOTkVMX1JDX05PX01FTU9SWTsKKyAKKy0JcmRwc25kLT50aHJlYWQgPSBDcmVh dGVUaHJlYWQoTlVMTCwgMCwgcGxheV90aHJlYWQsIHJkcHNuZCwgMCwgTlVMTCk7CistCWlmICgh cmRwc25kLT50aHJlYWQpCistCQlyZXR1cm4gQ0hBTk5FTF9SQ19JTklUSUFMSVpBVElPTl9FUlJP UjsKKy0KKyAJcmV0dXJuIENIQU5ORUxfUkNfT0s7CisgfQorIAorQEAgLTE0MTUsOCArMTQyMyw2 IEBAIHZvaWQgcmRwc25kX3ZpcnR1YWxfY2hhbm5lbF9ldmVudF90ZXJtaW5hdGVkKHJkcHNuZFBs dWdpbiogcmRwc25kKQorIHsKKyAJaWYgKHJkcHNuZCkKKyAJeworLQkJcmRwc25kX3Rlcm1pbmF0 ZV90aHJlYWQocmRwc25kKTsKKy0KKyAJCWZyZWVfaW50ZXJuYWxzKHJkcHNuZCk7CisgCQlhdWRp b19mb3JtYXRzX2ZyZWUocmRwc25kLT5maXhlZF9mb3JtYXQsIDEpOworIAkJZnJlZShyZHBzbmQt PnN1YnN5c3RlbSk7CitAQCAtMTYwNCwxNCArMTYxMCwxMyBAQCBzdGF0aWMgVUlOVCByZHBzbmRf b25fY2xvc2UoSVdUU1ZpcnR1YWxDaGFubmVsQ2FsbGJhY2sqIHBDaGFubmVsQ2FsbGJhY2spCisg CQlJRkNBTEwocmRwc25kLT5kZXZpY2UtPkNsb3NlLCByZHBzbmQtPmRldmljZSk7CisgCisgCWNs ZWFudXBfaW50ZXJuYWxzKHJkcHNuZCk7CistCisrCWZyZWVfaW50ZXJuYWxzKHJkcHNuZCk7Cisg CWlmIChyZHBzbmQtPmRldmljZSkKKyAJeworIAkJSUZDQUxMKHJkcHNuZC0+ZGV2aWNlLT5GcmVl LCByZHBzbmQtPmRldmljZSk7CisgCQlyZHBzbmQtPmRldmljZSA9IE5VTEw7CisgCX0KKyAKKy0J ZnJlZV9pbnRlcm5hbHMocmRwc25kKTsKKyAJZnJlZShwQ2hhbm5lbENhbGxiYWNrKTsKKyAJcmV0 dXJuIENIQU5ORUxfUkNfT0s7CisgfQorLS0gCisyLjUzLjAKKwoKZGlmZiAtLWdpdCBhL2NoYW5u ZWxzLWFpbnB1dC1sb2NrLWNvbnRleHQtd2hlbi11cGRhdGluZy1saXN0ZW5lci5wYXRjaCBiL2No YW5uZWxzLWFpbnB1dC1sb2NrLWNvbnRleHQtd2hlbi11cGRhdGluZy1saXN0ZW5lci5wYXRjaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTJiMDdhCi0tLSAvZGV2L251bGwK KysrIGIvY2hhbm5lbHMtYWlucHV0LWxvY2stY29udGV4dC13aGVuLXVwZGF0aW5nLWxpc3RlbmVy LnBhdGNoCkBAIC0wLDAgKzEsMTMyIEBACitGcm9tIDZiZjRlMjU1ODg2MWUwNmZkNjhlZjgwMzY3 OTZmZjQ3NWExYzIzZmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBPbmRyZWogSG9s eSA8b2hvbHlAcmVkaGF0LmNvbT4KK0RhdGU6IEZyaSwgMTMgTWFyIDIwMjYgMTU6MjQ6MDkgKzAx MDAKK1N1YmplY3Q6IFtQQVRDSF0gW2NoYW5uZWxzLGFpbnB1dF0gbG9jayBjb250ZXh0IHdoZW4g dXBkYXRpbmcgbGlzdGVuZXIKKworQmFja3BvcnQgb2YgY29tbWl0IGQ5Y2EyNzJkY2U3YTc3NmFi NDc1ZTliMWE4ZThjM2QyOTY4Yzg0ODYuCisKK01hZGUtd2l0aDogQ3Vyc29yCistLS0KKyBjaGFu bmVscy9haW5wdXQvY2xpZW50L2FpbnB1dF9tYWluLmMgfCAzOCArKysrKysrKysrKysrKysrKysr Ky0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9u cygtKQorCitkaWZmIC0tZ2l0IGEvY2hhbm5lbHMvYWlucHV0L2NsaWVudC9haW5wdXRfbWFpbi5j IGIvY2hhbm5lbHMvYWlucHV0L2NsaWVudC9haW5wdXRfbWFpbi5jCitpbmRleCBkOGViOGVjNTku LmZmOTAxZDJhMCAxMDA2NDQKKy0tLSBhL2NoYW5uZWxzL2FpbnB1dC9jbGllbnQvYWlucHV0X21h aW4uYworKysrIGIvY2hhbm5lbHMvYWlucHV0L2NsaWVudC9haW5wdXRfbWFpbi5jCitAQCAtMjgs NiArMjgsNyBAQAorICNpbmNsdWRlIDx3aW5wci9jcnQuaD4KKyAjaW5jbHVkZSA8d2lucHIvYXNz ZXJ0Lmg+CisgI2luY2x1ZGUgPHdpbnByL3N0cmVhbS5oPgorKyNpbmNsdWRlIDx3aW5wci9zeW5j aC5oPgorICNpbmNsdWRlIDx3aW5wci9zeXNpbmZvLmg+CisgCisgI2luY2x1ZGUgImFpbnB1dF9t YWluLmgiCitAQCAtNjksNiArNzAsNyBAQCBzdHJ1Y3QgQUlOUFVUX1BMVUdJTl8KKyAJVUlOVDMy IE1ham9yVmVyc2lvbjsKKyAJVUlOVDMyIE1pbm9yVmVyc2lvbjsKKyAJQk9PTCBpbml0aWFsaXpl ZDsKKysJQ1JJVElDQUxfU0VDVElPTiBsb2NrOworIH07CisgCisgLyoqCitAQCAtMTA5LDEwICsx MTEsNyBAQCBzdGF0aWMgVUlOVCBhaW5wdXRfb25fZGF0YV9yZWNlaXZlZChJV1RTVmlydHVhbENo YW5uZWxDYWxsYmFjayogcENoYW5uZWxDYWxsYmFjaworIAorIHN0YXRpYyBVSU5UIGFpbnB1dF9z ZW5kX2lucHV0X2V2ZW50KEFJbnB1dENsaWVudENvbnRleHQqIGNvbnRleHQsIFVJTlQ2NCBmbGFn cywgSU5UMzIgeCwgSU5UMzIgeSkKKyB7CistCUFJTlBVVF9QTFVHSU4qIGFpbnB1dDsKKy0JQUlO UFVUX0NIQU5ORUxfQ0FMTEJBQ0sqIGNhbGxiYWNrOworIAlCWVRFIGJ1ZmZlclszMl0gPSB7IDAg fTsKKy0JVUlOVDY0IHRpbWU7CisgCXdTdHJlYW0gc2J1ZmZlciA9IHsgMCB9OworIAl3U3RyZWFt KiBzID0gJnNidWZmZXI7CisgCitAQCAtMTIxLDggKzEyMCw4IEBAIHN0YXRpYyBVSU5UIGFpbnB1 dF9zZW5kX2lucHV0X2V2ZW50KEFJbnB1dENsaWVudENvbnRleHQqIGNvbnRleHQsIFVJTlQ2NCBm bGFncywKKyAJV0lOUFJfQVNTRVJUKHMpOworIAlXSU5QUl9BU1NFUlQoY29udGV4dCk7CisgCist CXRpbWUgPSBHZXRUaWNrQ291bnQ2NCgpOworLQlhaW5wdXQgPSAoQUlOUFVUX1BMVUdJTiopY29u dGV4dC0+aGFuZGxlOworKwljb25zdCBVSU5UNjQgdGltZSA9IEdldFRpY2tDb3VudDY0KCk7Cisr CUFJTlBVVF9QTFVHSU4qIGFpbnB1dCA9IChBSU5QVVRfUExVR0lOKiljb250ZXh0LT5oYW5kbGU7 CisgCVdJTlBSX0FTU0VSVChhaW5wdXQpOworIAlXSU5QUl9BU1NFUlQoYWlucHV0LT5saXN0ZW5l cl9jYWxsYmFjayk7CisgCitAQCAtMTMyLDggKzEzMSw2IEBAIHN0YXRpYyBVSU5UIGFpbnB1dF9z ZW5kX2lucHV0X2V2ZW50KEFJbnB1dENsaWVudENvbnRleHQqIGNvbnRleHQsIFVJTlQ2NCBmbGFn cywKKyAJCSAgICAgICAgICBhaW5wdXQtPk1ham9yVmVyc2lvbiwgYWlucHV0LT5NaW5vclZlcnNp b24pOworIAkJcmV0dXJuIENIQU5ORUxfUkNfVU5TVVBQT1JURURfVkVSU0lPTjsKKyAJfQorLQlj YWxsYmFjayA9IGFpbnB1dC0+bGlzdGVuZXJfY2FsbGJhY2stPmNoYW5uZWxfY2FsbGJhY2s7Cist CVdJTlBSX0FTU0VSVChjYWxsYmFjayk7CisgCisgCXsKKyAJCWNoYXIgYnVmZmVyWzEyOF0gPSB7 IDAgfTsKK0BAIC0xNTIsMTAgKzE0OSwxNSBAQCBzdGF0aWMgVUlOVCBhaW5wdXRfc2VuZF9pbnB1 dF9ldmVudChBSW5wdXRDbGllbnRDb250ZXh0KiBjb250ZXh0LCBVSU5UNjQgZmxhZ3MsCisgCVN0 cmVhbV9TZWFsTGVuZ3RoKHMpOworIAorIAkvKiBhaW5wdXQgYmFjayB3aGF0IHdlIGhhdmUgcmVj ZWl2ZWQuIEFJTlBVVCBkb2VzIG5vdCBoYXZlIGFueSBtZXNzYWdlIElEcy4gKi8KKysJRW50ZXJD cml0aWNhbFNlY3Rpb24oJmFpbnB1dC0+bG9jayk7CisrCUFJTlBVVF9DSEFOTkVMX0NBTExCQUNL KiBjYWxsYmFjayA9IGFpbnB1dC0+bGlzdGVuZXJfY2FsbGJhY2stPmNoYW5uZWxfY2FsbGJhY2s7 CisrCVdJTlBSX0FTU0VSVChjYWxsYmFjayk7CisgCVdJTlBSX0FTU0VSVChjYWxsYmFjay0+Y2hh bm5lbCk7CisgCVdJTlBSX0FTU0VSVChjYWxsYmFjay0+Y2hhbm5lbC0+V3JpdGUpOworLQlyZXR1 cm4gY2FsbGJhY2stPmNoYW5uZWwtPldyaXRlKGNhbGxiYWNrLT5jaGFubmVsLCAoVUxPTkcpU3Ry ZWFtX0xlbmd0aChzKSwgU3RyZWFtX0J1ZmZlcihzKSwKKy0JICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBOVUxMKTsKKysJY29uc3QgVUlOVCByYyA9IGNhbGxiYWNrLT5jaGFubmVsLT5X cml0ZShjYWxsYmFjay0+Y2hhbm5lbCwgKFVMT05HKVN0cmVhbV9MZW5ndGgocyksCisrCSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyZWFtX0J1ZmZlcihzKSwgTlVM TCk7CisrCUxlYXZlQ3JpdGljYWxTZWN0aW9uKCZhaW5wdXQtPmxvY2spOworKwlyZXR1cm4gcmM7 CisgfQorIAorIC8qKgorQEAgLTE2Nyw4ICsxNjksMTYgQEAgc3RhdGljIFVJTlQgYWlucHV0X29u X2Nsb3NlKElXVFNWaXJ0dWFsQ2hhbm5lbENhbGxiYWNrKiBwQ2hhbm5lbENhbGxiYWNrKQorIHsK KyAJQUlOUFVUX0NIQU5ORUxfQ0FMTEJBQ0sqIGNhbGxiYWNrID0gKEFJTlBVVF9DSEFOTkVMX0NB TExCQUNLKilwQ2hhbm5lbENhbGxiYWNrOworIAorLQlmcmVlKGNhbGxiYWNrKTsKKysJaWYgKGNh bGxiYWNrKQorKwl7CisrCQlBSU5QVVRfUExVR0lOKiBhaW5wdXQgPSAoQUlOUFVUX1BMVUdJTiop Y2FsbGJhY2stPnBsdWdpbjsKKysJCVdJTlBSX0FTU0VSVChhaW5wdXQpOworIAorKwkJLyogTG9j ayBoZXJlIHRvIGVuc3VyZSB0aGF0IG5vIGFpbnB1dF9zZW5kX2lucHV0X2V2ZW50IGlzIGluIHBy b2dyZXNzLiAqLworKwkJRW50ZXJDcml0aWNhbFNlY3Rpb24oJmFpbnB1dC0+bG9jayk7CisrCQlm cmVlKGNhbGxiYWNrKTsKKysJCUxlYXZlQ3JpdGljYWxTZWN0aW9uKCZhaW5wdXQtPmxvY2spOwor Kwl9CisgCXJldHVybiBDSEFOTkVMX1JDX09LOworIH0KKyAKK0BAIC0yNTUsNiArMjY1LDcgQEAg c3RhdGljIFVJTlQgYWlucHV0X3BsdWdpbl9pbml0aWFsaXplKElXVFNQbHVnaW4qIHBQbHVnaW4s IElXVFNWaXJ0dWFsQ2hhbm5lbE1hbmEKKyBzdGF0aWMgVUlOVCBhaW5wdXRfcGx1Z2luX3Rlcm1p bmF0ZWQoSVdUU1BsdWdpbiogcFBsdWdpbikKKyB7CisgCUFJTlBVVF9QTFVHSU4qIGFpbnB1dCA9 IChBSU5QVVRfUExVR0lOKilwUGx1Z2luOworKworIAlpZiAoYWlucHV0ICYmIGFpbnB1dC0+bGlz dGVuZXJfY2FsbGJhY2spCisgCXsKKyAJCUlXVFNWaXJ0dWFsQ2hhbm5lbE1hbmFnZXIqIG1nciA9 IGFpbnB1dC0+bGlzdGVuZXJfY2FsbGJhY2stPmNoYW5uZWxfbWdyOworQEAgLTI2Myw2ICsyNzQs NyBAQCBzdGF0aWMgVUlOVCBhaW5wdXRfcGx1Z2luX3Rlcm1pbmF0ZWQoSVdUU1BsdWdpbiogcFBs dWdpbikKKyAJfQorIAlpZiAoYWlucHV0KQorIAl7CisrCQlEZWxldGVDcml0aWNhbFNlY3Rpb24o JmFpbnB1dC0+bG9jayk7CisgCQlmcmVlKGFpbnB1dC0+bGlzdGVuZXJfY2FsbGJhY2spOworIAkJ ZnJlZShhaW5wdXQtPmlmYWNlLnBJbnRlcmZhY2UpOworIAl9CitAQCAtMzA2LDggKzMxOCwxMiBA QCBVSU5UIERWQ1BsdWdpbkVudHJ5KElEUkRZTlZDX0VOVFJZX1BPSU5UUyogcEVudHJ5UG9pbnRz KQorIAorIAkJY29udGV4dC0+aGFuZGxlID0gKHZvaWQqKWFpbnB1dDsKKyAJCWNvbnRleHQtPkFJ bnB1dFNlbmRJbnB1dEV2ZW50ID0gYWlucHV0X3NlbmRfaW5wdXRfZXZlbnQ7CistCQlhaW5wdXQt PmlmYWNlLnBJbnRlcmZhY2UgPSAodm9pZCopY29udGV4dDsKKyAKKysJCUluaXRpYWxpemVDcml0 aWNhbFNlY3Rpb24oJmFpbnB1dC0+bG9jayk7CisrCisrCQlFbnRlckNyaXRpY2FsU2VjdGlvbigm YWlucHV0LT5sb2NrKTsKKysJCWFpbnB1dC0+aWZhY2UucEludGVyZmFjZSA9ICh2b2lkKiljb250 ZXh0OworKwkJTGVhdmVDcml0aWNhbFNlY3Rpb24oJmFpbnB1dC0+bG9jayk7CisgCQlzdGF0dXMg PSBwRW50cnlQb2ludHMtPlJlZ2lzdGVyUGx1Z2luKHBFbnRyeVBvaW50cywgQUlOUFVUX0NIQU5O RUxfTkFNRSwgJmFpbnB1dC0+aWZhY2UpOworIAl9CisgCistLSAKKzIuNTMuMAorCgpkaWZmIC0t Z2l0IGEvY2hhbm5lbHMtYXVkaW4tZnJlZS11cC1vbGQtYXVkaW8tZm9ybWF0cy5wYXRjaCBiL2No YW5uZWxzLWF1ZGluLWZyZWUtdXAtb2xkLWF1ZGlvLWZvcm1hdHMucGF0Y2gKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjNjY2MwYgotLS0gL2Rldi9udWxsCisrKyBiL2NoYW5u ZWxzLWF1ZGluLWZyZWUtdXAtb2xkLWF1ZGlvLWZvcm1hdHMucGF0Y2gKQEAgLTAsMCArMSwyNyBA QAorRnJvbSBjZDFmZmExMTJjZmJlMWI0MGE5ZmQ1N2UyOTlhOGVhMTJlMjNkZjBkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQorRnJvbTogYWthbGxhYmV0aCA8YWthbGxhYmV0aEBwb3N0ZW8ubmV0 PgorRGF0ZTogU2F0LCAxMCBKYW4gMjAyNiAwODozNjozOCArMDEwMAorU3ViamVjdDogW1BBVENI XSBbY2hhbm5lbHMsYXVkaW5dIGZyZWUgdXAgb2xkIGF1ZGlvIGZvcm1hdHMKKworLS0tCisgY2hh bm5lbHMvYXVkaW4vY2xpZW50L2F1ZGluX21haW4uYyB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2Vk LCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2NoYW5uZWxzL2F1ZGluL2NsaWVudC9h dWRpbl9tYWluLmMgYi9jaGFubmVscy9hdWRpbi9jbGllbnQvYXVkaW5fbWFpbi5jCitpbmRleCBi Y2FmMWE2NDYuLmI0YzhiYTU4MCAxMDA2NDQKKy0tLSBhL2NoYW5uZWxzL2F1ZGluL2NsaWVudC9h dWRpbl9tYWluLmMKKysrKyBiL2NoYW5uZWxzL2F1ZGluL2NsaWVudC9hdWRpbl9tYWluLmMKK0BA IC0yMDYsNiArMjA2LDEwIEBAIHN0YXRpYyBVSU5UIGF1ZGluX3Byb2Nlc3NfZm9ybWF0cyhBVURJ Tl9QTFVHSU4qIGF1ZGluLCBBVURJTl9DSEFOTkVMX0NBTExCQUNLKiBjCisgCX0KKyAKKyAJU3Ry ZWFtX1NlZWtfVUlOVDMyKHMpOyAvKiBjYlNpemVGb3JtYXRzUGFja2V0ICovCisrCisrCWF1ZGlv X2Zvcm1hdHNfZnJlZShjYWxsYmFjay0+Zm9ybWF0cywgY2FsbGJhY2stPmZvcm1hdHNfY291bnQp OworKwljYWxsYmFjay0+Zm9ybWF0c19jb3VudCA9IDA7CisrCisgCWNhbGxiYWNrLT5mb3JtYXRz ID0gYXVkaW9fZm9ybWF0c19uZXcoTnVtRm9ybWF0cyk7CisgCisgCWlmICghY2FsbGJhY2stPmZv cm1hdHMpCistLSAKKzIuNTMuMAorCgpkaWZmIC0tZ2l0IGEvY2hhbm5lbHMtYXVkaW4tbGltaXQt RnJhbWVzUGVyUGFja2V0LnBhdGNoIGIvY2hhbm5lbHMtYXVkaW4tbGltaXQtRnJhbWVzUGVyUGFj a2V0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxMTk1OWYKLS0t IC9kZXYvbnVsbAorKysgYi9jaGFubmVscy1hdWRpbi1saW1pdC1GcmFtZXNQZXJQYWNrZXQucGF0 Y2gKQEAgLTAsMCArMSwzNyBAQAorRnJvbSA5N2U5ZDkwNTI4NjkwZjY5NzMzOThjOWQ3ZTRmOGRh NTIxNDVmNjY5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQXJtaW4gTm92YWsgPGFy bWluLm5vdmFrQHRoaW5jYXN0LmNvbT4KK0RhdGU6IFN1biwgMTIgSnVsIDIwMjYgMTc6Mzc6NDgg KzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gW2NoYW5uZWxzLGF1ZGluXSBsaW1pdCBGcmFtZXNQZXJQ YWNrZXQKKworLS0tCisgY2hhbm5lbHMvYXVkaW4vY2xpZW50L2F1ZGluX21haW4uYyB8IDEwICsr KysrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0p CisKK2RpZmYgLS1naXQgYS9jaGFubmVscy9hdWRpbi9jbGllbnQvYXVkaW5fbWFpbi5jIGIvY2hh bm5lbHMvYXVkaW4vY2xpZW50L2F1ZGluX21haW4uYworaW5kZXggMzMyYWVmOWRhLi4xODZlMzU2 Y2QgMTAwNjQ0CistLS0gYS9jaGFubmVscy9hdWRpbi9jbGllbnQvYXVkaW5fbWFpbi5jCisrKysg Yi9jaGFubmVscy9hdWRpbi9jbGllbnQvYXVkaW5fbWFpbi5jCitAQCAtNDg4LDcgKzQ4OCw2IEBA IHN0YXRpYyBVSU5UIGF1ZGluX3Byb2Nlc3Nfb3BlbihBVURJTl9QTFVHSU4qIGF1ZGluLCBBVURJ Tl9DSEFOTkVMX0NBTExCQUNLKiBjYWwKKyAJU3RyZWFtX1JlYWRfVUlOVDMyKHMsIGluaXRpYWxG b3JtYXQpOworIAlXTG9nX1ByaW50KGF1ZGluLT5sb2csIFdMT0dfREVCVUcsICJGcmFtZXNQZXJQ YWNrZXQ9JSIgUFJJdTMyICIgaW5pdGlhbEZvcm1hdD0lIiBQUkl1MzIgIiIsCisgCSAgICAgICAg ICAgRnJhbWVzUGVyUGFja2V0LCBpbml0aWFsRm9ybWF0KTsKKy0JYXVkaW4tPkZyYW1lc1BlclBh Y2tldCA9IEZyYW1lc1BlclBhY2tldDsKKworIAlpZiAoaW5pdGlhbEZvcm1hdCA+PSBjYWxsYmFj ay0+Zm9ybWF0c19jb3VudCkKKyAJeworQEAgLTQ5Niw2ICs0OTYsMTUgQEAgc3RhdGljIFVJTlQg YXVkaW5fcHJvY2Vzc19vcGVuKEFVRElOX1BMVUdJTiogYXVkaW4sIEFVRElOX0NIQU5ORUxfQ0FM TEJBQ0sqIGNhbAorIAkJcmV0dXJuIEVSUk9SX0lOVkFMSURfREFUQTsKKyAJfQorCisrCS8qIFRo ZSBSRFAgcHJvdG9jb2wgZmllbGQgYWxsb3dzIFVJTlQzMl9NQVgsIGJ1dCBtb3N0IGJhY2tlbmQg QVBJIHVzZSBJTlQzMiBhcyBpbnB1dCBwYXJhbWV0ZXIKKysJICogb3IgZG8gc29tZSBtYXRoIHdp dGggaXQsIHNvIGVuc3VyZSB0aGF0IHRoZSB2YWx1ZSBkb2VzIG5vdCBleGNlZWQgcmVhc29uYWJs ZSBsaW1pdHMgKi8KKysJaWYgKEZyYW1lc1BlclBhY2tldCA+PSBJTlQzMl9NQVgpCisrCXsKKysJ CVdMb2dfUHJpbnQoYXVkaW4tPmxvZywgV0xPR19FUlJPUiwgImludmFsaWQgZnJhbWVzIHBlciBw YWNrZXQgJSIgUFJJdTMyLCBGcmFtZXNQZXJQYWNrZXQpOworKwkJcmV0dXJuIEVSUk9SX0lOVkFM SURfREFUQTsKKysJfQorKworKwlhdWRpbi0+RnJhbWVzUGVyUGFja2V0ID0gRnJhbWVzUGVyUGFj a2V0OworIAlhdWRpbi0+Zm9ybWF0ID0gJmNhbGxiYWNrLT5mb3JtYXRzW2luaXRpYWxGb3JtYXRd OworCisgCWlmICghYXVkaW5fb3Blbl9kZXZpY2UoYXVkaW4sIGNhbGxiYWNrKSkKCmRpZmYgLS1n aXQgYS9jaGFubmVscy1hdWRpbi1yZXNldC1hdWRpbi1mb3JtYXQucGF0Y2ggYi9jaGFubmVscy1h dWRpbi1yZXNldC1hdWRpbi1mb3JtYXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uYTA0Y2VlNAotLS0gL2Rldi9udWxsCisrKyBiL2NoYW5uZWxzLWF1ZGluLXJlc2V0 LWF1ZGluLWZvcm1hdC5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIGZhMzNlZGY1M2EyMDg3 YzEwNmIyODAxNzQ1YmRmZjBmNGE1ODk0MjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9t OiBha2FsbGFiZXRoIDxha2FsbGFiZXRoQHBvc3Rlby5uZXQ+CitEYXRlOiBNb24sIDI2IEphbiAy MDI2IDEwOjIwOjIzICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFtjaGFubmVscyxhdWRpbl0gcmVz ZXQgYXVkaW4tPmZvcm1hdAorCitXaGVuZXZlciB0aGUgdW5kZXJseWluZyBzdHJ1Y3R1cmUgY2hh bmdlcyByZXNldCB0aGUgcG9pbnRlciB0byBOVUxMCistLS0KKyBjaGFubmVscy9hdWRpbi9jbGll bnQvYXVkaW5fbWFpbi5jIHwgMiArKworIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykK KworZGlmZiAtLWdpdCBhL2NoYW5uZWxzL2F1ZGluL2NsaWVudC9hdWRpbl9tYWluLmMgYi9jaGFu bmVscy9hdWRpbi9jbGllbnQvYXVkaW5fbWFpbi5jCitpbmRleCA1ZmZlMDkxMjcuLjMzMmFlZjlk YSAxMDA2NDQKKy0tLSBhL2NoYW5uZWxzL2F1ZGluL2NsaWVudC9hdWRpbl9tYWluLmMKKysrKyBi L2NoYW5uZWxzL2F1ZGluL2NsaWVudC9hdWRpbl9tYWluLmMKK0BAIC0yMjAsNiArMjIwLDcgQEAg c3RhdGljIFVJTlQgYXVkaW5fcHJvY2Vzc19mb3JtYXRzKEFVRElOX1BMVUdJTiogYXVkaW4sIEFV RElOX0NIQU5ORUxfQ0FMTEJBQ0sqIGMKKyAKKyAJU3RyZWFtX1NlZWtfVUlOVDMyKHMpOyAvKiBj YlNpemVGb3JtYXRzUGFja2V0ICovCisgCisrCWF1ZGluLT5mb3JtYXQgPSBOVUxMOworIAlhdWRp b19mb3JtYXRzX2ZyZWUoY2FsbGJhY2stPmZvcm1hdHMsIGNhbGxiYWNrLT5mb3JtYXRzX2NvdW50 KTsKKyAJY2FsbGJhY2stPmZvcm1hdHNfY291bnQgPSAwOworIAorQEAgLTI5Nyw2ICsyOTgsNyBA QCBvdXQ6CisgCisgCWlmIChlcnJvciAhPSBDSEFOTkVMX1JDX09LKQorIAl7CisrCQlhdWRpbi0+ Zm9ybWF0ID0gTlVMTDsKKyAJCWF1ZGlvX2Zvcm1hdHNfZnJlZShjYWxsYmFjay0+Zm9ybWF0cywg TnVtRm9ybWF0cyk7CisgCQljYWxsYmFjay0+Zm9ybWF0cyA9IE5VTEw7CisgCX0KKy0tIAorMi41 My4wCisKCmRpZmYgLS1naXQgYS9jaGFubmVscy1kcmR5bnZjLXJlc2V0LWNoYW5uZWxfY2FsbGJh Y2stYmVmb3JlLWNsb3NlLnBhdGNoIGIvY2hhbm5lbHMtZHJkeW52Yy1yZXNldC1jaGFubmVsX2Nh bGxiYWNrLWJlZm9yZS1jbG9zZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi42YzM2ZGRkCi0tLSAvZGV2L251bGwKKysrIGIvY2hhbm5lbHMtZHJkeW52Yy1yZXNldC1j aGFubmVsX2NhbGxiYWNrLWJlZm9yZS1jbG9zZS5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9t IDc4NjVhMjgzMmViZGZkMDQzNzRjNzg3YzkxN2IzZWE3ZjA3OGJhMmMgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCitGcm9tOiBPbmRyZWogSG9seSA8b2hvbHlAcmVkaGF0LmNvbT4KK0RhdGU6IFdl ZCwgMTEgTWFyIDIwMjYgMTY6NTU6NDQgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gW2NoYW5uZWxz LGRyZHludmNdIHJlc2V0IGNoYW5uZWxfY2FsbGJhY2sgYmVmb3JlIGNsb3NlCisKK0JhY2twb3J0 IG9mIGNvbW1pdCBlMDJlMDUyZjY2OTI1NTBlNTM5ZDEwZjk5ZGU5YzM1YTIzNDkyZGIyLgorCitN YWRlLXdpdGg6IEN1cnNvcgorLS0tCisgY2hhbm5lbHMvZHJkeW52Yy9jbGllbnQvZHJkeW52Y19t YWluLmMgfCA3ICsrKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAzIGRl bGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY2hhbm5lbHMvZHJkeW52Yy9jbGllbnQvZHJkeW52 Y19tYWluLmMgYi9jaGFubmVscy9kcmR5bnZjL2NsaWVudC9kcmR5bnZjX21haW4uYworaW5kZXgg YjIwMDVhOTAzLi4wYTRhZjcxNzkgMTAwNjQ0CistLS0gYS9jaGFubmVscy9kcmR5bnZjL2NsaWVu dC9kcmR5bnZjX21haW4uYworKysrIGIvY2hhbm5lbHMvZHJkeW52Yy9jbGllbnQvZHJkeW52Y19t YWluLmMKK0BAIC0zNDYsMTAgKzM0NiwxMSBAQCBzdGF0aWMgdm9pZCBkdmNtYW5fY2hhbm5lbF9m cmVlKHZvaWQqIGFyZykKKyAKKyAJaWYgKGNoYW5uZWwpCisgCXsKKy0JCWlmIChjaGFubmVsLT5j aGFubmVsX2NhbGxiYWNrKQorKwkJSVdUU1ZpcnR1YWxDaGFubmVsQ2FsbGJhY2sqIGNiID0gY2hh bm5lbC0+Y2hhbm5lbF9jYWxsYmFjazsKKysJCWNoYW5uZWwtPmNoYW5uZWxfY2FsbGJhY2sgPSBO VUxMOworKwkJaWYgKGNiKQorIAkJeworLQkJCUlGQ0FMTChjaGFubmVsLT5jaGFubmVsX2NhbGxi YWNrLT5PbkNsb3NlLCBjaGFubmVsLT5jaGFubmVsX2NhbGxiYWNrKTsKKy0JCQljaGFubmVsLT5j aGFubmVsX2NhbGxiYWNrID0gTlVMTDsKKysJCQlJRkNBTEwoY2ItPk9uQ2xvc2UsIGNiKTsKKyAJ CX0KKyAKKyAJCWlmIChjaGFubmVsLT5zdGF0dXMgPT0gQ0hBTk5FTF9SQ19PSykKKy0tIAorMi41 My4wCisKCmRpZmYgLS1naXQgYS9jaGFubmVscy1kcml2ZS1maXgtY29uc3RhbnQtdHlwZS5wYXRj aCBiL2NoYW5uZWxzLWRyaXZlLWZpeC1jb25zdGFudC10eXBlLnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliZjBjOGEKLS0tIC9kZXYvbnVsbAorKysgYi9jaGFubmVs cy1kcml2ZS1maXgtY29uc3RhbnQtdHlwZS5wYXRjaApAQCAtMCwwICsxLDI2IEBACitGcm9tIDNk YTMxOTU3MGM4YTZiZTBhNzliMzMwNmYxZWQzNTRjNGE5NDMyNTkgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCitGcm9tOiBha2FsbGFiZXRoIDxha2FsbGFiZXRoQHBvc3Rlby5uZXQ+CitEYXRlOiBN b24sIDEyIEphbiAyMDI2IDAzOjQ0OjA2ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFtjaGFubmVs cyxkcml2ZV0gZml4IGNvbnN0YW50IHR5cGUKKworZW5zdXJlIGNvbnN0YW50IGlzIG9mIDY0Yml0 IGludGVnZXIgdHlwZQorLS0tCisgY2hhbm5lbHMvZHJpdmUvY2xpZW50L2RyaXZlX21haW4uYyB8 IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKwor ZGlmZiAtLWdpdCBhL2NoYW5uZWxzL2RyaXZlL2NsaWVudC9kcml2ZV9tYWluLmMgYi9jaGFubmVs cy9kcml2ZS9jbGllbnQvZHJpdmVfbWFpbi5jCitpbmRleCAxZGNlNWMzNDguLjEzMTg4ZmJjNiAx MDA2NDQKKy0tLSBhL2NoYW5uZWxzL2RyaXZlL2NsaWVudC9kcml2ZV9tYWluLmMKKysrKyBiL2No YW5uZWxzL2RyaXZlL2NsaWVudC9kcml2ZV9tYWluLmMKK0BAIC0zMDIsNyArMzAyLDcgQEAgc3Rh dGljIFVJTlQgZHJpdmVfcHJvY2Vzc19pcnBfcmVhZChEUklWRV9ERVZJQ0UqIGRyaXZlLCBJUlAq IGlycCkKKyAJCUxlbmd0aCA9IDA7CisgCX0KKyAKKy0JaWYgKCFTdHJlYW1fRW5zdXJlUmVtYWlu aW5nQ2FwYWNpdHkoaXJwLT5vdXRwdXQsIExlbmd0aCArIDQpKQorKwlpZiAoIVN0cmVhbV9FbnN1 cmVSZW1haW5pbmdDYXBhY2l0eShpcnAtPm91dHB1dCwgNHVsbCArIExlbmd0aCkpCisgCXsKKyAJ CVdMb2dfRVJSKFRBRywgIlN0cmVhbV9FbnN1cmVSZW1haW5pbmdDYXBhY2l0eSBmYWlsZWQhIik7 CisgCQlyZXR1cm4gRVJST1JfSU5URVJOQUxfRVJST1I7CistLSAKKzIuNTMuMAorCgpkaWZmIC0t Z2l0IGEvY2hhbm5lbHMtcmRwc25kLXRlcm1pbmF0ZS10aHJlYWQtYmVmb3JlLWZyZWUucGF0Y2gg Yi9jaGFubmVscy1yZHBzbmQtdGVybWluYXRlLXRocmVhZC1iZWZvcmUtZnJlZS5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NmIzZjI3Ci0tLSAvZGV2L251bGwKKysr IGIvY2hhbm5lbHMtcmRwc25kLXRlcm1pbmF0ZS10aHJlYWQtYmVmb3JlLWZyZWUucGF0Y2gKQEAg LTAsMCArMSw3MyBAQAorRnJvbSBjOWYyYjQyMjJjZjUxYTI1OWI3N2VkNGU4M2M0NWY2YTA4ODg0 Y2I4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT25kcmVqIEhvbHkgPG9ob2x5QHJl ZGhhdC5jb20+CitEYXRlOiBGcmksIDEzIE1hciAyMDI2IDE1OjQ2OjE3ICswMTAwCitTdWJqZWN0 OiBbUEFUQ0hdIFtjaGFubmVscyxyZHBzbmRdIHRlcm1pbmF0ZSB0aHJlYWQgYmVmb3JlIGZyZWUK KworQmFja3BvcnQgb2YgY29tbWl0IDYyMmJiN2I0NDAyNDkxY2EwMDNmNDc0NzJkMGU0NzgxMzI2 NzM2OTYuCisKK01hZGUtd2l0aDogQ3Vyc29yCistLS0KKyBjaGFubmVscy9yZHBzbmQvY2xpZW50 L3JkcHNuZF9tYWluLmMgfCAyOCArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCisgMSBmaWxl IGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQg YS9jaGFubmVscy9yZHBzbmQvY2xpZW50L3JkcHNuZF9tYWluLmMgYi9jaGFubmVscy9yZHBzbmQv Y2xpZW50L3JkcHNuZF9tYWluLmMKK2luZGV4IDNkZTRjYmM2Ni4uYzc2NjBhODU3IDEwMDY0NAor LS0tIGEvY2hhbm5lbHMvcmRwc25kL2NsaWVudC9yZHBzbmRfbWFpbi5jCisrKysgYi9jaGFubmVs cy9yZHBzbmQvY2xpZW50L3JkcHNuZF9tYWluLmMKK0BAIC0zNiw2ICszNiw3IEBACisgI2luY2x1 ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorIAorKyNpbmNsdWRlIDx3aW5wci9h c3NlcnQuaD4KKyAjaW5jbHVkZSA8d2lucHIvY3J0Lmg+CisgI2luY2x1ZGUgPHdpbnByL3dsb2cu aD4KKyAjaW5jbHVkZSA8d2lucHIvc3RyZWFtLmg+CitAQCAtMTI0NCwxMSArMTI0NSwyOSBAQCBm YWlsOgorIAlyZXR1cm4gQ0hBTk5FTF9SQ19OT19NRU1PUlk7CisgfQorIAorK3N0YXRpYyB2b2lk IHJkcHNuZF90ZXJtaW5hdGVfdGhyZWFkKHJkcHNuZFBsdWdpbiogcmRwc25kKQorK3sKKysJV0lO UFJfQVNTRVJUKHJkcHNuZCk7CisrCWlmIChyZHBzbmQtPnF1ZXVlKQorKwkJTWVzc2FnZVF1ZXVl X1Bvc3RRdWl0KHJkcHNuZC0+cXVldWUsIDApOworKworKwlpZiAocmRwc25kLT50aHJlYWQpCisr CXsKKysJCSh2b2lkKVdhaXRGb3JTaW5nbGVPYmplY3QocmRwc25kLT50aHJlYWQsIElORklOSVRF KTsKKysJCSh2b2lkKUNsb3NlSGFuZGxlKHJkcHNuZC0+dGhyZWFkKTsKKysJfQorKworKwlNZXNz YWdlUXVldWVfRnJlZShyZHBzbmQtPnF1ZXVlKTsKKysJcmRwc25kLT50aHJlYWQgPSBOVUxMOwor KwlyZHBzbmQtPnF1ZXVlID0gTlVMTDsKKyt9CisrCisgc3RhdGljIHZvaWQgY2xlYW51cF9pbnRl cm5hbHMocmRwc25kUGx1Z2luKiByZHBzbmQpCisgeworIAlpZiAoIXJkcHNuZCkKKyAJCXJldHVy bjsKKyAKKysJcmRwc25kX3Rlcm1pbmF0ZV90aHJlYWQocmRwc25kKTsKKyAJaWYgKHJkcHNuZC0+ cG9vbCkKKyAJCVN0cmVhbVBvb2xfUmV0dXJuKHJkcHNuZC0+cG9vbCwgcmRwc25kLT5kYXRhX2lu KTsKKyAKK0BAIC0xMzk2LDE0ICsxNDE1LDcgQEAgdm9pZCByZHBzbmRfdmlydHVhbF9jaGFubmVs X2V2ZW50X3Rlcm1pbmF0ZWQocmRwc25kUGx1Z2luKiByZHBzbmQpCisgeworIAlpZiAocmRwc25k KQorIAl7CistCQlpZiAocmRwc25kLT5xdWV1ZSkKKy0JCQlNZXNzYWdlUXVldWVfUG9zdFF1aXQo cmRwc25kLT5xdWV1ZSwgMCk7CistCQlpZiAocmRwc25kLT50aHJlYWQpCistCQl7CistCQkJV2Fp dEZvclNpbmdsZU9iamVjdChyZHBzbmQtPnRocmVhZCwgSU5GSU5JVEUpOworLQkJCUNsb3NlSGFu ZGxlKHJkcHNuZC0+dGhyZWFkKTsKKy0JCX0KKy0JCU1lc3NhZ2VRdWV1ZV9GcmVlKHJkcHNuZC0+ cXVldWUpOworKwkJcmRwc25kX3Rlcm1pbmF0ZV90aHJlYWQocmRwc25kKTsKKyAKKyAJCWZyZWVf aW50ZXJuYWxzKHJkcHNuZCk7CisgCQlhdWRpb19mb3JtYXRzX2ZyZWUocmRwc25kLT5maXhlZF9m b3JtYXQsIDEpOworLS0gCisyLjUzLjAKKwoKZGlmZiAtLWdpdCBhL2NoYW5uZWxzLXNlcmlhbC1l eHBsaWNpdGx5LWxvY2stc2VyaWFsLUlycFRocmVhZHMucGF0Y2ggYi9jaGFubmVscy1zZXJpYWwt ZXhwbGljaXRseS1sb2NrLXNlcmlhbC1JcnBUaHJlYWRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjJlNDExY2YKLS0tIC9kZXYvbnVsbAorKysgYi9jaGFubmVscy1z ZXJpYWwtZXhwbGljaXRseS1sb2NrLXNlcmlhbC1JcnBUaHJlYWRzLnBhdGNoCkBAIC0wLDAgKzEs NTUgQEAKK0Zyb20gYzAyODM4MTJjOTE4Yzc3MzhmYWNhZmFjNTJjZjUxZDkxNjUzNjEzOCBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE9uZHJlaiBIb2x5IDxvaG9seUByZWRoYXQuY29t PgorRGF0ZTogVHVlLCAxMCBNYXIgMjAyNiAwODo0Nzo1NyArMDEwMAorU3ViamVjdDogW1BBVENI XSBbY2hhbm5lbHMsc2VyaWFsXSBleHBsaWNpdGx5IGxvY2sgc2VyaWFsLT5JcnBUaHJlYWRzCisK K0JhY2twb3J0IG9mIGNvbW1pdCA2NzVjMjBmMDhmMzJjYTVlYzA2Mjk3MTA4YmRmMzAxNDdkNmUy Y2Q5LgorCitNYWRlLXdpdGg6IEN1cnNvcgorLS0tCisgY2hhbm5lbHMvc2VyaWFsL2NsaWVudC9z ZXJpYWxfbWFpbi5jIHwgNyArKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygr KSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY2hhbm5lbHMvc2VyaWFsL2NsaWVudC9z ZXJpYWxfbWFpbi5jIGIvY2hhbm5lbHMvc2VyaWFsL2NsaWVudC9zZXJpYWxfbWFpbi5jCitpbmRl eCBkNzZkNzI1ZjEuLmM4YTI3YzQ2YyAxMDA2NDQKKy0tLSBhL2NoYW5uZWxzL3NlcmlhbC9jbGll bnQvc2VyaWFsX21haW4uYworKysrIGIvY2hhbm5lbHMvc2VyaWFsL2NsaWVudC9zZXJpYWxfbWFp bi5jCitAQCAtNTk3LDcgKzU5NywxMCBAQCBzdGF0aWMgdm9pZCBjcmVhdGVfaXJwX3RocmVhZChT RVJJQUxfREVWSUNFKiBzZXJpYWwsIElSUCogaXJwKQorIAkgKiBvYnNlcnZlZCB3aXRoIEZyZWVS RFApLgorIAkgKi8KKyAJa2V5ID0gaXJwLT5Db21wbGV0aW9uSWQ7CisrCisrCUxpc3REaWN0aW9u YXJ5X0xvY2soc2VyaWFsLT5JcnBUaHJlYWRzKTsKKyAJcHJldmlvdXNJcnBUaHJlYWQgPSBMaXN0 RGljdGlvbmFyeV9HZXRJdGVtVmFsdWUoc2VyaWFsLT5JcnBUaHJlYWRzLCAodm9pZCopa2V5KTsK KysJTGlzdERpY3Rpb25hcnlfVW5sb2NrKHNlcmlhbC0+SXJwVGhyZWFkcyk7CisgCisgCWlmIChw cmV2aW91c0lycFRocmVhZCkKKyAJeworQEAgLTY3OCw2ICs2ODEsNyBAQCBzdGF0aWMgdm9pZCB0 ZXJtaW5hdGVfcGVuZGluZ19pcnBfdGhyZWFkcyhTRVJJQUxfREVWSUNFKiBzZXJpYWwpCisgewor IAlVTE9OR19QVFIqIGlkczsKKyAJaW50IGksIG5iSWRzOworKwlMaXN0RGljdGlvbmFyeV9Mb2Nr KHNlcmlhbC0+SXJwVGhyZWFkcyk7CisgCW5iSWRzID0gTGlzdERpY3Rpb25hcnlfR2V0S2V5cyhz ZXJpYWwtPklycFRocmVhZHMsICZpZHMpOworIAlXTG9nX1ByaW50KHNlcmlhbC0+bG9nLCBXTE9H X0RFQlVHLCAiVGVybWluYXRpbmcgJWQgSVJQIHRocmVhZChzKSIsIG5iSWRzKTsKKyAKK0BAIC02 OTksNiArNzAzLDcgQEAgc3RhdGljIHZvaWQgdGVybWluYXRlX3BlbmRpbmdfaXJwX3RocmVhZHMo U0VSSUFMX0RFVklDRSogc2VyaWFsKQorIAl9CisgCisgCUxpc3REaWN0aW9uYXJ5X0NsZWFyKHNl cmlhbC0+SXJwVGhyZWFkcyk7CisrCUxpc3REaWN0aW9uYXJ5X1VubG9jayhzZXJpYWwtPklycFRo cmVhZHMpOworIAlmcmVlKGlkcyk7CisgfQorIAorQEAgLTkzMiw3ICs5MzcsNyBAQCBVSU5UIERl dmljZVNlcnZpY2VFbnRyeShQREVWSUNFX1NFUlZJQ0VfRU5UUllfUE9JTlRTIHBFbnRyeVBvaW50 cykKKyAJCX0KKyAKKyAJCS8qIElycFRocmVhZHMgY29udGVudCBvbmx5IG1vZGlmaWVkIGJ5IGNy ZWF0ZV9pcnBfdGhyZWFkKCkgKi8KKy0JCXNlcmlhbC0+SXJwVGhyZWFkcyA9IExpc3REaWN0aW9u YXJ5X05ldyhUUlVFKTsKKysJCXNlcmlhbC0+SXJwVGhyZWFkcyA9IExpc3REaWN0aW9uYXJ5X05l dyhGQUxTRSk7CisgCisgCQlpZiAoIXNlcmlhbC0+SXJwVGhyZWFkcykKKyAJCXsKKy0tIAorMi41 My4wCisKCmRpZmYgLS1naXQgYS9jaGFubmVscy1zZXJpYWwtbG9jay1saXN0LWRpY3Rpb25hcnku cGF0Y2ggYi9jaGFubmVscy1zZXJpYWwtbG9jay1saXN0LWRpY3Rpb25hcnkucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDFiYzMzMQotLS0gL2Rldi9udWxsCisrKyBi L2NoYW5uZWxzLXNlcmlhbC1sb2NrLWxpc3QtZGljdGlvbmFyeS5wYXRjaApAQCAtMCwwICsxLDg5 IEBACitGcm9tIDdjZjc0MjE1OWJkMjY3NTM2NmM3MTg3YzRiYzUxMDE4YjU0OGQyMjggTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBPbmRyZWogSG9seSA8b2hvbHlAcmVkaGF0LmNvbT4K K0RhdGU6IFR1ZSwgMTAgTWFyIDIwMjYgMDg6NDc6NDUgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0g W2NoYW5uZWxzLHNlcmlhbF0gbG9jayBsaXN0IGRpY3Rpb25hcnkKKworQmFja3BvcnQgb2YgY29t bWl0IGIzNWFhMzYxNGQzMmJmZjNmYzEyNzJjZDdjNDYxN2Y3MTFmY2ExYTQuCisKK01hZGUtd2l0 aDogQ3Vyc29yCistLS0KKyBjaGFubmVscy9zZXJpYWwvY2xpZW50L3NlcmlhbF9tYWluLmMgfCAz NSArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDIwIGluc2Vy dGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY2hhbm5lbHMvc2VyaWFs L2NsaWVudC9zZXJpYWxfbWFpbi5jIGIvY2hhbm5lbHMvc2VyaWFsL2NsaWVudC9zZXJpYWxfbWFp bi5jCitpbmRleCBhZmU2N2I0ZDMuLmQ3NmQ3MjVmMSAxMDA2NDQKKy0tLSBhL2NoYW5uZWxzL3Nl cmlhbC9jbGllbnQvc2VyaWFsX21haW4uYworKysrIGIvY2hhbm5lbHMvc2VyaWFsL2NsaWVudC9z ZXJpYWxfbWFpbi5jCitAQCAtNTQwLDYgKzU0MCw3IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZV9pcnBf dGhyZWFkKFNFUklBTF9ERVZJQ0UqIHNlcmlhbCwgSVJQKiBpcnApCisgCQlIQU5ETEUgaXJwVGhy ZWFkOworIAkJVUxPTkdfUFRSKiBpZHM7CisgCQlpbnQgaSwgbmJJZHM7CisrCQlMaXN0RGljdGlv bmFyeV9Mb2NrKHNlcmlhbC0+SXJwVGhyZWFkcyk7CisgCQluYklkcyA9IExpc3REaWN0aW9uYXJ5 X0dldEtleXMoc2VyaWFsLT5JcnBUaHJlYWRzLCAmaWRzKTsKKyAKKyAJCWZvciAoaSA9IDA7IGkg PCBuYklkczsgaSsrKQorQEAgLTU4MSw2ICs1ODIsNyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVfaXJw X3RocmVhZChTRVJJQUxfREVWSUNFKiBzZXJpYWwsIElSUCogaXJwKQorIAkJfQorIAorIAkJZnJl ZShpZHMpOworKwkJTGlzdERpY3Rpb25hcnlfVW5sb2NrKHNlcmlhbC0+SXJwVGhyZWFkcyk7Cisg CX0KKyAKKyAJTGVhdmVDcml0aWNhbFNlY3Rpb24oJnNlcmlhbC0+VGVybWluYXRpbmdJcnBUaHJl YWRzTG9jayk7CitAQCAtNjIxLDE5ICs2MjMsNiBAQCBzdGF0aWMgdm9pZCBjcmVhdGVfaXJwX3Ro cmVhZChTRVJJQUxfREVWSUNFKiBzZXJpYWwsIElSUCogaXJwKQorIAkJcmV0dXJuOworIAl9Cisg CistCWlmIChMaXN0RGljdGlvbmFyeV9Db3VudChzZXJpYWwtPklycFRocmVhZHMpID49IE1BWF9J UlBfVEhSRUFEUykKKy0JeworLQkJV0xvZ19QcmludChzZXJpYWwtPmxvZywgV0xPR19XQVJOLAor LQkJICAgICAgICAgICAiTnVtYmVyIG9mIElSUCB0aHJlYWRzIHRocmVzaG9sZCByZWFjaGVkOiAl ZCwga2VlcCBvbiBhbnl3YXkiLAorLQkJICAgICAgICAgICBMaXN0RGljdGlvbmFyeV9Db3VudChz ZXJpYWwtPklycFRocmVhZHMpKTsKKy0JCWFzc2VydChGQUxTRSk7IC8qIHVuaW1wbGVtZW50ZWQg Ki8KKy0JCSAgICAgICAgICAgICAgIC8qIFRPRE86IE1BWF9JUlBfVEhSRUFEUyBoYXMgYmVlbiB0 aG91Z2h0IHRvIGF2b2lkIGEKKy0JCSAgICAgICAgICAgICAgICAqIGZsb29kaW5nIG9mIHBlbmRp bmcgcmVxdWVzdHMuIFVzZQorLQkJICAgICAgICAgICAgICAgICogV2FpdEZvck11bHRpcGxlT2Jq ZWN0cygpIHdoZW4gYXZhaWxhYmxlIGluIHdpbnByCistCQkgICAgICAgICAgICAgICAgKiBmb3Ig dGhyZWFkcy4KKy0JCSAgICAgICAgICAgICAgICAqLworLQl9CistCisgCS8qIGVycm9yX2hhbmRs ZSB0byBiZSB1c2VkIC4uLiAqLworIAlkYXRhID0gKElSUF9USFJFQURfREFUQSopY2FsbG9jKDEs IHNpemVvZihJUlBfVEhSRUFEX0RBVEEpKTsKKyAKK0BAIC02NTYsNyArNjQ1LDIzIEBAIHN0YXRp YyB2b2lkIGNyZWF0ZV9pcnBfdGhyZWFkKFNFUklBTF9ERVZJQ0UqIHNlcmlhbCwgSVJQKiBpcnAp CisgCisgCWtleSA9IGlycC0+Q29tcGxldGlvbklkOworIAorLQlpZiAoIUxpc3REaWN0aW9uYXJ5 X0FkZChzZXJpYWwtPklycFRocmVhZHMsICh2b2lkKilrZXksIGlycFRocmVhZCkpCisrCUxpc3RE aWN0aW9uYXJ5X0xvY2soc2VyaWFsLT5JcnBUaHJlYWRzKTsKKysJaWYgKExpc3REaWN0aW9uYXJ5 X0NvdW50KHNlcmlhbC0+SXJwVGhyZWFkcykgPj0gTUFYX0lSUF9USFJFQURTKQorKwl7CisrCQlX TG9nX1ByaW50KHNlcmlhbC0+bG9nLCBXTE9HX1dBUk4sCisrCQkgICAgICAgICAgICJOdW1iZXIg b2YgSVJQIHRocmVhZHMgdGhyZXNob2xkIHJlYWNoZWQ6ICVkLCBrZWVwIG9uIGFueXdheSIsCisr CQkgICAgICAgICAgIExpc3REaWN0aW9uYXJ5X0NvdW50KHNlcmlhbC0+SXJwVGhyZWFkcykpOwor KwkJYXNzZXJ0KEZBTFNFKTsgLyogdW5pbXBsZW1lbnRlZCAqLworKwkJICAgICAgICAgICAgICAg LyogVE9ETzogTUFYX0lSUF9USFJFQURTIGhhcyBiZWVuIHRob3VnaHQgdG8gYXZvaWQgYQorKwkJ ICAgICAgICAgICAgICAgICogZmxvb2Rpbmcgb2YgcGVuZGluZyByZXF1ZXN0cy4gVXNlCisrCQkg ICAgICAgICAgICAgICAgKiBXYWl0Rm9yTXVsdGlwbGVPYmplY3RzKCkgd2hlbiBhdmFpbGFibGUg aW4gd2lucHIKKysJCSAgICAgICAgICAgICAgICAqIGZvciB0aHJlYWRzLgorKwkJICAgICAgICAg ICAgICAgICovCisrCX0KKysJY29uc3QgQk9PTCBhZGRlZCA9IExpc3REaWN0aW9uYXJ5X0FkZChz ZXJpYWwtPklycFRocmVhZHMsICh2b2lkKilrZXksIGlycFRocmVhZCk7CisrCUxpc3REaWN0aW9u YXJ5X1VubG9jayhzZXJpYWwtPklycFRocmVhZHMpOworKworKwlpZiAoIWFkZGVkKQorIAl7Cisg CQlXTG9nX0VSUihUQUcsICJMaXN0RGljdGlvbmFyeV9BZGQgZmFpbGVkISIpOworIAkJZ290byBl cnJvcl9oYW5kbGU7CitAQCAtOTI3LDcgKzkzMiw3IEBAIFVJTlQgRGV2aWNlU2VydmljZUVudHJ5 KFBERVZJQ0VfU0VSVklDRV9FTlRSWV9QT0lOVFMgcEVudHJ5UG9pbnRzKQorIAkJfQorIAorIAkJ LyogSXJwVGhyZWFkcyBjb250ZW50IG9ubHkgbW9kaWZpZWQgYnkgY3JlYXRlX2lycF90aHJlYWQo KSAqLworLQkJc2VyaWFsLT5JcnBUaHJlYWRzID0gTGlzdERpY3Rpb25hcnlfTmV3KEZBTFNFKTsK KysJCXNlcmlhbC0+SXJwVGhyZWFkcyA9IExpc3REaWN0aW9uYXJ5X05ldyhUUlVFKTsKKyAKKyAJ CWlmICghc2VyaWFsLT5JcnBUaHJlYWRzKQorIAkJeworLS0gCisyLjUzLjAKKwoKZGlmZiAtLWdp dCBhL2NoYW5uZWxzLXVyYmRyYy1jYW5jZWwtYWxsLXVzYi10cmFuc2ZlcnMtb24tY2hhbm5lbC0u cGF0Y2ggYi9jaGFubmVscy11cmJkcmMtY2FuY2VsLWFsbC11c2ItdHJhbnNmZXJzLW9uLWNoYW5u ZWwtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmY2NiN2QKLS0t IC9kZXYvbnVsbAorKysgYi9jaGFubmVscy11cmJkcmMtY2FuY2VsLWFsbC11c2ItdHJhbnNmZXJz LW9uLWNoYW5uZWwtLnBhdGNoCkBAIC0wLDAgKzEsMjQgQEAKK0Zyb20gNDE0ZjcwMTQ2NDkyOWMy MTdmMjUwOWJjYmQ2ZDJjMWYwMGY3ZWQ3MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206 IGFrYWxsYWJldGggPGFrYWxsYWJldGhAcG9zdGVvLm5ldD4KK0RhdGU6IE1vbiwgMjYgSmFuIDIw MjYgMTE6MDc6MjUgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gW2NoYW5uZWxzLHVyYmRyY10gY2Fu Y2VsIGFsbCB1c2IgdHJhbnNmZXJzIG9uIGNoYW5uZWwgY2xvc2UKKworLS0tCisgY2hhbm5lbHMv dXJiZHJjL2NsaWVudC9saWJ1c2IvbGlidXNiX3VkZXZpY2UuYyB8IDEgKworIDEgZmlsZSBjaGFu Z2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvY2hhbm5lbHMvdXJiZHJjL2NsaWVu dC9saWJ1c2IvbGlidXNiX3VkZXZpY2UuYyBiL2NoYW5uZWxzL3VyYmRyYy9jbGllbnQvbGlidXNi L2xpYnVzYl91ZGV2aWNlLmMKK2luZGV4IDUzNDEyNDhlYy4uOWUyZDNlYzVhIDEwMDY0NAorLS0t IGEvY2hhbm5lbHMvdXJiZHJjL2NsaWVudC9saWJ1c2IvbGlidXNiX3VkZXZpY2UuYworKysrIGIv Y2hhbm5lbHMvdXJiZHJjL2NsaWVudC9saWJ1c2IvbGlidXNiX3VkZXZpY2UuYworQEAgLTExNjUs NiArMTE2NSw3IEBAIHN0YXRpYyB2b2lkIGxpYnVzYl91ZGV2X21hcmtfY2hhbm5lbF9jbG9zZWQo SVVERVZJQ0UqIGlkZXYpCisgCQljb25zdCB1aW50OF90IGRldk5yID0gaWRldi0+Z2V0X2Rldl9u dW1iZXIoaWRldik7CisgCisgCQlwZGV2LT5zdGF0dXMgfD0gVVJCRFJDX0RFVklDRV9DSEFOTkVM X0NMT1NFRDsKKysJCXBkZXYtPmlmYWNlLmNhbmNlbF9hbGxfdHJhbnNmZXJfcmVxdWVzdCgmcGRl di0+aWZhY2UpOworIAkJdXJiZHJjLT51ZGV2bWFuLT51bnJlZ2lzdGVyX3VkZXZpY2UodXJiZHJj LT51ZGV2bWFuLCBidXNOciwgZGV2TnIpOworIAl9CisgfQorLS0gCisyLjUzLjAKKwoKZGlmZiAt LWdpdCBhL2NoYW5uZWxzLXVyYmRyYy1jaGVjay1pbnRlcmZhY2UtaW5kaWNlcy1iZWZvcmUtdXNl LnBhdGNoIGIvY2hhbm5lbHMtdXJiZHJjLWNoZWNrLWludGVyZmFjZS1pbmRpY2VzLWJlZm9yZS11 c2UucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2MxODcxNwotLS0g L2Rldi9udWxsCisrKyBiL2NoYW5uZWxzLXVyYmRyYy1jaGVjay1pbnRlcmZhY2UtaW5kaWNlcy1i ZWZvcmUtdXNlLnBhdGNoCkBAIC0wLDAgKzEsNzAgQEAKK0Zyb20gZjg0NTNiZGE1MDY5MzE0ZDI3 MTk3M2VmZjY5ZGMyZTA0ZjZkZjk4MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE9u ZHJlaiBIb2x5IDxvaG9seUByZWRoYXQuY29tPgorRGF0ZTogVHVlLCAxNyBGZWIgMjAyNiAxMzow MTozNyArMDEwMAorU3ViamVjdDogW1BBVENIXSBbY2hhbm5lbHMsdXJiZHJjXSBjaGVjayBpbnRl cmZhY2UgaW5kaWNlcyBiZWZvcmUgdXNlCisKK0JhY2twb3J0IG9mIGNvbW1pdCA3YjdlNmRlOGZl NDI3YTJmMDFkMzMxMDU2Nzc0YWVjNjk3MTA1OTBiIChmdW5jdGlvbmFsIGNoYW5nZXMgb25seSku CisKK0NvLWF1dGhvcmVkLWJ5OiBDdXJzb3IgPGN1cnNvcmFnZW50QGN1cnNvci5jb20+CistLS0K KyAuLi4vdXJiZHJjL2NsaWVudC9saWJ1c2IvbGlidXNiX3VkZXZpY2UuYyAgICAgfCAyNSArKysr KysrKysrKysrKysrKysrCisgY2hhbm5lbHMvdXJiZHJjL2NvbW1vbi9tc3VzYi5jICAgICAgICAg ICAgICAgIHwgIDIgKysKKyAyIGZpbGVzIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKykKKworZGlm ZiAtLWdpdCBhL2NoYW5uZWxzL3VyYmRyYy9jbGllbnQvbGlidXNiL2xpYnVzYl91ZGV2aWNlLmMg Yi9jaGFubmVscy91cmJkcmMvY2xpZW50L2xpYnVzYi9saWJ1c2JfdWRldmljZS5jCitpbmRleCBl Zjg3ZjE5NWYuLmIyZDgwMjQzYiAxMDA2NDQKKy0tLSBhL2NoYW5uZWxzL3VyYmRyYy9jbGllbnQv bGlidXNiL2xpYnVzYl91ZGV2aWNlLmMKKysrKyBiL2NoYW5uZWxzL3VyYmRyYy9jbGllbnQvbGli dXNiL2xpYnVzYl91ZGV2aWNlLmMKK0BAIC01OTcsMTEgKzU5NywzNiBAQCBsaWJ1c2JfdWRldl9j b21wbGV0ZV9tc2NvbmZpZ19zZXR1cChJVURFVklDRSogaWRldiwgTVNVU0JfQ09ORklHX0RFU0NS SVBUT1IqIE1zQworIAkJICAgICAgICAgICAiU2VsZWN0IENvbmZpZ3VyYXRpb246IExpYnVzYiBO dW1iZXJJbnRlcmZhY2VzKCUiIFBSSXU4ICIpIGlzIGRpZmZlcmVudCAiCisgCQkgICAgICAgICAg ICJ3aXRoIE1zQ29uZmlnIE51bWJlckludGVyZmFjZXMoJSIgUFJJdTMyICIpIiwKKyAJCSAgICAg ICAgICAgTGlidXNiQ29uZmlnLT5iTnVtSW50ZXJmYWNlcywgTXNDb25maWctPk51bUludGVyZmFj ZXMpOworKwkJcmV0dXJuIE5VTEw7CisgCX0KKyAKKyAJLyogcmVwbGFjZSBNc1BpcGVzIGZvciBs aWJ1c2IgKi8KKyAJTXNJbnRlcmZhY2VzID0gTXNDb25maWctPk1zSW50ZXJmYWNlczsKKyAKKysJ LyogY2hlY2sgaW50ZXJmYWNlIGluZGljZXMgYmVmb3JlIHVzZSAqLworKwlmb3IgKGludW0gPSAw OyBpbnVtIDwgTXNDb25maWctPk51bUludGVyZmFjZXM7IGludW0rKykKKysJeworKwkJTXNJbnRl cmZhY2UgPSBNc0ludGVyZmFjZXNbaW51bV07CisrCQlpZiAoTXNJbnRlcmZhY2UtPkludGVyZmFj ZU51bWJlciA+PSBNc0NvbmZpZy0+TnVtSW50ZXJmYWNlcykKKysJCXsKKysJCQlXTG9nX1ByaW50 KHVyYmRyYy0+bG9nLCBXTE9HX0VSUk9SLAorKwkJCSAgICAgICAgICAgIk1TVVNCX0NPTkZJR19E RVNDUklQVE9SOjpOdW1JbnRlcmZhY2VzICglIiBQUkl1MzIKKysJCQkgICAgICAgICAgICIgPD0g TVNVU0JfSU5URVJGQUNFX0RFU0NSSVBUT1I6OkludGVyZmFjZU51bWJlciggJSIgUFJJdTggIiki LAorKwkJCSAgICAgICAgICAgTXNDb25maWctPk51bUludGVyZmFjZXMsIE1zSW50ZXJmYWNlLT5J bnRlcmZhY2VOdW1iZXIpOworKwkJCXJldHVybiBOVUxMOworKwkJfQorKworKwkJTGlidXNiSW50 ZXJmYWNlID0gJkxpYnVzYkNvbmZpZy0+aW50ZXJmYWNlW01zSW50ZXJmYWNlLT5JbnRlcmZhY2VO dW1iZXJdOworKwkJaWYgKE1zSW50ZXJmYWNlLT5BbHRlcm5hdGVTZXR0aW5nID49IExpYnVzYklu dGVyZmFjZS0+bnVtX2FsdHNldHRpbmcpCisrCQl7CisrCQkJV0xvZ19QcmludCh1cmJkcmMtPmxv ZywgV0xPR19FUlJPUiwKKysJCQkgICAgICAgICAgICJMSUJVU0JfSU5URVJGQUNFOjpudW1fYWx0 c2V0dGluZyAoJSIgUFJJZDMyCisrCQkJICAgICAgICAgICAiIDw9IE1TVVNCX0lOVEVSRkFDRV9E RVNDUklQVE9SOjpBbHRlcm5hdGVTZXR0aW5nKCAlIiBQUkl1OCAiKSIsCisrCQkJICAgICAgICAg ICBMaWJ1c2JJbnRlcmZhY2UtPm51bV9hbHRzZXR0aW5nLCBNc0ludGVyZmFjZS0+QWx0ZXJuYXRl U2V0dGluZyk7CisrCQkJcmV0dXJuIE5VTEw7CisrCQl9CisrCX0KKysKKyAJZm9yIChpbnVtID0g MDsgaW51bSA8IE1zQ29uZmlnLT5OdW1JbnRlcmZhY2VzOyBpbnVtKyspCisgCXsKKyAJCU1zSW50 ZXJmYWNlID0gTXNJbnRlcmZhY2VzW2ludW1dOworZGlmZiAtLWdpdCBhL2NoYW5uZWxzL3VyYmRy Yy9jb21tb24vbXN1c2IuYyBiL2NoYW5uZWxzL3VyYmRyYy9jb21tb24vbXN1c2IuYworaW5kZXgg YmI1MTdjZTVkLi4xMTNiN2M5NmIgMTAwNjQ0CistLS0gYS9jaGFubmVscy91cmJkcmMvY29tbW9u L21zdXNiLmMKKysrKyBiL2NoYW5uZWxzL3VyYmRyYy9jb21tb24vbXN1c2IuYworQEAgLTEzOSw2 ICsxMzksOCBAQCBCT09MIG1zdXNiX21zaW50ZXJmYWNlX3JlcGxhY2UoTVNVU0JfQ09ORklHX0RF U0NSSVBUT1IqIE1zQ29uZmlnLCBCWVRFIEludGVyZmFjZQorIHsKKyAJaWYgKCFNc0NvbmZpZyB8 fCAhTXNDb25maWctPk1zSW50ZXJmYWNlcykKKyAJCXJldHVybiBGQUxTRTsKKysJaWYgKE1zQ29u ZmlnLT5OdW1JbnRlcmZhY2VzIDw9IEludGVyZmFjZU51bWJlcikKKysJCXJldHVybiBGQUxTRTsK KyAKKyAJbXN1c2JfbXNpbnRlcmZhY2VfZnJlZShNc0NvbmZpZy0+TXNJbnRlcmZhY2VzW0ludGVy ZmFjZU51bWJlcl0pOworIAlNc0NvbmZpZy0+TXNJbnRlcmZhY2VzW0ludGVyZmFjZU51bWJlcl0g PSBOZXdNc0ludGVyZmFjZTsKKy0tIAorMi41Mi4wCisKCmRpZmYgLS1naXQgYS9jaGFubmVscy11 cmJkcmMtZG8tbm90LWZyZWUtTXNDb25maWctb24tZmFpbHVyZS5wYXRjaCBiL2NoYW5uZWxzLXVy YmRyYy1kby1ub3QtZnJlZS1Nc0NvbmZpZy1vbi1mYWlsdXJlLnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwNzcxZmUKLS0tIC9kZXYvbnVsbAorKysgYi9jaGFubmVs cy11cmJkcmMtZG8tbm90LWZyZWUtTXNDb25maWctb24tZmFpbHVyZS5wYXRjaApAQCAtMCwwICsx LDMxIEBACitGcm9tIGFhYWQ0NzE4ZDgwYjAzNTRmZDgwN2Q2ODBiMTIzOTAwNzVmZTRmYTAgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBPbmRyZWogSG9seSA8b2hvbHlAcmVkaGF0LmNv bT4KK0RhdGU6IFdlZCwgMTEgTWFyIDIwMjYgMTI6Mjc6NDcgKzAxMDAKK1N1YmplY3Q6IFtQQVRD SF0gW2NoYW5uZWxzLHVyYmRyY10gZG8gbm90IGZyZWUgTXNDb25maWcgb24gZmFpbHVyZQorCitC YWNrcG9ydCBvZiBjb21taXQgZDY3NjUxODgwOWMzMTllZWMxNTkxMWM3MDVjMTM1MzYwMzZhZjJh ZS4KKworTWFkZS13aXRoOiBDdXJzb3IKKy0tLQorIGNoYW5uZWxzL3VyYmRyYy9jbGllbnQvZGF0 YV90cmFuc2Zlci5jIHwgNCArLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAz IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY2hhbm5lbHMvdXJiZHJjL2NsaWVudC9kYXRh X3RyYW5zZmVyLmMgYi9jaGFubmVscy91cmJkcmMvY2xpZW50L2RhdGFfdHJhbnNmZXIuYworaW5k ZXggZWQ2Y2NmMzJkLi5jNTQ3ZDUyZDcgMTAwNjQ0CistLS0gYS9jaGFubmVscy91cmJkcmMvY2xp ZW50L2RhdGFfdHJhbnNmZXIuYworKysrIGIvY2hhbm5lbHMvdXJiZHJjL2NsaWVudC9kYXRhX3Ry YW5zZmVyLmMKK0BAIC01NzAsMTAgKzU3MCw4IEBAIHN0YXRpYyBVSU5UIHVyYl9zZWxlY3RfaW50 ZXJmYWNlKElVREVWSUNFKiBwZGV2LCBVUkJEUkNfQ0hBTk5FTF9DQUxMQkFDSyogY2FsbGJhCisg CU1zQ29uZmlnID0gcGRldi0+Z2V0X01zQ29uZmlnKHBkZXYpOworIAlJbnRlcmZhY2VOdW1iZXIg PSBNc0ludGVyZmFjZS0+SW50ZXJmYWNlTnVtYmVyOworIAlpZiAoIW1zdXNiX21zaW50ZXJmYWNl X3JlcGxhY2UoTXNDb25maWcsIEludGVyZmFjZU51bWJlciwgTXNJbnRlcmZhY2UpKQorLQl7Cist CQltc3VzYl9tc2NvbmZpZ19mcmVlKE1zQ29uZmlnKTsKKyAJCXJldHVybiBFUlJPUl9CQURfQ09O RklHVVJBVElPTjsKKy0JfQorKworIAkvKiBjb21wbGV0ZSBjb25maWd1cmF0aW9uIHNldHVwICov CisgCWlmICghcGRldi0+Y29tcGxldGVfbXNjb25maWdfc2V0dXAocGRldiwgTXNDb25maWcpKQor IAl7CistLSAKKzIuNTMuMAorCgpkaWZmIC0tZ2l0IGEvY2hhbm5lbHMtdXJiZHJjLWVuc3VyZS1J bnRlcmZhY2VOdW1iZXItaXMtd2l0aGluLXJhbi5wYXRjaCBiL2NoYW5uZWxzLXVyYmRyYy1lbnN1 cmUtSW50ZXJmYWNlTnVtYmVyLWlzLXdpdGhpbi1yYW4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uMWMyMTRhMAotLS0gL2Rldi9udWxsCisrKyBiL2NoYW5uZWxzLXVy YmRyYy1lbnN1cmUtSW50ZXJmYWNlTnVtYmVyLWlzLXdpdGhpbi1yYW4ucGF0Y2gKQEAgLTAsMCAr MSw0NSBAQAorRnJvbSBlYTQ5MzkxYjM0NjNiN2RmMThlYjljMzU4Y2RlYzA0ZWRmOWM0MDAxIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT25kcmVqIEhvbHkgPG9ob2x5QHJlZGhhdC5j b20+CitEYXRlOiBUaHUsIDEyIE1hciAyMDI2IDExOjAzOjIwICswMTAwCitTdWJqZWN0OiBbUEFU Q0hdIFtjaGFubmVscyx1cmJkcmNdIGVuc3VyZSBJbnRlcmZhY2VOdW1iZXIgaXMgd2l0aGluIHJh bmdlCisKK0JhY2twb3J0IG9mIGNvbW1pdCAyZDU2M2E1MGJlMTdjMWI0MDdjYTQ0OGIxMzIxMzc4 YzA3MjZkZDMxLgorCitNYWRlLXdpdGg6IEN1cnNvcgorLS0tCisgY2hhbm5lbHMvdXJiZHJjL2Ns aWVudC9saWJ1c2IvbGlidXNiX3VkZXZpY2UuYyB8IDEyICsrKysrKy0tLS0tLQorIDEgZmlsZSBj aGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9j aGFubmVscy91cmJkcmMvY2xpZW50L2xpYnVzYi9saWJ1c2JfdWRldmljZS5jIGIvY2hhbm5lbHMv dXJiZHJjL2NsaWVudC9saWJ1c2IvbGlidXNiX3VkZXZpY2UuYworaW5kZXggYjJkODAyNDNiLi5h ZThiYmI0YzUgMTAwNjQ0CistLS0gYS9jaGFubmVscy91cmJkcmMvY2xpZW50L2xpYnVzYi9saWJ1 c2JfdWRldmljZS5jCisrKysgYi9jaGFubmVscy91cmJkcmMvY2xpZW50L2xpYnVzYi9saWJ1c2Jf dWRldmljZS5jCitAQCAtNTI4LDE5ICs1MjgsMTkgQEAgc3RhdGljIGludCBsaWJ1c2JfdWRldl9z ZWxlY3RfaW50ZXJmYWNlKElVREVWSUNFKiBpZGV2LCBCWVRFIEludGVyZmFjZU51bWJlciwgQlkK KyB7CisgCWludCBlcnJvciA9IDAsIGRpZmYgPSAwOworIAlVREVWSUNFKiBwZGV2ID0gKFVERVZJ Q0UqKWlkZXY7CistCVVSQkRSQ19QTFVHSU4qIHVyYmRyYzsKKy0JTVNVU0JfQ09ORklHX0RFU0NS SVBUT1IqIE1zQ29uZmlnOworLQlNU1VTQl9JTlRFUkZBQ0VfREVTQ1JJUFRPUioqIE1zSW50ZXJm YWNlczsKKyAKKyAJaWYgKCFwZGV2IHx8ICFwZGV2LT51cmJkcmMpCisgCQlyZXR1cm4gLTE7Cisg CistCXVyYmRyYyA9IHBkZXYtPnVyYmRyYzsKKy0JTXNDb25maWcgPSBwZGV2LT5Nc0NvbmZpZzsK KysJVVJCRFJDX1BMVUdJTiogdXJiZHJjID0gcGRldi0+dXJiZHJjOworKwlNU1VTQl9DT05GSUdf REVTQ1JJUFRPUiogTXNDb25maWcgPSBwZGV2LT5Nc0NvbmZpZzsKKyAKKyAJaWYgKE1zQ29uZmln KQorIAl7CistCQlNc0ludGVyZmFjZXMgPSBNc0NvbmZpZy0+TXNJbnRlcmZhY2VzOworKwkJaWYg KEludGVyZmFjZU51bWJlciA+PSBNc0NvbmZpZy0+TnVtSW50ZXJmYWNlcykKKysJCQlyZXR1cm4g LTI7CisrCisrCQlNU1VTQl9JTlRFUkZBQ0VfREVTQ1JJUFRPUioqIE1zSW50ZXJmYWNlcyA9IE1z Q29uZmlnLT5Nc0ludGVyZmFjZXM7CisgCQlpZiAoTXNJbnRlcmZhY2VzKQorIAkJeworIAkJCVdM b2dfUHJpbnQodXJiZHJjLT5sb2csIFdMT0dfSU5GTywKKy0tIAorMi41My4wCisKCmRpZmYgLS1n aXQgYS9jaGFubmVscy12aWRlby1maXgtd3JvbmctY2FzdC5wYXRjaCBiL2NoYW5uZWxzLXZpZGVv LWZpeC13cm9uZy1jYXN0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LjE4YmFiMWIKLS0tIC9kZXYvbnVsbAorKysgYi9jaGFubmVscy12aWRlby1maXgtd3JvbmctY2Fz dC5wYXRjaApAQCAtMCwwICsxLDM3IEBACitGcm9tIDk3MGFkMjMxMWU2OTU4OTAwNGQ2YTg0OTYx YWE5ZDFlM2IzM2MwODUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBPbmRyZWogSG9s eSA8b2hvbHlAcmVkaGF0LmNvbT4KK0RhdGU6IFRodSwgMjYgTWFyIDIwMjYgMTU6NTc6MzQgKzAx MDAKK1N1YmplY3Q6IFtQQVRDSF0gW2NoYW5uZWxzLHZpZGVvXSBmaXggd3JvbmcgY2FzdAorCitC YWNrcG9ydCBvZiBjb21taXQgZTAxY2Q4NWM4MDAzYTI0NWVmOTc3OGYwZWRhNGI5MjM1NTE0YzIw MS4KKworTWFkZS13aXRoOiBDdXJzb3IKKy0tLQorIGNoYW5uZWxzL3ZpZGVvL2NsaWVudC92aWRl b19tYWluLmMgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRl bGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY2hhbm5lbHMvdmlkZW8vY2xpZW50L3ZpZGVvX21h aW4uYyBiL2NoYW5uZWxzL3ZpZGVvL2NsaWVudC92aWRlb19tYWluLmMKK2luZGV4IDY0MTIzMWIx ZC4uMGFmNzgxNDBlIDEwMDY0NAorLS0tIGEvY2hhbm5lbHMvdmlkZW8vY2xpZW50L3ZpZGVvX21h aW4uYworKysrIGIvY2hhbm5lbHMvdmlkZW8vY2xpZW50L3ZpZGVvX21haW4uYworQEAgLTk1OSw3 ICs5NTksNyBAQCBzdGF0aWMgVUlOVCB2aWRlb19jb250cm9sX29uX2Nsb3NlKElXVFNWaXJ0dWFs Q2hhbm5lbENhbGxiYWNrKiBwQ2hhbm5lbENhbGxiYWNrKQorIHsKKyAJaWYgKHBDaGFubmVsQ2Fs bGJhY2spCisgCXsKKy0JCVZJREVPX0xJU1RFTkVSX0NBTExCQUNLKiBsaXN0ZW5lcl9jYWxsYmFj ayA9IChWSURFT19MSVNURU5FUl9DQUxMQkFDSyopcENoYW5uZWxDYWxsYmFjazsKKysJCVZJREVP X0NIQU5ORUxfQ0FMTEJBQ0sqIGxpc3RlbmVyX2NhbGxiYWNrID0gKFZJREVPX0NIQU5ORUxfQ0FM TEJBQ0sqKXBDaGFubmVsQ2FsbGJhY2s7CisgCQlWSURFT19QTFVHSU4qIHZpZGVvID0gKFZJREVP X1BMVUdJTiopbGlzdGVuZXJfY2FsbGJhY2stPnBsdWdpbjsKKyAJCWlmICh2aWRlbyAmJiB2aWRl by0+Y29udHJvbF9jYWxsYmFjaykKKyAJCXsKK0BAIC05NzQsNyArOTc0LDcgQEAgc3RhdGljIFVJ TlQgdmlkZW9fZGF0YV9vbl9jbG9zZShJV1RTVmlydHVhbENoYW5uZWxDYWxsYmFjayogcENoYW5u ZWxDYWxsYmFjaykKKyB7CisgCWlmIChwQ2hhbm5lbENhbGxiYWNrKQorIAl7CistCQlWSURFT19M SVNURU5FUl9DQUxMQkFDSyogbGlzdGVuZXJfY2FsbGJhY2sgPSAoVklERU9fTElTVEVORVJfQ0FM TEJBQ0sqKXBDaGFubmVsQ2FsbGJhY2s7CisrCQlWSURFT19DSEFOTkVMX0NBTExCQUNLKiBsaXN0 ZW5lcl9jYWxsYmFjayA9IChWSURFT19DSEFOTkVMX0NBTExCQUNLKilwQ2hhbm5lbENhbGxiYWNr OworIAkJVklERU9fUExVR0lOKiB2aWRlbyA9IChWSURFT19QTFVHSU4qKWxpc3RlbmVyX2NhbGxi YWNrLT5wbHVnaW47CisgCQlpZiAodmlkZW8gJiYgdmlkZW8tPmRhdGFfY2FsbGJhY2spCisgCQl7 CistLSAKKzIuNTMuMAorCgpkaWZmIC0tZ2l0IGEvY2hhbm5lbHMtdmlkZW8tdW5pZnktZXJyb3It aGFuZGxpbmcucGF0Y2ggYi9jaGFubmVscy12aWRlby11bmlmeS1lcnJvci1oYW5kbGluZy5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZWFhOTkyCi0tLSAvZGV2L251 bGwKKysrIGIvY2hhbm5lbHMtdmlkZW8tdW5pZnktZXJyb3ItaGFuZGxpbmcucGF0Y2gKQEAgLTAs MCArMSwxMjEgQEAKK0Zyb20gMmNmZGMxNmZhZWQ5M2E4ZDVkMWVjMzkxNzg4NTQ3NDA5ZGY5ODZk ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE9uZHJlaiBIb2x5IDxvaG9seUByZWRo YXQuY29tPgorRGF0ZTogVGh1LCAyNiBNYXIgMjAyNiAxNTo1NzoyOCArMDEwMAorU3ViamVjdDog W1BBVENIXSBbY2hhbm5lbHMsdmlkZW9dIHVuaWZ5IGVycm9yIGhhbmRsaW5nCisKK1BhcnRpYWwg YmFja3BvcnQgb2YgY29tbWl0IDYzNWFlM2M4MTkzMjU2ZGIwMTc3NGZhYjVmZjExYmNhZTU3YWVk NmIuCisKK01hZGUtd2l0aDogQ3Vyc29yCistLS0KKyBjaGFubmVscy92aWRlby9jbGllbnQvdmlk ZW9fbWFpbi5jIHwgNDUgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCisgMSBmaWxlIGNo YW5nZWQsIDM0IGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEv Y2hhbm5lbHMvdmlkZW8vY2xpZW50L3ZpZGVvX21haW4uYyBiL2NoYW5uZWxzL3ZpZGVvL2NsaWVu dC92aWRlb19tYWluLmMKK2luZGV4IGE4MDMxZmM4Ni4uNjQxMjMxYjFkIDEwMDY0NAorLS0tIGEv Y2hhbm5lbHMvdmlkZW8vY2xpZW50L3ZpZGVvX21haW4uYworKysrIGIvY2hhbm5lbHMvdmlkZW8v Y2xpZW50L3ZpZGVvX21haW4uYworQEAgLTI1LDcgKzI1LDkgQEAKKyAjaW5jbHVkZSA8c3RkbGli Lmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorIAorKyNpbmNsdWRlIDx3aW5wci9hc3NlcnQuaD4K KyAjaW5jbHVkZSA8d2lucHIvY3J0Lmg+CisrI2luY2x1ZGUgPHdpbnByL2Vycm9yLmg+CisgI2lu Y2x1ZGUgPHdpbnByL3N5bmNoLmg+CisgI2luY2x1ZGUgPHdpbnByL3ByaW50Lmg+CisgI2luY2x1 ZGUgPHdpbnByL3N0cmVhbS5oPgorQEAgLTM1MSwxNCArMzUzLDI0IEBAIHN0YXRpYyB2b2lkIFZp ZGVvQ2xpZW50Q29udGV4dFByaXZfZnJlZShWaWRlb0NsaWVudENvbnRleHRQcml2KiBwcml2KQor IAlmcmVlKHByaXYpOworIH0KKyAKKytzdGF0aWMgVUlOVCB2aWRlb19jaGFubmVsX3dyaXRlKFZJ REVPX1BMVUdJTiogdmlkZW8sIGNvbnN0IEJZVEUqIGRhdGEsIFVJTlQzMiBsZW5ndGgpCisrewor KwlXSU5QUl9BU1NFUlQodmlkZW8pOworKworKwlpZiAoIXZpZGVvLT5jb250cm9sX2NhbGxiYWNr IHx8ICF2aWRlby0+Y29udHJvbF9jYWxsYmFjay0+Y2hhbm5lbF9jYWxsYmFjaykKKysJCXJldHVy biBFUlJPUl9CQURfQ09ORklHVVJBVElPTjsKKysJSVdUU1ZpcnR1YWxDaGFubmVsKiBjaGFubmVs ID0gdmlkZW8tPmNvbnRyb2xfY2FsbGJhY2stPmNoYW5uZWxfY2FsbGJhY2stPmNoYW5uZWw7Cisr CWlmICghY2hhbm5lbCB8fCAhY2hhbm5lbC0+V3JpdGUpCisrCQlyZXR1cm4gRVJST1JfQkFEX0NP TkZJR1VSQVRJT047CisrCXJldHVybiBjaGFubmVsLT5Xcml0ZShjaGFubmVsLCBsZW5ndGgsIGRh dGEsIE5VTEwpOworK30KKysKKyBzdGF0aWMgVUlOVCB2aWRlb19jb250cm9sX3NlbmRfcHJlc2Vu dGF0aW9uX3Jlc3BvbnNlKFZpZGVvQ2xpZW50Q29udGV4dCogY29udGV4dCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRTTU1fUFJFU0VOVEFU SU9OX1JFU1BPTlNFKiByZXNwKQorIHsKKyAJQllURSBidWZbMTJdOworIAl3U3RyZWFtKiBzOwor IAlWSURFT19QTFVHSU4qIHZpZGVvID0gKFZJREVPX1BMVUdJTiopY29udGV4dC0+aGFuZGxlOwor LQlJV1RTVmlydHVhbENoYW5uZWwqIGNoYW5uZWw7CistCVVJTlQgcmV0OworIAorIAlzID0gU3Ry ZWFtX05ldyhidWYsIDEyKTsKKyAJaWYgKCFzKQorQEAgLTM3MCwxMSArMzgyLDkgQEAgc3RhdGlj IFVJTlQgdmlkZW9fY29udHJvbF9zZW5kX3ByZXNlbnRhdGlvbl9yZXNwb25zZShWaWRlb0NsaWVu dENvbnRleHQqIGNvbnRleHQKKyAJU3RyZWFtX1plcm8ocywgMyk7CisgCVN0cmVhbV9TZWFsTGVu Z3RoKHMpOworIAorLQljaGFubmVsID0gdmlkZW8tPmNvbnRyb2xfY2FsbGJhY2stPmNoYW5uZWxf Y2FsbGJhY2stPmNoYW5uZWw7CistCXJldCA9IGNoYW5uZWwtPldyaXRlKGNoYW5uZWwsIDEyLCBi dWYsIE5VTEwpOworIAlTdHJlYW1fRnJlZShzLCBGQUxTRSk7CisgCistCXJldHVybiByZXQ7Cisr CXJldHVybiB2aWRlb19jaGFubmVsX3dyaXRlKHZpZGVvLCBidWYsIHNpemVvZihidWYpKTsKKyB9 CisgCisgc3RhdGljIEJPT0wgdmlkZW9fb25NYXBwZWRHZW9tZXRyeVVwZGF0ZShNQVBQRURfR0VP TUVUUlkqIGdlb21ldHJ5KQorQEAgLTU5Miw4ICs2MDIsNiBAQCBzdGF0aWMgVUlOVCB2aWRlb19j b250cm9sX3NlbmRfY2xpZW50X25vdGlmaWNhdGlvbihWaWRlb0NsaWVudENvbnRleHQqIGNvbnRl eHQsCisgCUJZVEUgYnVmWzEwMF07CisgCXdTdHJlYW0qIHM7CisgCVZJREVPX1BMVUdJTiogdmlk ZW8gPSAoVklERU9fUExVR0lOKiljb250ZXh0LT5oYW5kbGU7CistCUlXVFNWaXJ0dWFsQ2hhbm5l bCogY2hhbm5lbDsKKy0JVUlOVCByZXQ7CisgCVVJTlQzMiBjYlNpemU7CisgCisgCXMgPSBTdHJl YW1fTmV3KGJ1ZiwgMzApOworQEAgLTYyNywxMCArNjM1LDcgQEAgc3RhdGljIFVJTlQgdmlkZW9f Y29udHJvbF9zZW5kX2NsaWVudF9ub3RpZmljYXRpb24oVmlkZW9DbGllbnRDb250ZXh0KiBjb250 ZXh0LAorIAlTdHJlYW1fV3JpdGVfVUlOVDMyKHMsIGNiU2l6ZSk7CisgCVN0cmVhbV9GcmVlKHMs IEZBTFNFKTsKKyAKKy0JY2hhbm5lbCA9IHZpZGVvLT5jb250cm9sX2NhbGxiYWNrLT5jaGFubmVs X2NhbGxiYWNrLT5jaGFubmVsOworLQlyZXQgPSBjaGFubmVsLT5Xcml0ZShjaGFubmVsLCBjYlNp emUsIGJ1ZiwgTlVMTCk7CistCistCXJldHVybiByZXQ7CisrCXJldHVybiB2aWRlb19jaGFubmVs X3dyaXRlKHZpZGVvLCBidWYsIGNiU2l6ZSk7CisgfQorIAorIHN0YXRpYyB2b2lkIHZpZGVvX3Rp bWVyKFZpZGVvQ2xpZW50Q29udGV4dCogdmlkZW8sIFVJTlQ2NCBub3cpCitAQCAtOTUyLDEyICs5 NTcsMzAgQEAgc3RhdGljIFVJTlQgdmlkZW9fZGF0YV9vbl9kYXRhX3JlY2VpdmVkKElXVFNWaXJ0 dWFsQ2hhbm5lbENhbGxiYWNrKiBwQ2hhbm5lbENhbGwKKyAgKi8KKyBzdGF0aWMgVUlOVCB2aWRl b19jb250cm9sX29uX2Nsb3NlKElXVFNWaXJ0dWFsQ2hhbm5lbENhbGxiYWNrKiBwQ2hhbm5lbENh bGxiYWNrKQorIHsKKysJaWYgKHBDaGFubmVsQ2FsbGJhY2spCisrCXsKKysJCVZJREVPX0xJU1RF TkVSX0NBTExCQUNLKiBsaXN0ZW5lcl9jYWxsYmFjayA9IChWSURFT19MSVNURU5FUl9DQUxMQkFD SyopcENoYW5uZWxDYWxsYmFjazsKKysJCVZJREVPX1BMVUdJTiogdmlkZW8gPSAoVklERU9fUExV R0lOKilsaXN0ZW5lcl9jYWxsYmFjay0+cGx1Z2luOworKwkJaWYgKHZpZGVvICYmIHZpZGVvLT5j b250cm9sX2NhbGxiYWNrKQorKwkJeworKwkJCXZpZGVvLT5jb250cm9sX2NhbGxiYWNrLT5jaGFu bmVsX2NhbGxiYWNrID0gTlVMTDsKKysJCX0KKysJfQorIAlmcmVlKHBDaGFubmVsQ2FsbGJhY2sp OworIAlyZXR1cm4gQ0hBTk5FTF9SQ19PSzsKKyB9CisgCisgc3RhdGljIFVJTlQgdmlkZW9fZGF0 YV9vbl9jbG9zZShJV1RTVmlydHVhbENoYW5uZWxDYWxsYmFjayogcENoYW5uZWxDYWxsYmFjaykK KyB7CisrCWlmIChwQ2hhbm5lbENhbGxiYWNrKQorKwl7CisrCQlWSURFT19MSVNURU5FUl9DQUxM QkFDSyogbGlzdGVuZXJfY2FsbGJhY2sgPSAoVklERU9fTElTVEVORVJfQ0FMTEJBQ0sqKXBDaGFu bmVsQ2FsbGJhY2s7CisrCQlWSURFT19QTFVHSU4qIHZpZGVvID0gKFZJREVPX1BMVUdJTiopbGlz dGVuZXJfY2FsbGJhY2stPnBsdWdpbjsKKysJCWlmICh2aWRlbyAmJiB2aWRlby0+ZGF0YV9jYWxs YmFjaykKKysJCXsKKysJCQl2aWRlby0+ZGF0YV9jYWxsYmFjay0+Y2hhbm5lbF9jYWxsYmFjayA9 IE5VTEw7CisrCQl9CisrCX0KKyAJZnJlZShwQ2hhbm5lbENhbGxiYWNrKTsKKyAJcmV0dXJuIENI QU5ORUxfUkNfT0s7CisgfQorLS0gCisyLjUzLjAKKwoKZGlmZiAtLWdpdCBhL2NsaWVudC1jb21t b24tZGVhY3RpdmF0ZS1jbGktcGFyc2luZy1pbi1yZHAtZmlsZXMucGF0Y2ggYi9jbGllbnQtY29t bW9uLWRlYWN0aXZhdGUtY2xpLXBhcnNpbmctaW4tcmRwLWZpbGVzLnBhdGNoCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3NGIxYTMKLS0tIC9kZXYvbnVsbAorKysgYi9jbGll bnQtY29tbW9uLWRlYWN0aXZhdGUtY2xpLXBhcnNpbmctaW4tcmRwLWZpbGVzLnBhdGNoCkBAIC0w LDAgKzEsNjUgQEAKK0Zyb20gMjBhMzQ4OWMyMzc2M2Y5NGQzMWRjZjhmZDdlZDg4MGUwN2NiYjJl OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFybWluIE5vdmFrIDxhcm1pbi5ub3Zh a0B0aGluY2FzdC5jb20+CitEYXRlOiBUaHUsIDIgSnVsIDIwMjYgMTA6MjE6NTQgKzAyMDAKK1N1 YmplY3Q6IFtQQVRDSF0gW2NsaWVudCxjb21tb25dIGRlYWN0aXZhdGUgY2xpIHBhcnNpbmcgaW4g UkRQIGZpbGVzCisKK1RoaXMgZmVhdHVyZSB3YXMgdW5jb2R1bWVudGVkIGFuZCBtaWdodCBoYXZl IHVuaW50ZW5kZWQgc2lkZSBlZmZlY3RzLgorRGVhY3RpdmF0ZSBpdCBieSBkZWZhdWx0IGFuZCAo Zm9yIHRoZSB0aW1lIGJlaW5nKSBrZWVwIGFuIG9wdGlvbiB0bworZW5hYmxlIGl0IGF0IGNvbXBp bGUgdGltZS4KKy0tLQorIGNsaWVudC9jb21tb24vQ01ha2VMaXN0cy50eHQgfCA1ICsrKysrCisg Y2xpZW50L2NvbW1vbi9maWxlLmMgICAgICAgICB8IDQgKysrKworIDIgZmlsZXMgY2hhbmdlZCwg OSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9jbGllbnQvY29tbW9uL0NNYWtlTGlzdHMu dHh0IGIvY2xpZW50L2NvbW1vbi9DTWFrZUxpc3RzLnR4dAoraW5kZXggYjQ2NWE2MzExLi43YmM3 Y2YwODMgMTAwNjQ0CistLS0gYS9jbGllbnQvY29tbW9uL0NNYWtlTGlzdHMudHh0CisrKysgYi9j bGllbnQvY29tbW9uL0NNYWtlTGlzdHMudHh0CitAQCAtODUsNiArODUsMTEgQEAgaWYgKFdJVEhf REVCVUdfU1lNQk9MUyBBTkQgTVNWQyBBTkQgQlVJTERfU0hBUkVEX0xJQlMpCisgCWluc3RhbGwo RklMRVMgJHtDTUFLRV9QREJfQklOQVJZX0RJUn0vJHtPVVRQVVRfRklMRU5BTUV9LnBkYiBERVNU SU5BVElPTiAke0NNQUtFX0lOU1RBTExfTElCRElSfSBDT01QT05FTlQgc3ltYm9scykKKyBlbmRp ZigpCisKKytvcHRpb24oV0lUSF9FTUJFRERFRF9DTElfSU5fUkRQX0ZJTEVTICJbZGFuZ3JvdXNd IGFsbG93IGVtYmVkZGVkIGNsaSBhcmd1bWVudHMgaW4gcmRwIGZpbGVzIiBPRkYpCisraWYoV0lU SF9FTUJFRERFRF9DTElfSU5fUkRQX0ZJTEVTKQorKyAgYWRkX2NvbXBpbGVfZGVmaW5pdGlvbnMo V0lUSF9FTUJFRERFRF9DTElfSU5fUkRQX0ZJTEVTKQorK2VuZGlmKCkKKysKKyBzZXRfcHJvcGVy dHkoVEFSR0VUICR7TU9EVUxFX05BTUV9IFBST1BFUlRZIEZPTERFUiAiQ2xpZW50L0NvbW1vbiIp CisKKyBpZihCVUlMRF9URVNUSU5HKQorZGlmZiAtLWdpdCBhL2NsaWVudC9jb21tb24vZmlsZS5j IGIvY2xpZW50L2NvbW1vbi9maWxlLmMKK2luZGV4IGI1NmZlNmYwNi4uYmZmOTRiYWQwIDEwMDY0 NAorLS0tIGEvY2xpZW50L2NvbW1vbi9maWxlLmMKKysrKyBiL2NsaWVudC9jb21tb24vZmlsZS5j CitAQCAtMjYsNiArMjYsNyBAQAorCisgI2luY2x1ZGUgPHdpbnByL2ZpbGUuaD4KKworKworICNp bmNsdWRlIDxmcmVlcmRwL2NsaWVudC9maWxlLmg+CisgI2luY2x1ZGUgPGZyZWVyZHAvY2xpZW50 L2NtZGxpbmUuaD4KKworQEAgLTY2MSw2ICs2NjIsNyBAQCBzdGF0aWMgQk9PTCB0cmltX3N0cmlu Z3MocmRwRmlsZSogZmlsZSkKKyAJCXJldHVybiBGQUxTRTsKKyAJaWYgKCF0cmltKCZmaWxlLT5L ZGNQcm94eU5hbWUpKQorIAkJcmV0dXJuIEZBTFNFOworKworIAlyZXR1cm4gVFJVRTsKKyB9CisK K0BAIC03MjEsNiArNzIzLDcgQEAgQk9PTCBmcmVlcmRwX2NsaWVudF9wYXJzZV9yZHBfZmlsZV9i dWZmZXJfZXgocmRwRmlsZSogZmlsZSwgY29uc3QgQllURSogYnVmZmVyLAorIAkJCWlmIChmcmVl cmRwX2NsaWVudF9wYXJzZV9yZHBfZmlsZV9hZGRfbGluZShmaWxlLCBsaW5lLCBpbmRleCkgPT0g LTEpCisgCQkJCWdvdG8gZmFpbDsKKworKyNpZiBkZWZpbmVkKFdJVEhfRU1CRURERURfQ0xJX0lO X1JEUF9GSUxFUykKKyAJCQlpZiAoYmVnWzBdID09ICcvJykKKyAJCQl7CisgCQkJCWlmICghZnJl ZXJkcF9jbGllbnRfcGFyc2VfcmRwX2ZpbGVfb3B0aW9uKGZpbGUsIGxpbmUsIGluZGV4KSkKK0BA IC03MjgsNiArNzMxLDcgQEAgQk9PTCBmcmVlcmRwX2NsaWVudF9wYXJzZV9yZHBfZmlsZV9idWZm ZXJfZXgocmRwRmlsZSogZmlsZSwgY29uc3QgQllURSogYnVmZmVyLAorCisgCQkJCWdvdG8gbmV4 dF9saW5lOyAvKiBGcmVlUkRQIG9wdGlvbiAqLworIAkJCX0KKysjZW5kaWYKKworIAkJCWQxID0g c3RyY2hyKGxpbmUsICc6Jyk7CisKCmRpZmYgLS1naXQgYS9jbGllbnQteDExLWZpeC1kZWFkbG9j ay1vbi1vdXRwdXQtZXhwb3NlLnBhdGNoIGIvY2xpZW50LXgxMS1maXgtZGVhZGxvY2stb24tb3V0 cHV0LWV4cG9zZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTU3 MzU2Ci0tLSAvZGV2L251bGwKKysrIGIvY2xpZW50LXgxMS1maXgtZGVhZGxvY2stb24tb3V0cHV0 LWV4cG9zZS5wYXRjaApAQCAtMCwwICsxLDE3MCBAQAorRnJvbSBhMjVhNmI4YzUzNjAyZDIwMjNk ZDBhZDY4NTAwMGRjMDA2MTc5ZTk0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT25k cmVqIEhvbHkgPG9ob2x5QHJlZGhhdC5jb20+CitEYXRlOiBNb24sIDI3IEFwciAyMDI2IDIwOjEy OjQyICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIFtjbGllbnQseDExXSBmaXggZGVhZGxvY2sgb24g b3V0cHV0IGV4cG9zZQorCitEZWZlciBzY3JlZW4gdXBkYXRlIGZyb20geGZfZXZlbnRfRXhwb3Nl IHRvIGFmdGVyIFgxMSBsb2NrIGlzIHJlbGVhc2VkLAorcHJldmVudGluZyBhIGRlYWRsb2NrIGJl dHdlZW4gWDExIGxvY2sgYW5kIHJhaWxXaW5kb3dzIGxvY2suCisKK0JhY2twb3J0IG9mIGNvbW1p dCBhMjc4ZmY3NDExNzQ0NGM2MzVjNTBmZmE1MDg0ZWNmNTE3MTcxZjVhLgorCitBZGp1c3RlZCBo dW5rIG9mZnNldHMgZm9yIDIuMTEuNy4KKworTWFkZS13aXRoOiBDdXJzb3IKKy0tLQorIGNsaWVu dC9YMTEveGZfY2xpZW50LmMgfCAgMyArKworIGNsaWVudC9YMTEveGZfZXZlbnQuYyAgfCA3NyAr KysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KKyBjbGllbnQvWDExL3hm X2V2ZW50LmggIHwgIDIgKysKKyBjbGllbnQvWDExL3hmcmVlcmRwLmggIHwgIDQgKysrCisgNCBm aWxlcyBjaGFuZ2VkLCA2MCBpbnNlcnRpb25zKCspLCAyNiBkZWxldGlvbnMoLSkKKworZGlmZiAt LWdpdCBhL2NsaWVudC9YMTEveGZfY2xpZW50LmMgYi9jbGllbnQvWDExL3hmX2NsaWVudC5jCitp bmRleCBiZDNlYjBkLi5mMTRjYjU1IDEwMDY0NAorLS0tIGEvY2xpZW50L1gxMS94Zl9jbGllbnQu YworKysrIGIvY2xpZW50L1gxMS94Zl9jbGllbnQuYworQEAgLTUxNiw2ICs1MTYsOSBAQCBzdGF0 aWMgQk9PTCB4Zl9wcm9jZXNzX3hfZXZlbnRzKGZyZWVyZHAqIGluc3RhbmNlKQorIAkJeGZfdW5s b2NrX3gxMSh4ZmMpOworIAkJaWYgKCFzdGF0dXMpCisgCQkJYnJlYWs7CisrCQlzdGF0dXMgPSB4 Zl9ldmVudF91cGRhdGVfc2NyZWVuKGluc3RhbmNlKTsKKysJCWlmICghc3RhdHVzKQorKwkJCWJy ZWFrOworIAl9CisgCisgCXJldHVybiBzdGF0dXM7CitkaWZmIC0tZ2l0IGEvY2xpZW50L1gxMS94 Zl9ldmVudC5jIGIvY2xpZW50L1gxMS94Zl9ldmVudC5jCitpbmRleCBlMTQyMWFkLi41MjRlNWUz IDEwMDY0NAorLS0tIGEvY2xpZW50L1gxMS94Zl9ldmVudC5jCisrKysgYi9jbGllbnQvWDExL3hm X2V2ZW50LmMKK0BAIC0zMjQsNDUgKzMyNCwzNCBAQCB2b2lkIHhmX2V2ZW50X2FkanVzdF9jb29y ZGluYXRlcyh4ZkNvbnRleHQqIHhmYywgaW50KiB4LCBpbnQqIHkpCisgfQorIHN0YXRpYyBCT09M IHhmX2V2ZW50X0V4cG9zZSh4ZkNvbnRleHQqIHhmYywgY29uc3QgWEV4cG9zZUV2ZW50KiBldmVu dCwgQk9PTCBhcHApCisgeworLQlpbnQgeCwgeTsKKy0JaW50IHcsIGg7CisrCVdJTlBSX0FTU0VS VCh4ZmMpOworKwlXSU5QUl9BU1NFUlQoZXZlbnQpOworKworIAlyZHBTZXR0aW5ncyogc2V0dGlu Z3MgPSB4ZmMtPmNvbnRleHQuc2V0dGluZ3M7CisrCVdJTlBSX0FTU0VSVChzZXR0aW5ncyk7Cisg CisgCWlmICghYXBwICYmIChzZXR0aW5ncy0+U21hcnRTaXppbmcgfHwgc2V0dGluZ3MtPk11bHRp VG91Y2hHZXN0dXJlcykpCisgCXsKKy0JCXggPSAwOworLQkJeSA9IDA7CistCQl3ID0gc2V0dGlu Z3MtPkRlc2t0b3BXaWR0aDsKKy0JCWggPSBzZXR0aW5ncy0+RGVza3RvcEhlaWdodDsKKysJCXhm Yy0+ZXhwb3NlZEFyZWEueCA9IDA7CisrCQl4ZmMtPmV4cG9zZWRBcmVhLnkgPSAwOworKwkJeGZj LT5leHBvc2VkQXJlYS53ID0gc2V0dGluZ3MtPkRlc2t0b3BXaWR0aDsKKysJCXhmYy0+ZXhwb3Nl ZEFyZWEuaCA9IHNldHRpbmdzLT5EZXNrdG9wSGVpZ2h0OworIAl9CisgCWVsc2UKKyAJeworLQkJ eCA9IGV2ZW50LT54OworLQkJeSA9IGV2ZW50LT55OworLQkJdyA9IGV2ZW50LT53aWR0aDsKKy0J CWggPSBldmVudC0+aGVpZ2h0OworKwkJeGZjLT5leHBvc2VkQXJlYS54ID0gZXZlbnQtPng7Cisr CQl4ZmMtPmV4cG9zZWRBcmVhLnkgPSBldmVudC0+eTsKKysJCXhmYy0+ZXhwb3NlZEFyZWEudyA9 IGV2ZW50LT53aWR0aDsKKysJCXhmYy0+ZXhwb3NlZEFyZWEuaCA9IGV2ZW50LT5oZWlnaHQ7Cisg CX0KKyAKKy0JaWYgKCFhcHApCistCXsKKy0JCWlmICh4ZmMtPmNvbnRleHQuZ2RpLT5nZngpCist CQl7CistCQkJeGZfT3V0cHV0RXhwb3NlKHhmYywgeCwgeSwgdywgaCk7CistCQkJcmV0dXJuIFRS VUU7CistCQl9CistCQl4Zl9kcmF3X3NjcmVlbih4ZmMsIHgsIHksIHcsIGgpOworLQl9CistCWVs c2UKKy0JeworLQkJeGZBcHBXaW5kb3cqIGFwcFdpbmRvdyA9IHhmX0FwcFdpbmRvd0Zyb21YMTFX aW5kb3coeGZjLCBldmVudC0+d2luZG93KTsKKy0JCWlmIChhcHBXaW5kb3cpCistCQkJeGZfVXBk YXRlV2luZG93QXJlYSh4ZmMsIGFwcFdpbmRvdywgeCwgeSwgdywgaCk7CistCQl4Zl9yYWlsX3Jl dHVybl93aW5kb3coYXBwV2luZG93LCBGQUxTRSk7CistCX0KKysJeGZjLT5leHBvc2VkV2luZG93 ID0gZXZlbnQtPndpbmRvdzsKKysJeGZjLT5leHBvc2VSZXF1ZXN0ZWQgPSBUUlVFOworIAorIAly ZXR1cm4gVFJVRTsKKyB9CisgCisrCisgc3RhdGljIEJPT0wgeGZfZXZlbnRfVmlzaWJpbGl0eU5v dGlmeSh4ZkNvbnRleHQqIHhmYywgY29uc3QgWFZpc2liaWxpdHlFdmVudCogZXZlbnQsIEJPT0wg YXBwKQorIHsKKyAJV0lOUFJfVU5VU0VEKGFwcCk7CitAQCAtMTE4MCwzICsxMTY5LDM5IEBAIEJP T0wgeGZfZXZlbnRfcHJvY2VzcyhmcmVlcmRwKiBpbnN0YW5jZSwgY29uc3QgWEV2ZW50KiBldmVu dCkKKyAJWFN5bmMoeGZjLT5kaXNwbGF5LCBGQUxTRSk7CisgCXJldHVybiBzdGF0dXM7CisgfQor KworK0JPT0wgeGZfZXZlbnRfdXBkYXRlX3NjcmVlbihmcmVlcmRwKiBpbnN0YW5jZSkKKyt7Cisr CVdJTlBSX0FTU0VSVChpbnN0YW5jZSk7CisrCisrCXhmQ29udGV4dCogeGZjID0gKHhmQ29udGV4 dCopaW5zdGFuY2UtPmNvbnRleHQ7CisrCVdJTlBSX0FTU0VSVCh4ZmMpOworKworKwlyZHBTZXR0 aW5ncyogc2V0dGluZ3MgPSB4ZmMtPmNvbnRleHQuc2V0dGluZ3M7CisrCVdJTlBSX0FTU0VSVChz ZXR0aW5ncyk7CisrCisrCWlmICgheGZjLT5leHBvc2VSZXF1ZXN0ZWQpCisrCQlyZXR1cm4gVFJV RTsKKysJeGZjLT5leHBvc2VSZXF1ZXN0ZWQgPSBGQUxTRTsKKysKKysJaWYgKCF4ZmMtPnJlbW90 ZV9hcHApCisrCXsKKysJCWlmICh4ZmMtPmNvbnRleHQuZ2RpLT5nZngpCisrCQl7CisrCQkJeGZf T3V0cHV0RXhwb3NlKHhmYywgeGZjLT5leHBvc2VkQXJlYS54LCB4ZmMtPmV4cG9zZWRBcmVhLnks CisrCQkJICAgICAgICAgICAgICAgIHhmYy0+ZXhwb3NlZEFyZWEudywgeGZjLT5leHBvc2VkQXJl YS5oKTsKKysJCQlyZXR1cm4gVFJVRTsKKysJCX0KKysJCXhmX2RyYXdfc2NyZWVuKHhmYywgeGZj LT5leHBvc2VkQXJlYS54LCB4ZmMtPmV4cG9zZWRBcmVhLnksIHhmYy0+ZXhwb3NlZEFyZWEudywK KysJCSAgICAgICAgICAgICAgIHhmYy0+ZXhwb3NlZEFyZWEuaCk7CisrCX0KKysJZWxzZQorKwl7 CisrCQl4ZkFwcFdpbmRvdyogYXBwV2luZG93ID0geGZfQXBwV2luZG93RnJvbVgxMVdpbmRvdyh4 ZmMsIHhmYy0+ZXhwb3NlZFdpbmRvdyk7CisrCQlpZiAoYXBwV2luZG93KQorKwkJCXhmX1VwZGF0 ZVdpbmRvd0FyZWEoeGZjLCBhcHBXaW5kb3csIHhmYy0+ZXhwb3NlZEFyZWEueCwgeGZjLT5leHBv c2VkQXJlYS55LAorKwkJCSAgICAgICAgICAgICAgICAgICAgeGZjLT5leHBvc2VkQXJlYS53LCB4 ZmMtPmV4cG9zZWRBcmVhLmgpOworKwkJeGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdpbmRvdywg RkFMU0UpOworKwl9CisrCXJldHVybiBUUlVFOworK30KK2RpZmYgLS1naXQgYS9jbGllbnQvWDEx L3hmX2V2ZW50LmggYi9jbGllbnQvWDExL3hmX2V2ZW50LmgKK2luZGV4IDIyNjlkM2UuLmUwMjVk MTkgMTAwNjQ0CistLS0gYS9jbGllbnQvWDExL3hmX2V2ZW50LmgKKysrKyBiL2NsaWVudC9YMTEv eGZfZXZlbnQuaAorQEAgLTI5LDYgKzI5LDggQEAgQk9PTCB4Zl9ldmVudF9hY3Rpb25fc2NyaXB0 X2luaXQoeGZDb250ZXh0KiB4ZmMpOworIHZvaWQgeGZfZXZlbnRfYWN0aW9uX3NjcmlwdF9mcmVl KHhmQ29udGV4dCogeGZjKTsKKyAKKyBCT09MIHhmX2V2ZW50X3Byb2Nlc3MoZnJlZXJkcCogaW5z dGFuY2UsIGNvbnN0IFhFdmVudCogZXZlbnQpOworKworK0JPT0wgeGZfZXZlbnRfdXBkYXRlX3Nj cmVlbihmcmVlcmRwKiBpbnN0YW5jZSk7Cisgdm9pZCB4Zl9ldmVudF9TZW5kQ2xpZW50RXZlbnQo eGZDb250ZXh0KiB4ZmMsIHhmV2luZG93KiB3aW5kb3csIEF0b20gYXRvbSwgdW5zaWduZWQgaW50 IG51bUFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTsKKyAKK2RpZmYg LS1naXQgYS9jbGllbnQvWDExL3hmcmVlcmRwLmggYi9jbGllbnQvWDExL3hmcmVlcmRwLmgKK2lu ZGV4IDYzNmU2MGEuLmExYTMzYjIgMTAwNjQ0CistLS0gYS9jbGllbnQvWDExL3hmcmVlcmRwLmgK KysrKyBiL2NsaWVudC9YMTEveGZyZWVyZHAuaAorQEAgLTI2MSw2ICsyNjEsMTAgQEAgc3RydWN0 IHhmX2NvbnRleHQKKyAJd0hhc2hUYWJsZSogcmFpbFdpbmRvd3M7CisgCXhmUmFpbEljb25DYWNo ZSogcmFpbEljb25DYWNoZTsKKyAKKysJQk9PTCBleHBvc2VSZXF1ZXN0ZWQ7CisrCUdESV9SR04g ZXhwb3NlZEFyZWE7CisrCVdpbmRvdyBleHBvc2VkV2luZG93OworKworIAlCT09MIHhrYkF2YWls YWJsZTsKKyAJQk9PTCB4cmVuZGVyQXZhaWxhYmxlOworIAorLS0gCisyLjUzLjAKKwoKZGlmZiAt LWdpdCBhL2NsaWVudC14MTEtZml4LWRvdWJsZS1mcmVlLWluLWNhc2Utb2YtaW52YWxpZC1wb2lu dGUucGF0Y2ggYi9jbGllbnQteDExLWZpeC1kb3VibGUtZnJlZS1pbi1jYXNlLW9mLWludmFsaWQt cG9pbnRlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzMDc0ZWMK LS0tIC9kZXYvbnVsbAorKysgYi9jbGllbnQteDExLWZpeC1kb3VibGUtZnJlZS1pbi1jYXNlLW9m LWludmFsaWQtcG9pbnRlLnBhdGNoCkBAIC0wLDAgKzEsNTMgQEAKK0Zyb20gYzBlODVkOTJlNDVk ZmY2YzlhMTJlNmFmNWJlMmU5ZWQxMGI0OTkwYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zy b206IE9uZHJlaiBIb2x5IDxvaG9seUByZWRoYXQuY29tPgorRGF0ZTogVGh1LCAyMiBKYW4gMjAy NiAxMjo1MTowOCArMDEwMAorU3ViamVjdDogW1BBVENIXSBbY2xpZW50LHgxMV0gZml4IGRvdWJs ZSBmcmVlIGluIGNhc2Ugb2YgaW52YWxpZCBwb2ludGVyCisKK0JhY2twb3J0IG9mIGNvbW1pdCAw NDIxYjUzZmNiNGE4MGM5NWY1MTM0MmU0YTJjNDBjNjhhNDEwMWQzLgorCitDby1BdXRob3JlZC1C eTogQ2xhdWRlIDxub3JlcGx5QGFudGhyb3BpYy5jb20+CistLS0KKyBjbGllbnQvWDExL3hmX2dy YXBoaWNzLmMgfCAxMyArKysrKystLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9u cygrKSwgNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NsaWVudC9YMTEveGZfZ3JhcGhp Y3MuYyBiL2NsaWVudC9YMTEveGZfZ3JhcGhpY3MuYworaW5kZXggNWFhMWZkNDhiLi5kNTk2YjIz ZGEgMTAwNjQ0CistLS0gYS9jbGllbnQvWDExL3hmX2dyYXBoaWNzLmMKKysrKyBiL2NsaWVudC9Y MTEveGZfZ3JhcGhpY3MuYworQEAgLTQwNiw3ICs0MDYsNiBAQCBzdGF0aWMgQk9PTCB4Zl9Qb2lu dGVyX05ldyhyZHBDb250ZXh0KiBjb250ZXh0LCByZHBQb2ludGVyKiBwb2ludGVyKQorIAlCT09M IHJjID0gRkFMU0U7CisgI2lmZGVmIFdJVEhfWENVUlNPUgorIAlVSU5UMzIgQ3Vyc29yRm9ybWF0 OworLQlzaXplX3Qgc2l6ZTsKKyAJeGZDb250ZXh0KiB4ZmMgPSAoeGZDb250ZXh0Kiljb250ZXh0 OworIAl4ZlBvaW50ZXIqIHhwb2ludGVyID0gKHhmUG9pbnRlciopcG9pbnRlcjsKKyAKK0BAIC00 MjEsMTkgKzQyMCwxOSBAQCBzdGF0aWMgQk9PTCB4Zl9Qb2ludGVyX05ldyhyZHBDb250ZXh0KiBj b250ZXh0LCByZHBQb2ludGVyKiBwb2ludGVyKQorIAl4cG9pbnRlci0+bkN1cnNvcnMgPSAwOwor IAl4cG9pbnRlci0+bUN1cnNvcnMgPSAwOworIAorLQlzaXplID0gMXVsbCAqIHBvaW50ZXItPmhl aWdodCAqIHBvaW50ZXItPndpZHRoICogR2V0Qnl0ZXNQZXJQaXhlbChDdXJzb3JGb3JtYXQpOwor Kwljb25zdCBzaXplX3Qgc2l6ZSA9CisrCSAgICAxdWxsICogcG9pbnRlci0+aGVpZ2h0ICogcG9p bnRlci0+d2lkdGggKiBHZXRCeXRlc1BlclBpeGVsKEN1cnNvckZvcm1hdCk7CisgCistCWlmICgh KHhwb2ludGVyLT5jdXJzb3JQaXhlbHMgPSAoWGN1cnNvclBpeGVsKilfYWxpZ25lZF9tYWxsb2Mo c2l6ZSwgMTYpKSkKKysJeHBvaW50ZXItPmN1cnNvclBpeGVscyA9IChYY3Vyc29yUGl4ZWwqKV9h bGlnbmVkX21hbGxvYyhzaXplLCAxNik7CisrCWlmICgheHBvaW50ZXItPmN1cnNvclBpeGVscykK KyAJCWdvdG8gZmFpbDsKKyAKKyAJaWYgKCFmcmVlcmRwX2ltYWdlX2NvcHlfZnJvbV9wb2ludGVy X2RhdGEoCisgCSAgICAgICAgKEJZVEUqKXhwb2ludGVyLT5jdXJzb3JQaXhlbHMsIEN1cnNvckZv cm1hdCwgMCwgMCwgMCwgcG9pbnRlci0+d2lkdGgsIHBvaW50ZXItPmhlaWdodCwKKyAJICAgICAg ICBwb2ludGVyLT54b3JNYXNrRGF0YSwgcG9pbnRlci0+bGVuZ3RoWG9yTWFzaywgcG9pbnRlci0+ YW5kTWFza0RhdGEsCisgCSAgICAgICAgcG9pbnRlci0+bGVuZ3RoQW5kTWFzaywgcG9pbnRlci0+ eG9yQnBwLCAmY29udGV4dC0+Z2RpLT5wYWxldHRlKSkKKy0JeworLQkJX2FsaWduZWRfZnJlZSh4 cG9pbnRlci0+Y3Vyc29yUGl4ZWxzKTsKKy0JCXJldHVybiBGQUxTRTsKKy0JfQorKwkJZ290byBm YWlsOworKworIAlyYyA9IFRSVUU7CisgCisgI2VuZGlmCistLSAKKzIuNTIuMAorCgpkaWZmIC0t Z2l0IGEvY2xpZW50LXgxMS1maXgteGZfcmFpbF93aW5kb3dfY29tbW9uLWNsZWFudXAucGF0Y2gg Yi9jbGllbnQteDExLWZpeC14Zl9yYWlsX3dpbmRvd19jb21tb24tY2xlYW51cC5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTRiMTU1Ci0tLSAvZGV2L251bGwKKysr IGIvY2xpZW50LXgxMS1maXgteGZfcmFpbF93aW5kb3dfY29tbW9uLWNsZWFudXAucGF0Y2gKQEAg LTAsMCArMSw0NSBAQAorRnJvbSA1NjJjYzRiMzMyNTcwNzRkMWQ1MDUzNTEzODk5OGJjODE3OTZk NDQ3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT25kcmVqIEhvbHkgPG9ob2x5QHJl ZGhhdC5jb20+CitEYXRlOiBNb24sIDI3IEFwciAyMDI2IDE5OjAwOjAwICswMDAwCitTdWJqZWN0 OiBbUEFUQ0hdIFtjbGllbnQseDExXSBmaXggeGZfcmFpbF93aW5kb3dfY29tbW9uIGNsZWFudXAK KworQmFja3BvcnQgb2YgY29tbWl0IGI0ZjBmMGExOGZlNTNhYThkNDdkMDYyZjkxNDcxZjRlOWM1 ZTBkNTEuCisKK0FkanVzdGVkIGh1bmsgb2Zmc2V0cyBmb3IgMi4xMS43LgorCitNYWRlLXdpdGg6 IEN1cnNvcgorLS0tCisgY2xpZW50L1gxMS94Zl9yYWlsLmMgfCA2ICstLS0tLQorIDEgZmlsZSBj aGFuZ2VkLCAxIGluc2VydGlvbigrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2Ns aWVudC9YMTEveGZfcmFpbC5jIGIvY2xpZW50L1gxMS94Zl9yYWlsLmMKK2luZGV4IDI0MmM1NGIu LjRjNGY0N2QgMTAwNjQ0CistLS0gYS9jbGllbnQvWDExL3hmX3JhaWwuYworKysrIGIvY2xpZW50 L1gxMS94Zl9yYWlsLmMKK0BAIC0yNjAsMTEgKzI2MCwxMCBAQCBzdGF0aWMgdm9pZCB3aW5kb3df c3RhdGVfbG9nX3N0eWxlKHdMb2cqIGxvZywgY29uc3QgV0lORE9XX1NUQVRFX09SREVSKiB3aW5k b3dTdAorIHN0YXRpYyBCT09MIHhmX3JhaWxfd2luZG93X2NvbW1vbihyZHBDb250ZXh0KiBjb250 ZXh0LCBjb25zdCBXSU5ET1dfT1JERVJfSU5GTyogb3JkZXJJbmZvLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBXSU5ET1dfU1RBVEVfT1JERVIqIHdpbmRvd1N0YXRl KQorIHsKKy0JeGZBcHBXaW5kb3cqIGFwcFdpbmRvdyA9IE5VTEw7CisgCXhmQ29udGV4dCogeGZj ID0gKHhmQ29udGV4dCopY29udGV4dDsKKyAJVUlOVDMyIGZpZWxkRmxhZ3MgPSBvcmRlckluZm8t PmZpZWxkRmxhZ3M7CisgCUJPT0wgcG9zaXRpb25fb3Jfc2l6ZV91cGRhdGVkID0gRkFMU0U7Cist CWFwcFdpbmRvdyA9IHhmX3JhaWxfZ2V0X3dpbmRvdyh4ZmMsIG9yZGVySW5mby0+d2luZG93SWQp OworKwl4ZkFwcFdpbmRvdyogYXBwV2luZG93ID0geGZfcmFpbF9nZXRfd2luZG93KHhmYywgb3Jk ZXJJbmZvLT53aW5kb3dJZCk7CisgCisgCWlmIChmaWVsZEZsYWdzICYgV0lORE9XX09SREVSX1NU QVRFX05FVykKKyAJeworQEAgLTMxMCwxMCArMzA5LDcgQEAgc3RhdGljIEJPT0wgeGZfcmFpbF93 aW5kb3dfY29tbW9uKHJkcENvbnRleHQqIGNvbnRleHQsIGNvbnN0IFdJTkRPV19PUkRFUl9JTkZP KgorIAkJfQorIAorIAkJaWYgKCFhcHBXaW5kb3ctPnRpdGxlKQorLQkJeworLQkJCWZyZWUoYXBw V2luZG93KTsKKyAJCQlyZXR1cm4gRkFMU0U7CistCQl9CisgCisgCQl4Zl9BcHBXaW5kb3dJbml0 KHhmYywgYXBwV2luZG93KTsKKyAJfQorLS0gCisyLjUzLjAKKwoKZGlmZiAtLWdpdCBhL2NsaWVu dC14MTEtaW1wcm92ZS1yYWlscy13aW5kb3ctbG9ja2luZy5wYXRjaCBiL2NsaWVudC14MTEtaW1w cm92ZS1yYWlscy13aW5kb3ctbG9ja2luZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi4yMmRjNzYyCi0tLSAvZGV2L251bGwKKysrIGIvY2xpZW50LXgxMS1pbXByb3Zl LXJhaWxzLXdpbmRvdy1sb2NraW5nLnBhdGNoCkBAIC0wLDAgKzEsMzMxIEBACitGcm9tIGU2ZWRh YmU2OTBhZDhkZTYzYWYzMjc0MDNlODM3MWI2ZWYxMzE5ZTIgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCitGcm9tOiBPbmRyZWogSG9seSA8b2hvbHlAcmVkaGF0LmNvbT4KK0RhdGU6IE1vbiwgMjcg QXByIDIwMjYgMTk6Mzg6NDcgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gW2NsaWVudCx4MTFdIGlt cHJvdmUgcmFpbHMgd2luZG93IGxvY2tpbmcKKworQmFja3BvcnQgb2YgY29tbWl0IDc4ZmQ3ZjU4 MGQ1ZjllNmQ5ZDU4MmQ4MmU1ZWE5NjAwMzg0NGZiZGYuCisKK0FkYXB0ZWQgZm9yIDIuMTEuNzog Qzg5IGRlY2xhcmF0aW9uIHN0eWxlLCBzaW1wbGlmaWVkCitgeGZBcHBXaW5kb3dzTG9ja0Zyb21g L2BVbmxvY2tGcm9tYCBzaWduYXR1cmVzIChubworYFdJTlBSX0FUVFJfVU5VU0VEYCksIGBYU2V0 VHJhbnNpZW50Rm9ySGludGAgaW5saW5lIGVycm9yIGhhbmRsaW5nLgorCitNYWRlLXdpdGg6IEN1 cnNvcgorLS0tCisgY2xpZW50L1gxMS94Zl9ldmVudC5jICAgIHwgIDcgKystLS0tCisgY2xpZW50 L1gxMS94Zl9ncmFwaGljcy5jIHwgIDQgKy0tCisgY2xpZW50L1gxMS94Zl9yYWlsLmMgICAgIHwg NTMgKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgY2xpZW50L1gxMS94 Zl9yYWlsLmggICAgIHwgMTAgKysrKysrLS0KKyBjbGllbnQvWDExL3hmX3dpbmRvdy5jICAgfCA1 NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCisgY2xpZW50L1gxMS94 Zl93aW5kb3cuaCAgIHwgMTEgKysrKysrLS0KKyA2IGZpbGVzIGNoYW5nZWQsIDg5IGluc2VydGlv bnMoKyksIDUwIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY2xpZW50L1gxMS94Zl9ldmVu dC5jIGIvY2xpZW50L1gxMS94Zl9ldmVudC5jCitpbmRleCA4YmViY2Q0Li44ODAxZmJkIDEwMDY0 NAorLS0tIGEvY2xpZW50L1gxMS94Zl9ldmVudC5jCisrKysgYi9jbGllbnQvWDExL3hmX2V2ZW50 LmMKK0BAIC0zNTQsMTMgKzM1NCwxMCBAQCBzdGF0aWMgQk9PTCB4Zl9ldmVudF9FeHBvc2UoeGZD b250ZXh0KiB4ZmMsIGNvbnN0IFhFeHBvc2VFdmVudCogZXZlbnQsIEJPT0wgYXBwKQorIAl9Cisg CWVsc2UKKyAJeworLQkJeGZBcHBXaW5kb3cqIGFwcFdpbmRvdzsKKy0JCWFwcFdpbmRvdyA9IHhm X0FwcFdpbmRvd0Zyb21YMTFXaW5kb3coeGZjLCBldmVudC0+d2luZG93KTsKKy0KKysJCXhmQXBw V2luZG93KiBhcHBXaW5kb3cgPSB4Zl9BcHBXaW5kb3dGcm9tWDExV2luZG93KHhmYywgZXZlbnQt PndpbmRvdyk7CisgCQlpZiAoYXBwV2luZG93KQorLQkJeworIAkJCXhmX1VwZGF0ZVdpbmRvd0Fy ZWEoeGZjLCBhcHBXaW5kb3csIHgsIHksIHcsIGgpOworLQkJfQorKwkJeGZfcmFpbF9yZXR1cm5f d2luZG93KGFwcFdpbmRvdyk7CisgCX0KKyAKKyAJcmV0dXJuIFRSVUU7CitkaWZmIC0tZ2l0IGEv Y2xpZW50L1gxMS94Zl9ncmFwaGljcy5jIGIvY2xpZW50L1gxMS94Zl9ncmFwaGljcy5jCitpbmRl eCA3MDk3OWJkLi5mNWI0ZjNkIDEwMDY0NAorLS0tIGEvY2xpZW50L1gxMS94Zl9ncmFwaGljcy5j CisrKysgYi9jbGllbnQvWDExL3hmX2dyYXBoaWNzLmMKK0BAIC0zNzIsMTIgKzM3MiwxMiBAQCBz dGF0aWMgV2luZG93IHhmX1BvaW50ZXJfZ2V0X3dpbmRvdyh4ZkNvbnRleHQqIHhmYykKKyAJaWYg KHhmYy0+cmVtb3RlX2FwcCkKKyAJeworIAkJV2luZG93IHcgPSAwOworLQkJRW50ZXJDcml0aWNh bFNlY3Rpb24oJnhmYy0+cmFpbFdpbmRvd3MtPmxvY2spOworKwkJeGZfQXBwV2luZG93c0xvY2so eGZjKTsKKyAJCWlmICgheGZjLT5hcHBXaW5kb3cpCisgCQkJV0xvZ19XQVJOKFRBRywgInhmX1Bv aW50ZXI6IEludmFsaWQgYXBwV2luZG93Iik7CisgCQllbHNlCisgCQkJdyA9IHhmYy0+YXBwV2lu ZG93LT5oYW5kbGU7CistCQlMZWF2ZUNyaXRpY2FsU2VjdGlvbigmeGZjLT5yYWlsV2luZG93cy0+ bG9jayk7CisrCQl4Zl9BcHBXaW5kb3dzVW5sb2NrKHhmYyk7CisgCQlyZXR1cm4gdzsKKyAJfQor IAllbHNlCitkaWZmIC0tZ2l0IGEvY2xpZW50L1gxMS94Zl9yYWlsLmMgYi9jbGllbnQvWDExL3hm X3JhaWwuYworaW5kZXggMTkzOGJkZC4uMWU1NzA0NiAxMDA2NDQKKy0tLSBhL2NsaWVudC9YMTEv eGZfcmFpbC5jCisrKysgYi9jbGllbnQvWDExL3hmX3JhaWwuYworQEAgLTEwMSw5ICsxMDEsMTAg QEAgdm9pZCB4Zl9yYWlsX3NlbmRfYWN0aXZhdGUoeGZDb250ZXh0KiB4ZmMsIFdpbmRvdyB4d2lu ZG93LCBCT09MIGVuYWJsZWQpCisgCQl4Zl9TZXRXaW5kb3dTdHlsZSh4ZmMsIGFwcFdpbmRvdywg MCwgMCk7CisgCisgCWFjdGl2YXRlLndpbmRvd0lkID0gYXBwV2luZG93LT53aW5kb3dJZDsKKysJ eGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdpbmRvdyk7CisrCisgCWFjdGl2YXRlLmVuYWJsZWQg PSBlbmFibGVkOworIAl4ZmMtPnJhaWwtPkNsaWVudEFjdGl2YXRlKHhmYy0+cmFpbCwgJmFjdGl2 YXRlKTsKKy0JeGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdpbmRvdyk7CisgfQorIAorIHZvaWQg eGZfcmFpbF9zZW5kX2NsaWVudF9zeXN0ZW1fY29tbWFuZCh4ZkNvbnRleHQqIHhmYywgVUlOVDMy IHdpbmRvd0lkLCBVSU5UMTYgY29tbWFuZCkKK0BAIC0yNjAsNiArMjYxLDcgQEAgdm9pZCB4Zl9y YWlsX3BhaW50KHhmQ29udGV4dCogeGZjLCBJTlQzMiB1bGVmdCwgSU5UMzIgdXRvcCwgVUlOVDMy IHVyaWdodCwgVUlOVDMKKyBzdGF0aWMgQk9PTCB4Zl9yYWlsX3dpbmRvd19jb21tb24ocmRwQ29u dGV4dCogY29udGV4dCwgY29uc3QgV0lORE9XX09SREVSX0lORk8qIG9yZGVySW5mbywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV0lORE9XX1NUQVRFX09SREVSKiB3 aW5kb3dTdGF0ZSkKKyB7CisrCUJPT0wgcmMgPSBGQUxTRTsKKyAJeGZDb250ZXh0KiB4ZmMgPSAo eGZDb250ZXh0Kiljb250ZXh0OworIAlVSU5UMzIgZmllbGRGbGFncyA9IG9yZGVySW5mby0+Zmll bGRGbGFnczsKKyAJQk9PTCBwb3NpdGlvbl9vcl9zaXplX3VwZGF0ZWQgPSBGQUxTRTsKK0BAIC0z NzksMTQgKzM4MSwxNCBAQCBzdGF0aWMgQk9PTCB4Zl9yYWlsX3dpbmRvd19jb21tb24ocmRwQ29u dGV4dCogY29udGV4dCwgY29uc3QgV0lORE9XX09SREVSX0lORk8qCisgCQkJaWYgKCEodGl0bGUg PSBfc3RyZHVwKCIiKSkpCisgCQkJeworIAkJCQlXTG9nX0VSUihUQUcsICJmYWlsZWQgdG8gZHVw bGljYXRlIGVtcHR5IHdpbmRvdyB0aXRsZSBzdHJpbmciKTsKKy0JCQkJcmV0dXJuIEZBTFNFOwor KwkJCQlnb3RvIGZhaWw7CisgCQkJfQorIAkJfQorIAkJZWxzZSBpZiAoQ29udmVydEZyb21Vbmlj b2RlKENQX1VURjgsIDAsIChXQ0hBUiopd2luZG93U3RhdGUtPnRpdGxlSW5mby5zdHJpbmcsCisg CQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93U3RhdGUtPnRpdGxlSW5mby5sZW5n dGggLyAyLCAmdGl0bGUsIDAsIE5VTEwsIE5VTEwpIDwgMSkKKyAJCXsKKyAJCQlXTG9nX0VSUihU QUcsICJmYWlsZWQgdG8gY29udmVydCB3aW5kb3cgdGl0bGUiKTsKKy0JCQlyZXR1cm4gRkFMU0U7 CisrCQkJZ290byBmYWlsOworIAkJfQorIAorIAkJZnJlZShhcHBXaW5kb3ctPnRpdGxlKTsKK0BA IC00MjcsNyArNDI5LDcgQEAgc3RhdGljIEJPT0wgeGZfcmFpbF93aW5kb3dfY29tbW9uKHJkcENv bnRleHQqIGNvbnRleHQsIGNvbnN0IFdJTkRPV19PUkRFUl9JTkZPKgorIAkJCSAgICAoUkVDVEFO R0xFXzE2KiljYWxsb2MoYXBwV2luZG93LT5udW1XaW5kb3dSZWN0cywgc2l6ZW9mKFJFQ1RBTkdM RV8xNikpOworIAorIAkJCWlmICghYXBwV2luZG93LT53aW5kb3dSZWN0cykKKy0JCQkJcmV0dXJu IEZBTFNFOworKwkJCQlnb3RvIGZhaWw7CisgCisgCQkJQ29weU1lbW9yeShhcHBXaW5kb3ctPndp bmRvd1JlY3RzLCB3aW5kb3dTdGF0ZS0+d2luZG93UmVjdHMsCisgCQkJICAgICAgICAgICBhcHBX aW5kb3ctPm51bVdpbmRvd1JlY3RzICogc2l6ZW9mKFJFQ1RBTkdMRV8xNikpOworQEAgLTQ1Niw3 ICs0NTgsNyBAQCBzdGF0aWMgQk9PTCB4Zl9yYWlsX3dpbmRvd19jb21tb24ocmRwQ29udGV4dCog Y29udGV4dCwgY29uc3QgV0lORE9XX09SREVSX0lORk8qCisgCQkJICAgIChSRUNUQU5HTEVfMTYq KWNhbGxvYyhhcHBXaW5kb3ctPm51bVZpc2liaWxpdHlSZWN0cywgc2l6ZW9mKFJFQ1RBTkdMRV8x NikpOworIAorIAkJCWlmICghYXBwV2luZG93LT52aXNpYmlsaXR5UmVjdHMpCistCQkJCXJldHVy biBGQUxTRTsKKysJCQkJZ290byBmYWlsOworIAorIAkJCUNvcHlNZW1vcnkoYXBwV2luZG93LT52 aXNpYmlsaXR5UmVjdHMsIHdpbmRvd1N0YXRlLT52aXNpYmlsaXR5UmVjdHMsCisgCQkJICAgICAg ICAgICBhcHBXaW5kb3ctPm51bVZpc2liaWxpdHlSZWN0cyAqIHNpemVvZihSRUNUQU5HTEVfMTYp KTsKK0BAIC01MjIsNyArNTI0LDEwIEBAIHN0YXRpYyBCT09MIHhmX3JhaWxfd2luZG93X2NvbW1v bihyZHBDb250ZXh0KiBjb250ZXh0LCBjb25zdCBXSU5ET1dfT1JERVJfSU5GTyoKKyAJeworIAkg ICAgeGZfU2V0V2luZG93UmVjdHMoeGZjLCBhcHBXaW5kb3csIGFwcFdpbmRvdy0+d2luZG93UmVj dHMsIGFwcFdpbmRvdy0+bnVtV2luZG93UmVjdHMpOworIAl9Ki8KKy0JcmV0dXJuIFRSVUU7Cisr CXJjID0gVFJVRTsKKytmYWlsOgorKwl4Zl9yYWlsX3JldHVybl93aW5kb3coYXBwV2luZG93KTsK KysJcmV0dXJuIHJjOworIH0KKyAKKyBzdGF0aWMgQk9PTCB4Zl9yYWlsX3dpbmRvd19kZWxldGUo cmRwQ29udGV4dCogY29udGV4dCwgY29uc3QgV0lORE9XX09SREVSX0lORk8qIG9yZGVySW5mbykK K0BAIC0xMDAwLDE0ICsxMDA1LDE0IEBAIHN0YXRpYyBVSU5UIHhmX3JhaWxfc2VydmVyX2xvY2Fs X21vdmVfc2l6ZShSYWlsQ2xpZW50Q29udGV4dCogY29udGV4dCwKKyAJCQl4ID0gbG9jYWxNb3Zl U2l6ZS0+cG9zWDsKKyAJCQl5ID0gbG9jYWxNb3ZlU2l6ZS0+cG9zWTsKKyAJCQkvKiBGSVhNRTog bG9jYWwga2V5Ym9hcmQgbW92ZXMgbm90IHdvcmtpbmcgKi8KKy0JCQlyZXR1cm4gQ0hBTk5FTF9S Q19PSzsKKysJCQlicmVhazsKKyAKKyAJCWNhc2UgUkFJTF9XTVNaX0tFWVNJWkU6CisgCQkJZGly ZWN0aW9uID0gX05FVF9XTV9NT1ZFUkVTSVpFX1NJWkVfS0VZQk9BUkQ7CisgCQkJeCA9IGxvY2Fs TW92ZVNpemUtPnBvc1g7CisgCQkJeSA9IGxvY2FsTW92ZVNpemUtPnBvc1k7CisgCQkJLyogRklY TUU6IGxvY2FsIGtleWJvYXJkIG1vdmVzIG5vdCB3b3JraW5nICovCistCQkJcmV0dXJuIENIQU5O RUxfUkNfT0s7CisrCQkJYnJlYWs7CisgCX0KKyAKKyAJaWYgKGxvY2FsTW92ZVNpemUtPmlzTW92 ZVNpemVTdGFydCkKK0BAIC0xMTczLDkgKzExNzgsMTcgQEAgeGZBcHBXaW5kb3cqIHhmX3JhaWxf YWRkX3dpbmRvdyh4ZkNvbnRleHQqIHhmYywgVUlOVDY0IGlkLCBVSU5UMzIgeCwgVUlOVDMyIHks IFUKKyAJYXBwV2luZG93LT55ID0geTsKKyAJYXBwV2luZG93LT53aWR0aCA9IHdpZHRoOworIAlh cHBXaW5kb3ctPmhlaWdodCA9IGhlaWdodDsKKy0JeGZfQXBwV2luZG93Q3JlYXRlKHhmYywgYXBw V2luZG93KTsKKy0JSGFzaFRhYmxlX0FkZCh4ZmMtPnJhaWxXaW5kb3dzLCAmYXBwV2luZG93LT53 aW5kb3dJZCwgKHZvaWQqKWFwcFdpbmRvdyk7CisrCXhmX0FwcFdpbmRvd3NMb2NrKHhmYyk7Cisr CWlmICh4Zl9BcHBXaW5kb3dDcmVhdGUoeGZjLCBhcHBXaW5kb3cpIDwgMCkKKysJCWdvdG8gZmFp bDsKKysKKysJaWYgKEhhc2hUYWJsZV9BZGQoeGZjLT5yYWlsV2luZG93cywgJmFwcFdpbmRvdy0+ d2luZG93SWQsICh2b2lkKilhcHBXaW5kb3cpIDwgMCkKKysJCWdvdG8gZmFpbDsKKyAJcmV0dXJu IGFwcFdpbmRvdzsKKytmYWlsOgorKwlmcmVlKGFwcFdpbmRvdyk7CisrCXhmX0FwcFdpbmRvd3NV bmxvY2soeGZjKTsKKysJcmV0dXJuIE5VTEw7CisgfQorIAorIEJPT0wgeGZfcmFpbF9kZWxfd2lu ZG93KHhmQ29udGV4dCogeGZjLCBVSU5UNjQgaWQpCitAQCAtMTE4OSwyNiArMTIwMiwxMCBAQCBC T09MIHhmX3JhaWxfZGVsX3dpbmRvdyh4ZkNvbnRleHQqIHhmYywgVUlOVDY0IGlkKQorIAlyZXR1 cm4gSGFzaFRhYmxlX1JlbW92ZSh4ZmMtPnJhaWxXaW5kb3dzLCAmaWQpOworIH0KKyAKKy14ZkFw cFdpbmRvdyogeGZfcmFpbF9nZXRfd2luZG93KHhmQ29udGV4dCogeGZjLCBVSU5UNjQgaWQpCist eworLQlpZiAoIXhmYykKKy0JCXJldHVybiBOVUxMOworLQorLQlpZiAoIXhmYy0+cmFpbFdpbmRv d3MpCistCQlyZXR1cm4gTlVMTDsKKy0KKy0JRW50ZXJDcml0aWNhbFNlY3Rpb24oJnhmYy0+cmFp bFdpbmRvd3MtPmxvY2spOworLQl4ZkFwcFdpbmRvdyogd2luZG93ID0gSGFzaFRhYmxlX0dldEl0 ZW1WYWx1ZSh4ZmMtPnJhaWxXaW5kb3dzLCAmaWQpOworLQlpZiAoIXdpbmRvdykKKy0JCUxlYXZl Q3JpdGljYWxTZWN0aW9uKCZ4ZmMtPnJhaWxXaW5kb3dzLT5sb2NrKTsKKy0KKy0JcmV0dXJuIHdp bmRvdzsKKy19CistCistdm9pZCB4Zl9yYWlsX3JldHVybl93aW5kb3coeGZBcHBXaW5kb3cqIHdp bmRvdykKKyt2b2lkIHhmX3JhaWxfcmV0dXJuX3dpbmRvd0Zyb20oeGZBcHBXaW5kb3cqIHdpbmRv dywgY29uc3QgY2hhciogZmlsZSwgY29uc3QgY2hhciogZmt0LCBzaXplX3QgbGluZSkKKyB7Cisg CWlmICghd2luZG93KQorIAkJcmV0dXJuOworIAorLQlMZWF2ZUNyaXRpY2FsU2VjdGlvbigmd2lu ZG93LT54ZmMtPnJhaWxXaW5kb3dzLT5sb2NrKTsKKysJeGZBcHBXaW5kb3dzVW5sb2NrRnJvbSh3 aW5kb3ctPnhmYywgZmlsZSwgZmt0LCBsaW5lKTsKKyB9CitkaWZmIC0tZ2l0IGEvY2xpZW50L1gx MS94Zl9yYWlsLmggYi9jbGllbnQvWDExL3hmX3JhaWwuaAoraW5kZXggNWZiYzMxNi4uODNkNWZm ZiAxMDA2NDQKKy0tLSBhL2NsaWVudC9YMTEveGZfcmFpbC5oCisrKysgYi9jbGllbnQvWDExL3hm X3JhaWwuaAorQEAgLTM2LDkgKzM2LDE1IEBAIHZvaWQgeGZfcmFpbF9kaXNhYmxlX3JlbW90ZWFw cF9tb2RlKHhmQ29udGV4dCogeGZjKTsKKyB4ZkFwcFdpbmRvdyogeGZfcmFpbF9hZGRfd2luZG93 KHhmQ29udGV4dCogeGZjLCBVSU5UNjQgaWQsIFVJTlQzMiB4LCBVSU5UMzIgeSwgVUlOVDMyIHdp ZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUlOVDMyIGhlaWdodCwgVUlO VDMyIHN1cmZhY2VJZCk7CisgCistdm9pZCB4Zl9yYWlsX3JldHVybl93aW5kb3coeGZBcHBXaW5k b3cqIHdpbmRvdyk7CisrI2RlZmluZSB4Zl9yYWlsX3JldHVybl93aW5kb3cod2luZG93KSBcCisr CXhmX3JhaWxfcmV0dXJuX3dpbmRvd0Zyb20oKHdpbmRvdyksIF9fRklMRV9fLCBfX2Z1bmNfXywg X19MSU5FX18pCisrdm9pZCB4Zl9yYWlsX3JldHVybl93aW5kb3dGcm9tKHhmQXBwV2luZG93KiB3 aW5kb3csIGNvbnN0IGNoYXIqIGZpbGUsIGNvbnN0IGNoYXIqIGZrdCwgc2l6ZV90IGxpbmUpOwor IAorLXhmQXBwV2luZG93KiB4Zl9yYWlsX2dldF93aW5kb3coeGZDb250ZXh0KiB4ZmMsIFVJTlQ2 NCBpZCk7CisrI2RlZmluZSB4Zl9yYWlsX2dldF93aW5kb3coeGZjLCBpZCkgXAorKwl4Zl9yYWls X2dldF93aW5kb3dGcm9tKCh4ZmMpLCAoaWQpLCBfX0ZJTEVfXywgX19mdW5jX18sIF9fTElORV9f KQorKworK3hmQXBwV2luZG93KiB4Zl9yYWlsX2dldF93aW5kb3dGcm9tKHhmQ29udGV4dCogeGZj LCBVSU5UNjQgaWQsIGNvbnN0IGNoYXIqIGZpbGUsIGNvbnN0IGNoYXIqIGZrdCwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGluZSk7CisgCisgQk9PTCB4Zl9y YWlsX2RlbF93aW5kb3coeGZDb250ZXh0KiB4ZmMsIFVJTlQ2NCBpZCk7CisgCitkaWZmIC0tZ2l0 IGEvY2xpZW50L1gxMS94Zl93aW5kb3cuYyBiL2NsaWVudC9YMTEveGZfd2luZG93LmMKK2luZGV4 IDdlOTM2ZmUuLjA5YjRhODEgMTAwNjQ0CistLS0gYS9jbGllbnQvWDExL3hmX3dpbmRvdy5jCisr KysgYi9jbGllbnQvWDExL3hmX3dpbmRvdy5jCitAQCAtMTExNiwzOSArMTExNiw3MSBAQCB2b2lk IHhmX0Rlc3Ryb3lXaW5kb3coeGZDb250ZXh0KiB4ZmMsIHhmQXBwV2luZG93KiBhcHBXaW5kb3cp CisgCWZyZWUoYXBwV2luZG93KTsKKyB9CisgCisteGZBcHBXaW5kb3cqIHhmX0FwcFdpbmRvd0Zy b21YMTFXaW5kb3coeGZDb250ZXh0KiB4ZmMsIFdpbmRvdyB3bmQpCisrc3RhdGljIHhmQXBwV2lu ZG93KiBnZXRfd2luZG93VW5sb2NrZWQoeGZDb250ZXh0KiB4ZmMsIFVJTlQ2NCBpZCkKKyt7Cisr CVdJTlBSX0FTU0VSVCh4ZmMpOworKwlyZXR1cm4gSGFzaFRhYmxlX0dldEl0ZW1WYWx1ZSh4ZmMt PnJhaWxXaW5kb3dzLCAmaWQpOworK30KKysKKyt4ZkFwcFdpbmRvdyogeGZfcmFpbF9nZXRfd2lu ZG93RnJvbSh4ZkNvbnRleHQqIHhmYywgVUlOVDY0IGlkLCBjb25zdCBjaGFyKiBmaWxlLCBjb25z dCBjaGFyKiBma3QsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90 IGxpbmUpCisreworKwlpZiAoIXhmYykKKysJCXJldHVybiBOVUxMOworKworKwlpZiAoIXhmYy0+ cmFpbFdpbmRvd3MpCisrCQlyZXR1cm4gTlVMTDsKKysKKysJeGZBcHBXaW5kb3dzTG9ja0Zyb20o eGZjLCBmaWxlLCBma3QsIGxpbmUpOworKwl4ZkFwcFdpbmRvdyogd2luZG93ID0gZ2V0X3dpbmRv d1VubG9ja2VkKHhmYywgaWQpOworKwlpZiAoIXdpbmRvdykKKysJCXhmQXBwV2luZG93c1VubG9j a0Zyb20oeGZjLCBmaWxlLCBma3QsIGxpbmUpOworKworKwlyZXR1cm4gd2luZG93OworK30KKysK Kyt4ZkFwcFdpbmRvdyogeGZfQXBwV2luZG93RnJvbVgxMVdpbmRvd0Zyb20oeGZDb250ZXh0KiB4 ZmMsIFdpbmRvdyB3bmQsIGNvbnN0IGNoYXIqIGZpbGUsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZrdCwgc2l6ZV90IGxpbmUpCisgewor LQlpbnQgaW5kZXg7CistCWludCBjb3VudDsKKyAJVUxPTkdfUFRSKiBwS2V5cyA9IE5VTEw7Cist CXhmQXBwV2luZG93KiBhcHBXaW5kb3c7CisgCisgCWlmICgheGZjLT5yYWlsV2luZG93cykKKyAJ CXJldHVybiBOVUxMOworIAorLQlFbnRlckNyaXRpY2FsU2VjdGlvbigmeGZjLT5yYWlsV2luZG93 cy0+bG9jayk7CistCWNvdW50ID0gSGFzaFRhYmxlX0dldEtleXMoeGZjLT5yYWlsV2luZG93cywg JnBLZXlzKTsKKysJeGZBcHBXaW5kb3dzTG9ja0Zyb20oeGZjLCBmaWxlLCBma3QsIGxpbmUpOwor KwlzaXplX3QgY291bnQgPSBIYXNoVGFibGVfR2V0S2V5cyh4ZmMtPnJhaWxXaW5kb3dzLCAmcEtl eXMpOworIAorLQlmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgaW5kZXgrKykKKysJZm9y IChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyBpbmRleCsrKQorIAl7CistCQlhcHBX aW5kb3cgPSBIYXNoVGFibGVfR2V0SXRlbVZhbHVlKHhmYy0+cmFpbFdpbmRvd3MsICh2b2lkKilw S2V5c1tpbmRleF0pOworKwkJeGZBcHBXaW5kb3cqIGFwcFdpbmRvdyA9IGdldF93aW5kb3dVbmxv Y2tlZCh4ZmMsICooVUlOVDY0KilwS2V5c1tpbmRleF0pOworIAorIAkJaWYgKCFhcHBXaW5kb3cp CisgCQl7CistCQkJTGVhdmVDcml0aWNhbFNlY3Rpb24oJnhmYy0+cmFpbFdpbmRvd3MtPmxvY2sp OworKwkJCXhmQXBwV2luZG93c1VubG9ja0Zyb20oeGZjLCBmaWxlLCBma3QsIGxpbmUpOworIAkJ CWZyZWUocEtleXMpOworIAkJCXJldHVybiBOVUxMOworIAkJfQorIAorIAkJaWYgKGFwcFdpbmRv dy0+aGFuZGxlID09IHduZCkKKyAJCXsKKy0JCQlMZWF2ZUNyaXRpY2FsU2VjdGlvbigmeGZjLT5y YWlsV2luZG93cy0+bG9jayk7CisgCQkJZnJlZShwS2V5cyk7CisgCQkJcmV0dXJuIGFwcFdpbmRv dzsKKyAJCX0KKyAJfQorIAorLQlMZWF2ZUNyaXRpY2FsU2VjdGlvbigmeGZjLT5yYWlsV2luZG93 cy0+bG9jayk7CisrCXhmQXBwV2luZG93c1VubG9ja0Zyb20oeGZjLCBmaWxlLCBma3QsIGxpbmUp OworIAlmcmVlKHBLZXlzKTsKKyAJcmV0dXJuIE5VTEw7CisgfQorKworK3ZvaWQgeGZBcHBXaW5k b3dzTG9ja0Zyb20oeGZDb250ZXh0KiB4ZmMsIGNvbnN0IGNoYXIqIGZpbGUsIGNvbnN0IGNoYXIq IGZrdCwgc2l6ZV90IGxpbmUpCisreworKwlXSU5QUl9BU1NFUlQoeGZjKTsKKysJRW50ZXJDcml0 aWNhbFNlY3Rpb24oJnhmYy0+cmFpbFdpbmRvd3MtPmxvY2spOworK30KKysKKyt2b2lkIHhmQXBw V2luZG93c1VubG9ja0Zyb20oeGZDb250ZXh0KiB4ZmMsIGNvbnN0IGNoYXIqIGZpbGUsIGNvbnN0 IGNoYXIqIGZrdCwgc2l6ZV90IGxpbmUpCisreworKwlXSU5QUl9BU1NFUlQoeGZjKTsKKysJTGVh dmVDcml0aWNhbFNlY3Rpb24oJnhmYy0+cmFpbFdpbmRvd3MtPmxvY2spOworK30KK2RpZmYgLS1n aXQgYS9jbGllbnQvWDExL3hmX3dpbmRvdy5oIGIvY2xpZW50L1gxMS94Zl93aW5kb3cuaAoraW5k ZXggYzc3MDJlZC4uNDVkNDBiYiAxMDA2NDQKKy0tLSBhL2NsaWVudC9YMTEveGZfd2luZG93LmgK KysrKyBiL2NsaWVudC9YMTEveGZfd2luZG93LmgKK0BAIC0xODcsOCArMTg3LDE1IEBAIHZvaWQg eGZfU2V0V2luZG93TWluTWF4SW5mbyh4ZkNvbnRleHQqIHhmYywgeGZBcHBXaW5kb3cqIGFwcFdp bmRvdywgaW50IG1heFdpZHRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtYXhU cmFja1dpZHRoLCBpbnQgbWF4VHJhY2tIZWlnaHQpOworIHZvaWQgeGZfU3RhcnRMb2NhbE1vdmVT aXplKHhmQ29udGV4dCogeGZjLCB4ZkFwcFdpbmRvdyogYXBwV2luZG93LCBpbnQgZGlyZWN0aW9u LCBpbnQgeCwgaW50IHkpOworIHZvaWQgeGZfRW5kTG9jYWxNb3ZlU2l6ZSh4ZkNvbnRleHQqIHhm YywgeGZBcHBXaW5kb3cqIGFwcFdpbmRvdyk7Cistdm9pZCB4Zl9yYWlsX3JldHVybl93aW5kb3co eGZBcHBXaW5kb3cqIHdpbmRvdyk7CisrI2RlZmluZSB4Zl9BcHBXaW5kb3dGcm9tWDExV2luZG93 KHhmYywgd25kKSBcCisrCXhmX0FwcFdpbmRvd0Zyb21YMTFXaW5kb3dGcm9tKCh4ZmMpLCAod25k KSwgX19GSUxFX18sIF9fZnVuY19fLCBfX0xJTkVfXykKKyt4ZkFwcFdpbmRvdyogeGZfQXBwV2lu ZG93RnJvbVgxMVdpbmRvd0Zyb20oeGZDb250ZXh0KiB4ZmMsIFdpbmRvdyB3bmQsIGNvbnN0IGNo YXIqIGZpbGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IGNoYXIqIGZrdCwgc2l6ZV90IGxpbmUpOworIAorLXhmQXBwV2luZG93KiB4Zl9BcHBXaW5k b3dGcm9tWDExV2luZG93KHhmQ29udGV4dCogeGZjLCBXaW5kb3cgd25kKTsKKysjZGVmaW5lIHhm X0FwcFdpbmRvd3NMb2NrKHhmYykgeGZBcHBXaW5kb3dzTG9ja0Zyb20oKHhmYyksIF9fRklMRV9f LCBfX2Z1bmNfXywgX19MSU5FX18pCisrdm9pZCB4ZkFwcFdpbmRvd3NMb2NrRnJvbSh4ZkNvbnRl eHQqIHhmYywgY29uc3QgY2hhciogZmlsZSwgY29uc3QgY2hhciogZmt0LCBzaXplX3QgbGluZSk7 CisrCisrI2RlZmluZSB4Zl9BcHBXaW5kb3dzVW5sb2NrKHhmYykgeGZBcHBXaW5kb3dzVW5sb2Nr RnJvbSgoeGZjKSwgX19GSUxFX18sIF9fZnVuY19fLCBfX0xJTkVfXykKKyt2b2lkIHhmQXBwV2lu ZG93c1VubG9ja0Zyb20oeGZDb250ZXh0KiB4ZmMsIGNvbnN0IGNoYXIqIGZpbGUsIGNvbnN0IGNo YXIqIGZrdCwgc2l6ZV90IGxpbmUpOworIAorICNlbmRpZiAvKiBGUkVFUkRQX0NMSUVOVF9YMTFf V0lORE9XX0ggKi8KKy0tIAorMi41My4wCisKCmRpZmYgLS1naXQgYS9jbGllbnQteDExLWxvY2st YXBwd2luZG93LnBhdGNoIGIvY2xpZW50LXgxMS1sb2NrLWFwcHdpbmRvdy5wYXRjaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDk4OGEzCi0tLSAvZGV2L251bGwKKysrIGIv Y2xpZW50LXgxMS1sb2NrLWFwcHdpbmRvdy5wYXRjaApAQCAtMCwwICsxLDQwNCBAQAorRnJvbSA4 MTUyYzM0N2U5NmMxZTNhZjE1Y2IyNTUxZDRlZmI2NzQwZmU5Zjg3IE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQorRnJvbTogT25kcmVqIEhvbHkgPG9ob2x5QHJlZGhhdC5jb20+CitEYXRlOiBNb24s IDI3IEFwciAyMDI2IDE5OjM3OjQwICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIFtjbGllbnQseDEx XSBsb2NrIGFwcFdpbmRvdworCitCYWNrcG9ydCBvZiBjb21taXQgMTk5NGU5ODQ0MjEyYTZkZmUw ZmYxMjMwOWZlZjUyMGU4ODg5ODZiNS4KKworQWRhcHRlZCBmb3IgMi4xMS43OiBDODkgZGVjbGFy YXRpb24gc3R5bGUsIGAoQXRvbSlgIGNhc3QgZm9yCitgeGZjLT5fTkVUX1dNX1NUQVRFYCBjb21w YXJpc29uLCBgeGZfcmFpbF9zZW5kX2NsaWVudF9zeXN0ZW1fY29tbWFuZGAKK3JldHVybiB2YWx1 ZSBoYW5kbGluZyBhZGFwdGVkIChubyBkaXJlY3QgcmV0dXJuKSwgYEhhc2hUYWJsZV9HZXRLZXlz YAordmFyaWFibGUgcHJlLWRlY2xhcmVkLCBgeGZfQXBwV2luZG93RnJvbVgxMVdpbmRvd2AgbG9v cCBhZGFwdGVkLgorCitNYWRlLXdpdGg6IEN1cnNvcgorLS0tCisgY2xpZW50L1gxMS94Zl9ldmVu dC5jICAgIHwgNDYgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCisgY2xpZW50L1gxMS94Zl9n cmFwaGljcy5jIHwgMTAgKysrLS0tCisgY2xpZW50L1gxMS94Zl9yYWlsLmMgICAgIHwgNjggKysr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQorIGNsaWVudC9YMTEveGZfcmFp bC5oICAgICB8ICAzICsrCisgY2xpZW50L1gxMS94Zl93aW5kb3cuYyAgIHwgMTMgKysrKysrKy0K KyBjbGllbnQvWDExL3hmX3dpbmRvdy5oICAgfCAgMiArKworIDYgZmlsZXMgY2hhbmdlZCwgOTQg aW5zZXJ0aW9ucygrKSwgNDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jbGllbnQvWDEx L3hmX2V2ZW50LmMgYi9jbGllbnQvWDExL3hmX2V2ZW50LmMKK2luZGV4IGViNTBlZjEuLjhiZWJj ZDQgMTAwNjQ0CistLS0gYS9jbGllbnQvWDExL3hmX2V2ZW50LmMKKysrKyBiL2NsaWVudC9YMTEv eGZfZXZlbnQuYworQEAgLTM4OCw3ICszODgsOSBAQCBCT09MIHhmX2dlbmVyaWNfTW90aW9uTm90 aWZ5KHhmQ29udGV4dCogeGZjLCBpbnQgeCwgaW50IHksIGludCBzdGF0ZSwgV2luZG93IHdpbgor IAlpZiAoYXBwKQorIAl7CisgCQkvKiBtYWtlIHN1cmUgd2luZG93IGV4aXN0cyAqLworLQkJaWYg KCF4Zl9BcHBXaW5kb3dGcm9tWDExV2luZG93KHhmYywgd2luZG93KSkKKysJCXhmQXBwV2luZG93 KiBhcHBXaW5kb3cgPSB4Zl9BcHBXaW5kb3dGcm9tWDExV2luZG93KHhmYywgd2luZG93KTsKKysJ CXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhhcHBXaW5kb3cpOworKwkJaWYgKCFhcHBXaW5kb3cpCisg CQkJcmV0dXJuIFRSVUU7CisgCisgCQkvKiBUcmFuc2xhdGUgdG8gZGVza3RvcCBjb29yZGluYXRl cyAqLworQEAgLTQ2NSw3ICs0NjcsOSBAQCBCT09MIHhmX2dlbmVyaWNfQnV0dG9uRXZlbnQoeGZD b250ZXh0KiB4ZmMsIGludCB4LCBpbnQgeSwgaW50IGJ1dHRvbiwgV2luZG93IHdpbgorIAkJCWlm IChhcHApCisgCQkJeworIAkJCQkvKiBtYWtlIHN1cmUgd2luZG93IGV4aXN0cyAqLworLQkJCQlp ZiAoIXhmX0FwcFdpbmRvd0Zyb21YMTFXaW5kb3coeGZjLCB3aW5kb3cpKQorKwkJCQl4ZkFwcFdp bmRvdyogYXBwV2luZG93ID0geGZfQXBwV2luZG93RnJvbVgxMVdpbmRvdyh4ZmMsIHdpbmRvdyk7 CisrCQkJCXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhhcHBXaW5kb3cpOworKwkJCQlpZiAoIWFwcFdp bmRvdykKKyAJCQkJCXJldHVybiBUUlVFOworIAorIAkJCQkvKiBUcmFuc2xhdGUgdG8gZGVza3Rv cCBjb29yZGluYXRlcyAqLworQEAgLTU3NCw5ICs1NzgsOCBAQCBzdGF0aWMgQk9PTCB4Zl9ldmVu dF9Gb2N1c0luKHhmQ29udGV4dCogeGZjLCBjb25zdCBYRm9jdXNJbkV2ZW50KiBldmVudCwgQk9P TCBhcAorIAkJLyogVXBkYXRlIHRoZSBzZXJ2ZXIgd2l0aCBhbnkgd2luZG93IGNoYW5nZXMgdGhh dCBvY2N1cnJlZCB3aGlsZSB0aGUgd2luZG93IHdhcyBub3QgZm9jdXNlZC4KKyAJCSAqLworIAkJ aWYgKGFwcFdpbmRvdykKKy0JCXsKKyAJCQl4Zl9yYWlsX2FkanVzdF9wb3NpdGlvbih4ZmMsIGFw cFdpbmRvdyk7CistCQl9CisrCQl4Zl9yYWlsX3JldHVybl93aW5kb3coYXBwV2luZG93KTsKKyAJ fQorIAorIAl4Zl9rZXlib2FyZF9mb2N1c19pbih4ZmMpOworQEAgLTYyMywxNSArNjI2LDEzIEBA IHN0YXRpYyBCT09MIHhmX2V2ZW50X0NsaWVudE1lc3NhZ2UoeGZDb250ZXh0KiB4ZmMsIGNvbnN0 IFhDbGllbnRNZXNzYWdlRXZlbnQqIGV2CisgCXsKKyAJCWlmIChhcHApCisgCQl7CistCQkJeGZB cHBXaW5kb3cqIGFwcFdpbmRvdzsKKy0JCQlhcHBXaW5kb3cgPSB4Zl9BcHBXaW5kb3dGcm9tWDEx V2luZG93KHhmYywgZXZlbnQtPndpbmRvdyk7CisrCQkJQk9PTCByYyA9IFRSVUU7CisrCQkJeGZB cHBXaW5kb3cqIGFwcFdpbmRvdyA9IHhmX0FwcFdpbmRvd0Zyb21YMTFXaW5kb3coeGZjLCBldmVu dC0+d2luZG93KTsKKyAKKyAJCQlpZiAoYXBwV2luZG93KQorLQkJCXsKKyAJCQkJeGZfcmFpbF9z ZW5kX2NsaWVudF9zeXN0ZW1fY29tbWFuZCh4ZmMsIGFwcFdpbmRvdy0+d2luZG93SWQsIFNDX0NM T1NFKTsKKy0JCQl9CistCistCQkJcmV0dXJuIFRSVUU7CisrCQkJeGZfcmFpbF9yZXR1cm5fd2lu ZG93KGFwcFdpbmRvdyk7CisrCQkJcmV0dXJuIHJjOworIAkJfQorIAkJZWxzZQorIAkJeworQEAg LTY2NSw2ICs2NjYsNyBAQCBzdGF0aWMgQk9PTCB4Zl9ldmVudF9FbnRlck5vdGlmeSh4ZkNvbnRl eHQqIHhmYywgY29uc3QgWEVudGVyV2luZG93RXZlbnQqIGV2ZW50LAorIAorIAkJLyoga2VlcCB0 cmFjayBvZiB3aGljaCB3aW5kb3cgaGFzIGZvY3VzIHNvIHRoYXQgd2UgY2FuIGFwcGx5IHBvaW50 ZXIgdXBkYXRlcyAqLworIAkJeGZjLT5hcHBXaW5kb3cgPSBhcHBXaW5kb3c7CisrCQl4Zl9yYWls X3JldHVybl93aW5kb3coYXBwV2luZG93KTsKKyAJfQorIAorIAlyZXR1cm4gVFJVRTsKK0BAIC02 ODQsNiArNjg2LDcgQEAgc3RhdGljIEJPT0wgeGZfZXZlbnRfTGVhdmVOb3RpZnkoeGZDb250ZXh0 KiB4ZmMsIGNvbnN0IFhMZWF2ZVdpbmRvd0V2ZW50KiBldmVudCwKKyAJCS8qIGtlZXAgdHJhY2sg b2Ygd2hpY2ggd2luZG93IGhhcyBmb2N1cyBzbyB0aGF0IHdlIGNhbiBhcHBseSBwb2ludGVyIHVw ZGF0ZXMgKi8KKyAJCWlmICh4ZmMtPmFwcFdpbmRvdyA9PSBhcHBXaW5kb3cpCisgCQkJeGZjLT5h cHBXaW5kb3cgPSBOVUxMOworKwkJeGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdpbmRvdyk7Cisg CX0KKyAJcmV0dXJuIFRSVUU7CisgfQorQEAgLTc3NCw2ICs3NzcsNyBAQCBzdGF0aWMgQk9PTCB4 Zl9ldmVudF9Db25maWd1cmVOb3RpZnkoeGZDb250ZXh0KiB4ZmMsIGNvbnN0IFhDb25maWd1cmVF dmVudCogZXZlbgorIAkJCQkJeGZfcmFpbF9hZGp1c3RfcG9zaXRpb24oeGZjLCBhcHBXaW5kb3cp OworIAkJCX0KKyAJCX0KKysJCXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhhcHBXaW5kb3cpOworIAl9 CisgCXJldHVybiB4Zl9wb2ludGVyX3VwZGF0ZV9zY2FsZSh4ZmMpOworIH0KK0BAIC03OTgsNiAr ODAyLDcgQEAgc3RhdGljIEJPT0wgeGZfZXZlbnRfTWFwTm90aWZ5KHhmQ29udGV4dCogeGZjLCBj b25zdCBYTWFwRXZlbnQqIGV2ZW50LCBCT09MIGFwcCkKKyAJCQkvLyB4Zl9yYWlsX3NlbmRfY2xp ZW50X3N5c3RlbV9jb21tYW5kKHhmYywgYXBwV2luZG93LT53aW5kb3dJZCwgU0NfUkVTVE9SRSk7 CisgCQkJYXBwV2luZG93LT5pc19tYXBwZWQgPSBUUlVFOworIAkJfQorKwkJeGZfcmFpbF9yZXR1 cm5fd2luZG93KGFwcFdpbmRvdyk7CisgCX0KKyAKKyAJcmV0dXJuIFRSVUU7CitAQCAtODEzLDE1 ICs4MTgsMTQgQEAgc3RhdGljIEJPT0wgeGZfZXZlbnRfVW5tYXBOb3RpZnkoeGZDb250ZXh0KiB4 ZmMsIGNvbnN0IFhVbm1hcEV2ZW50KiBldmVudCwgQk9PTAorIAl4Zl9rZXlib2FyZF9yZWxlYXNl X2FsbF9rZXlwcmVzcyh4ZmMpOworIAorIAlpZiAoIWFwcCkKKy0JCWdkaV9zZW5kX3N1cHByZXNz X291dHB1dCh4ZmMtPmNvbnRleHQuZ2RpLCBUUlVFKTsKKy0JZWxzZQorKwkJcmV0dXJuIGdkaV9z ZW5kX3N1cHByZXNzX291dHB1dCh4ZmMtPmNvbnRleHQuZ2RpLCBUUlVFKTsKKysKKyAJeworIAkJ YXBwV2luZG93ID0geGZfQXBwV2luZG93RnJvbVgxMVdpbmRvdyh4ZmMsIGV2ZW50LT53aW5kb3cp OworIAorIAkJaWYgKGFwcFdpbmRvdykKKy0JCXsKKyAJCQlhcHBXaW5kb3ctPmlzX21hcHBlZCA9 IEZBTFNFOworLQkJfQorKwkJeGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdpbmRvdyk7CisgCX0K KyAKKyAJcmV0dXJuIFRSVUU7CitAQCAtODI5LDYgKzgzMyw3IEBAIHN0YXRpYyBCT09MIHhmX2V2 ZW50X1VubWFwTm90aWZ5KHhmQ29udGV4dCogeGZjLCBjb25zdCBYVW5tYXBFdmVudCogZXZlbnQs IEJPT0wKKyAKKyBzdGF0aWMgQk9PTCB4Zl9ldmVudF9Qcm9wZXJ0eU5vdGlmeSh4ZkNvbnRleHQq IHhmYywgY29uc3QgWFByb3BlcnR5RXZlbnQqIGV2ZW50LCBCT09MIGFwcCkKKyB7CisrCUJPT0wg cmMgPSBUUlVFOworIAlXSU5QUl9BU1NFUlQoeGZjKTsKKyAJV0lOUFJfQVNTRVJUKGV2ZW50KTsK KyAKK0BAIC04NTYsNyArODYxLDcgQEAgc3RhdGljIEJPT0wgeGZfZXZlbnRfUHJvcGVydHlOb3Rp ZnkoeGZDb250ZXh0KiB4ZmMsIGNvbnN0IFhQcm9wZXJ0eUV2ZW50KiBldmVudCwKKyAJCQlhcHBX aW5kb3cgPSB4Zl9BcHBXaW5kb3dGcm9tWDExV2luZG93KHhmYywgZXZlbnQtPndpbmRvdyk7Cisg CisgCQkJaWYgKCFhcHBXaW5kb3cpCistCQkJCXJldHVybiBUUlVFOworKwkJCQlnb3RvIGZhaWw7 CisgCQl9CisgCisgCQlpZiAoKEF0b20pZXZlbnQtPmF0b20gPT0geGZjLT5fTkVUX1dNX1NUQVRF KQorQEAgLTk0OSwxMCArOTU0LDEzIEBAIHN0YXRpYyBCT09MIHhmX2V2ZW50X1Byb3BlcnR5Tm90 aWZ5KHhmQ29udGV4dCogeGZjLCBjb25zdCBYUHJvcGVydHlFdmVudCogZXZlbnQsCisgCQkJfQor IAkJfQorIAkJZWxzZSBpZiAobWluaW1pemVkQ2hhbmdlZCkKKy0JCQlnZGlfc2VuZF9zdXBwcmVz c19vdXRwdXQoeGZjLT5jb250ZXh0LmdkaSwgbWluaW1pemVkKTsKKysJCQlyYyA9IGdkaV9zZW5k X3N1cHByZXNzX291dHB1dCh4ZmMtPmNvbnRleHQuZ2RpLCBtaW5pbWl6ZWQpOworKworKwlmYWls OgorKwkJeGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdpbmRvdyk7CisgCX0KKyAKKy0JcmV0dXJu IFRSVUU7CisrCXJldHVybiByYzsKKyB9CisgCisgc3RhdGljIEJPT0wgeGZfZXZlbnRfc3VwcHJl c3NfZXZlbnRzKHhmQ29udGV4dCogeGZjLCB4ZkFwcFdpbmRvdyogYXBwV2luZG93LCBjb25zdCBY RXZlbnQqIGV2ZW50KQorQEAgLTEwNjAsNyArMTA2OCw5IEBAIEJPT0wgeGZfZXZlbnRfcHJvY2Vz cyhmcmVlcmRwKiBpbnN0YW5jZSwgY29uc3QgWEV2ZW50KiBldmVudCkKKyAJCQkvKiBVcGRhdGUg ImN1cnJlbnQiIHdpbmRvdyBmb3IgY3Vyc29yIGNoYW5nZSBvcmRlcnMgKi8KKyAJCQl4ZmMtPmFw cFdpbmRvdyA9IGFwcFdpbmRvdzsKKyAKKy0JCQlpZiAoeGZfZXZlbnRfc3VwcHJlc3NfZXZlbnRz KHhmYywgYXBwV2luZG93LCBldmVudCkpCisrCQkJQk9PTCBzdXBwcmVzcyA9IHhmX2V2ZW50X3N1 cHByZXNzX2V2ZW50cyh4ZmMsIGFwcFdpbmRvdywgZXZlbnQpOworKwkJCXhmX3JhaWxfcmV0dXJu X3dpbmRvdyhhcHBXaW5kb3cpOworKwkJCWlmIChzdXBwcmVzcykKKyAJCQkJcmV0dXJuIFRSVUU7 CisgCQl9CisgCX0KK2RpZmYgLS1naXQgYS9jbGllbnQvWDExL3hmX2dyYXBoaWNzLmMgYi9jbGll bnQvWDExL3hmX2dyYXBoaWNzLmMKK2luZGV4IGQ1OTZiMjMuLjcwOTc5YmQgMTAwNjQ0CistLS0g YS9jbGllbnQvWDExL3hmX2dyYXBoaWNzLmMKKysrKyBiL2NsaWVudC9YMTEveGZfZ3JhcGhpY3Mu YworQEAgLTM3MSwxMiArMzcxLDE0IEBAIHN0YXRpYyBXaW5kb3cgeGZfUG9pbnRlcl9nZXRfd2lu ZG93KHhmQ29udGV4dCogeGZjKQorIAl9CisgCWlmICh4ZmMtPnJlbW90ZV9hcHApCisgCXsKKysJ CVdpbmRvdyB3ID0gMDsKKysJCUVudGVyQ3JpdGljYWxTZWN0aW9uKCZ4ZmMtPnJhaWxXaW5kb3dz LT5sb2NrKTsKKyAJCWlmICgheGZjLT5hcHBXaW5kb3cpCistCQl7CisgCQkJV0xvZ19XQVJOKFRB RywgInhmX1BvaW50ZXI6IEludmFsaWQgYXBwV2luZG93Iik7CistCQkJcmV0dXJuIDA7CistCQl9 CistCQlyZXR1cm4geGZjLT5hcHBXaW5kb3ctPmhhbmRsZTsKKysJCWVsc2UKKysJCQl3ID0geGZj LT5hcHBXaW5kb3ctPmhhbmRsZTsKKysJCUxlYXZlQ3JpdGljYWxTZWN0aW9uKCZ4ZmMtPnJhaWxX aW5kb3dzLT5sb2NrKTsKKysJCXJldHVybiB3OworIAl9CisgCWVsc2UKKyAJeworZGlmZiAtLWdp dCBhL2NsaWVudC9YMTEveGZfcmFpbC5jIGIvY2xpZW50L1gxMS94Zl9yYWlsLmMKK2luZGV4IGZk YzIyNDQuLjE5MzhiZGQgMTAwNjQ0CistLS0gYS9jbGllbnQvWDExL3hmX3JhaWwuYworKysrIGIv Y2xpZW50L1gxMS94Zl9yYWlsLmMKK0BAIC0xMDMsNiArMTAzLDcgQEAgdm9pZCB4Zl9yYWlsX3Nl bmRfYWN0aXZhdGUoeGZDb250ZXh0KiB4ZmMsIFdpbmRvdyB4d2luZG93LCBCT09MIGVuYWJsZWQp CisgCWFjdGl2YXRlLndpbmRvd0lkID0gYXBwV2luZG93LT53aW5kb3dJZDsKKyAJYWN0aXZhdGUu ZW5hYmxlZCA9IGVuYWJsZWQ7CisgCXhmYy0+cmFpbC0+Q2xpZW50QWN0aXZhdGUoeGZjLT5yYWls LCAmYWN0aXZhdGUpOworKwl4Zl9yYWlsX3JldHVybl93aW5kb3coYXBwV2luZG93KTsKKyB9Cisg Cisgdm9pZCB4Zl9yYWlsX3NlbmRfY2xpZW50X3N5c3RlbV9jb21tYW5kKHhmQ29udGV4dCogeGZj LCBVSU5UMzIgd2luZG93SWQsIFVJTlQxNiBjb21tYW5kKQorQEAgLTY1OCw2MSArNjU5LDYzIEBA IHN0YXRpYyB2b2lkIHhmX3JhaWxfc2V0X3dpbmRvd19pY29uKHhmQ29udGV4dCogeGZjLCB4ZkFw cFdpbmRvdyogcmFpbFdpbmRvdywgeGZSCisgc3RhdGljIEJPT0wgeGZfcmFpbF93aW5kb3dfaWNv bihyZHBDb250ZXh0KiBjb250ZXh0LCBjb25zdCBXSU5ET1dfT1JERVJfSU5GTyogb3JkZXJJbmZv LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV0lORE9XX0lDT05fT1JE RVIqIHdpbmRvd0ljb24pCisgeworKwlCT09MIHJjID0gRkFMU0U7CisgCXhmQ29udGV4dCogeGZj ID0gKHhmQ29udGV4dCopY29udGV4dDsKKy0JeGZBcHBXaW5kb3cqIHJhaWxXaW5kb3c7CistCXhm UmFpbEljb24qIGljb247CistCUJPT0wgcmVwbGFjZUljb247CistCXJhaWxXaW5kb3cgPSB4Zl9y YWlsX2dldF93aW5kb3coeGZjLCBvcmRlckluZm8tPndpbmRvd0lkKTsKKysJQk9PTCByZXBsYWNl SWNvbiA9IDA7CisrCXhmQXBwV2luZG93KiByYWlsV2luZG93ID0geGZfcmFpbF9nZXRfd2luZG93 KHhmYywgb3JkZXJJbmZvLT53aW5kb3dJZCk7CisgCisgCWlmICghcmFpbFdpbmRvdykKKyAJCXJl dHVybiBUUlVFOworIAorLQlpY29uID0gUmFpbEljb25DYWNoZV9Mb29rdXAoeGZjLT5yYWlsSWNv bkNhY2hlLCB3aW5kb3dJY29uLT5pY29uSW5mby0+Y2FjaGVJZCwKKysJeGZSYWlsSWNvbiogaWNv biA9IFJhaWxJY29uQ2FjaGVfTG9va3VwKHhmYy0+cmFpbEljb25DYWNoZSwgd2luZG93SWNvbi0+ aWNvbkluZm8tPmNhY2hlSWQsCisgCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dJ Y29uLT5pY29uSW5mby0+Y2FjaGVFbnRyeSk7CisgCisgCWlmICghaWNvbikKKyAJeworIAkJV0xv Z19XQVJOKFRBRywgImZhaWxlZCB0byBnZXQgaWNvbiBmcm9tIGNhY2hlICUwMlg6JTA0WCIsIHdp bmRvd0ljb24tPmljb25JbmZvLT5jYWNoZUlkLAorIAkJICAgICAgICAgIHdpbmRvd0ljb24tPmlj b25JbmZvLT5jYWNoZUVudHJ5KTsKKy0JCXJldHVybiBGQUxTRTsKKyAJfQorLQorLQlpZiAoIWNv bnZlcnRfcmFpbF9pY29uKHdpbmRvd0ljb24tPmljb25JbmZvLCBpY29uKSkKKysJZWxzZSBpZiAo IWNvbnZlcnRfcmFpbF9pY29uKHdpbmRvd0ljb24tPmljb25JbmZvLCBpY29uKSkKKyAJeworIAkJ V0xvZ19XQVJOKFRBRywgImZhaWxlZCB0byBjb252ZXJ0IGljb24gZm9yIHdpbmRvdyAlMDhYIiwg b3JkZXJJbmZvLT53aW5kb3dJZCk7CistCQlyZXR1cm4gRkFMU0U7CisgCX0KKy0KKy0JcmVwbGFj ZUljb24gPSAhIShvcmRlckluZm8tPmZpZWxkRmxhZ3MgJiBXSU5ET1dfT1JERVJfU1RBVEVfTkVX KTsKKy0JeGZfcmFpbF9zZXRfd2luZG93X2ljb24oeGZjLCByYWlsV2luZG93LCBpY29uLCByZXBs YWNlSWNvbik7CistCXJldHVybiBUUlVFOworKwllbHNlCisrCXsKKysJCXJlcGxhY2VJY29uID0g ISEob3JkZXJJbmZvLT5maWVsZEZsYWdzICYgV0lORE9XX09SREVSX1NUQVRFX05FVyk7CisrCQl4 Zl9yYWlsX3NldF93aW5kb3dfaWNvbih4ZmMsIHJhaWxXaW5kb3csIGljb24sIHJlcGxhY2VJY29u KTsKKysJCXJjID0gVFJVRTsKKysJfQorKwl4Zl9yYWlsX3JldHVybl93aW5kb3cocmFpbFdpbmRv dyk7CisrCXJldHVybiByYzsKKyB9CisgCisgc3RhdGljIEJPT0wgeGZfcmFpbF93aW5kb3dfY2Fj aGVkX2ljb24ocmRwQ29udGV4dCogY29udGV4dCwgY29uc3QgV0lORE9XX09SREVSX0lORk8qIG9y ZGVySW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBX SU5ET1dfQ0FDSEVEX0lDT05fT1JERVIqIHdpbmRvd0NhY2hlZEljb24pCisgeworKwlCT09MIHJj ID0gRkFMU0U7CisgCXhmQ29udGV4dCogeGZjID0gKHhmQ29udGV4dCopY29udGV4dDsKKy0JeGZB cHBXaW5kb3cqIHJhaWxXaW5kb3c7CistCXhmUmFpbEljb24qIGljb247CistCUJPT0wgcmVwbGFj ZUljb247CistCXJhaWxXaW5kb3cgPSB4Zl9yYWlsX2dldF93aW5kb3coeGZjLCBvcmRlckluZm8t PndpbmRvd0lkKTsKKysJQk9PTCByZXBsYWNlSWNvbiA9IDA7CisrCXhmQXBwV2luZG93KiByYWls V2luZG93ID0geGZfcmFpbF9nZXRfd2luZG93KHhmYywgb3JkZXJJbmZvLT53aW5kb3dJZCk7Cisg CisgCWlmICghcmFpbFdpbmRvdykKKyAJCXJldHVybiBUUlVFOworIAorLQlpY29uID0gUmFpbElj b25DYWNoZV9Mb29rdXAoeGZjLT5yYWlsSWNvbkNhY2hlLCB3aW5kb3dDYWNoZWRJY29uLT5jYWNo ZWRJY29uLmNhY2hlSWQsCisrCXhmUmFpbEljb24qIGljb24gPSBSYWlsSWNvbkNhY2hlX0xvb2t1 cCh4ZmMtPnJhaWxJY29uQ2FjaGUsIHdpbmRvd0NhY2hlZEljb24tPmNhY2hlZEljb24uY2FjaGVJ ZCwKKyAJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd0NhY2hlZEljb24tPmNhY2hl ZEljb24uY2FjaGVFbnRyeSk7CisgCisgCWlmICghaWNvbikKKyAJeworIAkJV0xvZ19XQVJOKFRB RywgImZhaWxlZCB0byBnZXQgaWNvbiBmcm9tIGNhY2hlICUwMlg6JTA0WCIsCisgCQkgICAgICAg ICAgd2luZG93Q2FjaGVkSWNvbi0+Y2FjaGVkSWNvbi5jYWNoZUlkLCB3aW5kb3dDYWNoZWRJY29u LT5jYWNoZWRJY29uLmNhY2hlRW50cnkpOworLQkJcmV0dXJuIEZBTFNFOworIAl9CistCistCXJl cGxhY2VJY29uID0gISEob3JkZXJJbmZvLT5maWVsZEZsYWdzICYgV0lORE9XX09SREVSX1NUQVRF X05FVyk7CistCXhmX3JhaWxfc2V0X3dpbmRvd19pY29uKHhmYywgcmFpbFdpbmRvdywgaWNvbiwg cmVwbGFjZUljb24pOworLQlyZXR1cm4gVFJVRTsKKysJZWxzZQorKwl7CisrCQlyZXBsYWNlSWNv biA9ICEhKG9yZGVySW5mby0+ZmllbGRGbGFncyAmIFdJTkRPV19PUkRFUl9TVEFURV9ORVcpOwor KwkJeGZfcmFpbF9zZXRfd2luZG93X2ljb24oeGZjLCByYWlsV2luZG93LCBpY29uLCByZXBsYWNl SWNvbik7CisrCQlyYyA9IFRSVUU7CisrCX0KKysJeGZfcmFpbF9yZXR1cm5fd2luZG93KHJhaWxX aW5kb3cpOworKwlyZXR1cm4gcmM7CisgfQorIAorIHN0YXRpYyBCT09MIHhmX3JhaWxfbm90aWZ5 X2ljb25fY29tbW9uKHJkcENvbnRleHQqIGNvbnRleHQsIGNvbnN0IFdJTkRPV19PUkRFUl9JTkZP KiBvcmRlckluZm8sCitAQCAtMTAxMiw2ICsxMDE1LDcgQEAgc3RhdGljIFVJTlQgeGZfcmFpbF9z ZXJ2ZXJfbG9jYWxfbW92ZV9zaXplKFJhaWxDbGllbnRDb250ZXh0KiBjb250ZXh0LAorIAllbHNl CisgCQl4Zl9FbmRMb2NhbE1vdmVTaXplKHhmYywgYXBwV2luZG93KTsKKyAKKysJeGZfcmFpbF9y ZXR1cm5fd2luZG93KGFwcFdpbmRvdyk7CisgCXJldHVybiBDSEFOTkVMX1JDX09LOworIH0KKyAK K0BAIC0xMDMzLDYgKzEwMzcsNyBAQCBzdGF0aWMgVUlOVCB4Zl9yYWlsX3NlcnZlcl9taW5fbWF4 X2luZm8oUmFpbENsaWVudENvbnRleHQqIGNvbnRleHQsCisgCQkgICAgICAgICAgICAgICAgICAg ICAgIG1pbk1heEluZm8tPm1pblRyYWNrSGVpZ2h0LCBtaW5NYXhJbmZvLT5tYXhUcmFja1dpZHRo LAorIAkJICAgICAgICAgICAgICAgICAgICAgICBtaW5NYXhJbmZvLT5tYXhUcmFja0hlaWdodCk7 CisgCX0KKysJeGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdpbmRvdyk7CisgCisgCXJldHVybiBD SEFOTkVMX1JDX09LOworIH0KK0BAIC0xMTkwLDcgKzExOTUsMjAgQEAgeGZBcHBXaW5kb3cqIHhm X3JhaWxfZ2V0X3dpbmRvdyh4ZkNvbnRleHQqIHhmYywgVUlOVDY0IGlkKQorIAkJcmV0dXJuIE5V TEw7CisgCisgCWlmICgheGZjLT5yYWlsV2luZG93cykKKy0JCXJldHVybiBGQUxTRTsKKysJCXJl dHVybiBOVUxMOworKworKwlFbnRlckNyaXRpY2FsU2VjdGlvbigmeGZjLT5yYWlsV2luZG93cy0+ bG9jayk7CisrCXhmQXBwV2luZG93KiB3aW5kb3cgPSBIYXNoVGFibGVfR2V0SXRlbVZhbHVlKHhm Yy0+cmFpbFdpbmRvd3MsICZpZCk7CisrCWlmICghd2luZG93KQorKwkJTGVhdmVDcml0aWNhbFNl Y3Rpb24oJnhmYy0+cmFpbFdpbmRvd3MtPmxvY2spOworKworKwlyZXR1cm4gd2luZG93OworK30K KysKKyt2b2lkIHhmX3JhaWxfcmV0dXJuX3dpbmRvdyh4ZkFwcFdpbmRvdyogd2luZG93KQorK3sK KysJaWYgKCF3aW5kb3cpCisrCQlyZXR1cm47CisgCistCXJldHVybiBIYXNoVGFibGVfR2V0SXRl bVZhbHVlKHhmYy0+cmFpbFdpbmRvd3MsICZpZCk7CisrCUxlYXZlQ3JpdGljYWxTZWN0aW9uKCZ3 aW5kb3ctPnhmYy0+cmFpbFdpbmRvd3MtPmxvY2spOworIH0KK2RpZmYgLS1naXQgYS9jbGllbnQv WDExL3hmX3JhaWwuaCBiL2NsaWVudC9YMTEveGZfcmFpbC5oCitpbmRleCBjOTllZDcwLi41ZmJj MzE2IDEwMDY0NAorLS0tIGEvY2xpZW50L1gxMS94Zl9yYWlsLmgKKysrKyBiL2NsaWVudC9YMTEv eGZfcmFpbC5oCitAQCAtMzUsNiArMzUsOSBAQCB2b2lkIHhmX3JhaWxfZGlzYWJsZV9yZW1vdGVh cHBfbW9kZSh4ZkNvbnRleHQqIHhmYyk7CisgCisgeGZBcHBXaW5kb3cqIHhmX3JhaWxfYWRkX3dp bmRvdyh4ZkNvbnRleHQqIHhmYywgVUlOVDY0IGlkLCBVSU5UMzIgeCwgVUlOVDMyIHksIFVJTlQz MiB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJTlQzMiBoZWlnaHQs IFVJTlQzMiBzdXJmYWNlSWQpOworKworK3ZvaWQgeGZfcmFpbF9yZXR1cm5fd2luZG93KHhmQXBw V2luZG93KiB3aW5kb3cpOworKworIHhmQXBwV2luZG93KiB4Zl9yYWlsX2dldF93aW5kb3coeGZD b250ZXh0KiB4ZmMsIFVJTlQ2NCBpZCk7CisgCisgQk9PTCB4Zl9yYWlsX2RlbF93aW5kb3coeGZD b250ZXh0KiB4ZmMsIFVJTlQ2NCBpZCk7CitkaWZmIC0tZ2l0IGEvY2xpZW50L1gxMS94Zl93aW5k b3cuYyBiL2NsaWVudC9YMTEveGZfd2luZG93LmMKK2luZGV4IDliNWIxYzQuLjdlOTM2ZmUgMTAw NjQ0CistLS0gYS9jbGllbnQvWDExL3hmX3dpbmRvdy5jCisrKysgYi9jbGllbnQvWDExL3hmX3dp bmRvdy5jCitAQCAtMTEyMiwyMiArMTEyMiwzMyBAQCB4ZkFwcFdpbmRvdyogeGZfQXBwV2luZG93 RnJvbVgxMVdpbmRvdyh4ZkNvbnRleHQqIHhmYywgV2luZG93IHduZCkKKyAJaW50IGNvdW50Owor IAlVTE9OR19QVFIqIHBLZXlzID0gTlVMTDsKKyAJeGZBcHBXaW5kb3cqIGFwcFdpbmRvdzsKKysK KysJaWYgKCF4ZmMtPnJhaWxXaW5kb3dzKQorKwkJcmV0dXJuIE5VTEw7CisrCisrCUVudGVyQ3Jp dGljYWxTZWN0aW9uKCZ4ZmMtPnJhaWxXaW5kb3dzLT5sb2NrKTsKKyAJY291bnQgPSBIYXNoVGFi bGVfR2V0S2V5cyh4ZmMtPnJhaWxXaW5kb3dzLCAmcEtleXMpOworIAorIAlmb3IgKGluZGV4ID0g MDsgaW5kZXggPCBjb3VudDsgaW5kZXgrKykKKyAJeworLQkJYXBwV2luZG93ID0geGZfcmFpbF9n ZXRfd2luZG93KHhmYywgKihVSU5UNjQqKXBLZXlzW2luZGV4XSk7CisrCQlhcHBXaW5kb3cgPSBI YXNoVGFibGVfR2V0SXRlbVZhbHVlKHhmYy0+cmFpbFdpbmRvd3MsICh2b2lkKilwS2V5c1tpbmRl eF0pOworIAorIAkJaWYgKCFhcHBXaW5kb3cpCisrCQl7CisrCQkJTGVhdmVDcml0aWNhbFNlY3Rp b24oJnhmYy0+cmFpbFdpbmRvd3MtPmxvY2spOworKwkJCWZyZWUocEtleXMpOworIAkJCXJldHVy biBOVUxMOworKwkJfQorIAorIAkJaWYgKGFwcFdpbmRvdy0+aGFuZGxlID09IHduZCkKKyAJCXsK KysJCQlMZWF2ZUNyaXRpY2FsU2VjdGlvbigmeGZjLT5yYWlsV2luZG93cy0+bG9jayk7CisgCQkJ ZnJlZShwS2V5cyk7CisgCQkJcmV0dXJuIGFwcFdpbmRvdzsKKyAJCX0KKyAJfQorIAorKwlMZWF2 ZUNyaXRpY2FsU2VjdGlvbigmeGZjLT5yYWlsV2luZG93cy0+bG9jayk7CisgCWZyZWUocEtleXMp OworIAlyZXR1cm4gTlVMTDsKKyB9CitkaWZmIC0tZ2l0IGEvY2xpZW50L1gxMS94Zl93aW5kb3cu aCBiL2NsaWVudC9YMTEveGZfd2luZG93LmgKK2luZGV4IDBmODVhZjEuLmM3NzAyZWQgMTAwNjQ0 CistLS0gYS9jbGllbnQvWDExL3hmX3dpbmRvdy5oCisrKysgYi9jbGllbnQvWDExL3hmX3dpbmRv dy5oCitAQCAtMTg3LDYgKzE4Nyw4IEBAIHZvaWQgeGZfU2V0V2luZG93TWluTWF4SW5mbyh4ZkNv bnRleHQqIHhmYywgeGZBcHBXaW5kb3cqIGFwcFdpbmRvdywgaW50IG1heFdpZHRoCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCBtYXhUcmFja1dpZHRoLCBpbnQgbWF4VHJhY2tIZWln aHQpOworIHZvaWQgeGZfU3RhcnRMb2NhbE1vdmVTaXplKHhmQ29udGV4dCogeGZjLCB4ZkFwcFdp bmRvdyogYXBwV2luZG93LCBpbnQgZGlyZWN0aW9uLCBpbnQgeCwgaW50IHkpOworIHZvaWQgeGZf RW5kTG9jYWxNb3ZlU2l6ZSh4ZkNvbnRleHQqIHhmYywgeGZBcHBXaW5kb3cqIGFwcFdpbmRvdyk7 Cisrdm9pZCB4Zl9yYWlsX3JldHVybl93aW5kb3coeGZBcHBXaW5kb3cqIHdpbmRvdyk7CisrCisg eGZBcHBXaW5kb3cqIHhmX0FwcFdpbmRvd0Zyb21YMTFXaW5kb3coeGZDb250ZXh0KiB4ZmMsIFdp bmRvdyB3bmQpOworIAorICNlbmRpZiAvKiBGUkVFUkRQX0NMSUVOVF9YMTFfV0lORE9XX0ggKi8K Ky0tIAorMi41My4wCisKCmRpZmYgLS1naXQgYS9jbGllbnQteDExLXJlZmFjdG9yLWxvY2tpbmcu cGF0Y2ggYi9jbGllbnQteDExLXJlZmFjdG9yLWxvY2tpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uYTk0NWEzOQotLS0gL2Rldi9udWxsCisrKyBiL2NsaWVudC14 MTEtcmVmYWN0b3ItbG9ja2luZy5wYXRjaApAQCAtMCwwICsxLDM2MCBAQAorRnJvbSBlZWIzOGMz NTY1NDczYzQ2ZGE1ZGVhNmI0M2Y1OTcwNjRlODliNzE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQorRnJvbTogT25kcmVqIEhvbHkgPG9ob2x5QHJlZGhhdC5jb20+CitEYXRlOiBNb24sIDI3IEFw ciAyMDI2IDIwOjEyOjExICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIFtjbGllbnQseDExXSByZWZh Y3RvciBsb2NraW5nCisKK1gxMSBhbmQgcmFpbFdpbmRvd3MgbG9jayBtdXN0IGJlIGhlbGQgYXQg dGhlIHNhbWUgdGltZSB0byBhdm9pZAorZGVhZGxvY2tpbmcuCisKK0JhY2twb3J0IG9mIGNvbW1p dCA0ZmY1N2I2OGMyOTYwZmE0MTRkMDNjNzhmZjBlMDY2MGJlMWNjNWJkLgorCitBZGFwdGVkIGZv ciAyLjExLjc6IEM4OSBkZWNsYXJhdGlvbiBzdHlsZSwgZGlyZWN0IFgxMSBjYWxscyBpbnN0ZWFk CitvZiBgTG9nRHluQW5kKmAgd3JhcHBlcnMsIGBXSU5QUl9BVFRSX1VOVVNFRGAgcmVtb3ZlZCBm cm9tCitgeGZBcHBXaW5kb3dzTG9ja0Zyb21gL2BVbmxvY2tGcm9tYC4KKworTWFkZS13aXRoOiBD dXJzb3IKKy0tLQorIGNsaWVudC9YMTEveGZfZXZlbnQuYyAgfCAyNCArKysrKysrKysrKystLS0t LS0tLS0tLS0KKyBjbGllbnQvWDExL3hmX3JhaWwuYyAgIHwgMzUgKysrKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0KKyBjbGllbnQvWDExL3hmX3JhaWwuaCAgIHwgMTQgKysrKysrKyst LS0tLS0KKyBjbGllbnQvWDExL3hmX3dpbmRvdy5jIHwgMTYgKysrKysrKysrLS0tLS0tLQorIDQg ZmlsZXMgY2hhbmdlZCwgNTAgaW5zZXJ0aW9ucygrKSwgMzkgZGVsZXRpb25zKC0pCisKK2RpZmYg LS1naXQgYS9jbGllbnQvWDExL3hmX2V2ZW50LmMgYi9jbGllbnQvWDExL3hmX2V2ZW50LmMKK2lu ZGV4IDg4MDFmYmQuLmUxNDIxYWQgMTAwNjQ0CistLS0gYS9jbGllbnQvWDExL3hmX2V2ZW50LmMK KysrKyBiL2NsaWVudC9YMTEveGZfZXZlbnQuYworQEAgLTM1Nyw3ICszNTcsNyBAQCBzdGF0aWMg Qk9PTCB4Zl9ldmVudF9FeHBvc2UoeGZDb250ZXh0KiB4ZmMsIGNvbnN0IFhFeHBvc2VFdmVudCog ZXZlbnQsIEJPT0wgYXBwKQorIAkJeGZBcHBXaW5kb3cqIGFwcFdpbmRvdyA9IHhmX0FwcFdpbmRv d0Zyb21YMTFXaW5kb3coeGZjLCBldmVudC0+d2luZG93KTsKKyAJCWlmIChhcHBXaW5kb3cpCisg CQkJeGZfVXBkYXRlV2luZG93QXJlYSh4ZmMsIGFwcFdpbmRvdywgeCwgeSwgdywgaCk7CistCQl4 Zl9yYWlsX3JldHVybl93aW5kb3coYXBwV2luZG93KTsKKysJCXhmX3JhaWxfcmV0dXJuX3dpbmRv dyhhcHBXaW5kb3csIEZBTFNFKTsKKyAJfQorIAorIAlyZXR1cm4gVFJVRTsKK0BAIC0zODYsNyAr Mzg2LDcgQEAgQk9PTCB4Zl9nZW5lcmljX01vdGlvbk5vdGlmeSh4ZkNvbnRleHQqIHhmYywgaW50 IHgsIGludCB5LCBpbnQgc3RhdGUsIFdpbmRvdyB3aW4KKyAJeworIAkJLyogbWFrZSBzdXJlIHdp bmRvdyBleGlzdHMgKi8KKyAJCXhmQXBwV2luZG93KiBhcHBXaW5kb3cgPSB4Zl9BcHBXaW5kb3dG cm9tWDExV2luZG93KHhmYywgd2luZG93KTsKKy0JCXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhhcHBX aW5kb3cpOworKwkJeGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdpbmRvdywgRkFMU0UpOworIAkJ aWYgKCFhcHBXaW5kb3cpCisgCQkJcmV0dXJuIFRSVUU7CisgCitAQCAtNDY1LDcgKzQ2NSw3IEBA IEJPT0wgeGZfZ2VuZXJpY19CdXR0b25FdmVudCh4ZkNvbnRleHQqIHhmYywgaW50IHgsIGludCB5 LCBpbnQgYnV0dG9uLCBXaW5kb3cgd2luCisgCQkJeworIAkJCQkvKiBtYWtlIHN1cmUgd2luZG93 IGV4aXN0cyAqLworIAkJCQl4ZkFwcFdpbmRvdyogYXBwV2luZG93ID0geGZfQXBwV2luZG93RnJv bVgxMVdpbmRvdyh4ZmMsIHdpbmRvdyk7CistCQkJCXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhhcHBX aW5kb3cpOworKwkJCQl4Zl9yYWlsX3JldHVybl93aW5kb3coYXBwV2luZG93LCBGQUxTRSk7Cisg CQkJCWlmICghYXBwV2luZG93KQorIAkJCQkJcmV0dXJuIFRSVUU7CisgCitAQCAtNTc2LDcgKzU3 Niw3IEBAIHN0YXRpYyBCT09MIHhmX2V2ZW50X0ZvY3VzSW4oeGZDb250ZXh0KiB4ZmMsIGNvbnN0 IFhGb2N1c0luRXZlbnQqIGV2ZW50LCBCT09MIGFwCisgCQkgKi8KKyAJCWlmIChhcHBXaW5kb3cp CisgCQkJeGZfcmFpbF9hZGp1c3RfcG9zaXRpb24oeGZjLCBhcHBXaW5kb3cpOworLQkJeGZfcmFp bF9yZXR1cm5fd2luZG93KGFwcFdpbmRvdyk7CisrCQl4Zl9yYWlsX3JldHVybl93aW5kb3coYXBw V2luZG93LCBGQUxTRSk7CisgCX0KKyAKKyAJeGZfa2V5Ym9hcmRfZm9jdXNfaW4oeGZjKTsKK0BA IC02MjgsNyArNjI4LDcgQEAgc3RhdGljIEJPT0wgeGZfZXZlbnRfQ2xpZW50TWVzc2FnZSh4ZkNv bnRleHQqIHhmYywgY29uc3QgWENsaWVudE1lc3NhZ2VFdmVudCogZXYKKyAKKyAJCQlpZiAoYXBw V2luZG93KQorIAkJCQl4Zl9yYWlsX3NlbmRfY2xpZW50X3N5c3RlbV9jb21tYW5kKHhmYywgYXBw V2luZG93LT53aW5kb3dJZCwgU0NfQ0xPU0UpOworLQkJCXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhh cHBXaW5kb3cpOworKwkJCXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhhcHBXaW5kb3csIEZBTFNFKTsK KyAJCQlyZXR1cm4gcmM7CisgCQl9CisgCQllbHNlCitAQCAtNjYzLDcgKzY2Myw3IEBAIHN0YXRp YyBCT09MIHhmX2V2ZW50X0VudGVyTm90aWZ5KHhmQ29udGV4dCogeGZjLCBjb25zdCBYRW50ZXJX aW5kb3dFdmVudCogZXZlbnQsCisgCisgCQkvKiBrZWVwIHRyYWNrIG9mIHdoaWNoIHdpbmRvdyBo YXMgZm9jdXMgc28gdGhhdCB3ZSBjYW4gYXBwbHkgcG9pbnRlciB1cGRhdGVzICovCisgCQl4ZmMt PmFwcFdpbmRvdyA9IGFwcFdpbmRvdzsKKy0JCXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhhcHBXaW5k b3cpOworKwkJeGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdpbmRvdywgRkFMU0UpOworIAl9Cisg CisgCXJldHVybiBUUlVFOworQEAgLTY4Myw3ICs2ODMsNyBAQCBzdGF0aWMgQk9PTCB4Zl9ldmVu dF9MZWF2ZU5vdGlmeSh4ZkNvbnRleHQqIHhmYywgY29uc3QgWExlYXZlV2luZG93RXZlbnQqIGV2 ZW50LAorIAkJLyoga2VlcCB0cmFjayBvZiB3aGljaCB3aW5kb3cgaGFzIGZvY3VzIHNvIHRoYXQg d2UgY2FuIGFwcGx5IHBvaW50ZXIgdXBkYXRlcyAqLworIAkJaWYgKHhmYy0+YXBwV2luZG93ID09 IGFwcFdpbmRvdykKKyAJCQl4ZmMtPmFwcFdpbmRvdyA9IE5VTEw7CistCQl4Zl9yYWlsX3JldHVy bl93aW5kb3coYXBwV2luZG93KTsKKysJCXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhhcHBXaW5kb3cs IEZBTFNFKTsKKyAJfQorIAlyZXR1cm4gVFJVRTsKKyB9CitAQCAtNzc0LDcgKzc3NCw3IEBAIHN0 YXRpYyBCT09MIHhmX2V2ZW50X0NvbmZpZ3VyZU5vdGlmeSh4ZkNvbnRleHQqIHhmYywgY29uc3Qg WENvbmZpZ3VyZUV2ZW50KiBldmVuCisgCQkJCQl4Zl9yYWlsX2FkanVzdF9wb3NpdGlvbih4ZmMs IGFwcFdpbmRvdyk7CisgCQkJfQorIAkJfQorLQkJeGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdp bmRvdyk7CisrCQl4Zl9yYWlsX3JldHVybl93aW5kb3coYXBwV2luZG93LCBGQUxTRSk7CisgCX0K KyAJcmV0dXJuIHhmX3BvaW50ZXJfdXBkYXRlX3NjYWxlKHhmYyk7CisgfQorQEAgLTc5OSw3ICs3 OTksNyBAQCBzdGF0aWMgQk9PTCB4Zl9ldmVudF9NYXBOb3RpZnkoeGZDb250ZXh0KiB4ZmMsIGNv bnN0IFhNYXBFdmVudCogZXZlbnQsIEJPT0wgYXBwKQorIAkJCS8vIHhmX3JhaWxfc2VuZF9jbGll bnRfc3lzdGVtX2NvbW1hbmQoeGZjLCBhcHBXaW5kb3ctPndpbmRvd0lkLCBTQ19SRVNUT1JFKTsK KyAJCQlhcHBXaW5kb3ctPmlzX21hcHBlZCA9IFRSVUU7CisgCQl9CistCQl4Zl9yYWlsX3JldHVy bl93aW5kb3coYXBwV2luZG93KTsKKysJCXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhhcHBXaW5kb3cs IEZBTFNFKTsKKyAJfQorIAorIAlyZXR1cm4gVFJVRTsKK0BAIC04MjIsNyArODIyLDcgQEAgc3Rh dGljIEJPT0wgeGZfZXZlbnRfVW5tYXBOb3RpZnkoeGZDb250ZXh0KiB4ZmMsIGNvbnN0IFhVbm1h cEV2ZW50KiBldmVudCwgQk9PTAorIAorIAkJaWYgKGFwcFdpbmRvdykKKyAJCQlhcHBXaW5kb3ct PmlzX21hcHBlZCA9IEZBTFNFOworLQkJeGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdpbmRvdyk7 CisrCQl4Zl9yYWlsX3JldHVybl93aW5kb3coYXBwV2luZG93LCBGQUxTRSk7CisgCX0KKyAKKyAJ cmV0dXJuIFRSVUU7CitAQCAtOTU0LDcgKzk1NCw3IEBAIHN0YXRpYyBCT09MIHhmX2V2ZW50X1By b3BlcnR5Tm90aWZ5KHhmQ29udGV4dCogeGZjLCBjb25zdCBYUHJvcGVydHlFdmVudCogZXZlbnQs CisgCQkJcmMgPSBnZGlfc2VuZF9zdXBwcmVzc19vdXRwdXQoeGZjLT5jb250ZXh0LmdkaSwgbWlu aW1pemVkKTsKKyAKKyAJZmFpbDoKKy0JCXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhhcHBXaW5kb3cp OworKwkJeGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdpbmRvdywgRkFMU0UpOworIAl9CisgCisg CXJldHVybiByYzsKK0BAIC0xMDY2LDcgKzEwNjYsNyBAQCBCT09MIHhmX2V2ZW50X3Byb2Nlc3Mo ZnJlZXJkcCogaW5zdGFuY2UsIGNvbnN0IFhFdmVudCogZXZlbnQpCisgCQkJeGZjLT5hcHBXaW5k b3cgPSBhcHBXaW5kb3c7CisgCisgCQkJQk9PTCBzdXBwcmVzcyA9IHhmX2V2ZW50X3N1cHByZXNz X2V2ZW50cyh4ZmMsIGFwcFdpbmRvdywgZXZlbnQpOworLQkJCXhmX3JhaWxfcmV0dXJuX3dpbmRv dyhhcHBXaW5kb3cpOworKwkJCXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhhcHBXaW5kb3csIEZBTFNF KTsKKyAJCQlpZiAoc3VwcHJlc3MpCisgCQkJCXJldHVybiBUUlVFOworIAkJfQorZGlmZiAtLWdp dCBhL2NsaWVudC9YMTEveGZfcmFpbC5jIGIvY2xpZW50L1gxMS94Zl9yYWlsLmMKK2luZGV4IDFl NTcwNDYuLmQ0MmI4NjQgMTAwNjQ0CistLS0gYS9jbGllbnQvWDExL3hmX3JhaWwuYworKysrIGIv Y2xpZW50L1gxMS94Zl9yYWlsLmMKK0BAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCB4Zl9yYWlsX3Nl bmRfYWN0aXZhdGUoeGZDb250ZXh0KiB4ZmMsIFdpbmRvdyB4d2luZG93LCBCT09MIGVuYWJsZWQp CisgCQl4Zl9TZXRXaW5kb3dTdHlsZSh4ZmMsIGFwcFdpbmRvdywgMCwgMCk7CisgCisgCWFjdGl2 YXRlLndpbmRvd0lkID0gYXBwV2luZG93LT53aW5kb3dJZDsKKy0JeGZfcmFpbF9yZXR1cm5fd2lu ZG93KGFwcFdpbmRvdyk7CisrCXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhhcHBXaW5kb3csIEZBTFNF KTsKKyAKKyAJYWN0aXZhdGUuZW5hYmxlZCA9IGVuYWJsZWQ7CisgCXhmYy0+cmFpbC0+Q2xpZW50 QWN0aXZhdGUoeGZjLT5yYWlsLCAmYWN0aXZhdGUpOworQEAgLTIxMyw3ICsyMTMsNyBAQCBzdGF0 aWMgdm9pZCB4Zl9yYWlsX2ludmFsaWRhdGVfcmVnaW9uKHhmQ29udGV4dCogeGZjLCBSRUdJT04x NiogaW52YWxpZFJlZ2lvbikKKyAKKyAJZm9yIChpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7IGlu ZGV4KyspCisgCXsKKy0JCWFwcFdpbmRvdyA9IHhmX3JhaWxfZ2V0X3dpbmRvdyh4ZmMsICooVUlO VDY0KilwS2V5c1tpbmRleF0pOworKwkJYXBwV2luZG93ID0geGZfcmFpbF9nZXRfd2luZG93KHhm YywgKihVSU5UNjQqKXBLZXlzW2luZGV4XSwgRkFMU0UpOworIAorIAkJaWYgKGFwcFdpbmRvdykK KyAJCXsKK0BAIC0yNjUsNyArMjY1LDcgQEAgc3RhdGljIEJPT0wgeGZfcmFpbF93aW5kb3dfY29t bW9uKHJkcENvbnRleHQqIGNvbnRleHQsIGNvbnN0IFdJTkRPV19PUkRFUl9JTkZPKgorIAl4ZkNv bnRleHQqIHhmYyA9ICh4ZkNvbnRleHQqKWNvbnRleHQ7CisgCVVJTlQzMiBmaWVsZEZsYWdzID0g b3JkZXJJbmZvLT5maWVsZEZsYWdzOworIAlCT09MIHBvc2l0aW9uX29yX3NpemVfdXBkYXRlZCA9 IEZBTFNFOworLQl4ZkFwcFdpbmRvdyogYXBwV2luZG93ID0geGZfcmFpbF9nZXRfd2luZG93KHhm Yywgb3JkZXJJbmZvLT53aW5kb3dJZCk7CisrCXhmQXBwV2luZG93KiBhcHBXaW5kb3cgPSB4Zl9y YWlsX2dldF93aW5kb3coeGZjLCBvcmRlckluZm8tPndpbmRvd0lkLCBGQUxTRSk7CisgCisgCWlm IChmaWVsZEZsYWdzICYgV0lORE9XX09SREVSX1NUQVRFX05FVykKKyAJeworQEAgLTUyNiw3ICs1 MjYsNyBAQCBzdGF0aWMgQk9PTCB4Zl9yYWlsX3dpbmRvd19jb21tb24ocmRwQ29udGV4dCogY29u dGV4dCwgY29uc3QgV0lORE9XX09SREVSX0lORk8qCisgCX0qLworIAlyYyA9IFRSVUU7CisgZmFp bDoKKy0JeGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdpbmRvdyk7CisrCXhmX3JhaWxfcmV0dXJu X3dpbmRvdyhhcHBXaW5kb3csIEZBTFNFKTsKKyAJcmV0dXJuIHJjOworIH0KKyAKK0BAIC02Njcs NyArNjY3LDcgQEAgc3RhdGljIEJPT0wgeGZfcmFpbF93aW5kb3dfaWNvbihyZHBDb250ZXh0KiBj b250ZXh0LCBjb25zdCBXSU5ET1dfT1JERVJfSU5GTyogb3IKKyAJQk9PTCByYyA9IEZBTFNFOwor IAl4ZkNvbnRleHQqIHhmYyA9ICh4ZkNvbnRleHQqKWNvbnRleHQ7CisgCUJPT0wgcmVwbGFjZUlj b24gPSAwOworLQl4ZkFwcFdpbmRvdyogcmFpbFdpbmRvdyA9IHhmX3JhaWxfZ2V0X3dpbmRvdyh4 ZmMsIG9yZGVySW5mby0+d2luZG93SWQpOworKwl4ZkFwcFdpbmRvdyogcmFpbFdpbmRvdyA9IHhm X3JhaWxfZ2V0X3dpbmRvdyh4ZmMsIG9yZGVySW5mby0+d2luZG93SWQsIEZBTFNFKTsKKyAKKyAJ aWYgKCFyYWlsV2luZG93KQorIAkJcmV0dXJuIFRSVUU7CitAQCAtNjkwLDcgKzY5MCw3IEBAIHN0 YXRpYyBCT09MIHhmX3JhaWxfd2luZG93X2ljb24ocmRwQ29udGV4dCogY29udGV4dCwgY29uc3Qg V0lORE9XX09SREVSX0lORk8qIG9yCisgCQl4Zl9yYWlsX3NldF93aW5kb3dfaWNvbih4ZmMsIHJh aWxXaW5kb3csIGljb24sIHJlcGxhY2VJY29uKTsKKyAJCXJjID0gVFJVRTsKKyAJfQorLQl4Zl9y YWlsX3JldHVybl93aW5kb3cocmFpbFdpbmRvdyk7CisrCXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhy YWlsV2luZG93LCBGQUxTRSk7CisgCXJldHVybiByYzsKKyB9CisgCitAQCAtNzAwLDcgKzcwMCw3 IEBAIHN0YXRpYyBCT09MIHhmX3JhaWxfd2luZG93X2NhY2hlZF9pY29uKHJkcENvbnRleHQqIGNv bnRleHQsIGNvbnN0IFdJTkRPV19PUkRFUl9JCisgCUJPT0wgcmMgPSBGQUxTRTsKKyAJeGZDb250 ZXh0KiB4ZmMgPSAoeGZDb250ZXh0Kiljb250ZXh0OworIAlCT09MIHJlcGxhY2VJY29uID0gMDsK Ky0JeGZBcHBXaW5kb3cqIHJhaWxXaW5kb3cgPSB4Zl9yYWlsX2dldF93aW5kb3coeGZjLCBvcmRl ckluZm8tPndpbmRvd0lkKTsKKysJeGZBcHBXaW5kb3cqIHJhaWxXaW5kb3cgPSB4Zl9yYWlsX2dl dF93aW5kb3coeGZjLCBvcmRlckluZm8tPndpbmRvd0lkLCBGQUxTRSk7CisgCisgCWlmICghcmFp bFdpbmRvdykKKyAJCXJldHVybiBUUlVFOworQEAgLTcxOSw3ICs3MTksNyBAQCBzdGF0aWMgQk9P TCB4Zl9yYWlsX3dpbmRvd19jYWNoZWRfaWNvbihyZHBDb250ZXh0KiBjb250ZXh0LCBjb25zdCBX SU5ET1dfT1JERVJfSQorIAkJeGZfcmFpbF9zZXRfd2luZG93X2ljb24oeGZjLCByYWlsV2luZG93 LCBpY29uLCByZXBsYWNlSWNvbik7CisgCQlyYyA9IFRSVUU7CisgCX0KKy0JeGZfcmFpbF9yZXR1 cm5fd2luZG93KHJhaWxXaW5kb3cpOworKwl4Zl9yYWlsX3JldHVybl93aW5kb3cocmFpbFdpbmRv dywgRkFMU0UpOworIAlyZXR1cm4gcmM7CisgfQorIAorQEAgLTkzOSw3ICs5MzksNyBAQCBzdGF0 aWMgVUlOVCB4Zl9yYWlsX3NlcnZlcl9sb2NhbF9tb3ZlX3NpemUoUmFpbENsaWVudENvbnRleHQq IGNvbnRleHQsCisgCWludCBkaXJlY3Rpb24gPSAwOworIAlXaW5kb3cgY2hpbGRfd2luZG93Owor IAl4ZkNvbnRleHQqIHhmYyA9ICh4ZkNvbnRleHQqKWNvbnRleHQtPmN1c3RvbTsKKy0JeGZBcHBX aW5kb3cqIGFwcFdpbmRvdyA9IHhmX3JhaWxfZ2V0X3dpbmRvdyh4ZmMsIGxvY2FsTW92ZVNpemUt PndpbmRvd0lkKTsKKysJeGZBcHBXaW5kb3cqIGFwcFdpbmRvdyA9IHhmX3JhaWxfZ2V0X3dpbmRv dyh4ZmMsIGxvY2FsTW92ZVNpemUtPndpbmRvd0lkLCBGQUxTRSk7CisgCisgCWlmICghYXBwV2lu ZG93KQorIAkJcmV0dXJuIEVSUk9SX0lOVEVSTkFMX0VSUk9SOworQEAgLTEwMjAsNyArMTAyMCw3 IEBAIHN0YXRpYyBVSU5UIHhmX3JhaWxfc2VydmVyX2xvY2FsX21vdmVfc2l6ZShSYWlsQ2xpZW50 Q29udGV4dCogY29udGV4dCwKKyAJZWxzZQorIAkJeGZfRW5kTG9jYWxNb3ZlU2l6ZSh4ZmMsIGFw cFdpbmRvdyk7CisgCistCXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhhcHBXaW5kb3cpOworKwl4Zl9y YWlsX3JldHVybl93aW5kb3coYXBwV2luZG93LCBGQUxTRSk7CisgCXJldHVybiBDSEFOTkVMX1JD X09LOworIH0KKyAKK0BAIC0xMDMzLDcgKzEwMzMsNyBAQCBzdGF0aWMgVUlOVCB4Zl9yYWlsX3Nl cnZlcl9taW5fbWF4X2luZm8oUmFpbENsaWVudENvbnRleHQqIGNvbnRleHQsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJBSUxfTUlOTUFYSU5GT19PUkRF UiogbWluTWF4SW5mbykKKyB7CisgCXhmQ29udGV4dCogeGZjID0gKHhmQ29udGV4dCopY29udGV4 dC0+Y3VzdG9tOworLQl4ZkFwcFdpbmRvdyogYXBwV2luZG93ID0geGZfcmFpbF9nZXRfd2luZG93 KHhmYywgbWluTWF4SW5mby0+d2luZG93SWQpOworKwl4ZkFwcFdpbmRvdyogYXBwV2luZG93ID0g eGZfcmFpbF9nZXRfd2luZG93KHhmYywgbWluTWF4SW5mby0+d2luZG93SWQsIEZBTFNFKTsKKyAK KyAJaWYgKGFwcFdpbmRvdykKKyAJeworQEAgLTEwNDIsNyArMTA0Miw3IEBAIHN0YXRpYyBVSU5U IHhmX3JhaWxfc2VydmVyX21pbl9tYXhfaW5mbyhSYWlsQ2xpZW50Q29udGV4dCogY29udGV4dCwK KyAJCSAgICAgICAgICAgICAgICAgICAgICAgbWluTWF4SW5mby0+bWluVHJhY2tIZWlnaHQsIG1p bk1heEluZm8tPm1heFRyYWNrV2lkdGgsCisgCQkgICAgICAgICAgICAgICAgICAgICAgIG1pbk1h eEluZm8tPm1heFRyYWNrSGVpZ2h0KTsKKyAJfQorLQl4Zl9yYWlsX3JldHVybl93aW5kb3coYXBw V2luZG93KTsKKysJeGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdpbmRvdywgRkFMU0UpOworIAor IAlyZXR1cm4gQ0hBTk5FTF9SQ19PSzsKKyB9CitAQCAtMTE5OSwxMyArMTE5OSwyMCBAQCBCT09M IHhmX3JhaWxfZGVsX3dpbmRvdyh4ZkNvbnRleHQqIHhmYywgVUlOVDY0IGlkKQorIAlpZiAoIXhm Yy0+cmFpbFdpbmRvd3MpCisgCQlyZXR1cm4gRkFMU0U7CisgCistCXJldHVybiBIYXNoVGFibGVf UmVtb3ZlKHhmYy0+cmFpbFdpbmRvd3MsICZpZCk7CisrCXhmX2xvY2tfeDExKHhmYyk7CisrCWNv bnN0IEJPT0wgcmVzID0gSGFzaFRhYmxlX1JlbW92ZSh4ZmMtPnJhaWxXaW5kb3dzLCAmaWQpOwor Kwl4Zl91bmxvY2tfeDExKHhmYyk7CisrCXJldHVybiByZXM7CisgfQorIAorLXZvaWQgeGZfcmFp bF9yZXR1cm5fd2luZG93RnJvbSh4ZkFwcFdpbmRvdyogd2luZG93LCBjb25zdCBjaGFyKiBmaWxl LCBjb25zdCBjaGFyKiBma3QsIHNpemVfdCBsaW5lKQorK3ZvaWQgeGZfcmFpbF9yZXR1cm5fd2lu ZG93RnJvbSh4ZkFwcFdpbmRvdyogd2luZG93LCBCT09MIGFscmVhZHlMb2NrZWQsIGNvbnN0IGNo YXIqIGZpbGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZr dCwgc2l6ZV90IGxpbmUpCisgeworIAlpZiAoIXdpbmRvdykKKyAJCXJldHVybjsKKyAKKysJaWYg KGFscmVhZHlMb2NrZWQpCisrCQlyZXR1cm47CisrCisgCXhmQXBwV2luZG93c1VubG9ja0Zyb20o d2luZG93LT54ZmMsIGZpbGUsIGZrdCwgbGluZSk7CisgfQorZGlmZiAtLWdpdCBhL2NsaWVudC9Y MTEveGZfcmFpbC5oIGIvY2xpZW50L1gxMS94Zl9yYWlsLmgKK2luZGV4IDgzZDVmZmYuLmE5MWMx YmYgMTAwNjQ0CistLS0gYS9jbGllbnQvWDExL3hmX3JhaWwuaAorKysrIGIvY2xpZW50L1gxMS94 Zl9yYWlsLmgKK0BAIC0zNiwxNCArMzYsMTYgQEAgdm9pZCB4Zl9yYWlsX2Rpc2FibGVfcmVtb3Rl YXBwX21vZGUoeGZDb250ZXh0KiB4ZmMpOworIHhmQXBwV2luZG93KiB4Zl9yYWlsX2FkZF93aW5k b3coeGZDb250ZXh0KiB4ZmMsIFVJTlQ2NCBpZCwgVUlOVDMyIHgsIFVJTlQzMiB5LCBVSU5UMzIg d2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSU5UMzIgaGVpZ2h0LCBV SU5UMzIgc3VyZmFjZUlkKTsKKyAKKy0jZGVmaW5lIHhmX3JhaWxfcmV0dXJuX3dpbmRvdyh3aW5k b3cpIFwKKy0JeGZfcmFpbF9yZXR1cm5fd2luZG93RnJvbSgod2luZG93KSwgX19GSUxFX18sIF9f ZnVuY19fLCBfX0xJTkVfXykKKy12b2lkIHhmX3JhaWxfcmV0dXJuX3dpbmRvd0Zyb20oeGZBcHBX aW5kb3cqIHdpbmRvdywgY29uc3QgY2hhciogZmlsZSwgY29uc3QgY2hhciogZmt0LCBzaXplX3Qg bGluZSk7CisrI2RlZmluZSB4Zl9yYWlsX3JldHVybl93aW5kb3cod2luZG93LCBhbHJlYWR5TG9j a2VkKSBcCisrCXhmX3JhaWxfcmV0dXJuX3dpbmRvd0Zyb20oKHdpbmRvdyksIChhbHJlYWR5TG9j a2VkKSwgX19GSUxFX18sIF9fZnVuY19fLCBfX0xJTkVfXykKKyt2b2lkIHhmX3JhaWxfcmV0dXJu X3dpbmRvd0Zyb20oeGZBcHBXaW5kb3cqIHdpbmRvdywgQk9PTCBhbHJlYWR5TG9ja2VkLCBjb25z dCBjaGFyKiBmaWxlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy KiBma3QsIHNpemVfdCBsaW5lKTsKKyAKKy0jZGVmaW5lIHhmX3JhaWxfZ2V0X3dpbmRvdyh4ZmMs IGlkKSBcCistCXhmX3JhaWxfZ2V0X3dpbmRvd0Zyb20oKHhmYyksIChpZCksIF9fRklMRV9fLCBf X2Z1bmNfXywgX19MSU5FX18pCisrI2RlZmluZSB4Zl9yYWlsX2dldF93aW5kb3coeGZjLCBpZCwg YWxyZWFkeUxvY2tlZCkgXAorKwl4Zl9yYWlsX2dldF93aW5kb3dGcm9tKCh4ZmMpLCAoaWQpLCAo YWxyZWFkeUxvY2tlZCksIF9fRklMRV9fLCBfX2Z1bmNfXywgX19MSU5FX18pCisgCisteGZBcHBX aW5kb3cqIHhmX3JhaWxfZ2V0X3dpbmRvd0Zyb20oeGZDb250ZXh0KiB4ZmMsIFVJTlQ2NCBpZCwg Y29uc3QgY2hhciogZmlsZSwgY29uc3QgY2hhciogZmt0LAorK3hmQXBwV2luZG93KiB4Zl9yYWls X2dldF93aW5kb3dGcm9tKHhmQ29udGV4dCogeGZjLCBVSU5UNjQgaWQsIEJPT0wgYWxyZWFkeUxv Y2tlZCwgY29uc3QgY2hhciogZmlsZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBjaGFyKiBma3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2l6ZV90IGxpbmUpOworIAorIEJPT0wgeGZfcmFpbF9kZWxfd2luZG93KHhmQ29udGV4dCog eGZjLCBVSU5UNjQgaWQpOworZGlmZiAtLWdpdCBhL2NsaWVudC9YMTEveGZfd2luZG93LmMgYi9j bGllbnQvWDExL3hmX3dpbmRvdy5jCitpbmRleCAwOWI0YTgxLi44ZDA5Y2VkIDEwMDY0NAorLS0t IGEvY2xpZW50L1gxMS94Zl93aW5kb3cuYworKysrIGIvY2xpZW50L1gxMS94Zl93aW5kb3cuYwor QEAgLTEwNzAsOCArMTA3MCw2IEBAIHZvaWQgeGZfVXBkYXRlV2luZG93QXJlYSh4ZkNvbnRleHQq IHhmYywgeGZBcHBXaW5kb3cqIGFwcFdpbmRvdywgaW50IHgsIGludCB5LCBpCisgCWlmIChheSAr IGhlaWdodCA+IGFwcFdpbmRvdy0+d2luZG93T2Zmc2V0WSArIGFwcFdpbmRvdy0+aGVpZ2h0KQor IAkJaGVpZ2h0ID0gKGFwcFdpbmRvdy0+d2luZG93T2Zmc2V0WSArIGFwcFdpbmRvdy0+aGVpZ2h0 IC0gMSkgLSBheTsKKyAKKy0JeGZfbG9ja194MTEoeGZjKTsKKy0KKyAJaWYgKHhmYy0+Y29udGV4 dC5zZXR0aW5ncy0+U29mdHdhcmVHZGkpCisgCXsKKyAJCVhQdXRJbWFnZSh4ZmMtPmRpc3BsYXks IHhmYy0+cHJpbWFyeSwgYXBwV2luZG93LT5nYywgeGZjLT5pbWFnZSwgYXgsIGF5LCBheCwgYXks IHdpZHRoLAorQEAgLTEwODEsNyArMTA3OSw2IEBAIHZvaWQgeGZfVXBkYXRlV2luZG93QXJlYSh4 ZkNvbnRleHQqIHhmYywgeGZBcHBXaW5kb3cqIGFwcFdpbmRvdywgaW50IHgsIGludCB5LCBpCisg CVhDb3B5QXJlYSh4ZmMtPmRpc3BsYXksIHhmYy0+cHJpbWFyeSwgYXBwV2luZG93LT5oYW5kbGUs IGFwcFdpbmRvdy0+Z2MsIGF4LCBheSwgd2lkdGgsIGhlaWdodCwKKyAJICAgICAgICAgIHgsIHkp OworIAlYRmx1c2goeGZjLT5kaXNwbGF5KTsKKy0JeGZfdW5sb2NrX3gxMSh4ZmMpOworIH0KKyAK KyB2b2lkIHhmX0Rlc3Ryb3lXaW5kb3coeGZDb250ZXh0KiB4ZmMsIHhmQXBwV2luZG93KiBhcHBX aW5kb3cpCitAQCAtMTEyMiw4ICsxMTE5LDggQEAgc3RhdGljIHhmQXBwV2luZG93KiBnZXRfd2lu ZG93VW5sb2NrZWQoeGZDb250ZXh0KiB4ZmMsIFVJTlQ2NCBpZCkKKyAJcmV0dXJuIEhhc2hUYWJs ZV9HZXRJdGVtVmFsdWUoeGZjLT5yYWlsV2luZG93cywgJmlkKTsKKyB9CisgCisteGZBcHBXaW5k b3cqIHhmX3JhaWxfZ2V0X3dpbmRvd0Zyb20oeGZDb250ZXh0KiB4ZmMsIFVJTlQ2NCBpZCwgY29u c3QgY2hhciogZmlsZSwgY29uc3QgY2hhciogZmt0LAorLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNpemVfdCBsaW5lKQorK3hmQXBwV2luZG93KiB4Zl9yYWlsX2dldF93aW5k b3dGcm9tKHhmQ29udGV4dCogeGZjLCBVSU5UNjQgaWQsIEJPT0wgYWxyZWFkeUxvY2tlZCwgY29u c3QgY2hhciogZmlsZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBjaGFyKiBma3QsIHNpemVfdCBsaW5lKQorIHsKKyAJaWYgKCF4ZmMpCisgCQlyZXR1cm4gTlVM TDsKK0BAIC0xMTMxLDkgKzExMjgsMTIgQEAgeGZBcHBXaW5kb3cqIHhmX3JhaWxfZ2V0X3dpbmRv d0Zyb20oeGZDb250ZXh0KiB4ZmMsIFVJTlQ2NCBpZCwgY29uc3QgY2hhciogZmlsZSwKKyAJaWYg KCF4ZmMtPnJhaWxXaW5kb3dzKQorIAkJcmV0dXJuIE5VTEw7CisgCistCXhmQXBwV2luZG93c0xv Y2tGcm9tKHhmYywgZmlsZSwgZmt0LCBsaW5lKTsKKysJaWYgKCFhbHJlYWR5TG9ja2VkKQorKwkJ eGZBcHBXaW5kb3dzTG9ja0Zyb20oeGZjLCBmaWxlLCBma3QsIGxpbmUpOworKworIAl4ZkFwcFdp bmRvdyogd2luZG93ID0gZ2V0X3dpbmRvd1VubG9ja2VkKHhmYywgaWQpOworLQlpZiAoIXdpbmRv dykKKysKKysJaWYgKCF3aW5kb3cgJiYgIWFscmVhZHlMb2NrZWQpCisgCQl4ZkFwcFdpbmRvd3NV bmxvY2tGcm9tKHhmYywgZmlsZSwgZmt0LCBsaW5lKTsKKyAKKyAJcmV0dXJuIHdpbmRvdzsKK0BA IC0xMTc2LDYgKzExNzYsNyBAQCB4ZkFwcFdpbmRvdyogeGZfQXBwV2luZG93RnJvbVgxMVdpbmRv d0Zyb20oeGZDb250ZXh0KiB4ZmMsIFdpbmRvdyB3bmQsIGNvbnN0IGNoYQorIHZvaWQgeGZBcHBX aW5kb3dzTG9ja0Zyb20oeGZDb250ZXh0KiB4ZmMsIGNvbnN0IGNoYXIqIGZpbGUsIGNvbnN0IGNo YXIqIGZrdCwgc2l6ZV90IGxpbmUpCisgeworIAlXSU5QUl9BU1NFUlQoeGZjKTsKKysJeGZfbG9j a194MTEoeGZjKTsKKyAJRW50ZXJDcml0aWNhbFNlY3Rpb24oJnhmYy0+cmFpbFdpbmRvd3MtPmxv Y2spOworIH0KKyAKK0BAIC0xMTgzLDQgKzExODQsNSBAQCB2b2lkIHhmQXBwV2luZG93c1VubG9j a0Zyb20oeGZDb250ZXh0KiB4ZmMsIGNvbnN0IGNoYXIqIGZpbGUsIGNvbnN0IGNoYXIqIGZrdCwg cworIHsKKyAJV0lOUFJfQVNTRVJUKHhmYyk7CisgCUxlYXZlQ3JpdGljYWxTZWN0aW9uKCZ4ZmMt PnJhaWxXaW5kb3dzLT5sb2NrKTsKKysJeGZfdW5sb2NrX3gxMSh4ZmMpOworIH0KKy0tIAorMi41 My4wCisKCmRpZmYgLS1naXQgYS9jb2RlYy1jbGVhci1jaGVjay1jbGVhcl9kZWNvbXJlc3MtZ2x5 cGhEYXRhLnBhdGNoIGIvY29kZWMtY2xlYXItY2hlY2stY2xlYXJfZGVjb21yZXNzLWdseXBoRGF0 YS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODI4OTE5Ci0tLSAv ZGV2L251bGwKKysrIGIvY29kZWMtY2xlYXItY2hlY2stY2xlYXJfZGVjb21yZXNzLWdseXBoRGF0 YS5wYXRjaApAQCAtMCwwICsxLDc2IEBACitGcm9tIDNhNGVlM2YwMDIwOTc3MzIwMDY2Yjk5ZGEx NjQ1NmI2MzY0YzEzNjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBPbmRyZWogSG9s eSA8b2hvbHlAcmVkaGF0LmNvbT4KK0RhdGU6IFRodSwgMjIgSmFuIDIwMjYgMTI6NTA6MjIgKzAx MDAKK1N1YmplY3Q6IFtQQVRDSF0gW2NvZGVjLGNsZWFyXSBjaGVjayBjbGVhcl9kZWNvbXJlc3Mg Z2x5cGhEYXRhCisKK0JhY2twb3J0IG9mIGNvbW1pdCAyNDNlY2Y4MDRiYjEyMmU4ZTY0M2E1YzE0 MmFkNWE0OWQ3YWExOWVlLgorCitDby1BdXRob3JlZC1CeTogQ2xhdWRlIDxub3JlcGx5QGFudGhy b3BpYy5jb20+CistLS0KKyBsaWJmcmVlcmRwL2NvZGVjL2NsZWFyLmMgfCA1MCArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDQ5IGluc2Vy dGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xpYmZyZWVyZHAvY29kZWMv Y2xlYXIuYyBiL2xpYmZyZWVyZHAvY29kZWMvY2xlYXIuYworaW5kZXggNGYwYWVhZDEwLi5mY2Fm YjkyMzUgMTAwNjQ0CistLS0gYS9saWJmcmVlcmRwL2NvZGVjL2NsZWFyLmMKKysrKyBiL2xpYmZy ZWVyZHAvY29kZWMvY2xlYXIuYworQEAgLTExNDUsNyArMTE0NSw1NSBAQCBJTlQzMiBjbGVhcl9k ZWNvbXByZXNzKENMRUFSX0NPTlRFWFQqIGNsZWFyLCBjb25zdCBCWVRFKiBwU3JjRGF0YSwgVUlO VDMyIFNyY1NpegorIAorIAlpZiAoZ2x5cGhEYXRhKQorIAl7CistCQlpZiAoIWZyZWVyZHBfaW1h Z2VfY29weShnbHlwaERhdGEsIGNsZWFyLT5mb3JtYXQsIDAsIDAsIDAsIG5XaWR0aCwgbkhlaWdo dCwgcERzdERhdGEsCisrCQl1aW50MzJfdCB3ID0gTUlOKG5XaWR0aCwgbkRzdFdpZHRoKTsKKysJ CWlmIChuWERzdCA+IG5Ec3RXaWR0aCkKKysJCXsKKysJCQlXTG9nX1dBUk4oVEFHLCAiZ2x5cGhE YXRhIGNvcHkgYXJlYSB4IGV4Y2VlZHMgZGVzdGluYXRpb246IHg9JSIgUFJJdTMyICIgPiAlIiBQ Ukl1MzIsCisrCQkJICAgICAgICAgIG5YRHN0LCBuRHN0V2lkdGgpOworKwkJCXcgPSAwOworKwkJ fQorKwkJZWxzZSBpZiAoblhEc3QgKyB3ID4gbkRzdFdpZHRoKQorKwkJeworKwkJCVdMb2dfV0FS TihUQUcsCisrCQkJICAgICAgICAgICJnbHlwaERhdGEgY29weSBhcmVhIHggKyB3aWR0aCBleGNl ZWRzIGRlc3RpbmF0aW9uOiB4PSUiIFBSSXUzMiAiICsgJSIgUFJJdTMyCisrCQkJICAgICAgICAg ICIgPiAlIiBQUkl1MzIsCisrCQkJICAgICAgICAgIG5YRHN0LCB3LCBuRHN0V2lkdGgpOworKwkJ CXcgPSBuRHN0V2lkdGggLSBuWERzdDsKKysJCX0KKysKKysJCWlmICh3ICE9IG5XaWR0aCkKKysJ CXsKKysJCQlXTG9nX1dBUk4oVEFHLAorKwkJCSAgICAgICAgICAiZ2x5cGhEYXRhIGNvcHkgYXJl YSB3aWR0aCB0cnVuY2F0ZWQ6IHJlcXVlc3RlZD0lIiBQUkl1MzIKKysJCQkgICAgICAgICAgIiwg dHJ1bmNhdGVkIHRvICUiIFBSSXUzMiwKKysJCQkgICAgICAgICAgbldpZHRoLCB3KTsKKysJCX0K KysKKysJCXVpbnQzMl90IGggPSBNSU4obkhlaWdodCwgbkRzdEhlaWdodCk7CisrCQlpZiAobllE c3QgPiBuRHN0SGVpZ2h0KQorKwkJeworKwkJCVdMb2dfV0FSTihUQUcsICJnbHlwaERhdGEgY29w eSBhcmVhIHkgZXhjZWVkcyBkZXN0aW5hdGlvbjogeT0lIiBQUkl1MzIgIiA+ICUiIFBSSXUzMiwK KysJCQkgICAgICAgICAgbllEc3QsIG5Ec3RIZWlnaHQpOworKwkJCWggPSAwOworKwkJfQorKwkJ ZWxzZSBpZiAobllEc3QgKyBoID4gbkRzdEhlaWdodCkKKysJCXsKKysJCQlXTG9nX1dBUk4oVEFH LAorKwkJCSAgICAgICAgICAiZ2x5cGhEYXRhIGNvcHkgYXJlYSB5ICsgaGVpZ2h0IGV4Y2VlZHMg ZGVzdGluYXRpb246IHg9JSIgUFJJdTMyICIgKyAlIiBQUkl1MzIKKysJCQkgICAgICAgICAgIiA+ ICUiIFBSSXUzMiwKKysJCQkgICAgICAgICAgbllEc3QsIGgsIG5Ec3RIZWlnaHQpOworKwkJCWgg PSBuRHN0SGVpZ2h0IC0gbllEc3Q7CisrCQl9CisrCisrCQlpZiAoaCAhPSBuSGVpZ2h0KQorKwkJ eworKwkJCVdMb2dfV0FSTihUQUcsCisrCQkJICAgICAgICAgICJnbHlwaERhdGEgY29weSBhcmVh IGhlaWdodCB0cnVuY2F0ZWQ6IHJlcXVlc3RlZD0lIiBQUkl1MzIKKysJCQkgICAgICAgICAgIiwg dHJ1bmNhdGVkIHRvICUiIFBSSXUzMiwKKysJCQkgICAgICAgICAgbkhlaWdodCwgaCk7CisrCQl9 CisrCisrCQlpZiAoIWZyZWVyZHBfaW1hZ2VfY29weShnbHlwaERhdGEsIGNsZWFyLT5mb3JtYXQs IDAsIDAsIDAsIHcsIGgsIHBEc3REYXRhLAorIAkJICAgICAgICAgICAgICAgICAgICAgICAgRHN0 Rm9ybWF0LCBuRHN0U3RlcCwgblhEc3QsIG5ZRHN0LCBwYWxldHRlLCBGUkVFUkRQX0ZMSVBfTk9O RSkpCisgCQkJZ290byBmYWlsOworIAl9CistLSAKKzIuNTIuMAorCgpkaWZmIC0tZ2l0IGEvY29k ZWMtY2xlYXItZml4LWNsZWFyX3Jlc2l6ZV9idWZmZXItY2hlY2tzLnBhdGNoIGIvY29kZWMtY2xl YXItZml4LWNsZWFyX3Jlc2l6ZV9idWZmZXItY2hlY2tzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmU3OWY4MDEKLS0tIC9kZXYvbnVsbAorKysgYi9jb2RlYy1jbGVh ci1maXgtY2xlYXJfcmVzaXplX2J1ZmZlci1jaGVja3MucGF0Y2gKQEAgLTAsMCArMSw2MSBAQAor RnJvbSAwMGE1OTNmOWVkYTY3MjEyNTM5ZTRkY2FjNjhlYTVhNjk5ZWIzZTkzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQorRnJvbTogT25kcmVqIEhvbHkgPG9ob2x5QHJlZGhhdC5jb20+CitEYXRl OiBUaHUsIDIyIEphbiAyMDI2IDEyOjQ4OjM3ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFtjb2Rl YyxjbGVhcl0gZml4IGNsZWFyX3Jlc2l6ZV9idWZmZXIgY2hlY2tzCisKK0JhY2twb3J0IG9mIGNv bW1pdCBjNDM5MTgyN2Q3ZmFjZmM4NzRjYTdmNjFhOTJhZmI4MjIzMmE1NzQ4LgorCitDby1BdXRo b3JlZC1CeTogQ2xhdWRlIDxub3JlcGx5QGFudGhyb3BpYy5jb20+CistLS0KKyBsaWJmcmVlcmRw L2NvZGVjL2NsZWFyLmMgfCAxNyArKysrKysrKystLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA5 IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJmcmVlcmRw L2NvZGVjL2NsZWFyLmMgYi9saWJmcmVlcmRwL2NvZGVjL2NsZWFyLmMKK2luZGV4IGUzOGZhMGRj Zi4uMjk5YWNlZjJlIDEwMDY0NAorLS0tIGEvbGliZnJlZXJkcC9jb2RlYy9jbGVhci5jCisrKysg Yi9saWJmcmVlcmRwL2NvZGVjL2NsZWFyLmMKK0BAIC02Miw3ICs2Miw3IEBAIHN0cnVjdCBfQ0xF QVJfQ09OVEVYVAorIAlOU0NfQ09OVEVYVCogbnNjOworIAlVSU5UMzIgc2VxTnVtYmVyOworIAlC WVRFKiBUZW1wQnVmZmVyOworLQlVSU5UMzIgVGVtcFNpemU7CisrCXNpemVfdCBUZW1wU2l6ZTsK KyAJVUlOVDMyIG5UZW1wU3RlcDsKKyAJVUlOVDMyIFRlbXBGb3JtYXQ7CisgCVVJTlQzMiBmb3Jt YXQ7CitAQCAtMzEzLDI0ICszMTMsMjUgQEAgc3RhdGljIEJPT0wgY2xlYXJfZGVjb21wcmVzc19z dWJjb2RlX3JsZXgod1N0cmVhbSogcywgVUlOVDMyIGJpdG1hcERhdGFCeXRlQ291bnQKKyAKKyBz dGF0aWMgQk9PTCBjbGVhcl9yZXNpemVfYnVmZmVyKENMRUFSX0NPTlRFWFQqIGNsZWFyLCBVSU5U MzIgd2lkdGgsIFVJTlQzMiBoZWlnaHQpCisgeworLQlVSU5UMzIgc2l6ZTsKKy0KKyAJaWYgKCFj bGVhcikKKyAJCXJldHVybiBGQUxTRTsKKyAKKy0Jc2l6ZSA9ICgod2lkdGggKyAxNikgKiAoaGVp Z2h0ICsgMTYpICogR2V0Qnl0ZXNQZXJQaXhlbChjbGVhci0+Zm9ybWF0KSk7CisrCWNvbnN0IFVJ TlQ2NCBzaXplID0gMXVsbCAqICh3aWR0aCArIDE2dWxsKSAqIChoZWlnaHQgKyAxNnVsbCk7Cisr CWNvbnN0IHNpemVfdCBicHAgPSBHZXRCeXRlc1BlclBpeGVsKGNsZWFyLT5mb3JtYXQpOworKwlp ZiAoc2l6ZSA+IFVJTlQzMl9NQVggLyBicHApCisrCQlyZXR1cm4gRkFMU0U7CisgCistCWlmIChz aXplID4gY2xlYXItPlRlbXBTaXplKQorKwlpZiAoc2l6ZSA+IGNsZWFyLT5UZW1wU2l6ZSAvIGJw cCkKKyAJeworLQkJQllURSogdG1wID0gKEJZVEUqKXJlYWxsb2MoY2xlYXItPlRlbXBCdWZmZXIs IHNpemUpOworKwkJQllURSogdG1wID0gKEJZVEUqKXJlYWxsb2MoY2xlYXItPlRlbXBCdWZmZXIs IHNpemUgKiBicHApOworIAorIAkJaWYgKCF0bXApCisgCQl7CistCQkJV0xvZ19FUlIoVEFHLCAi Y2xlYXItPlRlbXBCdWZmZXIgcmVhbGxvYyBmYWlsZWQgZm9yICUiIFBSSXUzMiAiIGJ5dGVzIiwg c2l6ZSk7CisrCQkJV0xvZ19FUlIoVEFHLCAiY2xlYXItPlRlbXBCdWZmZXIgcmVhbGxvYyBmYWls ZWQgZm9yICUiIFBSSXU2NCAiIGJ5dGVzIiwgc2l6ZSk7CisgCQkJcmV0dXJuIEZBTFNFOworIAkJ fQorIAorLQkJY2xlYXItPlRlbXBTaXplID0gc2l6ZTsKKysJCWNsZWFyLT5UZW1wU2l6ZSA9IHNp emUgKiBicHA7CisgCQljbGVhci0+VGVtcEJ1ZmZlciA9IHRtcDsKKyAJfQorIAorLS0gCisyLjUy LjAKKwoKZGlmZiAtLWdpdCBhL2NvZGVjLWNsZWFyLWZpeC1kZXN0aW5hdGlvbi1jaGVja3MucGF0 Y2ggYi9jb2RlYy1jbGVhci1maXgtZGVzdGluYXRpb24tY2hlY2tzLnBhdGNoCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4M2I3NTEKLS0tIC9kZXYvbnVsbAorKysgYi9jb2Rl Yy1jbGVhci1maXgtZGVzdGluYXRpb24tY2hlY2tzLnBhdGNoCkBAIC0wLDAgKzEsNDEgQEAKK0Zy b20gNzE3OGE1NTU0ZDcxNDdhNDdmYjdhODViYmE4YzY4MWY1OWUyYTcxNCBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKK0Zyb206IE9uZHJlaiBIb2x5IDxvaG9seUByZWRoYXQuY29tPgorRGF0ZTog TW9uLCA5IE1hciAyMDI2IDEzOjU1OjI5ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFtjb2RlYyxj bGVhcl0gZml4IGRlc3RpbmF0aW9uIGNoZWNrcworCitCYWNrcG9ydCBvZiBjb21taXQgN2Q4ZmRj ZTJkMGVmMzM3Y2I4NmNiMzdmYzBjNDM2YzkwNWUwNGQ3Ny4KKworTWFkZS13aXRoOiBDdXJzb3IK Ky0tLQorIGxpYmZyZWVyZHAvY29kZWMvY2xlYXIuYyB8IDExICsrKysrKy0tLS0tCisgMSBmaWxl IGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBh L2xpYmZyZWVyZHAvY29kZWMvY2xlYXIuYyBiL2xpYmZyZWVyZHAvY29kZWMvY2xlYXIuYworaW5k ZXggYTk4OWE5YmZmLi40ZGJlNzIzNzYgMTAwNjQ0CistLS0gYS9saWJmcmVlcmRwL2NvZGVjL2Ns ZWFyLmMKKysrKyBiL2xpYmZyZWVyZHAvY29kZWMvY2xlYXIuYworQEAgLTQ5NCwxNSArNDk0LDE2 IEBAIHN0YXRpYyBCT09MIGNsZWFyX2RlY29tcHJlc3Nfc3ViY29kZWNzX2RhdGEoQ0xFQVJfQ09O VEVYVCogY2xlYXIsIHdTdHJlYW0qIHMsCisgCQluWERzdFJlbCA9IG5YRHN0ICsgeFN0YXJ0Owor IAkJbllEc3RSZWwgPSBuWURzdCArIHlTdGFydDsKKyAKKy0JCWlmICh3aWR0aCA+IG5XaWR0aCkK KysJCWlmICgxdWxsICogblhEc3RSZWwgKyB3aWR0aCA+IG5Ec3RXaWR0aCkKKyAJCXsKKy0JCQlX TG9nX0VSUihUQUcsICJ3aWR0aCAlIiBQUkl1MTYgIiA+IG5XaWR0aCAlIiBQUkl1MzIgIiIsIHdp ZHRoLCBuV2lkdGgpOworKwkJCVdMb2dfRVJSKFRBRywgIm5YRHN0UmVsICUiIFBSSXUzMiAiICsg d2lkdGggJSIgUFJJdTE2ICIgPiBuRHN0V2lkdGggJSIgUFJJdTMyICIiLAorKwkJCSAgICAgICAg IG5YRHN0UmVsLCB3aWR0aCwgbkRzdFdpZHRoKTsKKyAJCQlyZXR1cm4gRkFMU0U7CisgCQl9Cist CistCQlpZiAoaGVpZ2h0ID4gbkhlaWdodCkKKysJCWlmICgxdWxsICogbllEc3RSZWwgKyBoZWln aHQgPiBuRHN0SGVpZ2h0KQorIAkJeworLQkJCVdMb2dfRVJSKFRBRywgImhlaWdodCAlIiBQUkl1 MTYgIiA+IG5IZWlnaHQgJSIgUFJJdTMyICIiLCBoZWlnaHQsIG5IZWlnaHQpOworKwkJCVdMb2df RVJSKFRBRywgIm5ZRHN0UmVsICUiIFBSSXUzMiAiICsgaGVpZ2h0ICUiIFBSSXUxNiAiID4gbkRz dEhlaWdodCAlIiBQUkl1MzIgIiIsCisrCQkJICAgICAgICAgbllEc3RSZWwsIGhlaWdodCwgbkRz dEhlaWdodCk7CisgCQkJcmV0dXJuIEZBTFNFOworIAkJfQorIAorLS0gCisyLjUzLjAKKwoKZGlm ZiAtLWdpdCBhL2NvZGVjLWNsZWFyLWZpeC1vZmYtYnktb25lLWxlbmd0aC1jaGVjay5wYXRjaCBi L2NvZGVjLWNsZWFyLWZpeC1vZmYtYnktb25lLWxlbmd0aC1jaGVjay5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzAwYzFkCi0tLSAvZGV2L251bGwKKysrIGIvY29k ZWMtY2xlYXItZml4LW9mZi1ieS1vbmUtbGVuZ3RoLWNoZWNrLnBhdGNoCkBAIC0wLDAgKzEsMzUg QEAKK0Zyb20gNWIwM2RiMzkyNmJkN2JjMWJmNTgxOWRlMDY4ZWQ3MWE3M2IyNTIzNiBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE9uZHJlaiBIb2x5IDxvaG9seUByZWRoYXQuY29tPgor RGF0ZTogVGh1LCAyMiBKYW4gMjAyNiAxMjo0OToyOCArMDEwMAorU3ViamVjdDogW1BBVENIXSBb Y29kZWMsY2xlYXJdIGZpeCBvZmYgYnkgb25lIGxlbmd0aCBjaGVjaworCitCYWNrcG9ydCBvZiBj b21taXQgZjg2ODhiNTdmNmNmYWQ5YTBiMDU0NzVhNmFmYmRlMzU1ZmZhYjcyMC4KKworQ28tQXV0 aG9yZWQtQnk6IENsYXVkZSA8bm9yZXBseUBhbnRocm9waWMuY29tPgorLS0tCisgbGliZnJlZXJk cC9jb2RlYy9jbGVhci5jIHwgNSArKysrLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMo KyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xpYmZyZWVyZHAvY29kZWMvY2xlYXIu YyBiL2xpYmZyZWVyZHAvY29kZWMvY2xlYXIuYworaW5kZXggMDlmNWRhZDZkLi40ZjBhZWFkMTAg MTAwNjQ0CistLS0gYS9saWJmcmVlcmRwL2NvZGVjL2NsZWFyLmMKKysrKyBiL2xpYmZyZWVyZHAv Y29kZWMvY2xlYXIuYworQEAgLTg4MSwxMSArODgxLDE0IEBAIHN0YXRpYyBCT09MIGNsZWFyX2Rl Y29tcHJlc3NfYmFuZHNfZGF0YShDTEVBUl9DT05URVhUKiBjbGVhciwgd1N0cmVhbSogcywgVUlO VDMyCisgCQkJCWlmIChjb3VudCA+IG5IZWlnaHQpCisgCQkJCQljb3VudCA9IG5IZWlnaHQ7Cisg CistCQkJCWlmIChuWERzdFJlbCArIGkgPiBuRHN0V2lkdGgpCisrCQkJCWlmIChuWERzdFJlbCAr IGkgPj0gbkRzdFdpZHRoKQorIAkJCQkJcmV0dXJuIEZBTFNFOworIAorIAkJCQlmb3IgKFVJTlQz MiB5ID0gMDsgeSA8IGNvdW50OyB5KyspCisgCQkJCXsKKysJCQkJCWlmIChuWURzdFJlbCArIHkg Pj0gbkRzdEhlaWdodCkKKysJCQkJCQlyZXR1cm4gRkFMU0U7CisrCisgCQkJCQlCWVRFKiBwRHN0 UGl4ZWw4ID0gJnBEc3REYXRhWygobllEc3RSZWwgKyB5KSAqIG5Ec3RTdGVwKSArCisgCQkJCQkg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoblhEc3RSZWwgKyBpKSAqIEdldEJ5dGVzUGVy UGl4ZWwoRHN0Rm9ybWF0KSldOworIAkJCQkJVUlOVDMyIGNvbG9yID0gUmVhZENvbG9yKGNwU3Jj UGl4ZWwsIGNsZWFyLT5mb3JtYXQpOworLS0gCisyLjUyLjAKKwoKZGlmZiAtLWdpdCBhL2NvZGVj LWNsZWFyLXVwZGF0ZS1DTEVBUl9WQkFSX0VOVFJZLXNpemUtYWZ0ZXItYWxsb2MucGF0Y2ggYi9j b2RlYy1jbGVhci11cGRhdGUtQ0xFQVJfVkJBUl9FTlRSWS1zaXplLWFmdGVyLWFsbG9jLnBhdGNo Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmZmU4NGEKLS0tIC9kZXYvbnVs bAorKysgYi9jb2RlYy1jbGVhci11cGRhdGUtQ0xFQVJfVkJBUl9FTlRSWS1zaXplLWFmdGVyLWFs bG9jLnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK0Zyb20gYTJkZGU2ZDk4MzJjYjAzMmU4Y2YxMmNh YjNkYTg0ZGFmYmFiOTAwNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE9uZHJlaiBI b2x5IDxvaG9seUByZWRoYXQuY29tPgorRGF0ZTogRnJpLCAxMCBBcHIgMjAyNiAxMTozMjowOSAr MDIwMAorU3ViamVjdDogW1BBVENIXSBbY29kZWMsY2xlYXJdIHVwZGF0ZSBDTEVBUl9WQkFSX0VO VFJZOjpzaXplIGFmdGVyIGFsbG9jCisKK0JhY2twb3J0IG9mIGNvbW1pdCBhMmRkZTZkOTgzMmNi MDMyZThjZjEyY2FiM2RhODRkYWZiYWI5MDA2LgorCitNYWRlLXdpdGg6IEN1cnNvcgorLS0tCisg bGliZnJlZXJkcC9jb2RlYy9jbGVhci5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2Vy dGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliZnJlZXJkcC9jb2RlYy9j bGVhci5jIGIvbGliZnJlZXJkcC9jb2RlYy9jbGVhci5jCitpbmRleCBlMzhmYTBkLi5lZGEzMGFk IDEwMDY0NAorLS0tIGEvbGliZnJlZXJkcC9jb2RlYy9jbGVhci5jCisrKysgYi9saWJmcmVlcmRw L2NvZGVjL2NsZWFyLmMKK0BAIC01NjUsNyArNTY1LDYgQEAgc3RhdGljIEJPT0wgcmVzaXplX3Zi YXJfZW50cnkoQ0xFQVJfQ09OVEVYVCogY2xlYXIsIENMRUFSX1ZCQVJfRU5UUlkqIHZCYXJFbnRy eSkKKyAJCWNvbnN0IFVJTlQzMiBvbGRQb3MgPSB2QmFyRW50cnktPnNpemUgKiBicHA7CisgCQlj b25zdCBVSU5UMzIgZGlmZlNpemUgPSAodkJhckVudHJ5LT5jb3VudCAtIHZCYXJFbnRyeS0+c2l6 ZSkgKiBicHA7CisgCQlCWVRFKiB0bXA7CistCQl2QmFyRW50cnktPnNpemUgPSB2QmFyRW50cnkt PmNvdW50OworIAkJdG1wID0gKEJZVEUqKXJlYWxsb2ModkJhckVudHJ5LT5waXhlbHMsIDF1bGwg KiB2QmFyRW50cnktPmNvdW50ICogYnBwKTsKKyAKKyAJCWlmICghdG1wKQorQEAgLTU3Niw2ICs1 NzUsNyBAQCBzdGF0aWMgQk9PTCByZXNpemVfdmJhcl9lbnRyeShDTEVBUl9DT05URVhUKiBjbGVh ciwgQ0xFQVJfVkJBUl9FTlRSWSogdkJhckVudHJ5KQorIAorIAkJbWVtc2V0KCZ0bXBbb2xkUG9z XSwgMCwgZGlmZlNpemUpOworIAkJdkJhckVudHJ5LT5waXhlbHMgPSB0bXA7CisrCQl2QmFyRW50 cnktPnNpemUgPSB2QmFyRW50cnktPmNvdW50OworIAl9CisgCisgCWlmICghdkJhckVudHJ5LT5w aXhlbHMgJiYgdkJhckVudHJ5LT5zaXplKQorLS0gCisyLjQ5LjAKKwoKZGlmZiAtLWdpdCBhL2Nv ZGVjLWNsZWFyLXVwZGF0ZS1jbGVhcl9nbHlwaF9lbnRyeS1jb3VudC1hZnRlci1hbGxvYy5wYXRj aCBiL2NvZGVjLWNsZWFyLXVwZGF0ZS1jbGVhcl9nbHlwaF9lbnRyeS1jb3VudC1hZnRlci1hbGxv Yy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYmU0YzZlCi0tLSAv ZGV2L251bGwKKysrIGIvY29kZWMtY2xlYXItdXBkYXRlLWNsZWFyX2dseXBoX2VudHJ5LWNvdW50 LWFmdGVyLWFsbG9jLnBhdGNoCkBAIC0wLDAgKzEsNTcgQEAKK0Zyb20gOTQ3ZmVlYWRmZGRmMDFk MzBkZGE1YWExNmViYzMzNWJmY2MyM2FlMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206 IE9uZHJlaiBIb2x5IDxvaG9seUByZWRoYXQuY29tPgorRGF0ZTogVHVlLCAyOSBBcHIgMjAyNiAx Mzo0MjowMCArMDAwMAorU3ViamVjdDogW1BBVENIXSBbY29kZWMsY2xlYXJdIFVwZGF0ZSBDTEVB Ul9HTFlQSF9FTlRSWTo6Y291bnQgYWZ0ZXIgYWxsb2MKKworQmFja3BvcnQgb2YgY29tbWl0IGM0 OWQxYWQ0M2I4YzdiMzI3OTRkMDI1MGYyNjIzYzJkY2NkN2VmMjUuCisKK0FkYXB0ZWQgZm9yIDIu MTEuNzogdXNlcyBHZXRCeXRlc1BlclBpeGVsIGluc3RlYWQgb2YgRnJlZVJEUEdldEJ5dGVzUGVy UGl4ZWwsCitwbGFpbiByZWFsbG9jIGluc3RlYWQgb2Ygd2lucHJfYWxpZ25lZF9yZWNhbGxvYzsg b3ZlcmZsb3cgY2hlY2tzIG1hdGNoIHVwc3RyZWFtCisoc2l6ZV90IGNvdW50LCBobGltaXQgLyBl eGNlZWRlZCBsb2dnaW5nKTsgZ2x5cGhFbnRyeS0+Y291bnQgc2V0IHZpYSAoVUlOVDMyKWNhc3QK K2FmdGVyIHN1Y2Nlc3NmdWwgcmVhbGxvYy4KKworTWFkZS13aXRoOiBDdXJzb3IKKy0tLQorIGxp YmZyZWVyZHAvY29kZWMvY2xlYXIuYyB8IDIyICsrKysrKysrKysrKysrKysrLS0tLS0KKyAxIGZp bGUgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdp dCBhL2xpYmZyZWVyZHAvY29kZWMvY2xlYXIuYyBiL2xpYmZyZWVyZHAvY29kZWMvY2xlYXIuYwor LS0tIGEvbGliZnJlZXJkcC9jb2RlYy9jbGVhci5jCisrKysgYi9saWJmcmVlcmRwL2NvZGVjL2Ns ZWFyLmMKK0BAIC05NzksMjAgKzk3OSwzMSBAQAorIAl7CisgCQljb25zdCBVSU5UMzIgYnBwID0g R2V0Qnl0ZXNQZXJQaXhlbChjbGVhci0+Zm9ybWF0KTsKKyAJCUNMRUFSX0dMWVBIX0VOVFJZKiBn bHlwaEVudHJ5ID0gJihjbGVhci0+R2x5cGhDYWNoZVtnbHlwaEluZGV4XSk7CistCQlnbHlwaEVu dHJ5LT5jb3VudCA9IG5XaWR0aCAqIG5IZWlnaHQ7CisrCQljb25zdCBzaXplX3QgY291bnQgPSAx dWxsICogbldpZHRoICogbkhlaWdodDsKKysJCWNvbnN0IHNpemVfdCBobGltaXQgPSBTSVpFX01B WCAvICgobldpZHRoID4gMCkgPyBuV2lkdGggOiAxKTsKKysJCWlmICgobldpZHRoID09IDApIHx8 IChuSGVpZ2h0ID09IDApIHx8IChobGltaXQgPCBuSGVpZ2h0KSkKKysJCXsKKysJCQljb25zdCBj aGFyKiBleGNlZWRlZCA9IChobGltaXQgPCBuSGVpZ2h0KSA/ICJ3aXRoaW4iIDogIm91dHNpZGUi OworKwkJCVdMb2dfRVJSKFRBRywKKysJCQkgICAgICAgICAiQ0xFQVJDT0RFQ19GTEFHX0dMWVBI X0lOREVYOiBuV2lkdGg9JSIgUFJJdTMyICIsIG5IZWlnaHQ9JSIgUFJJdTMyCisrCQkJICAgICAg ICAgIiwgbldpZHRoICogbkhlaWdodCBpcyAlcyBhbGxvd2VkIHJhbmdlIiwKKysJCQkgICAgICAg ICBuV2lkdGgsIG5IZWlnaHQsIGV4Y2VlZGVkKTsKKysJCQlyZXR1cm4gRkFMU0U7CisrCQl9Cisg CistCQlpZiAoZ2x5cGhFbnRyeS0+Y291bnQgPiBnbHlwaEVudHJ5LT5zaXplKQorKwkJaWYgKGNv dW50ID4gZ2x5cGhFbnRyeS0+c2l6ZSkKKyAJCXsKKyAJCQlCWVRFKiB0bXA7CistCQkJdG1wID0g cmVhbGxvYyhnbHlwaEVudHJ5LT5waXhlbHMsIDF1bGwgKiBnbHlwaEVudHJ5LT5jb3VudCAqIGJw cCk7CisrCQkJdG1wID0gcmVhbGxvYyhnbHlwaEVudHJ5LT5waXhlbHMsIDF1bGwgKiBjb3VudCAq IGJwcCk7CisgCisgCQkJaWYgKCF0bXApCisgCQkJeworLQkJCQlXTG9nX0VSUihUQUcsICJnbHlw aEVudHJ5LT5waXhlbHMgcmVhbGxvYyAlIiBQUkl1MzIgIiBmYWlsZWQhIiwKKy0JCQkJICAgICAg ICAgZ2x5cGhFbnRyeS0+Y291bnQgKiBicHApOworKwkJCQlXTG9nX0VSUihUQUcsICJnbHlwaEVu dHJ5LT5waXhlbHMgcmVhbGxvYyAlIiBQUkl1eiAiIGZhaWxlZCEiLAorKwkJCQkgICAgICAgICBj b3VudCAqIGJwcCk7CisgCQkJCXJldHVybiBGQUxTRTsKKyAJCQl9CisgCisrCQkJZ2x5cGhFbnRy eS0+Y291bnQgPSAoVUlOVDMyKWNvdW50OworIAkJCWdseXBoRW50cnktPnNpemUgPSBnbHlwaEVu dHJ5LT5jb3VudDsKKyAJCQlnbHlwaEVudHJ5LT5waXhlbHMgPSAoVUlOVDMyKil0bXA7CisgCQl9 CgpkaWZmIC0tZ2l0IGEvY29kZWMtY29sb3ItYWRkLWZyZWVyZHBfZ2x5cGhfY29udmVydF9leC5w YXRjaCBiL2NvZGVjLWNvbG9yLWFkZC1mcmVlcmRwX2dseXBoX2NvbnZlcnRfZXgucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk3ZjEyNgotLS0gL2Rldi9udWxsCisr KyBiL2NvZGVjLWNvbG9yLWFkZC1mcmVlcmRwX2dseXBoX2NvbnZlcnRfZXgucGF0Y2gKQEAgLTAs MCArMSwxMTQgQEAKK0Zyb20gYjU0MDAzYWQyZGNiNjliM2M3ODM2YWUxNDQ1YzQ4YWY4YjM5Y2Q0 YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE9uZHJlaiBIb2x5IDxvaG9seUByZWRo YXQuY29tPgorRGF0ZTogU2F0LCAyOCBNYXIgMjAyNiAxMjoxMzowNCArMDEwMAorU3ViamVjdDog W1BBVENIXSBbY29kZWMsY29sb3JdIGFkZCBmcmVlcmRwX2dseXBoX2NvbnZlcnRfZXgKKworQmFj a3BvcnQgb2YgY29tbWl0IDNiYzFlZWI0ZjYzY2VlYzlhNjk2YWYxOTRlNGMxZWEwZTY3ZmY2MGMu CisKK01hZGUtd2l0aDogQ3Vyc29yCistLS0KKyBsaWJmcmVlcmRwL2NvZGVjL2NvbG9yLmMgIHwg MTIgKysrKysrKysrLS0KKyBsaWJmcmVlcmRwL2dkaS9ncmFwaGljcy5jIHwgNDUgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCA1NSBpbnNl cnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliZnJlZXJkcC9jb2Rl Yy9jb2xvci5jIGIvbGliZnJlZXJkcC9jb2RlYy9jb2xvci5jCitpbmRleCBmODQ2N2MyOTUuLjRj NzJlZTNlNiAxMDA2NDQKKy0tLSBhL2xpYmZyZWVyZHAvY29kZWMvY29sb3IuYworKysrIGIvbGli ZnJlZXJkcC9jb2RlYy9jb2xvci5jCitAQCAtMjgsNiArMjgsNyBAQAorICNpbmNsdWRlIDxzdGRs aWIuaD4KKyAKKyAjaW5jbHVkZSA8d2lucHIvY3J0Lmg+CisrI2luY2x1ZGUgPHdpbnByL2Fzc2Vy dC5oPgorIAorICNpbmNsdWRlIDxmcmVlcmRwL2xvZy5oPgorICNpbmNsdWRlIDxmcmVlcmRwL2Zy ZWVyZHAuaD4KK0BAIC00OSwxMyArNTAsMjAgQEAgQllURSogZnJlZXJkcF9nbHlwaF9jb252ZXJ0 KFVJTlQzMiB3aWR0aCwgVUlOVDMyIGhlaWdodCwgY29uc3QgQllURSogZGF0YSkKKyAJY29uc3Qg QllURSogc3JjcDsKKyAJQllURSogZHN0cDsKKyAJQllURSogZHN0RGF0YTsKKy0JVUlOVDMyIHNj YW5saW5lOworKwlzaXplX3Qgc2NhbmxpbmU7CisrCisgCS8qCisgCSAqIGNvbnZlcnRzIGEgMS1i aXQtcGVyLXBpeGVsIGdseXBoIHRvIGEgb25lLWJ5dGUtcGVyLXBpeGVsIGdseXBoOgorIAkgKiB0 aGlzIGFwcHJvYWNoIHVzZXMgYSBsaXR0bGUgbW9yZSBtZW1vcnksIGJ1dCBwcm92aWRlcyBmYXN0 ZXIKKyAJICogbWVhbnMgb2YgYWNjZXNzaW5nIGluZGl2aWR1YWwgcGl4ZWxzIGluIGJsaXR0aW5n IG9wZXJhdGlvbnMKKyAJICovCistCXNjYW5saW5lID0gKHdpZHRoICsgNykgLyA4OworKwlzY2Fu bGluZSA9ICh3aWR0aCArIDd1bGwpIC8gOHVsbDsKKysKKysJaWYgKCh3aWR0aCA9PSAwKSB8fCAo aGVpZ2h0ID09IDApKQorKwkJcmV0dXJuIE5VTEw7CisrCisrCVdJTlBSX0FTU0VSVChkYXRhKTsK KysKKyAJZHN0RGF0YSA9IChCWVRFKilfYWxpZ25lZF9tYWxsb2MoMXVsbCAqIHdpZHRoICogaGVp Z2h0LCAxNik7CisgCisgCWlmICghZHN0RGF0YSkKK2RpZmYgLS1naXQgYS9saWJmcmVlcmRwL2dk aS9ncmFwaGljcy5jIGIvbGliZnJlZXJkcC9nZGkvZ3JhcGhpY3MuYworaW5kZXggNDc5ZWFjOWI4 Li5kYWIxNTljNDMgMTAwNjQ0CistLS0gYS9saWJmcmVlcmRwL2dkaS9ncmFwaGljcy5jCisrKysg Yi9saWJmcmVlcmRwL2dkaS9ncmFwaGljcy5jCitAQCAtMjMsNiArMjMsNyBAQAorICNpbmNsdWRl ICJjb25maWcuaCIKKyAjZW5kaWYKKyAKKysjaW5jbHVkZSA8d2lucHIvYXNzZXJ0Lmg+CisgI2lu Y2x1ZGUgPHdpbnByL2NydC5oPgorIAorICNpbmNsdWRlIDxmcmVlcmRwL2xvZy5oPgorQEAgLTIx NSw2ICsyMTYsNTAgQEAgc3RhdGljIEJPT0wgZ2RpX0JpdG1hcF9TZXRTdXJmYWNlKHJkcENvbnRl eHQqIGNvbnRleHQsIHJkcEJpdG1hcCogYml0bWFwLCBCT09MIHAKKyB9CisgCisgLyogR2x5cGgg Q2xhc3MgKi8KKytzdGF0aWMgQllURSogZnJlZXJkcF9nbHlwaF9jb252ZXJ0X2V4KFVJTlQzMiB3 aWR0aCwgVUlOVDMyIGhlaWdodCwgY29uc3QgQllURSogZGF0YSwgc2l6ZV90IGxlbikKKyt7Cisr CS8qCisrCSAqIGNvbnZlcnRzIGEgMS1iaXQtcGVyLXBpeGVsIGdseXBoIHRvIGEgb25lLWJ5dGUt cGVyLXBpeGVsIGdseXBoOgorKwkgKiB0aGlzIGFwcHJvYWNoIHVzZXMgYSBsaXR0bGUgbW9yZSBt ZW1vcnksIGJ1dCBwcm92aWRlcyBmYXN0ZXIKKysJICogbWVhbnMgb2YgYWNjZXNzaW5nIGluZGl2 aWR1YWwgcGl4ZWxzIGluIGJsaXR0aW5nIG9wZXJhdGlvbnMKKysJICovCisrCWNvbnN0IHNpemVf dCBzY2FubGluZSA9ICh3aWR0aCArIDd1bGwpIC8gOHVsbDsKKysJY29uc3Qgc2l6ZV90IHJlcXVp cmVkID0gc2NhbmxpbmUgKiBoZWlnaHQ7CisrCWlmIChsZW4gPCByZXF1aXJlZCkKKysJCXJldHVy biBOVUxMOworKworKwlpZiAoKGxlbiA9PSAwKSB8fCAod2lkdGggPT0gMCkgfHwgKGhlaWdodCA9 PSAwKSkKKysJCXJldHVybiBOVUxMOworKworKwlXSU5QUl9BU1NFUlQoZGF0YSk7CisrCisrCUJZ VEUqIGRzdERhdGEgPSAoQllURSopX2FsaWduZWRfbWFsbG9jKDF1bGwgKiB3aWR0aCAqIGhlaWdo dCwgMTYpOworKworKwlpZiAoIWRzdERhdGEpCisrCQlyZXR1cm4gTlVMTDsKKysKKysJWmVyb01l bW9yeShkc3REYXRhLCAxVUxMICogd2lkdGggKiBoZWlnaHQpOworKwlCWVRFKiBkc3RwID0gZHN0 RGF0YTsKKysKKysJZm9yIChVSU5UMzIgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKysJeworKwkJ Y29uc3QgQllURSogc3JjcCA9ICZkYXRhWzF1bGwgKiB5ICogc2NhbmxpbmVdOworKworKwkJZm9y IChVSU5UMzIgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQorKwkJeworKwkJCWlmICgoKnNyY3AgJiAo MHg4MCA+PiAoeCAlIDgpKSkgIT0gMCkKKysJCQkJKmRzdHAgPSAweEZGOworKworKwkJCWRzdHAr KzsKKysKKysJCQlpZiAoKCh4ICsgMSkgJSA4ID09IDApICYmIHggIT0gMCkKKysJCQkJc3JjcCsr OworKwkJfQorKwl9CisrCisrCXJldHVybiBkc3REYXRhOworK30KKysKKyBzdGF0aWMgQk9PTCBn ZGlfR2x5cGhfTmV3KHJkcENvbnRleHQqIGNvbnRleHQsIGNvbnN0IHJkcEdseXBoKiBnbHlwaCkK KyB7CisgCUJZVEUqIGRhdGE7CistLSAKKzIuNTMuMAorCgpkaWZmIC0tZ2l0IGEvY29kZWMtZHNw LWFkZC1mb3JtYXQtY2hlY2tzLnBhdGNoIGIvY29kZWMtZHNwLWFkZC1mb3JtYXQtY2hlY2tzLnBh dGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhMjM4NzAKLS0tIC9kZXYv bnVsbAorKysgYi9jb2RlYy1kc3AtYWRkLWZvcm1hdC1jaGVja3MucGF0Y2gKQEAgLTAsMCArMSwy MTggQEAKK0Zyb20gNzRmZjhhMDk3YzM2MDY3MTAzMjdlM2FmMjg2M2FhNTJkMmRhYzc5ZSBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE9uZHJlaiBIb2x5IDxvaG9seUByZWRoYXQuY29t PgorRGF0ZTogVHVlLCAyOSBBcHIgMjAyNiAxNToxMDowMCArMDAwMAorU3ViamVjdDogW1BBVENI XSBbY29kZWMsZHNwXSBhZGQgZm9ybWF0IGNoZWNrcworCitCYWNrcG9ydCBvZiBjb21taXQgMDNi NDhiMzYwMWQ4NjdhZmNjYWMxY2RjNjA4MWRlN2EyNzVlZGNlNy4KKworQWRhcHRlZCBmb3IgMi4x MS54OiB1c2VzIGBjb250ZXh0LT5mb3JtYXRgIGluc3RlYWQgb2YKK2Bjb250ZXh0LT5jb21tb24u Zm9ybWF0YCwgbm8gYFdJTlBSX1JFU1RSSUNUYCwgYWRkZWQKK2AjaW5jbHVkZSA8d2lucHIvYXNz ZXJ0Lmg+YC4gS2VwdCBDODkgZGVjbGFyYXRpb24gc3R5bGUgaW4KK2BmcmVlcmRwX2RzcF9kZWNv ZGVfbXAzYCBhbmQgYGZyZWVyZHBfZHNwX2VuY29kZV9tcDNgLiBPbWl0dGVkCitMQU1FL21wMyB2 YXJpYWJsZSBtb2Rlcm5pemF0aW9uLiBEVklfQURQQ00gYmxvY2sgaW4KK2BmcmVlcmRwX2RzcF9j b250ZXh0X3Jlc2V0YCBvbWl0cyBGcmFtZXNQZXJQYWNrZXQgc2l6aW5nIGZyb20gdXBzdHJlYW0g My54CitidXQgYWRkcyBgU3RyZWFtX1NldFBvc2l0aW9uKGNvbnRleHQtPmJ1ZmZlciwgMClgIGFm dGVyIHZhbGlkYXRpb24gKHNhbWUKK2ludGVudCBhcyB1cHN0cmVhbSBgU3RyZWFtX1Jlc2V0UG9z aXRpb25gKS4gYGZyZWVyZHBfZHNwX2RlY29kZV9pbWFfYWRwY21gCittYXRjaGVzIHVwc3RyZWFt IG9yZGVyOiB2YWxpZGF0ZSBmb3JtYXQgYmVmb3JlIGxvY2FsczsgYG91dF9zaXplYCB1c2VzCitg c2l6ZSAqIDR1bGxgLiBgU3RyZWFtX0J1ZmZlckFzYCByZXBsYWNlZCB3aXRoCitgU3RyZWFtX0J1 ZmZlcmAgY2FzdC4gYG51bGxwdHJgIHJlcGxhY2VkIHdpdGggYE5VTExgLgorCitNYWRlLXdpdGg6 IEN1cnNvcgorLS0tCisgbGliZnJlZXJkcC9jb2RlYy9kc3AuYyB8IDk2ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyAxIGZpbGUgY2hh bmdlZCwgOTMgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xp YmZyZWVyZHAvY29kZWMvZHNwLmMgYi9saWJmcmVlcmRwL2NvZGVjL2RzcC5jCitpbmRleCBhMThk MDQ0Li5lNzk5MTFkIDEwMDY0NAorLS0tIGEvbGliZnJlZXJkcC9jb2RlYy9kc3AuYworKysrIGIv bGliZnJlZXJkcC9jb2RlYy9kc3AuYworQEAgLTI3LDYgKzI3LDcgQEAKKyAjaW5jbHVkZSA8c3Ry aW5nLmg+CisgCisgI2luY2x1ZGUgPHdpbnByL2NydC5oPgorKyNpbmNsdWRlIDx3aW5wci9hc3Nl cnQuaD4KKyAKKyAjaW5jbHVkZSA8ZnJlZXJkcC90eXBlcy5oPgorICNpbmNsdWRlIDxmcmVlcmRw L2xvZy5oPgorQEAgLTMyOSwxMyArMzMwLDMwIEBACisgCXJldHVybiAoVUlOVDE2KWQ7CisgfQor IAorK3N0YXRpYyBCT09MIHZhbGlkX2ltYV9hZHBjbV9mb3JtYXQoY29uc3QgRlJFRVJEUF9EU1Bf Q09OVEVYVCogY29udGV4dCkKKyt7CisrCVdJTlBSX0FTU0VSVChjb250ZXh0KTsKKysJaWYgKGNv bnRleHQtPmZvcm1hdC53Rm9ybWF0VGFnICE9IFdBVkVfRk9STUFUX0RWSV9BRFBDTSkKKysJCXJl dHVybiBGQUxTRTsKKysJaWYgKGNvbnRleHQtPmZvcm1hdC5uQmxvY2tBbGlnbiA8PSA0VUxMKQor KwkJcmV0dXJuIEZBTFNFOworKwlpZiAoY29udGV4dC0+Zm9ybWF0Lm5DaGFubmVscyA8IDEpCisr CQlyZXR1cm4gRkFMU0U7CisrCWlmIChjb250ZXh0LT5mb3JtYXQud0JpdHNQZXJTYW1wbGUgPT0g MCkKKysJCXJldHVybiBGQUxTRTsKKysJcmV0dXJuIFRSVUU7CisrfQorKworIHN0YXRpYyBCT09M IGZyZWVyZHBfZHNwX2RlY29kZV9pbWFfYWRwY20oRlJFRVJEUF9EU1BfQ09OVEVYVCogY29udGV4 dCwgY29uc3QgQllURSogc3JjLCBzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHdTdHJlYW0qIG91dCkKKyB7CisrCWlmICghdmFsaWRfaW1hX2Fk cGNtX2Zvcm1hdChjb250ZXh0KSkKKysJCXJldHVybiBGQUxTRTsKKysKKyAJQllURSogZHN0Owor IAlCWVRFIHNhbXBsZTsKKyAJVUlOVDE2IGRlY29kZWQ7CistCXNpemVfdCBvdXRfc2l6ZSA9IHNp emUgKiA0OworKwlzaXplX3Qgb3V0X3NpemUgPSBzaXplICogNHVsbDsKKyAJVUlOVDMyIGNoYW5u ZWw7CisgCWNvbnN0IFVJTlQzMiBibG9ja19zaXplID0gY29udGV4dC0+Zm9ybWF0Lm5CbG9ja0Fs aWduOworIAljb25zdCBVSU5UMzIgY2hhbm5lbHMgPSBjb250ZXh0LT5mb3JtYXQubkNoYW5uZWxz OworQEAgLTQ2NCw2ICs0ODIsMjAgQEAKKyAjZW5kaWYKKyAKKyAjaWYgZGVmaW5lZChXSVRIX0xB TUUpCisrc3RhdGljIEJPT0wgdmFsaWRfbXAzX2Zvcm1hdChjb25zdCBGUkVFUkRQX0RTUF9DT05U RVhUKiBjb250ZXh0KQorK3sKKysJV0lOUFJfQVNTRVJUKGNvbnRleHQpOworKwlpZiAoY29udGV4 dC0+Zm9ybWF0LndGb3JtYXRUYWcgIT0gV0FWRV9GT1JNQVRfTVBFR0xBWUVSMykKKysJCXJldHVy biBGQUxTRTsKKysJaWYgKGNvbnRleHQtPmZvcm1hdC5uQ2hhbm5lbHMgPCAxKQorKwkJcmV0dXJu IEZBTFNFOworKwlpZiAoY29udGV4dC0+Zm9ybWF0LndCaXRzUGVyU2FtcGxlID09IDApCisrCQly ZXR1cm4gRkFMU0U7CisrCWlmIChjb250ZXh0LT5mb3JtYXQublNhbXBsZXNQZXJTZWMgPT0gMCkK KysJCXJldHVybiBGQUxTRTsKKysJcmV0dXJuIFRSVUU7CisrfQorKworIHN0YXRpYyBCT09MIGZy ZWVyZHBfZHNwX2RlY29kZV9tcDMoRlJFRVJEUF9EU1BfQ09OVEVYVCogY29udGV4dCwgY29uc3Qg QllURSogc3JjLCBzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHdTdHJlYW0qIG91dCkKKyB7CitAQCAtNDc0LDYgKzUwNiw4IEBACisgCisgCWlmICghY29u dGV4dCB8fCAhc3JjIHx8ICFvdXQpCisgCQlyZXR1cm4gRkFMU0U7CisrCWlmICghdmFsaWRfbXAz X2Zvcm1hdChjb250ZXh0KSkKKysJCXJldHVybiBGQUxTRTsKKyAKKyAJYnVmZmVyX3NpemUgPSAy ICogY29udGV4dC0+Zm9ybWF0Lm5DaGFubmVscyAqIGNvbnRleHQtPmZvcm1hdC5uU2FtcGxlc1Bl clNlYzsKKyAKK0BAIC01MDksNiArNTQzLDkgQEAKKyAJaWYgKCFjb250ZXh0IHx8ICFzcmMgfHwg IW91dCkKKyAJCXJldHVybiBGQUxTRTsKKyAKKysJaWYgKCF2YWxpZF9tcDNfZm9ybWF0KGNvbnRl eHQpKQorKwkJcmV0dXJuIEZBTFNFOworKworIAlzYW1wbGVzX3Blcl9jaGFubmVsID0gc2l6ZSAv IGNvbnRleHQtPmZvcm1hdC5uQ2hhbm5lbHMgLyBjb250ZXh0LT5mb3JtYXQud0JpdHNQZXJTYW1w bGUgLyA4OworIAorIAkvKiBFbnN1cmUgd29yc3QgY2FzZSBidWZmZXIgc2l6ZSBmb3IgbXAzIHN0 cmVhbSB0YWtlbiBmcm9tIExBTUUgaGVhZGVyICovCitAQCAtNzE2LDYgKzc1MywxMCBAQAorIAlC WVRFIGVuY29kZWQ7CisgCXNpemVfdCBvdXRfc2l6ZTsKKyAJc2l6ZV90IGFsaWduOworKworKwlp ZiAoIXZhbGlkX2ltYV9hZHBjbV9mb3JtYXQoY29udGV4dCkpCisrCQlyZXR1cm4gRkFMU0U7Cisr CisgCW91dF9zaXplID0gc2l6ZSAvIDI7CisgCisgCWlmICghU3RyZWFtX0Vuc3VyZVJlbWFpbmlu Z0NhcGFjaXR5KG91dCwgc2l6ZSkpCitAQCAtNzg4LDYgKzgyOSwyMCBAQAorIAorIHN0YXRpYyBj b25zdCBJTlQzMiBtc19hZHBjbV9jb2VmZnMyWzddID0geyAwLCAtMjU2LCAwLCA2NCwgMCwgLTIw OCwgLTIzMiB9OworIAorK3N0YXRpYyBCT09MIHZhbGlkX21zX2FkcGNtX2Zvcm1hdChjb25zdCBG UkVFUkRQX0RTUF9DT05URVhUKiBjb250ZXh0KQorK3sKKysJV0lOUFJfQVNTRVJUKGNvbnRleHQp OworKwlpZiAoY29udGV4dC0+Zm9ybWF0LndGb3JtYXRUYWcgIT0gV0FWRV9GT1JNQVRfQURQQ00p CisrCQlyZXR1cm4gRkFMU0U7CisrCWlmIChjb250ZXh0LT5mb3JtYXQubkJsb2NrQWxpZ24gPD0g NFVMTCkKKysJCXJldHVybiBGQUxTRTsKKysJaWYgKGNvbnRleHQtPmZvcm1hdC5uQ2hhbm5lbHMg PCAxKQorKwkJcmV0dXJuIEZBTFNFOworKwlpZiAoY29udGV4dC0+Zm9ybWF0LndCaXRzUGVyU2Ft cGxlID09IDApCisrCQlyZXR1cm4gRkFMU0U7CisrCXJldHVybiBUUlVFOworK30KKysKKyBzdGF0 aWMgSU5MSU5FIElOVDE2IGZyZWVyZHBfZHNwX2RlY29kZV9tc19hZHBjbV9zYW1wbGUoQURQQ00q IGFkcGNtLCBCWVRFIHNhbXBsZSwgaW50IGNoYW5uZWwpCisgeworIAlJTlQ4IG5pYmJsZTsKK0BA IC04MTksNiArODc0LDkgQEAKKyAJQllURSogZHN0OworIAlCWVRFIHNhbXBsZTsKKyAJY29uc3Qg c2l6ZV90IG91dF9zaXplID0gc2l6ZSAqIDQ7CisrCisrCWlmICghdmFsaWRfbXNfYWRwY21fZm9y bWF0KGNvbnRleHQpKQorKwkJcmV0dXJuIEZBTFNFOworIAljb25zdCBVSU5UMzIgY2hhbm5lbHMg PSBjb250ZXh0LT5mb3JtYXQubkNoYW5uZWxzOworIAljb25zdCBVSU5UMzIgYmxvY2tfc2l6ZSA9 IGNvbnRleHQtPmZvcm1hdC5uQmxvY2tBbGlnbjsKKyAKK0BAIC05NDcsNiArMTAwNSwxMCBAQAor IAlJTlQzMiBzYW1wbGU7CisgCXNpemVfdCBvdXRfc2l6ZTsKKyAJY29uc3Qgc2l6ZV90IHN0ZXAg PSA4ICsgKChjb250ZXh0LT5mb3JtYXQubkNoYW5uZWxzID4gMSkgPyA0IDogMCk7CisrCisrCWlm ICghdmFsaWRfbXNfYWRwY21fZm9ybWF0KGNvbnRleHQpKQorKwkJcmV0dXJuIEZBTFNFOworKwor IAlvdXRfc2l6ZSA9IHNpemUgLyAyOworIAorIAlpZiAoIVN0cmVhbV9FbnN1cmVSZW1haW5pbmdD YXBhY2l0eShvdXQsIHNpemUpKQorQEAgLTEzMDgsNiArMTM3MCwyOCBAQAorIAkJcmV0dXJuIEZB TFNFOworIAorIAljb250ZXh0LT5mb3JtYXQgPSAqdGFyZ2V0Rm9ybWF0OworKworKwlzd2l0Y2gg KGNvbnRleHQtPmZvcm1hdC53Rm9ybWF0VGFnKQorKwl7CisrI2lmIGRlZmluZWQoV0lUSF9MQU1F KQorKwkJY2FzZSBXQVZFX0ZPUk1BVF9NUEVHTEFZRVIzOgorKwkJCWlmICghdmFsaWRfbXAzX2Zv cm1hdChjb250ZXh0KSkKKysJCQkJcmV0dXJuIEZBTFNFOworKwkJCWJyZWFrOworKyNlbmRpZgor KwkJY2FzZSBXQVZFX0ZPUk1BVF9BRFBDTToKKysJCQlpZiAoIXZhbGlkX21zX2FkcGNtX2Zvcm1h dChjb250ZXh0KSkKKysJCQkJcmV0dXJuIEZBTFNFOworKwkJCWJyZWFrOworKwkJY2FzZSBXQVZF X0ZPUk1BVF9EVklfQURQQ006CisrCQkJaWYgKCF2YWxpZF9pbWFfYWRwY21fZm9ybWF0KGNvbnRl eHQpKQorKwkJCQlyZXR1cm4gRkFMU0U7CisrCQkJU3RyZWFtX1NldFBvc2l0aW9uKGNvbnRleHQt PmJ1ZmZlciwgMCk7CisrCQkJYnJlYWs7CisrCQlkZWZhdWx0OgorKwkJCWJyZWFrOworKwl9Cisr CisgI2lmIGRlZmluZWQoV0lUSF9GQUFEMikKKyAJY29udGV4dC0+ZmFhZFNldHVwID0gRkFMU0U7 CisgI2VuZGlmCitAQCAtMTMyOCwxOSArMTQxMiwyNCBAQAorIAorIAkJY2ZnID0gZmFhY0VuY0dl dEN1cnJlbnRDb25maWd1cmF0aW9uKGNvbnRleHQtPmZhYWMpOworIAkJY2ZnLT5iaXRSYXRlID0g MTAwMDA7CistCQlmYWFjRW5jU2V0Q29uZmlndXJhdGlvbihjb250ZXh0LT5mYWFjLCBjZmcpOwor KwkJeworKwkJCWNvbnN0IGludCBmcmMgPSBmYWFjRW5jU2V0Q29uZmlndXJhdGlvbihjb250ZXh0 LT5mYWFjLCBjZmcpOworKwkJCWlmIChmcmMgPD0gMCkKKysJCQkJcmV0dXJuIEZBTFNFOworKwkJ fQorIAl9CisgCisgI2VuZGlmCisgI2lmIGRlZmluZWQoV0lUSF9TT1hSKQorIAl7CisgCQlzb3hy X2lvX3NwZWNfdCBpb3NwZWMgPSBzb3hyX2lvX3NwZWMoU09YUl9JTlQxNiwgU09YUl9JTlQxNik7 CistCQlzb3hyX2Vycm9yX3QgZXJyb3I7CisrCQlzb3hyX2Vycm9yX3QgZXJyb3IgPSBOVUxMOwor KworIAkJc294cl9kZWxldGUoY29udGV4dC0+c294KTsKKyAJCWNvbnRleHQtPnNveCA9IHNveHJf Y3JlYXRlKGNvbnRleHQtPmZvcm1hdC5uU2FtcGxlc1BlclNlYywgdGFyZ2V0Rm9ybWF0LT5uU2Ft cGxlc1BlclNlYywKKyAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldEZvcm1hdC0+ bkNoYW5uZWxzLCAmZXJyb3IsICZpb3NwZWMsIE5VTEwsIE5VTEwpOworIAorLQkJaWYgKCFjb250 ZXh0LT5zb3ggfHwgKGVycm9yICE9IDApKQorKwkJaWYgKCFjb250ZXh0LT5zb3ggfHwgKGVycm9y ICE9IE5VTEwpKQorIAkJCXJldHVybiBGQUxTRTsKKyAJfQorICNlbmRpZgoKZGlmZiAtLWdpdCBh L2NvZGVjLWRzcC1maXgtYXJyYXktYm91bmRzLWNoZWNrcy5wYXRjaCBiL2NvZGVjLWRzcC1maXgt YXJyYXktYm91bmRzLWNoZWNrcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi4wNzU0ZmVjCi0tLSAvZGV2L251bGwKKysrIGIvY29kZWMtZHNwLWZpeC1hcnJheS1ib3Vu ZHMtY2hlY2tzLnBhdGNoCkBAIC0wLDAgKzEsMjM3IEBACitGcm9tIGFhZjMzMzg2MmZiNTRkNGNm YzE5YTE4NjZiNzY1MDBkODY2Nzk3MTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBP bmRyZWogSG9seSA8b2hvbHlAcmVkaGF0LmNvbT4KK0RhdGU6IFR1ZSwgMjggQXByIDIwMjYgMDQ6 NDE6MTUgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gW2NvZGVjLGRzcF0gZml4IGFycmF5IGJvdW5k cyBjaGVja3MKKworQmFja3BvcnQgb2YgY29tbWl0IDE2ZGYyMzAwZTFlM2Y1YTUxZjY4ZmIxNjI2 NDI5ZTU4YjUzMWI3YzguCisKK0FkYXB0ZWQgZm9yIDIuMTEueDogdXNlcyBDODkgZGVjbGFyYXRp b24gc3R5bGUgKHZhcmlhYmxlcyBkZWNsYXJlZAorYXQgdG9wIG9mIHNjb3BlLCBuZXcgdmFyaWFi bGVzIHdyYXBwZWQgaW4gYmxvY2tzKSwgbm8KK2BXSU5QUl9SRVNUUklDVGAsIGtlcHQgYGludCBj aGFubmVsYCBpbiBkZWNvZGUgZnVuY3Rpb24sCitgZHNwX2VuY29kZV9pbWFfYWRwY21fc2FtcGxl YCBrZWVwcyBgaW50IGNoYW5uZWxgLgorCitNYWRlLXdpdGg6IEN1cnNvcgorLS0tCisgbGliZnJl ZXJkcC9jb2RlYy9kc3AuYyB8IDkxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KystLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA4MiBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygt KQorCitkaWZmIC0tZ2l0IGEvbGliZnJlZXJkcC9jb2RlYy9kc3AuYyBiL2xpYmZyZWVyZHAvY29k ZWMvZHNwLmMKK2luZGV4IGU3OTkxMWQuLjZkNGY3ODAgMTAwNjQ0CistLS0gYS9saWJmcmVlcmRw L2NvZGVjL2RzcC5jCisrKysgYi9saWJmcmVlcmRwL2NvZGVjL2RzcC5jCitAQCAtMjk3LDcgKzI5 NywxNiBAQCBzdGF0aWMgVUlOVDE2IGRzcF9kZWNvZGVfaW1hX2FkcGNtX3NhbXBsZShBRFBDTSog YWRwY20sIHVuc2lnbmVkIGludCBjaGFubmVsLCBCWQorIHsKKyAJSU5UMzIgc3M7CisgCUlOVDMy IGQ7CistCXNzID0gaW1hX3N0ZXBfc2l6ZV90YWJsZVthZHBjbS0+aW1hLmxhc3Rfc3RlcFtjaGFu bmVsXV07CisrCUlOVDE2IG9mZnNldDsKKysKKysJV0lOUFJfQVNTRVJUKGNoYW5uZWwgPCBBUlJB WVNJWkUoYWRwY20tPmltYS5sYXN0X3N0ZXApKTsKKysJV0lOUFJfQVNTRVJUKGNoYW5uZWwgPCBB UlJBWVNJWkUoYWRwY20tPmltYS5sYXN0X3NhbXBsZSkpOworKworKwlvZmZzZXQgPSBhZHBjbS0+ aW1hLmxhc3Rfc3RlcFtjaGFubmVsXTsKKysJV0lOUFJfQVNTRVJUKG9mZnNldCA+PSAwKTsKKysJ V0lOUFJfQVNTRVJUKG9mZnNldCA8IEFSUkFZU0laRShpbWFfc3RlcF9zaXplX3RhYmxlKSk7Cisr CisrCXNzID0gaW1hX3N0ZXBfc2l6ZV90YWJsZVtvZmZzZXRdOworIAlkID0gKHNzID4+IDMpOwor IAorIAlpZiAoc2FtcGxlICYgMSkKK0BAIC0zMjAsNiArMzI5LDggQEAgc3RhdGljIFVJTlQxNiBk c3BfZGVjb2RlX2ltYV9hZHBjbV9zYW1wbGUoQURQQ00qIGFkcGNtLCB1bnNpZ25lZCBpbnQgY2hh bm5lbCwgQlkKKyAJCWQgPSAzMjc2NzsKKyAKKyAJYWRwY20tPmltYS5sYXN0X3NhbXBsZVtjaGFu bmVsXSA9IChJTlQxNilkOworKworKwlXSU5QUl9BU1NFUlQoc2FtcGxlIDwgQVJSQVlTSVpFKGlt YV9zdGVwX2luZGV4X3RhYmxlKSk7CisgCWFkcGNtLT5pbWEubGFzdF9zdGVwW2NoYW5uZWxdICs9 IGltYV9zdGVwX2luZGV4X3RhYmxlW3NhbXBsZV07CisgCisgCWlmIChhZHBjbS0+aW1hLmxhc3Rf c3RlcFtjaGFubmVsXSA8IDApCitAQCAtMzY4LDYgKzM3OSw5IEBAIHN0YXRpYyBCT09MIGZyZWVy ZHBfZHNwX2RlY29kZV9pbWFfYWRwY20oRlJFRVJEUF9EU1BfQ09OVEVYVCogY29udGV4dCwgY29u c3QgQllUCisgCXsKKyAJCWlmIChzaXplICUgYmxvY2tfc2l6ZSA9PSAwKQorIAkJeworKwkJCWlm IChzaXplIDwgNCkKKysJCQkJcmV0dXJuIEZBTFNFOworKworIAkJCWNvbnRleHQtPmFkcGNtLmlt YS5sYXN0X3NhbXBsZVswXSA9CisgCQkJICAgIChJTlQxNikoKChVSU5UMTYpKCpzcmMpKSB8ICgo KFVJTlQxNikoKihzcmMgKyAxKSkpIDw8IDgpKTsKKyAJCQljb250ZXh0LT5hZHBjbS5pbWEubGFz dF9zdGVwWzBdID0gKElOVDE2KSgqKHNyYyArIDIpKTsKK0BAIC0zNzcsNiArMzkxLDggQEAgc3Rh dGljIEJPT0wgZnJlZXJkcF9kc3BfZGVjb2RlX2ltYV9hZHBjbShGUkVFUkRQX0RTUF9DT05URVhU KiBjb250ZXh0LCBjb25zdCBCWVQKKyAKKyAJCQlpZiAoY2hhbm5lbHMgPiAxKQorIAkJCXsKKysJ CQkJaWYgKHNpemUgPCA0KQorKwkJCQkJcmV0dXJuIEZBTFNFOworIAkJCQljb250ZXh0LT5hZHBj bS5pbWEubGFzdF9zYW1wbGVbMV0gPQorIAkJCQkgICAgKElOVDE2KSgoKFVJTlQxNikoKnNyYykp IHwgKCgoVUlOVDE2KSgqKHNyYyArIDEpKSkgPDwgOCkpOworIAkJCQljb250ZXh0LT5hZHBjbS5p bWEubGFzdF9zdGVwWzFdID0gKElOVDE2KSgqKHNyYyArIDIpKTsKK0BAIC0zODgsNiArNDA0LDgg QEAgc3RhdGljIEJPT0wgZnJlZXJkcF9kc3BfZGVjb2RlX2ltYV9hZHBjbShGUkVFUkRQX0RTUF9D T05URVhUKiBjb250ZXh0LCBjb25zdCBCWVQKKyAKKyAJCWlmIChjaGFubmVscyA+IDEpCisgCQl7 CisrCQkJaWYgKHNpemUgPCA4KQorKwkJCQlyZXR1cm4gRkFMU0U7CisgCQkJZm9yIChpID0gMDsg aSA8IDg7IGkrKykKKyAJCQl7CisgCQkJCWNoYW5uZWwgPSAoaSA8IDQgPyAwIDogMSk7CitAQCAt NDA3LDYgKzQyNSw4IEBAIHN0YXRpYyBCT09MIGZyZWVyZHBfZHNwX2RlY29kZV9pbWFfYWRwY20o RlJFRVJEUF9EU1BfQ09OVEVYVCogY29udGV4dCwgY29uc3QgQllUCisgCQl9CisgCQllbHNlCisg CQl7CisrCQkJaWYgKHNpemUgPCAxKQorKwkJCQlyZXR1cm4gRkFMU0U7CisgCQkJc2FtcGxlID0g KCgqc3JjKSAmIDB4MGYpOworIAkJCWRlY29kZWQgPSBkc3BfZGVjb2RlX2ltYV9hZHBjbV9zYW1w bGUoJmNvbnRleHQtPmFkcGNtLCAwLCBzYW1wbGUpOworIAkJCSpkc3QrKyA9IChkZWNvZGVkICYg MHhGRik7CitAQCAtNjg3LDcgKzcwNywxNiBAQCBzdGF0aWMgQllURSBkc3BfZW5jb2RlX2ltYV9h ZHBjbV9zYW1wbGUoQURQQ00qIGFkcGNtLCBpbnQgY2hhbm5lbCwgSU5UMTYgc2FtcGxlKQorIAlJ TlQzMiBzczsKKyAJQllURSBlbmM7CisgCUlOVDMyIGRpZmY7CistCXNzID0gaW1hX3N0ZXBfc2l6 ZV90YWJsZVthZHBjbS0+aW1hLmxhc3Rfc3RlcFtjaGFubmVsXV07CisrCUlOVDE2IG9mZnNldDsK KysKKysJV0lOUFJfQVNTRVJUKGNoYW5uZWwgPCBBUlJBWVNJWkUoYWRwY20tPmltYS5sYXN0X3N0 ZXApKTsKKysJV0lOUFJfQVNTRVJUKGNoYW5uZWwgPCBBUlJBWVNJWkUoYWRwY20tPmltYS5sYXN0 X3NhbXBsZSkpOworKworKwlvZmZzZXQgPSBhZHBjbS0+aW1hLmxhc3Rfc3RlcFtjaGFubmVsXTsK KysJV0lOUFJfQVNTRVJUKG9mZnNldCA+PSAwKTsKKysJV0lOUFJfQVNTRVJUKG9mZnNldCA8IEFS UkFZU0laRShpbWFfc3RlcF9zaXplX3RhYmxlKSk7CisrCisrCXNzID0gaW1hX3N0ZXBfc2l6ZV90 YWJsZVtvZmZzZXRdOworIAlkID0gZSA9IHNhbXBsZSAtIGFkcGNtLT5pbWEubGFzdF9zYW1wbGVb Y2hhbm5lbF07CisgCWRpZmYgPSBzcyA+PiAzOworIAllbmMgPSAwOworQEAgLTczMyw2ICs3NjIs OCBAQCBzdGF0aWMgQllURSBkc3BfZW5jb2RlX2ltYV9hZHBjbV9zYW1wbGUoQURQQ00qIGFkcGNt LCBpbnQgY2hhbm5lbCwgSU5UMTYgc2FtcGxlKQorIAkJZGlmZiA9IDMyNzY3OworIAorIAlhZHBj bS0+aW1hLmxhc3Rfc2FtcGxlW2NoYW5uZWxdID0gKElOVDE2KWRpZmY7CisrCisrCVdJTlBSX0FT U0VSVChlbmMgPCBBUlJBWVNJWkUoaW1hX3N0ZXBfaW5kZXhfdGFibGUpKTsKKyAJYWRwY20tPmlt YS5sYXN0X3N0ZXBbY2hhbm5lbF0gKz0gaW1hX3N0ZXBfaW5kZXhfdGFibGVbZW5jXTsKKyAKKyAJ aWYgKGFkcGNtLT5pbWEubGFzdF9zdGVwW2NoYW5uZWxdIDwgMCkKK0BAIC04NDcsMTAgKzg3OCwy NCBAQCBzdGF0aWMgSU5MSU5FIElOVDE2IGZyZWVyZHBfZHNwX2RlY29kZV9tc19hZHBjbV9zYW1w bGUoQURQQ00qIGFkcGNtLCBCWVRFIHNhbXBsZQorIHsKKyAJSU5UOCBuaWJibGU7CisgCUlOVDMy IHByZXNhbXBsZTsKKysJQllURSBwcmVkaWN0b3I7CisrCUlOVDMyIGNvZWZmMSA9IDA7CisrCUlO VDMyIGNvZWZmMiA9IDA7CisrCisrCVdJTlBSX0FTU0VSVChjaGFubmVsIDwgQVJSQVlTSVpFKGFk cGNtLT5tcy5zYW1wbGUxKSk7CisrCVdJTlBSX0FTU0VSVChjaGFubmVsIDwgQVJSQVlTSVpFKGFk cGNtLT5tcy5zYW1wbGUyKSk7CisrCVdJTlBSX0FTU0VSVChjaGFubmVsIDwgQVJSQVlTSVpFKGFk cGNtLT5tcy5kZWx0YSkpOworKwlXSU5QUl9BU1NFUlQoY2hhbm5lbCA8IEFSUkFZU0laRShhZHBj bS0+bXMucHJlZGljdG9yKSk7CisrCisgCW5pYmJsZSA9IChzYW1wbGUgJiAweDA4ID8gKElOVDgp c2FtcGxlIC0gMTYgOiAoSU5UOClzYW1wbGUpOworLQlwcmVzYW1wbGUgPSAoKGFkcGNtLT5tcy5z YW1wbGUxW2NoYW5uZWxdICogbXNfYWRwY21fY29lZmZzMVthZHBjbS0+bXMucHJlZGljdG9yW2No YW5uZWxdXSkgKworLQkgICAgICAgICAgICAgKGFkcGNtLT5tcy5zYW1wbGUyW2NoYW5uZWxdICog bXNfYWRwY21fY29lZmZzMlthZHBjbS0+bXMucHJlZGljdG9yW2NoYW5uZWxdXSkpIC8KKy0JICAg ICAgICAgICAgMjU2OworKwlwcmVkaWN0b3IgPSBhZHBjbS0+bXMucHJlZGljdG9yW2NoYW5uZWxd OworKwlpZiAocHJlZGljdG9yIDwgQVJSQVlTSVpFKG1zX2FkcGNtX2NvZWZmczEpKQorKwkJY29l ZmYxID0gbXNfYWRwY21fY29lZmZzMVtwcmVkaWN0b3JdOworKworKwlpZiAocHJlZGljdG9yIDwg QVJSQVlTSVpFKG1zX2FkcGNtX2NvZWZmczIpKQorKwkJY29lZmYyID0gbXNfYWRwY21fY29lZmZz MltwcmVkaWN0b3JdOworKwlwcmVzYW1wbGUgPQorKwkgICAgKChhZHBjbS0+bXMuc2FtcGxlMVtj aGFubmVsXSAqIGNvZWZmMSkgKyAoYWRwY20tPm1zLnNhbXBsZTJbY2hhbm5lbF0gKiBjb2VmZjIp KSAvIDI1NjsKKyAJcHJlc2FtcGxlICs9IG5pYmJsZSAqIGFkcGNtLT5tcy5kZWx0YVtjaGFubmVs XTsKKyAKKyAJaWYgKHByZXNhbXBsZSA+IDMyNzY3KQorQEAgLTg2MCw3ICs5MDUsMTQgQEAgc3Rh dGljIElOTElORSBJTlQxNiBmcmVlcmRwX2RzcF9kZWNvZGVfbXNfYWRwY21fc2FtcGxlKEFEUENN KiBhZHBjbSwgQllURSBzYW1wbGUKKyAKKyAJYWRwY20tPm1zLnNhbXBsZTJbY2hhbm5lbF0gPSBh ZHBjbS0+bXMuc2FtcGxlMVtjaGFubmVsXTsKKyAJYWRwY20tPm1zLnNhbXBsZTFbY2hhbm5lbF0g PSBwcmVzYW1wbGU7CistCWFkcGNtLT5tcy5kZWx0YVtjaGFubmVsXSA9IGFkcGNtLT5tcy5kZWx0 YVtjaGFubmVsXSAqIG1zX2FkcGNtX2FkYXB0YXRpb25fdGFibGVbc2FtcGxlXSAvIDI1NjsKKysK KysJeworKwkJSU5UMzIgdGFibGV2YWwgPSAwOworKwkJaWYgKHNhbXBsZSA8IEFSUkFZU0laRSht c19hZHBjbV9hZGFwdGF0aW9uX3RhYmxlKSkKKysJCQl0YWJsZXZhbCA9IG1zX2FkcGNtX2FkYXB0 YXRpb25fdGFibGVbc2FtcGxlXTsKKysKKysJCWFkcGNtLT5tcy5kZWx0YVtjaGFubmVsXSA9IGFk cGNtLT5tcy5kZWx0YVtjaGFubmVsXSAqIHRhYmxldmFsIC8gMjU2OworKwl9CisgCisgCWlmIChh ZHBjbS0+bXMuZGVsdGFbY2hhbm5lbF0gPCAxNikKKyAJCWFkcGNtLT5tcy5kZWx0YVtjaGFubmVs XSA9IDE2OworQEAgLTg5MSw2ICs5NDMsOSBAQCBzdGF0aWMgQk9PTCBmcmVlcmRwX2RzcF9kZWNv ZGVfbXNfYWRwY20oRlJFRVJEUF9EU1BfQ09OVEVYVCogY29udGV4dCwgY29uc3QgQllURQorIAkJ eworIAkJCWlmIChjaGFubmVscyA+IDEpCisgCQkJeworKwkJCQlpZiAoc2l6ZSA8IDE0KQorKwkJ CQkJcmV0dXJuIEZBTFNFOworKworIAkJCQljb250ZXh0LT5hZHBjbS5tcy5wcmVkaWN0b3JbMF0g PSAqc3JjKys7CisgCQkJCWNvbnRleHQtPmFkcGNtLm1zLnByZWRpY3RvclsxXSA9ICpzcmMrKzsK KyAJCQkJY29udGV4dC0+YWRwY20ubXMuZGVsdGFbMF0gPSByZWFkX2ludDE2KHNyYyk7CitAQCAt OTE3LDYgKzk3Miw5IEBAIHN0YXRpYyBCT09MIGZyZWVyZHBfZHNwX2RlY29kZV9tc19hZHBjbShG UkVFUkRQX0RTUF9DT05URVhUKiBjb250ZXh0LCBjb25zdCBCWVRFCisgCQkJfQorIAkJCWVsc2UK KyAJCQl7CisrCQkJCWlmIChzaXplIDwgNykKKysJCQkJCXJldHVybiBGQUxTRTsKKysKKyAJCQkJ Y29udGV4dC0+YWRwY20ubXMucHJlZGljdG9yWzBdID0gKnNyYysrOworIAkJCQljb250ZXh0LT5h ZHBjbS5tcy5kZWx0YVswXSA9IHJlYWRfaW50MTYoc3JjKTsKKyAJCQkJc3JjICs9IDI7CitAQCAt OTM0LDEyICs5OTIsMTYgQEAgc3RhdGljIEJPT0wgZnJlZXJkcF9kc3BfZGVjb2RlX21zX2FkcGNt KEZSRUVSRFBfRFNQX0NPTlRFWFQqIGNvbnRleHQsIGNvbnN0IEJZVEUKKyAKKyAJCWlmIChjaGFu bmVscyA+IDEpCisgCQl7CisrCQkJaWYgKHNpemUgPCAxKQorKwkJCQlyZXR1cm4gRkFMU0U7Cisg CQkJc2FtcGxlID0gKnNyYysrOworIAkJCXNpemUtLTsKKyAJCQl3cml0ZV9pbnQxNihkc3QsIGZy ZWVyZHBfZHNwX2RlY29kZV9tc19hZHBjbV9zYW1wbGUoJmNvbnRleHQtPmFkcGNtLCBzYW1wbGUg Pj4gNCwgMCkpOworIAkJCWRzdCArPSAyOworIAkJCXdyaXRlX2ludDE2KGRzdCwgZnJlZXJkcF9k c3BfZGVjb2RlX21zX2FkcGNtX3NhbXBsZSgmY29udGV4dC0+YWRwY20sIHNhbXBsZSAmIDB4MEYs IDEpKTsKKyAJCQlkc3QgKz0gMjsKKysJCQlpZiAoc2l6ZSA8IDEpCisrCQkJCXJldHVybiBGQUxT RTsKKyAJCQlzYW1wbGUgPSAqc3JjKys7CisgCQkJc2l6ZS0tOworIAkJCXdyaXRlX2ludDE2KGRz dCwgZnJlZXJkcF9kc3BfZGVjb2RlX21zX2FkcGNtX3NhbXBsZSgmY29udGV4dC0+YWRwY20sIHNh bXBsZSA+PiA0LCAwKSk7CitAQCAtOTQ5LDYgKzEwMTEsOCBAQCBzdGF0aWMgQk9PTCBmcmVlcmRw X2RzcF9kZWNvZGVfbXNfYWRwY20oRlJFRVJEUF9EU1BfQ09OVEVYVCogY29udGV4dCwgY29uc3Qg QllURQorIAkJfQorIAkJZWxzZQorIAkJeworKwkJCWlmIChzaXplIDwgMSkKKysJCQkJcmV0dXJu IEZBTFNFOworIAkJCXNhbXBsZSA9ICpzcmMrKzsKKyAJCQlzaXplLS07CisgCQkJd3JpdGVfaW50 MTYoZHN0LCBmcmVlcmRwX2RzcF9kZWNvZGVfbXNfYWRwY21fc2FtcGxlKCZjb250ZXh0LT5hZHBj bSwgc2FtcGxlID4+IDQsIDApKTsKK0BAIC05NjIsMTAgKzEwMjYsMTYgQEAgc3RhdGljIEJPT0wg ZnJlZXJkcF9kc3BfZGVjb2RlX21zX2FkcGNtKEZSRUVSRFBfRFNQX0NPTlRFWFQqIGNvbnRleHQs IGNvbnN0IEJZVEUKKyAJcmV0dXJuIFRSVUU7CisgfQorIAorLXN0YXRpYyBCWVRFIGZyZWVyZHBf ZHNwX2VuY29kZV9tc19hZHBjbV9zYW1wbGUoQURQQ00qIGFkcGNtLCBJTlQzMiBzYW1wbGUsIGlu dCBjaGFubmVsKQorK3N0YXRpYyBCWVRFIGZyZWVyZHBfZHNwX2VuY29kZV9tc19hZHBjbV9zYW1w bGUoQURQQ00qIGFkcGNtLCBJTlQzMiBzYW1wbGUsIHNpemVfdCBjaGFubmVsKQorIHsKKyAJSU5U MzIgcHJlc2FtcGxlOworIAlJTlQzMiBlcnJvcmRlbHRhOworKworKwlXSU5QUl9BU1NFUlQoY2hh bm5lbCA8IEFSUkFZU0laRShhZHBjbS0+bXMuc2FtcGxlMSkpOworKwlXSU5QUl9BU1NFUlQoY2hh bm5lbCA8IEFSUkFZU0laRShhZHBjbS0+bXMuc2FtcGxlMikpOworKwlXSU5QUl9BU1NFUlQoY2hh bm5lbCA8IEFSUkFZU0laRShhZHBjbS0+bXMuZGVsdGEpKTsKKysJV0lOUFJfQVNTRVJUKGNoYW5u ZWwgPCBBUlJBWVNJWkUoYWRwY20tPm1zLnByZWRpY3RvcikpOworKworIAlwcmVzYW1wbGUgPSAo KGFkcGNtLT5tcy5zYW1wbGUxW2NoYW5uZWxdICogbXNfYWRwY21fY29lZmZzMVthZHBjbS0+bXMu cHJlZGljdG9yW2NoYW5uZWxdXSkgKworIAkgICAgICAgICAgICAgKGFkcGNtLT5tcy5zYW1wbGUy W2NoYW5uZWxdICogbXNfYWRwY21fY29lZmZzMlthZHBjbS0+bXMucHJlZGljdG9yW2NoYW5uZWxd XSkpIC8KKyAJICAgICAgICAgICAgMjU2OworQEAgLTk4OCw4ICsxMDU4LDExIEBAIHN0YXRpYyBC WVRFIGZyZWVyZHBfZHNwX2VuY29kZV9tc19hZHBjbV9zYW1wbGUoQURQQ00qIGFkcGNtLCBJTlQz MiBzYW1wbGUsIGludCBjCisgCisgCWFkcGNtLT5tcy5zYW1wbGUyW2NoYW5uZWxdID0gYWRwY20t Pm1zLnNhbXBsZTFbY2hhbm5lbF07CisgCWFkcGNtLT5tcy5zYW1wbGUxW2NoYW5uZWxdID0gcHJl c2FtcGxlOworLQlhZHBjbS0+bXMuZGVsdGFbY2hhbm5lbF0gPQorLQkgICAgYWRwY20tPm1zLmRl bHRhW2NoYW5uZWxdICogbXNfYWRwY21fYWRhcHRhdGlvbl90YWJsZVsoKChCWVRFKWVycm9yZGVs dGEpICYgMHgwRildIC8gMjU2OworKwl7CisrCQljb25zdCBzaXplX3Qgb2Zmc2V0ID0gKCgoQllU RSllcnJvcmRlbHRhKSAmIDB4MEYpOworKwkJV0lOUFJfQVNTRVJUKG9mZnNldCA8IEFSUkFZU0la RShtc19hZHBjbV9hZGFwdGF0aW9uX3RhYmxlKSk7CisrCQlhZHBjbS0+bXMuZGVsdGFbY2hhbm5l bF0gPSBhZHBjbS0+bXMuZGVsdGFbY2hhbm5lbF0gKiBtc19hZHBjbV9hZGFwdGF0aW9uX3RhYmxl W29mZnNldF0gLyAyNTY7CisrCX0KKyAKKyAJaWYgKGFkcGNtLT5tcy5kZWx0YVtjaGFubmVsXSA8 IDE2KQorIAkJYWRwY20tPm1zLmRlbHRhW2NoYW5uZWxdID0gMTY7CistLSAKKzIuNTMuMAorCgpk aWZmIC0tZ2l0IGEvY29kZWMtbnNjLWZpeC11c2Utb2YtbnNjX3Byb2Nlc3NfbWVzc2FnZS5wYXRj aCBiL2NvZGVjLW5zYy1maXgtdXNlLW9mLW5zY19wcm9jZXNzX21lc3NhZ2UucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2M1ZWE2NAotLS0gL2Rldi9udWxsCisrKyBi L2NvZGVjLW5zYy1maXgtdXNlLW9mLW5zY19wcm9jZXNzX21lc3NhZ2UucGF0Y2gKQEAgLTAsMCAr MSw5MCBAQAorRnJvbSAyMWNiMGUyYjk2ZTRlODZiNGVkOGI3YTc2ZDgxOTgwOGI4OThlOTNlIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT25kcmVqIEhvbHkgPG9ob2x5QHJlZGhhdC5j b20+CitEYXRlOiBUdWUsIDMxIE1hciAyMDI2IDA3OjA4OjA0ICswMjAwCitTdWJqZWN0OiBbUEFU Q0hdIFtjb2RlYyxuc2NdIGZpeCB1c2Ugb2YgbnNjX3Byb2Nlc3NfbWVzc2FnZQorCitCYWNrcG9y dCBvZiBjb21taXQgMTY5OTcxNjA3Y2VjZTQ4Mzg0Y2I5NDYzMmI4MjliZDU3MzM2YWYwZi4KKwor TWFkZS13aXRoOiBDdXJzb3IKKy0tLQorIGxpYmZyZWVyZHAvY29kZWMvY2xlYXIuYyB8IDEwICsr KysrKy0tLS0KKyBsaWJmcmVlcmRwL2NvZGVjL25zYy5jICAgfCAgOSArKysrKysrKy0KKyBsaWJm cmVlcmRwL2dkaS9nZGkuYyAgICAgfCAgNCArKy0tCisgMyBmaWxlcyBjaGFuZ2VkLCAxNiBpbnNl cnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliZnJlZXJkcC9jb2Rl Yy9jbGVhci5jIGIvbGliZnJlZXJkcC9jb2RlYy9jbGVhci5jCitpbmRleCA0ZGJlNzIzNzYuLjY2 MjdiMjFkNiAxMDA2NDQKKy0tLSBhL2xpYmZyZWVyZHAvY29kZWMvY2xlYXIuYworKysrIGIvbGli ZnJlZXJkcC9jb2RlYy9jbGVhci5jCitAQCAtMTAzLDcgKzEwMyw4IEBAIHN0YXRpYyBCT09MIGNv bnZlcnRfY29sb3IoQllURSogZHN0LCBVSU5UMzIgbkRzdFN0ZXAsIFVJTlQzMiBEc3RGb3JtYXQs IFVJTlQzMiBuCisgCisgc3RhdGljIEJPT0wgY2xlYXJfZGVjb21wcmVzc19uc2NvZGVjKE5TQ19D T05URVhUKiBuc2MsIFVJTlQzMiB3aWR0aCwgVUlOVDMyIGhlaWdodCwgd1N0cmVhbSogcywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUlOVDMyIGJpdG1hcERhdGFCeXRl Q291bnQsIEJZVEUqIHBEc3REYXRhLCBVSU5UMzIgRHN0Rm9ybWF0LAorLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBVSU5UMzIgbkRzdFN0ZXAsIFVJTlQzMiBuWERzdFJlbCwg VUlOVDMyIG5ZRHN0UmVsKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBV SU5UMzIgbkRzdFN0ZXAsIFVJTlQzMiBuWERzdFJlbCwgVUlOVDMyIG5ZRHN0UmVsLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSU5UMzIgbkRzdFdpZHRoLCBVSU5UMzIg bkRzdEhlaWdodCkKKyB7CisgCUJPT0wgcmM7CisgCitAQCAtMTE1LDggKzExNiw4IEBAIHN0YXRp YyBCT09MIGNsZWFyX2RlY29tcHJlc3NfbnNjb2RlYyhOU0NfQ09OVEVYVCogbnNjLCBVSU5UMzIg d2lkdGgsIFVJTlQzMiBoZWlnCisgCX0KKyAKKyAJcmMgPSBuc2NfcHJvY2Vzc19tZXNzYWdlKG5z YywgMzIsIHdpZHRoLCBoZWlnaHQsIFN0cmVhbV9Qb2ludGVyKHMpLCBiaXRtYXBEYXRhQnl0ZUNv dW50LAorLQkgICAgICAgICAgICAgICAgICAgICAgICAgcERzdERhdGEsIERzdEZvcm1hdCwgbkRz dFN0ZXAsIG5YRHN0UmVsLCBuWURzdFJlbCwgd2lkdGgsIGhlaWdodCwKKy0JICAgICAgICAgICAg ICAgICAgICAgICAgIEZSRUVSRFBfRkxJUF9OT05FKTsKKysJICAgICAgICAgICAgICAgICAgICAg ICAgIHBEc3REYXRhLCBEc3RGb3JtYXQsIG5Ec3RTdGVwLCBuWERzdFJlbCwgbllEc3RSZWwsIG5E c3RXaWR0aCwKKysJICAgICAgICAgICAgICAgICAgICAgICAgIG5Ec3RIZWlnaHQsIEZSRUVSRFBf RkxJUF9OT05FKTsKKyAJU3RyZWFtX1NlZWsocywgYml0bWFwRGF0YUJ5dGVDb3VudCk7CisgCXJl dHVybiByYzsKKyB9CitAQCAtNTM1LDcgKzUzNiw4IEBAIHN0YXRpYyBCT09MIGNsZWFyX2RlY29t cHJlc3Nfc3ViY29kZWNzX2RhdGEoQ0xFQVJfQ09OVEVYVCogY2xlYXIsIHdTdHJlYW0qIHMsCisg CisgCQkJY2FzZSAxOiAvKiBOU0NvZGVjICovCisgCQkJCWlmICghY2xlYXJfZGVjb21wcmVzc19u c2NvZGVjKGNsZWFyLT5uc2MsIHdpZHRoLCBoZWlnaHQsIHMsIGJpdG1hcERhdGFCeXRlQ291bnQs CistCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBEc3REYXRhLCBEc3RGb3JtYXQs IG5Ec3RTdGVwLCBuWERzdFJlbCwgbllEc3RSZWwpKQorKwkJCQkgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwRHN0RGF0YSwgRHN0Rm9ybWF0LCBuRHN0U3RlcCwgblhEc3RSZWwsIG5ZRHN0 UmVsLAorKwkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuRHN0V2lkdGgsIG5Ec3RI ZWlnaHQpKQorIAkJCQkJcmV0dXJuIEZBTFNFOworIAorIAkJCQlicmVhazsKK2RpZmYgLS1naXQg YS9saWJmcmVlcmRwL2NvZGVjL25zYy5jIGIvbGliZnJlZXJkcC9jb2RlYy9uc2MuYworaW5kZXgg YTI1N2FlMjRhLi5mNTBhMWFlODkgMTAwNjQ0CistLS0gYS9saWJmcmVlcmRwL2NvZGVjL25zYy5j CisrKysgYi9saWJmcmVlcmRwL2NvZGVjL25zYy5jCitAQCAtNDQ3LDEwICs0NDcsMTcgQEAgQk9P TCBuc2NfcHJvY2Vzc19tZXNzYWdlKE5TQ19DT05URVhUKiBjb250ZXh0LCBVSU5UMTYgYnBwLCBV SU5UMzIgd2lkdGgsIFVJTlQzMgorICAgICAgICAgICAgICAgICAgICAgICAgICBVSU5UMzIgbkRz dFN0cmlkZSwgVUlOVDMyIG5YRHN0LCBVSU5UMzIgbllEc3QsIFVJTlQzMiBuV2lkdGgsCisgICAg ICAgICAgICAgICAgICAgICAgICAgIFVJTlQzMiBuSGVpZ2h0LCBVSU5UMzIgZmxpcCkKKyB7Cisr CVdJTlBSX0FTU0VSVChjb250ZXh0KTsKKysJV0lOUFJfQVNTRVJUKGNvbnRleHQtPnByaXYpOwor KworIAl3U3RyZWFtKiBzOworIAlCT09MIHJldDsKKy0JaWYgKCFjb250ZXh0IHx8ICFkYXRhIHx8 ICFwRHN0RGF0YSkKKysJaWYgKCFkYXRhIHx8ICFwRHN0RGF0YSkKKysJeworKwkJV0xvZ19Qcmlu dChjb250ZXh0LT5wcml2LT5sb2csIFdMT0dfRVJST1IsICJJbnZhbGlkIGFyZ3VtZW50OiBkYXRh PSVwLCBwRHN0RGF0YT0lcCIsCisrCQkgICAgICAgICAgIChjb25zdCB2b2lkKilkYXRhLCAodm9p ZCopcERzdERhdGEpOworIAkJcmV0dXJuIEZBTFNFOworKwl9CisgCisgCXMgPSBTdHJlYW1fTmV3 KChCWVRFKilkYXRhLCBsZW5ndGgpOworIAorZGlmZiAtLWdpdCBhL2xpYmZyZWVyZHAvZ2RpL2dk aS5jIGIvbGliZnJlZXJkcC9nZGkvZ2RpLmMKK2luZGV4IDM3YTAxMDQzMS4uOGM1ZTRiZjM0IDEw MDY0NAorLS0tIGEvbGliZnJlZXJkcC9nZGkvZ2RpLmMKKysrKyBiL2xpYmZyZWVyZHAvZ2RpL2dk aS5jCitAQCAtMTA3NCw4ICsxMDc0LDggQEAgc3RhdGljIEJPT0wgZ2RpX3N1cmZhY2VfYml0cyhy ZHBDb250ZXh0KiBjb250ZXh0LCBjb25zdCBTVVJGQUNFX0JJVFNfQ09NTUFORCogY20KKyAJCQlp ZiAoIW5zY19wcm9jZXNzX21lc3NhZ2UoCisgCQkJICAgICAgICBjb250ZXh0LT5jb2RlY3MtPm5z YywgY21kLT5ibXAuYnBwLCBjbWQtPmJtcC53aWR0aCwgY21kLT5ibXAuaGVpZ2h0LAorIAkJCSAg ICAgICAgY21kLT5ibXAuYml0bWFwRGF0YSwgY21kLT5ibXAuYml0bWFwRGF0YUxlbmd0aCwgZ2Rp LT5wcmltYXJ5X2J1ZmZlciwgZm9ybWF0LAorLQkJCSAgICAgICAgZ2RpLT5zdHJpZGUsIGNtZFJl Y3QubGVmdCwgY21kUmVjdC50b3AsIGNtZFJlY3QucmlnaHQgLSBjbWRSZWN0LmxlZnQsCistCQkJ ICAgICAgICBjbWRSZWN0LmJvdHRvbSAtIGNtZFJlY3QudG9wLCBGUkVFUkRQX0ZMSVBfVkVSVElD QUwpKQorKwkJCSAgICAgICAgZ2RpLT5zdHJpZGUsIGNtZFJlY3QubGVmdCwgY21kUmVjdC50b3As IChVSU5UMzIpZ2RpLT53aWR0aCwgKFVJTlQzMilnZGktPmhlaWdodCwKKysJCQkgICAgICAgIEZS RUVSRFBfRkxJUF9WRVJUSUNBTCkpCisgCQkJeworIAkJCQlXTG9nX0VSUihUQUcsICJGYWlsZWQg dG8gcHJvY2VzcyBOU0NvZGVjIG1lc3NhZ2UiKTsKKyAJCQkJZ290byBvdXQ7CistLSAKKzIuNTMu MAorCgpkaWZmIC0tZ2l0IGEvY29kZWMtbnNjLWxpbWl0LWNvcHktYXJlYS1pbi1uc2NfcHJvY2Vz c19tZXNzYWdlLnBhdGNoIGIvY29kZWMtbnNjLWxpbWl0LWNvcHktYXJlYS1pbi1uc2NfcHJvY2Vz c19tZXNzYWdlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwNDdk ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9jb2RlYy1uc2MtbGltaXQtY29weS1hcmVhLWluLW5zY19w cm9jZXNzX21lc3NhZ2UucGF0Y2gKQEAgLTAsMCArMSw0NCBAQAorRnJvbSA5YTllMDA1MjliMWIw NDcxODM3MGExZDhlMmQ4YjY3NjhjOWVlOTEzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJv bTogT25kcmVqIEhvbHkgPG9ob2x5QHJlZGhhdC5jb20+CitEYXRlOiBNb24sIDE2IE1hciAyMDI2 IDE0OjU5OjEyICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFtjb2RlYyxuc2NdIGxpbWl0IGNvcHkg YXJlYSBpbiBuc2NfcHJvY2Vzc19tZXNzYWdlCisKK0JhY2twb3J0IG9mIGNvbW1pdCA4M2Q5YWVk ZWEyNzhhNzRhZjNlNDkwZmY1ZWViODg5YzAxNmRiYjJiLgorCitNYWRlLXdpdGg6IEN1cnNvcgor LS0tCisgbGliZnJlZXJkcC9jb2RlYy9uc2MuYyB8IDExICsrKysrKysrKystCisgMSBmaWxlIGNo YW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xp YmZyZWVyZHAvY29kZWMvbnNjLmMgYi9saWJmcmVlcmRwL2NvZGVjL25zYy5jCitpbmRleCA1ZGQy NjQ2ZWEuLmEyNTdhZTI0YSAxMDA2NDQKKy0tLSBhL2xpYmZyZWVyZHAvY29kZWMvbnNjLmMKKysr KyBiL2xpYmZyZWVyZHAvY29kZWMvbnNjLmMKK0BAIC0yNCw2ICsyNCw3IEBACisgI2luY2x1ZGUg ImNvbmZpZy5oIgorICNlbmRpZgorIAorKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyAjaW5jbHVkZSA8 c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorQEAg LTUxNSw3ICs1MTYsMTUgQEAgQk9PTCBuc2NfcHJvY2Vzc19tZXNzYWdlKE5TQ19DT05URVhUKiBj b250ZXh0LCBVSU5UMTYgYnBwLCBVSU5UMzIgd2lkdGgsIFVJTlQzMgorIAkJCXJldHVybiBGQUxT RTsKKyAJfQorIAorLQlpZiAoIWZyZWVyZHBfaW1hZ2VfY29weShwRHN0RGF0YSwgRHN0Rm9ybWF0 LCBuRHN0U3RyaWRlLCBuWERzdCwgbllEc3QsIHdpZHRoLCBoZWlnaHQsCisrCXVpbnQzMl90IGN3 aWR0aCA9IHdpZHRoOworKwlpZiAoMXVsbCAqIG5YRHN0ICsgd2lkdGggPiBuV2lkdGgpCisrCQlj d2lkdGggPSBuV2lkdGggLSBuWERzdDsKKysKKysJdWludDMyX3QgY2hlaWdodCA9IGhlaWdodDsK KysJaWYgKDF1bGwgKiBuWURzdCArIGhlaWdodCA+IG5IZWlnaHQpCisrCQljaGVpZ2h0ID0gbkhl aWdodCAtIG5ZRHN0OworKworKwlpZiAoIWZyZWVyZHBfaW1hZ2VfY29weShwRHN0RGF0YSwgRHN0 Rm9ybWF0LCBuRHN0U3RyaWRlLCBuWERzdCwgbllEc3QsIGN3aWR0aCwgY2hlaWdodCwKKyAJICAg ICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+Qml0bWFwRGF0YSwgUElYRUxfRk9STUFUX0JH UkEzMiwgMCwgMCwgMCwgTlVMTCwgZmxpcCkpCisgCQlyZXR1cm4gRkFMU0U7CisgCistLSAKKzIu NTMuMAorCgpkaWZmIC0tZ2l0IGEvY29kZWMtcGxhbmFyLWZpeC1ib3VuZHMtY2hlY2tzLnBhdGNo IGIvY29kZWMtcGxhbmFyLWZpeC1ib3VuZHMtY2hlY2tzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjU1NTA5OTIKLS0tIC9kZXYvbnVsbAorKysgYi9jb2RlYy1wbGFu YXItZml4LWJvdW5kcy1jaGVja3MucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSA0YjkzOTQ1 Y2Y1ZjliODVkMTc3MDVkMDM4OTU1ZWU1OWM0YjY2OWEwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQorRnJvbTogQXJtaW4gTm92YWsgPGFybWluLm5vdmFrQHRoaW5jYXN0LmNvbT4KK0RhdGU6IFRo dSwgMzAgQXByIDIwMjYgMTU6MDM6MjEgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gW2NvZGVjLHBs YW5hcl0gZml4IGJvdW5kcyBjaGVja3MKKworLS0tCisgbGliZnJlZXJkcC9jb2RlYy9wbGFuYXIu YyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25z KC0pCisKK2RpZmYgLS1naXQgYS9saWJmcmVlcmRwL2NvZGVjL3BsYW5hci5jIGIvbGliZnJlZXJk cC9jb2RlYy9wbGFuYXIuYworaW5kZXggOWI0ZDEzMDU3Li42N2ZjNDIxMmUgMTAwNjQ0CistLS0g YS9saWJmcmVlcmRwL2NvZGVjL3BsYW5hci5jCisrKysgYi9saWJmcmVlcmRwL2NvZGVjL3BsYW5h ci5jCitAQCAtODQxLDEyICs4NDEsMTIgQEAgQk9PTCBwbGFuYXJfZGVjb21wcmVzcyhCSVRNQVBf UExBTkFSX0NPTlRFWFQqIHBsYW5hciwgY29uc3QgQllURSogcFNyY0RhdGEsIFVJTlQKKyAJCQkJ cmV0dXJuIEZBTFNFOworIAkJCX0KKyAKKy0JCQlpZiAoKG5YRHN0ICsgblNyY1dpZHRoKSAqIGJw cCA+IG5Ec3RTdGVwKQorKwkJCWlmICgoblhEc3QgKyBuU3JjV2lkdGgpICogYnBwID4gblRlbXBT dGVwKQorIAkJCXsKKyAJCQkJV0xvZ19FUlIoVEFHLAorIAkJCQkgICAgICAgICAicGxhbmFyIHBs YW5lIGRlc3RpbmF0aW9uIChYICUiIFBSSXUzMiAiICsgd2lkdGggJSIgUFJJdTMyCisgCQkJCSAg ICAgICAgICIpICogYnBwICUiIFBSSXUzMiAiIGV4Y2VlZHMgc3RyaWRlICUiIFBSSXUzMiwKKy0J CQkJICAgICAgICAgblhEc3QsIG5TcmNXaWR0aCwgYnBwLCBuRHN0U3RlcCk7CisrCQkJCSAgICAg ICAgIG5YRHN0LCBuU3JjV2lkdGgsIGJwcCwgblRlbXBTdGVwKTsKKyAJCQkJcmV0dXJuIEZBTFNF OworIAkJCX0KKyAKKy0tIAorMi41Mi4wCisKCmRpZmYgLS1naXQgYS9jb2RlYy1wbGFuYXItZml4 LWRlY29kZXItbGVuZ3RoLWNoZWNrcy5wYXRjaCBiL2NvZGVjLXBsYW5hci1maXgtZGVjb2Rlci1s ZW5ndGgtY2hlY2tzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4 ZDJjOTkKLS0tIC9kZXYvbnVsbAorKysgYi9jb2RlYy1wbGFuYXItZml4LWRlY29kZXItbGVuZ3Ro LWNoZWNrcy5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIDJkNjU2ZWI2YjI5YTY4ZGU3ZjE5 ZThhMWNjZTE2OTI1OWU3NTA2YjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBPbmRy ZWogSG9seSA8b2hvbHlAcmVkaGF0LmNvbT4KK0RhdGU6IFR1ZSwgMjcgSmFuIDIwMjYgMTQ6MzU6 NDMgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gW2NvZGVjLHBsYW5hcl0gZml4IGRlY29kZXIgbGVu Z3RoIGNoZWNrcworCitCYWNrcG9ydCBvZiBjb21taXQgMWJhYjE5OGEyZWRkMGQwZTZlMTYyN2Qy MWE0MzMxNTFlYTE5MC4KKworQ28tQXV0aG9yZWQtQnk6IENsYXVkZSA8bm9yZXBseUBhbnRocm9w aWMuY29tPgorLS0tCisgbGliZnJlZXJkcC9jb2RlYy9wbGFuYXIuYyB8IDUgKysrKysKKyAxIGZp bGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9saWJmcmVlcmRwL2Nv ZGVjL3BsYW5hci5jIGIvbGliZnJlZXJkcC9jb2RlYy9wbGFuYXIuYworaW5kZXggZmUyNzAxMWUx Li4xY2IyZTIyYmMgMTAwNjQ0CistLS0gYS9saWJmcmVlcmRwL2NvZGVjL3BsYW5hci5jCisrKysg Yi9saWJmcmVlcmRwL2NvZGVjL3BsYW5hci5jCitAQCAtNjE2LDYgKzYxNiwxMSBAQCBCT09MIHBs YW5hcl9kZWNvbXByZXNzKEJJVE1BUF9QTEFOQVJfQ09OVEVYVCogcGxhbmFyLCBjb25zdCBCWVRF KiBwU3JjRGF0YSwgVUlOVAorIAlXSU5QUl9BU1NFUlQocGxhbmFyKTsKKyAJV0lOUFJfQVNTRVJU KHByaW1zKTsKKyAKKysJaWYgKHBsYW5hci0+bWF4V2lkdGggPCBuU3JjV2lkdGgpCisrCQlyZXR1 cm4gRkFMU0U7CisrCWlmIChwbGFuYXItPm1heEhlaWdodCA8IG5TcmNIZWlnaHQpCisrCQlyZXR1 cm4gRkFMU0U7CisrCisgCWlmIChuRHN0U3RlcCA8PSAwKQorIAkJbkRzdFN0ZXAgPSBuRHN0V2lk dGggKiBHZXRCeXRlc1BlclBpeGVsKERzdEZvcm1hdCk7CisgCistLSAKKzIuNTIuMAorCgpkaWZm IC0tZ2l0IGEvY29kZWMtcGxhbmFyLWZpeC1taXNzaW5nLWRlc3RpbmF0aW9uLWJvdW5kcy1jaGVj a3MucGF0Y2ggYi9jb2RlYy1wbGFuYXItZml4LW1pc3NpbmctZGVzdGluYXRpb24tYm91bmRzLWNo ZWNrcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNmNjN2RjCi0t LSAvZGV2L251bGwKKysrIGIvY29kZWMtcGxhbmFyLWZpeC1taXNzaW5nLWRlc3RpbmF0aW9uLWJv dW5kcy1jaGVja3MucGF0Y2gKQEAgLTAsMCArMSw1NSBAQAorRnJvbSBlY2E4YTFhODc2Yjc3ZGU1 ZGE2MGIxODc5M2UzNWU1YzA3MTRlZjk3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTog T25kcmVqIEhvbHkgPG9ob2x5QHJlZGhhdC5jb20+CitEYXRlOiBNb24sIDkgTWFyIDIwMjYgMTI6 NTY6MTEgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gW2NvZGVjLHBsYW5hcl06IGZpeCBtaXNzaW5n IGRlc3RpbmF0aW9uIGJvdW5kcyBjaGVja3MKKworQmFja3BvcnQgb2YgY29tbWl0IGEwYmU1Y2I4 N2Q3NjBiYjFjODAzYWQxYmI4MzVhYTFlNzNlNjJhYmMuCisKK01hZGUtd2l0aDogQ3Vyc29yCist LS0KKyBsaWJmcmVlcmRwL2NvZGVjL3BsYW5hci5jIHwgMjEgKysrKysrKysrKysrKysrKysrKyst CisgMSBmaWxlIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlm ZiAtLWdpdCBhL2xpYmZyZWVyZHAvY29kZWMvcGxhbmFyLmMgYi9saWJmcmVlcmRwL2NvZGVjL3Bs YW5hci5jCitpbmRleCAxY2IyZTIyYmMuLjliNGQxMzA1NyAxMDA2NDQKKy0tLSBhL2xpYmZyZWVy ZHAvY29kZWMvcGxhbmFyLmMKKysrKyBiL2xpYmZyZWVyZHAvY29kZWMvcGxhbmFyLmMKK0BAIC02 MjEsOCArNjIxLDkgQEAgQk9PTCBwbGFuYXJfZGVjb21wcmVzcyhCSVRNQVBfUExBTkFSX0NPTlRF WFQqIHBsYW5hciwgY29uc3QgQllURSogcFNyY0RhdGEsIFVJTlQKKyAJaWYgKHBsYW5hci0+bWF4 SGVpZ2h0IDwgblNyY0hlaWdodCkKKyAJCXJldHVybiBGQUxTRTsKKyAKKysJY29uc3QgVUlOVDMy IGJwcCA9IEdldEJ5dGVzUGVyUGl4ZWwoRHN0Rm9ybWF0KTsKKyAJaWYgKG5Ec3RTdGVwIDw9IDAp CistCQluRHN0U3RlcCA9IG5Ec3RXaWR0aCAqIEdldEJ5dGVzUGVyUGl4ZWwoRHN0Rm9ybWF0KTsK KysJCW5Ec3RTdGVwID0gbkRzdFdpZHRoICogYnBwOworIAorIAlzcmNwID0gcFNyY0RhdGE7Cisg CitAQCAtODMxLDYgKzgzMiwyNCBAQCBCT09MIHBsYW5hcl9kZWNvbXByZXNzKEJJVE1BUF9QTEFO QVJfQ09OVEVYVCogcGxhbmFyLCBjb25zdCBCWVRFKiBwU3JjRGF0YSwgVUlOVAorIAkJfQorIAkJ ZWxzZSAvKiBSTEUgKi8KKyAJCXsKKysJCQlpZiAobllEc3QgKyBuU3JjSGVpZ2h0ID4gblRvdGFs SGVpZ2h0KQorKwkJCXsKKysJCQkJV0xvZ19FUlIoVEFHLAorKwkJCQkgICAgICAgICAicGxhbmFy IHBsYW5lIGRlc3RpbmF0aW9uIFkgJSIgUFJJdTMyICIgKyBoZWlnaHQgJSIgUFJJdTMyCisrCQkJ CSAgICAgICAgICIgZXhjZWVkcyB0b3RhbEhlaWdodCAlIiBQUkl1MzIsCisrCQkJCSAgICAgICAg IG5ZRHN0LCBuU3JjSGVpZ2h0LCBuVG90YWxIZWlnaHQpOworKwkJCQlyZXR1cm4gRkFMU0U7Cisr CQkJfQorKworKwkJCWlmICgoblhEc3QgKyBuU3JjV2lkdGgpICogYnBwID4gbkRzdFN0ZXApCisr CQkJeworKwkJCQlXTG9nX0VSUihUQUcsCisrCQkJCSAgICAgICAgICJwbGFuYXIgcGxhbmUgZGVz dGluYXRpb24gKFggJSIgUFJJdTMyICIgKyB3aWR0aCAlIiBQUkl1MzIKKysJCQkJICAgICAgICAg IikgKiBicHAgJSIgUFJJdTMyICIgZXhjZWVkcyBzdHJpZGUgJSIgUFJJdTMyLAorKwkJCQkgICAg ICAgICBuWERzdCwgblNyY1dpZHRoLCBicHAsIG5Ec3RTdGVwKTsKKysJCQkJcmV0dXJuIEZBTFNF OworKwkJCX0KKysKKyAJCQlzdGF0dXMgPQorIAkJCSAgICBwbGFuYXJfZGVjb21wcmVzc19wbGFu ZV9ybGUocGxhbmVzWzBdLCBybGVTaXplc1swXSwgcFRlbXBEYXRhLCBuVGVtcFN0ZXAsIG5YRHN0 LAorIAkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbllEc3QsIG5TcmNXaWR0aCwg blNyY0hlaWdodCwgMiwgdkZsaXApOyAvKiBSZWRQbGFuZSAqLworLS0gCisyLjUzLjAKKwoKZGlm ZiAtLWdpdCBhL2NvZGVjLXByb2dyZXNzaXZlLWZhaWwtcHJvZ3Jlc3NpdmVfcmZ4X3F1YW50X3N1 Yi1vbi1pbnZhbGlkLXZhbHVlcy5wYXRjaCBiL2NvZGVjLXByb2dyZXNzaXZlLWZhaWwtcHJvZ3Jl c3NpdmVfcmZ4X3F1YW50X3N1Yi1vbi1pbnZhbGlkLXZhbHVlcy5wYXRjaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjAyNDE3Ci0tLSAvZGV2L251bGwKKysrIGIvY29kZWMt cHJvZ3Jlc3NpdmUtZmFpbC1wcm9ncmVzc2l2ZV9yZnhfcXVhbnRfc3ViLW9uLWludmFsaWQtdmFs dWVzLnBhdGNoCkBAIC0wLDAgKzEsODkgQEAKK0Zyb20gNzgxODhhYjQ3OWM4ZTZlYjliYTI0NzVi MzczMmM3NmI0YmJlNTQyNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE9uZHJlaiBI b2x5IDxvaG9seUByZWRoYXQuY29tPgorRGF0ZTogTW9uLCAxMyBBcHIgMjAyNiAxNDowMDowMCAr MDIwMAorU3ViamVjdDogW1BBVENIXSBbY29kZWMscHJvZ3Jlc3NpdmVdIEZhaWwgcHJvZ3Jlc3Np dmVfcmZ4X3F1YW50X3N1YiBvbiBpbnZhbGlkCisgdmFsdWVzCisKK0JhY2twb3J0IG9mIGNvbW1p dCA3ODE4OGFiNDc5YzhlNmViOWJhMjQ3NWIzNzMyYzc2YjRiYmU1NDI1LgorCitNYWRlLXdpdGg6 IEN1cnNvcgorLS0tCisgbGliZnJlZXJkcC9jb2RlYy9wcm9ncmVzc2l2ZS5jIHwgNDIgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzOCBpbnNlcnRp b25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliZnJlZXJkcC9jb2RlYy9w cm9ncmVzc2l2ZS5jIGIvbGliZnJlZXJkcC9jb2RlYy9wcm9ncmVzc2l2ZS5jCitpbmRleCA4ODk0 YjM1Li5iYmNjOTIxIDEwMDY0NAorLS0tIGEvbGliZnJlZXJkcC9jb2RlYy9wcm9ncmVzc2l2ZS5j CisrKysgYi9saWJmcmVlcmRwL2NvZGVjL3Byb2dyZXNzaXZlLmMKK0BAIC0xNTUsMjAgKzE1NSw1 MSBAQCBzdGF0aWMgSU5MSU5FIHZvaWQgcHJvZ3Jlc3NpdmVfcmZ4X3F1YW50X2xzdWIoUkZYX0NP TVBPTkVOVF9DT0RFQ19RVUFOVCogcSwgaW50CisgCXEtPkxMMyAtPSB2YWw7IC8qIExMMyAqLwor IH0KKyAKKy1zdGF0aWMgSU5MSU5FIHZvaWQgcHJvZ3Jlc3NpdmVfcmZ4X3F1YW50X3N1Yihjb25z dCBSRlhfQ09NUE9ORU5UX0NPREVDX1FVQU5UKiBxMSwKKytzdGF0aWMgSU5MSU5FIEJPT0wgcHJv Z3Jlc3NpdmVfcmZ4X3F1YW50X3N1Yihjb25zdCBSRlhfQ09NUE9ORU5UX0NPREVDX1FVQU5UKiBx MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBS RlhfQ09NUE9ORU5UX0NPREVDX1FVQU5UKiBxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBSRlhfQ09NUE9ORU5UX0NPREVDX1FVQU5UKiBkc3QpCisgewor KwlpZiAocTEtPkhIMSA8IHEyLT5ITDEpCisrCQlyZXR1cm4gRkFMU0U7CisgCWRzdC0+SEwxID0g cTEtPkhMMSAtIHEyLT5ITDE7IC8qIEhMMSAqLworKworKwlpZiAocTEtPkxIMSA8IHEyLT5MSDEp CisrCQlyZXR1cm4gRkFMU0U7CisgCWRzdC0+TEgxID0gcTEtPkxIMSAtIHEyLT5MSDE7IC8qIExI MSAqLworKworKwlpZiAocTEtPkhIMSA8IHEyLT5ISDEpCisrCQlyZXR1cm4gRkFMU0U7CisgCWRz dC0+SEgxID0gcTEtPkhIMSAtIHEyLT5ISDE7IC8qIEhIMSAqLworKworKwlpZiAocTEtPkhMMiA8 IHEyLT5ITDIpCisrCQlyZXR1cm4gRkFMU0U7CisgCWRzdC0+SEwyID0gcTEtPkhMMiAtIHEyLT5I TDI7IC8qIEhMMiAqLworKworKwlpZiAocTEtPkxIMiA8IHEyLT5MSDIpCisrCQlyZXR1cm4gRkFM U0U7CisgCWRzdC0+TEgyID0gcTEtPkxIMiAtIHEyLT5MSDI7IC8qIExIMiAqLworKworKwlpZiAo cTEtPkhIMiA8IHEyLT5ISDIpCisrCQlyZXR1cm4gRkFMU0U7CisgCWRzdC0+SEgyID0gcTEtPkhI MiAtIHEyLT5ISDI7IC8qIEhIMiAqLworKworKwlpZiAocTEtPkhMMyA8IHEyLT5ITDMpCisrCQly ZXR1cm4gRkFMU0U7CisgCWRzdC0+SEwzID0gcTEtPkhMMyAtIHEyLT5ITDM7IC8qIEhMMyAqLwor KworKwlpZiAocTEtPkxIMyA8IHEyLT5MSDMpCisrCQlyZXR1cm4gRkFMU0U7CisgCWRzdC0+TEgz ID0gcTEtPkxIMyAtIHEyLT5MSDM7IC8qIExIMyAqLworKworKwlpZiAocTEtPkhIMyA8IHEyLT5I SDMpCisrCQlyZXR1cm4gRkFMU0U7CisgCWRzdC0+SEgzID0gcTEtPkhIMyAtIHEyLT5ISDM7IC8q IEhIMyAqLworKworKwlpZiAocTEtPkxMMyA8IHEyLT5MTDMpCisrCQlyZXR1cm4gRkFMU0U7Cisg CWRzdC0+TEwzID0gcTEtPkxMMyAtIHEyLT5MTDM7IC8qIExMMyAqLworKworKwlyZXR1cm4gVFJV RTsKKyB9CisgCisgc3RhdGljIElOTElORSBCT09MIHByb2dyZXNzaXZlX3JmeF9xdWFudF9sY21w X2xlc3NfZXF1YWwoY29uc3QgUkZYX0NPTVBPTkVOVF9DT0RFQ19RVUFOVCogcSwKK0BAIC0xNDMz LDkgKzE0NjQsMTIgQEAgc3RhdGljIElOTElORSBpbnQgcHJvZ3Jlc3NpdmVfZGVjb21wcmVzc190 aWxlX3VwZ3JhZGUoUFJPR1JFU1NJVkVfQ09OVEVYVCogcHJvZ3IKKyAJcHJvZ3Jlc3NpdmVfcmZ4 X3F1YW50X2FkZChxdWFudFksIHF1YW50UHJvZ1ksICZ5Qml0UG9zKTsKKyAJcHJvZ3Jlc3NpdmVf cmZ4X3F1YW50X2FkZChxdWFudENiLCBxdWFudFByb2dDYiwgJmNiQml0UG9zKTsKKyAJcHJvZ3Jl c3NpdmVfcmZ4X3F1YW50X2FkZChxdWFudENyLCBxdWFudFByb2dDciwgJmNyQml0UG9zKTsKKy0J cHJvZ3Jlc3NpdmVfcmZ4X3F1YW50X3N1YigmKHRpbGUtPnlCaXRQb3MpLCAmeUJpdFBvcywgJnlO dW1CaXRzKTsKKy0JcHJvZ3Jlc3NpdmVfcmZ4X3F1YW50X3N1YigmKHRpbGUtPmNiQml0UG9zKSwg JmNiQml0UG9zLCAmY2JOdW1CaXRzKTsKKy0JcHJvZ3Jlc3NpdmVfcmZ4X3F1YW50X3N1YigmKHRp bGUtPmNyQml0UG9zKSwgJmNyQml0UG9zLCAmY3JOdW1CaXRzKTsKKysJaWYgKCFwcm9ncmVzc2l2 ZV9yZnhfcXVhbnRfc3ViKCYodGlsZS0+eUJpdFBvcyksICZ5Qml0UG9zLCAmeU51bUJpdHMpKQor KwkJZ290byBmYWlsOworKwlpZiAoIXByb2dyZXNzaXZlX3JmeF9xdWFudF9zdWIoJih0aWxlLT5j YkJpdFBvcyksICZjYkJpdFBvcywgJmNiTnVtQml0cykpCisrCQlnb3RvIGZhaWw7CisrCWlmICgh cHJvZ3Jlc3NpdmVfcmZ4X3F1YW50X3N1YigmKHRpbGUtPmNyQml0UG9zKSwgJmNyQml0UG9zLCAm Y3JOdW1CaXRzKSkKKysJCWdvdG8gZmFpbDsKKyAJcHJvZ3Jlc3NpdmVfcmZ4X3F1YW50X2FkZChx dWFudFksIHF1YW50UHJvZ1ksICZzaGlmdFkpOworIAlwcm9ncmVzc2l2ZV9yZnhfcXVhbnRfbHN1 Yigmc2hpZnRZLCAxKTsgLyogLTYgKyA1ID0gLTEgKi8KKyAJcHJvZ3Jlc3NpdmVfcmZ4X3F1YW50 X2FkZChxdWFudENiLCBxdWFudFByb2dDYiwgJnNoaWZ0Q2IpOworLS0gCisyLjQ5LjAKKwoKZGlm ZiAtLWdpdCBhL2NvZGVjLXByb2dyZXNzaXZlLWZpeC11bmRlcmZsb3ctZ3VhcmQtaW4tcHJvZ3Jl c3NpdmVfcmZ4X3F1YW50X3N1Yi5wYXRjaCBiL2NvZGVjLXByb2dyZXNzaXZlLWZpeC11bmRlcmZs b3ctZ3VhcmQtaW4tcHJvZ3Jlc3NpdmVfcmZ4X3F1YW50X3N1Yi5wYXRjaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi5hY2I2YWY3Ci0tLSAvZGV2L251bGwKKysrIGIvY29kZWMt cHJvZ3Jlc3NpdmUtZml4LXVuZGVyZmxvdy1ndWFyZC1pbi1wcm9ncmVzc2l2ZV9yZnhfcXVhbnRf c3ViLnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKK0Zyb20gNzg2NzdkYzZlMjYyZjQ2OTM3ZDAwYzNh YTUyMzgxZTRiYjE5OGZhNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE9uZHJlaiBI b2x5IDxvaG9seUByZWRoYXQuY29tPgorRGF0ZTogTW9uLCAxMyBBcHIgMjAyNiAxNDowMDowMCAr MDIwMAorU3ViamVjdDogW1BBVENIXSBbY29kZWMscHJvZ3Jlc3NpdmVdIGZpeCB1bmRlcmZsb3cg Z3VhcmQgaW4KKyBwcm9ncmVzc2l2ZV9yZnhfcXVhbnRfc3ViCisKK0JhY2twb3J0IG9mIGNvbW1p dCA3ODY3N2RjNmUyNjJmNDY5MzdkMDBjM2FhNTIzODFlNGJiMTk4ZmE1LgorCitNYWRlLXdpdGg6 IEN1cnNvcgorLS0tCisgbGliZnJlZXJkcC9jb2RlYy9wcm9ncmVzc2l2ZS5jIHwgMiArLQorIDEg ZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0 IGEvbGliZnJlZXJkcC9jb2RlYy9wcm9ncmVzc2l2ZS5jIGIvbGliZnJlZXJkcC9jb2RlYy9wcm9n cmVzc2l2ZS5jCitpbmRleCBiYmNjOTIxLi4xMjM0NTY3IDEwMDY0NAorLS0tIGEvbGliZnJlZXJk cC9jb2RlYy9wcm9ncmVzc2l2ZS5jCisrKysgYi9saWJmcmVlcmRwL2NvZGVjL3Byb2dyZXNzaXZl LmMKK0BAIC0xNTgsNyArMTU4LDcgQEAgc3RhdGljIElOTElORSBCT09MIHByb2dyZXNzaXZlX3Jm eF9xdWFudF9zdWIoY29uc3QgUkZYX0NPTVBPTkVOVF9DT0RFQ19RVUFOVCogcTEKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSRlhfQ09NUE9ORU5U X0NPREVDX1FVQU5UKiBxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBSRlhfQ09NUE9ORU5UX0NPREVDX1FVQU5UKiBkc3QpCisgeworLQlpZiAocTEtPkhI MSA8IHEyLT5ITDEpCisrCWlmIChxMS0+SEwxIDwgcTItPkhMMSkKKyAJCXJldHVybiBGQUxTRTsK KyAJZHN0LT5ITDEgPSBxMS0+SEwxIC0gcTItPkhMMTsgLyogSEwxICovCisgCistLSAKKzIuNDku MAorCgpkaWZmIC0tZ2l0IGEvY29yZS1pbmZvLWZpeC1taXNzaW5nLU5VTEwtY2hlY2sucGF0Y2gg Yi9jb3JlLWluZm8tZml4LW1pc3NpbmctTlVMTC1jaGVjay5wYXRjaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi40NGRhYWZlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS1pbmZv LWZpeC1taXNzaW5nLU5VTEwtY2hlY2sucGF0Y2gKQEAgLTAsMCArMSw3MSBAQAorRnJvbSA2YTMy OWE5YTEzNTJjOTQ2MWEzYTg1ZTU1ZDg0MjMwMTA2YjE5NTAwIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQorRnJvbTogT25kcmVqIEhvbHkgPG9ob2x5QHJlZGhhdC5jb20+CitEYXRlOiBUdWUsIDEw IE1hciAyMDI2IDE0OjUzOjI5ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFtjb3JlLGluZm9dIGZp eCBtaXNzaW5nIE5VTEwgY2hlY2sKKworQmFja3BvcnQgb2YgY29tbWl0IDRkNDRlM2MwOTc2NTZh OGI5ZWM2OTYzNTM2NDdiMDg4OGNhNDU4NjAuCisKK01hZGUtd2l0aDogQ3Vyc29yCistLS0KKyBs aWJmcmVlcmRwL2NvcmUvaW5mby5jIHwgMTcgKysrKysrKysrKystLS0tLS0KKyAxIGZpbGUgY2hh bmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xp YmZyZWVyZHAvY29yZS9pbmZvLmMgYi9saWJmcmVlcmRwL2NvcmUvaW5mby5jCitpbmRleCA5YWFh NmNmZjYuLjU2Njc2ZjBmYiAxMDA2NDQKKy0tLSBhL2xpYmZyZWVyZHAvY29yZS9pbmZvLmMKKysr KyBiL2xpYmZyZWVyZHAvY29yZS9pbmZvLmMKK0BAIC0yNCw2ICsyNCw3IEBACisgI2VuZGlmCisg CisgI2luY2x1ZGUgPHdpbnByL2NydC5oPgorKyNpbmNsdWRlIDx3aW5wci9hc3NlcnQuaD4KKyAj aW5jbHVkZSA8ZnJlZXJkcC9jcnlwdG8vY3J5cHRvLmg+CisgI2luY2x1ZGUgPGZyZWVyZHAvbG9n Lmg+CisgI2luY2x1ZGUgPGZyZWVyZHAvc2Vzc2lvbi5oPgorQEAgLTEzNjMsMTAgKzEzNjQsMTEg QEAgc3RhdGljIEJPT0wgcmRwX3dyaXRlX2xvZ29uX2luZm9fdjEod1N0cmVhbSogcywgbG9nb25f aW5mbyogaW5mbykKKyAJcmV0dXJuIFRSVUU7CisgfQorIAorLXN0YXRpYyBCT09MIHJkcF93cml0 ZV9sb2dvbl9pbmZvX3YyKHdTdHJlYW0qIHMsIGxvZ29uX2luZm8qIGluZm8pCisrc3RhdGljIEJP T0wgcmRwX3dyaXRlX2xvZ29uX2luZm9fdjIod1N0cmVhbSogcywgY29uc3QgbG9nb25faW5mbyog aW5mbykKKyB7CisgCVVJTlQzMiBTaXplID0gMiArIDQgKyA0ICsgNCArIDQgKyA1NTg7CistCXNp emVfdCBkb21haW5MZW4sIHVzZXJuYW1lTGVuOworKwlzaXplX3QgZG9tYWluTGVuID0gMDsKKysJ c2l6ZV90IHVzZXJuYW1lTGVuID0gMDsKKyAJaW50IGxlbjsKKyAJV0NIQVIqIHdTdHJpbmcgPSBO VUxMOworIAorQEAgLTEzNzYsMTEgKzEzNzgsMTMgQEAgc3RhdGljIEJPT0wgcmRwX3dyaXRlX2xv Z29uX2luZm9fdjIod1N0cmVhbSogcywgbG9nb25faW5mbyogaW5mbykKKyAJU3RyZWFtX1dyaXRl X1VJTlQxNihzLCBTQVZFX1NFU1NJT05fUERVX1ZFUlNJT05fT05FKTsKKyAJU3RyZWFtX1dyaXRl X1VJTlQzMihzLCBTaXplKTsKKyAJU3RyZWFtX1dyaXRlX1VJTlQzMihzLCBpbmZvLT5zZXNzaW9u SWQpOworLQlkb21haW5MZW4gPSBzdHJsZW4oaW5mby0+ZG9tYWluKTsKKysJaWYgKGluZm8tPmRv bWFpbikKKysJCWRvbWFpbkxlbiA9IHN0cmxlbihpbmZvLT5kb21haW4pOworIAlpZiAoZG9tYWlu TGVuID4gVUlOVDMyX01BWCkKKyAJCXJldHVybiBGQUxTRTsKKyAJU3RyZWFtX1dyaXRlX1VJTlQz MihzLCAoVUlOVDMyKShkb21haW5MZW4gKyAxKSAqIDIpOworLQl1c2VybmFtZUxlbiA9IHN0cmxl bihpbmZvLT51c2VybmFtZSk7CisrCWlmIChpbmZvLT51c2VybmFtZSkKKysJCXVzZXJuYW1lTGVu ID0gc3RybGVuKGluZm8tPnVzZXJuYW1lKTsKKyAJaWYgKHVzZXJuYW1lTGVuID4gVUlOVDMyX01B WCkKKyAJCXJldHVybiBGQUxTRTsKKyAJU3RyZWFtX1dyaXRlX1VJTlQzMihzLCAoVUlOVDMyKSh1 c2VybmFtZUxlbiArIDEpICogMik7CitAQCAtMTQ1NywxMCArMTQ2MSwxMSBAQCBzdGF0aWMgQk9P TCByZHBfd3JpdGVfbG9nb25faW5mb19leCh3U3RyZWFtKiBzLCBsb2dvbl9pbmZvX2V4KiBpbmZv KQorIAorIEJPT0wgcmRwX3NlbmRfc2F2ZV9zZXNzaW9uX2luZm8ocmRwQ29udGV4dCogY29udGV4 dCwgVUlOVDMyIHR5cGUsIHZvaWQqIGRhdGEpCisgeworLQl3U3RyZWFtKiBzOworIAlCT09MIHN0 YXR1czsKKysKKysJV0lOUFJfQVNTRVJUKGNvbnRleHQpOworIAlyZHBSZHAqIHJkcCA9IGNvbnRl eHQtPnJkcDsKKy0JcyA9IHJkcF9kYXRhX3BkdV9pbml0KHJkcCk7CisrCXdTdHJlYW0qIHMgPSBy ZHBfZGF0YV9wZHVfaW5pdChyZHApOworIAorIAlpZiAoIXMpCisgCQlyZXR1cm4gRkFMU0U7Cist LSAKKzIuNTMuMAorCgpkaWZmIC0tZ2l0IGEvY29yZS1tZXNzYWdlLWZpeC11cGRhdGVfbWVzc2Fn ZV9XaW5kb3dJY29uLnBhdGNoIGIvY29yZS1tZXNzYWdlLWZpeC11cGRhdGVfbWVzc2FnZV9XaW5k b3dJY29uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2NDgxYjEK LS0tIC9kZXYvbnVsbAorKysgYi9jb3JlLW1lc3NhZ2UtZml4LXVwZGF0ZV9tZXNzYWdlX1dpbmRv d0ljb24ucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorRnJvbSA5Mzk3ZmJlZWQ0YjI4NjJhZTY4Zjk1 NTY5NTBhZjQxNTE2M2M5Mzk4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQXJtaW4g Tm92YWsgPGFybWluLm5vdmFrQHRoaW5jYXN0LmNvbT4KK0RhdGU6IFR1ZSwgNyBKdWwgMjAyNiAx Mjo1ODoxMSArMDIwMAorU3ViamVjdDogW1BBVENIXSBbY29yZSxtZXNzYWdlXSBmaXggdXBkYXRl X21lc3NhZ2VfV2luZG93SWNvbgorCistLS0KKyBsaWJmcmVlcmRwL2NvcmUvbWVzc2FnZS5jIHwg NyArKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMo LSkKKworZGlmZiAtLWdpdCBhL2xpYmZyZWVyZHAvY29yZS9tZXNzYWdlLmMgYi9saWJmcmVlcmRw L2NvcmUvbWVzc2FnZS5jCitpbmRleCA3YWYyOWU5NGQuLjFhYjBkNGU0ZSAxMDA2NDQKKy0tLSBh L2xpYmZyZWVyZHAvY29yZS9tZXNzYWdlLmMKKysrKyBiL2xpYmZyZWVyZHAvY29yZS9tZXNzYWdl LmMKK0BAIC0xMTQ3LDE4ICsxMTQ3LDIxIEBAIHN0YXRpYyBCT09MIHVwZGF0ZV9tZXNzYWdlX1dp bmRvd0ljb24ocmRwQ29udGV4dCogY29udGV4dCwgY29uc3QgV0lORE9XX09SREVSX0lOCisgCWlm ICghd1BhcmFtKQorIAkJcmV0dXJuIEZBTFNFOworCistCUNvcHlNZW1vcnkod1BhcmFtLCBvcmRl ckluZm8sIHNpemVvZihXSU5ET1dfT1JERVJfSU5GTykpOworKwkqd1BhcmFtID0gKm9yZGVySW5m bzsKKysKKyAJbFBhcmFtID0gKFdJTkRPV19JQ09OX09SREVSKiljYWxsb2MoMSwgc2l6ZW9mKFdJ TkRPV19JQ09OX09SREVSKSk7CisKKyAJaWYgKCFsUGFyYW0pCisgCQlnb3RvIG91dF9mYWlsOwor CisrCSpsUGFyYW0gPSAqd2luZG93SWNvbjsKKyAJbFBhcmFtLT5pY29uSW5mbyA9IGNhbGxvYygx LCBzaXplb2YoSUNPTl9JTkZPKSk7CisKKyAJaWYgKCFsUGFyYW0tPmljb25JbmZvKQorIAkJZ290 byBvdXRfZmFpbDsKKworLQlDb3B5TWVtb3J5KGxQYXJhbSwgd2luZG93SWNvbiwgc2l6ZW9mKFdJ TkRPV19JQ09OX09SREVSKSk7CisrCSpsUGFyYW0tPmljb25JbmZvID0gKndpbmRvd0ljb24tPmlj b25JbmZvOworKworIAlXTG9nX1ZSQihUQUcsICJ1cGRhdGVfbWVzc2FnZV9XaW5kb3dJY29uIik7 CisKKyAJaWYgKHdpbmRvd0ljb24tPmljb25JbmZvLT5jYkJpdHNDb2xvciA+IDApCgpkaWZmIC0t Z2l0IGEvY29yZS1yZWRpcmVjdGlvbi1jaGVjay1yZWRpcmVjdGlvbi12YWx1ZXMtZm9yLXZhbGlk aXR5LnBhdGNoIGIvY29yZS1yZWRpcmVjdGlvbi1jaGVjay1yZWRpcmVjdGlvbi12YWx1ZXMtZm9y LXZhbGlkaXR5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzNjA1 MDAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlLXJlZGlyZWN0aW9uLWNoZWNrLXJlZGlyZWN0aW9u LXZhbHVlcy1mb3ItdmFsaWRpdHkucGF0Y2gKQEAgLTAsMCArMSwxNjMgQEAKK0Zyb20gY2RhYmM3 OGZjNTBhNWExODU5ZmFlYmMxZTQxYTNkZmJiZDAwNzM0MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKK0Zyb206IEFybWluIE5vdmFrIDxhcm1pbi5ub3Zha0B0aGluY2FzdC5jb20+CitEYXRlOiBU aHUsIDkgSnVsIDIwMjYgMDg6MzQ6MjQgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gW2NvcmUscmVk aXJlY3Rpb25dIGNoZWNrIHJlZGlyZWN0aW9uIHZhbHVlcyBmb3IgdmFsaWRpdHkKKworQWRkIHNv bWUgYmFzaWMgdmFsaWRpdHkgY2hlY2tzIGZvciBkYXRhIHByb3ZpZGVkIGJ5IHNlcnZlci4KKy0t LQorIGxpYmZyZWVyZHAvY29yZS9yZWRpcmVjdGlvbi5jIHwgMjUgKysrKysrKysrKysrKysrKysr KystLS0tLQorIGxpYmZyZWVyZHAvY29yZS91dGlscy5jICAgICAgIHwgMzMgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCisgbGliZnJlZXJkcC9jb3JlL3V0aWxzLmggICAgICAgfCAg MiArKworIDMgZmlsZXMgY2hhbmdlZCwgNTUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkK KworZGlmZiAtLWdpdCBhL2xpYmZyZWVyZHAvY29yZS9yZWRpcmVjdGlvbi5jIGIvbGliZnJlZXJk cC9jb3JlL3JlZGlyZWN0aW9uLmMKK2luZGV4IDU5YzZkYmNlZS4uYjRiMjIyZWIyIDEwMDY0NAor LS0tIGEvbGliZnJlZXJkcC9jb3JlL3JlZGlyZWN0aW9uLmMKKysrKyBiL2xpYmZyZWVyZHAvY29y ZS9yZWRpcmVjdGlvbi5jCitAQCAtNDA2LDYgKzQwNiw4IEBAIHN0YXRpYyBpbnQgcmRwX3JlY3Zf c2VydmVyX3JlZGlyZWN0aW9uX3BkdShyZHBSZHAqIHJkcCwgd1N0cmVhbSogcykKKyAJeworIAkJ aWYgKCFyZHBfcmVkaXJlY3Rpb25fcmVhZF91bmljb2RlX3N0cmluZyhzLCAmKHJlZGlyZWN0aW9u LT5UYXJnZXROZXRBZGRyZXNzKSwgODApKQorIAkJCXJldHVybiAtMTsKKysJCWlmICghdXRpbHNf aXNfdmFsaWRfaXAocmVkaXJlY3Rpb24tPlRhcmdldE5ldEFkZHJlc3MpKQorKwkJCXJldHVybiAt MTsKKyAJfQorCisgCWlmIChyZWRpcmVjdGlvbi0+ZmxhZ3MgJiBMQl9MT0FEX0JBTEFOQ0VfSU5G TykKK0BAIC00MTksMTMgKzQyMSwxNyBAQCBzdGF0aWMgaW50IHJkcF9yZWN2X3NlcnZlcl9yZWRp cmVjdGlvbl9wZHUocmRwUmRwKiByZHAsIHdTdHJlYW0qIHMpCisgCQlpZiAoIXJkcF9yZWRpcmVj dGlvbl9yZWFkX2RhdGEoTEJfTE9BRF9CQUxBTkNFX0lORk8sIHMsICZyZWRpcmVjdGlvbi0+TG9h ZEJhbGFuY2VJbmZvTGVuZ3RoLAorIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZy ZWRpcmVjdGlvbi0+TG9hZEJhbGFuY2VJbmZvKSkKKyAJCQlyZXR1cm4gLTE7CisrCQlpZiAoIXdp bnByX3N0cl9pc192YWxpZF91cmxOKChjb25zdCBjaGFyKilyZWRpcmVjdGlvbi0+TG9hZEJhbGFu Y2VJbmZvLAorKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdGlvbi0+TG9h ZEJhbGFuY2VJbmZvTGVuZ3RoKSkKKysJCQlyZXR1cm4gLTE7CisgCX0KKworIAlpZiAocmVkaXJl Y3Rpb24tPmZsYWdzICYgTEJfVVNFUk5BTUUpCisgCXsKKyAJCWlmICghcmRwX3JlZGlyZWN0aW9u X3JlYWRfdW5pY29kZV9zdHJpbmcocywgJihyZWRpcmVjdGlvbi0+VXNlcm5hbWUpLCA1MTIpKQor IAkJCXJldHVybiAtMTsKKy0KKysJCWlmICh3aW5wcl9zdHJfaGFzX25ld2xpbmVzKHJlZGlyZWN0 aW9uLT5Vc2VybmFtZSkpCisrCQkJcmV0dXJuIC0xOworIAkJV0xvZ19EQkcoVEFHLCAiVXNlcm5h bWU6ICVzIiwgcmVkaXJlY3Rpb24tPlVzZXJuYW1lKTsKKyAJfQorCitAQCAtNDMzLDcgKzQzOSw4 IEBAIHN0YXRpYyBpbnQgcmRwX3JlY3Zfc2VydmVyX3JlZGlyZWN0aW9uX3BkdShyZHBSZHAqIHJk cCwgd1N0cmVhbSogcykKKyAJeworIAkJaWYgKCFyZHBfcmVkaXJlY3Rpb25fcmVhZF91bmljb2Rl X3N0cmluZyhzLCAmKHJlZGlyZWN0aW9uLT5Eb21haW4pLCA1MikpCisgCQkJcmV0dXJuIC0xOwor LQorKwkJaWYgKHdpbnByX3N0cl9oYXNfbmV3bGluZXMocmVkaXJlY3Rpb24tPkRvbWFpbikpCisr CQkJcmV0dXJuIC0xOworIAkJV0xvZ19EQkcoVEFHLCAiRG9tYWluOiAlcyIsIHJlZGlyZWN0aW9u LT5Eb21haW4pOworIAl9CisKK0BAIC00ODQsNyArNDkxLDggQEAgc3RhdGljIGludCByZHBfcmVj dl9zZXJ2ZXJfcmVkaXJlY3Rpb25fcGR1KHJkcFJkcCogcmRwLCB3U3RyZWFtKiBzKQorIAl7Cisg CQlpZiAoIXJkcF9yZWRpcmVjdGlvbl9yZWFkX3VuaWNvZGVfc3RyaW5nKHMsICYocmVkaXJlY3Rp b24tPlRhcmdldEZRRE4pLCA1MTIpKQorIAkJCXJldHVybiAtMTsKKy0KKysJCWlmICghd2lucHJf c3RyX2lzX3ZhbGlkX3VybChyZWRpcmVjdGlvbi0+VGFyZ2V0RlFETikpCisrCQkJcmV0dXJuIC0x OworIAkJV0xvZ19EQkcoVEFHLCAiVGFyZ2V0RlFETjogJXMiLCByZWRpcmVjdGlvbi0+VGFyZ2V0 RlFETik7CisgCX0KKworQEAgLTQ5Miw3ICs1MDAsOCBAQCBzdGF0aWMgaW50IHJkcF9yZWN2X3Nl cnZlcl9yZWRpcmVjdGlvbl9wZHUocmRwUmRwKiByZHAsIHdTdHJlYW0qIHMpCisgCXsKKyAJCWlm ICghcmRwX3JlZGlyZWN0aW9uX3JlYWRfdW5pY29kZV9zdHJpbmcocywgJihyZWRpcmVjdGlvbi0+ VGFyZ2V0TmV0Qmlvc05hbWUpLCAzMikpCisgCQkJcmV0dXJuIC0xOworLQorKwkJaWYgKCF3aW5w cl9zdHJfaXNfdmFsaWRfdXJsKHJlZGlyZWN0aW9uLT5UYXJnZXROZXRCaW9zTmFtZSkpCisrCQkJ cmV0dXJuIC0xOworIAkJV0xvZ19EQkcoVEFHLCAiVGFyZ2V0TmV0Qmlvc05hbWU6ICVzIiwgcmVk aXJlY3Rpb24tPlRhcmdldE5ldEJpb3NOYW1lKTsKKyAJfQorCitAQCAtNTAxLDYgKzUxMCw4IEBA IHN0YXRpYyBpbnQgcmRwX3JlY3Zfc2VydmVyX3JlZGlyZWN0aW9uX3BkdShyZHBSZHAqIHJkcCwg d1N0cmVhbSogcykKKyAJCWlmICghcmRwX3JlZGlyZWN0aW9uX3JlYWRfZGF0YShMQl9DTElFTlRf VFNWX1VSTCwgcywgJnJlZGlyZWN0aW9uLT5Uc3ZVcmxMZW5ndGgsCisgCQkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJnJlZGlyZWN0aW9uLT5Uc3ZVcmwpKQorIAkJCXJldHVybiAtMTsK KysJCWlmICghd2lucHJfc3RyX2lzX3ZhbGlkX3VybE4oKGNvbnN0IGNoYXIqKXJlZGlyZWN0aW9u LT5Uc3ZVcmwsIHJlZGlyZWN0aW9uLT5Uc3ZVcmxMZW5ndGgpKQorKwkJCXJldHVybiAtMTsKKyAJ fQorCisgCWlmIChyZWRpcmVjdGlvbi0+ZmxhZ3MgJiBMQl9SRURJUkVDVElPTl9HVUlEKQorQEAg LTU0MSw3ICs1NTIsOCBAQCBzdGF0aWMgaW50IHJkcF9yZWN2X3NlcnZlcl9yZWRpcmVjdGlvbl9w ZHUocmRwUmRwKiByZHAsIHdTdHJlYW0qIHMpCisgCQl7CisgCQkJaWYgKCFyZHBfcmVkaXJlY3Rp b25fcmVhZF91bmljb2RlX3N0cmluZyhzLCAmKHJlZGlyZWN0aW9uLT5UYXJnZXROZXRBZGRyZXNz ZXNbaV0pLCA4MCkpCisgCQkJCXJldHVybiAtMTsKKy0KKysJCQlpZiAoIXV0aWxzX2lzX3ZhbGlk X2lwKHJlZGlyZWN0aW9uLT5UYXJnZXROZXRBZGRyZXNzZXNbaV0pKQorKwkJCQlyZXR1cm4gLTE7 CisgCQkJV0xvZ19EQkcoVEFHLCAiVGFyZ2V0TmV0QWRkcmVzc2VzWyUiIFBSSXV6ICJdOiAlcyIs IGksCisgCQkJICAgICAgICAgcmVkaXJlY3Rpb24tPlRhcmdldE5ldEFkZHJlc3Nlc1tpXSk7Cisg CQl9CitAQCAtNTY5LDcgKzU4MSwxMCBAQCBpbnQgcmRwX3JlY3ZfZW5oYW5jZWRfc2VjdXJpdHlf cmVkaXJlY3Rpb25fcGFja2V0KHJkcFJkcCogcmRwLCB3U3RyZWFtKiBzKQorIAlzdGF0dXMgPSBy ZHBfcmVjdl9zZXJ2ZXJfcmVkaXJlY3Rpb25fcGR1KHJkcCwgcyk7CisKKyAJaWYgKHN0YXR1cyA8 IDApCisrCXsKKysJCVdMb2dfRVJSKFRBRywgInJlZGlyZWN0aW9uIHBhY2tldCBpbnZhbGlkLCBh Ym9ydGluZyIpOworIAkJcmV0dXJuIHN0YXR1czsKKysJfQorCisgCWlmIChTdHJlYW1fR2V0UmVt YWluaW5nTGVuZ3RoKHMpID49IDEpCisgCXsKK2RpZmYgLS1naXQgYS9saWJmcmVlcmRwL2NvcmUv dXRpbHMuYyBiL2xpYmZyZWVyZHAvY29yZS91dGlscy5jCitpbmRleCAxMzljMWE0MzMuLjEwMjgx OTkxNSAxMDA2NDQKKy0tLSBhL2xpYmZyZWVyZHAvY29yZS91dGlscy5jCisrKysgYi9saWJmcmVl cmRwL2NvcmUvdXRpbHMuYworQEAgLTIyLDYgKzIyLDE2IEBACisgI2luY2x1ZGUgImNvbmZpZy5o IgorICNlbmRpZgorCisrI2luY2x1ZGUgPHN0cmluZy5oPgorKworKyNpZmRlZiBfV0lOMzIKKysj aW5jbHVkZSA8d3MydGNwaXAuaD4KKysjZWxzZQorKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Cisr I2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKysjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CisrI2VuZGlm CisrCisgI2luY2x1ZGUgPHdpbnByL2Fzc2VydC5oPgorCisgI2luY2x1ZGUgPGZyZWVyZHAvZnJl ZXJkcC5oPgorQEAgLTY1LDMgKzc1LDI2IEBAIEJPT0wgdXRpbHNfc3RyX2lzX2VtcHR5KGNvbnN0 IGNoYXIqIHN0cikKKyAJCXJldHVybiBUUlVFOworIAlyZXR1cm4gRkFMU0U7CisgfQorKworK3N0 YXRpYyBCT09MIGlzVmFsaWRJUHY0KGNvbnN0IGNoYXIqIGlwQWRkcmVzcykKKyt7CisrCXN0cnVj dCBzb2NrYWRkcl9pbiBzYTsKKysJaW50IHJlc3VsdDsKKysJbWVtc2V0KCZzYSwgMCwgc2l6ZW9m KHNhKSk7CisrCXJlc3VsdCA9IGluZXRfcHRvbihBRl9JTkVULCBpcEFkZHJlc3MsICYoc2Euc2lu X2FkZHIpKTsKKysJcmV0dXJuIHJlc3VsdCAhPSAwOworK30KKysKKytzdGF0aWMgQk9PTCBpc1Zh bGlkSVB2Nihjb25zdCBjaGFyKiBpcEFkZHJlc3MpCisreworKwlzdHJ1Y3Qgc29ja2FkZHJfaW42 IHNhOworKwlpbnQgcmVzdWx0OworKwltZW1zZXQoJnNhLCAwLCBzaXplb2Yoc2EpKTsKKysJcmVz dWx0ID0gaW5ldF9wdG9uKEFGX0lORVQ2LCBpcEFkZHJlc3MsICYoc2Euc2luNl9hZGRyKSk7Cisr CXJldHVybiByZXN1bHQgIT0gMDsKKyt9CisrCisrQk9PTCB1dGlsc19pc192YWxpZF9pcChjb25z dCBjaGFyKiBpcEFkZHJlc3MpCisreworKwlyZXR1cm4gaXNWYWxpZElQdjQoaXBBZGRyZXNzKSB8 fCBpc1ZhbGlkSVB2NihpcEFkZHJlc3MpOworK30KK2RpZmYgLS1naXQgYS9saWJmcmVlcmRwL2Nv cmUvdXRpbHMuaCBiL2xpYmZyZWVyZHAvY29yZS91dGlscy5oCitpbmRleCA0MzI5NTE4MTIuLjRi MTUwYzQxNiAxMDA2NDQKKy0tLSBhL2xpYmZyZWVyZHAvY29yZS91dGlscy5oCisrKysgYi9saWJm cmVlcmRwL2NvcmUvdXRpbHMuaAorQEAgLTMwLDQgKzMwLDYgQEAgQk9PTCB1dGlsc19hYm9ydF9j b25uZWN0KHJkcENvbnRleHQqIGNvbnRleHQpOworIEJPT0wgdXRpbHNfc3RyX2lzX2VtcHR5KGNv bnN0IGNoYXIqIHN0cik7CisgQk9PTCB1dGlsc19zdHJfY29weShjb25zdCBjaGFyKiB2YWx1ZSwg Y2hhcioqIGRzdCk7CisKKytGUkVFUkRQX0xPQ0FMIEJPT0wgdXRpbHNfaXNfdmFsaWRfaXAoY29u c3QgY2hhciogaXBBZGRyZXNzKTsKKysKKyAjZW5kaWYgLyogRlJFRVJEUF9MSUJfQ09SRV9VVElM U19IICovCgpkaWZmIC0tZ2l0IGEvY29yZS1yZWRpcmVjdGlvbi1yZWxheC1jaGVja3MucGF0Y2gg Yi9jb3JlLXJlZGlyZWN0aW9uLXJlbGF4LWNoZWNrcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5hMDAzZTRjCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS1yZWRpcmVj dGlvbi1yZWxheC1jaGVja3MucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSBiM2NmZjY1YTFh ZGJiZGVkYTQ3OGYwMzUyMThlZWFkYzcyY2EwMDMyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQor RnJvbTogQXJtaW4gTm92YWsgPGFybWluLm5vdmFrQHRoaW5jYXN0LmNvbT4KK0RhdGU6IFR1ZSwg MTQgSnVsIDIwMjYgMTI6MzA6MjcgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gW2NvcmUscmVkaXJl Y3Rpb25dIHJlbGF4IGNoZWNrcworCisqIFRzdlVybCBpcyBvcGFxdWUsIGRvIG5vdCBhc3N1bWUg YW55IGZvcm1hdAorKiBMb2FkQmFsYW5jZUluZm8gaXMgb3BhcXVlLCBkbyBub3QgYXNzdW1lIGFu eSBmb3JtYXQKKy0tLQorIGxpYmZyZWVyZHAvY29yZS9yZWRpcmVjdGlvbi5jIHwgNSAtLS0tLQor IDEgZmlsZSBjaGFuZ2VkLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliZnJlZXJk cC9jb3JlL3JlZGlyZWN0aW9uLmMgYi9saWJmcmVlcmRwL2NvcmUvcmVkaXJlY3Rpb24uYworaW5k ZXggYjRiMjIyZWIyLi43NzM0OTY2MDMgMTAwNjQ0CistLS0gYS9saWJmcmVlcmRwL2NvcmUvcmVk aXJlY3Rpb24uYworKysrIGIvbGliZnJlZXJkcC9jb3JlL3JlZGlyZWN0aW9uLmMKK0BAIC00MjEs OSArNDIxLDYgQEAgc3RhdGljIGludCByZHBfcmVjdl9zZXJ2ZXJfcmVkaXJlY3Rpb25fcGR1KHJk cFJkcCogcmRwLCB3U3RyZWFtKiBzKQorIAkJaWYgKCFyZHBfcmVkaXJlY3Rpb25fcmVhZF9kYXRh KExCX0xPQURfQkFMQU5DRV9JTkZPLCBzLCAmcmVkaXJlY3Rpb24tPkxvYWRCYWxhbmNlSW5mb0xl bmd0aCwKKyAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVkaXJlY3Rpb24tPkxv YWRCYWxhbmNlSW5mbykpCisgCQkJcmV0dXJuIC0xOworLQkJaWYgKCF3aW5wcl9zdHJfaXNfdmFs aWRfdXJsTigoY29uc3QgY2hhciopcmVkaXJlY3Rpb24tPkxvYWRCYWxhbmNlSW5mbywKKy0JCSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3Rpb24tPkxvYWRCYWxhbmNlSW5mb0xl bmd0aCkpCistCQkJcmV0dXJuIC0xOworIAl9CisKKyAJaWYgKHJlZGlyZWN0aW9uLT5mbGFncyAm IExCX1VTRVJOQU1FKQorQEAgLTUxMCw4ICs1MDcsNiBAQCBzdGF0aWMgaW50IHJkcF9yZWN2X3Nl cnZlcl9yZWRpcmVjdGlvbl9wZHUocmRwUmRwKiByZHAsIHdTdHJlYW0qIHMpCisgCQlpZiAoIXJk cF9yZWRpcmVjdGlvbl9yZWFkX2RhdGEoTEJfQ0xJRU5UX1RTVl9VUkwsIHMsICZyZWRpcmVjdGlv bi0+VHN2VXJsTGVuZ3RoLAorIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZWRp cmVjdGlvbi0+VHN2VXJsKSkKKyAJCQlyZXR1cm4gLTE7CistCQlpZiAoIXdpbnByX3N0cl9pc192 YWxpZF91cmxOKChjb25zdCBjaGFyKilyZWRpcmVjdGlvbi0+VHN2VXJsLCByZWRpcmVjdGlvbi0+ VHN2VXJsTGVuZ3RoKSkKKy0JCQlyZXR1cm4gLTE7CisgCX0KKworIAlpZiAocmVkaXJlY3Rpb24t PmZsYWdzICYgTEJfUkVESVJFQ1RJT05fR1VJRCkKCmRpZmYgLS1naXQgYS9jcnlwdG8tYmFzZTY0 LWVuc3VyZS1jaGFyLWlzLXNpbmdlbmQucGF0Y2ggYi9jcnlwdG8tYmFzZTY0LWVuc3VyZS1jaGFy LWlzLXNpbmdlbmQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZi YTljOAotLS0gL2Rldi9udWxsCisrKyBiL2NyeXB0by1iYXNlNjQtZW5zdXJlLWNoYXItaXMtc2lu Z2VuZC5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIDdlMTc1OWM3MzkwMDJkYzk1ZDhmMTU2 NzJkMGY3MDBjYThkY2NlMGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBPbmRyZWog SG9seSA8b2hvbHlAcmVkaGF0LmNvbT4KK0RhdGU6IFR1ZSwgMTcgRmViIDIwMjYgMTQ6MjM6Mjkg KzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gW2NyeXB0byxiYXNlNjRdIGVuc3VyZSBjaGFyIGlzIHNp bmdlbmQKKworQmFja3BvcnQgb2YgY29tbWl0IDYyYTllNzg3ZWRiMmNmY2U5ODU4ZmE0Y2VkYTU0 NjE2ODBlZmM1OTAuCisKK0NvLUF1dGhvcmVkLUJ5OiBDdXJzb3IgPGN1cnNvcmFnZW50QGN1cnNv ci5jb20+CistLS0KKyBsaWJmcmVlcmRwL2NyeXB0by9iYXNlNjQuYyB8IDQgKysrKworIDEgZmls ZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2xpYmZyZWVyZHAvY3J5 cHRvL2Jhc2U2NC5jIGIvbGliZnJlZXJkcC9jcnlwdG8vYmFzZTY0LmMKK2luZGV4IDVhNWRhODlh NC4uYzA4NGRlMzhlIDEwMDY0NAorLS0tIGEvbGliZnJlZXJkcC9jcnlwdG8vYmFzZTY0LmMKKysr KyBiL2xpYmZyZWVyZHAvY3J5cHRvL2Jhc2U2NC5jCitAQCAtOTMsNiArOTMsMTAgQEAgY2hhciog Y3J5cHRvX2Jhc2U2NF9lbmNvZGUoY29uc3QgQllURSogZGF0YSwgaW50IGxlbmd0aCkKKyAKKyBz dGF0aWMgaW50IGJhc2U2NF9kZWNvZGVfY2hhcihjaGFyIGMpCisgeworKwkvKiBlbnN1cmUgY2hh ciBpcyBzaWduZWQgZm9yIHRoaXMgY2hlY2sgKi8KKysJaWYgKChpbnQpYyA8PSAnXDAnKQorKwkJ cmV0dXJuIC0xOworKworIAlpZiAoYyA+PSAnQScgJiYgYyA8PSAnWicpCisgCQlyZXR1cm4gYyAt ICdBJzsKKyAKKy0tIAorMi41Mi4wCisKCmRpZmYgLS1naXQgYS9mcmVlcmRwMi5zcGVjIGIvZnJl ZXJkcDIuc3BlYwppbmRleCAyODcwZjg3Li5hNDVjNmQ0IDEwMDY0NAotLS0gYS9mcmVlcmRwMi5z cGVjCisrKyBiL2ZyZWVyZHAyLnNwZWMKQEAgLTI2LDcgKzI2LDcgQEAKIAogTmFtZTogICAgICAg ICAgIGZyZWVyZHAyCiBWZXJzaW9uOiAgICAgICAgMi4xMS43Ci1SZWxlYXNlOiAgICAgICAgNiV7 P2Rpc3R9CitSZWxlYXNlOiAgICAgICAgNyV7P2Rpc3R9CiBTdW1tYXJ5OiAgICAgICAgRnJlZSBp bXBsZW1lbnRhdGlvbiBvZiB0aGUgUmVtb3RlIERlc2t0b3AgUHJvdG9jb2wgKFJEUCkKIAogIyBU aGUgZWZmZWN0aXZlIGxpY2Vuc2UgaXMgQXBhY2hlLTIuMCBidXQ6CkBAIC00Miw2ICs0MiwxMzcg QEAgVVJMOiAgICAgICAgICAgIGh0dHA6Ly93d3cuZnJlZXJkcC5jb20vCiBTb3VyY2UwOiAgICAg ICAgRnJlZVJEUC0le3ZlcnNpb259LXJlcGFjay50YXIuZ3oKIFNvdXJjZTE6ICAgICAgICBmcmVl cmRwX2Rvd25sb2FkX2FuZF9yZXBhY2suc2gKIAorIyBDVkUtMjAyNi0yMzUzMgorUGF0Y2g6ICAg ICAgICAgIGdkaS1nZngtcHJvcGVybHktY2xhbXAtU3VyZmFjZVRvU3VyZmFjZS5wYXRjaAorCisj IENWRS0yMDI2LTIzNTMzCitQYXRjaDogICAgICAgICAgY29kZWMtY2xlYXItZml4LWNsZWFyX3Jl c2l6ZV9idWZmZXItY2hlY2tzLnBhdGNoCisKKyMgQ1ZFLTIwMjYtMjM1MzQKK1BhdGNoOiAgICAg ICAgICBjb2RlYy1jbGVhci1maXgtb2ZmLWJ5LW9uZS1sZW5ndGgtY2hlY2sucGF0Y2gKKworIyBD VkUtMjAyNi0yMzUzMAorUGF0Y2g6ICAgICAgICAgIGNvZGVjLXBsYW5hci1maXgtZGVjb2Rlci1s ZW5ndGgtY2hlY2tzLnBhdGNoCisKKyMgQ1ZFLTIwMjYtMjM1MzEKK1BhdGNoOiAgICAgICAgICBj b2RlYy1jbGVhci1jaGVjay1jbGVhcl9kZWNvbXJlc3MtZ2x5cGhEYXRhLnBhdGNoCisKKyMgQ1ZF LTIwMjYtMjM4ODMKK1BhdGNoOiAgICAgICAgICBjbGllbnQteDExLWZpeC1kb3VibGUtZnJlZS1p bi1jYXNlLW9mLWludmFsaWQtcG9pbnRlLnBhdGNoCisKKyMgQ1ZFLTIwMjYtMjM4ODQKK1BhdGNo OiAgICAgICAgICBjYWNoZS1vZmZzY3JlZW4taW52YWxpZGF0ZS1iaXRtYXAtYmVmb3JlLWZyZWUu cGF0Y2gKKworIyBDVkUtMjAyNi0yMjg1NQorUGF0Y2g6ICAgICAgICAgIHV0aWxzLXNtYXJ0Y2Fy ZC1hZGQtbGVuZ3RoLXZhbGlkaXR5LWNoZWNrcy5wYXRjaAorCisjIENWRS0yMDI2LTIyODU4CitQ YXRjaDogICAgICAgICAgY3J5cHRvLWJhc2U2NC1lbnN1cmUtY2hhci1pcy1zaW5nZW5kLnBhdGNo CisKKyMgQ1ZFLTIwMjYtMjI4NTkKK1BhdGNoOiAgICAgICAgICBjaGFubmVscy11cmJkcmMtY2hl Y2staW50ZXJmYWNlLWluZGljZXMtYmVmb3JlLXVzZS5wYXRjaAorCisjIENWRS0yMDI2LTI2OTU1 CitQYXRjaDogICAgICAgICAgY29kZWMtY2xlYXItZml4LWRlc3RpbmF0aW9uLWNoZWNrcy5wYXRj aAorCisjIENWRS0yMDI2LTI2OTY1CitQYXRjaDogICAgICAgICAgY29kZWMtcGxhbmFyLWZpeC1t aXNzaW5nLWRlc3RpbmF0aW9uLWJvdW5kcy1jaGVja3MucGF0Y2gKKworIyBDVkUtMjAyNi0yMjg1 MgorUGF0Y2g6ICAgICAgICAgIGNoYW5uZWxzLWF1ZGluLWZyZWUtdXAtb2xkLWF1ZGlvLWZvcm1h dHMucGF0Y2gKKworIyBDVkUtMjAyNi0yMjg1NAorUGF0Y2g6ICAgICAgICAgIGNoYW5uZWxzLWRy aXZlLWZpeC1jb25zdGFudC10eXBlLnBhdGNoCisKKyMgQ1ZFLTIwMjYtMjI4NTYKK1BhdGNoOiAg ICAgICAgICBjaGFubmVscy1zZXJpYWwtbG9jay1saXN0LWRpY3Rpb25hcnkucGF0Y2gKK1BhdGNo OiAgICAgICAgICBjaGFubmVscy1zZXJpYWwtZXhwbGljaXRseS1sb2NrLXNlcmlhbC1JcnBUaHJl YWRzLnBhdGNoCisKKyMgQ1ZFLTIwMjYtMjM3MzIKK1BhdGNoOiAgICAgICAgICBjb2RlYy1jb2xv ci1hZGQtZnJlZXJkcF9nbHlwaF9jb252ZXJ0X2V4LnBhdGNoCitQYXRjaDogICAgICAgICAgZ2Rp LWdyYXBoaWNzLVVzZS1mcmVlcmRwX2dseXBoX2NvbnZlcnRfZXgucGF0Y2gKKworIyBDVkUtMjAy Ni0yMzk0OAorUGF0Y2g6ICAgICAgICAgIGNvcmUtaW5mby1maXgtbWlzc2luZy1OVUxMLWNoZWNr LnBhdGNoCisKKyMgQ1ZFLTIwMjYtMjQ0OTEKK1BhdGNoOiAgICAgICAgICBjaGFubmVscy1kcmR5 bnZjLXJlc2V0LWNoYW5uZWxfY2FsbGJhY2stYmVmb3JlLWNsb3NlLnBhdGNoCitQYXRjaDogICAg ICAgICAgY2hhbm5lbHMtdmlkZW8tdW5pZnktZXJyb3ItaGFuZGxpbmcucGF0Y2gKK1BhdGNoOiAg ICAgICAgICBjaGFubmVscy12aWRlby1maXgtd3JvbmctY2FzdC5wYXRjaAorCisjIENWRS0yMDI2 LTI0Njc1CitQYXRjaDogICAgICAgICAgY2hhbm5lbHMtdXJiZHJjLWRvLW5vdC1mcmVlLU1zQ29u ZmlnLW9uLWZhaWx1cmUucGF0Y2gKKworIyBDVkUtMjAyNi0yNDY3NgorUGF0Y2g6ICAgICAgICAg IGNoYW5uZWxzLWF1ZGluLXJlc2V0LWF1ZGluLWZvcm1hdC5wYXRjaAorCisjIENWRS0yMDI2LTI0 Njc5CitQYXRjaDogICAgICAgICAgY2hhbm5lbHMtdXJiZHJjLWVuc3VyZS1JbnRlcmZhY2VOdW1i ZXItaXMtd2l0aGluLXJhbi5wYXRjaAorCisjIENWRS0yMDI2LTI0NjgxCitQYXRjaDogICAgICAg ICAgY2hhbm5lbHMtdXJiZHJjLWNhbmNlbC1hbGwtdXNiLXRyYW5zZmVycy1vbi1jaGFubmVsLS5w YXRjaAorCisjIENWRS0yMDI2LTI0NjgzCitQYXRjaDogICAgICAgICAgY2hhbm5lbHMtYWlucHV0 LWxvY2stY29udGV4dC13aGVuLXVwZGF0aW5nLWxpc3RlbmVyLnBhdGNoCisKKyMgQ1ZFLTIwMjYt MjQ2ODQKK1BhdGNoOiAgICAgICAgICBjaGFubmVscy1yZHBzbmQtdGVybWluYXRlLXRocmVhZC1i ZWZvcmUtZnJlZS5wYXRjaAorUGF0Y2g6ICAgICAgICAgIGNoYW5uZWwtcmRwc25kLW9ubHktY2xl YW4tdXAtdGhyZWFkLWJlZm9yZS1mcmVlLnBhdGNoCisKKyMgQ1ZFLTIwMjYtMzE4MDYKK1BhdGNo OiAgICAgICAgICBjb2RlYy1uc2MtbGltaXQtY29weS1hcmVhLWluLW5zY19wcm9jZXNzX21lc3Nh Z2UucGF0Y2gKK1BhdGNoOiAgICAgICAgICBjb2RlYy1uc2MtZml4LXVzZS1vZi1uc2NfcHJvY2Vz c19tZXNzYWdlLnBhdGNoCisKKyMgQ1ZFLTIwMjYtMzM5ODQKK1BhdGNoOiAgICAgICAgICBjb2Rl Yy1jbGVhci11cGRhdGUtQ0xFQVJfVkJBUl9FTlRSWS1zaXplLWFmdGVyLWFsbG9jLnBhdGNoCisK KyMgQ1ZFLTIwMjYtMzM5ODMKK1BhdGNoOiAgICAgICAgICBjb2RlYy1wcm9ncmVzc2l2ZS1mYWls LXByb2dyZXNzaXZlX3JmeF9xdWFudF9zdWItb24taW52YWxpZC12YWx1ZXMucGF0Y2gKK1BhdGNo OiAgICAgICAgICBjb2RlYy1wcm9ncmVzc2l2ZS1maXgtdW5kZXJmbG93LWd1YXJkLWluLXByb2dy ZXNzaXZlX3JmeF9xdWFudF9zdWIucGF0Y2gKKworIyBDVkUtMjAyNi0yNjk4NgorUGF0Y2g6ICAg ICAgICAgIGNsaWVudC14MTEtZml4LXhmX3JhaWxfd2luZG93X2NvbW1vbi1jbGVhbnVwLnBhdGNo CisKKyMgQ1ZFLTIwMjYtMjc5NTEKK1BhdGNoOiAgICAgICAgICBhbGxvY2F0aW9ucy1maXgtZ3Jv d3RoLW9mLXByZWFsbG9jYXRlZC1idWZmZXJzLnBhdGNoCisKKyMgQ1ZFLTIwMjYtMjk3NzUKK1Bh dGNoOiAgICAgICAgICBjYWNoZS1iaXRtYXAtb3ZlcmFsbG9jYXRlLWJpdG1hcC1jYWNoZS5wYXRj aAorUGF0Y2g6ICAgICAgICAgIGNhY2hlLWJpdG1hcC1pbml0aWFsaXplLW92ZXJhbGxvY2F0ZWQt Yml0bWFwLWNhY2hlLWV4dHJhLXNsb3QucGF0Y2gKKworIyBDVkUtMjAyNi0zMTg4NAorUGF0Y2g6 ICAgICAgICAgIGNvZGVjLWRzcC1hZGQtZm9ybWF0LWNoZWNrcy5wYXRjaAorCisjIENWRS0yMDI2 LTMxODgzCisjIENWRS0yMDI2LTMxODg1CitQYXRjaDogICAgICAgICAgY29kZWMtZHNwLWZpeC1h cnJheS1ib3VuZHMtY2hlY2tzLnBhdGNoCisKKyMgQ1ZFLTIwMjYtMzM5ODUKK1BhdGNoOiAgICAg ICAgICBjb2RlYy1jbGVhci11cGRhdGUtY2xlYXJfZ2x5cGhfZW50cnktY291bnQtYWZ0ZXItYWxs b2MucGF0Y2gKKworIyBDVkUtMjAyNi0yNTk1MgorUGF0Y2g6ICAgICAgICAgIGNsaWVudC14MTEt bG9jay1hcHB3aW5kb3cucGF0Y2gKK1BhdGNoOiAgICAgICAgICBjbGllbnQteDExLWltcHJvdmUt cmFpbHMtd2luZG93LWxvY2tpbmcucGF0Y2gKK1BhdGNoOiAgICAgICAgICBjbGllbnQteDExLXJl ZmFjdG9yLWxvY2tpbmcucGF0Y2gKK1BhdGNoOiAgICAgICAgICBjbGllbnQteDExLWZpeC1kZWFk bG9jay1vbi1vdXRwdXQtZXhwb3NlLnBhdGNoCisKKyMgQ1ZFLTIwMjYtNDU3MDAKK1BhdGNoOiAg ICAgICAgICBjb2RlYy1wbGFuYXItZml4LWJvdW5kcy1jaGVja3MucGF0Y2gKKworIyBDVkUtMjAy Ni02ODU4MAorUGF0Y2g6ICAgICAgICAgIGNoYW5uZWxzLWF1ZGluLWxpbWl0LUZyYW1lc1BlclBh Y2tldC5wYXRjaAorCisjIENWRS0yMDI2LTY3Mjk5CitQYXRjaDogICAgICAgICAgY29yZS1tZXNz YWdlLWZpeC11cGRhdGVfbWVzc2FnZV9XaW5kb3dJY29uLnBhdGNoCisKKyMgQ1ZFLTIwMjYtNjQ2 MjQKK1BhdGNoOiAgICAgICAgICBjbGllbnQtY29tbW9uLWRlYWN0aXZhdGUtY2xpLXBhcnNpbmct aW4tcmRwLWZpbGVzLnBhdGNoCisKKyMgQ1ZFLTIwMjYtNjcyODkKK1BhdGNoOiAgICAgICAgICB3 aW5wci1jcnQtYWRkLWZ1bmN0aW9ucy10by10ZXN0LXN0cmluZy5wYXRjaAorUGF0Y2g6ICAgICAg ICAgIGNvcmUtcmVkaXJlY3Rpb24tY2hlY2stcmVkaXJlY3Rpb24tdmFsdWVzLWZvci12YWxpZGl0 eS5wYXRjaAorUGF0Y2g6ICAgICAgICAgIGNvcmUtcmVkaXJlY3Rpb24tcmVsYXgtY2hlY2tzLnBh dGNoCisKIEJ1aWxkUmVxdWlyZXM6ICBnY2MKIEJ1aWxkUmVxdWlyZXM6ICBnY2MtYysrCiBCdWls ZFJlcXVpcmVzOiAgYWxzYS1saWItZGV2ZWwKQEAgLTE0Myw2ICsyNzQsOCBAQCBmaW5kIC4gLW5h bWUgIiouaCIgLWV4ZWMgY2htb2QgNjY0IHt9IFw7CiBmaW5kIC4gLW5hbWUgIiouYyIgLWV4ZWMg Y2htb2QgNjY0IHt9IFw7CiAKICVidWlsZAorIyBUT0RPOiBQbGVhc2Ugc3VibWl0IGFuIGlzc3Vl IHRvIHVwc3RyZWFtIChyaGJ6IzIzODA2MDcpCitleHBvcnQgQ01BS0VfUE9MSUNZX1ZFUlNJT05f TUlOSU1VTT0zLjUKICVjbWFrZSAlez9fY21ha2Vfc2tpcF9ycGF0aH0gXAogICAgIC1EQ01BS0Vf SU5TVEFMTF9MSUJESVI6UEFUSD0le19saWJ9IFwKICAgICAtRFdJVEhfQUxTQT1PTiBcCkBAIC0y NjgsNiArNDAxLDU0IEBAIHJtIC1yZnYgJXtidWlsZHJvb3R9JXtfYmluZGlyfQogJXtfbGliZGly fS9wa2djb25maWcvd2lucHItdG9vbHMyLnBjCiAKICVjaGFuZ2Vsb2cKKyogTW9uIEF1ZyAzMSAy MDI2IE9uZHJlaiBIb2x5IDxvaG9seUByZWRoYXQuY29tPiAtIDIuMTEuNy03CistIEJhY2twb3J0 IHNldmVyYWwgQ1ZFIGZpeGVzIChDVkUtMjAyNi0yMjg1MiwgQ1ZFLTIwMjYtMjI4NTQsIENWRS0y MDI2LTIyODU1LAorICBDVkUtMjAyNi0yMjg1NiwgQ1ZFLTIwMjYtMjI4NTgsIENWRS0yMDI2LTIy ODU5LCBDVkUtMjAyNi0yMzUzMCwKKyAgQ1ZFLTIwMjYtMjM1MzEsIENWRS0yMDI2LTIzNTMyLCBD VkUtMjAyNi0yMzUzMywgQ1ZFLTIwMjYtMjM1MzQsCisgIENWRS0yMDI2LTIzNzMyLCBDVkUtMjAy Ni0yMzg4MywgQ1ZFLTIwMjYtMjM4ODQsIENWRS0yMDI2LTIzOTQ4LAorICBDVkUtMjAyNi0yNDQ5 MSwgQ1ZFLTIwMjYtMjQ2NzUsIENWRS0yMDI2LTI0Njc2LCBDVkUtMjAyNi0yNDY3OSwKKyAgQ1ZF LTIwMjYtMjQ2ODEsIENWRS0yMDI2LTI0NjgzLCBDVkUtMjAyNi0yNDY4NCwgQ1ZFLTIwMjYtMjU5 NTIsCisgIENWRS0yMDI2LTI2OTU1LCBDVkUtMjAyNi0yNjk2NSwgQ1ZFLTIwMjYtMjY5ODYsIENW RS0yMDI2LTI3OTUxLAorICBDVkUtMjAyNi0yOTc3NSwgQ1ZFLTIwMjYtMzE4MDYsIENWRS0yMDI2 LTMxODgzLCBDVkUtMjAyNi0zMTg4NCwKKyAgQ1ZFLTIwMjYtMzE4ODUsIENWRS0yMDI2LTMzOTgz LCBDVkUtMjAyNi0zMzk4NCwgQ1ZFLTIwMjYtMzM5ODUsCisgIENWRS0yMDI2LTQ1NzAwLCBDVkUt MjAyNi02NDYyNCwgQ1ZFLTIwMjYtNjcyODksIENWRS0yMDI2LTY3Mjk5IGFuZAorICBDVkUtMjAy Ni02ODU4MCkKKyAgUmVzb2x2ZXM6IHJoYnojMjQzMDkxNSwgcmhieiMyNDMwOTA0LCByaGJ6IzI0 MzA4OTQsIHJoYnojMjQzMDkxMCwgcmhieiMyNDMwODk5CisgIFJlc29sdmVzOiByaGJ6IzI0MzA5 MjAsIHJoYnojMjQzMDkyOSwgcmhieiMyNDI5NzkyLCByaGJ6IzI0Mjk4MDEsIHJoYnojMjQyOTc4 MgorICBSZXNvbHZlczogcmhieiMyNDQzMTQ0LCByaGJ6IzI0NDI5NzEsIHJoYnojMjQyOTc4MCwg cmhieiMyNDI5Nzk2LCByaGJ6IzI0Mjk3ODYKKyAgUmVzb2x2ZXM6IHJoYnojMjQzODI1OCwgcmhi eiMyNDM4MjU2LCByaGJ6IzI0MzgyNTIsIHJoYnojMjQzODMyMCwgcmhieiMyNDM4MjUzCisgIFJl c29sdmVzOiByaGJ6IzI0MzgyNTQsIHJoYnojMjQzODI1MSwgcmhieiMyNDM4MjYxLCByaGJ6IzI0 NDczOTIsIHJoYnojMjQ1MzI0MQorICBSZXNvbHZlczogcmhieiMyNDUzMjM4LCByaGJ6IzI0NDI4 MDIsIHJoYnojMjQ0MjgwMCwgcmhieiMyNDQ3NDI3LCByaGJ6IzI0NDc0MzAKKyAgUmVzb2x2ZXM6 IHJoYnojMjQ0NzQxMSwgcmhieiMyNDQ3NDE0LCByaGJ6IzI0NTMyNDUsIHJoYnojMjQ0MjgwNywg cmhieiMyNDkxNjg0CisgIFJlc29sdmVzOiByaGJ6IzI1MTAyOTQsIHJoYnojMjUxMDY0NSwgcmhi eiMyNTAzNjQ0LCByaGJ6IzI1MTA0NDYKKworKiBXZWQgSnVsIDE1IDIwMjYgRmVkb3JhIFJlbGVh c2UgRW5naW5lZXJpbmcgPHJlbGVuZ0BmZWRvcmFwcm9qZWN0Lm9yZz4gLSAyLjExLjctMTUKKy0g UmVidWlsdCBmb3IgaHR0cHM6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0ZlZG9yYV80NV9NYXNz X1JlYnVpbGQKKworKiBGcmkgSnVuIDEyIDIwMjYgWWFha292IFNlbGtvd2l0eiA8eXNlbGtvd2lA cmVkaGF0LmNvbT4gLSAyLjExLjctMTQKKy0gUmVidWlsdCBmb3Igb3BlbnNzbCA0LjAKKworKiBN b24gSnVuIDA4IDIwMjYgRnJhbnRpxaFlayBaYXRsb3VrYWwgPGZ6YXRsb3VrQHJlZGhhdC5jb20+ IC0gMi4xMS43LTEzCistIFJlYnVpbHQgZm9yIGljdSA3OC4zCisKKyogVGh1IEFwciAxNiAyMDI2 IENyaXN0aWFuIExlIDxnaXRAbGVjcmlzLmRldj4gLSAyLjExLjctMTIKKy0gQWxsb3cgdG8gYnVp bGQgd2l0aCBDTWFrZSA0LjAgKHJoYnojMjM4MDYwNykKKworKiBGcmkgSmFuIDE2IDIwMjYgRmVk b3JhIFJlbGVhc2UgRW5naW5lZXJpbmcgPHJlbGVuZ0BmZWRvcmFwcm9qZWN0Lm9yZz4gLSAyLjEx LjctMTEKKy0gUmVidWlsdCBmb3IgaHR0cHM6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0ZlZG9y YV80NF9NYXNzX1JlYnVpbGQKKworKiBXZWQgQXVnIDA2IDIwMjUgRnJhbnRpxaFlayBaYXRsb3Vr YWwgPGZ6YXRsb3VrQHJlZGhhdC5jb20+IC0gMi4xMS43LTEwCistIFJlYnVpbHQgZm9yIGljdSA3 Ny4xCisKKyogV2VkIEp1bCAyMyAyMDI1IEZlZG9yYSBSZWxlYXNlIEVuZ2luZWVyaW5nIDxyZWxl bmdAZmVkb3JhcHJvamVjdC5vcmc+IC0gMi4xMS43LTkKKy0gUmVidWlsdCBmb3IgaHR0cHM6Ly9m ZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0ZlZG9yYV80M19NYXNzX1JlYnVpbGQKKworKiBUaHUgTWFy IDEzIDIwMjUgRmFiaW8gVmFsZW50aW5pIDxkZWNhdGhvcnBlQGdtYWlsLmNvbT4gLSAyLjExLjct OAorLSBSZWJ1aWxkIGZvciBub29wZW5oMjY0IDIuNi4wCisKKyogVGh1IEphbiAxNiAyMDI1IEZl ZG9yYSBSZWxlYXNlIEVuZ2luZWVyaW5nIDxyZWxlbmdAZmVkb3JhcHJvamVjdC5vcmc+IC0gMi4x MS43LTcKKy0gUmVidWlsdCBmb3IgaHR0cHM6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0ZlZG9y YV80Ml9NYXNzX1JlYnVpbGQKKwogKiBTdW4gRGVjIDA4IDIwMjQgUGV0ZSBXYWx0ZXIgPHB3YWx0 ZXJAZmVkb3JhcHJvamVjdC5vcmc+IC0gMi4xMS43LTYKIC0gUmVidWlsZCBmb3IgSUNVIDc2CiAK CmRpZmYgLS1naXQgYS9nZGktZ2Z4LXByb3Blcmx5LWNsYW1wLVN1cmZhY2VUb1N1cmZhY2UucGF0 Y2ggYi9nZGktZ2Z4LXByb3Blcmx5LWNsYW1wLVN1cmZhY2VUb1N1cmZhY2UucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODAwMjg3NwotLS0gL2Rldi9udWxsCisrKyBi L2dkaS1nZngtcHJvcGVybHktY2xhbXAtU3VyZmFjZVRvU3VyZmFjZS5wYXRjaApAQCAtMCwwICsx LDUwIEBACitGcm9tIGVmOTlkYTAyMDU5OWE2NjZiN2QxNzFlZWM2YWI1MjdiNDdkZDMzZjMgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBPbmRyZWogSG9seSA8b2hvbHlAcmVkaGF0LmNv bT4KK0RhdGU6IFRodSwgMjIgSmFuIDIwMjYgMTI6NDc6NDIgKzAxMDAKK1N1YmplY3Q6IFtQQVRD SF0gW2dkaSxnZnhdIHByb3Blcmx5IGNsYW1wIFN1cmZhY2VUb1N1cmZhY2UKKworQmFja3BvcnQg b2YgY29tbWl0IGM0YTdjMzcxMzQyZWRmMGQzMDdjZWE3MjhmNTZkMzMwMmYwYWIzOGMuCisKK0Nv LUF1dGhvcmVkLUJ5OiBDbGF1ZGUgPG5vcmVwbHlAYW50aHJvcGljLmNvbT4KKy0tLQorIGxpYmZy ZWVyZHAvZ2RpL2dmeC5jIHwgOSArKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRp b25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliZnJlZXJkcC9nZGkvZ2Z4 LmMgYi9saWJmcmVlcmRwL2dkaS9nZnguYworaW5kZXggMzk3MDcxNWUwLi45NjhhNWExN2MgMTAw NjQ0CistLS0gYS9saWJmcmVlcmRwL2dkaS9nZnguYworKysrIGIvbGliZnJlZXJkcC9nZGkvZ2Z4 LmMKK0BAIC0xMTc1LDcgKzExNzUsNiBAQCBzdGF0aWMgVUlOVCBnZGlfU3VyZmFjZVRvU3VyZmFj ZShSZHBnZnhDbGllbnRDb250ZXh0KiBjb250ZXh0LAorIAlVSU5UIHN0YXR1cyA9IEVSUk9SX0lO VEVSTkFMX0VSUk9SOworIAlVSU5UMTYgaW5kZXg7CisgCUJPT0wgc2FtZVN1cmZhY2U7CistCVVJ TlQzMiBuV2lkdGgsIG5IZWlnaHQ7CisgCWNvbnN0IFJFQ1RBTkdMRV8xNiogcmVjdFNyYzsKKyAJ UkVDVEFOR0xFXzE2IGludmFsaWRSZWN0OworIAlnZGlHZnhTdXJmYWNlKiBzdXJmYWNlU3JjOwor QEAgLTExOTksOCArMTE5OCw4IEBAIHN0YXRpYyBVSU5UIGdkaV9TdXJmYWNlVG9TdXJmYWNlKFJk cGdmeENsaWVudENvbnRleHQqIGNvbnRleHQsCisgCWlmICghaXNfcmVjdF92YWxpZChyZWN0U3Jj LCBzdXJmYWNlU3JjLT53aWR0aCwgc3VyZmFjZVNyYy0+aGVpZ2h0KSkKKyAJCWdvdG8gZmFpbDsK KyAKKy0JbldpZHRoID0gcmVjdFNyYy0+cmlnaHQgLSByZWN0U3JjLT5sZWZ0OworLQluSGVpZ2h0 ID0gcmVjdFNyYy0+Ym90dG9tIC0gcmVjdFNyYy0+dG9wOworKwljb25zdCBVSU5UMzIgbldpZHRo ID0gcmVjdFNyYy0+cmlnaHQgLSByZWN0U3JjLT5sZWZ0OworKwljb25zdCBVSU5UMzIgbkhlaWdo dCA9IHJlY3RTcmMtPmJvdHRvbSAtIHJlY3RTcmMtPnRvcDsKKyAKKyAJZm9yIChpbmRleCA9IDA7 IGluZGV4IDwgc3VyZmFjZVRvU3VyZmFjZS0+ZGVzdFB0c0NvdW50OyBpbmRleCsrKQorIAl7CitA QCAtMTIwOSw4ICsxMjA4LDEwIEBAIHN0YXRpYyBVSU5UIGdkaV9TdXJmYWNlVG9TdXJmYWNlKFJk cGdmeENsaWVudENvbnRleHQqIGNvbnRleHQsCisgCQlpZiAoIWlzX3JlY3RfdmFsaWQoJnJlY3Qs IHN1cmZhY2VEc3QtPndpZHRoLCBzdXJmYWNlRHN0LT5oZWlnaHQpKQorIAkJCWdvdG8gZmFpbDsK KyAKKysJCWNvbnN0IFVJTlQzMiByd2lkdGggPSByZWN0LnJpZ2h0IC0gcmVjdC5sZWZ0OworKwkJ Y29uc3QgVUlOVDMyIHJoZWlnaHQgPSByZWN0LmJvdHRvbSAtIHJlY3QudG9wOworIAkJaWYgKCFm cmVlcmRwX2ltYWdlX2NvcHkoc3VyZmFjZURzdC0+ZGF0YSwgc3VyZmFjZURzdC0+Zm9ybWF0LCBz dXJmYWNlRHN0LT5zY2FubGluZSwKKy0JCSAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RQdC0+ eCwgZGVzdFB0LT55LCBuV2lkdGgsIG5IZWlnaHQsIHN1cmZhY2VTcmMtPmRhdGEsCisrCQkgICAg ICAgICAgICAgICAgICAgICAgICBkZXN0UHQtPngsIGRlc3RQdC0+eSwgcndpZHRoLCByaGVpZ2h0 LCBzdXJmYWNlU3JjLT5kYXRhLAorIAkJICAgICAgICAgICAgICAgICAgICAgICAgc3VyZmFjZVNy Yy0+Zm9ybWF0LCBzdXJmYWNlU3JjLT5zY2FubGluZSwgcmVjdFNyYy0+bGVmdCwKKyAJCSAgICAg ICAgICAgICAgICAgICAgICAgIHJlY3RTcmMtPnRvcCwgTlVMTCwgRlJFRVJEUF9GTElQX05PTkUp KQorIAkJCWdvdG8gZmFpbDsKKy0tIAorMi41Mi4wCisKCmRpZmYgLS1naXQgYS9nZGktZ3JhcGhp Y3MtVXNlLWZyZWVyZHBfZ2x5cGhfY29udmVydF9leC5wYXRjaCBiL2dkaS1ncmFwaGljcy1Vc2Ut ZnJlZXJkcF9nbHlwaF9jb252ZXJ0X2V4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjBlOWI1NGUKLS0tIC9kZXYvbnVsbAorKysgYi9nZGktZ3JhcGhpY3MtVXNlLWZy ZWVyZHBfZ2x5cGhfY29udmVydF9leC5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGcm9tIGQyNWZm ZDYwOGJmMmJkMzgwMjJhMzkzMGQwYjNmYzFiN2M4NzNjMWEgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCitGcm9tOiBPbmRyZWogSG9seSA8b2hvbHlAcmVkaGF0LmNvbT4KK0RhdGU6IFNhdCwgMjgg TWFyIDIwMjYgMTI6MTM6MDYgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gW2dkaSxncmFwaGljc10g VXNlIGZyZWVyZHBfZ2x5cGhfY29udmVydF9leAorCitCYWNrcG9ydCBvZiBjb21taXQgOWYwZWIz YjdkNDMwNjlhMWU5NzM0NjRiY2I0M2QxZWY5NjVhZTY1ZS4KKworTWFkZS13aXRoOiBDdXJzb3IK Ky0tLQorIGxpYmZyZWVyZHAvZ2RpL2dyYXBoaWNzLmMgfCAzICstLQorIDEgZmlsZSBjaGFuZ2Vk LCAxIGluc2VydGlvbigrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmZyZWVy ZHAvZ2RpL2dyYXBoaWNzLmMgYi9saWJmcmVlcmRwL2dkaS9ncmFwaGljcy5jCitpbmRleCBkYWIx NTljNDMuLmIxMTI5ZmI3YyAxMDA2NDQKKy0tLSBhL2xpYmZyZWVyZHAvZ2RpL2dyYXBoaWNzLmMK KysrKyBiL2xpYmZyZWVyZHAvZ2RpL2dyYXBoaWNzLmMKK0BAIC0yNjIsNyArMjYyLDYgQEAgc3Rh dGljIEJZVEUqIGZyZWVyZHBfZ2x5cGhfY29udmVydF9leChVSU5UMzIgd2lkdGgsIFVJTlQzMiBo ZWlnaHQsIGNvbnN0IEJZVEUqIGQKKyAKKyBzdGF0aWMgQk9PTCBnZGlfR2x5cGhfTmV3KHJkcENv bnRleHQqIGNvbnRleHQsIGNvbnN0IHJkcEdseXBoKiBnbHlwaCkKKyB7CistCUJZVEUqIGRhdGE7 CisgCWdkaUdseXBoKiBnZGlfZ2x5cGg7CisgCisgCWlmICghY29udGV4dCB8fCAhZ2x5cGgpCitA QCAtMjc1LDcgKzI3NCw3IEBAIHN0YXRpYyBCT09MIGdkaV9HbHlwaF9OZXcocmRwQ29udGV4dCog Y29udGV4dCwgY29uc3QgcmRwR2x5cGgqIGdseXBoKQorIAkJcmV0dXJuIEZBTFNFOworIAorIAln ZGlfZ2x5cGgtPmhkYy0+Zm9ybWF0ID0gUElYRUxfRk9STUFUX01PTk87CistCWRhdGEgPSBmcmVl cmRwX2dseXBoX2NvbnZlcnQoZ2x5cGgtPmN4LCBnbHlwaC0+Y3ksIGdseXBoLT5haik7CisrCUJZ VEUqIGRhdGEgPSBmcmVlcmRwX2dseXBoX2NvbnZlcnRfZXgoZ2x5cGgtPmN4LCBnbHlwaC0+Y3ks IGdseXBoLT5haiwgZ2x5cGgtPmNiKTsKKyAKKyAJaWYgKCFkYXRhKQorIAl7CistLSAKKzIuNTMu MAorCgpkaWZmIC0tZ2l0IGEvdXRpbHMtc21hcnRjYXJkLWFkZC1sZW5ndGgtdmFsaWRpdHktY2hl Y2tzLnBhdGNoIGIvdXRpbHMtc21hcnRjYXJkLWFkZC1sZW5ndGgtdmFsaWRpdHktY2hlY2tzLnBh dGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhMmViZDcKLS0tIC9kZXYv bnVsbAorKysgYi91dGlscy1zbWFydGNhcmQtYWRkLWxlbmd0aC12YWxpZGl0eS1jaGVja3MucGF0 Y2gKQEAgLTAsMCArMSw3OSBAQAorRnJvbSAwNzBmOWUwNzBjNTlhMTIxY2Q5MzU0MTgzNWRjMDA4 NjA4NGJiNmFkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT25kcmVqIEhvbHkgPG9o b2x5QHJlZGhhdC5jb20+CitEYXRlOiBUdWUsIDE3IEZlYiAyMDI2IDExOjA1OjU5ICswMTAwCitT dWJqZWN0OiBbUEFUQ0hdIFt1dGlscyxzbWFydGNhcmRdIGFkZCBsZW5ndGggdmFsaWRpdHkgY2hl Y2tzCisKK0JhY2twb3J0IG9mIGNvbW1pdCA1N2M1NjQ3ZDk4YzJhMDI2ZGU4YjY4MTE1OWNiMTg4 Y2EwNDM5ZWY4LgorCitDby1BdXRob3JlZC1CeTogQ3Vyc29yIDxjdXJzb3JhZ2VudEBjdXJzb3Iu Y29tPgorLS0tCisgY2hhbm5lbHMvc21hcnRjYXJkL2NsaWVudC9zbWFydGNhcmRfcGFjay5jIHwg MjcgKysrKysrKysrKysrKysrKystLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyMSBpbnNlcnRpb25z KCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY2hhbm5lbHMvc21hcnRjYXJkL2Ns aWVudC9zbWFydGNhcmRfcGFjay5jIGIvY2hhbm5lbHMvc21hcnRjYXJkL2NsaWVudC9zbWFydGNh cmRfcGFjay5jCitpbmRleCBmNzBlYjRlNWQuLjY4N2YxMTEwYiAxMDA2NDQKKy0tLSBhL2NoYW5u ZWxzL3NtYXJ0Y2FyZC9jbGllbnQvc21hcnRjYXJkX3BhY2suYworKysrIGIvY2hhbm5lbHMvc21h cnRjYXJkL2NsaWVudC9zbWFydGNhcmRfcGFjay5jCitAQCAtOTgsMTMgKzk4LDE2IEBAIHN0YXRp YyBCT09MIHNtYXJ0Y2FyZF9uZHJfcG9pbnRlcl9yZWFkXyh3U3RyZWFtKiBzLCBVSU5UMzIqIGlu ZGV4LCBVSU5UMzIqIHB0ciwKKyAJcmV0dXJuIFRSVUU7CisgfQorIAorLXN0YXRpYyBMT05HIHNt YXJ0Y2FyZF9uZHJfcmVhZCh3U3RyZWFtKiBzLCBCWVRFKiogZGF0YSwgc2l6ZV90IG1pbiwgc2l6 ZV90IGVsZW1lbnRTaXplLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZHJfcHRy X3QgdHlwZSkKKytzdGF0aWMgTE9ORyBzbWFydGNhcmRfbmRyX3JlYWRfZXgod1N0cmVhbSogcywg QllURSoqIGRhdGEsIHNpemVfdCBtaW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNpemVfdCBlbGVtZW50U2l6ZSwgbmRyX3B0cl90IHR5cGUsIHNpemVfdCogcGxlbikKKyB7 CisgCXNpemVfdCBsZW4sIG9mZnNldCwgbGVuMjsKKyAJdm9pZCogcjsKKyAJc2l6ZV90IHJlcXVp cmVkOworIAorKwlpZiAocGxlbikKKysJCSpwbGVuID0gMDsKKysKKyAJc3dpdGNoICh0eXBlKQor IAl7CisgCQljYXNlIE5EUl9QVFJfRlVMTDoKK0BAIC0xODEsMTEgKzE4NCwyMCBAQCBzdGF0aWMg TE9ORyBzbWFydGNhcmRfbmRyX3JlYWQod1N0cmVhbSogcywgQllURSoqIGRhdGEsIHNpemVfdCBt aW4sIHNpemVfdCBlbGVtZQorIAlpZiAoIXIpCisgCQlyZXR1cm4gU0NBUkRfRV9OT19NRU1PUlk7 CisgCVN0cmVhbV9SZWFkKHMsIHIsIGxlbik7CistCXNtYXJ0Y2FyZF91bnBhY2tfcmVhZF9zaXpl X2FsaWduKE5VTEwsIHMsIGxlbiwgNCk7CisrCWNvbnN0IExPTkcgcGFkID0gc21hcnRjYXJkX3Vu cGFja19yZWFkX3NpemVfYWxpZ24oTlVMTCwgcywgbGVuLCA0KTsKKysJbGVuICs9IChzaXplX3Qp cGFkOworIAkqZGF0YSA9IHI7CisrCWlmIChwbGVuKQorKwkJKnBsZW4gPSBsZW47CisgCXJldHVy biBTVEFUVVNfU1VDQ0VTUzsKKyB9CisgCisrc3RhdGljIExPTkcgc21hcnRjYXJkX25kcl9yZWFk KHdTdHJlYW0qIHMsIEJZVEUqKiBkYXRhLCBzaXplX3QgbWluLCBzaXplX3QgZWxlbWVudFNpemUs CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kcl9wdHJfdCB0eXBlKQorK3sKKysJ cmV0dXJuIHNtYXJ0Y2FyZF9uZHJfcmVhZF9leChzLCBkYXRhLCBtaW4sIGVsZW1lbnRTaXplLCB0 eXBlLCBOVUxMKTsKKyt9CisrCisgc3RhdGljIEJPT0wgc21hcnRjYXJkX25kcl9wb2ludGVyX3dy aXRlKHdTdHJlYW0qIHMsIFVJTlQzMiogaW5kZXgsIERXT1JEIGxlbmd0aCkKKyB7CisgCWNvbnN0 IFVJTlQzMiBuZHJQdHIgPSAweDIwMDAwICsgKCppbmRleCkgKiA0OworQEAgLTM0MjcsMTIgKzM0 MzksMTUgQEAgTE9ORyBzbWFydGNhcmRfdW5wYWNrX3NldF9hdHRyaWJfY2FsbChTTUFSVENBUkRf REVWSUNFKiBzbWFydGNhcmQsIHdTdHJlYW0qIHMsIFMKKyAKKyAJaWYgKG5kclB0cikKKyAJewor LQkJLy8gVE9ETzogY2FsbC0+Y2JBdHRyTGVuIHdhcyBsYXJnZXIgdGhhbiB0aGUgcG9pbnRlciB2 YWx1ZS4KKy0JCS8vIFRPRE86IE1heWJlIG5lZWQgdG8gcmVmaW5lIHRoZSBjaGVja3M/CistCQlz dGF0dXMgPSBzbWFydGNhcmRfbmRyX3JlYWQocywgJmNhbGwtPnBiQXR0ciwgMCwgMSwgTkRSX1BU Ul9TSU1QTEUpOworKwkJc2l6ZV90IGxlbiA9IDA7CisrCQlzdGF0dXMgPSBzbWFydGNhcmRfbmRy X3JlYWRfZXgocywgJmNhbGwtPnBiQXR0ciwgMCwgMSwgTkRSX1BUUl9TSU1QTEUsICZsZW4pOwor IAkJaWYgKHN0YXR1cyAhPSBTQ0FSRF9TX1NVQ0NFU1MpCisgCQkJcmV0dXJuIHN0YXR1czsKKysJ CWlmIChjYWxsLT5jYkF0dHJMZW4gPiBsZW4pCisrCQkJY2FsbC0+Y2JBdHRyTGVuID0gKERXT1JE KWxlbjsKKyAJfQorKwllbHNlCisrCQljYWxsLT5jYkF0dHJMZW4gPSAwOworIAlzbWFydGNhcmRf dHJhY2Vfc2V0X2F0dHJpYl9jYWxsKHNtYXJ0Y2FyZCwgY2FsbCk7CisgCXJldHVybiBTQ0FSRF9T X1NVQ0NFU1M7CisgfQorLS0gCisyLjUyLjAKKwoKZGlmZiAtLWdpdCBhL3dpbnByLWNydC1hZGQt ZnVuY3Rpb25zLXRvLXRlc3Qtc3RyaW5nLnBhdGNoIGIvd2lucHItY3J0LWFkZC1mdW5jdGlvbnMt dG8tdGVzdC1zdHJpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u YmIzNjRhYwotLS0gL2Rldi9udWxsCisrKyBiL3dpbnByLWNydC1hZGQtZnVuY3Rpb25zLXRvLXRl c3Qtc3RyaW5nLnBhdGNoCkBAIC0wLDAgKzEsMjY2IEBACitGcm9tIGE3YTQ3YmMwYmRhYjcyM2I2 NzRmYjA1ZjUxZTkzYWUwMDdlZDY0MTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBB cm1pbiBOb3ZhayA8YXJtaW4ubm92YWtAdGhpbmNhc3QuY29tPgorRGF0ZTogVGh1LCA5IEp1bCAy MDI2IDA4OjM0OjIzICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIFt3aW5wcixjcnRdIGFkZCBmdW5j dGlvbnMgdG8gdGVzdCBzdHJpbmcKKworKiB3aW5wcl9zdHJfaGFzX25ld2xpbmVzIHRvIGNoZWNr IGZvciBuZXdsaW5lcyBpbiBhIHN0cmluZworKiB3aW5wcl9zdHJfaXNfdmFsaWRfdXJsIGFuZCB3 aW5wcl9zdHJfaXNfdmFsaWRfdXJsTiB0byBjaGVjayBpZiBhCisgIHN0cmluZyBpcyBhIHZhbGlk IHVybAorLS0tCisgd2lucHIvaW5jbHVkZS93aW5wci9zdHJpbmcuaCAgICAgICAgIHwgIDUgKysK KyB3aW5wci9saWJ3aW5wci9jcnQvQ01ha2VMaXN0cy50eHQgICAgfCAgOCArKysKKyB3aW5wci9s aWJ3aW5wci9jcnQvc3RyaW5nLmMgICAgICAgICAgfCA5NiArKysrKysrKysrKysrKysrKysrKysr KysrKysrCisgd2lucHIvbGlid2lucHIvY3J0L3Rlc3QvVGVzdFN0cmluZy5jIHwgODIgKysrKysr KysrKysrKysrKysrKysrKysrCisgNCBmaWxlcyBjaGFuZ2VkLCAxOTEgaW5zZXJ0aW9ucygrKQor CitkaWZmIC0tZ2l0IGEvd2lucHIvaW5jbHVkZS93aW5wci9zdHJpbmcuaCBiL3dpbnByL2luY2x1 ZGUvd2lucHIvc3RyaW5nLmgKK2luZGV4IGJiOThkZmZkYy4uN2RlOWY5MzRmIDEwMDY0NAorLS0t IGEvd2lucHIvaW5jbHVkZS93aW5wci9zdHJpbmcuaAorKysrIGIvd2lucHIvaW5jbHVkZS93aW5w ci9zdHJpbmcuaAorQEAgLTMxLDYgKzMxLDExIEBAIGV4dGVybiAiQyIKKyB7CisgI2VuZGlmCisK KysJV0lOUFJfQVBJIEJPT0wgd2lucHJfc3RyX2lzX3ZhbGlkX3VybChjb25zdCBjaGFyKiBzdHIp OworKwlXSU5QUl9BUEkgQk9PTCB3aW5wcl9zdHJfaXNfdmFsaWRfdXJsTihjb25zdCBjaGFyKiBz dHIsIHNpemVfdCBsZW4pOworKwlXSU5QUl9BUEkgQk9PTCB3aW5wcl9zdHJfaGFzX25ld2xpbmVz KGNvbnN0IGNoYXIqIHN0cik7CisrCisrCisgCVdJTlBSX0FQSSBCT09MIHdpbnByX3N0cl9hcHBl bmQoY29uc3QgY2hhciogd2hhdCwgY2hhciogYnVmZmVyLCBzaXplX3Qgc2l6ZSwKKyAJICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzZXBhcmF0b3IpOworCitkaWZm IC0tZ2l0IGEvd2lucHIvbGlid2lucHIvY3J0L0NNYWtlTGlzdHMudHh0IGIvd2lucHIvbGlid2lu cHIvY3J0L0NNYWtlTGlzdHMudHh0CitpbmRleCA1ZWU0YmJkMWUuLjUzOGU3NGRjZiAxMDA2NDQK Ky0tLSBhL3dpbnByL2xpYndpbnByL2NydC9DTWFrZUxpc3RzLnR4dAorKysrIGIvd2lucHIvbGli d2lucHIvY3J0L0NNYWtlTGlzdHMudHh0CitAQCAtMjIsNiArMjIsMTQgQEAgc2V0IChDUlRfRklM RVMgYWxpZ25tZW50LmMKKyAJdW5pY29kZS5jCisgCXN0cmluZy5jKQorCisraW5jbHVkZShDaGVj a1N5bWJvbEV4aXN0cykKKytjaGVja19zeW1ib2xfZXhpc3RzKHJlZ2NvbXAgcmVnZXguaCBXSU5Q Ul9IQVZFX1JFR0NPTVApCisrY2hlY2tfc3ltYm9sX2V4aXN0cyhyZWdleGVjIHJlZ2V4LmggV0lO UFJfSEFWRV9SRUdFWEVDKQorK2NoZWNrX3N5bWJvbF9leGlzdHMocmVnZnJlZSByZWdleC5oIFdJ TlBSX0hBVkVfUkVHRlJFRSkKKytpZihXSU5QUl9IQVZFX1JFR0NPTVAgQU5EIFdJTlBSX0hBVkVf UkVHRVhFQyBBTkQgV0lOUFJfSEFWRV9SRUdGUkVFKQorKyAgd2lucHJfZGVmaW5pdGlvbl9hZGQo LURXSU5QUl9IQVZFX1JFR0NPTVApCisrZW5kaWYoKQorKworIGlmIChOT1QgV0lUSF9JQ1UpCisg CXNldCAoQ1JUX0ZJTEVTICR7Q1JUX0ZJTEVTfQorIAkJdXRmLmMKK2RpZmYgLS1naXQgYS93aW5w ci9saWJ3aW5wci9jcnQvc3RyaW5nLmMgYi93aW5wci9saWJ3aW5wci9jcnQvc3RyaW5nLmMKK2lu ZGV4IDY1OTZiNDJmNS4uNDY1YjhkMTMzIDEwMDY0NAorLS0tIGEvd2lucHIvbGlid2lucHIvY3J0 L3N0cmluZy5jCisrKysgYi93aW5wci9saWJ3aW5wci9jcnQvc3RyaW5nLmMKK0BAIC0yOSwxMSAr MjksNzEgQEAKKyAjaW5jbHVkZSA8d2lucHIvYXNzZXJ0Lmg+CisgI2luY2x1ZGUgPHdpbnByL2Vu ZGlhbi5oPgorCisrI2lmIGRlZmluZWQoV0lOUFJfSEFWRV9SRUdDT01QKQorKyNpbmNsdWRlIDxy ZWdleC5oPgorKyNlbmRpZgorKworIC8qIFN0cmluZyBNYW5pcHVsYXRpb24gKENSVCk6IGh0dHA6 Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9mMDE1MXM0eC5hc3B4ICovCisKKyAj aW5jbHVkZSAiLi4vbG9nLmgiCisgI2RlZmluZSBUQUcgV0lOUFJfVEFHKCJjcnQiKQorCisrQk9P TCB3aW5wcl9zdHJfaXNfdmFsaWRfdXJsTihjb25zdCBjaGFyKiBzdHIsIHNpemVfdCBsZW4pCisr eworKwlpZiAoIXN0ciB8fCAobGVuID09IDApKQorKwkJcmV0dXJuIEZBTFNFOworKworKwljaGFy KiB1cmwgPSBzdHJuZHVwKHN0ciwgbGVuKTsKKysJaWYgKCF1cmwpCisrCQlyZXR1cm4gRkFMU0U7 CisrCisrCWNvbnN0IEJPT0wgcmMgPSB3aW5wcl9zdHJfaXNfdmFsaWRfdXJsKHVybCk7CisrCWZy ZWUodXJsKTsKKysJcmV0dXJuIHJjOworK30KKysKKysjaWYgZGVmaW5lZChfV0lOMzIpCisrI2lu Y2x1ZGUgPHNobHdhcGkuaD4KKysKKytCT09MIHdpbnByX3N0cl9pc192YWxpZF91cmwoY29uc3Qg Y2hhciogc3RyKQorK3sKKysJaWYgKCFzdHIpCisrCQlyZXR1cm4gRkFMU0U7CisrCXJldHVybiBQ YXRoSXNVUkxBKHN0cik7CisrfQorKworKyNlbGlmIGRlZmluZWQoV0lOUFJfSEFWRV9SRUdDT01Q KQorK0JPT0wgd2lucHJfc3RyX2lzX3ZhbGlkX3VybChjb25zdCBjaGFyKiBzdHIpCisreworKwly ZWdleF90IHJlZ2V4OworKwljb25zdCBjaGFyIHBhdHRlcm5bXSA9ICJeKFthLXpdKzovLyk/KFth LXpBLVowLTkuLV0rKSg6WzAtOV0rKT8oL1thLXpBLVowLTkuLz89JiUtXSopPyQiOworKwlpbnQg cmV0OworKworKwlpZiAoIXN0cikKKysJCXJldHVybiBGQUxTRTsKKysJbWVtc2V0KCZyZWdleCwg MCwgc2l6ZW9mKHJlZ2V4KSk7CisrCisrCXJldCA9IHJlZ2NvbXAoJnJlZ2V4LCBwYXR0ZXJuLCBS RUdfRVhURU5ERUQpOworKwlpZiAocmV0KQorKwl7CisrCQlwcmludGYoIkNvdWxkIG5vdCBjb21w aWxlIHJlZ2V4XG4iKTsKKysJCXJldHVybiBGQUxTRTsKKysJfQorKworKwlyZXQgPSByZWdleGVj KCZyZWdleCwgc3RyLCAwLCBOVUxMLCAwKTsKKysJcmVnZnJlZSgmcmVnZXgpOworKwlyZXR1cm4g cmV0ID09IDA7CisrfQorKworKyNlbHNlCisrQk9PTCB3aW5wcl9zdHJfaXNfdmFsaWRfdXJsKGNv bnN0IGNoYXIqIHN0cikKKyt7CisrCVdJTlBSX1VOVVNFRChzdHIpOworKwlXTG9nX1dBUk4oVEFH LCAiVVJMIHZhbGlkYXRpb24gbm90IHN1cHBvcnRlZCBieSB5b3VyIGJ1aWxkLCBub3QgcGVyZm9y bWluZyBjaGVjay4iKTsKKysJcmV0dXJuIFRSVUU7CisrfQorKyNlbmRpZgorKworIEJPT0wgd2lu cHJfc3RyX2FwcGVuZChjb25zdCBjaGFyKiB3aGF0LCBjaGFyKiBidWZmZXIsIHNpemVfdCBzaXpl LCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpCisgeworIAljb25zdCBzaXplX3QgdXNlZCA9IHN0cm5s ZW4oYnVmZmVyLCBzaXplKTsKK0BAIC02MzYsMyArNjk2LDM5IEBAIElOVDY0IEdldExpbmUoY2hh cioqIGxpbmVwdHIsIHNpemVfdCogc2l6ZSwgRklMRSogc3RyZWFtKQorIAlyZXR1cm4gLTE7Cisg I2VuZGlmCisgfQorKworK0JPT0wgd2lucHJfc3RyX2hhc19uZXdsaW5lcyhjb25zdCBjaGFyKiBz dHIpCisreworKwlpZiAoIXN0cikKKysJCXJldHVybiBGQUxTRTsKKysJZG8KKysJeworKwkJY2hh ciBjID0gKnN0cisrOworKwkJc3dpdGNoIChjKQorKwkJeworKwkJCWNhc2UgJ1xyJzoKKysJCQlj YXNlICdcbic6CisrCQkJY2FzZSAweDBiOiAgICAgICAvKiBWVCB2ZXJ0aWNhbCB0YWIgKi8KKysJ CQljYXNlIDB4MGM6ICAgICAgIC8qIEZGIGZvcm0gZmVlZCAqLworKwkJCWNhc2UgKGNoYXIpMHg4 NTogLyogTkVMIG5leHQgbGluZSAqLworKwkJCQlyZXR1cm4gVFJVRTsKKysJCQljYXNlIDB4MjA6 CisrCQkJeworKwkJCQlzd2l0Y2ggKCpzdHIpCisrCQkJCXsKKysJCQkJCWNhc2UgMHgyODogLyog TFMgbGluZSBzZXBhcmF0b3IgKi8KKysJCQkJCWNhc2UgMHgyOTogLyogUFMgcGFyYWdyYXBoIHNl cGFyYXRvciAqLworKwkJCQkJCXJldHVybiBUUlVFOworKwkJCQkJZGVmYXVsdDoKKysJCQkJCQli cmVhazsKKysJCQkJfQorKwkJCX0KKysJCQlicmVhazsKKysKKysJCQljYXNlICdcMCc6CisrCQkJ CXJldHVybiBGQUxTRTsKKysJCQlkZWZhdWx0OgorKwkJCQlicmVhazsKKysJCX0KKysJfSB3aGls ZSAoMSk7CisrfQorZGlmZiAtLWdpdCBhL3dpbnByL2xpYndpbnByL2NydC90ZXN0L1Rlc3RTdHJp bmcuYyBiL3dpbnByL2xpYndpbnByL2NydC90ZXN0L1Rlc3RTdHJpbmcuYworaW5kZXggZGYxNTRm ZTFjLi5iY2E0NzBiZGQgMTAwNjQ0CistLS0gYS93aW5wci9saWJ3aW5wci9jcnQvdGVzdC9UZXN0 U3RyaW5nLmMKKysrKyBiL3dpbnByL2xpYndpbnByL2NydC90ZXN0L1Rlc3RTdHJpbmcuYworQEAg LTI3LDYgKzI3LDc5IEBAIHN0YXRpYyBXQ0hBUiB0ZXN0RGVsaW1pdGVyW10gPSB7ICdccicsICdc bicsICdcMCcgfTsKKworICNkZWZpbmUgdGVzdERlbGltaXRlcl9MZW5ndGggKChzaXplb2YodGVz dERlbGltaXRlcikgLyBzaXplb2YoV0NIQVIpKSAtIDEpCisKKytzdGF0aWMgQk9PTCB0ZXN0X3Zh bGlkX3VybCh2b2lkKQorK3sKKysJc3RydWN0IHRlc3RfdAorKwl7CisrCQljaGFyKiBzdHJpbmc7 CisrCQlzaXplX3QgbGVuOworKwkJQk9PTCBpc1VybDsKKysJfTsKKysKKysJc3RhdGljIGNvbnN0 IHN0cnVjdCB0ZXN0X3QgdGVzdHNbXSA9IHsgeyAiZm9vLmJhci5ibGFibGEiLCAxNSwgVFJVRSB9 LAorKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICJzb21laG9zdG5hbWUi LCAxMiwgVFJVRSB9LAorKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICJz b21laG9zdG5hbWU6MTIzNCIsIDE3LCBUUlVFIH0sCisrCQkgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHsgInRzdjovL3NvbWVob3N0bmFtZSIsIDE4LCBUUlVFIH0sCisrCQkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgInRzdjovL3NvbWVob3N0bmFtZS9wYXRo L2Zvby9nYWdhIiwgMzIsIFRSVUUgfSwKKysJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgeyAidHN2Oi8vc29tZWhvc3RuYW1lOjEyMzQiLCAyMywgVFJVRSB9LAorKwkJICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICJ0c3Y6Ly9zb21laG9zdG5hbWU6MTIzNC9w YXRoL2ZvbyIsIDMzLCBUUlVFIH0sCisrCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHsgImxhbGFccmdhZ2FcbiIsIDEyLCBGQUxTRSB9LAorKwkJICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB7ICIxOTIuMTY4LjAuMSIsIDExLCBUUlVFIH0sCisrCQkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8veyAiMTkyLjE2OC4wLjE6MTIzNCIsIDE2LCBG QUxTRSB9LAorKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3sgIjE5Mi4x NjguMC4xOjEyMzQvZm9vLyIsIDIxLCBGQUxTRSB9LAorKwkJICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB7ICIxOTIuMTY4LjAuMS9iYXIvZm9vLyIsIDIwLCBUUlVFIH0sCisrCQkg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgIls6OjFdIiwgNSwgRkFMU0UgfSwK KysJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAiWzo6MV06MTIzNCIsIDgs IEZBTFNFIH0sCisrCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgIlsyMDAx OmRiODozMzMzOjQ0NDQ6NTU1NTo2NjY2Ojc3Nzc6ODg4OF0iLCA0MCwKKysJCSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSB9LAorKwkJICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB7ICJbMjAwMTpkYjg6OjFdIiwgMTMsIEZBTFNFIH0gfTsKKysJQk9P TCByYyA9IFRSVUU7CisrCWZvciAoc2l6ZV90IHggPSAwOyB4IDwgQVJSQVlTSVpFKHRlc3RzKTsg eCsrKQorKwl7CisrCQljb25zdCBzdHJ1Y3QgdGVzdF90KiBjdXIgPSAmdGVzdHNbeF07CisrCisr CQljb25zdCBCT09MIHJjMSA9IHdpbnByX3N0cl9pc192YWxpZF91cmwoY3VyLT5zdHJpbmcpOwor KwkJY29uc3QgQk9PTCByYzIgPSB3aW5wcl9zdHJfaXNfdmFsaWRfdXJsTihjdXItPnN0cmluZywg Y3VyLT5sZW4pOworKworKyNpZiBkZWZpbmVkKFdJTlBSX0hBVkVfUkVHQ09NUCkgfHwgZGVmaW5l ZChXSVRIX1VSSVBBUlNFUikKKysJCWlmIChyYzEgIT0gcmMyKQorKwkJCXJjID0gRkFMU0U7Cisr CQlpZiAocmMxICE9IGN1ci0+aXNVcmwpCisrCQkJcmMgPSBGQUxTRTsKKysjZWxzZQorKwkJZnBy aW50ZihzdGRlcnIsICJbJXNdIFRPRE86ICFkZWZpbmVkKFdJTlBSX0hBVkVfUkVHQ09NUCkgJiYg IWRlZmluZWQoV0lUSF9VUklQQVJTRVIpXG4iLAorKwkJICAgICAgICBfX2Z1bmNfXyk7CisrI2Vu ZGlmCisrCX0KKysKKysJcmV0dXJuIHJjOworK30KKysKKytzdGF0aWMgQk9PTCB0ZXN0X25ld2xp bmUodm9pZCkKKyt7CisrCXN0cnVjdCB0ZXN0X3QKKysJeworKwkJY2hhciogc3RyaW5nOworKwkJ c2l6ZV90IGxlbjsKKysJCUJPT0wgaGFzTmV3bGluZXM7CisrCX07CisrCisrCWNvbnN0IHN0cnVj dCB0ZXN0X3QgdGVzdHNbXSA9IHsgeyAiZm9vLmJhci5ibGFibGEiLCAxNSwgRkFMU0UgfSwKKysJ CSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICJzb21laG9zdG5hbWUiLCAxMiwgRkFMU0Ug fSwKKysJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICJsYWxhXHJnYWdhXG4iLCAxMywg VFJVRSB9IH07CisrCisrCWZvciAoc2l6ZV90IHggPSAwOyB4IDwgQVJSQVlTSVpFKHRlc3RzKTsg eCsrKQorKwl7CisrCQljb25zdCBzdHJ1Y3QgdGVzdF90KiBjdXIgPSAmdGVzdHNbeF07CisrCisr CQljb25zdCBCT09MIHJjMSA9IHdpbnByX3N0cl9oYXNfbmV3bGluZXMoY3VyLT5zdHJpbmcpOwor KwkJaWYgKHJjMSAhPSBjdXItPmhhc05ld2xpbmVzKQorKwkJCXJldHVybiBGQUxTRTsKKysJfQor KworKwlyZXR1cm4gVFJVRTsKKyt9CisrCisgaW50IFRlc3RTdHJpbmcoaW50IGFyZ2MsIGNoYXIq IGFyZ3ZbXSkKKyB7CisgCVdDSEFSKiBwOworQEAgLTM0LDYgKzEwNywxNSBAQCBpbnQgVGVzdFN0 cmluZyhpbnQgYXJnYywgY2hhciogYXJndltdKQorIAlzaXplX3QgbGVuZ3RoOworIAlXQ0hBUiog Y29udGV4dDsKKworKwlXSU5QUl9VTlVTRUQoYXJnYyk7CisrCVdJTlBSX1VOVVNFRChhcmd2KTsK KysKKysJaWYgKCF0ZXN0X3ZhbGlkX3VybCgpKQorKwkJcmV0dXJuIC0xOworKworKwlpZiAoIXRl c3RfbmV3bGluZSgpKQorKwkJcmV0dXJuIC0xOworKworICNpZmRlZiBfX0JJR19FTkRJQU5fXwor IAkvKiBCZSBzdXJlIHRoYXQgd2UgYWx3YXlzIHVzZSBMRSBlbmNvZGVkIHN0cmluZyAqLworIAlC eXRlU3dhcFVuaWNvZGUodGVzdFN0cmluZ1csIHRlc3RTdHJpbmdXX0xlbmd0aCk7Cg==