ZGlmZiAtLWdpdCBhL0xpYi9zcWxpdGUzL3Rlc3QvZmFjdG9yeS5weSBiL0xpYi9zcWxpdGUzL3Rlc3QvZmFjdG9yeS5weQppbmRleCA2MWVkYzZjLi5mMjA4NDhmIDEwMDY0NAotLS0gYS9MaWIvc3FsaXRlMy90ZXN0L2ZhY3RvcnkucHkKKysrIGIvTGliL3NxbGl0ZTMvdGVzdC9mYWN0b3J5LnB5CkBAIC0xMzksMzIgKzEzOSwzMiBAQAogICAgICAgICBzZWxmLmNvbiA9IHNxbGl0ZS5jb25uZWN0KCI6bWVtb3J5OiIpCiAKICAgICBkZWYgQ2hlY2tVbmljb2RlKHNlbGYpOgotICAgICAgICBhdXN0cmlhID0gc3RyKCLWc3RlcnJlaWNoIiwgImxhdGluMSIpCisgICAgICAgIGF1c3RyaWEgPSAi1nN0ZXJyZWljaCIKICAgICAgICAgcm93ID0gc2VsZi5jb24uZXhlY3V0ZSgic2VsZWN0ID8iLCAoYXVzdHJpYSwpKS5mZXRjaG9uZSgpCiAgICAgICAgIHNlbGYuZmFpbFVubGVzcyh0eXBlKHJvd1swXSkgPT0gc3RyLCAidHlwZSBvZiByb3dbMF0gbXVzdCBiZSB1bmljb2RlIikKIAogICAgIGRlZiBDaGVja1N0cmluZyhzZWxmKToKLSAgICAgICAgc2VsZi5jb24udGV4dF9mYWN0b3J5ID0gc3RyCi0gICAgICAgIGF1c3RyaWEgPSBzdHIoItZzdGVycmVpY2giLCAibGF0aW4xIikKKyAgICAgICAgc2VsZi5jb24udGV4dF9mYWN0b3J5ID0gYnl0ZXMKKyAgICAgICAgYXVzdHJpYSA9ICLWc3RlcnJlaWNoIgogICAgICAgICByb3cgPSBzZWxmLmNvbi5leGVjdXRlKCJzZWxlY3QgPyIsIChhdXN0cmlhLCkpLmZldGNob25lKCkKLSAgICAgICAgc2VsZi5mYWlsVW5sZXNzKHR5cGUocm93WzBdKSA9PSBzdHIsICJ0eXBlIG9mIHJvd1swXSBtdXN0IGJlIHN0ciIpCisgICAgICAgIHNlbGYuZmFpbFVubGVzcyh0eXBlKHJvd1swXSkgPT0gYnl0ZXMsICJ0eXBlIG9mIHJvd1swXSBtdXN0IGJlIGJ5dGVzIikKICAgICAgICAgc2VsZi5mYWlsVW5sZXNzKHJvd1swXSA9PSBhdXN0cmlhLmVuY29kZSgidXRmLTgiKSwgImNvbHVtbiBtdXN0IGVxdWFsIG9yaWdpbmFsIGRhdGEgaW4gVVRGLTgiKQogCiAgICAgZGVmIENoZWNrQ3VzdG9tKHNlbGYpOgogICAgICAgICBzZWxmLmNvbi50ZXh0X2ZhY3RvcnkgPSBsYW1iZGEgeDogc3RyKHgsICJ1dGYtOCIsICJpZ25vcmUiKQotICAgICAgICBhdXN0cmlhID0gc3RyKCLWc3RlcnJlaWNoIiwgImxhdGluMSIpCi0gICAgICAgIHJvdyA9IHNlbGYuY29uLmV4ZWN1dGUoInNlbGVjdCA/IiwgKGF1c3RyaWEuZW5jb2RlKCJsYXRpbjEiKSwpKS5mZXRjaG9uZSgpCisgICAgICAgIGF1c3RyaWEgPSAi1nN0ZXJyZWljaCIKKyAgICAgICAgcm93ID0gc2VsZi5jb24uZXhlY3V0ZSgic2VsZWN0ID8iLCAoYXVzdHJpYSwpKS5mZXRjaG9uZSgpCiAgICAgICAgIHNlbGYuZmFpbFVubGVzcyh0eXBlKHJvd1swXSkgPT0gc3RyLCAidHlwZSBvZiByb3dbMF0gbXVzdCBiZSB1bmljb2RlIikKICAgICAgICAgc2VsZi5mYWlsVW5sZXNzKHJvd1swXS5lbmRzd2l0aCgicmVpY2giKSwgImNvbHVtbiBtdXN0IGNvbnRhaW4gb3JpZ2luYWwgZGF0YSIpCiAKICAgICBkZWYgQ2hlY2tPcHRpbWl6ZWRVbmljb2RlKHNlbGYpOgogICAgICAgICBzZWxmLmNvbi50ZXh0X2ZhY3RvcnkgPSBzcWxpdGUuT3B0aW1pemVkVW5pY29kZQotICAgICAgICBhdXN0cmlhID0gc3RyKCLWc3RlcnJlaWNoIiwgImxhdGluMSIpCi0gICAgICAgIGdlcm1hbnkgPSBzdHIoIkRldXRjaGxhbmQiKQorICAgICAgICBhdXN0cmlhID0gItZzdGVycmVpY2giCisgICAgICAgIGdlcm1hbnkgPSAiRGV1dGNobGFuZCIKICAgICAgICAgYV9yb3cgPSBzZWxmLmNvbi5leGVjdXRlKCJzZWxlY3QgPyIsIChhdXN0cmlhLCkpLmZldGNob25lKCkKICAgICAgICAgZF9yb3cgPSBzZWxmLmNvbi5leGVjdXRlKCJzZWxlY3QgPyIsIChnZXJtYW55LCkpLmZldGNob25lKCkKICAgICAgICAgc2VsZi5mYWlsVW5sZXNzKHR5cGUoYV9yb3dbMF0pID09IHN0ciwgInR5cGUgb2Ygbm9uLUFTQ0lJIHJvdyBtdXN0IGJlIHVuaWNvZGUiKQotICAgICAgICBzZWxmLmZhaWxVbmxlc3ModHlwZShkX3Jvd1swXSkgPT0gc3RyLCAidHlwZSBvZiBBU0NJSS1vbmx5IHJvdyBtdXN0IGJlIHN0ciIpCisgICAgICAgIHNlbGYuZmFpbFVubGVzcyh0eXBlKGRfcm93WzBdKSA9PSBzdHI4LCAidHlwZSBvZiBBU0NJSS1vbmx5IHJvdyBtdXN0IGJlIHN0cjgiKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBzZWxmLmNvbi5jbG9zZSgpCmRpZmYgLS1naXQgYS9MaWIvc3FsaXRlMy90ZXN0L3R5cGVzLnB5IGIvTGliL3NxbGl0ZTMvdGVzdC90eXBlcy5weQppbmRleCAyMzJhMzJjLi4yMGYwMDkzIDEwMDY0NAotLS0gYS9MaWIvc3FsaXRlMy90ZXN0L3R5cGVzLnB5CisrKyBiL0xpYi9zcWxpdGUzL3Rlc3QvdHlwZXMucHkKQEAgLTYyLDcgKzYyLDcgQEAKICAgICAgICAgc2VsZi5mYWlsVW5sZXNzRXF1YWwocm93WzBdLCB2YWwpCiAKICAgICBkZWYgQ2hlY2tCbG9iKHNlbGYpOgotICAgICAgICB2YWwgPSBidWZmZXIoIkd1Z2xodXBmIikKKyAgICAgICAgdmFsID0gYnVmZmVyKGIiR3VnbGh1cGYiKQogICAgICAgICBzZWxmLmN1ci5leGVjdXRlKCJpbnNlcnQgaW50byB0ZXN0KGIpIHZhbHVlcyAoPykiLCAodmFsLCkpCiAgICAgICAgIHNlbGYuY3VyLmV4ZWN1dGUoInNlbGVjdCBiIGZyb20gdGVzdCIpCiAgICAgICAgIHJvdyA9IHNlbGYuY3VyLmZldGNob25lKCkKQEAgLTIwMyw3ICsyMDMsNyBAQAogCiAgICAgZGVmIENoZWNrQmxvYihzZWxmKToKICAgICAgICAgIyBkZWZhdWx0Ci0gICAgICAgIHZhbCA9IGJ1ZmZlcigiR3VnbGh1cGYiKQorICAgICAgICB2YWwgPSBidWZmZXIoYiJHdWdsaHVwZiIpCiAgICAgICAgIHNlbGYuY3VyLmV4ZWN1dGUoImluc2VydCBpbnRvIHRlc3QoYmluKSB2YWx1ZXMgKD8pIiwgKHZhbCwpKQogICAgICAgICBzZWxmLmN1ci5leGVjdXRlKCJzZWxlY3QgYmluIGZyb20gdGVzdCIpCiAgICAgICAgIHJvdyA9IHNlbGYuY3VyLmZldGNob25lKCkKQEAgLTMwNCw3ICszMDQsNyBAQAogICAgICAgICBzZWxmLmNvbi5jbG9zZSgpCiAKICAgICBkZWYgQ2hlY2tCaW5hcnlJbnB1dEZvckNvbnZlcnRlcihzZWxmKToKLSAgICAgICAgdGVzdGRhdGEgPSAiYWJjZGVmZyIgKiAxMAorICAgICAgICB0ZXN0ZGF0YSA9IGIiYWJjZGVmZyIgKiAxMAogICAgICAgICByZXN1bHQgPSBzZWxmLmNvbi5leGVjdXRlKCdzZWxlY3QgPyBhcyAieCBbYmluXSInLCAoYnVmZmVyKGJ6Mi5jb21wcmVzcyh0ZXN0ZGF0YSkpLCkpLmZldGNob25lKClbMF0KICAgICAgICAgc2VsZi5mYWlsVW5sZXNzRXF1YWwodGVzdGRhdGEsIHJlc3VsdCkKIApkaWZmIC0tZ2l0IGEvTGliL3NxbGl0ZTMvdGVzdC91c2VyZnVuY3Rpb25zLnB5IGIvTGliL3NxbGl0ZTMvdGVzdC91c2VyZnVuY3Rpb25zLnB5CmluZGV4IGEyZjI1NzQuLmJjOGU2ZDIgMTAwNjQ0Ci0tLSBhL0xpYi9zcWxpdGUzL3Rlc3QvdXNlcmZ1bmN0aW9ucy5weQorKysgYi9MaWIvc3FsaXRlMy90ZXN0L3VzZXJmdW5jdGlvbnMucHkKQEAgLTM2LDcgKzM2LDcgQEAKIGRlZiBmdW5jX3JldHVybm51bGwoKToKICAgICByZXR1cm4gTm9uZQogZGVmIGZ1bmNfcmV0dXJuYmxvYigpOgotICAgIHJldHVybiBidWZmZXIoImJsb2IiKQorICAgIHJldHVybiBidWZmZXIoYiJibG9iIikKIGRlZiBmdW5jX3JhaXNlZXhjZXB0aW9uKCk6CiAgICAgNS8wCiAKQEAgLTE5Nyw3ICsxOTcsNyBAQAogICAgICAgICBjdXIuZXhlY3V0ZSgic2VsZWN0IHJldHVybmJsb2IoKSIpCiAgICAgICAgIHZhbCA9IGN1ci5mZXRjaG9uZSgpWzBdCiAgICAgICAgIHNlbGYuZmFpbFVubGVzc0VxdWFsKHR5cGUodmFsKSwgYnVmZmVyKQotICAgICAgICBzZWxmLmZhaWxVbmxlc3NFcXVhbCh2YWwsIGJ1ZmZlcigiYmxvYiIpKQorICAgICAgICBzZWxmLmZhaWxVbmxlc3NFcXVhbCh2YWwsIGJ1ZmZlcihiImJsb2IiKSkKIAogICAgIGRlZiBDaGVja0Z1bmNFeGNlcHRpb24oc2VsZik6CiAgICAgICAgIGN1ciA9IHNlbGYuY29uLmN1cnNvcigpCg==