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: Enabled HarfBuzz rendering without Pango glyph calc for emoji Date: Sun, 31 May 2026 02:06:34 GMT Message-ID: <178019319476.1.11951189278677892441.rpms-ibus-be63774f6b9d@fedoraproject.org> List-ID: X-Git-Repo: rpms/ibus X-Git-Branch: autotool X-Git-Rev: be63774f6b9d1b832489201b689d43e2177fa828 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvaWJ1cwpCcmFuY2gg OiBhdXRvdG9vbApDb21taXQgOiBiZTYzNzc0ZjZiOWQxYjgzMjQ4OTIwMWI2ODlkNDNlMjE3N2Zh ODI4CkF1dGhvciA6IFRha2FvIEZ1aml3YXJhIDx0ZnVqaXdhckByZWRoYXQuY29tPgpEYXRlICAg OiAyMDE3LTA3LTEzVDE5OjAwOjEyKzA5OjAwClN0YXRzICA6ICsyMTM0Ly0xIGluIDIgZmlsZShz KQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2lidXMvYy9iZTYz Nzc0ZjZiOWQxYjgzMjQ4OTIwMWI2ODlkNDNlMjE3N2ZhODI4P2JyYW5jaD1hdXRvdG9vbAoKTG9n OgpFbmFibGVkIEhhcmZCdXp6IHJlbmRlcmluZyB3aXRob3V0IFBhbmdvIGdseXBoIGNhbGMgZm9y IGVtb2ppCgotLS0KZGlmZiAtLWdpdCBhL2lidXMtSEVBRC5wYXRjaCBiL2lidXMtSEVBRC5wYXRj aAppbmRleCA2MzkyZmViLi43NzlhOTc5IDEwMDY0NAotLS0gYS9pYnVzLUhFQUQucGF0Y2gKKysr IGIvaWJ1cy1IRUFELnBhdGNoCkBAIC0xLDMgKzEsMzQgQEAKK0Zyb20gZTZiYWI3YWI3OGM2OWQy MzhhNzBhNjRlNjA5NjNkZDVhNjcxMWZmZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206 IEZlbGl4IFlhbiA8ZmVsaXhvbm1hcnNAYXJjaGxpbnV4Lm9yZz4KK0RhdGU6IEZyaSwgMTkgTWF5 IDIwMTcgMTI6MTM6MDQgKzA5MDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IGEgdHlwbyBpbiBjb25m aWd1cmUuYWMKKworQlVHPWh0dHBzOi8vZ2l0aHViLmNvbS9pYnVzL2lidXMvcHVsbC8xOTI3CitS PVNoYXduLlAuSHVhbmdAZ21haWwuY29tCisKK1JldmlldyBVUkw6IGh0dHBzOi8vY29kZXJldmll dy5hcHBzcG90LmNvbS8zMTc2NDAwNDMKKworUGF0Y2ggZnJvbSBGZWxpeCBZYW4gPGZlbGl4b25t YXJzQGFyY2hsaW51eC5vcmc+LgorLS0tCisgY29uZmlndXJlLmFjIHwgMiArLQorIDEgZmlsZSBj aGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY29u ZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCAyMTliODlkLi4yY2M5NmQxIDEwMDY0NAor LS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC03MjcsNyArNzI3LDcg QEAgQnVpbGQgb3B0aW9uczoKKyAgIEVuYWJsZSBzdXJyb3VuZGluZy10ZXh0ICAgICAgICRlbmFi bGVfc3Vycm91bmRpbmdfdGV4dAorICAgRW5hYmxlIGxpYm5vdGlmeSAgICAgICAgICAgICAgJGVu YWJsZV9saWJub3RpZnkKKyAgIEVuYWJsZSBFbW9qaSBkaWN0ICAgICAgICAgICAgICRlbmFibGVf ZW1vamlfZGljdAorLSAgVWljb2RlIEVtb2ppIGRpcmVjdG9yeSAgICAgICAgJFVOSUNPREVfRU1P SklfRElSCisrICBVbmljb2RlIEVtb2ppIGRpcmVjdG9yeSAgICAgICAkVU5JQ09ERV9FTU9KSV9E SVIKKyAgIENMRFIgYW5ub3RhdGlvbiBkaXJlY3RvcnkgICAgICRFTU9KSV9BTk5PVEFUSU9OX0RJ UgorICAgUnVuIHRlc3QgY2FzZXMgICAgICAgICAgICAgICAgJGVuYWJsZV90ZXN0cworIF0pCist LSAKKzIuOS4zCisKIEZyb20gNGZlMzA1MGVmYTczMzVmODI4NzBmYjFkNWExZDE3MGQyMGFmYzE2 MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdh cmExQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMjIgTWF5IDIwMTcgMTI6MDQ6MjggKzA5MDAKQEAg LTU4OCwzICs2MTksMjA5MiBAQCBpbmRleCAxZDEwNWZkLi45NTkxMmJmIDEwMDY0NAogLS0gCiAy LjkuMwogCitGcm9tIGUxMGEyZTM0NGE5NDdjMzEyNTE5MGJkZDU1YmJiN2QwZjZiYzE4OGUgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBn bWFpbC5jb20+CitEYXRlOiBUaHUsIDEzIEp1bCAyMDE3IDE4OjQ2OjI2ICswOTAwCitTdWJqZWN0 OiBbUEFUQ0hdIEludGVncmF0ZSBjdXN0b20gcmVuZGVyaW5nIHRvIHVzZSBIYXJmQnV6eiBnbHlw aCBpbmZvCisKK0lCdXNGb250U2V0IG9mZmVycyBGY0ZvbnRTZXQsIGdseXBoIGluZm8gd2l0aCBI YXJmQnV6eiBhbmQgcmVuZGVyaW5nCitvbiBDYWlybyBjb250ZXh0LgorQ3VycmVudCBQYW5nbyBj aGFuZ2VzIGZvbnRzIGJ5IGVtb2ppIHZhcmlhbnRzIGFuZCBkcmF3cyB0aGUgc2VwYXJhdGVkCitn bHlwaHMgWzFdIGJ1dCBhY3R1YWxseSB0aGUgZW1vamkgY2hhcmFjdGVycyB3aXRoIHZhcmlhbnRz IGNhbiBiZSBkcmF3bgorYXMgb25lIGdseXBoIHNvIHRoaXMgY2xhc3MgIG1hbmFnZXMgRm9udGNv bmZpZyBmb250c2V0cyB0byBzZWxlY3QgYSBmb250LAorSGFyZkJ1enogdG8gZ2V0IGdseXBocyBm b3IgZW1vamkgdmFyaWFudHMsIENhaXJvIHRvIGRyYXcgZ2x5cGhzLgorTmVlZCBjb25maWd1cmUg LS1lbmFibGUtaGFyZmJ1enotZm9yLWVtb2ppIG9wdGlvbiB0byBlbmFibGUgdGhpcyBmZWF0dXJl LgorCitbMV06IGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03ODA2 NjkKKyAgICAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc4MTEy MworLS0tCisgLi4uL3ZhbGF9L0lCdXNFbW9qaURpYWxvZy0xLjAubWV0YWRhdGEgICAgICAgICAg ICAgfCAgIDAKKyBiaW5kaW5ncy92YWxhL0lCdXNGb250U2V0LTEuMC5tZXRhZGF0YSAgICAgICAg ICAgICB8ICAgMSArCisgYmluZGluZ3MvdmFsYS9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAyNDQgKysrKystCisgLi4uL3ZhbGF9L2lidXMtZW1vamktZGlhbG9nLTEuMC5k ZXBzICAgICAgICAgICAgICAgfCAgIDAKKyBiaW5kaW5ncy92YWxhL2lidXMtZm9udHNldC0xLjAu ZGVwcyAgICAgICAgICAgICAgICB8ICAgMSArCisgY29uZmlndXJlLmFjICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjkgKworIHBvL1BPVEZJTEVTLnNraXAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA1ICsKKyB1aS9ndGszL01ha2VmaWxlLmFt ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEzMSArKy0KKyB1aS9ndGszL2Vtb2pp ZXIudmFsYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDExOSArKy0KKyB1aS9ndGsz L2lidXNlbW9qaWRpYWxvZy5oICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyNiArCisgdWkv Z3RrMy9pYnVzZm9udHNldC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA5MjIgKysr KysrKysrKysrKysrKysrKysrCisgdWkvZ3RrMy9pYnVzZm9udHNldC5oICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAzMDIgKysrKysrKworIDEyIGZpbGVzIGNoYW5nZWQsIDE2NzQgaW5z ZXJ0aW9ucygrKSwgMTA2IGRlbGV0aW9ucygtKQorIHJlbmFtZSB7dWkvZ3RrMyA9PiBiaW5kaW5n cy92YWxhfS9JQnVzRW1vamlEaWFsb2ctMS4wLm1ldGFkYXRhICgxMDAlKQorIGNyZWF0ZSBtb2Rl IDEwMDY0NCBiaW5kaW5ncy92YWxhL0lCdXNGb250U2V0LTEuMC5tZXRhZGF0YQorIHJlbmFtZSB7 dWkvZ3RrMyA9PiBiaW5kaW5ncy92YWxhfS9pYnVzLWVtb2ppLWRpYWxvZy0xLjAuZGVwcyAoMTAw JSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgYmluZGluZ3MvdmFsYS9pYnVzLWZvbnRzZXQtMS4wLmRl cHMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgdWkvZ3RrMy9pYnVzZm9udHNldC5jCisgY3JlYXRlIG1v ZGUgMTAwNjQ0IHVpL2d0azMvaWJ1c2ZvbnRzZXQuaAorCitkaWZmIC0tZ2l0IGEvdWkvZ3RrMy9J QnVzRW1vamlEaWFsb2ctMS4wLm1ldGFkYXRhIGIvYmluZGluZ3MvdmFsYS9JQnVzRW1vamlEaWFs b2ctMS4wLm1ldGFkYXRhCitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHVpL2d0 azMvSUJ1c0Vtb2ppRGlhbG9nLTEuMC5tZXRhZGF0YQorcmVuYW1lIHRvIGJpbmRpbmdzL3ZhbGEv SUJ1c0Vtb2ppRGlhbG9nLTEuMC5tZXRhZGF0YQorZGlmZiAtLWdpdCBhL2JpbmRpbmdzL3ZhbGEv SUJ1c0ZvbnRTZXQtMS4wLm1ldGFkYXRhIGIvYmluZGluZ3MvdmFsYS9JQnVzRm9udFNldC0xLjAu bWV0YWRhdGEKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi43MzAzN2Q3Cist LS0gL2Rldi9udWxsCisrKysgYi9iaW5kaW5ncy92YWxhL0lCdXNGb250U2V0LTEuMC5tZXRhZGF0 YQorQEAgLTAsMCArMSBAQAorK0lCdXNGb250U2V0IGNoZWFkZXJfZmlsZW5hbWU9ImlidXNmb250 c2V0LmgiCitkaWZmIC0tZ2l0IGEvYmluZGluZ3MvdmFsYS9NYWtlZmlsZS5hbSBiL2JpbmRpbmdz L3ZhbGEvTWFrZWZpbGUuYW0KK2luZGV4IDRlMzRhZmMuLjI2MWUxZjMgMTAwNjQ0CistLS0gYS9i aW5kaW5ncy92YWxhL01ha2VmaWxlLmFtCisrKysgYi9iaW5kaW5ncy92YWxhL01ha2VmaWxlLmFt CitAQCAtMyw3ICszLDggQEAKKyAjIGlidXMgLSBUaGUgSW5wdXQgQnVzCisgIworICMgQ29weXJp Z2h0IChjKSAyMDA3LTIwMTYgUGVuZyBIdWFuZyA8c2hhd24ucC5odWFuZ0BnbWFpbC5jb20+Cist IyBDb3B5cmlnaHQgKGMpIDIwMDctMjAxNiBSZWQgSGF0LCBJbmMuCisrIyBDb3B5cmlnaHQgKGMp IDIwMTcgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+CisrIyBDb3B5 cmlnaHQgKGMpIDIwMDctMjAxNyBSZWQgSGF0LCBJbmMuCisgIworICMgVGhpcyBsaWJyYXJ5IGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICMgbW9kaWZ5 IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworQEAg LTIyLDE1ICsyMyw0NyBAQAorIAorIC1pbmNsdWRlICQoVkFQSUdFTl9NQUtFRklMRSkKKyAKKyts aWJpYnVzID0gJCh0b3BfYnVpbGRkaXIpL3NyYy9saWJpYnVzLUBJQlVTX0FQSV9WRVJTSU9OQC5s YQorKworK25vaW5zdF9MVExJQlJBUklFUyA9Cisrbm9pbnN0X0RBVEEgPQorK0lOVFJPU1BFQ1RJ T05fR0lSUyA9CisrZ2lyZGlyID0gJChkYXRhZGlyKS9naXItMS4wCisrCisrQU1fQ1BQRkxBR1Mg PSBcCisrICAgIC1JJCh0b3Bfc3JjZGlyKS9zcmMgXAorKyAgICAtSSQodG9wX2J1aWxkZGlyKS9z cmMgXAorKyAgICAtaW5jbHVkZSAkKENPTkZJR19IRUFERVIpIFwKKysgICAgJChOVUxMKQorK0FN X0NGTEFHUyA9IFwKKysgICAgLURHX0xPR19ET01BSU49XCJJQlVTXCIgXAorKyAgICAtRFBLR0RB VEFESVI9XCIkKHBrZ2RhdGFkaXIpXCIgXAorKyAgICAtRElCVVNfRElTQUJMRV9ERVBSRUNBVEVE IFwKKysgICAgLVduby11bnVzZWQtdmFyaWFibGUgXAorKyAgICAtV25vLXVudXNlZC1idXQtc2V0 LXZhcmlhYmxlIFwKKysgICAgLVduby11bnVzZWQtZnVuY3Rpb24gXAorKyAgICAkKE5VTEwpCisr QU1fVkFMQUZMQUdTID0gXAorKyAgICAtLXZhcGlkaXI9JChidWlsZGRpcikgXAorKyAgICAtLXZh cGlkaXI9JChzcmNkaXIpIFwKKysgICAgLS1wa2c9cG9zaXggXAorKyAgICAtLXBrZz1ndGsrLTMu MCBcCisrICAgIC0tcGtnPWdkay14MTEtMy4wIFwKKysgICAgLS1wa2c9aWJ1cy0xLjAgXAorKyAg ICAtLXBrZz1jb25maWcgXAorKyAgICAtLXBrZz14aSBcCisrICAgIC0tdGFyZ2V0LWdsaWI9IiQo VkFMQV9UQVJHRVRfR0xJQl9WRVJTSU9OKSIgXAorKyAgICAkKE5VTEwpCisrCisgdmFwaV9kZXBz ID0gXAorIAlJQnVzLTEuMC5tZXRhZGF0YSBcCistCUlCdXMtMS4wLWN1c3RvbS52YWxhIFwKKyAJ JCh0b3BfYnVpbGRkaXIpL3NyYy9JQnVzLTEuMC5naXIgXAorIAkkKE5VTEwpCisgCisgaWJ1cy0x LjAudmFwaTogJCh2YXBpX2RlcHMpCisgCistVkFQSUdFTl9WQVBJUyA9IGlidXMtMS4wLnZhcGkK KytpYnVzX3ZhcGkgPSBpYnVzLTEuMC52YXBpCisrVkFQSUdFTl9WQVBJUyA9ICQoaWJ1c192YXBp KQorIAorIGlidXNfMV8wX3ZhcGlfREVQUyA9IGdpby0yLjAKKyBpYnVzXzFfMF92YXBpX01FVEFE QVRBRElSUyA9ICQoc3JjZGlyKQorQEAgLTQwLDE4ICs3MywyMDEgQEAgaWJ1c18xXzBfdmFwaV9G SUxFUyA9IFwKKyAJJChOVUxMKQorIAorIHZhcGlkaXIgPSAkKGRhdGFkaXIpL3ZhbGEvdmFwaQor LXZhcGlfREFUQSA9ICQoVkFQSUdFTl9WQVBJUykgJChWQVBJR0VOX1ZBUElTOi52YXBpPS5kZXBz KQorK3ZhcGlfREFUQSA9ICQoaWJ1c192YXBpKSAkKGlidXNfdmFwaToudmFwaT0uZGVwcykKKyAK Ky1NQUlOVEFJTkVSQ0xFQU5GSUxFUyA9ICQoVkFQSUdFTl9WQVBJUykKKy1ESVNUQ0xFQU5GSUxF UyA9ICQoVkFQSUdFTl9WQVBJUykKKytNQUlOVEFJTkVSQ0xFQU5GSUxFUyA9ICQoaWJ1c192YXBp KQorK0RJU1RDTEVBTkZJTEVTID0gJChpYnVzX3ZhcGkpCisgCistRVhUUkFfRElTVCA9IFwKKy0J JChWQVBJR0VOX1ZBUElTKSBcCistCUlCdXMtMS4wLm1ldGFkYXRhIFwKKy0JSUJ1cy0xLjAtY3Vz dG9tLnZhbGEgXAorLQlpYnVzLTEuMC5kZXBzIFwKKy0JY29uZmlnLnZhcGkgXAorLQl4aS52YXBp IFwKKy0JJChOVUxMKQorK0VYVFJBX0RJU1QgPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKKysgICAgJChpYnVzX3ZhcGkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCisrICAgIElCdXMtMS4wLm1ldGFkYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor KyAgICBJQnVzLTEuMC1jdXN0b20udmFsYSAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAg SUJ1c0Vtb2ppRGlhbG9nLTEuMC5tZXRhZGF0YSAgICAgICAgICAgICAgICBcCisrICAgIElCdXNG b250U2V0LTEuMC5tZXRhZGF0YSAgICAgICAgICAgICAgICAgICAgXAorKyAgICBpYnVzLTEuMC5k ZXBzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgaWJ1cy1lbW9qaS1kaWFs b2ctMS4wLmRlcHMgICAgICAgICAgICAgICAgICBcCisrICAgIGlidXMtZm9udHNldC0xLjAuZGVw cyAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICBjb25maWcudmFwaSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKKysgICAgeGkudmFwaSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCisrICAgICQoTlVMTCkKKysKKytpZiBFTkFCTEVfRU1PSklfRElDVAor K0FNX1ZBTEFGTEFHUyArPSAtLWRlZmluZT1FTU9KSV9ESUNUCisrCisrbGliaWJ1c19lbW9qaV9k aWFsb2cgPSBsaWJpYnVzLWVtb2ppLWRpYWxvZy0xLjAubGEKKytub2luc3RfTFRMSUJSQVJJRVMg Kz0gJChsaWJpYnVzX2Vtb2ppX2RpYWxvZykKKysKKytsaWJpYnVzX2Vtb2ppX2RpYWxvZ18xXzBf bGFfU09VUkNFUyA9ICAgICAgICAgICBcCisrICAgIGNhbmRpZGF0ZWFyZWEudmFsYSAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorKyAgICBlbW9qaWVyLnZhbGEgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKKysgICAgaWNvbndpZGdldC52YWxhICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCisrICAgIHBhbmdvLnZhbGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAorKyAgICBzZXBhcmF0b3IudmFsYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK KysgICAgJChOVUxMKQorK2xpYmlidXNfZW1vamlfZGlhbG9nXzFfMF9sYV9DRkxBR1MgPSAgICAg ICAgICAgIFwKKysgICAgJChBTV9DRkxBR1MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCisrICAgIEBHTElCMl9DRkxBR1NAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor KyAgICBAR0lPMl9DRkxBR1NAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAg QEdUSFJFQUQyX0NGTEFHU0AgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIEBHVEsz X0NGTEFHU0AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICBAWDExX0NGTEFH U0AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgLURCSU5ESVI9XCIkKGJp bmRpcilcIiAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICQoTlVMTCkKKytsaWJpYnVzX2Vt b2ppX2RpYWxvZ18xXzBfbGFfTElCQUREID0gICAgICAgICAgICBcCisrICAgIEBHTElCMl9MSUJT QCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICBAR0lPMl9MSUJTQCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgQEdUSFJFQUQyX0xJQlNAICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIEBHVEszX0xJQlNAICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorKyAgICBAWDExX0xJQlNAICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKKysgICAgLWxYaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCisrICAgICQobGliaWJ1cykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAorKyAgICAkKE5VTEwpCisrbGliaWJ1c19lbW9qaV9kaWFsb2dfMV8wX2xhX0xERkxBR1Mg PSAgICAgICAgICAgXAorKyAgICAtbm8tdW5kZWZpbmVkICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKKysgICAgLWV4cG9ydC1zeW1ib2xzLXJlZ2V4ICJpYnVzXy4qIiAgICAgICAgICAg ICBcCisrICAgICQoTlVMTCkKKysKKysjIHBlciBmaWxlIHNldHRpbmcgaXMgbmVlZGVkIHRvIGF2 b2lkIGNvbmZsaWN0aW5nIExOX1MgYnkgY2FsbGluZworKyMgZHVwbGljYXRlZCB0aW1lcyBpbiBw YXJhbGxlbCBtYWtlCisrJS52YWxhOiAkKGlidXNfdmFwaSkKKysJaWYgdGVzdCAhIC1mICRAIDsg dGhlbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrCSAg ICAkKExOX1MpICQodG9wX3NyY2RpcikvdWkvZ3RrMy8kQCAuOyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorKwlmaTsKKytpYnVzZm9udHNldC5jOiAkKGlidXNfdmFwaSkKKysJaWYgdGVz dCAhIC1mICRAIDsgdGhlbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCisrCSAgICAkKExOX1MpICQodG9wX3NyY2RpcikvdWkvZ3RrMy8kQCAuOyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorKwlmaTsKKytpYnVzZm9udHNldC5oOiAkKGlidXNfdmFw aSkKKysJaWYgdGVzdCAhIC1mICRAIDsgdGhlbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCisrCSAgICAkKExOX1MpICQodG9wX3NyY2RpcikvdWkvZ3RrMy8k QCAuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKwlmaTsKKysKKysKKytNQUlOVEFJ TkVSQ0xFQU5GSUxFUyArPSAkKGxpYmlidXNfZW1vamlfZGlhbG9nXzFfMF9sYV9TT1VSQ0VTKQor K0RJU1RDTEVBTkZJTEVTICs9ICQobGliaWJ1c19lbW9qaV9kaWFsb2dfMV8wX2xhX1NPVVJDRVMp CisrCisraWYgSEFWRV9JTlRST1NQRUNUSU9OCisrLWluY2x1ZGUgJChJTlRST1NQRUNUSU9OX01B S0VGSUxFKQorK0lOVFJPU1BFQ1RJT05fU0NBTk5FUl9BUkdTID0KKytJTlRST1NQRUNUSU9OX0NP TVBJTEVSX0FSR1MgPSAgICAgICAgICAgICAgICAgICBcCisrICAgIC0taW5jbHVkZWRpcj0kKHNy Y2RpcikgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAtLWluY2x1ZGVkaXI9LiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgLS1pbmNsdWRlZGlyPSQodG9wX3NyY2Rpcikv c3JjICAgICAgICAgICAgICBcCisrICAgICQoTlVMTCkKKysKKysKKytlbW9qaV9oZWFkZXJzID0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICQodG9wX3NyY2RpcikvdWkv Z3RrMy9pYnVzZW1vamlkaWFsb2cuaCAgICAgXAorKyAgICAkKE5VTEwpCisrCisrSUJ1c0Vtb2pp RGlhbG9nLTEuMC5naXI6ICQobGliaWJ1c19lbW9qaV9kaWFsb2cpIE1ha2VmaWxlCisrSUJ1c0Vt b2ppRGlhbG9nXzFfMF9naXJfU0NBTk5FUkZMQUdTID0gICAgICAgICAgXAorKyAgICAtLXBrZy1l eHBvcnQ9aWJ1cy0xLjAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgLS1wa2c9Z3RrKy0z LjAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICQoSUJVU19HSVJfU0NBTk5F UkZMQUdTKSAgICAgICAgICAgICAgICAgICAgXAorKyAgICAkKE5VTEwpCisrSUJ1c0Vtb2ppRGlh bG9nXzFfMF9naXJfSU5DTFVERVMgPSBHdGstMy4wIEdMaWItMi4wIEdPYmplY3QtMi4wIEdpby0y LjAKKytJQnVzRW1vamlEaWFsb2dfMV8wX2dpcl9MSUJTID0gJChsaWJpYnVzX2Vtb2ppX2RpYWxv ZykgJChsaWJpYnVzKQorK0lCdXNFbW9qaURpYWxvZ18xXzBfZ2lyX0ZJTEVTID0gJChlbW9qaV9o ZWFkZXJzKQorK0lCdXNFbW9qaURpYWxvZ18xXzBfZ2lyX0NGTEFHUyA9ICAgICAgICAgICAgICAg IFwKKysgICAgLUkkKHNyY2RpcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisr ICAgIC1JJChidWlsZGRpcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAt SSQodG9wX3NyY2Rpcikvc3JjICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgJChOVUxM KQorKworK2lidXNfZW1vamlfZGlhbG9nX2dpciA9IElCdXNFbW9qaURpYWxvZy0xLjAuZ2lyCisr SU5UUk9TUEVDVElPTl9HSVJTICs9ICQoaWJ1c19lbW9qaV9kaWFsb2dfZ2lyKQorK25vaW5zdF9E QVRBICs9ICQoaWJ1c19lbW9qaV9kaWFsb2dfZ2lyKQorK0VYVFJBX0RJU1QgKz0gJChpYnVzX2Vt b2ppX2RpYWxvZ19naXIpCisrTUFJTlRBSU5FUkNMRUFORklMRVMgKz0gJChpYnVzX2Vtb2ppX2Rp YWxvZ19naXIpCisrRElTVENMRUFORklMRVMgKz0gJChpYnVzX2Vtb2ppX2RpYWxvZ19naXIpCisr CisraWJ1cy1lbW9qaS1kaWFsb2ctMS4wLnZhcGk6ICQoaWJ1c19lbW9qaV9kaWFsb2dfZ2lyKSBJ QnVzRW1vamlEaWFsb2ctMS4wLm1ldGFkYXRhCisraWJ1c19lbW9qaV9kaWFsb2dfdmFwaSA9IGli dXMtZW1vamktZGlhbG9nLTEuMC52YXBpCisraWJ1c19lbW9qaV9kaWFsb2dfMV8wX3ZhcGlfREVQ UyA9IGd0aystMy4wIGdpby0yLjAKKytpYnVzX2Vtb2ppX2RpYWxvZ18xXzBfdmFwaV9NRVRBREFU QURJUlMgPSAkKHNyY2RpcikKKytpYnVzX2Vtb2ppX2RpYWxvZ18xXzBfdmFwaV9GSUxFUyA9IElC dXNFbW9qaURpYWxvZy0xLjAuZ2lyCisrVkFQSUdFTl9WQVBJUyArPSAkKGlidXNfZW1vamlfZGlh bG9nX3ZhcGkpCisrbm9pbnN0X0RBVEEgKz0gJChpYnVzX2Vtb2ppX2RpYWxvZ192YXBpKQorK0VY VFJBX0RJU1QgKz0gJChpYnVzX2Vtb2ppX2RpYWxvZ192YXBpKQorK01BSU5UQUlORVJDTEVBTkZJ TEVTICs9ICQoaWJ1c19lbW9qaV9kaWFsb2dfdmFwaSkKKytESVNUQ0xFQU5GSUxFUyArPSAkKGli dXNfZW1vamlfZGlhbG9nX3ZhcGkpCisrCisrZW5kaWYKKysjZW5kIG9mIEhBVkVfSU5UUk9TUEVD VElPTgorKworKworK2lmIEVOQUJMRV9IQVJGQlVaWl9GT1JfRU1PSkkKKytsaWJpYnVzX2ZvbnRz ZXQgPSBsaWJpYnVzLWZvbnRzZXQtMS4wLmxhCisrbm9pbnN0X0xUTElCUkFSSUVTICs9ICQobGli aWJ1c19mb250c2V0KQorKworK2xpYmlidXNfZm9udHNldF8xXzBfbGFfU09VUkNFUyA9ICAgICAg ICAgICAgICAgIFwKKysgICAgaWJ1c2ZvbnRzZXQuYyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCisrICAgICQoTlVMTCkKKytsaWJpYnVzX2ZvbnRzZXRfMV8wX2xhX0NGTEFHUyA9ICAg ICAgICAgICAgICAgICBcCisrICAgICQoQU1fQ0ZMQUdTKSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorKyAgICBAQ0FJUk9fQ0ZMQUdTQCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKKysgICAgQEZPTlRDT05GSUdfQ0ZMQUdTQCAgICAgICAgICAgICAgICAgICAgICAgICBc CisrICAgIEBHTElCMl9DRkxBR1NAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAg ICBASEFSRkJVWlpfQ0ZMQUdTQCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgQFBB TkdPX0NGTEFHU0AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICQoTlVMTCkK KytsaWJpYnVzX2ZvbnRzZXRfMV8wX2xhX0xJQkFERCA9ICAgICAgICAgICAgICAgICBcCisrICAg IEBDQUlST19MSUJTQCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICBARk9O VENPTkZJR19MSUJTQCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgQEdMSUIyX0xJ QlNAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIEBIQVJGQlVaWl9MSUJT QCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICBAUEFOR09fTElCU0AgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgJChOVUxMKQorK2xpYmlidXNfZm9udHNl dF8xXzBfbGFfTERGTEFHUyA9ICAgICAgICAgICAgICAgIFwKKysgICAgLW5vLXVuZGVmaW5lZCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIC1leHBvcnQtc3ltYm9scy1yZWdl eCAiaWJ1c18uKiIgICAgICAgICAgICAgXAorKyAgICAkKE5VTEwpCisrCisrTUFJTlRBSU5FUkNM RUFORklMRVMgKz0gaWJ1c2ZvbnRzZXQuYyBpYnVzZm9udHNldC5oCisrRElTVENMRUFORklMRVMg Kz0gaWJ1c2ZvbnRzZXQuYyBpYnVzZm9udHNldC5oCisrCisraWYgSEFWRV9JTlRST1NQRUNUSU9O CisrSUJ1c0ZvbnRTZXQtMS4wLmdpcjogJChsaWJpYnVzX2ZvbnRzZXQpIE1ha2VmaWxlCisrSUJ1 c0ZvbnRTZXRfMV8wX2dpcl9TQ0FOTkVSRkxBR1MgPSAgICAgICAgICAgICAgXAorKyAgICAtLXBr Zy1leHBvcnQ9aWJ1cy0xLjAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgLS1wa2c9Y2Fp cm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIC0tcGtnPWZvbnRjb25m aWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAtLXBrZz1oYXJmYnV6eiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgJChJQlVTX0dJUl9TQ0FOTkVSRkxBR1Mp ICAgICAgICAgICAgICAgICAgICBcCisrICAgICQoTlVMTCkKKytJQnVzRm9udFNldF8xXzBfZ2ly X0xJQlMgPSAkKGxpYmlidXNfZm9udHNldCkgJChsaWJpYnVzKQorK0lCdXNGb250U2V0XzFfMF9n aXJfSU5DTFVERVMgPSBjYWlyby0xLjAgR0xpYi0yLjAgR09iamVjdC0yLjAKKytJQnVzRm9udFNl dF8xXzBfZ2lyX0ZJTEVTID0gICAgICAgICAgICAgICAgICAgICBcCisrICAgIGlidXNmb250c2V0 LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAkKE5VTEwpCisrSUJ1c0Zv bnRTZXRfMV8wX2dpcl9DRkxBR1MgPSAgICAgICAgICAgICAgICAgICAgXAorKyAgICAtSSQoc3Jj ZGlyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgLUkkKGJ1aWxkZGly KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIC1JJCh0b3Bfc3JjZGlyKS9z cmMgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAkKE5VTEwpCisraWJ1c19mb250c2V0 X2dpciA9IElCdXNGb250U2V0LTEuMC5naXIKKytJTlRST1NQRUNUSU9OX0dJUlMgKz0gJChpYnVz X2ZvbnRzZXRfZ2lyKQorK25vaW5zdF9EQVRBICs9ICQoaWJ1c19mb250c2V0X2dpcikKKytFWFRS QV9ESVNUICs9ICQoaWJ1c19mb250c2V0X2dpcikKKytNQUlOVEFJTkVSQ0xFQU5GSUxFUyArPSAk KGlidXNfZm9udHNldF9naXIpCisrRElTVENMRUFORklMRVMgKz0gJChpYnVzX2ZvbnRzZXRfZ2ly KQorKworK2lidXMtZm9udHNldC0xLjAudmFwaTogJChpYnVzX2ZvbnRzZXRfZ2lyKSBJQnVzRm9u dFNldC0xLjAubWV0YWRhdGEKKytpYnVzX2ZvbnRzZXRfdmFwaSA9IGlidXMtZm9udHNldC0xLjAu dmFwaQorK2lidXNfZm9udHNldF8xXzBfdmFwaV9NRVRBREFUQURJUlMgPSAkKHNyY2RpcikKKytp YnVzX2ZvbnRzZXRfMV8wX3ZhcGlfRklMRVMgPSBJQnVzRm9udFNldC0xLjAuZ2lyCisrVkFQSUdF Tl9WQVBJUyArPSAkKGlidXNfZm9udHNldF92YXBpKQorK25vaW5zdF9EQVRBICs9ICQoaWJ1c19m b250c2V0X3ZhcGkpCisrRVhUUkFfRElTVCArPSAkKGlidXNfZm9udHNldF92YXBpKQorK01BSU5U QUlORVJDTEVBTkZJTEVTICs9ICQoaWJ1c19mb250c2V0X3ZhcGkpCisrRElTVENMRUFORklMRVMg Kz0gJChpYnVzX2ZvbnRzZXRfdmFwaSkKKysKKytlbmRpZgorKyMgZW5kIG9mIEhBVkVfSU5UUk9T UEVDVElPTgorK2VuZGlmCisrIyBlbmQgb2YgRU5BQkxFX0hBUkZCVVpaX0ZPUl9FTU9KSQorK2Vu ZGlmCisrIyBlbmQgb2YgRU5BQkxFX0VNT0pJX0RJQ1QKKyAKKyAtaW5jbHVkZSAkKHRvcF9zcmNk aXIpL2dpdC5taworZGlmZiAtLWdpdCBhL3VpL2d0azMvaWJ1cy1lbW9qaS1kaWFsb2ctMS4wLmRl cHMgYi9iaW5kaW5ncy92YWxhL2lidXMtZW1vamktZGlhbG9nLTEuMC5kZXBzCitzaW1pbGFyaXR5 IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHVpL2d0azMvaWJ1cy1lbW9qaS1kaWFsb2ctMS4wLmRl cHMKK3JlbmFtZSB0byBiaW5kaW5ncy92YWxhL2lidXMtZW1vamktZGlhbG9nLTEuMC5kZXBzCitk aWZmIC0tZ2l0IGEvYmluZGluZ3MvdmFsYS9pYnVzLWZvbnRzZXQtMS4wLmRlcHMgYi9iaW5kaW5n cy92YWxhL2lidXMtZm9udHNldC0xLjAuZGVwcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4 IDAwMDAwMDAuLjEyOWZlMTYKKy0tLSAvZGV2L251bGwKKysrKyBiL2JpbmRpbmdzL3ZhbGEvaWJ1 cy1mb250c2V0LTEuMC5kZXBzCitAQCAtMCwwICsxIEBACisrY2Fpcm8KK2RpZmYgLS1naXQgYS9j b25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGNiNDhhZDQuLmQyYWEyMjIgMTAwNjQ0 CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTY1Myw2ICs2NTMs MzQgQEAgaHR0cHM6Ly9naXRodWIuY29tL2Z1aml3YXJhdC9jbGRyLWVtb2ppLWFubm90YXRpb24p CisgICAgIGVuYWJsZV9lbW9qaV9kaWN0PSJ5ZXMgKGVuYWJsZWQsIHVzZSAtLWRpc2FibGUtZW1v amktZGljdCB0byBkaXNhYmxlKSIKKyBmaQorIAorK0FDX0FSR19FTkFCTEUoaGFyZmJ1enotZm9y LWVtb2ppLAorKyAgICBBU19IRUxQX1NUUklORyhbLS1lbmFibGUtaGFyZmJ1enotZm9yLWVtb2pp XSwKKysgICAgICAgICAgICAgICAgICAgW0VuYWJsZSBIYXJCdXp6IHRvIGRyYXcgZW1vamkgY2hh cmFjdGVycy4KKysgICAgICAgICAgICAgICAgICAgIEN1cnJlbnQgUGFuZ28gaGFzIGEgcHJvYmxl bSB0byBkcmF3IGVtb2ppIHZhcmlhbnRzIGFuZAorKyAgICAgICAgICAgICAgICAgICAgdGhpcyB3 YXkgZW5hYmxlcyB0byB1c2UgSGFyZkJ1enogZGlyZWN0bHkgaW4gR3RrTGFiZWwuXSksCisrICAg IFtlbmFibGVfaGFyZmJ1enpfZm9yX2Vtb2ppPSRlbmFibGV2YWxdLAorKyAgICBbZW5hYmxlX2hh cmZidXp6X2Zvcl9lbW9qaT1ub10KKyspCisrQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9IQVJGQlVa Wl9GT1JfRU1PSkldLAorKyAgICAgICAgICAgICAgIFt0ZXN0IHgiJGVuYWJsZV9oYXJmYnV6el9m b3JfZW1vamkiID0geCJ5ZXMiXSkKKysKKytpZiB0ZXN0IHgiJGVuYWJsZV9oYXJmYnV6el9mb3Jf ZW1vamkiID0geCJ5ZXMiOyB0aGVuCisrICAgIFBLR19DSEVDS19NT0RVTEVTKENBSVJPLCBbCisr ICAgICAgICBjYWlybworKyAgICBdKQorKyAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhGT05UQ09ORklH LCBbCisrICAgICAgICBmb250Y29uZmlnCisrICAgIF0pCisrICAgIFBLR19DSEVDS19NT0RVTEVT KEhBUkZCVVpaLCBbCisrICAgICAgICBoYXJmYnV6egorKyAgICBdKQorKyAgICBQS0dfQ0hFQ0tf TU9EVUxFUyhQQU5HTywgWworKyAgICAgICAgcGFuZ28KKysgICAgXSkKKytlbHNlCisrICAgIGVu YWJsZV9oYXJmYnV6el9mb3JfZW1vamk9Im5vIChkaXNhYmxlZCwgdXNlIC0tZW5hYmxlLWhhcmZi dXp6LWZvci1lbW9qaSB0byBlbmFibGUpIgorK2ZpCisrCisgIyBDaGVjayBpc28tY29kZXMuCisg UEtHX0NIRUNLX01PRFVMRVMoSVNPQ09ERVMsIFsKKyAgICAgaXNvLWNvZGVzCitAQCAtNzQwLDYg Kzc2OCw3IEBAIEJ1aWxkIG9wdGlvbnM6CisgICBFbmFibGUgRW1vamkgZGljdCAgICAgICAgICAg ICAkZW5hYmxlX2Vtb2ppX2RpY3QKKyAgIFVuaWNvZGUgRW1vamkgZGlyZWN0b3J5ICAgICAgICRV TklDT0RFX0VNT0pJX0RJUgorICAgQ0xEUiBhbm5vdGF0aW9uIGRpcmVjdG9yeSAgICAgJEVNT0pJ X0FOTk9UQVRJT05fRElSCisrICBFbmFibGUgSGFyZkJ1enogZm9yIEVtb2ppICAgICAkZW5hYmxl X2hhcmZidXp6X2Zvcl9lbW9qaQorICAgUnVuIHRlc3QgY2FzZXMgICAgICAgICAgICAgICAgJGVu YWJsZV90ZXN0cworIF0pCisgCitkaWZmIC0tZ2l0IGEvcG8vUE9URklMRVMuc2tpcCBiL3BvL1BP VEZJTEVTLnNraXAKK2luZGV4IDcxOTAyMjEuLjEwYjg4MjkgMTAwNjQ0CistLS0gYS9wby9QT1RG SUxFUy5za2lwCisrKysgYi9wby9QT1RGSUxFUy5za2lwCitAQCAtMiw2ICsyLDExIEBACisgIyBQ bGVhc2Uga2VlcCB0aGlzIGZpbGUgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLgorICMgRmlsZXMgdW5k ZXIgdWkvZ3RrMi8gYXJlIG5vdCBzaGlwcGVkIGluIHRoZSBkaXN0cmlidXRpb24sIGJ1dCBrZXB0 CisgIyBpbiB0aGUgZ2l0IHJlcG9zaXRvcnkgZm9yIHJlZmVyZW5jZS4KKytiaW5kaW5ncy92YWxh L2NhbmRpZGF0ZWFyZWEuYworK2JpbmRpbmdzL3ZhbGEvZW1vamllci5jCisrYmluZGluZ3MvdmFs YS9pY29ud2lkZ2V0LmMKKytiaW5kaW5ncy92YWxhL3BhbmdvLmMKKytiaW5kaW5ncy92YWxhL3Nl cGFyYXRvci5jCisgaWJ1cy9fY29uZmlnLnB5CisgdG9vbHMvbWFpbi5jCisgdWkvZ3RrMi9jYW5k aWRhdGVwYW5lbC5weQorZGlmZiAtLWdpdCBhL3VpL2d0azMvTWFrZWZpbGUuYW0gYi91aS9ndGsz L01ha2VmaWxlLmFtCitpbmRleCBjNzk2NDFhLi5jZDFlOWMyIDEwMDY0NAorLS0tIGEvdWkvZ3Rr My9NYWtlZmlsZS5hbQorKysrIGIvdWkvZ3RrMy9NYWtlZmlsZS5hbQorQEAgLTgxLDEwICs4MSw2 IEBAIEFNX1ZBTEFGTEFHUyA9IFwKKyAJLS10YXJnZXQtZ2xpYj0iJChWQUxBX1RBUkdFVF9HTElC X1ZFUlNJT04pIiBcCisgCSQoTlVMTCkKKyAKKy1NQUlOVEFJTkVSQ0xFQU5GSUxFUyA9CistRElT VENMRUFORklMRVMgPQorLW5vaW5zdF9EQVRBID0KKy0KKyBpZiBFTkFCTEVfTElCTk9USUZZCisg QU1fQ0ZMQUdTICs9IFwKKyAJQExJQk5PVElGWV9DRkxBR1NAIFwKK0BAIC0xNTgsOSArMTU0LDEw IEBAIG1hbl9zZXZlbl9pbl9maWxlcyA9IGlidXMtZW1vamkuNy5pbgorIEVYVFJBX0RJU1QgPSAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICQoZW1vamlfaGVhZGVycykgICAgICAg ICAgICAgICAgICAgIFwKKyAgICAgJChtYW5fc2V2ZW5faW5fZmlsZXMpICAgICAgICAgICAgICAg XAorLSAgICBJQnVzRW1vamlEaWFsb2ctMS4wLm1ldGFkYXRhICAgICAgICBcCisrICAgIGVtb2pp ZXJhcHAudmFsYSAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgZ3RrcGFuZWwueG1sLmluICAg ICAgICAgICAgICAgICAgICAgXAorLSAgICBpYnVzLWVtb2ppLWRpYWxvZy0xLjAuZGVwcyAgICAg ICAgICBcCisrICAgIGlidXNmb250c2V0LmMgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAg aWJ1c2ZvbnRzZXQuaCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICBub3RpZmljYXRpb24t aXRlbS54bWwgICAgICAgICAgICAgICBcCisgICAgIG5vdGlmaWNhdGlvbi13YXRjaGVyLnhtbCAg ICAgICAgICAgIFwKKyAgICAgJChOVUxMKQorQEAgLTE2OCw5OCArMTY1LDcwIEBAIEVYVFJBX0RJ U1QgPSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgaWYgRU5BQkxFX0VNT0pJX0RJQ1QK KyBBTV9WQUxBRkxBR1MgKz0gLS1kZWZpbmU9RU1PSklfRElDVAorIAorLWxpYmlidXNfZW1vamlf ZGlhbG9nID0gbGliaWJ1cy1lbW9qaS1kaWFsb2ctMS4wLmxhCistCistbm9pbnN0X0xUTElCUkFS SUVTID0gJChsaWJpYnVzX2Vtb2ppX2RpYWxvZykKKy0KKy1saWJpYnVzX2Vtb2ppX2RpYWxvZ18x XzBfbGFfQ0ZMQUdTID0gJChBTV9DRkxBR1MpCistbGliaWJ1c19lbW9qaV9kaWFsb2dfMV8wX2xh X0xERkxBR1MgPSAgIFwKKy0gICAgLW5vLXVuZGVmaW5lZCAgICAgICAgICAgICAgICAgICAgICAg XAorLSAgICAtZXhwb3J0LXN5bWJvbHMtcmVnZXggImlidXNfLioiICAgICBcCistICAgIC12ZXJz aW9uLWluZm8gQExUX1ZFUlNJT05fSU5GT0AgICAgIFwKKy0gICAgJChOVUxMKQorLWxpYmlidXNf ZW1vamlfZGlhbG9nXzFfMF9sYV9TT1VSQ0VTID0gICBcCistICAgIGNhbmRpZGF0ZWFyZWEudmFs YSAgICAgICAgICAgICAgICAgIFwKKy0gICAgZW1vamllci52YWxhICAgICAgICAgICAgICAgICAg ICAgICAgXAorLSAgICBpY29ud2lkZ2V0LnZhbGEgICAgICAgICAgICAgICAgICAgICBcCistICAg IHBhbmdvLnZhbGEgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgc2VwYXJhdG9yLnZh bGEgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAkKE5VTEwpCistCisgbGliZXhlY19QUk9H UkFNUyArPSBpYnVzLXVpLWVtb2ppZXIKKyAKKy1pYnVzX3VpX2Vtb2ppZXJfU09VUkNFUyA9ICAg ICAgICAgICAgICAgICAgICAgICBcCistICAgICQobGliaWJ1c19lbW9qaV9kaWFsb2dfMV8wX2xh X1NPVVJDRVMpICAgICAgXAorK2lidXNfdWlfZW1vamllcl9WQUxBU09VUkNFUyA9ICAgICAgICAg ICAgICAgICAgIFwKKyAgICAgZW1vamllcmFwcC52YWxhICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCisrICAgIGNhbmRpZGF0ZWFyZWEudmFsYSAgICAgICAgICAgICAgICAgICAgICAgICAg XAorKyAgICBlbW9qaWVyLnZhbGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysg ICAgaWNvbndpZGdldC52YWxhICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIHBh bmdvLnZhbGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICBzZXBhcmF0 b3IudmFsYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgJChOVUxMKQorK2li dXNfdWlfZW1vamllcl9TT1VSQ0VTID0gICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgJChp YnVzX3VpX2Vtb2ppZXJfVkFMQVNPVVJDRVM6LnZhbGE9LmMpICAgICBcCisgICAgICQoTlVMTCkK KyAKKyBpYnVzX3VpX2Vtb2ppZXJfTERBREQgPSAgICAgICAgICAgICAgICAgICAgICAgICBcCisg ICAgICQoQU1fTERBREQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAk KE5VTEwpCisgCistLWluY2x1ZGUgJChJTlRST1NQRUNUSU9OX01BS0VGSUxFKQorLUlOVFJPU1BF Q1RJT05fU0NBTk5FUl9BUkdTID0KKy1JTlRST1NQRUNUSU9OX0NPTVBJTEVSX0FSR1MgPSAgICAg IFwKKy0gICAgLS1pbmNsdWRlZGlyPSQoc3JjZGlyKSAgICAgICAgIFwKKy0gICAgLS1pbmNsdWRl ZGlyPS4gICAgICAgICAgICAgICAgIFwKKy0gICAgLS1pbmNsdWRlZGlyPSQodG9wX3NyY2Rpcikv c3JjIFwKKy0gICAgJChOVUxMKQorLQorLWlmIEhBVkVfSU5UUk9TUEVDVElPTgorLWludHJvc3Bl Y3Rpb25fc291cmNlcyA9ICAgICAgICAgICAgICAgIFwKKy0gICAgJChlbW9qaV9oZWFkZXJzKSAg ICAgICAgICAgICAgICAgICBcCistICAgICQoTlVMTCkKKy1JQnVzRW1vamlEaWFsb2ctMS4wLmdp cjogJChsaWJpYnVzX2Vtb2ppX2RpYWxvZykgTWFrZWZpbGUKKy1JQnVzRW1vamlEaWFsb2dfMV8w X2dpcl9TQ0FOTkVSRkxBR1MgPSBcCistICAgIC0tcGtnLWV4cG9ydD1pYnVzLTEuMCAgICAgICAg ICAgICAgXAorLSAgICAtLXBrZz1ndGsrLTMuMCAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAg JChJQlVTX0dJUl9TQ0FOTkVSRkxBR1MpICAgICAgICAgICBcCisraWJ1c191aV9lbW9qaWVyX1ZB TEFGTEFHUyA9ICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAkKEFNX1ZBTEFGTEFHUykgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgJChOVUxMKQorLUlCdXNFbW9qaURpYWxv Zy0xLjAuZ2lyOiAkKGxpYmlidXNfZW1vamlfZGlhbG9nKSBNYWtlZmlsZQorLUlCdXNFbW9qaURp YWxvZ18xXzBfZ2lyX0lOQ0xVREVTID0gR3RrLTMuMCBHTGliLTIuMCBHT2JqZWN0LTIuMCBHaW8t Mi4wCistSUJ1c0Vtb2ppRGlhbG9nXzFfMF9naXJfTElCUyA9ICQobGliaWJ1c19lbW9qaV9kaWFs b2cpICQobGliaWJ1cykKKy1JQnVzRW1vamlEaWFsb2dfMV8wX2dpcl9GSUxFUyA9ICAgICAgICAg ICAgICAgICAgICAgIFwKKy0gICAgJChhZGRwcmVmaXggJChzcmNkaXIpLywkKGludHJvc3BlY3Rp b25fc291cmNlcykpIFwKKy0gICAgJChOVUxMKQorLUlCdXNFbW9qaURpYWxvZ18xXzBfZ2lyX0NG TEFHUyA9ICAgICAgIFwKKy0gICAgLURJQlVTX0NPTVBJTEFUSU9OICAgICAgICAgICAgICAgICBc CistICAgIC1JJChzcmNkaXIpICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAtSSQoYnVp bGRkaXIpICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgLUkkKHRvcF9zcmNkaXIpL3NyYyAg ICAgICAgICAgICAgICBcCistICAgICQoTlVMTCkKKy1JTlRST1NQRUNUSU9OX0dJUlMgPSBJQnVz RW1vamlEaWFsb2ctMS4wLmdpcgorLQorLWdpcmRpciA9ICQoZGF0YWRpcikvZ2lyLTEuMAorLW5v aW5zdF9EQVRBICs9ICQoSU5UUk9TUEVDVElPTl9HSVJTKQorLUNMRUFORklMRVMgKz0gJChJTlRS T1NQRUNUSU9OX0dJUlMpCisgCistdHlwZWxpYnNkaXIgPSAkKGxpYmRpcikvZ2lyZXBvc2l0b3J5 LTEuMAorLW5vaW5zdF9EQVRBICs9ICQoSU5UUk9TUEVDVElPTl9HSVJTOi5naXI9LnR5cGVsaWIp CistQ0xFQU5GSUxFUyArPSAkKElOVFJPU1BFQ1RJT05fR0lSUzouZ2lyPS50eXBlbGliKQorLQor LQorLWlmIEVOQUJMRV9WQVBJR0VOCistLWluY2x1ZGUgJChWQVBJR0VOX01BS0VGSUxFKQorKyMg VGhpcyBsaW5lIGFuZCBmb29fVkFMQVNPVVJDRVMgbGluZSBjYW4gZGVsZXRlIHRoZSBkdXBsaWNh dGVkIGVudHJpZXMKKysjIG9mIGVtb2ppZXIuYzogZW1vamllci52YWxhCisrZW1vamllcmFwcC5j OiAkKGlidXNfdWlfZW1vamllcl9WQUxBU09VUkNFUykKKysJJChBTV9WX1ZBTEFDKSQoYW1fX2Nk KSAkKHNyY2RpcikgJiYgJChWQUxBQykgJChBTV9WQUxBRkxBR1MpIFwKKyskKFZBTEFGTEFHUykg LUMgJChpYnVzX3VpX2Vtb2ppZXJfVkFMQVNPVVJDRVMpCisrCSQoTlVMTCkKKysjIG1ha2UgZGlz dCBjcmVhdGVzIC5jIGZpbGVzIGluIGEgZGlmZmVyZW50IHNyY2RpcgorK2Vtb2ppZXJhcHAubzog JChzcmNkaXIpL2Vtb2ppZXJhcHAuYworKwkkKEFNX1ZfQ0Mpc291cmNlPSckPCcgb2JqZWN0PSck QCcgbGlidG9vbD1ubyBcCisrCURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29t cCkgXAorKwkkKEFNX1ZfQ0Nfbm8pJChDT01QSUxFKSAtYyAtbyAkQCAkPAorKwkkKE5VTEwpCisg CistaWJ1cy1lbW9qaS1kaWFsb2ctMS4wLnZhcGk6ICQoSU5UUk9TUEVDVElPTl9HSVJTKSBJQnVz RW1vamlEaWFsb2ctMS4wLm1ldGFkYXRhCisraWYgRU5BQkxFX0hBUkZCVVpaX0ZPUl9FTU9KSQor K2lidXNfdWlfZ3RrM19TT1VSQ0VTICs9ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAg aWJ1c2ZvbnRzZXQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICQoTlVM TCkKKyAKKy1WQVBJR0VOX1ZBUElTID0gaWJ1cy1lbW9qaS1kaWFsb2ctMS4wLnZhcGkKKytpYnVz X3VpX2Vtb2ppZXJfU09VUkNFUyArPSAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIGlidXNm b250c2V0LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAkKE5VTEwpCisg CistaWJ1c19lbW9qaV9kaWFsb2dfMV8wX3ZhcGlfREVQUyA9IGd0aystMy4wIGdpby0yLjAKKy1p YnVzX2Vtb2ppX2RpYWxvZ18xXzBfdmFwaV9NRVRBREFUQURJUlMgPSAkKHNyY2RpcikKKy1pYnVz X2Vtb2ppX2RpYWxvZ18xXzBfdmFwaV9GSUxFUyA9ICQoSU5UUk9TUEVDVElPTl9HSVJTKQorK0FN X0NGTEFHUyArPSBcCisrICAgIEBDQUlST19DRkxBR1NAICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorKyAgICBARk9OVENPTkZJR19DRkxBR1NAICAgICAgICAgICAgICAgICAgICAgICAg IFwKKysgICAgQEhBUkZCVVpaX0NGTEFHU0AgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisr ICAgICQoTlVMTCkKKyAKKy12YXBpZGlyID0gJChkYXRhZGlyKS92YWxhL3ZhcGkKKy1ub2luc3Rf REFUQSArPSAkKFZBUElHRU5fVkFQSVMpICQoVkFQSUdFTl9WQVBJUzoudmFwaT0uZGVwcykKKytB TV9MREFERCArPSBcCisrICAgIEBDQUlST19MSUJTQCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorKyAgICBARk9OVENPTkZJR19MSUJTQCAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKKysgICAgQEhBUkZCVVpaX0xJQlNAICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisr ICAgICQoTlVMTCkKKyAKKy1NQUlOVEFJTkVSQ0xFQU5GSUxFUyArPSAkKFZBUElHRU5fVkFQSVMp CistRElTVENMRUFORklMRVMgKz0gJChWQVBJR0VOX1ZBUElTKQorLUVYVFJBX0RJU1QgKz0gJChW QVBJR0VOX1ZBUElTKQorK0FNX1ZBTEFGTEFHUyArPSBcCisrICAgIC1EIEVOQUJMRV9IQVJGQlVa Wl9GT1JfRU1PSkkgICAgICAgICAgICAgICAgXAorKyAgICAtLXBrZz1jYWlybyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgLS1wa2c9aWJ1cy1mb250c2V0LTEuMCAgICAg ICAgICAgICAgICAgICAgICBcCisrICAgICQoTlVMTCkKKyAKKy0jIGVuZCBvZiBFTkFCTEVfVkFQ SUdFTgorLWVuZGlmCistIyBlbmQgb2YgSEFWRV9JTlRST1NQRUNUSU9OCisgZW5kaWYKKysjIGVu ZCBvZiBFTkFCTEVfSEFSRkJVWlpfRk9SX0VNT0pJCisgCisgbWFuX3NldmVuX2ZpbGVzID0gJCht YW5fc2V2ZW5faW5fZmlsZXM6LjcuaW49LjcpCisgbWFuX3NldmVuX0RBVEEgPSQobWFuX3NldmVu X2ZpbGVzOi43PS43Lmd6KQorQEAgLTI3Niw3ICsyNDUsNyBAQCBDTEVBTkZJTEVTICs9IFwKKyAg ICAgJChtYW5fc2V2ZW5fZmlsZXMpIFwKKyAgICAgJChOVUxMKQorIAorLSMgZW5kIG9mIEVOQUJM RV9FTU9KSV9ESUNUCisgZW5kaWYKKysjIGVuZCBvZiBFTkFCTEVfRU1PSklfRElDVAorIAorIC1p bmNsdWRlICQodG9wX3NyY2RpcikvZ2l0Lm1rCitkaWZmIC0tZ2l0IGEvdWkvZ3RrMy9lbW9qaWVy LnZhbGEgYi91aS9ndGszL2Vtb2ppZXIudmFsYQoraW5kZXggOTU5MTJiZi4uNzJlMDA5MyAxMDA2 NDQKKy0tLSBhL3VpL2d0azMvZW1vamllci52YWxhCisrKysgYi91aS9ndGszL2Vtb2ppZXIudmFs YQorQEAgLTgwLDYgKzgwLDkgQEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25X aW5kb3cgeworICAgICAgICAgfQorICAgICB9CisgICAgIHByaXZhdGUgY2xhc3MgRVdoaXRlTGFi ZWwgOiBHdGsuTGFiZWwgeworKyNpZiBFTkFCTEVfSEFSRkJVWlpfRk9SX0VNT0pJCisrICAgICAg ICBJQnVzLlJlcXVpc2l0aW9uRXggbV9yZXF1aXNpdGlvbjsKKysjZW5kaWYKKyAgICAgICAgIHB1 YmxpYyBFV2hpdGVMYWJlbChzdHJpbmcgdGV4dCkgeworICAgICAgICAgICAgIEdMaWIuT2JqZWN0 KAorICAgICAgICAgICAgICAgICBuYW1lIDogIklCdXNFbW9qaWVyV2hpdGVMYWJlbCIKK0BAIC04 Nyw4ICs5MCw3OCBAQCBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7 CisgICAgICAgICAgICAgaWYgKHRleHQgIT0gIiIpCisgICAgICAgICAgICAgICAgIHNldF9sYWJl bCh0ZXh0KTsKKyAgICAgICAgIH0KKysjaWYgRU5BQkxFX0hBUkZCVVpaX0ZPUl9FTU9KSQorKyAg ICAgICAgcHJpdmF0ZSB2b2lkIGdldF9wcmVmZXJyZWRfc2l6ZV93aXRoX2hiKG91dCBpbnQgbWlu aW11bV93aWR0aCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBvdXQgaW50IG5hdHVyYWxfd2lkdGgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgb3V0IGludCBtaW5pbXVtX2hlaWdodCwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgaW50IG5hdHVyYWxfaGVp Z2h0KSB7CisrICAgICAgICAgICAgbWluaW11bV93aWR0aCA9IDA7CisrICAgICAgICAgICAgbmF0 dXJhbF93aWR0aCA9IDA7CisrICAgICAgICAgICAgbWluaW11bV9oZWlnaHQgPSAwOworKyAgICAg ICAgICAgIG5hdHVyYWxfaGVpZ2h0ID0gMDsKKysgICAgICAgICAgICB2YXIgdGV4dCA9IHRoaXMu Z2V0X3RleHQoKTsKKysgICAgICAgICAgICBpZiAodGV4dCA9PSBudWxsIHx8IHRleHQgPT0gIiIp CisrICAgICAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgICAgICB2YXIgY29udGV4dCA9IHRo aXMuZ2V0X3BhbmdvX2NvbnRleHQoKTsKKysgICAgICAgICAgICB2YXIgbGFuZ3VhZ2UgPSBjb250 ZXh0LmdldF9sYW5ndWFnZSgpOworKyAgICAgICAgICAgIHVwZGF0ZV9mb250c2V0KGxhbmd1YWdl KTsKKysgICAgICAgICAgICBDYWlyby5SZWN0YW5nbGVJbnQgd2lkZXN0ID0gQ2Fpcm8uUmVjdGFu Z2xlSW50KCk7CisrICAgICAgICAgICAgbV9yZXF1aXNpdGlvbiA9IG1fZm9udHNldC5nZXRfcHJl ZmVycmVkX3NpemVfaGIodGV4dCwgb3V0IHdpZGVzdCk7CisrICAgICAgICAgICAgbWluaW11bV93 aWR0aCA9IHdpZGVzdC53aWR0aDsKKysgICAgICAgICAgICBuYXR1cmFsX3dpZHRoID0gd2lkZXN0 LndpZHRoOworKyAgICAgICAgICAgIG1pbmltdW1faGVpZ2h0ID0gd2lkZXN0LmhlaWdodDsKKysg ICAgICAgICAgICBuYXR1cmFsX2hlaWdodCA9IHdpZGVzdC5oZWlnaHQ7CisrICAgICAgICB9Cisr ICAgICAgICBwdWJsaWMgb3ZlcnJpZGUgdm9pZCBnZXRfcHJlZmVycmVkX3dpZHRoKG91dCBpbnQg bWluaW11bV93aWR0aCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgb3V0IGludCBuYXR1cmFsX3dpZHRoKSB7CisrICAgICAgICAgICAgZ2V0X3ByZWZl cnJlZF9zaXplX3dpdGhfaGIob3V0IG1pbmltdW1fd2lkdGgsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgb3V0IG5hdHVyYWxfd2lkdGgsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwgbnVsbCk7CisrICAgICAgICB9CisrICAgICAg ICBwdWJsaWMgb3ZlcnJpZGUgdm9pZCBnZXRfcHJlZmVycmVkX2hlaWdodChvdXQgaW50IG1pbmlt dW1faGVpZ2h0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb3V0IGludCBuYXR1cmFsX2hlaWdodCkgeworKyAgICAgICAgICAgIGdldF9wcmVmZXJy ZWRfc2l6ZV93aXRoX2hiKG51bGwsIG51bGwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgb3V0IG1pbmltdW1faGVpZ2h0LAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG91dCBuYXR1cmFsX2hlaWdodCk7CisrICAgICAgICB9CisrICAgICAg ICBwdWJsaWMgb3ZlcnJpZGUgYm9vbCBkcmF3KENhaXJvLkNvbnRleHQgY3IpIHsKKysgICAgICAg ICAgICBpZiAobV9mb250c2V0ID09IG51bGwpCisrICAgICAgICAgICAgICAgIHJldHVybiB0cnVl OworKyAgICAgICAgICAgIGlmIChtX3JlcXVpc2l0aW9uID09IG51bGwpCisrICAgICAgICAgICAg ICAgIHJldHVybiB0cnVlOyAKKysgICAgICAgICAgICBpZiAobV9yZXF1aXNpdGlvbi5jYWlyb19s aW5lcyA9PSBudWxsKQorKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgCisrICAgICAgICAg ICAgdmFyIHN0eWxlX2NvbnRleHQgPSBnZXRfc3R5bGVfY29udGV4dCgpOworKyAgICAgICAgICAg IEd0ay5BbGxvY2F0aW9uIGFsbG9jYXRpb247CisrICAgICAgICAgICAgZ2V0X2FsbG9jYXRpb24o b3V0IGFsbG9jYXRpb24pOworKyAgICAgICAgICAgIHN0eWxlX2NvbnRleHQucmVuZGVyX2JhY2tn cm91bmQoY3IsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw LCAwLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb2Nh dGlvbi53aWR0aCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGFsbG9jYXRpb24uaGVpZ2h0KTsKKysgICAgICAgICAgICBHZGsuUkdCQSAqbm9ybWFsX2ZnID0g bnVsbDsKKysgICAgICAgICAgICBzdHlsZV9jb250ZXh0LmdldChHdGsuU3RhdGVGbGFncy5OT1JN QUwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbG9yIiwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBvdXQgbm9ybWFsX2ZnKTsKKysgICAgICAgICAgICBjci5zZXRf b3BlcmF0b3IoQ2Fpcm8uT3BlcmF0b3IuT1ZFUik7CisrICAgICAgICAgICAgY3Iuc2V0X3NvdXJj ZV9yZ2JhKG5vcm1hbF9mZy5yZWQsIG5vcm1hbF9mZy5ncmVlbiwgbm9ybWFsX2ZnLmJsdWUsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbF9mZy5hbHBoYSk7CisrICAgICAg ICAgICAgY3Iuc2F2ZSgpOworKyAgICAgICAgICAgIGRvdWJsZSB4ID0gMC4wOworKyAgICAgICAg ICAgIGRvdWJsZSB5ID0gMC4wOworKyAgICAgICAgICAgIGlmIChhbGxvY2F0aW9uLndpZHRoID4g bV9yZXF1aXNpdGlvbi53aWR0aCkKKysgICAgICAgICAgICAgICAgeCA9IChhbGxvY2F0aW9uLndp ZHRoIC0gbV9yZXF1aXNpdGlvbi53aWR0aCkgLyAyLjA7CisrICAgICAgICAgICAgaWYgKGFsbG9j YXRpb24uaGVpZ2h0ID4gbV9yZXF1aXNpdGlvbi5oZWlnaHQpCisrICAgICAgICAgICAgICAgIHkg PSAoYWxsb2NhdGlvbi5oZWlnaHQgLSBtX3JlcXVpc2l0aW9uLmhlaWdodCkgLyAyLjA7CisrICAg ICAgICAgICAgY3IudHJhbnNsYXRlKHgsIHkpOworKyAgICAgICAgICAgIG1fZm9udHNldC5kcmF3 X2NhaXJvX3dpdGhfcmVxdWlzaXRpb25fZXgoY3IsIG1fcmVxdWlzaXRpb24pOworKyAgICAgICAg ICAgIGNyLnJlc3RvcmUoKTsKKysgICAgICAgICAgICBub3JtYWxfZmcuZnJlZSgpOworKyAgICAg ICAgICAgIG5vcm1hbF9mZyA9IG51bGw7CisrICAgICAgICAgICAgcmV0dXJuIHRydWU7CisrICAg ICAgICB9CisrI2VuZGlmCisgICAgIH0KKy0gICAgcHJpdmF0ZSBjbGFzcyBFU2VsZWN0ZWRMYWJl bCA6IEd0ay5MYWJlbCB7CisrICAgIHByaXZhdGUgY2xhc3MgRVNlbGVjdGVkTGFiZWwgOiBFV2hp dGVMYWJlbCB7CisgICAgICAgICBwdWJsaWMgRVNlbGVjdGVkTGFiZWwoc3RyaW5nIHRleHQpIHsK KyAgICAgICAgICAgICBHTGliLk9iamVjdCgKKyAgICAgICAgICAgICAgICAgbmFtZSA6ICJJQnVz RW1vamllclNlbGVjdGVkTGFiZWwiCitAQCAtOTcsNyArMTcwLDcgQEAgY2xhc3MgSUJ1c0Vtb2pp ZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgeworICAgICAgICAgICAgICAgICBzZXRfbGFiZWwo dGV4dCk7CisgICAgICAgICB9CisgICAgIH0KKy0gICAgcHJpdmF0ZSBjbGFzcyBFR29sZExhYmVs IDogR3RrLkxhYmVsIHsKKysgICAgcHJpdmF0ZSBjbGFzcyBFR29sZExhYmVsIDogRVdoaXRlTGFi ZWwgeworICAgICAgICAgcHVibGljIEVHb2xkTGFiZWwoc3RyaW5nIHRleHQpIHsKKyAgICAgICAg ICAgICBHTGliLk9iamVjdCgKKyAgICAgICAgICAgICAgICAgbmFtZSA6ICJJQnVzRW1vamllckdv bGRMYWJlbCIKK0BAIC0yMTIsNiArMjg1LDkgQEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBw bGljYXRpb25XaW5kb3cgeworICAgICAgICAgICAgIG1fY2F0ZWdvcnlfdG9fZW1vamlzX2RpY3Q7 CisgICAgIHByaXZhdGUgc3RhdGljIEdMaWIuSGFzaFRhYmxlPHN0cmluZywgR0xpYi5TTGlzdDxz dHJpbmc+Pj8KKyAgICAgICAgICAgICBtX2Vtb2ppX3RvX2Vtb2ppX3ZhcmlhbnRzX2RpY3Q7Cisr I2lmIEVOQUJMRV9IQVJGQlVaWl9GT1JfRU1PSkkKKysgICAgcHJpdmF0ZSBzdGF0aWMgSUJ1cy5G b250U2V0IG1fZm9udHNldDsKKysjZW5kaWYKKyAKKyAgICAgcHJpdmF0ZSBUaGVtZWRSR0JBIG1f cmdiYTsKKyAgICAgcHJpdmF0ZSBHdGsuQm94IG1fdmJveDsKK0BAIC0xMTIwLDYgKzExOTYsNyBA QCBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7CisgICAgICAgICAg ICAgICAgICAgICBtX2NhdGVnb3J5X2FjdGl2ZV9pbmRleCA9IChpbnQpbGlzdC5sZW5ndGgoKTsK KyAgICAgICAgIH0KKyAgICAgICAgIEd0ay5BZGp1c3RtZW50IGFkanVzdG1lbnQgPSBtX2xpc3Rf Ym94LmdldF9hZGp1c3RtZW50KCk7CisrICAgICAgICBtX3Njcm9sbGVkX3dpbmRvdy5zZXRfaGFk anVzdG1lbnQobmV3IEd0ay5BZGp1c3RtZW50KDAsIDAsIDAsIDAsIDAsIDApKTsKKyAgICAgICAg IG1fc2Nyb2xsZWRfd2luZG93LnNldF92YWRqdXN0bWVudChhZGp1c3RtZW50KTsKKyAgICAgICAg IHNob3dfY2F0ZWdvcnlfbGlzdCgpOworICAgICB9CitAQCAtMTEzNyw3ICsxMjE0LDcgQEAgY2xh c3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgeworICAgICAgICAgICAgIGVs c2UgaWYgKGtleXZhbCA9PSBHZGsuS2V5LlJpZ2h0KQorICAgICAgICAgICAgICAgICBtX2xvb2t1 cF90YWJsZS5jdXJzb3JfZG93bigpOworICAgICAgICAgICAgIHNob3dfY2FuZGlkYXRlX3BhbmVs KCk7CistICAgICAgICB9IGVsc2UgaWYgKG1fZW50cnkuZ2V0X3RleHQoKS5sZW4oKSA+IDApIHsK KysgICAgICAgIH0gZWxzZSBpZiAobV9lbnRyeS5nZXRfdGV4dCgpLmxlbmd0aCA+IDApIHsKKyAg ICAgICAgICAgICBpbnQgc3RlcCA9IDA7CisgICAgICAgICAgICAgaWYgKGtleXZhbCA9PSBHZGsu S2V5LkxlZnQpCisgICAgICAgICAgICAgICAgIHN0ZXAgPSAtMTsKK0BAIC0xMTkyLDcgKzEyNjks NyBAQCBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7CisgICAgICAg ICAgICAgc2hvd19jYW5kaWRhdGVfcGFuZWwoKTsKKyAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK KyAgICAgICAgIH0KKy0gICAgICAgIGlmIChtX2VudHJ5LmdldF90ZXh0KCkubGVuKCkgPiAwKSB7 CisrICAgICAgICBpZiAobV9lbnRyeS5nZXRfdGV4dCgpLmxlbmd0aCA+IDApIHsKKyAgICAgICAg ICAgICBpbnQgc3RlcCA9IDA7CisgICAgICAgICAgICAgaWYgKGtleXZhbCA9PSBHZGsuS2V5Lkhv bWUpCisgICAgICAgICAgICAgICAgIHN0ZXAgPSAtMTsKK0BAIC0xMzkxLDcgKzE0NjgsNyBAQCBj bGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7CisgICAgICAgICAgICAg a2V5X3ByZXNzX2VudGVyKCk7CisgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICBj YXNlIEdkay5LZXkuQmFja1NwYWNlOgorLSAgICAgICAgICAgIGlmIChtX2VudHJ5LmdldF90ZXh0 KCkubGVuKCkgPiAwKSB7CisrICAgICAgICAgICAgaWYgKG1fZW50cnkuZ2V0X3RleHQoKS5sZW5n dGggPiAwKSB7CisgICAgICAgICAgICAgICAgIGlmICgobW9kaWZpZXJzICYgR2RrLk1vZGlmaWVy VHlwZS5DT05UUk9MX01BU0spICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgIEdMaWIuU2ln bmFsLmVtaXRfYnlfbmFtZShtX2VudHJ5LCAiZGVsZXRlLWZyb20tY3Vyc29yIiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHdGsuRGVsZXRlVHlwZS5XT1JE X0VORFMsIC0xKTsKK0BAIC0xNDAzLDcgKzE0ODAsNyBAQCBjbGFzcyBJQnVzRW1vamllciA6IEd0 ay5BcHBsaWNhdGlvbldpbmRvdyB7CisgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICBjYXNl IEdkay5LZXkuRGVsZXRlOgorICAgICAgICAgY2FzZSBHZGsuS2V5LktQX0RlbGV0ZToKKy0gICAg ICAgICAgICBpZiAobV9lbnRyeS5nZXRfdGV4dCgpLmxlbigpID4gMCkgeworKyAgICAgICAgICAg IGlmIChtX2VudHJ5LmdldF90ZXh0KCkubGVuZ3RoID4gMCkgeworICAgICAgICAgICAgICAgICBp ZiAoKG1vZGlmaWVycyAmIEdkay5Nb2RpZmllclR5cGUuQ09OVFJPTF9NQVNLKSAhPSAwKSB7Cisg ICAgICAgICAgICAgICAgICAgICBHTGliLlNpZ25hbC5lbWl0X2J5X25hbWUobV9lbnRyeSwgImRl bGV0ZS1mcm9tLWN1cnNvciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR3RrLkRlbGV0ZVR5cGUuV09SRF9FTkRTLCAxKTsKK0BAIC0xNDE3LDcgKzE0OTQs NyBAQCBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7CisgICAgICAg ICBjYXNlIEdkay5LZXkuc3BhY2U6CisgICAgICAgICBjYXNlIEdkay5LZXkuS1BfU3BhY2U6Cisg ICAgICAgICAgICAgaWYgKChtb2RpZmllcnMgJiBHZGsuTW9kaWZpZXJUeXBlLlNISUZUX01BU0sp ICE9IDApIHsKKy0gICAgICAgICAgICAgICAgaWYgKG1fZW50cnkuZ2V0X3RleHQoKS5sZW4oKSA+ IDApCisrICAgICAgICAgICAgICAgIGlmIChtX2VudHJ5LmdldF90ZXh0KCkubGVuZ3RoID4gMCkK KyAgICAgICAgICAgICAgICAgICAgIGVudHJ5X2VudGVyX2tleXZhbChrZXl2YWwpOworICAgICAg ICAgICAgIH0gZWxzZSBpZiAobV9jYW5kaWRhdGVfcGFuZWxfaXNfdmlzaWJsZSkgeworICAgICAg ICAgICAgICAgICBlbnRlcl9ub3RpZnlfZGlzYWJsZV93aXRoX3RpbWVyKCk7CitAQCAtMTQ5Myw3 ICsxNTcwLDcgQEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewor ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgIGJyZWFr OworICAgICAgICAgICAgIGNhc2UgR2RrLktleS51OgorLSAgICAgICAgICAgICAgICBpZiAobV9l bnRyeS5nZXRfdGV4dCgpLmxlbigpID4gMCkgeworKyAgICAgICAgICAgICAgICBpZiAobV9lbnRy eS5nZXRfdGV4dCgpLmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgIEdMaWIuU2ln bmFsLmVtaXRfYnlfbmFtZShtX2VudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJkZWxldGUtZnJvbS1jdXJzb3IiLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEd0ay5EZWxldGVUeXBlLlBBUkFHUkFQSF9FTkRT LAorQEAgLTE1MDIsMTMgKzE1NzksMTMgQEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGlj YXRpb25XaW5kb3cgeworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIGJyZWFr OworICAgICAgICAgICAgIGNhc2UgR2RrLktleS5hOgorLSAgICAgICAgICAgICAgICBpZiAobV9l bnRyeS5nZXRfdGV4dCgpLmxlbigpID4gMCkgeworKyAgICAgICAgICAgICAgICBpZiAobV9lbnRy eS5nZXRfdGV4dCgpLmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgIG1fZW50cnku c2VsZWN0X3JlZ2lvbigwLCAtMSk7CisgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK KyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg ICBjYXNlIEdkay5LZXkueDoKKy0gICAgICAgICAgICAgICAgaWYgKG1fZW50cnkuZ2V0X3RleHQo KS5sZW4oKSA+IDApIHsKKysgICAgICAgICAgICAgICAgaWYgKG1fZW50cnkuZ2V0X3RleHQoKS5s ZW5ndGggPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICBHTGliLlNpZ25hbC5lbWl0X2J5X25h bWUobV9lbnRyeSwgImN1dC1jbGlwYm9hcmQiKTsKKyAgICAgICAgICAgICAgICAgICAgIHJldHVy biB0cnVlOworICAgICAgICAgICAgICAgICB9CitAQCAtMTUyNSw3ICsxNjAyLDcgQEAgY2xhc3Mg SUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgeworICAgICAgICAgICAgICAgICAg ICAgICAgIGNsaXBib2FyZC5zdG9yZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy biB0cnVlOworICAgICAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICB9IGVsc2Ug aWYgKG1fZW50cnkuZ2V0X3RleHQoKS5sZW4oKSA+IDApIHsKKysgICAgICAgICAgICAgICAgfSBl bHNlIGlmIChtX2VudHJ5LmdldF90ZXh0KCkubGVuZ3RoID4gMCkgeworICAgICAgICAgICAgICAg ICAgICAgR0xpYi5TaWduYWwuZW1pdF9ieV9uYW1lKG1fZW50cnksICJjb3B5LWNsaXBib2FyZCIp OworICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgIH0K K0BAIC0xNTgxLDYgKzE2NTgsMjIgQEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRp b25XaW5kb3cgeworICAgICB9CisgCisgCisrI2lmIEVOQUJMRV9IQVJGQlVaWl9GT1JfRU1PSkkK KysgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCB1cGRhdGVfZm9udHNldChQYW5nby5MYW5ndWFnZSBs YW5ndWFnZSkgeworKyAgICAgICAgaWYgKG1fZm9udHNldCAhPSBudWxsKSB7CisrICAgICAgICAg ICAgbV9mb250c2V0LnNldF9mYW1pbHkobV9lbW9qaV9mb250X2ZhbWlseSk7CisrICAgICAgICAg ICAgbV9mb250c2V0LnNldF9zaXplKG1fZW1vamlfZm9udF9zaXplKTsKKysgICAgICAgICAgICBt X2ZvbnRzZXQuc2V0X2xhbmd1YWdlKGxhbmd1YWdlLnRvX3N0cmluZygpKTsKKysgICAgICAgICAg ICBtX2ZvbnRzZXQudXBkYXRlX2ZjZm9udHNldCgpOworKyAgICAgICAgfSBlbHNlIHsKKysgICAg ICAgICAgICBtX2ZvbnRzZXQgPSBuZXcgSUJ1cy5Gb250U2V0LndpdGhfZm9udCgKKysgICAgICAg ICAgICAgICAgICAgIG1fZW1vamlfZm9udF9mYW1pbHksCisrICAgICAgICAgICAgICAgICAgICBt X2Vtb2ppX2ZvbnRfc2l6ZSwKKysgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlLnRvX3N0cmlu ZygpKTsKKysgICAgICAgIH0KKysgICAgfQorKyNlbmRpZgorKworICAgICBwdWJsaWMgc3RhdGlj IGJvb2wgaGFzX2xvYWRlZF9lbW9qaV9kaWN0KCkgeworICAgICAgICAgaWYgKG1fZW1vamlfdG9f ZGF0YV9kaWN0ID09IG51bGwpCisgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworQEAgLTE2MTEs NiArMTcwNCwxMCBAQCBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7 CisgICAgICAgICBpbnQgZm9udF9zaXplID0gZm9udF9kZXNjLmdldF9zaXplKCkgLyBQYW5nby5T Q0FMRTsKKyAgICAgICAgIGlmIChmb250X3NpemUgIT0gMCkKKyAgICAgICAgICAgICBtX2Vtb2pp X2ZvbnRfc2l6ZSA9IGZvbnRfc2l6ZTsKKysjaWYgRU5BQkxFX0hBUkZCVVpaX0ZPUl9FTU9KSQor KyAgICAgICAgdmFyIHdpZGdldCA9IG5ldyBHdGsuTGFiZWwoIiIpOworKyAgICAgICAgdXBkYXRl X2ZvbnRzZXQod2lkZ2V0LmdldF9wYW5nb19jb250ZXh0KCkuZ2V0X2xhbmd1YWdlKCkpOworKyNl bmRpZgorICAgICB9CisgCisgCitkaWZmIC0tZ2l0IGEvdWkvZ3RrMy9pYnVzZW1vamlkaWFsb2cu aCBiL3VpL2d0azMvaWJ1c2Vtb2ppZGlhbG9nLmgKK2luZGV4IDI0ZDE5NWMuLmVkODg4NmEgMTAw NjQ0CistLS0gYS91aS9ndGszL2lidXNlbW9qaWRpYWxvZy5oCisrKysgYi91aS9ndGszL2lidXNl bW9qaWRpYWxvZy5oCitAQCAtMTcwLDUgKzE3MCwzMSBAQCB2b2lkICAgICAgICAgIGlidXNfZW1v amllcl9zZXRfZmF2b3JpdGVzICAgICAgICAgIChnY2hhcioqICAgICAgZmF2b3JpdGVzLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhdm9yaXRl X2Fubm90YXRpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGZhdm9yaXRlX2Fubm90YXRpb25zX2xlbmd0aCk7CisrCisrLyoqCisrICogaWJ1 c19lbW9qaWVyX3NldF9wYXJ0aWFsX21hdGNoOgorKyAqIEBoYXNfcGFydGlhbF9tYXRjaDogRW5h YmxlIHRoZSBwYXJ0aWFsIG1hdGNoIGlmICVUUlVFLiBPdGhlcndpc2UgaWYgJUZBTFNFLgorKyAq CisrICogU2V0IHBhcnRpYWwgbWF0Y2ggZm9yIGVtb2ppIGFubm90YXRpb25zLgorKyAqLworK3Zv aWQgICAgICAgICAgaWJ1c19lbW9qaWVyX3NldF9wYXJ0aWFsX21hdGNoICAgICAgKGdib29sZWFu ICBoYXNfcGFydGlhbF9tYXRjaCk7CisrCisrLyoqCisrICogaWJ1c19lbW9qaWVyX3NldF9wYXJ0 aWFsX21hdGNoX2xlbmd0aDoKKysgKiBAbGVuZ3RoOiBtaW5pbXVtIGxlbmdodCB0byBtYXRjaCBw YXJ0aWFsbHkuCisrICoKKysgKiBTZXQgdGhlIG1pbmltdW0gbGVuZ2h0IHRvIG1hdGNoIHBhcnRp YWxseS4KKysgKi8KKyt2b2lkICAgICAgICAgIGlidXNfZW1vamllcl9zZXRfcGFydGlhbF9tYXRj aF9sZW5ndGgKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChnaW50ICAgICAgICAgbGVuZ3RoKTsKKysKKysvKioKKysgKiBpYnVzX2Vtb2ppZXJfc2V0 X3BhcnRpYWxfbWF0Y2hfY29uZGl0aW9uOgorKyAqIEBjb25kaXRpb246IGNvbmRpdGlvbiBpZCBi ZXR3ZWVuIDAgYW5kIDIuCisrICoKKysgKiBTZXQgdGhlIHBhcnRpYWwgbWF0Y2ggY29uZGl0aW9u IHdpdGggdGhlIGludGVnZXIuCisrICovCisrdm9pZCAgICAgICAgICBpYnVzX2Vtb2ppZXJfc2V0 X3BhcnRpYWxfbWF0Y2hfY29uZGl0aW9uCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoZ2ludCAgICAgICAgIGNvbmRpdGlvbik7CisgR19FTkRfREVD TFMKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS91aS9ndGszL2lidXNmb250c2V0LmMgYi91aS9ndGsz L2lidXNmb250c2V0LmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi43MmRm YTI4CistLS0gL2Rldi9udWxsCisrKysgYi91aS9ndGszL2lidXNmb250c2V0LmMKK0BAIC0wLDAg KzEsOTIyIEBACisrLyogLSotIG1vZGU6IEM7IGMtYmFzaWMtb2Zmc2V0OiA0OyBpbmRlbnQtdGFi cy1tb2RlOiBuaWw7IC0qLSAqLworKy8qIHZpbTpzZXQgZXQgc3RzPTQ6ICovCisrLyogaWJ1cyAt IFRoZSBJbnB1dCBCdXMKKysgKiBDb3B5cmlnaHQgKEMpIDIwMTcgVGFrYW8gRnVqaXdhcmEgPHRh a2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+CisrICogQ29weXJpZ2h0IChDKSAyMDE3IFJlZCBIYXQs IEluYy4KKysgKgorKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKysgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisrICogdmVyc2lvbiAyLjEgb2Yg dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrICoK KysgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKKysgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICogTGVzc2VyIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgKgorKyAqIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgKiBM aWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl IFNvZnR3YXJlCisrICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0 aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMQorKyAqIFVTQQorKyAqLworKworKyNpbmNs dWRlIDxjYWlyby1mdC5oPgorKyNpbmNsdWRlIDxmb250Y29uZmlnL2ZvbnRjb25maWcuaD4KKysj aW5jbHVkZSA8ZnQyYnVpbGQuaD4KKysjaW5jbHVkZSBGVF9GUkVFVFlQRV9ICisrI2luY2x1ZGUg PGdsaWIuaD4KKysjaW5jbHVkZSA8aGItb3QuaD4KKysjaW5jbHVkZSA8cGFuZ28vcGFuZ28uaD4K KysKKysjaW5jbHVkZSAiaWJ1c2ZvbnRzZXQuaCIKKysKKysjZGVmaW5lIFhQQUQgMgorKyNkZWZp bmUgWVBBRCAyCisrI2RlZmluZSBVTktOT1dOX0ZPTlRfU0laRSA3CisrI2RlZmluZSBJQlVTX0ZP TlRTRVRfR0VUX1BSSVZBVEUobykgIFwKKysgICAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRF ICgobyksIElCVVNfVFlQRV9GT05UU0VULCBJQnVzRm9udFNldFByaXZhdGUpKQorKworKworK3N0 YXRpYyBGVF9MaWJyYXJ5ICBtX2Z0bGlicmFyeTsKKytzdGF0aWMgRmNGb250U2V0ICAqbV9mY2Zv bnRzZXQ7Cisrc3RhdGljIGdjaGFyICAgICAgKm1fZmFtaWx5OworK3N0YXRpYyBndWludCAgICAg ICBtX3NpemU7Cisrc3RhdGljIGdjaGFyICAgICAgKm1fbGFuZ3VhZ2U7Cisrc3RhdGljIEdIYXNo VGFibGUgKm1fc2NhbGVkX2ZvbnRfdGFibGU7Cisrc3RhdGljIEdIYXNoVGFibGUgKm1faGJfZm9u dF90YWJsZTsKKysKKytlbnVtIHsKKysgICAgUFJPUF8wLAorKyAgICBQUk9QX0ZBTUlMWSwKKysg ICAgUFJPUF9TSVpFLAorKyAgICBQUk9QX0xBTkdVQUdFCisrfTsKKysKKyt0eXBlZGVmIHN0cnVj dCB7CisrICAgIGd1bmljaGFyICAgY2g7CisrICAgIEZjUGF0dGVybiAqZmNmb250OworK30gRm9u dFBlckNoYXI7CisrCisrc3RydWN0IF9JQnVzRm9udFNldFByaXZhdGUgeworKyAgICBnY2hhciAg ICAgKmZhbWlseTsKKysgICAgZ3VpbnQgICAgICBzaXplOworKyAgICBnY2hhciAgICAgKmxhbmd1 YWdlOworK307CisrCisrc3RhdGljIEdPYmplY3QgKiBpYnVzX2ZvbnRzZXRfY29uc3RydWN0b3Ig ICAoR1R5cGUgICAgICAgICAgICAgICAgICB0eXBlLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAgICAgbiwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHT2JqZWN0Q29uc3RydWN0UGFy YW0gKmFyZ3MpOworK3N0YXRpYyB2b2lkICAgICAgaWJ1c19mb250c2V0X2Rlc3Ryb3kgICAgICAg KElCdXNGb250U2V0ICAgICAgICAgICAqZm9udHNldCk7Cisrc3RhdGljIHZvaWQgICAgICBpYnVz X2ZvbnRzZXRfc2V0X3Byb3BlcnR5ICAoSUJ1c0ZvbnRTZXQgICAgICAgICAgICpmb250c2V0LAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAg ICAgICAgICAgICAgcHJvcF9pZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBHVmFsdWUgICAgICAgICAgKnZhbHVlLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdQYXJhbVNwZWMgICAgICAgICAgICAqcHNw ZWMpOworK3N0YXRpYyB2b2lkICAgICAgaWJ1c19mb250c2V0X2dldF9wcm9wZXJ0eSAgKElCdXNG b250U2V0ICAgICAgICAgICAqZm9udHNldCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAgICAgICAgIHByb3BfaWQsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1ZhbHVlICAgICAgICAgICAg ICAgICp2YWx1ZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBHUGFyYW1TcGVjICAgICAgICAgICAgKnBzcGVjKTsKKytzdGF0aWMgY2Fpcm9fc2NhbGVkX2Zv bnRfdCAqCisrICAgICAgICAgICAgICAgICBpYnVzX2ZvbnRzZXRfY2Fpcm9fc2NhbGVkX2ZvbnRf bmV3X3dpdGhfZm9udAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGNvbnN0IGdjaGFyICAgICAgICAgICAqZmFtaWx5LAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAgICAgc2l6ZSk7Cisr CisrR19ERUZJTkVfQk9YRURfVFlQRSAoSUJ1c0NhaXJvTGluZSwKKysgICAgICAgICAgICAgICAg ICAgICBpYnVzX2NhaXJvX2xpbmUsCisrICAgICAgICAgICAgICAgICAgICAgaWJ1c19jYWlyb19s aW5lX2NvcHksCisrICAgICAgICAgICAgICAgICAgICAgaWJ1c19jYWlyb19saW5lX2ZyZWUpOwor K0dfREVGSU5FX0JPWEVEX1RZUEUgKElCdXNSZXF1aXNpdGlvbkV4LAorKyAgICAgICAgICAgICAg ICAgICAgIGlidXNfcmVxdWlzaXRpb25fZXgsCisrICAgICAgICAgICAgICAgICAgICAgaWJ1c19y ZXF1aXNpdGlvbl9leF9jb3B5LAorKyAgICAgICAgICAgICAgICAgICAgIGlidXNfcmVxdWlzaXRp b25fZXhfZnJlZSk7CisrR19ERUZJTkVfVFlQRSAoSUJ1c0ZvbnRTZXQsIGlidXNfZm9udHNldCwg SUJVU19UWVBFX09CSkVDVCkKKysKKytzdGF0aWMgdm9pZAorK2lidXNfZm9udHNldF9jbGFzc19p bml0IChJQnVzRm9udFNldENsYXNzICpjbGFzcykKKyt7CisrICAgIEdPYmplY3RDbGFzcyAqZ29i amVjdF9jbGFzcyA9IEdfT0JKRUNUX0NMQVNTIChjbGFzcyk7CisrICAgIElCdXNPYmplY3RDbGFz cyAqb2JqZWN0X2NsYXNzID0gSUJVU19PQkpFQ1RfQ0xBU1MgKGNsYXNzKTsKKysgICAgY2Fpcm9f Z2x5cGhfdCBkdW1teTsKKysgICAgSUJ1c0dseXBoIGR1bW15MjsKKysKKysgICAgZ29iamVjdF9j bGFzcy0+Y29uc3RydWN0b3IgPSBpYnVzX2ZvbnRzZXRfY29uc3RydWN0b3I7CisrICAgIGdvYmpl Y3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9CisrICAgICAgICAgICAgKEdPYmplY3RHZXRQcm9wZXJ0 eUZ1bmMpIGlidXNfZm9udHNldF9nZXRfcHJvcGVydHk7CisrICAgIGdvYmplY3RfY2xhc3MtPnNl dF9wcm9wZXJ0eSA9CisrICAgICAgICAgICAgKEdPYmplY3RTZXRQcm9wZXJ0eUZ1bmMpIGlidXNf Zm9udHNldF9zZXRfcHJvcGVydHk7CisrICAgIG9iamVjdF9jbGFzcy0+ZGVzdHJveSA9IChJQnVz T2JqZWN0RGVzdHJveUZ1bmMpIGlidXNfZm9udHNldF9kZXN0cm95OworKworKyAgICAvKiBpbnN0 YWxsIHByb3BlcnRpZXMgKi8KKysgICAgLyoqCisrICAgICAqIElCdXNGb250U2V0OmZhbWlseToK KysgICAgICoKKysgICAgICogRm9udCBmYW1pbHkgb2YgdGhpcyBJQnVzRm9udFNldC4KKysgICAg ICovCisrICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3Ms CisrICAgICAgICAgICAgICAgICAgICBQUk9QX0ZBTUlMWSwKKysgICAgICAgICAgICAgICAgICAg IGdfcGFyYW1fc3BlY19zdHJpbmcgKCJmYW1pbHkiLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICJmYW1pbHkiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICJmYW1pbHkiLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICIiLAorKyAgICAgICAgICAgICAgICAgICAgICAgIEdfUEFSQU1fUkVB RFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1QpKTsKKysKKysgICAgLyoqCisrICAgICAqIElCdXNG b250U2V0OnNpemU6CisrICAgICAqCisrICAgICAqIEZvbnQgc2l6ZSBvZiB0aGlzIElCdXNGb250 U2V0LgorKyAgICAgKi8KKysgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29i amVjdF9jbGFzcywKKysgICAgICAgICAgICAgICAgICAgIFBST1BfU0laRSwKKysgICAgICAgICAg ICAgICAgICAgIGdfcGFyYW1fc3BlY191aW50ICgic2l6ZSIsCisrICAgICAgICAgICAgICAgICAg ICAgICAgInNpemUiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICJzaXplIiwKKysgICAgICAg ICAgICAgICAgICAgICAgICAwLCBHX01BWFVJTlQxNiwgMCwKKysgICAgICAgICAgICAgICAgICAg ICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUKSk7CisrCisrICAgIC8q KgorKyAgICAgKiBJQnVzRm9udFNldDpsYW5ndWFnZToKKysgICAgICoKKysgICAgICogRm9udCBs YW5ndWFnZSBvZiB0aGlzIElCdXNGb250U2V0LgorKyAgICAgKi8KKysgICAgZ19vYmplY3RfY2xh c3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKysgICAgICAgICAgICAgICAgICAg IFBST1BfTEFOR1VBR0UsCisrICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5n ICgibGFuZ3VhZ2UiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICJsYW5ndWFnZSIsCisrICAg ICAgICAgICAgICAgICAgICAgICAgImxhbmd1YWdlIiwKKysgICAgICAgICAgICAgICAgICAgICAg ICAiIiwKKysgICAgICAgICAgICAgICAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFS QU1fQ09OU1RSVUNUKSk7CisrCisrICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZSAoY2xhc3Ms IHNpemVvZiAoSUJ1c0ZvbnRTZXRQcml2YXRlKSk7CisrICAgIEZUX0luaXRfRnJlZVR5cGUgKCZt X2Z0bGlicmFyeSk7CisrICAgIG1fc2NhbGVkX2ZvbnRfdGFibGUgPSBnX2hhc2hfdGFibGVfbmV3 X2Z1bGwgKAorKyAgICAgICAgICAgIGdfc3RyX2hhc2gsIGdfc3RyX2VxdWFsLAorKyAgICAgICAg ICAgIGdfZnJlZSwKKysgICAgICAgICAgICAoR0Rlc3Ryb3lOb3RpZnkpIGNhaXJvX3NjYWxlZF9m b250X2Rlc3Ryb3kpOworKyAgICBtX2hiX2ZvbnRfdGFibGUgPSBnX2hhc2hfdGFibGVfbmV3X2Z1 bGwgKAorKyAgICAgICAgICAgIGdfc3RyX2hhc2gsIGdfc3RyX2VxdWFsLAorKyAgICAgICAgICAg IGdfZnJlZSwKKysgICAgICAgICAgICAoR0Rlc3Ryb3lOb3RpZnkpIGhiX2ZvbnRfZGVzdHJveSk7 CisrCisrICAgIC8qIGhiX2dseXBoX3QgaXMgbm90IGF2YWlsYWJsZSBpbiBWYWxhIHNvIG92ZXJy aWRlIGl0IHdpdGggSUJ1c0dseXBoLiAqLworKyAgICBnX2Fzc2VydCAoc2l6ZW9mIChkdW1teSkg PT0gc2l6ZW9mIChkdW1teTIpKTsKKysgICAgZ19hc3NlcnQgKHNpemVvZiAoZHVtbXkuaW5kZXgp ID09IHNpemVvZiAoZHVtbXkyLmluZGV4KSk7CisrICAgIGdfYXNzZXJ0IChzaXplb2YgKGR1bW15 LngpID09IHNpemVvZiAoZHVtbXkyLngpKTsKKysgICAgZ19hc3NlcnQgKHNpemVvZiAoZHVtbXku eSkgPT0gc2l6ZW9mIChkdW1teTIueSkpOworK30KKysKKytzdGF0aWMgdm9pZAorK2lidXNfZm9u dHNldF9pbml0IChJQnVzRm9udFNldCAqZm9udHNldCkKKyt7CisrICAgIGZvbnRzZXQtPnByaXYg PSBJQlVTX0ZPTlRTRVRfR0VUX1BSSVZBVEUgKGZvbnRzZXQpOworK30KKysKKysKKytzdGF0aWMg R09iamVjdCAqCisraWJ1c19mb250c2V0X2NvbnN0cnVjdG9yIChHVHlwZSAgICAgICAgICAgICAg ICAgICB0eXBlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAg ICAgICAgbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIEdPYmplY3RDb25zdHJ1Y3RQYXJh bSAgKmFyZ3MpCisreworKyAgICBHT2JqZWN0ICpvYmplY3Q7CisrICAgIElCdXNGb250U2V0ICpm b250c2V0OworKyAgICBjb25zdCBnY2hhciAqZmFtaWx5OworKyAgICBndWludCBzaXplOworKwor KyAgICBvYmplY3QgPSBHX09CSkVDVF9DTEFTUyAoaWJ1c19mb250c2V0X3BhcmVudF9jbGFzcykt PmNvbnN0cnVjdG9yICgKKysgICAgICAgICAgICB0eXBlLCBuICxhcmdzKTsKKysgICAgZm9udHNl dCA9IElCVVNfRk9OVFNFVCAob2JqZWN0KTsKKysgICAgZmFtaWx5ID0gaWJ1c19mb250c2V0X2dl dF9mYW1pbHkgKGZvbnRzZXQpOworKyAgICBzaXplID0gaWJ1c19mb250c2V0X2dldF9zaXplIChm b250c2V0KTsKKysgICAgaWJ1c19mb250c2V0X3VwZGF0ZV9mY2ZvbnRzZXQgKGZvbnRzZXQpOwor KyAgICBpZiAoZmFtaWx5ICE9IE5VTEwgJiYgc2l6ZSA+IDApIHsKKysgICAgICAgIC8qIGNhY2hl IHRoZSBmb250ICovCisrICAgICAgICBpYnVzX2ZvbnRzZXRfY2Fpcm9fc2NhbGVkX2ZvbnRfbmV3 X3dpdGhfZm9udCAoZmFtaWx5LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNpemUpOworKyAgICB9CisrICAgIHJldHVybiBvYmplY3Q7Cisr fQorKworK3N0YXRpYyB2b2lkCisraWJ1c19mb250c2V0X2Rlc3Ryb3kgKElCdXNGb250U2V0ICpm b250c2V0KQorK3sKKysgICAgZ19jbGVhcl9wb2ludGVyICgmZm9udHNldC0+cHJpdi0+ZmFtaWx5 LCBnX2ZyZWUpOworKyAgICBnX2NsZWFyX3BvaW50ZXIgKCZmb250c2V0LT5wcml2LT5sYW5ndWFn ZSwgZ19mcmVlKTsKKyt9CisrCisrc3RhdGljIHZvaWQKKytpYnVzX2ZvbnRzZXRfc2V0X3Byb3Bl cnR5IChJQnVzRm9udFNldCAgKmZvbnRzZXQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg Z3VpbnQgICAgICAgICBwcm9wX2lkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IEdWYWx1ZSAqdmFsdWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgR1BhcmFtU3BlYyAg ICpwc3BlYykKKyt7CisrICAgIHN3aXRjaCAocHJvcF9pZCkgeworKyAgICBjYXNlIFBST1BfRkFN SUxZOgorKyAgICAgICAgaWJ1c19mb250c2V0X3NldF9mYW1pbHkgKGZvbnRzZXQsIGdfdmFsdWVf Z2V0X3N0cmluZyAodmFsdWUpKTsKKysgICAgICAgIGJyZWFrOworKyAgICBjYXNlIFBST1BfU0la RToKKysgICAgICAgIGlidXNfZm9udHNldF9zZXRfc2l6ZSAoZm9udHNldCwgZ192YWx1ZV9nZXRf dWludCAodmFsdWUpKTsKKysgICAgICAgIGJyZWFrOworKyAgICBjYXNlIFBST1BfTEFOR1VBR0U6 CisrICAgICAgICBpYnVzX2ZvbnRzZXRfc2V0X2xhbmd1YWdlIChmb250c2V0LCBnX3ZhbHVlX2dl dF9zdHJpbmcgKHZhbHVlKSk7CisrICAgICAgICBicmVhazsKKysgICAgZGVmYXVsdDoKKysgICAg ICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAoZm9udHNldCwgcHJvcF9pZCwg cHNwZWMpOworKyAgICB9CisrfQorKworK3N0YXRpYyB2b2lkCisraWJ1c19mb250c2V0X2dldF9w cm9wZXJ0eSAoSUJ1c0ZvbnRTZXQgKmZvbnRzZXQsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ3VpbnQgICAgICAgICAgcHJvcF9pZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBH VmFsdWUgICAgICAgICp2YWx1ZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBHUGFyYW1T cGVjICAgICpwc3BlYykKKyt7CisrICAgIHN3aXRjaCAocHJvcF9pZCkgeworKyAgICBjYXNlIFBS T1BfRkFNSUxZOgorKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nICh2YWx1ZSwgaWJ1c19mb250 c2V0X2dldF9mYW1pbHkgKGZvbnRzZXQpKTsKKysgICAgICAgIGJyZWFrOworKyAgICBjYXNlIFBS T1BfU0laRToKKysgICAgICAgIGdfdmFsdWVfc2V0X3VpbnQgKHZhbHVlLCBpYnVzX2ZvbnRzZXRf Z2V0X3NpemUgKGZvbnRzZXQpKTsKKysgICAgICAgIGJyZWFrOworKyAgICBjYXNlIFBST1BfTEFO R1VBR0U6CisrICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcgKHZhbHVlLCBpYnVzX2ZvbnRzZXRf Z2V0X2xhbmd1YWdlIChmb250c2V0KSk7CisrICAgICAgICBicmVhazsKKysgICAgZGVmYXVsdDoK KysgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAoZm9udHNldCwgcHJv cF9pZCwgcHNwZWMpOworKyAgICB9CisrfQorKworK3N0YXRpYyBjYWlyb19zY2FsZWRfZm9udF90 ICoKKytpYnVzX2ZvbnRzZXRfY2Fpcm9fc2NhbGVkX2ZvbnRfbmV3X3dpdGhfZm9udCAoY29uc3Qg Z2NoYXIgKmZhbWlseSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ3VpbnQgICAgICAgIHNpemUpCisreworKyAgICBnY2hhciAqZm9udF9uYW1lOworKyAg ICBjYWlyb19zY2FsZWRfZm9udF90ICpzY2FsZWRfZm9udCA9IE5VTEw7CisrICAgIEZjUGF0dGVy biAqcGF0dGVybiwgKnJlc29sdmVkOworKyAgICBGY1Jlc3VsdCByZXN1bHQ7CisrICAgIGNhaXJv X2ZvbnRfb3B0aW9uc190ICpmb250X29wdGlvbnM7CisrICAgIGRvdWJsZSBwaXhlbF9zaXplID0g MC47CisrICAgIEZjTWF0cml4IGZjX21hdHJpeCwgKmZjX21hdHJpeF92YWw7CisrICAgIGNhaXJv X2ZvbnRfZmFjZV90ICpjYWlyb19mYWNlID0gTlVMTDsKKysgICAgY2Fpcm9fbWF0cml4X3QgZm9u dF9tYXRyaXg7CisrICAgIGNhaXJvX21hdHJpeF90IGN0bTsKKysgICAgaW50IGk7CisrCisrICAg IGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChmYW1pbHkgIT0gTlVMTCwgTlVMTCk7CisrICAgIGdfcmV0 dXJuX3ZhbF9pZl9mYWlsIChtX3NjYWxlZF9mb250X3RhYmxlICE9IE5VTEwsIE5VTEwpOworKwor KyAgICBmb250X25hbWUgPSBnX3N0cmR1cF9wcmludGYgKCIlcyAldSIsIGZhbWlseSwgc2l6ZSk7 CisrICAgIHNjYWxlZF9mb250ID0gZ19oYXNoX3RhYmxlX2xvb2t1cCAobV9zY2FsZWRfZm9udF90 YWJsZSwgZm9udF9uYW1lKTsKKysgICAgaWYgKHNjYWxlZF9mb250ICE9IE5VTEwpIHsKKysgICAg ICAgIGdfZnJlZSAoZm9udF9uYW1lKTsKKysgICAgICAgIHJldHVybiBzY2FsZWRfZm9udDsKKysg ICAgfQorKyAgICBwYXR0ZXJuID0gRmNQYXR0ZXJuQ3JlYXRlICgpOworKyAgICBGY1BhdHRlcm5B ZGRTdHJpbmcgKHBhdHRlcm4sIEZDX0ZBTUlMWSwgKEZjQ2hhcjgqKSBmYW1pbHkpOworKyAgICBG Y1BhdHRlcm5BZGREb3VibGUgKHBhdHRlcm4sIEZDX1NJWkUsIChkb3VibGUpIHNpemUpOworKyAg ICBGY1BhdHRlcm5BZGREb3VibGUgKHBhdHRlcm4sIEZDX0RQSSwgOTYpOworKyAgICBGY0NvbmZp Z1N1YnN0aXR1dGUoTlVMTCwgcGF0dGVybiwgRmNNYXRjaFBhdHRlcm4pOworKyAgICBmb250X29w dGlvbnMgPSBjYWlyb19mb250X29wdGlvbnNfY3JlYXRlICgpOworKyAgICBjYWlyb19mdF9mb250 X29wdGlvbnNfc3Vic3RpdHV0ZSAoZm9udF9vcHRpb25zLCBwYXR0ZXJuKTsKKysgICAgRmNEZWZh dWx0U3Vic3RpdHV0ZSAocGF0dGVybik7CisrICAgIHJlc29sdmVkID0gRmNGb250TWF0Y2ggKE5V TEwsIHBhdHRlcm4sICZyZXN1bHQpOworKyAgICBGY1BhdHRlcm5EZXN0cm95IChwYXR0ZXJuKTsK KysgICAgRmNQYXR0ZXJuR2V0RG91YmxlIChyZXNvbHZlZCwgRkNfUElYRUxfU0laRSwgMCwgJnBp eGVsX3NpemUpOworKyAgICBpZiAocGl4ZWxfc2l6ZSA9PSAwLikKKysgICAgICAgIGdfd2Fybmlu ZyAoIkZhaWxlZCB0byBzY2FsZWQgdGhlIGZvbnQ6ICVzICV1IiwgZmFtaWx5LCBzaXplKTsKKysg ICAgY2Fpcm9fZmFjZSA9IGNhaXJvX2Z0X2ZvbnRfZmFjZV9jcmVhdGVfZm9yX3BhdHRlcm4gKHJl c29sdmVkKTsKKysgICAgRmNNYXRyaXhJbml0ICgmZmNfbWF0cml4KTsKKysgICAgZm9yIChpID0g MDsKKysgICAgICAgICBGY1BhdHRlcm5HZXRNYXRyaXggKHJlc29sdmVkLCBGQ19NQVRSSVgsIGks ICZmY19tYXRyaXhfdmFsKQorKyAgICAgICAgICAgICAgICAgPT0gRmNSZXN1bHRNYXRjaDsKKysg ICAgICAgICBpKyspIHsKKysgICAgICAgIEZjTWF0cml4TXVsdGlwbHkgKCZmY19tYXRyaXgsICZm Y19tYXRyaXgsIGZjX21hdHJpeF92YWwpOworKyAgICB9CisrICAgIEZjUGF0dGVybkRlc3Ryb3kg KHJlc29sdmVkKTsKKysgICAgY2Fpcm9fbWF0cml4X2luaXQgKCZmb250X21hdHJpeCwKKysgICAg ICAgICAgICAgICAgICAgICAgIGZjX21hdHJpeC54eCwgLWZjX21hdHJpeC55eCwKKysgICAgICAg ICAgICAgICAgICAgICAgIC1mY19tYXRyaXgueHksIGZjX21hdHJpeC55eSwKKysgICAgICAgICAg ICAgICAgICAgICAgIDAuLCAwLik7CisrICAgIGlmIChwaXhlbF9zaXplICE9IDAuKQorKyAgICAg ICAgY2Fpcm9fbWF0cml4X3NjYWxlICgmZm9udF9tYXRyaXgsIHBpeGVsX3NpemUsIHBpeGVsX3Np emUpOworKyAgICBjYWlyb19tYXRyaXhfaW5pdF9pZGVudGl0eSAoJmN0bSk7CisrICAgIHNjYWxl ZF9mb250ID0gY2Fpcm9fc2NhbGVkX2ZvbnRfY3JlYXRlIChjYWlyb19mYWNlLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvbnRfbWF0cml4LCAmY3RtLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udF9vcHRpb25z KTsKKysgICAgY2Fpcm9fZm9udF9mYWNlX2Rlc3Ryb3kgKGNhaXJvX2ZhY2UpOworKyAgICBpZiAo Zm9udF9uYW1lKQorKyAgICAgICAgZ19oYXNoX3RhYmxlX2luc2VydChtX3NjYWxlZF9mb250X3Rh YmxlLCBmb250X25hbWUsIHNjYWxlZF9mb250KTsKKysKKysgICAgcmV0dXJuIHNjYWxlZF9mb250 OworK30KKysKKytzdGF0aWMgaGJfZm9udF90ICoKKytpYnVzX2ZvbnRzZXRfaGJfZm9udF9uZXdf d2l0aF9mb250X3BhdGggKGNvbnN0IGdjaGFyICpmb250X3BhdGgpCisreworKyAgICBoYl9mb250 X3QgKmhiX2ZvbnQ7CisrICAgIEdFcnJvciAqZXJyb3IgPSBOVUxMOworKyAgICBHTWFwcGVkRmls ZSAqbWY7CisrICAgIGNoYXIgKmZvbnRfZGF0YSA9IE5VTEw7CisrICAgIGdzaXplIGxlbjsKKysg ICAgaGJfYmxvYl90ICpoYl9ibG9iOworKyAgICBoYl9mYWNlX3QgKmhiX2ZhY2U7CisrCisrICAg IGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChmb250X3BhdGggIT0gTlVMTCwgTlVMTCk7CisrICAgIGdf cmV0dXJuX3ZhbF9pZl9mYWlsIChtX2hiX2ZvbnRfdGFibGUgIT0gTlVMTCwgTlVMTCk7CisrCisr ICAgIGhiX2ZvbnQgPSBnX2hhc2hfdGFibGVfbG9va3VwIChtX2hiX2ZvbnRfdGFibGUsIGZvbnRf cGF0aCk7CisrICAgIGlmIChoYl9mb250ICE9IE5VTEwpCisrICAgICAgICByZXR1cm4gaGJfZm9u dDsKKysKKysgICAgbWYgPSBnX21hcHBlZF9maWxlX25ldyAoZm9udF9wYXRoLCBGQUxTRSwgJmVy cm9yKTsKKysgICAgaWYgKG1mID09IE5VTEwpIHsKKysgICAgICAgIGdfd2FybmluZyAoIk5vdCBm b3VuZCBmb250ICVzIiwgZm9udF9wYXRoKTsKKysgICAgICAgIHJldHVybiBOVUxMOworKyAgICB9 CisrICAgIGZvbnRfZGF0YSA9IGdfbWFwcGVkX2ZpbGVfZ2V0X2NvbnRlbnRzIChtZik7CisrICAg IGxlbiA9IGdfbWFwcGVkX2ZpbGVfZ2V0X2xlbmd0aCAobWYpOworKyAgICBpZiAobGVuID09IDAp IHsKKysgICAgICAgIGdfd2FybmluZyAoInplcm8gc2l6ZSBmb250ICVzIiwgZm9udF9wYXRoKTsK KysgICAgICAgIGdfbWFwcGVkX2ZpbGVfdW5yZWYgKG1mKTsKKysgICAgICAgIHJldHVybiBOVUxM OworKyAgICB9CisrICAgIGhiX2Jsb2IgPSBoYl9ibG9iX2NyZWF0ZSAoZm9udF9kYXRhLCBsZW4s CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEJfTUVNT1JZX01PREVfUkVBRE9OTFlf TUFZX01BS0VfV1JJVEFCTEUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWYsICho Yl9kZXN0cm95X2Z1bmNfdClnX21hcHBlZF9maWxlX3VucmVmKTsKKysgICAgaGJfZmFjZSA9IGhi X2ZhY2VfY3JlYXRlIChoYl9ibG9iLCAwKTsKKysgICAgaGJfYmxvYl9kZXN0cm95IChoYl9ibG9i KTsKKysgICAgaGJfZm9udCA9IGhiX2ZvbnRfY3JlYXRlIChoYl9mYWNlKTsKKysgICAgdW5zaWdu ZWQgaW50IHVwZW0gPSBoYl9mYWNlX2dldF91cGVtIChoYl9mYWNlKTsKKysgICAgaGJfZm9udF9z ZXRfc2NhbGUgKGhiX2ZvbnQsIHVwZW0sIHVwZW0pOworKyAgICBoYl9mYWNlX2Rlc3Ryb3kgKGhi X2ZhY2UpOworKyAgICBoYl9vdF9mb250X3NldF9mdW5jcyAoaGJfZm9udCk7CisrICAgIGdfaGFz aF90YWJsZV9pbnNlcnQgKG1faGJfZm9udF90YWJsZSwgZ19zdHJkdXAgKGZvbnRfcGF0aCksIGhi X2ZvbnQpOworKworKyAgICByZXR1cm4gaGJfZm9udDsKKyt9CisrCisrc3RhdGljIHZvaWQKKytn ZXRfZm9udF9leHRlbnRzX3dpdGhfc2NhbGVkX2ZvbnQgKGNhaXJvX3NjYWxlZF9mb250X3QgKnNj YWxlZF9mb250LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFuZ29SZWN0 YW5nbGUgICAgICAqZm9udF9yZWN0KQorK3sKKysgICAgY2Fpcm9fZm9udF9leHRlbnRzX3QgZm9u dF9leHRlbnRzOworKworKyAgICBnX2Fzc2VydCAoc2NhbGVkX2ZvbnQgIT0gTlVMTCAmJiBmb250 X3JlY3QgIT0gTlVMTCk7CisrCisrICAgIGNhaXJvX3NjYWxlZF9mb250X2V4dGVudHMgKHNjYWxl ZF9mb250LCAmZm9udF9leHRlbnRzKTsKKysgICAgZm9udF9yZWN0LT54ID0gMDsKKysgICAgZm9u dF9yZWN0LT55ID0gLSBwYW5nb191bml0c19mcm9tX2RvdWJsZSAoZm9udF9leHRlbnRzLmFzY2Vu dCk7CisrICAgIGZvbnRfcmVjdC0+d2lkdGggPSAwOworKyAgICBmb250X3JlY3QtPmhlaWdodCA9 IHBhbmdvX3VuaXRzX2Zyb21fZG91YmxlICgKKysgICAgICAgICAgICBmb250X2V4dGVudHMuYXNj ZW50ICsgZm9udF9leHRlbnRzLmRlc2NlbnQpOworK30KKysKKytzdGF0aWMgdm9pZAorK2dldF9n bHlwaF9leHRlbnRzX3dpdGhfc2NhbGVkX2hiX2ZvbnQgKGNvbnN0IGdjaGFyICAgICAgICAgICpz dHIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Fpcm9fc2NhbGVk X2ZvbnRfdCAgKnNjYWxlZF9mb250LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGhiX2ZvbnRfdCAgICAgICAgICAgICpoYl9mb250LAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFBhbmdvUmVjdGFuZ2xlICAgICAgICpmb250X3JlY3QsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJ1c0NhaXJvTGluZSAgICAg ICAqKmNhaXJvX2xpbmVzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEZjQ2hhcjggICAgICAgICAgICAgICpmYWxsYmFja19mYW1pbHkpCisreworKyAgICBnYm9vbGVh biBoYXNfdW5rbm93bl9nbHlwaCA9IEZBTFNFOworKyAgICBoYl9idWZmZXJfdCAqaGJfYnVmZmVy OworKyAgICB1bnNpZ25lZCBpbnQgbGVuLCBuLCBpOworKyAgICBoYl9nbHlwaF9pbmZvX3QgKmlu Zm87CisrICAgIGhiX2dseXBoX3Bvc2l0aW9uX3QgKnBvczsKKysgICAgZG91YmxlIHg7CisrICAg IGNhaXJvX2dseXBoX3QgKmdseXBoOworKyAgICBjYWlyb190ZXh0X2V4dGVudHNfdCB0ZXh0X2V4 dGVudHMgPSB7IDAsIH07CisrCisrICAgIGdfcmV0dXJuX2lmX2ZhaWwgKHN0ciAhPSBOVUxMKTsK KysKKysgICAgaGJfYnVmZmVyID0gaGJfYnVmZmVyX2NyZWF0ZSAoKTsKKysgICAgaGJfYnVmZmVy X2FkZF91dGY4IChoYl9idWZmZXIsIHN0ciwgLTEsIDAsIC0xKTsKKysgICAgaGJfYnVmZmVyX2d1 ZXNzX3NlZ21lbnRfcHJvcGVydGllcyAoaGJfYnVmZmVyKTsKKysgICAgZm9yIChuID0gMDsgKmNh aXJvX2xpbmVzICYmICgqY2Fpcm9fbGluZXMpW25dLnNjYWxlZF9mb250OyBuKyspOworKyAgICBp ZiAobiA9PSAwKQorKyAgICAgICAgKmNhaXJvX2xpbmVzID0gZ19uZXcwIChJQnVzQ2Fpcm9MaW5l LCAyKTsKKysgICAgZWxzZQorKyAgICAgICAgKmNhaXJvX2xpbmVzID0gZ19yZW5ldyAoSUJ1c0Nh aXJvTGluZSwgKmNhaXJvX2xpbmVzLCBuICsgMik7CisrICAgICgqY2Fpcm9fbGluZXMpW24gKyAx XS5zY2FsZWRfZm9udCA9IE5VTEw7CisrICAgICgqY2Fpcm9fbGluZXMpW24gKyAxXS5udW1fZ2x5 cGhzID0gMDsKKysgICAgKCpjYWlyb19saW5lcylbbiArIDFdLmdseXBocyA9IE5VTEw7CisrICAg IGhiX3NoYXBlIChoYl9mb250LCBoYl9idWZmZXIsIE5VTEwsIDApOworKyAgICBsZW4gPSBoYl9i dWZmZXJfZ2V0X2xlbmd0aCAoaGJfYnVmZmVyKTsKKysgICAgaW5mbyA9IGhiX2J1ZmZlcl9nZXRf Z2x5cGhfaW5mb3MgKGhiX2J1ZmZlciwgTlVMTCk7CisrICAgIHBvcyA9IGhiX2J1ZmZlcl9nZXRf Z2x5cGhfcG9zaXRpb25zIChoYl9idWZmZXIsIE5VTEwpOworKyAgICAoKmNhaXJvX2xpbmVzKVtu XS5zY2FsZWRfZm9udCA9IHNjYWxlZF9mb250OworKyAgICAoKmNhaXJvX2xpbmVzKVtuXS5udW1f Z2x5cGhzID0gbGVuOworKyAgICAoKmNhaXJvX2xpbmVzKVtuXS5nbHlwaHMgPSAoSUJ1c0dseXBo KikgY2Fpcm9fZ2x5cGhfYWxsb2NhdGUgKGxlbiArIDEpOworKyAgICB4ID0gMC47CisrICAgIGZv ciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworKyAgICAgICAgaGJfY29kZXBvaW50X3QgYyA9IGlu Zm9baV0uY29kZXBvaW50OworKyAgICAgICAgaWYgKGMpIHsKKysgICAgICAgICAgICAoKmNhaXJv X2xpbmVzKVtuXS5nbHlwaHNbaV0uaW5kZXggPSBpbmZvW2ldLmNvZGVwb2ludDsKKysgICAgICAg ICAgICAoKmNhaXJvX2xpbmVzKVtuXS5nbHlwaHNbaV0ueCA9IHg7CisrICAgICAgICAgICAgKCpj YWlyb19saW5lcylbbl0uZ2x5cGhzW2ldLnkgPSAtZm9udF9yZWN0LT55IC8gUEFOR09fU0NBTEU7 CisrICAgICAgICAgICAgZ2x5cGggPSAoY2Fpcm9fZ2x5cGhfdCAqKSAmKCgqY2Fpcm9fbGluZXMp W25dLmdseXBoc1tpXSk7CisrICAgICAgICAgICAgY2Fpcm9fc2NhbGVkX2ZvbnRfZ2x5cGhfZXh0 ZW50cyAoc2NhbGVkX2ZvbnQsIGdseXBoLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDEsICZ0ZXh0X2V4dGVudHMpOworKyAgICAgICAgICAgIHggKz0gdGV4 dF9leHRlbnRzLndpZHRoOworKyAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICBoYXNfdW5r bm93bl9nbHlwaCA9IFRSVUU7CisrICAgICAgICAgICAgYyA9IGdfdXRmOF9nZXRfY2hhciAoc3Ry KTsKKysgICAgICAgICAgICAoKmNhaXJvX2xpbmVzKVtuXS5nbHlwaHNbaV0uaW5kZXggPSBQQU5H T19HRVRfVU5LTk9XTl9HTFlQSCAoYyk7CisrICAgICAgICAgICAgKCpjYWlyb19saW5lcylbbl0u Z2x5cGhzW2ldLnggPSB4OworKyAgICAgICAgICAgICgqY2Fpcm9fbGluZXMpW25dLmdseXBoc1tp XS55ID0gLWZvbnRfcmVjdC0+eSAvIFBBTkdPX1NDQUxFOworKyAgICAgICAgICAgIGdseXBoID0g KGNhaXJvX2dseXBoX3QgKikgJigoKmNhaXJvX2xpbmVzKVtuXS5nbHlwaHNbaV0pOworKyAgICAg ICAgICAgIGNhaXJvX3NjYWxlZF9mb250X2dseXBoX2V4dGVudHMgKHNjYWxlZF9mb250LCBnbHlw aCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAmdGV4 dF9leHRlbnRzKTsKKysgICAgICAgICAgICB4ICs9IDEwOworKyAgICAgICAgfQorKyAgICB9Cisr ICAgICgqY2Fpcm9fbGluZXMpW25dLmdseXBoc1tpXS5pbmRleCA9IC0xOworKyAgICAoKmNhaXJv X2xpbmVzKVtuXS5nbHlwaHNbaV0ueCA9IDA7CisrICAgICgqY2Fpcm9fbGluZXMpW25dLmdseXBo c1tpXS55ID0gMDsKKysgICAgZ2x5cGggPSAoY2Fpcm9fZ2x5cGhfdCAqKSAoKmNhaXJvX2xpbmVz KVtuXS5nbHlwaHM7CisrICAgIGNhaXJvX3NjYWxlZF9mb250X2dseXBoX2V4dGVudHMgKHNjYWxl ZF9mb250LCBnbHlwaCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVu LCAmdGV4dF9leHRlbnRzKTsKKysgICAgaWYgKHRleHRfZXh0ZW50cy53aWR0aCkgeworKyAgICAg ICAgZm9udF9yZWN0LT53aWR0aCA9IHBhbmdvX3VuaXRzX2Zyb21fZG91YmxlICh0ZXh0X2V4dGVu dHMud2lkdGgpOworKyAgICB9IGVsc2UgeworKyAgICAgICAgZm9udF9yZWN0LT53aWR0aCA9IGZv bnRfcmVjdC0+aGVpZ2h0OworKyAgICB9CisrICAgIGlmIChoYXNfdW5rbm93bl9nbHlwaCAmJiBm YWxsYmFja19mYW1pbHkgIT0gTlVMTCkgeworKyAgICAgICAgY2Fpcm9fc2NhbGVkX2ZvbnRfdCAg KnVua25vd25fZm9udDsKKysgICAgICAgIHVua25vd25fZm9udCA9IGlidXNfZm9udHNldF9jYWly b19zY2FsZWRfZm9udF9uZXdfd2l0aF9mb250ICgKKysgICAgICAgICAgICAoY29uc3QgZ2NoYXIg KikgZmFsbGJhY2tfZmFtaWx5LAorKyAgICAgICAgICAgIFVOS05PV05fRk9OVF9TSVpFKTsKKysg ICAgICAgICgqY2Fpcm9fbGluZXMpW25dLnNjYWxlZF9mb250ID0gdW5rbm93bl9mb250OworKyAg ICB9CisrICAgIGhiX2J1ZmZlcl9kZXN0cm95IChoYl9idWZmZXIpOworK30KKysKKytzdGF0aWMg dm9pZAorK2dldF9zdHJpbmdfZXh0ZW50c193aXRoX2ZvbnQgKGNvbnN0IGdjaGFyICAgICAgICAg ICAgKnN0ciwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb250UGVyQ2hhciAgICAg ICAgICAgICpidWZmLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhaXJvX3JlY3Rh bmdsZV9pbnRfdCAgKnJlY3QsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJ1c0Nh aXJvTGluZSAgICAgICAgICoqY2Fpcm9fbGluZXMpCisreworKyAgICBGY0NoYXI4ICpmYW1pbHkg PSBOVUxMOworKyAgICBGY0NoYXI4ICpmb250X3BhdGggPSBOVUxMOworKyAgICBndWludCBzaXpl ID0gMDsKKysgICAgY2Fpcm9fc2NhbGVkX2ZvbnRfdCAqc2NhbGVkX2ZvbnQgPSBOVUxMOworKyAg ICBQYW5nb1JlY3RhbmdsZSBmb250X3JlY3QgPSB7IDAsIH07CisrICAgIGhiX2ZvbnRfdCAqaGJf Zm9udDsKKysKKysgICAgZ19yZXR1cm5faWZfZmFpbCAoc3RyICE9IE5VTEwpOworKyAgICBnX3Jl dHVybl9pZl9mYWlsIChidWZmICE9IE5VTEwgJiYgYnVmZi0+ZmNmb250ICE9IE5VTEwpOworKwor KyAgICBGY1BhdHRlcm5HZXRTdHJpbmcgKGJ1ZmYtPmZjZm9udCwgRkNfRkFNSUxZLCAwLCAmZmFt aWx5KTsKKysgICAgZ19yZXR1cm5faWZfZmFpbCAoZmFtaWx5ICE9IE5VTEwpOworKyAgICBzaXpl ID0gbV9zaXplOworKyAgICBpZiAoc2l6ZSA9PSAwKSB7CisrICAgICAgICBnX3dhcm5pbmcgKCJG b250IHNpemUgaXMgbm90IHJpZ2h0IGZvciBmb250ICVzLiIsIGZhbWlseSk7CisrICAgICAgICBz aXplID0gMTQ7CisrICAgIH0KKysgICAgc2NhbGVkX2ZvbnQgPSBpYnVzX2ZvbnRzZXRfY2Fpcm9f c2NhbGVkX2ZvbnRfbmV3X3dpdGhfZm9udCAoCisrICAgICAgICAgICAgKGNvbnN0IGdjaGFyICop IGZhbWlseSwKKysgICAgICAgICAgICBzaXplKTsKKysgICAgZ19yZXR1cm5faWZfZmFpbCAoc2Nh bGVkX2ZvbnQgIT0gTlVMTCk7CisrICAgIGdldF9mb250X2V4dGVudHNfd2l0aF9zY2FsZWRfZm9u dCAoc2NhbGVkX2ZvbnQsICZmb250X3JlY3QpOworKworKyAgICBGY1BhdHRlcm5HZXRTdHJpbmcg KGJ1ZmYtPmZjZm9udCwgRkNfRklMRSwgMCwgJmZvbnRfcGF0aCk7CisrICAgIGdfcmV0dXJuX2lm X2ZhaWwgKGZvbnRfcGF0aCAhPSBOVUxMKTsKKysgICAgaGJfZm9udCA9IGlidXNfZm9udHNldF9o Yl9mb250X25ld193aXRoX2ZvbnRfcGF0aCAoCisrICAgICAgICAgICAgKGNvbnN0IGdjaGFyICop IGZvbnRfcGF0aCk7CisrICAgIGlmIChoYl9mb250ID09IE5VTEwpCisrICAgICAgICByZXR1cm47 CisrICAgIGdldF9nbHlwaF9leHRlbnRzX3dpdGhfc2NhbGVkX2hiX2ZvbnQgKHN0ciwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGVkX2ZvbnQsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhiX2ZvbnQsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb250X3JlY3QsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhaXJvX2xpbmVzLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYW1pbHkpOworKyAgICByZWN0 LT53aWR0aCArPSBmb250X3JlY3Qud2lkdGggLyBQQU5HT19TQ0FMRTsKKysgICAgcmVjdC0+aGVp Z2h0ICs9IGZvbnRfcmVjdC5oZWlnaHQgLyBQQU5HT19TQ0FMRTsKKyt9CisrCisrc3RhdGljIEZU X0ZhY2UKKytpYnVzX2ZvbnRzZXRfZ2V0X2Z0ZmFjZV9mcm9tX2ZjZm9udCAoSUJ1c0ZvbnRTZXQg KmZvbnRzZXQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZjUGF0dGVy biAgICpmY2ZvbnQpCisreworKyAgICBGY0NoYXI4ICpmb250X2ZpbGUgPSBOVUxMOworKyAgICBG VF9GYWNlIGZ0X2ZhY2U7CisrICAgIGd1aW50IHNpemUgPSBpYnVzX2ZvbnRzZXRfZ2V0X3NpemUg KGZvbnRzZXQpOworKworKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoSUJVU19JU19GT05UU0VU IChmb250c2V0KSwgTlVMTCk7CisrICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChmY2ZvbnQgIT0g TlVMTCwgTlVMTCk7CisrCisrICAgIHNpemUgPSBpYnVzX2ZvbnRzZXRfZ2V0X3NpemUgKGZvbnRz ZXQpOworKyAgICBGY1BhdHRlcm5HZXRTdHJpbmcgKGZjZm9udCwgRkNfRklMRSwgMCwgJmZvbnRf ZmlsZSk7CisrICAgIEZUX05ld19GYWNlIChtX2Z0bGlicmFyeSwgKGNvbnN0IGdjaGFyICopIGZv bnRfZmlsZSwgMCwgJmZ0X2ZhY2UpOworKyAgICBGVF9TZXRfUGl4ZWxfU2l6ZXMgKGZ0X2ZhY2Us IHNpemUsIHNpemUpOworKyAgICByZXR1cm4gZnRfZmFjZTsKKyt9CisrCisrdm9pZAorK19jYWly b19zaG93X3Vua25vd25fZ2x5cGhzIChjYWlyb190ICAgICAgICAgICAgICpjciwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2Fpcm9fZ2x5cGhfdCAqZ2x5cGhzLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAgICAgICBudW1fZ2x5cGhzLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAgICAgICB3aWR0aCwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgICAgaGVpZ2h0 KQorK3sKKysgICAgZ3VuaWNoYXIgY2g7CisrICAgIGdib29sZWFuIGludmFsaWRfaW5wdXQ7Cisr ICAgIGludCByb3dzID0gMjsKKysgICAgaW50IGNvbHM7CisrICAgIGludCByb3csIGNvbDsKKysg ICAgY2hhciBidWZbN107CisrICAgIGRvdWJsZSBjeCA9IDAuOworKyAgICBkb3VibGUgY3k7Cisr ICAgIGNvbnN0IGRvdWJsZSBib3hfZGVzY2VudCA9IDMuOworKyAgICBkb3VibGUgeDA7CisrICAg IGRvdWJsZSB5MDsKKysgICAgY29uc3QgZG91YmxlIGRpZ2l0X3dpZHRoID0gNS47CisrICAgIGNv bnN0IGRvdWJsZSBkaWdpdF9oZWlnaHQ9IDYuOworKyAgICBjaGFyIGhleGJveF9zdHJpbmdbMl0g PSB7MCwgMH07CisrCisrICAgIGdfYXNzZXJ0IChnbHlwaHMgIT0gTlVMTCk7CisrICAgIGdfYXNz ZXJ0IChudW1fZ2x5cGhzID4gMCk7CisrCisrICAgIGNoID0gZ2x5cGhzWzBdLmluZGV4ICYgflBB TkdPX0dMWVBIX1VOS05PV05fRkxBRzsKKysgICAgaW52YWxpZF9pbnB1dCA9IEdfVU5MSUtFTFkg KGdseXBoc1swXS5pbmRleCA9PSBQQU5HT19HTFlQSF9JTlZBTElEX0lOUFVUIHx8CisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjaCA+IDB4MTBGRkZGKTsKKysgICAgaWYgKEdfVU5M SUtFTFkgKGludmFsaWRfaW5wdXQpKSB7CisrICAgICAgZ193YXJuaW5nICgiVW5zdXBwb3J0ZWQg VSslMDZYIiwgIGNoKTsKKysgICAgICByZXR1cm47CisrICAgIH0KKysKKysgICAgY2Fpcm9fc2F2 ZSAoY3IpOworKworKyAgICBjb2xzID0gKGNoID4gMHhmZmZmID8gNiA6IDQpIC8gcm93czsKKysg ICAgZ19zbnByaW50ZiAoYnVmLCBzaXplb2YoYnVmKSwgKGNoID4gMHhmZmZmKSA/ICIlMDZYIiA6 ICIlMDRYIiwgY2gpOworKyAgICBjeSA9IChkb3VibGUpIGhlaWdodDsKKysgICAgeDAgPSBjeCAr IGJveF9kZXNjZW50ICsgWFBBRCAvIDI7CisrICAgIHkwID0gY3kgLSBib3hfZGVzY2VudCAtIFlQ QUQgLyAyOworKworKyAgICBmb3IgKHJvdyA9IDA7IHJvdyA8IHJvd3M7IHJvdysrKSB7CisrICAg ICAgICBkb3VibGUgeSA9IHkwIC0gKHJvd3MgLSAxIC0gcm93KSAqIChkaWdpdF9oZWlnaHQgKyBZ UEFEKTsKKysgICAgICAgIGZvciAoY29sID0gMDsgY29sIDwgY29sczsgY29sKyspIHsKKysgICAg ICAgICAgICBkb3VibGUgeCA9IHgwICsgY29sICogKGRpZ2l0X3dpZHRoICsgWFBBRCk7CisrICAg ICAgICAgICAgY2Fpcm9fbW92ZV90byAoY3IsIHgsIHkpOworKyAgICAgICAgICAgIGhleGJveF9z dHJpbmdbMF0gPSBidWZbcm93ICogY29scyArIGNvbF07CisrICAgICAgICAgICAgY2Fpcm9fc2hv d190ZXh0IChjciwgaGV4Ym94X3N0cmluZyk7CisrICAgICAgICB9CisrICAgIH0KKysgICAgY2Fp cm9fbW92ZV90byAoY3IsIFhQQUQsIFlQQUQpOworKyAgICBjYWlyb19saW5lX3RvIChjciwgd2lk dGggLSBYUEFELCBZUEFEKTsKKysgICAgY2Fpcm9fbGluZV90byAoY3IsIHdpZHRoIC0gWFBBRCwK KysgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCAtIFlQQUQpOworKyAgICBjYWlyb19saW5l X3RvIChjciwgWFBBRCwgaGVpZ2h0IC0gWVBBRCk7CisrICAgIGNhaXJvX2xpbmVfdG8gKGNyLCBY UEFELCBZUEFEKTsKKysgICAgY2Fpcm9fc2V0X2xpbmVfd2lkdGggKGNyLCAxLik7CisrICAgIGNh aXJvX3N0cm9rZSAoY3IpOworKworKyAgICBjYWlyb19yZXN0b3JlIChjcik7CisrfQorKworK0lC dXNDYWlyb0xpbmUgKgorK2lidXNfY2Fpcm9fbGluZV9jb3B5IChJQnVzQ2Fpcm9MaW5lICpjYWly b19saW5lcykKKyt7CisrICAgIElCdXNDYWlyb0xpbmUgKnJldDsKKysgICAgZ3VpbnQgbiwgaSwg aiwgbnVtX2dseXBoczsKKysgICAgaWYgKCFjYWlyb19saW5lcykKKysgICAgICAgIHJldHVybiBO VUxMOworKworKyAgICBmb3IgKG4gPSAwOyBjYWlyb19saW5lc1tuXS5zY2FsZWRfZm9udDsgbisr KTsKKysgICAgcmV0ID0gZ19uZXcwIChJQnVzQ2Fpcm9MaW5lLCBuICsgMSk7CisrICAgIGZvciAo aSA9IDA7IGkgPCBuOyBpKyspIHsKKysgICAgICAgIHJldFtpXS5zY2FsZWRfZm9udCA9IGNhaXJv X2xpbmVzW2ldLnNjYWxlZF9mb250OworKyAgICAgICAgbnVtX2dseXBocyA9IGNhaXJvX2xpbmVz W2ldLm51bV9nbHlwaHM7CisrICAgICAgICByZXRbaV0ubnVtX2dseXBocyA9IG51bV9nbHlwaHM7 CisrICAgICAgICByZXRbaV0uZ2x5cGhzID0gKElCdXNHbHlwaCAqKSBjYWlyb19nbHlwaF9hbGxv Y2F0ZSAobnVtX2dseXBocyArIDEpOworKyAgICAgICAgZm9yIChqID0gMDsgaiA8IG51bV9nbHlw aHM7IGorKykgeworKyAgICAgICAgICAgIHJldFtpXS5nbHlwaHNbal0gPSBjYWlyb19saW5lc1tp XS5nbHlwaHNbal07CisrICAgICAgICB9CisrICAgICAgICByZXRbaV0uZ2x5cGhzW2pdLmluZGV4 ID0gLTE7CisrICAgICAgICByZXRbaV0uZ2x5cGhzW2pdLnggPSAwOworKyAgICAgICAgcmV0W2ld LmdseXBoc1tqXS55ID0gMDsKKysgICAgfQorKyAgICByZXRbaV0uc2NhbGVkX2ZvbnQgPSBOVUxM OworKyAgICByZXRbaV0ubnVtX2dseXBocyA9IDA7CisrICAgIHJldFtpXS5nbHlwaHMgPSBOVUxM OworKyAgICByZXR1cm4gcmV0OworK30KKysKKyt2b2lkCisraWJ1c19jYWlyb19saW5lX2ZyZWUg KElCdXNDYWlyb0xpbmUgKmNhaXJvX2xpbmVzKQorK3sKKysgICAgZ3VpbnQgaTsKKysgICAgaWYg KCFjYWlyb19saW5lcykKKysgICAgICAgIHJldHVybjsKKysgICAgZm9yIChpID0gMDsgY2Fpcm9f bGluZXNbaV0uc2NhbGVkX2ZvbnQ7IGkrKykgeworKyAgICAgICAgZ19mcmVlIChjYWlyb19saW5l c1tpXS5nbHlwaHMpOworKyAgICB9CisrICAgIGdfZnJlZSAoY2Fpcm9fbGluZXMpOworK30KKysK KytJQnVzUmVxdWlzaXRpb25FeCAqCisraWJ1c19yZXF1aXNpdGlvbl9leF9jb3B5IChJQnVzUmVx dWlzaXRpb25FeCAqcmVxKQorK3sKKysgICAgSUJ1c1JlcXVpc2l0aW9uRXggKnJldDsKKysgICAg aWYgKCFyZXEpCisrICAgICAgICByZXR1cm4gTlVMTDsKKysgICAgcmV0ID0gZ19uZXcwIChJQnVz UmVxdWlzaXRpb25FeCwgMSk7CisrICAgIHJldC0+d2lkdGggPSByZXEtPndpZHRoOworKyAgICBy ZXQtPmhlaWdodCA9IHJlcS0+aGVpZ2h0OworKyAgICByZXQtPmNhaXJvX2xpbmVzID0gaWJ1c19j YWlyb19saW5lX2NvcHkgKHJlcS0+Y2Fpcm9fbGluZXMpOworKyAgICByZXR1cm4gcmV0OworK30K KysKKyt2b2lkCisraWJ1c19yZXF1aXNpdGlvbl9leF9mcmVlIChJQnVzUmVxdWlzaXRpb25FeCAq cmVxKQorK3sKKysgICAgaWYgKCFyZXEpCisrICAgICAgICByZXR1cm47CisrICAgIGdfY2xlYXJf cG9pbnRlciAoJnJlcS0+Y2Fpcm9fbGluZXMsIGlidXNfY2Fpcm9fbGluZV9mcmVlKTsKKysgICAg Z19mcmVlIChyZXEpOworK30KKysKKytJQnVzRm9udFNldCAqCisraWJ1c19mb250c2V0X25ldyAo Y29uc3QgZ2NoYXIgKmZpcnN0X3Byb3BlcnR5X25hbWUsIC4uLikKKyt7CisrICAgIHZhX2xpc3Qg dmFyX2FyZ3M7CisrICAgIElCdXNGb250U2V0ICpmb250c2V0OworKworKyAgICBnX2Fzc2VydCAo Zmlyc3RfcHJvcGVydHlfbmFtZSk7CisrCisrICAgIHZhX3N0YXJ0ICh2YXJfYXJncywgZmlyc3Rf cHJvcGVydHlfbmFtZSk7CisrICAgIGZvbnRzZXQgPSAoSUJ1c0ZvbnRTZXQgKilnX29iamVjdF9u ZXdfdmFsaXN0IChJQlVTX1RZUEVfRk9OVFNFVCwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0X3Byb3BlcnR5X25hbWUsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJfYXJncyk7CisrICAg IHZhX2VuZCAodmFyX2FyZ3MpOworKyAgICBnX2Fzc2VydCAoZm9udHNldC0+cHJpdi0+ZmFtaWx5 KTsKKysgICAgZ19hc3NlcnQgKGZvbnRzZXQtPnByaXYtPmxhbmd1YWdlKTsKKysgICAgcmV0dXJu IGZvbnRzZXQ7CisrfQorKworK0lCdXNGb250U2V0ICoKKytpYnVzX2ZvbnRzZXRfbmV3X3dpdGhf Zm9udCAoY29uc3QgZ2NoYXIgKmZhbWlseSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg Z3VpbnQgICAgICAgIHNpemUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdj aGFyICpsYW5ndWFnZSkKKyt7CisrICAgIHJldHVybiBpYnVzX2ZvbnRzZXRfbmV3ICgiZmFtaWx5 IiwgZmFtaWx5LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNpemUiLCBzaXplLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxhbmd1YWdlIiwgbGFuZ3VhZ2UsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyt9CisrCisrdm9pZAorK2lidXNfZm9u dHNldF9leGl0ICgpCisreworKyAgICBnX2NsZWFyX3BvaW50ZXIgKCZtX2Z0bGlicmFyeSwgRlRf RG9uZV9GcmVlVHlwZSk7CisrfQorKworK2NvbnN0IGdjaGFyICoKKytpYnVzX2ZvbnRzZXRfZ2V0 X2ZhbWlseSAoSUJ1c0ZvbnRTZXQgKmZvbnRzZXQpCisreworKyAgICBnX3JldHVybl92YWxfaWZf ZmFpbCAoSUJVU19JU19GT05UU0VUIChmb250c2V0KSwgTlVMTCk7CisrICAgIHJldHVybiBmb250 c2V0LT5wcml2LT5mYW1pbHk7CisrfQorKworK3ZvaWQKKytpYnVzX2ZvbnRzZXRfc2V0X2ZhbWls eSAoSUJ1c0ZvbnRTZXQgKmZvbnRzZXQsCisrICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGdjaGFyICAgKmZhbWlseSkKKyt7CisrICAgIGdfcmV0dXJuX2lmX2ZhaWwgKElCVVNfSVNfRk9O VFNFVCAoZm9udHNldCkpOworKyAgICBnX2ZyZWUgKGZvbnRzZXQtPnByaXYtPmZhbWlseSk7Cisr ICAgIGZvbnRzZXQtPnByaXYtPmZhbWlseSA9IGdfc3RyZHVwIChmYW1pbHkpOworK30KKysKKytn dWludAorK2lidXNfZm9udHNldF9nZXRfc2l6ZSAoSUJ1c0ZvbnRTZXQgKmZvbnRzZXQpCisrewor KyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoSUJVU19JU19GT05UU0VUIChmb250c2V0KSwgMCk7 CisrICAgIHJldHVybiBmb250c2V0LT5wcml2LT5zaXplOworK30KKysKKyt2b2lkCisraWJ1c19m b250c2V0X3NldF9zaXplIChJQnVzRm9udFNldCAqZm9udHNldCwKKysgICAgICAgICAgICAgICAg ICAgICAgIGd1aW50ICAgICAgICAgIHNpemUpCisreworKyAgICBnX3JldHVybl9pZl9mYWlsIChJ QlVTX0lTX0ZPTlRTRVQgKGZvbnRzZXQpKTsKKysgICAgZm9udHNldC0+cHJpdi0+c2l6ZSA9IHNp emU7CisrfQorKworK2NvbnN0IGdjaGFyICoKKytpYnVzX2ZvbnRzZXRfZ2V0X2xhbmd1YWdlIChJ QnVzRm9udFNldCAqZm9udHNldCkKKyt7CisrICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChJQlVT X0lTX0ZPTlRTRVQgKGZvbnRzZXQpLCBOVUxMKTsKKysgICAgcmV0dXJuIGZvbnRzZXQtPnByaXYt Pmxhbmd1YWdlOworK30KKysKKyt2b2lkCisraWJ1c19mb250c2V0X3NldF9sYW5ndWFnZSAoSUJ1 c0ZvbnRTZXQgKmZvbnRzZXQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2No YXIgKmxhbmd1YWdlKQorK3sKKysgICAgZ19yZXR1cm5faWZfZmFpbCAoSUJVU19JU19GT05UU0VU IChmb250c2V0KSk7CisrICAgIGdfZnJlZSAoZm9udHNldC0+cHJpdi0+bGFuZ3VhZ2UpOworKyAg ICBmb250c2V0LT5wcml2LT5sYW5ndWFnZSA9IGdfc3RyZHVwIChsYW5ndWFnZSk7CisrfQorKwor K2dib29sZWFuCisraWJ1c19mb250c2V0X3VwZGF0ZV9mY2ZvbnRzZXQgKElCdXNGb250U2V0ICpm b250c2V0KQorK3sKKysgICAgRmNQYXR0ZXJuICpwYXR0ZXJuOworKyAgICBjb25zdCBnY2hhciAq ZmFtaWx5OworKyAgICBndWludCBzaXplOworKyAgICBjb25zdCBnY2hhciAqbGFuZ3VhZ2U7Cisr ICAgIGdib29sZWFuIHVwZGF0ZV9mb250c2V0ID0gRkFMU0U7CisrICAgIEZjUmVzdWx0IHJlc3Vs dDsKKysKKysgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKElCVVNfSVNfRk9OVFNFVCAoZm9udHNl dCksIEZBTFNFKTsKKysKKysgICAgcGF0dGVybiA9IEZjUGF0dGVybkNyZWF0ZSAoKTsKKysgICAg ZmFtaWx5ID0gZm9udHNldC0+cHJpdi0+ZmFtaWx5OworKyAgICBzaXplID0gZm9udHNldC0+cHJp di0+c2l6ZTsKKysgICAgbGFuZ3VhZ2UgPSBmb250c2V0LT5wcml2LT5sYW5ndWFnZTsKKysKKysg ICAgaWYgKGdfc3RyY21wMCAobV9mYW1pbHksIGZhbWlseSkpIHsKKysgICAgICAgIGdfZnJlZSAo bV9mYW1pbHkpOworKyAgICAgICAgbV9mYW1pbHkgPSBnX3N0cmR1cCAoZmFtaWx5KTsKKysgICAg ICAgIHVwZGF0ZV9mb250c2V0ID0gVFJVRTsKKysgICAgfQorKyAgICBpZiAobV9zaXplICE9IHNp emUpIHsKKysgICAgICAgIG1fc2l6ZSA9IHNpemU7CisrICAgICAgICB1cGRhdGVfZm9udHNldCA9 IFRSVUU7CisrICAgIH0KKysgICAgaWYgKGdfc3RyY21wMCAobV9sYW5ndWFnZSwgbGFuZ3VhZ2Up KSB7CisrICAgICAgICBnX2ZyZWUgKG1fbGFuZ3VhZ2UpOworKyAgICAgICAgbV9sYW5ndWFnZSA9 IGdfc3RyZHVwIChsYW5ndWFnZSk7CisrICAgICAgICB1cGRhdGVfZm9udHNldCA9IFRSVUU7Cisr ICAgIH0KKysgICAgaWYgKCF1cGRhdGVfZm9udHNldCAmJiBtX2ZjZm9udHNldCAhPSBOVUxMKQor KyAgICAgICAgcmV0dXJuIEZBTFNFOworKworKyAgICBpZiAobV9mY2ZvbnRzZXQpCisrICAgICAg ICBnX2NsZWFyX3BvaW50ZXIgKCZtX2ZjZm9udHNldCwgRmNGb250U2V0RGVzdHJveSk7CisrCisr ICAgIGlmIChnX3N0cmNtcDAgKGZhbWlseSwgIiIpKQorKyAgICAgICAgRmNQYXR0ZXJuQWRkU3Ry aW5nIChwYXR0ZXJuLCBGQ19GQU1JTFksIChjb25zdCBGY0NoYXI4KikgZmFtaWx5KTsKKysgICAg aWYgKHNpemUgPiAwKQorKyAgICAgICAgRmNQYXR0ZXJuQWRkRG91YmxlIChwYXR0ZXJuLCBGQ19T SVpFLCAoZG91YmxlKSBzaXplKTsKKysgICAgaWYgKGdfc3RyY21wMCAobGFuZ3VhZ2UsICIiKSkK KysgICAgICAgIEZjUGF0dGVybkFkZFN0cmluZyAocGF0dGVybiwgRkNfTEFORywgKGNvbnN0IEZj Q2hhcjgqKSBsYW5ndWFnZSk7CisrICAgIEZjUGF0dGVybkFkZEludGVnZXIgKHBhdHRlcm4sIEZD X1dFSUdIVCwgRkNfV0VJR0hUX05PUk1BTCk7CisrICAgIEZjUGF0dGVybkFkZEludGVnZXIgKHBh dHRlcm4sIEZDX1dJRFRILCBGQ19XSURUSF9OT1JNQUwpOworKyAgICBGY1BhdHRlcm5BZGRJbnRl Z2VyIChwYXR0ZXJuLCBGQ19EUEksIDk2KTsKKysgICAgRmNDb25maWdTdWJzdGl0dXRlIChOVUxM LCBwYXR0ZXJuLCBGY01hdGNoUGF0dGVybik7CisrICAgIEZjQ29uZmlnU3Vic3RpdHV0ZSAoTlVM TCwgcGF0dGVybiwgRmNNYXRjaEZvbnQpOworKyAgICBGY0RlZmF1bHRTdWJzdGl0dXRlIChwYXR0 ZXJuKTsKKysgICAgbV9mY2ZvbnRzZXQgPSBGY0ZvbnRTb3J0IChOVUxMLCBwYXR0ZXJuLCBGY1Ry dWUsIE5VTEwsICZyZXN1bHQpOworKyAgICBpZiAocmVzdWx0ID09IEZjUmVzdWx0Tm9NYXRjaCB8 fCBtX2ZjZm9udHNldC0+bmZvbnQgPT0gMCkgeworKyAgICAgICAgZ193YXJuaW5nICgiTm8gRmNG b250U2V0IGZvciAlcyIsIGZhbWlseSA/IGZhbWlseSA6ICIobnVsbCkiKTsKKysgICAgICAgIHJl dHVybiBGQUxTRTsKKysgICAgfQorKyAgICByZXR1cm4gVFJVRTsKKyt9CisrCisrdm9pZAorK2li dXNfZm9udHNldF91bnJlZiAoSUJ1c0ZvbnRTZXQgKmZvbnRzZXQpCisreworKyAgICBnX29iamVj dF91bnJlZiAoZm9udHNldCk7CisrfQorKworK0lCdXNSZXF1aXNpdGlvbkV4ICoKKytpYnVzX2Zv bnRzZXRfZ2V0X3ByZWZlcnJlZF9zaXplX2hiIChJQnVzRm9udFNldCAgICAgICAgICAqZm9udHNl dCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAg ICAgICAgKnRleHQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Fpcm9f cmVjdGFuZ2xlX2ludF90ICp3aWRlc3QpCisreworKyAgICBnY2hhciAqY29waWVkX3RleHQ7Cisr ICAgIGdjaGFyICpwOworKyAgICBGb250UGVyQ2hhciAqYnVmZjsKKysgICAgSUJ1c0NhaXJvTGlu ZSAqY2Fpcm9fbGluZXMgPSBOVUxMOworKyAgICBJQnVzUmVxdWlzaXRpb25FeCAqcmVxID0gTlVM TDsKKysgICAgR1N0cmluZyAqc3RyID0gTlVMTDsKKysgICAgaW50IHRleHRfbGVuZ3RoOworKyAg ICBpbnQgaSwgbiA9IDA7CisrCisrICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChJQlVTX0lTX0ZP TlRTRVQgKGZvbnRzZXQpLCBOVUxMKTsKKysgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKG1fZmNm b250c2V0ICE9IE5VTEwsIE5VTEwpOworKworKyAgICBjb3BpZWRfdGV4dCA9IGdfc3RyZHVwICh0 ZXh0KTsKKysgICAgdGV4dF9sZW5ndGggPSAgZ191dGY4X3N0cmxlbiAodGV4dCwgLTEpOworKyAg ICBidWZmID0gZ19zbGljZV9hbGxvYzAgKHNpemVvZiAoRm9udFBlckNoYXIpICogdGV4dF9sZW5n dGgpOworKyAgICBzdHIgPSBnX3N0cmluZ19uZXcgKE5VTEwpOworKworKyAgICBmb3IgKHAgPSBj b3BpZWRfdGV4dDsgKnAgIT0gJ1wwJzsgcCA9IGdfdXRmOF9uZXh0X2NoYXIgKHApKSB7CisrICAg ICAgICBndW5pY2hhciBjID0gZ191dGY4X2dldF9jaGFyIChwKTsKKysgICAgICAgIGdib29sZWFu IGhhc19nbHlwaHMgPSBGQUxTRTsKKysgICAgICAgIGJ1ZmZbbl0uY2ggPSBjOworKyAgICAgICAg aWYgKChjID09IDB4ZmUwZXUgfHwgYyA9PSAweGZlMGZ1KSAmJiBuID4gMCkgeworKyAgICAgICAg ICAgIGJ1ZmZbbl0uZmNmb250ID0gYnVmZltuLTFdLmZjZm9udDsKKysgICAgICAgICAgICArK247 CisrICAgICAgICAgICAgY29udGludWU7CisrICAgICAgICB9CisrICAgICAgICBmb3IgKGkgPSAw OyBpIDwgbV9mY2ZvbnRzZXQtPm5mb250OyBpKyspIHsKKysgICAgICAgICAgICBpZiAoZ191bmlj aGFyX2lzY250cmwgKGMpICYmICFnX3VuaWNoYXJfaXNzcGFjZSAoYykpCisrICAgICAgICAgICAg ICAgIGJyZWFrOworKyAgICAgICAgICAgIEZUX0ZhY2UgZnRfZmFjZSA9IGlidXNfZm9udHNldF9n ZXRfZnRmYWNlX2Zyb21fZmNmb250ICgKKysgICAgICAgICAgICAgICAgICAgIGZvbnRzZXQsCisr ICAgICAgICAgICAgICAgICAgICBtX2ZjZm9udHNldC0+Zm9udHNbaV0pOworKyAgICAgICAgICAg IGlmIChGVF9HZXRfQ2hhcl9JbmRleCAoZnRfZmFjZSwgYykgIT0gMCkgeworKyAgICAgICAgICAg ICAgICBidWZmW25dLmZjZm9udCA9IG1fZmNmb250c2V0LT5mb250c1tpXTsKKysgICAgICAgICAg ICAgICAgaWYgKG4gPiAwICYmIGJ1ZmZbbiAtIDFdLmZjZm9udCAhPSBidWZmW25dLmZjZm9udCkg eworKyAgICAgICAgICAgICAgICAgICAgZ2V0X3N0cmluZ19leHRlbnRzX3dpdGhfZm9udCAoc3Ry LT5zdHIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmYnVmZltuIC0gMV0sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB3aWRlc3QsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmY2Fpcm9fbGluZXMpOworKyAgICAgICAgICAgICAgICAgICAgZ19zdHJp bmdfZnJlZSAoc3RyLCBUUlVFKTsKKysgICAgICAgICAgICAgICAgICAgIHN0ciA9IGdfc3RyaW5n X25ldyAoTlVMTCk7CisrICAgICAgICAgICAgICAgICAgICBnX3N0cmluZ19hcHBlbmRfdW5pY2hh ciAoc3RyLCBjKTsKKysgICAgICAgICAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICAgICAg ICAgIGdfc3RyaW5nX2FwcGVuZF91bmljaGFyIChzdHIsIGMpOworKyAgICAgICAgICAgICAgICB9 CisrICAgICAgICAgICAgICAgICsrbjsKKysgICAgICAgICAgICAgICAgaGFzX2dseXBocyA9IFRS VUU7CisrICAgICAgICAgICAgICAgIEZUX0RvbmVfRmFjZSAoZnRfZmFjZSk7CisrICAgICAgICAg ICAgICAgIGJyZWFrOworKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBGVF9Eb25lX0ZhY2Ug KGZ0X2ZhY2UpOworKyAgICAgICAgfQorKyAgICAgICAgaWYgKCFoYXNfZ2x5cGhzKSB7CisrICAg ICAgICAgICAgaWYgKG4gPiAwKSB7CisrICAgICAgICAgICAgICAgIGJ1ZmZbbl0uZmNmb250ID0g YnVmZltuIC0gMV0uZmNmb250OworKyAgICAgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAg ICAgIC8qIFNlYXJjaCBhIGZvbnQgZm9yIG5vbi1nbHlwaCBjaGFyIHRvIGRyYXcgdGhlIGNvZGUg cG9pbnRzCisrICAgICAgICAgICAgICAgICAqIGxpa2VzIFBhbmdvLgorKyAgICAgICAgICAgICAg ICAgKi8KKysgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG1fZmNmb250c2V0LT5uZm9u dDsgaSsrKSB7CisrICAgICAgICAgICAgICAgICAgICBGVF9GYWNlIGZ0X2ZhY2UgPSBpYnVzX2Zv bnRzZXRfZ2V0X2Z0ZmFjZV9mcm9tX2ZjZm9udCAoCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGZvbnRzZXQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZmNmb250c2V0LT5m b250c1tpXSk7CisrICAgICAgICAgICAgICAgICAgICAvKiBDaGVjayBhbHBoYWJldHMgaW5zdGVh ZCBvZiBzcGFjZSBvciBkaWdpdHMKKysgICAgICAgICAgICAgICAgICAgICAqIGJlY2F1c2UgJ05v dG8gRW1vamkgQ29sb3InIGZvbnQncyBkaWdpdHMgYXJlCisrICAgICAgICAgICAgICAgICAgICAg KiB3aGl0ZSBjb2xvciBhbmQgY2Fubm90IGNoYW5nZSB0aGUgZm9udCBjb2xvci4KKysgICAgICAg ICAgICAgICAgICAgICAqIHRoZSBmb250IGRvZXMgbm90IGhhdmUgYWxwaGFiZXRzLgorKyAgICAg ICAgICAgICAgICAgICAgICovCisrICAgICAgICAgICAgICAgICAgICBpZiAoRlRfR2V0X0NoYXJf SW5kZXggKGZ0X2ZhY2UsICdBJykgIT0gMCkgeworKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1 ZmZbbl0uZmNmb250ID0gbV9mY2ZvbnRzZXQtPmZvbnRzW2ldOworKyAgICAgICAgICAgICAgICAg ICAgICAgIEZUX0RvbmVfRmFjZSAoZnRfZmFjZSk7CisrICAgICAgICAgICAgICAgICAgICAgICAg aGFzX2dseXBocyA9IFRSVUU7CisrICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisrICAg ICAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgICAgICBGVF9Eb25lX0ZhY2UgKGZ0 X2ZhY2UpOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIGlmICghaGFzX2ds eXBocykgeworKyAgICAgICAgICAgICAgICAgICAgYnVmZltuXS5mY2ZvbnQgPSBtX2ZjZm9udHNl dC0+Zm9udHNbMF07CisrICAgICAgICAgICAgICAgICAgICBnX3dhcm5pbmcgKCJOb3QgZm91bmQg Zm9udHMgZm9yIHVuaWNvZGUgJTA0WCBhdCAlZCBpbiAlcyIsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGMsIG4sIHRleHQpOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAg ICAgfQorKyAgICAgICAgICAgIG4rKzsKKysgICAgICAgICAgICBnX3N0cmluZ19hcHBlbmRfdW5p Y2hhciAoc3RyLCBjKTsKKysgICAgICAgIH0KKysgICAgfQorKyAgICBpZiAoc3RyLT5zdHIpIHsK KysgICAgICAgIGdldF9zdHJpbmdfZXh0ZW50c193aXRoX2ZvbnQgKHN0ci0+c3RyLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJ1ZmZbbiAtIDFdLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkZXN0LAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJmNhaXJvX2xpbmVzKTsKKysgICAgICAgIGdfc3RyaW5nX2Zy ZWUgKHN0ciwgVFJVRSk7CisrICAgIH0KKysgICAgZ19zbGljZV9mcmVlMSAoc2l6ZW9mIChGb250 UGVyQ2hhcikgKiB0ZXh0X2xlbmd0aCwgYnVmZik7CisrICAgIGdfZnJlZSAoY29waWVkX3RleHQp OworKyAgICB3aWRlc3QtPndpZHRoICs9IFhQQUQgKiAyOworKyAgICB3aWRlc3QtPmhlaWdodCAr PSBZUEFEICogMjsKKysgICAgcmVxID0gZ19uZXcwIChJQnVzUmVxdWlzaXRpb25FeCwgMSk7Cisr ICAgIHJlcS0+d2lkdGggPSB3aWRlc3QtPndpZHRoOworKyAgICByZXEtPmhlaWdodCA9IHdpZGVz dC0+aGVpZ2h0OworKyAgICByZXEtPmNhaXJvX2xpbmVzID0gY2Fpcm9fbGluZXM7CisrICAgIHJl dHVybiByZXE7CisrfQorKworK3ZvaWQKKytpYnVzX2ZvbnRzZXRfZHJhd19jYWlyb193aXRoX3Jl cXVpc2l0aW9uX2V4IChJQnVzRm9udFNldCAgICAgICAqZm9udHNldCwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWlyb190ICAgICAgICAgICAqY3IsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJ1c1JlcXVpc2l0 aW9uRXggKmV4KQorK3sKKysgICAgSUJ1c0NhaXJvTGluZSAqY2Fpcm9fbGluZXM7CisrICAgIGlu dCBpOworKworKyAgICBnX3JldHVybl9pZl9mYWlsIChJQlVTX0lTX0ZPTlRTRVQgKGZvbnRzZXQp KTsKKysgICAgZ19yZXR1cm5faWZfZmFpbCAoY3IgIT0gTlVMTCk7CisrICAgIGdfcmV0dXJuX2lm X2ZhaWwgKGV4ICE9IE5VTEwpOworKworKyAgICBjYWlyb19saW5lcyA9IGV4LT5jYWlyb19saW5l czsKKysgICAgZ19yZXR1cm5faWZfZmFpbCAoY2Fpcm9fbGluZXMgIT0gTlVMTCk7CisrCisrICAg IGZvciAoaSA9IDA7IGNhaXJvX2xpbmVzW2ldLnNjYWxlZF9mb250OyBpKyspIHsKKysgICAgICAg IGNvbnN0IGNhaXJvX2dseXBoX3QgKmdseXBocyA9IChjYWlyb19nbHlwaF90ICopIGNhaXJvX2xp bmVzW2ldLmdseXBoczsKKysgICAgICAgIGd1aW50IG51bV9nbHlwaHMgPSBjYWlyb19saW5lc1tp XS5udW1fZ2x5cGhzOworKworKyAgICAgICAgY2Fpcm9fZnRfc2NhbGVkX2ZvbnRfbG9ja19mYWNl IChjYWlyb19saW5lc1tpXS5zY2FsZWRfZm9udCk7CisrICAgICAgICBjYWlyb19zZXRfc2NhbGVk X2ZvbnQgKGNyLCBjYWlyb19saW5lc1tpXS5zY2FsZWRfZm9udCk7CisrICAgICAgICBpZiAobnVt X2dseXBocyA+IDAgJiYgZ2x5cGhzWzBdLmluZGV4ICYgUEFOR09fR0xZUEhfVU5LTk9XTl9GTEFH KSB7CisrICAgICAgICAgICAgX2NhaXJvX3Nob3dfdW5rbm93bl9nbHlwaHMgKGNyLCBnbHlwaHMs IG51bV9nbHlwaHMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4 LT53aWR0aCwgZXgtPmhlaWdodCk7CisrICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgIGNh aXJvX3Nob3dfZ2x5cGhzIChjciwgZ2x5cGhzLCBudW1fZ2x5cGhzKTsKKysgICAgICAgIH0KKysg ICAgICAgIGNhaXJvX2Z0X3NjYWxlZF9mb250X3VubG9ja19mYWNlIChjYWlyb19saW5lc1tpXS5z Y2FsZWRfZm9udCk7CisrICAgIH0KKyt9CitkaWZmIC0tZ2l0IGEvdWkvZ3RrMy9pYnVzZm9udHNl dC5oIGIvdWkvZ3RrMy9pYnVzZm9udHNldC5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXgg MDAwMDAwMC4uZWZjYWEyOAorLS0tIC9kZXYvbnVsbAorKysrIGIvdWkvZ3RrMy9pYnVzZm9udHNl dC5oCitAQCAtMCwwICsxLDMwMiBAQAorKy8qIC0qLSBtb2RlOiBDOyBjLWJhc2ljLW9mZnNldDog NDsgaW5kZW50LXRhYnMtbW9kZTogbmlsOyAtKi0gKi8KKysvKiB2aW06c2V0IGV0IHN0cz00OiAq LworKy8qIGlidXMgLSBUaGUgSW5wdXQgQnVzCisrICogQ29weXJpZ2h0IChDKSAyMDE3IFRha2Fv IEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgorKyAqIENvcHlyaWdodCAoQykg MjAxNyBSZWQgSGF0LCBJbmMuCisrICoKKysgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICogbW9kaWZ5IGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAqIHZl cnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgorKyAqCisrICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgKiBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAqIExl c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg UHVibGljCisrICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0 ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu IFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEKKysgKiBVU0EKKysg Ki8KKysKKysjaWZuZGVmIF9fSUJVU19IQVJGQlVaWl9IXworKyNkZWZpbmUgX19JQlVTX0hBUkZC VVpaX0hfCisrCisrLyoqCisrICogU0VDVElPTjogaWJ1c2ZvbnRzZXQKKysgKiBAc2hvcnRfZGVz Y3JpcHRpb246IE9iamVjdCBmb3IgSGFyZkJ1enogYW5kIEZvbnRjb25maWcuCisrICogQHRpdGxl OiBJQnVzRm9udFNldAorKyAqIEBzdGFiaWxpdHk6IFVuc3RhYmxlCisrICoKKysgKiBJQnVzRm9u dFNldCBvZmZlcnMgRmNGb250U2V0LCBnbHlwaCBpbmZvIHdpdGggSGFyZkJ1enogYW5kIHJlbmRl cmluZworKyAqIG9uIENhaXJvIGNvbnRleHQuCisrICogQ3VycmVudCBQYW5nbyBjaGFuZ2VzIGZv bnRzIGJ5IGVtb2ppIHZhcmlhbnRzIGFuZCBkcmF3cyB0aGUgc2VwYXJhdGVkCisrICogZ2x5cGhz IFsxXSBidXQgYWN0dWFsbHkgdGhlIGVtb2ppIGNoYXJhY3RlcnMgd2l0aCB2YXJpYW50cyBjYW4g YmUgZHJhd24KKysgKiBhcyBvbmUgZ2x5cGggc28gdGhpcyBjbGFzcyAgbWFuYWdlcyBGb250Y29u ZmlnIGZvbnRzZXRzIHRvIHNlbGVjdCBhIGZvbnQsCisrICogSGFyZkJ1enogdG8gZ2V0IGdseXBo cyBmb3IgZW1vamkgdmFyaWFudHMsIENhaXJvIHRvIGRyYXcgZ2x5cGhzLgorKyAqCisrICogWzFd OiBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgwNjY5CisrICog ICAgICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgxMTIzCisr ICovCisrCisrI2luY2x1ZGUgPGlidXMuaD4KKysjaW5jbHVkZSA8Y2Fpcm8uaD4KKysKKysjZGVm aW5lIElCVVNfVFlQRV9DQUlST19MSU5FIChpYnVzX2NhaXJvX2xpbmVfZ2V0X3R5cGUgKCkpCisr I2RlZmluZSBJQlVTX1RZUEVfUkVRVUlTSVRJT05fRVggKGlidXNfcmVxdWlzaXRpb25fZXhfZ2V0 X3R5cGUgKCkpCisrI2RlZmluZSBJQlVTX1RZUEVfRk9OVFNFVCAoaWJ1c19mb250c2V0X2dldF90 eXBlICgpKQorKyNkZWZpbmUgSUJVU19GT05UU0VUKG9iaikgKEdfVFlQRV9DSEVDS19JTlNUQU5D RV9DQVNUIChcCisrICAgICAgICAob2JqKSwgXAorKyAgICAgICAgSUJVU19UWVBFX0ZPTlRTRVQs IFwKKysgICAgICAgIElCdXNGb250U2V0KSkKKysjZGVmaW5lIElCVVNfRk9OVFNFVF9DTEFTUyhr bGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUIChcCisrICAgICAgICAoa2xhc3MpLCBcCisr ICAgICAgICBJQlVTX1RZUEVfRk9OVFNFVCwgXAorKyAgICAgICAgSUJ1c0ZvbnRTZXRDbGFzcykp CisrI2RlZmluZSBJQlVTX0lTX0ZPTlRTRVQob2JqKSAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZ UEUgKFwKKysgICAgICAgIChvYmopLCBcCisrICAgICAgICBJQlVTX1RZUEVfRk9OVFNFVCkpCisr I2RlZmluZSBJQlVTX0lTX0ZPTlRTRVRfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1Nf VFlQRSAoXAorKyAgICAgICAgKGtsYXNzKSwgXAorKyAgICAgICAgSUJVU19UWVBFX0ZPTlRTRVQp KQorKyNkZWZpbmUgSUJVU19GT05UU0VUX0dFVF9DTEFTUyhvYmopIChHX1RZUEVfSU5TVEFOQ0Vf R0VUX0NMQVNTIChcCisrICAgICAgICAob2JqKSwgXAorKyAgICAgICAgSUJVU19UWVBFX0ZPTlRT RVQsIFwKKysgICAgICAgIElCdXNGb250U2V0Q2xhc3MpKQorKworK0dfQkVHSU5fREVDTFMKKysK Kyt0eXBlZGVmIHN0cnVjdCBfSUJ1c0dseXBoIElCdXNHbHlwaDsKKyt0eXBlZGVmIHN0cnVjdCBf SUJ1c0NhaXJvTGluZSBJQnVzQ2Fpcm9MaW5lOworK3R5cGVkZWYgc3RydWN0IF9JQnVzUmVxdWlz aXRpb25FeCBJQnVzUmVxdWlzaXRpb25FeDsKKyt0eXBlZGVmIHN0cnVjdCBfSUJ1c0ZvbnRTZXQg SUJ1c0ZvbnRTZXQ7CisrdHlwZWRlZiBzdHJ1Y3QgX0lCdXNGb250U2V0UHJpdmF0ZSBJQnVzRm9u dFNldFByaXZhdGU7CisrdHlwZWRlZiBzdHJ1Y3QgX0lCdXNGb250U2V0Q2xhc3MgSUJ1c0ZvbnRT ZXRDbGFzczsKKysKKytzdHJ1Y3QgX0lCdXNHbHlwaCB7CisrICAgIHVuc2lnbmVkIGxvbmcgaW5k ZXg7CisrICAgIGRvdWJsZSAgICAgICAgICAgICAgIHg7CisrICAgIGRvdWJsZSAgICAgICAgICAg ICAgIHk7CisrfTsKKysKKytzdHJ1Y3QgX0lCdXNDYWlyb0xpbmUgeworKyAgICBJQnVzR2x5cGgg ICAgICAgICAgICpnbHlwaHM7CisrICAgIGd1aW50ICAgICAgICAgICAgICAgIG51bV9nbHlwaHM7 CisrICAgIGNhaXJvX3NjYWxlZF9mb250X3QgKnNjYWxlZF9mb250OworKyAgICBncG9pbnRlciAg ICAgICAgICAgICBwZHVtbXlbNV07CisrfTsKKysKKytzdHJ1Y3QgX0lCdXNSZXF1aXNpdGlvbkV4 IHsKKysgICAgZ3VpbnQgICAgICAgICAgICAgICAgd2lkdGg7CisrICAgIGd1aW50ICAgICAgICAg ICAgICAgIGhlaWdodDsKKysgICAgSUJ1c0NhaXJvTGluZSAgICAgICAqY2Fpcm9fbGluZXM7Cisr ICAgIGdwb2ludGVyICAgICAgICAgICAgIHBkdW1teVs1XTsKKyt9OworKworK3N0cnVjdCBfSUJ1 c0ZvbnRTZXQgeworKyAgICBJQnVzT2JqZWN0ICAgICAgICAgICBwYXJlbnRfaW5zdGFuY2U7Cisr ICAgIElCdXNGb250U2V0UHJpdmF0ZSAgKnByaXY7CisrfTsKKysKKytzdHJ1Y3QgX0lCdXNGb250 U2V0Q2xhc3MgeworKyAgICBJQnVzT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworKyAgICAvKiBz aWduYWxzICovCisrICAgIC8qPCBwcml2YXRlID4qLworKyAgICAvKiBwYWRkaW5nICovCisrICAg IGdwb2ludGVyICAgICAgICBwZHVtbXlbMTBdOworK307CisrCisrR1R5cGUgICAgICAgICAgIGli dXNfY2Fpcm9fbGluZV9nZXRfdHlwZSAgICAgICAgKHZvaWQpIEdfR05VQ19DT05TVDsKKysKKysv KioKKysgKiBpYnVzX2NhaXJvX2xpbmVfY29weToKKysgKiBAY2Fpcm9fbGluZXM6ICNJQnVzQ2Fp cm9MaW5lCisrICoKKysgKiBDcmVhdGVzIGEgY29weSBvZiBAY2Fpcm9fbGllbnMsIHdoaWNoIHNo b3VsZCBiZSBmcmVlZCB3aXRoCisrICogaWJ1c19jYWlyb19saW5lX2ZyZWUoKS4gUHJpbWFyaWx5 IHVzZWQgYnkgbGFuZ3VhZ2UgYmluZGluZ3MsCisrICogbm90IHRoYXQgdXNlZnVsIG90aGVyd2lz ZSAoc2luY2UgQHJlcSBjYW4ganVzdCBiZSBjb3BpZWQKKysgKiBieSBhc3NpZ25tZW50IGluIEMp LgorKyAqCisrICogUmV0dXJuczogdGhlIG5ld2x5IGFsbG9jYXRlZCAjSUJ1c0NhaXJvTGluZSwg d2hpY2ggc2hvdWxkCisrICogICAgICAgICAgYmUgZnJlZWQgd2l0aCBpYnVzX2NhaXJvX2xpbmVf ZnJlZSgpLCBvciAlTlVMTAorKyAqICAgICAgICAgIGlmIEBjYWlyb19saW5lcyB3YXMgJU5VTEwu CisrICoqLworK0lCdXNDYWlyb0xpbmUgKiBpYnVzX2NhaXJvX2xpbmVfY29weSAgICAgICAgICAg IChJQnVzQ2Fpcm9MaW5lICpjYWlyb19saW5lcyk7CisrCisrLyoqCisrICogaWJ1c19jYWlyb19s aW5lX2ZyZWU6CisrICogQGNhaXJvX2xpbmVzOiAjSUJ1c0NhaXJvTGluZQorKyAqCisrICogRnJl ZSBhbiAjSUJ1c0NhaXJvTGluZS4KKysgKi8KKyt2b2lkICAgICAgICAgICAgaWJ1c19jYWlyb19s aW5lX2ZyZWUgICAgICAgICAgICAoSUJ1c0NhaXJvTGluZSAqY2Fpcm9fbGluZXMpOworKworKwor K0dUeXBlICAgICAgICAgICBpYnVzX3JlcXVpc2l0aW9uX2V4X2dldF90eXBlICAgICh2b2lkKSBH X0dOVUNfQ09OU1Q7CisrCisrLyoqCisrICogaWJ1c19yZXF1aXNpdGlvbl9leF9jb3B5OgorKyAq IEByZXE6ICNJQnVzUmVxdWlzaXRpb25FeAorKyAqCisrICogQ3JlYXRlcyBhIGNvcHkgb2YgQHJl cSwgd2hpY2ggc2hvdWxkIGJlIGZyZWVkIHdpdGgKKysgKiBpYnVzX3JlcXVpc2l0aW9uX2V4X2Zy ZWUoKS4gUHJpbWFyaWx5IHVzZWQgYnkgbGFuZ3VhZ2UgYmluZGluZ3MsCisrICogbm90IHRoYXQg dXNlZnVsIG90aGVyd2lzZSAoc2luY2UgQHJlcSBjYW4ganVzdCBiZSBjb3BpZWQKKysgKiBieSBh c3NpZ25tZW50IGluIEMpLgorKyAqCisrICogUmV0dXJuczogdGhlIG5ld2x5IGFsbG9jYXRlZCAj SUJ1c1JlcXVpc2l0aW9uRXgsIHdoaWNoIHNob3VsZAorKyAqICAgICAgICAgIGJlIGZyZWVkIHdp dGggaWJ1c19yZXF1aXNpdGlvbl9leF9mcmVlKCksIG9yICVOVUxMCisrICogICAgICAgICAgaWYg QHJlcSB3YXMgJU5VTEwuCisrICoqLworK0lCdXNSZXF1aXNpdGlvbkV4ICoKKysgICAgICAgICAg ICAgICAgaWJ1c19yZXF1aXNpdGlvbl9leF9jb3B5ICAgICAgICAoSUJ1c1JlcXVpc2l0aW9uRXgg KnJlcSk7CisrCisrLyoqCisrICogaWJ1c19yZXF1aXNpdGlvbl9leF9mcmVlOgorKyAqIEByZXE6 ICNJQnVzUmVxdWlzaXRpb25FeAorKyAqCisrICogRnJlZSBhbiAjSUJ1c1JlcXVpc2l0aW9uRXgu CisrICovCisrdm9pZCAgICAgICAgICAgIGlidXNfcmVxdWlzaXRpb25fZXhfZnJlZSAgICAgICAg KElCdXNSZXF1aXNpdGlvbkV4ICpyZXEpOworKworKworK0dUeXBlICAgICAgICAgICBpYnVzX2Zv bnRzZXRfZ2V0X3R5cGUgICAgICAgICAgICh2b2lkKTsKKysKKysvKioKKysgKiBpYnVzX2ZvbnRz ZXRfbmV3OgorKyAqIEBmaXJzdF9wcm9wZXJ0eV9uYW1lOiAKKysgKgorKyAqIENyZWF0ZXMgYSBu ZXcgI0lCdXNGY0ZvbnRTZXQuCisrICoKKysgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IEEg bmV3bHkgYWxsb2NhdGVkICNJQnVzRm9udFNldCBhbmQgaW5jbHVkZXMKKysgKiAjRmNGb250U2V0 IGludGVybmFsbHkuIEUuZy4gaWJ1c19mb250c2V0X25ldyAoImZhbWlseSIsCisrICogIk5vdG8g RW1vamkgQ29sb3IiLCAic2l6ZSIsIDE2LCAibGFuZ3VhZ2UiLCAiamEtanAiKTsKKysgKi8KKytJ QnVzRm9udFNldCAqICAgaWJ1c19mb250c2V0X25ldyAgICAgICAgICAgICAgICAoY29uc3QgZ2No YXIKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICpmaXJzdF9wcm9wZXJ0eV9uYW1lLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTsKKysKKysvKioKKysg KiBpYnVzX2ZvbnRzZXRfbmV3X3dpdGhfZm9udDoKKysgKiBAZmFtaWx5OiBmb250IGZhbWlseQor KyAqIEBzaXplOiBmb250IHNpemUKKysgKiBAbGFuZ3VhZ2U6IGZvbnQgbGFuZ3VhZ2UKKysgKgor KyAqIENyZWF0ZXMgIGEgbmV3ICNJQnVzRmNGb250U2V0LgorKyAqCisrICogUmV0dXJuczogKHRy YW5zZmVyIGZ1bGwpOiBBIG5ld2x5IGFsbG9jYXRlZCAjSUJ1c0ZjRm9udFNldCBhbmQgaW5jbHVk ZXMKKysgKiAjRmNGb250U2V0IGludGVybmFsbHkuCisrICovCisrSUJ1c0ZvbnRTZXQgKiAgIGli dXNfZm9udHNldF9uZXdfd2l0aF9mb250ICAgICAgKGNvbnN0IGdjaGFyICAgICpmYW1pbHksCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAg ICAgICAgICBzaXplLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBnY2hhciAgICAqbGFuZ3VhZ2UpOworKy8qKgorKyAqIGlidXNfZm9udHNl dF9nZXRfZmFtaWx5OgorKyAqIEBmb250c2V0OiAjSUJ1c0ZjRm9udFNldAorKyAqCisrICogUmV0 dXJuIHRoZSBiYXNlIGZvbnQgZmFtaWx5IG9mICNGY0ZvbnRTZXQKKysgKgorKyAqIFJldHVybnM6 IEJhc2UgZm9udCBmYW1pbHkgb2YgI0ZjRm9udFNldAorKyAqLworK2NvbnN0IGdjaGFyICogICBp YnVzX2ZvbnRzZXRfZ2V0X2ZhbWlseSAgICAgICAgIChJQnVzRm9udFNldCAgICAqZm9udHNldCk7 CisrCisrLyoqCisrICogaWJ1c19mb250c2V0X3NldF9mYW1pbHk6CisrICogQGZvbnRzZXQ6ICNJ QnVzRmNGb250U2V0CisrICogQGZhbWlseTogYmFzZSBmb250IGZhbWlseSBmb3IgI0ZjRm9udFNl dAorKyAqCisrICogU2V0IHRoZSBiYXNlIGZvbnQgZmFtaWx5IGZvciAjRmNGb250U2V0CisrICov Cisrdm9pZCAgICAgICAgICAgIGlidXNfZm9udHNldF9zZXRfZmFtaWx5ICAgICAgICAgKElCdXNG b250U2V0ICAgICpmb250c2V0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAqZmFtaWx5KTsKKysvKioKKysgKiBpYnVzX2Zv bnRzZXRfZ2V0X3NpemU6CisrICogQGZvbnRzZXQ6ICNJQnVzRmNGb250U2V0CisrICoKKysgKiBS ZXR1cm4gdGhlIGZvbnQgc2l6ZSBvZiAjRmNGb250U2V0CisrICoKKysgKiBSZXR1cm5zOiBGb250 IHNpemUgb2YgI0ZjRm9udFNldAorKyAqLworK2d1aW50ICAgICAgICAgICBpYnVzX2ZvbnRzZXRf Z2V0X3NpemUgICAgICAgICAgIChJQnVzRm9udFNldCAgICAqZm9udHNldCk7CisrCisrLyoqCisr ICogaWJ1c19mb250c2V0X3NldF9zaXplOgorKyAqIEBmb250c2V0OiAjSUJ1c0ZjRm9udFNldAor KyAqIEBzaXplOiBmb250IHNpemUgZm9yICNGY0ZvbnRTZXQKKysgKgorKyAqIFNldCB0aGUgZm9u dCBzaXplIGZvciAjRmNGb250U2V0CisrICovCisrdm9pZCAgICAgICAgICAgIGlidXNfZm9udHNl dF9zZXRfc2l6ZSAgICAgICAgICAgKElCdXNGb250U2V0ICAgICpmb250c2V0LAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAg c2l6ZSk7CisrLyoqCisrICogaWJ1c19mb250c2V0X2dldF9sYW5ndWFnZToKKysgKiBAZm9udHNl dDogI0lCdXNGY0ZvbnRTZXQKKysgKgorKyAqIFJldHVybiB0aGUgZm9udCBsYW5ndWFnZSBvZiAj RmNGb250U2V0CisrICoKKysgKiBSZXR1cm5zOiBGb250IGxhbmd1YWdlIG9mICNGY0ZvbnRTZXQK KysgKi8KKytjb25zdCBnY2hhciAqICAgaWJ1c19mb250c2V0X2dldF9sYW5ndWFnZSAgICAgICAo SUJ1c0ZvbnRTZXQgICAgKmZvbnRzZXQpOworKworKy8qKgorKyAqIGlidXNfZm9udHNldF9zZXRf bGFuZ3VhZ2U6CisrICogQGZvbnRzZXQ6ICNJQnVzRmNGb250U2V0CisrICogQGxhbmd1YWdlOiBm b250IGxhbmdhdWdlIGZvciAjRmNGb250U2V0CisrICoKKysgKiBTZXQgdGhlIGZvbnQgbGFuZ3Vh Z2UgZm9yICNGY0ZvbnRTZXQKKysgKi8KKyt2b2lkICAgICAgICAgICAgaWJ1c19mb250c2V0X3Nl dF9sYW5ndWFnZSAgICAgICAoSUJ1c0ZvbnRTZXQgICAgKmZvbnRzZXQsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICpsYW5n dWFnZSk7CisrCisrLyoqCisrICogaWJ1c19mb250c2V0X3VwZGF0ZV9mY2ZvbnRzZXQ6CisrICog QGZvbnRzZXQ6ICNJQnVzRmNGb250U2V0CisrICoKKysgKiBVcGRhdGUgI0ZjRm9udFNldCBmcm9t IGZvbnQgZmFtaWx5LCBzaXplIGFuZCBsYW5nYXVnZSBvZiBAZm9udHNldC4KKysgKiBSZXR1cm5z OiAlVFJVRSBpZiAjRmNGb250U2V0IGlzIHVwZGF0ZWQuICVGQUxTRSBvdGhlcndpc2UuCisrICov CisrZ2Jvb2xlYW4gICAgICAgIGlidXNfZm9udHNldF91cGRhdGVfZmNmb250c2V0ICAgKElCdXNG b250U2V0ICAgICpmb250c2V0KTsKKysKKysvKioKKysgKiBpYnVzX2ZvbnRzZXRfZ2V0X3ByZWZl cnJlZF9zaXplX2hiOgorKyAqIEBmb250c2V0OiAjSUJ1c0ZjRm9udFNldAorKyAqIEB0ZXh0OiBh IHN0cmluZyB0byBiZSBjYWxjdWxhdGUgdGhlIHByZWZlcnJlZCByZWN0YW5nbGUgc2l6ZS4KKysg KiBAd2lkZXN0OiAob3V0KTogI2NhaXJvX3JlY3RhbmdsZV9pbnRfdCBpcyB1cGRhdGVkLgorKyAq CisrICogQ2FsY3VsYXRlIEB3aWRlc3QgZm9yIEB0ZXh0LgorKyAqCisrICogUmV0dXJuczogI0lC dXNSZXF1aXNpdGlvbkV4IHdoaWNoIGluY2x1ZGVzIHRoZSBnbHlwaHMgYW5kIGNvb3JkaW5hdGVz LgorKyAqLworK0lCdXNSZXF1aXNpdGlvbkV4ICoKKysgICAgICAgICAgICAgICAgaWJ1c19mb250 c2V0X2dldF9wcmVmZXJyZWRfc2l6ZV9oYgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChJQnVzRm9udFNldCAgICAqZm9udHNldCwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgKnRl eHQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNh aXJvX3JlY3RhbmdsZV9pbnRfdAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqd2lkZXN0KTsKKysKKysvKioKKysgKiBpYnVz X2ZvbnRzZXRfZHJhd19jYWlyb19saW5lczoKKysgKiBAZm9udHNldDogI0lCdXNGY0ZvbnRTZXQK KysgKiBAY3I6ICNjYWlyb190IGluICNHdGtXaWRnZXQuZHJhdygpLgorKyAqIEBleDogI0lCdXNS ZXF1aXNpdGlvbkV4IHdoaWNoIGluY2x1ZGVzIGdseXBoLCB4LCB5IHZhbHVlcywgY2hhciB3aWR0 aAorKyAqICAgICAgYW5kIGhlaWdodC4KKysgKgorKyAqIERyYXcgZ2x5cGhzIGluIEBleCB1c2lu ZyBjYWlybyBAY3IuCisrICovCisrdm9pZCAgICAgICAgICAgIGlidXNfZm9udHNldF9kcmF3X2Nh aXJvX3dpdGhfcmVxdWlzaXRpb25fZXgKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoSUJ1c0ZvbnRTZXQgICAgKmZvbnRzZXQsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhaXJvX3QgICAgICAgICpjciwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJ1c1Jl cXVpc2l0aW9uRXgKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKmV4KTsKKysKKysvKioKKysgKiBpYnVzX2ZvbnRzZXRfdW5y ZWY6CisrICogQGZvbnRzZXQ6ICNJQnVzRmNGb250U2V0CisrICoKKysgKiBDYWxsIGdfb2JqZWN0 X3VucmVmKCkuCisrICogRklYTUU6IFNlZW1zIFZhbGEgbmVlZHMgdGhpcyBBUEkuCisrICovCisr dm9pZCAgICAgICAgICAgIGlidXNfZm9udHNldF91bnJlZiAgICAgICAgICAgICAgKElCdXNGb250 U2V0ICAgICpmb250c2V0KTsKKysKKytHX0VORF9ERUNMUworKyNlbmRpZgorLS0gCisyLjkuMwor CgpkaWZmIC0tZ2l0IGEvaWJ1cy5zcGVjIGIvaWJ1cy5zcGVjCmluZGV4IDQzOTIyODEuLjI3MWEw OTQgMTAwNjQ0Ci0tLSBhL2lidXMuc3BlYworKysgYi9pYnVzLnNwZWMKQEAgLTksNiArOSw4IEBA CiAlZ2xvYmFsIHdpdGhfa2RlNSAwCiAlZW5kaWYKIAorJWdsb2JhbCB3aXRoX2Vtb2ppX2hhcmZi dXp6IDEKKwogJWdsb2JhbCBpYnVzX2FwaV92ZXJzaW9uIDEuMAogCiAjIGZvciBieXRlY29tcGls ZSBpbiAlJXtfZGF0YWRpcn0vaWJ1cy9zZXR1cApAQCAtMjgsNyArMzAsNyBAQAogCiBOYW1lOiAg ICAgICAgICAgaWJ1cwogVmVyc2lvbjogICAgICAgIDEuNS4xNgotUmVsZWFzZTogICAgICAgIDIl ez9kaXN0fQorUmVsZWFzZTogICAgICAgIDMlez9kaXN0fQogU3VtbWFyeTogICAgICAgIEludGVs bGlnZW50IElucHV0IEJ1cyBmb3IgTGludXggT1MKIExpY2Vuc2U6ICAgICAgICBMR1BMdjIrCiBH cm91cDogICAgICAgICAgU3lzdGVtIEVudmlyb25tZW50L0xpYnJhcmllcwpAQCAtNzAsNiArNzIs MTEgQEAgQnVpbGRSZXF1aXJlczogIHF0NS1xdGJhc2UtZGV2ZWwKICVlbmRpZgogQnVpbGRSZXF1 aXJlczogIGNsZHItZW1vamktYW5ub3RhdGlvbgogQnVpbGRSZXF1aXJlczogIHVuaWNvZGUtZW1v amkKKyVpZiAld2l0aF9lbW9qaV9oYXJmYnV6egorQnVpbGRSZXF1aXJlczogIGNhaXJvLWRldmVs CitCdWlsZFJlcXVpcmVzOiAgZm9udGNvbmZpZy1kZXZlbAorQnVpbGRSZXF1aXJlczogIGhhcmZi dXp6LWRldmVsCislZW5kaWYKIAogUmVxdWlyZXM6ICAgICAgICV7bmFtZX0tbGlicyV7P19pc2F9 ICAgPSAle3ZlcnNpb259LSV7cmVsZWFzZX0KIFJlcXVpcmVzOiAgICAgICAle25hbWV9LWd0azIl ez9faXNhfSAgID0gJXt2ZXJzaW9ufS0le3JlbGVhc2V9CkBAIC0yNTAsNiArMjU3LDkgQEAgYXV0 b3JlY29uZiAtZiAtaSAtdgogJWlmICEgJXdpdGhfa2RlNQogICAgIC0tZGlzYWJsZS1hcHBpbmRp Y2F0b3IgXAogJWVuZGlmCislaWYgJXdpdGhfZW1vamlfaGFyZmJ1enoKKyAgICAtLWVuYWJsZS1o YXJmYnV6ei1mb3ItZW1vamkgXAorJWVuZGlmCiAgICAgLS1lbmFibGUtaW50cm9zcGVjdGlvbiBc CiAgICAgJXtuaWx9CiAKQEAgLTQyMCw2ICs0MzAsOSBAQCBndGstcXVlcnktaW1tb2R1bGVzLTMu MC0le19faXNhX2JpdHN9IC0tdXBkYXRlLWNhY2hlICY+IC9kZXYvbnVsbCB8fCA6CiAle19kYXRh ZGlyfS9ndGstZG9jL2h0bWwvKgogCiAlY2hhbmdlbG9nCisqIFRodSBKdWwgMTMgMjAxNyBUYWth byBGdWppd2FyYSA8dGZ1aml3YXJAcmVkaGF0LmNvbT4gLSAxLjUuMTYtMworLSBFbmFibGVkIEhh cmZCdXp6IHJlbmRlcmluZyB3aXRob3V0IFBhbmdvIGdseXBoIGNhbGMgZm9yIGVtb2ppCisKICog TW9uIE1heSAyOSAyMDE3IFRha2FvIEZ1aml3YXJhIDx0ZnVqaXdhckByZWRoYXQuY29tPiAtIDEu NS4xNi0yCiAtIEFkZGVkIGN0cmwtYyx2LHggZm9yIGFubm90YXRpb25zIGFuZCBjdHJsLXNoaWZ0 LWMgZm9yIGVtb2ppCiAtIEFkZGVkIE1hbGF5IGFuZCBNb25nb2xpYW4ga2V5bWFwcwo=