ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvR0JLL0VVQy1DTi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL0dCSy9FVUMtQ04tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjMzkxNTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL0dCSy9FVUMtQ04tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGhlIGZvbGxvd2luZyB0d28gbGluZXMgc2hvdWxkIGxvb2sgaWRlbnRpY2FsbHk6CisKK+S4gOethuKCrOmVlQorCivkuIDnrYbigqzplZUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvR0JLL0VVQy1DTi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9HQksvRVVDLUNOLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2I4ZjUzZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvR0JLL0VVQy1DTi5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzxoZWFkPgorICAgIDxtZXRhIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1FVUMtQ04iIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIvPgorPC9oZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworPC9zY3JpcHQ+Cis8cD5UaGUgZm9sbG93aW5nIHR3byBsaW5lcyBzaG91bGQgbG9vayBpZGVudGljYWxseTo8L3A+Cis8cD7Su7lQgOlGPC9wPgorPHA+JiMxOTk2ODsmIzMxNTU4OyZldXJvOyYjMzgyMjk7PC9wPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9HQksvY2hpbmVzZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL0dCSy9jaGluZXNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzM5MTU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9HQksvY2hpbmVzZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitUaGUgZm9sbG93aW5nIHR3byBsaW5lcyBzaG91bGQgbG9vayBpZGVudGljYWxseToKKwor5LiA562G4oKs6ZWVCisKK+S4gOethuKCrOmVlQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9HQksvY2hpbmVzZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9HQksvY2hpbmVzZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2YTRjMDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL0dCSy9jaGluZXNlLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPGhlYWQ+CisgICAgPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWNoaW5lc2UiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIvPgorPC9oZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworPC9zY3JpcHQ+Cis8cD5UaGUgZm9sbG93aW5nIHR3byBsaW5lcyBzaG91bGQgbG9vayBpZGVudGljYWxseTo8L3A+Cis8cD7Su7lQgOlGPC9wPgorPHA+JiMxOTk2ODsmIzMxNTU4OyZldXJvOyYjMzgyMjk7PC9wPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9HQksvY2xvc2UtZ2JrLWNvbnZlcnRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL0dCSy9jbG9zZS1nYmstY29udmVydGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmJkMDJmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9HQksvY2xvc2UtZ2JrLWNvbnZlcnRlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitUaGlzIHRlc3RzIHBlcmZvcm1zIGEgc2VxdWVuY2Ugb2YgYWN0aW9ucyB0aGF0IHJlc3VsdCBpbiBhIEdCSyBjb252ZXJ0ZXIgd2l0aCBzdWJzdGl0dXRpb24gZW5hYmxlZCBiZWluZyBkZXN0cm95ZWQuCisKK1BBU1MgaWYgdGhlcmUgaXMgbm8gYXNzZXJ0aW9uIGZhaWx1cmUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL0dCSy9jbG9zZS1nYmstY29udmVydGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL0dCSy9jbG9zZS1nYmstY29udmVydGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzkwMjQ2YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvR0JLL2Nsb3NlLWdiay1jb252ZXJ0ZXIuaHRtbApAQCAtMCwwICsxLDIyIEBACis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9ImdiayI+Cis8c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICB2YXIgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0OworICAgIHJlcS5vcGVuKCJHRVQiLCAiP6fYIiwgZmFsc2UpOworICAgIHJlcS5zZW5kKCk7CisKKyAgICByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3Q7CisgICAgcmVxLm9wZW4oIkdFVCIsICIvp9giLCBmYWxzZSk7CisgICAgcmVxLnNlbmQoKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+VGhpcyB0ZXN0cyBwZXJmb3JtcyBhIHNlcXVlbmNlIG9mIGFjdGlvbnMgdGhhdCByZXN1bHQgaW4gYSBHQksgY29udmVydGVyIHdpdGggc3Vic3RpdHV0aW9uIGVuYWJsZWQgYmVpbmcgZGVzdHJveWVkLjwvcD4KKzxwPlBBU1MgaWYgdGhlcmUgaXMgbm8gYXNzZXJ0aW9uIGZhaWx1cmUuPC9wPgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9HQksvY24tZ2ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9HQksvY24tZ2ItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjMzkxNTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL0dCSy9jbi1nYi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitUaGUgZm9sbG93aW5nIHR3byBsaW5lcyBzaG91bGQgbG9vayBpZGVudGljYWxseToKKwor5LiA562G4oKs6ZWVCisKK+S4gOethuKCrOmVlQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9HQksvY24tZ2IuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvR0JLL2NuLWdiLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTliMTFmZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvR0JLL2NuLWdiLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPGhlYWQ+CisgICAgPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWNuLWdiIiBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiLz4KKzwvaGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKzwvc2NyaXB0PgorPHA+VGhlIGZvbGxvd2luZyB0d28gbGluZXMgc2hvdWxkIGxvb2sgaWRlbnRpY2FsbHk6PC9wPgorPHA+0ru5UIDpRjwvcD4KKzxwPiYjMTk5Njg7JiMzMTU1ODsmZXVybzsmIzM4MjI5OzwvcD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvR0JLL2NzZ2IyMzEyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvR0JLL2NzZ2IyMzEyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzM5MTU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9HQksvY3NnYjIzMTItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGhlIGZvbGxvd2luZyB0d28gbGluZXMgc2hvdWxkIGxvb2sgaWRlbnRpY2FsbHk6CisKK+S4gOethuKCrOmVlQorCivkuIDnrYbigqzplZUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvR0JLL2NzZ2IyMzEyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL0dCSy9jc2diMjMxMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3YWZkNDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL0dCSy9jc2diMjMxMi5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzxoZWFkPgorICAgIDxtZXRhIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1jc2diMjMxMiIgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIi8+Cis8L2hlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cis8L3NjcmlwdD4KKzxwPlRoZSBmb2xsb3dpbmcgdHdvIGxpbmVzIHNob3VsZCBsb29rIGlkZW50aWNhbGx5OjwvcD4KKzxwPtK7uVCA6UY8L3A+Cis8cD4mIzE5OTY4OyYjMzE1NTg7JmV1cm87JiMzODIyOTs8L3A+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL0dCSy9jc2diMjMxMjgwLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvR0JLL2NzZ2IyMzEyODAtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjMzkxNTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL0dCSy9jc2diMjMxMjgwLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1RoZSBmb2xsb3dpbmcgdHdvIGxpbmVzIHNob3VsZCBsb29rIGlkZW50aWNhbGx5OgorCivkuIDnrYbigqzplZUKKwor5LiA562G4oKs6ZWVCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL0dCSy9jc2diMjMxMjgwLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL0dCSy9jc2diMjMxMjgwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDMzZDhlZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvR0JLL2NzZ2IyMzEyODAuaHRtbApAQCAtMCwwICsxLDEwIEBACis8aGVhZD4KKyAgICA8bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9Y3NnYjIzMTI4MCIgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIi8+Cis8L2hlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cis8L3NjcmlwdD4KKzxwPlRoZSBmb2xsb3dpbmcgdHdvIGxpbmVzIHNob3VsZCBsb29rIGlkZW50aWNhbGx5OjwvcD4KKzxwPtK7uVCA6UY8L3A+Cis8cD4mIzE5OTY4OyYjMzE1NTg7JmV1cm87JiMzODIyOTs8L3A+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL0dCSy9nYjIzMTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9HQksvZ2IyMzEyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzM5MTU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9HQksvZ2IyMzEyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1RoZSBmb2xsb3dpbmcgdHdvIGxpbmVzIHNob3VsZCBsb29rIGlkZW50aWNhbGx5OgorCivkuIDnrYbigqzplZUKKwor5LiA562G4oKs6ZWVCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL0dCSy9nYjIzMTIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvR0JLL2diMjMxMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyZTY5ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL0dCSy9nYjIzMTIuaHRtbApAQCAtMCwwICsxLDEwIEBACis8aGVhZD4KKyAgICA8bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9Z2IyMzEyIiBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiLz4KKzwvaGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKzwvc2NyaXB0PgorPHA+VGhlIGZvbGxvd2luZyB0d28gbGluZXMgc2hvdWxkIGxvb2sgaWRlbnRpY2FsbHk6PC9wPgorPHA+0ru5UIDpRjwvcD4KKzxwPiYjMTk5Njg7JiMzMTU1ODsmZXVybzsmIzM4MjI5OzwvcD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvR0JLL2diXzIzMTItODAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9HQksvZ2JfMjMxMi04MC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWMzOTE1NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvR0JLL2diXzIzMTItODAtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGhlIGZvbGxvd2luZyB0d28gbGluZXMgc2hvdWxkIGxvb2sgaWRlbnRpY2FsbHk6CisKK+S4gOethuKCrOmVlQorCivkuIDnrYbigqzplZUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvR0JLL2diXzIzMTItODAuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvR0JLL2diXzIzMTItODAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTY2OTVlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9HQksvZ2JfMjMxMi04MC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzxoZWFkPgorICAgIDxtZXRhIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1nYl8yMzEyLTgwIiBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiLz4KKzwvaGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKzwvc2NyaXB0PgorPHA+VGhlIGZvbGxvd2luZyB0d28gbGluZXMgc2hvdWxkIGxvb2sgaWRlbnRpY2FsbHk6PC9wPgorPHA+0ru5UIDpRjwvcD4KKzxwPiYjMTk5Njg7JiMzMTU1ODsmZXVybzsmIzM4MjI5OzwvcD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvR0JLL2diay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL0dCSy9nYmstZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjMzkxNTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL0dCSy9nYmstZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGhlIGZvbGxvd2luZyB0d28gbGluZXMgc2hvdWxkIGxvb2sgaWRlbnRpY2FsbHk6CisKK+S4gOethuKCrOmVlQorCivkuIDnrYbigqzplZUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvR0JLL2diay5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9HQksvZ2JrLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjYzMjU5NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvR0JLL2diay5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzxoZWFkPgorICAgIDxtZXRhIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1nYmsiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIvPgorPC9oZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworPC9zY3JpcHQ+Cis8cD5UaGUgZm9sbG93aW5nIHR3byBsaW5lcyBzaG91bGQgbG9vayBpZGVudGljYWxseTo8L3A+Cis8cD7Su7lQgOlGPC9wPgorPHA+JiMxOTk2ODsmIzMxNTU4OyZldXJvOyYjMzgyMjk7PC9wPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9HQksvaXNvLWlyLTU4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvR0JLL2lzby1pci01OC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWMzOTE1NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvR0JLL2lzby1pci01OC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitUaGUgZm9sbG93aW5nIHR3byBsaW5lcyBzaG91bGQgbG9vayBpZGVudGljYWxseToKKwor5LiA562G4oKs6ZWVCisKK+S4gOethuKCrOmVlQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9HQksvaXNvLWlyLTU4Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL0dCSy9pc28taXItNTguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZmE5MGJjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9HQksvaXNvLWlyLTU4Lmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPGhlYWQ+CisgICAgPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby1pci01OCIgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIi8+Cis8L2hlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cis8L3NjcmlwdD4KKzxwPlRoZSBmb2xsb3dpbmcgdHdvIGxpbmVzIHNob3VsZCBsb29rIGlkZW50aWNhbGx5OjwvcD4KKzxwPtK7uVCA6UY8L3A+Cis8cD4mIzE5OTY4OyYjMzE1NTg7JmV1cm87JiMzODIyOTs8L3A+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL0dCSy94LWV1Yy1jbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL0dCSy94LWV1Yy1jbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWMzOTE1NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvR0JLL3gtZXVjLWNuLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1RoZSBmb2xsb3dpbmcgdHdvIGxpbmVzIHNob3VsZCBsb29rIGlkZW50aWNhbGx5OgorCivkuIDnrYbigqzplZUKKwor5LiA562G4oKs6ZWVCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL0dCSy94LWV1Yy1jbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9HQksveC1ldWMtY24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzExZDA1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9HQksveC1ldWMtY24uaHRtbApAQCAtMCwwICsxLDEwIEBACis8aGVhZD4KKyAgICA8bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9eC1ldWMtY24iIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIvPgorPC9oZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworPC9zY3JpcHQ+Cis8cD5UaGUgZm9sbG93aW5nIHR3byBsaW5lcyBzaG91bGQgbG9vayBpZGVudGljYWxseTo8L3A+Cis8cD7Su7lQgOlGPC9wPgorPHA+JiMxOTk2ODsmIzMxNTU4OyZldXJvOyYjMzgyMjk7PC9wPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9HQksveC1nYmstZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9HQksveC1nYmstZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjMzkxNTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL0dCSy94LWdiay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitUaGUgZm9sbG93aW5nIHR3byBsaW5lcyBzaG91bGQgbG9vayBpZGVudGljYWxseToKKwor5LiA562G4oKs6ZWVCisKK+S4gOethuKCrOmVlQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9HQksveC1nYmsuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvR0JLL3gtZ2JrLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDRhYTYzNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvR0JLL3gtZ2JrLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPGhlYWQ+CisgICAgPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXgtZ2JrIiBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiLz4KKzwvaGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKzwvc2NyaXB0PgorPHA+VGhlIGZvbGxvd2luZyB0d28gbGluZXMgc2hvdWxkIGxvb2sgaWRlbnRpY2FsbHk6PC9wPgorPHA+0ru5UIDpRjwvcD4KKzxwPiYjMTk5Njg7JiMzMTU1ODsmZXVybzsmIzM4MjI5OzwvcD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvYWhyYW0tb3JnLWVnLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvYWhyYW0tb3JnLWVnLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTA0NzJmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9haHJhbS1vcmctZWctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGVzdCBhIHBhcnRpY3VsYXIgZXhhbXBsZSBvZiBicm9rZW4gbWFya3VwIHRoYXQgd2FzIG1ha2luZyB1cyBpZ25vcmUgYSBjaGFyc2V0IGRlY2xhcmF0aW9uLgorCitFbmNvZGluZzogd2luZG93cy0xMjU2IChzaG91bGQgYmUgd2luZG93cy0xMjU2KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9haHJhbS1vcmctZWcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvYWhyYW0tb3JnLWVnLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDc1Y2YwNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvYWhyYW0tb3JnLWVnLmh0bWwKQEAgLTAsMCArMSwyOCBAQAorPGh0bT4KKworPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LWxhbmd1YWdlIiBjb250ZW50PSJlbi11cyI+Cis8bWV0YSBodHRwLWVxdWl2PSdjb250ZW50LXR5cGUnIGNvbnRlbnQ9J3RleHQvaHRtOyBjaGFyc2V0PXdpbmRvd3MtMTI1Nic+Cis8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KKwlpZiAobmF2aWdhdG9yLmFwcE5hbWUgPT0gIk5ldHNjYXBlIikKKwl7CisJCWRvY3VtZW50LndyaXRlKCI8bWV0YSBodHRwLWVxdWl2PSdjb250ZW50LXR5cGUnIGNvbnRlbnQ9J3RleHQvaHRtOyBjaGFyc2V0PXgtdXNlci1kZWZpbmVkJz4iKTsKKwl9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+Cis8cD5UZXN0IGEgcGFydGljdWxhciBleGFtcGxlIG9mIGJyb2tlbiBtYXJrdXAgdGhhdCB3YXMgbWFraW5nIHVzIGlnbm9yZSBhIGNoYXJzZXQgZGVjbGFyYXRpb24uPC9wPgorPHNjcmlwdD4KKyAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgdmFyIGNoYXJzZXQgPSBkb2N1bWVudC5jaGFyYWN0ZXJTZXQ7CisgIGlmICghY2hhcnNldCkKKyAgICBjaGFyc2V0ID0gZG9jdW1lbnQuY2hhcnNldDsKKyAgaWYgKCFjaGFyc2V0KQorICAgIGNoYXJzZXQgPSBkb2N1bWVudC5pbnB1dEVuY29kaW5nOworICBkb2N1bWVudC53cml0ZSgiRW5jb2Rpbmc6ICIgKyBjaGFyc2V0ICsgIiAoc2hvdWxkIGJlIHdpbmRvd3MtMTI1NikiKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG0+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2JhbmRhaS1jby1qcC1yZWxlYXNlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2JhbmRhaS1jby1qcC1yZWxlYXNlcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjA2OWM0NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvYmFuZGFpLWNvLWpwLXJlbGVhc2VzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1Rlc3QgYSBwYXJ0aWN1bGFyIGV4YW1wbGUgb2YgYnJva2VuIG1hcmt1cCB0aGF0IHdhcyBtYWtpbmcgdXMgaWdub3JlIGEgY2hhcnNldCBkZWNsYXJhdGlvbi4KKworRW5jb2Rpbmc6IFNoaWZ0X0pJUyAoc2hvdWxkIGJlIFNoaWZ0X0pJUykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvYmFuZGFpLWNvLWpwLXJlbGVhc2VzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2JhbmRhaS1jby1qcC1yZWxlYXNlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzYzJmZGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2JhbmRhaS1jby1qcC1yZWxlYXNlcy5odG1sCkBAIC0wLDAgKzEsMjEgQEAKKzxkaXYgY2xhc3M9Im1vei10ZXh0LWZsb3dlZCIgc3R5bGU9ImZvbnQtZmFtaWx5OiAtbW96LWZpeGVkIj4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1TaGlmdF9KSVMiPgorPC9oZWFkPgorCis8Ym9keT4KKzxwPlRlc3QgYSBwYXJ0aWN1bGFyIGV4YW1wbGUgb2YgYnJva2VuIG1hcmt1cCB0aGF0IHdhcyBtYWtpbmcgdXMgaWdub3JlIGEgY2hhcnNldCBkZWNsYXJhdGlvbi48L3A+Cis8c2NyaXB0PgorICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICB2YXIgY2hhcnNldCA9IGRvY3VtZW50LmNoYXJhY3RlclNldDsKKyAgaWYgKCFjaGFyc2V0KQorICAgIGNoYXJzZXQgPSBkb2N1bWVudC5jaGFyc2V0OworICBpZiAoIWNoYXJzZXQpCisgICAgY2hhcnNldCA9IGRvY3VtZW50LmlucHV0RW5jb2Rpbmc7CisgIGRvY3VtZW50LndyaXRlKCJFbmNvZGluZzogIiArIGNoYXJzZXQgKyAiIChzaG91bGQgYmUgU2hpZnRfSklTKSIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2JvbS1pbi1jb250ZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvYm9tLWluLWNvbnRlbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExMjUyZGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2JvbS1pbi1jb250ZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1Rlc3QgZm9yIGJ1ZyAxODY4MTogQk9NIGNoYXJhY3RlcnMgc2hvdWxkIG5vdCBiZSByZW1vdmVkIGZyb20gaW5wdXQgc3RyZWFtLgorCivvu78KK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvYm9tLWluLWNvbnRlbnQtdXRmMTYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9ib20taW4tY29udGVudC11dGYxNi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTEyNTJkYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvYm9tLWluLWNvbnRlbnQtdXRmMTYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorVGVzdCBmb3IgYnVnIDE4NjgxOiBCT00gY2hhcmFjdGVycyBzaG91bGQgbm90IGJlIHJlbW92ZWQgZnJvbSBpbnB1dCBzdHJlYW0uCisKK++7vworUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9ib20taW4tY29udGVudC11dGYxNi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9ib20taW4tY29udGVudC11dGYxNi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiNTVhZDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2JvbS1pbi1jb250ZW50LXV0ZjE2Lmh0bWwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9ib20taW4tY29udGVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9ib20taW4tY29udGVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzMGE5MTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2JvbS1pbi1jb250ZW50Lmh0bWwKQEAgLTAsMCArMSwxNCBAQAorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY4MSI+YnVnIDE4NjgxPC9hPjoKK0JPTSBjaGFyYWN0ZXJzIHNob3VsZCBub3QgYmUgcmVtb3ZlZCBmcm9tIGlucHV0IHN0cmVhbS48cD4KKzxkaXYgaWQ9Qk9Ncz7vu788L2Rpdj4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworZG9jdW1lbnQud3JpdGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkJPTXMiKS5pbm5lckhUTUwubGVuZ3RoID09IDEgPyAiUEFTUyIgOiAiRkFJTCIpOworPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2NoYXItZGVjb2RpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jaGFyLWRlY29kaW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNmFmZTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jaGFyLWRlY29kaW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2MyBAQAorVGhpcyB0ZXN0cyBkZWNvZGluZyBjaGFyYWN0ZXJzIGluIHZhcmlvdXMgY2hhcmFjdGVyIHNldHMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRlY29kZSgnVVRGLTgnLCAnJUUyJTg4JTlBJykgaXMgJ1UrMjIxQScKK1BBU1MgZGVjb2RlKCdnYjIzMTInLCAnJUEzJUEwJykgaXMgJ1UrMzAwMCcKK1BBU1MgZGVjb2RlKCdnYl8yMzEyLTgwJywgJyVBMyVBMCcpIGlzICdVKzMwMDAnCitQQVNTIGRlY29kZSgnY2hpbmVzZScsICclQTMlQTAnKSBpcyAnVSszMDAwJworUEFTUyBkZWNvZGUoJ2diaycsICclQTMlQTAnKSBpcyAnVSszMDAwJworUEFTUyBkZWNvZGUoJ2diMTgwMzAnLCAnJUEzJUEwJykgaXMgJ1UrMzAwMCcKK1BBU1MgZGVjb2RlKCdFVUMtQ04nLCAnJUEzJUEwJykgaXMgJ1UrMzAwMCcKK1BBU1MgZGVjb2RlKCdTaGlmdF9KSVMnLCAnJTgyJWQwJykgaXMgJ1UrMzA3MicKK1BBU1MgZGVjb2RlKCdzaGlmdC1qaXMnLCAnJTgyJWQwJykgaXMgJ1UrMzA3MicKK1BBU1MgZGVjb2RlKCdrb3JlYW4nLCAnJUEyJUU2JykgaXMgJ1UrMjBBQycKK1BBU1MgZGVjb2RlKCdrb3JlYW4nLCAnJUExJUE0JykgaXMgJ1UrMDBCNycKK1BBU1MgZGVjb2RlKCdrb3JlYW4nLCAnJUExJUE5JykgaXMgJ1UrMDBBRCcKK1BBU1MgZGVjb2RlKCdrb3JlYW4nLCAnJUExJUFBJykgaXMgJ1UrMjAxNScKK1BBU1MgZGVjb2RlKCdrb3JlYW4nLCAnJUExJUFEJykgaXMgJ1UrMjIzQycKK1BBU1MgZGVjb2RlKCdrb3JlYW4nLCAnJUEyJUE2JykgaXMgJ1UrRkY1RScKK1BBU1MgZGVjb2RlKCdrb3JlYW4nLCAnJUEyJUMxJykgaXMgJ1UrMjI5OScKK1BBU1MgZGVjb2RlKCdrb3JlYW4nLCAnJTFBJykgaXMgJ1UrMDAxQScKK1BBU1MgZGVjb2RlKCdrb3JlYW4nLCAnJTFDJykgaXMgJ1UrMDAxQycKK1BBU1MgZGVjb2RlKCdrb3JlYW4nLCAnJThGJUExJykgaXMgJ1UrQjhFQScKK1BBU1MgZGVjb2RlKCdrb3JlYW4nLCAnJUI0JUQzJykgaXMgJ1UrQjJEMicKK1BBU1MgZGVjb2RlKCdrb3JlYW4nLCAnJUEyJTQxJykgaXMgJ1UrQzkxMCcKK1BBU1MgZGVjb2RlKCdFVUMtS1InLCAnJUEyJUU2JykgaXMgJ1UrMjBBQycKK1BBU1MgZGVjb2RlKCdFVUMtS1InLCAnJUExJUE0JykgaXMgJ1UrMDBCNycKK1BBU1MgZGVjb2RlKCdFVUMtS1InLCAnJUExJUE5JykgaXMgJ1UrMDBBRCcKK1BBU1MgZGVjb2RlKCdFVUMtS1InLCAnJUExJUFBJykgaXMgJ1UrMjAxNScKK1BBU1MgZGVjb2RlKCdFVUMtS1InLCAnJUExJUFEJykgaXMgJ1UrMjIzQycKK1BBU1MgZGVjb2RlKCdFVUMtS1InLCAnJUEyJUE2JykgaXMgJ1UrRkY1RScKK1BBU1MgZGVjb2RlKCdFVUMtS1InLCAnJUEyJUMxJykgaXMgJ1UrMjI5OScKK1BBU1MgZGVjb2RlKCdFVUMtS1InLCAnJTFBJykgaXMgJ1UrMDAxQScKK1BBU1MgZGVjb2RlKCdFVUMtS1InLCAnJTFDJykgaXMgJ1UrMDAxQycKK1BBU1MgZGVjb2RlKCdFVUMtS1InLCAnJThGJUExJykgaXMgJ1UrQjhFQScKK1BBU1MgZGVjb2RlKCdFVUMtS1InLCAnJUI0JUQzJykgaXMgJ1UrQjJEMicKK1BBU1MgZGVjb2RlKCdFVUMtS1InLCAnJUEyJTQxJykgaXMgJ1UrQzkxMCcKK1BBU1MgZGVjb2RlKCd3aW5kb3dzLTk0OScsICclQTIlRTYnKSBpcyAnVSsyMEFDJworUEFTUyBkZWNvZGUoJ3dpbmRvd3MtOTQ5JywgJyVBMSVBNCcpIGlzICdVKzAwQjcnCitQQVNTIGRlY29kZSgnd2luZG93cy05NDknLCAnJUExJUE5JykgaXMgJ1UrMDBBRCcKK1BBU1MgZGVjb2RlKCd3aW5kb3dzLTk0OScsICclQTElQUEnKSBpcyAnVSsyMDE1JworUEFTUyBkZWNvZGUoJ3dpbmRvd3MtOTQ5JywgJyVBMSVBRCcpIGlzICdVKzIyM0MnCitQQVNTIGRlY29kZSgnd2luZG93cy05NDknLCAnJUEyJUE2JykgaXMgJ1UrRkY1RScKK1BBU1MgZGVjb2RlKCd3aW5kb3dzLTk0OScsICclQTIlQzEnKSBpcyAnVSsyMjk5JworUEFTUyBkZWNvZGUoJ3dpbmRvd3MtOTQ5JywgJyUxQScpIGlzICdVKzAwMUEnCitQQVNTIGRlY29kZSgnd2luZG93cy05NDknLCAnJTFDJykgaXMgJ1UrMDAxQycKK1BBU1MgZGVjb2RlKCd3aW5kb3dzLTk0OScsICclOEYlQTEnKSBpcyAnVStCOEVBJworUEFTUyBkZWNvZGUoJ3dpbmRvd3MtOTQ5JywgJyVCNCVEMycpIGlzICdVK0IyRDInCitQQVNTIGRlY29kZSgnd2luZG93cy05NDknLCAnJUEyJTQxJykgaXMgJ1UrQzkxMCcKK1BBU1MgZGVjb2RlKCd4LXdpbmRvd3MtOTQ5JywgJyVBMiVFNicpIGlzICdVKzIwQUMnCitQQVNTIGRlY29kZSgneC13aW5kb3dzLTk0OScsICclQTElQTQnKSBpcyAnVSswMEI3JworUEFTUyBkZWNvZGUoJ3gtd2luZG93cy05NDknLCAnJUExJUE5JykgaXMgJ1UrMDBBRCcKK1BBU1MgZGVjb2RlKCd4LXdpbmRvd3MtOTQ5JywgJyVBMSVBQScpIGlzICdVKzIwMTUnCitQQVNTIGRlY29kZSgneC13aW5kb3dzLTk0OScsICclQTElQUQnKSBpcyAnVSsyMjNDJworUEFTUyBkZWNvZGUoJ3gtd2luZG93cy05NDknLCAnJUEyJUE2JykgaXMgJ1UrRkY1RScKK1BBU1MgZGVjb2RlKCd4LXdpbmRvd3MtOTQ5JywgJyVBMiVDMScpIGlzICdVKzIyOTknCitQQVNTIGRlY29kZSgneC13aW5kb3dzLTk0OScsICclMUEnKSBpcyAnVSswMDFBJworUEFTUyBkZWNvZGUoJ3gtd2luZG93cy05NDknLCAnJTFDJykgaXMgJ1UrMDAxQycKK1BBU1MgZGVjb2RlKCd4LXdpbmRvd3MtOTQ5JywgJyU4RiVBMScpIGlzICdVK0I4RUEnCitQQVNTIGRlY29kZSgneC13aW5kb3dzLTk0OScsICclQjQlRDMnKSBpcyAnVStCMkQyJworUEFTUyBkZWNvZGUoJ3gtd2luZG93cy05NDknLCAnJUEyJTQxJykgaXMgJ1UrQzkxMCcKK1BBU1MgZGVjb2RlKCd4LXVoYycsICclQTIlRTYnKSBpcyAnVSsyMEFDJworUEFTUyBkZWNvZGUoJ3gtdWhjJywgJyVBMSVBNCcpIGlzICdVKzAwQjcnCitQQVNTIGRlY29kZSgneC11aGMnLCAnJUExJUE5JykgaXMgJ1UrMDBBRCcKK1BBU1MgZGVjb2RlKCd4LXVoYycsICclQTElQUEnKSBpcyAnVSsyMDE1JworUEFTUyBkZWNvZGUoJ3gtdWhjJywgJyVBMSVBRCcpIGlzICdVKzIyM0MnCitQQVNTIGRlY29kZSgneC11aGMnLCAnJUEyJUE2JykgaXMgJ1UrRkY1RScKK1BBU1MgZGVjb2RlKCd4LXVoYycsICclQTIlQzEnKSBpcyAnVSsyMjk5JworUEFTUyBkZWNvZGUoJ3gtdWhjJywgJyUxQScpIGlzICdVKzAwMUEnCitQQVNTIGRlY29kZSgneC11aGMnLCAnJTFDJykgaXMgJ1UrMDAxQycKK1BBU1MgZGVjb2RlKCd4LXVoYycsICclOEYlQTEnKSBpcyAnVStCOEVBJworUEFTUyBkZWNvZGUoJ3gtdWhjJywgJyVCNCVEMycpIGlzICdVK0IyRDInCitQQVNTIGRlY29kZSgneC11aGMnLCAnJUEyJTQxJykgaXMgJ1UrQzkxMCcKK1BBU1MgZGVjb2RlKCdpc28taXItMTQ5JywgJyVBMiVFNicpIGlzICdVKzIwQUMnCitQQVNTIGRlY29kZSgnaXNvLWlyLTE0OScsICclQTElQTQnKSBpcyAnVSswMEI3JworUEFTUyBkZWNvZGUoJ2lzby1pci0xNDknLCAnJUExJUE5JykgaXMgJ1UrMDBBRCcKK1BBU1MgZGVjb2RlKCdpc28taXItMTQ5JywgJyVBMSVBQScpIGlzICdVKzIwMTUnCitQQVNTIGRlY29kZSgnaXNvLWlyLTE0OScsICclQTElQUQnKSBpcyAnVSsyMjNDJworUEFTUyBkZWNvZGUoJ2lzby1pci0xNDknLCAnJUEyJUE2JykgaXMgJ1UrRkY1RScKK1BBU1MgZGVjb2RlKCdpc28taXItMTQ5JywgJyVBMiVDMScpIGlzICdVKzIyOTknCitQQVNTIGRlY29kZSgnaXNvLWlyLTE0OScsICclMUEnKSBpcyAnVSswMDFBJworUEFTUyBkZWNvZGUoJ2lzby1pci0xNDknLCAnJTFDJykgaXMgJ1UrMDAxQycKK1BBU1MgZGVjb2RlKCdpc28taXItMTQ5JywgJyU4RiVBMScpIGlzICdVK0I4RUEnCitQQVNTIGRlY29kZSgnaXNvLWlyLTE0OScsICclQjQlRDMnKSBpcyAnVStCMkQyJworUEFTUyBkZWNvZGUoJ2lzby1pci0xNDknLCAnJUEyJTQxJykgaXMgJ1UrQzkxMCcKK1BBU1MgZGVjb2RlKCdLU19DXzU2MDEtMTk4NycsICclQTIlRTYnKSBpcyAnVSsyMEFDJworUEFTUyBkZWNvZGUoJ0tTX0NfNTYwMS0xOTg3JywgJyVBMSVBNCcpIGlzICdVKzAwQjcnCitQQVNTIGRlY29kZSgnS1NfQ181NjAxLTE5ODcnLCAnJUExJUE5JykgaXMgJ1UrMDBBRCcKK1BBU1MgZGVjb2RlKCdLU19DXzU2MDEtMTk4NycsICclQTElQUEnKSBpcyAnVSsyMDE1JworUEFTUyBkZWNvZGUoJ0tTX0NfNTYwMS0xOTg3JywgJyVBMSVBRCcpIGlzICdVKzIyM0MnCitQQVNTIGRlY29kZSgnS1NfQ181NjAxLTE5ODcnLCAnJUEyJUE2JykgaXMgJ1UrRkY1RScKK1BBU1MgZGVjb2RlKCdLU19DXzU2MDEtMTk4NycsICclQTIlQzEnKSBpcyAnVSsyMjk5JworUEFTUyBkZWNvZGUoJ0tTX0NfNTYwMS0xOTg3JywgJyUxQScpIGlzICdVKzAwMUEnCitQQVNTIGRlY29kZSgnS1NfQ181NjAxLTE5ODcnLCAnJTFDJykgaXMgJ1UrMDAxQycKK1BBU1MgZGVjb2RlKCdLU19DXzU2MDEtMTk4NycsICclOEYlQTEnKSBpcyAnVStCOEVBJworUEFTUyBkZWNvZGUoJ0tTX0NfNTYwMS0xOTg3JywgJyVCNCVEMycpIGlzICdVK0IyRDInCitQQVNTIGRlY29kZSgnS1NfQ181NjAxLTE5ODcnLCAnJUEyJTQxJykgaXMgJ1UrQzkxMCcKK1BBU1MgZGVjb2RlKCdLU19DXzU2MDEtMTk4OScsICclQTIlRTYnKSBpcyAnVSsyMEFDJworUEFTUyBkZWNvZGUoJ0tTX0NfNTYwMS0xOTg5JywgJyVBMSVBNCcpIGlzICdVKzAwQjcnCitQQVNTIGRlY29kZSgnS1NfQ181NjAxLTE5ODknLCAnJUExJUE5JykgaXMgJ1UrMDBBRCcKK1BBU1MgZGVjb2RlKCdLU19DXzU2MDEtMTk4OScsICclQTElQUEnKSBpcyAnVSsyMDE1JworUEFTUyBkZWNvZGUoJ0tTX0NfNTYwMS0xOTg5JywgJyVBMSVBRCcpIGlzICdVKzIyM0MnCitQQVNTIGRlY29kZSgnS1NfQ181NjAxLTE5ODknLCAnJUEyJUE2JykgaXMgJ1UrRkY1RScKK1BBU1MgZGVjb2RlKCdLU19DXzU2MDEtMTk4OScsICclQTIlQzEnKSBpcyAnVSsyMjk5JworUEFTUyBkZWNvZGUoJ0tTX0NfNTYwMS0xOTg5JywgJyUxQScpIGlzICdVKzAwMUEnCitQQVNTIGRlY29kZSgnS1NfQ181NjAxLTE5ODknLCAnJTFDJykgaXMgJ1UrMDAxQycKK1BBU1MgZGVjb2RlKCdLU19DXzU2MDEtMTk4OScsICclOEYlQTEnKSBpcyAnVStCOEVBJworUEFTUyBkZWNvZGUoJ0tTX0NfNTYwMS0xOTg5JywgJyVCNCVEMycpIGlzICdVK0IyRDInCitQQVNTIGRlY29kZSgnS1NfQ181NjAxLTE5ODknLCAnJUEyJTQxJykgaXMgJ1UrQzkxMCcKK1BBU1MgZGVjb2RlKCdpc28tODg1OS05JywgJyU4MCcpIGlzICdVKzIwQUMnCitQQVNTIGRlY29kZSgnaXNvLTg4NTktOScsICclOUYnKSBpcyAnVSswMTc4JworUEFTUyBkZWNvZGUoJ2lzby04ODU5LTknLCAnJUZEJykgaXMgJ1UrMDEzMScKK1BBU1MgZGVjb2RlKCdsYXRpbjUnLCAnJTgwJykgaXMgJ1UrMjBBQycKK1BBU1MgZGVjb2RlKCdsYXRpbjUnLCAnJTlGJykgaXMgJ1UrMDE3OCcKK1BBU1MgZGVjb2RlKCdsYXRpbjUnLCAnJUZEJykgaXMgJ1UrMDEzMScKK1BBU1MgZGVjb2RlKCd3aW5kb3dzLTEyNTQnLCAnJTgwJykgaXMgJ1UrMjBBQycKK1BBU1MgZGVjb2RlKCd3aW5kb3dzLTEyNTQnLCAnJTlGJykgaXMgJ1UrMDE3OCcKK1BBU1MgZGVjb2RlKCd3aW5kb3dzLTEyNTQnLCAnJUZEJykgaXMgJ1UrMDEzMScKK1BBU1MgZGVjb2RlKCdJU08tODg1OS0xMycsICclQTEnKSBpcyAnVSsyMDFEJworUEFTUyBkZWNvZGUoJ0lTTy04ODU5LTEzJywgJyVBNScpIGlzICdVKzIwMUUnCitQQVNTIGRlY29kZSgnSVNPLTg4NTktMTMnLCAnJUI0JykgaXMgJ1UrMjAxQycKK1BBU1MgZGVjb2RlKCdJU08tODg1OS0xMycsICclRkYnKSBpcyAnVSsyMDE5JworUEFTUyBkZWNvZGUoJ3dpbmRvd3MtMTI1NycsICclODAnKSBpcyAnVSsyMEFDJworUEFTUyBkZWNvZGUoJ3dpbmRvd3MtMTI1NycsICclQjQnKSBpcyAnVSswMEI0JworUEFTUyBkZWNvZGUoJ3dpbmRvd3MtMTI1NycsICclRkYnKSBpcyAnVSswMkQ5JworUEFTUyBkZWNvZGUoJ2lzby04ODU5LTcnLCAnJUExJykgaXMgJ1UrMjAxOCcKK1BBU1MgZGVjb2RlKCdpc28tODg1OS03JywgJyVCNScpIGlzICdVKzAzODUnCitQQVNTIGRlY29kZSgnaXNvLTg4NTktNycsICclQjYnKSBpcyAnVSswMzg2JworUEFTUyBkZWNvZGUoJ3dpbmRvd3MtMTI1MycsICclODAnKSBpcyAnVSsyMEFDJworUEFTUyBkZWNvZGUoJ3dpbmRvd3MtMTI1MycsICclQTEnKSBpcyAnVSswMzg1JworUEFTUyBkZWNvZGUoJ3dpbmRvd3MtMTI1MycsICclQjUnKSBpcyAnVSswMEI1JworUEFTUyBkZWNvZGUoJ3dpbmRvd3MtMTI1MycsICclQjYnKSBpcyAnVSswMEI2JworUEFTUyBkZWNvZGUoJ0tPSTgtUicsICclQTQnKSBpcyAnVSsyNTUzJworUEFTUyBkZWNvZGUoJ0tPSTgtUicsICclQUQnKSBpcyAnVSsyNTVDJworUEFTUyBkZWNvZGUoJ0tPSTgtVScsICclQTQnKSBpcyAnVSswNDU0JworUEFTUyBkZWNvZGUoJ0tPSTgtVScsICclQUQnKSBpcyAnVSswNDkxJworUEFTUyBkZWNvZGUoJ1RJUy02MjAnLCAnJTgwJykgaXMgJ1UrMjBBQycKK1BBU1MgZGVjb2RlKCdUSVMtNjIwJywgJyU5NicpIGlzICdVKzIwMTMnCitQQVNTIGRlY29kZSgnVElTLTYyMCcsICclQTAnKSBpcyAnVSswMEEwJworUEFTUyBkZWNvZGUoJ1RJUy02MjAnLCAnJUExJykgaXMgJ1UrMEUwMScKK1BBU1MgZGVjb2RlKCdUSVMtNjIwJywgJyVEQicpIGlzICdVK0Y4QzEnCitQQVNTIGRlY29kZSgnSVNPLTg4NTktMTEnLCAnJTgwJykgaXMgJ1UrMjBBQycKK1BBU1MgZGVjb2RlKCdJU08tODg1OS0xMScsICclOTYnKSBpcyAnVSsyMDEzJworUEFTUyBkZWNvZGUoJ0lTTy04ODU5LTExJywgJyVBMCcpIGlzICdVKzAwQTAnCitQQVNTIGRlY29kZSgnSVNPLTg4NTktMTEnLCAnJUExJykgaXMgJ1UrMEUwMScKK1BBU1MgZGVjb2RlKCdJU08tODg1OS0xMScsICclREInKSBpcyAnVStGOEMxJworUEFTUyBkZWNvZGUoJ3dpbmRvd3MtODc0JywgJyU4MCcpIGlzICdVKzIwQUMnCitQQVNTIGRlY29kZSgnd2luZG93cy04NzQnLCAnJTk2JykgaXMgJ1UrMjAxMycKK1BBU1MgZGVjb2RlKCd3aW5kb3dzLTg3NCcsICclQTAnKSBpcyAnVSswMEEwJworUEFTUyBkZWNvZGUoJ3dpbmRvd3MtODc0JywgJyVBMScpIGlzICdVKzBFMDEnCitQQVNTIGRlY29kZSgnd2luZG93cy04NzQnLCAnJURCJykgaXMgJ1UrRjhDMScKK1BBU1MgZGVjb2RlKCdkb3MtODc0JywgJyU4MCcpIGlzICdVKzIwQUMnCitQQVNTIGRlY29kZSgnZG9zLTg3NCcsICclOTYnKSBpcyAnVSsyMDEzJworUEFTUyBkZWNvZGUoJ2Rvcy04NzQnLCAnJUEwJykgaXMgJ1UrMDBBMCcKK1BBU1MgZGVjb2RlKCdkb3MtODc0JywgJyVBMScpIGlzICdVKzBFMDEnCitQQVNTIGRlY29kZSgnZG9zLTg3NCcsICclREInKSBpcyAnVStGOEMxJworUEFTUyBkZWNvZGUoJ1VURi03JywgJytBRDQnKSBpcyAnVSswMDJCJworUEFTUyBkZWNvZGUoJ3V0Zi03JywgJytBRDQnKSBpcyAnVSswMDJCJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY2hhci1kZWNvZGluZy1tYWMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jaGFyLWRlY29kaW5nLW1hYy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWYyMzZlZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY2hhci1kZWNvZGluZy1tYWMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKK1RoaXMgdGVzdHMgZGVjb2RpbmcgY2hhcmFjdGVycyBpbiB2YXJpb3VzIGNoYXJhY3RlciBzZXRzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkZWNvZGUoJ21hYycsICclQzMnKSBpcyAnVSsyMjFBJworUEFTUyBkZWNvZGUoJ21hY2ludG9zaCcsICclQzMnKSBpcyAnVSsyMjFBJworUEFTUyBkZWNvZGUoJ01hY1JvbWFuJywgJyVDMycpIGlzICdVKzIyMUEnCitQQVNTIGRlY29kZSgneC1tYWMtZ3JlZWsnLCAnJUIwJykgaXMgJ1UrMDM5MScKK1BBU1MgZGVjb2RlKCd4LW1hYy11a3JhaW5pYW4nLCAnJTgwJykgaXMgJ1UrMDQxMCcKK1BBU1MgZGVjb2RlKCd4LW1hYy1jeXJpbGxpYycsICclODAnKSBpcyAnVSswNDEwJworUEFTUyBkZWNvZGUoJ21hYy1jeXJpbGxpYycsICclODAnKSBpcyAnVSswNDEwJworUEFTUyBkZWNvZGUoJ3gtbWFjLWNlbnRyYWxldXJyb21hbicsICclODEnKSBpcyAnVSswMTAwJworUEFTUyBkZWNvZGUoJ3gtbWFjLWNlJywgJyU4MScpIGlzICdVKzAxMDAnCitQQVNTIGRlY29kZSgneC1tYWMtdHVya2lzaCcsICclODEnKSBpcyAnVSswMEM1JworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY2hhci1kZWNvZGluZy1tYWMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY2hhci1kZWNvZGluZy1tYWMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTc0ZTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jaGFyLWRlY29kaW5nLW1hYy5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY2hhci1kZWNvZGluZy11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyBkZWNvZGluZyBjaGFyYWN0ZXJzIGluIHZhcmlvdXMgY2hhcmFjdGVyIHNldHMuIik7CisKKy8vIExlZ2FjeSBNYWMgZW5jb2RpbmdzLgordGVzdERlY29kZSgnbWFjJywgJyVDMycsICdVKzIyMUEnKTsKK3Rlc3REZWNvZGUoJ21hY2ludG9zaCcsICclQzMnLCAnVSsyMjFBJyk7Cit0ZXN0RGVjb2RlKCdNYWNSb21hbicsICclQzMnLCAnVSsyMjFBJyk7Cit0ZXN0RGVjb2RlKCd4LW1hYy1ncmVlaycsICclQjAnLCAnVSswMzkxJyk7Cit0ZXN0RGVjb2RlKCd4LW1hYy11a3JhaW5pYW4nLCAnJTgwJywgJ1UrMDQxMCcpOwordGVzdERlY29kZSgneC1tYWMtY3lyaWxsaWMnLCAnJTgwJywgJ1UrMDQxMCcpOwordGVzdERlY29kZSgnbWFjLWN5cmlsbGljJywgJyU4MCcsICdVKzA0MTAnKTsKK3Rlc3REZWNvZGUoJ3gtbWFjLWNlbnRyYWxldXJyb21hbicsICclODEnLCAnVSswMTAwJyk7Cit0ZXN0RGVjb2RlKCd4LW1hYy1jZScsICclODEnLCAnVSswMTAwJyk7Cit0ZXN0RGVjb2RlKCd4LW1hYy10dXJraXNoJywgJyU4MScsICdVKzAwQzUnKTsKKworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2NoYXItZGVjb2RpbmcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY2hhci1kZWNvZGluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5MTMzODkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2NoYXItZGVjb2RpbmcuaHRtbApAQCAtMCwwICsxLDEwMSBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jaGFyLWRlY29kaW5nLXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIGRlY29kaW5nIGNoYXJhY3RlcnMgaW4gdmFyaW91cyBjaGFyYWN0ZXIgc2V0cy4iKTsKKwordGVzdERlY29kZSgnVVRGLTgnLCAnJUUyJTg4JTlBJywgJ1UrMjIxQScpOworCisvLyA8aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwMTQ+IEVVQy1DTiBjb2RlIEEzQTAgaXMgbWFwcGVkIHRvIFUrRTVFNSBpbnN0ZWFkIG9mIFUrMzAwMAordGVzdERlY29kZSgnZ2IyMzEyJywgJyVBMyVBMCcsICdVKzMwMDAnKTsKK3Rlc3REZWNvZGUoJ2diXzIzMTItODAnLCAnJUEzJUEwJywgJ1UrMzAwMCcpOwordGVzdERlY29kZSgnY2hpbmVzZScsICclQTMlQTAnLCAnVSszMDAwJyk7Cit0ZXN0RGVjb2RlKCdnYmsnLCAnJUEzJUEwJywgJ1UrMzAwMCcpOwordGVzdERlY29kZSgnZ2IxODAzMCcsICclQTMlQTAnLCAnVSszMDAwJyk7Cit0ZXN0RGVjb2RlKCdFVUMtQ04nLCAnJUEzJUEwJywgJ1UrMzAwMCcpOworCisvLyBUZXN0IFNoaWZ0X0pJUyBhbGlhc2VzLgordGVzdERlY29kZSgnU2hpZnRfSklTJywgJyU4MiVkMCcsICdVKzMwNzInKTsKK3Rlc3REZWNvZGUoJ3NoaWZ0LWppcycsICclODIlZDAnLCAnVSszMDcyJyk7CisKKy8vIFRlc3QgdGhhdCBhbGwgS29yZWFuIGVuY29kaW5ncyBvZiBFVUMtS1IgZmFtaWx5IGFyZSB0cmVhdGVkIGFzIHdpbmRvd3MtOTQ5LgordmFyIGtvcmVhbiA9IHsKKyAgICBlbmNvZGluZ3M6IFsna29yZWFuJywgJ0VVQy1LUicsICd3aW5kb3dzLTk0OScsICd4LXdpbmRvd3MtOTQ5JywgJ3gtdWhjJywKKyAgICAgICAgICAgICAgICAnaXNvLWlyLTE0OScsICdLU19DXzU2MDEtMTk4NycsICdLU19DXzU2MDEtMTk4OScgXSwKKyAgICBlbmNvZGVkOiBbJyVBMiVFNicsICclQTElQTQnLCAnJUExJUE5JywgJyVBMSVBQScsICclQTElQUQnLCAnJUEyJUE2JywKKyAgICAgICAgICAgICAgJyVBMiVDMScsICclMUEnLCAgICAnJTFDJywgICAgJyU4RiVBMScsICclQjQlRDMnLCAnJUEyJTQxJ10sCisgICAgdW5pY29kZTogWydVKzIwQUMnLCAnVSswMEI3JywgJ1UrMDBBRCcsICdVKzIwMTUnLCAnVSsyMjNDJywgJ1UrRkY1RScsIAorICAgICAgICAgICAgICAnVSsyMjk5JywgJ1UrMDAxQScsICdVKzAwMUMnLCAnVStCOEVBJywgJ1UrQjJEMicsICdVK0M5MTAnXSAKK307CisKK2JhdGNoVGVzdERlY29kZShrb3JlYW4pOworICAgCisvLyBUZXN0IHRoYXQgSVNPLTg4NTktOSAoVHVya2lzaCkgaXMgdXBncmFkZWQgdG8gd2luZG93cy0xMjU0IHdpdGggRXVybyBzeW1ib2wuCit2YXIgdHVya2lzaCA9IHsKKyAgZW5jb2RpbmdzOiBbJ2lzby04ODU5LTknLCAnbGF0aW41JywgJ3dpbmRvd3MtMTI1NCddLAorICBlbmNvZGVkOiBbJyU4MCcsICclOUYnLCAnJUZEJ10sCisgIHVuaWNvZGU6IFsnVSsyMEFDJywgJ1UrMDE3OCcsICdVKzAxMzEnXQorfTsKKworYmF0Y2hUZXN0RGVjb2RlKHR1cmtpc2gpOworCisvLyBGSVhNRTogSGF2ZSB0byBhZGQgdGVzdHMgZm9yIEV1cm8gYW5kIGEgZmV3IG5ldyBjaGFyYWN0ZXJzIGFkZGVkIHRvIElTTy04ODU5LXggCisvLyB0aGF0IGFyZSBOT1Qgc3Vic2V0cyBvZiB0aGUgY29ycmVzcG9uZGluZyBXaW5kb3dzIGNvZGVwYWdlcy4gRm9yIGluc3RhbmNlLAorLy8gSVNPLTg4NTktNzoyMDAzIGhhcyBFdXJvIGF0IDB4QTQgYW5kIGEgY291cGxlIG9mIG90aGVyIG5ldyBjaGFyYWN0ZXJzLgorLy8gSUNVIDMuOC54IG9yIGxhdGVyIGhhcyB0aGVtLiBQZXJoYXBzLCB3ZSBuZWVkIHRvIGhhdmUgYSBzZXBhcmF0ZSB0ZXN0IHRoYXQKKy8vIGNhbiBiZSBlbmFibGVkIG9ubHkgd2l0aCBtb2Rlcm4gSUNVLgorCisvLyBCYWx0aWMgZW5jb2RpbmdzIGZpbmUgcG9pbnRzLgordGVzdERlY29kZSgnSVNPLTg4NTktMTMnLCAnJUExJywgJ1UrMjAxRCcpOwordGVzdERlY29kZSgnSVNPLTg4NTktMTMnLCAnJUE1JywgJ1UrMjAxRScpOwordGVzdERlY29kZSgnSVNPLTg4NTktMTMnLCAnJUI0JywgJ1UrMjAxQycpOwordGVzdERlY29kZSgnSVNPLTg4NTktMTMnLCAnJUZGJywgJ1UrMjAxOScpOwordGVzdERlY29kZSgnd2luZG93cy0xMjU3JywgJyU4MCcsICdVKzIwQUMnKTsKK3Rlc3REZWNvZGUoJ3dpbmRvd3MtMTI1NycsICclQjQnLCAnVSswMEI0Jyk7Cit0ZXN0RGVjb2RlKCd3aW5kb3dzLTEyNTcnLCAnJUZGJywgJ1UrMDJEOScpOworCisvLyBHcmVlayBlbmNvZGluZ3MgZmluZSBwb2ludHMuCit0ZXN0RGVjb2RlKCdpc28tODg1OS03JywgJyVBMScsICdVKzIwMTgnKTsKK3Rlc3REZWNvZGUoJ2lzby04ODU5LTcnLCAnJUI1JywgJ1UrMDM4NScpOwordGVzdERlY29kZSgnaXNvLTg4NTktNycsICclQjYnLCAnVSswMzg2Jyk7Cit0ZXN0RGVjb2RlKCd3aW5kb3dzLTEyNTMnLCAnJTgwJywgJ1UrMjBBQycpOwordGVzdERlY29kZSgnd2luZG93cy0xMjUzJywgJyVBMScsICdVKzAzODUnKTsKK3Rlc3REZWNvZGUoJ3dpbmRvd3MtMTI1MycsICclQjUnLCAnVSswMEI1Jyk7Cit0ZXN0RGVjb2RlKCd3aW5kb3dzLTEyNTMnLCAnJUI2JywgJ1UrMDBCNicpOworCisvLyBLT0ktOCB2YXJpYW50cwordGVzdERlY29kZSgnS09JOC1SJywgJyVBNCcsICdVKzI1NTMnKTsKK3Rlc3REZWNvZGUoJ0tPSTgtUicsICclQUQnLCAnVSsyNTVDJyk7Cit0ZXN0RGVjb2RlKCdLT0k4LVUnLCAnJUE0JywgJ1UrMDQ1NCcpOwordGVzdERlY29kZSgnS09JOC1VJywgJyVBRCcsICdVKzA0OTEnKTsKKworLy8gVGVzdCB0aGF0IFRJUy02MjAgYW5kIElTTy04ODU5LTExIChUaGFpKSBhcmUgdXBncmFkZWQgdG8gd2luZG93cy04NzQuCisvLyAiMHhEQiA9PiBVK0Y4QzEiIGlzIGEgd2VpcmQgUFVBIG1hcHBpbmcgdGhhdCBkb2Vzbid0IHNlZW0gdG8gYmUgb2YKKy8vIGFueSB1c2UsIGV2ZW4gb24gV2luZG93cy4KK3ZhciB0aGFpID0geworICBlbmNvZGluZ3M6IFsnVElTLTYyMCcsICdJU08tODg1OS0xMScsICd3aW5kb3dzLTg3NCcsICdkb3MtODc0J10sCisgIGVuY29kZWQ6IFsnJTgwJywgJyU5NicsICclQTAnLCAnJUExJywgJyVEQiddLAorICB1bmljb2RlOiBbJ1UrMjBBQycsICdVKzIwMTMnLCAnVSswMEEwJywgJ1UrMEUwMScsICdVK0Y4QzEnXQorfTsKKworYmF0Y2hUZXN0RGVjb2RlKHRoYWkpOworCisvLyBVVEYtNyBpcyBleHByZXNzbHkgZm9yYmlkZGVuLCBzbyBkZWNvZGluZyBpdCBzaG91bGQgbm90IHdvcmsgY29ycmVjdGx5LgorLy8gVGhpcyBhdHRlbXB0cyB0byBkZWNvZGUgJzwnIGFzIFVURi03ICgrQUQ0KSBidXQgaXQgZW5kcyB1cCBiZWluZyBkZWNvZGVkCisvLyBhcyBhICcrJy4KK3Rlc3REZWNvZGUoJ1VURi03JywgJytBRDQnLCAnVSswMDJCJyk7Cit0ZXN0RGVjb2RlKCd1dGYtNycsICcrQUQ0JywgJ1UrMDAyQicpOworCitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY2hhci1lbmNvZGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2NoYXItZW5jb2RpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4OGY3M2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2NoYXItZW5jb2RpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAKK1RoaXMgdGVzdHMgZW5jb2RpbmcgY2hhcmFjdGVycyBpbiB2YXJpb3VzIGNoYXJhY3RlciBzZXRzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBlbmNvZGUoJ1VURi04JywgJ1UrMDBBMCcpIGlzICclQzIlQTAnCitQQVNTIGVuY29kZSgnR0JLJywgJ1UrMDBBNScpIGlzICclQTMlQTQnCitQQVNTIGVuY29kZSgnZ2IyMzEyJywgJ1UrMDBBNScpIGlzICclQTMlQTQnCitQQVNTIGVuY29kZSgnR0JfMjMxMi04MCcsICdVKzAwQTUnKSBpcyAnJUEzJUE0JworUEFTUyBlbmNvZGUoJ0VVQy1DTicsICdVKzAwQTUnKSBpcyAnJUEzJUE0JworUEFTUyBlbmNvZGUoJ0dCSycsICdVKzIwQUMnKSBpcyAnJTgwJworUEFTUyBlbmNvZGUoJ2diMjMxMicsICdVKzIwQUMnKSBpcyAnJTgwJworUEFTUyBlbmNvZGUoJ0dCXzIzMTItODAnLCAnVSsyMEFDJykgaXMgJyU4MCcKK1BBU1MgZW5jb2RlKCdFVUMtQ04nLCAnVSsyMEFDJykgaXMgJyU4MCcKK1BBU1MgZW5jb2RlKCdHQksnLCAnVSswMUY5JykgaXMgJyVBOCVCRicKK1BBU1MgZW5jb2RlKCdHQksnLCAnVSsxRTNGJykgaXMgJyVBOCVCQycKK1BBU1MgZW5jb2RlKCdHQksnLCAnVSsyMkVGJykgaXMgJyVBMSVBRCcKK1BBU1MgZW5jb2RlKCdHQksnLCAnVSszMDFDJykgaXMgJyVBMSVBQicKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2NoYXItZW5jb2RpbmctbWFjLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY2hhci1lbmNvZGluZy1tYWMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmZDMxYmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2NoYXItZW5jb2RpbmctbWFjLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3IEBACitUaGlzIHRlc3RzIGVuY29kaW5nIGNoYXJhY3RlcnMgaW4gdmFyaW91cyBjaGFyYWN0ZXIgc2V0cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZW5jb2RlKCdtYWMnLCAnVSsyMjFBJykgaXMgJyVDMycKK1BBU1MgZW5jb2RlKCdtYWNpbnRvc2gnLCAnVSsyMjFBJykgaXMgJyVDMycKK1BBU1MgZW5jb2RlKCdNYWNSb21hbicsICdVKzIyMUEnKSBpcyAnJUMzJworUEFTUyBlbmNvZGUoJ3gtbWFjLWdyZWVrJywgJ1UrMDM5MScpIGlzICclQjAnCitQQVNTIGVuY29kZSgneC1tYWMtY3lyaWxsaWMnLCAnVSswNDEwJykgaXMgJyU4MCcKK1BBU1MgZW5jb2RlKCdtYWMtY3lyaWxsaWMnLCAnVSswNDEwJykgaXMgJyU4MCcKK1BBU1MgZW5jb2RlKCd4LW1hYy1jZW50cmFsZXVycm9tYW4nLCAnVSswMTAwJykgaXMgJyU4MScKK1BBU1MgZW5jb2RlKCd4LW1hYy10dXJraXNoJywgJ1UrMDBDNScpIGlzICclODEnCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jaGFyLWVuY29kaW5nLW1hYy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jaGFyLWVuY29kaW5nLW1hYy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkNmVmMjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2NoYXItZW5jb2RpbmctbWFjLmh0bWwKQEAgLTAsMCArMSw0MiBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jaGFyLWVuY29kaW5nLXV0aWxzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxmb3JtIGlkPSJmb3JtIiBtZXRob2Q9IkdFVCIgdGFyZ2V0PSJzdWJmcmFtZSI+PGlucHV0IHR5cGU9InRleHQiIGlkPSJ0ZXh0IiBuYW1lPSJ0ZXh0Ij48L2Zvcm0+Cis8aWZyYW1lIGlkPSJzdWJmcmFtZSIgbmFtZT0ic3ViZnJhbWUiPjwvaWZyYW1lPgorPHNjcmlwdD4KKworCit2YXIgY2hhcnNldHMgPSBuZXcgQXJyYXk7Cit2YXIgdW5pY29kZXMgPSBuZXcgQXJyYXk7Cit2YXIgZXhwZWN0ZWRSZXN1bHRzID0gbmV3IEFycmF5OworCit2YXIgcmVzdWx0cyA9IG5ldyBPYmplY3Q7CisKK3ZhciBpID0gMDsKKworLy8gTGVnYWN5IE1hYyBlbmNvZGluZ3MuCit0ZXN0RW5jb2RlKCdtYWMnLCAnVSsyMjFBJywgJyVDMycpOwordGVzdEVuY29kZSgnbWFjaW50b3NoJywgJ1UrMjIxQScsICclQzMnKTsKK3Rlc3RFbmNvZGUoJ01hY1JvbWFuJywgJ1UrMjIxQScsICclQzMnKTsKK3Rlc3RFbmNvZGUoJ3gtbWFjLWdyZWVrJywgJ1UrMDM5MScsICclQjAnKTsKK3Rlc3RFbmNvZGUoJ3gtbWFjLWN5cmlsbGljJywgJ1UrMDQxMCcsICclODAnKTsKK3Rlc3RFbmNvZGUoJ21hYy1jeXJpbGxpYycsICdVKzA0MTAnLCAnJTgwJyk7Cit0ZXN0RW5jb2RlKCd4LW1hYy1jZW50cmFsZXVycm9tYW4nLCAnVSswMTAwJywgJyU4MScpOwordGVzdEVuY29kZSgneC1tYWMtdHVya2lzaCcsICdVKzAwQzUnLCAnJTgxJyk7CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworcnVuVGVzdCgpOworCitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY2hhci1lbmNvZGluZy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jaGFyLWVuY29kaW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTY5Y2Q1ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY2hhci1lbmNvZGluZy5odG1sCkBAIC0wLDAgKzEsNTIgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY2hhci1lbmNvZGluZy11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8Zm9ybSBpZD0iZm9ybSIgbWV0aG9kPSJHRVQiIHRhcmdldD0ic3ViZnJhbWUiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0idGV4dCIgbmFtZT0idGV4dCI+PC9mb3JtPgorPGlmcmFtZSBpZD0ic3ViZnJhbWUiIG5hbWU9InN1YmZyYW1lIj48L2lmcmFtZT4KKzxzY3JpcHQ+CisKKwordmFyIGNoYXJzZXRzID0gbmV3IEFycmF5OwordmFyIHVuaWNvZGVzID0gbmV3IEFycmF5OwordmFyIGV4cGVjdGVkUmVzdWx0cyA9IG5ldyBBcnJheTsKKwordmFyIHJlc3VsdHMgPSBuZXcgT2JqZWN0OworCit2YXIgaSA9IDA7CisKK3Rlc3RFbmNvZGUoIlVURi04IiwgIlUrMDBBMCIsICIlQzIlQTAiKTsKKy8vWWVuIHN5bWJvbCBpbiBnYmsKK3Rlc3RFbmNvZGUoJ0dCSycsICdVKzAwQTUnLCAnJUEzJUE0Jyk7Cit0ZXN0RW5jb2RlKCdnYjIzMTInLCAnVSswMEE1JywgJyVBMyVBNCcpOwordGVzdEVuY29kZSgnR0JfMjMxMi04MCcsICdVKzAwQTUnLCAnJUEzJUE0Jyk7Cit0ZXN0RW5jb2RlKCdFVUMtQ04nLCAnVSswMEE1JywgJyVBMyVBNCcpOworLy9FdXJvIHN5bWJvbCBpbiBnYmsKK3Rlc3RFbmNvZGUoJ0dCSycsICdVKzIwQUMnLCAnJTgwJyk7Cit0ZXN0RW5jb2RlKCdnYjIzMTInLCAnVSsyMEFDJywgJyU4MCcpOwordGVzdEVuY29kZSgnR0JfMjMxMi04MCcsICdVKzIwQUMnLCAnJTgwJyk7Cit0ZXN0RW5jb2RlKCdFVUMtQ04nLCAnVSsyMEFDJywgJyU4MCcpOworLy9NaXNjIHN5bWJvbHMgZnJvbSBURUMgc3BlY2lmaWMgR0JLIHRyYW5zbGF0aW9uIAordGVzdEVuY29kZSgnR0JLJywgJ1UrMDFGOScsICclQTglQkYnKTsKK3Rlc3RFbmNvZGUoJ0dCSycsICdVKzFFM0YnLCAnJUE4JUJDJyk7Cit0ZXN0RW5jb2RlKCdHQksnLCAnVSsyMkVGJywgJyVBMSVBRCcpOwordGVzdEVuY29kZSgnR0JLJywgJ1UrMzAxQycsICclQTElQUInKTsKKworLy8gVHVybmluZyBvbiB0aGlzIHRlc3QgY2F1c2VzIGEgZG93bmxvYWQgdG8gb2NjdXIuIEZJWE1FOiBBIGJ1Zz8KKy8vIHRlc3RFbmNvZGUoJ1VURi04JywgJ1UrMjIxQScsICclRTIlODglOUEnKTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitydW5UZXN0KCk7CisKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jaGFyc2V0LWNwMTI1MS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2NoYXJzZXQtY3AxMjUxLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTgxYjkwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jaGFyc2V0LWNwMTI1MS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAor0JrQsNC6INCy0LjQtNC90L4sINC/0YDQuNGR0Lw/CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2NoYXJzZXQtY3AxMjUxLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2NoYXJzZXQtY3AxMjUxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDM4N2Q5OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY2hhcnNldC1jcDEyNTEuaHRtbApAQCAtMCwwICsxLDEzIEBACis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9Y3AxMjUxIj4KKzx0aXRsZT5jcDEyNTE8L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKwlsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cis8L3NjcmlwdD4KK8rg6iDi6OTt7iwg7/DouOw/Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2NoYXJzZXQtaW52YWxpZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2NoYXJzZXQtaW52YWxpZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ZjZDExMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY2hhcnNldC1pbnZhbGlkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1Nob3VsZCBiZSB5b3VyIGJyb3dzZXIgZGVmYXVsdCBlbmNvZGluZzogSVNPLTg4NTktMQorCitJZiBpdCdzIGxhdGluLTEgKElTTy04ODU5LTEpLCB0aGlzIHNob3VsZCBiZSBhY2NlbnRlZCBlOiDDqQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jaGFyc2V0LWludmFsaWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY2hhcnNldC1pbnZhbGlkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWU4MTI4NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY2hhcnNldC1pbnZhbGlkLmh0bWwKQEAgLTAsMCArMSwxNSBAQAorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWludmFsaWQtZW5jb2RpbmciPgorPHRpdGxlPkludmFsaWQgZW5jb2Rpbmc8L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKwlsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Citkb2N1bWVudC53cml0ZSgiPHA+U2hvdWxkIGJlIHlvdXIgYnJvd3NlciBkZWZhdWx0IGVuY29kaW5nOiAiICsgZG9jdW1lbnQuY2hhcmFjdGVyU2V0ICsgIjwvcD4iKTsKK2RvY3VtZW50LndyaXRlKCI8cD5JZiBpdCdzIGxhdGluLTEgKElTTy04ODU5LTEpLCB0aGlzIHNob3VsZCBiZSBhY2NlbnRlZCBlOiDpPC9wPiIpOworPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY2hhcnNldC1rb2k4LXUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jaGFyc2V0LWtvaTgtdS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2RkYjZiYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY2hhcnNldC1rb2k4LXUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGVzdCBmb3IgYnVnIDQxOTUgLSBSRUdSRVNTSU9OOiBLT0k4LVUgZW5jb2Rpbmcgbm8gbG9uZ2VyIHN1cHBvcnRlZC4KKworVGhlIHRlc3QgcGFzc2VzIGlmIHRoZXNlIHR3byBsZXR0ZXJzIGxvb2sgaW52ZXJ0ZWQgYWxvbmcgdGhlIHZlcnRpY2FsIGF4aXM6ICLQrdCEIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jaGFyc2V0LWtvaTgtdS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jaGFyc2V0LWtvaTgtdS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3Yzc4YjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2NoYXJzZXQta29pOC11Lmh0bWwKQEAgLTAsMCArMSwxNSBAQAorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUtPSTgtVSI+Cis8dGl0bGU+S09JOC1VPC90aXRsZT4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKzwvc2NyaXB0PgorPHA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxOTUiPiBidWcgNDE5NTwvYT4gLSAKK1JFR1JFU1NJT046IEtPSTgtVSBlbmNvZGluZyBubyBsb25nZXIgc3VwcG9ydGVkLjwvcD4KKzxwPlRoZSB0ZXN0IHBhc3NlcyBpZiB0aGVzZSB0d28gbGV0dGVycyBsb29rIGludmVydGVkIGFsb25nIHRoZSB2ZXJ0aWNhbCBheGlzOiAi/LQiPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jaGFyc2V0LXVuaWNvZGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jaGFyc2V0LXVuaWNvZGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2MDQzOWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2NoYXJzZXQtdW5pY29kZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAorQWNjZW50ZWQgZTog4oCcw6nigJ0uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2NoYXJzZXQtdW5pY29kZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jaGFyc2V0LXVuaWNvZGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNmI4MGM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jaGFyc2V0LXVuaWNvZGUuaHRtbApAQCAtMCwwICsxLDkgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAgVHJhbnNpdGlvbmFsLy9FTiI+PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11bmljb2RlIiBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiPgorPC9oZWFkPgorPGJvZHk+CitBY2NlbnRlZCBlOiDigJzDqeKAnS4KKzxzY3JpcHQ+aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOzwvc2NyaXB0PgorPC9ib2R5PgorPGh0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2NoYXJzZXQtdXRmMTYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jaGFyc2V0LXV0ZjE2LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZGE1YmEwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jaGFyc2V0LXV0ZjE2LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxIEBACitUaGlzIHNob3VsZCBsb29rIGxpa2UgYSBSb21hbiDigJhC4oCZOiDigJjQkuKAmS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY2hhcnNldC11dGYxNi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jaGFyc2V0LXV0ZjE2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjA5NmVkMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY2hhcnNldC11dGYxNi5odG1sCkBAIC0wLDAgKzEsMTEgQEAKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTE2IiBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiPgorPC9tZXRhPgorPC9oZWFkPgorPGJvZHk+CitUaGlzIHNob3VsZCBsb29rIGxpa2UgYSBSb21hbiDigJhC4oCZOiDigJjQkuKAmS4KKzxzY3JpcHQ+aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorPCEtLSBNU0lFIHRyZWF0cyB1dGYtMTYgaW4gbWV0YSBhcyB1dGYtOCAtLT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY2hhcnNldC14dXNlci1kZWZpbmVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY2hhcnNldC14dXNlci1kZWZpbmVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNWZmMjBiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jaGFyc2V0LXh1c2VyLWRlZmluZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorVGVzdCBidWd6aWxsYSBidWcgMTgyNzAgKEludGVycHJldGluZyB4LXVzZXItZGVmaW5lZCBhcyB3aW5kb3dzLTEyNTIgd2hlbiBkZWNsYXJlZCBpbiBtZXRhIHRhZykuIFR3byBsaW5lcyBiZWxvdyBzaG91bGQgYmUgaWRlbnRpY2FsLgorCivigqwg4oCaxpLigJ7igKbigKDigKHLhuKAsMWg4oC5xZIgxb0g4oCY4oCZ4oCc4oCd4oCi4oCT4oCUy5zihKLFoeKAusWTIMW+xbjCoMKhwqLCo8KkwqXCpsKnwqjCqcKqwqvCrCDCrsKvwrDCscKywrPCtMK1wrbCt8K4wrnCusK7wrzCvcK+wr/DgMOBw4LDg8OEw4XDhsOHw4jDicOKw4vDjMONw47Dj8OQw5HDksOTw5TDlcOWw5fDmMOZw5rDm8Ocw53DnsOfw6DDocOiw6PDpMOlw6bDp8Oow6nDqsOrw6zDrcOuw6/DsMOxw7LDs8O0w7XDtsO3w7jDucO6w7vDvMO9w77Dvwor4oKsIOKAmsaS4oCe4oCm4oCg4oChy4bigLDFoOKAucWSIMW9IOKAmOKAmeKAnOKAneKAouKAk+KAlMuc4oSixaHigLrFkyDFvsW4wqDCocKiwqPCpMKlwqbCp8KowqnCqsKrwqwgwq7Cr8KwwrHCssKzwrTCtcK2wrfCuMK5wrrCu8K8wr3CvsK/w4DDgcOCw4PDhMOFw4bDh8OIw4nDisOLw4zDjcOOw4/DkMORw5LDk8OUw5XDlsOXw5jDmcOaw5vDnMOdw57Dn8Ogw6HDosOjw6TDpcOmw6fDqMOpw6rDq8Osw63DrsOvw7DDscOyw7PDtMO1w7bDt8O4w7nDusO7w7zDvcO+w78KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY2hhcnNldC14dXNlci1kZWZpbmVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2NoYXJzZXQteHVzZXItZGVmaW5lZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1ZDdjNTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2NoYXJzZXQteHVzZXItZGVmaW5lZC5odG1sCkBAIC0wLDAgKzEsMTcgQEAKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD14LXVzZXItZGVmaW5lZCI+Cis8dGl0bGU+eC11c2VyLWRlZmluZWQgKGJ1ZyA8L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cis8L3NjcmlwdD4KKzxwPlRlc3QgPGEgaHJlZj0iaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyNzAiPmJ1Z3ppbGxhIGJ1ZyAxODI3MDwvYT4gKEludGVycHJldGluZyB4LXVzZXItZGVmaW5lZCBhcyB3aW5kb3dzLTEyNTIgd2hlbgorZGVjbGFyZWQgaW4gbWV0YSB0YWcpLiBUd28gbGluZXMgYmVsb3cgc2hvdWxkIGJlIGlkZW50aWNhbC48L3A+CisKK4AggoOEhYaHiImKi4wgjiAgkZKTlJWWl5iZmpucIJ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vr/AwcLDxMXGx8jJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh4uPk5ebn6Onq6+zt7u/w8fLz9PX29/j5+vv8/f7/PGJyIC8+CismI3gyMGFjOyAmI3gyMDFhOyYjeDAxOTI7JiN4MjAxZTsmI3gyMDI2OyYjeDIwMjA7JiN4MjAyMTsmI3gwMmM2OyYjeDIwMzA7JiN4MDE2MDsmI3gyMDM5OyYjeDAxNTI7ICYjeDAxN2Q7ICAmI3gyMDE4OyYjeDIwMTk7JiN4MjAxYzsmI3gyMDFkOyYjeDIwMjI7JiN4MjAxMzsmI3gyMDE0OyYjeDAyZGM7JiN4MjEyMjsmI3gwMTYxOyYjeDIwM2E7JiN4MDE1MzsgJiN4MDE3ZTsmI3gwMTc4OyYjeDAwYTA7JiN4MDBhMTsmI3gwMGEyOyYjeDAwYTM7JiN4MDBhNDsmI3gwMGE1OyYjeDAwYTY7JiN4MDBhNzsmI3gwMGE4OyYjeDAwYTk7JiN4MDBhYTsmI3gwMGFiOyYjeDAwYWM7JiN4MDBhZDsmI3gwMGFlOyYjeDAwYWY7JiN4MDBiMDsmI3gwMGIxOyYjeDAwYjI7JiN4MDBiMzsmI3gwMGI0OyYjeDAwYjU7JiN4MDBiNjsmI3gwMGI3OyYjeDAwYjg7JiN4MDBiOTsmI3gwMGJhOyYjeDAwYmI7JiN4MDBiYzsmI3gwMGJkOyYjeDAwYmU7JiN4MDBiZjsmI3gwMGMwOyYjeDAwYzE7JiN4MDBjMjsmI3gwMGMzOyYjeDAwYzQ7JiN4MDBjNTsmI3gwMGM2OyYjeDAwYzc7JiN4MDBjODsmI3gwMGM5OyYjeDAwY2E7JiN4MDBjYjsmI3gwMGNjOyYjeDAwY2Q7JiN4MDBjZTsmI3gwMGNmOyYjeDAwZDA7JiN4MDBkMTsmI3gwMGQyOyYjeDAwZDM7JiN4MDBkNDsmI3gwMGQ1OyYjeDAwZDY7JiN4MDBkNzsmI3gwMGQ4OyYjeDAwZDk7JiN4MDBkYTsmI3gwMGRiOyYjeDAwZGM7JiN4MDBkZDsmI3gwMGRlOyYjeDAwZGY7JiN4MDBlMDsmI3gwMGUxOyYjeDAwZTI7JiN4MDBlMzsmI3gwMGU0OyYjeDAwZTU7JiN4MDBlNjsmI3gwMGU3OyYjeDAwZTg7JiN4MDBlOTsmI3gwMGVhOyYjeDAwZWI7JiN4MDBlYzsmI3gwMGVkOyYjeDAwZWU7JiN4MDBlZjsmI3gwMGYwOyYjeDAwZjE7JiN4MDBmMjsmI3gwMGYzOyYjeDAwZjQ7JiN4MDBmNTsmI3gwMGY2OyYjeDAwZjc7JiN4MDBmODsmI3gwMGY5OyYjeDAwZmE7JiN4MDBmYjsmI3gwMGZjOyYjeDAwZmQ7JiN4MDBmZTsmI3gwMGZmOworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jc3MtY2FjaGVkLWJvbS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2Nzcy1jYWNoZWQtYm9tLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjllYTU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jc3MtY2FjaGVkLWJvbS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitUZXN0IHRoYXQgc3R5bGVzaGVldCB3aXRoIEJPTSBpcyBjb3JyZWN0bHkgcGFyc2VkIHdoZW4gbG9hZGVkIGZyb20gY2FjaGUuIFlvdSBzaG91bGQgc2VlIHdvcmQgU1VDQ0VTUyBiZWxvdy4KKworU1VDQ0VTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jc3MtY2FjaGVkLWJvbS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jc3MtY2FjaGVkLWJvbS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2ZTc1ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2Nzcy1jYWNoZWQtYm9tLmh0bWwKQEAgLTAsMCArMSwyMCBAQAorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorZnVuY3Rpb24gZnJhbWVMb2FkZWQoKSB7CisgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmJykuY29udGVudERvY3VtZW50LnN0eWxlU2hlZXRzWzBdLmNzc1J1bGVzWzBdLnNlbGVjdG9yVGV4dCA9PSAiI3N1Y2Nlc3M6OmJlZm9yZSIpCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAiU1VDQ0VTUyI7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorPC9zY3JpcHQ+Cis8bGluayByZWw9c3R5bGVzaGVldCBocmVmPXJlc291cmNlcy91dGYtMTYtbGl0dGxlLWVuZGlhbi5jc3M+Cis8IS0tIFRoaXMgaGFsdHMgdGhlIHBhcnNpbmcgdW50aWwgc3R5bGVzaGVldCBoYXMgYmVlbiBsb2FkZWQgLS0+Cis8c2NyaXB0IHNyYz1kb2VzX25vdF9leGlzdHMuanM+PC9zY3JpcHQ+Cis8ZGl2PlRlc3QgdGhhdCBzdHlsZXNoZWV0IHdpdGggQk9NIGlzIGNvcnJlY3RseSBwYXJzZWQgd2hlbiBsb2FkZWQgZnJvbSBjYWNoZS4gWW91IHNob3VsZCBzZWUgd29yZCBTVUNDRVNTIGJlbG93LjwvZGl2PgorPCEtLSBMb2FkIHRoZSBzdHlsZXNoZWV0IHRvIGEgZGlmZmVyZW50IGZyYW1lLiBUaGlzIHdpbGwgdXNlIGEgY2FjaGVkIGNvcHkgb2YgdGhlIHN0eWxlc2hlZXQuIC0tPgorPGlmcmFtZSBpZD1mIHNyYz1yZXNvdXJjZXMvY3NzLWNhY2hlZC1ib20tZnJhbWUuaHRtbD48L2lmcmFtZT4KKzxkaXYgaWQ9cmVzdWx0PkZBSUw8L2Rpdj4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jc3MtY2hhcnNldC1kZWZhdWx0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY3NzLWNoYXJzZXQtZGVmYXVsdC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTU0NzkwZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY3NzLWNoYXJzZXQtZGVmYXVsdC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitUZXN0IGZvciBidWcgMTEwMTE6IEV4dGVybmFsIENTUyBpcyBwYXJzZWQgYXMgaXNvLTg4NTktMSBldmVuIHRob3VnaCB0aGUgbWFpbiBkb2N1bWVudCBpcyB1dGYtOC4KKworU3R5bGVzaGVldCAxIChpbmhlcml0IGRvY3VtZW50IGNoYXJzZXQgdXNpbmcgeG1sLXN0eWxlc2hlZXQgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbik6IFNV0KHQodCVU1MKKworU3R5bGVzaGVldCAyIChpbmhlcml0IGRvY3VtZW50IGNoYXJzZXQgdXNpbmcgbGluayk6IFNV0KHQodCVU1MKKworU3R5bGVzaGVldCAzIChpbmhlcml0IHJlZmVycmluZyBzdHlsZXNoZWV0IGNoYXJzZXQpOiBTVdCh0KHQlVNTCisKK1N0eWxlc2hlZXQgNCAoaW5oZXJpdCByZWZlcnJpbmcgaW5saW5lIHN0eWxlc2hlZXQgY2hhcnNldCk6IFNV0KHQodCVU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY3NzLWNoYXJzZXQtZGVmYXVsdC54aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY3NzLWNoYXJzZXQtZGVmYXVsdC54aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDQzMmYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jc3MtY2hhcnNldC1kZWZhdWx0LnhodG1sCkBAIC0wLDAgKzEsNDMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9Imlzby04ODU5LTUiPz4KKzw/eG1sLXN0eWxlc2hlZXQgaHJlZj0iY3NzLWNoYXJzZXQtaW5oZXJpdC1pc28tODg1OS01LmNzcz8xIiB0eXBlPSJ0ZXh0L2NzcyI/PgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKKyAgICAgICAgICAgICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorICAgIDx0aXRsZT5DU1MgRGVmYXVsdCBjaGFyc2V0PC90aXRsZT4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MtY2hhcnNldC1pbmhlcml0LWlzby04ODU5LTUuY3NzPzIiLz4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MtY2hhcnNldC1pbXBvcnQuY3NzIi8+CisgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAgICAgQGltcG9ydCAiY3NzLWNoYXJzZXQtaW5oZXJpdC1pc28tODg1OS01LmNzcz80IjsKKyAgICA8L3N0eWxlPgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMTEiPmJ1ZyAxMTAxMTwvYT46CitFeHRlcm5hbCBDU1MgaXMgcGFyc2VkIGFzIGlzby04ODU5LTEgZXZlbiB0aG91Z2ggdGhlIG1haW4gZG9jdW1lbnQgaXMgdXRmLTguPC9wPgorCis8cCBpZD0icmVzMSI+U3R5bGVzaGVldCAxIChpbmhlcml0IGRvY3VtZW50IGNoYXJzZXQgdXNpbmcgeG1sLXN0eWxlc2hlZXQgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbik6IDwvcD4KKzxwIGlkPSJyZXMyIj5TdHlsZXNoZWV0IDIgKGluaGVyaXQgZG9jdW1lbnQgY2hhcnNldCB1c2luZyBsaW5rKTogPC9wPgorPHAgaWQ9InJlczMiPlN0eWxlc2hlZXQgMyAoaW5oZXJpdCByZWZlcnJpbmcgc3R5bGVzaGVldCBjaGFyc2V0KTogPC9wPgorPHAgaWQ9InJlczQiPlN0eWxlc2hlZXQgNCAoaW5oZXJpdCByZWZlcnJpbmcgaW5saW5lIHN0eWxlc2hlZXQgY2hhcnNldCk6IDwvcD4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgIHRyeSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlczEiKS5pbm5lckhUTUwgKz0gZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVsZXNbMF0uc3R5bGUuY29udGVudDsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXMyIikuaW5uZXJIVE1MICs9IGRvY3VtZW50LnN0eWxlU2hlZXRzWzFdLmNzc1J1bGVzWzBdLnN0eWxlLmNvbnRlbnQ7CisgICAgCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlczMiKS5pbm5lckhUTUwgKz0gZG9jdW1lbnQuc3R5bGVTaGVldHNbMl0uY3NzUnVsZXNbMV0uc3R5bGVTaGVldC5jc3NSdWxlc1swXS5zdHlsZS5jb250ZW50OworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlczQiKS5pbm5lckhUTUwgKz0gZG9jdW1lbnQuc3R5bGVTaGVldHNbM10uY3NzUnVsZXNbMF0uc3R5bGVTaGVldC5jc3NSdWxlc1swXS5zdHlsZS5jb250ZW50OworICB9IGNhdGNoIChleCkgeworICAgIGFsZXJ0KGV4LnRvU3RyaW5nKCkpOworICB9Cit9Cis8L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jc3MtY2hhcnNldC1kb20tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jc3MtY2hhcnNldC1kb20tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlNjhjMGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2Nzcy1jaGFyc2V0LWRvbS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACitUZXN0IGZvciBidWcgMTA2NzY6IEBjaGFyc2V0IHJ1bGVzIG5vdCBhY2Nlc3NpYmxlIHZpYSBET00KKworY3NzVGV4dDogQGNoYXJzZXQgInV0Zi04IjsKK2VuY29kaW5nOiB1dGYtOAorUmVzZXR0aW5nIGVuY29kaW5nLi4uCitjc3NUZXh0OiBAY2hhcnNldCAia29pOC1yIjsKK2VuY29kaW5nOiBrb2k4LXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY3NzLWNoYXJzZXQtZG9tLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2Nzcy1jaGFyc2V0LWRvbS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkNTkxYWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2Nzcy1jaGFyc2V0LWRvbS5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzxodG1sPgorPGhlYWQ+CisgICAgPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXdpbmRvd3MtMTI1MSIgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIi8+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzLWNoYXJzZXQuY3NzIiBjaGFyc2V0PSJ3aW5kb3dzLTEyNTEiPgorICAgIDwhLS0gVGhlIGRvY3VtZW50IGNoYXJzZXQgYW5kIGxpbmsgY2hhcnNldCBoYXZlIGxvd2VyIHByaW9yaXR5IHRoYW4gQGNoYXJzZXQsIHNvIHRoZXkgCisgICAgICAgICBzaG91bGRuJ3QgYWZmZWN0IGFueXRoaW5nLiAtLT4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY3NiI+YnVnIDEwNjc2PC9hPjoKK0BjaGFyc2V0IHJ1bGVzIG5vdCBhY2Nlc3NpYmxlIHZpYSBET008L3A+CisKKzxwIGlkPSJyZXN1bHQiPjwvcD4KKworPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCitmdW5jdGlvbiB0ZXN0KCkgeworICB0cnkgeworICAgIGNoYXJzZXRSdWxlID0gZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVsZXNbMF07CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCA9ICJjc3NUZXh0OiAiICsgY2hhcnNldFJ1bGUuY3NzVGV4dCArICI8YnI+ZW5jb2Rpbmc6ICIgKyBjaGFyc2V0UnVsZS5lbmNvZGluZzsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MICs9ICI8YnI+UmVzZXR0aW5nIGVuY29kaW5nLi4uIjsKKyAgICBjaGFyc2V0UnVsZS5lbmNvZGluZyA9ICJrb2k4LXIiOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gIjxicj5jc3NUZXh0OiAiICsgY2hhcnNldFJ1bGUuY3NzVGV4dCArICI8YnI+ZW5jb2Rpbmc6ICIgKyBjaGFyc2V0UnVsZS5lbmNvZGluZzsKKyAgfSBjYXRjaCAoZXgpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikudGV4dENvbnRlbnQgPSBleC50b1N0cmluZygpOworICB9Cit9Cis8L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jc3MtY2hhcnNldC1ldmlsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY3NzLWNoYXJzZXQtZXZpbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzU1NTMzMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY3NzLWNoYXJzZXQtZXZpbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitUZXN0IGZvciBidWcgMTAxNTU6IENTUzI6IEBjaGFyc2V0IGlzIG5vdCBzdXBwb3J0ZWQKKworQ1NTIDIuMSBzYXlzIHRoYXQgQGNoYXJzZXQgIiBtdXN0IGJlIHdyaXR0ZW4gbGl0ZXJhbGx5LCBidXQgRmlyZWZveCBhbmQgSUUgYWxsb3cgZXh0cmEgc3BhY2VzIGFuZCBzaW5nbGUgcXVvdGVzLgorCitTVdCh0KHQlVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2Nzcy1jaGFyc2V0LWV2aWwuY3NzIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jc3MtY2hhcnNldC1ldmlsLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTM0Y2NhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jc3MtY2hhcnNldC1ldmlsLmNzcwpAQCAtMCwwICsxLDIgQEAKK0BjaGFyc2V0CSAgJ3V0Zi04JyAJOworI2R1bW15OmJlZm9yZSB7IGNvbnRlbnQ6ICJTVdCh0KHQlVNTIjsgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jc3MtY2hhcnNldC1ldmlsLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2Nzcy1jaGFyc2V0LWV2aWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTdiZDcwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jc3MtY2hhcnNldC1ldmlsLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPGh0bWw+Cis8aGVhZD4KKyAgICA8bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9d2luZG93cy0xMjUxIiBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiLz4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MtY2hhcnNldC1ldmlsLmNzcyI+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5UZXN0IGZvciA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNTUiPmJ1ZyAxMDE1NTwvYT46CitDU1MyOiBAY2hhcnNldCBpcyBub3Qgc3VwcG9ydGVkPC9wPgorCis8cD5DU1MgMi4xIHNheXMgdGhhdCA8Y29kZT5AY2hhcnNldCAiPC9jb2RlPiBtdXN0IGJlIHdyaXR0ZW4gbGl0ZXJhbGx5LCAKK2J1dCBGaXJlZm94IGFuZCBJRSBhbGxvdyBleHRyYSBzcGFjZXMgYW5kIHNpbmdsZSBxdW90ZXMuPC9wPgorCis8cCBpZD0icmVzdWx0Ij48L3A+CisKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgdHJ5IHsKKyAgICB0ZXh0ID0gZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0ucnVsZXNbMF0uc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgiY29udGVudCIpOworICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoLyIvZywgIiIpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS50ZXh0Q29udGVudCA9IHRleHQ7CisgIH0gY2F0Y2ggKGV4KSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLnRleHRDb250ZW50ID0gZXgudG9TdHJpbmcoKTsKKyAgfQorfQorPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY3NzLWNoYXJzZXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jc3MtY2hhcnNldC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYThmNTA3OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY3NzLWNoYXJzZXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGVzdCBmb3IgYnVnIDEwMTU1OiBDU1MyOiBAY2hhcnNldCBpcyBub3Qgc3VwcG9ydGVkCisKK1Rlc3QgdGhhdCBAY2hhcnNldCB3b3JrcyBhbmQgdGhhdCBpbmRleGVkIHJ1bGUgYWNjZXNzIHZpYSBhbiBJRS1zcGVjaWZpYyBydWxlcyBwcm9wZXJ0eSBkb2VzIG5vdCB0YWtlIGl0IGludG8gYWNjb3VudC4KKworU1VDQ0VTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jc3MtY2hhcnNldC1pbXBvcnQuY3NzIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jc3MtY2hhcnNldC1pbXBvcnQuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiNzkyYjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2Nzcy1jaGFyc2V0LWltcG9ydC5jc3MKQEAgLTAsMCArMSwyIEBACitAY2hhcnNldCAia29pOC1yIjsKK0BpbXBvcnQgImNzcy1jaGFyc2V0LWluaGVyaXQta29pLTguY3NzIjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY3NzLWNoYXJzZXQtaW5oZXJpdC1pc28tODg1OS01LmNzcyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY3NzLWNoYXJzZXQtaW5oZXJpdC1pc28tODg1OS01LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Y2VkZWE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jc3MtY2hhcnNldC1pbmhlcml0LWlzby04ODU5LTUuY3NzCkBAIC0wLDAgKzEsMiBAQAorLyogaXNvLTg4NTktNSBlbmNvZGluZyAqLworI2R1bW15OmJlZm9yZSB7IGNvbnRlbnQ6ICJTVcHBtVNTIjsgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jc3MtY2hhcnNldC1pbmhlcml0LWtvaS04LmNzcyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY3NzLWNoYXJzZXQtaW5oZXJpdC1rb2ktOC5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQxMTYyMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY3NzLWNoYXJzZXQtaW5oZXJpdC1rb2ktOC5jc3MKQEAgLTAsMCArMSwyIEBACisvKiBrb2ktOCBlbmNvZGluZyAqLworI2R1bW15OmJlZm9yZSB7IGNvbnRlbnQ6ICJTVfPz5VNTIjsgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jc3MtY2hhcnNldC5jc3MgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2Nzcy1jaGFyc2V0LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzUwODRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jc3MtY2hhcnNldC5jc3MKQEAgLTAsMCArMSwyIEBACitAY2hhcnNldCAidXRmLTgiOworI2R1bW15OmJlZm9yZSB7IGNvbnRlbnQ6ICJTVdCh0KHQlVNTIjsgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jc3MtY2hhcnNldC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jc3MtY2hhcnNldC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyODA2NjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2Nzcy1jaGFyc2V0Lmh0bWwKQEAgLTAsMCArMSwzNCBAQAorPGh0bWw+Cis8aGVhZD4KKyAgICA8bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9d2luZG93cy0xMjUxIiBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiLz4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MtY2hhcnNldC5jc3MiIGNoYXJzZXQ9IndpbmRvd3MtMTI1MSI+CisgICAgPCEtLSBUaGUgZG9jdW1lbnQgY2hhcnNldCBhbmQgbGluayBjaGFyc2V0IGhhdmUgbG93ZXIgcHJpb3JpdHkgdGhhbiAKKyAgICAgICAgIEBjaGFyc2V0LCBzbyB0aGV5IHNob3VsZG4ndCBhZmZlY3QgYW55dGhpbmcuIC0tPgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTU1Ij5idWcgMTAxNTU8L2E+OgorQ1NTMjogQGNoYXJzZXQgaXMgbm90IHN1cHBvcnRlZDwvcD4KKzxwPlRlc3QgdGhhdCA8Y29kZT5AY2hhcnNldDwvY29kZT4gd29ya3MgYW5kIHRoYXQgaW5kZXhlZCBydWxlIGFjY2VzcyB2aWEgCithbiBJRS1zcGVjaWZpYyA8Y29kZT5ydWxlczwvY29kZT4gcHJvcGVydHkgZG9lcyBub3QgdGFrZSBpdCBpbnRvIGFjY291bnQuPC9wPgorCis8cCBpZD0icmVzdWx0Ij48L3A+CisKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgdHJ5IHsKKyAgICB0ZXh0ID0gZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0ucnVsZXNbMF0uc3R5bGUuY3NzVGV4dDsKKyAgICBpZiAodGV4dC5tYXRjaCgnLipTVdHRxVNTLionKSkKKyAgICAgIHJlc3VsdC5pbm5lckhUTUwgPSAiU1VDQ0VTUyI7CisgICAgZWxzZQorICAgICAgcmVzdWx0LmlubmVySFRNTCA9ICJGQUlMVVJFOiAiICsgdGV4dDsKKyAgfSBjYXRjaCAoZXgpIHsKKyAgICByZXN1bHQuaW5uZXJIVE1MID0gIkZBSUxVUkU6ICIgKyBleDsKKyAgfQorfQorPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY3NzLWxpbmstY2hhcnNldC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2Nzcy1saW5rLWNoYXJzZXQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmYTc4YWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2Nzcy1saW5rLWNoYXJzZXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGVzdCB0byBzZWUgaWYgdGhlIGNoYXJzZXQgcHJvcGVydHkgaW4gYSBsaW5rIHdvcmtzIHByb3Blcmx5LgorCitTVUNDRVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2Nzcy1saW5rLWNoYXJzZXQuY3NzIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jc3MtbGluay1jaGFyc2V0LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDkyZjJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9jc3MtbGluay1jaGFyc2V0LmNzcwpAQCAtMCwwICsxIEBACisjZHVtbXk6YmVmb3JlIHsgY29udGVudDogIlNV0KHQodCVU1MiOyB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2Nzcy1saW5rLWNoYXJzZXQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvY3NzLWxpbmstY2hhcnNldC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzM2YyY2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2Nzcy1saW5rLWNoYXJzZXQuaHRtbApAQCAtMCwwICsxLDI1IEBACis8aHRtbD4KKzxoZWFkPgorICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXdpbmRvd3MtMTI1MSI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzLWxpbmstY2hhcnNldC5jc3MiIGNoYXJzZXQ9InV0Zi04Ij4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRlc3QgdG8gc2VlIGlmIHRoZSBjaGFyc2V0IHByb3BlcnR5IGluIGEgbGluayB3b3JrcyBwcm9wZXJseS48L3A+Cis8cCBpZD0icmVzdWx0Ij48L3A+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgdHJ5IHsKKyAgICAgICAgdGV4dCA9IGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLnJ1bGVzWzBdLnN0eWxlLmNzc1RleHQ7CisgICAgICAgIGlmICh0ZXh0Lm1hdGNoKCcuKlNV0dHFU1MuKicpKQorICAgICAgICAgICAgcmVzdWx0LmlubmVySFRNTCA9ICJTVUNDRVNTIjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0LmlubmVySFRNTCA9ICJGQUlMVVJFOiAiICsgdGV4dDsKKyAgICB9IGNhdGNoIChleCkgeworICAgICAgICByZXN1bHQuaW5uZXJIVE1MID0gIkZBSUxVUkU6ICIgKyBleDsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvZGVjb2Rlci1hbGxvdy1udWxsLWNoYXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvZGVjb2Rlci1hbGxvdy1udWxsLWNoYXJzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGNlM2UwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9kZWNvZGVyLWFsbG93LW51bGwtY2hhcnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGhpcyB0ZXN0cyB0aGF0IHdlIG5vIGxvbmdlciBzdHJpcCBudWxscyBmcm9tIHRhZ3MuIFRoaXMgbWF0Y2hlcyBGaXJlZm94IGJlaGF2aW9yLgorCitUZXN0IFBhc3NlZAorCityZXN1bHQuaW5uZXJIVE1MID0gbWVzc2FnZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvZGVjb2Rlci1hbGxvdy1udWxsLWNoYXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2RlY29kZXItYWxsb3ctbnVsbC1jaGFycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2ZWUyNDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2RlY29kZXItYWxsb3ctbnVsbC1jaGFycy5odG1sCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvZGVmYXVsdC14aHRtbC1lbmNvZGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2RlZmF1bHQteGh0bWwtZW5jb2RpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZWExMjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2RlZmF1bHQteGh0bWwtZW5jb2RpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGVzdCBkZWZhdWx0IFhIVE1MIGVuY29kaW5nIChpbiB0aGUgYWJzZW5jZSBvZiBhbiBYTUwgZGVjbGFyYXRpb24pLgorCitDaGFyc2V0OiBVVEYtOCAoc2hvdWxkIGJlIFVURi04KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9kZWZhdWx0LXhodG1sLWVuY29kaW5nLnhodG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9kZWZhdWx0LXhodG1sLWVuY29kaW5nLnhodG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmYmM5MmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2RlZmF1bHQteGh0bWwtZW5jb2RpbmcueGh0bWwKQEAgLTAsMCArMSwxNiBAQAorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGJvZHk+Cis8cD5UZXN0IGRlZmF1bHQgWEhUTUwgZW5jb2RpbmcgKGluIHRoZSBhYnNlbmNlIG9mIGFuIFhNTCBkZWNsYXJhdGlvbikuPC9wPgorCis8cCBpZD0icmVzdWx0IiAvPgorCis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgPSAiQ2hhcnNldDogIiArIAorICAgIChkb2N1bWVudC5jaGFyc2V0ID8gZG9jdW1lbnQuY2hhcnNldCA6IGRvY3VtZW50LmNoYXJhY3RlclNldCkgKyAiIChzaG91bGQgYmUgVVRGLTgpIjsKKzwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2Rlbm9ybWFsaXNlZC12b2ljZWQtamFwYW5lc2UtY2hhcnMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvZGVub3JtYWxpc2VkLXZvaWNlZC1qYXBhbmVzZS1jaGFycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzNzkxZWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2Rlbm9ybWFsaXNlZC12b2ljZWQtamFwYW5lc2UtY2hhcnMuaHRtbApAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgeG1sOmxhbmc9ImVuIiBsYW5nPSJlbiI+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgorPC9oZWFkPgorPGJvZHk+CitUaGlzIHRlc3QgY2hlY2tzIHRoYXQgdGhlIGRlY29tcG9zZWQgdW5pY29kZSB2ZXJzaW9uIG9mIHZvaWNlZCBqYXBhbmVzZSBoaXJhZ2FuYSBhbmQga2F0YWthbmEgY2hhcmFjdGVycyBhcmUgcmVuZGVyZWQgdGhlIHNhbWUgYXMgdGhlIHByZWNvbXBvc2VkIHZlcnNpb24uIFRoaXMgdGVzdCBpcyBhIHBpeGVsLXRlc3QsIGFuZCBwYXNzZXMgd2hlbiB0aGUgdGV4dCBpbiB0aGUgdHdvIGhlYWRpbmcgZWxlbWVudHMgYXJlIGlkZW50aWNhbC4KKzxoMj7jg4/jgpnjg4rjg4rjgajjg4/jgprjg4rjg548L2gyPgorPHA+VGhlIGFib3ZlIGlzIGRlY29tcG9zZWQ8L3A+CisKKzxoMj7jg5Djg4rjg4rjgajjg5Hjg4rjg548L2gyPgorPHA+VGhlIGFib3ZlIGlzIHByZWNvbXBvc2VkPC9wPgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2V1Y2tyLW5hbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9ldWNrci1uYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDM1MmY4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9ldWNrci1uYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKK1Rlc3QgZm9yIGJ1ZyAyNTQ4Ny4gRXZlbiB0aG91Z2ggd2UgdHJlYXQgRVVDLUtSIGFzIHdpbmRvd3MtOTQ5LCB0aGUgbmFtZSBleHBvc2VkIHZpYSBET00gQVBJcyBzaG91bGQgc3RpbGwgYmUgRVVDLUtSLgorCitjaGFyYWN0ZXJTZXQ6IEVVQy1LUiAoc2hvdWxkIGJlIEVVQy1LUikKK2NoYXJzZXQ6IEVVQy1LUiAoc2hvdWxkIGJlIEVVQy1LUikKK2lucHV0RW5jb2Rpbmc6IEVVQy1LUiAoc2hvdWxkIGJlIEVVQy1LUikKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9ldWNrci1uYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2V1Y2tyLW5hbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOGQ2MmZlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9ldWNrci1uYW1lLmh0bWwKQEAgLTAsMCArMSwxOCBAQAorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWV1Yy1rciIgLz4KKzwvaGVhZD4KKzxCT0RZPgorPHA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU0ODciPmJ1ZyAyNTQ4NzwvYT4uIEV2ZW4gdGhvdWdoIHdlIHRyZWF0IEVVQy1LUiBhcyB3aW5kb3dzLTk0OSwgdGhlIG5hbWUgZXhwb3NlZCB2aWEgRE9NIEFQSXMgc2hvdWxkIHN0aWxsIGJlIEVVQy1LUi48L3A+ICAKKzxzY3JpcHQ+CisgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgIHZhciBlbmNvZGluZ0VsZW1zID0gWyJjaGFyYWN0ZXJTZXQiLCAiY2hhcnNldCIsICJpbnB1dEVuY29kaW5nIl07CisgIGZvciAodmFyIGkgaW4gZW5jb2RpbmdFbGVtcykgeworICAgIHZhciBjaGFyc2V0ID0gZXZhbCgnZG9jdW1lbnQuJyArIGVuY29kaW5nRWxlbXNbaV0pOworICAgIGRvY3VtZW50LndyaXRlKGVuY29kaW5nRWxlbXNbaV0gKyI6ICIgKyBjaGFyc2V0ICsgIiAoc2hvdWxkIGJlIEVVQy1LUik8YnI+Iik7CisgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9leHRlcm5hbC1zY3JpcHQtY2hhcnNldC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2V4dGVybmFsLXNjcmlwdC1jaGFyc2V0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NTc1NzU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9leHRlcm5hbC1zY3JpcHQtY2hhcnNldC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitUZXN0IHRoYXQgZXh0ZXJuYWwgc2NyaXB0cyBpbiBYSFRNTCBkb2N1bWVudHMgaW5oZXJpdCBkb2N1bWVudCBjaGFyc2V0LgorCitQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2V4dGVybmFsLXNjcmlwdC1jaGFyc2V0LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9leHRlcm5hbC1zY3JpcHQtY2hhcnNldC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDE4MjRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9leHRlcm5hbC1zY3JpcHQtY2hhcnNldC5qcwpAQCAtMCwwICsxLDQgQEAKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MID0gKCLQryIgPT0gIlx1MDQyRiIpID8gIlBBU1MiIDogIkZBSUwiOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvZXh0ZXJuYWwtc2NyaXB0LWNoYXJzZXQueGh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2V4dGVybmFsLXNjcmlwdC1jaGFyc2V0LnhodG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4OWI5ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2V4dGVybmFsLXNjcmlwdC1jaGFyc2V0LnhodG1sCkBAIC0wLDAgKzEsNyBAQAorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHhtbDpsYW5nPSJydSIgZGlyPSJsdHIiPgorPGJvZHk+CisgICAgPHA+VGVzdCB0aGF0IGV4dGVybmFsIHNjcmlwdHMgaW4gWEhUTUwgZG9jdW1lbnRzIGluaGVyaXQgZG9jdW1lbnQgY2hhcnNldC48L3A+CisgICAgPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJleHRlcm5hbC1zY3JpcHQtY2hhcnNldC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2Zsb3JhZXhwcmVzcy1ydS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2Zsb3JhZXhwcmVzcy1ydS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJhNDU4NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvZmxvcmFleHByZXNzLXJ1LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1Rlc3QgYSBwYXJ0aWN1bGFyIGV4YW1wbGUgb2YgYnJva2VuIG1hcmt1cCB0aGF0IHdhcyBtYWtpbmcgdXMgaWdub3JlIGEgY2hhcnNldCBkZWNsYXJhdGlvbi4KKworRW5jb2Rpbmc6IHdpbmRvd3MtMTI1MSAoc2hvdWxkIGJlIHdpbmRvd3MtMTI1MSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvZmxvcmFleHByZXNzLXJ1Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2Zsb3JhZXhwcmVzcy1ydS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwMDRlZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2Zsb3JhZXhwcmVzcy1ydS5odG1sCkBAIC0wLDAgKzEsMjYgQEAKKzxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXRlc3QgdmFsdWU9Jyc+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9dGVzdDEgdmFsdWU9Jyc+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9dGVzdCB2YWx1ZT0nJz48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT10ZXN0MSB2YWx1ZT0nJz4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+RmxvcmFleHByZXNzIC0g5+Dq4Ocg6CDk7vHy4OLq4CD24uXy7uIg7+4gzOjw8ywg7OXm5PPt4PDu5O3g/yDk7vHy4OLq4CD24uXy7uIsIOfg6uDnIOgg5O7x8uDi6uAg4fPq5fLu4jwvdGl0bGU+Cis8dGl0bGU+x+Dq4Ocg9uLl8u7iIOgg5O7x8uDi6uAg4fPq5fLu4iD24uXy7uIg7+4g4vHl7PMg7Ojw8yAtIEZsb3JhZXhwcmVzcyAtIOzl5uTz7eDw7uTt4P8g5O7x8uDi6uAg9uLl8u7iPC90aXRsZT4KKworPG1ldGEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXdpbmRvd3MtMTI1MSI+Cis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSNGNUY1RUYgdGV4dD0iIzMxMzEzMSIgbGVmdG1hcmdpbj0iMCIgdG9wbWFyZ2luPSIwIiBtYXJnaW53aWR0aD0iMCIgbWFyZ2luaGVpZ2h0PSIwIj4KKzwvaGVhZD4KKzxib2R5PgorCis8cD5UZXN0IGEgcGFydGljdWxhciBleGFtcGxlIG9mIGJyb2tlbiBtYXJrdXAgdGhhdCB3YXMgbWFraW5nIHVzIGlnbm9yZSBhIGNoYXJzZXQgZGVjbGFyYXRpb24uPC9wPgorPHNjcmlwdD4KKyAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgdmFyIGNoYXJzZXQgPSBkb2N1bWVudC5jaGFyYWN0ZXJTZXQ7CisgIGlmICghY2hhcnNldCkKKyAgICBjaGFyc2V0ID0gZG9jdW1lbnQuY2hhcnNldDsKKyAgaWYgKCFjaGFyc2V0KQorICAgIGNoYXJzZXQgPSBkb2N1bWVudC5pbnB1dEVuY29kaW5nOworICBkb2N1bWVudC53cml0ZSgiRW5jb2Rpbmc6ICIgKyBjaGFyc2V0ICsgIiAoc2hvdWxkIGJlIHdpbmRvd3MtMTI1MSkiKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9mcmFtZS1kZWZhdWx0LWVuYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2ZyYW1lLWRlZmF1bHQtZW5jLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZWYyMmU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9mcmFtZS1kZWZhdWx0LWVuYy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAorUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9mcmFtZS1kZWZhdWx0LWVuYy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9mcmFtZS1kZWZhdWx0LWVuYy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjY2Y0NWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2ZyYW1lLWRlZmF1bHQtZW5jLmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXgtbWFjLWN5cmlsbGljIj4KKzx0aXRsZT5GcmFtZXMgYW5kIGVuY29kaW5nczwvdGl0bGU+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3dpbmRvdy5kb25lID0gZnVuY3Rpb24oY2hhcnNldCkgeworICAgIGRvY3VtZW50Lm9wZW4oKTsKKyAgICBkb2N1bWVudC53cml0ZSgiPHA+IiArICgoY2hhcnNldCA9PSAieC1tYWMtY3lyaWxsaWMiKSA/ICJQQVNTIiA6ICJGQUlMIikgKyAiPC9wPiIpOworICAgIDwhLS0gSXQncyB1bmxpa2VseSB0aGF0IGFueW9uZSBoYXMgeC1tYWMtY3lyaWxsaWMgYXMgZGVmYXVsdCAtLT4KKworICAgIGRvY3VtZW50LmNsb3NlKCk7CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxmcmFtZXNldCByb3dzPSIwLCoiPgorICAgIDxmcmFtZSBzcmM9ImFib3V0OiIgc2Nyb2xsaW5nPW5vIG1hcmdpbndpZHRoPTAgbWFyZ2luaGVpZ2h0PTA+CisgICAgPGZyYW1lIHNyYz0icmVzb3VyY2VzL2ZyYW1lLWRlZmF1bHQtZW5jLWZyYW1lLmh0bWwiPgorPC9mcmFtZXNldD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvaGFuYXJlaS1ibG9nMzItZmMyLWNvbS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2hhbmFyZWktYmxvZzMyLWZjMi1jb20tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyZmQ2MWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2hhbmFyZWktYmxvZzMyLWZjMi1jb20tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGVzdCBhIHBhcnRpY3VsYXIgZXhhbXBsZSBvZiBicm9rZW4gbWFya3VwIHRoYXQgd2FzIG1ha2luZyB1cyBpZ25vcmUgYSBjaGFyc2V0IGRlY2xhcmF0aW9uLgorCitFbmNvZGluZzogRVVDLUpQIChzaG91bGQgYmUgRVVDLUpQKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9oYW5hcmVpLWJsb2czMi1mYzItY29tLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2hhbmFyZWktYmxvZzMyLWZjMi1jb20uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDY4MjM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9oYW5hcmVpLWJsb2czMi1mYzItY29tLmh0bWwKQEAgLTAsMCArMSw0MiBAQAorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgorPGh0bWwgbGFuZz0iamEiIGRpcj0ibHRyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgeG1sOmxhbmc9ImphIj4KKzxoZWFkPgorCisKKworPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT7Mtc7Bpaql86XppaSl86Wyobyl4KTLu7Kyw6S3pOikpqL2PC9USVRMRT4KKzwvSEVBRD4KKworPEJPRFk+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQordmFyIElEPSIxMDAwOTkxMzEiOwordmFyIEFEPTE7Cit2YXIgRlJBTUU9MDsKKy8vIC0tPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImFib3V0OmJsYW5rIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgorPG5vc2NyaXB0PgorPGEgaHJlZj0iaHR0cDovL3cxLmF4LnhyZWEuY29tL2MuZj9pZD0xMDAwOTkxMzEiIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iYWJvdXQ6YmxhbmsiIGFsdD0iQVgiIGJvcmRlcj0iMCI+PC9hPgorPC9ub3NjcmlwdD4KKworCisKKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUVVQy1KUCIgLz4KKzwvaGVhZD4KKzxib2R5PgorCis8cD5UZXN0IGEgcGFydGljdWxhciBleGFtcGxlIG9mIGJyb2tlbiBtYXJrdXAgdGhhdCB3YXMgbWFraW5nIHVzIGlnbm9yZSBhIGNoYXJzZXQgZGVjbGFyYXRpb24uPC9wPgorPHNjcmlwdD4KKyAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgdmFyIGNoYXJzZXQgPSBkb2N1bWVudC5jaGFyYWN0ZXJTZXQ7CisgIGlmICghY2hhcnNldCkKKyAgICBjaGFyc2V0ID0gZG9jdW1lbnQuY2hhcnNldDsKKyAgaWYgKCFjaGFyc2V0KQorICAgIGNoYXJzZXQgPSBkb2N1bWVudC5pbnB1dEVuY29kaW5nOworICBkb2N1bWVudC53cml0ZSgiRW5jb2Rpbmc6ICIgKyBjaGFyc2V0ICsgIiAoc2hvdWxkIGJlIEVVQy1KUCkiKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9oZWJyZXcvODg1OS04LWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9oZWJyZXcvODg1OS04LWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1MDNkODYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2hlYnJldy84ODU5LTgtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACivXn9eV15vXoCDXlNeWCisKK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvaGVicmV3Lzg4NTktOC1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2hlYnJldy84ODU5LTgtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzMTRjMzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2hlYnJldy84ODU5LTgtZS5odG1sCkBAIC0wLDAgKzEsMyBAQAorPG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktOC1FIiAvPjxib2R5PjxwIGlkPXA+Civv5evwIOTmPC9wPjxzY3JpcHQ+aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworZG9jdW1lbnQud3JpdGUoKGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInAiKSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgiLXdlYmtpdC1ydGwtb3JkZXJpbmciKSA9PSAidmlzdWFsIikgPyAiUEFTUyIgOiAiRkFJTCIpPC9zY3JpcHQ+PC9ib2R5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvaGVicmV3Lzg4NTktOC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2hlYnJldy84ODU5LTgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1MDNkODYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2hlYnJldy84ODU5LTgtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAor15/Xldeb16Ag15TXlgorCitQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2hlYnJldy84ODU5LTgtaS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2hlYnJldy84ODU5LTgtaS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODk5Y2QwNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvaGVicmV3Lzg4NTktOC1pLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK9eW15Qg16DXm9eV158KKworUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9oZWJyZXcvODg1OS04LWkuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvaGVicmV3Lzg4NTktOC1pLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2E4NTU5OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvaGVicmV3Lzg4NTktOC1pLmh0bWwKQEAgLTAsMCArMSwzIEBACis8bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS04LWkiIC8+PGJvZHk+PHAgaWQ9cD4KK+bkIPDr5e88L3A+PHNjcmlwdD5pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Citkb2N1bWVudC53cml0ZSgoZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicCIpLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCItd2Via2l0LXJ0bC1vcmRlcmluZyIpID09ICJsb2dpY2FsIikgPyAiUEFTUyIgOiAiRkFJTCIpPC9zY3JpcHQ+PC9ib2R5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvaGVicmV3Lzg4NTktOC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9oZWJyZXcvODg1OS04Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzk2MzIzYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvaGVicmV3Lzg4NTktOC5odG1sCkBAIC0wLDAgKzEsMyBAQAorPG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktOCIgLz48Ym9keT48cCBpZD1wPgor7+Xr8CDk5jwvcD48c2NyaXB0PmlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2RvY3VtZW50LndyaXRlKChkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwIiksIG51bGwpLmdldFByb3BlcnR5VmFsdWUoIi13ZWJraXQtcnRsLW9yZGVyaW5nIikgPT0gInZpc3VhbCIpID8gIlBBU1MiIDogIkZBSUwiKTwvc2NyaXB0PjwvYm9keT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2hlYnJldy9jc0lTTzg4NTk4SS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2hlYnJldy9jc0lTTzg4NTk4SS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODk5Y2QwNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvaGVicmV3L2NzSVNPODg1OThJLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK9eW15Qg16DXm9eV158KKworUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9oZWJyZXcvY3NJU084ODU5OEkuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvaGVicmV3L2NzSVNPODg1OThJLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmMxMzhkNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvaGVicmV3L2NzSVNPODg1OThJLmh0bWwKQEAgLTAsMCArMSwzIEBACis8bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1jc0lTTzg4NTk4SSIgLz48Ym9keT48cCBpZD1wPgor5uQg8Ovl7zwvcD48c2NyaXB0PmlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2RvY3VtZW50LndyaXRlKChkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwIiksIG51bGwpLmdldFByb3BlcnR5VmFsdWUoIi13ZWJraXQtcnRsLW9yZGVyaW5nIikgPT0gImxvZ2ljYWwiKSA/ICJQQVNTIiA6ICJGQUlMIik8L3NjcmlwdD48L2JvZHk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9oZWJyZXcvaGVicmV3LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvaGVicmV3L2hlYnJldy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTUwM2Q4NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvaGVicmV3L2hlYnJldy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACivXn9eV15vXoCDXlNeWCisKK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvaGVicmV3L2hlYnJldy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9oZWJyZXcvaGVicmV3Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzk2MzIzYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvaGVicmV3L2hlYnJldy5odG1sCkBAIC0wLDAgKzEsMyBAQAorPG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktOCIgLz48Ym9keT48cCBpZD1wPgor7+Xr8CDk5jwvcD48c2NyaXB0PmlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2RvY3VtZW50LndyaXRlKChkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwIiksIG51bGwpLmdldFByb3BlcnR5VmFsdWUoIi13ZWJraXQtcnRsLW9yZGVyaW5nIikgPT0gInZpc3VhbCIpID8gIlBBU1MiIDogIkZBSUwiKTwvc2NyaXB0PjwvYm9keT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2hlYnJldy9pc28taXItMTM4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvaGVicmV3L2lzby1pci0xMzgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1MDNkODYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2hlYnJldy9pc28taXItMTM4LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK9ef15XXm9egINeU15YKKworUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9oZWJyZXcvaXNvLWlyLTEzOC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9oZWJyZXcvaXNvLWlyLTEzOC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkNGJiMGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2hlYnJldy9pc28taXItMTM4Lmh0bWwKQEAgLTAsMCArMSwzIEBACis8bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28taXItMTM4IiAvPjxib2R5PjxwIGlkPXA+Civv5evwIOTmPC9wPjxzY3JpcHQ+aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworZG9jdW1lbnQud3JpdGUoKGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInAiKSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgiLXdlYmtpdC1ydGwtb3JkZXJpbmciKSA9PSAidmlzdWFsIikgPyAiUEFTUyIgOiAiRkFJTCIpPC9zY3JpcHQ+PC9ib2R5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvaGVicmV3L2xvZ2ljYWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9oZWJyZXcvbG9naWNhbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODk5Y2QwNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvaGVicmV3L2xvZ2ljYWwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAor15bXlCDXoNeb15XXnworCitQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2hlYnJldy9sb2dpY2FsLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2hlYnJldy9sb2dpY2FsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODkyOTU3NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvaGVicmV3L2xvZ2ljYWwuaHRtbApAQCAtMCwwICsxLDMgQEAKKzxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWxvZ2ljYWwiIC8+PGJvZHk+PHAgaWQ9cD4KK+bkIPDr5e88L3A+PHNjcmlwdD5pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Citkb2N1bWVudC53cml0ZSgoZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicCIpLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCItd2Via2l0LXJ0bC1vcmRlcmluZyIpID09ICJsb2dpY2FsIikgPyAiUEFTUyIgOiAiRkFJTCIpPC9zY3JpcHQ+PC9ib2R5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvaGlnaC1iaXQtbGF0aW4xLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvaGlnaC1iaXQtbGF0aW4xLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTBkNjVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9oaWdoLWJpdC1sYXRpbjEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGVzdCBMYXRpbi0xIGNvbnZlcnNpb24gdG8gU3RyaW5nCisKK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvaGlnaC1iaXQtbGF0aW4xLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2hpZ2gtYml0LWxhdGluMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhOGU2ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2hpZ2gtYml0LWxhdGluMS5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPjwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8cD4KKyAgICAgICAgVGVzdCBMYXRpbi0xIGNvbnZlcnNpb24gdG8gU3RyaW5nCisgICAgPC9wPgorICAgIDxhIGlkPSJ0IiDgPjwvYT4KKyAgICA8cD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGRvY3VtZW50LndyaXRlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0IikuYXR0cmlidXRlc1sxXS5uYW1lID09ICJcdTAwZTAiID8gIlBBU1MiIDogIkZBSUwiKTsKKyAgICA8L3NjcmlwdD4KKyAgICA8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2lkbi1zZWN1cml0eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2lkbi1zZWN1cml0eS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjNhNmY5NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvaWRuLXNlY3VyaXR5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI0NyBAQAorUEFTUyB0ZXN0SUROUm91bmRUcmlwKDB4MmUpIGlzICcuJworUEFTUyB0ZXN0SUROUm91bmRUcmlwTm90Rmlyc3RDaGFyYWN0ZXIoMHgyZSkgaXMgJy4nCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXAoMHgyZikgaXMgJy8nCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweDJmKSBpcyAnLycKK1BBU1MgdGVzdElETlJvdW5kVHJpcCgweDYxKSBpcyAnYScKK1BBU1MgdGVzdElETlJvdW5kVHJpcE5vdEZpcnN0Q2hhcmFjdGVyKDB4NjEpIGlzICdhJworUEFTUyB0ZXN0SUROUm91bmRUcmlwKDB4NjMzKSBpcyAnJXUwNjMzJworUEFTUyB0ZXN0SUROUm91bmRUcmlwTm90Rmlyc3RDaGFyYWN0ZXIoMHg2MzMpIGlzICcldTA2MzMnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXAoMHg1NjEpIGlzICcldTA1NjEnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweDU2MSkgaXMgJyV1MDU2MScKK1BBU1MgdGVzdElETlJvdW5kVHJpcCgweDMxMDUpIGlzICcldTMxMDUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweDMxMDUpIGlzICcldTMxMDUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXAoMHgxNjEzKSBpcyAnJXUxNjEzJworUEFTUyB0ZXN0SUROUm91bmRUcmlwTm90Rmlyc3RDaGFyYWN0ZXIoMHgxNjEzKSBpcyAnJXUxNjEzJworUEFTUyB0ZXN0SUROUm91bmRUcmlwKDB4OTA1KSBpcyAnJXUwOTA1JworUEFTUyB0ZXN0SUROUm91bmRUcmlwTm90Rmlyc3RDaGFyYWN0ZXIoMHg5MDUpIGlzICcldTA5MDUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXAoMHhhODUpIGlzICcldTBBODUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweGE4NSkgaXMgJyV1MEE4NScKK1BBU1MgdGVzdElETlJvdW5kVHJpcCgweGEwNSkgaXMgJyV1MEEwNScKK1BBU1MgdGVzdElETlJvdW5kVHJpcE5vdEZpcnN0Q2hhcmFjdGVyKDB4YTA1KSBpcyAnJXUwQTA1JworUEFTUyB0ZXN0SUROUm91bmRUcmlwKDB4MTExNSkgaXMgJyV1MTExNScKK1BBU1MgdGVzdElETlJvdW5kVHJpcE5vdEZpcnN0Q2hhcmFjdGVyKDB4MTExNSkgaXMgJyV1MTExNScKK1BBU1MgdGVzdElETlJvdW5kVHJpcCgweDRlMmQpIGlzICcldTRFMkQnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweDRlMmQpIGlzICcldTRFMkQnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXAoMHg1ZDApIGlzICcldTA1RDAnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweDVkMCkgaXMgJyV1MDVEMCcKK1BBU1MgdGVzdElETlJvdW5kVHJpcCgweDMwNDEpIGlzICcldTMwNDEnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweDMwNDEpIGlzICcldTMwNDEnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXAoMHgzMGExKSBpcyAnJXUzMEExJworUEFTUyB0ZXN0SUROUm91bmRUcmlwTm90Rmlyc3RDaGFyYWN0ZXIoMHgzMGExKSBpcyAnJXUzMEExJworUEFTUyB0ZXN0SUROUm91bmRUcmlwKDB4Yjk0KSBpcyAnJXUwQjk0JworUEFTUyB0ZXN0SUROUm91bmRUcmlwTm90Rmlyc3RDaGFyYWN0ZXIoMHhiOTQpIGlzICcldTBCOTQnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXAoMHhlMDEpIGlzICcldTBFMDEnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweGUwMSkgaXMgJyV1MEUwMScKK1BBU1MgdGVzdElETlJvdW5kVHJpcCgweGEwMDApIGlzICcldUEwMDAnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweGEwMDApIGlzICcldUEwMDAnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXAoMHgyMDI0KSBpcyAnLicKK1BBU1MgdGVzdElETlJvdW5kVHJpcE5vdEZpcnN0Q2hhcmFjdGVyKDB4MjAyNCkgaXMgJy4nCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXAoMHhmZTUyKSBpcyAnLicKK1BBU1MgdGVzdElETlJvdW5kVHJpcE5vdEZpcnN0Q2hhcmFjdGVyKDB4ZmU1MikgaXMgJy4nCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXAoMHhmZjBmKSBpcyAnLycKK1BBU1MgdGVzdElETlJvdW5kVHJpcE5vdEZpcnN0Q2hhcmFjdGVyKDB4ZmYwZikgaXMgJy8nCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXAoMHhmZTY4KSBpcyAnJTVDJworUEFTUyB0ZXN0SUROUm91bmRUcmlwTm90Rmlyc3RDaGFyYWN0ZXIoMHhmZTY4KSBpcyAnJTVDJworUEFTUyB0ZXN0SUROUm91bmRUcmlwKDB4ZmYzYykgaXMgJyU1QycKK1BBU1MgdGVzdElETlJvdW5kVHJpcE5vdEZpcnN0Q2hhcmFjdGVyKDB4ZmYzYykgaXMgJyU1QycKK1BBU1MgdGVzdElETlJvdW5kVHJpcCgweGEwKSBpcyAnJTIwJworUEFTUyB0ZXN0SUROUm91bmRUcmlwTm90Rmlyc3RDaGFyYWN0ZXIoMHhhMCkgaXMgJyUyMCcKK1BBU1MgdGVzdElETlJvdW5kVHJpcCgweDIwMDApIGlzICclMjAnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweDIwMDApIGlzICclMjAnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXAoMHgyMDAxKSBpcyAnJTIwJworUEFTUyB0ZXN0SUROUm91bmRUcmlwTm90Rmlyc3RDaGFyYWN0ZXIoMHgyMDAxKSBpcyAnJTIwJworUEFTUyB0ZXN0SUROUm91bmRUcmlwKDB4MjAwMikgaXMgJyUyMCcKK1BBU1MgdGVzdElETlJvdW5kVHJpcE5vdEZpcnN0Q2hhcmFjdGVyKDB4MjAwMikgaXMgJyUyMCcKK1BBU1MgdGVzdElETlJvdW5kVHJpcCgweDIwMDMpIGlzICclMjAnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweDIwMDMpIGlzICclMjAnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXAoMHgyMDA0KSBpcyAnJTIwJworUEFTUyB0ZXN0SUROUm91bmRUcmlwTm90Rmlyc3RDaGFyYWN0ZXIoMHgyMDA0KSBpcyAnJTIwJworUEFTUyB0ZXN0SUROUm91bmRUcmlwKDB4MjAwNSkgaXMgJyUyMCcKK1BBU1MgdGVzdElETlJvdW5kVHJpcE5vdEZpcnN0Q2hhcmFjdGVyKDB4MjAwNSkgaXMgJyUyMCcKK1BBU1MgdGVzdElETlJvdW5kVHJpcCgweDIwMDYpIGlzICclMjAnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweDIwMDYpIGlzICclMjAnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXAoMHgyMDA3KSBpcyAnJTIwJworUEFTUyB0ZXN0SUROUm91bmRUcmlwTm90Rmlyc3RDaGFyYWN0ZXIoMHgyMDA3KSBpcyAnJTIwJworUEFTUyB0ZXN0SUROUm91bmRUcmlwKDB4MjAwOCkgaXMgJyUyMCcKK1BBU1MgdGVzdElETlJvdW5kVHJpcE5vdEZpcnN0Q2hhcmFjdGVyKDB4MjAwOCkgaXMgJyUyMCcKK1BBU1MgdGVzdElETlJvdW5kVHJpcCgweDIwMDkpIGlzICclMjAnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweDIwMDkpIGlzICclMjAnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXAoMHgyMDBhKSBpcyAnJTIwJworUEFTUyB0ZXN0SUROUm91bmRUcmlwTm90Rmlyc3RDaGFyYWN0ZXIoMHgyMDBhKSBpcyAnJTIwJworUEFTUyB0ZXN0SUROUm91bmRUcmlwKDB4MjAyZikgaXMgJyUyMCcKK1BBU1MgdGVzdElETlJvdW5kVHJpcE5vdEZpcnN0Q2hhcmFjdGVyKDB4MjAyZikgaXMgJyUyMCcKK1BBU1MgdGVzdElETlJvdW5kVHJpcCgweDIwNWYpIGlzICclMjAnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweDIwNWYpIGlzICclMjAnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXAoMHgzMDAwKSBpcyAnJTIwJworUEFTUyB0ZXN0SUROUm91bmRUcmlwTm90Rmlyc3RDaGFyYWN0ZXIoMHgzMDAwKSBpcyAnJTIwJworUEFTUyB0ZXN0SUROUm91bmRUcmlwKDB4YmMpIGlzICdwdW55Y29kZScKK1BBU1MgdGVzdElETlJvdW5kVHJpcE5vdEZpcnN0Q2hhcmFjdGVyKDB4YmMpIGlzICdwdW55Y29kZScKK1BBU1MgdGVzdElETlJvdW5kVHJpcCgweGJkKSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweGJkKSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXAoMHhlZCkgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwTm90Rmlyc3RDaGFyYWN0ZXIoMHhlZCkgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwKDB4MWMzKSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweDFjMykgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwKDB4MjUxKSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweDI1MSkgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwKDB4MjYxKSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweDI2MSkgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwKDB4MzM3KSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweDMzNykgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwKDB4MzM3KSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweDMzNykgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwKDB4MzM4KSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweDMzOCkgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwKDB4MzM4KSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweDMzOCkgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwKDB4NWI0KSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweDViNCkgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwKDB4NWJjKSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweDViYykgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwKDB4NjYwKSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweDY2MCkgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwKDB4NmYwKSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweDZmMCkgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwKDB4MTE1ZikgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwTm90Rmlyc3RDaGFyYWN0ZXIoMHgxMTVmKSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXAoMHgxMTYwKSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweDExNjApIGlzICdwdW55Y29kZScKK1BBU1MgdGVzdElETlJvdW5kVHJpcCgweDIwMjcpIGlzICdwdW55Y29kZScKK1BBU1MgdGVzdElETlJvdW5kVHJpcE5vdEZpcnN0Q2hhcmFjdGVyKDB4MjAyNykgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwKDB4MjAzOSkgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwTm90Rmlyc3RDaGFyYWN0ZXIoMHgyMDM5KSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXAoMHgyMDNhKSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweDIwM2EpIGlzICdwdW55Y29kZScKK1BBU1MgdGVzdElETlJvdW5kVHJpcCgweDIwNDQpIGlzICdwdW55Y29kZScKK1BBU1MgdGVzdElETlJvdW5kVHJpcE5vdEZpcnN0Q2hhcmFjdGVyKDB4MjA0NCkgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwKDB4MjA0NCkgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwTm90Rmlyc3RDaGFyYWN0ZXIoMHgyMDQ0KSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXAoMHgyMTU0KSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweDIxNTQpIGlzICdwdW55Y29kZScKK1BBU1MgdGVzdElETlJvdW5kVHJpcCgweDIxNTUpIGlzICdwdW55Y29kZScKK1BBU1MgdGVzdElETlJvdW5kVHJpcE5vdEZpcnN0Q2hhcmFjdGVyKDB4MjE1NSkgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwKDB4MjE1NikgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwTm90Rmlyc3RDaGFyYWN0ZXIoMHgyMTU2KSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXAoMHgyMTU5KSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweDIxNTkpIGlzICdwdW55Y29kZScKK1BBU1MgdGVzdElETlJvdW5kVHJpcCgweDIxNWEpIGlzICdwdW55Y29kZScKK1BBU1MgdGVzdElETlJvdW5kVHJpcE5vdEZpcnN0Q2hhcmFjdGVyKDB4MjE1YSkgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwKDB4MjE1YikgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwTm90Rmlyc3RDaGFyYWN0ZXIoMHgyMTViKSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXAoMHgyMTVmKSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweDIxNWYpIGlzICdwdW55Y29kZScKK1BBU1MgdGVzdElETlJvdW5kVHJpcCgweDIyMTUpIGlzICdwdW55Y29kZScKK1BBU1MgdGVzdElETlJvdW5kVHJpcE5vdEZpcnN0Q2hhcmFjdGVyKDB4MjIxNSkgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwKDB4MjIxNikgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwTm90Rmlyc3RDaGFyYWN0ZXIoMHgyMjE2KSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXAoMHgyMzNmKSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweDIzM2YpIGlzICdwdW55Y29kZScKK1BBU1MgdGVzdElETlJvdW5kVHJpcCgweDIzYWUpIGlzICdwdW55Y29kZScKK1BBU1MgdGVzdElETlJvdW5kVHJpcE5vdEZpcnN0Q2hhcmFjdGVyKDB4MjNhZSkgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwKDB4MjQ0YSkgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwTm90Rmlyc3RDaGFyYWN0ZXIoMHgyNDRhKSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXAoMHgyNTcxKSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweDI1NzEpIGlzICdwdW55Y29kZScKK1BBU1MgdGVzdElETlJvdW5kVHJpcCgweDI1NzIpIGlzICdwdW55Y29kZScKK1BBU1MgdGVzdElETlJvdW5kVHJpcE5vdEZpcnN0Q2hhcmFjdGVyKDB4MjU3MikgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwKDB4MjlmNikgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwTm90Rmlyc3RDaGFyYWN0ZXIoMHgyOWY2KSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXAoMHgyOWY4KSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweDI5ZjgpIGlzICdwdW55Y29kZScKK1BBU1MgdGVzdElETlJvdW5kVHJpcCgweDI5ZjgpIGlzICdwdW55Y29kZScKK1BBU1MgdGVzdElETlJvdW5kVHJpcE5vdEZpcnN0Q2hhcmFjdGVyKDB4MjlmOCkgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwKDB4MmFmYikgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwTm90Rmlyc3RDaGFyYWN0ZXIoMHgyYWZiKSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXAoMHgyYWZkKSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweDJhZmQpIGlzICdwdW55Y29kZScKK1BBU1MgdGVzdElETlJvdW5kVHJpcCgweDMwMTQpIGlzICdwdW55Y29kZScKK1BBU1MgdGVzdElETlJvdW5kVHJpcE5vdEZpcnN0Q2hhcmFjdGVyKDB4MzAxNCkgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwKDB4MzAxNSkgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwTm90Rmlyc3RDaGFyYWN0ZXIoMHgzMDE1KSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXAoMHgzMDMzKSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweDMwMzMpIGlzICdwdW55Y29kZScKK1BBU1MgdGVzdElETlJvdW5kVHJpcCgweDMwMzUpIGlzICdwdW55Y29kZScKK1BBU1MgdGVzdElETlJvdW5kVHJpcE5vdEZpcnN0Q2hhcmFjdGVyKDB4MzAzNSkgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwKDB4MzE2NCkgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwTm90Rmlyc3RDaGFyYWN0ZXIoMHgzMTY0KSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXAoMHgzMjFkKSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweDMyMWQpIGlzICdwdW55Y29kZScKK1BBU1MgdGVzdElETlJvdW5kVHJpcCgweDMyMWUpIGlzICdwdW55Y29kZScKK1BBU1MgdGVzdElETlJvdW5kVHJpcE5vdEZpcnN0Q2hhcmFjdGVyKDB4MzIxZSkgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwKDB4MzNhZSkgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwTm90Rmlyc3RDaGFyYWN0ZXIoMHgzM2FlKSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXAoMHgzM2FmKSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweDMzYWYpIGlzICdwdW55Y29kZScKK1BBU1MgdGVzdElETlJvdW5kVHJpcCgweDMzYzYpIGlzICdwdW55Y29kZScKK1BBU1MgdGVzdElETlJvdW5kVHJpcE5vdEZpcnN0Q2hhcmFjdGVyKDB4MzNjNikgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwKDB4MzNkZikgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwTm90Rmlyc3RDaGFyYWN0ZXIoMHgzM2RmKSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXAoMHhmZTE0KSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweGZlMTQpIGlzICdwdW55Y29kZScKK1BBU1MgdGVzdElETlJvdW5kVHJpcCgweGZlMTUpIGlzICdwdW55Y29kZScKK1BBU1MgdGVzdElETlJvdW5kVHJpcE5vdEZpcnN0Q2hhcmFjdGVyKDB4ZmUxNSkgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwKDB4ZmUzZikgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwTm90Rmlyc3RDaGFyYWN0ZXIoMHhmZTNmKSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXAoMHhmZTVkKSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweGZlNWQpIGlzICdwdW55Y29kZScKK1BBU1MgdGVzdElETlJvdW5kVHJpcCgweGZlNWUpIGlzICdwdW55Y29kZScKK1BBU1MgdGVzdElETlJvdW5kVHJpcE5vdEZpcnN0Q2hhcmFjdGVyKDB4ZmU1ZSkgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwKDB4ZmZhMCkgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SUROUm91bmRUcmlwTm90Rmlyc3RDaGFyYWN0ZXIoMHhmZmEwKSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5FbmNvZGUoMHgyMDI4KSBpcyAnJXUyMDI4JworUEFTUyB0ZXN0SURORW5jb2RlTm90Rmlyc3RDaGFyYWN0ZXIoMHgyMDI4KSBpcyAnJXUyMDI4JworUEFTUyB0ZXN0SURORW5jb2RlKDB4MjAyOSkgaXMgJyV1MjAyOScKK1BBU1MgdGVzdElETkVuY29kZU5vdEZpcnN0Q2hhcmFjdGVyKDB4MjAyOSkgaXMgJyV1MjAyOScKK1BBU1MgdGVzdElETkVuY29kZSgweDJmZjApIGlzICcldTJGRjAnCitQQVNTIHRlc3RJRE5FbmNvZGVOb3RGaXJzdENoYXJhY3RlcigweDJmZjApIGlzICcldTJGRjAnCitQQVNTIHRlc3RJRE5FbmNvZGUoMHgyZmYxKSBpcyAnJXUyRkYxJworUEFTUyB0ZXN0SURORW5jb2RlTm90Rmlyc3RDaGFyYWN0ZXIoMHgyZmYxKSBpcyAnJXUyRkYxJworUEFTUyB0ZXN0SURORW5jb2RlKDB4MmZmMikgaXMgJyV1MkZGMicKK1BBU1MgdGVzdElETkVuY29kZU5vdEZpcnN0Q2hhcmFjdGVyKDB4MmZmMikgaXMgJyV1MkZGMicKK1BBU1MgdGVzdElETkVuY29kZSgweDJmZjMpIGlzICcldTJGRjMnCitQQVNTIHRlc3RJRE5FbmNvZGVOb3RGaXJzdENoYXJhY3RlcigweDJmZjMpIGlzICcldTJGRjMnCitQQVNTIHRlc3RJRE5FbmNvZGUoMHgyZmY0KSBpcyAnJXUyRkY0JworUEFTUyB0ZXN0SURORW5jb2RlTm90Rmlyc3RDaGFyYWN0ZXIoMHgyZmY0KSBpcyAnJXUyRkY0JworUEFTUyB0ZXN0SURORW5jb2RlKDB4MmZmNSkgaXMgJyV1MkZGNScKK1BBU1MgdGVzdElETkVuY29kZU5vdEZpcnN0Q2hhcmFjdGVyKDB4MmZmNSkgaXMgJyV1MkZGNScKK1BBU1MgdGVzdElETkVuY29kZSgweDJmZjYpIGlzICcldTJGRjYnCitQQVNTIHRlc3RJRE5FbmNvZGVOb3RGaXJzdENoYXJhY3RlcigweDJmZjYpIGlzICcldTJGRjYnCitQQVNTIHRlc3RJRE5FbmNvZGUoMHgyZmY3KSBpcyAnJXUyRkY3JworUEFTUyB0ZXN0SURORW5jb2RlTm90Rmlyc3RDaGFyYWN0ZXIoMHgyZmY3KSBpcyAnJXUyRkY3JworUEFTUyB0ZXN0SURORW5jb2RlKDB4MmZmOCkgaXMgJyV1MkZGOCcKK1BBU1MgdGVzdElETkVuY29kZU5vdEZpcnN0Q2hhcmFjdGVyKDB4MmZmOCkgaXMgJyV1MkZGOCcKK1BBU1MgdGVzdElETkVuY29kZSgweDJmZjkpIGlzICcldTJGRjknCitQQVNTIHRlc3RJRE5FbmNvZGVOb3RGaXJzdENoYXJhY3RlcigweDJmZjkpIGlzICcldTJGRjknCitQQVNTIHRlc3RJRE5FbmNvZGUoMHgyZmZhKSBpcyAnJXUyRkZBJworUEFTUyB0ZXN0SURORW5jb2RlTm90Rmlyc3RDaGFyYWN0ZXIoMHgyZmZhKSBpcyAnJXUyRkZBJworUEFTUyB0ZXN0SURORW5jb2RlKDB4MmZmYikgaXMgJyV1MkZGQicKK1BBU1MgdGVzdElETkVuY29kZU5vdEZpcnN0Q2hhcmFjdGVyKDB4MmZmYikgaXMgJyV1MkZGQicKK1BBU1MgdGVzdElETkVuY29kZSgweGZmZjkpIGlzICcldUZGRjknCitQQVNTIHRlc3RJRE5FbmNvZGVOb3RGaXJzdENoYXJhY3RlcigweGZmZjkpIGlzICcldUZGRjknCitQQVNTIHRlc3RJRE5FbmNvZGUoMHhmZmZhKSBpcyAnJXVGRkZBJworUEFTUyB0ZXN0SURORW5jb2RlTm90Rmlyc3RDaGFyYWN0ZXIoMHhmZmZhKSBpcyAnJXVGRkZBJworUEFTUyB0ZXN0SURORW5jb2RlKDB4ZmZmYikgaXMgJyV1RkZGQicKK1BBU1MgdGVzdElETkVuY29kZU5vdEZpcnN0Q2hhcmFjdGVyKDB4ZmZmYikgaXMgJyV1RkZGQicKK1BBU1MgdGVzdElETkVuY29kZSgweGZmZmMpIGlzICcldUZGRkMnCitQQVNTIHRlc3RJRE5FbmNvZGVOb3RGaXJzdENoYXJhY3RlcigweGZmZmMpIGlzICcldUZGRkMnCitQQVNTIHRlc3RJRE5FbmNvZGUoMHhmZmZkKSBpcyAnJXVGRkZEJworUEFTUyB0ZXN0SURORW5jb2RlTm90Rmlyc3RDaGFyYWN0ZXIoMHhmZmZkKSBpcyAnJXVGRkZEJworUEFTUyB0ZXN0SUROUm91bmRUcmlwKDB4NWMzKSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5FbmNvZGVOb3RGaXJzdENoYXJhY3RlcigweDVjMykgaXMgJyV1MDVDMycKK1BBU1MgdGVzdElETlJvdW5kVHJpcCgweDVmNCkgaXMgJ3B1bnljb2RlJworUEFTUyB0ZXN0SURORW5jb2RlTm90Rmlyc3RDaGFyYWN0ZXIoMHg1ZjQpIGlzICcldTA1RjQnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXAoMHg2ZDQpIGlzICdwdW55Y29kZScKK1BBU1MgdGVzdElETkVuY29kZU5vdEZpcnN0Q2hhcmFjdGVyKDB4NmQ0KSBpcyAnJXUwNkQ0JworUEFTUyB0ZXN0SUROUm91bmRUcmlwKDB4NzAyKSBpcyAncHVueWNvZGUnCitQQVNTIHRlc3RJRE5FbmNvZGVOb3RGaXJzdENoYXJhY3RlcigweDcwMikgaXMgJyV1MDcwMicKK1BBU1MgdGVzdElETkVuY29kZSgweDIwMGIpIGlzICcldTIwMEInCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweDIwMGIpIGlzICcnCitQQVNTIHRlc3RJRE5FbmNvZGUoMHgzMDAyKSBpcyAnJXUzMDAyJworUEFTUyB0ZXN0SUROUm91bmRUcmlwTm90Rmlyc3RDaGFyYWN0ZXIoMHgzMDAyKSBpcyAnLicKK1BBU1MgdGVzdElETkVuY29kZSgweGZmMGUpIGlzICcldUZGMEUnCitQQVNTIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcigweGZmMGUpIGlzICcuJworUEFTUyB0ZXN0SURORW5jb2RlKDB4ZmY2MSkgaXMgJyV1RkY2MScKK1BBU1MgdGVzdElETlJvdW5kVHJpcE5vdEZpcnN0Q2hhcmFjdGVyKDB4ZmY2MSkgaXMgJy4nCitQQVNTIHRlc3RJRE5FbmNvZGUoMHhmZWZmKSBpcyAnJXVGRUZGJworUEFTUyB0ZXN0SUROUm91bmRUcmlwTm90Rmlyc3RDaGFyYWN0ZXIoMHhmZWZmKSBpcyAnJworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2lkbi1zZWN1cml0eS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9pZG4tc2VjdXJpdHkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMmVkYWY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9pZG4tc2VjdXJpdHkuaHRtbApAQCAtMCwwICsxLDI3NiBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKworZnVuY3Rpb24gdGVzdElETkVuY29kZShjaGFyQ29kZSkKK3sKKyAgICB2YXIgc3RyID0gU3RyaW5nLmZyb21DaGFyQ29kZShjaGFyQ29kZSk7CisgICAgc3RyID0gbGF5b3V0VGVzdENvbnRyb2xsZXIuZW5jb2RlSG9zdE5hbWUoc3RyKTsKKyAgICBpZiAoc3RyLnN1YnN0cigwLCA0KSA9PSAieG4tLSIpCisgICAgICAgIHJldHVybiAicHVueWNvZGUiOworICAgIHJldHVybiBlc2NhcGUoc3RyKTsKK30KKworZnVuY3Rpb24gdGVzdElETkVuY29kZU5vdEZpcnN0Q2hhcmFjdGVyKGNoYXJDb2RlKQoreworICAgIHZhciBzdHIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNoYXJDb2RlKTsKKyAgICBzdHIgPSAiYSIgKyBzdHI7CisgICAgc3RyID0gbGF5b3V0VGVzdENvbnRyb2xsZXIuZW5jb2RlSG9zdE5hbWUoc3RyKTsKKyAgICBpZiAoc3RyLnN1YnN0cigwLCA0KSA9PSAieG4tLSIpCisgICAgICAgIHJldHVybiAicHVueWNvZGUiOworICAgIGlmIChzdHIuc3Vic3RyKDAsIDEpID09ICJhIikKKyAgICAgICAgc3RyID0gc3RyLnN1YnN0cigxLCBzdHIubGVuZ3RoIC0gMSk7CisgICAgcmV0dXJuIGVzY2FwZShzdHIpOworfQorCitmdW5jdGlvbiB0ZXN0SUROUm91bmRUcmlwKGNoYXJDb2RlKQoreworICAgIHZhciBzdHIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNoYXJDb2RlKTsKKyAgICBzdHIgPSBsYXlvdXRUZXN0Q29udHJvbGxlci5lbmNvZGVIb3N0TmFtZShzdHIpOworICAgIHN0ciA9IGxheW91dFRlc3RDb250cm9sbGVyLmRlY29kZUhvc3ROYW1lKHN0cik7CisgICAgaWYgKHN0ci5zdWJzdHIoMCwgNCkgPT0gInhuLS0iKQorICAgICAgICByZXR1cm4gInB1bnljb2RlIjsKKyAgICByZXR1cm4gZXNjYXBlKHN0cik7Cit9CisKK2Z1bmN0aW9uIHRlc3RJRE5Sb3VuZFRyaXBOb3RGaXJzdENoYXJhY3RlcihjaGFyQ29kZSkKK3sKKyAgICB2YXIgc3RyID0gU3RyaW5nLmZyb21DaGFyQ29kZShjaGFyQ29kZSk7CisgICAgc3RyID0gImEiICsgc3RyOworICAgIHN0ciA9IGxheW91dFRlc3RDb250cm9sbGVyLmVuY29kZUhvc3ROYW1lKHN0cik7CisgICAgc3RyID0gbGF5b3V0VGVzdENvbnRyb2xsZXIuZGVjb2RlSG9zdE5hbWUoc3RyKTsKKyAgICBpZiAoc3RyLnN1YnN0cigwLCA0KSA9PSAieG4tLSIpCisgICAgICAgIHJldHVybiAicHVueWNvZGUiOworICAgIGlmIChzdHIuc3Vic3RyKDAsIDEpID09ICJhIikKKyAgICAgICAgc3RyID0gc3RyLnN1YnN0cigxLCBzdHIubGVuZ3RoIC0gMSk7CisgICAgcmV0dXJuIGVzY2FwZShzdHIpOworfQorCitmdW5jdGlvbiB0ZXN0RnVuY3Rpb25OYW1lKGV4cGVjdGVkKQoreworICAgIGlmIChleHBlY3RlZCA9PSAiZG9lcyBub3QgZW5jb2RlIikKKyAgICAgICAgcmV0dXJuICJ0ZXN0SURORW5jb2RlIjsKKyAgICByZXR1cm4gInRlc3RJRE5Sb3VuZFRyaXAiOworfQorCitmdW5jdGlvbiBleHBlY3RlZFRlc3RSZXN1bHQoY2hhckNvZGUsIGV4cGVjdGVkKQoreworICAgIGlmIChleHBlY3RlZCA9PSAiZGlzYWxsb3dlZCIpCisgICAgICAgIHJldHVybiAiJ3B1bnljb2RlJyI7CisgICAgaWYgKGV4cGVjdGVkID09ICJhbGxvd2VkIiB8fCBleHBlY3RlZCA9PSAiZG9lcyBub3QgZW5jb2RlIikKKyAgICAgICAgcmV0dXJuICInIiArIGVzY2FwZShTdHJpbmcuZnJvbUNoYXJDb2RlKGNoYXJDb2RlKSkgKyAiJyI7CisgICAgcmV0dXJuICInIiArIGV4cGVjdGVkICsgIiciOworfQorCitmdW5jdGlvbiB0ZXN0SUROQ2hhcmFjdGVyKGNoYXJDb2RlLCBleHBlY3RlZCwgZXhwZWN0ZWROb3RGaXJzdENoYXJhY3RlcikKK3sKKyAgICBpZiAoZXhwZWN0ZWROb3RGaXJzdENoYXJhY3RlciA9PSBudWxsKQorICAgICAgICBleHBlY3RlZE5vdEZpcnN0Q2hhcmFjdGVyID0gZXhwZWN0ZWQ7CisKKyAgICBzaG91bGRCZSh0ZXN0RnVuY3Rpb25OYW1lKGV4cGVjdGVkKSArICIoMHgiICsgY2hhckNvZGUudG9TdHJpbmcoMTYpICsgIikiLAorICAgICAgICBleHBlY3RlZFRlc3RSZXN1bHQoY2hhckNvZGUsIGV4cGVjdGVkKSk7CisKKyAgICBzaG91bGRCZSh0ZXN0RnVuY3Rpb25OYW1lKGV4cGVjdGVkTm90Rmlyc3RDaGFyYWN0ZXIpICsgIk5vdEZpcnN0Q2hhcmFjdGVyKDB4IiArIGNoYXJDb2RlLnRvU3RyaW5nKDE2KSArICIpIiwKKyAgICAgICAgZXhwZWN0ZWRUZXN0UmVzdWx0KGNoYXJDb2RlLCBleHBlY3RlZE5vdEZpcnN0Q2hhcmFjdGVyKSk7ICAgIAorfQorCitmdW5jdGlvbiB0ZXN0QmVjb21lc1NwYWNlSUROQ2hhcmFjdGVyKGNoYXJDb2RlKQoreworICAgIHNob3VsZEJlKCJ0ZXN0SUROUm91bmRUcmlwKDB4IiArIGNoYXJDb2RlLnRvU3RyaW5nKDE2KSArICIpIiwgIiclMjAnIik7CisgICAgc2hvdWxkQmUoInRlc3RJRE5Sb3VuZFRyaXBGaXJzdENoYXJhY3RlcigweCIgKyBjaGFyQ29kZS50b1N0cmluZygxNikgKyAiKSIsICInJTIwJyIpOworfQorCitmdW5jdGlvbiB0ZXN0QmVjb21lc0FTQ0lJSUROQ2hhcmFjdGVyKGNoYXJDb2RlLCBleHBlY3RlZCkKK3sKKyAgICBzaG91bGRCZSgidGVzdElETlJvdW5kVHJpcCgweCIgKyBjaGFyQ29kZS50b1N0cmluZygxNikgKyAiKSIsICInIiArIGV4cGVjdGVkICsgIiciKTsKKyAgICBzaG91bGRCZSgidGVzdElETlJvdW5kVHJpcEZpcnN0Q2hhcmFjdGVyKDB4IiArIGNoYXJDb2RlLnRvU3RyaW5nKDE2KSArICIpIiwgIiciICsgZXhwZWN0ZWQgKyAiJyIpOworfQorCitmdW5jdGlvbiB0ZXN0RGlzYWxsb3dlZElETkNoYXJhY3RlcihjaGFyQ29kZSkKK3sKKyAgICBzaG91bGRCZSgidGVzdElETlJvdW5kVHJpcCgweCIgKyBjaGFyQ29kZS50b1N0cmluZygxNikgKyAiKSIsICIncHVueWNvZGUnIik7CisgICAgc2hvdWxkQmUoInRlc3RJRE5Sb3VuZFRyaXBGaXJzdENoYXJhY3RlcigweCIgKyBjaGFyQ29kZS50b1N0cmluZygxNikgKyAiKSIsICIncHVueWNvZGUnIik7Cit9CisKK2Z1bmN0aW9uIHRlc3RBbGxvd2VkSUROQ2hhcmFjdGVyKGNoYXJDb2RlKQoreworICAgIHZhciBleHBlY3RlZCA9IGVzY2FwZShTdHJpbmcuZnJvbUNoYXJDb2RlKGNoYXJDb2RlKSk7CisgICAgc2hvdWxkQmUoInRlc3RJRE5Sb3VuZFRyaXAoMHgiICsgY2hhckNvZGUudG9TdHJpbmcoMTYpICsgIikiLCAiJyIgKyBleHBlY3RlZCArICInIik7CisgICAgc2hvdWxkQmUoInRlc3RJRE5Sb3VuZFRyaXBGaXJzdENoYXJhY3RlcigweCIgKyBjaGFyQ29kZS50b1N0cmluZygxNikgKyAiKSIsICInIiArIGV4cGVjdGVkICsgIiciKTsKK30KKworZnVuY3Rpb24gdGVzdERvZXNOb3RFbmNvZGVJRE5DaGFyYWN0ZXIoY2hhckNvZGUpCit7CisgICAgdmFyIGV4cGVjdGVkID0gZXNjYXBlKFN0cmluZy5mcm9tQ2hhckNvZGUoY2hhckNvZGUpKTsKKyAgICBzaG91bGRCZSgidGVzdElETkVuY29kZSgweCIgKyBjaGFyQ29kZS50b1N0cmluZygxNikgKyAiKSIsICInIiArIGV4cGVjdGVkICsgIiciKTsKKyAgICBzaG91bGRCZSgidGVzdElETkVuY29kZVRyaXBGaXJzdENoYXJhY3RlcigweCIgKyBjaGFyQ29kZS50b1N0cmluZygxNikgKyAiKSIsICInIiArIGV4cGVjdGVkICsgIiciKTsKK30KKwordmFyIGlzT2xkZXJJQ1UgPSB0ZXN0SURORW5jb2RlKDB4MzAwMikgPT0gIi4iOworCisvKiBBbGxvd2VkIENoYXJhY3RlcnMgLSBkb3QgYW5kIHNsYXNoICovCit0ZXN0SUROQ2hhcmFjdGVyKCIuIi5jaGFyQ29kZUF0KDApLCAiYWxsb3dlZCIpOwordGVzdElETkNoYXJhY3RlcigiLyIuY2hhckNvZGVBdCgwKSwgImFsbG93ZWQiKTsKKworLyogQWxsb3dlZCBDaGFyYWN0ZXJzIC0gb25lIGNoYXJhY3RlciBmb3IgZWFjaCBzY3JpcHQgaW4gdGhlIGRlZmF1bHQgSUROIHdoaXRlbGlzdCovCit0ZXN0SUROQ2hhcmFjdGVyKDB4MDA2MSwgImFsbG93ZWQiKTsKK3Rlc3RJRE5DaGFyYWN0ZXIoMHgwNjMzLCAiYWxsb3dlZCIpOwordGVzdElETkNoYXJhY3RlcigweDA1NjEsICJhbGxvd2VkIik7Cit0ZXN0SUROQ2hhcmFjdGVyKDB4MzEwNSwgImFsbG93ZWQiKTsKK3Rlc3RJRE5DaGFyYWN0ZXIoMHgxNjEzLCAiYWxsb3dlZCIpOwordGVzdElETkNoYXJhY3RlcigweDA5MDUsICJhbGxvd2VkIik7Cit0ZXN0SUROQ2hhcmFjdGVyKDB4MEE4NSwgImFsbG93ZWQiKTsKK3Rlc3RJRE5DaGFyYWN0ZXIoMHgwQTA1LCAiYWxsb3dlZCIpOwordGVzdElETkNoYXJhY3RlcigweDExMTUsICJhbGxvd2VkIik7Cit0ZXN0SUROQ2hhcmFjdGVyKDB4NEUyRCwgImFsbG93ZWQiKTsKK3Rlc3RJRE5DaGFyYWN0ZXIoMHgwNUQwLCAiYWxsb3dlZCIpOwordGVzdElETkNoYXJhY3RlcigweDMwNDEsICJhbGxvd2VkIik7Cit0ZXN0SUROQ2hhcmFjdGVyKDB4MzBBMSwgImFsbG93ZWQiKTsKK3Rlc3RJRE5DaGFyYWN0ZXIoMHgwQjk0LCAiYWxsb3dlZCIpOwordGVzdElETkNoYXJhY3RlcigweDBFMDEsICJhbGxvd2VkIik7Cit0ZXN0SUROQ2hhcmFjdGVyKDB4QTAwMCwgImFsbG93ZWQiKTsKKworLyogSUNVIGNvbnZlcnRzIHRoZXNlIHRvIG90aGVyIGFsbG93ZWQgY2hhcmFjdGVycywgc28gdGhlIG9yaWdpbmFsIGNoYXJhY3RlciBjYW4ndCBiZSB1c2VkIHRvIGdldCB0byBhIHBoaXNoeSBkb21haW4gbmFtZSAqLwordGVzdElETkNoYXJhY3RlcigweDIwMjQsICIuIik7Cit0ZXN0SUROQ2hhcmFjdGVyKDB4RkU1MiwgIi4iKTsKK3Rlc3RJRE5DaGFyYWN0ZXIoMHhGRjBGLCAiLyIpOworCisvKiBJQ1UgY29udmVydHMgdGhlc2UgY2hhcmFjdGVycyB0byBiYWNrc2xhc2gsIHNvIHRoZSBvcmlnaW5hbCBjaGFyYWN0ZXIgY2FuJ3QgYmUgdXNlZCB0byBnZXQgdG8gYSBwaGlzaHkgZG9tYWluIG5hbWUgKi8KK3Rlc3RJRE5DaGFyYWN0ZXIoMHhGRTY4LCAiJTVDIik7Cit0ZXN0SUROQ2hhcmFjdGVyKDB4RkYzQywgIiU1QyIpOworCisvKiBJQ1UgY29udmVydHMgdGhlc2UgY2hhcmFjdGVycyB0byBzcGFjZSwgc28gdGhlIG9yaWdpbmFsIGNoYXJhY3RlciBjYW4ndCBiZSB1c2VkIHRvIGdldCB0byBhIHBoaXNoeSBkb21haW4gbmFtZSAqLwordGVzdElETkNoYXJhY3RlcigweDAwQTAsICIlMjAiKTsKK3Rlc3RJRE5DaGFyYWN0ZXIoMHgyMDAwLCAiJTIwIik7Cit0ZXN0SUROQ2hhcmFjdGVyKDB4MjAwMSwgIiUyMCIpOwordGVzdElETkNoYXJhY3RlcigweDIwMDIsICIlMjAiKTsKK3Rlc3RJRE5DaGFyYWN0ZXIoMHgyMDAzLCAiJTIwIik7Cit0ZXN0SUROQ2hhcmFjdGVyKDB4MjAwNCwgIiUyMCIpOwordGVzdElETkNoYXJhY3RlcigweDIwMDUsICIlMjAiKTsKK3Rlc3RJRE5DaGFyYWN0ZXIoMHgyMDA2LCAiJTIwIik7Cit0ZXN0SUROQ2hhcmFjdGVyKDB4MjAwNywgIiUyMCIpOwordGVzdElETkNoYXJhY3RlcigweDIwMDgsICIlMjAiKTsKK3Rlc3RJRE5DaGFyYWN0ZXIoMHgyMDA5LCAiJTIwIik7Cit0ZXN0SUROQ2hhcmFjdGVyKDB4MjAwQSwgIiUyMCIpOwordGVzdElETkNoYXJhY3RlcigweDIwMkYsICIlMjAiKTsKK3Rlc3RJRE5DaGFyYWN0ZXIoMHgyMDVGLCAiJTIwIik7Cit0ZXN0SUROQ2hhcmFjdGVyKDB4MzAwMCwgIiUyMCIpOworCisvKiBEaXNhbGxvdyB0aGVzZSBjaGFyYWN0ZXJzLiAgU29tZSBvZiB0aGVzZSBhcmUga25vd24gbG9va2FsaWtlIGNoYXJhY3RlcnMgZm9yIGRvdCBhbmQgc2xhc2guICAKKyAgIEEgbG90IG9mIHRoZXNlIGFyZSBmcm9tIE1vemlsbGEncyBibGFja2xpc3Q6IGh0dHA6Ly9rYi5tb3ppbGxhemluZS5vcmcvTmV0d29yay5JRE4uYmxhY2tsaXN0X2NoYXJzCisqLwordGVzdElETkNoYXJhY3RlcigweDAwQkMsICJkaXNhbGxvd2VkIik7Cit0ZXN0SUROQ2hhcmFjdGVyKDB4MDBCRCwgImRpc2FsbG93ZWQiKTsKK3Rlc3RJRE5DaGFyYWN0ZXIoMHgwMEVELCAiZGlzYWxsb3dlZCIpOwordGVzdElETkNoYXJhY3RlcigweDAxQzMsICJkaXNhbGxvd2VkIik7Cit0ZXN0SUROQ2hhcmFjdGVyKDB4MDI1MSwgImRpc2FsbG93ZWQiKTsKK3Rlc3RJRE5DaGFyYWN0ZXIoMHgwMjYxLCAiZGlzYWxsb3dlZCIpOwordGVzdElETkNoYXJhY3RlcigweDAzMzcsICJkaXNhbGxvd2VkIik7Cit0ZXN0SUROQ2hhcmFjdGVyKDB4MDMzNywgImRpc2FsbG93ZWQiKTsKK3Rlc3RJRE5DaGFyYWN0ZXIoMHgwMzM4LCAiZGlzYWxsb3dlZCIpOwordGVzdElETkNoYXJhY3RlcigweDAzMzgsICJkaXNhbGxvd2VkIik7Cit0ZXN0SUROQ2hhcmFjdGVyKDB4MDVCNCwgImRpc2FsbG93ZWQiKTsKK3Rlc3RJRE5DaGFyYWN0ZXIoMHgwNUJDLCAiZGlzYWxsb3dlZCIpOwordGVzdElETkNoYXJhY3RlcigweDA2NjAsICJkaXNhbGxvd2VkIik7Cit0ZXN0SUROQ2hhcmFjdGVyKDB4MDZGMCwgImRpc2FsbG93ZWQiKTsKK3Rlc3RJRE5DaGFyYWN0ZXIoMHgxMTVGLCAiZGlzYWxsb3dlZCIpOwordGVzdElETkNoYXJhY3RlcigweDExNjAsICJkaXNhbGxvd2VkIik7Cit0ZXN0SUROQ2hhcmFjdGVyKDB4MjAyNywgImRpc2FsbG93ZWQiKTsKK3Rlc3RJRE5DaGFyYWN0ZXIoMHgyMDM5LCAiZGlzYWxsb3dlZCIpOwordGVzdElETkNoYXJhY3RlcigweDIwM0EsICJkaXNhbGxvd2VkIik7Cit0ZXN0SUROQ2hhcmFjdGVyKDB4MjA0NCwgImRpc2FsbG93ZWQiKTsKK3Rlc3RJRE5DaGFyYWN0ZXIoMHgyMDQ0LCAiZGlzYWxsb3dlZCIpOwordGVzdElETkNoYXJhY3RlcigweDIxNTQsICJkaXNhbGxvd2VkIik7Cit0ZXN0SUROQ2hhcmFjdGVyKDB4MjE1NSwgImRpc2FsbG93ZWQiKTsKK3Rlc3RJRE5DaGFyYWN0ZXIoMHgyMTU2LCAiZGlzYWxsb3dlZCIpOwordGVzdElETkNoYXJhY3RlcigweDIxNTksICJkaXNhbGxvd2VkIik7Cit0ZXN0SUROQ2hhcmFjdGVyKDB4MjE1QSwgImRpc2FsbG93ZWQiKTsKK3Rlc3RJRE5DaGFyYWN0ZXIoMHgyMTVCLCAiZGlzYWxsb3dlZCIpOwordGVzdElETkNoYXJhY3RlcigweDIxNUYsICJkaXNhbGxvd2VkIik7Cit0ZXN0SUROQ2hhcmFjdGVyKDB4MjIxNSwgImRpc2FsbG93ZWQiKTsKK3Rlc3RJRE5DaGFyYWN0ZXIoMHgyMjE2LCAiZGlzYWxsb3dlZCIpOwordGVzdElETkNoYXJhY3RlcigweDIzM0YsICJkaXNhbGxvd2VkIik7Cit0ZXN0SUROQ2hhcmFjdGVyKDB4MjNBRSwgImRpc2FsbG93ZWQiKTsKK3Rlc3RJRE5DaGFyYWN0ZXIoMHgyNDRBLCAiZGlzYWxsb3dlZCIpOwordGVzdElETkNoYXJhY3RlcigweDI1NzEsICJkaXNhbGxvd2VkIik7Cit0ZXN0SUROQ2hhcmFjdGVyKDB4MjU3MiwgImRpc2FsbG93ZWQiKTsKK3Rlc3RJRE5DaGFyYWN0ZXIoMHgyOUY2LCAiZGlzYWxsb3dlZCIpOwordGVzdElETkNoYXJhY3RlcigweDI5RjgsICJkaXNhbGxvd2VkIik7Cit0ZXN0SUROQ2hhcmFjdGVyKDB4MjlGOCwgImRpc2FsbG93ZWQiKTsKK3Rlc3RJRE5DaGFyYWN0ZXIoMHgyQUZCLCAiZGlzYWxsb3dlZCIpOwordGVzdElETkNoYXJhY3RlcigweDJBRkQsICJkaXNhbGxvd2VkIik7Cit0ZXN0SUROQ2hhcmFjdGVyKDB4MzAxNCwgImRpc2FsbG93ZWQiKTsKK3Rlc3RJRE5DaGFyYWN0ZXIoMHgzMDE1LCAiZGlzYWxsb3dlZCIpOwordGVzdElETkNoYXJhY3RlcigweDMwMzMsICJkaXNhbGxvd2VkIik7Cit0ZXN0SUROQ2hhcmFjdGVyKDB4MzAzNSwgImRpc2FsbG93ZWQiKTsKK3Rlc3RJRE5DaGFyYWN0ZXIoMHgzMTY0LCAiZGlzYWxsb3dlZCIpOwordGVzdElETkNoYXJhY3RlcigweDMyMUQsICJkaXNhbGxvd2VkIik7Cit0ZXN0SUROQ2hhcmFjdGVyKDB4MzIxRSwgImRpc2FsbG93ZWQiKTsKK3Rlc3RJRE5DaGFyYWN0ZXIoMHgzM0FFLCAiZGlzYWxsb3dlZCIpOwordGVzdElETkNoYXJhY3RlcigweDMzQUYsICJkaXNhbGxvd2VkIik7Cit0ZXN0SUROQ2hhcmFjdGVyKDB4MzNDNiwgImRpc2FsbG93ZWQiKTsKK3Rlc3RJRE5DaGFyYWN0ZXIoMHgzM0RGLCAiZGlzYWxsb3dlZCIpOwordGVzdElETkNoYXJhY3RlcigweEZFMTQsICJkaXNhbGxvd2VkIik7Cit0ZXN0SUROQ2hhcmFjdGVyKDB4RkUxNSwgImRpc2FsbG93ZWQiKTsKK3Rlc3RJRE5DaGFyYWN0ZXIoMHhGRTNGLCAiZGlzYWxsb3dlZCIpOwordGVzdElETkNoYXJhY3RlcigweEZFNUQsICJkaXNhbGxvd2VkIik7Cit0ZXN0SUROQ2hhcmFjdGVyKDB4RkU1RSwgImRpc2FsbG93ZWQiKTsKK3Rlc3RJRE5DaGFyYWN0ZXIoMHhGRkEwLCAiZGlzYWxsb3dlZCIpOworCisvKiBJQ1Ugd29uJ3QgZW5jb2RlIHRoZXNlIGNoYXJhY3RlcnMgaW4gSUROLCB0aHVzIHdlIHNob3VsZCBhbHdheXMgZ2V0ICdob3N0IG5vdCBmb3VuZCcuICovCit0ZXN0SUROQ2hhcmFjdGVyKDB4MjAyOCwgImRvZXMgbm90IGVuY29kZSIpOwordGVzdElETkNoYXJhY3RlcigweDIwMjksICJkb2VzIG5vdCBlbmNvZGUiKTsKK3Rlc3RJRE5DaGFyYWN0ZXIoMHgyRkYwLCAiZG9lcyBub3QgZW5jb2RlIik7Cit0ZXN0SUROQ2hhcmFjdGVyKDB4MkZGMSwgImRvZXMgbm90IGVuY29kZSIpOwordGVzdElETkNoYXJhY3RlcigweDJGRjIsICJkb2VzIG5vdCBlbmNvZGUiKTsKK3Rlc3RJRE5DaGFyYWN0ZXIoMHgyRkYzLCAiZG9lcyBub3QgZW5jb2RlIik7Cit0ZXN0SUROQ2hhcmFjdGVyKDB4MkZGNCwgImRvZXMgbm90IGVuY29kZSIpOwordGVzdElETkNoYXJhY3RlcigweDJGRjUsICJkb2VzIG5vdCBlbmNvZGUiKTsKK3Rlc3RJRE5DaGFyYWN0ZXIoMHgyRkY2LCAiZG9lcyBub3QgZW5jb2RlIik7Cit0ZXN0SUROQ2hhcmFjdGVyKDB4MkZGNywgImRvZXMgbm90IGVuY29kZSIpOwordGVzdElETkNoYXJhY3RlcigweDJGRjgsICJkb2VzIG5vdCBlbmNvZGUiKTsKK3Rlc3RJRE5DaGFyYWN0ZXIoMHgyRkY5LCAiZG9lcyBub3QgZW5jb2RlIik7Cit0ZXN0SUROQ2hhcmFjdGVyKDB4MkZGQSwgImRvZXMgbm90IGVuY29kZSIpOwordGVzdElETkNoYXJhY3RlcigweDJGRkIsICJkb2VzIG5vdCBlbmNvZGUiKTsKK3Rlc3RJRE5DaGFyYWN0ZXIoMHhGRkY5LCAiZG9lcyBub3QgZW5jb2RlIik7Cit0ZXN0SUROQ2hhcmFjdGVyKDB4RkZGQSwgImRvZXMgbm90IGVuY29kZSIpOwordGVzdElETkNoYXJhY3RlcigweEZGRkIsICJkb2VzIG5vdCBlbmNvZGUiKTsKK3Rlc3RJRE5DaGFyYWN0ZXIoMHhGRkZDLCAiZG9lcyBub3QgZW5jb2RlIik7Cit0ZXN0SUROQ2hhcmFjdGVyKDB4RkZGRCwgImRvZXMgbm90IGVuY29kZSIpOworCisvKiBJQ1Ugd29uJ3QgZW5jb2RlIHRoZXNlIGNoYXJhY3RlcnMgaWYgdGhleSdyZSBub3QgdGhlIGZpcnN0IGNoYXJhY3RlciBpbiB0aGUgaG9zdCBuYW1lLiAgCisgICBJZiB0aGUgY2hhcmFjdGVyIGRvZXMgZ2V0IGVuY29kZWQgYXMgdGhlIGZpcnN0IGNoYXJhY3RlciwgdGhlbiB3ZSB3aWxsIGRpc2FsbG93IGl0ICovCisgICAKK3Rlc3RJRE5DaGFyYWN0ZXIoMHgwNUMzLCAiZGlzYWxsb3dlZCIsICJkb2VzIG5vdCBlbmNvZGUiKTsKK3Rlc3RJRE5DaGFyYWN0ZXIoMHgwNUY0LCAiZGlzYWxsb3dlZCIsICJkb2VzIG5vdCBlbmNvZGUiKTsKK3Rlc3RJRE5DaGFyYWN0ZXIoMHgwNkQ0LCAiZGlzYWxsb3dlZCIsICJkb2VzIG5vdCBlbmNvZGUiKTsKK3Rlc3RJRE5DaGFyYWN0ZXIoMHgwNzAyLCAiZGlzYWxsb3dlZCIsICJkb2VzIG5vdCBlbmNvZGUiKTsKKworLyogSUNVIHdvbid0IGVuY29kZSB0aGVzZSBjaGFyYWN0ZXJzIGlmIHRoZXkncmUgdGhlIGZpcnN0IGNoYXJhY3RlciBpbiB0aGUgaG9zdCBuYW1lLiAgCisgICBJZiB0aGUgY2hhcmFjdGVyIGRvZXMgZ2V0IGVuY29kZWQgYXMgdGhlIGZpcnN0IGNoYXJhY3RlciwgdGhlbiBJQ1UgY29udmVydHMgaXQgdG8gYW5vdGhlciBhbGxvd2VkIGNoYXJhY3RlciAqLworCitpZiAoaXNPbGRlcklDVSkgeworICAgIHRlc3RJRE5DaGFyYWN0ZXIoMHgyMDBCLCAiIik7CisgICAgdGVzdElETkNoYXJhY3RlcigweDMwMDIsICIuIik7CisgICAgdGVzdElETkNoYXJhY3RlcigweEZGMEUsICIuIik7CisgICAgdGVzdElETkNoYXJhY3RlcigweEZGNjEsICIuIik7CisgICAgdGVzdElETkNoYXJhY3RlcigweEZFRkYsICIiKTsKK30gZWxzZSB7CisgICAgdGVzdElETkNoYXJhY3RlcigweDIwMEIsICJkb2VzIG5vdCBlbmNvZGUiLCAiIik7CisgICAgdGVzdElETkNoYXJhY3RlcigweDMwMDIsICJkb2VzIG5vdCBlbmNvZGUiLCAiLiIpOworICAgIHRlc3RJRE5DaGFyYWN0ZXIoMHhGRjBFLCAiZG9lcyBub3QgZW5jb2RlIiwgIi4iKTsKKyAgICB0ZXN0SUROQ2hhcmFjdGVyKDB4RkY2MSwgImRvZXMgbm90IGVuY29kZSIsICIuIik7CisgICAgdGVzdElETkNoYXJhY3RlcigweEZFRkYsICJkb2VzIG5vdCBlbmNvZGUiLCAiIik7Cit9CisKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9pbnZhbGlkLVVURi04LTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9pbnZhbGlkLVVURi04LTItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2YzZmMjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2ludmFsaWQtVVRGLTgtMi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitUaGlzIHRlc3RzIHRoZSBkZWNvZGluZyBvZiBpbnZhbGlkIFVURi04IHNlcXVlbmNlcy4KKworVGhlIGZvbGxvd2luZyBzaG91bGQgYmU6ICLRgu+/ve+/vdGCIO+/ve+/ve+/vSIgb3IgItGC77+977+90YIg77+977+977+977+977+977+977+977+9IjoKK9GC77+977+90YIg77+977+977+9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2ludmFsaWQtVVRGLTgtMi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9pbnZhbGlkLVVURi04LTIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNmRkZDk0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9pbnZhbGlkLVVURi04LTIuaHRtbApAQCAtMCwwICsxLDIzIEBACis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgorPHN0eWxlPgorLyogRm9yY2UgZm9udCBmYWxsYmFjayBvbiBXaW5kb3dzIHRvIG1hdGNoIE1hYyBPUyBYICovCitAZm9udC1mYWNlIHsKKyAgICBmb250LWZhbWlseTogJ3RpbWVzJzsKKyAgICBzcmM6IGxvY2FsKCdMdWNpZGEgR3JhbmRlJyk7CisgICAgdW5pY29kZS1yYW5nZTogVStGRkZEOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cis8L3NjcmlwdD4KKzxwPlRoaXMgdGVzdHMgdGhlIGRlY29kaW5nIG9mIGludmFsaWQgVVRGLTggc2VxdWVuY2VzLjwvcD4KK1RoZSBmb2xsb3dpbmcgc2hvdWxkIGJlOiAi0YLvv73vv73RgiDvv73vv73vv70iIG9yICLRgu+/ve+/vdGCIO+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/vSI6Cis8cD7Rgu+/ve+/vdGCIO+/ve+/ve+/vTwvcD4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9pbnZhbGlkLVVURi04Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2ludmFsaWQtVVRGLTguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYThhOWIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9pbnZhbGlkLVVURi04Lmh0bWwKQEAgLTAsMCArMSwxOSBAQAorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KKzxzdHlsZT4KKy8qIEZvcmNlIGZvbnQgZmFsbGJhY2sgb24gV2luZG93cyB0byBtYXRjaCBNYWMgT1MgWCAqLworQGZvbnQtZmFjZSB7CisgICAgZm9udC1mYW1pbHk6ICd0aW1lcyc7CisgICAgc3JjOiBsb2NhbCgnTHVjaWRhIEdyYW5kZScpOworICAgIHVuaWNvZGUtcmFuZ2U6IFUrRkZGRDsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhlIHJlbmRlcmluZyBvZiBpbnZhbGlkIFVURi04IHNlcXVlbmNlcy48L3A+Cis8cD5UaGUgb3V0cHV0IHNob3VsZCBiZTogItGCPz/RgiIgKHdpdGggYmxhY2sgZGlhbW9uZHMgaW4gcGxhY2Ugb2YgcXVlc3Rpb24gbWFya3MpLjwvcD4KKzxocj4KKzxwPtGC77+977+90YI8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2ludmFsaWQtbXVsdGktYnl0ZS1vdmVyLWNvbnN1bXB0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvaW52YWxpZC1tdWx0aS1ieXRlLW92ZXItY29uc3VtcHRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkNTQyYWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2ludmFsaWQtbXVsdGktYnl0ZS1vdmVyLWNvbnN1bXB0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1Rlc3QgaWYgYW4gaW52YWxpZCBtdWx0aS1ieXRlIHNlcXVlbmNlIGlzIG9udmVyY29uc3VtZWQgbGVhZGluZyB0byBhbiBYU1MgdmVjdG9yCisKK0FCQ0QiIG9uY2hhbmdlPSJ0ZXN0PSdGYWlsZWQnIiB1c2luZyBtYWxmb3JtZWQgYnl0ZSBzZXF1ZW5jZSAweDgzIDB4MjIKK1Bhc3NlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9pbnZhbGlkLW11bHRpLWJ5dGUtb3Zlci1jb25zdW1wdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9pbnZhbGlkLW11bHRpLWJ5dGUtb3Zlci1jb25zdW1wdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwZDdmMGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2ludmFsaWQtbXVsdGktYnl0ZS1vdmVyLWNvbnN1bXB0aW9uLmh0bWwKQEAgLTAsMCArMSwzNCBAQAorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVNoaWZ0X0pJUyI+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK3ZhciB0ZXN0ID0gIlBhc3NlZCI7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgdmFyIHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5wdXQxIik7CisgICAgaWYgKGRvY3VtZW50LmFsbCkgIHsgIAorICAgICAgICB0LmZpcmVFdmVudCgib25jaGFuZ2UiKTsgIAorICAgIH0gZWxzZSB7ICAKKyAgICAgICAgdmFyIGV2dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJIVE1MRXZlbnRzIik7ICAKKyAgICAgICAgZXZ0LmluaXRFdmVudCgiY2hhbmdlIix0cnVlLHRydWUpOyAgCisgICAgICAgIHQuZGlzcGF0Y2hFdmVudChldnQpOyAgCisgICAgfQorIAorICAgIHZhciByID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOworCisgICAgaWYgKHRlc3Q9PSJQYXNzZWQiKQorICAgICAgICByLmlubmVySFRNTCA9ICJQYXNzZWQiOworICAgIGVsc2UKKyAgICAgICAgci5pbm5lckhUTUwgPSAiRmFpbGVkIjsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCk7Ij4KKzxwPlRlc3QgaWYgYW4gaW52YWxpZCBtdWx0aS1ieXRlIHNlcXVlbmNlIGlzIG9udmVyY29uc3VtZWQgbGVhZGluZyB0byBhbgorWFNTIHZlY3RvcjwvcD4KKzxpbnB1dCBpZD0iaW5wdXQxIiBzcmM9IiIgdHlwZT0ieHNz77+9Ij5BQkNEIiBvbmNoYW5nZT0idGVzdD0nRmFpbGVkJyIgdXNpbmcgbWFsZm9ybWVkIGJ5dGUgc2VxdWVuY2UgMHg4MyAweDIyPGJyPgorPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvaW52YWxpZC14bWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9pbnZhbGlkLXhtbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTRjMGIwZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvaW52YWxpZC14bWwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1Rlc3Rpbmc6IGludmFsaWQteG1sLXV0ZjgueG1sCitQQVNTIGlmcmFtZS5jb250ZW50RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnRhZ05hbWUgaXMgInJvb3QiCitQQVNTIGlmcmFtZS5jb250ZW50RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0ZXN0JykubGVuZ3RoIDwgMSBpcyB0cnVlCitUZXN0aW5nOiBpbnZhbGlkLXhtbC11dGYxNi54bWwKK1BBU1MgaWZyYW1lLmNvbnRlbnREb2N1bWVudC5kb2N1bWVudEVsZW1lbnQudGFnTmFtZSBpcyAicm9vdCIKK1BBU1MgaWZyYW1lLmNvbnRlbnREb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3Rlc3QnKS5sZW5ndGggPCAxIGlzIHRydWUKK1Rlc3Rpbmc6IGludmFsaWQteG1sLXNoaWZ0LWppcy54bWwKK1BBU1MgaWZyYW1lLmNvbnRlbnREb2N1bWVudC5kb2N1bWVudEVsZW1lbnQudGFnTmFtZSBpcyAicm9vdCIKK1BBU1MgaWZyYW1lLmNvbnRlbnREb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3Rlc3QnKS5sZW5ndGggPCAxIGlzIHRydWUKK1Rlc3Rpbmc6IGludmFsaWQteG1sLXgtbWFjLXRoYWkueG1sCitGQUlMIGlmcmFtZS5jb250ZW50RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnRhZ05hbWUgc2hvdWxkIGJlIHJvb3QuIFdhcyBodG1sLgorUEFTUyBpZnJhbWUuY29udGVudERvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndGVzdCcpLmxlbmd0aCA8IDEgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvaW52YWxpZC14bWwuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvaW52YWxpZC14bWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYmVkNDdiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9pbnZhbGlkLXhtbC5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaW52YWxpZC14bWwuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9qYXBhbmVzZS1lbmNvZGluZy1taXgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9qYXBhbmVzZS1lbmNvZGluZy1taXgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3YjEzODIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2phcGFuZXNlLWVuY29kaW5nLW1peC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitTb21lIHRleHQgaGVyZSBpcyBlbmNvZGVkIGFzIEVVQy1KUCwgYW5kIHNvbWUgKGluIGNvbW1lbnQpIGFzIFNoaWZ0X0pJUy4gU2luY2UgdGhlcmUgaXMgYW4gZXhwbGljaXQgZW5jb2RpbmcgZGVjbGFyYXRpb24sIGF1dG8tZGV0ZWN0aW9uIHNob3VsZG4ndCBjaGFuZ2UgdGhlIGVuY29kaW5nLgorCivjg4vjg4Pjg53jg7Pjg4bjg6zjg5MKKworU2hvdWxkIGJlIEVVQy1KUDogRVVDLUpQCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL2phcGFuZXNlLWVuY29kaW5nLW1peC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9qYXBhbmVzZS1lbmNvZGluZy1taXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDk0MDNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9qYXBhbmVzZS1lbmNvZGluZy1taXguaHRtbApAQCAtMCwwICsxLDkgQEAKKzwhZG9jdHlwZSBodG1sIHB1YmxpYyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWwgZGlyPSJMVFIiIGxhbmc9ImphIj4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUVVQy1KUCI+Cis8cD5Tb21lIHRleHQgaGVyZSBpcyBlbmNvZGVkIGFzIEVVQy1KUCwgYW5kIHNvbWUgKGluIGNvbW1lbnQpIGFzIFNoaWZ0X0pJUy4gU2luY2UgdGhlcmUgaXMgYW4gZXhwbGljaXQgZW5jb2RpbmcgZGVjbGFyYXRpb24sIGF1dG8tZGV0ZWN0aW9uIHNob3VsZG4ndCBjaGFuZ2UgdGhlIGVuY29kaW5nLjwvcD48cD6ly6XDpd2l86XGpeyl0zwvcD4KKzwhLS2JRYNKg4mDgINSg4GDk4Nng0GDRYNnIIKxgrGCqYLnIC0tPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworZG9jdW1lbnQud3JpdGUoIlNob3VsZCBiZSBFVUMtSlA6ICIgKyAoZG9jdW1lbnQuY2hhcnNldCA/IGRvY3VtZW50LmNoYXJzZXQgOiBkb2N1bWVudC5jaGFyYWN0ZXJTZXQpKTs8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvbGF0aW4xLXdpbmxhdGluLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvbGF0aW4xLXdpbmxhdGluLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNThjMTQxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9sYXRpbjEtd2lubGF0aW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTcgQEAKK1dlIG5lZWQgdG8gdHJlYXQgTGF0aW4tMSBhcyBpZiBpdCB3ZXJlIHdpbmRvd3MtMTI1Miwgc2VlIGJ1ZyA3NjAyLgorCitBcyBlbnRpdGllczog4oKswoHGkuKAoOKAoQorCisoZXNjYXBlZCk6ICV1MjBBQyU4MSV1MDE5MiV1MjAyMCV1MjAyMQorCitJbmxpbmU6IOKCrMKBxpLigKDigKEKKworKGVzY2FwZWQpOiAldTIwQUMlODEldTAxOTIldTIwMjAldTIwMjEKKworZG9jdW1lbnQud3JpdGUgb2YgdW5pY29kZSBlc2NhcGVzOiDCgMKBwoPChsKHCisKKyhlc2NhcGVkKTogJTgwJTgxJTgzJTg2JTg3CisKK2lubmVySFRNTCBhc3NpZ25tZW50IG9mIHVuaWNvZGUgZXNjYXBlczogwoDCgcKDwobChworCisoZXNjYXBlZCk6ICU4MCU4MSU4MyU4NiU4NwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9sYXRpbjEtd2lubGF0aW4uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvbGF0aW4xLXdpbmxhdGluLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGZlNjRkMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvbGF0aW4xLXdpbmxhdGluLmh0bWwKQEAgLTAsMCArMSwxNSBAQAorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9J0NvbnRlbnQtVHlwZScgY29udGVudD0ndGV4dC9odG1sOyBjaGFyc2V0PWxhdGluMSc+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworPC9zY3JpcHQ+Cis8cD5XZSBuZWVkIHRvIHRyZWF0IExhdGluLTEgYXMgaWYgaXQgd2VyZSB3aW5kb3dzLTEyNTIsIHNlZSA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwMiI+YnVnIDc2MDI8L2E+LjwvcD4KKzxwPkFzIGVudGl0aWVzOiA8c3BhbiBpZD0nZW50aXRpZXMnPiYjeDgwOyYjeDgxOyYjeDgzOyYjeDg2OyYjeDg3Ozwvc3Bhbj48L3A+Cis8c2NyaXB0PmRvY3VtZW50LndyaXRlKCc8cD4oZXNjYXBlZCk6ICcgKyBlc2NhcGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VudGl0aWVzJykuaW5uZXJIVE1MKSArICc8L3A+Jyk7PC9zY3JpcHQ+PHA+SW5saW5lOiA8c3BhbiBpZD0naW5saW5lJz6AgYOGhzwvc3Bhbj48L3A+Cis8c2NyaXB0PmRvY3VtZW50LndyaXRlKCc8cD4oZXNjYXBlZCk6ICcgKyBlc2NhcGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lubGluZScpLmlubmVySFRNTCkgKyAnPC9wPicpOzwvc2NyaXB0PjxwPmRvY3VtZW50LndyaXRlIG9mIHVuaWNvZGUgZXNjYXBlczogPHNjcmlwdD5kb2N1bWVudC53cml0ZSgnPHNwYW4gaWQ9IndyaXRlIj5ceDgwXHg4MVx1MDA4M1x1MDA4Nlx1MDA4Nzwvc3Bhbj4nKTs8L3NjcmlwdD48L3A+PHNjcmlwdD5kb2N1bWVudC53cml0ZSgnPHA+KGVzY2FwZWQpOiAnICsgZXNjYXBlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3cml0ZScpLmlubmVySFRNTCkgKyAnPC9wPicpOzwvc2NyaXB0PjxwPmlubmVySFRNTCBhc3NpZ25tZW50IG9mIHVuaWNvZGUgZXNjYXBlczogPHNwYW4gaWQ9J2lubmVyJz48L3NwYW4+PC9wPjxzY3JpcHQ+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lubmVyJykuaW5uZXJIVE1MID0gJ1x4ODBceDgxXHUwMDgzXHUwMDg2XHUwMDg3Jzs8L3NjcmlwdD48c2NyaXB0PmRvY3VtZW50LndyaXRlKCc8cD4oZXNjYXBlZCk6ICcgKyBlc2NhcGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lubmVyJykuaW5uZXJIVE1MKSArICc8L3A+Jyk7PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL21haWx0by1hbHdheXMtdXRmLTgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9tYWlsdG8tYWx3YXlzLXV0Zi04LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NmI5MTE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9tYWlsdG8tYWx3YXlzLXV0Zi04LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1BvbGljeSBkZWxlZ2F0ZTogYXR0ZW1wdCB0byBsb2FkIG1haWx0bzo/c3ViamVjdD0lRTMlODIlQkYlRTMlODIlQTQlRTMlODMlODglRTMlODMlQUImYm9keT0lRTYlOUMlQUMlRTYlOTYlODcgd2l0aCBuYXZpZ2F0aW9uIHR5cGUgJ2xpbmsgY2xpY2tlZCcgb3JpZ2luYXRpbmcgZnJvbSAjdGV4dCA+IFNQQU4gPiBBID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKK1Rlc3QgZW5jb2Rpbmcgb2YgbWFpbHRvIFVSTHMuIENsaWNrIG9uIHRoZSBVUkwgLSBhIG5ldyBtZXNzYWdlIHdpdGggSmFwYW5lc2Ugc3ViamVjdCBhbmQgYm9keSBzaG91bGQgb3BlbiBpbiB5b3VyIG1haWwgY2xpZW50LgorCitTdWJqZWN0IDogSmFwYW5lc2UgQm9keSA6IEphcGFuZXNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL21haWx0by1hbHdheXMtdXRmLTguaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvbWFpbHRvLWFsd2F5cy11dGYtOC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiYjYyMDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL21haWx0by1hbHdheXMtdXRmLTguaHRtbApAQCAtMCwwICsxLDI4IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sIGxhbmc9ImphIj4KKzxIRUFEPgorICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9U2hpZnRfSklTIj4KKzwvSEVBRD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKyAgICA8cD5UZXN0IGVuY29kaW5nIG9mIG1haWx0byBVUkxzLiBDbGljayBvbiB0aGUgVVJMIC0gYSBuZXcgbWVzc2FnZQorICAgIHdpdGggSmFwYW5lc2Ugc3ViamVjdCBhbmQgYm9keSBzaG91bGQgb3BlbiBpbiB5b3VyIG1haWwgY2xpZW50LjwvcD4KKworICAgIDxhIGhyZWY9Im1haWx0bzo/c3ViamVjdD2DXoNDg2eDiyZib2R5PZZ7lbYiPgorICAgIDxzcGFuPlN1YmplY3QgOiBKYXBhbmVzZSAgIEJvZHkgOiBKYXBhbmVzZTwvc3Bhbj4KKyAgICA8L2E+CisKKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkgeworICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRGb3JQb2xpY3lEZWxlZ2F0ZSgpOworICAgIHZhciBhID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhhLm9mZnNldExlZnQgKyA1LCBhLm9mZnNldFRvcCArIDUpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgfQorfQorPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvbWV0YS1jaGFyc2V0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvbWV0YS1jaGFyc2V0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Zjk4NWY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9tZXRhLWNoYXJzZXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorU2hvdWxkIHNlZSBIZWJyZXcgbGV0dGVyIEFsZXBoIHR3aWNlOiDXkNeQCisKK3dpbmRvd3MtMTI1NQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9tZXRhLWNoYXJzZXQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvbWV0YS1jaGFyc2V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmUxMmYyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvbWV0YS1jaGFyc2V0Lmh0bWwKQEAgLTAsMCArMSwxNCBAQAorPEhUTUw+Cis8SEVBRD4KKzxtZXRhIGNoYXJzZXQ9d2luZG93cy0xMjU1PgorPC9IRUFEPgorPEJPRFk+Cis8cD5TaG91bGQgc2VlIEhlYnJldyBsZXR0ZXIgQWxlcGggdHdpY2U6IOAmIzE0ODg7PC9wPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCitkb2N1bWVudC53cml0ZShkb2N1bWVudC5pbnB1dEVuY29kaW5nKTsKKzwvc2NyaXB0PgorPC9CT0RZPgorPC9IVE1MPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9tZXRhLWluLXhodG1sLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvbWV0YS1pbi14aHRtbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWZmNDE0MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvbWV0YS1pbi14aHRtbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitUZXN0IGZvciBidWcgNTYyMDogU2hvdWxkIG9ubHkgaG9ub3IgZW5jb2RpbmcgZnJvbSA8bWV0YT4gaW4gSFRNTAorCitDaGFyc2V0OiBVVEYtOCAoc2hvdWxkIGJlIFVURi04KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9tZXRhLWluLXhodG1sLnhodG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9tZXRhLWluLXhodG1sLnhodG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5YzYwNjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL21ldGEtaW4teGh0bWwueGh0bWwKQEAgLTAsMCArMSwyMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiA/PgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIKKyAgICAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC90cmFuc2l0aW9uYWwuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXdpbmRvd3MtMTI1MSIgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIi8+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYyMCI+YnVnIDU2MjA8L2E+OgorU2hvdWxkIG9ubHkgaG9ub3IgZW5jb2RpbmcgZnJvbSAmbHQ7bWV0YT4gaW4gSFRNTDwvcD4KKworPHAgaWQ9InJlc3VsdCIgLz4KKworPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MID0gIkNoYXJzZXQ6ICIgKyAKKyAgICAoZG9jdW1lbnQuY2hhcnNldCA/IGRvY3VtZW50LmNoYXJzZXQgOiBkb2N1bWVudC5jaGFyYWN0ZXJTZXQpICsgIiAoc2hvdWxkIGJlIFVURi04KSI7Cis8L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9taXNwbGFjZWQteG1sLWRlY2xhcmF0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvbWlzcGxhY2VkLXhtbC1kZWNsYXJhdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRiMjk4NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvbWlzcGxhY2VkLXhtbC1kZWNsYXJhdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAorU2hvdWxkIGJlIHlvdXIgYnJvd3NlciBkZWZhdWx0IGVuY29kaW5nOiBJU08tODg1OS0xCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL21pc3BsYWNlZC14bWwtZGVjbGFyYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvbWlzcGxhY2VkLXhtbC1kZWNsYXJhdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0ZjU1OWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL21pc3BsYWNlZC14bWwtZGVjbGFyYXRpb24uaHRtbApAQCAtMCwwICsxLDEwIEBACisgPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0ia29pOC1yIj8+Cis8aHRtbD4KKzxib2R5PgorU2hvdWxkIGJlIHlvdXIgYnJvd3NlciBkZWZhdWx0IGVuY29kaW5nOiAKKzxzY3JpcHQ+CisgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICBkb2N1bWVudC53cml0ZShkb2N1bWVudC5jaGFyYWN0ZXJTZXQpCis8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvbWlzcG9zaXRpb25lZC1tZXRhLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvbWlzcG9zaXRpb25lZC1tZXRhLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjE2ODRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9taXNwb3NpdGlvbmVkLW1ldGEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGhpcyB0ZXN0IGNoZWNrcyBpZiBXZWJLaXQgY2FuIGZpbmQgYSBjaGFyc2V0IGRlZmluZWQgaW4gYW4gSFRUUC1FUVVJViBtZXRhIGFmdGVyIHRoZSBIRUFELgorCitUaGUgZmlyc3QgbGV0dGVyIHNob3VsZCBsb29rIGxpa2UgYSBMYXRpbiAiQyIgaGVyZToKKwor0KHQsNC50YIg0JPQvtCx0LvQuNC90LAgLSDQotGD0L/QuNGH0L7QuiDRgdGCLtC+L9GDINCT0L7QsdC70LjQvdCwIChHb2JsaW4pLiDQpNC40LvRjNC80Ysg0JPQvtCx0LvQuNC90LAuINC/0L7Qu9C90YvQuSDQn9GNLiDQkdC+0LbRjNGPINCY0YHQutGA0LAuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL21pc3Bvc2l0aW9uZWQtbWV0YS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9taXNwb3NpdGlvbmVkLW1ldGEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWIwODU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9taXNwb3NpdGlvbmVkLW1ldGEuaHRtbApAQCAtMCwwICsxLDIyIEBACis8aHRtbD4KKyA8aGVhZD4KKyAgPHRpdGxlPufPwszJziwgR29ibGluLCDTwcrUIOfPwszJzsE8L3RpdGxlPgorICA8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Ii9mYXZpY29uLmljbyIgdHlwZT0iaW1hZ2UveC1pY29uIj4KKyAgPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgIDwvc2NyaXB0PgorIDwvaGVhZD4KKyA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1LT0k4LVIiPgorIDxib2R5PgorICA8cD5UaGlzIHRlc3QgY2hlY2tzIGlmIFdlYktpdCBjYW4gZmluZCBhIGNoYXJzZXQgZGVmaW5lZCBpbiBhbiBIVFRQLUVRVUlWIG1ldGEgYWZ0ZXIgdGhlIEhFQUQuPC9wPgorICA8cD5UaGUgZmlyc3QgbGV0dGVyIHNob3VsZCBsb29rIGxpa2UgYSBMYXRpbiAiQyIgaGVyZTo8L3A+CisgIDxwPgorICDzwcrUIOfPwszJzsEgLSD01dDJ3s/LINPULs8v1SDnz8LMyc7BIChHb2JsaW4pLiDmyczYzdkg58/CzMnOwS4g0M/MztnKIPDcLiDiz9bY0SDp08vSwS4KKyAgPC9wPgorIDwvYm9keT4KKzwvaHRtbD4KKzwhLS0KKyAgICAgU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTkwCisgICAgIGFuZCBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD05ODcwMCAKKyAtLT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvbmFtZXNwYWNlLXRvbGVyYW5jZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL25hbWVzcGFjZS10b2xlcmFuY2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzNDk5NjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL25hbWVzcGFjZS10b2xlcmFuY2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGhpcyB0ZXN0IGVuc3VyZXMgYSBVVEYtOCBlbmNvZGluZyBpcyBwcm9wZXJseSBzZXQgb24gZG9jdW1lbnRzIHRoYXQ6IAorKDEpIHVzZSBuYW1lc3BhY2UgcHJlZml4ZXMgb24gSFRNTCBlbGVtZW50cyAKKygyKSBzcGVjaWZ5IGEgbm9uLWxhdGluIGNoYXJzZXQgCisoMykgY29udGFpbiBub24tbGF0aW4gY2hhcmFjdGVycyAKK0lmIHRoaXMgdGVzdCBwYXNzZXMsIHRoZSBVVEYtOCBjaGFyYWN0ZXIgYmVsb3cgc2hvdWxkIGV4YWN0bHkgbWF0Y2ggdGhlIGNoYXJhY3RlciB0aGUgY2hhcmFjdGVyIGluIG5hbWVzcGFjZS10b2xlcmFuY2UtZXhwZWN0ZWQudHh0LiDms5UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvbmFtZXNwYWNlLXRvbGVyYW5jZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9uYW1lc3BhY2UtdG9sZXJhbmNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzc4NDFkMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvbmFtZXNwYWNlLXRvbGVyYW5jZS5odG1sCkBAIC0wLDAgKzEsMTUgQEAKKzx4aHRtbDpodG1sIHhtbG5zOnhodG1sPSIiPgorPG1ldGEgY29udGVudD0iY2hhcnNldD1VVEYtOCI+CisKK1RoaXMgdGVzdCBlbnN1cmVzIGEgVVRGLTggZW5jb2RpbmcgaXMgcHJvcGVybHkgc2V0IG9uIGRvY3VtZW50cyB0aGF0OgorPGJyPgorKDEpIHVzZSBuYW1lc3BhY2UgcHJlZml4ZXMgb24gSFRNTCBlbGVtZW50cworPGJyPgorKDIpIHNwZWNpZnkgYSBub24tbGF0aW4gY2hhcnNldCAKKzxicj4KKygzKSBjb250YWluIG5vbi1sYXRpbiBjaGFyYWN0ZXJzCis8YnI+CitJZiB0aGlzIHRlc3QgcGFzc2VzLCB0aGUgVVRGLTggY2hhcmFjdGVyIGJlbG93IHNob3VsZCBleGFjdGx5IG1hdGNoIHRoZSBjaGFyYWN0ZXIgdGhlIGNoYXJhY3RlciBpbiBuYW1lc3BhY2UtdG9sZXJhbmNlLWV4cGVjdGVkLnR4dC4KK+azlQorPHNjcmlwdD5pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7PC9zY3JpcHQ+Cis8aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2Rpbmcvbm8tY2hhcnNldC1vbi1keW5hbWljLXNjcmlwdC1sb2FkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2Rpbmcvbm8tY2hhcnNldC1vbi1keW5hbWljLXNjcmlwdC1sb2FkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODE3ODAxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9uby1jaGFyc2V0LW9uLWR5bmFtaWMtc2NyaXB0LWxvYWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMiBAQAorVGhpcyBwYWdlIHRlc3RzIHRoYXQgdGhlIGNoYXJhY3RlciBlbmNvZGluZyBpcyB1c2VkIGZvciBkeW5hbWljYWxseSBsb2FkZWQgc2NyaXB0cyB3aGVuIG5vIGNoYXJzZXQgaXMgc3BlY2lmaWVkIGRpcmVjdGx5IG9yIHByb3ZpZGVkIGJ5IHRoZSBzZXJ2ZXIuCitQQVNTOiBVVEYtOCB3YXMgY29ycmVjdGx5IHVzZWQgZm9yIHRoaXMgc2NyaXB0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9uby1jaGFyc2V0LW9uLWR5bmFtaWMtc2NyaXB0LWxvYWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2Rpbmcvbm8tY2hhcnNldC1vbi1keW5hbWljLXNjcmlwdC1sb2FkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzYzYzI2MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2Rpbmcvbm8tY2hhcnNldC1vbi1keW5hbWljLXNjcmlwdC1sb2FkLmh0bWwKQEAgLTAsMCArMSwyMiBAQAorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDx0aXRsZT5FbmNvZGluZyB0ZXN0LjwvdGl0bGU+CisgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4gCisgICAgICAgICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgVGhpcyBwYWdlIHRlc3RzIHRoYXQgdGhlIGNoYXJhY3RlciBlbmNvZGluZyBpcyB1c2VkIGZvciBkeW5hbWljYWxseSBsb2FkZWQgCisgICAgICAgIHNjcmlwdHMgd2hlbiBubyBjaGFyc2V0IGlzIHNwZWNpZmllZCBkaXJlY3RseSBvciBwcm92aWRlZCBieSB0aGUgc2VydmVyLgorICAgICAgICAKKyAgICAgICAgPGRpdiBpZD0idGFyZ2V0Ij48L2Rpdj4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0b2t5byA9ICfjgajjgYbjgY3jgofjgYYnOworICAgICAgICAgICAgb0RJVlJlc3VsdHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7IAorICAgICAgICAgICAgb0RJVlJlc3VsdHMuc3JjPSJyZXNvdXJjZXMvZHluYW1pYy1sb2FkLXRhcmdldC5qcyI7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpLml0ZW0oMCkuYXBwZW5kQ2hpbGQob0RJVlJlc3VsdHMpOworICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL25vc2NyaXB0LWluLWhlYWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9ub3NjcmlwdC1pbi1oZWFkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDBiYWE0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9ub3NjcmlwdC1pbi1oZWFkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK1Rlc3QgZm9yIGJ1ZyAxMjM4OTogQ2hpbmVzZSBkZWNvZGluZyBlcnJvciBhdCBoay5hbnRpc3BhbS55YWhvby5jb20KKworWW91IHNob3VsZCBzZWUgdHdvIGlkZW50aWNhbCBsaW5lcyBiZWxvdzoKKwor6ZuF6JmO6aaZ5rivCisKK+mbheiZjummmea4rwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9ub3NjcmlwdC1pbi1oZWFkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL25vc2NyaXB0LWluLWhlYWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDhhY2QyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9ub3NjcmlwdC1pbi1oZWFkLmh0bWwKQEAgLTAsMCArMSwxNyBAQAorPHNjcmlwdCBsYW5ndWFnZT1qYXZhc2NyaXB0PgorPC9zY3JpcHQ+PG5vc2NyaXB0PjxpbWcgc3JjPWFib3V0OmJsYW5rPjx0YWJsZT48L3RhYmxlPjxwPjwvcD48L25vc2NyaXB0PjxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1iaWc1Ij4KKzwvaGVhZD48Ym9keT4KKzxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzg5Ij5idWcgMTIzODk8L2E+OgorQ2hpbmVzZSBkZWNvZGluZyBlcnJvciBhdCBoay5hbnRpc3BhbS55YWhvby5jb208L3A+Cis8cD5Zb3Ugc2hvdWxkIHNlZSB0d28gaWRlbnRpY2FsIGxpbmVzIGJlbG93OjwvcD4KKzxwPrauquqtu7TkPC9wPgorPHA+JiMzODU5NzsmIzM0MzgyOyYjMzkzMjE7JiMyODIwNzs8L3A+CisKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcGVyY2VudC1lc2NhcGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3BlcmNlbnQtZXNjYXBpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3NjY1ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3BlcmNlbnQtZXNjYXBpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGVzdCBmb3IgYnVnIDY0NTIgLSBLVVJMOjphcHBlbmRFc2NhcGluZ0JhZENoYXJzKCkgc2hvdWxkIG5ldmVyIGVzY2FwZSBwZXJjZW50IGNoYXJhY3RlcnMuCisKK1NVQ0NFU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcGVyY2VudC1lc2NhcGluZy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9wZXJjZW50LWVzY2FwaW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTJkMGVhOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcGVyY2VudC1lc2NhcGluZy5odG1sCkBAIC0wLDAgKzEsMjMgQEAKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8dGl0bGU+UGVyY2VudCBlc2NhcGluZzwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDUyIj5idWcgNjQ1MjwvYT4gLSAKK0tVUkw6OmFwcGVuZEVzY2FwaW5nQmFkQ2hhcnMoKSBzaG91bGQgbmV2ZXIgZXNjYXBlIHBlcmNlbnQgY2hhcmFjdGVycy48L3A+Cis8Zm9ybSBhY3Rpb249J3Jlc291cmNlcy8lMjUyNSV1MDQzNSAwICV4eCUyNSUldWxpa2UuaHRtbCcgbmFtZT1mPgorIDxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXEgdmFsdWU9Jyc+Cis8L2Zvcm0+Cis8c2NyaXB0PgorCisgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICB9CisKKyAgZG9jdW1lbnQuZi5zdWJtaXQoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3ByZWxvYWQtZW5jb2RpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9wcmVsb2FkLWVuY29kaW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzhjNTFkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9wcmVsb2FkLWVuY29kaW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1NjcmlwdCB3aXRoIGNoYXJzZXQ6IFNV0KHQodCVU1MuCitMaW5rIHJlbD1zdHlsZXNoZWV0IHdpdGggY2hhcnNldDogU1VDQ0VTUworU2NyaXB0IHdpdGhvdXQgY2hhcnNldDogU1XQodCh0JVTUworTGluayByZWw9c3R5bGVzaGVldCB3aXRob3V0IGNoYXJzZXQ6IFNVQ0NFU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcHJlbG9hZC1lbmNvZGluZy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9wcmVsb2FkLWVuY29kaW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWY3YjJmNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcHJlbG9hZC1lbmNvZGluZy5odG1sCkBAIC0wLDAgKzEsNDcgQEAKKzxtZXRhIGNoYXJzZXQ9ImdiMjMxMiI+Cis8Ym9keSBvbmxvYWQ9InRlc3RTdHlsZXNoZWV0cygpIj4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKzwvc2NyaXB0PgorCis8IS0tCisgVGhpcyB0ZXN0IHVzZXMgdGhlIHdvcmQgIlNVQ0NFU1MiIHNwZWxsZWQgd2l0aCBDeXJpbGxpYyBsZXR0ZXJzICJDQ0UiLAorIG1ha2luZyBkZWNvZGluZyBwcm9ibGVtcyB2aXNpYmxlLgorLS0+CisKKzxvbD4KKzxsaT5TY3JpcHQgd2l0aCBjaGFyc2V0OgorPHNwYW4gaWQ9InRlc3RkaXYxIj48L3NwYW4+LgorPGxpPkxpbmsgcmVsPXN0eWxlc2hlZXQgd2l0aCBjaGFyc2V0OgorPHNwYW4gaWQ9InRlc3RkaXYyIj48L3NwYW4+Cis8bGk+U2NyaXB0IHdpdGhvdXQgY2hhcnNldDoKKzxzcGFuIGlkPSJ0ZXN0ZGl2MyI+PC9zcGFuPgorPGxpPkxpbmsgcmVsPXN0eWxlc2hlZXQgd2l0aG91dCBjaGFyc2V0OgorPHNwYW4gaWQ9InRlc3RkaXY0Ij48L3NwYW4+Cis8L29sPgorCis8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPSd0aGlzLWRvZXMtbm90LW5lZWQtdG8tZXhpc3QuanMnPjwvc2NyaXB0PgorCis8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPSdyZXNvdXJjZXMvcHJlbG9hZGVkLXV0Zi04LmpzJyBjaGFyc2V0PSd1dGYtOCc+PC9zY3JpcHQ+CisKKzxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaHJlZj0ncmVzb3VyY2VzL3ByZWxvYWRlZC11dGYtOC5jc3MnIGNoYXJzZXQ9J3V0Zi04Jz4KKworPHNjcmlwdCBjaGFyc2V0PSJ1dGYtOCI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J3Jlc291cmNlcy9wcmVsb2FkZWQtZ2IyMzEyLmpzJz48L3NjcmlwdD4KKworPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBjaGFyc2V0PSd1dGYtOCc+CisKKzxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaHJlZj0ncmVzb3VyY2VzL3ByZWxvYWRlZC1nYjIzMTIuY3NzJz4KKworPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3RTdHlsZXNoZWV0cygpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3RkaXYyJykuaW5uZXJUZXh0ID0gCisgICAgICAgICgvU1Wns6ezp6ZTUy8udGVzdChkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5jc3NSdWxlc1swXS5jc3NUZXh0KSkgPyAiU1VDQ0VTUyIgOiAiRkFJTFVSRSI7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdGRpdjQnKS5pbm5lclRleHQgPSAKKyAgICAgICAgKC9TVaezp7OnplNTLy50ZXN0KGRvY3VtZW50LnN0eWxlU2hlZXRzWzFdLmNzc1J1bGVzWzBdLmNzc1RleHQpKSA/ICJTVUNDRVNTIiA6ICJGQUlMVVJFIjsKK30KKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9wc2V1ZG8tdGFncy1pbi1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcHNldWRvLXRhZ3MtaW4tYXR0cmlidXRlcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTM0MjQ1ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcHNldWRvLXRhZ3MtaW4tYXR0cmlidXRlcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitUZXN0IGZvciBidWcgMTI1MDY6IFJFR1JFU1NJT046IFNhZmFyaSBkb2Vzbid0IGRpc3BsYXkgaGVicmV3IHRleHQgb24gYSB3ZWIgcGFnZSwgZGlzcGxheWVkIGNvcnJlY3RseSBvbiBUaWdlci4KKworU1XQodCh0JVTUworCitDaGFyc2V0OiBVVEYtOApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9wc2V1ZG8tdGFncy1pbi1hdHRyaWJ1dGVzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3BzZXVkby10YWdzLWluLWF0dHJpYnV0ZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTZlMDE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9wc2V1ZG8tdGFncy1pbi1hdHRyaWJ1dGVzLmh0bWwKQEAgLTAsMCArMSwyMCBAQAorPEhUTUw+CisgIDxIRUFEPgorICAgIDxUSVRMRT48L1RJVExFPgorICAgIDxMSU5LIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0iPGZvb2Jhcj48PiIgaHJlZj0iIj4KKyAgICA8bWV0YSBuYW1lPSJrZXl3b3JkcyIgY29udGVudD0iPGJvZHk+LCA8Zm9vYmFyPiwgPD4iPgorICAgIDxNRVRBIEhUVFAtRVFVSVY9IkNvbnRlbnQtVHlwZSIgQ09OVEVOVD0idGV4dC9odG1sIiBjaGFyc2V0PSJ1dGYtOCI+CisKKyAgPC9IRUFEPgorICA8Qk9EWT4KKyAgPFA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1MDYiPmJ1ZyAxMjUwNjwvYT46CisgIFJFR1JFU1NJT046IFNhZmFyaSBkb2Vzbid0IGRpc3BsYXkgaGVicmV3IHRleHQgb24gYSB3ZWIgcGFnZSwgZGlzcGxheWVkIGNvcnJlY3RseSBvbiBUaWdlci48L1A+CisgIDxQPlNV0KHQodCVU1M8L1A+CisgIAorICA8U0NSSVBUPgorICBkb2N1bWVudC53cml0ZSgiPHA+Q2hhcnNldDogIiArIGRvY3VtZW50LmlucHV0RW5jb2RpbmcgKyAiPC9wPiIpOworICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgPC9TQ1JJUFQ+CisgIDwvQk9EWT4KKzwvSFRNTD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcHNldWRvLXhtbC0yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcHNldWRvLXhtbC0yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWNlMTc4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9wc2V1ZG8teG1sLTItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGVzdCBmb3IgYnVnIDk3ODM6IEFuIFhNTCBkZWNsYXJhdGlvbiB3aXRob3V0IGFuIGV4cGxpY2l0IGVuY29kaW5nIGluY29ycmVjdGx5IHRyaWdnZXJzIFVURi04IGVuY29kaW5nIGluIGFuIEhUTUwgZG9jdW1lbnQKKworVGVzdCB0aGF0IGFuIFhNTCBkZWNsYXJhdGlvbiB3aXRoIGFuIGV4cGxpY2l0IGVuY29kaW5nIGlzIHN0aWxsIGhvbm9yZWQuIFRoaXMgaXMgd2hhdCBGaXJlZm94IDEuNSBhbmQgU2FmYXJpIDIuMCBkbywgdW5saWtlIFdpbklFIDYuCisKK0NoYXJzZXQ6IEtPSTgtUiAoc2hvdWxkIGJlIEtPSTgtUikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcHNldWRvLXhtbC0yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3BzZXVkby14bWwtMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0ZjliMzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3BzZXVkby14bWwtMi5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9ImtvaTgtciIgPz4KKzxodG1sPgorPGJvZHk+Cis8cD5UZXN0IGZvciA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc4MyI+YnVnIDk3ODM8L2E+OgorQW4gWE1MIGRlY2xhcmF0aW9uIHdpdGhvdXQgYW4gZXhwbGljaXQgZW5jb2RpbmcgaW5jb3JyZWN0bHkgdHJpZ2dlcnMgVVRGLTggZW5jb2RpbmcgaW4gYW4gSFRNTCBkb2N1bWVudDwvcD4KKzxwPlRlc3QgdGhhdCBhbiBYTUwgZGVjbGFyYXRpb24gPGI+d2l0aDwvYj4gYW4gZXhwbGljaXQgZW5jb2RpbmcgaXMgc3RpbGwgaG9ub3JlZC4gVGhpcyBpcyB3aGF0IEZpcmVmb3ggMS41IGFuZCBTYWZhcmkgMi4wIGRvLCB1bmxpa2UgV2luSUUgNi48L3A+Cis8cCBpZD0icmVzdWx0IiAvPgorCis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgPSAiQ2hhcnNldDogIiArIAorICAgIChkb2N1bWVudC5jaGFyc2V0ID8gZG9jdW1lbnQuY2hhcnNldCA6IGRvY3VtZW50LmNoYXJhY3RlclNldCkgKyAiIChzaG91bGQgYmUgS09JOC1SKSI7Cis8L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9wc2V1ZG8teG1sLTMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9wc2V1ZG8teG1sLTMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0ZjIwZjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3BzZXVkby14bWwtMy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitUZXN0IGZvciBidWcgOTc4MzogQW4gWE1MIGRlY2xhcmF0aW9uIHdpdGhvdXQgYW4gZXhwbGljaXQgZW5jb2RpbmcgaW5jb3JyZWN0bHkgdHJpZ2dlcnMgVVRGLTggZW5jb2RpbmcgaW4gYW4gSFRNTCBkb2N1bWVudAorCitDaGFyc2V0OiBLT0k4LVIgKHNob3VsZCBiZSBLT0k4LVIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3BzZXVkby14bWwtMy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9wc2V1ZG8teG1sLTMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ODZkMDFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9wc2V1ZG8teG1sLTMuaHRtbApAQCAtMCwwICsxLDIzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iCisgICAgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQvdHJhbnNpdGlvbmFsLmR0ZCI+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cis8aGVhZD4KKzxtZXRhIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1LT0k4LVIiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIvPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UZXN0IGZvciA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc4MyI+YnVnIDk3ODM8L2E+OgorQW4gWE1MIGRlY2xhcmF0aW9uIHdpdGhvdXQgYW4gZXhwbGljaXQgZW5jb2RpbmcgaW5jb3JyZWN0bHkgdHJpZ2dlcnMgVVRGLTggZW5jb2RpbmcgaW4gYW4gSFRNTCBkb2N1bWVudDwvcD4KKworPHAgaWQ9InJlc3VsdCIgLz4KKworPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MID0gIkNoYXJzZXQ6ICIgKyAKKyAgICAoZG9jdW1lbnQuY2hhcnNldCA/IGRvY3VtZW50LmNoYXJzZXQgOiBkb2N1bWVudC5jaGFyYWN0ZXJTZXQpICsgIiAoc2hvdWxkIGJlIEtPSTgtUikiOworPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcHNldWRvLXhtbC00LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcHNldWRvLXhtbC00LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTRhOTg1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9wc2V1ZG8teG1sLTQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGVzdCBmb3IgYnVnIDk3ODM6IEFuIFhNTCBkZWNsYXJhdGlvbiB3aXRob3V0IGFuIGV4cGxpY2l0IGVuY29kaW5nIGluY29ycmVjdGx5IHRyaWdnZXJzIFVURi04IGVuY29kaW5nIGluIGFuIEhUTUwgZG9jdW1lbnQKKworQ2hhcnNldDogd2luZG93cy0xMjUxIChzaG91bGQgYmUgd2luZG93cy0xMjUxKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9wc2V1ZG8teG1sLTQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcHNldWRvLXhtbC00Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQ1ZGU3YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcHNldWRvLXhtbC00Lmh0bWwKQEAgLTAsMCArMSwyMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iS09JOC1SIiA/PgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIKKyAgICAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC90cmFuc2l0aW9uYWwuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXdpbmRvd3MtMTI1MSIgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIi8+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzgzIj5idWcgOTc4MzwvYT46CitBbiBYTUwgZGVjbGFyYXRpb24gd2l0aG91dCBhbiBleHBsaWNpdCBlbmNvZGluZyBpbmNvcnJlY3RseSB0cmlnZ2VycyBVVEYtOCBlbmNvZGluZyBpbiBhbiBIVE1MIGRvY3VtZW50PC9wPgorCis8cCBpZD0icmVzdWx0IiAvPgorCis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgPSAiQ2hhcnNldDogIiArIAorICAgIChkb2N1bWVudC5jaGFyc2V0ID8gZG9jdW1lbnQuY2hhcnNldCA6IGRvY3VtZW50LmNoYXJhY3RlclNldCkgKyAiIChzaG91bGQgYmUgd2luZG93cy0xMjUxKSI7Cis8L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9wc2V1ZG8teG1sLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcHNldWRvLXhtbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWI1NmVmMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcHNldWRvLXhtbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitUZXN0IGZvciBidWcgOTc4MzogQW4gWE1MIGRlY2xhcmF0aW9uIHdpdGhvdXQgYW4gZXhwbGljaXQgZW5jb2RpbmcgaW5jb3JyZWN0bHkgdHJpZ2dlcnMgVVRGLTggZW5jb2RpbmcgaW4gYW4gSFRNTCBkb2N1bWVudAorCitDaGFyc2V0OiBJU08tODg1OS0xIChzaG91bGQgYmUgeW91ciBicm93c2VyIGRlZmF1bHQgb25lKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9wc2V1ZG8teG1sLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3BzZXVkby14bWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzFkMzllCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9wc2V1ZG8teG1sLmh0bWwKQEAgLTAsMCArMSwyMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIgorICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3RyYW5zaXRpb25hbC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGJvZHk+Cis8cD5UZXN0IGZvciA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc4MyI+YnVnIDk3ODM8L2E+OgorQW4gWE1MIGRlY2xhcmF0aW9uIHdpdGhvdXQgYW4gZXhwbGljaXQgZW5jb2RpbmcgaW5jb3JyZWN0bHkgdHJpZ2dlcnMgVVRGLTggZW5jb2RpbmcgaW4gYW4gSFRNTCBkb2N1bWVudDwvcD4KKworPHAgaWQ9InJlc3VsdCIgLz4KKworPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MID0gIkNoYXJzZXQ6ICIgKyAKKyAgICAoZG9jdW1lbnQuY2hhcnNldCA/IGRvY3VtZW50LmNoYXJzZXQgOiBkb2N1bWVudC5jaGFyYWN0ZXJTZXQpICsgIiAoc2hvdWxkIGJlIHlvdXIgYnJvd3NlciBkZWZhdWx0IG9uZSkiOworPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcmVzb3VyY2VzLyUyNSV1MDQzNSAwICV4eCUlJXVsaWtlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3Jlc291cmNlcy8lMjUldTA0MzUgMCAleHglJSV1bGlrZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlMGQ4NmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3Jlc291cmNlcy8lMjUldTA0MzUgMCAleHglJSV1bGlrZS5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzxodG1sPgorPGJvZHkgb25sb2FkPSJqYXZhc2NyaXB0OgorICAvLyBXaW5JRSBhbmQgRmlyZWZveCB1c2UgdGhlIHNhbWUgVVJMLCBidXQgaW4gV2luSUUsIGRvY3VtZW50LlVSTCByZXR1cm5zIHVuZXNjYXBlZCB0ZXh0CisgIGlmIChkb2N1bWVudC5VUkwubWF0Y2goJyUyNS4qaHRtbCcpID09ICclMjUyNSV1MDQzNSUyMDAlMjAleHglMjUlJXVsaWtlLmh0bWwnIHx8IAorICAgICAgZG9jdW1lbnQuVVJMLm1hdGNoKCclMjUuKmh0bWwnKSA9PSAnJTI1JXUwNDM1IDAgJXh4JSUldWxpa2UuaHRtbCcpCisgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5maXJzdENoaWxkLm5vZGVWYWx1ZSA9ICdTVUNDRVNTJzsKKworICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisiPgorPHA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0NTIiPmJ1ZyA2NDUyPC9hPiAtIAorS1VSTDo6YXBwZW5kRXNjYXBpbmdCYWRDaGFycygpIHNob3VsZCBuZXZlciBlc2NhcGUgcGVyY2VudCBjaGFyYWN0ZXJzLjwvcD4KKzxwIGlkPXJlc3VsdD5GQUlMVVJFPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9yZXNvdXJjZXMvY2hhci1kZWNvZGluZy11dGlscy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcmVzb3VyY2VzL2NoYXItZGVjb2RpbmctdXRpbHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTA5MWFkOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcmVzb3VyY2VzL2NoYXItZGVjb2RpbmctdXRpbHMuanMKQEAgLTAsMCArMSwzNCBAQAorZnVuY3Rpb24gaGV4KG51bWJlcikKK3sKKyAgICB2YXIgaGV4RGlnaXQgPSAiMDEyMzQ1Njc4OUFCQ0RFRiI7CisgICAgdmFyIGhleCA9IGhleERpZ2l0LnN1YnN0cihudW1iZXIgJiAweGYsIDEpOworICAgIHdoaWxlIChudW1iZXIgPiAxNSkgeworICAgICAgICBudW1iZXIgPj49IDQ7CisgICAgICAgIGhleCA9IGhleERpZ2l0LnN1YnN0cihudW1iZXIgJiAxNSwgMSkgKyBoZXg7CisgICAgfQorICAgIHJldHVybiBoZXg7Cit9CisKK2Z1bmN0aW9uIGRlY29kZShjaGFyc2V0TmFtZSwgY2hhcmFjdGVyU2VxdWVuY2UpCit7CisgICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKKyAgICByZXEub3BlbignR0VUJywgJ2RhdGE6dGV4dC9wbGFpbiwnICsgY2hhcmFjdGVyU2VxdWVuY2UsIGZhbHNlKTsKKyAgICByZXEub3ZlcnJpZGVNaW1lVHlwZSgndGV4dC9wbGFpbjsgY2hhcnNldD0iJyArIGNoYXJzZXROYW1lICsgJyInKTsKKyAgICByZXEuc2VuZCgnJyk7CisgICAgdmFyIGNvZGUgPSBoZXgocmVxLnJlc3BvbnNlVGV4dC5jaGFyQ29kZUF0KDApKTsKKyAgICByZXR1cm4gIlUrIiArICgiMDAwMCIgKyBjb2RlKS5zdWJzdHIoY29kZS5sZW5ndGgsIDQpOworfQorCitmdW5jdGlvbiB0ZXN0RGVjb2RlKGNoYXJzZXROYW1lLCBjaGFyYWN0ZXJTZXF1ZW5jZSwgdW5pY29kZSkKK3sKKyAgICBzaG91bGRCZSgiZGVjb2RlKCciICsgY2hhcnNldE5hbWUgKyAiJywgJyIgKyBjaGFyYWN0ZXJTZXF1ZW5jZSArICInKSIsICInIiArIHVuaWNvZGUgKyAiJyIpOworfQorCitmdW5jdGlvbiBiYXRjaFRlc3REZWNvZGUoaW5wdXREYXRhKQoreworICAgIGZvciAodmFyIGkgaW4gaW5wdXREYXRhLmVuY29kaW5ncykgeworICAgICAgICBmb3IgKHZhciBqIGluIGlucHV0RGF0YS5lbmNvZGVkKQorICAgICAgICAgICAgdGVzdERlY29kZShpbnB1dERhdGEuZW5jb2RpbmdzW2ldLCBpbnB1dERhdGEuZW5jb2RlZFtqXSwgaW5wdXREYXRhLnVuaWNvZGVbal0pOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9yZXNvdXJjZXMvY2hhci1lbmNvZGluZy11dGlscy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcmVzb3VyY2VzL2NoYXItZW5jb2RpbmctdXRpbHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjAwN2M3ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcmVzb3VyY2VzL2NoYXItZW5jb2RpbmctdXRpbHMuanMKQEAgLTAsMCArMSw2OSBAQAorZnVuY3Rpb24gZW5jb2RlKGNoYXJzZXQsIHVuaWNvZGUpCit7CisgICAgLy8gUmV0dXJucyBhIHZhbHVlIGFscmVhZHkgZW5jb2RlZCwgc2luY2Ugd2UgY2FuJ3QgZG8gaXQgc3luY2hyb25vdXNseS4KKyAgICByZXR1cm4gcmVzdWx0c1tjaGFyc2V0XVt1bmljb2RlXTsKK30KKworZnVuY3Rpb24gdGVzdHNEb25lKCkKK3sKKyAgICB2YXIgZm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmb3JtJyk7CisgICAgdmFyIHN1YmZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N1YmZyYW1lJyk7CisKKyAgICBmb3JtLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZm9ybSk7CisgICAgc3ViZnJhbWUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzdWJmcmFtZSk7CisKKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyBlbmNvZGluZyBjaGFyYWN0ZXJzIGluIHZhcmlvdXMgY2hhcmFjdGVyIHNldHMuIik7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgY2hhcnNldHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgc2hvdWxkQmUoImVuY29kZSgnIiArIGNoYXJzZXRzW2ldICsgIicsICciICsgdW5pY29kZXNbaV0gKyAiJykiLCAiJyIgKyBleHBlY3RlZFJlc3VsdHNbaV0gKyAiJyIpOworICAgIH0KKworICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHByb2Nlc3NSZXN1bHQocmVzdWx0KQoreworICAgIHZhciBjaGFyc2V0UmVzdWx0cyA9IHJlc3VsdHNbY2hhcnNldHNbaV1dOworICAgIGlmICghY2hhcnNldFJlc3VsdHMpIHsKKyAgICAgICAgY2hhcnNldFJlc3VsdHMgPSBuZXcgT2JqZWN0OworICAgICAgICByZXN1bHRzW2NoYXJzZXRzW2ldXSA9IGNoYXJzZXRSZXN1bHRzOworICAgIH0KKyAgICBjaGFyc2V0UmVzdWx0c1t1bmljb2Rlc1tpXV0gPSByZXN1bHQ7IAorfQorCitmdW5jdGlvbiBzdWJmcmFtZUxvYWRlZCgpCit7CisgICAgdmFyIFVSTCA9ICIiICsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N1YmZyYW1lJykuY29udGVudFdpbmRvdy5sb2NhdGlvbjsKKyAgICBwcm9jZXNzUmVzdWx0KFVSTC5zdWJzdHIoVVJMLmluZGV4T2YoJz0nKSArIDEpKTsKKyAgICArK2k7CisgICAgcnVuVGVzdCgpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkKK3sgICAgCisgICAgaWYgKGkgPj0gY2hhcnNldHMubGVuZ3RoKSB7CisgICAgICAgIHRlc3RzRG9uZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdmFyIGZvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm9ybScpOworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RleHQnKTsKKyAgICB2YXIgc3ViZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3ViZnJhbWUnKTsKKworICAgIGZvcm0uYWNjZXB0Q2hhcnNldCA9IGNoYXJzZXRzW2ldOworICAgIGZvcm0uYWN0aW9uID0gInJlc291cmNlcy9kdW1teS5odG1sIjsKKyAgICBzdWJmcmFtZS5vbmxvYWQgPSBzdWJmcmFtZUxvYWRlZDsKKyAgICB0ZXh0LnZhbHVlID0gU3RyaW5nLmZyb21DaGFyQ29kZSh1bmljb2Rlc1tpXS5yZXBsYWNlKCdVKycsICcweCcpKTsKKyAgICAKKyAgICBmb3JtLnN1Ym1pdCgpOworfQorCitmdW5jdGlvbiB0ZXN0RW5jb2RlKGNoYXJzZXROYW1lLCB1bmljb2RlLCBjaGFyYWN0ZXJTZXF1ZW5jZSkKK3sKKyAgICBjaGFyc2V0cy5wdXNoKGNoYXJzZXROYW1lKTsKKyAgICB1bmljb2Rlcy5wdXNoKHVuaWNvZGUpOworICAgIGV4cGVjdGVkUmVzdWx0cy5wdXNoKGNoYXJhY3RlclNlcXVlbmNlKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcmVzb3VyY2VzL2Nzcy1jYWNoZWQtYm9tLWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3Jlc291cmNlcy9jc3MtY2FjaGVkLWJvbS1mcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0MTJlM2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3Jlc291cmNlcy9jc3MtY2FjaGVkLWJvbS1mcmFtZS5odG1sCkBAIC0wLDAgKzEsNSBAQAorPGxpbmsgcmVsPXN0eWxlc2hlZXQgaHJlZj11dGYtMTYtbGl0dGxlLWVuZGlhbi5jc3M+Cis8c2NyaXB0Pgord2luZG93LnBhcmVudC5mcmFtZUxvYWRlZCgpOworPC9zY3JpcHQ+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcmVzb3VyY2VzL2R1bW15Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3Jlc291cmNlcy9kdW1teS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3Jlc291cmNlcy9kdW1teS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3Jlc291cmNlcy9keW5hbWljLWxvYWQtdGFyZ2V0LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9yZXNvdXJjZXMvZHluYW1pYy1sb2FkLXRhcmdldC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTBlMTc1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9yZXNvdXJjZXMvZHluYW1pYy1sb2FkLXRhcmdldC5qcwpAQCAtMCwwICsxLDkgQEAKKworCitpZiAoJ+OBqOOBhuOBjeOCh+OBhicgPT0gdG9reW8pCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpLmlubmVySFRNTCA9ICJQQVNTOiBVVEYtOCB3YXMgY29ycmVjdGx5IHVzZWQgZm9yIHRoaXMgc2NyaXB0LiI7CitlbHNlCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpLmlubmVySFRNTCA9ICJGQUlMOiBJbmNvcnJlY3QgZW5jb2RpbmcgdXNlZC4gIEV4cGVjdGVkICciICsgdG9reW8gKyAiJyBidXQgZ290ICciICsgJ+OBqOOBhuOBjeOCh+OBhicgKyAiJy4iOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSAKKyAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9yZXNvdXJjZXMvZnJhbWUtZGVmYXVsdC1lbmMtZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcmVzb3VyY2VzL2ZyYW1lLWRlZmF1bHQtZW5jLWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGU5MjhlMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcmVzb3VyY2VzL2ZyYW1lLWRlZmF1bHQtZW5jLWZyYW1lLmh0bWwKQEAgLTAsMCArMSwxNyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5GcmFtZTwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisgICAgY2hzID0gZG9jdW1lbnQuaW5wdXRFbmNvZGluZzsKKyAgICBpZiAoIWNocykKKyAgICAgICAgY2hzID0gZG9jdW1lbnQuY2hhcnNldDsKKyAgICBpZiAoIWNocykKKyAgICAgICAgY2hzID0gZG9jdW1lbnQuY2hhcmFjdGVyU2V0OworCisgICAgcGFyZW50LmRvbmUoY2hzKTsKKzwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3Jlc291cmNlcy9pbnZhbGlkLXhtbC1zaGlmdC1qaXMueG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9yZXNvdXJjZXMvaW52YWxpZC14bWwtc2hpZnQtamlzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzNhMDhjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9yZXNvdXJjZXMvaW52YWxpZC14bWwtc2hpZnQtamlzLnhtbApAQCAtMCwwICsxLDUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InNoaWZ0LWppcyIgPz4KKzxyb290PgorIDxmYWlsPiBUaGlzIGlzIGFuIGludmFsaWQgYnl0ZSBwYWlyIGluIHNoaWZ0LWppczogDiA8L2ZhaWw+CisgPHRlc3QvPiA8IS0tIHNob3VsZG4ndCBldmVyIGJlIHBhcnNlZCwgYXMgdGhlIHBhcnNlciBzaG91bGQgYWJvcnQgYXQgdGhlIGZpcnN0IHNpZ24gb2Ygbm9uLXdlbGwtZm9ybWVkbmVzcyAtLT4KKzwvcm9vdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcmVzb3VyY2VzL2ludmFsaWQteG1sLXV0ZjE2LnhtbCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcmVzb3VyY2VzL2ludmFsaWQteG1sLXV0ZjE2LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjdkYTNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9yZXNvdXJjZXMvaW52YWxpZC14bWwtdXRmMTYueG1sCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcmVzb3VyY2VzL2ludmFsaWQteG1sLXV0ZjgueG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9yZXNvdXJjZXMvaW52YWxpZC14bWwtdXRmOC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQ3ODUwZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcmVzb3VyY2VzL2ludmFsaWQteG1sLXV0ZjgueG1sCkBAIC0wLDAgKzEsNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8cm9vdD4KKyA8ZmFpbD4gVGhpcyBpcyBhbiBpbnZhbGlkIGJ5dGUgaW4gVVRGLTg6IL8gPC9mYWlsPgorIDx0ZXN0Lz4gPCEtLSBzaG91bGRuJ3QgZXZlciBiZSBwYXJzZWQsIGFzIHRoZSBwYXJzZXIgc2hvdWxkIGFib3J0IGF0IHRoZSBmaXJzdCBzaWduIG9mIG5vbi13ZWxsLWZvcm1lZG5lc3MgLS0+Cis8L3Jvb3Q+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3Jlc291cmNlcy9pbnZhbGlkLXhtbC14LW1hYy10aGFpLnhtbCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcmVzb3VyY2VzL2ludmFsaWQteG1sLXgtbWFjLXRoYWkueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5OGQwZWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3Jlc291cmNlcy9pbnZhbGlkLXhtbC14LW1hYy10aGFpLnhtbApAQCAtMCwwICsxLDUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IngtbWFjLXRoYWkiID8+Cis8cm9vdD4KKyA8ZmFpbD4gVGhpcyBpcyBhbiBpbnZhbGlkIGJ5dGUgaW4geC1tYWMtdGhhaTogkCA8L2ZhaWw+CisgPHRlc3QvPiA8IS0tIHNob3VsZG4ndCBldmVyIGJlIHBhcnNlZCwgYXMgdGhlIHBhcnNlciBzaG91bGQgYWJvcnQgYXQgdGhlIGZpcnN0IHNpZ24gb2Ygbm9uLXdlbGwtZm9ybWVkbmVzcyAtLT4KKzwvcm9vdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcmVzb3VyY2VzL2ludmFsaWQteG1sLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9yZXNvdXJjZXMvaW52YWxpZC14bWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI0MWEwYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcmVzb3VyY2VzL2ludmFsaWQteG1sLmpzCkBAIC0wLDAgKzEsNDMgQEAKKy8vIHRlc3QgNzA6IFhNTCBlbmNvZGluZyB0ZXN0CisvLyBxLnYuIFhNTCAxLjAsIHNlY3Rpb24gNC4zLjMgQ2hhcmFjdGVyIEVuY29kaW5nIGluIEVudGl0aWVzCisvLyB0aGlzIG9ubHkgdGVzdHMgb25lIG9mIGEgbGFyZ2UgbnVtYmVyIG9mIGNvbmRpdGlvbnMgdGhhdCBzaG91bGQgY2F1c2UgZmF0YWwgZXJyb3JzCisKK2Z1bmN0aW9uIHJ1bkVuY29kaW5nVGVzdChldmVudCkKK3sKKyAgICBkZWJ1ZygiVGVzdGluZzogIiArIGVuY29kaW5nVGVzdHNbY3VycmVudFRlc3QtMV0pOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiaWZyYW1lLmNvbnRlbnREb2N1bWVudC5kb2N1bWVudEVsZW1lbnQudGFnTmFtZSIsICJyb290Iik7CisgICAgc2hvdWxkQmVUcnVlKCJpZnJhbWUuY29udGVudERvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndGVzdCcpLmxlbmd0aCA8IDEiKTsKKyAgICBzZXRUaW1lb3V0KHJ1bk5leHRUZXN0LCAwKTsKK30KKwordmFyIGN1cnJlbnRUZXN0ID0gMDsKK3ZhciBlbmNvZGluZ1Rlc3RzID0gWworICAgICJpbnZhbGlkLXhtbC11dGY4LnhtbCIsCisgICAgImludmFsaWQteG1sLXV0ZjE2LnhtbCIsCisgICAgImludmFsaWQteG1sLXNoaWZ0LWppcy54bWwiLAorICAgICJpbnZhbGlkLXhtbC14LW1hYy10aGFpLnhtbCIsCitdOworCitmdW5jdGlvbiBydW5OZXh0VGVzdCgpCit7CisgICAgaWYgKGN1cnJlbnRUZXN0ID49IGVuY29kaW5nVGVzdHMubGVuZ3RoKSB7CisgICAgICAgIHZhciBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTsKKyAgICAgICAgc2NyaXB0LnNyYyA9ICIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIjsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIHNjcmlwdC5zZXRBdHRyaWJ1dGUoIm9ubG9hZCIsICJsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCkiKTsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpOworICAgICAgICBpZnJhbWUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChpZnJhbWUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmcmFtZS5zcmMgPSAicmVzb3VyY2VzLyIgKyBlbmNvZGluZ1Rlc3RzW2N1cnJlbnRUZXN0KytdOworfQorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKwordmFyIGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUpOworaWZyYW1lLm9ubG9hZCA9IHJ1bkVuY29kaW5nVGVzdDsKK3J1bk5leHRUZXN0KCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9yZXNvdXJjZXMvcHJlbG9hZGVkLWdiMjMxMi5jc3MgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3Jlc291cmNlcy9wcmVsb2FkZWQtZ2IyMzEyLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDgzZTYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9yZXNvdXJjZXMvcHJlbG9hZGVkLWdiMjMxMi5jc3MKQEAgLTAsMCArMSBAQAorI2Zvb2JhcjpiZWZvcmUgeyBjb250ZW50OiAiU1Wns6ezp6ZTUyI7IH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcmVzb3VyY2VzL3ByZWxvYWRlZC1nYjIzMTIuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3Jlc291cmNlcy9wcmVsb2FkZWQtZ2IyMzEyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzMjRkZjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3Jlc291cmNlcy9wcmVsb2FkZWQtZ2IyMzEyLmpzCkBAIC0wLDAgKzEgQEAKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0ZGl2MycpLmlubmVyVGV4dCA9ICdTVaezp7OnplNTJzsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcmVzb3VyY2VzL3ByZWxvYWRlZC11dGYtOC5jc3MgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3Jlc291cmNlcy9wcmVsb2FkZWQtdXRmLTguY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0ZDk5MmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3Jlc291cmNlcy9wcmVsb2FkZWQtdXRmLTguY3NzCkBAIC0wLDAgKzEgQEAKKyNmb29iYXI6YmVmb3JlIHsgY29udGVudDogIlNV0KHQodCVU1MiOyB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3Jlc291cmNlcy9wcmVsb2FkZWQtdXRmLTguanMgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3Jlc291cmNlcy9wcmVsb2FkZWQtdXRmLTguanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjE2MGExOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcmVzb3VyY2VzL3ByZWxvYWRlZC11dGYtOC5qcwpAQCAtMCwwICsxIEBACitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdGRpdjEnKS5pbm5lclRleHQgPSAnU1XQodCh0JVTUyc7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3Jlc291cmNlcy91dGYtMTYtbGl0dGxlLWVuZGlhbi5jc3MgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3Jlc291cmNlcy91dGYtMTYtbGl0dGxlLWVuZGlhbi5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmNhMGM5NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcmVzb3VyY2VzL3V0Zi0xNi1saXR0bGUtZW5kaWFuLmNzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3Jlc291cmNlcy95ZW50ZXN0ZXh0ZXJuYWwuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3Jlc291cmNlcy95ZW50ZXN0ZXh0ZXJuYWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDEyNjJlYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcmVzb3VyY2VzL3llbnRlc3RleHRlcm5hbC5qcwpAQCAtMCwwICsxLDQgQEAKK2Z1bmN0aW9uIHdyaXRlWWVuRXh0ZXJuYWwoKQoreworICAgIGRvY3VtZW50LndyaXRlKCJ0d28gYmFja3NsYXNoZXMgZXh0ZXJuYWw6ICIgKyAiXFwiICsgIjxicj4iKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcmVzb3VyY2VzL3llbnRlc3RleHRlcm5hbDIuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3Jlc291cmNlcy95ZW50ZXN0ZXh0ZXJuYWwyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2ZGI3MmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3Jlc291cmNlcy95ZW50ZXN0ZXh0ZXJuYWwyLmpzCkBAIC0wLDAgKzEsNSBAQAorZnVuY3Rpb24gd3JpdGVZZW5FeHRlcm5hbCgpCit7CisgICAgZG9jdW1lbnQud3JpdGUoInR3byBiYWNrc2xhc2hlcyBleHRlcm5hbDogXFwgPGJyPiIpOworICAgIGRvY3VtZW50LndyaXRlKCJvbmUgYmFja3NsYXNoIGV4dGVybmFsOiBcIDxicj4iKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2Rpbmcvc2NyaXB0LWluLWhlYWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9zY3JpcHQtaW4taGVhZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzI5ZGRlNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2Rpbmcvc2NyaXB0LWluLWhlYWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGVzdCBmb3IgYnVnIDEyMTY1OiB0ZXh0IGVuY29kaW5nIHByb2JsZW0gYXQgam4uc2Fwby5wdAorCitTaG91bGQgc2VlIGEgc3VjY2VzcyBtZXNzYWdlIGJlbG93LgorCitTVdCh0KHQlVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3NjcmlwdC1pbi1oZWFkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3NjcmlwdC1pbi1oZWFkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDZkYzFjYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2Rpbmcvc2NyaXB0LWluLWhlYWQuaHRtbApAQCAtMCwwICsxLDMwIEBACis8IS0tIHRlbXAgLS0+PHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9KYXZhU2NyaXB0Ij4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorZG9jdW1lbnQud3JpdGUgKCc8U0NSJyArICdJUFQ+JyArCisKKyAgICAnc2V0VGltZW91dChmdW5jdGlvbiAoKSB7JyArCisgICAgICAgIDwhLS0gVGhlIGxldHRlcnMgQ0NFIGJlbG93IGFyZSBDeXJpbGxpYywgc28gd2UgZG8gdGVzdCB0aGF0IHRoZSBlbmNvZGluZyBpcyBjb3JyZWN0LiAtLT4KKyAgICAgICAgPCEtLSBXZSBhbHNvIHRha2UgYW4gb3Bwb3J0dW5pdHkgdG8gdGVzdCB0aGF0IHRoaXMgd2VpcmRseSBsb2NhdGVkIHNjcmlwdCBhY3R1YWxseSBleGVjdXRlcy4gLS0+CisgICAgICAgICdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MPSJTVfPz5VNTIjsnICsKKyAgICAgICAgJ2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpJyArCisgICAgICAgICAgICAnbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOycgKworICAgICd9LCAwKTsnICsKKyc8L1NDUicgKyAnSVBUPicpO2RvY3VtZW50LmNsb3NlKCk7IDwvc2NyaXB0PgorPCEtLSAvdGVtcCAtLT48IS0tSEVBREVSLS0+CisKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iCisiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1rb2k4LXIiPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UZXN0IGZvciA8YSBocmVmPSJodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE2NSI+YnVnIDEyMTY1PC9hPjoKK3RleHQgZW5jb2RpbmcgcHJvYmxlbSBhdCBqbi5zYXBvLnB0PC9wPgorPHA+U2hvdWxkIHNlZSBhIHN1Y2Nlc3MgbWVzc2FnZSBiZWxvdy48L3A+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy90YWctaW4tdGl0bGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy90YWctaW4tdGl0bGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmZWY5YjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3RhZy1pbi10aXRsZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitUaGlzIHRlc3QgY2hlY2tzIHRoYXQgV2ViS2l0IGRvZXNuJ3Qgc3RvcCBsb29raW5nIGZvciBhIGNoYXJzZXQgZGVmaW5lZCBpbiBhbiBIVFRQLUVRVUlWIG1ldGEgd2hlbiBpdCBlbmNvdW50ZXJzIGEgdGFnIHdpdGhpbiA8dGl0bGU+LgorCitUaGUgZmlyc3QgbGV0dGVyIHNob3VsZCBsb29rIGxpa2UgYSBMYXRpbiAiSyIgaGVyZToKKwor0JrQsNC60LDRjyDQs9Cw0LTQvtGB0YLRjCEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvdGFnLWluLXRpdGxlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3RhZy1pbi10aXRsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmN2NhNGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3RhZy1pbi10aXRsZS5odG1sCkBAIC0wLDAgKzEsMTkgQEAKKzxodG1sPgorIDxoZWFkPgorIDx0aXRsZT703MfJIDxiPjxmb250IGNvbG9yPXJlZD5bUl08L2ZvbnQ+PC9iPiDXICZsdDt0aXRsZSZndDs8L3RpdGxlPgorIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0vZmF2aWNvbi5pY28gdHlwZT1pbWFnZS94LWljb24+CisgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9S09JOC1SIj4KKyA8c2NyaXB0PgorICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgPC9zY3JpcHQ+CisgPC9oZWFkPgorCis8Ym9keT4KKyAgPHA+VGhpcyB0ZXN0IGNoZWNrcyB0aGF0IFdlYktpdCBkb2Vzbid0IHN0b3AgbG9va2luZyBmb3IgYSBjaGFyc2V0IGRlZmluZWQgaW4gYW4gSFRUUC1FUVVJViBtZXRhIHdoZW4gaXQgZW5jb3VudGVycyBhIHRhZyB3aXRoaW4gJmx0O3RpdGxlJmd0Oy48L3A+CisgIDxwPlRoZSBmaXJzdCBsZXR0ZXIgc2hvdWxkIGxvb2sgbGlrZSBhIExhdGluICJLIiBoZXJlOjwvcD4KKyAgPHA+CisgIOvBy8HRIMfBxM/T1NghCisgIDwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvdXJsLWhvc3QtbmFtZS1ub24tYXNjaWktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy91cmwtaG9zdC1uYW1lLW5vbi1hc2NpaS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWQ3OGZjOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvdXJsLWhvc3QtbmFtZS1ub24tYXNjaWktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGVzdCBmb3IgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NzYgUkVHUkVTU0lPTiAocjMwMjQwLXIzMDI2Nyk6IGhyZWYgYXR0cmlidXRlIHZhbHVlcyB3aXRoIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIGluIHRoZSBob3N0IHBhcnQgZG8gbm90IHdvcmsuCisKK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvdXJsLWhvc3QtbmFtZS1ub24tYXNjaWkuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvdXJsLWhvc3QtbmFtZS1ub24tYXNjaWkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzliN2JhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy91cmwtaG9zdC1uYW1lLW5vbi1hc2NpaS5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzxwPgorICAgIFRlc3QgZm9yIDxpPjxhIGhyZWY9Imh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3Njc2Ij5odHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY3NjwvYT4KKyAgICBSRUdSRVNTSU9OIChyMzAyNDAtcjMwMjY3KTogaHJlZiBhdHRyaWJ1dGUgdmFsdWVzIHdpdGggbm9uLUFTQ0lJIGNoYXJhY3RlcnMgaW4gdGhlIGhvc3QgcGFydCBkbyBub3Qgd29yazwvaT4uCis8L3A+Cis8YSBpZD0iYW5jaG9yIiBocmVmPSJodHRwOi8vdyYjeGU5O2JraXQub3JnLyI+PC9hPgorPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgdmFyIGVuY29kZWRVUkwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYW5jaG9yIikuaHJlZjsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJUZXh0ID0gZW5jb2RlZFVSTCA9PSAiaHR0cDovL3huLS13YmtpdC1ic2Eub3JnLyIgPyAiUEFTUyIgOiAiRkFJTDogVGhlIGVuY29kZWQgVVJMIHdhcyAnIiArIGVuY29kZWRVUkwgKyAiJy4iOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3V0Zi0xNi1iaWctZW5kaWFuLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3V0Zi0xNi1iaWctZW5kaWFuLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDBkYjk2NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvdXRmLTE2LWJpZy1lbmRpYW4uaHRtbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3V0Zi0xNi1saXR0bGUtZW5kaWFuLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3V0Zi0xNi1saXR0bGUtZW5kaWFuLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQwZDdiZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvdXRmLTE2LWxpdHRsZS1lbmRpYW4uaHRtbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3V0Zi0xNi1uby1ib20ueG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy91dGYtMTYtbm8tYm9tLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xN2Y5MzY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy91dGYtMTYtbm8tYm9tLnhtbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3V0Zi0zMi1iaWctZW5kaWFuLWJvbS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3V0Zi0zMi1iaWctZW5kaWFuLWJvbS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGM4NjBhYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvdXRmLTMyLWJpZy1lbmRpYW4tYm9tLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1doZW4gZHVtcGVkIGludG8gYSB0ZXh0IGZpbGUgYnkgdGhlIHRlc3QgY29udHJvbGxlciwgdGhpcyBuZWVkcyB0byBiZSB2aWV3ZWQgYXMgVVRGLTg6CisKK1RoaXMgaXMgYW4gZW0gZGFzaCwg4oCULCB0aGlzIGlzIGlzIGEgZGVsdGEgc3ltYm9sLCDiiIYsIHRoaXMgaXMgYW4gdXBwZXJjYXNlIHBpLCDiiI8sIGFuZCB0aGlzIGlzIGEgbG93ZXJjYXNlIHBpLCDPgC4KKworU3VjY2VzcyA6IFVURi0zMkJFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3V0Zi0zMi1iaWctZW5kaWFuLWJvbS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy91dGYtMzItYmlnLWVuZGlhbi1ib20uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWI4ZTljCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy91dGYtMzItYmlnLWVuZGlhbi1ib20uaHRtbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3V0Zi0zMi1iaWctZW5kaWFuLW5vYm9tLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvdXRmLTMyLWJpZy1lbmRpYW4tbm9ib20tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjODYwYWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3V0Zi0zMi1iaWctZW5kaWFuLW5vYm9tLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1doZW4gZHVtcGVkIGludG8gYSB0ZXh0IGZpbGUgYnkgdGhlIHRlc3QgY29udHJvbGxlciwgdGhpcyBuZWVkcyB0byBiZSB2aWV3ZWQgYXMgVVRGLTg6CisKK1RoaXMgaXMgYW4gZW0gZGFzaCwg4oCULCB0aGlzIGlzIGlzIGEgZGVsdGEgc3ltYm9sLCDiiIYsIHRoaXMgaXMgYW4gdXBwZXJjYXNlIHBpLCDiiI8sIGFuZCB0aGlzIGlzIGEgbG93ZXJjYXNlIHBpLCDPgC4KKworU3VjY2VzcyA6IFVURi0zMkJFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3V0Zi0zMi1iaWctZW5kaWFuLW5vYm9tLnhtbCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvdXRmLTMyLWJpZy1lbmRpYW4tbm9ib20ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4ZGMwMTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3V0Zi0zMi1iaWctZW5kaWFuLW5vYm9tLnhtbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3V0Zi0zMi1saXR0bGUtZW5kaWFuLWJvbS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3V0Zi0zMi1saXR0bGUtZW5kaWFuLWJvbS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTE3OWRlMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvdXRmLTMyLWxpdHRsZS1lbmRpYW4tYm9tLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1doZW4gZHVtcGVkIGludG8gYSB0ZXh0IGZpbGUgYnkgdGhlIHRlc3QgY29udHJvbGxlciwgdGhpcyBuZWVkcyB0byBiZSB2aWV3ZWQgYXMgVVRGLTg6CisKK1RoaXMgaXMgYW4gZW0gZGFzaCwg4oCULCB0aGlzIGlzIGlzIGEgZGVsdGEgc3ltYm9sLCDiiIYsIHRoaXMgaXMgYW4gdXBwZXJjYXNlIHBpLCDiiI8sIGFuZCB0aGlzIGlzIGEgbG93ZXJjYXNlIHBpLCDPgC4KKworU3VjY2VzcyA6IFVURi0zMkxFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3V0Zi0zMi1saXR0bGUtZW5kaWFuLWJvbS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy91dGYtMzItbGl0dGxlLWVuZGlhbi1ib20uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjU2NmI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy91dGYtMzItbGl0dGxlLWVuZGlhbi1ib20uaHRtbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3V0Zi0zMi1saXR0bGUtZW5kaWFuLW5vYm9tLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvdXRmLTMyLWxpdHRsZS1lbmRpYW4tbm9ib20tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxNzlkZTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3V0Zi0zMi1saXR0bGUtZW5kaWFuLW5vYm9tLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1doZW4gZHVtcGVkIGludG8gYSB0ZXh0IGZpbGUgYnkgdGhlIHRlc3QgY29udHJvbGxlciwgdGhpcyBuZWVkcyB0byBiZSB2aWV3ZWQgYXMgVVRGLTg6CisKK1RoaXMgaXMgYW4gZW0gZGFzaCwg4oCULCB0aGlzIGlzIGlzIGEgZGVsdGEgc3ltYm9sLCDiiIYsIHRoaXMgaXMgYW4gdXBwZXJjYXNlIHBpLCDiiI8sIGFuZCB0aGlzIGlzIGEgbG93ZXJjYXNlIHBpLCDPgC4KKworU3VjY2VzcyA6IFVURi0zMkxFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3V0Zi0zMi1saXR0bGUtZW5kaWFuLW5vYm9tLnhtbCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvdXRmLTMyLWxpdHRsZS1lbmRpYW4tbm9ib20ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmN2E4ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3V0Zi0zMi1saXR0bGUtZW5kaWFuLW5vYm9tLnhtbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3htYWNyb21hbi1lbmNvZGluZy10ZXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3htYWNyb21hbi1lbmNvZGluZy10ZXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTI3MDJlMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcveG1hY3JvbWFuLWVuY29kaW5nLXRlc3QuaHRtbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3htbC1jaGFyc2V0LXV0ZjE2LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcveG1sLWNoYXJzZXQtdXRmMTYtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkYTViYTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3htbC1jaGFyc2V0LXV0ZjE2LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxIEBACitUaGlzIHNob3VsZCBsb29rIGxpa2UgYSBSb21hbiDigJhC4oCZOiDigJjQkuKAmS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcveG1sLWNoYXJzZXQtdXRmMTYuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcveG1sLWNoYXJzZXQtdXRmMTYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MjU3NzI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy94bWwtY2hhcnNldC11dGYxNi5odG1sCkBAIC0wLDAgKzEsMTEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi0xNiI/PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD13aW5kb3dzLTEyNTEiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSI+Cis8L21ldGE+Cis8L2hlYWQ+Cis8Ym9keT4KK1RoaXMgc2hvdWxkIGxvb2sgbGlrZSBhIFJvbWFuIJFCkjogkcKSLgorPHNjcmlwdD5pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3htbC11dGYtOC1kZWZhdWx0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcveG1sLXV0Zi04LWRlZmF1bHQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0YTFjMjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3htbC11dGYtOC1kZWZhdWx0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1doZW4gZHVtcGVkIGludG8gYSB0ZXh0IGZpbGUgYnkgdGhlIHRlc3QgY29udHJvbGxlciwgdGhpcyBuZWVkcyB0byBiZSB2aWV3ZWQgYXMgVVRGLTg6CisKK1RoaXMgaXMgYW4gZW0gZGFzaCwg4oCULCB0aGlzIGlzIGlzIGEgZGVsdGEgc3ltYm9sLCDiiIYsIHRoaXMgaXMgYW4gdXBwZXJjYXNlIHBpLCDiiI8sIGFuZCB0aGlzIGlzIGEgbG93ZXJjYXNlIHBpLCDPgC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcveG1sLXV0Zi04LWRlZmF1bHQueG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy94bWwtdXRmLTgtZGVmYXVsdC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWYwNzUwNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcveG1sLXV0Zi04LWRlZmF1bHQueG1sCkBAIC0wLDAgKzEsOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgeG1sOmxhbmc9ImVuIiBsYW5nPSJlbiI+Cis8Ym9keT4KKzxwPldoZW4gZHVtcGVkIGludG8gYSB0ZXh0IGZpbGUgYnkgdGhlIHRlc3QgY29udHJvbGxlciwgdGhpcyBuZWVkcyB0byBiZSB2aWV3ZWQgYXMgVVRGLTg6PC9wPgorPHA+VGhpcyBpcyBhbiBlbSBkYXNoLCDigJQsIHRoaXMgaXMgaXMgYSBkZWx0YSBzeW1ib2wsIOKIhiwgdGhpcyBpcyBhbiB1cHBlcmNhc2UgcGksIOKIjywgYW5kIHRoaXMgaXMgYSBsb3dlcmNhc2UgcGksIM+ALjwvcD4KKzxzY3JpcHQ+aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy95YWhvby1tYWlsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcveWFob28tbWFpbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODlhYzlmNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcveWFob28tbWFpbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitUZXN0IGEgcGFydGljdWxhciBleGFtcGxlIG9mIGJyb2tlbiBtYXJrdXAgdGhhdCB3YXMgbWFraW5nIHVzIGlnbm9yZSBhIGNoYXJzZXQgZGVjbGFyYXRpb24uCisKK0VuY29kaW5nOiBVVEYtOCAoc2hvdWxkIGJlIFVURi04KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy95YWhvby1tYWlsLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3lhaG9vLW1haWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MjMzMWM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy95YWhvby1tYWlsLmh0bWwKQEAgLTAsMCArMSwyNiBAQAorPGh0bWw+Cis8aGVhZD4KKwkJPHRpdGxlPgorWWFob28hIE1haWwgLSBzb21lb25lQHlhaG9vLmNvbTwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKworPGRpdiBpZD15aXYxMDM0MzMyNjE0PjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iCisiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+PGh0bWwKKz48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LXR5cGUiCisgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ii8+PC9oZWFkPgorCis8cD5UZXN0IGEgcGFydGljdWxhciBleGFtcGxlIG9mIGJyb2tlbiBtYXJrdXAgdGhhdCB3YXMgbWFraW5nIHVzIGlnbm9yZSBhIGNoYXJzZXQgZGVjbGFyYXRpb24uPC9wPgorPHNjcmlwdD4KKyAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgdmFyIGNoYXJzZXQgPSBkb2N1bWVudC5jaGFyYWN0ZXJTZXQ7CisgIGlmICghY2hhcnNldCkKKyAgICBjaGFyc2V0ID0gZG9jdW1lbnQuY2hhcnNldDsKKyAgaWYgKCFjaGFyc2V0KQorICAgIGNoYXJzZXQgPSBkb2N1bWVudC5pbnB1dEVuY29kaW5nOworICBkb2N1bWVudC53cml0ZSgiRW5jb2Rpbmc6ICIgKyBjaGFyc2V0ICsgIiAoc2hvdWxkIGJlIFVURi04KSIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3llbnRlc3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy95ZW50ZXN0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDFhMjNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy95ZW50ZXN0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK3R3byBiYWNrc2xhc2hlcyBleHRlcm5hbDogXAordHdvIGJhY2tzbGFzaGVzIGlubGluZTogXAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3llbnRlc3QuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcveWVudGVzdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzYTJhMTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3llbnRlc3QuaHRtbApAQCAtMCwwICsxLDE1IEBACis8SFRNTD4KKzxIRUFEPgorPE1FVEEgSFRUUC1FUVVJVj0iQ29udGVudC1UeXBlIiBDT05URU5UPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9c2hpZnQtamlzIj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMveWVudGVzdGV4dGVybmFsLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgorPC9IRUFEPgorPEJPRFk+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK3dyaXRlWWVuRXh0ZXJuYWwoKTsKK2RvY3VtZW50LndyaXRlKCJ0d28gYmFja3NsYXNoZXMgaW5saW5lOiAiICsgIlxcIiArICI8YnI+Iik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcveWVudGVzdDItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy95ZW50ZXN0Mi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTU1NTdhMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcveWVudGVzdDItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAordHdvIGJhY2tzbGFzaGVzIGV4dGVybmFsOiBcIAorb25lIGJhY2tzbGFzaCBleHRlcm5hbDogCit0d28gYmFja3NsYXNoZXMgaW5saW5lOiBcIAorb25lIGJhY2tzbGFzaCBpbmxpbmU6IAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3llbnRlc3QyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5nL3llbnRlc3QyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTMyMDY5YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcveWVudGVzdDIuaHRtbApAQCAtMCwwICsxLDE2IEBACis8SFRNTD4KKzxIRUFEPgorPE1FVEEgSFRUUC1FUVVJVj0iQ29udGVudC1UeXBlIiBDT05URU5UPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9c2hpZnQtamlzIj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMveWVudGVzdGV4dGVybmFsMi5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KKzwvSEVBRD4KKzxCT0RZPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCit3cml0ZVllbkV4dGVybmFsKCk7Citkb2N1bWVudC53cml0ZSgidHdvIGJhY2tzbGFzaGVzIGlubGluZTogXFwgPGJyPiIpOworZG9jdW1lbnQud3JpdGUoIm9uZSBiYWNrc2xhc2ggaW5saW5lOiBcIDxicj4iKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vYW5kcm9pZC90ZXN0X2V4cGVjdGF0aW9ucy50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9hbmRyb2lkL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCBhYTg3YjI1Li4wMjFiOTdkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9hbmRyb2lkL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9hbmRyb2lkL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApAQCAtNDMsNiArNDMsMTEgQEAKIC8vIFRoaXMgZmlyc3QgYmxvY2sgb2YgdGVzdHMgYXJlIGZvciBmZWF0dXJlcyBmb3Igd2hpY2ggQW5kcm9pZAogLy8gc2hvdWxkIHBhc3MgYWxsIHRlc3RzLiBUaGV5IGFyZSBza2lwcGVkIG9ubHkgdGVtcG9yYXJpbHkuCiAvLyBUT0RPOiBGaXggdGhlc2UgZmFpbGluZyB0ZXN0cyBhbmQgcmVtb3ZlIHRoZW0gZnJvbSB0aGlzIGxpc3QuCitmYXN0L2VuY29kaW5nL2NoYXItZW5jb2RpbmcuaHRtbCBGQUlMIC8vIGZhaWxzIGluIEphdmEgSFRUUCBzdGFjaywgc2VlIGh0dHA6Ly9iL2lzc3VlP2lkPTMwNDcxNTYKK2Zhc3QvZW5jb2RpbmcvY2hhci1kZWNvZGluZy5odG1sIEZBSUwgLy8gZmFpbHMgaW4gSmF2YSBIVFRQIHN0YWNrLCBzZWUgaHR0cDovL2IvaXNzdWU/aWQ9MzA0NzE1NgorZmFzdC9lbmNvZGluZy9oYW5hcmVpLWJsb2czMi1mYzItY29tLmh0bWwgRkFJTCAvLyBmYWlscyBpbiBKYXZhIEhUVFAgc3RhY2ssIHNlZSBodHRwOi8vYi9pc3N1ZT9pZD0zMDQ2OTg2CitmYXN0L2VuY29kaW5nL21haWx0by1hbHdheXMtdXRmLTguaHRtbCBGQUlMIC8vIFJlcXVpcmVzIHdhaXRGb3JQb2xpY3lEZWxlZ2F0ZSgpLCBzZWUgaHR0cDovL2IvaXNzdWU/aWQ9MzA0MzQ2OAorZmFzdC9lbmNvZGluZy9wZXJjZW50LWVzY2FwaW5nLmh0bWwgRkFJTCAvLyBmYWlscyBpbiBKYXZhIEhUVFAgc3RhY2ssIHNlZSBodHRwOi8vYi9pc3N1ZT9pZD0zMDQ2OTg0CiBmYXN0L2V2ZW50cy90b3VjaC9iYXNpYy1tdWx0aS10b3VjaC1ldmVudHMuaHRtbCBGQUlMIC8vIFJlcXVpcmVzIG11bHRpLXRvdWNoCiBmYXN0L2V2ZW50cy90b3VjaC90b3VjaC10YXJnZXQuaHRtbCBGQUlMIC8vIFJlcXVpcmVzIG11bHRpLXRvdWNoCiBodHRwL3Rlc3RzL2FwcGNhY2hlL2VtcHR5LW1hbmlmZXN0Lmh0bWwgRkFJTCAvLyBmbGFreQpAQCAtNjAsNiArNjUsOSBAQAogc3RvcmFnZS90cmFuc2FjdGlvbi1zdWNjZXNzLWNhbGxiYWNrLWlzb2xhdGVkLXdvcmxkLmh0bWwgRkFJTCAvLyBSZXF1aXJlcyBsYXlvdXRUZXN0Q29udHJvbGxlci5ldmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZCgpCiAKIC8vIEV4cGVjdGVkIGZhaWx1cmVzIGR1ZSB0byB1bnN1cHBvcnRlZCBmZWF0dXJlcy4KK2Zhc3QvZW5jb2RpbmcvY2hhci1kZWNvZGluZy1tYWMuaHRtbCBGQUlMIC8vIE1hYy1zcGVjaWZpYyBlbmNvZGluZ3MgKGFsc28gbWFya2VkIFdvbid0IEZpeCBpbiBDaHJvbWl1bSwgYnVnIDczODgpCitmYXN0L2VuY29kaW5nL2NoYXItZW5jb2RpbmctbWFjLmh0bWwgRkFJTCAvLyBNYWMtc3BlY2lmaWMgZW5jb2RpbmdzIChhbHNvIG1hcmtlZCBXb24ndCBGaXggaW4gQ2hyb21pdW0sIGJ1ZyA3Mzg4KQorZmFzdC9lbmNvZGluZy9pZG4tc2VjdXJpdHkuaHRtbCBGQUlMIC8vIE1hYy1zcGVjaWZpYyBJRE4gY2hlY2tzIChhbHNvIG1hcmtlZCBXb24ndCBGaXggaW4gQ2hyb21pdW0sIGJ1ZyAyMTgxNCkKIGZhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLWNvb3Jkcy1pbi16b29tLWFuZC1zY3JvbGwuaHRtbCBGQUlMIC8vIFJlcXVpcmVzIGV2ZW50U2VuZGVyLnpvb21QYWdlSW4oKSx6b29tUGFnZU91dCgpCiBmYXN0L3dvcmtlcnMgRkFJTCAvLyB3b3JrZXJzIG5vdCBzdXBwb3J0ZWQKIGh0dHAvdGVzdHMvZXZlbnRzb3VyY2Uvd29ya2VycyBGQUlMIC8vIHdvcmtlcnMgbm90IHN1cHBvcnRlZAo=