From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ronald Rojas Subject: [PATCH RFC 5/8] golang/xenlight: Add tests host related functinality functions Date: Mon, 23 Jan 2017 11:43:34 -0500 Message-ID: <20170123164337.4205-5-ronladred@gmail.com> References: <20170123164337.4205-1-ronladred@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170123164337.4205-1-ronladred@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org, george.dunlap@citrix.com, ian.jackson@eu.citrix.com, wei.liu2@citrix.com Cc: Ronald Rojas List-Id: xen-devel@lists.xenproject.org Q3JlYXRlIHRlc3RzIGZvciB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoKLSBHZXRWZXJzaW9uSW5m bwotIEdldFBoeXNpbmZvCi0gR2V0RG9taW5mbwotIEdldE1heENwdXMKLSBHZXRPbmxpbmVDcHVz Ci0gR2V0TWF4Tm9kZXMKLSBHZXRGcmVlTWVtb3J5CgpTaWduZWQtb2ZmLWJ5OiBSb25hbGQgUm9q YXMgPHJvbmxhZHJlZEBnbWFpbC5jb20+Ci0tLQogdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3Qv ZG9taW5mby9NYWtlZmlsZSAgICAgICAgfCAxOCArKysrKysrKwogdG9vbHMvZ29sYW5nL3hlbmxp Z2h0L3Rlc3QvZG9taW5mby9kb21pbmZvLmMgICAgICAgfCAyOSArKysrKysrKysrKysrCiB0b29s cy9nb2xhbmcveGVubGlnaHQvdGVzdC9kb21pbmZvL2RvbWluZm8uZ28gICAgICB8IDQ4ICsrKysr KysrKysrKysrKysrKysrKysKIHRvb2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L2ZyZWVtZW1vcnkv TWFrZWZpbGUgICAgIHwgMTkgKysrKysrKysrCiB0b29scy9nb2xhbmcveGVubGlnaHQvdGVzdC9m cmVlbWVtb3J5L2ZyZWVtZW1vcnkuYyB8IDI1ICsrKysrKysrKysrCiAuLi4vZ29sYW5nL3hlbmxp Z2h0L3Rlc3QvZnJlZW1lbW9yeS9mcmVlbWVtb3J5LmdvICB8IDM1ICsrKysrKysrKysrKysrKysK IHRvb2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L21heGNwdS9NYWtlZmlsZSAgICAgICAgIHwgMTkg KysrKysrKysrCiB0b29scy9nb2xhbmcveGVubGlnaHQvdGVzdC9tYXhjcHUvbWF4Y3B1LmMgICAg ICAgICB8IDIxICsrKysrKysrKysKIHRvb2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L21heGNwdS9t YXhjcHUuZ28gICAgICAgIHwgMzQgKysrKysrKysrKysrKysrCiB0b29scy9nb2xhbmcveGVubGln aHQvdGVzdC9tYXhub2Rlcy9NYWtlZmlsZSAgICAgICB8IDE5ICsrKysrKysrKwogdG9vbHMvZ29s YW5nL3hlbmxpZ2h0L3Rlc3QvbWF4bm9kZXMvbWF4bm9kZXMuYyAgICAgfCAyMSArKysrKysrKysr CiB0b29scy9nb2xhbmcveGVubGlnaHQvdGVzdC9tYXhub2Rlcy9tYXhub2Rlcy5nbyAgICB8IDM0 ICsrKysrKysrKysrKysrKwogdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3Qvb25saW5lY3B1L01h a2VmaWxlICAgICAgfCAxOSArKysrKysrKysKIHRvb2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L29u bGluZWNwdS9vbmxpbmVjcHUuYyAgIHwgMjEgKysrKysrKysrKwogdG9vbHMvZ29sYW5nL3hlbmxp Z2h0L3Rlc3Qvb25saW5lY3B1L29ubGluZWNwdS5nbyAgfCAzNCArKysrKysrKysrKysrKysKIHRv b2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L3BoeXNpbmZvL01ha2VmaWxlICAgICAgIHwgMTkgKysr KysrKysrCiB0b29scy9nb2xhbmcveGVubGlnaHQvdGVzdC9waHlzaW5mby9waHlzaW5mby5jICAg ICB8IDMxICsrKysrKysrKysrKysrCiB0b29scy9nb2xhbmcveGVubGlnaHQvdGVzdC9waHlzaW5m by9waHlzaW5mby5nbyAgICB8IDM2ICsrKysrKysrKysrKysrKysKIHRvb2xzL2dvbGFuZy94ZW5s aWdodC90ZXN0L3ZlcnNpb25pbmZvL01ha2VmaWxlICAgIHwgMTggKysrKysrKysKIC4uLi9nb2xh bmcveGVubGlnaHQvdGVzdC92ZXJzaW9uaW5mby92ZXJzaW9uaW5mby5jIHwgMTggKysrKysrKysK IC4uLi94ZW5saWdodC90ZXN0L3ZlcnNpb25pbmZvL3ZlcnNpb25pbmZvLmdvICAgICAgIHwgMzMg KysrKysrKysrKysrKysrCiAyMSBmaWxlcyBjaGFuZ2VkLCA1NTEgaW5zZXJ0aW9ucygrKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHRvb2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L2RvbWluZm8vTWFrZWZp bGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9nb2xhbmcveGVubGlnaHQvdGVzdC9kb21pbmZv L2RvbWluZm8uYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL2dvbGFuZy94ZW5saWdodC90ZXN0 L2RvbWluZm8vZG9taW5mby5nbwogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL2dvbGFuZy94ZW5s aWdodC90ZXN0L2ZyZWVtZW1vcnkvTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9n b2xhbmcveGVubGlnaHQvdGVzdC9mcmVlbWVtb3J5L2ZyZWVtZW1vcnkuYwogY3JlYXRlIG1vZGUg MTAwNjQ0IHRvb2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L2ZyZWVtZW1vcnkvZnJlZW1lbW9yeS5n bwogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L21heGNwdS9N YWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L21h eGNwdS9tYXhjcHUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL2dvbGFuZy94ZW5saWdodC90 ZXN0L21heGNwdS9tYXhjcHUuZ28KIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9nb2xhbmcveGVu bGlnaHQvdGVzdC9tYXhub2Rlcy9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL2dv bGFuZy94ZW5saWdodC90ZXN0L21heG5vZGVzL21heG5vZGVzLmMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCB0b29scy9nb2xhbmcveGVubGlnaHQvdGVzdC9tYXhub2Rlcy9tYXhub2Rlcy5nbwogY3JlYXRl IG1vZGUgMTAwNjQ0IHRvb2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L29ubGluZWNwdS9NYWtlZmls ZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L29ubGluZWNw dS9vbmxpbmVjcHUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL2dvbGFuZy94ZW5saWdodC90 ZXN0L29ubGluZWNwdS9vbmxpbmVjcHUuZ28KIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9nb2xh bmcveGVubGlnaHQvdGVzdC9waHlzaW5mby9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRv b2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L3BoeXNpbmZvL3BoeXNpbmZvLmMKIGNyZWF0ZSBtb2Rl IDEwMDY0NCB0b29scy9nb2xhbmcveGVubGlnaHQvdGVzdC9waHlzaW5mby9waHlzaW5mby5nbwog Y3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L3ZlcnNpb25pbmZv L01ha2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3Qv dmVyc2lvbmluZm8vdmVyc2lvbmluZm8uYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL2dvbGFu Zy94ZW5saWdodC90ZXN0L3ZlcnNpb25pbmZvL3ZlcnNpb25pbmZvLmdvCgpkaWZmIC0tZ2l0IGEv dG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3QvZG9taW5mby9NYWtlZmlsZSBiL3Rvb2xzL2dvbGFu Zy94ZW5saWdodC90ZXN0L2RvbWluZm8vTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uYTczNTFjZgotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL2dvbGFuZy94ZW5s aWdodC90ZXN0L2RvbWluZm8vTWFrZWZpbGUKQEAgLTAsMCArMSwxOCBAQAorCit0ZXN0OiBjbGVh biBidWlsZAorCS4vZG9taW5mby5vdXQgPj4gYy5vdXRwdXQKKwlnbyBydW4gZG9taW5mby5nbyA+ PiBnby5vdXRwdXQKKwlpZiBjbXAgLXMgImMub3V0cHV0IiAiZ28ub3V0cHV0IjsgdGhlblwKKwkJ ZWNobyAiR2V0RG9taW5mbyBQQVNTRUQiO1wKKwllbHNlIFwKKwkJZWNobyAiR2V0RG9taW5mbyBG QUlMRUQiO1wKKwlmaVwKKworYnVpbGQ6CisJZ28gYnVpbGQgLW8gZG9taW5mby5hIGRvbWluZm8u Z28gCisJZ2NjIGRvbWluZm8uYyAtbHhlbmxpZ2h0IC1seWFqbCAtbyBkb21pbmZvLm91dAorCitj bGVhbjoKKwlybSAtZiAqLmEKKwlybSAtZiAqLm91dAorCXJtIC1mICoub3V0cHV0CmRpZmYgLS1n aXQgYS90b29scy9nb2xhbmcveGVubGlnaHQvdGVzdC9kb21pbmZvL2RvbWluZm8uYyBiL3Rvb2xz L2dvbGFuZy94ZW5saWdodC90ZXN0L2RvbWluZm8vZG9taW5mby5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmViZTE4YzMKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy9nb2xh bmcveGVubGlnaHQvdGVzdC9kb21pbmZvL2RvbWluZm8uYwpAQCAtMCwwICsxLDI5IEBACisjaW5j bHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxsaWJ4bC5oPgor CitjaGFyICogYm9vbF90b19zdHJpbmcoYm9vbCBiKTsKK2ludCBtYWluKCl7CisKKyAgICBsaWJ4 bF9jdHggKmNvbnRleHQ7CisgICAgbGlieGxfY3R4X2FsbG9jKCZjb250ZXh0LExJQlhMX1ZFUlNJ T04sIDAsIE5VTEwpOworICAgIGxpYnhsX2RvbWluZm8gaW5mbzsKKyAgICBpbnQgZXJyID0gbGli eGxfZG9tYWluX2luZm8oY29udGV4dCwgJmluZm8sIDApOworICAgIGlmKGVyciAhPSAwKXsKKyAg ICAgICAgcmV0dXJuIGVycjsKKyAgICB9CisgICAgCisgICAgCisJcHJpbnRmKCIlZFxuJWRcbiIs IGluZm8uZG9taWQsIGluZm8uc3NpZHJlZik7CisJcHJpbnRmKCIlc1xuJXNcbiVzXG4lc1xuJXNc biVzXG4iLCBib29sX3RvX3N0cmluZyhpbmZvLnJ1bm5pbmcpLCBib29sX3RvX3N0cmluZyhpbmZv LmJsb2NrZWQgKSwgYm9vbF90b19zdHJpbmcoaW5mby5wYXVzZWQgKSxib29sX3RvX3N0cmluZyhp bmZvLnNodXRkb3duICksYm9vbF90b19zdHJpbmcoaW5mby5keWluZyksIGJvb2xfdG9fc3RyaW5n KGluZm8ubmV2ZXJfc3RvcCkpOworCWxvbmcgY3B1X3RpbWUgPSBpbmZvLmNwdV90aW1lLygobG9u ZykxPDwzNSk7CisJcHJpbnRmKCIlZFxuJWx1XG4lbHVcbiVsdVxuJWx1XG4lbHVcbiVsdVxuJWRc biVkXG4lZFxuIiwgaW5mby5zaHV0ZG93bl9yZWFzb24sIGluZm8ub3V0c3RhbmRpbmdfbWVta2Is IGluZm8uY3VycmVudF9tZW1rYiwgaW5mby5zaGFyZWRfbWVta2IsIGluZm8ucGFnZWRfbWVta2Is IGluZm8ubWF4X21lbWtiLCBjcHVfdGltZSwgaW5mby52Y3B1X21heF9pZCwgaW5mby52Y3B1X29u bGluZSwgaW5mby5jcHVwb29sKTsKKwlwcmludGYoIiVkXG4iLCBpbmZvLmRvbWFpbl90eXBlKTsK KworCisgICAgbGlieGxfY3R4X2ZyZWUoY29udGV4dCk7CisKK30KK2NoYXIgKiBib29sX3RvX3N0 cmluZyhib29sIGIpeworICAgIHJldHVybiBiID8gInRydWUiOiAiZmFsc2UiOworfQpkaWZmIC0t Z2l0IGEvdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3QvZG9taW5mby9kb21pbmZvLmdvIGIvdG9v bHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3QvZG9taW5mby9kb21pbmZvLmdvCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2YzZhNjQKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy9n b2xhbmcveGVubGlnaHQvdGVzdC9kb21pbmZvL2RvbWluZm8uZ28KQEAgLTAsMCArMSw0OCBAQAor CitwYWNrYWdlIG1haW4KKworLyoKKyNjZ28gTERGTEFHUzogLWx4ZW5saWdodCAtbHlhamwKKyNp bmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxsaWJ4bC5oPgorKi8KK2ltcG9ydCAiQyIKK2lt cG9ydCAoCisJImZtdCIKKwkieGVucHJvamVjdC5vcmcveGVubGlnaHQiCisJIm9zIgorKQorCitm dW5jIG1haW4oKSB7CisJY3R4IDo9IHhlbmxpZ2h0LkN0eAorCWVyciA6PSBjdHguT3BlbigpCisJ aWYgZXJyICE9IG5pbHsKKwkJb3MuRXhpdCgtMSkKKwl9CisJZGVmZXIgY3R4LkNsb3NlKCkKKwlp bmZvLCBlcnI6PSBjdHguRG9tYWluSW5mbygwKQorCWlmIGVyciAhPSBuaWx7CisJCW9zLkV4aXQo LTEpCisJfQorCisJZm10LlByaW50ZigiJWRcbiVkXG4iLCBpbmZvLkRvbWlkLCBpbmZvLlNzaWRy ZWYpCisJLy9mbXQuUHJpbnRmKCIlc1xuIiwgaW5mby5Tc2lkTGFiZWwpCisJZm10LlByaW50Zigi JXRcbiV0XG4ldFxuJXRcbiV0XG4ldFxuIiwgaW5mby5SdW5uaW5nLCBpbmZvLkJsb2NrZWQsIGlu Zm8uUGF1c2VkLCBpbmZvLlNodXRkb3duLCBpbmZvLkR5aW5nLCBpbmZvLk5ldmVyU3RvcCkKKwlj cHVUaW1lIDo9IGluZm8uQ3B1VGltZS8oMTw8MzUpCisJZm10LlByaW50ZigiJWRcbiVkXG4lZFxu JWRcbiVkXG4lZFxuJWRcbiVkXG4lZFxuJWRcbiIsIGluZm8uU2h1dGRvd25SZWFzb24sIGluZm8u T3V0c3RhbmRpbmdNZW1rYiwgaW5mby5DdXJyZW50TWVta2IsIGluZm8uU2hhcmVkTWVta2IsIGlu Zm8uUGFnZWRNZW1rYiwgaW5mby5NYXhNZW1rYiwgY3B1VGltZSwgaW5mby5WY3B1TWF4SWQsIGlu Zm8uVmNwdU9ubGluZSwgaW5mby5DcHVwb29sKQorCWZtdC5QcmludGYoIiVkXG4iLCBpbmZvLkRv bWFpblR5cGUpCisKK30KKworZnVuYyByZXBsYWNlRG9tYWluVHlwZShuIGludDMyKShyZXQgc3Ry aW5nKXsKKwlzd2l0Y2ggbnsKKwljYXNlIC0xOgorCQlyZXQgPSAiaW52YWxpZCIKKwljYXNlIDE6 CisJCXJldCA9ICJodm0iCisJY2FzZSAyOgorCQlyZXQgPSAicHYiCisJfQorCXJldHVybgorCit9 CmRpZmYgLS1naXQgYS90b29scy9nb2xhbmcveGVubGlnaHQvdGVzdC9mcmVlbWVtb3J5L01ha2Vm aWxlIGIvdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3QvZnJlZW1lbW9yeS9NYWtlZmlsZQpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTQ4ZTUwCi0tLSAvZGV2L251bGwKKysr IGIvdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3QvZnJlZW1lbW9yeS9NYWtlZmlsZQpAQCAtMCww ICsxLDE5IEBACisKK3Rlc3Q6IGNsZWFuIGJ1aWxkCisJLi9mdW5jLm91dCA+PiBjLm91dHB1dAor CWdvIHJ1biBmdW5jLmdvID4+IGdvLm91dHB1dAorCWlmIGNtcCAtcyAiYy5vdXRwdXQiICJnby5v dXRwdXQiOyB0aGVuXAorCQllY2hvICJHZXRGcmVlTWVtb3J5IFBBU1NFRCI7XAorCWVsc2UgXAor CQllY2hvICJHZXRGcmVlTWVtb3J5IEZBSUxFRCI7IFwKKwlmaVwKKworYnVpbGQ6CisJZ28gYnVp bGQgLW8gZnVuYy5hIGZ1bmMuZ28KKwlnY2MgZnVuYy5jIC1seGVubGlnaHQgLWx5YWpsIC1vIGZ1 bmMub3V0CisKK2NsZWFuOgorCXJtIC1mICouYQorCXJtIC1mICoub3V0CisJcm0gLWYgKi5vdXRw dXQKKwpkaWZmIC0tZ2l0IGEvdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3QvZnJlZW1lbW9yeS9m cmVlbWVtb3J5LmMgYi90b29scy9nb2xhbmcveGVubGlnaHQvdGVzdC9mcmVlbWVtb3J5L2ZyZWVt ZW1vcnkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZmY4NDQ0Ci0tLSAv ZGV2L251bGwKKysrIGIvdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3QvZnJlZW1lbW9yeS9mcmVl bWVtb3J5LmMKQEAgLTAsMCArMSwyNSBAQAorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8 c3RkbGliLmg+CisjaW5jbHVkZSA8bGlieGwuaD4KKworaW50IG1haW4oKXsKKworICAgIGxpYnhs X2N0eCAqY29udGV4dDsKKyAgICBsaWJ4bF9jdHhfYWxsb2MoJmNvbnRleHQsTElCWExfVkVSU0lP TiwgMCwgTlVMTCk7CisgICAgbGlieGxfcGh5c2luZm8gaW5mbyA7CisgICAgaW50IGVycj0gbGli eGxfZ2V0X3BoeXNpbmZvKGNvbnRleHQsJmluZm8pOworICAgIGlmKGVyciAhPSAwKXsKKyAgICAg ICAgcmV0dXJuIGVycjsKKyAgICB9CisKKyAgIHVpbnQ2NF90IGZyZWVfbWVtb3J5OworICAgIGVy ciA9IGxpYnhsX2dldF9mcmVlX21lbW9yeShjb250ZXh0LCAmZnJlZV9tZW1vcnkpOworICAgIGlm KGVyciA8IDApeworICAgICAgICBwcmludGYoIiVkXG4iLCBlcnIpOworICAgIH1lbHNleworICAg ICAgICBwcmludGYoIiVsdVxuIiwgZnJlZV9tZW1vcnkpOworICAgIH0KKyAgICBsaWJ4bF9jdHhf ZnJlZShjb250ZXh0KTsKKworfQorCmRpZmYgLS1naXQgYS90b29scy9nb2xhbmcveGVubGlnaHQv dGVzdC9mcmVlbWVtb3J5L2ZyZWVtZW1vcnkuZ28gYi90b29scy9nb2xhbmcveGVubGlnaHQvdGVz dC9mcmVlbWVtb3J5L2ZyZWVtZW1vcnkuZ28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uMTk1MDFlNwotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL2dvbGFuZy94ZW5saWdodC90 ZXN0L2ZyZWVtZW1vcnkvZnJlZW1lbW9yeS5nbwpAQCAtMCwwICsxLDM1IEBACisKK3BhY2thZ2Ug bWFpbgorCisvKgorI2NnbyBMREZMQUdTOiAtbHhlbmxpZ2h0IC1seWFqbAorI2luY2x1ZGUgPHN0 ZGxpYi5oPgorI2luY2x1ZGUgPGxpYnhsLmg+CisqLworaW1wb3J0ICJDIgoraW1wb3J0ICgKKwki Zm10IgorCSJ4ZW5wcm9qZWN0Lm9yZy94ZW5saWdodCIKKwkib3MiCispCisKK2Z1bmMgbWFpbigp IHsKKwljdHggOj0geGVubGlnaHQuQ3R4CisJZXJyIDo9IGN0eC5PcGVuKCkKKwlpZiBlcnIgIT0g bmlseworCQlvcy5FeGl0KC0xKQorCX0KKwlkZWZlciBjdHguQ2xvc2UoKQorCWlmIGVyciAhPSBu aWx7CisJCW9zLkV4aXQoLTEpCisJfQorCisKKwlmcmVlX21lbW9yeSwgZXJyIDo9IGN0eC5HZXRG cmVlTWVtb3J5KCkKKwlpZiBlcnIgIT0gbmlseworCQlmbXQuUHJpbnRmKCIlZFxuIiwgZXJyKQor CX1lbHNleworCQlmbXQuUHJpbnRmKCIlZFxuIiwgZnJlZV9tZW1vcnkpCisJfQorCit9CmRpZmYg LS1naXQgYS90b29scy9nb2xhbmcveGVubGlnaHQvdGVzdC9tYXhjcHUvTWFrZWZpbGUgYi90b29s cy9nb2xhbmcveGVubGlnaHQvdGVzdC9tYXhjcHUvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uMTdhYTE5YQotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL2dvbGFu Zy94ZW5saWdodC90ZXN0L21heGNwdS9NYWtlZmlsZQpAQCAtMCwwICsxLDE5IEBACisKK3Rlc3Q6 IGNsZWFuIGJ1aWxkCisJLi9tYXhjcHUub3V0ID4+IGMub3V0cHV0CisJZ28gcnVuIG1heGNwdS5n byA+PiBnby5vdXRwdXQKKwlpZiBjbXAgLXMgImMub3V0cHV0IiAiZ28ub3V0cHV0IjsgdGhlblwK KwkJZWNobyAiR2V0TWF4Q3B1IFBBU1NFRCI7XAorCWVsc2UgXAorCQllY2hvICJHZXRNYXhDcHUg RkFJTEVEIjsgXAorCWZpXAorCitidWlsZDoKKwlnbyBidWlsZCAtbyBtYXhjcHUuYSBtYXhjcHUu Z28KKwlnY2MgbWF4Y3B1LmMgLWx4ZW5saWdodCAtbHlhamwgLW8gbWF4Y3B1Lm91dAorCitjbGVh bjoKKwlybSAtZiAqLmEKKwlybSAtZiAqLm91dAorCXJtIC1mICoub3V0cHV0CisKZGlmZiAtLWdp dCBhL3Rvb2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L21heGNwdS9tYXhjcHUuYyBiL3Rvb2xzL2dv bGFuZy94ZW5saWdodC90ZXN0L21heGNwdS9tYXhjcHUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi42MGVmN2NlCi0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvZ29sYW5nL3hl bmxpZ2h0L3Rlc3QvbWF4Y3B1L21heGNwdS5jCkBAIC0wLDAgKzEsMjEgQEAKKyNpbmNsdWRlIDxz dGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPGxpYnhsLmg+CisKK2ludCBt YWluKCl7CisKKyAgICBsaWJ4bF9jdHggKmNvbnRleHQ7CisgICAgbGlieGxfY3R4X2FsbG9jKCZj b250ZXh0LExJQlhMX1ZFUlNJT04sIDAsIE5VTEwpOworICAgIGxpYnhsX3BoeXNpbmZvIGluZm8g OworICAgIGludCBlcnI9IGxpYnhsX2dldF9waHlzaW5mbyhjb250ZXh0LCZpbmZvKTsKKyAgICBp ZihlcnIgIT0gMCl7CisgICAgICAgIHJldHVybiBlcnI7CisgICAgfQorCisgICAgaW50IG1heF9j cHVzID0gbGlieGxfZ2V0X21heF9jcHVzKGNvbnRleHQpOworICAgIHByaW50ZigiJWRcbiIsIG1h eF9jcHVzKTsKKworICAgIGxpYnhsX2N0eF9mcmVlKGNvbnRleHQpOworCit9CisKZGlmZiAtLWdp dCBhL3Rvb2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L21heGNwdS9tYXhjcHUuZ28gYi90b29scy9n b2xhbmcveGVubGlnaHQvdGVzdC9tYXhjcHUvbWF4Y3B1LmdvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLmVlZjU3NWYKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy9nb2xhbmcv eGVubGlnaHQvdGVzdC9tYXhjcHUvbWF4Y3B1LmdvCkBAIC0wLDAgKzEsMzQgQEAKKworcGFja2Fn ZSBtYWluCisKKy8qCisjY2dvIExERkxBR1M6IC1seGVubGlnaHQgLWx5YWpsCisjaW5jbHVkZSA8 c3RkbGliLmg+CisjaW5jbHVkZSA8bGlieGwuaD4KKyovCitpbXBvcnQgIkMiCitpbXBvcnQgKAor CSJmbXQiCisJInhlbnByb2plY3Qub3JnL3hlbmxpZ2h0IgorCSJvcyIKKykKKworZnVuYyBtYWlu KCkgeworCWN0eCA6PSB4ZW5saWdodC5DdHgKKwllcnIgOj0gY3R4Lk9wZW4oKQorCWlmIGVyciAh PSBuaWx7CisJCW9zLkV4aXQoLTEpCisJfQorCWRlZmVyIGN0eC5DbG9zZSgpCisJaWYgZXJyICE9 IG5pbHsKKwkJb3MuRXhpdCgtMSkKKwl9CisKKwltYXhfY3B1cywgZXJyIDo9IGN0eC5HZXRNYXhD cHVzKCkKKwlpZiBlcnIgIT0gbmlseworCQlmbXQuUHJpbnRmKCIlZFxuIiwgZXJyICkKKwl9ZWxz ZXsKKwkJZm10LlByaW50ZigiJWRcbiIsIG1heF9jcHVzKQorCX0KKworfQpkaWZmIC0tZ2l0IGEv dG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3QvbWF4bm9kZXMvTWFrZWZpbGUgYi90b29scy9nb2xh bmcveGVubGlnaHQvdGVzdC9tYXhub2Rlcy9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi43NTM1ZWZlCi0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvZ29sYW5nL3hl bmxpZ2h0L3Rlc3QvbWF4bm9kZXMvTWFrZWZpbGUKQEAgLTAsMCArMSwxOSBAQAorCit0ZXN0OiBj bGVhbiBidWlsZAorCS4vbWF4bm9kZXMub3V0ID4+IGMub3V0cHV0CisJZ28gcnVuIG1heG5vZGVz LmdvID4+IGdvLm91dHB1dAorCWlmIGNtcCAtcyAiYy5vdXRwdXQiICJnby5vdXRwdXQiOyB0aGVu XAorCQllY2hvICJHZXRNYXhOb2RlcyBQQVNTRUQiO1wKKwllbHNlIFwKKwkJZWNobyAiR2V0TWF4 Tm9kZXMgRkFJTEVEIjsgXAorCWZpXAorCitidWlsZDoKKwlnbyBidWlsZCAtbyBtYXhub2Rlcy5h IG1heG5vZGVzLmdvCisJZ2NjIG1heG5vZGVzLmMgLWx4ZW5saWdodCAtbHlhamwgLW8gbWF4bm9k ZXMub3V0CisKK2NsZWFuOgorCXJtIC1mICouYQorCXJtIC1mICoub3V0CisJcm0gLWYgKi5vdXRw dXQKKwpkaWZmIC0tZ2l0IGEvdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3QvbWF4bm9kZXMvbWF4 bm9kZXMuYyBiL3Rvb2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L21heG5vZGVzL21heG5vZGVzLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGY3Y2U5YwotLS0gL2Rldi9udWxs CisrKyBiL3Rvb2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L21heG5vZGVzL21heG5vZGVzLmMKQEAg LTAsMCArMSwyMSBAQAorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+Cisj aW5jbHVkZSA8bGlieGwuaD4KKworaW50IG1haW4oKXsKKworICAgIGxpYnhsX2N0eCAqY29udGV4 dDsKKyAgICBsaWJ4bF9jdHhfYWxsb2MoJmNvbnRleHQsTElCWExfVkVSU0lPTiwgMCwgTlVMTCk7 CisgICAgbGlieGxfcGh5c2luZm8gaW5mbyA7CisgICAgaW50IGVycj0gbGlieGxfZ2V0X3BoeXNp bmZvKGNvbnRleHQsJmluZm8pOworICAgIGlmKGVyciAhPSAwKXsKKyAgICAgICAgcmV0dXJuIGVy cjsKKyAgICB9CisKKyAgICBpbnQgbWF4X25vZGVzID0gbGlieGxfZ2V0X21heF9ub2Rlcyhjb250 ZXh0KTsKKyAgICBwcmludGYoIiVkXG4iLCBtYXhfbm9kZXMpOworCisgICBsaWJ4bF9jdHhfZnJl ZShjb250ZXh0KTsKKworfQorCmRpZmYgLS1naXQgYS90b29scy9nb2xhbmcveGVubGlnaHQvdGVz dC9tYXhub2Rlcy9tYXhub2Rlcy5nbyBiL3Rvb2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L21heG5v ZGVzL21heG5vZGVzLmdvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmNjE5 ZmYKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy9nb2xhbmcveGVubGlnaHQvdGVzdC9tYXhub2Rl cy9tYXhub2Rlcy5nbwpAQCAtMCwwICsxLDM0IEBACisKK3BhY2thZ2UgbWFpbgorCisvKgorI2Nn byBMREZMQUdTOiAtbHhlbmxpZ2h0IC1seWFqbAorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1 ZGUgPGxpYnhsLmg+CisqLworaW1wb3J0ICJDIgoraW1wb3J0ICgKKwkiZm10IgorCSJ4ZW5wcm9q ZWN0Lm9yZy94ZW5saWdodCIKKwkib3MiCispCisKK2Z1bmMgbWFpbigpIHsKKwljdHggOj0geGVu bGlnaHQuQ3R4CisJZXJyIDo9IGN0eC5PcGVuKCkKKwlpZiBlcnIgIT0gbmlseworCQlvcy5FeGl0 KC0xKQorCX0KKwlkZWZlciBjdHguQ2xvc2UoKQorCWlmIGVyciAhPSBuaWx7CisJCW9zLkV4aXQo LTEpCisJfQorCisJbWF4X25vZGVzLCBlcnIgOj0gY3R4LkdldE1heE5vZGVzKCkKKwlpZiBlcnIg IT0gbmlseworCQlmbXQuUHJpbnRmKCIlZFxuIiwgZXJyKQorCX1lbHNleworCQlmbXQuUHJpbnRm KCIlZFxuIiwgbWF4X25vZGVzKQorCX0KKworfQpkaWZmIC0tZ2l0IGEvdG9vbHMvZ29sYW5nL3hl bmxpZ2h0L3Rlc3Qvb25saW5lY3B1L01ha2VmaWxlIGIvdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rl c3Qvb25saW5lY3B1L01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LjlkZjIyNTYKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy9nb2xhbmcveGVubGlnaHQvdGVzdC9v bmxpbmVjcHUvTWFrZWZpbGUKQEAgLTAsMCArMSwxOSBAQAorCit0ZXN0OiBjbGVhbiBidWlsZAor CS4vb25saW5lY3B1Lm91dCA+PiBjLm91dHB1dAorCWdvIHJ1biBvbmxpbmVjcHUuZ28gPj4gZ28u b3V0cHV0CisJaWYgY21wIC1zICJjLm91dHB1dCIgImdvLm91dHB1dCI7IHRoZW5cCisJCWVjaG8g IkdldE9ubGluZUNwdXMgUEFTU0VEIjtcCisJZWxzZSBcCisJCWVjaG8gIkdldE9ubGluZSBGQUlM RUQiOyBcCisJZmlcCisKK2J1aWxkOgorCWdvIGJ1aWxkIC1vIG9ubGluZWNwdS5hIG9ubGluZWNw dS5nbworCWdjYyBvbmxpbmVjcHUuYyAtbHhlbmxpZ2h0IC1seWFqbCAtbyBvbmxpbmVjcHUub3V0 CisKK2NsZWFuOgorCXJtIC1mICouYQorCXJtIC1mICoub3V0CisJcm0gLWYgKi5vdXRwdXQKKwpk aWZmIC0tZ2l0IGEvdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3Qvb25saW5lY3B1L29ubGluZWNw dS5jIGIvdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3Qvb25saW5lY3B1L29ubGluZWNwdS5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1NmZmNzEKLS0tIC9kZXYvbnVsbAor KysgYi90b29scy9nb2xhbmcveGVubGlnaHQvdGVzdC9vbmxpbmVjcHUvb25saW5lY3B1LmMKQEAg LTAsMCArMSwyMSBAQAorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+Cisj aW5jbHVkZSA8bGlieGwuaD4KKworaW50IG1haW4oKXsKKworICAgIGxpYnhsX2N0eCAqY29udGV4 dDsKKyAgICBsaWJ4bF9jdHhfYWxsb2MoJmNvbnRleHQsTElCWExfVkVSU0lPTiwgMCwgTlVMTCk7 CisgICAgbGlieGxfcGh5c2luZm8gaW5mbyA7CisgICAgaW50IGVycj0gbGlieGxfZ2V0X3BoeXNp bmZvKGNvbnRleHQsJmluZm8pOworICAgIGlmKGVyciAhPSAwKXsKKyAgICAgICAgcmV0dXJuIGVy cjsKKyAgICB9CisKKyAgICBpbnQgb25saW5lX2NwdXMgPSBsaWJ4bF9nZXRfb25saW5lX2NwdXMo Y29udGV4dCk7CisgICAgcHJpbnRmKCIlZFxuIiwgb25saW5lX2NwdXMpOworCisgICAgbGlieGxf Y3R4X2ZyZWUoY29udGV4dCk7CisKK30KKwpkaWZmIC0tZ2l0IGEvdG9vbHMvZ29sYW5nL3hlbmxp Z2h0L3Rlc3Qvb25saW5lY3B1L29ubGluZWNwdS5nbyBiL3Rvb2xzL2dvbGFuZy94ZW5saWdodC90 ZXN0L29ubGluZWNwdS9vbmxpbmVjcHUuZ28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uMmM0OTY4ZQotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL2dvbGFuZy94ZW5saWdodC90 ZXN0L29ubGluZWNwdS9vbmxpbmVjcHUuZ28KQEAgLTAsMCArMSwzNCBAQAorCitwYWNrYWdlIG1h aW4KKworLyoKKyNjZ28gTERGTEFHUzogLWx4ZW5saWdodCAtbHlhamwKKyNpbmNsdWRlIDxzdGRs aWIuaD4KKyNpbmNsdWRlIDxsaWJ4bC5oPgorKi8KK2ltcG9ydCAiQyIKK2ltcG9ydCAoCisJImZt dCIKKwkieGVucHJvamVjdC5vcmcveGVubGlnaHQiCisJIm9zIgorKQorCitmdW5jIG1haW4oKSB7 CisJY3R4IDo9IHhlbmxpZ2h0LkN0eAorCWVyciA6PSBjdHguT3BlbigpCisJaWYgZXJyICE9IG5p bHsKKwkJb3MuRXhpdCgtMSkKKwl9CisJZGVmZXIgY3R4LkNsb3NlKCkKKwlpZiBlcnIgIT0gbmls eworCQlvcy5FeGl0KC0xKQorCX0KKworCW9ubGluZV9jcHVzLCBlcnIgOj0gY3R4LkdldE9ubGlu ZUNwdXMoKQorCWlmIGVyciAhPSBuaWx7CisJCWZtdC5QcmludGYoIiVkXG4iLCBlcnIpCisJfWVs c2V7CisJCWZtdC5QcmludGYoIiVkXG4iLCBvbmxpbmVfY3B1cykKKwl9CisKK30KZGlmZiAtLWdp dCBhL3Rvb2xzL2dvbGFuZy94ZW5saWdodC90ZXN0L3BoeXNpbmZvL01ha2VmaWxlIGIvdG9vbHMv Z29sYW5nL3hlbmxpZ2h0L3Rlc3QvcGh5c2luZm8vTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uODdmZDE3MQotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL2dvbGFu Zy94ZW5saWdodC90ZXN0L3BoeXNpbmZvL01ha2VmaWxlCkBAIC0wLDAgKzEsMTkgQEAKKwordGVz dDogY2xlYW4gYnVpbGQKKwkuL3BoeXNpbmZvLm91dCA+PiBjLm91dHB1dAorCWdvIHJ1biBwaHlz aW5mby5nbyA+PiBnby5vdXRwdXQKKwlpZiBjbXAgLXMgImMub3V0cHV0IiAiZ28ub3V0cHV0Ijsg dGhlblwKKwkJZWNobyAiR2V0UGh5c2luZm8gUEFTU0VEIjtcCisJZWxzZSBcCisJCWVjaG8gIkdl dFBoeXNpbmZvIEZBSUxFRCI7IFwKKwlmaVwKKworYnVpbGQ6CisJZ28gYnVpbGQgLW8gcGh5c2lu Zm8uYSBwaHlzaW5mby5nbyAKKwlnY2MgcGh5c2luZm8uYyAtbHhlbmxpZ2h0IC1seWFqbCAtbyBw aHlzaW5mby5vdXQKKworY2xlYW46CisJcm0gLWYgKi5hCisJcm0gLWYgKi5vdXQKKwlybSAtZiAq Lm91dHB1dAorCmRpZmYgLS1naXQgYS90b29scy9nb2xhbmcveGVubGlnaHQvdGVzdC9waHlzaW5m by9waHlzaW5mby5jIGIvdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3QvcGh5c2luZm8vcGh5c2lu Zm8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmM4ZjQ3Ci0tLSAvZGV2 L251bGwKKysrIGIvdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3QvcGh5c2luZm8vcGh5c2luZm8u YwpAQCAtMCwwICsxLDMxIEBACisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIu aD4KKyNpbmNsdWRlIDxsaWJ4bC5oPgorCitjaGFyICpib29sX3RvX3N0cmluZyhib29sIGIpOwor aW50IG1haW4oKXsKKworICAgIGxpYnhsX2N0eCAqY29udGV4dDsKKyAgICBsaWJ4bF9jdHhfYWxs b2MoJmNvbnRleHQsTElCWExfVkVSU0lPTiwgMCwgTlVMTCk7CisgICAgbGlieGxfcGh5c2luZm8g aW5mbyA7CisgICAgaW50IGVycj0gbGlieGxfZ2V0X3BoeXNpbmZvKGNvbnRleHQsJmluZm8pOwor ICAgIGlmKGVyciAhPSAwKXsKKyAgICAgICAgcmV0dXJuIGVycjsKKyAgICB9CisKKyAgICBwcmlu dGYoIiVkXG4lZFxuJWRcbiVkXG4lZFxuIiwgaW5mby50aHJlYWRzX3Blcl9jb3JlLCBpbmZvLmNv cmVzX3Blcl9zb2NrZXQsIGluZm8ubWF4X2NwdV9pZCwgaW5mby5ucl9jcHVzLCBpbmZvLmNwdV9r aHopOworICAgIHByaW50ZigiJWx1XG4lbHVcbiVsdVxuJWx1XG4lbHVcbiVsdVxuIiwgaW5mby50 b3RhbF9wYWdlcywgaW5mby5mcmVlX3BhZ2VzLCBpbmZvLnNjcnViX3BhZ2VzLCBpbmZvLm91dHN0 YW5kaW5nX3BhZ2VzLCBpbmZvLnNoYXJpbmdfZnJlZWRfcGFnZXMsIGluZm8uc2hhcmluZ191c2Vk X2ZyYW1lcyk7CisgICAgcHJpbnRmKCIldVxuIixpbmZvLm5yX25vZGVzKTsKKyAgICBwcmludGYo IiVzXG4lc1xuIiwgYm9vbF90b19zdHJpbmcoaW5mby5jYXBfaHZtKSwgYm9vbF90b19zdHJpbmco aW5mby5jYXBfaHZtX2RpcmVjdGlvKSk7CisKKyAgICBmb3IoaW50IGkgPSAwOyBpIDwgODsgaSsr KXsKKyAgICAgICAgcHJpbnRmKCIldVxuIiwgaW5mby5od19jYXBbaV0pOworICAgIH0KKworICAg IGxpYnhsX2N0eF9mcmVlKGNvbnRleHQpOworCit9CisKK2NoYXIgKiBib29sX3RvX3N0cmluZyhi b29sIGIpeworICAgIHJldHVybiBiID8gInRydWUiOiAiZmFsc2UiOworfQpkaWZmIC0tZ2l0IGEv dG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3QvcGh5c2luZm8vcGh5c2luZm8uZ28gYi90b29scy9n b2xhbmcveGVubGlnaHQvdGVzdC9waHlzaW5mby9waHlzaW5mby5nbwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi4wMzlkYTU5Ci0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvZ29s YW5nL3hlbmxpZ2h0L3Rlc3QvcGh5c2luZm8vcGh5c2luZm8uZ28KQEAgLTAsMCArMSwzNiBAQAor CitwYWNrYWdlIG1haW4KKworLyoKKyNjZ28gTERGTEFHUzogLWx4ZW5saWdodCAtbHlhamwKKyNp bmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxsaWJ4bC5oPgorKi8KK2ltcG9ydCAiQyIKK2lt cG9ydCAoCisJImZtdCIKKwkieGVucHJvamVjdC5vcmcveGVubGlnaHQiCisJIm9zIgorKQorCitm dW5jIG1haW4oKSB7CisJY3R4IDo9IHhlbmxpZ2h0LkN0eAorCWVyciA6PSBjdHguT3BlbigpCisJ aWYgZXJyICE9IG5pbHsKKwkJb3MuRXhpdCgtMSkKKwl9CisJZGVmZXIgY3R4LkNsb3NlKCkKKwlp bmZvLCBlcnI6PSBjdHguR2V0UGh5c2luZm8oKQorCWlmIGVyciAhPSBuaWx7CisJCW9zLkV4aXQo LTEpCisJfQorCisJZm10LlByaW50ZigiJWRcbiVkXG4lZFxuJWRcbiVkXG4iLCBpbmZvLlRocmVh ZHNQZXJDb3JlLCBpbmZvLkNvcmVzUGVyU29ja2V0LCBpbmZvLk1heENwdUlkLCBpbmZvLk5yQ3B1 cywgaW5mby5DcHVLaHopCisJZm10LlByaW50ZigiJWRcbiVkXG4lZFxuJWRcbiVkXG4lZFxuIiwg aW5mby5Ub3RhbFBhZ2VzLCBpbmZvLkZyZWVQYWdlcywgaW5mby5TY3J1YlBhZ2VzLCBpbmZvLk91 dHN0YW5kaW5nUGFnZXMsIGluZm8uU2hhcmluZ0ZyZWVkUGFnZXMsIGluZm8uU2hhcmluZ1VzZWRG cmFtZXMpCisJZm10LlByaW50ZigiJWRcbiIsaW5mby5Ock5vZGVzKQorCWZtdC5QcmludGYoIiV0 XG4ldFxuIiwgaW5mby5DYXBIdm0sIGluZm8uQ2FwSHZtRGlyZWN0aW8pCisKKwlmb3IgaSA6PSAw OyBpIDwgODsgaSsrIHsKKwlmbXQuUHJpbnRmKCIlZFxuIiwgaW5mby5Id0NhcFtpXSk7CisJfQor fQpkaWZmIC0tZ2l0IGEvdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3QvdmVyc2lvbmluZm8vTWFr ZWZpbGUgYi90b29scy9nb2xhbmcveGVubGlnaHQvdGVzdC92ZXJzaW9uaW5mby9NYWtlZmlsZQpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYWQxNTI3Ci0tLSAvZGV2L251bGwK KysrIGIvdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3QvdmVyc2lvbmluZm8vTWFrZWZpbGUKQEAg LTAsMCArMSwxOCBAQAorCit0ZXN0OiBjbGVhbiBidWlsZAorCS4vdmVyc2lvbmluZm8ub3V0ID4+ IGMub3V0cHV0CisJZ28gcnVuIHZlcnNpb25pbmZvLmdvID4+IGdvLm91dHB1dAorCWlmIGNtcCAt cyAiYy5vdXRwdXQiICJnby5vdXRwdXQiOyB0aGVuXAorCQllY2hvICJHZXRWZXJzaW9uSW5mbyBQ QVNTRUQiO1wKKwllbHNlIFwKKwkJZWNobyAiR2V0VmVyc2lvbkluZm8gRkFJTEVEIjsgXAorCWZp XAorCitidWlsZDoKKwlnbyBidWlsZCAtbyB2ZXJzaW9uaW5mby5hIHZlcnNpb25pbmZvLmdvIAor CWdjYyB2ZXJzaW9uaW5mby5jIC1seGVubGlnaHQgLWx5YWpsIC1vIHZlcnNpb25pbmZvLm91dAor CitjbGVhbjoKKwlybSAtZiAqLmEKKwlybSAtZiAqLm91dAorCXJtIC1mICoub3V0cHV0CmRpZmYg LS1naXQgYS90b29scy9nb2xhbmcveGVubGlnaHQvdGVzdC92ZXJzaW9uaW5mby92ZXJzaW9uaW5m by5jIGIvdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3QvdmVyc2lvbmluZm8vdmVyc2lvbmluZm8u YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDA0OTVkCi0tLSAvZGV2L251 bGwKKysrIGIvdG9vbHMvZ29sYW5nL3hlbmxpZ2h0L3Rlc3QvdmVyc2lvbmluZm8vdmVyc2lvbmlu Zm8uYwpAQCAtMCwwICsxLDE4IEBACisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRs aWIuaD4KKyNpbmNsdWRlIDxsaWJ4bC5oPgorCittYWluKCl7CisKKyAgICBsaWJ4bF9jdHggKmNv bnRleHQ7CisgICAgbGlieGxfY3R4X2FsbG9jKCZjb250ZXh0LExJQlhMX1ZFUlNJT04sIDAsIE5V TEwpOworICAgIGxpYnhsX3ZlcnNpb25faW5mbyogaW5mbyA9IGxpYnhsX2dldF92ZXJzaW9uX2lu Zm8oY29udGV4dCk7CisKKyAgICBwcmludGYoIiVkXG4lZFxuIiwgaW5mby0+eGVuX3ZlcnNpb25f bWFqb3IsIGluZm8tPnhlbl92ZXJzaW9uX21pbm9yKTsKKyAgICBwcmludGYoIiVzXG4lc1xuJXNc biVzXG4lc1xuJXNcbiVzXG4iLCBpbmZvLT54ZW5fdmVyc2lvbl9leHRyYSwgaW5mby0+Y29tcGls ZXIsIGluZm8tPmNvbXBpbGVfYnksIGluZm8tPmNvbXBpbGVfZG9tYWluLCBpbmZvLT5jb21waWxl X2RhdGUsIGluZm8tPmNhcGFiaWxpdGllcywgaW5mby0+Y2hhbmdlc2V0KTsKKyAgICBwcmludGYo IiVsdVxuJWRcbiIsIGluZm8tPnZpcnRfc3RhcnQsIGluZm8tPnBhZ2VzaXplKTsKKyAgICBwcmlu dGYoIiVzXG4lc1xuIiwgaW5mby0+Y29tbWFuZGxpbmUsIGluZm8tPmJ1aWxkX2lkKTsKKworICAg IGxpYnhsX2N0eF9mcmVlKGNvbnRleHQpOworCit9CmRpZmYgLS1naXQgYS90b29scy9nb2xhbmcv eGVubGlnaHQvdGVzdC92ZXJzaW9uaW5mby92ZXJzaW9uaW5mby5nbyBiL3Rvb2xzL2dvbGFuZy94 ZW5saWdodC90ZXN0L3ZlcnNpb25pbmZvL3ZlcnNpb25pbmZvLmdvCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmNhZDgzOTEKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy9nb2xh bmcveGVubGlnaHQvdGVzdC92ZXJzaW9uaW5mby92ZXJzaW9uaW5mby5nbwpAQCAtMCwwICsxLDMz IEBACisKK3BhY2thZ2UgbWFpbgorCisvKgorI2NnbyBMREZMQUdTOiAtbHhlbmxpZ2h0IC1seWFq bAorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPGxpYnhsLmg+CisqLworaW1wb3J0ICJD IgoraW1wb3J0ICgKKwkiZm10IgorCSJ4ZW5wcm9qZWN0Lm9yZy94ZW5saWdodCIKKwkib3MiCisp CisKK2Z1bmMgbWFpbigpIHsKKwljdHggOj0geGVubGlnaHQuQ3R4CisJZXJyIDo9IGN0eC5PcGVu KCkKKwlpZiBlcnIgIT0gbmlseworCQlvcy5FeGl0KC0xKQorCX0KKwlkZWZlciBjdHguQ2xvc2Uo KQorCWluZm8sIGVycjo9IGN0eC5HZXRWZXJzaW9uSW5mbygpCisJaWYgZXJyICE9IG5pbHsKKwkJ b3MuRXhpdCgtMSkKKwl9CisKKwlmbXQuUHJpbnRmKCIlZFxuJWRcbiIsIGluZm8uWGVuVmVyc2lv bk1ham9yLCBpbmZvLlhlblZlcnNpb25NaW5vcik7CisJZm10LlByaW50ZigiJXNcbiVzXG4lc1xu JXNcbiVzXG4lc1xuJXNcbiIsIGluZm8uWGVuVmVyc2lvbkV4dHJhLCBpbmZvLkNvbXBpbGVyLCBp bmZvLkNvbXBpbGVCeSwgaW5mby5Db21waWxlRG9tYWluLCBpbmZvLkNvbXBpbGVEYXRlLCBpbmZv LkNhcGFiaWxpdGllcywgaW5mby5DaGFuZ2VzZXQpOworCWZtdC5QcmludGYoIiVkXG4lZFxuIiwg aW5mby5WaXJ0U3RhcnQsIGluZm8uUGFnZXNpemUpOworCWZtdC5QcmludGYoIiVzXG4lc1xuIiwg aW5mby5Db21tYW5kbGluZSwgaW5mby5CdWlsZElkKTsKKworfQotLSAKMi43LjQKCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGlu ZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4t ZGV2ZWwK