[patch] added SC_LINE_END_TYPE_NONE
"'Robin Haberkorn' via scintilla-interest" <[email protected]> Mon, 09 Feb 2026 16:18:20 +0000
| Newsgroups | gmane.comp.lib.scintilla.devel |
|---|---|
| Message-ID | <[email protected]> |
--39727a4579534970eb83f08e532cb6b943c65381b8fcd7c95ad3c9229e7e Content-Type: multipart/mixed; boundary=6e89dc7b36667d365019546d4f359284facee1ed1f4c509bc4e4369a8012 --6e89dc7b36667d365019546d4f359284facee1ed1f4c509bc4e4369a8012 Content-Type: multipart/alternative; boundary=6fb4b7c1678257aa1fb9c41c572b6b0922c5087ebb945a1523cf4e52b0c0 --6fb4b7c1678257aa1fb9c41c572b6b0922c5087ebb945a1523cf4e52b0c0 Content-Disposition: inline Content-Type: text/plain; charset="UTF-8" Dear Scintilla hackers, here's a patch that adds a new SC_LINE_END_TYPE_NONE, which disables the special treatment of EOL characters. When enabled, Scintilla will lay out the entire document on a single line. After SCI_SETLINEENDTYPESALLOWED(SC_LINE_END_TYPE_NONE) LF and CR are rendered by their character representations. I am using this to turn Scintilla into a command-line widget for SciTECO, where command-lines are not terminated by Enter and may have to fit into a single line. It might also be useful to turn Scintilla into a kind of hex-editor in combination with character representations. However, in my experience excessively long lines cannot be layed out efficiently. This is also noticable when having very long documents *without* any line breaks at all. That's not yet been a roadblock in the command-line use case for me, though. I am aware that this feature might not be of interest to many people, so if necessary I will permanently maintain it as a patch in my Scintilla fork. Best regards, Robin -- You received this message because you are subscribed to the Google Groups "scintilla-interest" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion visit https://groups.google.com/d/msgid/scintilla-interest/DGAKF8F2Z697.2B74TKDKSW8IF%40googlemail.com. --6fb4b7c1678257aa1fb9c41c572b6b0922c5087ebb945a1523cf4e52b0c0-- --6e89dc7b36667d365019546d4f359284facee1ed1f4c509bc4e4369a8012 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0001-added-SC_LINE_END_TYPE_NONE-allows-ignoring-all-line.patch Content-Type: text/x-patch; charset=utf-8; name=0001-added-SC_LINE_END_TYPE_NONE-allows-ignoring-all-line.patch RnJvbSAwYmZlMWNkMTQ5YjFiMjA4NWQ2N2U4YWFjMmMwZjdiNDg2ZDlkOWMwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2JpbiBIYWJlcmtvcm4gPHJoYWJlcmtvcm5AZm1zYncuZGU+ CkRhdGU6IFR1ZSwgOSBTZXAgMjAyNSAyMDo1MDowNyArMDMwMApTdWJqZWN0OiBbUEFUQ0ggMS8y XSBhZGRlZCBTQ19MSU5FX0VORF9UWVBFX05PTkU6IGFsbG93cyBpZ25vcmluZyBhbGwgbGluZQog ZW5kcwoKVGhpcyBjYW4gaGVscCB3aGVuIHVzaW5nIFNjaW50aWxsYSB2aWV3cyBhcyBjb21tYW5k IGxpbmUgd2lkZ2V0cy4KSXQgY2FuIGFsc28gaGVscCB3aGVuIHVzaW5nIFNjaW50aWxsYSB0byBl ZGl0IGJpbmFyeSBmaWxlcyBhcyB5b3UKZG9uJ3Qgd2FudCB0byBhdHRhY2ggc3BlY2lhbCBtZWFu aW5nIHRvIENSIGFuZCBMRi4KLS0tCiBkb2MvU2NpbnRpbGxhRG9jLmh0bWwgICAgfCAgOCArKy0t CiBpbmNsdWRlL1NjaW50aWxsYS5oICAgICAgfCAgMSArCiBpbmNsdWRlL1NjaW50aWxsYS5pZmFj ZSAgfCAgMSArCiBpbmNsdWRlL1NjaW50aWxsYVR5cGVzLmggfCAgMSArCiBzcmMvQ2VsbEJ1ZmZl ci5jeHggICAgICAgfCA4NiArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0t CiBzcmMvRG9jdW1lbnQuY3h4ICAgICAgICAgfCAgNCArLQogc3JjL1NjaW50aWxsYUJhc2UuY3h4 ICAgIHwgIDIgKy0KIDcgZmlsZXMgY2hhbmdlZCwgNjIgaW5zZXJ0aW9ucygrKSwgNDEgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL1NjaW50aWxsYURvYy5odG1sIGIvZG9jL1NjaW50aWxs YURvYy5odG1sCmluZGV4IGQ0MzIwNDNmNi4uZGRkMmE1YTViIDEwMDY0NAotLS0gYS9kb2MvU2Np bnRpbGxhRG9jLmh0bWwKKysrIGIvZG9jL1NjaW50aWxsYURvYy5odG1sCkBAIC0zMDIxLDE1ICsz MDIxLDE3IEBAIHN0cnVjdCBTY2lfVGV4dFRvRmluZEZ1bGwgewogCiAgICAgPHA+PGIgaWQ9IlND SV9HRVRMSU5FRU5EVFlQRVNTVVBQT1JURUQiPlNDSV9HRVRMSU5FRU5EVFlQRVNTVVBQT1JURUQg JnJhcnI7IGludDwvYj48YnIgLz4KICAgICAgPGNvZGU+U0NJX0dFVExJTkVFTkRUWVBFU1NVUFBP UlRFRDwvY29kZT4gcmVwb3J0cyB0aGUgZGlmZmVyZW50IHR5cGVzIG9mIGxpbmUgZW5kcyBzdXBw b3J0ZWQKLSAgICAgYnkgdGhlIGN1cnJlbnQgbGV4ZXIuIFRoaXMgaXMgYSBiaXQgc2V0IGFsdGhv dWdoIHRoZXJlIGlzIGN1cnJlbnRseSBvbmx5IGEgc2luZ2xlIGNob2ljZQotICAgICB3aXRoIGVp dGhlciA8Y29kZT5TQ19MSU5FX0VORF9UWVBFX0RFRkFVTFQ8L2NvZGU+ICgwKSBvciA8Y29kZT5T Q19MSU5FX0VORF9UWVBFX1VOSUNPREU8L2NvZGU+ICgxKS4KKyAgICAgYnkgdGhlIGN1cnJlbnQg bGV4ZXIuIFRoaXMgaXMgYSBjaG9pY2UgYmV0d2VlbiA8Y29kZT5TQ19MSU5FX0VORF9UWVBFX0RF RkFVTFQ8L2NvZGU+ICgwKSwKKyAgICAgPGNvZGU+U0NfTElORV9FTkRfVFlQRV9VTklDT0RFPC9j b2RlPiAoMSkgYW5kIDxjb2RlPlNDX0xJTkVfRU5EX1RZUEVfTk9ORTwvY29kZT4gKDIpLgogICAg ICBUaGVzZSB2YWx1ZXMgYXJlIGFsc28gdXNlZCBieSB0aGUgb3RoZXIgbWVzc2FnZXMgY29uY2Vy bmVkIHdpdGggVW5pY29kZSBsaW5lIGVuZHMuPC9wPgogCi0gICAgPHA+PGIgaWQ9IlNDSV9TRVRM SU5FRU5EVFlQRVNBTExPV0VEIj5TQ0lfU0VUTElORUVORFRZUEVTQUxMT1dFRChpbnQgbGluZUVu ZEJpdFNldCk8L2I+PGJyIC8+CisgICAgPHA+PGIgaWQ9IlNDSV9TRVRMSU5FRU5EVFlQRVNBTExP V0VEIj5TQ0lfU0VUTElORUVORFRZUEVTQUxMT1dFRChpbnQgbGluZUVuZFR5cGUpPC9iPjxiciAv PgogICAgICA8YiBpZD0iU0NJX0dFVExJTkVFTkRUWVBFU0FMTE9XRUQiPlNDSV9HRVRMSU5FRU5E VFlQRVNBTExPV0VEICZyYXJyOyBpbnQ8L2I+PGJyIC8+CiAgICAgIEJ5IGRlZmF1bHQsIG9ubHkg dGhlIEFTQ0lJIGxpbmUgZW5kcyBhcmUgaW50ZXJwcmV0ZWQuIFVuaWNvZGUgbGluZSBlbmRzIG1h eSBiZSByZXF1ZXN0ZWQgd2l0aAogICAgICA8Y29kZT5TQ0lfU0VUTElORUVORFRZUEVTQUxMT1dF RChTQ19MSU5FX0VORF9UWVBFX1VOSUNPREUpPC9jb2RlPgogICAgICBidXQgdGhpcyB3aWxsIGJl IGluZWZmZWN0aXZlIHVubGVzcyB0aGUgbGV4ZXIgYWxzbyBhbGxvd3MgeW91IFVuaWNvZGUgbGlu ZSBlbmRzLgorICAgICA8Y29kZT5TQ19MSU5FX0VORF9UWVBFX05PTkU8L2NvZGU+IGRpc2FibGVz IGludGVycHJldGF0aW9uIG9mIGFsbCBsaW5lIGVuZHMgd2hpY2ggZWZmZWN0aXZlbHkKKyAgICAg Y3JlYXRlcyBhIG9uZS1saW5lIHZpZXcuCiAgICAgPGNvZGU+U0NJX0dFVExJTkVFTkRUWVBFU0FM TE9XRUQ8L2NvZGU+IHJldHVybnMgdGhlIGN1cnJlbnQgc3RhdGUuPC9wPgogCiAgICAgPHA+PGIg aWQ9IlNDSV9HRVRMSU5FRU5EVFlQRVNBQ1RJVkUiPlNDSV9HRVRMSU5FRU5EVFlQRVNBQ1RJVkUg JnJhcnI7IGludDwvYj48YnIgLz4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvU2NpbnRpbGxhLmggYi9p bmNsdWRlL1NjaW50aWxsYS5oCmluZGV4IGI2Nzg2MDk3ZS4uY2U2MmM0NjIwIDEwMDY0NAotLS0g YS9pbmNsdWRlL1NjaW50aWxsYS5oCisrKyBiL2luY2x1ZGUvU2NpbnRpbGxhLmgKQEAgLTExNDQs NiArMTE0NCw3IEBAIHR5cGVkZWYgc3B0cl90ICgqU2NpRm5EaXJlY3RTdGF0dXMpKHNwdHJfdCBw dHIsIHVuc2lnbmVkIGludCBpTWVzc2FnZSwgdXB0cl90IHdQCiAjZGVmaW5lIFNDSV9TRVRDQVJF VExJTkVWSVNJQkxFQUxXQVlTIDI2NTUKICNkZWZpbmUgU0NfTElORV9FTkRfVFlQRV9ERUZBVUxU IDAKICNkZWZpbmUgU0NfTElORV9FTkRfVFlQRV9VTklDT0RFIDEKKyNkZWZpbmUgU0NfTElORV9F TkRfVFlQRV9OT05FIDIKICNkZWZpbmUgU0NJX1NFVExJTkVFTkRUWVBFU0FMTE9XRUQgMjY1Ngog I2RlZmluZSBTQ0lfR0VUTElORUVORFRZUEVTQUxMT1dFRCAyNjU3CiAjZGVmaW5lIFNDSV9HRVRM SU5FRU5EVFlQRVNBQ1RJVkUgMjY1OApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9TY2ludGlsbGEuaWZh Y2UgYi9pbmNsdWRlL1NjaW50aWxsYS5pZmFjZQppbmRleCA2MjYyZjdjMWIuLjViYjgwZmI0NCAx MDA2NDQKLS0tIGEvaW5jbHVkZS9TY2ludGlsbGEuaWZhY2UKKysrIGIvaW5jbHVkZS9TY2ludGls bGEuaWZhY2UKQEAgLTMxNDUsNiArMzE0NSw3IEBAIHNldCB2b2lkIFNldENhcmV0TGluZVZpc2li bGVBbHdheXM9MjY1NShib29sIGFsd2F5c1Zpc2libGUsKQogZW51IExpbmVFbmRUeXBlPVNDX0xJ TkVfRU5EX1RZUEVfCiB2YWwgU0NfTElORV9FTkRfVFlQRV9ERUZBVUxUPTAKIHZhbCBTQ19MSU5F X0VORF9UWVBFX1VOSUNPREU9MQordmFsIFNDX0xJTkVfRU5EX1RZUEVfTk9ORT0yCiAKICMgU2V0 IHRoZSBsaW5lIGVuZCB0eXBlcyB0aGF0IHRoZSBhcHBsaWNhdGlvbiB3YW50cyB0byB1c2UuIE1h eSBub3QgYmUgdXNlZCBpZiBpbmNvbXBhdGlibGUgd2l0aCBsZXhlciBvciBlbmNvZGluZy4KIHNl dCB2b2lkIFNldExpbmVFbmRUeXBlc0FsbG93ZWQ9MjY1NihMaW5lRW5kVHlwZSBsaW5lRW5kQml0 U2V0LCkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvU2NpbnRpbGxhVHlwZXMuaCBiL2luY2x1ZGUvU2Np bnRpbGxhVHlwZXMuaAppbmRleCAwOTkxYTE0ODAuLjQxMTg3NmY5NyAxMDA2NDQKLS0tIGEvaW5j bHVkZS9TY2ludGlsbGFUeXBlcy5oCisrKyBiL2luY2x1ZGUvU2NpbnRpbGxhVHlwZXMuaApAQCAt NTIyLDYgKzUyMiw3IEBAIGVudW0gY2xhc3MgVGVjaG5vbG9neSB7CiBlbnVtIGNsYXNzIExpbmVF bmRUeXBlIHsKIAlEZWZhdWx0ID0gMCwKIAlVbmljb2RlID0gMSwKKwlOb25lID0gMiwKIH07CiAK IGVudW0gY2xhc3MgUmVwcmVzZW50YXRpb25BcHBlYXJhbmNlIHsKZGlmZiAtLWdpdCBhL3NyYy9D ZWxsQnVmZmVyLmN4eCBiL3NyYy9DZWxsQnVmZmVyLmN4eAppbmRleCAzZTlkZWI5MzQuLjI4MTQx ZTJjZCAxMDA2NDQKLS0tIGEvc3JjL0NlbGxCdWZmZXIuY3h4CisrKyBiL3NyYy9DZWxsQnVmZmVy LmN4eApAQCAtNTIxLDYgKzUyMSw5IEBAIHZvaWQgQ2VsbEJ1ZmZlcjo6U2V0TGluZUVuZFR5cGVz KExpbmVFbmRUeXBlIHV0ZjhMaW5lRW5kc18pIHsKIH0KIAogYm9vbCBDZWxsQnVmZmVyOjpDb250 YWluc0xpbmVFbmQoY29uc3QgY2hhciAqcywgU2NpOjpQb3NpdGlvbiBsZW5ndGgpIGNvbnN0IG5v ZXhjZXB0IHsKKwlpZiAodXRmOExpbmVFbmRzID09IExpbmVFbmRUeXBlOjpOb25lKSB7CisJCXJl dHVybiBmYWxzZTsKKwl9CiAJdW5zaWduZWQgY2hhciBjaEJlZm9yZVByZXYgPSAwOwogCXVuc2ln bmVkIGNoYXIgY2hQcmV2ID0gMDsKIAlmb3IgKFNjaTo6UG9zaXRpb24gaSA9IDA7IGkgPCBsZW5n dGg7IGkrKykgewpAQCAtNTcyLDYgKzU3NSw4IEBAIFNjaTo6UG9zaXRpb24gQ2VsbEJ1ZmZlcjo6 TGluZVN0YXJ0KFNjaTo6TGluZSBsaW5lKSBjb25zdCBub2V4Y2VwdCB7CiAJCXJldHVybiAwOwog CWVsc2UgaWYgKGxpbmUgPj0gTGluZXMoKSkKIAkJcmV0dXJuIExlbmd0aCgpOworCWVsc2UgaWYg KExpbmVFbmRUeXBlOjpOb25lID09IEdldExpbmVFbmRUeXBlcygpKQorCQlyZXR1cm4gMDsKIAll bHNlCiAJCXJldHVybiBwbHYtPkxpbmVTdGFydChsaW5lKTsKIH0KQEAgLTU3OSw2ICs1ODQsOCBA QCBTY2k6OlBvc2l0aW9uIENlbGxCdWZmZXI6OkxpbmVTdGFydChTY2k6OkxpbmUgbGluZSkgY29u c3Qgbm9leGNlcHQgewogU2NpOjpQb3NpdGlvbiBDZWxsQnVmZmVyOjpMaW5lRW5kKFNjaTo6TGlu ZSBsaW5lKSBjb25zdCBub2V4Y2VwdCB7CiAJaWYgKGxpbmUgPj0gTGluZXMoKSAtIDEpIHsKIAkJ cmV0dXJuIExpbmVTdGFydChsaW5lICsgMSk7CisJfSBlbHNlIGlmIChMaW5lRW5kVHlwZTo6Tm9u ZSA9PSBHZXRMaW5lRW5kVHlwZXMoKSkgeworCQlyZXR1cm4gTGVuZ3RoKCk7CiAJfSBlbHNlIHsK IAkJU2NpOjpQb3NpdGlvbiBwb3NpdGlvbiA9IExpbmVTdGFydChsaW5lICsgMSk7CiAJCWlmIChM aW5lRW5kVHlwZTo6VW5pY29kZSA9PSBHZXRMaW5lRW5kVHlwZXMoKSkgewpAQCAtNzE4LDYgKzcy NSwxMSBAQCB2b2lkIENlbGxCdWZmZXI6OlJlc2V0TGluZUVuZHMoKSB7CiAJY29uc3RleHByIFNj aTo6UG9zaXRpb24gcG9zaXRpb24gPSAwOwogCWNvbnN0IFNjaTo6UG9zaXRpb24gbGVuZ3RoID0g TGVuZ3RoKCk7CiAJcGx2LT5JbnNlcnRUZXh0KDAsIGxlbmd0aCk7CisKKwlpZiAoTGluZUVuZFR5 cGU6Ok5vbmUgPT0gR2V0TGluZUVuZFR5cGVzKCkpIHsKKwkJcmV0dXJuOworCX0KKwogCVNjaTo6 TGluZSBsaW5lSW5zZXJ0ID0gMTsKIAljb25zdGV4cHIgYm9vbCBhdExpbmVTdGFydCA9IHRydWU7 CiAJdW5zaWduZWQgY2hhciBjaEJlZm9yZVByZXYgPSAwOwpAQCAtODE5LDcgKzgzMSw3IEBAIHZv aWQgQ2VsbEJ1ZmZlcjo6QmFzaWNJbnNlcnRTdHJpbmcoU2NpOjpQb3NpdGlvbiBwb3NpdGlvbiwg Y29uc3QgY2hhciAqcywgU2NpOjpQCiAJcGx2LT5JbnNlcnRUZXh0KGxpbmVJbnNlcnQtMSwgaW5z ZXJ0TGVuZ3RoKTsKIAl1bnNpZ25lZCBjaGFyIGNoQmVmb3JlUHJldiA9IHN1YnN0YW5jZS5WYWx1 ZUF0KHBvc2l0aW9uIC0gMik7CiAJdW5zaWduZWQgY2hhciBjaFByZXYgPSBzdWJzdGFuY2UuVmFs dWVBdChwb3NpdGlvbiAtIDEpOwotCWlmIChjaFByZXYgPT0gJ1xyJyAmJiBjaEFmdGVyID09ICdc bicpIHsKKwlpZiAoTGluZUVuZFR5cGU6Ok5vbmUgIT0gR2V0TGluZUVuZFR5cGVzKCkgJiYgY2hQ cmV2ID09ICdccicgJiYgY2hBZnRlciA9PSAnXG4nKSB7CiAJCS8vIFNwbGl0dGluZyB1cCBhIGNy bGYgcGFpciBhdCBwb3NpdGlvbgogCQlJbnNlcnRMaW5lKGxpbmVJbnNlcnQsIHBvc2l0aW9uLCBm YWxzZSk7CiAJCWxpbmVJbnNlcnQrKzsKQEAgLTgzOCw3ICs4NTAsNyBAQCB2b2lkIENlbGxCdWZm ZXI6OkJhc2ljSW5zZXJ0U3RyaW5nKFNjaTo6UG9zaXRpb24gcG9zaXRpb24sIGNvbnN0IGNoYXIg KnMsIFNjaTo6UAogCWNvbnN0IGNoYXIgKnB0ciA9IHM7CiAJdW5zaWduZWQgY2hhciBjaCA9IDA7 CiAKLQlpZiAoY2hQcmV2ID09ICdccicgJiYgKnB0ciA9PSAnXG4nKSB7CisJaWYgKExpbmVFbmRU eXBlOjpOb25lICE9IEdldExpbmVFbmRUeXBlcygpICYmIGNoUHJldiA9PSAnXHInICYmICpwdHIg PT0gJ1xuJykgewogCQkrK3B0cjsKIAkJLy8gUGF0Y2ggdXAgd2hhdCB3YXMgZW5kIG9mIGxpbmUK IAkJcGx2LT5TZXRMaW5lU3RhcnQobGluZUluc2VydCAtIDEsIChwb3NpdGlvbiArIHB0ciAtIHMp KTsKQEAgLTg0Nyw4ICs4NTksMTAgQEAgdm9pZCBDZWxsQnVmZmVyOjpCYXNpY0luc2VydFN0cmlu ZyhTY2k6OlBvc2l0aW9uIHBvc2l0aW9uLCBjb25zdCBjaGFyICpzLCBTY2k6OlAKIAogCWlmIChw dHIgPCBlbmQpIHsKIAkJdWludDhfdCBlb2xUYWJsZVsyNTZde307Ci0JCWVvbFRhYmxlW3N0YXRp Y19jYXN0PHVpbnQ4X3Q+KCdcbicpXSA9IDE7Ci0JCWVvbFRhYmxlW3N0YXRpY19jYXN0PHVpbnQ4 X3Q+KCdccicpXSA9IDI7CisJCWlmIChMaW5lRW5kVHlwZTo6Tm9uZSAhPSBHZXRMaW5lRW5kVHlw ZXMoKSkgeworCQkJZW9sVGFibGVbc3RhdGljX2Nhc3Q8dWludDhfdD4oJ1xuJyldID0gMTsKKwkJ CWVvbFRhYmxlW3N0YXRpY19jYXN0PHVpbnQ4X3Q+KCdccicpXSA9IDI7CisJCX0KIAkJaWYgKHV0 ZjhMaW5lRW5kcyA9PSBMaW5lRW5kVHlwZTo6VW5pY29kZSkgewogCQkJLy8gc2VlIFVuaUNvbnZl cnNpb24uaCBmb3IgTFMsIFBTIGFuZCBORUwKIAkJCWVvbFRhYmxlWzB4ODVdID0gNDsKQEAgLTkw Niw3ICs5MjAsNyBAQCB2b2lkIENlbGxCdWZmZXI6OkJhc2ljSW5zZXJ0U3RyaW5nKFNjaTo6UG9z aXRpb24gcG9zaXRpb24sIGNvbnN0IGNoYXIgKnMsIFNjaTo6UAogCWNoID0gKmVuZDsKIAlpZiAo cHRyID09IGVuZCkgewogCQkrK3B0cjsKLQkJaWYgKGNoID09ICdccicgfHwgY2ggPT0gJ1xuJykg eworCQlpZiAoTGluZUVuZFR5cGU6Ok5vbmUgIT0gR2V0TGluZUVuZFR5cGVzKCkgJiYgKGNoID09 ICdccicgfHwgY2ggPT0gJ1xuJykpIHsKIAkJCUluc2VydExpbmUobGluZUluc2VydCwgKHBvc2l0 aW9uICsgcHRyIC0gcyksIGF0TGluZVN0YXJ0KTsKIAkJCWxpbmVJbnNlcnQrKzsKIAkJfSBlbHNl IGlmICh1dGY4TGluZUVuZHMgPT0gTGluZUVuZFR5cGU6OlVuaWNvZGUgJiYgIVVURjhJc0FzY2lp KGNoKSkgewpAQCAtOTE4LDcgKzkzMiw3IEBAIHZvaWQgQ2VsbEJ1ZmZlcjo6QmFzaWNJbnNlcnRT dHJpbmcoU2NpOjpQb3NpdGlvbiBwb3NpdGlvbiwgY29uc3QgY2hhciAqcywgU2NpOjpQCiAJfQog CiAJLy8gSm9pbmluZyB0d28gbGluZXMgd2hlcmUgbGFzdCBpbnNlcnRpb24gaXMgY3IgYW5kIGZv bGxvd2luZyBzdWJzdGFuY2Ugc3RhcnRzIHdpdGggbGYKLQlpZiAoY2hBZnRlciA9PSAnXG4nKSB7 CisJaWYgKExpbmVFbmRUeXBlOjpOb25lICE9IEdldExpbmVFbmRUeXBlcygpICYmIGNoQWZ0ZXIg PT0gJ1xuJykgewogCQlpZiAoY2ggPT0gJ1xyJykgewogCQkJLy8gRW5kIG9mIGxpbmUgYWxyZWFk eSBpbiBidWZmZXIgc28gZHJvcCB0aGUgbmV3bHkgY3JlYXRlZCBvbmUKIAkJCVJlbW92ZUxpbmUo bGluZUluc2VydCAtIDEpOwpAQCAtOTk5LDcgKzEwMTMsNyBAQCB2b2lkIENlbGxCdWZmZXI6OkJh c2ljRGVsZXRlQ2hhcnMoU2NpOjpQb3NpdGlvbiBwb3NpdGlvbiwgU2NpOjpQb3NpdGlvbiBkZWxl dGVMZQogCQl9CiAKIAkJYm9vbCBpZ25vcmVOTCA9IGZhbHNlOwotCQlpZiAoY2hQcmV2ID09ICdc cicgJiYgY2hOZXh0ID09ICdcbicpIHsKKwkJaWYgKExpbmVFbmRUeXBlOjpOb25lICE9IEdldExp bmVFbmRUeXBlcygpICYmIGNoUHJldiA9PSAnXHInICYmIGNoTmV4dCA9PSAnXG4nKSB7CiAJCQkv LyBNb3ZlIGJhY2sgb25lCiAJCQlwbHYtPlNldExpbmVTdGFydChsaW5lUmVtb3ZlLCBwb3NpdGlv bik7CiAJCQlsaW5lUmVtb3ZlKys7CkBAIC0xMDExLDM4ICsxMDI1LDQwIEBAIHZvaWQgQ2VsbEJ1 ZmZlcjo6QmFzaWNEZWxldGVDaGFycyhTY2k6OlBvc2l0aW9uIHBvc2l0aW9uLCBTY2k6OlBvc2l0 aW9uIGRlbGV0ZUxlCiAJCQl9CiAJCX0KIAotCQl1bnNpZ25lZCBjaGFyIGNoID0gY2hOZXh0Owot CQlmb3IgKFNjaTo6UG9zaXRpb24gaSA9IDA7IGkgPCBkZWxldGVMZW5ndGg7IGkrKykgewotCQkJ Y2hOZXh0ID0gc3Vic3RhbmNlLlZhbHVlQXQocG9zaXRpb24gKyBpICsgMSk7Ci0JCQlpZiAoY2gg PT0gJ1xyJykgewotCQkJCWlmIChjaE5leHQgIT0gJ1xuJykgewotCQkJCQlSZW1vdmVMaW5lKGxp bmVSZW1vdmUpOwotCQkJCX0KLQkJCX0gZWxzZSBpZiAoY2ggPT0gJ1xuJykgewotCQkJCWlmIChp Z25vcmVOTCkgewotCQkJCQlpZ25vcmVOTCA9IGZhbHNlOyAJLy8gRnVydGhlciBcbiBhcmUgcmVh bCBkZWxldGlvbnMKLQkJCQl9IGVsc2UgewotCQkJCQlSZW1vdmVMaW5lKGxpbmVSZW1vdmUpOwot CQkJCX0KLQkJCX0gZWxzZSBpZiAodXRmOExpbmVFbmRzID09IExpbmVFbmRUeXBlOjpVbmljb2Rl KSB7Ci0JCQkJaWYgKCFVVEY4SXNBc2NpaShjaCkpIHsKLQkJCQkJY29uc3QgdW5zaWduZWQgY2hh ciBuZXh0M1szXSA9IHtjaCwgY2hOZXh0LAotCQkJCQkJc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hh cj4oc3Vic3RhbmNlLlZhbHVlQXQocG9zaXRpb24gKyBpICsgMikpfTsKLQkJCQkJaWYgKFVURjhJ c1NlcGFyYXRvcihuZXh0MykgfHwgVVRGOElzTkVMKG5leHQzKSkgeworCQlpZiAoTGluZUVuZFR5 cGU6Ok5vbmUgIT0gR2V0TGluZUVuZFR5cGVzKCkpIHsKKwkJCXVuc2lnbmVkIGNoYXIgY2ggPSBj aE5leHQ7CisJCQlmb3IgKFNjaTo6UG9zaXRpb24gaSA9IDA7IGkgPCBkZWxldGVMZW5ndGg7IGkr KykgeworCQkJCWNoTmV4dCA9IHN1YnN0YW5jZS5WYWx1ZUF0KHBvc2l0aW9uICsgaSArIDEpOwor CQkJCWlmIChjaCA9PSAnXHInKSB7CisJCQkJCWlmIChjaE5leHQgIT0gJ1xuJykgewogCQkJCQkJ UmVtb3ZlTGluZShsaW5lUmVtb3ZlKTsKIAkJCQkJfQorCQkJCX0gZWxzZSBpZiAoY2ggPT0gJ1xu JykgeworCQkJCQlpZiAoaWdub3JlTkwpIHsKKwkJCQkJCWlnbm9yZU5MID0gZmFsc2U7IAkvLyBG dXJ0aGVyIFxuIGFyZSByZWFsIGRlbGV0aW9ucworCQkJCQl9IGVsc2UgeworCQkJCQkJUmVtb3Zl TGluZShsaW5lUmVtb3ZlKTsKKwkJCQkJfQorCQkJCX0gZWxzZSBpZiAodXRmOExpbmVFbmRzID09 IExpbmVFbmRUeXBlOjpVbmljb2RlKSB7CisJCQkJCWlmICghVVRGOElzQXNjaWkoY2gpKSB7CisJ CQkJCQljb25zdCB1bnNpZ25lZCBjaGFyIG5leHQzWzNdID0ge2NoLCBjaE5leHQsCisJCQkJCQkJ c3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oc3Vic3RhbmNlLlZhbHVlQXQocG9zaXRpb24gKyBp ICsgMikpfTsKKwkJCQkJCWlmIChVVEY4SXNTZXBhcmF0b3IobmV4dDMpIHx8IFVURjhJc05FTChu ZXh0MykpIHsKKwkJCQkJCQlSZW1vdmVMaW5lKGxpbmVSZW1vdmUpOworCQkJCQkJfQorCQkJCQl9 CiAJCQkJfQotCQkJfQogCi0JCQljaCA9IGNoTmV4dDsKLQkJfQotCQkvLyBNYXkgaGF2ZSB0byBm aXggdXAgZW5kIGlmIGxhc3QgZGVsZXRpb24gY2F1c2VzIGNyIHRvIGJlIG5leHQgdG8gbGYKLQkJ Ly8gb3IgcmVtb3ZlcyBvbmUgb2YgYSBjcmxmIHBhaXIKLQkJY29uc3QgY2hhciBjaEFmdGVyID0g c3Vic3RhbmNlLlZhbHVlQXQocG9zaXRpb24gKyBkZWxldGVMZW5ndGgpOwotCQlpZiAoY2hCZWZv cmUgPT0gJ1xyJyAmJiBjaEFmdGVyID09ICdcbicpIHsKLQkJCS8vIFVzaW5nIGxpbmVSZW1vdmUt MSBhcyBjciBlbmRlZCBsaW5lIGJlZm9yZSBzdGFydCBvZiBkZWxldGlvbgotCQkJUmVtb3ZlTGlu ZShsaW5lUmVtb3ZlIC0gMSk7Ci0JCQlwbHYtPlNldExpbmVTdGFydChsaW5lUmVtb3ZlIC0gMSwg cG9zaXRpb24gKyAxKTsKKwkJCQljaCA9IGNoTmV4dDsKKwkJCX0KKwkJCS8vIE1heSBoYXZlIHRv IGZpeCB1cCBlbmQgaWYgbGFzdCBkZWxldGlvbiBjYXVzZXMgY3IgdG8gYmUgbmV4dCB0byBsZgor CQkJLy8gb3IgcmVtb3ZlcyBvbmUgb2YgYSBjcmxmIHBhaXIKKwkJCWNvbnN0IGNoYXIgY2hBZnRl ciA9IHN1YnN0YW5jZS5WYWx1ZUF0KHBvc2l0aW9uICsgZGVsZXRlTGVuZ3RoKTsKKwkJCWlmIChj aEJlZm9yZSA9PSAnXHInICYmIGNoQWZ0ZXIgPT0gJ1xuJykgeworCQkJCS8vIFVzaW5nIGxpbmVS ZW1vdmUtMSBhcyBjciBlbmRlZCBsaW5lIGJlZm9yZSBzdGFydCBvZiBkZWxldGlvbgorCQkJCVJl bW92ZUxpbmUobGluZVJlbW92ZSAtIDEpOworCQkJCXBsdi0+U2V0TGluZVN0YXJ0KGxpbmVSZW1v dmUgLSAxLCBwb3NpdGlvbiArIDEpOworCQkJfQogCQl9CiAJfQogCXN1YnN0YW5jZS5EZWxldGVS YW5nZShwb3NpdGlvbiwgZGVsZXRlTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL3NyYy9Eb2N1bWVudC5j eHggYi9zcmMvRG9jdW1lbnQuY3h4CmluZGV4IDQ1OGMxZTkzZi4uZmQzM2NjNzA4IDEwMDY0NAot LS0gYS9zcmMvRG9jdW1lbnQuY3h4CisrKyBiL3NyYy9Eb2N1bWVudC5jeHgKQEAgLTEwMCw3ICsx MDAsNyBAQCBMaW5lRW5kVHlwZSBMZXhJbnRlcmZhY2U6OkxpbmVFbmRUeXBlc1N1cHBvcnRlZCgp IHsKIAlpZiAoaW5zdGFuY2UpIHsKIAkJcmV0dXJuIHN0YXRpY19jYXN0PExpbmVFbmRUeXBlPihp bnN0YW5jZS0+TGluZUVuZFR5cGVzU3VwcG9ydGVkKCkpOwogCX0KLQlyZXR1cm4gTGluZUVuZFR5 cGU6OkRlZmF1bHQ7CisJcmV0dXJuIExpbmVFbmRUeXBlOjpOb25lOwogfQogCiBib29sIExleElu dGVyZmFjZTo6VXNlQ29udGFpbmVyTGV4aW5nKCkgY29uc3Qgbm9leGNlcHQgewpAQCAtMjYwLDcg KzI2MCw3IEBAIExpbmVBbm5vdGF0aW9uICpEb2N1bWVudDo6RU9MQW5ub3RhdGlvbnMoKSBjb25z dCBub2V4Y2VwdCB7CiBMaW5lRW5kVHlwZSBEb2N1bWVudDo6TGluZUVuZFR5cGVzU3VwcG9ydGVk KCkgY29uc3QgewogCWlmICgoQ3BVdGY4ID09IGRiY3NDb2RlUGFnZSkgJiYgcGxpKQogCQlyZXR1 cm4gcGxpLT5MaW5lRW5kVHlwZXNTdXBwb3J0ZWQoKTsKLQlyZXR1cm4gTGluZUVuZFR5cGU6OkRl ZmF1bHQ7CisJcmV0dXJuIExpbmVFbmRUeXBlOjpOb25lOwogfQogCiBib29sIERvY3VtZW50OjpT ZXREQkNTQ29kZVBhZ2UoaW50IGRiY3NDb2RlUGFnZV8pIHsKZGlmZiAtLWdpdCBhL3NyYy9TY2lu dGlsbGFCYXNlLmN4eCBiL3NyYy9TY2ludGlsbGFCYXNlLmN4eAppbmRleCAxZjRjMzYwZGEuLjkw YjNkMzI3NSAxMDA2NDQKLS0tIGEvc3JjL1NjaW50aWxsYUJhc2UuY3h4CisrKyBiL3NyYy9TY2lu dGlsbGFCYXNlLmN4eApAQCAtNzM1LDcgKzczNSw3IEBAIExpbmVFbmRUeXBlIExleFN0YXRlOjpM aW5lRW5kVHlwZXNTdXBwb3J0ZWQoKSB7CiAJaWYgKGluc3RhbmNlKSB7CiAJCXJldHVybiBzdGF0 aWNfY2FzdDxMaW5lRW5kVHlwZT4oaW5zdGFuY2UtPkxpbmVFbmRUeXBlc1N1cHBvcnRlZCgpKTsK IAl9Ci0JcmV0dXJuIExpbmVFbmRUeXBlOjpEZWZhdWx0OworCXJldHVybiBMaW5lRW5kVHlwZTo6 Tm9uZTsKIH0KIAogaW50IExleFN0YXRlOjpBbGxvY2F0ZVN1YlN0eWxlcyhpbnQgc3R5bGVCYXNl LCBpbnQgbnVtYmVyU3R5bGVzKSB7Ci0tIAoyLjUyLjAKCg== --6e89dc7b36667d365019546d4f359284facee1ed1f4c509bc4e4369a8012-- --39727a4579534970eb83f08e532cb6b943c65381b8fcd7c95ad3c9229e7e Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQEzBAABCAAdFiEEB/6AD3js1eGB4raKarMDYY4q6voFAmmKCM0ACgkQarMDYY4q 6vrqGwf/dRZk5eSd7OTTeByhHyutUVTw/bD+oohVeoXrpQhExdH8JUirxA3ubL45 kwifc0u1WgAeRdMFs+tQ5wca9doHqRoKyQ6jf/x69ZZspRmBGw5Pq0u+Ho4OPVyc Q+rqzLbMoKOm8+z62qU6JMtuISwwk+TIHZg81wpqCrgwBDjmc+KeKSVb7JeGQ6kf xuhTVeeT2wU4xPhzJBDK2ofvKZTnugnDiorFkbLa0IEwv4PM7BeodXWn+jrmvNRy QQqysQCSXXP2bSEdyx0yzfS80OBt5waFZn/au9yW/vImtrKQQ4SWLSV29tdiFdi8 8G6X61lXWCz8T6EQMoGEGUTIC2X/Sw== =i6UO -----END PGP SIGNATURE----- --39727a4579534970eb83f08e532cb6b943c65381b8fcd7c95ad3c9229e7e--