ZGlmZiAtLWdpdCBhL01hYy9zY3JpcHRzL2Z1bGxidWlsZC5weSBiL01hYy9zY3JpcHRzL2Z1bGxidWlsZC5weQppbmRleCA4NjQ3ZmNlLi5kODFiNjUwIDEwMDY0NAotLS0gYS9NYWMvc2NyaXB0cy9mdWxsYnVpbGQucHkKKysrIGIvTWFjL3NjcmlwdHMvZnVsbGJ1aWxkLnB5CkBAIC0xOSwxMiArMTksMTMgQEAKIGltcG9ydCBhZXRvb2xzCiBpbXBvcnQgQXBwbGVFdmVudHMKIGZyb20gTWV0cm93ZXJrc19TaGVsbF9TdWl0ZSBpbXBvcnQgTWV0cm93ZXJrc19TaGVsbF9TdWl0ZQorZnJvbSBDb2RlV2Fycmlvcl9TdGFuZGFyZF9TdWl0ZSBpbXBvcnQgQ29kZVdhcnJpb3JfU3RhbmRhcmRfU3VpdGUKIGZyb20gUmVxdWlyZWRfU3VpdGUgaW1wb3J0IFJlcXVpcmVkX1N1aXRlCiAKIGltcG9ydCBSZXMKIGltcG9ydCBEbGcKIAotaW1wb3J0IG1rYXBwbGV0CitpbXBvcnQgQnVpbGRBcHBsZXQKIGltcG9ydCBjZm1maWxlCiAKICMgRGlhbG9nIHJlc291cmNlLiBOb3RlIHRoYXQgdGhlIGl0ZW0gbnVtYmVycyBzaG91bGQgY29ycmVzcG9uZApAQCAtMzUsMjIgKzM2LDIxIEBACiBJX09LPTEKIElfQ0FOQ0VMPTIKIAotSV9QUENfQ09SRT0zCitJX0NPUkU9MwogSV9QUENfUExVR0lOUz00CiBJX1BQQ19FWFRFTlNJT05TPTUKLUlfNjhLX0NPUkU9NgotSV82OEtfUExVR0lOUz03Ci1JXzY4S19FWFRFTlNJT05TPTgKLUlfUFBDX0ZVTEw9OQotSV9QUENfU01BTEw9MTAKLUlfNjhLX0ZVTEw9MTEKLUlfNjhLX1NNQUxMPTEyCi1JX0ZBVD0xMwotSV9BUFBMRVRTPTE0CitJXzY4S19QTFVHSU5TPTYKK0lfNjhLX0VYVEVOU0lPTlM9NworSV9QUENfRlVMTD04CitJX1BQQ19TTUFMTD05CitJXzY4S19GVUxMPTEwCitJXzY4S19TTUFMTD0xMQorSV9BUFBMRVRTPTEyCiAKLU5fQlVUVE9OUz0xNQorTl9CVVRUT05TPTEzCiAKLWNsYXNzIE13U2hlbGwoYWV0b29scy5UYWxrVG8sIE1ldHJvd2Vya3NfU2hlbGxfU3VpdGUsIFJlcXVpcmVkX1N1aXRlKToKK2NsYXNzIE13U2hlbGwoTWV0cm93ZXJrc19TaGVsbF9TdWl0ZSwgQ29kZVdhcnJpb3JfU3RhbmRhcmRfU3VpdGUsCisJCQkJUmVxdWlyZWRfU3VpdGUsIGFldG9vbHMuVGFsa1RvKToKIAlwYXNzCiAKIFJVTk5JTkc9W10KQEAgLTYxLDIwICs2MSwyOSBAQAogCW1nci5zZW5kX3RpbWVvdXQgPSBBcHBsZUV2ZW50cy5rTm9UaW1lT3V0CiAJCiAJZm9yIGZpbGUgaW4gcHJvamVjdHM6CisJCWlmIHR5cGUoZmlsZSkgPT0gdHlwZSgoKSk6CisJCQlmaWxlLCB0YXJnZXQgPSBmaWxlCisJCWVsc2U6CisJCQl0YXJnZXQgPSAnJwogCQlmaWxlID0gb3MucGF0aC5qb2luKHRvcCwgZmlsZSkKIAkJZnNzID0gbWFjZnMuRlNTcGVjKGZpbGUpCi0JCXByaW50ICdCdWlsZGluZycsIGZpbGUKKwkJcHJpbnQgJ0J1aWxkaW5nJywgZmlsZSwgdGFyZ2V0CiAJCW1nci5vcGVuKGZzcykKKwkJaWYgdGFyZ2V0OgorCQkJdHJ5OgorCQkJCW1nci5TZXRfQ3VycmVudF9UYXJnZXQodGFyZ2V0KQorCQkJZXhjZXB0IGFldG9vbHMuRXJyb3IsIGFyZzoKKwkJCQlwcmludCAnKionLCBmaWxlLCB0YXJnZXQsICdDYW5ub3Qgc2VsZWN0OicsIGFyZwogCQl0cnk6CiAJCQltZ3IuTWFrZV9Qcm9qZWN0KCkKIAkJZXhjZXB0IGFldG9vbHMuRXJyb3IsIGFyZzoKLQkJCXByaW50ICcqKiBGYWlsZWQ6JywgYXJnCisJCQlwcmludCAnKionLCBmaWxlLCB0YXJnZXQsICdGYWlsZWQ6JywgYXJnCiAJCW1nci5DbG9zZV9Qcm9qZWN0KCkKICMjCW1nci5xdWl0KCkKIAkKIGRlZiBidWlsZGFwcGxldCh0b3AsIGR1bW15LCBsaXN0KToKIAkiIiJDcmVhdGUgcHl0aG9uIGFwcGxldHMiIiIKLQl0ZW1wbGF0ZSA9IG1rYXBwbGV0LmZpbmR0ZW1wbGF0ZSgpCisJdGVtcGxhdGUgPSBCdWlsZEFwcGxldC5maW5kdGVtcGxhdGUoKQogCWZvciBzcmMgaW4gbGlzdDoKIAkJaWYgc3JjWy0zOl0gIT0gJy5weSc6CiAJCQlyYWlzZSAnU2hvdWxkIGVuZCBpbiAucHknLCBzcmMKQEAgLTg2LDcgKzk1LDcgQEAKIAkJZXhjZXB0IG9zLmVycm9yOgogCQkJcGFzcwogCQlwcmludCAnQnVpbGRpbmcgYXBwbGV0JywgZHN0Ci0JCW1rYXBwbGV0LnByb2Nlc3ModGVtcGxhdGUsIHNyYywgZHN0KQorCQlCdWlsZEFwcGxldC5wcm9jZXNzKHRlbXBsYXRlLCBzcmMsIGRzdCkKIAkJCiBkZWYgYnVpbGRmYXQodG9wLCBkdW1teSwgbGlzdCk6CiAJIiIiQnVpbGQgZmF0IGJpbmFyaWVzIiIiCkBAIC0xMjMsODQgKzEzMiw1MyBAQAogIyBUaGUgYnVpbGQgaW5zdHJ1Y3Rpb25zLiBFbnRyaWVzIGFyZSAocm91dGluZSwgYXJnLCBsaXN0LW9mLWZpbGVzKQogIyBYWFhYIFdlIGNvdWxkIGFsc28gaW5jbHVkZSB0aGUgYnVpbGRzIGZvciBzdGR3aW4gYW5kIHN1Y2ggaGVyZS4uLgogQlVJTERfRElDVCA9IHsKLUlfUFBDX0NPUkUgOiAoYnVpbGRtd3Byb2plY3QsICJDV0lFIiwgWwotCQkiOmJ1aWxkLm1hY3BwYy5zaGFyZWQ6UHl0aG9uQ29yZVBQQy61IiwKLQkJIjpidWlsZC5tYWNwcGMuc2hhcmVkOlB5dGhvblBQQy61IiwKLQkJIjpidWlsZC5tYWNwcGMuc2hhcmVkOlB5dGhvbkFwcGxldFBQQy61IiwKLQldKSwKLQotSV82OEtfQ09SRSA6IChidWlsZG13cHJvamVjdCwgIkNXSUUiLCBbCi0JCSI6YnVpbGQubWFjNjhrLnNoYXJlZDpQeXRob25Db3JlQ0ZNNjhLLrUiLAotCQkiOmJ1aWxkLm1hYzY4ay5zaGFyZWQ6UHl0aG9uQ0ZNNjhLLrUiLAotCQkiOmJ1aWxkLm1hYzY4ay5zaGFyZWQ6UHl0aG9uQXBwbGV0Q0ZNNjhLLrUiLAorSV9DT1JFIDogKGJ1aWxkbXdwcm9qZWN0LCAiQ1dJRSIsIFsKKwkJKCI6YnVpbGQubWFjOlB5dGhvbkNvcmUucHJqIiwgIlB5dGhvbkNvcmUiKSwKKwkJKCI6YnVpbGQubWFjOlB5dGhvbi5wcmoiLCAiUHl0aG9uRkFUIiksCisJCSgiOmJ1aWxkLm1hYzpQeXRob25BcHBsZXQucHJqIiwgIlB5dGhvbkFwcGxldEZBVCIpLAogCV0pLAogCiBJX1BQQ19QTFVHSU5TIDogKGJ1aWxkbXdwcm9qZWN0LCAiQ1dJRSIsIFsKLQkJIjpQbHVnSW5zOnRvb2xib3htb2R1bGVzLnBwYy61IiwJIyBGaXJzdDogdXNlZCBieSBvdGhlcnMKLQkJIjpQbHVnSW5zOnF0bW9kdWxlcy5wcGMutSIsCi0JCSI6UGx1Z0luczpjdGIucHBjLrUiLAotCQkiOlBsdWdJbnM6Z2RibS5wcGMutSIsCi0JCSI6UGx1Z0luczppY2dsdWUucHBjLrUiLAotCQkiOlBsdWdJbnM6aW1nbW9kdWxlcy5wcGMutSIsCi0JCSI6UGx1Z0luczptYWNzcGVlY2gucHBjLrUiLAotCQkiOlBsdWdJbnM6d2FzdGUucHBjLrUiLAotCQkiOlBsdWdJbnM6X3RraW50ZXIucHBjLrUiLAotCQkiOlBsdWdJbnM6Y2FsbGRsbC5wcGMutSIsCi0JCSI6UGx1Z0luczp6bGliLnBwYy61IiwKKwkJKCI6UGx1Z0luczpQbHVnSW5zLnByaiIsCSJQbHVnSW5zLnBwYyIpLAogCV0pLAogCiBJXzY4S19QTFVHSU5TIDogKGJ1aWxkbXdwcm9qZWN0LCAiQ1dJRSIsIFsKLQkJIjpQbHVnSW5zOnRvb2xib3htb2R1bGVzLkNGTTY4Sy61IiwJIyBGaXJzdDogdXNlZCBieSBvdGhlcnMKLQkJIjpQbHVnSW5zOnF0bW9kdWxlcy5DRk02OEsutSIsCi0JCSI6UGx1Z0luczpjdGIuQ0ZNNjhLLrUiLAotCQkiOlBsdWdJbnM6Z2RibS5DRk02OEsutSIsCi0JCSI6UGx1Z0luczppY2dsdWUuQ0ZNNjhLLrUiLAotCQkiOlBsdWdJbnM6aW1nbW9kdWxlcy5DRk02OEsutSIsCi0JCSI6UGx1Z0luczp3YXN0ZS5DRk02OEsutSIsCi0JCSI6UGx1Z0luczpfdGtpbnRlci5DRk02OEsutSIsCi0JCSI6UGx1Z0luczp6bGliLkNGTTY4Sy61IiwKKwkJKCI6UGx1Z0luczpQbHVnSW5zLnByaiIsCSJQbHVnSW5zLkNGTTY4SyIpLAogCV0pLAogCiBJXzY4S19GVUxMIDogKGJ1aWxkbXdwcm9qZWN0LCAiQ1dJRSIsIFsKLQkJIjpidWlsZC5tYWM2OGsuc3RhbmQ6UHl0aG9uNjhLLrUiLAorCQkoIjpidWlsZC5tYWNzdGFuZDpQeXRob25TdGFuZGFsb25lLnByaiIsICJQeXRob242OEsiKSwKIAldKSwKIAkKIElfNjhLX1NNQUxMIDogKGJ1aWxkbXdwcm9qZWN0LCAiQ1dJRSIsIFsKLQkJIjpidWlsZC5tYWM2OGsuc3RhbmQ6UHl0aG9uNjhLc21hbGwutSIsCisJCSgiOmJ1aWxkLm1hY3N0YW5kOlB5dGhvblN0YW5kU21hbGwucHJqIiwgIlB5dGhvblNtYWxsNjhLIiksCiAJXSksCiAKIElfUFBDX0ZVTEwgOiAoYnVpbGRtd3Byb2plY3QsICJDV0lFIiwgWwotCQkiOmJ1aWxkLm1hY3BwYy5zdGFuZDpQeXRob25TdGFuZGFsb25lLrUiLAorCQkoIjpidWlsZC5tYWNzdGFuZDpQeXRob25TdGFuZGFsb25lLnByaiIsICJQeXRob25TdGFuZGFsb25lIiksCiAJXSksCiAKIElfUFBDX1NNQUxMIDogKGJ1aWxkbXdwcm9qZWN0LCAiQ1dJRSIsIFsKLQkJIjpidWlsZC5tYWNwcGMuc3RhbmQ6UHl0aG9uU3RhbmRTbWFsbC61IiwKKwkJKCI6YnVpbGQubWFjc3RhbmQ6UHl0aG9uU3RhbmRTbWFsbC5wcmoiLCAiUHl0aG9uU3RhbmRTbWFsbCIpLAogCV0pLAogCiBJX1BQQ19FWFRFTlNJT05TIDogKGJ1aWxkbXdwcm9qZWN0LCAiQ1dJRSIsIFsKLQkJIjpFeHRlbnNpb25zOkltYWdpbmc6X2ltYWdpbmcucHBjLrUiLAotCQkiOkV4dGVuc2lvbnM6SW1hZ2luZzpfdGtpbnRlci5wcGMutSIsCi0JCSI6RXh0ZW5zaW9uczpOdW1QeTpudW1weW1vZHVsZXMucHBjLrUiLAorCQkoIjpFeHRlbnNpb25zOkltYWdpbmc6X2ltYWdpbmcucHJqIiwgIl9pbWFnaW5nLnBwYyIpLAorCQkoIjpFeHRlbnNpb25zOkltYWdpbmc6X3RraW50ZXIucHJqIiwgIl90a2ludGVyLnBwYyIpLAorCQkoIjpFeHRlbnNpb25zOk51bVB5Om51bXB5bW9kdWxlcy5wcmoiLCAibnVtcHltb2R1bGVzLnBwYyIpLAogCV0pLAogCiBJXzY4S19FWFRFTlNJT05TIDogKGJ1aWxkbXdwcm9qZWN0LCAiQ1dJRSIsIFsKLQkJIjpFeHRlbnNpb25zOkltYWdpbmc6X2ltYWdpbmcuQ0ZNNjhLLrUiLAotCQkiOkV4dGVuc2lvbnM6SW1hZ2luZzpfdGtpbnRlci5DRk02OEsutSIsCi0JCSI6RXh0ZW5zaW9uczpOdW1QeTpudW1weW1vZHVsZXMuQ0ZNNjhLLrUiLAorCQkoIjpFeHRlbnNpb25zOkltYWdpbmc6X2ltYWdpbmcucHJqIiwgIl9pbWFnaW5nLkNGTTY4SyIpLAorCQkoIjpFeHRlbnNpb25zOkltYWdpbmc6X3RraW50ZXIucHJqIiwgIl90a2ludGVyLkNGTTY4SyIpLAorCQkoIjpFeHRlbnNpb25zOk51bVB5Om51bXB5bW9kdWxlcy5wcmoiLCAibnVtcHltb2R1bGVzLkNGTTY4SyIpLAogCV0pLAogCiBJX0FQUExFVFMgOiAoYnVpbGRhcHBsZXQsIE5vbmUsIFsKIAkJIjpNYWM6c2NyaXB0czpFZGl0UHl0aG9uUHJlZnMucHkiLAotCQkiOk1hYzpzY3JpcHRzOm1rYXBwbGV0LnB5IiwKLQkJIjpNYWM6c2NyaXB0czpNa1BsdWdpbkFsaWFzZXMucHkiCisJCSI6TWFjOnNjcmlwdHM6QnVpbGRBcHBsZXQucHkiLAorCQkiOk1hYzpzY3JpcHRzOkNvbmZpZ3VyZVB5dGhvbi5weSIKIAldKSwKLQotSV9GQVQgOiAoYnVpbGRmYXQsIE5vbmUsIFsKLQkJCSgiOlB5dGhvbkZBVCIsICI6YnVpbGQubWFjcHBjLnNoYXJlZDpQeXRob25QUEMiLCAKLQkJCQkJCSI6YnVpbGQubWFjNjhrLnNoYXJlZDpQeXRob25DRk02OEsiKSwKLQkJCSgiOlB5dGhvbkFwcGxldCIsICI6YnVpbGQubWFjcHBjLnNoYXJlZDpQeXRob25BcHBsZXRQUEMiLAotCQkJCQkJCSAgIjpidWlsZC5tYWM2OGsuc2hhcmVkOlB5dGhvbkFwcGxldENGTTY4SyIpCi0JXSkKIH0KIAkJCQkKIGRlZiBtYWluKCk6Cg==