[PATCH v11 04/10] gdb: Skip trampoline frames for the backtrace command.
Abdul Basit Ijaz <[email protected]> Mon, 3 Aug 2026 21:34:43 +0200
| Newsgroups | gmane.comp.gdb.patches |
|---|---|
| Message-ID | <[email protected]> |
VGhpcyBjaGFuZ2UgZmlsdGVycyB0cmFtcG9saW5lIGZ1bmN0aW9ucyB3aGVuIHRoZSBvcHRpb24K J3NraXAtdHJhbXBvbGluZS1mdW5jdGlvbnMnIGlzIHNldCB0byAnb24nIGZvciB0aGUgYmFja3Ry YWNlIGNvbW1hbmQuCkJlZm9yZSB0aGUgY2hhbmdlLCBHREIgcHJpbnRzIHRoZSBmcmFtZXMgaW5k aWNhdGVkIGJ5IHRoZSBjb21waWxlciB3aXRoCkRJRSAiRFdfQVRfdHJhbXBvbGluZSIgaW4gdGhl IGJhY2t0cmFjZSwgYnV0IGZvciBiZXR0ZXIgdXNlciBleHBlcmllbmNlLAphbGwgc3VjaCBmcmFt ZXMgY2FuIGJlIGhpZGRlbiBmcm9tIHRoZSB1c2VyLgoKRm9yIE8yIG9wdGltaXplZCBjb2RlIHdo ZXJlIGlubGluZWQgdHJhbXBvbGluZSB3cmFwcGVycyBhcmUgaW5saW5lZCBpbnRvCnJlZ3VsYXIg ZnVuY3Rpb25zLiAgQ2hlY2sgdGhlIGZyYW1lJ3MgZnVuY3Rpb24gZGlyZWN0bHkgZm9yIGlubGlu ZSBmcmFtZXMKaW5zdGVhZCBvZiBsb29raW5nIHVwIGJ5IFBDLCB3aGljaCB3b3VsZCBpbmNvcnJl Y3RseSByZXR1cm4gdGhlIGNhbGxlcidzCmZ1bmN0aW9uLgoKVGhlIHRlc3QgJ2dkYi5mb3J0cmFu L21peGVkLWxhbmctc3RhY2snIHRlc3QgdXNlZCB0byBmYWlsIGZvciB0aGUgSUZYCmNvbXBpbGVy IGJlY2F1c2Ugb2YgZXh0cmEgdHJhbXBvbGluZSBmcmFtZXMgaW4gdGhlIGJhY2t0cmFjZS4gIEFm dGVyIHRoZQpjb21taXQsIHRob3NlIHRyYW1wb2xpbmUgZnJhbWVzIGFyZSBmaWx0ZXJlZCBhbmQg dGVzdCBpcyB1cGRhdGVkIGFjY29yZGluZ2x5LgoKRXh0cmEgdHJhbXBvbGluZSBmcmFtZXM6Cgpi dCAtZnJhbWUtYXJndW1lbnRzIGFsbAonJycKXCM4ICAweDAwMDAwMDAwMDA0MDU1MzUgaW4gbWl4 ZWRfZnVuY18xYl8udDg2cC50ODdwLnQ4OHAudDg5cC50OTBwLnQ5MXAudDN2ICgpClwjMTAgMHgw MDAwMDAwMDAwNDA1NDM5IGluIG1peGVkX2Z1bmNfMWFfLnZvaWQgKCkgYXQgbWl4ZWQtbGFuZy1z dGFjay5mOTA6MzMKJycnCihnZGIpIEZBSUw6IGdkYi5mb3J0cmFuL21peGVkLWxhbmctc3RhY2su ZXhwOiBsYW5nPWF1dG86IGJ0IC1mcmFtZS1hcmd1bWVudHMgYWxsCgpJbiB0aGlzIGV4YW1wbGUg dGhlIElGWCBjb21waWxlciBlbWl0cyAiRFdfQVRfdHJhbXBvbGluZSIgdGFnIGZvciB0aGUgJ2Zp cnN0JwphbmQgJ3NlY29uZCcgdHJhbXBvbGluZSBmdW5jdGlvbnMgbGlrZSBmb2xsb3dpbmc6Cgpm dW5jdGlvbiBzZWNvbmQgKHgsIHkpIHJlc3VsdCh6KQogIGludGVnZXIsIGludGVudChpbikgOjog eCwgeQogIGludGVnZXIgOjogegogIHogPSB4ICogeSAhIGJyZWFrcHQtYmFja3RyYWNlCmVuZCBm dW5jdGlvbiBzZWNvbmQKCmZ1bmN0aW9uIGZpcnN0IChudW0xLCBudW0yKSByZXN1bHQodG90YWwp CiAgaW50ZWdlciwgaW50ZW50KGluKSA6OiBudW0xLCBudW0yCiAgaW50ZWdlciAgOjogdG90YWwK ICB0b3RhbCA9IHNlY29uZCAobnVtMSArIDQsIG51bTIgKiAzKSAhIGZpcnN0LWJyZWFrcHQKICB0 b3RhbCA9IHRvdGFsICsgMzAKZW5kIGZ1bmN0aW9uIGZpcnN0CgpSZWxhdGVkIER3YXJmOgoKMHgw MDAwMDEzZjogICBEV19UQUdfc3VicHJvZ3JhbQogICAgICAgICAgICAgICAgRFdfQVRfbG93X3Bj ICAgICgweDAwMDAwMDAwMDA0MDQzNTApCiAgICAgICAgICAgICAgICBEV19BVF9oaWdoX3BjICAg KDB4MDAwMDAwMDAwMDQwNDM1ZikKICAgICAgICAgICAgICAgIERXX0FUX2ZyYW1lX2Jhc2UgICAg ICAgIChEV19PUF9yZWc2IFJCUCkKICAgICAgICAgICAgICAgIERXX0FUX2xpbmthZ2VfbmFtZSAg ICAgICgic2Vjb25kXy50NzRwLnQ3NXAiKQogICAgICAgICAgICAgICAgRFdfQVRfbmFtZSAgICAg ICgic2Vjb25kXy50NzRwLnQ3NXAiKQogICAgICAgICAgICAgICAgRFdfQVRfdHJhbXBvbGluZSAg ICAgICAgKCJzZWNvbmRfIikKCjB4MDAwMDAxNWE6ICAgRFdfVEFHX3N1YnByb2dyYW0KICAgICAg ICAgICAgICAgIERXX0FUX2xvd19wYyAgICAoMHgwMDAwMDAwMDAwNDA0NGEwKQogICAgICAgICAg ICAgICAgRFdfQVRfaGlnaF9wYyAgICgweDAwMDAwMDAwMDA0MDQ0YWYpCiAgICAgICAgICAgICAg ICBEV19BVF9mcmFtZV9iYXNlICAgICAgICAoRFdfT1BfcmVnNiBSQlApCiAgICAgICAgICAgICAg ICBEV19BVF9saW5rYWdlX25hbWUgICAgICAoImZpcnN0Xy50MTA0cC50MTA1cCIpCiAgICAgICAg ICAgICAgICBEV19BVF9uYW1lICAgICAgKCJmaXJzdF8udDEwNHAudDEwNXAiKQogICAgICAgICAg ICAgICAgRFdfQVRfdHJhbXBvbGluZSAgICAgICAgKCJmaXJzdF8iKQoKQmVmb3JlIHRoaXMgY2hh bmdlLCB0aGUgYmFja3RyYWNlIGNvbW1hbmQgb3V0cHV0IGxvb2tzIGxpa2U6CgonJycKKGdkYikg YmFja3RyYWNlIDMKXCMwICBzZWNvbmQgKHg9MjAsIHk9OSkgYXQgdGVzdC5mOTA6NApcIzEgIDB4 MDAwMDAwMDAwMDQwNTIwOSBpbiBzZWNvbmRfLnQ3NHAudDc1cCAoKSBhdCB0ZXN0LmY5MDoxMgpc IzIgIDB4MDAwMDAwMDAwMDQwNTFlMyBpbiBmaXJzdCAobnVtMT0xNiwgbnVtMj0zKSBhdCB0ZXN0 LmY5MDoxMAooZ2RiKSBiYWNrdHJhY2UgLTMKXCMyICAweDAwMDAwMDAwMDA0MDUxZTMgaW4gZmly c3QgKG51bTE9MTYsIG51bTI9MykgYXQgdGVzdC5mOTA6MTAKXCMzICAweDAwMDAwMDAwMDA0MDUz MDkgaW4gZmlyc3RfLnQ5NXAudDk2cCAoKSBhdCB0ZXN0LmY5MDoyMQpcIzQgIDB4MDAwMDAwMDAw MDQwNTIzNCBpbiBmdW5jX3RyYW1wb2xpbmUgKCkgYXQgdGVzdC5mOTA6MTcKJycnCgpBZnRlciB0 aGUgY2hhbmdlOgonJycKKGdkYikgYmFja3RyYWNlIDMKXCMwICBzZWNvbmQgKHg9MjAsIHk9OSkg YXQgdGVzdC5mOTA6NApcIzIgIDB4MDAwMDAwMDAwMDQwNTFlMyBpbiBmaXJzdCAobnVtMT0xNiwg bnVtMj0zKSBhdCB0ZXN0LmY5MDoxMApcIzQgIDB4MDAwMDAwMDAwMDQwNTIzNCBpbiBmdW5jX3Ry YW1wb2xpbmUgKCkgYXQgdGVzdC5mOTA6MTcKCihnZGIpIGJhY2t0cmFjZSAtMwpcIzIgIDB4MDAw MDAwMDAwMDQwNTFlMyBpbiBmaXJzdCAobnVtMT0xNiwgbnVtMj0zKSBhdCB0ZXN0LmY5MDoxMApc IzQgIDB4MDAwMDAwMDAwMDQwNTIzNCBpbiBmdW5jX3RyYW1wb2xpbmUgKCkgYXQgdGVzdC5mOTA6 MTcKJycnCgpUaGUgdGVzdCBnZGIuZm9ydHJhbi9mdW5jLXRyYW1wb2xpbmUuZXhwIGlzIGFkZGVk IGZvciB0ZXN0aW5nIHRoZSBjaGFuZ2UKdXNpbmcgTzAgYW5kIE8yIG9wdGltaXphdGlvbiBsZXZl bC4KLS0tCiBnZGIvTkVXUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg NSArLQogZ2RiL2RvYy9nZGIudGV4aW5mbyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYg KysKIGdkYi9pbmZydW4uYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2ICst CiBnZGIvaW5mcnVuLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNiArKwog Z2RiL3N0YWNrLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDggKysKIGdk Yi9zeW10YWIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMxICsrKysrKysK IGdkYi9zeW10YWIuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA1ICsrCiBn ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2Z1bmMtdHJhbXBvbGluZS5leHAgfCA4NyArKysrKysr KysrKysrKysrKysrCiBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2Z1bmMtdHJhbXBvbGluZS5m OTAgfCA0MCArKysrKysrKysKIC4uLi9nZGIuZm9ydHJhbi9taXhlZC1sYW5nLXN0YWNrLmV4cCAg ICAgICAgICB8ICA4ICstCiAxMCBmaWxlcyBjaGFuZ2VkLCAxOTUgaW5zZXJ0aW9ucygrKSwgNyBk ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L2Z1bmMtdHJhbXBvbGluZS5leHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL2Z1bmMtdHJhbXBvbGluZS5mOTAKCmRpZmYgLS1naXQgYS9nZGIvTkVXUyBiL2dk Yi9ORVdTCmluZGV4IDVjNjE4YzBkMzhkLi44MTAwZjdjZDdiNCAxMDA2NDQKLS0tIGEvZ2RiL05F V1MKKysrIGIvZ2RiL05FV1MKQEAgLTE3NzMsOCArMTc3Myw5IEBAIHNob3cgc2tpcC10cmFtcG9s aW5lLWZ1bmN0aW9ucwogICBUaGlzIHNldHRpbmcgaXMgJ29uJyBieSBkZWZhdWx0LiAgV2hlbiAn b24nIGl0IGNvbnRyb2xzIHdoZXRoZXIgR0RCIHdpbGwKICAgcmVjb2duaXplIGZ1bmN0aW9uIGNh bGxzIHRoYXQgaGF2ZSBiZWVuIG1hcmtlZCBhcyB0cmFtcG9saW5lcyBpbiB0aGUgZGVidWcKICAg aW5mby4gIEl0IGltcHJvdmVzIHN0ZXBwaW5nIGJlaGF2aW9yIGluIHRoYXQgaXQgc3RlcHMgb3Zl ciB0aGUgdHJhbXBvbGluZQotICBjb2RlIGFuZCBoaWRlcyBpdCBmcm9tIHRoZSB1c2VyLiAgQ3Vy cmVudGx5LCBvbmx5IERXQVJGIHRyYW1wb2xpbmVzIGFyZQotICBzdXBwb3J0ZWQuCisgIGNvZGUg YW5kIGhpZGVzIGl0IGZyb20gdGhlIHVzZXIuICBJdCBpbXByb3ZlcyB0aGUgcHJpbnRpbmcgb2Yg dGhlIHN0YWNrIGJ5CisgIGhpZGluZyB0cmFtcG9saW5lIGZ1bmN0aW9ucyBmcm9tIHRoZSBiYWNr dHJhY2UuICBDdXJyZW50bHksIG9ubHkgRFdBUkYKKyAgdHJhbXBvbGluZXMgYXJlIHN1cHBvcnRl ZC4KIAogICBJZiB0aGlzIGlzIHR1cm5lZCBvZmYsIEdEQiB3aWxsIGhhbmRsZSBAZGZue3RyYW1w b2xpbmUgZnVuY3Rpb25zfSB0aGUgc2FtZQogICBhcyBhbnkgb3RoZXIgZnVuY3Rpb24uCmRpZmYg LS1naXQgYS9nZGIvZG9jL2dkYi50ZXhpbmZvIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwppbmRleCBm OGRkN2Q4ZWM0ZS4uYWY1NzYxMGRkYzMgMTAwNjQ0Ci0tLSBhL2dkYi9kb2MvZ2RiLnRleGluZm8K KysrIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwpAQCAtNjc2OSw2ICs2NzY5LDEyIEBAIGV4ZWN1dGlv biB1bnRpbCBsZWF2aW5nIHRoZSB0cmFtcG9saW5lIHJlZ2lvbi4gIFRoZSBAY29kZXtzdGVwaX0g Y29tbWFuZAogaXMgbm90IGFmZmVjdGVkIGJ5IHRoZSBzZXR0aW5nIHdoaWNoIGlzIGVuYWJsZWQg YnkgZGVmYXVsdC4gIEN1cnJlbnRseSwgb25seQogRFdBUkYgdHJhbXBvbGluZXMgbWFya2VkIHZp YSBEV19BVF90cmFtcG9saW5lIGFyZSBzdXBwb3J0ZWQgYnkgdGhpcy4KIAorV2hlbiBpc3N1aW5n IGEgQGNvZGV7YmFja3RyYWNlfSwgaWYgQGNvZGV7c2tpcC10cmFtcG9saW5lLWZ1bmN0aW9uc30g aXMgc2V0LAorQHZhbHVle0dEQk59IHdpbGwgc2tpcCB0cmFtcG9saW5lIGZyYW1lcyB3aGlsZSBw cmludGluZyB0aGUgc3RhY2suCisKK0N1cnJlbnRseSwgb25seSBEV0FSRiB0cmFtcG9saW5lcyBt YXJrZWQgdmlhIERXX0FUX3RyYW1wb2xpbmUgYXJlIHN1cHBvcnRlZCBieQordGhpcy4KKwogQGl0 ZW0gc2V0IHNraXAtdHJhbXBvbGluZS1mdW5jdGlvbnMgb2ZmCiBDYXVzZXMgQHZhbHVle0dEQk59 IHRvIGNvbXBsZXRlbHkgaWdub3JlIGFueSB0cmFtcG9saW5lIGluZm9ybWF0aW9uIGEgY29tcGls ZXIKIG1pZ2h0IGhhdmUgZW1pdHRlZCBpbiBpdHMgZGVidWcgaW5mby4gIFRyYW1wb2xpbmVzIHdp bGwgYmUgdHJlYXRlZCBsaWtlIGFueQpkaWZmIC0tZ2l0IGEvZ2RiL2luZnJ1bi5jIGIvZ2RiL2lu ZnJ1bi5jCmluZGV4IDBiMDMyY2U5NGMwLi45ZDFiODVlOWQxZiAxMDA2NDQKLS0tIGEvZ2RiL2lu ZnJ1bi5jCisrKyBiL2dkYi9pbmZydW4uYwpAQCAtMTk0LDcgKzE5NCw3IEBAIHN0YXRpYyBib29s IGRldGFjaF9mb3JrID0gdHJ1ZTsKICAgIERXX0FUX3RyYW1wb2xpbmUgYnkgdGhlIGNvbXBpbGVy LiAgSWYgZmFsc2UsIEdEQiB3aWxsIGlnbm9yZSB0aGUKICAgIGF0dHJpYnV0ZS4gICovCiAKLXN0 YXRpYyBib29sIHNraXBfdHJhbXBvbGluZV9mdW5jdGlvbnMgPSB0cnVlOworYm9vbCBza2lwX3Ry YW1wb2xpbmVfZnVuY3Rpb25zID0gdHJ1ZTsKIAogYm9vbCBkZWJ1Z19pbmZydW4gPSBmYWxzZTsK IHN0YXRpYyB2b2lkCkBAIC0xMTAzMSw4ICsxMTAzMSw4IEBAIE9wdGlvbnMgYXJlICdmb3J3YXJk JyBvciAncmV2ZXJzZScuIiksCiAJCQkgICZza2lwX3RyYW1wb2xpbmVfZnVuY3Rpb25zLCBfKCJc CiBTZXQgd2hldGhlciBnZGIgYXR0ZW1wdHMgdG8gaGlkZSB0cmFtcG9saW5lcyBtYXJrZWQgaW4g dGhlIGRlYnVnIGluZm8uIiksIF8oIlwKIFNob3cgd2hldGhlciBnZGIgYXR0ZW1wdHMgdG8gaGlk ZSB0cmFtcG9saW5lcyBtYXJrZWQgaW4gdGhlIGRlYnVnIGluZm8uIiksIF8oIlwKLUlmIG9uLCB3 aGlsZSBzdGVwcGluZyBnZGIgd2lsbCBza2lwIHRocm91Z2ggZnVuY3Rpb25zIGFuZCBpbmxpbmVk IGZ1bmN0aW9uc1xuXAotbWFya2VkIGFzIHRyYW1wb2xpbmVzIGJ5IHRoZSBjb21waWxlci4gIElm IG9mZiwgZ2RiIHdpbGwgdHJlYXQgdHJhbXBvbGluZXMgYXNcblwKK0lmIG9uLCBnZGIgd2lsbCBz a2lwIHRocm91Z2ggZnVuY3Rpb25zIGFuZCBpbmxpbmVkIGZ1bmN0aW9ucyBtYXJrZWQgYXNcblwK K3RyYW1wb2xpbmVzIGJ5IHRoZSBjb21waWxlci4gIElmIG9mZiwgZ2RiIHdpbGwgdHJlYXQgdHJh bXBvbGluZXMgYXNcblwKIG5vcm1hbCBmdW5jdGlvbnMuIiksCiAJCQkgIG51bGxwdHIsIHNob3df c2tpcF90cmFtcG9saW5lX2Z1bmN0aW9ucywgJnNldGxpc3QsCiAJCQkgICZzaG93bGlzdCk7CmRp ZmYgLS1naXQgYS9nZGIvaW5mcnVuLmggYi9nZGIvaW5mcnVuLmgKaW5kZXggMTM1ZDFmYzM1MGIu LmE1YzZmMzE3MTkzIDEwMDY0NAotLS0gYS9nZGIvaW5mcnVuLmgKKysrIGIvZ2RiL2luZnJ1bi5o CkBAIC0xMDYsNiArMTA2LDEyIEBAIGV4dGVybiBib29sIG5vbl9zdG9wOwogICAgc3RhcnRpbmcg YW4gaW5mZXJpb3IuICAqLwogZXh0ZXJuIGJvb2wgZGlzYWJsZV9yYW5kb21pemF0aW9uOwogCisv KiBJZiBzZXQgKGRlZmF1bHQpIEdEQiB3aWxsIHN0ZXAgdGhyb3VnaCBmdW5jdGlvbnMvaW5saW5l ZCBzdWJyb3V0aW5lcyBtYXJrZWQKKyAgIERXX0FUX3RyYW1wb2xpbmUgYnkgdGhlIGNvbXBpbGVy LiAgSWYgZmFsc2UsIEdEQiB3aWxsIGlnbm9yZSB0aGUKKyAgIGF0dHJpYnV0ZS4gICovCisKK2V4 dGVybiBib29sIHNraXBfdHJhbXBvbGluZV9mdW5jdGlvbnM7CisKIC8qIFJldHVybnMgYSB1bmlx dWUgaWRlbnRpZmllciBmb3IgdGhlIGN1cnJlbnQgc3RvcC4gIFRoaXMgY2FuIGJlIHVzZWQKICAg IHRvIHRlbGwgd2hldGhlciBhIGNvbW1hbmQgaGFzIHByb2NlZWRlZCB0aGUgaW5mZXJpb3IgcGFz dCB0aGUKICAgIGN1cnJlbnQgbG9jYXRpb24uICAqLwpkaWZmIC0tZ2l0IGEvZ2RiL3N0YWNrLmMg Yi9nZGIvc3RhY2suYwppbmRleCBmNDFmODE4Y2ViYi4uZmEyMTdhZTlmNmYgMTAwNjQ0Ci0tLSBh L2dkYi9zdGFjay5jCisrKyBiL2dkYi9zdGFjay5jCkBAIC0xOTc4LDYgKzE5NzgsMTQgQEAgYmFj a3RyYWNlX2NvbW1hbmRfMSAoY29uc3QgZnJhbWVfcHJpbnRfb3B0aW9ucyAmZnBfb3B0cywKIAl7 CiAJICBRVUlUOwogCisJICBpZiAoc2tpcF90cmFtcG9saW5lX2Z1bmN0aW9ucyAmJiBpbl90cmFt cG9saW5lX2ZyYW1lIChmaSkpCisJICAgIHsKKwkgICAgICAvKiBUcmFtcG9saW5lIGZyYW1lcyBh cmUgbm90IHByaW50ZWQgc28gdGhleSBhcmUgbm90IGNvdW50ZWQgaW4KKwkJIHRoZSBiYWNrdHJh Y2UgbGltaXQuICAqLworCSAgICAgIGNvdW50Kys7CisJICAgICAgY29udGludWU7CisJICAgIH0K KwogCSAgLyogRG9uJ3QgdXNlIHByaW50X3N0YWNrX2ZyYW1lOyBpZiBhbiBlcnJvcigpIG9jY3Vy cyBpdCBwcm9iYWJseQogCSAgICAgbWVhbnMgZnVydGhlciBhdHRlbXB0cyB0byBiYWNrdHJhY2Ug d291bGQgZmFpbCAob24gdGhlIG90aGVyCiAJICAgICBoYW5kLCBwZXJoYXBzIHRoZSBjb2RlIGRv ZXMgb3IgY291bGQgYmUgZml4ZWQgdG8gbWFrZSBzdXJlCmRpZmYgLS1naXQgYS9nZGIvc3ltdGFi LmMgYi9nZGIvc3ltdGFiLmMKaW5kZXggZTU0NjQ1NTE4MDcuLjg5MzFmNTA3NzVjIDEwMDY0NAot LS0gYS9nZGIvc3ltdGFiLmMKKysrIGIvZ2RiL3N5bXRhYi5jCkBAIC00MTQ5LDYgKzQxNDksMzcg QEAgaW5fdHJhbXBvbGluZV9mdW5jdGlvbiAoQ09SRV9BRERSIHBjKQogCiAvKiBTZWUgc3ltdGFi LmguICAqLwogCitib29sCitpbl90cmFtcG9saW5lX2ZyYW1lIChmcmFtZV9pbmZvX3B0ciBmaSkK K3sKKyAgLyogRm9yIGlubGluZSBmcmFtZXMsIHRoZXkgc2hhcmUgdGhlIFBDIG9mIHRoZWlyIGNh bGxlci4gIFdlIG5lZWQgdG8gY2hlY2sKKyAgICAgdGhlIGZyYW1lJ3MgZnVuY3Rpb24gZGlyZWN0 bHksIG5vdCBsb29rIHVwIHRoZSBmdW5jdGlvbiBhdCB0aGUgUEMuCisgICAgIExvb2tpbmcgdXAg YnkgUEMgd291bGQgcmV0dXJuIHRoZSBjYWxsZXIncyBmdW5jdGlvbiBub3QgdGhlIGlubGluZQor ICAgICBmdW5jdGlvbiBpdHNlbGYuCisKKyAgICAgRm9yIE8yIG9wdGltaXplZCBjb2RlLCB0aGUg Y29tcGlsZXIgbWF5IGlubGluZSB0cmFtcG9saW5lIHdyYXBwZXJzIGludG8KKyAgICAgcmVndWxh ciBmdW5jdGlvbnMuICBJbiBzdWNoIGNhc2VzLCBsb29raW5nIHVwIGJ5IFBDIHdvdWxkIHBvaW50 IHRvIHRoZQorICAgICBjb25jcmV0ZSByZWd1bGFyIGZ1bmN0aW9uIGFuZCBpbmNvcnJlY3RseSBy ZXR1cm4gZmFsc2UgKG5vdCBhIHRyYW1wb2xpbmUpLgorICAgICBCeSBjaGVja2luZyB0aGUgaW5s aW5lIGZyYW1lJ3MgZnVuY3Rpb24gZGlyZWN0bHkgdmlhIGdldF9mcmFtZV9mdW5jdGlvbigpLAor ICAgICB3ZSBjb3JyZWN0bHkgaWRlbnRpZnkgd2hlbiB0aGUgaW5saW5lIGZyYW1lIGl0c2VsZiBp cyBhIHRyYW1wb2xpbmUuICAqLworICBpZiAoZ2V0X2ZyYW1lX3R5cGUgKGZpKSA9PSBJTkxJTkVf RlJBTUUpCisgICAgeworICAgICAgc3ltYm9sICpmdW5jID0gZ2V0X2ZyYW1lX2Z1bmN0aW9uIChm aSk7CisgICAgICByZXR1cm4gZnVuYyAhPSBudWxscHRyICYmIFRZUEVfSVNfVFJBTVBPTElORSAo ZnVuYy0+dHlwZSAoKSk7CisgICAgfQorCisgIC8qIEZvciBub24taW5saW5lIGZyYW1lcywgdXNl IGluX3RyYW1wb2xpbmVfZnVuY3Rpb24oKSB3aGljaCBsb29rcyB1cCBvbmx5CisgICAgIHRoZSBj b25jcmV0ZSBmdW5jdGlvbiBhdCB0aGUgUEMsIGVuc3VyaW5nIHdlIGNoZWNrIHRoZSBhY3R1YWwg ZnJhbWUncworICAgICBmdW5jdGlvbiBhbmQgbm90IGFueSBpbmxpbmVkIGNvZGUgd2l0aGluIGl0 LiAgKi8KKyAgc3RkOjpvcHRpb25hbDxDT1JFX0FERFI+IHBjOworICBpZiAoKHBjID0gZ2V0X2Zy YW1lX3BjX2lmX2F2YWlsYWJsZSAoZmkpKSkKKyAgICByZXR1cm4gaW5fdHJhbXBvbGluZV9mdW5j dGlvbiAocGMudmFsdWUgKCkpOworCisgIHJldHVybiBmYWxzZTsKK30KKworLyogU2VlIHN5bXRh Yi5oLiAgKi8KKwogQ09SRV9BRERSCiBmaW5kX2Z1bmN0aW9uX3RyYW1wb2xpbmVfdGFyZ2V0IChD T1JFX0FERFIgcGMpCiB7CmRpZmYgLS1naXQgYS9nZGIvc3ltdGFiLmggYi9nZGIvc3ltdGFiLmgK aW5kZXggMTBmNjQ1NDhmNTguLjhhOGQ5ZjNmODVmIDEwMDY0NAotLS0gYS9nZGIvc3ltdGFiLmgK KysrIGIvZ2RiL3N5bXRhYi5oCkBAIC0yMzc3LDYgKzIzNzcsMTEgQEAgZXh0ZXJuIGJvb2wgaW5f dHJhbXBvbGluZV9mdW5jdGlvbiAoQ09SRV9BRERSIHBjKTsKIAogZXh0ZXJuIGJvb2wgaW5fdHJh bXBvbGluZV9jb2RlIChDT1JFX0FERFIgcGMpOwogCisvKiBSZXR1cm4gd2hldGhlciBvciBub3Qg dGhlIHBjIG9mIHRoZSBjdXJyZW50IGZyYW1lIGlzIHdpdGhpbiBhIGJsb2NrIHRoYXQKKyAgIGJl bG9uZ3MgdG8gYSBmdW5jdGlvbiB0aGF0IGlzIG1hcmtlZCBhcyBhIHRyYW1wb2xpbmUgYnkgdGhl IGNvbXBpbGVyLiAgKi8KKworZXh0ZXJuIGJvb2wgaW5fdHJhbXBvbGluZV9mcmFtZSAoZnJhbWVf aW5mb19wdHIpOworCiAvKiBGaW5kIHRoZSB0YXJnZXQgb2YgYSB0cmFtcG9saW5lIGZ1bmN0aW9u IG1hcmtlZCB2aWEgdGhlIERXX0FUX3RyYW1wb2xpbmUKICAgIGF0dHJpYnV0ZSBhbmQgcmV0dXJu IGl0cyBhZGRyZXNzLiAgUmV0dXJucyAwIGlmIHRoZSBwYyBpcyBub3QgY29udGFpbmVkCiAgICBp biBhIHRyYW1wb2xpbmUgZnVuY3Rpb24gKGlubGluZWQgb3Igbm90KS4gIElmIERXX0FUX3RyYW1w b2xpbmUKZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZnVuYy10cmFtcG9s aW5lLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZnVuYy10cmFtcG9saW5lLmV4cApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTIxNmRlMjVhNDUKLS0tIC9k ZXYvbnVsbAorKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2Z1bmMtdHJhbXBvbGluZS5l eHAKQEAgLTAsMCArMSw4NyBAQAorIyBDb3B5cmlnaHQgMjAyNiBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KKworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgor IyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPiAuCisKKyMgVGVzdCAiYmFja3RyYWNlIiBh bmQgImJhY2t0cmFjZSAtbiIgY29tbWFuZHMgZm9yIGZ1bmN0aW9ucyB3aXRoIHRyYW1wb2xpbmUK KyMgY2FsbHMuCisKK3JlcXVpcmUgYWxsb3dfZm9ydHJhbl90ZXN0cworCitpZiB7IVt0ZXN0X2Nv bXBpbGVyX2luZm8ge2lmeC0qfSBmOTBdfSB7CisgICAgdW50ZXN0ZWQgIlRoaXMgdGVzdCBpcyBv bmx5IGFwcGxpY2FibGUgZm9yIElGWCwgd2hpY2ggZW1pdHMgdGhlXAorCXRyYW1wb2xpbmUgRElF IGluIER3YXJmLiIKKyAgICByZXR1cm4KK30KKworc3RhbmRhcmRfdGVzdGZpbGUgIi5mOTAiCits b2FkX2xpYiBmb3J0cmFuLmV4cAorCisjIEluaXRpYWxpemUgdGhlIHRlc3QgYnkgcnVubmluZyB0 aGUgcHJvZ3JhbSB0byB0aGUgaW5uZXJtb3N0CisjIGZ1bmN0aW9uIG5hbWUgInNlY29uZCIuCisK K3Byb2MgaW5pdF90ZXN0IHtvcHRfbGV2ZWx9IHsKKyAgICBjbGVhbl9yZXN0YXJ0ICR7Ojp0ZXN0 ZmlsZX1fJHtvcHRfbGV2ZWx9CisgICAgaWYgeyFbZm9ydHJhbl9ydW50b19tYWluXX0geworCXJl dHVybgorICAgIH0KKworICAgICMgU2V0IGJyZWFrcG9pbnQgaW5zaWRlIHRoZSBpbm5lcm1vc3Qg ZnVuY3Rpb24gJ3NlY29uZCcuCisgICAgZ2RiX2JyZWFrcG9pbnQgIiQ6OnNyY2ZpbGU6JDo6aW5u ZXJfbG9jIgorICAgIGdkYl9jb250aW51ZV90b19icmVha3BvaW50ICJpbm5lcm1vc3QtYm9keSIg Ii4qJDo6c3JjZmlsZTokOjppbm5lcl9sb2MuKiIKK30KKworc2V0IGlubmVyX2xvYyBbZ2RiX2dl dF9saW5lX251bWJlciAic2Vjb25kLWJyZWFrcHQiXQorc2V0IG1pZGRsZV9sb2MgW2dkYl9nZXRf bGluZV9udW1iZXIgImZpcnN0LWJyZWFrcHQiXQorc2V0IG91dGVyX2xvYyBbZ2RiX2dldF9saW5l X251bWJlciAibWFpbi1vdXRlci1sb2MiXQorc2V0IGZpbGwgIlxbXlxyXG5cXSoiCisKKyMgVGVz dCBib3RoIE8wIGFuZCBPMiB0byB2ZXJpZnkgdHJhbXBvbGluZSBoYW5kbGluZyB3b3JrcyBjb3Jy ZWN0bHkKKyMgd2l0aCBhbmQgd2l0aG91dCBvcHRpbWl6YXRpb24uCitmb3JlYWNoX3dpdGhfcHJl Zml4IG9wdF9sZXZlbCB7TzAgTzJ9IHsKKyAgICBpZiB7W2J1aWxkX2V4ZWN1dGFibGUgImZhaWxl ZCB0byBwcmVwYXJlIiAke3Rlc3RmaWxlfV8ke29wdF9sZXZlbH0gJHtzcmNmaWxlfSBcCisJW2xp c3QgZGVidWcgZjkwICJvcHRpbWl6ZT0tJHtvcHRfbGV2ZWx9Il1dfSB7CisJY29udGludWUKKyAg ICB9CisKKyAgICBzZXQgYmluZmlsZSAiJHt0ZXN0ZmlsZX1fJHtvcHRfbGV2ZWx9IgorCisgICAg aWYge1tzdHJpbmcgbWF0Y2ggLW5vY2FzZSAiTzIiICRvcHRfbGV2ZWxdfSB7CisJIyBBdCBPMiwg cGFyYW1ldGVycyBtYXkgYmUgb3B0aW1pemVkIG91dAorCXNldCBpbm5lcl9kZXNjICAic2Vjb25k IFxcKC4qXFwpIGF0ICR7ZmlsbH0kc3JjZmlsZTokaW5uZXJfbG9jIgorCXNldCBtaWRkbGVfZGVz YyAiZmlyc3QgXFwoLipcXCkgYXQgJHtmaWxsfSRzcmNmaWxlOiRtaWRkbGVfbG9jIgorICAgIH0g ZWxzZSB7CisJc2V0IGlubmVyX2Rlc2MgICJzZWNvbmQgXFwoeD0yMCwgeT05XFwpIGF0ICR7Zmls bH0kc3JjZmlsZTokaW5uZXJfbG9jIgorCXNldCBtaWRkbGVfZGVzYyAiZmlyc3QgXFwobnVtMT0x NiwgbnVtMj0zXFwpIGF0ICR7ZmlsbH0kc3JjZmlsZTokbWlkZGxlX2xvYyIKKyAgICB9CisgICAg c2V0IG91dGVyX2Rlc2MgICIuKiBhdCAuKiRzcmNmaWxlOiRvdXRlcl9sb2MiCisKKyAgICB3aXRo X3Rlc3RfcHJlZml4ICJiYWNrdHJhY2UiIHsKKwlpbml0X3Rlc3QgJG9wdF9sZXZlbAorCisJIyBM aW1pdCB0aGUgYmFja3RyYWNlIHRvIDMgZnJhbWVzIGFuZCBlbnN1cmUgYm90aCBmcmFtZXMgZm9y IGZpcnN0CisJIyBhbmQgc2Vjb25kIGZ1bmN0aW9uIGFyZSBzaG93biBvbmx5IGFuZCB0cmFtcG9s aW5lIGZyYW1lcyBhcmUgZmlsdGVyZWQuCisJZ2RiX3Rlc3QgImJhY2t0cmFjZSAzIiBbbXVsdGlf bGluZSBcCisJICAgICIjJGRlY2ltYWwuKiAkaW5uZXJfZGVzYyIgXAorCSAgICAiIyRkZWNpbWFs LiogJG1pZGRsZV9kZXNjIiBcCisJICAgICIjJGRlY2ltYWwuKiAkb3V0ZXJfZGVzYy4qIl0KKyAg ICB9CisKKyAgICB3aXRoX3Rlc3RfcHJlZml4ICJiYWNrdHJhY2Ugb3V0ZXJmcmFtZXMiIHsKKwlp bml0X3Rlc3QgJG9wdF9sZXZlbAorCisJZ2RiX3Rlc3QgImJhY2t0cmFjZSAtMyIgW211bHRpX2xp bmUgXAorCSAgICAiIyRkZWNpbWFsLiogJG1pZGRsZV9kZXNjIiBcCisJICAgICIjJGRlY2ltYWwu KiAkb3V0ZXJfZGVzYy4qIl0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL2Z1bmMtdHJhbXBvbGluZS5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L2Z1bmMtdHJhbXBvbGluZS5mOTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLmJiOWNlN2YzNDkxCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9mdW5jLXRyYW1wb2xpbmUuZjkwCkBAIC0wLDAgKzEsNDAgQEAKKyEgQ29weXJpZ2h0IDIw MjYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCishCishIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CishIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CishIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCishIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCishCishIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAorISBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCishIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCishCishIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCishIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+IC4K KworISBTb3VyY2UgY29kZSBmb3IgZnVuYy10cmFtcG9saW5lLmV4cC4KKworIURJUiQgQVRUUklC VVRFUyBOT0lOTElORSAgOjogc2Vjb25kCitpbnRlZ2VyKGtpbmQ9NCkgZnVuY3Rpb24gc2Vjb25k KHgsIHkpCisgIGludGVnZXIoa2luZD00KSwgaW50ZW50KGluKSA6OiB4CisgIGludGVnZXIoa2lu ZD00KSwgaW50ZW50KGluKSA6OiB5CisKKyAgc2Vjb25kID0geCAqIHkgISBzZWNvbmQtYnJlYWtw dAorZW5kIGZ1bmN0aW9uCisKK2ludGVnZXIoa2luZD00KSBmdW5jdGlvbiBmaXJzdChudW0xLCBu dW0yKQorICBpbnRlZ2VyKGtpbmQ9NCksIGludGVudChpbikgOjogbnVtMQorICBpbnRlZ2VyKGtp bmQ9NCksIGludGVudChpbikgOjogbnVtMgorCisgIGZpcnN0ID0gc2Vjb25kIChudW0xICsgNCwg bnVtMiAqIDMpICEgZmlyc3QtYnJlYWtwdAorZW5kIGZ1bmN0aW9uCisKK3Byb2dyYW0gZnVuY190 cmFtcG9saW5lCisgIGludGVnZXIoa2luZD00KSA6OiB0b3RhbAorCisgIHRvdGFsID0gZmlyc3Qo MTYsIDMpICEgbWFpbi1vdXRlci1sb2MKKworICB3cml0ZSgqLCopICAiUmVzdWx0IGlzICIsIHRv dGFsLCAiXG4iCisgICEgRXhwZWN0ZWQ6IDE4MAorZW5kIHByb2dyYW0gZnVuY190cmFtcG9saW5l CmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL21peGVkLWxhbmctc3RhY2su ZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9taXhlZC1sYW5nLXN0YWNrLmV4cAppbmRl eCA0M2Y3N2QzZWI2Ni4uYjQ3MDU1NDk4OGUgMTAwNjQ0Ci0tLSBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vbWl4ZWQtbGFuZy1zdGFjay5leHAKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9taXhlZC1sYW5nLXN0YWNrLmV4cApAQCAtNjMsNiArNjMsMTAgQEAgcHJvYyBydW5fdGVz dHMgeyBsYW5nIH0gewogCXNldCBlX2FyZyAiXFsnXCJcXWFiY2RlZlxbJ1wiXF0iCiAJc2V0IDFi X2FyZ3MgIlxbXlxyXG5cXSskZV9hcmdcW15cclxuXF0rIgogCXNldCAxZ19hcmdzICJvYmo9XFte XHJcblxdKyIKKwkjIEdlbmVyaWMgZGVjaW1hbCBudW1iZXIgaXMgY2hlY2tlZCBpbiByZWdleCBm b3IgRnJhbWUgIzggYW5kICM5IHRvCisJIyBoYW5kbGUgZmlsdGVyZWQgdHJhbXBvbGluZSBmcmFt ZXMuICBTaW5jZSBGcmFtZSM4IGFuZCBGcmFtZSMxMCBhcmUKKwkjIHNldCB0byB0cmFtcG9saW5l IGluIERXQVJGIGJ5IEludGVswq4gRm9ydHJhbiBDb21waWxlciAoaWZ4KSwgdGhleQorCSMgYXJl IG5vdCBzaG93biBieSB0aGUgYmFja3RyYWNlIGNvbW1hbmQuCiAJc2V0IGJ0X3N0YWNrIFwKIAkg ICAgW211bHRpX2xpbmUgXAogCQkgIiMwXFxzK2JyZWFrcHQgXFwoXFwpIGF0IFxbXlxyXG5cXSsi IFwKQEAgLTczLDggKzc3LDggQEAgcHJvYyBydW5fdGVzdHMgeyBsYW5nIH0gewogCQkgIiM1XFxz KyRoZXggaW4gbWl4ZWRfZnVuY18xZCBcXChcW15cclxuXF0rXFwpIGF0IFxbXlxyXG5cXSsiIFwK IAkJICIjNlxccyskaGV4IGluIG1peGVkX2Z1bmNfMWMgXFwoXFteXHJcblxdK1xcKSBhdCBcW15c clxuXF0rIiBcCiAJCSAiIzdcXHMrJGhleCBpbiBtaXhlZF9mdW5jXzFiIFxcKCQxYl9hcmdzXFwp IGF0IFxbXlxyXG5cXSsiIFwKLQkJICIjOFxccyskaGV4IGluIG1peGVkX2Z1bmNfMWEgXFwoXFwp IGF0IFxbXlxyXG5cXSsiIFwKLQkJICIjOVxccyskaGV4IGluIG1peGVkX3N0YWNrX21haW4gXFwo XFwpIGF0IFxbXlxyXG5cXSsiIF0KKwkJICIjJDo6ZGVjaW1hbFxccyskaGV4IGluIG1peGVkX2Z1 bmNfMWEgXFwoXFwpIGF0IFxbXlxyXG5cXSsiIFwKKwkJICIjJDo6ZGVjaW1hbFxccyskaGV4IGlu IG1peGVkX3N0YWNrX21haW4gXFwoXFwpIGF0IFxbXlxyXG5cXSsiIF0KIAlzZXQgbWFpbl9hcmdz ICJhcmdjPTEsIGFyZ3Y9JHtoZXh9KCBcW15cclxuXF0rKT8iCiAJc2V0IGJ0X3N0YWNrX2tmYWls IFwKIAkgICAgW211bHRpX2xpbmUgXAotLSAKMi4zNC4xCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fDQpJbnRlbCBEZXV0c2NobGFuZCBHbWJIIA0KDQpSZWdpc3RlcmVk IEFkZHJlc3M6IERvcm5hY2hlciBTdHJhc3NlIDEsIDg1NjIyIEZlbGRraXJjaGVuLCBHZXJtYW55 IA0KDQpUZWw6ICs0OSAoODkpIDk5MTQzLTAgDQoNCnd3dy5pbnRlbC5kZSANCg0KTWFuYWdpbmcg RGlyZWN0b3JzOiBDYW5kaWNlIE1vb3JlLCBKZWZmcmV5IFNjaG5laWRlcm1hbiwgUmFtYWNoYW5k cmFuIFNpdGFyYW1hbg0KDQpDaGFpcnBlcnNvbiBvZiB0aGUgU3VwZXJ2aXNvcnkgQm9hcmQ6IFNv bmphIFBpZXJlcg0KDQpSZWdpc3RlcmVkIFNlYXQ6IE11bmljaCBDb21tZXJjaWFsIFJlZ2lzdGVy IEI6IEFtdHNnZXJpY2h0IE11bmljaCBIUkIgMTg2OTI4DQoNClRoaXMgZS1tYWlsIGFuZCBhbnkg YXR0YWNobWVudHMgbWF5IGNvbnRhaW4gY29uZmlkZW50aWFsIG1hdGVyaWFsIGZvcg0KdGhlIHNv bGUgdXNlIG9mIHRoZSBpbnRlbmRlZCByZWNpcGllbnQocykuIEFueSByZXZpZXcgb3IgZGlzdHJp YnV0aW9uDQpieSBvdGhlcnMgaXMgc3RyaWN0bHkgcHJvaGliaXRlZC4gSWYgeW91IGFyZSBub3Qg dGhlIGludGVuZGVkDQpyZWNpcGllbnQsIHBsZWFzZSBjb250YWN0IHRoZSBzZW5kZXIgYW5kIGRl bGV0ZSBhbGwgY29waWVzLgo=