ZGlmZiAtLWdpdCBhL0FsbHVyYS9hbGx1cmEvY29udHJvbGxlcnMvcmVwb3NpdG9yeS5weSBiL0FsbHVyYS9hbGx1cmEvY29udHJvbGxlcnMvcmVwb3NpdG9yeS5weQppbmRleCBjMmIzZWE4Li4wZDA4MDg2IDEwMDY0NAotLS0gYS9BbGx1cmEvYWxsdXJhL2NvbnRyb2xsZXJzL3JlcG9zaXRvcnkucHkKKysrIGIvQWxsdXJhL2FsbHVyYS9jb250cm9sbGVycy9yZXBvc2l0b3J5LnB5CkBAIC01OTksOSArNTk5LDkgQEAKIAogICAgIEBleHBvc2UoKQogICAgIGRlZiBfbG9va3VwKHNlbGYsIHJlZiwgKnJlbWFpbmRlcik6Ci0gICAgICAgIEVPUiA9IHF1b3RlKGMuYXBwLkVORF9PRl9SRUZfRVNDQVBFKQorICAgICAgICBFT1IgPSBjLmFwcC5FTkRfT0ZfUkVGX0VTQ0FQRQogICAgICAgICBpZiBFT1IgaW4gcmVtYWluZGVyOgotICAgICAgICAgICAgaSA9IHJlbWFpbmRlci5pbmRleChxdW90ZShjLmFwcC5FTkRfT0ZfUkVGX0VTQ0FQRSkpCisgICAgICAgICAgICBpID0gcmVtYWluZGVyLmluZGV4KEVPUikKICAgICAgICAgICAgIHJlZiA9ICcvJy5qb2luKChyZWYsKSArIHJlbWFpbmRlcls6aV0pCiAgICAgICAgICAgICByZW1haW5kZXIgPSByZW1haW5kZXJbaSArIDE6XQogICAgICAgICByZXR1cm4gc2VsZi5CcmFuY2hCcm93c2VyQ2xhc3MocmVmKSwgcmVtYWluZGVyCkBAIC02MTEsOSArNjExLDkgQEAKIAogICAgIEBleHBvc2UoKQogICAgIGRlZiBfbG9va3VwKHNlbGYsIGNpLCAqcmVtYWluZGVyKToKLSAgICAgICAgRU9SID0gcXVvdGUoYy5hcHAuRU5EX09GX1JFRl9FU0NBUEUpCisgICAgICAgIEVPUiA9IGMuYXBwLkVORF9PRl9SRUZfRVNDQVBFCiAgICAgICAgIGlmIEVPUiBpbiByZW1haW5kZXI6Ci0gICAgICAgICAgICBpID0gcmVtYWluZGVyLmluZGV4KHF1b3RlKGMuYXBwLkVORF9PRl9SRUZfRVNDQVBFKSkKKyAgICAgICAgICAgIGkgPSByZW1haW5kZXIuaW5kZXgoRU9SKQogICAgICAgICAgICAgY2kgPSAnLycuam9pbigoY2ksKSArIHJlbWFpbmRlcls6aV0pCiAgICAgICAgICAgICByZW1haW5kZXIgPSByZW1haW5kZXJbaSArIDE6XQogICAgICAgICByZXR1cm4gQ29tbWl0QnJvd3NlcihjaSksIHJlbWFpbmRlcgpkaWZmIC0tZ2l0IGEvRm9yZ2VHaXQvZm9yZ2VnaXQvdGVzdHMvZGF0YS90ZXN0X2JyYW5jaC5naXQvb2JqZWN0cy8wOS9hMjQwNjA5N2YwMjg3YzdiMTc4OWJiMDgzNjg3NThjZGUzMjQzYSBiL0ZvcmdlR2l0L2ZvcmdlZ2l0L3Rlc3RzL2RhdGEvdGVzdF9icmFuY2guZ2l0L29iamVjdHMvMDkvYTI0MDYwOTdmMDI4N2M3YjE3ODliYjA4MzY4NzU4Y2RlMzI0M2EKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTA3NmQ3ZQotLS0gL2Rldi9udWxsCisrKyBiL0ZvcmdlR2l0L2ZvcmdlZ2l0L3Rlc3RzL2RhdGEvdGVzdF9icmFuY2guZ2l0L29iamVjdHMvMDkvYTI0MDYwOTdmMDI4N2M3YjE3ODliYjA4MzY4NzU4Y2RlMzI0M2EKQEAgLTAsMCArMSw1IEBACit4AZ3OTQorAjEMQGHXPUUuoCTTfxAR8SJpmzIuppVaPb8ieAGX3+LBy33bbhMWjbs5RMBgCivoNWlZkCxFGytn49nnhEaH5DlERyTqzkPaBF80VgorEjNFZkOkQ46uiqaa0JeMi8GoHSl+zrUPuPJL4DJ6Kw/ZGI7l43P6+dBknoCsjc57CisO9mgQVf5OTvkzV70BQxrc8qreVNZHlwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0ZvcmdlR2l0L2ZvcmdlZ2l0L3Rlc3RzL2RhdGEvdGVzdF9icmFuY2guZ2l0L29iamVjdHMvNDAvYjgwNzMxM2UyMDE1MTk1OWZhYzQ3YTdjYjA0MzhiN2E4OTYxMWUgYi9Gb3JnZUdpdC9mb3JnZWdpdC90ZXN0cy9kYXRhL3Rlc3RfYnJhbmNoLmdpdC9vYmplY3RzLzQwL2I4MDczMTNlMjAxNTE5NTlmYWM0N2E3Y2IwNDM4YjdhODk2MTFlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2MWEzZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Gb3JnZUdpdC9mb3JnZWdpdC90ZXN0cy9kYXRhL3Rlc3RfYnJhbmNoLmdpdC9vYmplY3RzLzQwL2I4MDczMTNlMjAxNTE5NTlmYWM0N2E3Y2IwNDM4YjdhODk2MTFlCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0ZvcmdlR2l0L2ZvcmdlZ2l0L3Rlc3RzL2RhdGEvdGVzdF9icmFuY2guZ2l0L29iamVjdHMvNGUvN2VhZGVlNzM1MzYzYjAzOWUzNGJhNzlkZmRiMGZiOGVhNWE1M2EgYi9Gb3JnZUdpdC9mb3JnZWdpdC90ZXN0cy9kYXRhL3Rlc3RfYnJhbmNoLmdpdC9vYmplY3RzLzRlLzdlYWRlZTczNTM2M2IwMzllMzRiYTc5ZGZkYjBmYjhlYTVhNTNhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlYTBlYTkKLS0tIC9kZXYvbnVsbAorKysgYi9Gb3JnZUdpdC9mb3JnZWdpdC90ZXN0cy9kYXRhL3Rlc3RfYnJhbmNoLmdpdC9vYmplY3RzLzRlLzdlYWRlZTczNTM2M2IwMzllMzRiYTc5ZGZkYjBmYjhlYTVhNTNhCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0ZvcmdlR2l0L2ZvcmdlZ2l0L3Rlc3RzL2RhdGEvdGVzdF9icmFuY2guZ2l0L3JlZnMvaGVhZHMveHl6LzEyMyBiL0ZvcmdlR2l0L2ZvcmdlZ2l0L3Rlc3RzL2RhdGEvdGVzdF9icmFuY2guZ2l0L3JlZnMvaGVhZHMveHl6LzEyMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTAxZWEyCi0tLSAvZGV2L251bGwKKysrIGIvRm9yZ2VHaXQvZm9yZ2VnaXQvdGVzdHMvZGF0YS90ZXN0X2JyYW5jaC5naXQvcmVmcy9oZWFkcy94eXovMTIzCkBAIC0wLDAgKzEgQEAKKzA5YTI0MDYwOTdmMDI4N2M3YjE3ODliYjA4MzY4NzU4Y2RlMzI0M2EKZGlmZiAtLWdpdCBhL0ZvcmdlR2l0L2ZvcmdlZ2l0L3Rlc3RzL2RhdGEvdGVzdF9icmFuY2guZ2l0L3JlZnMvdGFncy9yZWxlYXNlcy92MS4xLjEgYi9Gb3JnZUdpdC9mb3JnZWdpdC90ZXN0cy9kYXRhL3Rlc3RfYnJhbmNoLmdpdC9yZWZzL3RhZ3MvcmVsZWFzZXMvdjEuMS4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxMDFlYTIKLS0tIC9kZXYvbnVsbAorKysgYi9Gb3JnZUdpdC9mb3JnZWdpdC90ZXN0cy9kYXRhL3Rlc3RfYnJhbmNoLmdpdC9yZWZzL3RhZ3MvcmVsZWFzZXMvdjEuMS4xCkBAIC0wLDAgKzEgQEAKKzA5YTI0MDYwOTdmMDI4N2M3YjE3ODliYjA4MzY4NzU4Y2RlMzI0M2EKZGlmZiAtLWdpdCBhL0ZvcmdlR2l0L2ZvcmdlZ2l0L3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9jb250cm9sbGVycy5weSBiL0ZvcmdlR2l0L2ZvcmdlZ2l0L3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9jb250cm9sbGVycy5weQppbmRleCA0NmViZjJmLi5mZmQwOTcxIDEwMDY0NAotLS0gYS9Gb3JnZUdpdC9mb3JnZWdpdC90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfY29udHJvbGxlcnMucHkKKysrIGIvRm9yZ2VHaXQvZm9yZ2VnaXQvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X2NvbnRyb2xsZXJzLnB5CkBAIC05NTQsNiArOTU0LDM1IEBACiAgICAgICAgIGFzc2VydCAnUkVBRE1FPC9hPicgaW4gcgogICAgICAgICBhc3NlcnRfZXF1YWwoYy5hcHAucmVwby5nZXRfZGVmYXVsdF9icmFuY2goJ21hc3RlcicpLCAndGVzdCcpCiAKKyAgICBkZWYgdGVzdF9icmFuY2hfd2l0aF9zbGFzaGVzKHNlbGYpOgorICAgICAgICBicmFuY2hlc19wYWdlID0gc2VsZi5hcHAuZ2V0KCcvc3JjLWdpdC9yZWYvbWFzdGVyL2JyYW5jaGVzLycpCisKKyAgICAgICAgciA9IGJyYW5jaGVzX3BhZ2UuY2xpY2soJ3h5ei8xMjMnLCBpbmRleD0wKSAgIyBsaW5rIGluIHNpZGViYXIKKyAgICAgICAgYXNzZXJ0IHIucmVxdWVzdC51cmwuZW5kc3dpdGgoJ3NyYy1naXQvY2kveHl6LzEyMy9+L3RyZWUvJyksIHIucmVxdWVzdC51cmwKKyAgICAgICAgci5tdXN0Y29udGFpbignb24gYSBicmFuY2gnKSAgIyBjb21taXQgZm9yIHRoaXMgYnJhbmNoCisKKyAgICAgICAgciA9IGJyYW5jaGVzX3BhZ2UuY2xpY2soJ3h5ei8xMjMnLCBpbmRleD0xKSAgIyBsaW5rIGluIGJvZHkKKyAgICAgICAgYXNzZXJ0IHIucmVxdWVzdC51cmwuZW5kc3dpdGgoJ3NyYy1naXQvY2kveHl6LzEyMy9+L3RyZWUvJyksIHIucmVxdWVzdC51cmwKKyAgICAgICAgci5tdXN0Y29udGFpbignb24gYSBicmFuY2gnKSAgIyBjb21taXQgZm9yIHRoaXMgYnJhbmNoCisKKyAgICBkZWYgdGVzdF9yZWZfdXJsX3dpdGhfc2xhc2hlcyhzZWxmKToKKyAgICAgICAgciA9IHNlbGYuYXBwLmdldCgnL3NyYy1naXQvcmVmL3h5ei8xMjMvfi8nKQorICAgICAgICBhc3NlcnQgci5sb2NhdGlvbi5lbmRzd2l0aCgnc3JjLWdpdC9jaS94eXovMTIzL34vdHJlZS8nKQorCisgICAgICAgIHIgPSBzZWxmLmFwcC5nZXQoJy9zcmMtZ2l0L3JlZi94eXovMTIzL34vbG9nLycpCisgICAgICAgIGFzc2VydCByLmxvY2F0aW9uLmVuZHN3aXRoKCdzcmMtZ2l0L2NpLzA5YTI0MDYwOTdmMDI4N2M3YjE3ODliYjA4MzY4NzU4Y2RlMzI0M2EvbG9nLycpCisKKyAgICBkZWYgdGVzdF90YWdfd2l0aF9zbGFzaGVzKHNlbGYpOgorICAgICAgICB0YWdzX3BhZ2UgPSBzZWxmLmFwcC5nZXQoJy9zcmMtZ2l0L3JlZi9tYXN0ZXIvdGFncy8nKQorCisgICAgICAgIHIgPSB0YWdzX3BhZ2UuY2xpY2soJ3JlbGVhc2VzL3YxLjEuMScsIGluZGV4PTApICAjIGxpbmsgaW4gc2lkZWJhcgorICAgICAgICBhc3NlcnQgci5yZXF1ZXN0LnVybC5lbmRzd2l0aCgnc3JjLWdpdC9jaS9yZWxlYXNlcy92MS4xLjEvfi90cmVlLycpLCByLnJlcXVlc3QudXJsCisgICAgICAgIHIubXVzdGNvbnRhaW4oJ29uIGEgYnJhbmNoJykgICMgY29tbWl0IGZvciB0aGlzIHRhZworCisgICAgICAgIHIgPSB0YWdzX3BhZ2UuY2xpY2soJ3JlbGVhc2VzL3YxLjEuMScsIGluZGV4PTEpICAjIGxpbmsgaW4gYm9keQorICAgICAgICBhc3NlcnQgci5yZXF1ZXN0LnVybC5lbmRzd2l0aCgnc3JjLWdpdC9jaS9yZWxlYXNlcy92MS4xLjEvfi90cmVlLycpLCByLnJlcXVlc3QudXJsCisgICAgICAgIHIubXVzdGNvbnRhaW4oJ29uIGEgYnJhbmNoJykgICMgY29tbWl0IGZvciB0aGlzIHRhZworCiAKIGNsYXNzIFRlc3RJbmNsdWRlTWFjcm8oX1Rlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6Cg==