ZGlmZiAtLWdpdCBhL2xpYi9Lb3JBUC9EZWZMaXN0LnBtIGIvbGliL0tvckFQL0RlZkxpc3QucG0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDlmZDFjYgotLS0gL2Rldi9udWxsCisrKyBiL2xpYi9Lb3JBUC9EZWZMaXN0LnBtCkBAIC0wLDAgKzEsMTM1IEBACitwYWNrYWdlIEtvckFQOjpEZWZMaXN0OwordXNlIEtvckFQOjpEZWY7Cit1c2UgS29yQVA6OlZpcnR1YWxDb3JwdXM6Okdyb3VwOwordXNlIEtvckFQOjpWaXJ0dWFsQ29ycHVzOjpEb2M7Cit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOworCisjIENvbnN0cnVjdG9yCitzdWIgbmV3IHsKKyAgbXkgJGNsYXNzID0gc2hpZnQ7CisgIG15ICRmaWxlID0gc2hpZnQ7CisKKyAgd2FybiAneHgnOworCisgIGlmIChyZWYgJGZpbGUgJiYgcmVmICRmaWxlIGVxICdHTE9CJykgeworICAgIHJldHVybiBibGVzcyB7CisgICAgICBmaWxlID0+ICcnLAorICAgICAgZmggPT4gJGZpbGUKKyAgICB9LCAkY2xhc3M7CisgIH07CisKKyAgbXkgJHNlbGYgPSB7CisgICAgZmlsZSA9PiAkZmlsZQorICB9OworCisgICMgT3BlbiBkZWYgZmlsZQorICBpZiAoIW9wZW4oJHNlbGYtPntmaH0sICc8JyAuICRmaWxlKSkgeworICAgIHdhcm4gJEFSR1ZbMF0gLiAiIGNhbid0IGJlIG9wZW5lZCI7CisgICAgZXhpdCgwKTsKKyAgfTsKKworICByZXR1cm4gYmxlc3MgJHNlbGYsICRjbGFzczsKK307CisKKworIyBQYXJzZSBsaXN0IGZpbGUKK3N1YiBwYXJzZSB7CisgIG15ICRzZWxmID0gc2hpZnQ7CisKKyAgd2hpbGUgKCFlb2YoJHNlbGYtPntmaH0pKSB7CisgICAgbXkgJGxpbmUgPSByZWFkbGluZSgkc2VsZi0+e2ZofSk7CisKKyAgICBuZXh0IGlmICRsaW5lID1+IC9eXCMvOworCisgICAgaWYgKCRsaW5lID1+IC9eKC4rPylcdCtcQENPUFlcQFxzKiQvKSB7CisKKyAgICAgICMgVGFrZSBmcm9tIERlZiBmaWxlIQorICAgICAgJHNlbGYtPmNvcHlfdmMoJDEpOworICAgIH0KKworICAgIGVsc2lmICgkbGluZSA9fiAvXihbXlx0XSs/KVx0KyguKj8pXHQoLis/KVwvPyQvKSB7CisgICAgICAkc2VsZi0+cmVnZXhfdG9fdmMoJDEsJDIsJDMpOworICAgICAgIyBwcmludCAkMSwnOiAvJy4kMy4nLycsIlxuIjsKKyAgICB9CisKKyAgICBlbHNpZiAoJGxpbmUgPX4gL15ccyokLykgeworICAgICAgIyBJZ25vcmUKKyAgICB9CisKKyAgICBlbHNlIHsKKyAgICAgIHdhcm4gJ1Vua25vd24gVkMgZGVmaW5pdGlvbjogJywgJGxpbmUsIlxuIjsKKyAgICB9OworICB9OworCisgIGNsb3NlKCRzZWxmLT57Zmh9KTsKK307CisKK3N1YiBjb3B5X3ZjIHsKKyAgbXkgJHNlbGYgPSBzaGlmdDsKKyAgbXkgJGZpbGUgPSBzaGlmdDsKKyAgcHJpbnQgIkNvbnZlcnQgIiwgJGZpbGUsICIgZnJvbSBkZWYgZmlsZVxuIjsKK307CisKK3N1YiByZWdleF90b192YyB7CisgIG15ICRzZWxmID0gc2hpZnQ7CisgIG15ICgkbmFtZSwgJGRlc2MsICRyZWdleCkgPSBAXzsKKworICBwcmludCAiQ29udmVydCAiLCAkbmFtZSwgIiBmcm9tIHJlZ2V4XG4iOworICByZXR1cm4gZnJvbV9yZWdleCgkcmVnZXgsICRuYW1lLCAkZGVzYyk7Cit9OworCitzdWIgZnJvbV9yZWdleCB7CisgIG15ICRyZWdleCA9IHNoaWZ0OworICBteSAkbmFtZSA9IHNoaWZ0OworICBteSAkZGVzYyA9IHBvcDsKKworICBteSAkdmM7CisKKyAgIyBHcm91cCB3aXRoIG5lZ2F0aW9uCisgIGlmICgkcmVnZXggPX4gbSFeKFtefl0rPyl+KC4rPykkISkgeworICAgICR2YyA9IEtvckFQOjpWaXJ0dWFsQ29ycHVzOjpHcm91cC0+bmV3OworCisgICAgbXkgJHBvcyA9IEtvckFQOjpWaXJ0dWFsQ29ycHVzOjpEb2MtPm5ldzsKKyAgICBfcmVnZXhfdG9fZG9jKCRwb3MsICQxKTsKKworICAgICR2Yy0+YWRkKCdhbmQnLCAkcG9zKTsKKworICAgIG15ICRuZWcgPSBLb3JBUDo6VmlydHVhbENvcnB1czo6RG9jLT5uZXc7CisgICAgX3JlZ2V4X3RvX2RvYygkbmVnLCAkMik7CisKKyAgICAkbmVnLT5tYXRjaCgnbmUnKTsKKyAgICAkdmMtPmpvaW50KCRuZWcpOworICB9CisKKyAgIyBTaW1sZSBkb2MKKyAgZWxzZSB7CisgICAgJHZjID0gS29yQVA6OlZpcnR1YWxDb3JwdXM6OkRvYy0+bmV3OworICAgIF9yZWdleF90b19kb2MoJHZjLCAkcmVnZXgpOworICB9OworCisgICR2Yy0+bmFtZSgkbmFtZSkgaWYgJG5hbWU7CisgICR2Yy0+Y29tbWVudCgnZGVzYzonIC4gJHZjLT5lcXVvdGUoJGRlc2MpKSBpZiAkZGVzYzsKKworICByZXR1cm4gJHZjOworfTsKKworc3ViIF9yZWdleF90b19kb2MgeworICBteSAoJHZjLCAkcmVnZXgpID0gQF87CisKKyAgaWYgKCRyZWdleCA9fiBtIV4oW14vXSspXC8/JCEpIHsKKyAgICAkdmMtPmtleSgnY29ycHVzU2lnbGUnKTsKKyAgICAkdmMtPnZhbHVlKCQxKTsKKyAgICBteSAkdmFsdWUgPSAkMTsKKyAgICBpZiAoJDEgIX4gL15bYS16QS1aMC05XSs/JC8pIHsKKyAgICAgICR2Yy0+dHlwZSgncmVnZXgnKTsKKyAgICB9OworICAgIHJldHVybjsKKyAgfQorCisgICR2Yy0+a2V5KCdkb2NTaWdsZScpOworICAkdmMtPnZhbHVlKCRyZWdleCk7CisgICR2Yy0+dHlwZSgncmVnZXgnKTsKK30KKworMTsKZGlmZiAtLWdpdCBhL2xpYi9Lb3JBUC9WaXJ0dWFsQ29ycHVzLnBtIGIvbGliL0tvckFQL1ZpcnR1YWxDb3JwdXMucG0KaW5kZXggNThhZGM2Yi4uOTMzZTRiNyAxMDA2NDQKLS0tIGEvbGliL0tvckFQL1ZpcnR1YWxDb3JwdXMucG0KKysrIGIvbGliL0tvckFQL1ZpcnR1YWxDb3JwdXMucG0KQEAgLTQyLDcgKzQyLDcgQEAKICMgUXVvdGUgdXRpbGl0eSBmdW5jdGlvbgogc3ViIHF1b3RlIHsKICAgc2hpZnQ7Ci0gIG15ICRzdHIgPSBzaGlmdDsKKyAgbXkgJHN0ciA9IHNoaWZ0IG9yIHJldHVybiAnIiInOwogICAkc3RyID1+IHMvKFsiXFxdKS9cXCQxL2c7CiAgIHJldHVybiBxcXsiJHN0ciJ9OwogfTsKZGlmZiAtLWdpdCBhL3NjcmlwdC9jb3NtYXN2YzJrb3JhbHF1ZXJ5IGIvc2NyaXB0L2Nvc21hc3ZjMmtvcmFscXVlcnkKaW5kZXggYzBiM2VkMi4uYTk1NjA1ZiAxMDA3NTUKLS0tIGEvc2NyaXB0L2Nvc21hc3ZjMmtvcmFscXVlcnkKKysrIGIvc2NyaXB0L2Nvc21hc3ZjMmtvcmFscXVlcnkKQEAgLTIsNyArMiw5IEBACiB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzOwogdXNlIEtvckFQOjpEZWY7Cit1c2UgS29yQVA6OkRlZkxpc3Q7CiB1c2UgbGliICdsaWInOwordXNlIEdldG9wdDo6TG9uZzsKIAogIyAyMDIwLTA1LTIwCiAjICAgUHJlbGltaW5hcnkgc3VwcG9ydCBmb3IgQzIgZGVmLWZpbGVzLgpAQCAtMTIsMjUgKzE0LDQ3IEBACiAjICAgQWRkIEtvckFQOjpEZWYuCiAKIG91ciAkVkVSU0lPTiA9IDAuMjsKLQogb3VyIEBBUkdWOwogCi11bmxlc3MgKEBBUkdWKSB7Ci0gIHByaW50IDw8J0hFTFAnOwotQ29udmVydCBhIGxpbmUtc2VwYXJhdGVkIGxpc3Qgb2YgY29ycHVzIHNpZ2xlcywgZG9jIHNpZ2xlcyBvcgotdGV4dCBzaWdsZXMgaW50byBhIHZpcnR1YWwgY29ycHVzIHF1ZXJ5LgorbXkgJGNtZCA9IHNoaWZ0IEBBUkdWOwogCi0gICQgcGVybCBsaXN0MnZjLnBsIG15X3ZjLnR4dCB8IGd6aXAgLXZjID4gbXlfdmMuanNvbmxkLmd6Ci0gICQgY2F0IG15X3ZjLnR4dCB8IHBlcmwgbGlzdDJ2Yy5wbCAtIHwgZ3ppcCAtdmMgPiBteV92Yy5qc29ubGQuZ3oKKworbXkgJGlucHV0OworCitHZXRPcHRpb25zICgKKyAgImlucHV0fGk9cyIgPT4gXCRpbnB1dAorKQorb3IgZGllKCJFcnJvciBpbiBjb21tYW5kIGxpbmUgYXJndW1lbnRzXG4iKTsKKworaWYgKCRjbWQgbmUgJ2RlZicgJiYgJGNtZCBuZSAnbGlzdCcpIHsKKyAgcHJpbnQgPDwnSEVMUCc7CitDb252ZXJ0IGEgbGlzdCBvZiBDMiBWQyBkZWZpbml0aW9ucyBvciBhIHNpbmdsZSBkZWZpbml0aW9uIGludG8KK0tvcmFsUXVlcnkgVkNzLgorCisgICQgcGVybCBjb3NtYXN2YzJrb3JhbHF1ZXJ5IGRlZiBteV92Yy50eHQgfCBnemlwIC12YyA+IG15X3ZjLmpzb25sZC5negorICAkIGNhdCBteV92Yy50eHQgfCBwZXJsIGNvc21hc3ZjMmtvcmFscXVlcnkgZGVmIC0gfCBnemlwIC12YyA+IG15X3ZjLmpzb25sZC5negorCitDb21tYW5kczogZGVmLCBsaXN0CiAKIEhFTFAKLWV4aXQgMDsKK2V4aXQgMTsKIH07CiAKKworIyBQcm9jZXNzIGEgbGlzdAoraWYgKCRjbWQgZXEgJ2xpc3QnKSB7CisgIEtvckFQOjpEZWZMaXN0LT5uZXcoJGlucHV0IHx8ICRBUkdWWzBdKS0+cGFyc2U7CisgIGV4aXQoMCk7Cit9OworCisjIFBhcnNlIGEgc2luZ2xlIGRlZgogbXkgJGRlZl9wYXJzZXI7CiBpZiAoJEFSR1ZbMF0gZXEgJy0nKSB7CiAgICRkZWZfcGFyc2VyID0gS29yQVA6OkRlZi0+bmV3KFwqU1RESU4pOwogfQorZWxzaWYgKCRpbnB1dCkgeworICAkZGVmX3BhcnNlciA9IEtvckFQOjpEZWYtPm5ldygkaW5wdXQpOworfQogZWxzZSB7CiAgICRkZWZfcGFyc2VyID0gS29yQVA6OkRlZi0+bmV3KCRBUkdWWzBdKTsKIH07CmRpZmYgLS1naXQgYS90L2RhdGEvbGlzdC1leGFtcGxlLmxzIGIvdC9kYXRhL2xpc3QtZXhhbXBsZS5scwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODc4ZWVmCi0tLSAvZGV2L251bGwKKysrIGIvdC9kYXRhL2xpc3QtZXhhbXBsZS5scwpAQCAtMCwwICsxLDIwIEBACisjIEJFTUVSS1VORzoKKyMgLSBhbGxlIEtvcnB1c2RhdGVpbmFtZW4ga2xlaW4gc2NocmVpYmVuICh3ZWdlbiBkZXMgU2tyaXB0ZSBpbiBkb0luZGV4SWRzKQorCitiaWgJSGVyYXVzZ2ViZXJ0ZXh0ZSB6dW0gS29ycHVzIGJpbwlCSUgKK2JpbwlCaW9ncmFmaXNjaGUgTGl0ZXJhdHVyCUJJTy8oQktBfExUSXxUSzF8VEsyfFRLM3xUSzR8VEs1fFRLNikKK2Jpby1wdWIJQmlvZ3JhZmlzY2hlIExpdGVyYXR1cglCSU8vfkJJTy8oQktBfExUSXxUSzF8VEsyfFRLM3xUSzR8VEs1fFRLNikKK2wJQmVybGluZXIgTW9yZ2VucG9zdAlMWzAtOV1bMC05XS8KKyNsLW4JbC1uCUwyMC8KK2RwYQlNZWxkdW5nZW4gZGVyIERldXRzY2hlbiBQcmVzc2UtQWdlbnR1cglEUEFbMC05XVswLTldLworZnNwCUZhY2hzcHJhY2hlbmtvcnB1cwlGU1AvKEFOR3xBTlJ8RUlOfEdFQnxLQVJ8UkVJfFNDSHxUWVB8VkVSfFZJRCkKK2ZzcC1wdWIJRmFjaHNwcmFjaGVua29ycHVzCUZTUC9+RlNQLyhBTkd8QU5SfEVJTnxHRUJ8S0FSfFJFSXxTQ0h8VFlQfFZFUnxWSUQpCitramwJS2luZGVyLSB1bmQgSnVnZW5kbGl0ZXJhdHVyCUtKTC8KKwordGhtLWxpdAlCZWxsZXRyaXN0aWsvVHJpdmlhbGxpdGVyYXR1cjogVGhvbWFzLU1hbm4tS29ycHVzCVRITS8oQU1CfEFNRHxBTUV8QU1GfEFNSHxBTUp8QU1LfEFNTHxBTU58QU1aKQord3h4MTEJV2lraXBlZGlhIEFydGlrZWwgdW5kIERpc2t1c3Npb25lbglXW1BEXUQxMS8KK3pjYQlaZWl0IENhbXB1cyAoRmViLi1BcHIuO0p1bi47QXVnLjtPa3QuLURlei47IERlei4gMjAxMyBuLnYuKQlaQ0FbMC05XVswLTldLworY29ycC13LWdlc2FtdC4yMDIzLWkuMTYuMDMuMjMJQENPUFlACitjb3JwLWEJQENPUFlACittaXNjLWxpdAlCZWxsZXRyaXN0aWsvVHJpdmlhbGxpdGVyYXR1ciAo9mZmZW50bGljaCkJKEdPRS8oQUdEfEFHTXxBR058QUdWfEFHVykpfChNSzEvKExCQ3xMQlR8TEZIfExHQnxMSkF8TE1CfExTT3xNSEV8VEpNfFRQTSkpfChNSzIvVFJJKQorCmRpZmYgLS1naXQgYS90L2xpc3QydmMtZGVmLnQgYi90L2xpc3QydmMtZGVmLnQKaW5kZXggNmE1ZmNlYy4uMzdhZGFkYiAxMDA2NDQKLS0tIGEvdC9saXN0MnZjLWRlZi50CisrKyBiL3QvbGlzdDJ2Yy1kZWYudApAQCAtMTUsMTQgKzE1LDE0IEBACiAjIENoZWNrIFNURE9VVAogc3Rkb3V0X2xpa2UoCiAgIHN1YiB7Ci0gICAgc3lzdGVtKCRzY3JpcHQsICRsaXN0MSk7CisgICAgc3lzdGVtKCRzY3JpcHQsICdkZWYnLCAkbGlzdDEpOwogICB9LAogICBxciFeXHtcIlxAY29udGV4dFwiLis/XH0kISwKICAgImNoZWNrIHN0ZG91dCIKICk7CiAKICMgQ2hlY2sgSlNPTgotbXkgJGpzb24gPSBkZWNvZGVfanNvbihqb2luKCcnLCBgJHNjcmlwdCAkbGlzdDFgKSk7CitteSAkanNvbiA9IGRlY29kZV9qc29uKGpvaW4oJycsIGAkc2NyaXB0IGRlZiAkbGlzdDFgKSk7CiAKIGlzKCRqc29uLT57J2NvbGxlY3Rpb24nfS0+eydAdHlwZSd9LCAna29yYWw6ZG9jR3JvdXAnLCAndHlwZScpOwogaXMoJGpzb24tPnsnY29sbGVjdGlvbid9LT57J29wZXJhdGlvbid9LCAnb3BlcmF0aW9uOm9yJywgJ29wZXJhdGlvbicpOwpAQCAtNDcsNyArNDcsNyBAQAogCiAjIENoZWNrIEpTT04KICMgT25seSByZXR1cm4gZXh0ZW5kZWQgYXJlYQotJGpzb24gPSBkZWNvZGVfanNvbihqb2luKCcnLCBgJHNjcmlwdCAkbGlzdDNgKSk7CiskanNvbiA9IGRlY29kZV9qc29uKGpvaW4oJycsIGAkc2NyaXB0IGRlZiAkbGlzdDNgKSk7CiAKIGlzKCRqc29uLT57J2NvbGxlY3Rpb24nfS0+eydAdHlwZSd9LCAna29yYWw6ZG9jJywgJ3R5cGUnKTsKIApAQCAtNjQsNyArNjQsNyBAQAogbXkgJGxpc3Q0ID0gY2F0ZmlsZShkaXJuYW1lKF9fRklMRV9fKSwgJ2RhdGEnLCAnbGlzdDQuZGVmJyk7CiAKICMgT25seSBjb250YWlucyBpbnRlbmRlZCBhcmVhCi0kanNvbiA9IGRlY29kZV9qc29uKGpvaW4oJycsIGAkc2NyaXB0ICRsaXN0NGApKTsKKyRqc29uID0gZGVjb2RlX2pzb24oam9pbignJywgYCRzY3JpcHQgZGVmICRsaXN0NGApKTsKIAogaXMoJGpzb24tPnsnY29sbGVjdGlvbid9LT57J0B0eXBlJ30sICdrb3JhbDpkb2NHcm91cCcsICd0eXBlJyk7CiBpcygkanNvbi0+eydjb2xsZWN0aW9uJ30tPnsnY29tbWVudCd9LCAnbmFtZToiVkFTIE45MSInLCAnbmFtZScpOwpkaWZmIC0tZ2l0IGEvdC9saXN0MnZjLWRlZmxpc3QudCBiL3QvbGlzdDJ2Yy1kZWZsaXN0LnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDFjMjE3NgotLS0gL2Rldi9udWxsCisrKyBiL3QvbGlzdDJ2Yy1kZWZsaXN0LnQKQEAgLTAsMCArMSwyOCBAQAorIyEvdXNyL2Jpbi9lbnYgcGVybAordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBUZXN0OjpNb3JlOwordXNlIEZpbGU6OkJhc2VuYW1lOwordXNlIEZpbGU6OlNwZWM6OkZ1bmN0aW9uczsKK3VzZSBEYXRhOjpEdW1wZXI7CisKK3VzZSBUZXN0OjpPdXRwdXQ7Cit1c2UgTW9qbzo6SlNPTiAnZGVjb2RlX2pzb24nOworCitteSAkc2NyaXB0ID0gY2F0ZmlsZShkaXJuYW1lKF9fRklMRV9fKSwgJy4uJywgJ3NjcmlwdCcsICdjb3NtYXN2YzJrb3JhbHF1ZXJ5Jyk7CitteSAkbGlzdDEgPSBjYXRmaWxlKGRpcm5hbWUoX19GSUxFX18pLCAnZGF0YScsICdsaXN0LWV4YW1wbGUubHMnKTsKKworIyBDaGVjayBTVERPVVQKK3N0ZG91dF9saWtlKAorICBzdWIgeworICAgIHN5c3RlbSgkc2NyaXB0LCAnbGlzdCcsICRsaXN0MSk7CisgIH0sCisgIHFyIUNvbnZlcnQhLAorICAiY2hlY2sgc3Rkb3V0IgorKTsKKworIyBDaGVjayBKU09OCisjIG15ICRwcm90b2NvbCA9IGpvaW4oJycsIGAkc2NyaXB0IGxpc3QgJGxpc3QxYCk7CisKK2RvbmVfdGVzdGluZzsKK19fRU5EX18KZGlmZiAtLWdpdCBhL3QvbGlzdDJ2Yy50IGIvdC9saXN0MnZjLnQKaW5kZXggZmQ3ZWE1Mi4uMWRjM2M0YyAxMDA2NDQKLS0tIGEvdC9saXN0MnZjLnQKKysrIGIvdC9saXN0MnZjLnQKQEAgLTQsNyArNCw2IEBACiB1c2UgVGVzdDo6TW9yZTsKIHVzZSBGaWxlOjpCYXNlbmFtZTsKIHVzZSBGaWxlOjpTcGVjOjpGdW5jdGlvbnM7Ci0KIHVzZSBUZXN0OjpPdXRwdXQ7CiB1c2UgTW9qbzo6SlNPTiAnZGVjb2RlX2pzb24nOwogCkBAIC0xNCwxNCArMTMsMTQgQEAKICMgQ2hlY2sgU1RET1VUCiBzdGRvdXRfbGlrZSgKICAgc3ViIHsKLSAgICBzeXN0ZW0oJHNjcmlwdCwgJGxpc3QxKTsKKyAgICBzeXN0ZW0oJHNjcmlwdCwgJ2RlZicsICRsaXN0MSk7CiAgIH0sCiAgIHFyIV5ce1wiXEBjb250ZXh0XCIuKz9cfSQhLAogICAiY2hlY2sgc3Rkb3V0IgogKTsKIAogIyBDaGVjayBKU09OCi1teSAkanNvbiA9IGRlY29kZV9qc29uKGpvaW4oJycsIGAkc2NyaXB0ICRsaXN0MWApKTsKK215ICRqc29uID0gZGVjb2RlX2pzb24oam9pbignJywgYCRzY3JpcHQgZGVmICRsaXN0MWApKTsKIAogaXMoJGpzb24tPnsnY29sbGVjdGlvbid9LT57J0B0eXBlJ30sICdrb3JhbDpkb2NHcm91cCcsICd0eXBlJyk7CiBpcygkanNvbi0+eydjb2xsZWN0aW9uJ30tPnsnb3BlcmF0aW9uJ30sICdvcGVyYXRpb246b3InLCAnb3BlcmF0aW9uJyk7CkBAIC00Niw3ICs0NSw3IEBACiAKIAogIyBDaGVjayBTVERJTgotbXkgJGpzb24yID0gZGVjb2RlX2pzb24oam9pbignJywgYGNhdCAkbGlzdDEgfCAkc2NyaXB0IC1gKSk7CitteSAkanNvbjIgPSBkZWNvZGVfanNvbihqb2luKCcnLCBgY2F0ICRsaXN0MSB8ICRzY3JpcHQgZGVmIC1gKSk7CiBpc19kZWVwbHkoJGpzb24sICRqc29uMik7CiAKIGRvbmVfdGVzdGluZzsKZGlmZiAtLWdpdCBhL3QvcmVnZXgydmMudCBiL3QvcmVnZXgydmMudApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYmRiNzIxCi0tLSAvZGV2L251bGwKKysrIGIvdC9yZWdleDJ2Yy50CkBAIC0wLDAgKzEsNTkgQEAKKyMhL3Vzci9iaW4vZW52IHBlcmwKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgVGVzdDo6TW9yZTsKK3VzZSBLb3JBUDo6RGVmTGlzdDsKK3VzZSBNb2pvOjpKU09OICdkZWNvZGVfanNvbic7CisKK215ICRyZiA9IFwmS29yQVA6OkRlZkxpc3Q6OmZyb21fcmVnZXg7CisKK3N1YiBfY29sbGVjdGlvbiB7CisgIHJldHVybiBkZWNvZGVfanNvbigkcmYtPihAXyktPnRvX3N0cmluZyktPntjb2xsZWN0aW9ufQorfQorCitteSAkZG9jID0gX2NvbGxlY3Rpb24oIngiLCdOYW1lJywnQmVzY2hyZWlidW5nJyk7CitpcygkZG9jLT57a2V5fSwnY29ycHVzU2lnbGUnKTsKK2lzKCRkb2MtPnt2YWx1ZX0sJ3gnKTsKK2lzKCRkb2MtPnt0eXBlfSwndHlwZTpzdHJpbmcnKTsKK2lzKCRkb2MtPntjb21tZW50fSwnbmFtZToiTmFtZSIsZGVzYzoiQmVzY2hyZWlidW5nIicpOworCiskZG9jID0gX2NvbGxlY3Rpb24oIngvIik7CitpcygkZG9jLT57a2V5fSwnY29ycHVzU2lnbGUnKTsKK2lzKCRkb2MtPnt2YWx1ZX0sJ3gnKTsKK2lzKCRkb2MtPnt0eXBlfSwndHlwZTpzdHJpbmcnKTsKKworJGRvYyA9IF9jb2xsZWN0aW9uKCJ4WzAtM10iLCdOYSJtZScsJ0Jlc2NoInJlXCdpYnVuZycpOworaXMoJGRvYy0+e2tleX0sJ2NvcnB1c1NpZ2xlJyk7CitpcygkZG9jLT57dmFsdWV9LCd4WzAtM10nKTsKK2lzKCRkb2MtPnt0eXBlfSwndHlwZTpyZWdleCcpOworaXMoJGRvYy0+e2NvbW1lbnR9LCduYW1lOiJOYVwibWUiLGRlc2M6IkJlc2NoXCJyZVwnaWJ1bmciJyk7CisKKyRkb2MgPSBfY29sbGVjdGlvbigneFswLTNdLycpOworaXMoJGRvYy0+e2tleX0sJ2NvcnB1c1NpZ2xlJyk7CitpcygkZG9jLT57dmFsdWV9LCd4WzAtM10nKTsKK2lzKCRkb2MtPnt0eXBlfSwndHlwZTpyZWdleCcpOworCiskZG9jID0gX2NvbGxlY3Rpb24oJ0JJTy8oQktBfExUSXxUSzF8VEsyfFRLM3xUSzR8VEs1fFRLNiknKTsKK2lzKCRkb2MtPntrZXl9LCdkb2NTaWdsZScpOworaXMoJGRvYy0+e3ZhbHVlfSwnQklPLyhCS0F8TFRJfFRLMXxUSzJ8VEszfFRLNHxUSzV8VEs2KScpOworaXMoJGRvYy0+e3R5cGV9LCd0eXBlOnJlZ2V4Jyk7CisKKyRkb2MgPSBfY29sbGVjdGlvbignKEdPRS8oQUdEfEFHTXxBR058QUdWfEFHVykpfChNSzEvKExCQ3xMQlR8TEZIfExHQnxMSkF8TE1CfExTT3xNSEV8VEpNfFRQTSkpfChNSzIvVFJJKScpOworaXMoJGRvYy0+e2tleX0sJ2RvY1NpZ2xlJyk7CitpcygkZG9jLT57dmFsdWV9LCcoR09FLyhBR0R8QUdNfEFHTnxBR1Z8QUdXKSl8KE1LMS8oTEJDfExCVHxMRkh8TEdCfExKQXxMTUJ8TFNPfE1IRXxUSk18VFBNKSl8KE1LMi9UUkkpJyk7CitpcygkZG9jLT57dHlwZX0sJ3R5cGU6cmVnZXgnKTsKKworJGRvYyA9IF9jb2xsZWN0aW9uKCdGU1AvfkZTUC8oQU5HfEFOUnxFSU58R0VCfEtBUnxSRUl8U0NIfFRZUHxWRVJ8VklEKScsJ2ZzcC1wdWInLCdGYWNoc3ByYWNoZW5rb3JwdXMnKTsKKworaXMoJGRvYy0+eydAdHlwZSd9LCdrb3JhbDpkb2NHcm91cCcpOworaXMoJGRvYy0+eydvcGVyYXRpb24nfSwnb3BlcmF0aW9uOmFuZCcpOworaXMoJGRvYy0+e29wZXJhbmRzfS0+WzBdLT57dHlwZX0sJ3R5cGU6c3RyaW5nJyk7CitpcygkZG9jLT57b3BlcmFuZHN9LT5bMF0tPnttYXRjaH0sJ21hdGNoOmVxJyk7CitpcygkZG9jLT57b3BlcmFuZHN9LT5bMF0tPntrZXl9LCdjb3JwdXNTaWdsZScpOworaXMoJGRvYy0+e29wZXJhbmRzfS0+WzBdLT57dmFsdWV9LCdGU1AnKTsKK2lzKCRkb2MtPntvcGVyYW5kc30tPlsxXS0+e3R5cGV9LCd0eXBlOnJlZ2V4Jyk7CitpcygkZG9jLT57b3BlcmFuZHN9LT5bMV0tPnttYXRjaH0sJ21hdGNoOm5lJyk7CitpcygkZG9jLT57b3BlcmFuZHN9LT5bMV0tPntrZXl9LCdkb2NTaWdsZScpOworaXMoJGRvYy0+e29wZXJhbmRzfS0+WzFdLT57dmFsdWV9LCdGU1AvKEFOR3xBTlJ8RUlOfEdFQnxLQVJ8UkVJfFNDSHxUWVB8VkVSfFZJRCknKTsKKworZG9uZV90ZXN0aW5nOwo=