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: Takao Fujiwara To: git-commits@fedoraproject.org Subject: [rpms/ibus] autotool: Delete ibus-xx-emoji-harfbuzz.patch Date: Sun, 31 May 2026 02:06:52 GMT Message-ID: <178019321231.1.13345828956723386725.rpms-ibus-3bca2d162b45@fedoraproject.org> List-ID: X-Git-Repo: rpms/ibus X-Git-Branch: autotool X-Git-Rev: 3bca2d162b45cec3bdd1ff0fa31c98d8442f0bba QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvaWJ1cwpCcmFuY2gg OiBhdXRvdG9vbApDb21taXQgOiAzYmNhMmQxNjJiNDVjZWMzYmRkMWZmMGZhMzFjOThkODQ0MmYw YmJhCkF1dGhvciA6IFRha2FvIEZ1aml3YXJhIDx0ZnVqaXdhckByZWRoYXQuY29tPgpEYXRlICAg OiAyMDE4LTA2LTIwVDE5OjA5OjEyKzA5OjAwClN0YXRzICA6ICswLy0xNzY0IGluIDEgZmlsZShz KQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2lidXMvYy8zYmNh MmQxNjJiNDVjZWMzYmRkMWZmMGZhMzFjOThkODQ0MmYwYmJhP2JyYW5jaD1hdXRvdG9vbAoKTG9n OgpEZWxldGUgaWJ1cy14eC1lbW9qaS1oYXJmYnV6ei5wYXRjaAoKLS0tCmRpZmYgLS1naXQgYS9p YnVzLXh4LWVtb2ppLWhhcmZidXp6LnBhdGNoIGIvaWJ1cy14eC1lbW9qaS1oYXJmYnV6ei5wYXRj aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTVkMWEwNS4uMDAwMDAwMAotLS0gYS9p YnVzLXh4LWVtb2ppLWhhcmZidXp6LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTc2NCArMCww IEBACi1Gcm9tIDYzMWVmNTczZWJkZDRmM2ZhZDhmMDM2ZmNiMzM5MjllMDQzNzJhYjIgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFp bC5jb20+Ci1EYXRlOiBUaHUsIDEgTWFyIDIwMTggMTY6MDU6MDQgKzA5MDAKLVN1YmplY3Q6IFtQ QVRDSF0gSW50ZWdyYXRlIGN1c3RvbSByZW5kZXJpbmcgdG8gdXNlIEhhcmZCdXp6IGdseXBoIGlu Zm8KLQotSUJ1c0ZvbnRTZXQgb2ZmZXJzIEZjRm9udFNldCwgZ2x5cGggaW5mbyB3aXRoIEhhcmZC dXp6IGFuZCByZW5kZXJpbmcKLW9uIENhaXJvIGNvbnRleHQuCi1Ob3cgdGhlIG1vc3QgaXNzdWVz IGluIFBhbmdvIHdlcmUgZml4ZWQgYW5kIEkgYXBwcmVjaWF0ZSB0aGUgY2hhbmdlcyBbMV0uCi1I b3dldmVyIHRoZSBsYXRlc3QgY2hhbmdlcyBpbiBQYW5nbywgRm9udGNvbmZpZyBwcmV2ZW50IHVz ZXJzIGZyb20KLXNldHRpbmcgZW1vamkgZm9udHMgd2l0aCBHdGtGb250Q2hvb3Nlci4KLVRoaXMg cGF0Y2ggY2FuIGVuYWJsZSB0aGUgc2VsZWN0ZWQgZW1vamkgZm9udCB0byBkcmF3IGVtb2ppIGNo YXJzCi1vbiBFbW9qaWVyLgotSXQncyB1bmRlciB0aGUgY29uc2lkZXJhdGlvbnMgaWYgdGhlIGZv bnQgc2V0dGluZyBpcyBkZWxldGVkIGZyb20gaWJ1cy1zZXR1cC4KLU5lZWQgY29uZmlndXJlIC0t ZW5hYmxlLWhhcmZidXp6LWZvci1lbW9qaSBvcHRpb24gdG8gZW5hYmxlIHRoaXMgZmVhdHVyZS4K LQotWzFdOiBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgwNjY5 Ci0gICAgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03ODExMjMK LS0tLQotIGJpbmRpbmdzL3ZhbGEvSUJ1c0ZvbnRTZXQtMS4wLm1ldGFkYXRhIHwgICAgMSArCi0g YmluZGluZ3MvdmFsYS9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgfCAgIDgzICsrKwotIGJpbmRp bmdzL3ZhbGEvaWJ1cy1mb250c2V0LTEuMC5kZXBzICAgIHwgICAgMSArCi0gY29uZmlndXJlLmFj ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI5ICsKLSB1aS9ndGszL01ha2VmaWxlLmFt ICAgICAgICAgICAgICAgICAgICB8ICAgMzYgKysKLSB1aS9ndGszL2Vtb2ppZXIudmFsYSAgICAg ICAgICAgICAgICAgICB8ICAxMTEgKysrKwotIHVpL2d0azMvaWJ1c2ZvbnRzZXQuYyAgICAgICAg ICAgICAgICAgIHwgMTAzMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIHVpL2d0 azMvaWJ1c2ZvbnRzZXQuaCAgICAgICAgICAgICAgICAgIHwgIDMwMiArKysrKysrKysrCi0gOCBm aWxlcyBjaGFuZ2VkLCAxNTkzIGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9kZSAxMDA2NDQgYmlu ZGluZ3MvdmFsYS9JQnVzRm9udFNldC0xLjAubWV0YWRhdGEKLSBjcmVhdGUgbW9kZSAxMDA2NDQg YmluZGluZ3MvdmFsYS9pYnVzLWZvbnRzZXQtMS4wLmRlcHMKLSBjcmVhdGUgbW9kZSAxMDA2NDQg dWkvZ3RrMy9pYnVzZm9udHNldC5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHVpL2d0azMvaWJ1c2Zv bnRzZXQuaAotCi1kaWZmIC0tZ2l0IGEvYmluZGluZ3MvdmFsYS9JQnVzRm9udFNldC0xLjAubWV0 YWRhdGEgYi9iaW5kaW5ncy92YWxhL0lCdXNGb250U2V0LTEuMC5tZXRhZGF0YQotbmV3IGZpbGUg bW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwLi43MzAzN2Q3ZgotLS0tIC9kZXYvbnVsbAotKysr IGIvYmluZGluZ3MvdmFsYS9JQnVzRm9udFNldC0xLjAubWV0YWRhdGEKLUBAIC0wLDAgKzEgQEAK LStJQnVzRm9udFNldCBjaGVhZGVyX2ZpbGVuYW1lPSJpYnVzZm9udHNldC5oIgotZGlmZiAtLWdp dCBhL2JpbmRpbmdzL3ZhbGEvTWFrZWZpbGUuYW0gYi9iaW5kaW5ncy92YWxhL01ha2VmaWxlLmFt Ci1pbmRleCBmYzhlMmYwMS4uZjdiOWU5N2EgMTAwNjQ0Ci0tLS0gYS9iaW5kaW5ncy92YWxhL01h a2VmaWxlLmFtCi0rKysgYi9iaW5kaW5ncy92YWxhL01ha2VmaWxlLmFtCi1AQCAtODMsOCArODMs MTAgQEAgRVhUUkFfRElTVCA9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot ICAgICBJQnVzLTEuMC5tZXRhZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg SUJ1cy0xLjAtY3VzdG9tLnZhbGEgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIElCdXNF bW9qaURpYWxvZy0xLjAubWV0YWRhdGEgICAgICAgICAgICAgICAgXAotKyAgICBJQnVzRm9udFNl dC0xLjAubWV0YWRhdGEgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgaWJ1cy0xLjAuZGVwcyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIGlidXMtZW1vamktZGlhbG9nLTEu MC5kZXBzICAgICAgICAgICAgICAgICAgXAotKyAgICBpYnVzLWZvbnRzZXQtMS4wLmRlcHMgICAg ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgY29uZmlnLnZhcGkgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCi0gICAgIHhpLnZhcGkgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAotICAgICAkKE5VTEwpCi1AQCAtMTMxLDYgKzEzMywxNSBAQCBsaWJpYnVzX2Vt b2ppX2RpYWxvZ18xXzBfbGFfTERGTEFHUyA9ICAgICAgICAgICBcCi0gCWlmIHRlc3QgISAtZiAk QCA7IHRoZW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot IAkgICAgJChMTl9TKSAkKHRvcF9zcmNkaXIpL3VpL2d0azMvJEAgLjsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSAJZmk7Ci0raWJ1c2ZvbnRzZXQuYzogJChpYnVzX3ZhcGkpIGlidXNm b250c2V0LmgKLSsJaWYgdGVzdCAhIC1mICRAIDsgdGhlbiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0rCSAgICAkKExOX1MpICQodG9wX3NyY2RpcikvdWkv Z3RrMy8kQCAuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKwlmaTsKLStpYnVzZm9u dHNldC5oOiAkKGlidXNfdmFwaSkKLSsJaWYgdGVzdCAhIC1mICRAIDsgdGhlbiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rCSAgICAkKExOX1MpICQodG9w X3NyY2RpcikvdWkvZ3RrMy8kQCAuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKwlm aTsKLSsKLSAKLSBNQUlOVEFJTkVSQ0xFQU5GSUxFUyArPSAkKGxpYmlidXNfZW1vamlfZGlhbG9n XzFfMF9sYV9TT1VSQ0VTKQotIERJU1RDTEVBTkZJTEVTICs9ICQobGliaWJ1c19lbW9qaV9kaWFs b2dfMV8wX2xhX1NPVVJDRVMpCi1AQCAtMTg0LDYgKzE5NSw3OCBAQCBESVNUQ0xFQU5GSUxFUyAr PSAkKGlidXNfZW1vamlfZGlhbG9nX3ZhcGkpCi0gCi0gZW5kaWYKLSAjZW5kIG9mIEhBVkVfSU5U Uk9TUEVDVElPTgotKwotKwotK2lmIEVOQUJMRV9IQVJGQlVaWl9GT1JfRU1PSkkKLStsaWJpYnVz X2ZvbnRzZXQgPSBsaWJpYnVzLWZvbnRzZXQtMS4wLmxhCi0rbm9pbnN0X0xUTElCUkFSSUVTICs9 ICQobGliaWJ1c19mb250c2V0KQotKwotK2xpYmlidXNfZm9udHNldF8xXzBfbGFfU09VUkNFUyA9 ICAgICAgICAgICAgICAgIFwKLSsgICAgaWJ1c2ZvbnRzZXQuYyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCi0rICAgICQoTlVMTCkKLStsaWJpYnVzX2ZvbnRzZXRfMV8wX2xhX0NGTEFH UyA9ICAgICAgICAgICAgICAgICBcCi0rICAgICQoQU1fQ0ZMQUdTKSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAotKyAgICBAQ0FJUk9fQ0ZMQUdTQCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLSsgICAgQEZPTlRDT05GSUdfQ0ZMQUdTQCAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0rICAgIEBHTElCMl9DRkxBR1NAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAotKyAgICBASEFSRkJVWlpfQ0ZMQUdTQCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsg ICAgQFBBTkdPX0NGTEFHU0AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICQo TlVMTCkKLStsaWJpYnVzX2ZvbnRzZXRfMV8wX2xhX0xJQkFERCA9ICAgICAgICAgICAgICAgICBc Ci0rICAgIEBDQUlST19MSUJTQCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAg ICBARk9OVENPTkZJR19MSUJTQCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgQEdM SUIyX0xJQlNAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIEBIQVJGQlVa Wl9MSUJTQCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICBAUEFOR09fTElCU0Ag ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgJChOVUxMKQotK2xpYmlidXNf Zm9udHNldF8xXzBfbGFfTERGTEFHUyA9ICAgICAgICAgICAgICAgIFwKLSsgICAgLW5vLXVuZGVm aW5lZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIC1leHBvcnQtc3ltYm9s cy1yZWdleCAiaWJ1c18uKiIgICAgICAgICAgICAgXAotKyAgICAkKE5VTEwpCi0rCi0rTUFJTlRB SU5FUkNMRUFORklMRVMgKz0gaWJ1c2ZvbnRzZXQuYyBpYnVzZm9udHNldC5oCi0rRElTVENMRUFO RklMRVMgKz0gaWJ1c2ZvbnRzZXQuYyBpYnVzZm9udHNldC5oCi0rCi0raWYgSEFWRV9JTlRST1NQ RUNUSU9OCi0rSUJ1c0ZvbnRTZXQtMS4wLmdpcjogJChsaWJpYnVzX2ZvbnRzZXQpIE1ha2VmaWxl Ci0rSUJ1c0ZvbnRTZXRfMV8wX2dpcl9TQ0FOTkVSRkxBR1MgPSAgICAgICAgICAgICAgXAotKyAg ICAtLXBrZy1leHBvcnQ9aWJ1cy0xLjAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgLS1w a2c9Y2Fpcm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIC0tcGtnPWZv bnRjb25maWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAtLXBrZz1oYXJmYnV6 eiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgJChJQlVTX0dJUl9TQ0FOTkVS RkxBR1MpICAgICAgICAgICAgICAgICAgICBcCi0rICAgICQoTlVMTCkKLStJQnVzRm9udFNldF8x XzBfZ2lyX0xJQlMgPSAkKGxpYmlidXNfZm9udHNldCkgJChsaWJpYnVzKQotK0lCdXNGb250U2V0 XzFfMF9naXJfSU5DTFVERVMgPSBjYWlyby0xLjAgR0xpYi0yLjAgR09iamVjdC0yLjAKLStJQnVz Rm9udFNldF8xXzBfZ2lyX0ZJTEVTID0gICAgICAgICAgICAgICAgICAgICBcCi0rICAgIGlidXNm b250c2V0LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAkKE5VTEwpCi0r SUJ1c0ZvbnRTZXRfMV8wX2dpcl9DRkxBR1MgPSAgICAgICAgICAgICAgICAgICAgXAotKyAgICAt SSQoc3JjZGlyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgLUkkKGJ1 aWxkZGlyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIC1JJCh0b3Bfc3Jj ZGlyKS9zcmMgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAkKE5VTEwpCi0raWJ1c19m b250c2V0X2dpciA9IElCdXNGb250U2V0LTEuMC5naXIKLStJTlRST1NQRUNUSU9OX0dJUlMgKz0g JChpYnVzX2ZvbnRzZXRfZ2lyKQotK25vaW5zdF9EQVRBICs9ICQoaWJ1c19mb250c2V0X2dpcikK LStFWFRSQV9ESVNUICs9ICQoaWJ1c19mb250c2V0X2dpcikKLStNQUlOVEFJTkVSQ0xFQU5GSUxF UyArPSAkKGlidXNfZm9udHNldF9naXIpCi0rRElTVENMRUFORklMRVMgKz0gJChpYnVzX2ZvbnRz ZXRfZ2lyKQotKwotK2lidXMtZm9udHNldC0xLjAudmFwaTogJChpYnVzX2ZvbnRzZXRfZ2lyKSBJ QnVzRm9udFNldC0xLjAubWV0YWRhdGEKLStpYnVzX2ZvbnRzZXRfdmFwaSA9IGlidXMtZm9udHNl dC0xLjAudmFwaQotK2lidXNfZm9udHNldF8xXzBfdmFwaV9NRVRBREFUQURJUlMgPSAkKHNyY2Rp cikKLStpYnVzX2ZvbnRzZXRfMV8wX3ZhcGlfRklMRVMgPSBJQnVzRm9udFNldC0xLjAuZ2lyCi0r VkFQSUdFTl9WQVBJUyArPSAkKGlidXNfZm9udHNldF92YXBpKQotK25vaW5zdF9EQVRBICs9ICQo aWJ1c19mb250c2V0X3ZhcGkpCi0rRVhUUkFfRElTVCArPSAkKGlidXNfZm9udHNldF92YXBpKQot K01BSU5UQUlORVJDTEVBTkZJTEVTICs9ICQoaWJ1c19mb250c2V0X3ZhcGkpCi0rRElTVENMRUFO RklMRVMgKz0gJChpYnVzX2ZvbnRzZXRfdmFwaSkKLSsKLStlbmRpZgotKyMgZW5kIG9mIEhBVkVf SU5UUk9TUEVDVElPTgotK2VuZGlmCi0rIyBlbmQgb2YgRU5BQkxFX0hBUkZCVVpaX0ZPUl9FTU9K SQotIGVuZGlmCi0gIyBlbmQgb2YgRU5BQkxFX0VNT0pJX0RJQ1QKLSAKLWRpZmYgLS1naXQgYS9i aW5kaW5ncy92YWxhL2lidXMtZm9udHNldC0xLjAuZGVwcyBiL2JpbmRpbmdzL3ZhbGEvaWJ1cy1m b250c2V0LTEuMC5kZXBzCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAuLjEy OWZlMTY2Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9iaW5kaW5ncy92YWxhL2lidXMtZm9udHNldC0x LjAuZGVwcwotQEAgLTAsMCArMSBAQAotK2NhaXJvCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFj IGIvY29uZmlndXJlLmFjCi1pbmRleCBiZDQxMDY5Yi4uMjQzMzk2ZmYgMTAwNjQ0Ci0tLS0gYS9j b25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTY4OCw2ICs2ODgsMzQgQEAgdGhl IFVDRCBmaWxlcyBmcm9tIGh0dHBzOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy9VTklEQVRBLykK LSAgICAgZW5hYmxlX3VuaWNvZGVfZGljdD0ieWVzIChlbmFibGVkLCB1c2UgLS1kaXNhYmxlLXVu aWNvZGUtZGljdCB0byBkaXNhYmxlKSIKLSBmaQotIAotK0FDX0FSR19FTkFCTEUoaGFyZmJ1enot Zm9yLWVtb2ppLAotKyAgICBBU19IRUxQX1NUUklORyhbLS1lbmFibGUtaGFyZmJ1enotZm9yLWVt b2ppXSwKLSsgICAgICAgICAgICAgICAgICAgW0VuYWJsZSBIYXJCdXp6IHRvIGRyYXcgZW1vamkg Y2hhcmFjdGVycy4KLSsgICAgICAgICAgICAgICAgICAgIEN1cnJlbnQgUGFuZ28gaGFzIGEgcHJv YmxlbSB0byBkcmF3IGVtb2ppIHZhcmlhbnRzIGFuZAotKyAgICAgICAgICAgICAgICAgICAgdGhp cyB3YXkgZW5hYmxlcyB0byB1c2UgSGFyZkJ1enogZGlyZWN0bHkgaW4gR3RrTGFiZWwuXSksCi0r ICAgIFtlbmFibGVfaGFyZmJ1enpfZm9yX2Vtb2ppPSRlbmFibGV2YWxdLAotKyAgICBbZW5hYmxl X2hhcmZidXp6X2Zvcl9lbW9qaT1ub10KLSspCi0rQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9IQVJG QlVaWl9GT1JfRU1PSkldLAotKyAgICAgICAgICAgICAgIFt0ZXN0IHgiJGVuYWJsZV9oYXJmYnV6 el9mb3JfZW1vamkiID0geCJ5ZXMiXSkKLSsKLStpZiB0ZXN0IHgiJGVuYWJsZV9oYXJmYnV6el9m b3JfZW1vamkiID0geCJ5ZXMiOyB0aGVuCi0rICAgIFBLR19DSEVDS19NT0RVTEVTKENBSVJPLCBb Ci0rICAgICAgICBjYWlybwotKyAgICBdKQotKyAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhGT05UQ09O RklHLCBbCi0rICAgICAgICBmb250Y29uZmlnCi0rICAgIF0pCi0rICAgIFBLR19DSEVDS19NT0RV TEVTKEhBUkZCVVpaLCBbCi0rICAgICAgICBoYXJmYnV6egotKyAgICBdKQotKyAgICBQS0dfQ0hF Q0tfTU9EVUxFUyhQQU5HTywgWwotKyAgICAgICAgcGFuZ28KLSsgICAgXSkKLStlbHNlCi0rICAg IGVuYWJsZV9oYXJmYnV6el9mb3JfZW1vamk9Im5vIChkaXNhYmxlZCwgdXNlIC0tZW5hYmxlLWhh cmZidXp6LWZvci1lbW9qaSB0byBlbmFibGUpIgotK2ZpCi0rCi0gIyBDaGVjayBpc28tY29kZXMu Ci0gUEtHX0NIRUNLX01PRFVMRVMoSVNPQ09ERVMsIFsKLSAgICAgaXNvLWNvZGVzCi1AQCAtNzgw LDYgKzgwOCw3IEBAIEJ1aWxkIG9wdGlvbnM6Ci0gICBDTERSIGFubm90YXRpb24gZGlyZWN0b3J5 ICAgICAkRU1PSklfQU5OT1RBVElPTl9ESVIKLSAgIEVuYWJsZSBVbmljb2RlIGRpY3QgICAgICAg ICAgICRlbmFibGVfdW5pY29kZV9kaWN0Ci0gICBVQ0QgZGlyZWN0b3J5ICAgICAgICAgICAgICAg ICAkVUNEX0RJUgotKyAgRW5hYmxlIEhhcmZCdXp6IGZvciBFbW9qaSAgICAgJGVuYWJsZV9oYXJm YnV6el9mb3JfZW1vamkKLSAgIFJ1biB0ZXN0IGNhc2VzICAgICAgICAgICAgICAgICRlbmFibGVf dGVzdHMKLSBdKQotIAotZGlmZiAtLWdpdCBhL3VpL2d0azMvTWFrZWZpbGUuYW0gYi91aS9ndGsz L01ha2VmaWxlLmFtCi1pbmRleCBiZjlmOThkNy4uMzg4ZjgwZjkgMTAwNjQ0Ci0tLS0gYS91aS9n dGszL01ha2VmaWxlLmFtCi0rKysgYi91aS9ndGszL01ha2VmaWxlLmFtCi1AQCAtMTU5LDYgKzE1 OSw4IEBAIEVYVFJBX0RJU1QgPSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIGV4 dGVuc2lvbi52YWxhICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgZ3RrZXh0ZW5zaW9uLnht bC5pbiAgICAgICAgICAgICAgICAgXAotICAgICBndGtwYW5lbC54bWwuaW4gICAgICAgICAgICAg ICAgICAgICBcCi0rICAgIGlidXNmb250c2V0LmMgICAgICAgICAgICAgICAgICAgICAgIFwKLSsg ICAgaWJ1c2ZvbnRzZXQuaCAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICBub3RpZmljYXRp b24taXRlbS54bWwgICAgICAgICAgICAgICBcCi0gICAgIG5vdGlmaWNhdGlvbi13YXRjaGVyLnht bCAgICAgICAgICAgIFwKLSAgICAgaWJ1cy11aS1lbW9qaWVyLmRlc2t0b3AuaW4uaW4gICAgICAg XAotQEAgLTI0OSw2ICsyNTEsNDAgQEAgcGFuZWxiaW5kaW5nLm86ICQoc3JjZGlyKS9wYW5lbGJp bmRpbmcuYwotIAkkKEFNX1ZfQ0Nfbm8pJChDT01QSUxFKSAtYyAtbyAkQCAkPAotIAkkKE5VTEwp Ci0gCi0raWYgRU5BQkxFX0hBUkZCVVpaX0ZPUl9FTU9KSQotK2lidXNfdWlfZ3RrM19TT1VSQ0VT ICs9ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgaWJ1c2ZvbnRzZXQuYyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICQoTlVMTCkKLSsKLStpYnVzX3VpX2Vtb2pp ZXJfU09VUkNFUyArPSAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIGlidXNmb250c2V0LmMg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAkKE5VTEwpCi0rCi0raWJ1c19l eHRlbnNpb25fZ3RrM19TT1VSQ0VTICs9ICAgICAgICAgICAgICAgICAgXAotKyAgICBpYnVzZm9u dHNldC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgJChOVUxMKQotKwot K0FNX0NGTEFHUyArPSBcCi0rICAgIEBDQUlST19DRkxBR1NAICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAotKyAgICBARk9OVENPTkZJR19DRkxBR1NAICAgICAgICAgICAgICAgICAgICAg ICAgIFwKLSsgICAgQEhBUkZCVVpaX0NGTEFHU0AgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0rICAgICQoTlVMTCkKLSsKLStBTV9MREFERCArPSBcCi0rICAgIEBDQUlST19MSUJTQCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICBARk9OVENPTkZJR19MSUJTQCAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgQEhBUkZCVVpaX0xJQlNAICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCi0rICAgICQoTlVMTCkKLSsKLStBTV9WQUxBRkxBR1MgKz0gXAot KyAgICAtRCBFTkFCTEVfSEFSRkJVWlpfRk9SX0VNT0pJICAgICAgICAgICAgICAgIFwKLSsgICAg LS1wa2c9Y2Fpcm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIC0tcGtn PWlidXMtZm9udHNldC0xLjAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAkKE5VTEwpCi0r Ci0rZW5kaWYKLSsjIGVuZCBvZiBFTkFCTEVfSEFSRkJVWlpfRk9SX0VNT0pJCi0rCi0gbWFuX3Nl dmVuX2ZpbGVzID0gJChtYW5fc2V2ZW5faW5fZmlsZXM6LjcuaW49LjcpCi0gbWFuX3NldmVuX0RB VEEgPSQobWFuX3NldmVuX2ZpbGVzOi43PS43Lmd6KQotIG1hbl9zZXZlbmRpciA9ICQobWFuZGly KS9tYW43Ci1kaWZmIC0tZ2l0IGEvdWkvZ3RrMy9lbW9qaWVyLnZhbGEgYi91aS9ndGszL2Vtb2pp ZXIudmFsYQotaW5kZXggODcwN2U0MzIuLjQ5NjE5ZDFjIDEwMDY0NAotLS0tIGEvdWkvZ3RrMy9l bW9qaWVyLnZhbGEKLSsrKyBiL3VpL2d0azMvZW1vamllci52YWxhCi1AQCAtOTksMTYgKzk5LDEw MyBAQCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewot ICAgICAgICAgfQotICAgICB9Ci0gICAgIHByaXZhdGUgY2xhc3MgRVdoaXRlTGFiZWwgOiBHdGsu TGFiZWwgewotKyNpZiBFTkFCTEVfSEFSRkJVWlpfRk9SX0VNT0pJCi0rICAgICAgICBwcml2YXRl IElCdXMuUmVxdWlzaXRpb25FeCBtX3JlcXVpc2l0aW9uOwotKyNlbHNlCi0gICAgICAgICBwcml2 YXRlIGludCBtX21pbmltdW1fd2lkdGggPSAwOwotICAgICAgICAgcHJpdmF0ZSBpbnQgbV9uYXR1 cmFsX3dpZHRoID0gMDsKLSAgICAgICAgIHByaXZhdGUgaW50IG1fbWluaW11bV9oZWlnaHQgPSAw OwotICAgICAgICAgcHJpdmF0ZSBpbnQgbV9uYXR1cmFsX2hlaWdodCA9IDA7Ci0rI2VuZGlmCi0g ICAgICAgICBwdWJsaWMgRVdoaXRlTGFiZWwoc3RyaW5nIHRleHQpIHsKLSAgICAgICAgICAgICBH TGliLk9iamVjdCgKLSAgICAgICAgICAgICAgICAgbmFtZSA6ICJJQnVzRW1vamllcldoaXRlTGFi ZWwiCi0gICAgICAgICAgICAgKTsKLSAgICAgICAgICAgICBzZXRfbGFiZWwodGV4dCk7Ci0gICAg ICAgICB9Ci0rI2lmIEVOQUJMRV9IQVJGQlVaWl9GT1JfRU1PSkkKLSsgICAgICAgIHByaXZhdGUg dm9pZCBnZXRfcHJlZmVycmVkX3NpemVfd2l0aF9oYihvdXQgaW50IG1pbmltdW1fd2lkdGgsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IGludCBu YXR1cmFsX3dpZHRoLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG91dCBpbnQgbWluaW11bV9oZWlnaHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgb3V0IGludCBuYXR1cmFsX2hlaWdodCkgewotKyAgICAg ICAgICAgIG1pbmltdW1fd2lkdGggPSAwOwotKyAgICAgICAgICAgIG5hdHVyYWxfd2lkdGggPSAw OwotKyAgICAgICAgICAgIG1pbmltdW1faGVpZ2h0ID0gMDsKLSsgICAgICAgICAgICBuYXR1cmFs X2hlaWdodCA9IDA7Ci0rICAgICAgICAgICAgdmFyIHRleHQgPSB0aGlzLmdldF90ZXh0KCk7Ci0r ICAgICAgICAgICAgR0xpYi5yZXR1cm5faWZfZmFpbCAodGV4dCAhPSBudWxsKTsKLSsgICAgICAg ICAgICBpZiAodGV4dCA9PSAiIikKLSsgICAgICAgICAgICAgICAgcmV0dXJuOwotKyAgICAgICAg ICAgIHZhciBjb250ZXh0ID0gdGhpcy5nZXRfcGFuZ29fY29udGV4dCgpOwotKyAgICAgICAgICAg IHZhciBsYW5ndWFnZSA9IGNvbnRleHQuZ2V0X2xhbmd1YWdlKCk7Ci0rICAgICAgICAgICAgdXBk YXRlX2ZvbnRzZXQobGFuZ3VhZ2UpOwotKyAgICAgICAgICAgIENhaXJvLlJlY3RhbmdsZUludCB3 aWRlc3QgPSBDYWlyby5SZWN0YW5nbGVJbnQoKTsKLSsgICAgICAgICAgICBtX3JlcXVpc2l0aW9u ID0gbV9mb250c2V0LmdldF9wcmVmZXJyZWRfc2l6ZV9oYih0ZXh0LCBvdXQgd2lkZXN0KTsKLSsg ICAgICAgICAgICBtaW5pbXVtX3dpZHRoID0gd2lkZXN0LndpZHRoOwotKyAgICAgICAgICAgIG5h dHVyYWxfd2lkdGggPSB3aWRlc3Qud2lkdGg7Ci0rICAgICAgICAgICAgbWluaW11bV9oZWlnaHQg PSB3aWRlc3QuaGVpZ2h0OwotKyAgICAgICAgICAgIG5hdHVyYWxfaGVpZ2h0ID0gd2lkZXN0Lmhl aWdodDsKLSsgICAgICAgICAgICBpZiAobWluaW11bV93aWR0aCA8PSBtaW5pbXVtX2hlaWdodCkK LSsgICAgICAgICAgICAgICAgbmF0dXJhbF93aWR0aCA9IG1pbmltdW1fd2lkdGggPSBtaW5pbXVt X2hlaWdodDsKLSsgICAgICAgICAgICBpZiAodGV4dC5sZW5ndGggPT0gMSkgewotKyAgICAgICAg ICAgICAgICBzd2l0Y2godGV4dC5nZXRfY2hhcigpKSB7Ci0rICAgICAgICAgICAgICAgIGNhc2Ug J1x0JzoKLSsgICAgICAgICAgICAgICAgICAgIG5hdHVyYWxfd2lkdGggPSBtaW5pbXVtX3dpZHRo ID0gbWluaW11bV9oZWlnaHQ7Ci0rICAgICAgICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAg ICAgICAgICAgY2FzZSAnXHYnOgotKyAgICAgICAgICAgICAgICAgICAgbmF0dXJhbF9oZWlnaHQg PSBtaW5pbXVtX2hlaWdodCA9IG1pbmltdW1fd2lkdGg7Ci0rICAgICAgICAgICAgICAgICAgICBi cmVhazsKLSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgIH0KLSsgICAgICAgIH0KLSsg ICAgICAgIHB1YmxpYyBvdmVycmlkZSB2b2lkIGdldF9wcmVmZXJyZWRfd2lkdGgob3V0IGludCBt aW5pbXVtX3dpZHRoLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvdXQgaW50IG5hdHVyYWxfd2lkdGgpIHsKLSsgICAgICAgICAgICBnZXRfcHJlZmVy cmVkX3NpemVfd2l0aF9oYihvdXQgbWluaW11bV93aWR0aCwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBvdXQgbmF0dXJhbF93aWR0aCwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBudWxsLCBudWxsKTsKLSsgICAgICAgIH0KLSsgICAgICAg IHB1YmxpYyBvdmVycmlkZSB2b2lkIGdldF9wcmVmZXJyZWRfaGVpZ2h0KG91dCBpbnQgbWluaW11 bV9oZWlnaHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBvdXQgaW50IG5hdHVyYWxfaGVpZ2h0KSB7Ci0rICAgICAgICAgICAgZ2V0X3ByZWZlcnJl ZF9zaXplX3dpdGhfaGIobnVsbCwgbnVsbCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBvdXQgbWluaW11bV9oZWlnaHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgb3V0IG5hdHVyYWxfaGVpZ2h0KTsKLSsgICAgICAgIH0KLSsgICAgICAg IHB1YmxpYyBvdmVycmlkZSBib29sIGRyYXcoQ2Fpcm8uQ29udGV4dCBjcikgewotKyAgICAgICAg ICAgIHZhciBzdHlsZV9jb250ZXh0ID0gZ2V0X3N0eWxlX2NvbnRleHQoKTsKLSsgICAgICAgICAg ICBHdGsuQWxsb2NhdGlvbiBhbGxvY2F0aW9uOwotKyAgICAgICAgICAgIGdldF9hbGxvY2F0aW9u KG91dCBhbGxvY2F0aW9uKTsKLSsgICAgICAgICAgICBzdHlsZV9jb250ZXh0LnJlbmRlcl9iYWNr Z3JvdW5kKGNyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg MCwgMCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG9j YXRpb24ud2lkdGgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBhbGxvY2F0aW9uLmhlaWdodCk7Ci0rICAgICAgICAgICAgaWYgKG1fZm9udHNldCA9PSBudWxs KQotKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSsgICAgICAgICAgICBpZiAobV9yZXF1 aXNpdGlvbiA9PSBudWxsKQotKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSsgICAgICAg ICAgICBpZiAobV9yZXF1aXNpdGlvbi5jYWlyb19saW5lcyA9PSBudWxsKQotKyAgICAgICAgICAg ICAgICByZXR1cm4gdHJ1ZTsKLSsgICAgICAgICAgICBHZGsuUkdCQSAqbm9ybWFsX2ZnID0gbnVs bDsKLSsgICAgICAgICAgICBzdHlsZV9jb250ZXh0LmdldChHdGsuU3RhdGVGbGFncy5OT1JNQUws Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbG9yIiwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBvdXQgbm9ybWFsX2ZnKTsKLSsgICAgICAgICAgICBjci5zZXRfb3Bl cmF0b3IoQ2Fpcm8uT3BlcmF0b3IuT1ZFUik7Ci0rICAgICAgICAgICAgY3Iuc2V0X3NvdXJjZV9y Z2JhKG5vcm1hbF9mZy5yZWQsIG5vcm1hbF9mZy5ncmVlbiwgbm9ybWFsX2ZnLmJsdWUsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbF9mZy5hbHBoYSk7Ci0rICAgICAgICAg ICAgY3Iuc2F2ZSgpOwotKyAgICAgICAgICAgIGRvdWJsZSB4ID0gMC4wOwotKyAgICAgICAgICAg IGRvdWJsZSB5ID0gMC4wOwotKyAgICAgICAgICAgIGlmIChhbGxvY2F0aW9uLndpZHRoID4gbV9y ZXF1aXNpdGlvbi53aWR0aCkKLSsgICAgICAgICAgICAgICAgeCA9IChhbGxvY2F0aW9uLndpZHRo IC0gbV9yZXF1aXNpdGlvbi53aWR0aCkgLyAyLjA7Ci0rICAgICAgICAgICAgaWYgKGFsbG9jYXRp b24uaGVpZ2h0ID4gbV9yZXF1aXNpdGlvbi5oZWlnaHQpCi0rICAgICAgICAgICAgICAgIHkgPSAo YWxsb2NhdGlvbi5oZWlnaHQgLSBtX3JlcXVpc2l0aW9uLmhlaWdodCkgLyAyLjA7Ci0rICAgICAg ICAgICAgY3IudHJhbnNsYXRlKHgsIHkpOwotKyAgICAgICAgICAgIG1fZm9udHNldC5kcmF3X2Nh aXJvX3dpdGhfcmVxdWlzaXRpb25fZXgoY3IsIG1fcmVxdWlzaXRpb24pOwotKyAgICAgICAgICAg IGNyLnJlc3RvcmUoKTsKLSsgICAgICAgICAgICBub3JtYWxfZmcuZnJlZSgpOwotKyAgICAgICAg ICAgIG5vcm1hbF9mZyA9IG51bGw7Ci0rICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0rICAgICAg ICB9Ci0rI2Vsc2UKLSAgICAgICAgIHB1YmxpYyBvdmVycmlkZSB2b2lkIGdldF9wcmVmZXJyZWRf d2lkdGgob3V0IGludCBtaW5pbXVtX3dpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBvdXQgaW50IG5hdHVyYWxfd2lkdGgpIHsKLSAgICAgICAg ICAgICBpZiAobV9taW5pbXVtX2hlaWdodCA9PSAwICYmIG1fbmF0dXJhbF9oZWlnaHQgPT0gMCkg ewotQEAgLTE2MSw2ICsyNDgsNyBAQCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBw bGljYXRpb25XaW5kb3cgewotICAgICAgICAgICAgIG1fbWluaW11bV9oZWlnaHQgPSBtaW5pbXVt X2hlaWdodDsKLSAgICAgICAgICAgICBtX25hdHVyYWxfaGVpZ2h0ID0gbmF0dXJhbF9oZWlnaHQ7 Ci0gICAgICAgICB9Ci0rI2VuZGlmCi0gICAgIH0KLSAgICAgcHJpdmF0ZSBjbGFzcyBFU2VsZWN0 ZWRMYWJlbCA6IEVXaGl0ZUxhYmVsIHsKLSAgICAgICAgIHB1YmxpYyBFU2VsZWN0ZWRMYWJlbChz dHJpbmcgdGV4dCkgewotQEAgLTMxMyw2ICs0MDEsOSBAQCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2pp ZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewotICAgICBwcml2YXRlIHN0YXRpYyBib29sIG1f c2hvd191bmljb2RlID0gZmFsc2U7Ci0gICAgIHByaXZhdGUgc3RhdGljIExvYWRQcm9ncmVzc09i amVjdCBtX3VuaWNvZGVfcHJvZ3Jlc3Nfb2JqZWN0OwotICAgICBwcml2YXRlIHN0YXRpYyBib29s IG1fbG9hZGVkX3VuaWNvZGUgPSBmYWxzZTsKLSsjaWYgRU5BQkxFX0hBUkZCVVpaX0ZPUl9FTU9K SQotKyAgICBwcml2YXRlIHN0YXRpYyBJQnVzLkZvbnRTZXQgbV9mb250c2V0OwotKyNlbmRpZgot IAotICAgICBwcml2YXRlIFRoZW1lZFJHQkEgbV9yZ2JhOwotICAgICBwcml2YXRlIEd0ay5Cb3gg bV92Ym94OwotQEAgLTIxMTYsNiArMjIwNywyMiBAQCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIg OiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewotICAgICB9Ci0gCi0gCi0rI2lmIEVOQUJMRV9IQVJG QlVaWl9GT1JfRU1PSkkKLSsgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCB1cGRhdGVfZm9udHNldChQ YW5nby5MYW5ndWFnZSBsYW5ndWFnZSkgewotKyAgICAgICAgaWYgKG1fZm9udHNldCAhPSBudWxs KSB7Ci0rICAgICAgICAgICAgbV9mb250c2V0LnNldF9mYW1pbHkobV9lbW9qaV9mb250X2ZhbWls eSk7Ci0rICAgICAgICAgICAgbV9mb250c2V0LnNldF9zaXplKG1fZW1vamlfZm9udF9zaXplKTsK LSsgICAgICAgICAgICBtX2ZvbnRzZXQuc2V0X2xhbmd1YWdlKGxhbmd1YWdlLnRvX3N0cmluZygp KTsKLSsgICAgICAgICAgICBtX2ZvbnRzZXQudXBkYXRlX2ZjZm9udHNldCgpOwotKyAgICAgICAg fSBlbHNlIHsKLSsgICAgICAgICAgICBtX2ZvbnRzZXQgPSBuZXcgSUJ1cy5Gb250U2V0LndpdGhf Zm9udCgKLSsgICAgICAgICAgICAgICAgICAgIG1fZW1vamlfZm9udF9mYW1pbHksCi0rICAgICAg ICAgICAgICAgICAgICBtX2Vtb2ppX2ZvbnRfc2l6ZSwKLSsgICAgICAgICAgICAgICAgICAgIGxh bmd1YWdlLnRvX3N0cmluZygpKTsKLSsgICAgICAgIH0KLSsgICAgfQotKyNlbmRpZgotKwotICAg ICBwdWJsaWMgc3RhdGljIGJvb2wgaGFzX2xvYWRlZF9lbW9qaV9kaWN0KCkgewotICAgICAgICAg aWYgKG1fZW1vamlfdG9fZGF0YV9kaWN0ID09IG51bGwpCi0gICAgICAgICAgICAgcmV0dXJuIGZh bHNlOwotQEAgLTIxNDYsNiArMjI1MywxMCBAQCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBH dGsuQXBwbGljYXRpb25XaW5kb3cgewotICAgICAgICAgaW50IGZvbnRfc2l6ZSA9IGZvbnRfZGVz Yy5nZXRfc2l6ZSgpIC8gUGFuZ28uU0NBTEU7Ci0gICAgICAgICBpZiAoZm9udF9zaXplICE9IDAp Ci0gICAgICAgICAgICAgbV9lbW9qaV9mb250X3NpemUgPSBmb250X3NpemU7Ci0rI2lmIEVOQUJM RV9IQVJGQlVaWl9GT1JfRU1PSkkKLSsgICAgICAgIHZhciB3aWRnZXQgPSBuZXcgR3RrLkxhYmVs KCIiKTsKLSsgICAgICAgIHVwZGF0ZV9mb250c2V0KHdpZGdldC5nZXRfcGFuZ29fY29udGV4dCgp LmdldF9sYW5ndWFnZSgpKTsKLSsjZW5kaWYKLSAgICAgfQotIAotIAotZGlmZiAtLWdpdCBhL3Vp L2d0azMvaWJ1c2ZvbnRzZXQuYyBiL3VpL2d0azMvaWJ1c2ZvbnRzZXQuYwotbmV3IGZpbGUgbW9k ZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwLi4xNmNlZWYwNQotLS0tIC9kZXYvbnVsbAotKysrIGIv dWkvZ3RrMy9pYnVzZm9udHNldC5jCi1AQCAtMCwwICsxLDEwMzAgQEAKLSsvKiAtKi0gbW9kZTog QzsgYy1iYXNpYy1vZmZzZXQ6IDQ7IGluZGVudC10YWJzLW1vZGU6IG5pbDsgLSotICovCi0rLyog dmltOnNldCBldCBzdHM9NDogKi8KLSsvKiBpYnVzIC0gVGhlIElucHV0IEJ1cwotKyAqIENvcHly aWdodCAoQykgMjAxNyBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4K LSsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgUmVkIEhhdCwgSW5jLgotKyAqCi0rICogVGhpcyBsaWJy YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotKyAq IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs aWMKLSsgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIKLSsgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsgKgotKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAqIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0r ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZSBHTlUKLSsgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgotKyAqCi0rICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxp YnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgKiBGb3VuZGF0aW9u LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjEx MC0xMzAxCi0rICogVVNBCi0rICovCi0rCi0rI2luY2x1ZGUgPGNhaXJvLWZ0Lmg+Ci0rI2luY2x1 ZGUgPGZvbnRjb25maWcvZm9udGNvbmZpZy5oPgotKyNpbmNsdWRlIDxmdDJidWlsZC5oPgotKyNp bmNsdWRlIEZUX0ZSRUVUWVBFX0gKLSsjaW5jbHVkZSA8Z2xpYi5oPgotKyNpbmNsdWRlIDxoYi1v dC5oPgotKyNpbmNsdWRlIDxwYW5nby9wYW5nby5oPgotKwotKyNpbmNsdWRlICJpYnVzZm9udHNl dC5oIgotKwotKyNkZWZpbmUgWFBBRCAyCi0rI2RlZmluZSBZUEFEIDIKLSsjZGVmaW5lIFVOS05P V05fRk9OVF9TSVpFIDcKLSsjZGVmaW5lIElCVVNfRk9OVFNFVF9HRVRfUFJJVkFURShvKSAgXAot KyAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUgKChvKSwgSUJVU19UWVBFX0ZPTlRTRVQs IElCdXNGb250U2V0UHJpdmF0ZSkpCi0rI2RlZmluZSBNT05PU1BBQ0UgIm1vbm9zcGFjZSIKLSsj ZGVmaW5lIFNFUklGICAgICAic2VyaWYiCi0rI2RlZmluZSBTQU5TICAgICAgInNhbnMiCi0rCi0r dHlwZWRlZiBzdHJ1Y3QgX0ZjRm9udFNldEV4IHsKLSsgICAgaW50ICAgICAgICAgICAgICAgICBu Zm9udDsKLSsgICAgaW50ICAgICAgICAgICAgICAgICBzZm9udDsKLSsgICAgRmNQYXR0ZXJuICAg ICAgICAgKipmb250czsKLSsgICAgRlRfRmFjZSAgICAgICAgICAgICpmdF9mYWNlczsKLSt9IEZj Rm9udFNldEV4OwotKwotK3N0YXRpYyBnYm9vbGVhbiAgICAgICAgIG1fY29sb3Jfc3VwcG9ydGVk OwotK3N0YXRpYyBGVF9MaWJyYXJ5ICAgICAgIG1fZnRsaWJyYXJ5OwotK3N0YXRpYyBGY0ZvbnRT ZXRFeCAgICAgKm1fZmNmb250c2V0OwotK3N0YXRpYyBnY2hhciAgICAgICAgICAgKm1fZmFtaWx5 OwotK3N0YXRpYyBndWludCAgICAgICAgICAgIG1fc2l6ZTsKLStzdGF0aWMgZ2NoYXIgICAgICAg ICAgICptX2xhbmd1YWdlOwotK3N0YXRpYyBHSGFzaFRhYmxlICAgICAgKm1fZm9udF9pbmRleF9w ZXJfY2hhcl90YWJsZTsKLStzdGF0aWMgR0hhc2hUYWJsZSAgICAgICptX3NjYWxlZF9mb250X3Rh YmxlOwotK3N0YXRpYyBHSGFzaFRhYmxlICAgICAgKm1faGJfZm9udF90YWJsZTsKLSsKLStlbnVt IHsKLSsgICAgUFJPUF8wLAotKyAgICBQUk9QX0ZBTUlMWSwKLSsgICAgUFJPUF9TSVpFLAotKyAg ICBQUk9QX0xBTkdVQUdFCi0rfTsKLSsKLSt0eXBlZGVmIHN0cnVjdCB7Ci0rICAgIGd1bmljaGFy ICAgY2g7Ci0rICAgIEZjUGF0dGVybiAqZmNmb250OwotK30gRm9udFBlckNoYXI7Ci0rCi0rc3Ry dWN0IF9JQnVzRm9udFNldFByaXZhdGUgewotKyAgICBnY2hhciAgICAgKmZhbWlseTsKLSsgICAg Z3VpbnQgICAgICBzaXplOwotKyAgICBnY2hhciAgICAgKmxhbmd1YWdlOwotK307Ci0rCi0rc3Rh dGljIEdPYmplY3QgKiBpYnVzX2ZvbnRzZXRfY29uc3RydWN0b3IgICAoR1R5cGUgICAgICAgICAg ICAgICAgICB0eXBlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGd1aW50ICAgICAgICAgICAgICAgICAgbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBHT2JqZWN0Q29uc3RydWN0UGFyYW0gKmFyZ3MpOwotK3N0YXRp YyB2b2lkICAgICAgaWJ1c19mb250c2V0X2Rlc3Ryb3kgICAgICAgKElCdXNGb250U2V0ICAgICAg ICAgICAqZm9udHNldCk7Ci0rc3RhdGljIHZvaWQgICAgICBpYnVzX2ZvbnRzZXRfc2V0X3Byb3Bl cnR5ICAoSUJ1c0ZvbnRTZXQgICAgICAgICAgICpmb250c2V0LAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAgICAgcHJvcF9p ZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH VmFsdWUgICAgICAgICAgKnZhbHVlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEdQYXJhbVNwZWMgICAgICAgICAgICAqcHNwZWMpOwotK3N0YXRpYyB2b2lk ICAgICAgaWJ1c19mb250c2V0X2dldF9wcm9wZXJ0eSAgKElCdXNGb250U2V0ICAgICAgICAgICAq Zm9udHNldCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn dWludCAgICAgICAgICAgICAgICAgIHByb3BfaWQsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR1ZhbHVlICAgICAgICAgICAgICAgICp2YWx1ZSwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUGFyYW1TcGVjICAgICAg ICAgICAgKnBzcGVjKTsKLStzdGF0aWMgY2Fpcm9fc2NhbGVkX2ZvbnRfdCAqCi0rICAgICAgICAg ICAgICAgICBpYnVzX2ZvbnRzZXRfY2Fpcm9fc2NhbGVkX2ZvbnRfbmV3X3dpdGhfZm9udAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGdjaGFyICAg ICAgICAgICAqZmFtaWx5LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGd1aW50ICAgICAgICAgICAgICAgICAgc2l6ZSwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgICAgICAgIGhhc19jb2xv cik7Ci0rCi0rR19ERUZJTkVfQk9YRURfVFlQRSAoSUJ1c0NhaXJvTGluZSwKLSsgICAgICAgICAg ICAgICAgICAgICBpYnVzX2NhaXJvX2xpbmUsCi0rICAgICAgICAgICAgICAgICAgICAgaWJ1c19j YWlyb19saW5lX2NvcHksCi0rICAgICAgICAgICAgICAgICAgICAgaWJ1c19jYWlyb19saW5lX2Zy ZWUpOwotK0dfREVGSU5FX0JPWEVEX1RZUEUgKElCdXNSZXF1aXNpdGlvbkV4LAotKyAgICAgICAg ICAgICAgICAgICAgIGlidXNfcmVxdWlzaXRpb25fZXgsCi0rICAgICAgICAgICAgICAgICAgICAg aWJ1c19yZXF1aXNpdGlvbl9leF9jb3B5LAotKyAgICAgICAgICAgICAgICAgICAgIGlidXNfcmVx dWlzaXRpb25fZXhfZnJlZSk7Ci0rR19ERUZJTkVfVFlQRSAoSUJ1c0ZvbnRTZXQsIGlidXNfZm9u dHNldCwgSUJVU19UWVBFX09CSkVDVCkKLSsKLStzdGF0aWMgdm9pZAotK2lidXNfZm9udHNldF9j bGFzc19pbml0IChJQnVzRm9udFNldENsYXNzICpjbGFzcykKLSt7Ci0rICAgIEdPYmplY3RDbGFz cyAqZ29iamVjdF9jbGFzcyA9IEdfT0JKRUNUX0NMQVNTIChjbGFzcyk7Ci0rICAgIElCdXNPYmpl Y3RDbGFzcyAqb2JqZWN0X2NsYXNzID0gSUJVU19PQkpFQ1RfQ0xBU1MgKGNsYXNzKTsKLSsgICAg Y2Fpcm9fZ2x5cGhfdCBkdW1teTsKLSsgICAgSUJ1c0dseXBoIGR1bW15MjsKLSsKLSsgICAgbV9j b2xvcl9zdXBwb3J0ZWQgPSAoRmNHZXRWZXJzaW9uICgpID49ICAyMTIwNSk7Ci0rICAgIGdvYmpl Y3RfY2xhc3MtPmNvbnN0cnVjdG9yID0gaWJ1c19mb250c2V0X2NvbnN0cnVjdG9yOwotKyAgICBn b2JqZWN0X2NsYXNzLT5nZXRfcHJvcGVydHkgPQotKyAgICAgICAgICAgIChHT2JqZWN0R2V0UHJv cGVydHlGdW5jKSBpYnVzX2ZvbnRzZXRfZ2V0X3Byb3BlcnR5OwotKyAgICBnb2JqZWN0X2NsYXNz LT5zZXRfcHJvcGVydHkgPQotKyAgICAgICAgICAgIChHT2JqZWN0U2V0UHJvcGVydHlGdW5jKSBp YnVzX2ZvbnRzZXRfc2V0X3Byb3BlcnR5OwotKyAgICBvYmplY3RfY2xhc3MtPmRlc3Ryb3kgPSAo SUJ1c09iamVjdERlc3Ryb3lGdW5jKSBpYnVzX2ZvbnRzZXRfZGVzdHJveTsKLSsKLSsgICAgLyog aW5zdGFsbCBwcm9wZXJ0aWVzICovCi0rICAgIC8qKgotKyAgICAgKiBJQnVzRm9udFNldDpmYW1p bHk6Ci0rICAgICAqCi0rICAgICAqIEZvbnQgZmFtaWx5IG9mIHRoaXMgSUJ1c0ZvbnRTZXQuCi0r ICAgICAqLwotKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2Ns YXNzLAotKyAgICAgICAgICAgICAgICAgICAgUFJPUF9GQU1JTFksCi0rICAgICAgICAgICAgICAg ICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nICgiZmFtaWx5IiwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAiZmFtaWx5IiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAiZmFtaWx5IiwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAiIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICBHX1BBUkFN X1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUKSk7Ci0rCi0rICAgIC8qKgotKyAgICAgKiBJ QnVzRm9udFNldDpzaXplOgotKyAgICAgKgotKyAgICAgKiBGb250IHNpemUgb2YgdGhpcyBJQnVz Rm9udFNldC4KLSsgICAgICovCi0rICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkg KGdvYmplY3RfY2xhc3MsCi0rICAgICAgICAgICAgICAgICAgICBQUk9QX1NJWkUsCi0rICAgICAg ICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfdWludCAoInNpemUiLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICJzaXplIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAic2l6ZSIsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgMCwgR19NQVhVSU5UMTYsIDAsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVCkpOwotKwotKyAg ICAvKioKLSsgICAgICogSUJ1c0ZvbnRTZXQ6bGFuZ3VhZ2U6Ci0rICAgICAqCi0rICAgICAqIEZv bnQgbGFuZ3VhZ2Ugb2YgdGhpcyBJQnVzRm9udFNldC4KLSsgICAgICovCi0rICAgIGdfb2JqZWN0 X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCi0rICAgICAgICAgICAgICAg ICAgICBQUk9QX0xBTkdVQUdFLAotKyAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX3N0 cmluZyAoImxhbmd1YWdlIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAibGFuZ3VhZ2UiLAot KyAgICAgICAgICAgICAgICAgICAgICAgICJsYW5ndWFnZSIsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgIiIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBH X1BBUkFNX0NPTlNUUlVDVCkpOwotKwotKyAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUgKGNs YXNzLCBzaXplb2YgKElCdXNGb250U2V0UHJpdmF0ZSkpOwotKyAgICBGVF9Jbml0X0ZyZWVUeXBl ICgmbV9mdGxpYnJhcnkpOwotKyAgICBtX3NjYWxlZF9mb250X3RhYmxlID0gZ19oYXNoX3RhYmxl X25ld19mdWxsICgKLSsgICAgICAgICAgICBnX3N0cl9oYXNoLCBnX3N0cl9lcXVhbCwKLSsgICAg ICAgICAgICBnX2ZyZWUsCi0rICAgICAgICAgICAgKEdEZXN0cm95Tm90aWZ5KSBjYWlyb19zY2Fs ZWRfZm9udF9kZXN0cm95KTsKLSsgICAgbV9oYl9mb250X3RhYmxlID0gZ19oYXNoX3RhYmxlX25l d19mdWxsICgKLSsgICAgICAgICAgICBnX3N0cl9oYXNoLCBnX3N0cl9lcXVhbCwKLSsgICAgICAg ICAgICBnX2ZyZWUsCi0rICAgICAgICAgICAgKEdEZXN0cm95Tm90aWZ5KSBoYl9mb250X2Rlc3Ry b3kpOwotKwotKyAgICAvKiBoYl9nbHlwaF90IGlzIG5vdCBhdmFpbGFibGUgaW4gVmFsYSBzbyBv dmVycmlkZSBpdCB3aXRoIElCdXNHbHlwaC4gKi8KLSsgICAgZ19hc3NlcnQgKHNpemVvZiAoZHVt bXkpID09IHNpemVvZiAoZHVtbXkyKSk7Ci0rICAgIGdfYXNzZXJ0IChzaXplb2YgKGR1bW15Lmlu ZGV4KSA9PSBzaXplb2YgKGR1bW15Mi5pbmRleCkpOwotKyAgICBnX2Fzc2VydCAoc2l6ZW9mIChk dW1teS54KSA9PSBzaXplb2YgKGR1bW15Mi54KSk7Ci0rICAgIGdfYXNzZXJ0IChzaXplb2YgKGR1 bW15LnkpID09IHNpemVvZiAoZHVtbXkyLnkpKTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStpYnVz X2ZvbnRzZXRfaW5pdCAoSUJ1c0ZvbnRTZXQgKmZvbnRzZXQpCi0rewotKyAgICBmb250c2V0LT5w cml2ID0gSUJVU19GT05UU0VUX0dFVF9QUklWQVRFIChmb250c2V0KTsKLSt9Ci0rCi0rCi0rc3Rh dGljIEdPYmplY3QgKgotK2lidXNfZm9udHNldF9jb25zdHJ1Y3RvciAoR1R5cGUgICAgICAgICAg ICAgICAgICAgdHlwZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAg ICAgICAgICAgIG4sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBHT2JqZWN0Q29uc3RydWN0 UGFyYW0gICphcmdzKQotK3sKLSsgICAgR09iamVjdCAqb2JqZWN0OwotKyAgICBJQnVzRm9udFNl dCAqZm9udHNldDsKLSsgICAgY29uc3QgZ2NoYXIgKmZhbWlseTsKLSsgICAgZ3VpbnQgc2l6ZTsK LSsKLSsgICAgb2JqZWN0ID0gR19PQkpFQ1RfQ0xBU1MgKGlidXNfZm9udHNldF9wYXJlbnRfY2xh c3MpLT5jb25zdHJ1Y3RvciAoCi0rICAgICAgICAgICAgdHlwZSwgbiAsYXJncyk7Ci0rICAgIGZv bnRzZXQgPSBJQlVTX0ZPTlRTRVQgKG9iamVjdCk7Ci0rICAgIGZhbWlseSA9IGlidXNfZm9udHNl dF9nZXRfZmFtaWx5IChmb250c2V0KTsKLSsgICAgc2l6ZSA9IGlidXNfZm9udHNldF9nZXRfc2l6 ZSAoZm9udHNldCk7Ci0rICAgIGlidXNfZm9udHNldF91cGRhdGVfZmNmb250c2V0IChmb250c2V0 KTsKLSsgICAgaWYgKGZhbWlseSAhPSBOVUxMICYmIHNpemUgPiAwKSB7Ci0rICAgICAgICAvKiBj YWNoZSB0aGUgZm9udCAqLwotKyAgICAgICAgaWJ1c19mb250c2V0X2NhaXJvX3NjYWxlZF9mb250 X25ld193aXRoX2ZvbnQgKGZhbWlseSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzaXplLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUpOwotKyAgICB9Ci0rICAgIHJldHVybiBv YmplY3Q7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0raWJ1c19mb250c2V0X2Rlc3Ryb3kgKElCdXNG b250U2V0ICpmb250c2V0KQotK3sKLSsgICAgZ19jbGVhcl9wb2ludGVyICgmZm9udHNldC0+cHJp di0+ZmFtaWx5LCBnX2ZyZWUpOwotKyAgICBnX2NsZWFyX3BvaW50ZXIgKCZmb250c2V0LT5wcml2 LT5sYW5ndWFnZSwgZ19mcmVlKTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStpYnVzX2ZvbnRzZXRf c2V0X3Byb3BlcnR5IChJQnVzRm9udFNldCAgKmZvbnRzZXQsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgZ3VpbnQgICAgICAgICBwcm9wX2lkLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IEdWYWx1ZSAqdmFsdWUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgR1Bh cmFtU3BlYyAgICpwc3BlYykKLSt7Ci0rICAgIHN3aXRjaCAocHJvcF9pZCkgewotKyAgICBjYXNl IFBST1BfRkFNSUxZOgotKyAgICAgICAgaWJ1c19mb250c2V0X3NldF9mYW1pbHkgKGZvbnRzZXQs IGdfdmFsdWVfZ2V0X3N0cmluZyAodmFsdWUpKTsKLSsgICAgICAgIGJyZWFrOwotKyAgICBjYXNl IFBST1BfU0laRToKLSsgICAgICAgIGlidXNfZm9udHNldF9zZXRfc2l6ZSAoZm9udHNldCwgZ192 YWx1ZV9nZXRfdWludCAodmFsdWUpKTsKLSsgICAgICAgIGJyZWFrOwotKyAgICBjYXNlIFBST1Bf TEFOR1VBR0U6Ci0rICAgICAgICBpYnVzX2ZvbnRzZXRfc2V0X2xhbmd1YWdlIChmb250c2V0LCBn X3ZhbHVlX2dldF9zdHJpbmcgKHZhbHVlKSk7Ci0rICAgICAgICBicmVhazsKLSsgICAgZGVmYXVs dDoKLSsgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAoZm9udHNldCwg cHJvcF9pZCwgcHNwZWMpOwotKyAgICB9Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0raWJ1c19mb250 c2V0X2dldF9wcm9wZXJ0eSAoSUJ1c0ZvbnRTZXQgKmZvbnRzZXQsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgcHJvcF9pZCwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICBHVmFsdWUgICAgICAgICp2YWx1ZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICBHUGFyYW1TcGVjICAgICpwc3BlYykKLSt7Ci0rICAgIHN3aXRjaCAocHJvcF9pZCkgewotKyAg ICBjYXNlIFBST1BfRkFNSUxZOgotKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nICh2YWx1ZSwg aWJ1c19mb250c2V0X2dldF9mYW1pbHkgKGZvbnRzZXQpKTsKLSsgICAgICAgIGJyZWFrOwotKyAg ICBjYXNlIFBST1BfU0laRToKLSsgICAgICAgIGdfdmFsdWVfc2V0X3VpbnQgKHZhbHVlLCBpYnVz X2ZvbnRzZXRfZ2V0X3NpemUgKGZvbnRzZXQpKTsKLSsgICAgICAgIGJyZWFrOwotKyAgICBjYXNl IFBST1BfTEFOR1VBR0U6Ci0rICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcgKHZhbHVlLCBpYnVz X2ZvbnRzZXRfZ2V0X2xhbmd1YWdlIChmb250c2V0KSk7Ci0rICAgICAgICBicmVhazsKLSsgICAg ZGVmYXVsdDoKLSsgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAoZm9u dHNldCwgcHJvcF9pZCwgcHNwZWMpOwotKyAgICB9Ci0rfQotKwotK3N0YXRpYyBjYWlyb19zY2Fs ZWRfZm9udF90ICoKLStpYnVzX2ZvbnRzZXRfY2Fpcm9fc2NhbGVkX2ZvbnRfbmV3X3dpdGhfZm9u dCAoY29uc3QgZ2NoYXIgKmZhbWlseSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgIHNpemUsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICBoYXNfY29sb3IpCi0rewotKyAg ICBnY2hhciAqZm9udF9uYW1lOwotKyAgICBjYWlyb19zY2FsZWRfZm9udF90ICpzY2FsZWRfZm9u dCA9IE5VTEw7Ci0rICAgIEZjUGF0dGVybiAqcGF0dGVybiwgKnJlc29sdmVkOwotKyAgICBGY1Jl c3VsdCByZXN1bHQ7Ci0rICAgIGNhaXJvX2ZvbnRfb3B0aW9uc190ICpmb250X29wdGlvbnM7Ci0r ICAgIGRvdWJsZSBwaXhlbF9zaXplID0gMC47Ci0rICAgIEZjTWF0cml4IGZjX21hdHJpeCwgKmZj X21hdHJpeF92YWw7Ci0rICAgIGNhaXJvX2ZvbnRfZmFjZV90ICpjYWlyb19mYWNlID0gTlVMTDsK LSsgICAgY2Fpcm9fbWF0cml4X3QgZm9udF9tYXRyaXg7Ci0rICAgIGNhaXJvX21hdHJpeF90IGN0 bTsKLSsgICAgaW50IGk7Ci0rCi0rICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChmYW1pbHkgIT0g TlVMTCwgTlVMTCk7Ci0rICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChtX3NjYWxlZF9mb250X3Rh YmxlICE9IE5VTEwsIE5VTEwpOwotKwotKyAgICBpZiAobV9jb2xvcl9zdXBwb3J0ZWQpIHsKLSsg ICAgICAgIGZvbnRfbmFtZSA9IGdfc3RyZHVwX3ByaW50ZiAoIiVzICV1OmNvbG9yPSVzIiwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFtaWx5LCBzaXplLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNfY29sb3IgPyAiVFJVRSIgOiAiRkFM U0UiKTsKLSsgICAgfSBlbHNlIHsKLSsgICAgICAgIGZvbnRfbmFtZSA9IGdfc3RyZHVwX3ByaW50 ZiAoIiVzICV1IiwgZmFtaWx5LCBzaXplKTsKLSsgICAgfQotKyAgICBzY2FsZWRfZm9udCA9IGdf aGFzaF90YWJsZV9sb29rdXAgKG1fc2NhbGVkX2ZvbnRfdGFibGUsIGZvbnRfbmFtZSk7Ci0rICAg IGlmIChzY2FsZWRfZm9udCAhPSBOVUxMKSB7Ci0rICAgICAgICBnX2ZyZWUgKGZvbnRfbmFtZSk7 Ci0rICAgICAgICByZXR1cm4gc2NhbGVkX2ZvbnQ7Ci0rICAgIH0KLSsgICAgcGF0dGVybiA9IEZj UGF0dGVybkNyZWF0ZSAoKTsKLSsgICAgRmNQYXR0ZXJuQWRkU3RyaW5nIChwYXR0ZXJuLCBGQ19G QU1JTFksIChGY0NoYXI4KikgZmFtaWx5KTsKLSsgICAgRmNQYXR0ZXJuQWRkRG91YmxlIChwYXR0 ZXJuLCBGQ19TSVpFLCAoZG91YmxlKSBzaXplKTsKLSsvKiBGQ19WRVJTSU9OIGlzIGZvciB0aGUg YnVpbGQgY2hlY2sgb2YgRkNfQ09MT1IgYW5kIG1fY29sb3Jfc3VwcG9ydGVkIGlzCi0rICogZm9y IHRoZSBydW50aW1lIGNoZWNrLgotKyAqLwotKyNpZiBGQ19WRVJTSU9OID49ICAyMTIwNQotKyAg ICBpZiAobV9jb2xvcl9zdXBwb3J0ZWQpCi0rICAgICAgICBGY1BhdHRlcm5BZGRCb29sIChwYXR0 ZXJuLCBGQ19DT0xPUiwgaGFzX2NvbG9yKTsKLSsjZW5kaWYKLSsgICAgRmNQYXR0ZXJuQWRkRG91 YmxlIChwYXR0ZXJuLCBGQ19EUEksIDk2KTsKLSsgICAgRmNDb25maWdTdWJzdGl0dXRlKE5VTEws IHBhdHRlcm4sIEZjTWF0Y2hQYXR0ZXJuKTsKLSsgICAgZm9udF9vcHRpb25zID0gY2Fpcm9fZm9u dF9vcHRpb25zX2NyZWF0ZSAoKTsKLSsgICAgY2Fpcm9fZnRfZm9udF9vcHRpb25zX3N1YnN0aXR1 dGUgKGZvbnRfb3B0aW9ucywgcGF0dGVybik7Ci0rICAgIEZjRGVmYXVsdFN1YnN0aXR1dGUgKHBh dHRlcm4pOwotKyAgICByZXNvbHZlZCA9IEZjRm9udE1hdGNoIChOVUxMLCBwYXR0ZXJuLCAmcmVz dWx0KTsKLSsgICAgRmNQYXR0ZXJuRGVzdHJveSAocGF0dGVybik7Ci0rICAgIEZjUGF0dGVybkdl dERvdWJsZSAocmVzb2x2ZWQsIEZDX1BJWEVMX1NJWkUsIDAsICZwaXhlbF9zaXplKTsKLSsgICAg aWYgKHBpeGVsX3NpemUgPT0gMC4pCi0rICAgICAgICBnX3dhcm5pbmcgKCJGYWlsZWQgdG8gc2Nh bGVkIHRoZSBmb250OiAlcyAldSIsIGZhbWlseSwgc2l6ZSk7Ci0rICAgIGNhaXJvX2ZhY2UgPSBj YWlyb19mdF9mb250X2ZhY2VfY3JlYXRlX2Zvcl9wYXR0ZXJuIChyZXNvbHZlZCk7Ci0rICAgIEZj TWF0cml4SW5pdCAoJmZjX21hdHJpeCk7Ci0rICAgIGZvciAoaSA9IDA7Ci0rICAgICAgICAgRmNQ YXR0ZXJuR2V0TWF0cml4IChyZXNvbHZlZCwgRkNfTUFUUklYLCBpLCAmZmNfbWF0cml4X3ZhbCkK LSsgICAgICAgICAgICAgICAgID09IEZjUmVzdWx0TWF0Y2g7Ci0rICAgICAgICAgaSsrKSB7Ci0r ICAgICAgICBGY01hdHJpeE11bHRpcGx5ICgmZmNfbWF0cml4LCAmZmNfbWF0cml4LCBmY19tYXRy aXhfdmFsKTsKLSsgICAgfQotKyAgICBGY1BhdHRlcm5EZXN0cm95IChyZXNvbHZlZCk7Ci0rICAg IGNhaXJvX21hdHJpeF9pbml0ICgmZm9udF9tYXRyaXgsCi0rICAgICAgICAgICAgICAgICAgICAg ICBmY19tYXRyaXgueHgsIC1mY19tYXRyaXgueXgsCi0rICAgICAgICAgICAgICAgICAgICAgICAt ZmNfbWF0cml4Lnh5LCBmY19tYXRyaXgueXksCi0rICAgICAgICAgICAgICAgICAgICAgICAwLiwg MC4pOwotKyAgICBpZiAocGl4ZWxfc2l6ZSAhPSAwLikKLSsgICAgICAgIGNhaXJvX21hdHJpeF9z Y2FsZSAoJmZvbnRfbWF0cml4LCBwaXhlbF9zaXplLCBwaXhlbF9zaXplKTsKLSsgICAgY2Fpcm9f bWF0cml4X2luaXRfaWRlbnRpdHkgKCZjdG0pOwotKyAgICBzY2FsZWRfZm9udCA9IGNhaXJvX3Nj YWxlZF9mb250X2NyZWF0ZSAoY2Fpcm9fZmFjZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZmb250X21hdHJpeCwgJmN0bSwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRfb3B0aW9ucyk7Ci0rICAgIGNhaXJvX2Zv bnRfZmFjZV9kZXN0cm95IChjYWlyb19mYWNlKTsKLSsgICAgaWYgKGZvbnRfbmFtZSkKLSsgICAg ICAgIGdfaGFzaF90YWJsZV9pbnNlcnQobV9zY2FsZWRfZm9udF90YWJsZSwgZm9udF9uYW1lLCBz Y2FsZWRfZm9udCk7Ci0rCi0rICAgIHJldHVybiBzY2FsZWRfZm9udDsKLSt9Ci0rCi0rc3RhdGlj IGhiX2ZvbnRfdCAqCi0raWJ1c19mb250c2V0X2hiX2ZvbnRfbmV3X3dpdGhfZm9udF9wYXRoIChj b25zdCBnY2hhciAqZm9udF9wYXRoKQotK3sKLSsgICAgaGJfZm9udF90ICpoYl9mb250OwotKyAg ICBHRXJyb3IgKmVycm9yID0gTlVMTDsKLSsgICAgR01hcHBlZEZpbGUgKm1mOwotKyAgICBjaGFy ICpmb250X2RhdGEgPSBOVUxMOwotKyAgICBnc2l6ZSBsZW47Ci0rICAgIGhiX2Jsb2JfdCAqaGJf YmxvYjsKLSsgICAgaGJfZmFjZV90ICpoYl9mYWNlOwotKwotKyAgICBnX3JldHVybl92YWxfaWZf ZmFpbCAoZm9udF9wYXRoICE9IE5VTEwsIE5VTEwpOwotKyAgICBnX3JldHVybl92YWxfaWZfZmFp bCAobV9oYl9mb250X3RhYmxlICE9IE5VTEwsIE5VTEwpOwotKwotKyAgICBoYl9mb250ID0gZ19o YXNoX3RhYmxlX2xvb2t1cCAobV9oYl9mb250X3RhYmxlLCBmb250X3BhdGgpOwotKyAgICBpZiAo aGJfZm9udCAhPSBOVUxMKQotKyAgICAgICAgcmV0dXJuIGhiX2ZvbnQ7Ci0rCi0rICAgIG1mID0g Z19tYXBwZWRfZmlsZV9uZXcgKGZvbnRfcGF0aCwgRkFMU0UsICZlcnJvcik7Ci0rICAgIGlmICht ZiA9PSBOVUxMKSB7Ci0rICAgICAgICBnX3dhcm5pbmcgKCJOb3QgZm91bmQgZm9udCAlcyIsIGZv bnRfcGF0aCk7Ci0rICAgICAgICByZXR1cm4gTlVMTDsKLSsgICAgfQotKyAgICBmb250X2RhdGEg PSBnX21hcHBlZF9maWxlX2dldF9jb250ZW50cyAobWYpOwotKyAgICBsZW4gPSBnX21hcHBlZF9m aWxlX2dldF9sZW5ndGggKG1mKTsKLSsgICAgaWYgKGxlbiA9PSAwKSB7Ci0rICAgICAgICBnX3dh cm5pbmcgKCJ6ZXJvIHNpemUgZm9udCAlcyIsIGZvbnRfcGF0aCk7Ci0rICAgICAgICBnX21hcHBl ZF9maWxlX3VucmVmIChtZik7Ci0rICAgICAgICByZXR1cm4gTlVMTDsKLSsgICAgfQotKyAgICBo Yl9ibG9iID0gaGJfYmxvYl9jcmVhdGUgKGZvbnRfZGF0YSwgbGVuLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEhCX01FTU9SWV9NT0RFX1JFQURPTkxZX01BWV9NQUtFX1dSSVRBQkxF LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1mLCAoaGJfZGVzdHJveV9mdW5jX3Qp Z19tYXBwZWRfZmlsZV91bnJlZik7Ci0rICAgIGhiX2ZhY2UgPSBoYl9mYWNlX2NyZWF0ZSAoaGJf YmxvYiwgMCk7Ci0rICAgIGhiX2Jsb2JfZGVzdHJveSAoaGJfYmxvYik7Ci0rICAgIGhiX2ZvbnQg PSBoYl9mb250X2NyZWF0ZSAoaGJfZmFjZSk7Ci0rICAgIHVuc2lnbmVkIGludCB1cGVtID0gaGJf ZmFjZV9nZXRfdXBlbSAoaGJfZmFjZSk7Ci0rICAgIGhiX2ZvbnRfc2V0X3NjYWxlIChoYl9mb250 LCB1cGVtLCB1cGVtKTsKLSsgICAgaGJfZmFjZV9kZXN0cm95IChoYl9mYWNlKTsKLSsgICAgaGJf b3RfZm9udF9zZXRfZnVuY3MgKGhiX2ZvbnQpOwotKyAgICBnX2hhc2hfdGFibGVfaW5zZXJ0ICht X2hiX2ZvbnRfdGFibGUsIGdfc3RyZHVwIChmb250X3BhdGgpLCBoYl9mb250KTsKLSsKLSsgICAg cmV0dXJuIGhiX2ZvbnQ7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rZ2V0X2ZvbnRfZXh0ZW50c193 aXRoX3NjYWxlZF9mb250IChjYWlyb19zY2FsZWRfZm9udF90ICpzY2FsZWRfZm9udCwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhbmdvUmVjdGFuZ2xlICAgICAgKmZvbnRf cmVjdCkKLSt7Ci0rICAgIGNhaXJvX2ZvbnRfZXh0ZW50c190IGZvbnRfZXh0ZW50czsKLSsKLSsg ICAgZ19hc3NlcnQgKHNjYWxlZF9mb250ICE9IE5VTEwgJiYgZm9udF9yZWN0ICE9IE5VTEwpOwot KwotKyAgICBjYWlyb19zY2FsZWRfZm9udF9leHRlbnRzIChzY2FsZWRfZm9udCwgJmZvbnRfZXh0 ZW50cyk7Ci0rICAgIGZvbnRfcmVjdC0+eCA9IDA7Ci0rICAgIGZvbnRfcmVjdC0+eSA9IC0gcGFu Z29fdW5pdHNfZnJvbV9kb3VibGUgKGZvbnRfZXh0ZW50cy5hc2NlbnQpOwotKyAgICBmb250X3Jl Y3QtPndpZHRoID0gMDsKLSsgICAgZm9udF9yZWN0LT5oZWlnaHQgPSBwYW5nb191bml0c19mcm9t X2RvdWJsZSAoCi0rICAgICAgICAgICAgZm9udF9leHRlbnRzLmFzY2VudCArIGZvbnRfZXh0ZW50 cy5kZXNjZW50KTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStnZXRfZ2x5cGhfZXh0ZW50c193aXRo X3NjYWxlZF9oYl9mb250IChjb25zdCBnY2hhciAgICAgICAgICAqc3RyLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhaXJvX3NjYWxlZF9mb250X3QgICpzY2FsZWRf Zm9udCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYl9mb250X3Qg ICAgICAgICAgICAqaGJfZm9udCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQYW5nb1JlY3RhbmdsZSAgICAgICAqZm9udF9yZWN0LAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIElCdXNDYWlyb0xpbmUgICAgICAgKipjYWlyb19saW5lcywK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGY0NoYXI4ICAgICAgICAg ICAgICAqZmFsbGJhY2tfZmFtaWx5KQotK3sKLSsgICAgZ2Jvb2xlYW4gaGFzX3Vua25vd25fZ2x5 cGggPSBGQUxTRTsKLSsgICAgaGJfYnVmZmVyX3QgKmhiX2J1ZmZlcjsKLSsgICAgdW5zaWduZWQg aW50IGxlbiwgbiwgaTsKLSsgICAgaGJfZ2x5cGhfaW5mb190ICppbmZvOwotKyAgICBoYl9nbHlw aF9wb3NpdGlvbl90ICpwb3M7Ci0rICAgIGRvdWJsZSB4OwotKyAgICBjYWlyb19nbHlwaF90ICpn bHlwaDsKLSsgICAgY2Fpcm9fdGV4dF9leHRlbnRzX3QgdGV4dF9leHRlbnRzID0geyAwLCB9Owot KwotKyAgICBnX3JldHVybl9pZl9mYWlsIChzdHIgIT0gTlVMTCk7Ci0rCi0rICAgIGhiX2J1ZmZl ciA9IGhiX2J1ZmZlcl9jcmVhdGUgKCk7Ci0rICAgIGhiX2J1ZmZlcl9hZGRfdXRmOCAoaGJfYnVm ZmVyLCBzdHIsIC0xLCAwLCAtMSk7Ci0rICAgIGhiX2J1ZmZlcl9ndWVzc19zZWdtZW50X3Byb3Bl cnRpZXMgKGhiX2J1ZmZlcik7Ci0rICAgIGZvciAobiA9IDA7ICpjYWlyb19saW5lcyAmJiAoKmNh aXJvX2xpbmVzKVtuXS5zY2FsZWRfZm9udDsgbisrKTsKLSsgICAgaWYgKG4gPT0gMCkKLSsgICAg ICAgICpjYWlyb19saW5lcyA9IGdfbmV3MCAoSUJ1c0NhaXJvTGluZSwgMik7Ci0rICAgIGVsc2UK LSsgICAgICAgICpjYWlyb19saW5lcyA9IGdfcmVuZXcgKElCdXNDYWlyb0xpbmUsICpjYWlyb19s aW5lcywgbiArIDIpOwotKyAgICAoKmNhaXJvX2xpbmVzKVtuICsgMV0uc2NhbGVkX2ZvbnQgPSBO VUxMOwotKyAgICAoKmNhaXJvX2xpbmVzKVtuICsgMV0ubnVtX2dseXBocyA9IDA7Ci0rICAgICgq Y2Fpcm9fbGluZXMpW24gKyAxXS5nbHlwaHMgPSBOVUxMOwotKyAgICBoYl9zaGFwZSAoaGJfZm9u dCwgaGJfYnVmZmVyLCBOVUxMLCAwKTsKLSsgICAgbGVuID0gaGJfYnVmZmVyX2dldF9sZW5ndGgg KGhiX2J1ZmZlcik7Ci0rICAgIGluZm8gPSBoYl9idWZmZXJfZ2V0X2dseXBoX2luZm9zIChoYl9i dWZmZXIsIE5VTEwpOwotKyAgICBwb3MgPSBoYl9idWZmZXJfZ2V0X2dseXBoX3Bvc2l0aW9ucyAo aGJfYnVmZmVyLCBOVUxMKTsKLSsgICAgKCpjYWlyb19saW5lcylbbl0uc2NhbGVkX2ZvbnQgPSBz Y2FsZWRfZm9udDsKLSsgICAgKCpjYWlyb19saW5lcylbbl0ubnVtX2dseXBocyA9IGxlbjsKLSsg ICAgKCpjYWlyb19saW5lcylbbl0uZ2x5cGhzID0gKElCdXNHbHlwaCopIGNhaXJvX2dseXBoX2Fs bG9jYXRlIChsZW4gKyAxKTsKLSsgICAgeCA9IDAuOwotKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVu OyBpKyspIHsKLSsgICAgICAgIGhiX2NvZGVwb2ludF90IGMgPSBpbmZvW2ldLmNvZGVwb2ludDsK LSsgICAgICAgIGlmIChjKSB7Ci0rICAgICAgICAgICAgKCpjYWlyb19saW5lcylbbl0uZ2x5cGhz W2ldLmluZGV4ID0gaW5mb1tpXS5jb2RlcG9pbnQ7Ci0rICAgICAgICAgICAgKCpjYWlyb19saW5l cylbbl0uZ2x5cGhzW2ldLnggPSB4OwotKyAgICAgICAgICAgICgqY2Fpcm9fbGluZXMpW25dLmds eXBoc1tpXS55ID0gLWZvbnRfcmVjdC0+eSAvIFBBTkdPX1NDQUxFOwotKyAgICAgICAgICAgIGds eXBoID0gKGNhaXJvX2dseXBoX3QgKikgJigoKmNhaXJvX2xpbmVzKVtuXS5nbHlwaHNbaV0pOwot KyAgICAgICAgICAgIGNhaXJvX3NjYWxlZF9mb250X2dseXBoX2V4dGVudHMgKHNjYWxlZF9mb250 LCBnbHlwaCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx LCAmdGV4dF9leHRlbnRzKTsKLSsgICAgICAgICAgICB4ICs9IHRleHRfZXh0ZW50cy53aWR0aDsK LSsgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgaGFzX3Vua25vd25fZ2x5cGggPSBUUlVF OwotKyAgICAgICAgICAgIGMgPSBnX3V0ZjhfZ2V0X2NoYXIgKHN0cik7Ci0rICAgICAgICAgICAg KCpjYWlyb19saW5lcylbbl0uZ2x5cGhzW2ldLmluZGV4ID0gUEFOR09fR0VUX1VOS05PV05fR0xZ UEggKGMpOwotKyAgICAgICAgICAgICgqY2Fpcm9fbGluZXMpW25dLmdseXBoc1tpXS54ID0geDsK LSsgICAgICAgICAgICAoKmNhaXJvX2xpbmVzKVtuXS5nbHlwaHNbaV0ueSA9IC1mb250X3JlY3Qt PnkgLyBQQU5HT19TQ0FMRTsKLSsgICAgICAgICAgICBnbHlwaCA9IChjYWlyb19nbHlwaF90ICop ICYoKCpjYWlyb19saW5lcylbbl0uZ2x5cGhzW2ldKTsKLSsgICAgICAgICAgICBjYWlyb19zY2Fs ZWRfZm9udF9nbHlwaF9leHRlbnRzIChzY2FsZWRfZm9udCwgZ2x5cGgsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgJnRleHRfZXh0ZW50cyk7Ci0rICAg ICAgICAgICAgeCArPSAxMDsKLSsgICAgICAgIH0KLSsgICAgfQotKyAgICAoKmNhaXJvX2xpbmVz KVtuXS5nbHlwaHNbaV0uaW5kZXggPSAtMTsKLSsgICAgKCpjYWlyb19saW5lcylbbl0uZ2x5cGhz W2ldLnggPSAwOwotKyAgICAoKmNhaXJvX2xpbmVzKVtuXS5nbHlwaHNbaV0ueSA9IDA7Ci0rICAg IGdseXBoID0gKGNhaXJvX2dseXBoX3QgKikgKCpjYWlyb19saW5lcylbbl0uZ2x5cGhzOwotKyAg ICBjYWlyb19zY2FsZWRfZm9udF9nbHlwaF9leHRlbnRzIChzY2FsZWRfZm9udCwgZ2x5cGgsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbiwgJnRleHRfZXh0ZW50cyk7 Ci0rICAgIGlmICh0ZXh0X2V4dGVudHMud2lkdGgpIHsKLSsgICAgICAgIGZvbnRfcmVjdC0+d2lk dGggPSBwYW5nb191bml0c19mcm9tX2RvdWJsZSAodGV4dF9leHRlbnRzLndpZHRoKTsKLSsgICAg fSBlbHNlIHsKLSsgICAgICAgIGZvbnRfcmVjdC0+d2lkdGggPSBmb250X3JlY3QtPmhlaWdodDsK LSsgICAgfQotKyAgICBpZiAoaGFzX3Vua25vd25fZ2x5cGggJiYgZmFsbGJhY2tfZmFtaWx5ICE9 IE5VTEwpIHsKLSsgICAgICAgIGNhaXJvX3NjYWxlZF9mb250X3QgICp1bmtub3duX2ZvbnQ7Ci0r ICAgICAgICB1bmtub3duX2ZvbnQgPSBpYnVzX2ZvbnRzZXRfY2Fpcm9fc2NhbGVkX2ZvbnRfbmV3 X3dpdGhfZm9udCAoCi0rICAgICAgICAgICAgKGNvbnN0IGdjaGFyICopIGZhbGxiYWNrX2ZhbWls eSwKLSsgICAgICAgICAgICBVTktOT1dOX0ZPTlRfU0laRSwKLSsgICAgICAgICAgICBGQUxTRSk7 Ci0rICAgICAgICAoKmNhaXJvX2xpbmVzKVtuXS5zY2FsZWRfZm9udCA9IHVua25vd25fZm9udDsK LSsgICAgfQotKyAgICBoYl9idWZmZXJfZGVzdHJveSAoaGJfYnVmZmVyKTsKLSt9Ci0rCi0rc3Rh dGljIHZvaWQKLStnZXRfc3RyaW5nX2V4dGVudHNfd2l0aF9mb250IChjb25zdCBnY2hhciAgICAg ICAgICAgICpzdHIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9udFBlckNoYXIg ICAgICAgICAgICAqYnVmZiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWlyb19y ZWN0YW5nbGVfaW50X3QgICpyZWN0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElC dXNDYWlyb0xpbmUgICAgICAgICAqKmNhaXJvX2xpbmVzKQotK3sKLSsgICAgRmNDaGFyOCAqZmFt aWx5ID0gTlVMTDsKLSsgICAgRmNDaGFyOCAqZm9udF9wYXRoID0gTlVMTDsKLSsgICAgZ2Jvb2xl YW4gaGFzX2NvbG9yID0gVFJVRTsKLSsgICAgZ3VpbnQgc2l6ZSA9IDA7Ci0rICAgIGNhaXJvX3Nj YWxlZF9mb250X3QgKnNjYWxlZF9mb250ID0gTlVMTDsKLSsgICAgUGFuZ29SZWN0YW5nbGUgZm9u dF9yZWN0ID0geyAwLCB9OwotKyAgICBoYl9mb250X3QgKmhiX2ZvbnQ7Ci0rCi0rICAgIGdfcmV0 dXJuX2lmX2ZhaWwgKHN0ciAhPSBOVUxMKTsKLSsgICAgZ19yZXR1cm5faWZfZmFpbCAoYnVmZiAh PSBOVUxMICYmIGJ1ZmYtPmZjZm9udCAhPSBOVUxMKTsKLSsKLSsgICAgRmNQYXR0ZXJuR2V0U3Ry aW5nIChidWZmLT5mY2ZvbnQsIEZDX0ZBTUlMWSwgMCwgJmZhbWlseSk7Ci0rICAgIGdfcmV0dXJu X2lmX2ZhaWwgKGZhbWlseSAhPSBOVUxMKTsKLSsjaWYgRkNfVkVSU0lPTiA+PSAgMjEyMDUKLSsg ICAgaWYgKG1fY29sb3Jfc3VwcG9ydGVkKQotKyAgICAgICAgRmNQYXR0ZXJuR2V0Qm9vbCAoYnVm Zi0+ZmNmb250LCBGQ19DT0xPUiwgMCwgJmhhc19jb2xvcik7Ci0rI2VuZGlmCi0rICAgIHNpemUg PSBtX3NpemU7Ci0rICAgIGlmIChzaXplID09IDApIHsKLSsgICAgICAgIGdfd2FybmluZyAoIkZv bnQgc2l6ZSBpcyBub3QgcmlnaHQgZm9yIGZvbnQgJXMuIiwgZmFtaWx5KTsKLSsgICAgICAgIHNp emUgPSAxNDsKLSsgICAgfQotKyAgICBzY2FsZWRfZm9udCA9IGlidXNfZm9udHNldF9jYWlyb19z Y2FsZWRfZm9udF9uZXdfd2l0aF9mb250ICgKLSsgICAgICAgICAgICAoY29uc3QgZ2NoYXIgKikg ZmFtaWx5LAotKyAgICAgICAgICAgIHNpemUsCi0rICAgICAgICAgICAgaGFzX2NvbG9yKTsKLSsg ICAgZ19yZXR1cm5faWZfZmFpbCAoc2NhbGVkX2ZvbnQgIT0gTlVMTCk7Ci0rICAgIGdldF9mb250 X2V4dGVudHNfd2l0aF9zY2FsZWRfZm9udCAoc2NhbGVkX2ZvbnQsICZmb250X3JlY3QpOwotKwot KyAgICBGY1BhdHRlcm5HZXRTdHJpbmcgKGJ1ZmYtPmZjZm9udCwgRkNfRklMRSwgMCwgJmZvbnRf cGF0aCk7Ci0rICAgIGdfcmV0dXJuX2lmX2ZhaWwgKGZvbnRfcGF0aCAhPSBOVUxMKTsKLSsgICAg aGJfZm9udCA9IGlidXNfZm9udHNldF9oYl9mb250X25ld193aXRoX2ZvbnRfcGF0aCAoCi0rICAg ICAgICAgICAgKGNvbnN0IGdjaGFyICopIGZvbnRfcGF0aCk7Ci0rICAgIGlmIChoYl9mb250ID09 IE5VTEwpCi0rICAgICAgICByZXR1cm47Ci0rICAgIGdldF9nbHlwaF9leHRlbnRzX3dpdGhfc2Nh bGVkX2hiX2ZvbnQgKHN0ciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2NhbGVkX2ZvbnQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGhiX2ZvbnQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZmb250X3JlY3QsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNhaXJvX2xpbmVzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBmYW1pbHkpOwotKyAgICByZWN0LT53aWR0aCArPSBmb250X3JlY3Qud2lkdGggLyBQQU5H T19TQ0FMRTsKLSsgICAgcmVjdC0+aGVpZ2h0ICs9IGZvbnRfcmVjdC5oZWlnaHQgLyBQQU5HT19T Q0FMRTsKLSt9Ci0rCi0rc3RhdGljIEZUX0ZhY2UKLStpYnVzX2ZvbnRzZXRfZ2V0X2Z0ZmFjZV9m cm9tX2ZjZm9udCAoSUJ1c0ZvbnRTZXQgKmZvbnRzZXQsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEZjUGF0dGVybiAgICpmY2ZvbnQpCi0rewotKyAgICBGY0NoYXI4ICpm b250X2ZpbGUgPSBOVUxMOwotKyAgICBGVF9GYWNlIGZ0X2ZhY2U7Ci0rICAgIGd1aW50IHNpemUg PSBpYnVzX2ZvbnRzZXRfZ2V0X3NpemUgKGZvbnRzZXQpOwotKwotKyAgICBnX3JldHVybl92YWxf aWZfZmFpbCAoSUJVU19JU19GT05UU0VUIChmb250c2V0KSwgTlVMTCk7Ci0rICAgIGdfcmV0dXJu X3ZhbF9pZl9mYWlsIChmY2ZvbnQgIT0gTlVMTCwgTlVMTCk7Ci0rCi0rICAgIHNpemUgPSBpYnVz X2ZvbnRzZXRfZ2V0X3NpemUgKGZvbnRzZXQpOwotKyAgICBGY1BhdHRlcm5HZXRTdHJpbmcgKGZj Zm9udCwgRkNfRklMRSwgMCwgJmZvbnRfZmlsZSk7Ci0rICAgIEZUX05ld19GYWNlIChtX2Z0bGli cmFyeSwgKGNvbnN0IGdjaGFyICopIGZvbnRfZmlsZSwgMCwgJmZ0X2ZhY2UpOwotKyAgICBGVF9T ZXRfUGl4ZWxfU2l6ZXMgKGZ0X2ZhY2UsIHNpemUsIHNpemUpOwotKyAgICByZXR1cm4gZnRfZmFj ZTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStfY2Fpcm9fc2hvd191bmtub3duX2dseXBocyAoY2Fp cm9fdCAgICAgICAgICAgICAqY3IsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGNhaXJvX2dseXBoX3QgKmdseXBocywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Vp bnQgICAgICAgICAgICAgICAgbnVtX2dseXBocywKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ3VpbnQgICAgICAgICAgICAgICAgd2lkdGgsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGd1aW50ICAgICAgICAgICAgICAgIGhlaWdodCkKLSt7Ci0rICAgIGd1bmljaGFyIGNoOwot KyAgICBnYm9vbGVhbiBpbnZhbGlkX2lucHV0OwotKyAgICBpbnQgcm93cyA9IDI7Ci0rICAgIGlu dCBjb2xzOwotKyAgICBpbnQgcm93LCBjb2w7Ci0rICAgIGNoYXIgYnVmWzddOwotKyAgICBkb3Vi bGUgY3ggPSAwLjsKLSsgICAgZG91YmxlIGN5OwotKyAgICBjb25zdCBkb3VibGUgYm94X2Rlc2Nl bnQgPSAzLjsKLSsgICAgZG91YmxlIHgwOwotKyAgICBkb3VibGUgeTA7Ci0rICAgIGNvbnN0IGRv dWJsZSBkaWdpdF93aWR0aCA9IDUuOwotKyAgICBjb25zdCBkb3VibGUgZGlnaXRfaGVpZ2h0PSA2 LjsKLSsgICAgY2hhciBoZXhib3hfc3RyaW5nWzJdID0gezAsIDB9OwotKwotKyAgICBnX2Fzc2Vy dCAoZ2x5cGhzICE9IE5VTEwpOwotKyAgICBnX2Fzc2VydCAobnVtX2dseXBocyA+IDApOwotKwot KyAgICBjaCA9IGdseXBoc1swXS5pbmRleCAmIH5QQU5HT19HTFlQSF9VTktOT1dOX0ZMQUc7Ci0r ICAgIGludmFsaWRfaW5wdXQgPSBHX1VOTElLRUxZIChnbHlwaHNbMF0uaW5kZXggPT0gUEFOR09f R0xZUEhfSU5WQUxJRF9JTlBVVCB8fAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y2ggPiAweDEwRkZGRik7Ci0rICAgIGlmIChHX1VOTElLRUxZIChpbnZhbGlkX2lucHV0KSkgewot KyAgICAgIGdfd2FybmluZyAoIlVuc3VwcG9ydGVkIFUrJTA2WCIsICBjaCk7Ci0rICAgICAgcmV0 dXJuOwotKyAgICB9Ci0rCi0rICAgIGNhaXJvX3NhdmUgKGNyKTsKLSsKLSsgICAgY29scyA9IChj aCA+IDB4ZmZmZiA/IDYgOiA0KSAvIHJvd3M7Ci0rICAgIGdfc25wcmludGYgKGJ1Ziwgc2l6ZW9m KGJ1ZiksIChjaCA+IDB4ZmZmZikgPyAiJTA2WCIgOiAiJTA0WCIsIGNoKTsKLSsgICAgY3kgPSAo ZG91YmxlKSBoZWlnaHQ7Ci0rICAgIHgwID0gY3ggKyBib3hfZGVzY2VudCArIFhQQUQgLyAyOwot KyAgICB5MCA9IGN5IC0gYm94X2Rlc2NlbnQgLSBZUEFEIC8gMjsKLSsKLSsgICAgZm9yIChyb3cg PSAwOyByb3cgPCByb3dzOyByb3crKykgewotKyAgICAgICAgZG91YmxlIHkgPSB5MCAtIChyb3dz IC0gMSAtIHJvdykgKiAoZGlnaXRfaGVpZ2h0ICsgWVBBRCk7Ci0rICAgICAgICBmb3IgKGNvbCA9 IDA7IGNvbCA8IGNvbHM7IGNvbCsrKSB7Ci0rICAgICAgICAgICAgZG91YmxlIHggPSB4MCArIGNv bCAqIChkaWdpdF93aWR0aCArIFhQQUQpOwotKyAgICAgICAgICAgIGNhaXJvX21vdmVfdG8gKGNy LCB4LCB5KTsKLSsgICAgICAgICAgICBoZXhib3hfc3RyaW5nWzBdID0gYnVmW3JvdyAqIGNvbHMg KyBjb2xdOwotKyAgICAgICAgICAgIGNhaXJvX3Nob3dfdGV4dCAoY3IsIGhleGJveF9zdHJpbmcp OwotKyAgICAgICAgfQotKyAgICB9Ci0rICAgIGNhaXJvX21vdmVfdG8gKGNyLCBYUEFELCBZUEFE KTsKLSsgICAgY2Fpcm9fbGluZV90byAoY3IsIHdpZHRoIC0gWFBBRCwgWVBBRCk7Ci0rICAgIGNh aXJvX2xpbmVfdG8gKGNyLCB3aWR0aCAtIFhQQUQsCi0rICAgICAgICAgICAgICAgICAgICAgICBo ZWlnaHQgLSBZUEFEKTsKLSsgICAgY2Fpcm9fbGluZV90byAoY3IsIFhQQUQsIGhlaWdodCAtIFlQ QUQpOwotKyAgICBjYWlyb19saW5lX3RvIChjciwgWFBBRCwgWVBBRCk7Ci0rICAgIGNhaXJvX3Nl dF9saW5lX3dpZHRoIChjciwgMS4pOwotKyAgICBjYWlyb19zdHJva2UgKGNyKTsKLSsKLSsgICAg Y2Fpcm9fcmVzdG9yZSAoY3IpOwotK30KLSsKLStzdGF0aWMgdm9pZAotK2lidXNfZmNmb250c2V0 X2Rlc3Ryb3lfZXggKEZjRm9udFNldEV4ICpmY2ZvbnRzZXRfZXgpCi0rewotKyAgICBGY0ZvbnRT ZXQgKmZjZm9udHNldCA9IE5VTEw7Ci0rICAgIGludCBpOwotKwotKyAgICBnX3JldHVybl9pZl9m YWlsIChmY2ZvbnRzZXRfZXggIT0gTlVMTCk7Ci0rCi0rICAgIGZvciAoaSA9IDA7IGkgPCBmY2Zv bnRzZXRfZXgtPm5mb250OyBpKyspCi0rICAgICAgICBGVF9Eb25lX0ZhY2UgKGZjZm9udHNldF9l eC0+ZnRfZmFjZXNbaV0pOwotKyAgICBmY2ZvbnRzZXQgPSBGY0ZvbnRTZXRDcmVhdGUgKCk7Ci0r ICAgIGZjZm9udHNldC0+bmZvbnQgPSBmY2ZvbnRzZXRfZXgtPm5mb250OwotKyAgICBmY2ZvbnRz ZXQtPnNmb250ID0gZmNmb250c2V0X2V4LT5zZm9udDsKLSsgICAgZmNmb250c2V0LT5mb250cyA9 IGZjZm9udHNldF9leC0+Zm9udHM7Ci0rICAgIEZjRm9udFNldERlc3Ryb3kgKGZjZm9udHNldCk7 Ci0rICAgIGdfZnJlZSAoZmNmb250c2V0X2V4LT5mdF9mYWNlcyk7Ci0rICAgIGdfZnJlZSAoZmNm b250c2V0X2V4KTsKLSt9Ci0rCi0rSUJ1c0NhaXJvTGluZSAqCi0raWJ1c19jYWlyb19saW5lX2Nv cHkgKElCdXNDYWlyb0xpbmUgKmNhaXJvX2xpbmVzKQotK3sKLSsgICAgSUJ1c0NhaXJvTGluZSAq cmV0OwotKyAgICBndWludCBuLCBpLCBqLCBudW1fZ2x5cGhzOwotKyAgICBpZiAoIWNhaXJvX2xp bmVzKQotKyAgICAgICAgcmV0dXJuIE5VTEw7Ci0rCi0rICAgIGZvciAobiA9IDA7IGNhaXJvX2xp bmVzW25dLnNjYWxlZF9mb250OyBuKyspOwotKyAgICByZXQgPSBnX25ldzAgKElCdXNDYWlyb0xp bmUsIG4gKyAxKTsKLSsgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewotKyAgICAgICAgcmV0 W2ldLnNjYWxlZF9mb250ID0gY2Fpcm9fbGluZXNbaV0uc2NhbGVkX2ZvbnQ7Ci0rICAgICAgICBu dW1fZ2x5cGhzID0gY2Fpcm9fbGluZXNbaV0ubnVtX2dseXBoczsKLSsgICAgICAgIHJldFtpXS5u dW1fZ2x5cGhzID0gbnVtX2dseXBoczsKLSsgICAgICAgIHJldFtpXS5nbHlwaHMgPSAoSUJ1c0ds eXBoICopIGNhaXJvX2dseXBoX2FsbG9jYXRlIChudW1fZ2x5cGhzICsgMSk7Ci0rICAgICAgICBm b3IgKGogPSAwOyBqIDwgbnVtX2dseXBoczsgaisrKSB7Ci0rICAgICAgICAgICAgcmV0W2ldLmds eXBoc1tqXSA9IGNhaXJvX2xpbmVzW2ldLmdseXBoc1tqXTsKLSsgICAgICAgIH0KLSsgICAgICAg IHJldFtpXS5nbHlwaHNbal0uaW5kZXggPSAtMTsKLSsgICAgICAgIHJldFtpXS5nbHlwaHNbal0u eCA9IDA7Ci0rICAgICAgICByZXRbaV0uZ2x5cGhzW2pdLnkgPSAwOwotKyAgICB9Ci0rICAgIHJl dFtpXS5zY2FsZWRfZm9udCA9IE5VTEw7Ci0rICAgIHJldFtpXS5udW1fZ2x5cGhzID0gMDsKLSsg ICAgcmV0W2ldLmdseXBocyA9IE5VTEw7Ci0rICAgIHJldHVybiByZXQ7Ci0rfQotKwotK3ZvaWQK LStpYnVzX2NhaXJvX2xpbmVfZnJlZSAoSUJ1c0NhaXJvTGluZSAqY2Fpcm9fbGluZXMpCi0rewot KyAgICBndWludCBpOwotKyAgICBpZiAoIWNhaXJvX2xpbmVzKQotKyAgICAgICAgcmV0dXJuOwot KyAgICBmb3IgKGkgPSAwOyBjYWlyb19saW5lc1tpXS5zY2FsZWRfZm9udDsgaSsrKSB7Ci0rICAg ICAgICBnX2ZyZWUgKGNhaXJvX2xpbmVzW2ldLmdseXBocyk7Ci0rICAgIH0KLSsgICAgZ19mcmVl IChjYWlyb19saW5lcyk7Ci0rfQotKwotK0lCdXNSZXF1aXNpdGlvbkV4ICoKLStpYnVzX3JlcXVp c2l0aW9uX2V4X2NvcHkgKElCdXNSZXF1aXNpdGlvbkV4ICpyZXEpCi0rewotKyAgICBJQnVzUmVx dWlzaXRpb25FeCAqcmV0OwotKyAgICBpZiAoIXJlcSkKLSsgICAgICAgIHJldHVybiBOVUxMOwot KyAgICByZXQgPSBnX25ldzAgKElCdXNSZXF1aXNpdGlvbkV4LCAxKTsKLSsgICAgcmV0LT53aWR0 aCA9IHJlcS0+d2lkdGg7Ci0rICAgIHJldC0+aGVpZ2h0ID0gcmVxLT5oZWlnaHQ7Ci0rICAgIHJl dC0+Y2Fpcm9fbGluZXMgPSBpYnVzX2NhaXJvX2xpbmVfY29weSAocmVxLT5jYWlyb19saW5lcyk7 Ci0rICAgIHJldHVybiByZXQ7Ci0rfQotKwotK3ZvaWQKLStpYnVzX3JlcXVpc2l0aW9uX2V4X2Zy ZWUgKElCdXNSZXF1aXNpdGlvbkV4ICpyZXEpCi0rewotKyAgICBpZiAoIXJlcSkKLSsgICAgICAg IHJldHVybjsKLSsgICAgZ19jbGVhcl9wb2ludGVyICgmcmVxLT5jYWlyb19saW5lcywgaWJ1c19j YWlyb19saW5lX2ZyZWUpOwotKyAgICBnX2ZyZWUgKHJlcSk7Ci0rfQotKwotK0lCdXNGb250U2V0 ICoKLStpYnVzX2ZvbnRzZXRfbmV3IChjb25zdCBnY2hhciAqZmlyc3RfcHJvcGVydHlfbmFtZSwg Li4uKQotK3sKLSsgICAgdmFfbGlzdCB2YXJfYXJnczsKLSsgICAgSUJ1c0ZvbnRTZXQgKmZvbnRz ZXQ7Ci0rCi0rICAgIGdfYXNzZXJ0IChmaXJzdF9wcm9wZXJ0eV9uYW1lKTsKLSsKLSsgICAgdmFf c3RhcnQgKHZhcl9hcmdzLCBmaXJzdF9wcm9wZXJ0eV9uYW1lKTsKLSsgICAgZm9udHNldCA9IChJ QnVzRm9udFNldCAqKWdfb2JqZWN0X25ld192YWxpc3QgKElCVVNfVFlQRV9GT05UU0VULAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RfcHJv cGVydHlfbmFtZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHZhcl9hcmdzKTsKLSsgICAgdmFfZW5kICh2YXJfYXJncyk7Ci0rICAgIGdfYXNzZXJ0 IChmb250c2V0LT5wcml2LT5mYW1pbHkpOwotKyAgICBnX2Fzc2VydCAoZm9udHNldC0+cHJpdi0+ bGFuZ3VhZ2UpOwotKyAgICByZXR1cm4gZm9udHNldDsKLSt9Ci0rCi0rSUJ1c0ZvbnRTZXQgKgot K2lidXNfZm9udHNldF9uZXdfd2l0aF9mb250IChjb25zdCBnY2hhciAqZmFtaWx5LAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgc2l6ZSwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgKmxhbmd1YWdlKQotK3sKLSsgICAgcmV0dXJuIGli dXNfZm9udHNldF9uZXcgKCJmYW1pbHkiLCBmYW1pbHksCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAic2l6ZSIsIHNpemUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGFu Z3VhZ2UiLCBsYW5ndWFnZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwot K30KLSsKLSt2b2lkCi0raWJ1c19mb250c2V0X2V4aXQgKCkKLSt7Ci0rICAgIGdfY2xlYXJfcG9p bnRlciAoJm1fZnRsaWJyYXJ5LCBGVF9Eb25lX0ZyZWVUeXBlKTsKLSt9Ci0rCi0rY29uc3QgZ2No YXIgKgotK2lidXNfZm9udHNldF9nZXRfZmFtaWx5IChJQnVzRm9udFNldCAqZm9udHNldCkKLSt7 Ci0rICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChJQlVTX0lTX0ZPTlRTRVQgKGZvbnRzZXQpLCBO VUxMKTsKLSsgICAgcmV0dXJuIGZvbnRzZXQtPnByaXYtPmZhbWlseTsKLSt9Ci0rCi0rdm9pZAot K2lidXNfZm9udHNldF9zZXRfZmFtaWx5IChJQnVzRm9udFNldCAqZm9udHNldCwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAqZmFtaWx5KQotK3sKLSsgICAgZ19yZXR1 cm5faWZfZmFpbCAoSUJVU19JU19GT05UU0VUIChmb250c2V0KSk7Ci0rICAgIGdfZnJlZSAoZm9u dHNldC0+cHJpdi0+ZmFtaWx5KTsKLSsgICAgZm9udHNldC0+cHJpdi0+ZmFtaWx5ID0gZ19zdHJk dXAgKGZhbWlseSk7Ci0rfQotKwotK2d1aW50Ci0raWJ1c19mb250c2V0X2dldF9zaXplIChJQnVz Rm9udFNldCAqZm9udHNldCkKLSt7Ci0rICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChJQlVTX0lT X0ZPTlRTRVQgKGZvbnRzZXQpLCAwKTsKLSsgICAgcmV0dXJuIGZvbnRzZXQtPnByaXYtPnNpemU7 Ci0rfQotKwotK3ZvaWQKLStpYnVzX2ZvbnRzZXRfc2V0X3NpemUgKElCdXNGb250U2V0ICpmb250 c2V0LAotKyAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgc2l6ZSkKLSt7Ci0r ICAgIGdfcmV0dXJuX2lmX2ZhaWwgKElCVVNfSVNfRk9OVFNFVCAoZm9udHNldCkpOwotKyAgICBm b250c2V0LT5wcml2LT5zaXplID0gc2l6ZTsKLSt9Ci0rCi0rY29uc3QgZ2NoYXIgKgotK2lidXNf Zm9udHNldF9nZXRfbGFuZ3VhZ2UgKElCdXNGb250U2V0ICpmb250c2V0KQotK3sKLSsgICAgZ19y ZXR1cm5fdmFsX2lmX2ZhaWwgKElCVVNfSVNfRk9OVFNFVCAoZm9udHNldCksIE5VTEwpOwotKyAg ICByZXR1cm4gZm9udHNldC0+cHJpdi0+bGFuZ3VhZ2U7Ci0rfQotKwotK3ZvaWQKLStpYnVzX2Zv bnRzZXRfc2V0X2xhbmd1YWdlIChJQnVzRm9udFNldCAqZm9udHNldCwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBnY2hhciAqbGFuZ3VhZ2UpCi0rewotKyAgICBnX3JldHVybl9p Zl9mYWlsIChJQlVTX0lTX0ZPTlRTRVQgKGZvbnRzZXQpKTsKLSsgICAgZ19mcmVlIChmb250c2V0 LT5wcml2LT5sYW5ndWFnZSk7Ci0rICAgIGZvbnRzZXQtPnByaXYtPmxhbmd1YWdlID0gZ19zdHJk dXAgKGxhbmd1YWdlKTsKLSt9Ci0rCi0rZ2Jvb2xlYW4KLStpYnVzX2ZvbnRzZXRfdXBkYXRlX2Zj Zm9udHNldCAoSUJ1c0ZvbnRTZXQgKmZvbnRzZXQpCi0rewotKyAgICBGY1BhdHRlcm4gKnBhdHRl cm47Ci0rICAgIGNvbnN0IGdjaGFyICpmYW1pbHk7Ci0rICAgIGd1aW50IHNpemU7Ci0rICAgIGNv bnN0IGdjaGFyICpsYW5ndWFnZTsKLSsgICAgZ2Jvb2xlYW4gdXBkYXRlX2ZvbnRzZXQgPSBGQUxT RTsKLSsgICAgRmNGb250U2V0ICpmY2ZvbnRzZXQgPSBOVUxMOwotKyAgICBGY1Jlc3VsdCByZXN1 bHQ7Ci0rCi0rICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChJQlVTX0lTX0ZPTlRTRVQgKGZvbnRz ZXQpLCBGQUxTRSk7Ci0rCi0rICAgIHBhdHRlcm4gPSBGY1BhdHRlcm5DcmVhdGUgKCk7Ci0rICAg IGZhbWlseSA9IGZvbnRzZXQtPnByaXYtPmZhbWlseTsKLSsgICAgc2l6ZSA9IGZvbnRzZXQtPnBy aXYtPnNpemU7Ci0rICAgIGxhbmd1YWdlID0gZm9udHNldC0+cHJpdi0+bGFuZ3VhZ2U7Ci0rCi0r ICAgIGlmIChnX3N0cmNtcDAgKG1fZmFtaWx5LCBmYW1pbHkpKSB7Ci0rICAgICAgICBnX2ZyZWUg KG1fZmFtaWx5KTsKLSsgICAgICAgIG1fZmFtaWx5ID0gZ19zdHJkdXAgKGZhbWlseSk7Ci0rICAg ICAgICB1cGRhdGVfZm9udHNldCA9IFRSVUU7Ci0rICAgIH0KLSsgICAgaWYgKG1fc2l6ZSAhPSBz aXplKSB7Ci0rICAgICAgICBtX3NpemUgPSBzaXplOwotKyAgICAgICAgdXBkYXRlX2ZvbnRzZXQg PSBUUlVFOwotKyAgICB9Ci0rICAgIGlmIChnX3N0cmNtcDAgKG1fbGFuZ3VhZ2UsIGxhbmd1YWdl KSkgewotKyAgICAgICAgZ19mcmVlIChtX2xhbmd1YWdlKTsKLSsgICAgICAgIG1fbGFuZ3VhZ2Ug PSBnX3N0cmR1cCAobGFuZ3VhZ2UpOwotKyAgICAgICAgdXBkYXRlX2ZvbnRzZXQgPSBUUlVFOwot KyAgICB9Ci0rICAgIGlmICghdXBkYXRlX2ZvbnRzZXQgJiYgbV9mY2ZvbnRzZXQgIT0gTlVMTCkK LSsgICAgICAgIHJldHVybiBGQUxTRTsKLSsKLSsgICAgaWYgKG1fZm9udF9pbmRleF9wZXJfY2hh cl90YWJsZSkKLSsgICAgICAgIGdfaGFzaF90YWJsZV9kZXN0cm95IChtX2ZvbnRfaW5kZXhfcGVy X2NoYXJfdGFibGUpOwotKyAgICBpZiAobV9mY2ZvbnRzZXQpCi0rICAgICAgICBnX2NsZWFyX3Bv aW50ZXIgKCZtX2ZjZm9udHNldCwgaWJ1c19mY2ZvbnRzZXRfZGVzdHJveV9leCk7Ci0rCi0rICAg IG1fZm9udF9pbmRleF9wZXJfY2hhcl90YWJsZSA9IGdfaGFzaF90YWJsZV9uZXcgKGdfZGlyZWN0 X2hhc2gsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGdfZGlyZWN0X2VxdWFsKTsKLSsgICAgaWYgKGdfc3RyY21wMCAoZmFtaWx5LCAiIikpCi0r ICAgICAgICBGY1BhdHRlcm5BZGRTdHJpbmcgKHBhdHRlcm4sIEZDX0ZBTUlMWSwgKGNvbnN0IEZj Q2hhcjgqKSBmYW1pbHkpOwotKyAgICBpZiAoc2l6ZSA+IDApCi0rICAgICAgICBGY1BhdHRlcm5B ZGREb3VibGUgKHBhdHRlcm4sIEZDX1NJWkUsIChkb3VibGUpIHNpemUpOwotKyAgICBpZiAoZ19z dHJjbXAwIChsYW5ndWFnZSwgIiIpKQotKyAgICAgICAgRmNQYXR0ZXJuQWRkU3RyaW5nIChwYXR0 ZXJuLCBGQ19MQU5HLCAoY29uc3QgRmNDaGFyOCopIGxhbmd1YWdlKTsKLSsgICAgRmNQYXR0ZXJu QWRkSW50ZWdlciAocGF0dGVybiwgRkNfV0VJR0hULCBGQ19XRUlHSFRfTk9STUFMKTsKLSsgICAg RmNQYXR0ZXJuQWRkSW50ZWdlciAocGF0dGVybiwgRkNfV0lEVEgsIEZDX1dJRFRIX05PUk1BTCk7 Ci0rICAgIEZjUGF0dGVybkFkZEludGVnZXIgKHBhdHRlcm4sIEZDX0RQSSwgOTYpOwotKyNpZiBG Q19WRVJTSU9OID49ICAyMTIwNQotKyAgICBpZiAobV9jb2xvcl9zdXBwb3J0ZWQgJiYKLSsgICAg ICAgICghZ19hc2NpaV9zdHJuY2FzZWNtcCAoZmFtaWx5LCBNT05PU1BBQ0UsIHN0cmxlbiAoTU9O T1NQQUNFKSkgfHwKLSsgICAgICAgICAhZ19hc2NpaV9zdHJuY2FzZWNtcCAoZmFtaWx5LCBTRVJJ Riwgc3RybGVuIChTRVJJRikpIHx8Ci0rICAgICAgICAgIWdfYXNjaWlfc3RybmNhc2VjbXAgKGZh bWlseSwgU0FOUywgc3RybGVuIChTQU5TKSkpKSB7Ci0rICAgICAgICBGY1BhdHRlcm5BZGRCb29s IChwYXR0ZXJuLCBGQ19DT0xPUiwgVFJVRSk7Ci0rICAgIH0KLSsjZW5kaWYKLSsgICAgRmNDb25m aWdTdWJzdGl0dXRlIChOVUxMLCBwYXR0ZXJuLCBGY01hdGNoUGF0dGVybik7Ci0rICAgIEZjQ29u ZmlnU3Vic3RpdHV0ZSAoTlVMTCwgcGF0dGVybiwgRmNNYXRjaEZvbnQpOwotKyAgICBGY0RlZmF1 bHRTdWJzdGl0dXRlIChwYXR0ZXJuKTsKLSsgICAgZmNmb250c2V0ID0gRmNGb250U29ydCAoTlVM TCwgcGF0dGVybiwgRmNUcnVlLCBOVUxMLCAmcmVzdWx0KTsKLSsgICAgRmNQYXR0ZXJuRGVzdHJv eSAocGF0dGVybik7Ci0rICAgIGlmIChyZXN1bHQgPT0gRmNSZXN1bHROb01hdGNoIHx8IGZjZm9u dHNldC0+bmZvbnQgPT0gMCkgewotKyAgICAgICAgZ193YXJuaW5nICgiTm8gRmNGb250U2V0IGZv ciAlcyIsIGZhbWlseSA/IGZhbWlseSA6ICIobnVsbCkiKTsKLSsgICAgICAgIHJldHVybiBGQUxT RTsKLSsgICAgfQotKyAgICBtX2ZjZm9udHNldCA9IGdfbmV3MCAoRmNGb250U2V0RXgsIDEpOwot KyAgICBtX2ZjZm9udHNldC0+bmZvbnQgPSBmY2ZvbnRzZXQtPm5mb250OwotKyAgICBtX2ZjZm9u dHNldC0+c2ZvbnQgPSBmY2ZvbnRzZXQtPnNmb250OwotKyAgICBtX2ZjZm9udHNldC0+Zm9udHMg PSBmY2ZvbnRzZXQtPmZvbnRzOwotKyAgICBtX2ZjZm9udHNldC0+ZnRfZmFjZXMgPSBnX25ldzAg KEZUX0ZhY2UsIGZjZm9udHNldC0+bmZvbnQpOwotKyAgICBmY2ZvbnRzZXQtPm5mb250ID0gMDsK LSsgICAgZmNmb250c2V0LT5zZm9udCA9IDA7Ci0rICAgIGZjZm9udHNldC0+Zm9udHMgPSBOVUxM OwotKyAgICBGY0ZvbnRTZXREZXN0cm95IChmY2ZvbnRzZXQpOwotKyAgICByZXR1cm4gVFJVRTsK LSt9Ci0rCi0rdm9pZAotK2lidXNfZm9udHNldF91bnJlZiAoSUJ1c0ZvbnRTZXQgKmZvbnRzZXQp Ci0rewotKyAgICBnX29iamVjdF91bnJlZiAoZm9udHNldCk7Ci0rfQotKwotK0lCdXNSZXF1aXNp dGlvbkV4ICoKLStpYnVzX2ZvbnRzZXRfZ2V0X3ByZWZlcnJlZF9zaXplX2hiIChJQnVzRm9udFNl dCAgICAgICAgICAqZm9udHNldCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBnY2hhciAgICAgICAgICAgKnRleHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY2Fpcm9fcmVjdGFuZ2xlX2ludF90ICp3aWRlc3QpCi0rewotKyAgICBnY2hh ciAqY29waWVkX3RleHQ7Ci0rICAgIGdjaGFyICpwOwotKyAgICBGb250UGVyQ2hhciAqYnVmZjsK LSsgICAgSUJ1c0NhaXJvTGluZSAqY2Fpcm9fbGluZXMgPSBOVUxMOwotKyAgICBJQnVzUmVxdWlz aXRpb25FeCAqcmVxID0gTlVMTDsKLSsgICAgR1N0cmluZyAqc3RyID0gTlVMTDsKLSsgICAgaW50 IHRleHRfbGVuZ3RoOwotKyAgICBpbnQgaSwgbiA9IDA7Ci0rCi0rICAgIGdfcmV0dXJuX3ZhbF9p Zl9mYWlsIChJQlVTX0lTX0ZPTlRTRVQgKGZvbnRzZXQpLCBOVUxMKTsKLSsgICAgZ19yZXR1cm5f dmFsX2lmX2ZhaWwgKG1fZmNmb250c2V0ICE9IE5VTEwsIE5VTEwpOwotKwotKyAgICBjb3BpZWRf dGV4dCA9IGdfc3RyZHVwICh0ZXh0KTsKLSsgICAgdGV4dF9sZW5ndGggPSAgZ191dGY4X3N0cmxl biAodGV4dCwgLTEpOwotKyAgICBidWZmID0gZ19zbGljZV9hbGxvYzAgKHNpemVvZiAoRm9udFBl ckNoYXIpICogdGV4dF9sZW5ndGgpOwotKyAgICBzdHIgPSBnX3N0cmluZ19uZXcgKE5VTEwpOwot KwotKyAgICBmb3IgKHAgPSBjb3BpZWRfdGV4dDsgKnAgIT0gJ1wwJzsgcCA9IGdfdXRmOF9uZXh0 X2NoYXIgKHApKSB7Ci0rICAgICAgICBndW5pY2hhciBjID0gZ191dGY4X2dldF9jaGFyIChwKTsK LSsgICAgICAgIGdib29sZWFuIGhhc19nbHlwaHMgPSBGQUxTRTsKLSsgICAgICAgIGJ1ZmZbbl0u Y2ggPSBjOwotKyAgICAgICAgaWYgKChjID09IDB4ZmUwZXUgfHwgYyA9PSAweGZlMGZ1KSAmJiBu ID4gMCkgewotKyAgICAgICAgICAgIGJ1ZmZbbl0uZmNmb250ID0gYnVmZltuLTFdLmZjZm9udDsK LSsgICAgICAgICAgICArK247Ci0rICAgICAgICAgICAgY29udGludWU7Ci0rICAgICAgICB9Ci0r ICAgICAgICBpID0gR1BPSU5URVJfVE9fSU5UIChnX2hhc2hfdGFibGVfbG9va3VwIChtX2ZvbnRf aW5kZXhfcGVyX2NoYXJfdGFibGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBHSU5UX1RPX1BPSU5URVIgKGMpKSk7Ci0rICAgICAgICBpZiAoaSA+ IDApIHsKLSsgICAgICAgICAgICBpLS07Ci0rICAgICAgICAgICAgaWYgKGkgPj0gbV9mY2ZvbnRz ZXQtPm5mb250KSB7Ci0rICAgICAgICAgICAgICAgIGdfd2FybmluZyAoImk6JWQgPj0gbV9mY2Zv bnRzZXQtPm5mb250OiVkIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBpLCBtX2ZjZm9u dHNldC0+bmZvbnQpOwotKyAgICAgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgICAgIGJ1 ZmZbbl0uZmNmb250ID0gbV9mY2ZvbnRzZXQtPmZvbnRzW2ldOwotKyAgICAgICAgICAgICAgICBo YXNfZ2x5cGhzID0gVFJVRTsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICB9Ci0rICAgICAgICBm b3IgKDsgaSA8IG1fZmNmb250c2V0LT5uZm9udDsgaSsrKSB7Ci0rICAgICAgICAgICAgaWYgKCFo YXNfZ2x5cGhzICYmIGdfdW5pY2hhcl9pc2NudHJsIChjKSAmJiAhZ191bmljaGFyX2lzc3BhY2Ug KGMpKQotKyAgICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgICBGVF9GYWNlIGZ0X2Zh Y2UgPSBtX2ZjZm9udHNldC0+ZnRfZmFjZXNbaV07Ci0rICAgICAgICAgICAgaWYgKCFoYXNfZ2x5 cGhzICYmIGZ0X2ZhY2UgPT0gMCkgewotKyAgICAgICAgICAgICAgIGZ0X2ZhY2UgPSBpYnVzX2Zv bnRzZXRfZ2V0X2Z0ZmFjZV9mcm9tX2ZjZm9udCAoCi0rICAgICAgICAgICAgICAgICAgICAgICBm b250c2V0LAotKyAgICAgICAgICAgICAgICAgICAgICAgbV9mY2ZvbnRzZXQtPmZvbnRzW2ldKTsK LSsgICAgICAgICAgICAgICBtX2ZjZm9udHNldC0+ZnRfZmFjZXNbaV0gPSBmdF9mYWNlOwotKyAg ICAgICAgICAgIH0KLSsgICAgICAgICAgICBpZiAoaGFzX2dseXBocyB8fCBGVF9HZXRfQ2hhcl9J bmRleCAoZnRfZmFjZSwgYykgIT0gMCkgewotKyAgICAgICAgICAgICAgICBGY0NoYXI4ICpmb250 X2ZpbGUgPSBOVUxMOwotKyAgICAgICAgICAgICAgICBGY1BhdHRlcm5HZXRTdHJpbmcgKG1fZmNm b250c2V0LT5mb250c1tpXSwgRkNfRklMRSwgMCwgJmZvbnRfZmlsZSk7Ci0rICAgICAgICAgICAg ICAgIGJ1ZmZbbl0uZmNmb250ID0gbV9mY2ZvbnRzZXQtPmZvbnRzW2ldOwotKyAgICAgICAgICAg ICAgICBpZiAoIWhhc19nbHlwaHMpIHsKLSsgICAgICAgICAgICAgICAgICAgIGdfaGFzaF90YWJs ZV9pbnNlcnQgKG1fZm9udF9pbmRleF9wZXJfY2hhcl90YWJsZSwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEdJTlRfVE9fUE9JTlRFUiAoYyksCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHSU5UX1RPX1BPSU5URVIgKGkgKyAxKSk7 Ci0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgaWYgKG4gPiAwICYmIGJ1ZmZb biAtIDFdLmZjZm9udCAhPSBidWZmW25dLmZjZm9udCkgewotKyAgICAgICAgICAgICAgICAgICAg Z2V0X3N0cmluZ19leHRlbnRzX3dpdGhfZm9udCAoc3RyLT5zdHIsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYnVmZltuIC0gMV0sCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWRlc3QsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2Fpcm9fbGlu ZXMpOwotKyAgICAgICAgICAgICAgICAgICAgZ19zdHJpbmdfZnJlZSAoc3RyLCBUUlVFKTsKLSsg ICAgICAgICAgICAgICAgICAgIHN0ciA9IGdfc3RyaW5nX25ldyAoTlVMTCk7Ci0rICAgICAgICAg ICAgICAgICAgICBnX3N0cmluZ19hcHBlbmRfdW5pY2hhciAoc3RyLCBjKTsKLSsgICAgICAgICAg ICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZF91bmlj aGFyIChzdHIsIGMpOwotKyAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgICsrbjsK LSsgICAgICAgICAgICAgICAgaGFzX2dseXBocyA9IFRSVUU7Ci0rICAgICAgICAgICAgICAgIGJy ZWFrOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgIH0KLSsgICAgICAgIGlmICghaGFzX2dseXBo cykgewotKyAgICAgICAgICAgIGlmIChuID4gMCkgewotKyAgICAgICAgICAgICAgICBidWZmW25d LmZjZm9udCA9IGJ1ZmZbbiAtIDFdLmZjZm9udDsKLSsgICAgICAgICAgICB9IGVsc2UgewotKyAg ICAgICAgICAgICAgICAvKiBTZWFyY2ggYSBmb250IGZvciBub24tZ2x5cGggY2hhciB0byBkcmF3 IHRoZSBjb2RlIHBvaW50cwotKyAgICAgICAgICAgICAgICAgKiBsaWtlcyBQYW5nby4KLSsgICAg ICAgICAgICAgICAgICovCi0rICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBtX2ZjZm9u dHNldC0+bmZvbnQ7IGkrKykgewotKyAgICAgICAgICAgICAgICAgICAgRlRfRmFjZSBmdF9mYWNl ID0gbV9mY2ZvbnRzZXQtPmZ0X2ZhY2VzW2ldOwotKyAgICAgICAgICAgICAgICAgICAgaWYgKGZ0 X2ZhY2UgPT0gMCkgewotKyAgICAgICAgICAgICAgICAgICAgICAgIGZ0X2ZhY2UgPSBpYnVzX2Zv bnRzZXRfZ2V0X2Z0ZmFjZV9mcm9tX2ZjZm9udCAoCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmb250c2V0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9mY2Zv bnRzZXQtPmZvbnRzW2ldKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBtX2ZjZm9udHNldC0+ ZnRfZmFjZXNbaV0gPSBmdF9mYWNlOwotKyAgICAgICAgICAgICAgICAgICAgfQotKyAgICAgICAg ICAgICAgICAgICAgLyogQ2hlY2sgYWxwaGFiZXRzIGluc3RlYWQgb2Ygc3BhY2Ugb3IgZGlnaXRz Ci0rICAgICAgICAgICAgICAgICAgICAgKiBiZWNhdXNlICdOb3RvIEVtb2ppIENvbG9yJyBmb250 J3MgZGlnaXRzIGFyZQotKyAgICAgICAgICAgICAgICAgICAgICogd2hpdGUgY29sb3IgYW5kIGNh bm5vdCBjaGFuZ2UgdGhlIGZvbnQgY29sb3IuCi0rICAgICAgICAgICAgICAgICAgICAgKiB0aGUg Zm9udCBkb2VzIG5vdCBoYXZlIGFscGhhYmV0cy4KLSsgICAgICAgICAgICAgICAgICAgICAqLwot KyAgICAgICAgICAgICAgICAgICAgaWYgKEZUX0dldF9DaGFyX0luZGV4IChmdF9mYWNlLCAnQScp ICE9IDApIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICBGY0NoYXI4ICpmb250X2ZpbGUgPSBO VUxMOwotKyAgICAgICAgICAgICAgICAgICAgICAgIEZjUGF0dGVybkdldFN0cmluZyAobV9mY2Zv bnRzZXQtPmZvbnRzW2ldLCBGQ19GSUxFLCAwLCAmZm9udF9maWxlKTsKLSsgICAgICAgICAgICAg ICAgICAgICAgICBidWZmW25dLmZjZm9udCA9IG1fZmNmb250c2V0LT5mb250c1tpXTsKLSsgICAg ICAgICAgICAgICAgICAgICAgICBnX2hhc2hfdGFibGVfaW5zZXJ0IChtX2ZvbnRfaW5kZXhfcGVy X2NoYXJfdGFibGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgR0lOVF9UT19QT0lOVEVSIChjKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBHSU5UX1RPX1BPSU5URVIgKGkgKyAxKSk7Ci0rICAgICAgICAgICAgICAg ICAgICAgICAgaGFzX2dseXBocyA9IFRSVUU7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgYnJl YWs7Ci0rICAgICAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAg ICAgICAgICAgaWYgKCFoYXNfZ2x5cGhzKSB7Ci0rICAgICAgICAgICAgICAgICAgICBidWZmW25d LmZjZm9udCA9IG1fZmNmb250c2V0LT5mb250c1swXTsKLSsgICAgICAgICAgICAgICAgICAgIGdf aGFzaF90YWJsZV9pbnNlcnQgKG1fZm9udF9pbmRleF9wZXJfY2hhcl90YWJsZSwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdJTlRfVE9fUE9JTlRFUiAoYyksCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHSU5UX1RPX1BPSU5URVIg KDEpKTsKLSsgICAgICAgICAgICAgICAgICAgIGdfd2FybmluZyAoIk5vdCBmb3VuZCBmb250cyBm b3IgdW5pY29kZSAlMDRYIGF0ICVkIGluICVzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYywgbiwgdGV4dCk7Ci0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICB9Ci0r ICAgICAgICAgICAgbisrOwotKyAgICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZF91bmljaGFyIChz dHIsIGMpOwotKyAgICAgICAgfQotKyAgICB9Ci0rICAgIGlmIChzdHItPnN0cikgewotKyAgICAg ICAgZ2V0X3N0cmluZ19leHRlbnRzX3dpdGhfZm9udCAoc3RyLT5zdHIsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmYnVmZltuIC0gMV0sCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB3aWRlc3QsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmY2Fpcm9fbGluZXMpOwotKyAgICAgICAgZ19zdHJpbmdfZnJlZSAoc3Ry LCBUUlVFKTsKLSsgICAgfQotKyAgICBnX3NsaWNlX2ZyZWUxIChzaXplb2YgKEZvbnRQZXJDaGFy KSAqIHRleHRfbGVuZ3RoLCBidWZmKTsKLSsgICAgZ19mcmVlIChjb3BpZWRfdGV4dCk7Ci0rICAg IHdpZGVzdC0+d2lkdGggKz0gWFBBRCAqIDI7Ci0rICAgIHdpZGVzdC0+aGVpZ2h0ICs9IFlQQUQg KiAyOwotKyAgICByZXEgPSBnX25ldzAgKElCdXNSZXF1aXNpdGlvbkV4LCAxKTsKLSsgICAgcmVx LT53aWR0aCA9IHdpZGVzdC0+d2lkdGg7Ci0rICAgIHJlcS0+aGVpZ2h0ID0gd2lkZXN0LT5oZWln aHQ7Ci0rICAgIHJlcS0+Y2Fpcm9fbGluZXMgPSBjYWlyb19saW5lczsKLSsgICAgcmV0dXJuIHJl cTsKLSt9Ci0rCi0rdm9pZAotK2lidXNfZm9udHNldF9kcmF3X2NhaXJvX3dpdGhfcmVxdWlzaXRp b25fZXggKElCdXNGb250U2V0ICAgICAgICpmb250c2V0LAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNhaXJvX3QgICAgICAgICAgICpjciwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVzUmVxdWlzaXRpb25FeCAq ZXgpCi0rewotKyAgICBJQnVzQ2Fpcm9MaW5lICpjYWlyb19saW5lczsKLSsgICAgaW50IGk7Ci0r Ci0rICAgIGdfcmV0dXJuX2lmX2ZhaWwgKElCVVNfSVNfRk9OVFNFVCAoZm9udHNldCkpOwotKyAg ICBnX3JldHVybl9pZl9mYWlsIChjciAhPSBOVUxMKTsKLSsgICAgZ19yZXR1cm5faWZfZmFpbCAo ZXggIT0gTlVMTCk7Ci0rCi0rICAgIGNhaXJvX2xpbmVzID0gZXgtPmNhaXJvX2xpbmVzOwotKyAg ICBnX3JldHVybl9pZl9mYWlsIChjYWlyb19saW5lcyAhPSBOVUxMKTsKLSsKLSsgICAgZm9yIChp ID0gMDsgY2Fpcm9fbGluZXNbaV0uc2NhbGVkX2ZvbnQ7IGkrKykgewotKyAgICAgICAgY29uc3Qg Y2Fpcm9fZ2x5cGhfdCAqZ2x5cGhzID0gKGNhaXJvX2dseXBoX3QgKikgY2Fpcm9fbGluZXNbaV0u Z2x5cGhzOwotKyAgICAgICAgZ3VpbnQgbnVtX2dseXBocyA9IGNhaXJvX2xpbmVzW2ldLm51bV9n bHlwaHM7Ci0rCi0rICAgICAgICBjYWlyb19mdF9zY2FsZWRfZm9udF9sb2NrX2ZhY2UgKGNhaXJv X2xpbmVzW2ldLnNjYWxlZF9mb250KTsKLSsgICAgICAgIGNhaXJvX3NldF9zY2FsZWRfZm9udCAo Y3IsIGNhaXJvX2xpbmVzW2ldLnNjYWxlZF9mb250KTsKLSsgICAgICAgIGlmIChudW1fZ2x5cGhz ID4gMCAmJiBnbHlwaHNbMF0uaW5kZXggJiBQQU5HT19HTFlQSF9VTktOT1dOX0ZMQUcpIHsKLSsg ICAgICAgICAgICBfY2Fpcm9fc2hvd191bmtub3duX2dseXBocyAoY3IsIGdseXBocywgbnVtX2ds eXBocywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXgtPndpZHRo LCBleC0+aGVpZ2h0KTsKLSsgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgY2Fpcm9fc2hv d19nbHlwaHMgKGNyLCBnbHlwaHMsIG51bV9nbHlwaHMpOwotKyAgICAgICAgfQotKyAgICAgICAg Y2Fpcm9fZnRfc2NhbGVkX2ZvbnRfdW5sb2NrX2ZhY2UgKGNhaXJvX2xpbmVzW2ldLnNjYWxlZF9m b250KTsKLSsgICAgfQotK30KLWRpZmYgLS1naXQgYS91aS9ndGszL2lidXNmb250c2V0LmggYi91 aS9ndGszL2lidXNmb250c2V0LmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAw MC4uZWZjYWEyODYKLS0tLSAvZGV2L251bGwKLSsrKyBiL3VpL2d0azMvaWJ1c2ZvbnRzZXQuaAot QEAgLTAsMCArMSwzMDIgQEAKLSsvKiAtKi0gbW9kZTogQzsgYy1iYXNpYy1vZmZzZXQ6IDQ7IGlu ZGVudC10YWJzLW1vZGU6IG5pbDsgLSotICovCi0rLyogdmltOnNldCBldCBzdHM9NDogKi8KLSsv KiBpYnVzIC0gVGhlIElucHV0IEJ1cwotKyAqIENvcHlyaWdodCAoQykgMjAxNyBUYWthbyBGdWpp d2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLSsgKiBDb3B5cmlnaHQgKEMpIDIwMTcg UmVkIEhhdCwgSW5jLgotKyAqCi0rICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgKiBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSsgKiB2ZXJzaW9u IDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KLSsgKgotKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgKiBMZXNzZXIg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAqCi0rICogWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp YwotKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8g dGhlIEZyZWUgU29mdHdhcmUKLSsgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl ZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxCi0rICogVVNBCi0rICovCi0r Ci0rI2lmbmRlZiBfX0lCVVNfSEFSRkJVWlpfSF8KLSsjZGVmaW5lIF9fSUJVU19IQVJGQlVaWl9I XwotKwotKy8qKgotKyAqIFNFQ1RJT046IGlidXNmb250c2V0Ci0rICogQHNob3J0X2Rlc2NyaXB0 aW9uOiBPYmplY3QgZm9yIEhhcmZCdXp6IGFuZCBGb250Y29uZmlnLgotKyAqIEB0aXRsZTogSUJ1 c0ZvbnRTZXQKLSsgKiBAc3RhYmlsaXR5OiBVbnN0YWJsZQotKyAqCi0rICogSUJ1c0ZvbnRTZXQg b2ZmZXJzIEZjRm9udFNldCwgZ2x5cGggaW5mbyB3aXRoIEhhcmZCdXp6IGFuZCByZW5kZXJpbmcK LSsgKiBvbiBDYWlybyBjb250ZXh0LgotKyAqIEN1cnJlbnQgUGFuZ28gY2hhbmdlcyBmb250cyBi eSBlbW9qaSB2YXJpYW50cyBhbmQgZHJhd3MgdGhlIHNlcGFyYXRlZAotKyAqIGdseXBocyBbMV0g YnV0IGFjdHVhbGx5IHRoZSBlbW9qaSBjaGFyYWN0ZXJzIHdpdGggdmFyaWFudHMgY2FuIGJlIGRy YXduCi0rICogYXMgb25lIGdseXBoIHNvIHRoaXMgY2xhc3MgIG1hbmFnZXMgRm9udGNvbmZpZyBm b250c2V0cyB0byBzZWxlY3QgYSBmb250LAotKyAqIEhhcmZCdXp6IHRvIGdldCBnbHlwaHMgZm9y IGVtb2ppIHZhcmlhbnRzLCBDYWlybyB0byBkcmF3IGdseXBocy4KLSsgKgotKyAqIFsxXTogaHR0 cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc4MDY2OQotKyAqICAgICAg aHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc4MTEyMwotKyAqLwot KwotKyNpbmNsdWRlIDxpYnVzLmg+Ci0rI2luY2x1ZGUgPGNhaXJvLmg+Ci0rCi0rI2RlZmluZSBJ QlVTX1RZUEVfQ0FJUk9fTElORSAoaWJ1c19jYWlyb19saW5lX2dldF90eXBlICgpKQotKyNkZWZp bmUgSUJVU19UWVBFX1JFUVVJU0lUSU9OX0VYIChpYnVzX3JlcXVpc2l0aW9uX2V4X2dldF90eXBl ICgpKQotKyNkZWZpbmUgSUJVU19UWVBFX0ZPTlRTRVQgKGlidXNfZm9udHNldF9nZXRfdHlwZSAo KSkKLSsjZGVmaW5lIElCVVNfRk9OVFNFVChvYmopIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FT VCAoXAotKyAgICAgICAgKG9iaiksIFwKLSsgICAgICAgIElCVVNfVFlQRV9GT05UU0VULCBcCi0r ICAgICAgICBJQnVzRm9udFNldCkpCi0rI2RlZmluZSBJQlVTX0ZPTlRTRVRfQ0xBU1Moa2xhc3Mp IChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCAoXAotKyAgICAgICAgKGtsYXNzKSwgXAotKyAgICAg ICAgSUJVU19UWVBFX0ZPTlRTRVQsIFwKLSsgICAgICAgIElCdXNGb250U2V0Q2xhc3MpKQotKyNk ZWZpbmUgSUJVU19JU19GT05UU0VUKG9iaikgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFIChc Ci0rICAgICAgICAob2JqKSwgXAotKyAgICAgICAgSUJVU19UWVBFX0ZPTlRTRVQpKQotKyNkZWZp bmUgSUJVU19JU19GT05UU0VUX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUg KFwKLSsgICAgICAgIChrbGFzcyksIFwKLSsgICAgICAgIElCVVNfVFlQRV9GT05UU0VUKSkKLSsj ZGVmaW5lIElCVVNfRk9OVFNFVF9HRVRfQ0xBU1Mob2JqKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9D TEFTUyAoXAotKyAgICAgICAgKG9iaiksIFwKLSsgICAgICAgIElCVVNfVFlQRV9GT05UU0VULCBc Ci0rICAgICAgICBJQnVzRm9udFNldENsYXNzKSkKLSsKLStHX0JFR0lOX0RFQ0xTCi0rCi0rdHlw ZWRlZiBzdHJ1Y3QgX0lCdXNHbHlwaCBJQnVzR2x5cGg7Ci0rdHlwZWRlZiBzdHJ1Y3QgX0lCdXND YWlyb0xpbmUgSUJ1c0NhaXJvTGluZTsKLSt0eXBlZGVmIHN0cnVjdCBfSUJ1c1JlcXVpc2l0aW9u RXggSUJ1c1JlcXVpc2l0aW9uRXg7Ci0rdHlwZWRlZiBzdHJ1Y3QgX0lCdXNGb250U2V0IElCdXNG b250U2V0OwotK3R5cGVkZWYgc3RydWN0IF9JQnVzRm9udFNldFByaXZhdGUgSUJ1c0ZvbnRTZXRQ cml2YXRlOwotK3R5cGVkZWYgc3RydWN0IF9JQnVzRm9udFNldENsYXNzIElCdXNGb250U2V0Q2xh c3M7Ci0rCi0rc3RydWN0IF9JQnVzR2x5cGggewotKyAgICB1bnNpZ25lZCBsb25nIGluZGV4Owot KyAgICBkb3VibGUgICAgICAgICAgICAgICB4OwotKyAgICBkb3VibGUgICAgICAgICAgICAgICB5 OwotK307Ci0rCi0rc3RydWN0IF9JQnVzQ2Fpcm9MaW5lIHsKLSsgICAgSUJ1c0dseXBoICAgICAg ICAgICAqZ2x5cGhzOwotKyAgICBndWludCAgICAgICAgICAgICAgICBudW1fZ2x5cGhzOwotKyAg ICBjYWlyb19zY2FsZWRfZm9udF90ICpzY2FsZWRfZm9udDsKLSsgICAgZ3BvaW50ZXIgICAgICAg ICAgICAgcGR1bW15WzVdOwotK307Ci0rCi0rc3RydWN0IF9JQnVzUmVxdWlzaXRpb25FeCB7Ci0r ICAgIGd1aW50ICAgICAgICAgICAgICAgIHdpZHRoOwotKyAgICBndWludCAgICAgICAgICAgICAg ICBoZWlnaHQ7Ci0rICAgIElCdXNDYWlyb0xpbmUgICAgICAgKmNhaXJvX2xpbmVzOwotKyAgICBn cG9pbnRlciAgICAgICAgICAgICBwZHVtbXlbNV07Ci0rfTsKLSsKLStzdHJ1Y3QgX0lCdXNGb250 U2V0IHsKLSsgICAgSUJ1c09iamVjdCAgICAgICAgICAgcGFyZW50X2luc3RhbmNlOwotKyAgICBJ QnVzRm9udFNldFByaXZhdGUgICpwcml2OwotK307Ci0rCi0rc3RydWN0IF9JQnVzRm9udFNldENs YXNzIHsKLSsgICAgSUJ1c09iamVjdENsYXNzIHBhcmVudF9jbGFzczsKLSsgICAgLyogc2lnbmFs cyAqLwotKyAgICAvKjwgcHJpdmF0ZSA+Ki8KLSsgICAgLyogcGFkZGluZyAqLwotKyAgICBncG9p bnRlciAgICAgICAgcGR1bW15WzEwXTsKLSt9OwotKwotK0dUeXBlICAgICAgICAgICBpYnVzX2Nh aXJvX2xpbmVfZ2V0X3R5cGUgICAgICAgICh2b2lkKSBHX0dOVUNfQ09OU1Q7Ci0rCi0rLyoqCi0r ICogaWJ1c19jYWlyb19saW5lX2NvcHk6Ci0rICogQGNhaXJvX2xpbmVzOiAjSUJ1c0NhaXJvTGlu ZQotKyAqCi0rICogQ3JlYXRlcyBhIGNvcHkgb2YgQGNhaXJvX2xpZW5zLCB3aGljaCBzaG91bGQg YmUgZnJlZWQgd2l0aAotKyAqIGlidXNfY2Fpcm9fbGluZV9mcmVlKCkuIFByaW1hcmlseSB1c2Vk IGJ5IGxhbmd1YWdlIGJpbmRpbmdzLAotKyAqIG5vdCB0aGF0IHVzZWZ1bCBvdGhlcndpc2UgKHNp bmNlIEByZXEgY2FuIGp1c3QgYmUgY29waWVkCi0rICogYnkgYXNzaWdubWVudCBpbiBDKS4KLSsg KgotKyAqIFJldHVybnM6IHRoZSBuZXdseSBhbGxvY2F0ZWQgI0lCdXNDYWlyb0xpbmUsIHdoaWNo IHNob3VsZAotKyAqICAgICAgICAgIGJlIGZyZWVkIHdpdGggaWJ1c19jYWlyb19saW5lX2ZyZWUo KSwgb3IgJU5VTEwKLSsgKiAgICAgICAgICBpZiBAY2Fpcm9fbGluZXMgd2FzICVOVUxMLgotKyAq Ki8KLStJQnVzQ2Fpcm9MaW5lICogaWJ1c19jYWlyb19saW5lX2NvcHkgICAgICAgICAgICAoSUJ1 c0NhaXJvTGluZSAqY2Fpcm9fbGluZXMpOwotKwotKy8qKgotKyAqIGlidXNfY2Fpcm9fbGluZV9m cmVlOgotKyAqIEBjYWlyb19saW5lczogI0lCdXNDYWlyb0xpbmUKLSsgKgotKyAqIEZyZWUgYW4g I0lCdXNDYWlyb0xpbmUuCi0rICovCi0rdm9pZCAgICAgICAgICAgIGlidXNfY2Fpcm9fbGluZV9m cmVlICAgICAgICAgICAgKElCdXNDYWlyb0xpbmUgKmNhaXJvX2xpbmVzKTsKLSsKLSsKLStHVHlw ZSAgICAgICAgICAgaWJ1c19yZXF1aXNpdGlvbl9leF9nZXRfdHlwZSAgICAodm9pZCkgR19HTlVD X0NPTlNUOwotKwotKy8qKgotKyAqIGlidXNfcmVxdWlzaXRpb25fZXhfY29weToKLSsgKiBAcmVx OiAjSUJ1c1JlcXVpc2l0aW9uRXgKLSsgKgotKyAqIENyZWF0ZXMgYSBjb3B5IG9mIEByZXEsIHdo aWNoIHNob3VsZCBiZSBmcmVlZCB3aXRoCi0rICogaWJ1c19yZXF1aXNpdGlvbl9leF9mcmVlKCku IFByaW1hcmlseSB1c2VkIGJ5IGxhbmd1YWdlIGJpbmRpbmdzLAotKyAqIG5vdCB0aGF0IHVzZWZ1 bCBvdGhlcndpc2UgKHNpbmNlIEByZXEgY2FuIGp1c3QgYmUgY29waWVkCi0rICogYnkgYXNzaWdu bWVudCBpbiBDKS4KLSsgKgotKyAqIFJldHVybnM6IHRoZSBuZXdseSBhbGxvY2F0ZWQgI0lCdXNS ZXF1aXNpdGlvbkV4LCB3aGljaCBzaG91bGQKLSsgKiAgICAgICAgICBiZSBmcmVlZCB3aXRoIGli dXNfcmVxdWlzaXRpb25fZXhfZnJlZSgpLCBvciAlTlVMTAotKyAqICAgICAgICAgIGlmIEByZXEg d2FzICVOVUxMLgotKyAqKi8KLStJQnVzUmVxdWlzaXRpb25FeCAqCi0rICAgICAgICAgICAgICAg IGlidXNfcmVxdWlzaXRpb25fZXhfY29weSAgICAgICAgKElCdXNSZXF1aXNpdGlvbkV4ICpyZXEp OwotKwotKy8qKgotKyAqIGlidXNfcmVxdWlzaXRpb25fZXhfZnJlZToKLSsgKiBAcmVxOiAjSUJ1 c1JlcXVpc2l0aW9uRXgKLSsgKgotKyAqIEZyZWUgYW4gI0lCdXNSZXF1aXNpdGlvbkV4LgotKyAq LwotK3ZvaWQgICAgICAgICAgICBpYnVzX3JlcXVpc2l0aW9uX2V4X2ZyZWUgICAgICAgIChJQnVz UmVxdWlzaXRpb25FeCAqcmVxKTsKLSsKLSsKLStHVHlwZSAgICAgICAgICAgaWJ1c19mb250c2V0 X2dldF90eXBlICAgICAgICAgICAodm9pZCk7Ci0rCi0rLyoqCi0rICogaWJ1c19mb250c2V0X25l dzoKLSsgKiBAZmlyc3RfcHJvcGVydHlfbmFtZTogCi0rICoKLSsgKiBDcmVhdGVzIGEgbmV3ICNJ QnVzRmNGb250U2V0LgotKyAqCi0rICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBBIG5ld2x5 IGFsbG9jYXRlZCAjSUJ1c0ZvbnRTZXQgYW5kIGluY2x1ZGVzCi0rICogI0ZjRm9udFNldCBpbnRl cm5hbGx5LiBFLmcuIGlidXNfZm9udHNldF9uZXcgKCJmYW1pbHkiLAotKyAqICJOb3RvIEVtb2pp IENvbG9yIiwgInNpemUiLCAxNiwgImxhbmd1YWdlIiwgImphLWpwIik7Ci0rICovCi0rSUJ1c0Zv bnRTZXQgKiAgIGlidXNfZm9udHNldF9uZXcgICAgICAgICAgICAgICAgKGNvbnN0IGdjaGFyCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAqZmlyc3RfcHJvcGVydHlfbmFtZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLik7Ci0rCi0rLyoqCi0rICogaWJ1 c19mb250c2V0X25ld193aXRoX2ZvbnQ6Ci0rICogQGZhbWlseTogZm9udCBmYW1pbHkKLSsgKiBA c2l6ZTogZm9udCBzaXplCi0rICogQGxhbmd1YWdlOiBmb250IGxhbmd1YWdlCi0rICoKLSsgKiBD cmVhdGVzICBhIG5ldyAjSUJ1c0ZjRm9udFNldC4KLSsgKgotKyAqIFJldHVybnM6ICh0cmFuc2Zl ciBmdWxsKTogQSBuZXdseSBhbGxvY2F0ZWQgI0lCdXNGY0ZvbnRTZXQgYW5kIGluY2x1ZGVzCi0r ICogI0ZjRm9udFNldCBpbnRlcm5hbGx5LgotKyAqLwotK0lCdXNGb250U2V0ICogICBpYnVzX2Zv bnRzZXRfbmV3X3dpdGhfZm9udCAgICAgIChjb25zdCBnY2hhciAgICAqZmFtaWx5LAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAg ICAgc2l6ZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgZ2NoYXIgICAgKmxhbmd1YWdlKTsKLSsvKioKLSsgKiBpYnVzX2ZvbnRzZXRfZ2V0 X2ZhbWlseToKLSsgKiBAZm9udHNldDogI0lCdXNGY0ZvbnRTZXQKLSsgKgotKyAqIFJldHVybiB0 aGUgYmFzZSBmb250IGZhbWlseSBvZiAjRmNGb250U2V0Ci0rICoKLSsgKiBSZXR1cm5zOiBCYXNl IGZvbnQgZmFtaWx5IG9mICNGY0ZvbnRTZXQKLSsgKi8KLStjb25zdCBnY2hhciAqICAgaWJ1c19m b250c2V0X2dldF9mYW1pbHkgICAgICAgICAoSUJ1c0ZvbnRTZXQgICAgKmZvbnRzZXQpOwotKwot Ky8qKgotKyAqIGlidXNfZm9udHNldF9zZXRfZmFtaWx5OgotKyAqIEBmb250c2V0OiAjSUJ1c0Zj Rm9udFNldAotKyAqIEBmYW1pbHk6IGJhc2UgZm9udCBmYW1pbHkgZm9yICNGY0ZvbnRTZXQKLSsg KgotKyAqIFNldCB0aGUgYmFzZSBmb250IGZhbWlseSBmb3IgI0ZjRm9udFNldAotKyAqLwotK3Zv aWQgICAgICAgICAgICBpYnVzX2ZvbnRzZXRfc2V0X2ZhbWlseSAgICAgICAgIChJQnVzRm9udFNl dCAgICAqZm9udHNldCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgZ2NoYXIgICAgKmZhbWlseSk7Ci0rLyoqCi0rICogaWJ1c19mb250c2V0 X2dldF9zaXplOgotKyAqIEBmb250c2V0OiAjSUJ1c0ZjRm9udFNldAotKyAqCi0rICogUmV0dXJu IHRoZSBmb250IHNpemUgb2YgI0ZjRm9udFNldAotKyAqCi0rICogUmV0dXJuczogRm9udCBzaXpl IG9mICNGY0ZvbnRTZXQKLSsgKi8KLStndWludCAgICAgICAgICAgaWJ1c19mb250c2V0X2dldF9z aXplICAgICAgICAgICAoSUJ1c0ZvbnRTZXQgICAgKmZvbnRzZXQpOwotKwotKy8qKgotKyAqIGli dXNfZm9udHNldF9zZXRfc2l6ZToKLSsgKiBAZm9udHNldDogI0lCdXNGY0ZvbnRTZXQKLSsgKiBA c2l6ZTogZm9udCBzaXplIGZvciAjRmNGb250U2V0Ci0rICoKLSsgKiBTZXQgdGhlIGZvbnQgc2l6 ZSBmb3IgI0ZjRm9udFNldAotKyAqLwotK3ZvaWQgICAgICAgICAgICBpYnVzX2ZvbnRzZXRfc2V0 X3NpemUgICAgICAgICAgIChJQnVzRm9udFNldCAgICAqZm9udHNldCwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgIHNpemUp OwotKy8qKgotKyAqIGlidXNfZm9udHNldF9nZXRfbGFuZ3VhZ2U6Ci0rICogQGZvbnRzZXQ6ICNJ QnVzRmNGb250U2V0Ci0rICoKLSsgKiBSZXR1cm4gdGhlIGZvbnQgbGFuZ3VhZ2Ugb2YgI0ZjRm9u dFNldAotKyAqCi0rICogUmV0dXJuczogRm9udCBsYW5ndWFnZSBvZiAjRmNGb250U2V0Ci0rICov Ci0rY29uc3QgZ2NoYXIgKiAgIGlidXNfZm9udHNldF9nZXRfbGFuZ3VhZ2UgICAgICAgKElCdXNG b250U2V0ICAgICpmb250c2V0KTsKLSsKLSsvKioKLSsgKiBpYnVzX2ZvbnRzZXRfc2V0X2xhbmd1 YWdlOgotKyAqIEBmb250c2V0OiAjSUJ1c0ZjRm9udFNldAotKyAqIEBsYW5ndWFnZTogZm9udCBs YW5nYXVnZSBmb3IgI0ZjRm9udFNldAotKyAqCi0rICogU2V0IHRoZSBmb250IGxhbmd1YWdlIGZv ciAjRmNGb250U2V0Ci0rICovCi0rdm9pZCAgICAgICAgICAgIGlidXNfZm9udHNldF9zZXRfbGFu Z3VhZ2UgICAgICAgKElCdXNGb250U2V0ICAgICpmb250c2V0LAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAqbGFuZ3VhZ2Up OwotKwotKy8qKgotKyAqIGlidXNfZm9udHNldF91cGRhdGVfZmNmb250c2V0OgotKyAqIEBmb250 c2V0OiAjSUJ1c0ZjRm9udFNldAotKyAqCi0rICogVXBkYXRlICNGY0ZvbnRTZXQgZnJvbSBmb250 IGZhbWlseSwgc2l6ZSBhbmQgbGFuZ2F1Z2Ugb2YgQGZvbnRzZXQuCi0rICogUmV0dXJuczogJVRS VUUgaWYgI0ZjRm9udFNldCBpcyB1cGRhdGVkLiAlRkFMU0Ugb3RoZXJ3aXNlLgotKyAqLwotK2di b29sZWFuICAgICAgICBpYnVzX2ZvbnRzZXRfdXBkYXRlX2ZjZm9udHNldCAgIChJQnVzRm9udFNl dCAgICAqZm9udHNldCk7Ci0rCi0rLyoqCi0rICogaWJ1c19mb250c2V0X2dldF9wcmVmZXJyZWRf c2l6ZV9oYjoKLSsgKiBAZm9udHNldDogI0lCdXNGY0ZvbnRTZXQKLSsgKiBAdGV4dDogYSBzdHJp bmcgdG8gYmUgY2FsY3VsYXRlIHRoZSBwcmVmZXJyZWQgcmVjdGFuZ2xlIHNpemUuCi0rICogQHdp ZGVzdDogKG91dCk6ICNjYWlyb19yZWN0YW5nbGVfaW50X3QgaXMgdXBkYXRlZC4KLSsgKgotKyAq IENhbGN1bGF0ZSBAd2lkZXN0IGZvciBAdGV4dC4KLSsgKgotKyAqIFJldHVybnM6ICNJQnVzUmVx dWlzaXRpb25FeCB3aGljaCBpbmNsdWRlcyB0aGUgZ2x5cGhzIGFuZCBjb29yZGluYXRlcy4KLSsg Ki8KLStJQnVzUmVxdWlzaXRpb25FeCAqCi0rICAgICAgICAgICAgICAgIGlidXNfZm9udHNldF9n ZXRfcHJlZmVycmVkX3NpemVfaGIKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoSUJ1c0ZvbnRTZXQgICAgKmZvbnRzZXQsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICp0ZXh0LAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWlyb19y ZWN0YW5nbGVfaW50X3QKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKndpZGVzdCk7Ci0rCi0rLyoqCi0rICogaWJ1c19mb250 c2V0X2RyYXdfY2Fpcm9fbGluZXM6Ci0rICogQGZvbnRzZXQ6ICNJQnVzRmNGb250U2V0Ci0rICog QGNyOiAjY2Fpcm9fdCBpbiAjR3RrV2lkZ2V0LmRyYXcoKS4KLSsgKiBAZXg6ICNJQnVzUmVxdWlz aXRpb25FeCB3aGljaCBpbmNsdWRlcyBnbHlwaCwgeCwgeSB2YWx1ZXMsIGNoYXIgd2lkdGgKLSsg KiAgICAgIGFuZCBoZWlnaHQuCi0rICoKLSsgKiBEcmF3IGdseXBocyBpbiBAZXggdXNpbmcgY2Fp cm8gQGNyLgotKyAqLwotK3ZvaWQgICAgICAgICAgICBpYnVzX2ZvbnRzZXRfZHJhd19jYWlyb193 aXRoX3JlcXVpc2l0aW9uX2V4Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKElCdXNGb250U2V0ICAgICpmb250c2V0LAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWlyb190ICAgICAgICAqY3IsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCdXNSZXF1aXNp dGlvbkV4Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICpleCk7Ci0rCi0rLyoqCi0rICogaWJ1c19mb250c2V0X3VucmVmOgot KyAqIEBmb250c2V0OiAjSUJ1c0ZjRm9udFNldAotKyAqCi0rICogQ2FsbCBnX29iamVjdF91bnJl ZigpLgotKyAqIEZJWE1FOiBTZWVtcyBWYWxhIG5lZWRzIHRoaXMgQVBJLgotKyAqLwotK3ZvaWQg ICAgICAgICAgICBpYnVzX2ZvbnRzZXRfdW5yZWYgICAgICAgICAgICAgIChJQnVzRm9udFNldCAg ICAqZm9udHNldCk7Ci0rCi0rR19FTkRfREVDTFMKLSsjZW5kaWYKLS0tIAotMi4xNC4zCi0K