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: Than Ngo To: git-commits@fedoraproject.org Subject: [rpms/chromium] epel9-next: rebase ozone-wayland-vaapi-support patch Date: Fri, 07 Aug 2026 16:05:00 GMT Message-ID: <178611870050.1.6686963020237809136.rpms-chromium-85e2778cb61d@fedoraproject.org> List-ID: X-Git-Repo: rpms/chromium X-Git-Branch: epel9-next X-Git-Rev: 85e2778cb61d0dcc106232e96c8292343607f78c QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvY2hyb21pdW0KQnJh bmNoIDogZXBlbDktbmV4dApDb21taXQgOiA4NWUyNzc4Y2I2MWQwZGNjMTA2MjMyZTk2YzgyOTIz NDM2MDdmNzhjCkF1dGhvciA6IFRoYW4gTmdvIDx0aGFuQHJlZGhhdC5jb20+CkRhdGUgICA6IDIw MjMtMDQtMTVUMDk6NDY6NDErMDI6MDAKU3RhdHMgIDogKzYyNS8tMCBpbiAxIGZpbGUocykKVVJM ICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9jaHJvbWl1bS9jLzg1ZTI3 NzhjYjYxZDBkY2MxMDYyMzJlOTZjODI5MjM0MzYwN2Y3OGM/YnJhbmNoPWVwZWw5LW5leHQKCkxv ZzoKcmViYXNlIG96b25lLXdheWxhbmQtdmFhcGktc3VwcG9ydCBwYXRjaAoKLS0tCmRpZmYgLS1n aXQgYS9jaHJvbWl1bS0xMTItb3pvbmUtd2F5bGFuZC12YWFwaS1zdXBwb3J0LnBhdGNoIGIvY2hy b21pdW0tMTEyLW96b25lLXdheWxhbmQtdmFhcGktc3VwcG9ydC5wYXRjaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjRkNGFmCi0tLSAvZGV2L251bGwKKysrIGIvY2hyb21p dW0tMTEyLW96b25lLXdheWxhbmQtdmFhcGktc3VwcG9ydC5wYXRjaApAQCAtMCwwICsxLDYyNSBA QAorZGlmZiAtdXAgY2hyb21pdW0tMTEyLjAuNTYxNS40OS9tZWRpYS9ncHUvYXJncy5nbmkud2F5 bGFuZC12YWFwaSBjaHJvbWl1bS0xMTIuMC41NjE1LjQ5L21lZGlhL2dwdS9hcmdzLmduaQorLS0t IGNocm9taXVtLTExMi4wLjU2MTUuNDkvbWVkaWEvZ3B1L2FyZ3MuZ25pLndheWxhbmQtdmFhcGkJ MjAyMy0wMy0zMCAwMjozMzo1My4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMTIuMC41 NjE1LjQ5L21lZGlhL2dwdS9hcmdzLmduaQkyMDIzLTA0LTE0IDIxOjI5OjQxLjc3NjMyODA0NCAr MDIwMAorQEAgLTYsMTAgKzYsMTQgQEAgaW1wb3J0KCIvL2J1aWxkL2NvbmZpZy9jaHJvbWVvcy91 aV9tb2RlLgorIGltcG9ydCgiLy9idWlsZC9jb25maWcvb3pvbmUuZ25pIikKKyAKKyBkZWNsYXJl X2FyZ3MoKSB7CistICAjIEluZGljYXRlcyBpZiBYMTEgVkEtQVBJLWJhc2VkIGhhcmR3YXJlIGFj Y2VsZXJhdGlvbiBpcyB0byBiZSB1c2VkLgorLSAgIyBTZWUgYWxzbyB0aGUgY29tbWVudCBuZWFy IHRoZSB8dXNlX3ZhYXBpfCBhcmcuCistICB1c2VfdmFhcGlfeDExID0gaXNfbGludXggJiYgb3pv bmVfcGxhdGZvcm1feDExICYmCistICAgICAgICAgICAgICAgICAgKHRhcmdldF9jcHUgPT0gIng4 NiIgfHwgdGFyZ2V0X2NwdSA9PSAieDY0IikgJiYgIWlzX2Nhc3RvcworKyAgIyBCdWlsZCBDaHJv bWUgc3VwcG9ydCBmb3IgdXNpbmcgVkEtQVBJIG92ZXIgWDExLiBOb3RlIHRoYXQgc2V0dGluZyB0 aGlzIHRvIHRydWUgaXMKKysgICMgbm90IGEgZ3VhcmFudGVlIHRoYXQgQ2hyb21lIHdpbGwgdXNl IChvciBldmVuIHRyeSB0byB1c2UpIFZBLUFQSSBvdmVyIFgxMS4gSW4KKysgICMgcGFydGljdWxh ciwgaXQgaXMgcG9zc2libGUgdG8gYnVpbGQgQ2hyb21lIHdpdGggc3VwcG9ydCBmb3IgVkEtQVBJ IG92ZXIgWDExIGJ1dAorKyAgIyBwaWNrIFdheWxhbmQgYXMgdGhlIE96b25lIGJhY2tlbmQgYXQg cnVudGltZS4gSW4gdGhpcyBjYXNlLCBDaHJvbWUgd2lsbCB0cnkgdG8KKysgICMgdXNlIFZBLUFQ SSBvdmVyIERSTS4KKysgIHN1cHBvcnRfdmFhcGlfb3Zlcl94MTEgPQorKyAgICAgIGlzX2xpbnV4 ICYmIG96b25lX3BsYXRmb3JtX3gxMSAmJgorKyAgICAgICh0YXJnZXRfY3B1ID09ICJ4ODYiIHx8 IHRhcmdldF9jcHUgPT0gIng2NCIpICYmICFpc19jYXN0b3MKKyB9CisgCisgZGVjbGFyZV9hcmdz KCkgeworQEAgLTI5LDggKzMzLDkgQEAgZGVjbGFyZV9hcmdzKCkgeworICAgIyBpcyB0eXBpY2Fs bHkgdGhlIGNhc2Ugb24geDg2LWJhc2VkIENocm9tZU9TIGRldmljZXMuCisgICAjIFZBLUFQSSBz aG91bGQgYWxzbyBiZSBjb21waWxlZCBieSBkZWZhdWx0IG9uIHgxMS11c2luZyBsaW51eCBkZXZp Y2VzCisgICAjIHVzaW5nIHg4Ni94NjQuCistICB1c2VfdmFhcGkgPSB1c2VfdmFhcGlfeDExIHx8 IChpc19jaHJvbWVvc19sYWNyb3MgJiYKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICh0YXJnZXRfY3B1ID09ICJ4ODYiIHx8IHRhcmdldF9jcHUgPT0gIng2NCIpKQorKyAgdXNlX3Zh YXBpID0KKysgICAgICBzdXBwb3J0X3ZhYXBpX292ZXJfeDExIHx8CisrICAgICAgKGlzX2Nocm9t ZW9zX2xhY3JvcyAmJiAodGFyZ2V0X2NwdSA9PSAieDg2IiB8fCB0YXJnZXRfY3B1ID09ICJ4NjQi KSkKKyAKKyAgICMgSW5kaWNhdGVzIGlmIENocm9tZU9TIHByb3RlY3RlZCBtZWRpYSBzdXBwb3J0 IGV4aXN0cy4gVGhpcyBpcyB1c2VkCisgICAjIHRvIGVuYWJsZSB0aGUgQ0RNIGRhZW1vbiBpbiBD aHJvbWUgT1MgYXMgd2VsbCBhcyBzdXBwb3J0IGZvcgorZGlmZiAtdXAgY2hyb21pdW0tMTEyLjAu NTYxNS40OS9tZWRpYS9ncHUvQlVJTEQuZ24ud2F5bGFuZC12YWFwaSBjaHJvbWl1bS0xMTIuMC41 NjE1LjQ5L21lZGlhL2dwdS9CVUlMRC5nbgorLS0tIGNocm9taXVtLTExMi4wLjU2MTUuNDkvbWVk aWEvZ3B1L0JVSUxELmduLndheWxhbmQtdmFhcGkJMjAyMy0wMy0zMCAwMjozMzo1My4wMDAwMDAw MDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMTIuMC41NjE1LjQ5L21lZGlhL2dwdS9CVUlMRC5nbgky MDIzLTA0LTE0IDIxOjI5OjQxLjc3NjMyODA0NCArMDIwMAorQEAgLTIwLDcgKzIwLDcgQEAgYnVp bGRmbGFnX2hlYWRlcigiYnVpbGRmbGFncyIpIHsKKyAgICAgIlVTRV9WQUFQSV9JTUFHRV9DT0RF Q1M9JHVzZV92YWFwaV9pbWFnZV9jb2RlY3MiLAorICAgICAiVVNFX1Y0TDJfQ09ERUM9JHVzZV92 NGwyX2NvZGVjIiwKKyAgICAgIlVTRV9MSUJWNEwyPSR1c2VfdjRscGx1Z2luIiwKKy0gICAgIlVT RV9WQUFQSV9YMTE9JHVzZV92YWFwaV94MTEiLAorKyAgICAiU1VQUE9SVF9WQUFQSV9PVkVSX1gx MT0kc3VwcG9ydF92YWFwaV9vdmVyX3gxMSIsCisgICBdCisgfQorIAorZGlmZiAtdXAgY2hyb21p dW0tMTEyLjAuNTYxNS40OS9tZWRpYS9ncHUvdmFhcGkvQlVJTEQuZ24ud2F5bGFuZC12YWFwaSBj aHJvbWl1bS0xMTIuMC41NjE1LjQ5L21lZGlhL2dwdS92YWFwaS9CVUlMRC5nbgorLS0tIGNocm9t aXVtLTExMi4wLjU2MTUuNDkvbWVkaWEvZ3B1L3ZhYXBpL0JVSUxELmduLndheWxhbmQtdmFhcGkJ MjAyMy0wMy0zMCAwMjozMzo1My4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMTIuMC41 NjE1LjQ5L21lZGlhL2dwdS92YWFwaS9CVUlMRC5nbgkyMDIzLTA0LTE0IDIxOjI5OjQxLjc3NjMy ODA0NCArMDIwMAorQEAgLTE3LDcgKzE3LDcgQEAgYXNzZXJ0KHVzZV92YWFwaSkKKyBnZW5lcmF0 ZV9zdHVicygibGlidmFfc3R1YnMiKSB7CisgICBleHRyYV9oZWFkZXIgPSAidmFfc3R1Yl9oZWFk ZXIuZnJhZ21lbnQiCisgICBzaWdzID0gWyAidmEuc2lncyIgXQorLSAgaWYgKHVzZV92YWFwaV94 MTEpIHsKKysgIGlmIChzdXBwb3J0X3ZhYXBpX292ZXJfeDExKSB7CisgICAgIHNpZ3MgKz0gWyAi dmFfeDExLnNpZ3MiIF0KKyAgIH0KKyAgIGlmIChpc19jaHJvbWVvc19hc2gpIHsKK0BAIC0xMzks NyArMTM5LDcgQEAgc291cmNlX3NldCgidmFhcGkiKSB7CisgICAgIF0KKyAgIH0KKyAKKy0gIGlm ICh1c2VfdmFhcGlfeDExKSB7CisrICBpZiAoc3VwcG9ydF92YWFwaV9vdmVyX3gxMSkgeworICAg ICBkZXBzICs9IFsgIi8vdWkvZ2Z4L3giIF0KKyAgICAgc291cmNlcyArPSBbCisgICAgICAgInZh YXBpX3BpY3R1cmVfbmF0aXZlX3BpeG1hcF9hbmdsZS5jYyIsCitAQCAtMjEzLDcgKzIxMyw3IEBA IHNvdXJjZV9zZXQoImNvbW1vbiIpIHsKKyAgICAgZGVwcyArPSBbICIvL3VpL296b25lIiBdCisg ICB9CisgCistICBpZiAodXNlX3ZhYXBpX3gxMSkgeworKyAgaWYgKHN1cHBvcnRfdmFhcGlfb3Zl cl94MTEpIHsKKyAgICAgZGVwcyArPSBbICIvL3VpL2dmeC94IiBdCisgICB9CisgCitkaWZmIC11 cCBjaHJvbWl1bS0xMTIuMC41NjE1LjQ5L21lZGlhL2dwdS92YWFwaS92YWFwaV9waWN0dXJlX2Zh Y3RvcnkuY2Mud2F5bGFuZC12YWFwaSBjaHJvbWl1bS0xMTIuMC41NjE1LjQ5L21lZGlhL2dwdS92 YWFwaS92YWFwaV9waWN0dXJlX2ZhY3RvcnkuY2MKKy0tLSBjaHJvbWl1bS0xMTIuMC41NjE1LjQ5 L21lZGlhL2dwdS92YWFwaS92YWFwaV9waWN0dXJlX2ZhY3RvcnkuY2Mud2F5bGFuZC12YWFwaQky MDIzLTAzLTMwIDAyOjMzOjUzLjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTExMi4wLjU2 MTUuNDkvbWVkaWEvZ3B1L3ZhYXBpL3ZhYXBpX3BpY3R1cmVfZmFjdG9yeS5jYwkyMDIzLTA0LTE1 IDA3OjE0OjA1LjU3Mzc5Njc5NCArMDIwMAorQEAgLTEzLDkgKzEzLDkgQEAKKyAjaWYgQlVJTERG TEFHKElTX09aT05FKQorICNpbmNsdWRlICJtZWRpYS9ncHUvdmFhcGkvdmFhcGlfcGljdHVyZV9u YXRpdmVfcGl4bWFwX296b25lLmgiCisgI2VuZGlmICAvLyBCVUlMREZMQUcoSVNfT1pPTkUpCist I2lmIEJVSUxERkxBRyhVU0VfVkFBUElfWDExKQorKyNpZiBCVUlMREZMQUcoU1VQUE9SVF9WQUFQ SV9PVkVSX1gxMSkKKyAjaW5jbHVkZSAibWVkaWEvZ3B1L3ZhYXBpL3ZhYXBpX3BpY3R1cmVfbmF0 aXZlX3BpeG1hcF9hbmdsZS5oIgorLSNlbmRpZiAgLy8gQlVJTERGTEFHKFVTRV9WQUFQSV9YMTEp CisrI2VuZGlmICAvLyBCVUlMREZMQUcoU1VQUE9SVF9WQUFQSV9PVkVSX1gxMSkKKyAjaWYgZGVm aW5lZChVU0VfRUdMKQorICNpbmNsdWRlICJtZWRpYS9ncHUvdmFhcGkvdmFhcGlfcGljdHVyZV9u YXRpdmVfcGl4bWFwX2VnbC5oIgorICNlbmRpZgorQEAgLTQxLDE5ICs0MSwyOCBAQCBzdGQ6OnVu aXF1ZV9wdHI8VmFhcGlQaWN0dXJlPiBDcmVhdGVWYWFwCisgCisgfSAgLy8gbmFtZXNwYWNlCisg CisrI2lmIEJVSUxERkxBRyhTVVBQT1JUX1ZBQVBJX09WRVJfWDExKQorK1ZhYXBpUGljdHVyZUZh Y3Rvcnk6OlZhYXBpUGljdHVyZUZhY3RvcnkoCisrICAgIGFic2w6Om9wdGlvbmFsPGJvb2w+IG1h eV91c2VfdmFhcGlfb3Zlcl94MTEpCisrICAgIDogbWF5X3VzZV92YWFwaV9vdmVyX3gxMV8obWF5 X3VzZV92YWFwaV9vdmVyX3gxMSkgeworKyNlbHNlCisgVmFhcGlQaWN0dXJlRmFjdG9yeTo6VmFh cGlQaWN0dXJlRmFjdG9yeSgpIHsKKysjZW5kaWYgIC8vIEJVSUxERkxBRyhTVVBQT1JUX1ZBQVBJ X09WRVJfWDExKQorICAgdmFhcGlfaW1wbF9wYWlyc18uaW5zZXJ0KAorICAgICAgIHN0ZDo6bWFr ZV9wYWlyKGdsOjprR0xJbXBsZW1lbnRhdGlvbkVHTEdMRVMyLAorICAgICAgICAgICAgICAgICAg ICAgIFZhYXBpUGljdHVyZUZhY3Rvcnk6OmtWYWFwaUltcGxlbWVudGF0aW9uRHJtKSk7CistI2lm IEJVSUxERkxBRyhVU0VfVkFBUElfWDExKQorLSAgdmFhcGlfaW1wbF9wYWlyc18uaW5zZXJ0KAor LSAgICAgIHN0ZDo6bWFrZV9wYWlyKGdsOjprR0xJbXBsZW1lbnRhdGlvbkVHTEFOR0xFLAorLSAg ICAgICAgICAgICAgICAgICAgIFZhYXBpUGljdHVyZUZhY3Rvcnk6OmtWYWFwaUltcGxlbWVudGF0 aW9uQW5nbGUpKTsKKy0jZWxpZiBCVUlMREZMQUcoSVNfT1pPTkUpCisrI2lmIEJVSUxERkxBRyhT VVBQT1JUX1ZBQVBJX09WRVJfWDExKQorKyAgQ0hFQ0sobWF5X3VzZV92YWFwaV9vdmVyX3gxMV8u aGFzX3ZhbHVlKCkpOworKyAgaWYgKG1heV91c2VfdmFhcGlfb3Zlcl94MTFfLnZhbHVlKCkpIHsK KysgICAgdmFhcGlfaW1wbF9wYWlyc18uaW5zZXJ0KAorKyAgICAgICAgc3RkOjptYWtlX3BhaXIo Z2w6OmtHTEltcGxlbWVudGF0aW9uRUdMQU5HTEUsCisrICAgICAgICAgICAgICAgICAgICAgICBW YWFwaVBpY3R1cmVGYWN0b3J5OjprVmFhcGlJbXBsZW1lbnRhdGlvbkFuZ2xlKSk7CisrICB9Cisr I2Vsc2UKKyAgIHZhYXBpX2ltcGxfcGFpcnNfLmluc2VydCgKKyAgICAgICBzdGQ6Om1ha2VfcGFp cihnbDo6a0dMSW1wbGVtZW50YXRpb25FR0xBTkdMRSwKKyAgICAgICAgICAgICAgICAgICAgICBW YWFwaVBpY3R1cmVGYWN0b3J5OjprVmFhcGlJbXBsZW1lbnRhdGlvbkRybSkpOworLSNlbmRpZgor KyNlbmRpZiAgLy8gQlVJTERGTEFHKFNVUFBPUlRfVkFBUElfT1ZFUl9YMTEpCisgCisgICBEZXRl cm1pbmVQaWN0dXJlQ3JlYXRpb25BbmREb3dubG9hZGluZ01lY2hhbmlzbSgpOworIH0KK0BAIC05 MywxOSArMTAyLDE5IEBAIFZhYXBpUGljdHVyZUZhY3Rvcnk6OkdldFZhYXBpSW1wbGVtZW50YXQK KyB9CisgCisgdWludDMyX3QgVmFhcGlQaWN0dXJlRmFjdG9yeTo6R2V0R0xUZXh0dXJlVGFyZ2V0 KCkgeworLSNpZiBCVUlMREZMQUcoVVNFX1ZBQVBJX1gxMSkKKy0gIHJldHVybiBHTF9URVhUVVJF XzJEOworLSNlbHNlCisrI2lmIEJVSUxERkxBRyhJU19DSFJPTUVPUykKKyAgIHJldHVybiBHTF9U RVhUVVJFX0VYVEVSTkFMX09FUzsKKy0jZW5kaWYKKysjZWxzZQorKyAgcmV0dXJuIEdMX1RFWFRV UkVfMkQ7CisrI2VuZGlmICAvLyBCVUlMREZMQUcoSVNfQ0hST01FT1MpCisgfQorIAorIGdmeDo6 QnVmZmVyRm9ybWF0IFZhYXBpUGljdHVyZUZhY3Rvcnk6OkdldEJ1ZmZlckZvcm1hdCgpIHsKKy0j aWYgQlVJTERGTEFHKFVTRV9WQUFQSV9YMTEpCistICByZXR1cm4gZ2Z4OjpCdWZmZXJGb3JtYXQ6 OlJHQlhfODg4ODsKKy0jZWxzZQorKyNpZiBCVUlMREZMQUcoSVNfQ0hST01FT1MpCisgICByZXR1 cm4gZ2Z4OjpCdWZmZXJGb3JtYXQ6OllVVl80MjBfQklQTEFOQVI7CistI2VuZGlmCisrI2Vsc2UK KysgIHJldHVybiBnZng6OkJ1ZmZlckZvcm1hdDo6UkdCWF84ODg4OworKyNlbmRpZiAgLy8gQlVJ TERGTEFHKElTX0NIUk9NRU9TKQorIH0KKyAKKyB2b2lkIFZhYXBpUGljdHVyZUZhY3Rvcnk6OkRl dGVybWluZVBpY3R1cmVDcmVhdGlvbkFuZERvd25sb2FkaW5nTWVjaGFuaXNtKCkgeworQEAgLTEx MywxOSArMTIyLDIzIEBAIHZvaWQgVmFhcGlQaWN0dXJlRmFjdG9yeTo6RGV0ZXJtaW5lUGljdHUK KyAjaWYgQlVJTERGTEFHKElTX09aT05FKQorICAgICAvLyBXZSBjYW4gYmUgY2FsbGVkIHdpdGhv dXQgR0wgaW5pdGlhbGl6ZWQsIHdoaWNoIGlzIHZhbGlkIGlmIHdlIHVzZSBPem9uZS4KKyAgICAg Y2FzZSBrVmFhcGlJbXBsZW1lbnRhdGlvbk5vbmU6CisrI2lmIEJVSUxERkxBRyhTVVBQT1JUX1ZB QVBJX09WRVJfWDExKQorKyAgICAgIERDSEVDSyhtYXlfdXNlX3ZhYXBpX292ZXJfeDExXy52YWx1 ZV9vcihmYWxzZSkpOworKyNlbmRpZgorICAgICAgIGNyZWF0ZV9waWN0dXJlX2NiXyA9IGJhc2U6 OkJpbmRSZXBlYXRpbmcoCisgICAgICAgICAgICZDcmVhdGVWYWFwaVBpY3R1cmVOYXRpdmVJbXBs PFZhYXBpUGljdHVyZU5hdGl2ZVBpeG1hcE96b25lPik7CisgICAgICAgbmVlZHNfdnBwX2Zvcl9k b3dubG9hZGluZ18gPSB0cnVlOworICAgICAgIGJyZWFrOworICNlbmRpZiAgLy8gQlVJTERGTEFH KElTX09aT05FKQorLSNpZiBCVUlMREZMQUcoVVNFX1ZBQVBJX1gxMSkKKysjaWYgQlVJTERGTEFH KFNVUFBPUlRfVkFBUElfT1ZFUl9YMTEpCisgICAgIGNhc2Uga1ZhYXBpSW1wbGVtZW50YXRpb25B bmdsZToKKysgICAgICBEQ0hFQ0sobWF5X3VzZV92YWFwaV9vdmVyX3gxMV8udmFsdWVfb3IoZmFs c2UpKTsKKyAgICAgICBjcmVhdGVfcGljdHVyZV9jYl8gPSBiYXNlOjpCaW5kUmVwZWF0aW5nKAor ICAgICAgICAgICAmQ3JlYXRlVmFhcGlQaWN0dXJlTmF0aXZlSW1wbDxWYWFwaVBpY3R1cmVOYXRp dmVQaXhtYXBBbmdsZT4pOworICAgICAgIC8vIE5laXRoZXIgVmFhcGlURlBQaWN0dXJlIG9yIFZh YXBpUGljdHVyZU5hdGl2ZVBpeG1hcEFuZ2xlIG5lZWRzIHRoZSBWUFAuCisgICAgICAgbmVlZHNf dnBwX2Zvcl9kb3dubG9hZGluZ18gPSBmYWxzZTsKKyAgICAgICBicmVhazsKKy0jZW5kaWYgIC8v IEJVSUxERkxBRyhVU0VfVkFBUElfWDExKQorKyNlbmRpZiAgLy8gQlVJTERGTEFHKFNVUFBPUlRf VkFBUElfT1ZFUl9YMTEpCisgICAgIGNhc2Uga1ZhYXBpSW1wbGVtZW50YXRpb25Ecm06CisgI2lm IEJVSUxERkxBRyhJU19PWk9ORSkKKyAgICAgICBjcmVhdGVfcGljdHVyZV9jYl8gPSBiYXNlOjpC aW5kUmVwZWF0aW5nKAorZGlmZiAtdXAgY2hyb21pdW0tMTEyLjAuNTYxNS40OS9tZWRpYS9ncHUv dmFhcGkvdmFhcGlfcGljdHVyZV9mYWN0b3J5Lmgud2F5bGFuZC12YWFwaSBjaHJvbWl1bS0xMTIu MC41NjE1LjQ5L21lZGlhL2dwdS92YWFwaS92YWFwaV9waWN0dXJlX2ZhY3RvcnkuaAorLS0tIGNo cm9taXVtLTExMi4wLjU2MTUuNDkvbWVkaWEvZ3B1L3ZhYXBpL3ZhYXBpX3BpY3R1cmVfZmFjdG9y eS5oLndheWxhbmQtdmFhcGkJMjAyMy0wMy0zMCAwMjozMzo1My4wMDAwMDAwMDAgKzAyMDAKKysr KyBjaHJvbWl1bS0xMTIuMC41NjE1LjQ5L21lZGlhL2dwdS92YWFwaS92YWFwaV9waWN0dXJlX2Zh Y3RvcnkuaAkyMDIzLTA0LTE0IDIxOjI5OjQxLjc3NzMyODA2MiArMDIwMAorQEAgLTM1LDcgKzM1 LDExIEBAIGNsYXNzIE1FRElBX0dQVV9FWFBPUlQgVmFhcGlQaWN0dXJlRmFjdG8KKyAgICAga1Zh YXBpSW1wbGVtZW50YXRpb25BbmdsZSwKKyAgIH07CisgCisrI2lmIEJVSUxERkxBRyhTVVBQT1JU X1ZBQVBJX09WRVJfWDExKQorKyAgZXhwbGljaXQgVmFhcGlQaWN0dXJlRmFjdG9yeShhYnNsOjpv cHRpb25hbDxib29sPiBtYXlfdXNlX3ZhYXBpX292ZXJfeDExKTsKKysjZWxzZQorICAgVmFhcGlQ aWN0dXJlRmFjdG9yeSgpOworKyNlbmRpZiAgLy8gQlVJTERGTEFHKFNVUFBPUlRfVkFBUElfT1ZF Ul9YMTEpCisgCisgICBWYWFwaVBpY3R1cmVGYWN0b3J5KGNvbnN0IFZhYXBpUGljdHVyZUZhY3Rv cnkmKSA9IGRlbGV0ZTsKKyAgIFZhYXBpUGljdHVyZUZhY3RvcnkmIG9wZXJhdG9yPShjb25zdCBW YWFwaVBpY3R1cmVGYWN0b3J5JikgPSBkZWxldGU7CitAQCAtODQsNiArODgsMTEgQEAgY2xhc3Mg TUVESUFfR1BVX0VYUE9SVCBWYWFwaVBpY3R1cmVGYWN0bworIAorICAgQ3JlYXRlUGljdHVyZUNC IGNyZWF0ZV9waWN0dXJlX2NiXzsKKyAgIGJvb2wgbmVlZHNfdnBwX2Zvcl9kb3dubG9hZGluZ18g PSBmYWxzZTsKKysKKysjaWYgQlVJTERGTEFHKFNVUFBPUlRfVkFBUElfT1ZFUl9YMTEpCisrICAv LyBTZWUgY29tbWVudCBpbiBgVmFhcGlXcmFwcGVyOjpNYXlVc2VWYWFwaU92ZXJYMTEoKWAuCisr ICBhYnNsOjpvcHRpb25hbDxib29sPiBtYXlfdXNlX3ZhYXBpX292ZXJfeDExXzsKKysjZW5kaWYg IC8vIEJVSUxERkxBRyhTVVBQT1JUX1ZBQVBJX09WRVJfWDExKQorIH07CisgCisgfSAgLy8gbmFt ZXNwYWNlIG1lZGlhCitkaWZmIC11cCBjaHJvbWl1bS0xMTIuMC41NjE1LjQ5L21lZGlhL2dwdS92 YWFwaS92YWFwaV9waWN0dXJlX25hdGl2ZV9waXhtYXBfb3pvbmUuY2Mud2F5bGFuZC12YWFwaSBj aHJvbWl1bS0xMTIuMC41NjE1LjQ5L21lZGlhL2dwdS92YWFwaS92YWFwaV9waWN0dXJlX25hdGl2 ZV9waXhtYXBfb3pvbmUuY2MKKy0tLSBjaHJvbWl1bS0xMTIuMC41NjE1LjQ5L21lZGlhL2dwdS92 YWFwaS92YWFwaV9waWN0dXJlX25hdGl2ZV9waXhtYXBfb3pvbmUuY2Mud2F5bGFuZC12YWFwaQky MDIzLTAzLTMwIDAyOjMzOjUzLjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTExMi4wLjU2 MTUuNDkvbWVkaWEvZ3B1L3ZhYXBpL3ZhYXBpX3BpY3R1cmVfbmF0aXZlX3BpeG1hcF9vem9uZS5j YwkyMDIzLTA0LTE0IDIxOjI5OjQxLjc3NzMyODA2MiArMDIwMAorQEAgLTExMyw3ICsxMTMsNyBA QCBWYWFwaVN0YXR1cyBWYWFwaVBpY3R1cmVOYXRpdmVQaXhtYXBPem9uCisgICB1aTo6T3pvbmVQ bGF0Zm9ybSogcGxhdGZvcm0gPSB1aTo6T3pvbmVQbGF0Zm9ybTo6R2V0SW5zdGFuY2UoKTsKKyAg IHVpOjpTdXJmYWNlRmFjdG9yeU96b25lKiBmYWN0b3J5ID0gcGxhdGZvcm0tPkdldFN1cmZhY2VG YWN0b3J5T3pvbmUoKTsKKyAgIGdmeDo6QnVmZmVyVXNhZ2UgYnVmZmVyX3VzYWdlID0gZ2Z4OjpC dWZmZXJVc2FnZTo6U0NBTk9VVF9WREFfV1JJVEU7CistI2lmIEJVSUxERkxBRyhVU0VfVkFBUElf WDExKQorKyNpZiBCVUlMREZMQUcoU1VQUE9SVF9WQUFQSV9PVkVSX1gxMSkKKyAgIC8vIFRoZSAn VmFhcGlWaWRlb0RlY29kZUFjY2VsZXJhdG9yJyByZXF1aXJlcyB0aGUgVlBQIHRvIGRvd25sb2Fk IHRoZSBkZWNvZGVkCisgICAvLyBmcmFtZSBmcm9tIHRoZSBpbnRlcm5hbCBzdXJmYWNlIHRvIHRo ZSBhbGxvY2F0ZWQgbmF0aXZlIHBpeG1hcC4KKyAgIC8vICdTQ0FOT1VUX1ZEQV9XUklURScgaXMg dXNlZCBmb3IgJ1lVVl80MjBfQklQTEFOQVInIG9uIENocm9tZU9TOyBGb3IgTGludXgsCitkaWZm IC11cCBjaHJvbWl1bS0xMTIuMC41NjE1LjQ5L21lZGlhL2dwdS92YWFwaS92YWFwaV92aWRlb19k ZWNvZGVfYWNjZWxlcmF0b3IuY2Mud2F5bGFuZC12YWFwaSBjaHJvbWl1bS0xMTIuMC41NjE1LjQ5 L21lZGlhL2dwdS92YWFwaS92YWFwaV92aWRlb19kZWNvZGVfYWNjZWxlcmF0b3IuY2MKKy0tLSBj aHJvbWl1bS0xMTIuMC41NjE1LjQ5L21lZGlhL2dwdS92YWFwaS92YWFwaV92aWRlb19kZWNvZGVf YWNjZWxlcmF0b3IuY2Mud2F5bGFuZC12YWFwaQkyMDIzLTA0LTE0IDIxOjI5OjQxLjc3NTMyODAy NCArMDIwMAorKysrIGNocm9taXVtLTExMi4wLjU2MTUuNDkvbWVkaWEvZ3B1L3ZhYXBpL3ZhYXBp X3ZpZGVvX2RlY29kZV9hY2NlbGVyYXRvci5jYwkyMDIzLTA0LTE0IDIxOjI5OjQxLjc3NzMyODA2 MiArMDIwMAorQEAgLTE4NSw3ICsxODUsMTIgQEAgYm9vbCBWYWFwaVZpZGVvRGVjb2RlQWNjZWxl cmF0b3I6OkluaXRpYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIENsaWVudCogY2xpZW50KSB7CisgICBEQ0hFQ0sodGFza19ydW5uZXJfLT5CZWxvbmdzVG9D dXJyZW50VGhyZWFkKCkpOworIAorKyNpZiBCVUlMREZMQUcoU1VQUE9SVF9WQUFQSV9PVkVSX1gx MSkKKysgIHZhYXBpX3BpY3R1cmVfZmFjdG9yeV8gPQorKyAgICAgIHN0ZDo6bWFrZV91bmlxdWU8 VmFhcGlQaWN0dXJlRmFjdG9yeT4oVmFhcGlXcmFwcGVyOjpNYXlVc2VWYWFwaU92ZXJYMTEoKSk7 CisrI2Vsc2UKKyAgIHZhYXBpX3BpY3R1cmVfZmFjdG9yeV8gPSBzdGQ6Om1ha2VfdW5pcXVlPFZh YXBpUGljdHVyZUZhY3Rvcnk+KCk7CisrI2VuZGlmICAvLyBCVUlMREZMQUcoU1VQUE9SVF9WQUFQ SV9PVkVSX1gxMSkKKyAKKyAgIGlmIChjb25maWcuaXNfZW5jcnlwdGVkKCkpIHsKKyAgICAgTk9U UkVBQ0hFRCgpIDw8ICJFbmNyeXB0ZWQgc3RyZWFtcyBhcmUgbm90IHN1cHBvcnRlZCBmb3IgdGhp cyBWREEiOworQEAgLTEyMTEsNyArMTIxNiw3IEBAIFZhYXBpVmlkZW9EZWNvZGVBY2NlbGVyYXRv cjo6R2V0U3VwcG9ydGUKKyAKKyBWYWFwaVZpZGVvRGVjb2RlQWNjZWxlcmF0b3I6OkJ1ZmZlckFs bG9jYXRpb25Nb2RlCisgVmFhcGlWaWRlb0RlY29kZUFjY2VsZXJhdG9yOjpEZWNpZGVCdWZmZXJB bGxvY2F0aW9uTW9kZSgpIHsKKy0jaWYgQlVJTERGTEFHKFVTRV9WQUFQSV9YMTEpCisrI2lmIEJV SUxERkxBRyhTVVBQT1JUX1ZBQVBJX09WRVJfWDExKQorICAgLy8gVGhlIElNUE9SVCBtb2RlIGlz IHVzZWQgZm9yIEFuZHJvaWQgb24gQ2hyb21lIE9TLCBzbyB0aGlzIGRvZXNuJ3QgYXBwbHkKKyAg IC8vIGhlcmUuCisgICBEQ0hFQ0tfTkUob3V0cHV0X21vZGVfLCBWaWRlb0RlY29kZUFjY2VsZXJh dG9yOjpDb25maWc6Ok91dHB1dE1vZGU6OklNUE9SVCk7CitkaWZmIC11cCBjaHJvbWl1bS0xMTIu MC41NjE1LjQ5L21lZGlhL2dwdS92YWFwaS92YWFwaV92aWRlb19kZWNvZGVfYWNjZWxlcmF0b3Jf dW5pdHRlc3QuY2Mud2F5bGFuZC12YWFwaSBjaHJvbWl1bS0xMTIuMC41NjE1LjQ5L21lZGlhL2dw dS92YWFwaS92YWFwaV92aWRlb19kZWNvZGVfYWNjZWxlcmF0b3JfdW5pdHRlc3QuY2MKKy0tLSBj aHJvbWl1bS0xMTIuMC41NjE1LjQ5L21lZGlhL2dwdS92YWFwaS92YWFwaV92aWRlb19kZWNvZGVf YWNjZWxlcmF0b3JfdW5pdHRlc3QuY2Mud2F5bGFuZC12YWFwaQkyMDIzLTAzLTMwIDAyOjMzOjUz LjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTExMi4wLjU2MTUuNDkvbWVkaWEvZ3B1L3Zh YXBpL3ZhYXBpX3ZpZGVvX2RlY29kZV9hY2NlbGVyYXRvcl91bml0dGVzdC5jYwkyMDIzLTA0LTE1 IDA3OjM4OjE5LjA1ODk1NzExMiArMDIwMAorQEAgLTQxLDYgKzQxLDExIEBAIHN0cnVjdCBUZXN0 UGFyYW1zIHsKKyAgIGJvb2wgZGVjb2RlX3VzaW5nX2NsaWVudF9waWN0dXJlX2J1ZmZlcnM7Cisg fTsKKyAKKysjaWYgQlVJTERGTEFHKFNVUFBPUlRfVkFBUElfT1ZFUl9YMTEpCisrLy8gVE9ETzog QWRkIGl0IGluIFRlc3RQYXJhbXMgdG8gY292ZXIgT3pvbmUvV2F5bGFuZC4KKytib29sIGtNYXlV c2VWYWFwaU92ZXJYMTEgPSB0cnVlOworKyNlbmRpZiAgLy8gQlVJTERGTEFHKFNVUFBPUlRfVkFB UElfT1ZFUl9YMTEpCisrCisgY29uc3RleHByIGludDMyX3Qga0JpdHN0cmVhbUlkID0gMTIzOwor IGNvbnN0ZXhwciBzaXplX3Qga0lucHV0U2l6ZSA9IDI1NjsKKyAKK0BAIC0xMzQsNyArMTM5LDEz IEBAIGNsYXNzIE1vY2tWYWFwaVBpY3R1cmUgOiBwdWJsaWMgVmFhcGlQaWMKKyAKKyBjbGFzcyBN b2NrVmFhcGlQaWN0dXJlRmFjdG9yeSA6IHB1YmxpYyBWYWFwaVBpY3R1cmVGYWN0b3J5IHsKKyAg cHVibGljOgorKyNpZiBCVUlMREZMQUcoU1VQUE9SVF9WQUFQSV9PVkVSX1gxMSkKKysgIGV4cGxp Y2l0IE1vY2tWYWFwaVBpY3R1cmVGYWN0b3J5KGFic2w6Om9wdGlvbmFsPGJvb2w+IG1heV91c2Vf dmFhcGlfb3Zlcl94MTEpCisrICAgICAgOiBWYWFwaVBpY3R1cmVGYWN0b3J5KG1heV91c2VfdmFh cGlfb3Zlcl94MTEpIHt9CisrI2Vsc2UKKyAgIE1vY2tWYWFwaVBpY3R1cmVGYWN0b3J5KCkgPSBk ZWZhdWx0OworKyNlbmRpZiAgLy8gQlVJTERGTEFHKFNVUFBPUlRfVkFBUElfT1ZFUl9YMTEpCisr CisgICB+TW9ja1ZhYXBpUGljdHVyZUZhY3RvcnkoKSBvdmVycmlkZSA9IGRlZmF1bHQ7CisgCisg ICBNT0NLX01FVEhPRDMoTW9ja0NyZWF0ZVZhYXBpUGljdHVyZSwKK0BAIC0xNjcsNyArMTc4LDEy IEBAIGNsYXNzIFZhYXBpVmlkZW9EZWNvZGVBY2NlbGVyYXRvclRlc3QgOgorICAgICAgICAgICAg ICAgICAgICAgY29uc3Qgc2NvcGVkX3JlZnB0cjxnbDo6R0xJbWFnZT4mIGltYWdlKSB7IHJldHVy biB0cnVlOyB9KSksCisgICAgICAgICBkZWNvZGVyX3RocmVhZF8oIlZhYXBpVmlkZW9EZWNvZGVB Y2NlbGVyYXRvclRlc3RUaHJlYWQiKSwKKyAgICAgICAgIG1vY2tfZGVjb2Rlcl8obmV3IDo6dGVz dGluZzo6U3RyaWN0TW9jazxNb2NrQWNjZWxlcmF0ZWRWaWRlb0RlY29kZXI+KSwKKysjaWYgQlVJ TERGTEFHKFNVUFBPUlRfVkFBUElfT1ZFUl9YMTEpCisrICAgICAgICBtb2NrX3ZhYXBpX3BpY3R1 cmVfZmFjdG9yeV8oCisrICAgICAgICAgICAgbmV3IE1vY2tWYWFwaVBpY3R1cmVGYWN0b3J5KGtN YXlVc2VWYWFwaU92ZXJYMTEpKSwKKysjZWxzZQorICAgICAgICAgbW9ja192YWFwaV9waWN0dXJl X2ZhY3RvcnlfKG5ldyBNb2NrVmFhcGlQaWN0dXJlRmFjdG9yeSgpKSwKKysjZW5kaWYgIC8vIEJV SUxERkxBRyhTVVBQT1JUX1ZBQVBJX09WRVJfWDExKQorICAgICAgICAgbW9ja192YWFwaV93cmFw cGVyXyhuZXcgTW9ja1ZhYXBpV3JhcHBlcihWYWFwaVdyYXBwZXI6OmtEZWNvZGUpKSwKKyAgICAg ICAgIG1vY2tfdnBwX3ZhYXBpX3dyYXBwZXJfKG5ldyBNb2NrVmFhcGlXcmFwcGVyKFZhYXBpV3Jh cHBlcjo6a0RlY29kZSkpLAorICAgICAgICAgd2Vha19wdHJfZmFjdG9yeV8odGhpcykgeworQEAg LTQyMiwxMSArNDM4LDEzIEBAIFRFU1RfUChWYWFwaVZpZGVvRGVjb2RlQWNjZWxlcmF0b3JUZXN0 LAorICAgICAgICAgICAgIG1vY2tfdmFhcGlfcGljdHVyZV9mYWN0b3J5Xy0+R2V0VmFhcGlJbXBs ZW1lbnRhdGlvbigKKyAgICAgICAgICAgICAgICAgZ2w6OmtHTEltcGxlbWVudGF0aW9uRUdMR0xF UzIpKTsKKyAKKy0jaWYgQlVJTERGTEFHKFVTRV9WQUFQSV9YMTEpCistICBFWFBFQ1RfRVEoVmFh cGlQaWN0dXJlRmFjdG9yeTo6a1ZhYXBpSW1wbGVtZW50YXRpb25BbmdsZSwKKy0gICAgICAgICAg ICBtb2NrX3ZhYXBpX3BpY3R1cmVfZmFjdG9yeV8tPkdldFZhYXBpSW1wbGVtZW50YXRpb24oCist ICAgICAgICAgICAgICAgIGdsOjprR0xJbXBsZW1lbnRhdGlvbkVHTEFOR0xFKSk7CistI2VsaWYg QlVJTERGTEFHKElTX09aT05FKQorKyNpZiBCVUlMREZMQUcoU1VQUE9SVF9WQUFQSV9PVkVSX1gx MSkKKysgIGlmIChrTWF5VXNlVmFhcGlPdmVyWDExKSB7CisrICAgIEVYUEVDVF9FUShWYWFwaVBp Y3R1cmVGYWN0b3J5OjprVmFhcGlJbXBsZW1lbnRhdGlvbkFuZ2xlLAorKyAgICAgICAgICAgICAg bW9ja192YWFwaV9waWN0dXJlX2ZhY3RvcnlfLT5HZXRWYWFwaUltcGxlbWVudGF0aW9uKAorKyAg ICAgICAgICAgICAgICAgIGdsOjprR0xJbXBsZW1lbnRhdGlvbkVHTEFOR0xFKSk7CisrICB9Cisr I2Vsc2UKKyAgIEVYUEVDVF9FUShWYWFwaVBpY3R1cmVGYWN0b3J5OjprVmFhcGlJbXBsZW1lbnRh dGlvbkRybSwKKyAgICAgICAgICAgICBtb2NrX3ZhYXBpX3BpY3R1cmVfZmFjdG9yeV8tPkdldFZh YXBpSW1wbGVtZW50YXRpb24oCisgICAgICAgICAgICAgICAgIGdsOjprR0xJbXBsZW1lbnRhdGlv bkVHTEFOR0xFKSk7CitkaWZmIC11cCBjaHJvbWl1bS0xMTIuMC41NjE1LjQ5L21lZGlhL2dwdS92 YWFwaS92YWFwaV93cmFwcGVyLmNjLndheWxhbmQtdmFhcGkgY2hyb21pdW0tMTEyLjAuNTYxNS40 OS9tZWRpYS9ncHUvdmFhcGkvdmFhcGlfd3JhcHBlci5jYworLS0tIGNocm9taXVtLTExMi4wLjU2 MTUuNDkvbWVkaWEvZ3B1L3ZhYXBpL3ZhYXBpX3dyYXBwZXIuY2Mud2F5bGFuZC12YWFwaQkyMDIz LTAzLTMwIDAyOjMzOjUzLjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTExMi4wLjU2MTUu NDkvbWVkaWEvZ3B1L3ZhYXBpL3ZhYXBpX3dyYXBwZXIuY2MJMjAyMy0wNC0xNCAyMToyOTo0MS43 NzczMjgwNjIgKzAyMDAKK0BAIC02Miw3ICs2Miw3IEBACisgI2luY2x1ZGUgInVpL2dsL2dsX2Jp bmRpbmdzLmgiCisgI2luY2x1ZGUgInVpL2dsL2dsX2ltcGxlbWVudGF0aW9uLmgiCisgCistI2lm IEJVSUxERkxBRyhVU0VfVkFBUElfWDExKQorKyNpZiBCVUlMREZMQUcoU1VQUE9SVF9WQUFQSV9P VkVSX1gxMSkKKyB0eXBlZGVmIFhJRCBEcmF3YWJsZTsKKyAKKyBleHRlcm4gIkMiIHsKK0BAIC03 MCw3ICs3MCw3IEBAIGV4dGVybiAiQyIgeworIH0KKyAKKyAjaW5jbHVkZSAidWkvZ2Z4L3gvY29u bmVjdGlvbi5oIiAgLy8gbm9nbmNoZWNrCistI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC8vIEJVSUxERkxBRyhVU0VfVkFBUElfWDExKQorKyNlbmRpZiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAvLyBCVUlMREZMQUcoU1VQUE9SVF9WQUFQSV9PVkVSX1gxMSkKKyAKKyAjaWYg QlVJTERGTEFHKElTX09aT05FKQorICNpbmNsdWRlICJ1aS9vem9uZS9wdWJsaWMvb3pvbmVfcGxh dGZvcm0uaCIKK0BAIC04NCwxNCArODQsMTQgQEAgdXNpbmcgbWVkaWFfZ3B1X3ZhYXBpOjprTW9k dWxlVmFfcHJvdDsKKyAKKyB1c2luZyBtZWRpYV9ncHVfdmFhcGk6OmtNb2R1bGVWYTsKKyB1c2lu ZyBtZWRpYV9ncHVfdmFhcGk6OmtNb2R1bGVWYV9kcm07CistI2lmIEJVSUxERkxBRyhVU0VfVkFB UElfWDExKQorKyNpZiBCVUlMREZMQUcoU1VQUE9SVF9WQUFQSV9PVkVSX1gxMSkKKyB1c2luZyBt ZWRpYV9ncHVfdmFhcGk6OmtNb2R1bGVWYV94MTE7CistI2VuZGlmICAvLyBCVUlMREZMQUcoVVNF X1ZBQVBJX1gxMSkKKysjZW5kaWYgIC8vIEJVSUxERkxBRyhTVVBQT1JUX1ZBQVBJX09WRVJfWDEx KQorIHVzaW5nIG1lZGlhX2dwdV92YWFwaTo6SW5pdGlhbGl6ZVN0dWJzOworIHVzaW5nIG1lZGlh X2dwdV92YWFwaTo6SXNWYUluaXRpYWxpemVkOworLSNpZiBCVUlMREZMQUcoVVNFX1ZBQVBJX1gx MSkKKysjaWYgQlVJTERGTEFHKFNVUFBPUlRfVkFBUElfT1ZFUl9YMTEpCisgdXNpbmcgbWVkaWFf Z3B1X3ZhYXBpOjpJc1ZhX3gxMUluaXRpYWxpemVkOworLSNlbmRpZiAgLy8gQlVJTERGTEFHKFVT RV9WQUFQSV9YMTEpCisrI2VuZGlmICAvLyBCVUlMREZMQUcoU1VQUE9SVF9WQUFQSV9PVkVSX1gx MSkKKyB1c2luZyBtZWRpYV9ncHVfdmFhcGk6OklzVmFfZHJtSW5pdGlhbGl6ZWQ7CisgdXNpbmcg bWVkaWFfZ3B1X3ZhYXBpOjpTdHViUGF0aE1hcDsKKyAKK0BAIC02ODAsNiArNjgwLDEyIEBAIGNs YXNzIFZBRGlzcGxheVN0YXRlIHsKKyAKKyAgIHZvaWQgU2V0RHJtRmQoYmFzZTo6UGxhdGZvcm1G aWxlIGZkKSB7IGRybV9mZF8ucmVzZXQoSEFORExFX0VJTlRSKGR1cChmZCkpKTsgfQorIAorKyNp ZiBCVUlMREZMQUcoU1VQUE9SVF9WQUFQSV9PVkVSX1gxMSkKKysgIGFic2w6Om9wdGlvbmFsPGJv b2w+IE1heVVzZVZhYXBpT3ZlclgxMSgpIGNvbnN0IHsKKysgICAgcmV0dXJuIG1heV91c2VfdmFh cGlfb3Zlcl94MTFfOworKyAgfQorKyNlbmRpZgorKworICBwcml2YXRlOgorICAgZnJpZW5kIGNs YXNzIGJhc2U6Ok5vRGVzdHJ1Y3RvcjxWQURpc3BsYXlTdGF0ZT47CisgCitAQCAtNzAyLDYgKzcw OCwxMyBAQCBjbGFzcyBWQURpc3BsYXlTdGF0ZSB7CisgICAvLyBEcm0gZmQgdXNlZCB0byBvYnRh aW4gYWNjZXNzIHRvIHRoZSBkcml2ZXIgaW50ZXJmYWNlIGJ5IFZBLgorICAgYmFzZTo6U2NvcGVk RkQgZHJtX2ZkXzsKKyAKKysjaWYgQlVJTERGTEFHKFNVUFBPUlRfVkFBUElfT1ZFUl9YMTEpCisr ICAvLyBXaGV0aGVyIHdlJ2xsIGJlIHBvc3NpYmx5IHVzaW5nIFZBLUFQSSBvdmVyIE96b25lL1gx MS4gVGhpcyBzaG91bGQgb25seSBiZQorKyAgLy8gc2V0IChpZiBhdCBhbGwpIGR1cmluZyB0aGUg cHJlLXNhbmRib3ggaW5pdGlhbGl6YXRpb24uIElmIGFic2w6Om51bGxvcHQsCisrICAvLyBhbGwg Y2FsbHMgdG8gSW5pdGlhbGl6ZSgpIHdpbGwgcmV0dXJuIGZhbHNlIGltbWVkaWF0ZWx5LgorKyAg YWJzbDo6b3B0aW9uYWw8Ym9vbD4gbWF5X3VzZV92YWFwaV9vdmVyX3gxMV87CisrI2VuZGlmCisr CisgICAvLyBUaGUgVkFEaXNwbGF5IGhhbmRsZS4gVmFsaWQgYmV0d2VlbiBJbml0aWFsaXplKCkg YW5kIERlaW5pdGlhbGl6ZSgpLgorICAgVkFEaXNwbGF5IHZhX2Rpc3BsYXlfOworIAorQEAgLTcy Myw2ICs3MzYsMTUgQEAgVkFEaXNwbGF5U3RhdGUqIFZBRGlzcGxheVN0YXRlOjpHZXQoKSB7Cisg CisgLy8gc3RhdGljCisgdm9pZCBWQURpc3BsYXlTdGF0ZTo6UHJlU2FuZGJveEluaXRpYWxpemF0 aW9uKCkgeworKyNpZiBCVUlMREZMQUcoU1VQUE9SVF9WQUFQSV9PVkVSX1gxMSkKKysgIGlmICh1 aTo6T3pvbmVQbGF0Zm9ybTo6SXNJbml0aWFsaXplZCgpKSB7CisrICAgIFZBRGlzcGxheVN0YXRl OjpHZXQoKS0+bWF5X3VzZV92YWFwaV9vdmVyX3gxMV8gPQorKyAgICAgICAgdWk6Ok96b25lUGxh dGZvcm06OkdldEluc3RhbmNlKCkKKysgICAgICAgICAgICAtPkdldFBsYXRmb3JtUHJvcGVydGll cygpCisrICAgICAgICAgICAgLnN1cHBvcnRzX3ZhYXBpX3gxMTsKKysgIH0KKysjZW5kaWYKKysK KyAgIGNvbnN0ZXhwciBjaGFyIGtSZW5kZXJOb2RlRmlsZVBhdHRlcm5bXSA9ICIvZGV2L2RyaS9y ZW5kZXJEJWQiOworICAgLy8gVGhpcyBsb29wIGVuZHMgb24gZWl0aGVyIHRoZSBmaXJzdCBjYXJk IHRoYXQgZG9lcyBub3QgZXhpc3Qgb3IgdGhlIGZpcnN0CisgICAvLyByZW5kZXIgbm9kZSB0aGF0 IGlzIG5vdCB2Z2VtLgorQEAgLTc1NSwyMCArNzc3LDE4IEBAIFZBRGlzcGxheVN0YXRlOjpWQURp c3BsYXlTdGF0ZSgpCisgYm9vbCBWQURpc3BsYXlTdGF0ZTo6SW5pdGlhbGl6ZSgpIHsKKyAgIGJh c2U6OkF1dG9Mb2NrIGF1dG9fbG9jayh2YV9sb2NrXyk7CisgCistI2lmIEJVSUxERkxBRyhJU19P Wk9ORSkgJiYgQlVJTERGTEFHKElTX0xJTlVYKQorLSAgLy8gVE9ETyhjcmJ1Zy5jb20vMTExNjcw MSk6IGFkZCB2YWFwaSBzdXBwb3J0IGZvciBvdGhlciBPem9uZSBwbGF0Zm9ybXMgb24KKy0gIC8v IExpbnV4LiBTZWUgY29tbWVudCBpbiBPem9uZVBsYXRmb3JtOjpQbGF0Zm9ybVByb3BlcnRpZXM6 OnN1cHBvcnRzX3ZhYXBpCistICAvLyBmb3IgbW9yZSBkZXRhaWxzLiBUaGlzIHdpbGwgYWxzbyBy ZXF1aXJlIHJldmlzaXRpbmcgZXZlcnl0aGluZyB0aGF0J3MKKy0gIC8vIGd1YXJkZWQgYnkgVVNF X1ZBQVBJX1gxMS4gRm9yIGV4YW1wbGUsIGlmIFVTRV9WQUFQSV9YMTEgaXMgdHJ1ZSwgYnV0IHRo ZQorLSAgLy8gdXNlciBjaG9vc2VzIHRoZSBXYXlsYW5kIGJhY2tlbmQgZm9yIE96b25lIGF0IHJ1 bnRpbWUsIHRoZW4gbWFueSB0aGluZ3MgKGlmCistICAvLyBub3QgYWxsKSB0aGF0IHdlIGRvIGZv ciBYMTEgd29uJ3QgYXBwbHkuCistICBpZiAoIXVpOjpPem9uZVBsYXRmb3JtOjpHZXRJbnN0YW5j ZSgpLT5HZXRQbGF0Zm9ybVByb3BlcnRpZXMoKS5zdXBwb3J0c192YWFwaSkKKysjaWYgQlVJTERG TEFHKFNVUFBPUlRfVkFBUElfT1ZFUl9YMTEpCisrICBpZiAoIW1heV91c2VfdmFhcGlfb3Zlcl94 MTFfLmhhc192YWx1ZSgpKQorICAgICByZXR1cm4gZmFsc2U7CisgI2VuZGlmCisgCisgICBib29s IGxpYnJhcmllc19pbml0aWFsaXplZCA9IElzVmFJbml0aWFsaXplZCgpICYmIElzVmFfZHJtSW5p dGlhbGl6ZWQoKTsKKy0jaWYgQlVJTERGTEFHKFVTRV9WQUFQSV9YMTEpCistICBsaWJyYXJpZXNf aW5pdGlhbGl6ZWQgPSBsaWJyYXJpZXNfaW5pdGlhbGl6ZWQgJiYgSXNWYV94MTFJbml0aWFsaXpl ZCgpOworKyNpZiBCVUlMREZMQUcoU1VQUE9SVF9WQUFQSV9PVkVSX1gxMSkKKysgIC8vIEluaXRp YWxpemUgVkEtQVBJIFgxMSBkaXNwbGF5IGJhY2tlbmQgZm9yIExpbnV4IE96b25lL1gxMS4KKysg IC8vIFNlZSBjb21tZW50IGluIE96b25lUGxhdGZvcm06OlBsYXRmb3JtUHJvcGVydGllczo6c3Vw cG9ydHNfdmFhcGlfeDExIGZvcgorKyAgLy8gbW9yZSBkZXRhaWxzLgorKyAgaWYgKG1heV91c2Vf dmFhcGlfb3Zlcl94MTFfLnZhbHVlKCkpCisrICAgIGxpYnJhcmllc19pbml0aWFsaXplZCA9IGxp YnJhcmllc19pbml0aWFsaXplZCAmJiBJc1ZhX3gxMUluaXRpYWxpemVkKCk7CisgI2VuZGlmCisg ICBpZiAoIWxpYnJhcmllc19pbml0aWFsaXplZCkKKyAgICAgcmV0dXJuIGZhbHNlOworQEAgLTc4 Myw3ICs4MDMsNyBAQCBib29sIFZBRGlzcGxheVN0YXRlOjpJbml0aWFsaXplKCkgeworICAgcmV0 dXJuIHN1Y2Nlc3M7CisgfQorIAorLSNpZiBCVUlMREZMQUcoVVNFX1ZBQVBJX1gxMSkKKysjaWYg QlVJTERGTEFHKFNVUFBPUlRfVkFBUElfT1ZFUl9YMTEpCisgCisgYWJzbDo6b3B0aW9uYWw8VkFE aXNwbGF5PiBHZXRWQURpc3BsYXlTdGF0ZVgxMShjb25zdCBiYXNlOjpTY29wZWRGRCYgZHJtX2Zk KSB7CisgICBzd2l0Y2ggKGdsOjpHZXRHTEltcGxlbWVudGF0aW9uKCkpIHsKK0BAIC04MDksMTMg KzgyOSwxOSBAQCBhYnNsOjpvcHRpb25hbDxWQURpc3BsYXk+IEdldFZBRGlzcGxheVN0CisgICB9 CisgfQorIAorLSNlbHNlCisrI2VuZGlmICAvLyBCVUlMREZMQUcoU1VQUE9SVF9WQUFQSV9PVkVS X1gxMSkKKyAKKyBhYnNsOjpvcHRpb25hbDxWQURpc3BsYXk+IEdldFZBRGlzcGxheVN0YXRlKGNv bnN0IGJhc2U6OlNjb3BlZEZEJiBkcm1fZmQpIHsKKyAgIHN3aXRjaCAoZ2w6OkdldEdMSW1wbGVt ZW50YXRpb24oKSkgeworICAgICBjYXNlIGdsOjprR0xJbXBsZW1lbnRhdGlvbkVHTEdMRVMyOgor KyNpZiBCVUlMREZMQUcoSVNfQ0hST01FT1MpCisrICAgIC8vIEdldFZBRGlzcGxheVN0YXRlKCkg c2hvdWxkIG5vdCBnZXQgY2FsbGVkIG9uIExpbnV4IHdpdGggT3pvbmUvWDExCisrICAgIC8vIChH ZXRWQURpc3BsYXlTdGF0ZVgxMSgpIHNob3VsZCBnZXQgY2FsbGVkIGluc3RlYWQpLCBhbmQgd2Ug aGF2ZW4ndCB0cmllZAorKyAgICAvLyBWQS1BUEkgZGVjb2Rpbmcgb24gTGludXggd2l0aCBPem9u ZS9XYXlsYW5kIGFuZCBhbnl0aGluZyBvdGhlciB0aGFuCisrICAgIC8vIG5hdGl2ZSBFR0wvR0xF UzIuCisgICAgIGNhc2UgZ2w6OmtHTEltcGxlbWVudGF0aW9uRUdMQU5HTEU6CisgICAgIGNhc2Ug Z2w6OmtHTEltcGxlbWVudGF0aW9uTm9uZToKKysjZW5kaWYKKyAgICAgICByZXR1cm4gdmFHZXRE aXNwbGF5RFJNKGRybV9mZC5nZXQoKSk7CisgICAgIGRlZmF1bHQ6CisgICAgICAgTE9HKFdBUk5J TkcpIDw8ICJWQUFQSSB2aWRlbyBhY2NlbGVyYXRpb24gbm90IGF2YWlsYWJsZSBmb3IgIgorQEAg LTgyNSwxOCArODUxLDIzIEBAIGFic2w6Om9wdGlvbmFsPFZBRGlzcGxheT4gR2V0VkFEaXNwbGF5 U3QKKyAgIH0KKyB9CisgCistI2VuZGlmICAvLyBCVUlMREZMQUcoVVNFX1ZBQVBJX1gxMSkKKy0K KyBib29sIFZBRGlzcGxheVN0YXRlOjpJbml0aWFsaXplVmFEaXNwbGF5X0xvY2tlZCgpIHsKKy0g IGFic2w6Om9wdGlvbmFsPFZBRGlzcGxheT4gZGlzcGxheSA9CistI2lmIEJVSUxERkxBRyhVU0Vf VkFBUElfWDExKQorLSAgICAgIEdldFZBRGlzcGxheVN0YXRlWDExKGRybV9mZF8pOworLSNlbHNl CistICAgICAgR2V0VkFEaXNwbGF5U3RhdGUoZHJtX2ZkXyk7CistI2VuZGlmCisrICBhYnNsOjpv cHRpb25hbDxWQURpc3BsYXk+IGRpc3BsYXk7CisgCistICBpZiAoIWRpc3BsYXkpCistICAgIHJl dHVybiBmYWxzZTsKKysjaWYgQlVJTERGTEFHKFNVUFBPUlRfVkFBUElfT1ZFUl9YMTEpCisrICBE Q0hFQ0sobWF5X3VzZV92YWFwaV9vdmVyX3gxMV8uaGFzX3ZhbHVlKCkpOworKyAgaWYgKG1heV91 c2VfdmFhcGlfb3Zlcl94MTFfLnZhbHVlKCkpIHsKKysgICAgZGlzcGxheSA9IEdldFZBRGlzcGxh eVN0YXRlWDExKGRybV9mZF8pOworKyAgICBpZiAoIWRpc3BsYXkpCisrICAgICAgcmV0dXJuIGZh bHNlOworKyAgfQorKyNlbmRpZiAgLy8gQlVJTERGTEFHKFNVUFBPUlRfVkFBUElfT1ZFUl9YMTEp CisrCisrICBpZiAoIWRpc3BsYXkpIHsKKysgICAgZGlzcGxheSA9IEdldFZBRGlzcGxheVN0YXRl KGRybV9mZF8pOworKyAgICBpZiAoIWRpc3BsYXkpCisrICAgICAgcmV0dXJuIGZhbHNlOworKyAg fQorIAorICAgdmFfZGlzcGxheV8gPSAqZGlzcGxheTsKKyAgIGlmICghdmFEaXNwbGF5SXNWYWxp ZCh2YV9kaXNwbGF5XykpIHsKK0BAIC0xNjcxLDYgKzE3MDIsMTMgQEAgc2NvcGVkX3JlZnB0cjxW YWFwaVdyYXBwZXI+IFZhYXBpV3JhcHBlcgorICAgICAgICAgICAgICAgICBlbmZvcmNlX3NlcXVl bmNlX2FmZmluaXR5KTsKKyB9CisgCisrI2lmIEJVSUxERkxBRyhTVVBQT1JUX1ZBQVBJX09WRVJf WDExKQorKy8vIHN0YXRpYworK2Fic2w6Om9wdGlvbmFsPGJvb2w+IFZhYXBpV3JhcHBlcjo6TWF5 VXNlVmFhcGlPdmVyWDExKCkgeworKyAgcmV0dXJuIFZBRGlzcGxheVN0YXRlOjpHZXQoKS0+TWF5 VXNlVmFhcGlPdmVyWDExKCk7CisrfQorKyNlbmRpZgorKworIC8vIHN0YXRpYworIHN0ZDo6dmVj dG9yPFNWQ1NjYWxhYmlsaXR5TW9kZT4gVmFhcGlXcmFwcGVyOjpHZXRTdXBwb3J0ZWRTY2FsYWJp bGl0eU1vZGVzKAorICAgICBWaWRlb0NvZGVjUHJvZmlsZSBtZWRpYV9wcm9maWxlLAorQEAgLTI2 ODQsMTIgKzI3MjIsMTMgQEAgYm9vbCBWYWFwaVdyYXBwZXI6Ok1hcEFuZENvcHlBbmRFeGVjdXRl KAorICAgcmV0dXJuIEV4ZWN1dGVfTG9ja2VkKHZhX3N1cmZhY2VfaWQsIHZhX2J1ZmZlcl9pZHMp OworIH0KKyAKKy0jaWYgQlVJTERGTEFHKFVTRV9WQUFQSV9YMTEpCisrI2lmIEJVSUxERkxBRyhT VVBQT1JUX1ZBQVBJX09WRVJfWDExKQorIGJvb2wgVmFhcGlXcmFwcGVyOjpQdXRTdXJmYWNlSW50 b1BpeG1hcChWQVN1cmZhY2VJRCB2YV9zdXJmYWNlX2lkLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB4MTE6OlBpeG1hcCB4X3BpeG1hcCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Z4OjpTaXplIGRlc3Rfc2l6ZSkgeworICAgQ0hF Q0soIWVuZm9yY2Vfc2VxdWVuY2VfYWZmaW5pdHlfIHx8CisgICAgICAgICBzZXF1ZW5jZV9jaGVj a2VyXy5DYWxsZWRPblZhbGlkU2VxdWVuY2UoKSk7CisrICBDSEVDSyhNYXlVc2VWYWFwaU92ZXJY MTEoKS52YWx1ZV9vcihmYWxzZSkpOworICAgYmFzZTo6QXV0b0xvY2tNYXliZSBhdXRvX2xvY2so dmFfbG9ja18uZ2V0KCkpOworIAorICAgVkFTdGF0dXMgdmFfcmVzID0gdmFTeW5jU3VyZmFjZSh2 YV9kaXNwbGF5XywgdmFfc3VyZmFjZV9pZCk7CitAQCAtMjcwMyw3ICsyNzQyLDcgQEAgYm9vbCBW YWFwaVdyYXBwZXI6OlB1dFN1cmZhY2VJbnRvUGl4bWFwKAorICAgVkFfU1VDQ0VTU19PUl9SRVRV Uk4odmFfcmVzLCBWYWFwaUZ1bmN0aW9uczo6a1ZBUHV0U3VyZmFjZSwgZmFsc2UpOworICAgcmV0 dXJuIHRydWU7CisgfQorLSNlbmRpZiAgLy8gQlVJTERGTEFHKFVTRV9WQUFQSV9YMTEpCisrI2Vu ZGlmICAvLyBCVUlMREZMQUcoU1VQUE9SVF9WQUFQSV9PVkVSX1gxMSkKKyAKKyBzdGQ6OnVuaXF1 ZV9wdHI8U2NvcGVkVkFJbWFnZT4gVmFhcGlXcmFwcGVyOjpDcmVhdGVWYUltYWdlKAorICAgICBW QVN1cmZhY2VJRCB2YV9zdXJmYWNlX2lkLAorQEAgLTMxMDUsNyArMzE0NCw3IEBAIHZvaWQgVmFh cGlXcmFwcGVyOjpQcmVTYW5kYm94SW5pdGlhbGl6YXQKKyAKKyAgIHBhdGhzW2tNb2R1bGVWYV0u cHVzaF9iYWNrKHN0ZDo6c3RyaW5nKCJsaWJ2YS5zby4iKSArIHZhX3N1ZmZpeCk7CisgICBwYXRo c1trTW9kdWxlVmFfZHJtXS5wdXNoX2JhY2soc3RkOjpzdHJpbmcoImxpYnZhLWRybS5zby4iKSAr IHZhX3N1ZmZpeCk7CistI2lmIEJVSUxERkxBRyhVU0VfVkFBUElfWDExKQorKyNpZiBCVUlMREZM QUcoU1VQUE9SVF9WQUFQSV9PVkVSX1gxMSkKKyAgIHBhdGhzW2tNb2R1bGVWYV94MTFdLnB1c2hf YmFjayhzdGQ6OnN0cmluZygibGlidmEteDExLnNvLiIpICsgdmFfc3VmZml4KTsKKyAjZW5kaWYK KyAjaWYgQlVJTERGTEFHKElTX0NIUk9NRU9TX0FTSCkKK2RpZmYgLXVwIGNocm9taXVtLTExMi4w LjU2MTUuNDkvbWVkaWEvZ3B1L3ZhYXBpL3ZhYXBpX3dyYXBwZXIuaC53YXlsYW5kLXZhYXBpIGNo cm9taXVtLTExMi4wLjU2MTUuNDkvbWVkaWEvZ3B1L3ZhYXBpL3ZhYXBpX3dyYXBwZXIuaAorLS0t IGNocm9taXVtLTExMi4wLjU2MTUuNDkvbWVkaWEvZ3B1L3ZhYXBpL3ZhYXBpX3dyYXBwZXIuaC53 YXlsYW5kLXZhYXBpCTIwMjMtMDMtMzAgMDI6MzM6NTMuMDAwMDAwMDAwICswMjAwCisrKysgY2hy b21pdW0tMTEyLjAuNTYxNS40OS9tZWRpYS9ncHUvdmFhcGkvdmFhcGlfd3JhcHBlci5oCTIwMjMt MDQtMTQgMjE6Mjk6NDEuNzc3MzI4MDYyICswMjAwCitAQCAtMzYsOSArMzYsOSBAQAorICNpbmNs dWRlICJ0aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvb3B0aW9uYWwuaCIKKyAjaW5j bHVkZSAidWkvZ2Z4L2dlb21ldHJ5L3NpemUuaCIKKyAKKy0jaWYgQlVJTERGTEFHKFVTRV9WQUFQ SV9YMTEpCisrI2lmIEJVSUxERkxBRyhTVVBQT1JUX1ZBQVBJX09WRVJfWDExKQorICNpbmNsdWRl ICJ1aS9nZngveC94cHJvdG8uaCIgIC8vIG5vZ25jaGVjaworLSNlbmRpZiAgICAgICAgICAgICAg ICAgICAgICAgIC8vIEJVSUxERkxBRyhVU0VfVkFBUElfWDExKQorKyNlbmRpZiAgICAgICAgICAg ICAgICAgICAgICAgIC8vIEJVSUxERkxBRyhTVVBQT1JUX1ZBQVBJX09WRVJfWDExKQorIAorIG5h bWVzcGFjZSBnZnggeworIGVudW0gY2xhc3MgQnVmZmVyRm9ybWF0OworQEAgLTE4Niw2ICsxODYs MTYgQEAgY2xhc3MgTUVESUFfR1BVX0VYUE9SVCBWYWFwaVdyYXBwZXIKKyAgIFZhYXBpV3JhcHBl cihjb25zdCBWYWFwaVdyYXBwZXImKSA9IGRlbGV0ZTsKKyAgIFZhYXBpV3JhcHBlciYgb3BlcmF0 b3I9KGNvbnN0IFZhYXBpV3JhcHBlciYpID0gZGVsZXRlOworIAorKyNpZiBCVUlMREZMQUcoU1VQ UE9SVF9WQUFQSV9PVkVSX1gxMSkKKysgIC8vIFJldHVybnMgdHJ1ZSBpZiBWYWFwaVdyYXBwZXIg aW5zdGFuY2VzIG1heSB1c2UgVkEtQVBJIG92ZXIgWDExIGFuZCBmYWxzZQorKyAgLy8gb3RoZXJ3 aXNlIChWQS1BUEkgb3ZlciBEUk0gd2lsbCBiZSB1c2VkKS4gSWYgdGhpcyByZXR1cm5zIGFic2w6 Om51bGxvcHQsCisrICAvLyBpdCdzIGJlY2F1c2UgaXQgd2FzIG5vdCBwb3NzaWJsZSB0byBkZXRl cm1pbmUgaG93IFZBLUFQSSBtYXkgYmUgdXNlZC4gVGhpcworKyAgLy8gc2hvdWxkIG9ubHkgYmUg Y2FsbGVkIGFmdGVyIFByZVNhbmRib3hJbml0aWFsaXphdGlvbigpICh3aGljaCBpcyBhc3N1bWVk IHRvCisrICAvLyBiZSBjYWxsZWQgb25seSBvbmNlIGR1cmluZyB0aGUgR1BVIHByb2Nlc3Mgc3Rh cnR1cCkgYW5kIGlzIHNhZmUgdG8gY2FsbAorKyAgLy8gZnJvbSBhbnkgdGhyZWFkLiBBZGRpdGlv bmFsbHksIHRoaXMgc2hvdWxkIGFsd2F5cyByZXR1cm4gdGhlIHNhbWUgdmFsdWUuCisrICBzdGF0 aWMgYWJzbDo6b3B0aW9uYWw8Ym9vbD4gTWF5VXNlVmFhcGlPdmVyWDExKCk7CisrI2VuZGlmCisr CisgICAvLyBSZXR1cm5zIHRoZSBzdXBwb3J0ZWQgU1ZDIHNjYWxhYmlsaXR5IG1vZGVzIGZvciBz cGVjaWZpZWQgcHJvZmlsZS4KKyAgIHN0YXRpYyBzdGQ6OnZlY3RvcjxTVkNTY2FsYWJpbGl0eU1v ZGU+IEdldFN1cHBvcnRlZFNjYWxhYmlsaXR5TW9kZXMoCisgICAgICAgVmlkZW9Db2RlY1Byb2Zp bGUgbWVkaWFfcHJvZmlsZSwKK0BAIC00MzksMTMgKzQ0OSwxMyBAQCBjbGFzcyBNRURJQV9HUFVf RVhQT1JUIFZhYXBpV3JhcHBlcgorICAgICAgIFZBU3VyZmFjZUlEIHZhX3N1cmZhY2VfaWQsCisg ICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPFZBQnVmZmVySUQsIFZBQnVmZmVyRGVz Y3JpcHRvcj4+JiB2YV9idWZmZXJzKTsKKyAKKy0jaWYgQlVJTERGTEFHKFVTRV9WQUFQSV9YMTEp CisrI2lmIEJVSUxERkxBRyhTVVBQT1JUX1ZBQVBJX09WRVJfWDExKQorICAgLy8gUHV0IGRhdGEg ZnJvbSB8dmFfc3VyZmFjZV9pZHwgaW50byB8eF9waXhtYXB8IG9mIHNpemUKKyAgIC8vIHxkZXN0 X3NpemV8LCBjb252ZXJ0aW5nL3NjYWxpbmcgdG8gaXQuCisgICBbW25vZGlzY2FyZF1dIGJvb2wg UHV0U3VyZmFjZUludG9QaXhtYXAoVkFTdXJmYWNlSUQgdmFfc3VyZmFjZV9pZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MTE6OlBpeG1hcCB4X3BpeG1hcCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZng6OlNpemUgZGVz dF9zaXplKTsKKy0jZW5kaWYgIC8vIEJVSUxERkxBRyhVU0VfVkFBUElfWDExKQorKyNlbmRpZiAg Ly8gQlVJTERGTEFHKFNVUFBPUlRfVkFBUElfT1ZFUl9YMTEpCisgCisgICAvLyBDcmVhdGVzIGEg U2NvcGVkVkFJbWFnZSBmcm9tIGEgVkFTdXJmYWNlIHx2YV9zdXJmYWNlX2lkfCBhbmQgbWFwIGl0 IGludG8KKyAgIC8vIG1lbW9yeSB3aXRoIHRoZSBnaXZlbiB8Zm9ybWF0fCBhbmQgfHNpemV8LiBJ ZiB8Zm9ybWF0fCBpcyBub3QgZXF1YWwgdG8gdGhlCitkaWZmIC11cCBjaHJvbWl1bS0xMTIuMC41 NjE1LjQ5L21lZGlhL2dwdS92YWFwaS92YV9zdHViX2hlYWRlci5mcmFnbWVudC53YXlsYW5kLXZh YXBpIGNocm9taXVtLTExMi4wLjU2MTUuNDkvbWVkaWEvZ3B1L3ZhYXBpL3ZhX3N0dWJfaGVhZGVy LmZyYWdtZW50CistLS0gY2hyb21pdW0tMTEyLjAuNTYxNS40OS9tZWRpYS9ncHUvdmFhcGkvdmFf c3R1Yl9oZWFkZXIuZnJhZ21lbnQud2F5bGFuZC12YWFwaQkyMDIzLTAzLTMwIDAyOjMzOjUzLjAw MDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTExMi4wLjU2MTUuNDkvbWVkaWEvZ3B1L3ZhYXBp L3ZhX3N0dWJfaGVhZGVyLmZyYWdtZW50CTIwMjMtMDQtMTQgMjE6Mjk6NDEuNzc3MzI4MDYyICsw MjAwCitAQCAtNyw4ICs3LDggQEAgZXh0ZXJuICJDIiB7CisgCisgI2luY2x1ZGUgPHZhL3ZhX2Ry bS5oPgorICNpbmNsdWRlIDx2YS92YS5oPgorLSNpZiBCVUlMREZMQUcoVVNFX1ZBQVBJX1gxMSkK KysjaWYgQlVJTERGTEFHKFNVUFBPUlRfVkFBUElfT1ZFUl9YMTEpCisgI2luY2x1ZGUgPHZhL3Zh X3gxMS5oPgorLSNlbmRpZiAgLy8gQlVJTERGTEFHKFVTRV9WQUFQSV9YMTEpCisrI2VuZGlmICAv LyBCVUlMREZMQUcoU1VQUE9SVF9WQUFQSV9PVkVSX1gxMSkKKyAKKyB9CitkaWZmIC11cCBjaHJv bWl1bS0xMTIuMC41NjE1LjQ5L3VpL296b25lL3BsYXRmb3JtL3gxMS9vem9uZV9wbGF0Zm9ybV94 MTEuY2Mud2F5bGFuZC12YWFwaSBjaHJvbWl1bS0xMTIuMC41NjE1LjQ5L3VpL296b25lL3BsYXRm b3JtL3gxMS9vem9uZV9wbGF0Zm9ybV94MTEuY2MKKy0tLSBjaHJvbWl1bS0xMTIuMC41NjE1LjQ5 L3VpL296b25lL3BsYXRmb3JtL3gxMS9vem9uZV9wbGF0Zm9ybV94MTEuY2Mud2F5bGFuZC12YWFw aQkyMDIzLTAzLTMwIDAyOjM0OjE5LjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTExMi4w LjU2MTUuNDkvdWkvb3pvbmUvcGxhdGZvcm0veDExL296b25lX3BsYXRmb3JtX3gxMS5jYwkyMDIz LTA0LTE0IDIxOjI5OjQxLjc3ODMyODA4MiArMDIwMAorQEAgLTE5Nyw3ICsxOTcsNyBAQCBjbGFz cyBPem9uZVBsYXRmb3JtWDExIDogcHVibGljIE96b25lUGxhCisgICAgICAgcHJvcGVydGllcy0+ YXBwX21vZGFsX2RpYWxvZ3NfdXNlX2V2ZW50X2Jsb2NrZXIgPSB0cnVlOworICAgICAgIHByb3Bl cnRpZXMtPmZldGNoX2J1ZmZlcl9mb3JtYXRzX2Zvcl9nbWJfb25fZ3B1ID0gdHJ1ZTsKKyAjaWYg QlVJTERGTEFHKElTX0xJTlVYKQorLSAgICAgIHByb3BlcnRpZXMtPnN1cHBvcnRzX3ZhYXBpID0g dHJ1ZTsKKysgICAgICBwcm9wZXJ0aWVzLT5zdXBwb3J0c192YWFwaV94MTEgPSB0cnVlOworICNl bmRpZgorIAorICAgICAgIGluaXRpYWxpc2VkID0gdHJ1ZTsKK2RpZmYgLXVwIGNocm9taXVtLTEx Mi4wLjU2MTUuNDkvdWkvb3pvbmUvcHVibGljL296b25lX3BsYXRmb3JtLmgud2F5bGFuZC12YWFw aSBjaHJvbWl1bS0xMTIuMC41NjE1LjQ5L3VpL296b25lL3B1YmxpYy9vem9uZV9wbGF0Zm9ybS5o CistLS0gY2hyb21pdW0tMTEyLjAuNTYxNS40OS91aS9vem9uZS9wdWJsaWMvb3pvbmVfcGxhdGZv cm0uaC53YXlsYW5kLXZhYXBpCTIwMjMtMDMtMzAgMDI6MzQ6MTkuMDAwMDAwMDAwICswMjAwCisr KysgY2hyb21pdW0tMTEyLjAuNTYxNS40OS91aS9vem9uZS9wdWJsaWMvb3pvbmVfcGxhdGZvcm0u aAkyMDIzLTA0LTE0IDIxOjI5OjQxLjc3ODMyODA4MiArMDIwMAorQEAgLTE0NSwxMiArMTQ1LDEz IEBAIGNsYXNzIENPTVBPTkVOVF9FWFBPUlQoT1pPTkUpIE96b25lUGxhdGYKKyAgICAgYm9vbCBm ZXRjaF9idWZmZXJfZm9ybWF0c19mb3JfZ21iX29uX2dwdSA9IGZhbHNlOworIAorICNpZiBCVUlM REZMQUcoSVNfTElOVVgpCistICAgIC8vIFRPRE8oY3JidWcuY29tLzExMTY3MDEpOiBhZGQgdmFh cGkgc3VwcG9ydCBmb3Igb3RoZXIgT3pvbmUgcGxhdGZvcm1zIG9uCistICAgIC8vIExpbnV4LiBB dCB0aGUgbW9tZW50LCBWQS1BUEkgTGludXggaW1wbGVtZW50YXRpb24gc3VwcG9ydHMgb25seSBY MTEKKy0gICAgLy8gYmFja2VuZC4gVGhpcyBpbXBsZW1lbnRhdGlvbiBtdXN0IGJlIHJlZmFjdG9y ZWQgdG8gc3VwcG9ydCBPem9uZQorLSAgICAvLyBwcm9wZXJseS4gQXMgYSB0ZW1wb3Jhcnkgc29s dXRpb24sIFZBLUFQSSBvbiBMaW51eCBjaGVja3MgaWYgdmFhcGkgaXMKKy0gICAgLy8gc3VwcG9y dGVkICh3aGljaCBpbXBsaWNpdGx5IG1lYW5zIHRoYXQgaXQgaXMgT3pvbmUvWDExKS4KKy0gICAg Ym9vbCBzdXBwb3J0c192YWFwaSA9IGZhbHNlOworKyAgICAvLyBWQS1BUEkgc3VwcG9ydHMgZGlm ZmVyZW50IGRpc3BsYXkgYmFja2VuZHMuCisrICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20v aW50ZWwvbGlidmEvYmxvYi9tYXN0ZXIvdmEvdmFfYmFja2VuZC5oCisrICAgIC8vCisrICAgIC8v IFZBL0RSTSBhbmQgVkEvWDExIGFyZSB1c2VkIGJ5IENocm9taXVtIGF0IHRoZSBtb21lbnQuIEFs bCBPem9uZSBwbGF0Zm9ybXMKKysgICAgLy8gc3VwcG9ydCBWQS9EUk0gYnkgZGVmYXVsdC4gYHN1 cHBvcnRzX3ZhYXBpX3gxMWAgaW5kaWNhdGVzIGlmIFZBL1gxMQorKyAgICAvLyBzdXBwb3J0ZWQ7 IGl0IGlzIHRydWUgb25seSBvbiBPem9uZS9YMTEgcGxhdGZvcm0uCisrICAgIGJvb2wgc3VwcG9y dHNfdmFhcGlfeDExID0gZmFsc2U7CisgI2VuZGlmCisgCisgICAgIC8vIEluZGljYXRlcyB0aGF0 IHRoZSBwbGF0Zm9ybSBhbGxvd3MgY2xpZW50IGFwcGxpY2F0aW9ucyB0byBtYW5pcHVsYXRlCg==