ZGlmZiAtLWdpdCBhL3QvZGF0YS9saXN0LWV4YW1wbGUubHMgYi90L2RhdGEvbGlzdC1leGFtcGxlLmxzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4NzhlZWYKLS0tIC9kZXYvbnVsbAorKysgYi90L2RhdGEvbGlzdC1leGFtcGxlLmxzCkBAIC0wLDAgKzEsMjAgQEAKKyMgQkVNRVJLVU5HOgorIyAtIGFsbGUgS29ycHVzZGF0ZWluYW1lbiBrbGVpbiBzY2hyZWliZW4gKHdlZ2VuIGRlcyBTa3JpcHRlIGluIGRvSW5kZXhJZHMpCisKK2JpaAlIZXJhdXNnZWJlcnRleHRlIHp1bSBLb3JwdXMgYmlvCUJJSAorYmlvCUJpb2dyYWZpc2NoZSBMaXRlcmF0dXIJQklPLyhCS0F8TFRJfFRLMXxUSzJ8VEszfFRLNHxUSzV8VEs2KQorYmlvLXB1YglCaW9ncmFmaXNjaGUgTGl0ZXJhdHVyCUJJTy9+QklPLyhCS0F8TFRJfFRLMXxUSzJ8VEszfFRLNHxUSzV8VEs2KQorbAlCZXJsaW5lciBNb3JnZW5wb3N0CUxbMC05XVswLTldLworI2wtbglsLW4JTDIwLworZHBhCU1lbGR1bmdlbiBkZXIgRGV1dHNjaGVuIFByZXNzZS1BZ2VudHVyCURQQVswLTldWzAtOV0vCitmc3AJRmFjaHNwcmFjaGVua29ycHVzCUZTUC8oQU5HfEFOUnxFSU58R0VCfEtBUnxSRUl8U0NIfFRZUHxWRVJ8VklEKQorZnNwLXB1YglGYWNoc3ByYWNoZW5rb3JwdXMJRlNQL35GU1AvKEFOR3xBTlJ8RUlOfEdFQnxLQVJ8UkVJfFNDSHxUWVB8VkVSfFZJRCkKK2tqbAlLaW5kZXItIHVuZCBKdWdlbmRsaXRlcmF0dXIJS0pMLworCit0aG0tbGl0CUJlbGxldHJpc3Rpay9Ucml2aWFsbGl0ZXJhdHVyOiBUaG9tYXMtTWFubi1Lb3JwdXMJVEhNLyhBTUJ8QU1EfEFNRXxBTUZ8QU1IfEFNSnxBTUt8QU1MfEFNTnxBTVopCit3eHgxMQlXaWtpcGVkaWEgQXJ0aWtlbCB1bmQgRGlza3Vzc2lvbmVuCVdbUERdRDExLworemNhCVplaXQgQ2FtcHVzIChGZWIuLUFwci47SnVuLjtBdWcuO09rdC4tRGV6LjsgRGV6LiAyMDEzIG4udi4pCVpDQVswLTldWzAtOV0vCitjb3JwLXctZ2VzYW10LjIwMjMtaS4xNi4wMy4yMwlAQ09QWUAKK2NvcnAtYQlAQ09QWUAKK21pc2MtbGl0CUJlbGxldHJpc3Rpay9Ucml2aWFsbGl0ZXJhdHVyICj2ZmZlbnRsaWNoKQkoR09FLyhBR0R8QUdNfEFHTnxBR1Z8QUdXKSl8KE1LMS8oTEJDfExCVHxMRkh8TEdCfExKQXxMTUJ8TFNPfE1IRXxUSk18VFBNKSl8KE1LMi9UUkkpCisKZGlmZiAtLWdpdCBhL3QvbGlzdDJ2Yy1kZWYudCBiL3QvbGlzdDJ2Yy1kZWYudAppbmRleCA2YTVmY2VjLi4zN2FkYWRiIDEwMDY0NAotLS0gYS90L2xpc3QydmMtZGVmLnQKKysrIGIvdC9saXN0MnZjLWRlZi50CkBAIC0xNSwxNCArMTUsMTQgQEAKICMgQ2hlY2sgU1RET1VUCiBzdGRvdXRfbGlrZSgKICAgc3ViIHsKLSAgICBzeXN0ZW0oJHNjcmlwdCwgJGxpc3QxKTsKKyAgICBzeXN0ZW0oJHNjcmlwdCwgJ2RlZicsICRsaXN0MSk7CiAgIH0sCiAgIHFyIV5ce1wiXEBjb250ZXh0XCIuKz9cfSQhLAogICAiY2hlY2sgc3Rkb3V0IgogKTsKIAogIyBDaGVjayBKU09OCi1teSAkanNvbiA9IGRlY29kZV9qc29uKGpvaW4oJycsIGAkc2NyaXB0ICRsaXN0MWApKTsKK215ICRqc29uID0gZGVjb2RlX2pzb24oam9pbignJywgYCRzY3JpcHQgZGVmICRsaXN0MWApKTsKIAogaXMoJGpzb24tPnsnY29sbGVjdGlvbid9LT57J0B0eXBlJ30sICdrb3JhbDpkb2NHcm91cCcsICd0eXBlJyk7CiBpcygkanNvbi0+eydjb2xsZWN0aW9uJ30tPnsnb3BlcmF0aW9uJ30sICdvcGVyYXRpb246b3InLCAnb3BlcmF0aW9uJyk7CkBAIC00Nyw3ICs0Nyw3IEBACiAKICMgQ2hlY2sgSlNPTgogIyBPbmx5IHJldHVybiBleHRlbmRlZCBhcmVhCi0kanNvbiA9IGRlY29kZV9qc29uKGpvaW4oJycsIGAkc2NyaXB0ICRsaXN0M2ApKTsKKyRqc29uID0gZGVjb2RlX2pzb24oam9pbignJywgYCRzY3JpcHQgZGVmICRsaXN0M2ApKTsKIAogaXMoJGpzb24tPnsnY29sbGVjdGlvbid9LT57J0B0eXBlJ30sICdrb3JhbDpkb2MnLCAndHlwZScpOwogCkBAIC02NCw3ICs2NCw3IEBACiBteSAkbGlzdDQgPSBjYXRmaWxlKGRpcm5hbWUoX19GSUxFX18pLCAnZGF0YScsICdsaXN0NC5kZWYnKTsKIAogIyBPbmx5IGNvbnRhaW5zIGludGVuZGVkIGFyZWEKLSRqc29uID0gZGVjb2RlX2pzb24oam9pbignJywgYCRzY3JpcHQgJGxpc3Q0YCkpOworJGpzb24gPSBkZWNvZGVfanNvbihqb2luKCcnLCBgJHNjcmlwdCBkZWYgJGxpc3Q0YCkpOwogCiBpcygkanNvbi0+eydjb2xsZWN0aW9uJ30tPnsnQHR5cGUnfSwgJ2tvcmFsOmRvY0dyb3VwJywgJ3R5cGUnKTsKIGlzKCRqc29uLT57J2NvbGxlY3Rpb24nfS0+eydjb21tZW50J30sICduYW1lOiJWQVMgTjkxIicsICduYW1lJyk7CmRpZmYgLS1naXQgYS90L2xpc3QydmMtZGVmbGlzdC50IGIvdC9saXN0MnZjLWRlZmxpc3QudApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MWMyMTc2Ci0tLSAvZGV2L251bGwKKysrIGIvdC9saXN0MnZjLWRlZmxpc3QudApAQCAtMCwwICsxLDI4IEBACisjIS91c3IvYmluL2VudiBwZXJsCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOwordXNlIFRlc3Q6Ok1vcmU7Cit1c2UgRmlsZTo6QmFzZW5hbWU7Cit1c2UgRmlsZTo6U3BlYzo6RnVuY3Rpb25zOwordXNlIERhdGE6OkR1bXBlcjsKKwordXNlIFRlc3Q6Ok91dHB1dDsKK3VzZSBNb2pvOjpKU09OICdkZWNvZGVfanNvbic7CisKK215ICRzY3JpcHQgPSBjYXRmaWxlKGRpcm5hbWUoX19GSUxFX18pLCAnLi4nLCAnc2NyaXB0JywgJ2Nvc21hc3ZjMmtvcmFscXVlcnknKTsKK215ICRsaXN0MSA9IGNhdGZpbGUoZGlybmFtZShfX0ZJTEVfXyksICdkYXRhJywgJ2xpc3QtZXhhbXBsZS5scycpOworCisjIENoZWNrIFNURE9VVAorc3Rkb3V0X2xpa2UoCisgIHN1YiB7CisgICAgc3lzdGVtKCRzY3JpcHQsICdsaXN0JywgJGxpc3QxKTsKKyAgfSwKKyAgcXIhQ29udmVydCEsCisgICJjaGVjayBzdGRvdXQiCispOworCisjIENoZWNrIEpTT04KKyMgbXkgJHByb3RvY29sID0gam9pbignJywgYCRzY3JpcHQgbGlzdCAkbGlzdDFgKTsKKworZG9uZV90ZXN0aW5nOworX19FTkRfXwpkaWZmIC0tZ2l0IGEvdC9saXN0MnZjLnQgYi90L2xpc3QydmMudAppbmRleCBmZDdlYTUyLi4xZGMzYzRjIDEwMDY0NAotLS0gYS90L2xpc3QydmMudAorKysgYi90L2xpc3QydmMudApAQCAtNCw3ICs0LDYgQEAKIHVzZSBUZXN0OjpNb3JlOwogdXNlIEZpbGU6OkJhc2VuYW1lOwogdXNlIEZpbGU6OlNwZWM6OkZ1bmN0aW9uczsKLQogdXNlIFRlc3Q6Ok91dHB1dDsKIHVzZSBNb2pvOjpKU09OICdkZWNvZGVfanNvbic7CiAKQEAgLTE0LDE0ICsxMywxNCBAQAogIyBDaGVjayBTVERPVVQKIHN0ZG91dF9saWtlKAogICBzdWIgewotICAgIHN5c3RlbSgkc2NyaXB0LCAkbGlzdDEpOworICAgIHN5c3RlbSgkc2NyaXB0LCAnZGVmJywgJGxpc3QxKTsKICAgfSwKICAgcXIhXlx7XCJcQGNvbnRleHRcIi4rP1x9JCEsCiAgICJjaGVjayBzdGRvdXQiCiApOwogCiAjIENoZWNrIEpTT04KLW15ICRqc29uID0gZGVjb2RlX2pzb24oam9pbignJywgYCRzY3JpcHQgJGxpc3QxYCkpOworbXkgJGpzb24gPSBkZWNvZGVfanNvbihqb2luKCcnLCBgJHNjcmlwdCBkZWYgJGxpc3QxYCkpOwogCiBpcygkanNvbi0+eydjb2xsZWN0aW9uJ30tPnsnQHR5cGUnfSwgJ2tvcmFsOmRvY0dyb3VwJywgJ3R5cGUnKTsKIGlzKCRqc29uLT57J2NvbGxlY3Rpb24nfS0+eydvcGVyYXRpb24nfSwgJ29wZXJhdGlvbjpvcicsICdvcGVyYXRpb24nKTsKQEAgLTQ2LDcgKzQ1LDcgQEAKIAogCiAjIENoZWNrIFNURElOCi1teSAkanNvbjIgPSBkZWNvZGVfanNvbihqb2luKCcnLCBgY2F0ICRsaXN0MSB8ICRzY3JpcHQgLWApKTsKK215ICRqc29uMiA9IGRlY29kZV9qc29uKGpvaW4oJycsIGBjYXQgJGxpc3QxIHwgJHNjcmlwdCBkZWYgLWApKTsKIGlzX2RlZXBseSgkanNvbiwgJGpzb24yKTsKIAogZG9uZV90ZXN0aW5nOwpkaWZmIC0tZ2l0IGEvdC9yZWdleDJ2Yy50IGIvdC9yZWdleDJ2Yy50Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiZGI3MjEKLS0tIC9kZXYvbnVsbAorKysgYi90L3JlZ2V4MnZjLnQKQEAgLTAsMCArMSw1OSBAQAorIyEvdXNyL2Jpbi9lbnYgcGVybAordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBUZXN0OjpNb3JlOwordXNlIEtvckFQOjpEZWZMaXN0OwordXNlIE1vam86OkpTT04gJ2RlY29kZV9qc29uJzsKKworbXkgJHJmID0gXCZLb3JBUDo6RGVmTGlzdDo6ZnJvbV9yZWdleDsKKworc3ViIF9jb2xsZWN0aW9uIHsKKyAgcmV0dXJuIGRlY29kZV9qc29uKCRyZi0+KEBfKS0+dG9fc3RyaW5nKS0+e2NvbGxlY3Rpb259Cit9CisKK215ICRkb2MgPSBfY29sbGVjdGlvbigieCIsJ05hbWUnLCdCZXNjaHJlaWJ1bmcnKTsKK2lzKCRkb2MtPntrZXl9LCdjb3JwdXNTaWdsZScpOworaXMoJGRvYy0+e3ZhbHVlfSwneCcpOworaXMoJGRvYy0+e3R5cGV9LCd0eXBlOnN0cmluZycpOworaXMoJGRvYy0+e2NvbW1lbnR9LCduYW1lOiJOYW1lIixkZXNjOiJCZXNjaHJlaWJ1bmciJyk7CisKKyRkb2MgPSBfY29sbGVjdGlvbigieC8iKTsKK2lzKCRkb2MtPntrZXl9LCdjb3JwdXNTaWdsZScpOworaXMoJGRvYy0+e3ZhbHVlfSwneCcpOworaXMoJGRvYy0+e3R5cGV9LCd0eXBlOnN0cmluZycpOworCiskZG9jID0gX2NvbGxlY3Rpb24oInhbMC0zXSIsJ05hIm1lJywnQmVzY2gicmVcJ2lidW5nJyk7CitpcygkZG9jLT57a2V5fSwnY29ycHVzU2lnbGUnKTsKK2lzKCRkb2MtPnt2YWx1ZX0sJ3hbMC0zXScpOworaXMoJGRvYy0+e3R5cGV9LCd0eXBlOnJlZ2V4Jyk7CitpcygkZG9jLT57Y29tbWVudH0sJ25hbWU6Ik5hXCJtZSIsZGVzYzoiQmVzY2hcInJlXCdpYnVuZyInKTsKKworJGRvYyA9IF9jb2xsZWN0aW9uKCd4WzAtM10vJyk7CitpcygkZG9jLT57a2V5fSwnY29ycHVzU2lnbGUnKTsKK2lzKCRkb2MtPnt2YWx1ZX0sJ3hbMC0zXScpOworaXMoJGRvYy0+e3R5cGV9LCd0eXBlOnJlZ2V4Jyk7CisKKyRkb2MgPSBfY29sbGVjdGlvbignQklPLyhCS0F8TFRJfFRLMXxUSzJ8VEszfFRLNHxUSzV8VEs2KScpOworaXMoJGRvYy0+e2tleX0sJ2RvY1NpZ2xlJyk7CitpcygkZG9jLT57dmFsdWV9LCdCSU8vKEJLQXxMVEl8VEsxfFRLMnxUSzN8VEs0fFRLNXxUSzYpJyk7CitpcygkZG9jLT57dHlwZX0sJ3R5cGU6cmVnZXgnKTsKKworJGRvYyA9IF9jb2xsZWN0aW9uKCcoR09FLyhBR0R8QUdNfEFHTnxBR1Z8QUdXKSl8KE1LMS8oTEJDfExCVHxMRkh8TEdCfExKQXxMTUJ8TFNPfE1IRXxUSk18VFBNKSl8KE1LMi9UUkkpJyk7CitpcygkZG9jLT57a2V5fSwnZG9jU2lnbGUnKTsKK2lzKCRkb2MtPnt2YWx1ZX0sJyhHT0UvKEFHRHxBR018QUdOfEFHVnxBR1cpKXwoTUsxLyhMQkN8TEJUfExGSHxMR0J8TEpBfExNQnxMU098TUhFfFRKTXxUUE0pKXwoTUsyL1RSSSknKTsKK2lzKCRkb2MtPnt0eXBlfSwndHlwZTpyZWdleCcpOworCiskZG9jID0gX2NvbGxlY3Rpb24oJ0ZTUC9+RlNQLyhBTkd8QU5SfEVJTnxHRUJ8S0FSfFJFSXxTQ0h8VFlQfFZFUnxWSUQpJywnZnNwLXB1YicsJ0ZhY2hzcHJhY2hlbmtvcnB1cycpOworCitpcygkZG9jLT57J0B0eXBlJ30sJ2tvcmFsOmRvY0dyb3VwJyk7CitpcygkZG9jLT57J29wZXJhdGlvbid9LCdvcGVyYXRpb246YW5kJyk7CitpcygkZG9jLT57b3BlcmFuZHN9LT5bMF0tPnt0eXBlfSwndHlwZTpzdHJpbmcnKTsKK2lzKCRkb2MtPntvcGVyYW5kc30tPlswXS0+e21hdGNofSwnbWF0Y2g6ZXEnKTsKK2lzKCRkb2MtPntvcGVyYW5kc30tPlswXS0+e2tleX0sJ2NvcnB1c1NpZ2xlJyk7CitpcygkZG9jLT57b3BlcmFuZHN9LT5bMF0tPnt2YWx1ZX0sJ0ZTUCcpOworaXMoJGRvYy0+e29wZXJhbmRzfS0+WzFdLT57dHlwZX0sJ3R5cGU6cmVnZXgnKTsKK2lzKCRkb2MtPntvcGVyYW5kc30tPlsxXS0+e21hdGNofSwnbWF0Y2g6bmUnKTsKK2lzKCRkb2MtPntvcGVyYW5kc30tPlsxXS0+e2tleX0sJ2RvY1NpZ2xlJyk7CitpcygkZG9jLT57b3BlcmFuZHN9LT5bMV0tPnt2YWx1ZX0sJ0ZTUC8oQU5HfEFOUnxFSU58R0VCfEtBUnxSRUl8U0NIfFRZUHxWRVJ8VklEKScpOworCitkb25lX3Rlc3Rpbmc7Cg==