Re: Fix formatting glitches.
Andreas Scherer <[email protected]> Mon, 13 May 2024 17:17:33 +0200
| Newsgroups | gmane.comp.tex.metapost |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format. --------------hdAXmepwQb0i0xBdFagQaEC0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Am 12.05.24 um 14:51 schrieb Andreas Scherer: > And half a radio interview later, here are the "final" patches for MP.W. Scrolling through MP.PDF a second time from Section 1 to the Index produces another set of fixes sprinkled all over the document. Happy hacking! Andreas --------------hdAXmepwQb0i0xBdFagQaEC0 Content-Type: text/x-patch; charset=UTF-8; name="0147-Scroll-through-mp.pdf-a-second-time.patch" Content-Disposition: attachment; filename="0147-Scroll-through-mp.pdf-a-second-time.patch" Content-Transfer-Encoding: base64 RnJvbSA1ZTk1MTVjNzdmZDg2YTVhMGE2ZGZjYmU5NjRlMDRmOTQxM2YwYjBiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZWFzIFNjaGVyZXIgPGFuZHJlYXNfZ2l0aHVi QGZyZWVuZXQuZGU+CkRhdGU6IFN1biwgMTIgTWF5IDIwMjQgMTY6MzE6MDAgKzAyMDAKU3Vi amVjdDogW1BBVENIIDE0Ny8xNDddIFNjcm9sbCB0aHJvdWdoIG1wLnBkZiBhIHNlY29uZCB0 aW1lLgoKLS0tCiBtcC53IHwgMTUzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgODMgaW5zZXJ0 aW9ucygrKSwgNzAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbXAudyBiL21wLncKaW5k ZXggNWZiOGU3Yi4uNmMwZjI4NSAxMDA2NDQKLS0tIGEvbXAudworKysgYi9tcC53CkBAIC0z ODEsNyArMzgxLDcgQEAgdGhlIHxBbGxvY2F0ZSBvciBpbml0aWFsaXplIHZhcmlhYmxlc3wg YmxvY2suCiAKIEBkIHNldF9jYWxsYmFja19vcHRpb24oQSkgZG8geyBtcC0+QSA9IG1wXyMj QTsKICAgaWYgKG9wdC0+QSE9TlVMTCkgbXAtPkEgPSBvcHQtPkE7Ci19IHdoaWxlICgwKQor fSB3aGlsZSAoMClAOwogCiBAYwogc3RhdGljIE1QIG1wX2RvX25ldyAoam1wX2J1ZiAqIGJ1 ZikgewpAQCAtODEzLDcgKzgxMyw3IEBAIGludCB1dGY4X21vZGU7CiBAIEA8RGVhbGxvYyB2 YXJpYWJsZXNAPj0KIHhmcmVlIChtcC0+YmFubmVyKTsKIAotQCBAZCBzZXRfbG93ZXJfbGlt aXRlZF92YWx1ZShhLGIsYykgZG8geyBhPWM7IGlmIChiPmMpIGE9YjsgfSB3aGlsZSAoMCkK K0AgQGQgc2V0X2xvd2VyX2xpbWl0ZWRfdmFsdWUoYSxiLGMpIGRvIHsgYT1jOyBpZiAoYj5j KSBhPWI7IH0gd2hpbGUgKDApQDsKIAogQDxBbGxvY2F0ZSBvciAuLi5APj0KIG1wLT5wYXJh bV9zaXplID0gNDsKQEAgLTEzMjgsNyArMTMyOCw3IEBAIHRvIHRoZSBpbnB1dCBidWZmZXIu ICBUaGUgdmFyaWFibGUgfGNvbW1hbmRfbGluZXwgd2lsbCBiZSBmaWxsZWQgYnkgdGhlCiBA ZCB0X29wZW5fb3V0KCkgIGRvIHsvKiBvcGVuIHRoZSB0ZXJtaW5hbCBmb3IgdGV4dCBvdXRw dXQgKi8KICAgICBtcC0+dGVybV9vdXQgPSAobXAtPm9wZW5fZmlsZSkobXAsInRlcm1pbmFs IiwgInciLCBtcF9maWxldHlwZV90ZXJtaW5hbCk7CiAgICAgbXAtPmVycl9vdXQgPSAobXAt Pm9wZW5fZmlsZSkobXAsImVycm9yIiwgInciLCBtcF9maWxldHlwZV9lcnJvcik7Ci19IHdo aWxlICgwKQorfSB3aGlsZSAoMClAOwogQGQgdF9vcGVuX2luKCkgIGRvIHsgLyogb3BlbiB0 aGUgdGVybWluYWwgZm9yIHRleHQgaW5wdXQgKi8KICAgICBtcC0+dGVybV9pbiA9IChtcC0+ b3Blbl9maWxlKShtcCwidGVybWluYWwiLCAiciIsIG1wX2ZpbGV0eXBlX3Rlcm1pbmFsKTsK ICAgICBpZiAobXAtPmNvbW1hbmRfbGluZSE9TlVMTCkgewpAQCAtMTM0MSw3ICsxMzQxLDcg QEAgdG8gdGhlIGlucHV0IGJ1ZmZlci4gIFRoZSB2YXJpYWJsZSB8Y29tbWFuZF9saW5lfCB3 aWxsIGJlIGZpbGxlZCBieSB0aGUKICAgICB9IGVsc2UgewogCSAgbXAtPmxhc3QgPSAwOwog ICAgIH0KLX0gd2hpbGUgKDApCit9IHdoaWxlICgwKUA7CiAKIEA8T3B0aW9uIHZhcmlhYmxl c0A+PQogY2hhciAqY29tbWFuZF9saW5lOwpAQCAtMTY4MiwxMSArMTY4MiwxMSBAQCBzdGF0 aWMgdm9pZCBtcF9wcmludF92aXNpYmxlX2NoYXIgKE1QIG1wLCBBU0NJSV9jb2RlIHMpIHsK ICAgICBpZiAobXAtPnRlcm1fb2Zmc2V0ID09ICh1bnNpZ25lZCkgbXAtPm1heF9wcmludF9s aW5lKSB7CiAgICAgICB3dGVybV9jcjsKICAgICAgIG1wLT50ZXJtX29mZnNldCA9IDA7Ci0g ICAgfTsKKyAgICB9CiAgICAgaWYgKG1wLT5maWxlX29mZnNldCA9PSAodW5zaWduZWQpIG1w LT5tYXhfcHJpbnRfbGluZSkgewogICAgICAgd2xvZ19jcjsKICAgICAgIG1wLT5maWxlX29m ZnNldCA9IDA7Ci0gICAgfTsKKyAgICB9CiAgICAgYnJlYWs7CiAgIGNhc2UgbG9nX29ubHk6 CiAgICAgd2xvZ19jaHIgKHhjaHIgKHMpKTsKQEAgLTE4ODQsNyArMTg4NCw3IEBAIFRoaXMg cHJvY2VkdXJlIGlzIG5ldmVyIGNhbGxlZCB3aGVuIHxpbnRlcmFjdGlvbjxtcF9zY3JvbGxf bW9kZXwuCiAgICAgICBtcF9wcmludChtcCwgKEEpKTsKICAgICB9CiAgICAgbXBfdGVybV9p bnB1dChtcCk7Ci0gIH0gd2hpbGUgKDApIC8qIHByaW50cyBhIHN0cmluZyBhbmQgZ2V0cyBh IGxpbmUgb2YgaW5wdXQgKi8KKyAgfSB3aGlsZSAoMClAOyAvKiBwcmludHMgYSBzdHJpbmcg YW5kIGdldHMgYSBsaW5lIG9mIGlucHV0ICovCiAKIEBjCiB2b2lkIG1wX3Rlcm1faW5wdXQg KE1QIG1wKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGdldHMgYSBsaW5l IGZyb20gdGhlIHRlcm1pbmFsICovCkBAIC0yMDk0LDYgKzIwOTQsOCBAQCBJbmRpdmlkdWFs IGxpbmVzIG9mIGhlbHAgYXJlIHJlY29yZGVkIGluIHRoZSBhcnJheSB8aGVscF9saW5lfCwg d2hpY2gKIGNvbnRhaW5zIGVudHJpZXMgaW4gcG9zaXRpb25zIHwwLi4oaGVscF9wdHItMSl8 LiBUaGV5IHNob3VsZCBiZSBwcmludGVkCiBpbiByZXZlcnNlIG9yZGVyLCBpLmUuLCB3aXRo IHxoZWxwX2xpbmVbMF18IGFwcGVhcmluZyBsYXN0LgogCitAcyBtcF9zeW0gaW50CisKIEBj CiB2b2lkIG1wX2Vycm9yIChNUCBtcCwgY29uc3QgY2hhciAqbXNnLCBjb25zdCBjaGFyICoq aGxwLCBib29sZWFuIGRlbGV0aW9uc19hbGxvd2VkKSB7CiAgIEFTQ0lJX2NvZGUgYzsgLyog d2hhdCB0aGUgdXNlciB0eXBlcyAqLwpAQCAtMjE2NSw2ICsyMTY3LDggQEAgZmlsZSB0aGF0 IHNob3VsZCBiZQogZWRpdGVkIGFuZCB0aGUgcmVsZXZhbnQgbGluZSBudW1iZXIuCiBAXnN5 c3RlbSBkZXBlbmRlbmNpZXNAPgogCitAcyBtcF9lZGl0b3JfY21kIGludAorCiBAPEV4cG9y dGVkIHR5cGVzQD49CiB0eXBlZGVmIHZvaWQgKCptcF9lZGl0b3JfY21kKSAoTVAsIGNoYXIg KiwgaW50KTsKIApAQCAtMjU3OCw3ICsyNTgyLDcgQEAgYW4gYXJpdGhtZXRpYyBlcnJvciBo YXMgYmVlbiBkZXRlY3RlZC4KIEBkIGNoZWNrX2FyaXRoKCkgZG8gewogICBpZiAoIG1wLT5h cml0aF9lcnJvciApCiAgICAgbXBfY2xlYXJfYXJpdGgobXApOwotfSB3aGlsZSAoMCkKK30g d2hpbGUgKDApQDsKIAogQGMKIHN0YXRpYyB2b2lkIG1wX2NsZWFyX2FyaXRoIChNUCBtcCkg ewpAQCAtMjg5Miw3ICsyODk2LDcgQEAgaW50IG1hdGhfbW9kZTsgICAgICAgICAgICAgICAv KiBtYXRoIG1vZGUgKi8KIEAgQDxBbGxvY2F0ZSBvciBpbml0aWFsaXplIC4uLkA+PQogbXAt Pm1hdGhfbW9kZSA9IG9wdC0+bWF0aF9tb2RlOwogCi1AIEBkIHhmcmVlKEEpIGRvIHsgbXBf eGZyZWUoQSk7IEE9TlVMTDsgfSB3aGlsZSAoMCkKK0AgQGQgeGZyZWUoQSkgZG8geyBtcF94 ZnJlZShBKTsgQT1OVUxMOyB9IHdoaWxlICgwKUA7CiBAZCB4cmVhbGxvYyhQLEEsQikgbXBf eHJlYWxsb2MobXAsUCwoc2l6ZV90KUEsQikKIEBkIHhtYWxsb2MoQSxCKSAgbXBfeG1hbGxv YyhtcCwoc2l6ZV90KUEsQikKIEBkIHhzdHJkdXAoQSkgIG1wX3hzdHJkdXAobXAsQSkKQEAg LTMwNDEsNyArMzA0NSw3IEBAIGNvbnRyb2wgb2Ygd2hhdCBlcnJvciBtZXNzYWdlcyB0aGUg dXNlciByZWNlaXZlcy4KICAgIG1wX25vZGUgZCA9IChCKTsKICAgIC8qIHxwcmludGYoInNl dCBsaW5rICAgIG9mICVwIHRvICVwIG9uIGxpbmUgJWRcbiIsIChBKSwgZCwgX19MSU5FX18p O3wgKi8KICAgIG1wX2xpbmsoKEEpKSA9IGQ7Ci0gfSB3aGlsZSAoMCkKKyB9IHdoaWxlICgw KUA7CiBAZCBtcF90eXBlKEEpICAgICAgKEEpLT50eXBlIC8qIGlkZW50aWZpZXMgd2hhdCBr aW5kIG9mIHZhbHVlIHRoaXMgaXMgKi8KIEBkIG1wX25hbWVfdHlwZShBKSAoQSktPm5hbWVf dHlwZSAvKiBhIGNsdWUgdG8gdGhlIG5hbWUgb2YgdGhpcyB2YWx1ZSAqLwogCkBAIC0zMDY1 LDcgKzMwNjksNyBAQCBjYW4gdXNlIHRoZSBzcGVjaWFsIGZlYXR1cmVzIHRoYXQga2VlcCB0 cmFjayBvZiBjdXJyZW50IGFuZCBtYXhpbXVtIG1lbW9yeSB1c2FnZQogQGQgYWRkX3Zhcl91 c2VkKGEpIGRvIHsKICAgIG1wLT52YXJfdXNlZCs9KGEpOwogICAgaWYgKG1wLT52YXJfdXNl ZD5tcC0+dmFyX3VzZWRfbWF4KSBtcC0+dmFyX3VzZWRfbWF4PW1wLT52YXJfdXNlZDsKLX0g d2hpbGUgKDApCit9IHdoaWxlICgwKUA7CiAKIEA8R2xvYi4uLkA+PQogc2l6ZV90IHZhcl91 c2VkOyAgICAgICAgLyogaG93IG11Y2ggbWVtb3J5IGlzIGluIHVzZSAqLwpAQCAtNDE3OCw3 ICs0MTgyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgewogI2RlZmluZSBpbnRlcm5hbF92YWx1ZShB KSBAW21wLT5pbnRlcm5hbFsoQSldLnYuZGF0YS5uQF0KICNkZWZpbmUgc2V0X2ludGVybmFs X2Zyb21fbnVtYmVyKEEsQikgZG8geyBcCiAgIG51bWJlcl9jbG9uZSAoaW50ZXJuYWxfdmFs dWUgKChBKSksKEIpKTtcCi19IHdoaWxlICgwKQorfSB3aGlsZSAoMClAOwogI2RlZmluZSBp bnRlcm5hbF9zdHJpbmcoQSkgQFsobXBfc3RyaW5nKW1wLT5pbnRlcm5hbFsoQSldLnYuZGF0 YS5zdHJAXQogI2RlZmluZSBzZXRfaW50ZXJuYWxfc3RyaW5nKEEsQikgQFttcC0+aW50ZXJu YWxbKEEpXS52LmRhdGEuc3RyPShCKUBdCiAjZGVmaW5lIGludGVybmFsX25hbWUoQSkgQFtt cC0+aW50ZXJuYWxbKEEpXS5pbnRuYW1lQF0KQEAgLTQxOTIsNyArNDE5Niw3IEBAIHR5cGVk ZWYgc3RydWN0IHsKICAgfSBlbHNlIHsgXAogICAgICAgc2V0X2ludGVybmFsX2Zyb21fbnVt YmVyICgoQSksIGN1cl9leHBfdmFsdWVfbnVtYmVyICgpKTsgXAogICB9IFwKLX0gd2hpbGUg KDApCit9IHdoaWxlICgwKUA7CiAKIAogCkBAIC00NjUwLDMwICs0NjU0LDMwIEBAIHRoYXQg aG9sZHMgdGhlIGN1cnJlbnQgY29tbWFuZCB2YWx1ZSBvZiB0aGUgdG9rZW4sIGFuZCBhbgog QGQgc2V0X3RleHQoQSkgICAgIGRvIHsKICAgIEZVTkNUSU9OX1RSQUNFMyAoInNldF90ZXh0 KCVwLCAlcClcbiIsKEEpLChCKSk7CiAgICAoQSktPnRleHQ9KEIpIDsKLX0gd2hpbGUgKDAp Cit9IHdoaWxlICgwKUA7CiAKIEBkIHNldF9lcV90eXBlKEEsQikgIGRvIHsKICAgIEZVTkNU SU9OX1RSQUNFMyAoInNldF9lcV90eXBlKCVwLCAlZClcbiIsKEEpLChCKSk7CiAgICAoQSkt PnR5cGU9KEIpIDsKLX0gd2hpbGUgKDApCit9IHdoaWxlICgwKUA7CiAKIEBkIHNldF9lcXVp dihBLEIpICBkbyB7CiAgICBGVU5DVElPTl9UUkFDRTMgKCJzZXRfZXF1aXYoJXAsICVkKVxu IiwoQSksKEIpKTsKICAgIChBKS0+di5kYXRhLm5vZGU9TlVMTCA7CiAgICAoQSktPnYuZGF0 YS5pbmRlcC5zZXJpYWw9KEIpOwotfSB3aGlsZSAoMCkKK30gd2hpbGUgKDApQDsKIAogQGQg c2V0X2VxdWl2X25vZGUoQSxCKSAgZG8gewogICAgRlVOQ1RJT05fVFJBQ0UzICgic2V0X2Vx dWl2X25vZGUoJXAsICVwKVxuIiwoQSksKEIpKTsKICAgIChBKS0+di5kYXRhLm5vZGU9KEIp IDsKICAgIChBKS0+di5kYXRhLmluZGVwLnNlcmlhbD0wOwotfSB3aGlsZSAoMCkKK30gd2hp bGUgKDApQDsKIAogQGQgc2V0X2VxdWl2X3N5bShBLEIpICBkbyB7CiAgICBGVU5DVElPTl9U UkFDRTMgKCJzZXRfZXF1aXZfc3ltKCVwLCAlcClcbiIsKEEpLChCKSk7CiAgICAoQSktPnYu ZGF0YS5ub2RlPShtcF9ub2RlKShCKTsKICAgIChBKS0+di5kYXRhLmluZGVwLnNlcmlhbD0w OwotfSB3aGlsZSAoMCkKK30gd2hpbGUgKDApQDsKIAogQCBAYwogI2lmIERFQlVHCkBAIC00 NzI3LDcgKzQ3MzEsNyBAQCB0eXBlZGVmIHN0cnVjdCBtcF9zeW1ib2xfZW50cnkgewogICB2 b2lkICpwYXJlbnQ7CiB9IG1wX3N5bWJvbF9lbnRyeTsKIAotQCBAPEdsb2IuLi5APj0KK0Ag QHMgYXZsX3RyZWUgaW50IEA8R2xvYi4uLkA+PQogaW50ZWdlciBzdF9jb3VudDsgICAgICAg LyogdG90YWwgbnVtYmVyIG9mIGtub3duIGlkZW50aWZpZXJzICovCiBhdmxfdHJlZSBzeW1i b2xzOyAgICAgICAvKiBhdmwgdHJlZSBvZiBzeW1ib2xpYyB0b2tlbnMgKi8KIGF2bF90cmVl IGZyb3plbl9zeW1ib2xzOyAgICAgICAgLyogYXZsIHRyZWUgb2YgZnJvemVuIHN5bWJvbGlj IHRva2VucyAqLwpAQCAtNjA2NSw3ICs2MDY5LDcgQEAgc3RhdGljIHZvaWQgZG9fc2V0X3Bh cmVudCAoTVAgbXAsIG1wX3ZhbHVlX25vZGUgQSwgbXBfbm9kZSBkKSB7CiBAIEBkIG1wX2Zy ZWVfYXR0cl9ub2RlKGEsYikgZG8gewogICAgYXNzZXJ0KChiKS0+dHlwZSA9PSBtcF9hdHRy X25vZGVfdHlwZSB8fCAoYiktPm5hbWVfdHlwZSA9PSBtcF9hdHRyKTsKICAgIG1wX2ZyZWVf dmFsdWVfbm9kZShhLGIpOwotfSB3aGlsZSAoMCkKK30gd2hpbGUgKDApQDsKIAogQGMKIHN0 YXRpYyBtcF92YWx1ZV9ub2RlIG1wX2dldF9hdHRyX25vZGUgKE1QIG1wKSB7CkBAIC03MTkw LDggKzcxOTQsNyBAQCB0eXBlZGVmIHN0cnVjdCBtcF9rbm90X2RhdGEgewogfSBtcF9rbm90 X2RhdGE7CiAKIAotQAotQGQgbXBfZ3JfbmV4dF9rbm90KEEpICAgKEEpLT5uZXh0IC8qIHRo ZSBuZXh0IGtub3QgaW4gdGhpcyBsaXN0ICovCitAIEBkIG1wX2dyX25leHRfa25vdChBKSAg IChBKS0+bmV4dCAvKiB0aGUgbmV4dCBrbm90IGluIHRoaXMgbGlzdCAqLwogCiBAPEV4cG9y dGVkIHR5cGVzLi4uQD49CiB0eXBlZGVmIHN0cnVjdCBtcF9ncl9rbm90X2RhdGEgKm1wX2dy X2tub3Q7CkBAIC03ODYwLDcgKzc4NjMsNyBAQCBkbyB7CiAgICAgbnVtYmVyX2Nsb25lIChx LT5sZWZ0X3ksIHAtPnlfY29vcmQpOwogICB9CiAgIHAgPSBxOwotfSB3aGlsZSAocCAhPSBr bm90cykKK30gd2hpbGUgKHAgIT0ga25vdHMpQDsKIAogQCBJZiB0aGVyZSBhcmUgbm8gYnJl YWtwb2ludHMsIGl0IGlzIG5lY2Vzc2FyeSB0byBjb21wdXRlIHRoZSBkaXJlY3Rpb24KIGFu Z2xlcyBhcm91bmQgYW4gZW50aXJlIGN5Y2xlLiBJbiB0aGlzIGNhc2UgdGhlIHxtcF9sZWZ0 X3R5cGV8IG9mIHRoZSBmaXJzdApAQCAtMTA5NDgsOCArMTA5NTEsNiBAQCB3aGVyZSB0aGUg fHRoZW58IGNsYXVzZSBpcyBub3QgZXhlY3V0ZWQuCiBvZmZzZXQgYXNzb2NpYXRlZCB3aXRo IHRoZSBnaXZlbiBkaXJlY3Rpb24gfCh4LHkpfC4gIElmIHR3byBkaWZmZXJlbnQgb2Zmc2V0 cwogYXBwbHksIGl0IGNob29zZXMgb25lIG9mIHRoZW0uCiAKLUBzIG1wX2ZyYWN0aW9uIGlu dAotCiBAYwogc3RhdGljIHZvaWQgbXBfZmluZF9vZmZzZXQgKE1QIG1wLCBtcF9udW1iZXIg eF9vcmlnLCBtcF9udW1iZXIgeV9vcmlnLCBtcF9rbm90IGgpIHsKICAgbXBfa25vdCBwLCBx OyAvKiBjb25zZWN1dGl2ZSBrbm90cyAqLwpAQCAtMTExNjQsNiArMTExNjUsOSBAQCBzdGF0 aWMgdm9pZCBtcF9wZW5fYmJveCAoTVAgbXAsIG1wX2tub3QgaCkgewogCiBUaGlzIGZpcnN0 IHNldCBnb2VzIGludG8gdGhlIGhlYWRlcgogCitAcyBtcF9mcmFjdGlvbiBtcF9udW1iZXIK K0BzIG1wX2FuZ2xlIG1wX251bWJlcgorCiBAPE1QbGliIGludGVybmFsIGhlYWRlciBzdHVm ZkA+PQogI2RlZmluZSBtcF9mcmFjdGlvbiBtcF9udW1iZXIKICNkZWZpbmUgbXBfYW5nbGUg bXBfbnVtYmVyCkBAIC0xMTE5Miw3ICsxMTE5Niw3IEBAIFRoaXMgZmlyc3Qgc2V0IGdvZXMg aW50byB0aGUgaGVhZGVyCiBAZCBzZXRfbnVtYmVyX3RvX3VuaXR5KEEpCSAgICAgICAoKCht YXRoX2RhdGEgKikobXAtPm1hdGgpKS0+Y2xvbmUpKCYoQSksIHVuaXR5X3QpCiBAZCBzZXRf bnVtYmVyX3RvX3plcm8oQSkJICAgICAgICgoKG1hdGhfZGF0YSAqKShtcC0+bWF0aCkpLT5j bG9uZSkoJihBKSwgemVyb190KQogQGQgc2V0X251bWJlcl90b19pbmYoQSkJCSAgICAgICAo KChtYXRoX2RhdGEgKikobXAtPm1hdGgpKS0+Y2xvbmUpKCYoQSksIGluZl90KQotQGQgc2V0 X251bWJlcl90b19uZWdfaW5mKEEpCSAgICAgICBkbyB7IHNldF9udW1iZXJfdG9faW5mKEEp OyBudW1iZXJfbmVnYXRlIChBKTsgfSB3aGlsZSAoMCkKK0BkIHNldF9udW1iZXJfdG9fbmVn X2luZihBKQkgICAgICAgZG8geyBzZXRfbnVtYmVyX3RvX2luZihBKTsgbnVtYmVyX25lZ2F0 ZSAoQSk7IH0gd2hpbGUgKDApQDsKIEAjCiBAZCBpbml0X3JhbmRvbXMoQSkgICAgICAgICAg ICAgICAgICAgICAoKChtYXRoX2RhdGEgKikobXAtPm1hdGgpKS0+aW5pdF9yYW5kb21zKSht cCxBKQogQGQgcHJpbnRfbnVtYmVyKEEpICAgICAgICAgICAgICAgICAgICAgKCgobWF0aF9k YXRhICopKG1wLT5tYXRoKSktPnByaW50KShtcCxBKQpAQCAtMTEzMTQsNyArMTEzMTgsNyBA QCB0eXBlZGVmIHN0cnVjdCBtcF9maWxsX25vZGVfZGF0YSB7CiB0eXBlZGVmIHN0cnVjdCBt cF9maWxsX25vZGVfZGF0YSAqbXBfZmlsbF9ub2RlOwogCiBAIEA8R3JhcGhpY2FsIG9iamVj dCBjb2Rlc0A+PQotbXBfZmlsbF9jb2RlID0gMSwKK21wX2ZpbGxfY29kZSA9IDEsQFtAXUA7 CiAKIEAgTWFrZSBhIGZpbGwgbm9kZSBmb3IgY3ljbGljIHBhdGggfHB8IGFuZCBjb2xvciBi bGFjay4KIApAQCAtMTEzOTksNyArMTE0MDMsNyBAQCB0eXBlZGVmIHN0cnVjdCBtcF9zdHJv a2VkX25vZGVfZGF0YSAqbXBfc3Ryb2tlZF9ub2RlOwogCiAKIEAgQDxHcmFwaGljYWwgb2Jq ZWN0IGNvZGVzQD49Ci1tcF9zdHJva2VkX2NvZGUgPSAyLAorbXBfc3Ryb2tlZF9jb2RlID0g MixAW0BdQDsKIAogQCAgTWFrZSBhIHN0cm9rZWQgbm9kZSBmb3IgcGF0aCB8cHwgd2l0aCB8 bXBfcGVuX3AocCl8IHRlbXBvcmFyaWx5IHxOVUxMfC4KIApAQCAtMTE2MDIsNyArMTE2MDYs NyBAQCB0eXBlZGVmIHN0cnVjdCBtcF90ZXh0X25vZGVfZGF0YSB7CiB0eXBlZGVmIHN0cnVj dCBtcF90ZXh0X25vZGVfZGF0YSAqbXBfdGV4dF9ub2RlOwogCiBAIEA8R3JhcGhpY2FsIG9i amVjdCBjb2Rlc0A+PQotbXBfdGV4dF9jb2RlID0gMywKK21wX3RleHRfY29kZSA9IDMsQFtA XUA7CiAKIEAgIE1ha2UgYSB0ZXh0IG5vZGUgZm9yIGZvbnQgfGZ8IGFuZCB0ZXh0IHN0cmlu ZyB8c3wuCiAKQEAgLTExNzAzLDcgKzExNzA3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgbXBfc3Rv cF9ib3VuZHNfbm9kZV9kYXRhICptcF9zdG9wX2JvdW5kc19ub2RlOwogbXBfc3RhcnRfY2xp cF9jb2RlID0gNCwgICAgICAgICAvKiB8dHlwZXwgb2YgYSBub2RlIHRoYXQgc3RhcnRzIGNs aXBwaW5nICovCiAgIG1wX3N0YXJ0X2JvdW5kc19jb2RlID0gNSwgICAgIC8qIHx0eXBlfCBv ZiBhIG5vZGUgdGhhdCBnaXZlcyBhIFwme3NldGJvdW5kc30gcGF0aCAqLwogICBtcF9zdG9w X2NsaXBfY29kZSA9IDYsICAgICAgICAvKiB8dHlwZXwgb2YgYSBub2RlIHRoYXQgc3RvcHMg Y2xpcHBpbmcgKi8KLSAgbXBfc3RvcF9ib3VuZHNfY29kZSA9IDcsICAgICAgLyogfHR5cGV8 IG9mIGEgbm9kZSB0aGF0IHN0b3BzIFwme3NldGJvdW5kc30gKi8KKyAgbXBfc3RvcF9ib3Vu ZHNfY29kZSA9IDcsQFtAXUA7ICAgICAgLyogfHR5cGV8IG9mIGEgbm9kZSB0aGF0IHN0b3Bz IFwme3NldGJvdW5kc30gKi8KIAogCiBACkBAIC0xMjAzNSw2ICsxMjAzOSw4IEBAIG51bWJl cl9jbG9uZShoaC0+ZGFzaF95LCBoLT5kYXNoX3kgKQogCiBAIHxofCBpcyBhbiBlZGdlIHN0 cnVjdHVyZQogCitAcyBtcF9kYXNoX29iamVjdCBpbnQKKwogQGMKIHN0YXRpYyBtcF9kYXNo X29iamVjdCAqbXBfZXhwb3J0X2Rhc2hlcyAoTVAgbXAsIG1wX3N0cm9rZWRfbm9kZSBxLCBt cF9udW1iZXIgdykgewogICBtcF9kYXNoX29iamVjdCAqZDsKQEAgLTE4OTQ3LDcgKzE4OTUz LDcgQEAgc3RhdGljIGludCBtb3ZlX3RvX25leHRfbGluZSAoTVAgbXApIHsKICAgICAgICAg ICBtcF9maXJtX3VwX3RoZV9saW5lIChtcCk7IC8qIHRoaXMgc2V0cyB8bGltaXR8ICovCiAg ICAgICAgIGVsc2UKICAgICAgICAgICBtcC0+Zm9yY2VfZW9mID0gdHJ1ZTsKLSAgICAgIH07 CisgICAgICB9CiAgICAgICBpZiAobXAtPmZvcmNlX2VvZikgewogICAgICAgICBtcC0+Zm9y Y2VfZW9mID0gZmFsc2U7CiAgICAgICAgIGRlY3IgKGxvYyk7CkBAIC0yMTY0OSw3ICsyMTY1 NSw3IEBAIG9mIHRoZSBvY2N1cnJlbmNlcyBvZiBhcmVhIGFuZCBleHRlbnNpb24gZGVsaW1p dGVycy4KIGludGVnZXIgYXJlYV9kZWxpbWl0ZXI7CiAgIC8qIG1vc3QgcmVjZW50IGBcLj4n IG9yIGBcLjonIHJlbGF0aXZlIHRvIHxzdHJfc3RhcnRbc3RyX3B0cl18ICovCiBpbnRlZ2Vy IGV4dF9kZWxpbWl0ZXI7ICAvKiB0aGUgcmVsZXZhbnQgYFwuLicsIGlmIGFueSAqLwotYm9v bGVhbiBxdW90ZWRfZmlsZW5hbWU7ICAgICAgICAvKiB3aGV0aGVyIHRoZSBmaWxlbmFtZSBp cyB3cmFwcGVkIGluICIgbWFya2VycyAqLworYm9vbGVhbiBxdW90ZWRfZmlsZW5hbWU7ICAg ICAgICAvKiB3aGV0aGVyIHRoZSBmaWxlbmFtZSBpcyB3cmFwcGVkIGluIGBcLiInIG1hcmtl cnMgKi8KIAogQCBIZXJlIG5vdyBpcyB0aGUgZmlyc3Qgb2YgdGhlIHN5c3RlbS1kZXBlbmRl bnQgcm91dGluZXMgZm9yIGZpbGUgbmFtZSBzY2FubmluZy4KIEBec3lzdGVtIGRlcGVuZGVu Y2llc0A+CkBAIC0yMTcwNyw3ICsyMTcxMyw3IEBAIGJvb2xlYW4gbXBfbW9yZV9uYW1lIChN UCBtcCwgQVNDSUlfY29kZSBjKSB7CiB2b2lkIG1wX2VuZF9uYW1lIChNUCBtcCkgewogICBz aXplX3QgcyA9IDA7IC8qIGxlbmd0aCBvZiBhcmVhLCBuYW1lLCBhbmQgZXh0ZW5zaW9uICov CiAgIHNpemVfdCBsZW47Ci0gIC8qICJteS93Lm1wIiAqLworICAvKiBcLnsibXkvdy5tcCJ9 ICovCiAgIGlmIChtcC0+YXJlYV9kZWxpbWl0ZXIgPCAwKSB7CiAgICAgbXAtPmN1cl9hcmVh ID0geHN0cmR1cCAoIiIpOwogICB9IGVsc2UgewpAQCAtMjQ4MDYsNyArMjQ4MTIsNyBAQCBD T05USU5VRV9QQVRIOgogICAgICAgc2V0X251bWJlcl90b191bml0eSh5KTsKICAgICAgIG1w X2JhY2tfaW5wdXQgKG1wKTsgICAgICAgICAvKiBkZWZhdWx0IHRlbnNpb24gKi8KICAgICAg IGdvdG8gRE9ORTsKLSAgICB9OworICAgIH0KICAgICBpZiAoY3VyX2NtZCgpICE9IG1wX3Bh dGhfam9pbikgewogICAgICAgY29uc3QgY2hhciAqaGxwW10gPSB7ICJBIHBhdGggam9pbiBj b21tYW5kIHNob3VsZCBlbmQgd2l0aCB0d28gZG90cy4iLCBOVUxMfTsKICAgICAgIG1wX2Jh Y2tfZXJyb3IgKG1wLCAiTWlzc2luZyBgLi4nIGhhcyBiZWVuIGluc2VydGVkIiwgaGxwLCB0 cnVlKTsKQEAgLTI0OTI4LDcgKzI0OTM0LDcgQEAgQ09OVElOVUVfUEFUSDoKICAgICBpZiAo dCAhPSBtcF9vcGVuKSB7CiAgICAgICBudW1iZXJfY2xvbmUgKHBwLT5sZWZ0X3gsIHgpOwog ICAgICAgbXBfbGVmdF90eXBlIChwcCkgPSAodW5zaWduZWQgc2hvcnQpIHQ7Ci0gICAgfTsK KyAgICB9CiAgIH0KICAgcGF0aF9xID0gcXE7CiAKQEAgLTI1MTcyLDcgKzI1MTc4LDcgQEAg c3VwcG9zZWQgdG8gYmUgZWl0aGVyIHx0cnVlX2NvZGV8IG9yIHxmYWxzZV9jb2RlfC4KICAg aWYgKG1wLT5jdXJfZXhwLnR5cGUgIT0gbXBfYm9vbGVhbl90eXBlKSB7CiAgICAgZG9fYm9v bGVhbl9lcnJvcihtcCk7CiAgIH0KLX0gd2hpbGUgKDApCit9IHdoaWxlICgwKUA7CiAKIEA8 RGVjbGFyZSB0aGUgYmFzaWMgcGFyc2luZyBzdWJyb3V0aW5lc0A+PQogc3RhdGljIHZvaWQg ZG9fYm9vbGVhbl9lcnJvciAoTVAgbXApIHsKQEAgLTI1NTI1LDExICsyNTUzMSwxMSBAQCBm b3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSkgLgogQGQgY3VyX3BpY19pdGVtIG1wX2xpbmso ZWRnZV9saXN0KGN1cl9leHBfbm9kZSgpKSkKIEBkIHBpY3RfY29sb3JfdHlwZShBKSAoKGN1 cl9waWNfaXRlbSE9TlVMTCkgJiYKICAgICAgICAgICgoIWhhc19jb2xvcihjdXJfcGljX2l0 ZW0pKQotICAgICAgICAgIHx8CisgICAgICAgICAgfHwgQHwKICAgICAgICAgICgoKG1wX2Nv bG9yX21vZGVsKGN1cl9waWNfaXRlbSk9PUEpCi0gICAgICAgICAgfHwKLSAgICAgICAgICAo KG1wX2NvbG9yX21vZGVsKGN1cl9waWNfaXRlbSk9PW1wX3VuaW5pdGlhbGl6ZWRfbW9kZWwp ICYmCi0gICAgICAgICAgIChudW1iZXJfdG9fc2NhbGVkIChpbnRlcm5hbF92YWx1ZShtcF9k ZWZhdWx0X2NvbG9yX21vZGVsKSkvbnVtYmVyX3RvX3NjYWxlZCAodW5pdHlfdCkpPT0oQSkp KSkpKQorICAgICAgICAgIHx8IEB8CisgICAgICAgICAgKChtcF9jb2xvcl9tb2RlbChjdXJf cGljX2l0ZW0pPT1tcF91bmluaXRpYWxpemVkX21vZGVsKSAmJiBAfAorICAgICAgICAgICAo bnVtYmVyX3RvX3NjYWxlZCAoaW50ZXJuYWxfdmFsdWUobXBfZGVmYXVsdF9jb2xvcl9tb2Rl bCkpLyBAfCBudW1iZXJfdG9fc2NhbGVkICh1bml0eV90KSk9PShBKSkpKSkpCiAKIEBkIGJv b2xlYW5fcmVzZXQoQSkgaWYgKCAoQSkgKSBzZXRfY3VyX2V4cF92YWx1ZV9ib29sZWFuKG1w X3RydWVfY29kZSk7IGVsc2Ugc2V0X2N1cl9leHBfdmFsdWVfYm9vbGVhbihtcF9mYWxzZV9j b2RlKQogCkBAIC0yNjI5Nyw3ICsyNjMwMyw3IEBAIHN0YXRpYyB2b2lkIG1wX2JhZF9jb2xv cl9wYXJ0IChNUCBtcCwgcXVhcnRlcndvcmQgYykgewogICBjaGFyIG1zZ1syNTZdOwogICBp bnQgb2xkX3NldHRpbmc7CiAgIG1wX3N0cmluZyBzbmFtZTsKLSAgY29uc3QgY2hhciAqaGxw W10gPSB7CisgIGNvbnN0IGNoYXIgKmhscFtdID0ge0B8CiAgICAgICJZb3UgY2FuIG9ubHkg YXNrIGZvciB0aGUgcmVkcGFydCwgZ3JlZW5wYXJ0LCBibHVlcGFydCBvZiBhIHJnYiBvYmpl Y3QsIiwKICAgICAgInRoZSBjeWFucGFydCwgbWFnZW50YXBhcnQsIHllbGxvd3BhcnQgb3Ig YmxhY2twYXJ0IG9mIGEgY215ayBvYmplY3QsICIsCiAgICAgICJvciB0aGUgZ3JleXBhcnQg b2YgYSBncmV5IG9iamVjdC4gTm8gbWl4aW5nIGFuZCBtYXRjaGluZywgcGxlYXNlLiIsCkBA IC0yNjUxOSw3ICsyNjUyNSw3IEBAIHN0YXRpYyB2b2lkIG1wX3Rha2VfcGljdF9wYXJ0IChN UCBtcCwgcXVhcnRlcndvcmQgYykgewogICAgICAgICBhZGRfc3RyX3JlZiAobmV3X2V4cHIu ZGF0YS5zdHIpOwogICAgICAgICBtcF9mbHVzaF9jdXJfZXhwIChtcCwgbmV3X2V4cHIpOwog ICAgICAgICBtcC0+Y3VyX2V4cC50eXBlID0gbXBfc3RyaW5nX3R5cGU7Ci0gICAgICB9Owor ICAgICAgfQogICAgICAgYnJlYWs7CiAgICAgY2FzZSBtcF9wcmVzY3JpcHRfcGFydDoKICAg ICAgIGlmICghaGFzX2NvbG9yIChwKSkgewpAQCAtMjY1MzMsNyArMjY1MzksNyBAQCBzdGF0 aWMgdm9pZCBtcF90YWtlX3BpY3RfcGFydCAoTVAgbXAsIHF1YXJ0ZXJ3b3JkIGMpIHsKICAg ICAgICAgfQogICAgICAgICBtcF9mbHVzaF9jdXJfZXhwIChtcCwgbmV3X2V4cHIpOwogICAg ICAgICBtcC0+Y3VyX2V4cC50eXBlID0gbXBfc3RyaW5nX3R5cGU7Ci0gICAgICB9OworICAg ICAgfQogICAgICAgYnJlYWs7CiAgICAgY2FzZSBtcF9wb3N0c2NyaXB0X3BhcnQ6CiAgICAg ICBpZiAoIWhhc19jb2xvciAocCkpIHsKQEAgLTI2NTQ3LDcgKzI2NTUzLDcgQEAgc3RhdGlj IHZvaWQgbXBfdGFrZV9waWN0X3BhcnQgKE1QIG1wLCBxdWFydGVyd29yZCBjKSB7CiAgICAg ICAgIH0KICAgICAgICAgbXBfZmx1c2hfY3VyX2V4cCAobXAsIG5ld19leHByKTsKICAgICAg ICAgbXAtPmN1cl9leHAudHlwZSA9IG1wX3N0cmluZ190eXBlOwotICAgICAgfTsKKyAgICAg IH0KICAgICAgIGJyZWFrOwogICAgIGNhc2UgbXBfZm9udF9wYXJ0OgogICAgICAgaWYgKG1w X3R5cGUgKHApICE9IG1wX3RleHRfbm9kZV90eXBlKQpAQCAtMjY1NTcsNyArMjY1NjMsNyBA QCBzdGF0aWMgdm9pZCBtcF90YWtlX3BpY3RfcGFydCAoTVAgbXAsIHF1YXJ0ZXJ3b3JkIGMp IHsKICAgICAgICAgYWRkX3N0cl9yZWYgKG5ld19leHByLmRhdGEuc3RyKTsKICAgICAgICAg bXBfZmx1c2hfY3VyX2V4cCAobXAsIG5ld19leHByKTsKICAgICAgICAgbXAtPmN1cl9leHAu dHlwZSA9IG1wX3N0cmluZ190eXBlOwotICAgICAgfTsKKyAgICAgIH0KICAgICAgIGJyZWFr OwogICAgIGNhc2UgbXBfcGF0aF9wYXJ0OgogICAgICAgaWYgKG1wX3R5cGUgKHApID09IG1w X3RleHRfbm9kZV90eXBlKSB7CkBAIC0yOTQ0Niw2ICsyOTQ1Miw4IEBAIHN0YXRpYyB2b2lk IG1wX3NldF91cF9ib3VuZGluZ3BhdGggKE1QIG1wLCBtcF9ub2RlIHApIHsKIEAgVGhpcyBp cyBwcmV0dHkgc3RyYWlnaHRmb3dhcmQuIFRoZSBvbmUgc2lsbHkgdGhpbmcgaXMgdGhhdAog dGhlIG91dHB1dCBvZiB8bXBfcHNfZG9fZm9udF9jaGFyc3RyaW5nfCBoYXMgdG8gYmUgdW4t ZXhwb3J0ZWQuCiAKK0BzIG1wX3BzX2ZvbnQgaW50CisKIEA8RGVjbGFyZSBiaW5hcnkgYWN0 aW9uLi4uQD49CiBzdGF0aWMgdm9pZCBtcF9zZXRfdXBfZ2x5cGhfaW5mb250IChNUCBtcCwg bXBfbm9kZSBwKSB7CiAgIG1wX2VkZ2Vfb2JqZWN0ICpoID0gTlVMTDsKQEAgLTMxODIwLDE5 ICszMTgyOCwyMyBAQCBwaWN0dXJlIHdpbGwgZXZlciBjb250YWluIGEgY29sb3Igb3V0c2lk ZSB0aGUgbGVnYWwgcmFuZ2UgZm9yIFxwc1wgZ3JhcGhpY3MuCiAKIEBjCiBzdGF0aWMgaW50 IGlzX2ludmFsaWRfd2l0aF9saXN0IChNUCBtcCwgbXBfdmFyaWFibGVfdHlwZSB0KSB7Ci0g IHJldHVybiAoKHQgPT0gd2l0aF9tcF9wcmVfc2NyaXB0KSAmJiAobXAtPmN1cl9leHAudHlw ZSAhPSBtcF9zdHJpbmdfdHlwZSkpIHx8Ci0gICAgICAgICgodCA9PSB3aXRoX21wX3Bvc3Rf c2NyaXB0KSAmJiAobXAtPmN1cl9leHAudHlwZSAhPSBtcF9zdHJpbmdfdHlwZSkpIHx8Ci0g ICAgICAgICgodCA9PSAobXBfdmFyaWFibGVfdHlwZSkgbXBfdW5pbml0aWFsaXplZF9tb2Rl bCkgJiYKLSAgICAgICAgICgobXAtPmN1cl9leHAudHlwZSAhPSBtcF9jbXlrY29sb3JfdHlw ZSkKLSAgICAgICAgICAmJiAobXAtPmN1cl9leHAudHlwZSAhPSBtcF9jb2xvcl90eXBlKQot ICAgICAgICAgICYmIChtcC0+Y3VyX2V4cC50eXBlICE9IG1wX2tub3duKQotICAgICAgICAg ICYmIChtcC0+Y3VyX2V4cC50eXBlICE9IG1wX2Jvb2xlYW5fdHlwZSkpKSB8fCAoKHQgPT0g KG1wX3ZhcmlhYmxlX3R5cGUpIG1wX2NteWtfbW9kZWwpCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAobXAtPmN1cl9leHAu dHlwZSAhPQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG1wX2NteWtjb2xvcl90eXBlKSkKLSAgICAgICAgfHwgKCh0ID09 IChtcF92YXJpYWJsZV90eXBlKSBtcF9yZ2JfbW9kZWwpICYmIChtcC0+Y3VyX2V4cC50eXBl ICE9IG1wX2NvbG9yX3R5cGUpKQotICAgICAgICB8fCAoKHQgPT0gKG1wX3ZhcmlhYmxlX3R5 cGUpIG1wX2dyZXlfbW9kZWwpICYmIChtcC0+Y3VyX2V4cC50eXBlICE9IG1wX2tub3duKSkK LSAgICAgICAgfHwgKCh0ID09IChtcF92YXJpYWJsZV90eXBlKSBtcF9wZW5fdHlwZSkgJiYg KG1wLT5jdXJfZXhwLnR5cGUgIT0gdCkpCi0gICAgICAgIHx8ICgodCA9PSAobXBfdmFyaWFi bGVfdHlwZSkgbXBfcGljdHVyZV90eXBlKSAmJiAobXAtPmN1cl9leHAudHlwZSAhPSB0KSk7 CisgIHJldHVybiAoKHQgPT0gd2l0aF9tcF9wcmVfc2NyaXB0KSAmJiAobXAtPmN1cl9leHAu dHlwZSAhPSBtcF9zdHJpbmdfdHlwZSkpIHx8IEB8CisgICAgICAgICgodCA9PSB3aXRoX21w X3Bvc3Rfc2NyaXB0KSAmJiAobXAtPmN1cl9leHAudHlwZSAhPSBtcF9zdHJpbmdfdHlwZSkp IHx8IEB8CisgICAgICAgICgodCA9PSAobXBfdmFyaWFibGVfdHlwZSkgbXBfdW5pbml0aWFs aXplZF9tb2RlbCkgJiYgQHwKKyAgICAgICAgICgobXAtPmN1cl9leHAudHlwZSAhPSBtcF9j bXlrY29sb3JfdHlwZSkgQHwKKyAgICAgICAgICAmJiAobXAtPmN1cl9leHAudHlwZSAhPSBt cF9jb2xvcl90eXBlKSBAfAorICAgICAgICAgICYmIChtcC0+Y3VyX2V4cC50eXBlICE9IG1w X2tub3duKSBAfAorICAgICAgICAgICYmIChtcC0+Y3VyX2V4cC50eXBlICE9IG1wX2Jvb2xl YW5fdHlwZSkpKSB8fCBAfAorICAgICAgICAoKHQgPT0gKG1wX3ZhcmlhYmxlX3R5cGUpIG1w X2NteWtfbW9kZWwpIEB8CisgICAgICAgICAgJiYgKG1wLT5jdXJfZXhwLnR5cGUgIT0gbXBf Y215a2NvbG9yX3R5cGUpKSB8fCBAfAorICAgICAgICAoKHQgPT0gKG1wX3ZhcmlhYmxlX3R5 cGUpIG1wX3JnYl9tb2RlbCkgQHwKKyAgICAgICAgICAmJiAobXAtPmN1cl9leHAudHlwZSAh PSBtcF9jb2xvcl90eXBlKSkgfHwgQHwKKyAgICAgICAgKCh0ID09IChtcF92YXJpYWJsZV90 eXBlKSBtcF9ncmV5X21vZGVsKSBAfAorICAgICAgICAgICYmIChtcC0+Y3VyX2V4cC50eXBl ICE9IG1wX2tub3duKSkgfHwgQHwKKyAgICAgICAgKCh0ID09IChtcF92YXJpYWJsZV90eXBl KSBtcF9wZW5fdHlwZSkgQHwKKyAgICAgICAgICAmJiAobXAtPmN1cl9leHAudHlwZSAhPSB0 KSkgfHwgQHwKKyAgICAgICAgKCh0ID09IChtcF92YXJpYWJsZV90eXBlKSBtcF9waWN0dXJl X3R5cGUpIEB8CisgICAgICAgICAgJiYgKG1wLT5jdXJfZXhwLnR5cGUgIT0gdCkpOwogfQog c3RhdGljIHZvaWQgY29tcGxhaW5faW52YWxpZF93aXRoX2xpc3QgKE1QIG1wLCBtcF92YXJp YWJsZV90eXBlIHQpIHsKICAgIC8qIENvbXBsYWluIGFib3V0IGltcHJvcGVyIHR5cGUgKi8K QEAgLTMzMTczLDcgKzMzMTg1LDggQEAgbXAtPnRmbV9pdGFsX2NvcnJbY10gPSBtcF90Zm1f Y2hlY2sgKG1wLCBtcF9jaGFyX2ljKQogQCBOb3cgbGV0J3MgY29uc2lkZXIgXE1QJ3Mgc3Bl Y2lhbCBcLntURk19LW9yaWVudGVkIGNvbW1hbmRzLgogCiAKLUAgQGQgY2hhcl9saXN0X2Nv ZGUgMAorQAorQGQgY2hhcl9saXN0X2NvZGUgMAogQGQgbGlnX3RhYmxlX2NvZGUgMQogQGQg ZXh0ZW5zaWJsZV9jb2RlIDIKIEBkIGhlYWRlcl9ieXRlX2NvZGUgMwpAQCAtMzMzODQsNyAr MzMzOTcsNyBAQCBDT05USU5VRToKICAgfSBlbHNlIHsKICAgICBtcF9iYWNrX2lucHV0ICht cCk7CiAgICAgYyA9IG1wX2dldF9jb2RlIChtcCk7Ci0gIH07CisgIH0KICAgaWYgKChjdXJf Y21kKCkgPT0gbXBfY29sb24pIHx8IChjdXJfY21kKCkgPT0gbXBfZG91YmxlX2NvbG9uKSkg ewogICAgIEA8UmVjb3JkIGEgbGFiZWwgaW4gYSBsaWcva2VybiBzdWJwcm9ncmFtIGFuZCB8 Z290byBjb250aW51ZXxAPjsKICAgfQpAQCAtMzQ0OTAsNyArMzQ1MDMsNyBAQCBUaGUgY29y cmVzcG9uZGluZyB3b3JkcyBpbiB0aGUgd2lkdGgsIGhlaWdodCwgYW5kIGRlcHRoIHRhYmxl cyBhcmUgc3RvcmVkIGFzCiB8c2NhbGVkfCB2YWx1ZXMgaW4gdW5pdHMgb2YgXHBzXCBwb2lu dHMuCiAKIFdpdGggdGhlIG1hY3JvcyBiZWxvdywgdGhlIHxjaGFyX2luZm98IHdvcmQgZm9y IGNoYXJhY3Rlcn58Y3wgaW4gZm9udH58ZnwgaXMKLXxjaGFyX21wX2luZm8oZixjKXwgYW5k IHRoZSB3aWR0aCBpcworfGNoYXJfbXBfaW5mbyhmLGMpfCBhbmQgdGhlIHdpZHRofmlzCiAk JFxoYm94e3xjaGFyX3dpZHRoKGYsY2hhcl9tcF9pbmZvKGYsYykpLnNjfC59JCQKIAogQGQg Y2hhcl9tcF9pbmZvKEEsQikgbXAtPmZvbnRfaW5mb1ttcC0+Y2hhcl9iYXNlWyhBKV0rKEIp XS5xcXFxCkBAIC0zNDg4MSw3ICszNDg5NCw3IEBAIGNoYXIgKm1wX3NldF9vdXRwdXRfZmls ZV9uYW1lIChNUCBtcCwgaW50ZWdlciBjKSB7CiAgICAgICAgICAgaWYgKG4tPmxlbiA9PSAw KQogICAgICAgICAgICAgbiA9IG1wX21ha2Vfc3RyaW5nIChtcCk7CiAgICAgICAgIG1wX3By aW50X2NoYXIgKG1wLCAqKGZ0ZW1wbGF0ZS0+c3RyICsgaSkpOwotICAgICAgfTsKKyAgICAg IH0KICAgICAgIGluY3IgKGkpOwogICAgIH0KICAgICBzID0gbXBfbWFrZV9zdHJpbmcgKG1w KTsKQEAgLTM0OTg0LDEzICszNDk5NywxMyBAQCBlbHNlIGlmICgobXAtPnRlcm1fb2Zmc2V0 ID4gMCkgfHwgKG1wLT5maWxlX29mZnNldCA+IDApKQogICBtcF9wcmludF9jaGFyIChtcCwg eG9yZCAoJyAnKSk7CiBtcF9wcmludF9jaGFyIChtcCwgeG9yZCAoJ1snKSk7CiBpZiAoYyA+ PSAwKQotICBtcF9wcmludF9pbnQgKG1wLCBjKQorICBtcF9wcmludF9pbnQgKG1wLCBjKUA7 CiAKIAogQCBAPEVuZCBwcm9ncmVzcyByZXBvcnRAPj0KIG1wX3ByaW50X2NoYXIgKG1wLCB4 b3JkICgnXScpKTsKIHVwZGF0ZV90ZXJtaW5hbCgpOwotaW5jciAobXAtPnRvdGFsX3NoaXBw ZWQpCitpbmNyIChtcC0+dG90YWxfc2hpcHBlZClAOwogCiAKIEAgQDxFeHBsYWluIHdoYXQg b3V0cHV0IGZpbGVzIHdlcmUgd3JpdHRlbkA+PQpAQCAtMzUwNjQsNyArMzUwNzcsNyBAQCB2 b2lkIG1wX2RvX3NwZWNpYWwgKE1QIG1wKSB7CiBAIE9uIHRoZSBleHBvcnQgc2lkZSwgd2Ug bmVlZCBhbiBleHRyYSBvYmplY3QgdHlwZSBmb3Igc3BlY2lhbCBzdHJpbmdzLgogCiBAPEdy YXBoaWNhbCBvYmplY3QgY29kZXNAPj0KLW1wX3NwZWNpYWxfY29kZSA9IDgsCittcF9zcGVj aWFsX2NvZGUgPSA4LEBbQF1AOwogCiBAIEA8RXhwb3J0IHBlbmRpbmcgc3BlY2lhbHNAPj0K IHAgPSBtcF9saW5rIChtcC0+c3BlY19oZWFkKTsKQEAgLTM1MDgxLDcgKzM1MDk0LDcgQEAg d2hpbGUgKHAgIT0gTlVMTCkgewogfQogbXBfZmx1c2hfdG9rZW5fbGlzdCAobXAsIG1wX2xp bmsgKG1wLT5zcGVjX2hlYWQpKTsKIG1wX2xpbmsgKG1wLT5zcGVjX2hlYWQpID0gTlVMTDsK LW1wLT5sYXN0X3BlbmRpbmcgPSBtcC0+c3BlY19oZWFkCittcC0+bGFzdF9wZW5kaW5nID0g bXAtPnNwZWNfaGVhZEA7CiAKIEAgV2UgYXJlIG5vdyByZWFkeSBmb3IgdGhlIG1haW4gb3V0 cHV0IHByb2NlZHVyZS4gIE5vdGUgdGhhdCB0aGUgfHNlbGVjdG9yfAogc2V0dGluZyBpcyBz YXZlZCBpbiBhIGdsb2JhbCB2YXJpYWJsZSBzbyB0aGF0IHxiZWdpbl9kaWFnbm9zdGljfCBj YW4gYWNjZXNzIGl0LgpAQCAtMzUxMDEsMTEgKzM1MTE0LDExIEBAIHN0YXRpYyB2b2lkIG1w X3NoaXBfb3V0IChNUCBtcCwgbXBfbm9kZSBoKTsKIAogQGQgZXhwb3J0X2NvbG9yKHEscCkK ICAgaWYgKCBtcF9jb2xvcl9tb2RlbChwKT09bXBfdW5pbml0aWFsaXplZF9tb2RlbCApIHsK LSAgICBncl9jb2xvcl9tb2RlbChxKSAgPSAodW5zaWduZWQgY2hhcikobnVtYmVyX3RvX3Nj YWxlZCAoaW50ZXJuYWxfdmFsdWUobXBfZGVmYXVsdF9jb2xvcl9tb2RlbCkpLzY1NTM2KTsK KyAgICBncl9jb2xvcl9tb2RlbChxKSAgPSAodW5zaWduZWQgY2hhcilAfChudW1iZXJfdG9f c2NhbGVkIChpbnRlcm5hbF92YWx1ZShtcF9kZWZhdWx0X2NvbG9yX21vZGVsKSkvNjU1MzYp OwogICAgIGdyX2N5YW5fdmFsKHEpICAgICA9IDA7CiAJZ3JfbWFnZW50YV92YWwocSkgID0g MDsKIAlncl95ZWxsb3dfdmFsKHEpICAgPSAwOwotCWdyX2JsYWNrX3ZhbChxKSAgICA9ICgo Z3JfY29sb3JfbW9kZWwocSk9PW1wX2NteWtfbW9kZWwgPyBudW1iZXJfdG9fc2NhbGVkICh1 bml0eV90KSA6IDApIC8gNjU1MzYuMCk7CisJZ3JfYmxhY2tfdmFsKHEpICAgID0gKChncl9j b2xvcl9tb2RlbChxKT09bXBfY215a19tb2RlbCA/IEB8IG51bWJlcl90b19zY2FsZWQgKHVu aXR5X3QpIDogMCkgLyA2NTUzNi4wKTsKICAgfSBlbHNlIHsKICAgICBncl9jb2xvcl9tb2Rl bChxKSAgPSAodW5zaWduZWQgY2hhciltcF9jb2xvcl9tb2RlbChwKTsKICAgICBncl9jeWFu X3ZhbChxKSAgICAgPSBudW1iZXJfdG9fZG91YmxlKHAtPmN5YW4pOwpAQCAtMzU0NTksNyAr MzU0NzIsNyBAQCBib29sZWFuIG1wX2xvYWRfcHJlbG9hZF9maWxlIChNUCBtcCkgewogICBt cC0+cmVhZGluZ19wcmVsb2FkID0gdHJ1ZTsKICAgZG8gewogICAgIG1wX2RvX3N0YXRlbWVu dCAobXApOwotICB9IHdoaWxlICghKGN1cl9jbWQoKSA9PSBtcF9zdG9wKSk7ICAgICAvKiAi ZHVtcCIgb3IgRU9GICovCisgIH0gd2hpbGUgKCEoY3VyX2NtZCgpID09IG1wX3N0b3ApKTsg ICAgIC8qIGBgZHVtcCcnIG9yIEVPRiAqLwogICBtcC0+cmVhZGluZ19wcmVsb2FkID0gZmFs c2U7CiAgIG1wX3ByaW1pdGl2ZSAobXAsICJkdW1wIiwgbXBfcmVsYXgsIDApOyAvKiByZXNl dCB8ZHVtcHwgKi8KICAgd2hpbGUgKG1wLT5pbnB1dF9wdHIgPiAwKSB7CkBAIC0zNTQ3Myw3 ICszNTQ4Niw3IEBAIGJvb2xlYW4gbXBfbG9hZF9wcmVsb2FkX2ZpbGUgKE1QIG1wKSB7CiAg IHdoaWxlIChtcC0+b3Blbl9wYXJlbnMgPiAwKSB7CiAgICAgbXBfcHJpbnQgKG1wLCAiICki KTsKICAgICBkZWNyIChtcC0+b3Blbl9wYXJlbnMpOwotICB9OworICB9CiAgIHdoaWxlICht cC0+Y29uZF9wdHIgIT0gTlVMTCkgewogICAgIG1wX3ByaW50X25sIChtcCwgIihkdW1wIG9j Y3VycmVkIHdoZW4gIik7CiBALmR1bXAgb2NjdXJyZWQuLi5APgotLSAKMi40My4yCgo= --------------hdAXmepwQb0i0xBdFagQaEC0 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline -- http://tug.org/metapost/ --------------hdAXmepwQb0i0xBdFagQaEC0--