Name: series-workflowqbsz7 Phase: Failed StartedAt: 2026-06-25 04:56:23 +0000 UTC FinishedAt: 2026-06-25 05:11:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbsz7[0] Phase: Succeeded StartedAt: 2026-06-25 04:56:23 +0000 UTC FinishedAt: 2026-06-25 05:11:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbsz7[0].run-triage Phase: Succeeded StartedAt: 2026-06-25 04:56:23 +0000 UTC FinishedAt: 2026-06-25 05:11:22 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA1OjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlciBmb3Igd2hpY2ggdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGluIFFFTVUgb3Igb3RoZXIgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCB0ZXN0IGR1cmluZyBmdXp6aW5nIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDU6MDk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1OTlhODA5NmIzNjZiYjYzNGIzNDVkYjc4ZDUwN2ZlYzgwYmUwM2VkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdW4gMjUgMDU6MDk6NTQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guY1xuaW5kZXggMmU5NGQ1MTA1MDE2YmYuLmY1ZmQ2MTM4YzM1MmZkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jXG5AQCAtNTE4LDYgJiM0Mzs1MTgsMTggQEAgaW50IGNneF9zZXRfcGtpbmQodm9pZCAqY2d4ZCwgdTggbG1hY19pZCwgaW50IHBraW5kKVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MztpbnQgY2d4X2dldF9wa2luZCh2b2lkICpjZ3hkLCB1OCBsbWFjX2lkLCBpbnQgKnBraW5kKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGNneCAqY2d4ID0gY2d4ZDtcbiYjNDM7XG4mIzQzO1x0aWYgKCFpc19sbWFjX3ZhbGlkKGNneCwgbG1hY19pZCkpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT0RFVjtcbiYjNDM7XG4mIzQzO1x0KnBraW5kID0gY2d4X3JlYWQoY2d4LCBsbWFjX2lkLCBjZ3gtXHUwMDNlbWFjX29wcy1cdTAwM2VyeGlkX21hcF9vZmZzZXQpO1xuJiM0MztcdCpwa2luZCA9ICpwa2luZCBcdTAwMjYgMHgzRjtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdTggY2d4X2dldF9sbWFjX3R5cGUodm9pZCAqY2d4ZCwgaW50IGxtYWNfaWQpXG4ge1xuIFx0c3RydWN0IGNneCAqY2d4ID0gY2d4ZDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oXG5pbmRleCA5MmNjZjM0M2RmZTA0Zi4uODQxMWE3NWRkNzIzZjkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmhcbkBAIC0xNDEsNiAmIzQzOzE0MSw3IEBAIGludCBjZ3hfZ2V0X2NneGlkKHZvaWQgKmNneGQpO1xuIGludCBjZ3hfZ2V0X2xtYWNfY250KHZvaWQgKmNneGQpO1xuIHZvaWQgKmNneF9nZXRfcGRhdGEoaW50IGNneF9pZCk7XG4gaW50IGNneF9zZXRfcGtpbmQodm9pZCAqY2d4ZCwgdTggbG1hY19pZCwgaW50IHBraW5kKTtcbiYjNDM7aW50IGNneF9nZXRfcGtpbmQodm9pZCAqY2d4ZCwgdTggbG1hY19pZCwgaW50ICpwa2luZCk7XG4gaW50IGNneF9sbWFjX2V2aF9yZWdpc3RlcihzdHJ1Y3QgY2d4X2V2ZW50X2NiICpjYiwgdm9pZCAqY2d4ZCwgaW50IGxtYWNfaWQpO1xuIGludCBjZ3hfbG1hY19ldmhfdW5yZWdpc3Rlcih2b2lkICpjZ3hkLCBpbnQgbG1hY19pZCk7XG4gaW50IGNneF9nZXRfdHhfc3RhdHModm9pZCAqY2d4ZCwgaW50IGxtYWNfaWQsIGludCBpZHgsIHU2NCAqdHhfc3RhdCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaFxuaW5kZXggN2YzNTA1YWU2ODYwNDIuLmJiNjcxZTIxNTBhYTY2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oXG5AQCAtMTExNSw2ICYjNDM7MTExNSw3IEBAIHZvaWQgbnBjX3JlYWRfbWNhbV9lbnRyeShzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBucGNfbWNhbSAqbWNhbSxcbiBcdFx0XHQgdTggKmludGYsIHU4ICplbmEpO1xuIGludCBucGNfY29uZmlnX2NudHJfZGVmYXVsdF9lbnRyaWVzKHN0cnVjdCBydnUgKnJ2dSwgYm9vbCBlbmFibGUpO1xuIGJvb2wgaXNfY2d4X2NvbmZpZ19wZXJtaXR0ZWQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYyk7XG4mIzQzO2Jvb2wgcnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpO1xuIGJvb2wgaXNfbWFjX2ZlYXR1cmVfc3VwcG9ydGVkKHN0cnVjdCBydnUgKnJ2dSwgaW50IHBmLCBpbnQgZmVhdHVyZSk7XG4gdTMyICBydnVfY2d4X2dldF9maWZvbGVuKHN0cnVjdCBydnUgKnJ2dSk7XG4gdm9pZCAqcnZ1X2ZpcnN0X2NneF9wZGF0YShzdHJ1Y3QgcnZ1ICpydnUpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guY1xuaW5kZXggNGZmMzkzNWVkM2ZlODQuLjJiZTFkYTM0NzZhYzg0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmNcbkBAIC0xMzU1LDMgJiM0MzsxMzU1LDM1IEBAIHZvaWQgcnZ1X21hY19yZXNldChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKVxuIFx0aWYgKG1hY19vcHMtXHUwMDNlbWFjX3Jlc2V0KGNneGQsIGxtYWMsICFpc192ZihwY2lmdW5jKSkpXG4gXHRcdGRldl9lcnIocnZ1LVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIHJlc2V0IE1BQ1xcblwmIzM0Oyk7XG4gfVxuJiM0MztcbiYjNDM7LyogRG8gbm90IGFsbG93IENHWC1tYXBwZWQgVkZzIHRvIG92ZXJ3cml0ZSBQS0lORCB3aGVuIHNwZWNpYWwgcGFyc2Uga2luZHNcbiYjNDM7ICogKEhpR2lnLCBFRFNBLCBldGMuKSBhcmUgaW4gdXNlIG9uIHRoZSBzaGFyZWQgTE1BQy5cbiYjNDM7ICovXG4mIzQzO2Jvb2wgcnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpXG4mIzQzO3tcbiYjNDM7XHRpbnQgcGYsIGVyciwgcnhwa2luZDtcbiYjNDM7XHR1OCBjZ3hfaWQsIGxtYWNfaWQ7XG4mIzQzO1x0dm9pZCAqY2d4ZDtcbiYjNDM7XG4mIzQzO1x0cGYgPSBydnVfZ2V0X3BmKHJ2dS1cdTAwM2VwZGV2LCBwY2lmdW5jKTtcbiYjNDM7XG4mIzQzO1x0aWYgKCEocGNpZnVuYyBcdTAwMjYgUlZVX1BGVkZfRlVOQ19NQVNLKSlcbiYjNDM7XHRcdHJldHVybiB0cnVlO1xuJiM0MztcbiYjNDM7XHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcbiYjNDM7XHRcdHJldHVybiB0cnVlO1xuJiM0MztcbiYjNDM7XHRydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS1cdTAwM2VwZjJjZ3hsbWFjX21hcFtwZl0sIFx1MDAyNmNneF9pZCwgXHUwMDI2bG1hY19pZCk7XG4mIzQzO1x0Y2d4ZCA9IHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpO1xuJiM0MztcdGVyciA9IGNneF9nZXRfcGtpbmQoY2d4ZCwgbG1hY19pZCwgXHUwMDI2cnhwa2luZCk7XG4mIzQzO1x0aWYgKGVycilcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0c3dpdGNoIChyeHBraW5kKSB7XG4mIzQzO1x0Y2FzZSBOUENfUlhfSElHSUdfUEtJTkQ6XG4mIzQzO1x0Y2FzZSBOUENfUlhfRURTQV9QS0lORDpcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0cmV0dXJuIHRydWU7XG4mIzQzO1x0fVxuJiM0Mzt9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jXG5pbmRleCBkODk4OTM5NWU4NzVkYS4uNDBmNWIyNWVhZmIxMWQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguY1xuQEAgLTMzOCw2ICYjNDM7MzM4LDcgQEAgc3RhdGljIGludCBuaXhfaW50ZXJmYWNlX2luaXQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgaW50IHR5cGUsIGludCBuaXhsZixcbiBcdHN0cnVjdCBzZHBfbm9kZV9pbmZvICpzZHBfaW5mbztcbiBcdGludCBwa2luZCwgcGYsIHZmLCBsYmtpZCwgdmZpZDtcbiBcdHU4IGNneF9pZCwgbG1hY19pZDtcbiYjNDM7XHRzdHJ1Y3QgY2d4ICpjZ3hkO1xuIFx0Ym9vbCBmcm9tX3ZmO1xuIFx0aW50IGVycjtcbiBcbkBAIC0zNjMsOCAmIzQzOzM2NCwxNSBAQCBzdGF0aWMgaW50IG5peF9pbnRlcmZhY2VfaW5pdChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgdHlwZSwgaW50IG5peGxmLFxuIFx0XHRwZnZmLVx1MDAzZXR4X2NoYW5fY250ID0gMTtcbiBcdFx0cnNwLVx1MDAzZXR4X2xpbmsgPSBjZ3hfaWQgKiBody1cdTAwM2VsbWFjX3Blcl9jZ3ggJiM0MzsgbG1hY19pZDtcbiBcbi1cdFx0Y2d4X3NldF9wa2luZChydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KSwgbG1hY19pZCwgcGtpbmQpO1xuLVx0XHRydnVfbnBjX3NldF9wa2luZChydnUsIHBraW5kLCBwZnZmKTtcbiYjNDM7XHRcdGNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTtcbiYjNDM7XG4mIzQzO1x0XHRtdXRleF9sb2NrKFx1MDAyNmNneGQtXHUwMDNlbG9jayk7XG4mIzQzO1x0XHRpZiAocnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkKHJ2dSwgcGNpZnVuYykpIHtcbiYjNDM7XHRcdFx0Y2d4X3NldF9wa2luZChydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KSwgbG1hY19pZCxcbiYjNDM7XHRcdFx0XHQgICAgICBwa2luZCk7XG4mIzQzO1x0XHRcdHJ2dV9ucGNfc2V0X3BraW5kKHJ2dSwgcGtpbmQsIHBmdmYpO1xuJiM0MztcdFx0fVxuJiM0MztcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmNneGQtXHUwMDNlbG9jayk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBOSVhfSU5URl9UWVBFX0xCSzpcbiBcdFx0dmYgPSAocGNpZnVuYyBcdTAwMjYgUlZVX1BGVkZfRlVOQ19NQVNLKSAtIDE7XG5AQCAtMTUwOCw3ICYjNDM7MTUxNiwxMCBAQCBpbnQgcnZ1X21ib3hfaGFuZGxlcl9uaXhfbGZfYWxsb2Moc3RydWN0IHJ2dSAqcnZ1LFxuIFx0c3RydWN0IHJ2dV9ibG9jayAqYmxvY2s7XG4gXHRzdHJ1Y3QgcnZ1X3BmdmYgKnBmdmY7XG4gXHR1NjQgY2ZnLCBjdHhfY2ZnO1xuJiM0MztcdHN0cnVjdCBjZ3ggKmNneGQ7XG4gXHRpbnQgYmxrYWRkcjtcbiYjNDM7XHR1OCBjZ3g7XG4mIzQzO1x0aW50IHBmO1xuIFxuIFx0aWYgKCFyZXEtXHUwMDNlcnFfY250IHx8ICFyZXEtXHUwMDNlc3FfY250IHx8ICFyZXEtXHUwMDNlY3FfY250KVxuIFx0XHRyZXR1cm4gTklYX0FGX0VSUl9QQVJBTTtcbkBAIC0xNjgwLDggJiM0MzsxNjkxLDE3IEBAIGludCBydnVfbWJveF9oYW5kbGVyX25peF9sZl9hbGxvYyhzdHJ1Y3QgcnZ1ICpydnUsXG4gXHRydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfUlhfQ0ZHKG5peGxmKSwgcmVxLVx1MDAzZXJ4X2NmZyk7XG4gXG4gXHQvKiBDb25maWd1cmUgcGtpbmQgZm9yIFRYIHBhcnNlIGNvbmZpZyAqL1xuLVx0Y2ZnID0gTlBDX1RYX0RFRl9QS0lORDtcbi1cdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcobml4bGYpLCBjZmcpO1xuJiM0MztcdGlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBydnVfZ2V0X3BmKHJ2dS1cdTAwM2VwZGV2LCBwY2lmdW5jKSkpIHtcbiYjNDM7XHRcdHBmID0gcnZ1X2dldF9wZihydnUtXHUwMDNlcGRldiwgcGNpZnVuYyk7XG4mIzQzO1x0XHRjZ3hkID0gcnZ1X2NneF9wZGF0YShjZ3gsIHJ2dSk7XG4mIzQzO1xuJiM0MztcdFx0bXV0ZXhfbG9jayhcdTAwMjZjZ3hkLVx1MDAzZWxvY2spO1xuJiM0MztcdFx0aWYgKHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZChydnUsIHBjaWZ1bmMpKSB7XG4mIzQzO1x0XHRcdGNmZyA9IE5QQ19UWF9ERUZfUEtJTkQ7XG4mIzQzO1x0XHRcdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcobml4bGYpLCBjZmcpO1xuJiM0MztcdFx0fVxuJiM0MztcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmNneGQtXHUwMDNlbG9jayk7XG4mIzQzO1x0fVxuIFxuIFx0aWYgKGlzX3JlcF9kZXYocnZ1LCBwY2lmdW5jKSkge1xuIFx0XHRwZnZmLVx1MDAzZXR4X2NoYW5fYmFzZSA9IFJWVV9TV0lUQ0hfTEJLX0NIQU47XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDU6MDk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyIGZvciB3aGljaCB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gaW4gUUVNVSBvciBvdGhlciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgZHVyaW5nIGZ1enppbmcgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTk5YTgwOTZiMzY2YmI2MzRiMzQ1ZGI3OGQ1MDdmZWM4MGJlMDNlZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVuIDI1IDA1OjA5OjU0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYwppbmRleCAyZTk0ZDUxMDUwMTZiZi4uZjVmZDYxMzhjMzUyZmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jCkBAIC01MTgsNiAmIzQzOzUxOCwxOCBAQCBpbnQgY2d4X3NldF9wa2luZCh2b2lkICpjZ3hkLCB1OCBsbWFjX2lkLCBpbnQgcGtpbmQpCiAJcmV0dXJuIDA7CiB9CiAKJiM0MztpbnQgY2d4X2dldF9wa2luZCh2b2lkICpjZ3hkLCB1OCBsbWFjX2lkLCBpbnQgKnBraW5kKQomIzQzO3sKJiM0MzsJc3RydWN0IGNneCAqY2d4ID0gY2d4ZDsKJiM0MzsKJiM0MzsJaWYgKCFpc19sbWFjX3ZhbGlkKGNneCwgbG1hY19pZCkpCiYjNDM7CQlyZXR1cm4gLUVOT0RFVjsKJiM0MzsKJiM0MzsJKnBraW5kID0gY2d4X3JlYWQoY2d4LCBsbWFjX2lkLCBjZ3gtJmd0O21hY19vcHMtJmd0O3J4aWRfbWFwX29mZnNldCk7CiYjNDM7CSpwa2luZCA9ICpwa2luZCAmYW1wOyAweDNGOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdTggY2d4X2dldF9sbWFjX3R5cGUodm9pZCAqY2d4ZCwgaW50IGxtYWNfaWQpCiB7CiAJc3RydWN0IGNneCAqY2d4ID0gY2d4ZDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmgKaW5kZXggOTJjY2YzNDNkZmUwNGYuLjg0MTFhNzVkZDcyM2Y5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaApAQCAtMTQxLDYgJiM0MzsxNDEsNyBAQCBpbnQgY2d4X2dldF9jZ3hpZCh2b2lkICpjZ3hkKTsKIGludCBjZ3hfZ2V0X2xtYWNfY250KHZvaWQgKmNneGQpOwogdm9pZCAqY2d4X2dldF9wZGF0YShpbnQgY2d4X2lkKTsKIGludCBjZ3hfc2V0X3BraW5kKHZvaWQgKmNneGQsIHU4IGxtYWNfaWQsIGludCBwa2luZCk7CiYjNDM7aW50IGNneF9nZXRfcGtpbmQodm9pZCAqY2d4ZCwgdTggbG1hY19pZCwgaW50ICpwa2luZCk7CiBpbnQgY2d4X2xtYWNfZXZoX3JlZ2lzdGVyKHN0cnVjdCBjZ3hfZXZlbnRfY2IgKmNiLCB2b2lkICpjZ3hkLCBpbnQgbG1hY19pZCk7CiBpbnQgY2d4X2xtYWNfZXZoX3VucmVnaXN0ZXIodm9pZCAqY2d4ZCwgaW50IGxtYWNfaWQpOwogaW50IGNneF9nZXRfdHhfc3RhdHModm9pZCAqY2d4ZCwgaW50IGxtYWNfaWQsIGludCBpZHgsIHU2NCAqdHhfc3RhdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oCmluZGV4IDdmMzUwNWFlNjg2MDQyLi5iYjY3MWUyMTUwYWE2NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgKQEAgLTExMTUsNiAmIzQzOzExMTUsNyBAQCB2b2lkIG5wY19yZWFkX21jYW1fZW50cnkoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbnBjX21jYW0gKm1jYW0sCiAJCQkgdTggKmludGYsIHU4ICplbmEpOwogaW50IG5wY19jb25maWdfY250cl9kZWZhdWx0X2VudHJpZXMoc3RydWN0IHJ2dSAqcnZ1LCBib29sIGVuYWJsZSk7CiBib29sIGlzX2NneF9jb25maWdfcGVybWl0dGVkKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpOwomIzQzO2Jvb2wgcnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpOwogYm9vbCBpc19tYWNfZmVhdHVyZV9zdXBwb3J0ZWQoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgcGYsIGludCBmZWF0dXJlKTsKIHUzMiAgcnZ1X2NneF9nZXRfZmlmb2xlbihzdHJ1Y3QgcnZ1ICpydnUpOwogdm9pZCAqcnZ1X2ZpcnN0X2NneF9wZGF0YShzdHJ1Y3QgcnZ1ICpydnUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jCmluZGV4IDRmZjM5MzVlZDNmZTg0Li4yYmUxZGEzNDc2YWM4NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYwpAQCAtMTM1NSwzICYjNDM7MTM1NSwzNSBAQCB2b2lkIHJ2dV9tYWNfcmVzZXQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYykKIAlpZiAobWFjX29wcy0mZ3Q7bWFjX3Jlc2V0KGNneGQsIGxtYWMsICFpc192ZihwY2lmdW5jKSkpCiAJCWRldl9lcnIocnZ1LSZndDtkZXYsICYjMzQ7RmFpbGVkIHRvIHJlc2V0IE1BQ1xuJiMzNDspOwogfQomIzQzOwomIzQzOy8qIERvIG5vdCBhbGxvdyBDR1gtbWFwcGVkIFZGcyB0byBvdmVyd3JpdGUgUEtJTkQgd2hlbiBzcGVjaWFsIHBhcnNlIGtpbmRzCiYjNDM7ICogKEhpR2lnLCBFRFNBLCBldGMuKSBhcmUgaW4gdXNlIG9uIHRoZSBzaGFyZWQgTE1BQy4KJiM0MzsgKi8KJiM0Mztib29sIHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKQomIzQzO3sKJiM0MzsJaW50IHBmLCBlcnIsIHJ4cGtpbmQ7CiYjNDM7CXU4IGNneF9pZCwgbG1hY19pZDsKJiM0MzsJdm9pZCAqY2d4ZDsKJiM0MzsKJiM0MzsJcGYgPSBydnVfZ2V0X3BmKHJ2dS0mZ3Q7cGRldiwgcGNpZnVuYyk7CiYjNDM7CiYjNDM7CWlmICghKHBjaWZ1bmMgJmFtcDsgUlZVX1BGVkZfRlVOQ19NQVNLKSkKJiM0MzsJCXJldHVybiB0cnVlOwomIzQzOwomIzQzOwlpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSkKJiM0MzsJCXJldHVybiB0cnVlOwomIzQzOwomIzQzOwlydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS0mZ3Q7cGYyY2d4bG1hY19tYXBbcGZdLCAmYW1wO2NneF9pZCwgJmFtcDtsbWFjX2lkKTsKJiM0MzsJY2d4ZCA9IHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpOwomIzQzOwllcnIgPSBjZ3hfZ2V0X3BraW5kKGNneGQsIGxtYWNfaWQsICZhbXA7cnhwa2luZCk7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CXN3aXRjaCAocnhwa2luZCkgewomIzQzOwljYXNlIE5QQ19SWF9ISUdJR19QS0lORDoKJiM0MzsJY2FzZSBOUENfUlhfRURTQV9QS0lORDoKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCXJldHVybiB0cnVlOwomIzQzOwl9CiYjNDM7fQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jCmluZGV4IGQ4OTg5Mzk1ZTg3NWRhLi40MGY1YjI1ZWFmYjExZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYwpAQCAtMzM4LDYgJiM0MzszMzgsNyBAQCBzdGF0aWMgaW50IG5peF9pbnRlcmZhY2VfaW5pdChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgdHlwZSwgaW50IG5peGxmLAogCXN0cnVjdCBzZHBfbm9kZV9pbmZvICpzZHBfaW5mbzsKIAlpbnQgcGtpbmQsIHBmLCB2ZiwgbGJraWQsIHZmaWQ7CiAJdTggY2d4X2lkLCBsbWFjX2lkOwomIzQzOwlzdHJ1Y3QgY2d4ICpjZ3hkOwogCWJvb2wgZnJvbV92ZjsKIAlpbnQgZXJyOwogCkBAIC0zNjMsOCAmIzQzOzM2NCwxNSBAQCBzdGF0aWMgaW50IG5peF9pbnRlcmZhY2VfaW5pdChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgdHlwZSwgaW50IG5peGxmLAogCQlwZnZmLSZndDt0eF9jaGFuX2NudCA9IDE7CiAJCXJzcC0mZ3Q7dHhfbGluayA9IGNneF9pZCAqIGh3LSZndDtsbWFjX3Blcl9jZ3ggJiM0MzsgbG1hY19pZDsKIAotCQljZ3hfc2V0X3BraW5kKHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpLCBsbWFjX2lkLCBwa2luZCk7Ci0JCXJ2dV9ucGNfc2V0X3BraW5kKHJ2dSwgcGtpbmQsIHBmdmYpOwomIzQzOwkJY2d4ZCA9IHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpOwomIzQzOwomIzQzOwkJbXV0ZXhfbG9jaygmYW1wO2NneGQtJmd0O2xvY2spOwomIzQzOwkJaWYgKHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZChydnUsIHBjaWZ1bmMpKSB7CiYjNDM7CQkJY2d4X3NldF9wa2luZChydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KSwgbG1hY19pZCwKJiM0MzsJCQkJICAgICAgcGtpbmQpOwomIzQzOwkJCXJ2dV9ucGNfc2V0X3BraW5kKHJ2dSwgcGtpbmQsIHBmdmYpOwomIzQzOwkJfQomIzQzOwkJbXV0ZXhfdW5sb2NrKCZhbXA7Y2d4ZC0mZ3Q7bG9jayk7CiAJCWJyZWFrOwogCWNhc2UgTklYX0lOVEZfVFlQRV9MQks6CiAJCXZmID0gKHBjaWZ1bmMgJmFtcDsgUlZVX1BGVkZfRlVOQ19NQVNLKSAtIDE7CkBAIC0xNTA4LDcgJiM0MzsxNTE2LDEwIEBAIGludCBydnVfbWJveF9oYW5kbGVyX25peF9sZl9hbGxvYyhzdHJ1Y3QgcnZ1ICpydnUsCiAJc3RydWN0IHJ2dV9ibG9jayAqYmxvY2s7CiAJc3RydWN0IHJ2dV9wZnZmICpwZnZmOwogCXU2NCBjZmcsIGN0eF9jZmc7CiYjNDM7CXN0cnVjdCBjZ3ggKmNneGQ7CiAJaW50IGJsa2FkZHI7CiYjNDM7CXU4IGNneDsKJiM0MzsJaW50IHBmOwogCiAJaWYgKCFyZXEtJmd0O3JxX2NudCB8fCAhcmVxLSZndDtzcV9jbnQgfHwgIXJlcS0mZ3Q7Y3FfY250KQogCQlyZXR1cm4gTklYX0FGX0VSUl9QQVJBTTsKQEAgLTE2ODAsOCAmIzQzOzE2OTEsMTcgQEAgaW50IHJ2dV9tYm94X2hhbmRsZXJfbml4X2xmX2FsbG9jKHN0cnVjdCBydnUgKnJ2dSwKIAlydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfUlhfQ0ZHKG5peGxmKSwgcmVxLSZndDtyeF9jZmcpOwogCiAJLyogQ29uZmlndXJlIHBraW5kIGZvciBUWCBwYXJzZSBjb25maWcgKi8KLQljZmcgPSBOUENfVFhfREVGX1BLSU5EOwotCXJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcobml4bGYpLCBjZmcpOwomIzQzOwlpZiAoaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcnZ1X2dldF9wZihydnUtJmd0O3BkZXYsIHBjaWZ1bmMpKSkgewomIzQzOwkJcGYgPSBydnVfZ2V0X3BmKHJ2dS0mZ3Q7cGRldiwgcGNpZnVuYyk7CiYjNDM7CQljZ3hkID0gcnZ1X2NneF9wZGF0YShjZ3gsIHJ2dSk7CiYjNDM7CiYjNDM7CQltdXRleF9sb2NrKCZhbXA7Y2d4ZC0mZ3Q7bG9jayk7CiYjNDM7CQlpZiAocnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkKHJ2dSwgcGNpZnVuYykpIHsKJiM0MzsJCQljZmcgPSBOUENfVFhfREVGX1BLSU5EOwomIzQzOwkJCXJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcobml4bGYpLCBjZmcpOwomIzQzOwkJfQomIzQzOwkJbXV0ZXhfdW5sb2NrKCZhbXA7Y2d4ZC0mZ3Q7bG9jayk7CiYjNDM7CX0KIAogCWlmIChpc19yZXBfZGV2KHJ2dSwgcGNpZnVuYykpIHsKIAkJcGZ2Zi0mZ3Q7dHhfY2hhbl9iYXNlID0gUlZVX1NXSVRDSF9MQktfQ0hBTjsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDU6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQxOAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDIyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE9jdGVvblRYMiBBRiBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBBRiBkcml2ZXIuIEl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGFkZGluZyBhIGNvdXBsZSBvZiBmdW5jdGlvbnMsIGBjZ3hfZ2V0X3BraW5kYCBhbmQgYHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZGAuIEl0IGFsc28gdG91Y2hlcyBgbml4X2ludGVyZmFjZV9pbml0YCBhbmQgYHJ2dV9tYm94X2hhbmRsZXJfbml4X2xmX2FsbG9jYCwgd2hpY2ggYXJlIGtleSBwYXJ0cyBvZiB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIHJlc291cmNlIGFsbG9jYXRpb24uIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gaW52b2x2ZSBjaGVja2luZyBpZiBgcnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkYCBiZWZvcmUgc2V0dGluZyB0aGUgYHBraW5kYCB2YWx1ZS4gVGhhdCBtYWtlcyBzZW5zZSwgbGlrZWx5IGFkZGluZyBzb21lIHNvcnQgb2YgY29uZmlndXJhdGlvbiBjb250cm9sIG9yIHJlc3RyaWN0aW9uIG9uIHRoZSBwa2luZCwgd2hpY2gsIGlmIHRoaXMgaXMgYW4gQUYgZHJpdmVyLCByZWxhdGVzIHRvIHJlc291cmNlIHR5cGVzLgoKTm93LCB0aGUgcXVlc3Rpb24gYmVjb21lcywgaXMgdGhpcyBkcml2ZXIgYWN0dWFsbHkgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBjb25zaWRlciBRRU1VLCBzaW5jZSB0aGF0JiMzOTtzIGEgY29tbW9uIHRlc3RpbmcgcGxhdGZvcm0uIFRoaXMgZHJpdmVyLCB0aGUgTWFydmVsbCBPY3Rlb25UWDIgQUYsIGlzIHR5cGljYWxseSB0aWVkIHRvIHNwZWNpZmljIGhhcmR3YXJlLCBzcGVjaWZpY2FsbHkgZGV2aWNlcyB3aXRoIGBQQ0lfVkVORE9SX0lEX0NBVklVTWAgYW5kIGBQQ0lfREVWSUNFX0lEX1JWVV9BRmAuIFRoZSBtaWxsaW9uIGRvbGxhciBxdWVzdGlvbjogZG9lcyBRRU1VIG9mZmVyIGFueSBlbXVsYXRpb24gZm9yIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmU/IEkgZG9uJiMzOTt0IHJlY2FsbCBzZWVpbmcgYW55dGhpbmcgbGlrZSB0aGF0LiBJIGtub3cgdGhlcmUgYXJlIGVtdWxhdGlvbnMsIGJ1dCB0aGUgT2N0ZW9uVFgyIFJWVSBBRiBpcyBwcmV0dHkgc3BlY2lhbGl6ZWQuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSBpZiB0aGF0JiMzOTtzIHN1cHBvcnRlZC4KCkZpcnN0LCBJIG5lZWQgdG8gY29uZmlybSBpZiB0aGlzIGlzLCBpbiBmYWN0LCBhIFBDSSBkcml2ZXIuIFRoZW4sIGlmIHNvLCB0aGUgcmVhY2hhYmlsaXR5IG9mIHRoZSBkcml2ZXIgYmVjb21lcyBtdWNoIG1vcmUgY3JpdGljYWwgZm9yIHRlc3RpbmcuIElmIGl0JiMzOTtzICpub3QqIGEgUENJIGRyaXZlciwgdGhlbiB0aGUgcXVlc3Rpb25zIG9mIHZpcnR1YWxpemF0aW9uIGJlY29tZSBsZXNzIGNyaXRpY2FsLCBhcyBvdGhlciBwYXRocyBtYXkgYmUgcmVsZXZhbnQuIFRoZSBuZXh0IHN0ZXBzIHdpbGwgaW52b2x2ZSBjb25maXJtaW5nIHRoZSBQQ0kgc3RhdHVzIG9mIHRoZSBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDU6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfZHJpdmVyLipydnVfYWYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA1OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwNzYKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIGEgc3ViamVjdCBtYXR0ZXIgZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipJbnZlc3RpZ2F0aW5nIFBDSSBJRCBNYXBwaW5ncyoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCB0byB3b3JrLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIGRpdmUgc3RyYWlnaHQgaW50byB0aGUgUENJIElEIGRhdGFiYXNlLiBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgZGV2aWNlIGlkZW50aWZpZXJzIGZvciBgcnZ1X2FmYCBhbmQgYG9jdGVvbnR4MmAuIFRoZXNlIGFyZSBsaWtlbHkgcmVsYXRlZCB0byBzcGVjaWZpYyBuZXR3b3JrIGludGVyZmFjZSBjYXJkIG9yIGFjY2VsZXJhdG9yIGZ1bmN0aW9ucywgYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZWlyIFBDSSBjb25maWd1cmF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgdGhlIHZlbmRvciBhbmQgZGV2aWNlIElEcyB0byBwcm9wZXJseSBpZGVudGlmeSB0aGVtIHdpdGhpbiB0aGUgc3lzdGVtLiBUaGlzIHNlYXJjaCB3aWxsIGJlIGNydWNpYWwgZm9yIGFueSBpbi1kZXB0aCBhbmFseXNpcyBvciB0cm91Ymxlc2hvb3RpbmcgSSB1bmRlcnRha2UgcmVsYXRlZCB0byB0aGUgaGFyZHdhcmUmIzM5O3MgaW50ZXJhY3Rpb24gd2l0aGluIHRoZSBQQ0kgYnVzLiBJJiMzOTttIHRoaW5raW5nIEkmIzM5O2xsIHN0YXJ0IHdpdGggYSBzdHJhaWdodGZvcndhcmQgc2VhcmNoIGZvciB0aGVzZSB0ZXJtcyB3aXRoaW4gdGhlIHN0YW5kYXJkIFBDSSBJRCByZXBvc2l0b3JpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDU6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQQ0lfREVWSUNFX0lEX0NBVklVTV9SVlVfQUYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA1OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzMDcKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgTmV0d29yayBEcml2ZXIgTGFuZHNjYXBlKioKClJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkmIzM5O20gdGhpbmtpbmcsIGJhc2VkIG9uIHRoZSBjb250ZXh0LCB3ZSYjMzk7cmUgbGlrZWx5IGRlYWxpbmcgd2l0aCBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgTWFydmVsbCBPY3Rlb250eDIgYXJjaGl0ZWN0dXJlIGFuZCBpdHMgbmV0d29yayBpbnRlcmZhY2UuIEdpdmVuIHRoYXQsIG15IGd1dCBmZWVsaW5nIHRlbGxzIG1lIHRoZSBjcml0aWNhbCBwaWVjZSBvZiBjb2RlIGlzIHByb2JhYmx5IG5lc3RsZWQgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvYCBkaXJlY3RvcnksIHNwZWNpZmljYWxseSB3aXRoaW4gc29tZXRoaW5nIGxpa2UgYHJ2dS5jYCBvciBhIHNpbWlsYXIgZmlsZSB0aGF0IGhhbmRsZXMgdGhlIHNwZWNpZmljIGFjY2VsZXJhdGVkIGZvcndhcmRpbmcgY29tcG9uZW50cy4gSSYjMzk7bSBhbnRpY2lwYXRpbmcgdGhhdCYjMzk7cyB3aGVyZSB0aGUgcmVsZXZhbnQgbG9naWMgZm9yIHRoZSBwYXJ0aWN1bGFyIG5ldHdvcmtpbmcgaXNzdWUgd2UmIzM5O3JlIGZhY2luZyB3aWxsIHJlc2lkZS4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW4gdGhlcmUgYW5kIHNlZSBob3cgdGhlIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGUgaGFyZHdhcmUmIzM5O3MgYWNjZWxlcmF0ZWQgZmVhdHVyZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDU6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYz0yMDYwPXN0YXRpYyB2b2lkIGNneF9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmMtMjA3My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jOjIwNzQ6c3RydWN0IHBjaV9kcml2ZXIgY2d4X2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jLTIwNzUtXHQubmFtZSA9IERSVl9OQU1FLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oPTEzMj1zdHJ1Y3QgY2d4X2V2ZW50X2NiIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaC0xMzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaDoxMzc6ZXh0ZXJuIHN0cnVjdCBwY2lfZHJpdmVyIGNneF9kcml2ZXI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaC0xMzgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvbWNzLmM9MTU5OT1zdGF0aWMgdm9pZCBtY3NfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21jcy5jLTE2MTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9tY3MuYzoxNjEyOnN0cnVjdCBwY2lfZHJpdmVyIG1jc19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9tY3MuYy0xNjEzLVx0Lm5hbWUgPSBEUlZfTkFNRSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9tY3MuaD0xNTU9c3RydWN0IG1jc19vcHMge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21jcy5oLTE2NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21jcy5oOjE2NTpleHRlcm4gc3RydWN0IHBjaV9kcml2ZXIgbWNzX2RyaXZlcjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21jcy5oLTE2Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYz01ODk9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHB0cF9pZF90YWJsZVtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTYxMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jOjYxMjpzdHJ1Y3QgcGNpX2RyaXZlciBwdHBfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNjEzLVx0Lm5hbWUgPSBEUlZfTkFNRSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuaD0yOT12b2lkIHB0cF9zdGFydChzdHJ1Y3QgcnZ1ICpydnUsIHU2NCBzY2xrLCB1MzIgZXh0X2Nsa19mcmVxLCB1MzIgZXh0dHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmgtMzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuaDozMTpleHRlcm4gc3RydWN0IHBjaV9kcml2ZXIgcHRwX2RyaXZlcjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5oLTMyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jPTM3MzM9c3RhdGljIHZvaWQgcnZ1X3NodXRkb3duKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTM3NDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYzozNzQzOnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBydnVfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMzc0NC1cdC5uYW1lID0gRFJWX05BTUUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDU6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjYwOQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDk2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFzc2Vzc2luZyB0aGUgVmlhYmlsaXR5IG9mIFRlc3RpbmcgdGhpcyBPY3Rlb25UWDIgRHJpdmVyKioKCk9rYXksIHNvIHRoaXMgZHJpdmVyIGlzIHNwZWNpZmljYWxseSBkZXNpZ25lZCBmb3IgTWFydmVsbCBPY3Rlb25UWDIgaGFyZHdhcmUuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgJiMzNDtDYW4gSSBldmVuICp0b3VjaCogdGhpcyBpbiBRRU1VPyYjMzQ7IFVuZm9ydHVuYXRlbHksIHRoYXQmIzM5O3MgYSBuby1nbzsgUUVNVSBkb2VzbiYjMzk7dCBvZmZlciBhbnkgZW11bGF0aW9uIGZvciB0aGUgT2N0ZW9uVFgyLiBDcmFwLCB0aGVuIEkgcmVtZW1iZXIgdGhhdCBzeXprYWxsZXIgYWxzbyBkb2VzbiYjMzk7dCBzZWVtIHRvIGhhdmUgYW55IE9jdGVvblRYMiBoYXJkd2FyZSBhdmFpbGFibGUuCgpCdXQgaG9sZCBvbiwgYmVmb3JlIEkgY29tcGxldGVseSBkaXNtaXNzIHRoaXMsIGlzIHRoZXJlICphbnkqIGluZGlyZWN0IHdheSB0byBnZXQgYXQgdGhpcyBkcml2ZXI/IENvbnNpZGVyaW5nIGl0JiMzOTtzIGEgUENJIGRyaXZlciwgaXQgc291bmRzIGxpa2UgdGhhdCYjMzk7cyB1bmxpa2VseSBnaXZlbiB0aGUgaGFyZHdhcmUgc3BlY2lmaWNzLiBUaGUgT2N0ZW9uVFgyIGlzIGEgcGFydGljdWxhciB0eXBlIG9mIGhhcmR3YXJlLiBMZXQgbWUgY2hlY2sgaWYgdGhlcmUgaXMgYW55IHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA1OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O09DVEVPTlRYMiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjY6Y29uZmlnIE9DVEVPTlRYMl9NQk9YXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTctXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy04LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzo5OmNvbmZpZyBPQ1RFT05UWDJfQUZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMTAtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjExOlx0c2VsZWN0IE9DVEVPTlRYMl9NQk9YXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTEyLVx0c2VsZWN0IE5FVF9ERVZMSU5LXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZz0yMj1jb25maWcgTkRDX0RJU19EWU5BTUlDX0NBQ0hJTkdcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMjMtXHRib29sIFwmIzM0O0Rpc2FibGUgY2FjaGluZyBvZiBkeW5hbWljIGVudHJpZXMgaW4gTkRDXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjI0Olx0ZGVwZW5kcyBvbiBPQ1RFT05UWDJfQUZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMjUtXHRkZWZhdWx0IG5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzozMTpjb25maWcgT0NURU9OVFgyX1BGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTMyLVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBPY3Rlb25UWDIgTklDIFBoeXNpY2FsIEZ1bmN0aW9uIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzozMzpcdHNlbGVjdCBPQ1RFT05UWDJfTUJPWFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0zNC1cdHNlbGVjdCBORVRfREVWTElOS1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctNDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjQ1OmNvbmZpZyBPQ1RFT05UWDJfVkZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctNDYtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgVmlydHVhbCBGdW5jdGlvbiBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6NDc6XHRkZXBlbmRzIG9uIE9DVEVPTlRYMl9QRlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy00OC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnPTUxPWNvbmZpZyBSVlVfRVNXSVRDSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy01Mi1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgUlZVIEUtU3dpdGNoIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6NTM6XHRkZXBlbmRzIG9uIE9DVEVPTlRYMl9QRlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy01NC1cdGRlZmF1bHQgbVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL01ha2VmaWxlLTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19PQ1RFT05UWDJfTUJPWCkgJiM0Mzs9IGFmL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfT0NURU9OVFgyX0FGKSAmIzQzOz0gYWYvXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19PQ1RFT05UWDJfUEYpICYjNDM7PSBuaWMvXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvTWFrZWZpbGU9Nj1jY2ZsYWdzLXkgJiM0Mzs9IC1JJChzcmMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19PQ1RFT05UWDJfTUJPWCkgJiM0Mzs9IHJ2dV9tYm94Lm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL01ha2VmaWxlOjg6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9BRikgJiM0Mzs9IHJ2dV9hZi5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9NYWtlZmlsZS05LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jPTY2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBjZ3hfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jOjY3Olx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX0NHWCkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jLTY4LVx0eyBQQ0lfREVWSUNFX1NVQihQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX0NOMTBLX1JQTSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaC0xNS0gLyogUENJIGRldmljZSBJRHMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oOjE2OiNkZWZpbmVcdFBDSV9ERVZJRF9PQ1RFT05UWDJfQ0dYXHRcdDB4QTA1OVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmgtMTctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jPTE1ND1ERUZJTkVfU0hPV19BVFRSSUJVVEUobnBjX21jYW1fbGF5b3V0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0xNTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmM6MTU2OiNkZWZpbmUgX19PQ1RFT05UWDJfREVCVUdGU19BVFRSSUJVVEVfRk9QUyhfX25hbWUpXHRcdFx0XFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0xNTctc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgX19uYW1lICMjIF9mb3BzID0ge1x0XHRcdFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jLTE2NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYzoxNjU6I2RlZmluZSBERUZJTkVfT0NURU9OVFgyX0RFQlVHRlNfQVRUUklCVVRFX1dJVEhfU0laRShfX25hbWUsIF9fc2l6ZSlcdFx0XFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0xNjYtc3RhdGljIGludCBfX25hbWUgIyMgX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXHRcdFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jLTE3MC19XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jOjE3MTpfX09DVEVPTlRYMl9ERUJVR0ZTX0FUVFJJQlVURV9GT1BTKF9fbmFtZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0xNzItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jPTE4MT1zdGF0aWMgaW50IG5wY19tY2FtX2RzdGF0c19zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdW51c2VkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0yNDItI2RlZmluZSBUT1RBTF9TWiAoTUFYX05VTV9CQU5LUyAqIE1BWF9OVU1fU1VCX0JBTktTICogTUFYX1NVQkJBTktfREVQVEggKiA2NClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYzoyNDM6REVGSU5FX09DVEVPTlRYMl9ERUJVR0ZTX0FUVFJJQlVURV9XSVRIX1NJWkUobnBjX21jYW1fZHN0YXRzLCBUT1RBTF9TWik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMjQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jPTI0NT1zdGF0aWMgaW50IG5wY19tY2FtX21pc21hdGNoX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp1bnVzZWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jLTI4NC0vKiBcJiMzNDsldVxcdCVkXFx0JXVcXG5cJiMzNDsgbmVlZHMgbGVzcyB0aGFuIDY0IGNoYXJhY3RlcnMgdG8gcHJpbnQuICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmM6Mjg1OkRFRklORV9PQ1RFT05UWDJfREVCVUdGU19BVFRSSUJVVEVfV0lUSF9TSVpFKG5wY19tY2FtX21pc21hdGNoLCBUT1RBTF9TWik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMjg2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTIwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmM6MjE6I2RlZmluZSBQQ0lfREVWSURfT0NURU9OVFgyX1BUUFx0XHRcdDB4QTAwQ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtMjItI2RlZmluZSBQQ0lfU1VCU1lTX0RFVklEX09DVFgyXzk4eHhfUFRQXHRcdDB4QjEwMFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTI3LSNkZWZpbmUgUENJX1NVQlNZU19ERVZJRF9PQ1RYMl85NVhYT19QVFBcdDB4QjYwMFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmM6Mjg6I2RlZmluZSBQQ0lfREVWSURfT0NURU9OVFgyX1JTVFx0XHRcdDB4QTA4NVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtMjktI2RlZmluZSBQQ0lfREVWSURfQ04xMEtfUFRQXHRcdFx0MHhBMDlFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmM9NTg5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBwdHBfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jOjU5MDpcdHsgUENJX0RFVklDRV9TVUIoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9PQ1RFT05UWDJfUFRQLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNTkxLVx0XHRcdCBQQ0lfVkVORE9SX0lEX0NBVklVTSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTU5Mi1cdFx0XHQgUENJX1NVQlNZU19ERVZJRF9PQ1RYMl85OHh4X1BUUCkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jOjU5MzpcdHsgUENJX0RFVklDRV9TVUIoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9PQ1RFT05UWDJfUFRQLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNTk0LVx0XHRcdCBQQ0lfVkVORE9SX0lEX0NBVklVTSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTU5NS1cdFx0XHQgUENJX1NVQlNZU19ERVZJRF9PQ1RYMl85NlhYX1BUUCkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jOjU5NjpcdHsgUENJX0RFVklDRV9TVUIoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9PQ1RFT05UWDJfUFRQLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNTk3LVx0XHRcdCBQQ0lfVkVORE9SX0lEX0NBVklVTSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTU5OC1cdFx0XHQgUENJX1NVQlNZU19ERVZJRF9PQ1RYMl85NVhYX1BUUCkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jOjU5OTpcdHsgUENJX0RFVklDRV9TVUIoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9PQ1RFT05UWDJfUFRQLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNjAwLVx0XHRcdCBQQ0lfVkVORE9SX0lEX0NBVklVTSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTYwMS1cdFx0XHQgUENJX1NVQlNZU19ERVZJRF9PQ1RYMl85NVhYTl9QVFApIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzo2MDI6XHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1BUUCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTYwMy1cdFx0XHQgUENJX1ZFTkRPUl9JRF9DQVZJVU0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy02MDQtXHRcdFx0IFBDSV9TVUJTWVNfREVWSURfT0NUWDJfOTVNTV9QVFApIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzo2MDU6XHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1BUUCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTYwNi1cdFx0XHQgUENJX1ZFTkRPUl9JRF9DQVZJVU0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM9NDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHJ2dV9pZF90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM6NDU6XHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtNDYtXHR7IDAsIH0gIC8qIGVuZCBvZiB0YWJsZSAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jPTkyNz1zdGF0aWMgdm9pZCBydnVfZ2V0X2xia19idWZzaXplKHN0cnVjdCBydnUgKnJ2dSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy05MzMtXHRwZGV2ID0gcGNpX2dldF9kZXZpY2UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYzo5MzQ6XHRcdFx0ICAgICAgUENJX0RFVklEX09DVEVPTlRYMl9MQkssIHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtOTM1LVx0aWYgKCFwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jPTM0NDI9aW50IHJ2dV9nZXRfbnVtX2xia19jaGFucyh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTM0NDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYzozNDQ4Olx0cGRldiA9IHBjaV9nZXRfZGV2aWNlKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX0xCSyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTM0NDktXHRcdFx0ICAgICAgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgtMjMtLyogUENJIGRldmljZSBJRHMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oOjI0OiNkZWZpbmVcdFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGXHRcdDB4QTA2NVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1Lmg6MjU6I2RlZmluZVx0UENJX0RFVklEX09DVEVPTlRYMl9MQktcdFx0XHQweEEwNjFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oLTI2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jbjEway5jPTM5Mj1zdGF0aWMgdm9pZCBydnVfbGJrX3NldF9jaGFubmVscyhzdHJ1Y3QgcnZ1ICpydnUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NuMTBrLmMtNDE1LVx0XHRwZGV2ID0gcGNpX2dldF9kZXZpY2UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY24xMGsuYzo0MTY6XHRcdFx0XHQgICAgICBQQ0lfREVWSURfT0NURU9OVFgyX0xCSywgcGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY24xMGsuYy00MTctXHRcdGlmICghcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jPTI4MzM9c3RhdGljIGludCBjZ3hfcHJpbnRfc3RhdHMoc3RydWN0IHNlcV9maWxlICpzLCBpbnQgbG1hY19pZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jLTI4NDMtXHRydnUgPSBwY2lfZ2V0X2RydmRhdGEocGNpX2dldF9kZXZpY2UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jOjI4NDQ6XHRcdFx0XHRcdCAgICAgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYsIE5VTEwpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtMjg0NS1cdGlmICghcnZ1KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmM9Mjk1MT1zdGF0aWMgaW50IGNneF9wcmludF9kbWFjX2ZsdChzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIGludCBsbWFjX2lkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtMjk2Mi1cdHJ2dSA9IHBjaV9nZXRfZHJ2ZGF0YShwY2lfZ2V0X2RldmljZShQQ0lfVkVORE9SX0lEX0NBVklVTSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmM6Mjk2MzpcdFx0XHRcdFx0ICAgICBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRiwgTlVMTCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYy0yOTY0LVx0aWYgKCFydnUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYz0zMDExPXN0YXRpYyBpbnQgY2d4X3ByaW50X2Z3ZGF0YShzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIGludCBsbWFjX2lkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtMzAxOS1cdHJ2dSA9IHBjaV9nZXRfZHJ2ZGF0YShwY2lfZ2V0X2RldmljZShQQ0lfVkVORE9SX0lEX0NBVklVTSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmM6MzAyMDpcdFx0XHRcdFx0ICAgICBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRiwgTlVMTCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYy0zMDIxLVx0aWYgKCFydnUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL01ha2VmaWxlLTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfT0NURU9OVFgyX1BGKSAmIzQzOz0gcnZ1X25pY3BmLm8gb3R4Ml9wdHAub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9WRikgJiM0Mzs9IHJ2dV9uaWN2Zi5vIG90eDJfcHRwLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9NYWtlZmlsZS04LW9iai0kKENPTkZJR19SVlVfRVNXSVRDSCkgJiM0Mzs9IHJ2dV9yZXAub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTQyLS8qIFBDSSBkZXZpY2UgSURzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo0MzojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX1BGICAgICAgICAgICAgICAweEEwNjNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oOjQ0OiNkZWZpbmUgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfVkZcdFx0MHhBMDY0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo0NTojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGVkZcdFx0MHhBMEY4XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaC00Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaC01MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oOjUxOiNkZWZpbmUgUENJX0RFVklEX09DVEVPTlRYMl9TRFBfUkVQXHRcdDB4QTBGN1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNTItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg9NTk3PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19vdHgyX2xia3ZmKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNTk4LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oOjU5OTpcdHJldHVybiAocGRldi1cdTAwM2VkZXZpY2UgPT0gUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUZWRikgfHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTYwMC1cdFx0KHBkZXYtXHUwMDNlZGV2aWNlID09IFBDSV9ERVZJRF9SVlVfUkVQKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaD02MTU9c3RhdGljIGlubGluZSBib29sIGlzX290eDJfc2RwX3JlcChzdHJ1Y3QgcGNpX2RldiAqcGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTYxNi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo2MTc6XHRyZXR1cm4gcGRldi1cdTAwM2VkZXZpY2UgPT0gUENJX0RFVklEX09DVEVPTlRYMl9TRFBfUkVQO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNjE4LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jPTM2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBvdHgyX3BmX2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jOjM3Olx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9QRikgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmMtMzgtXHR7IDAsIH0gIC8qIGVuZCBvZiB0YWJsZSAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmM9MjI9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG90eDJfdmZfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmM6MjM6XHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGVkYpIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jOjI0Olx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9WRikgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmM6MjU6XHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9PQ1RFT05UWDJfU0RQX1JFUCkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmMtMjYtXHR7IH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDU6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMxMjcKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA3NDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIEFzc2Vzc21lbnQgZm9yIE1hcnZlbGwgT2N0ZW9uVFgyIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBoYXJkd2FyZSBkcml2ZXIgZm9yIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiBzeXprYWxsZXIgZXZlbiB0b3VjaCB0aGlzPyBJIGtub3cgaXQgaGFzIHdheXMgdG8gdGVzdCBQQ0kgZHJpdmVycywgbGlrZSBgc3l6X3BjaV9kZXZpY2VfYWRkYCBhbmQgYHN5el9wY2lfZGV2aWNlX2FkZF92MmAsIGJ1dCB0aGF0JiMzOTtzIHVzdWFsbHkgZm9yIHNpbXBsZXIgZHJpdmVycy4gQ2FuIHN5emthbGxlciBwcm9wZXJseSBmdXp6IHRoaXM/IEkgbmVlZCB0byBjb25zaWRlciBpZiBpdCYjMzk7cyB3b3J0aCB0aGUgZWZmb3J0IGdpdmVuIHRoZSBkcml2ZXImIzM5O3MgY29tcGxleGl0eS4KClRoaXMgcGF0Y2ggbW9kaWZpZXMgYSBmZXcgZnVuY3Rpb25zIChgY2d4X2dldF9wa2luZGAsIGBydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWRgLCBgbml4X2ludGVyZmFjZV9pbml0YCwgYW5kIGBydnVfbWJveF9oYW5kbGVyX25peF9sZl9hbGxvY2ApLiBJdCBsb29rcyBsaWtlIGEgbmV3IGNoZWNrLCBgcnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkYCwgaXMgYmVpbmcgaW50cm9kdWNlZCBiZWZvcmUgY2FsbHMgdG8gYGNneF9zZXRfcGtpbmRgIGFuZCBgcnZ1X25wY19zZXRfcGtpbmRgLiAgQW5kIGBydnVfbWJveF9oYW5kbGVyX25peF9sZl9hbGxvY2AgaXMgYSBtYWlsYm94IGhhbmRsZXIsIHRob3NlIGFyZSBvZnRlbiB0YXJnZXRzIGZvciBzeXprYWxsZXIuCgpCdXQsIHRoZSBwcm9tcHQgc2F5cyB0byByZXR1cm4gJiMzNDtXb3J0aEZ1enppbmc9ZmFsc2UmIzM0OyBpZiB0aGUgcGF0Y2ggaW52b2x2ZXMgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiAgQ2FuIHRoaXMgTWFydmVsbCBPY3Rlb25UWDIgZHJpdmVyIGJlIGVtdWxhdGVkIGluIFFFTVU/IEkgZG9uJiMzOTt0IHRoaW5rIHNvLiBUaGVyZSYjMzk7cyBubyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBmb3IgaXQuICBUaGUgc3l6a2FsbGVyIFBDSSBmdXp6aW5nIG1pZ2h0IGJlIGFibGUgdG8gKnRvdWNoKiBpdCwgYnV0IGl0JiMzOTtzIHZlcnkgbGltaXRlZCB3aGVuIGRlYWxpbmcgd2l0aCBjb21wbGV4IE5JQyBkcml2ZXJzIGxpa2UgdGhpcyBvbmUsIGJlY2F1c2Ugb2YgdGhvc2UgRE1BIHJpbmdzIGFuZCBjb21wbGljYXRlZCBNTUlPIHNlcXVlbmNlcy4gU3l6a2FsbGVyJiMzOTtzIGBzeXpfcGNpX2RldmljZV9hZGRgIGlzbiYjMzk7dCBjb25zaWRlcmVkICYjMzQ7c29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUmIzM0OyBpbiB0aGUgc2Vuc2Ugb2YgdGhlIHByb21wdC4KCkxldCBtZSBkb3VibGUtY2hlY2sgYWJvdXQgdGhlIE9jdGVvblRYMi4gJiMzNDtPQ1RFT05UWDJfQUYmIzM0OyBzZWVtcyB0byBiZSByZWxhdGVkLiAgWWVwLCBpdCYjMzk7cyBhIFBDSSBkcml2ZXIuIEl0JiMzOTtzIGZvciBgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUZgLiBTdGlsbCBubyBRRU1VIGVtdWxhdGlvbi4KClNvLCBzaW5jZSBpdCYjMzk7cyBhICpwdXJlKiBoYXJkd2FyZSBkcml2ZXIsIHdpdGggbm8gYXZhaWxhYmxlIFFFTVUgZW11bGF0aW9uLCB0aGUgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gIFN5emthbGxlciBtaWdodCBwb2tlIGF0IGl0LCBidXQgdGhhdCYjMzk7cyBub3QgdGhlIHNhbWUgdGhpbmcuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSBpZiB0aGVyZSBpcyBhIGBzeXpfYCBwc2V1ZG8tc3lzY2FsbCBmb3IgdGhpcy4gR2l2ZW4gdGhlIHByZW1pc2Ugb2YgdGhlIHByb21wdCwgdGhlIGFuc3dlciBpcyAmIzM0O1dvcnRoRnV6emluZz1mYWxzZSYjMzQ7LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwNToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N5el8uKm9jdGVvbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA1OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NDY4CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoaXMgZmllbGQsIHByZXNlbnRlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5OgoKKipDaGVja2luZyBmb3IgU3BlY2lhbGl6ZWQgU3lzY2FsbHMqKgoKQWxyaWdodCwgSSYjMzk7bSB0aGlua2luZywgbGV0JiMzOTtzIHF1aWNrbHkgc2VlIGlmIHRoZXJlIGFyZSBhbnkgZXhpc3RpbmcgYHN5el9gIHBzZXVkby1zeXNjYWxscyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIGhhbmRsaW5nIHRoZSBgcnZ1YCBvciBgY2d4YCBzdWJzeXN0ZW1zLiBUaGVzZSBhcmUgY29tcGxleCwgYW5kIEkmIzM5O20gcHJldHR5IHN1cmUgSSYjMzk7dmUgc2VlbiBzb21lIGN1c3RvbSBzeXN0ZW0gY2FsbCBpbXBsZW1lbnRhdGlvbnMgaW4gdGhlIHBhc3QgdGhhdCB0YXJnZXQgdGhlc2UgYXJlYXMuIE15IGZvY3VzIGlzIG9uIGVmZmljaWVuY3kgYW5kIHdoZXRoZXIgSSBjYW4gbGV2ZXJhZ2Ugc29tZXRoaW5nIGFscmVhZHkgYnVpbHQsIGFzIEkga25vdyBteSBmaWVsZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDU6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzeXpfLipydnUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwNToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDY1OAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIGZyYW1lZCBhcyBteSBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6CgoqKkludmVzdGlnYXRpbmcgUG90ZW50aWFsIGBzeXpfYCBTeXN0ZW0gQ2FsbHMgaW4gYG5peGAqKgoKQWxyaWdodCwgdGltZSB0byBkaWcgaW4uIE15IHByaW1hcnkgb2JqZWN0aXZlIGF0IHRoaXMgbW9tZW50IGlzIHRvIGRldGVybWluZSB3aGV0aGVyIGFueSBgc3l6X2AgcHNldWRvLXN5c3RlbSBjYWxscyBleGlzdCB3aXRoaW4gdGhlIGBuaXhgIG9wZXJhdGluZyBzeXN0ZW0gZW52aXJvbm1lbnQuIEkmIzM5O20gb3BlcmF0aW5nIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgYSBgc3l6X2AgcHJlZml4IHVzdWFsbHkgaW5kaWNhdGVzIHNvbWUga2luZCBvZiBpbnN0cnVtZW50YXRpb24gb3IgZnV6emluZy1yZWxhdGVkIGZ1bmN0aW9uYWxpdHksIGxpa2VseSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggdG9vbHMgbGlrZSBzeXprYWxsZXIuIFRoZXJlZm9yZSwgaWRlbnRpZnlpbmcgdGhlc2UgY2FsbHMgd291bGQgYmUgYSBjcnVjaWFsIGZpcnN0IHN0ZXAgaW4gYW55IGF0dGVtcHQgYXQgcmV2ZXJzZS1lbmdpbmVlcmluZyBvciBmdXp6aW5nIGBuaXhgIGl0c2VsZi4gVGhpcyBtZWFucyBJJiMzOTtsbCBuZWVkIHRvIGtub3cgd2hpY2ggc3lzY2FsbHMgYXJlIGluIHBsYWNlLCBzbyBJIGNhbiBzZWUgaWYgYW55IGFyZSBwcmVmaXhlZCB3aXRoIHRoZSBjb3JyZWN0IGNoYXJhY3RlcnMuIE15IGFwcHJvYWNoIHdpbGwgYmUgbWV0aG9kaWNhbCBhbmQgdGFyZ2V0ZWQsIHN0YXJ0aW5nIHdpdGggdGhlIHNpbXBsZXN0IGNoZWNrcyBhbmQgdGhlbiB3b3JraW5nIGludG8gbW9yZSBjb21wbGV4IG9wdGlvbnMgaWYgbmVjZXNzYXJ5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwNToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N5el8uKm5peCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA1OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0OTA0CgkJCQkJCQlvdXRwdXQ6IDkzCgkJCQkJCQl0aG91Z2h0czogNDcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBEZWNpc2lvbiBmb3IgdGhlIE9jdGVvblRYMiBBRiBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhlIHNpdHVhdGlvbiBpcyBjbGVhci4gVGhpcyBwYXRjaCB0b3VjaGVzIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyLCBhbmQgYXMgd2UgYWxsIGtub3csIHRoZXJlJiMzOTtzIG5vIHN5emthbGxlciBzdXBwb3J0IHNwZWNpZmljYWxseSBidWlsdCBmb3IgdGhpcyBoYXJkd2FyZS4gVGhlIGNvcmUgcHJvYmxlbSwgaG93ZXZlciwgaXMgdGhhdCB0aGlzIGlzIGEgKmhhcmR3YXJlLXNwZWNpZmljKiBkcml2ZXIgZm9yIHRoZSBPY3Rlb25UWDIuIFRoZXJlJiMzOTtzIG5vIGVtdWxhdGlvbiBhdmFpbGFibGUsIG5vdCBldmVuIGEgYmFzaWMgb25lIGluIFFFTVUsIEdDRSwgb3Igb3RoZXIgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGlzIG1lYW5zIHRoZSBjb2RlIHBhdGhzIGFyZSB1dHRlcmx5IHVucmVhY2hhYmxlIHVuZGVyIGFueSBjdXJyZW50IHZpcnR1YWwgc2V0dXAuCgpMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhlIHByb21wdCBjcml0ZXJpYSwgc2luY2Ugd2UgbmVlZCB0byBiZSBwcmVjaXNlLiBZZXMsIGl0IHBlcmZlY3RseSBmaXRzOiAmIzM0O1JldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiYjMzQ7IEJpbmdvLiBXZSYjMzk7cmUgZ29sZGVuLiBUaGlzIHBhdGNoIGlzIGlzb2xhdGVkIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2AgZGlyZWN0b3J5LCBzbyBpdCBpcyB0aGUgT2N0ZW9uVFgyIEFGIGRyaXZlci4KCkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkmIzM5O2xsIHNvbGlkaWZ5IHRoZSByZWFzb25pbmc6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi8pLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlciBmb3Igd2hpY2ggdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGluIFFFTVUgb3Igb3RoZXIgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCB0ZXN0IGR1cmluZyBmdXp6aW5nIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OwoKTGV0IG1lIGNvbmZpcm0gdGhlIGZpbGUgbW9kaWZpY2F0aW9ucyBvbmUgbGFzdCB0aW1lIHRvIHJlbW92ZSBhbnkgZG91YnQ6Ci0gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jYAotIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaGAKLSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmhgCi0gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guY2AKLSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jYAoKWXVwLCBhbGwgd2l0aGluIHRoYXQgZHJpdmVyLgoKQWxyaWdodCwgSSYjMzk7bSBjb25maWRlbnQuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIHdpdGggYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA1OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyIGZvciB3aGljaCB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gaW4gUUVNVSBvciBvdGhlciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgZHVyaW5nIGZ1enppbmcgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyIGZvciB3aGljaCB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gaW4gUUVNVSBvciBvdGhlciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgZHVyaW5nIGZ1enppbmcgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA1OjA5OjU2LjA5NDU5ODAyMloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NjY2NTY4ODYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlci4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIgZm9yIHdoaWNoIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBpbiBRRU1VIG9yIG90aGVyIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCBkdXJpbmcgZnV6emluZyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwNTowOTo1Ni4wOTQ2MDQwMzJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MTQzMzc2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDU5OWE4MDk2YjM2NmJiNjM0YjM0NWRiNzhkNTA3ZmVjODBiZTAzZWRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdW4gMjUgMDU6MDk6NTQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guY1xcbmluZGV4IDJlOTRkNTEwNTAxNmJmLi5mNWZkNjEzOGMzNTJmZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jXFxuQEAgLTUxOCw2ICs1MTgsMTggQEAgaW50IGNneF9zZXRfcGtpbmQodm9pZCAqY2d4ZCwgdTggbG1hY19pZCwgaW50IHBraW5kKVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4raW50IGNneF9nZXRfcGtpbmQodm9pZCAqY2d4ZCwgdTggbG1hY19pZCwgaW50ICpwa2luZClcXG4re1xcbitcXHRzdHJ1Y3QgY2d4ICpjZ3ggPSBjZ3hkO1xcbitcXG4rXFx0aWYgKCFpc19sbWFjX3ZhbGlkKGNneCwgbG1hY19pZCkpXFxuK1xcdFxcdHJldHVybiAtRU5PREVWO1xcbitcXG4rXFx0KnBraW5kID0gY2d4X3JlYWQoY2d4LCBsbWFjX2lkLCBjZ3gtXFx1MDAzZW1hY19vcHMtXFx1MDAzZXJ4aWRfbWFwX29mZnNldCk7XFxuK1xcdCpwa2luZCA9ICpwa2luZCBcXHUwMDI2IDB4M0Y7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbiBzdGF0aWMgdTggY2d4X2dldF9sbWFjX3R5cGUodm9pZCAqY2d4ZCwgaW50IGxtYWNfaWQpXFxuIHtcXG4gXFx0c3RydWN0IGNneCAqY2d4ID0gY2d4ZDtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaFxcbmluZGV4IDkyY2NmMzQzZGZlMDRmLi44NDExYTc1ZGQ3MjNmOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oXFxuQEAgLTE0MSw2ICsxNDEsNyBAQCBpbnQgY2d4X2dldF9jZ3hpZCh2b2lkICpjZ3hkKTtcXG4gaW50IGNneF9nZXRfbG1hY19jbnQodm9pZCAqY2d4ZCk7XFxuIHZvaWQgKmNneF9nZXRfcGRhdGEoaW50IGNneF9pZCk7XFxuIGludCBjZ3hfc2V0X3BraW5kKHZvaWQgKmNneGQsIHU4IGxtYWNfaWQsIGludCBwa2luZCk7XFxuK2ludCBjZ3hfZ2V0X3BraW5kKHZvaWQgKmNneGQsIHU4IGxtYWNfaWQsIGludCAqcGtpbmQpO1xcbiBpbnQgY2d4X2xtYWNfZXZoX3JlZ2lzdGVyKHN0cnVjdCBjZ3hfZXZlbnRfY2IgKmNiLCB2b2lkICpjZ3hkLCBpbnQgbG1hY19pZCk7XFxuIGludCBjZ3hfbG1hY19ldmhfdW5yZWdpc3Rlcih2b2lkICpjZ3hkLCBpbnQgbG1hY19pZCk7XFxuIGludCBjZ3hfZ2V0X3R4X3N0YXRzKHZvaWQgKmNneGQsIGludCBsbWFjX2lkLCBpbnQgaWR4LCB1NjQgKnR4X3N0YXQpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oXFxuaW5kZXggN2YzNTA1YWU2ODYwNDIuLmJiNjcxZTIxNTBhYTY2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmhcXG5AQCAtMTExNSw2ICsxMTE1LDcgQEAgdm9pZCBucGNfcmVhZF9tY2FtX2VudHJ5KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wY19tY2FtICptY2FtLFxcbiBcXHRcXHRcXHQgdTggKmludGYsIHU4ICplbmEpO1xcbiBpbnQgbnBjX2NvbmZpZ19jbnRyX2RlZmF1bHRfZW50cmllcyhzdHJ1Y3QgcnZ1ICpydnUsIGJvb2wgZW5hYmxlKTtcXG4gYm9vbCBpc19jZ3hfY29uZmlnX3Blcm1pdHRlZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKTtcXG4rYm9vbCBydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYyk7XFxuIGJvb2wgaXNfbWFjX2ZlYXR1cmVfc3VwcG9ydGVkKHN0cnVjdCBydnUgKnJ2dSwgaW50IHBmLCBpbnQgZmVhdHVyZSk7XFxuIHUzMiAgcnZ1X2NneF9nZXRfZmlmb2xlbihzdHJ1Y3QgcnZ1ICpydnUpO1xcbiB2b2lkICpydnVfZmlyc3RfY2d4X3BkYXRhKHN0cnVjdCBydnUgKnJ2dSk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guY1xcbmluZGV4IDRmZjM5MzVlZDNmZTg0Li4yYmUxZGEzNDc2YWM4NCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmNcXG5AQCAtMTM1NSwzICsxMzU1LDM1IEBAIHZvaWQgcnZ1X21hY19yZXNldChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKVxcbiBcXHRpZiAobWFjX29wcy1cXHUwMDNlbWFjX3Jlc2V0KGNneGQsIGxtYWMsICFpc192ZihwY2lmdW5jKSkpXFxuIFxcdFxcdGRldl9lcnIocnZ1LVxcdTAwM2VkZXYsIFxcXCJGYWlsZWQgdG8gcmVzZXQgTUFDXFxcXG5cXFwiKTtcXG4gfVxcbitcXG4rLyogRG8gbm90IGFsbG93IENHWC1tYXBwZWQgVkZzIHRvIG92ZXJ3cml0ZSBQS0lORCB3aGVuIHNwZWNpYWwgcGFyc2Uga2luZHNcXG4rICogKEhpR2lnLCBFRFNBLCBldGMuKSBhcmUgaW4gdXNlIG9uIHRoZSBzaGFyZWQgTE1BQy5cXG4rICovXFxuK2Jvb2wgcnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpXFxuK3tcXG4rXFx0aW50IHBmLCBlcnIsIHJ4cGtpbmQ7XFxuK1xcdHU4IGNneF9pZCwgbG1hY19pZDtcXG4rXFx0dm9pZCAqY2d4ZDtcXG4rXFxuK1xcdHBmID0gcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsIHBjaWZ1bmMpO1xcbitcXG4rXFx0aWYgKCEocGNpZnVuYyBcXHUwMDI2IFJWVV9QRlZGX0ZVTkNfTUFTSykpXFxuK1xcdFxcdHJldHVybiB0cnVlO1xcbitcXG4rXFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuK1xcdFxcdHJldHVybiB0cnVlO1xcbitcXG4rXFx0cnZ1X2dldF9jZ3hfbG1hY19pZChydnUtXFx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXFx1MDAyNmNneF9pZCwgXFx1MDAyNmxtYWNfaWQpO1xcbitcXHRjZ3hkID0gcnZ1X2NneF9wZGF0YShjZ3hfaWQsIHJ2dSk7XFxuK1xcdGVyciA9IGNneF9nZXRfcGtpbmQoY2d4ZCwgbG1hY19pZCwgXFx1MDAyNnJ4cGtpbmQpO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbitcXHRzd2l0Y2ggKHJ4cGtpbmQpIHtcXG4rXFx0Y2FzZSBOUENfUlhfSElHSUdfUEtJTkQ6XFxuK1xcdGNhc2UgTlBDX1JYX0VEU0FfUEtJTkQ6XFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0cmV0dXJuIHRydWU7XFxuK1xcdH1cXG4rfVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmNcXG5pbmRleCBkODk4OTM5NWU4NzVkYS4uNDBmNWIyNWVhZmIxMWQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jXFxuQEAgLTMzOCw2ICszMzgsNyBAQCBzdGF0aWMgaW50IG5peF9pbnRlcmZhY2VfaW5pdChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgdHlwZSwgaW50IG5peGxmLFxcbiBcXHRzdHJ1Y3Qgc2RwX25vZGVfaW5mbyAqc2RwX2luZm87XFxuIFxcdGludCBwa2luZCwgcGYsIHZmLCBsYmtpZCwgdmZpZDtcXG4gXFx0dTggY2d4X2lkLCBsbWFjX2lkO1xcbitcXHRzdHJ1Y3QgY2d4ICpjZ3hkO1xcbiBcXHRib29sIGZyb21fdmY7XFxuIFxcdGludCBlcnI7XFxuIFxcbkBAIC0zNjMsOCArMzY0LDE1IEBAIHN0YXRpYyBpbnQgbml4X2ludGVyZmFjZV9pbml0KHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGludCB0eXBlLCBpbnQgbml4bGYsXFxuIFxcdFxcdHBmdmYtXFx1MDAzZXR4X2NoYW5fY250ID0gMTtcXG4gXFx0XFx0cnNwLVxcdTAwM2V0eF9saW5rID0gY2d4X2lkICogaHctXFx1MDAzZWxtYWNfcGVyX2NneCArIGxtYWNfaWQ7XFxuIFxcbi1cXHRcXHRjZ3hfc2V0X3BraW5kKHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpLCBsbWFjX2lkLCBwa2luZCk7XFxuLVxcdFxcdHJ2dV9ucGNfc2V0X3BraW5kKHJ2dSwgcGtpbmQsIHBmdmYpO1xcbitcXHRcXHRjZ3hkID0gcnZ1X2NneF9wZGF0YShjZ3hfaWQsIHJ2dSk7XFxuK1xcbitcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZjZ3hkLVxcdTAwM2Vsb2NrKTtcXG4rXFx0XFx0aWYgKHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZChydnUsIHBjaWZ1bmMpKSB7XFxuK1xcdFxcdFxcdGNneF9zZXRfcGtpbmQocnZ1X2NneF9wZGF0YShjZ3hfaWQsIHJ2dSksIGxtYWNfaWQsXFxuK1xcdFxcdFxcdFxcdCAgICAgIHBraW5kKTtcXG4rXFx0XFx0XFx0cnZ1X25wY19zZXRfcGtpbmQocnZ1LCBwa2luZCwgcGZ2Zik7XFxuK1xcdFxcdH1cXG4rXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjZ3hkLVxcdTAwM2Vsb2NrKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgTklYX0lOVEZfVFlQRV9MQks6XFxuIFxcdFxcdHZmID0gKHBjaWZ1bmMgXFx1MDAyNiBSVlVfUEZWRl9GVU5DX01BU0spIC0gMTtcXG5AQCAtMTUwOCw3ICsxNTE2LDEwIEBAIGludCBydnVfbWJveF9oYW5kbGVyX25peF9sZl9hbGxvYyhzdHJ1Y3QgcnZ1ICpydnUsXFxuIFxcdHN0cnVjdCBydnVfYmxvY2sgKmJsb2NrO1xcbiBcXHRzdHJ1Y3QgcnZ1X3BmdmYgKnBmdmY7XFxuIFxcdHU2NCBjZmcsIGN0eF9jZmc7XFxuK1xcdHN0cnVjdCBjZ3ggKmNneGQ7XFxuIFxcdGludCBibGthZGRyO1xcbitcXHR1OCBjZ3g7XFxuK1xcdGludCBwZjtcXG4gXFxuIFxcdGlmICghcmVxLVxcdTAwM2VycV9jbnQgfHwgIXJlcS1cXHUwMDNlc3FfY250IHx8ICFyZXEtXFx1MDAzZWNxX2NudClcXG4gXFx0XFx0cmV0dXJuIE5JWF9BRl9FUlJfUEFSQU07XFxuQEAgLTE2ODAsOCArMTY5MSwxNyBAQCBpbnQgcnZ1X21ib3hfaGFuZGxlcl9uaXhfbGZfYWxsb2Moc3RydWN0IHJ2dSAqcnZ1LFxcbiBcXHRydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfUlhfQ0ZHKG5peGxmKSwgcmVxLVxcdTAwM2VyeF9jZmcpO1xcbiBcXG4gXFx0LyogQ29uZmlndXJlIHBraW5kIGZvciBUWCBwYXJzZSBjb25maWcgKi9cXG4tXFx0Y2ZnID0gTlBDX1RYX0RFRl9QS0lORDtcXG4tXFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1RYX1BBUlNFX0NGRyhuaXhsZiksIGNmZyk7XFxuK1xcdGlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBydnVfZ2V0X3BmKHJ2dS1cXHUwMDNlcGRldiwgcGNpZnVuYykpKSB7XFxuK1xcdFxcdHBmID0gcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsIHBjaWZ1bmMpO1xcbitcXHRcXHRjZ3hkID0gcnZ1X2NneF9wZGF0YShjZ3gsIHJ2dSk7XFxuK1xcbitcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZjZ3hkLVxcdTAwM2Vsb2NrKTtcXG4rXFx0XFx0aWYgKHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZChydnUsIHBjaWZ1bmMpKSB7XFxuK1xcdFxcdFxcdGNmZyA9IE5QQ19UWF9ERUZfUEtJTkQ7XFxuK1xcdFxcdFxcdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcobml4bGYpLCBjZmcpO1xcbitcXHRcXHR9XFxuK1xcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2Y2d4ZC1cXHUwMDNlbG9jayk7XFxuK1xcdH1cXG4gXFxuIFxcdGlmIChpc19yZXBfZGV2KHJ2dSwgcGNpZnVuYykpIHtcXG4gXFx0XFx0cGZ2Zi1cXHUwMDNldHhfY2hhbl9iYXNlID0gUlZVX1NXSVRDSF9MQktfQ0hBTjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDU6MDk6NTYuNjY2ODM4NjU0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTA5NDMyMzA0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyIGZvciB3aGljaCB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gaW4gUUVNVSBvciBvdGhlciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgZHVyaW5nIGZ1enppbmcgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1OTlhODA5NmIzNjZiYjYzNGIzNDVkYjc4ZDUwN2ZlYzgwYmUwM2VkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdW4gMjUgMDU6MDk6NTQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jXG5pbmRleCAyZTk0ZDUxMDUwMTZiZi4uZjVmZDYxMzhjMzUyZmQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmNcbkBAIC01MTgsNiArNTE4LDE4IEBAIGludCBjZ3hfc2V0X3BraW5kKHZvaWQgKmNneGQsIHU4IGxtYWNfaWQsIGludCBwa2luZClcbiBcdHJldHVybiAwO1xuIH1cbiBcbitpbnQgY2d4X2dldF9wa2luZCh2b2lkICpjZ3hkLCB1OCBsbWFjX2lkLCBpbnQgKnBraW5kKVxuK3tcbitcdHN0cnVjdCBjZ3ggKmNneCA9IGNneGQ7XG4rXG4rXHRpZiAoIWlzX2xtYWNfdmFsaWQoY2d4LCBsbWFjX2lkKSlcbitcdFx0cmV0dXJuIC1FTk9ERVY7XG4rXG4rXHQqcGtpbmQgPSBjZ3hfcmVhZChjZ3gsIGxtYWNfaWQsIGNneC1cdTAwM2VtYWNfb3BzLVx1MDAzZXJ4aWRfbWFwX29mZnNldCk7XG4rXHQqcGtpbmQgPSAqcGtpbmQgXHUwMDI2IDB4M0Y7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4gc3RhdGljIHU4IGNneF9nZXRfbG1hY190eXBlKHZvaWQgKmNneGQsIGludCBsbWFjX2lkKVxuIHtcbiBcdHN0cnVjdCBjZ3ggKmNneCA9IGNneGQ7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaFxuaW5kZXggOTJjY2YzNDNkZmUwNGYuLjg0MTFhNzVkZDcyM2Y5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oXG5AQCAtMTQxLDYgKzE0MSw3IEBAIGludCBjZ3hfZ2V0X2NneGlkKHZvaWQgKmNneGQpO1xuIGludCBjZ3hfZ2V0X2xtYWNfY250KHZvaWQgKmNneGQpO1xuIHZvaWQgKmNneF9nZXRfcGRhdGEoaW50IGNneF9pZCk7XG4gaW50IGNneF9zZXRfcGtpbmQodm9pZCAqY2d4ZCwgdTggbG1hY19pZCwgaW50IHBraW5kKTtcbitpbnQgY2d4X2dldF9wa2luZCh2b2lkICpjZ3hkLCB1OCBsbWFjX2lkLCBpbnQgKnBraW5kKTtcbiBpbnQgY2d4X2xtYWNfZXZoX3JlZ2lzdGVyKHN0cnVjdCBjZ3hfZXZlbnRfY2IgKmNiLCB2b2lkICpjZ3hkLCBpbnQgbG1hY19pZCk7XG4gaW50IGNneF9sbWFjX2V2aF91bnJlZ2lzdGVyKHZvaWQgKmNneGQsIGludCBsbWFjX2lkKTtcbiBpbnQgY2d4X2dldF90eF9zdGF0cyh2b2lkICpjZ3hkLCBpbnQgbG1hY19pZCwgaW50IGlkeCwgdTY0ICp0eF9zdGF0KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oXG5pbmRleCA3ZjM1MDVhZTY4NjA0Mi4uYmI2NzFlMjE1MGFhNjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmhcbkBAIC0xMTE1LDYgKzExMTUsNyBAQCB2b2lkIG5wY19yZWFkX21jYW1fZW50cnkoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbnBjX21jYW0gKm1jYW0sXG4gXHRcdFx0IHU4ICppbnRmLCB1OCAqZW5hKTtcbiBpbnQgbnBjX2NvbmZpZ19jbnRyX2RlZmF1bHRfZW50cmllcyhzdHJ1Y3QgcnZ1ICpydnUsIGJvb2wgZW5hYmxlKTtcbiBib29sIGlzX2NneF9jb25maWdfcGVybWl0dGVkKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpO1xuK2Jvb2wgcnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpO1xuIGJvb2wgaXNfbWFjX2ZlYXR1cmVfc3VwcG9ydGVkKHN0cnVjdCBydnUgKnJ2dSwgaW50IHBmLCBpbnQgZmVhdHVyZSk7XG4gdTMyICBydnVfY2d4X2dldF9maWZvbGVuKHN0cnVjdCBydnUgKnJ2dSk7XG4gdm9pZCAqcnZ1X2ZpcnN0X2NneF9wZGF0YShzdHJ1Y3QgcnZ1ICpydnUpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guY1xuaW5kZXggNGZmMzkzNWVkM2ZlODQuLjJiZTFkYTM0NzZhYzg0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmNcbkBAIC0xMzU1LDMgKzEzNTUsMzUgQEAgdm9pZCBydnVfbWFjX3Jlc2V0KHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpXG4gXHRpZiAobWFjX29wcy1cdTAwM2VtYWNfcmVzZXQoY2d4ZCwgbG1hYywgIWlzX3ZmKHBjaWZ1bmMpKSlcbiBcdFx0ZGV2X2VycihydnUtXHUwMDNlZGV2LCBcIkZhaWxlZCB0byByZXNldCBNQUNcXG5cIik7XG4gfVxuK1xuKy8qIERvIG5vdCBhbGxvdyBDR1gtbWFwcGVkIFZGcyB0byBvdmVyd3JpdGUgUEtJTkQgd2hlbiBzcGVjaWFsIHBhcnNlIGtpbmRzXG4rICogKEhpR2lnLCBFRFNBLCBldGMuKSBhcmUgaW4gdXNlIG9uIHRoZSBzaGFyZWQgTE1BQy5cbisgKi9cbitib29sIHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKVxuK3tcbitcdGludCBwZiwgZXJyLCByeHBraW5kO1xuK1x0dTggY2d4X2lkLCBsbWFjX2lkO1xuK1x0dm9pZCAqY2d4ZDtcbitcbitcdHBmID0gcnZ1X2dldF9wZihydnUtXHUwMDNlcGRldiwgcGNpZnVuYyk7XG4rXG4rXHRpZiAoIShwY2lmdW5jIFx1MDAyNiBSVlVfUEZWRl9GVU5DX01BU0spKVxuK1x0XHRyZXR1cm4gdHJ1ZTtcbitcbitcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuK1x0XHRyZXR1cm4gdHJ1ZTtcbitcbitcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXHUwMDI2Y2d4X2lkLCBcdTAwMjZsbWFjX2lkKTtcbitcdGNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTtcbitcdGVyciA9IGNneF9nZXRfcGtpbmQoY2d4ZCwgbG1hY19pZCwgXHUwMDI2cnhwa2luZCk7XG4rXHRpZiAoZXJyKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRzd2l0Y2ggKHJ4cGtpbmQpIHtcbitcdGNhc2UgTlBDX1JYX0hJR0lHX1BLSU5EOlxuK1x0Y2FzZSBOUENfUlhfRURTQV9QS0lORDpcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1x0ZGVmYXVsdDpcbitcdFx0cmV0dXJuIHRydWU7XG4rXHR9XG4rfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguY1xuaW5kZXggZDg5ODkzOTVlODc1ZGEuLjQwZjViMjVlYWZiMTFkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmNcbkBAIC0zMzgsNiArMzM4LDcgQEAgc3RhdGljIGludCBuaXhfaW50ZXJmYWNlX2luaXQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgaW50IHR5cGUsIGludCBuaXhsZixcbiBcdHN0cnVjdCBzZHBfbm9kZV9pbmZvICpzZHBfaW5mbztcbiBcdGludCBwa2luZCwgcGYsIHZmLCBsYmtpZCwgdmZpZDtcbiBcdHU4IGNneF9pZCwgbG1hY19pZDtcbitcdHN0cnVjdCBjZ3ggKmNneGQ7XG4gXHRib29sIGZyb21fdmY7XG4gXHRpbnQgZXJyO1xuIFxuQEAgLTM2Myw4ICszNjQsMTUgQEAgc3RhdGljIGludCBuaXhfaW50ZXJmYWNlX2luaXQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgaW50IHR5cGUsIGludCBuaXhsZixcbiBcdFx0cGZ2Zi1cdTAwM2V0eF9jaGFuX2NudCA9IDE7XG4gXHRcdHJzcC1cdTAwM2V0eF9saW5rID0gY2d4X2lkICogaHctXHUwMDNlbG1hY19wZXJfY2d4ICsgbG1hY19pZDtcbiBcbi1cdFx0Y2d4X3NldF9wa2luZChydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KSwgbG1hY19pZCwgcGtpbmQpO1xuLVx0XHRydnVfbnBjX3NldF9wa2luZChydnUsIHBraW5kLCBwZnZmKTtcbitcdFx0Y2d4ZCA9IHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpO1xuK1xuK1x0XHRtdXRleF9sb2NrKFx1MDAyNmNneGQtXHUwMDNlbG9jayk7XG4rXHRcdGlmIChydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWQocnZ1LCBwY2lmdW5jKSkge1xuK1x0XHRcdGNneF9zZXRfcGtpbmQocnZ1X2NneF9wZGF0YShjZ3hfaWQsIHJ2dSksIGxtYWNfaWQsXG4rXHRcdFx0XHQgICAgICBwa2luZCk7XG4rXHRcdFx0cnZ1X25wY19zZXRfcGtpbmQocnZ1LCBwa2luZCwgcGZ2Zik7XG4rXHRcdH1cbitcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmNneGQtXHUwMDNlbG9jayk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBOSVhfSU5URl9UWVBFX0xCSzpcbiBcdFx0dmYgPSAocGNpZnVuYyBcdTAwMjYgUlZVX1BGVkZfRlVOQ19NQVNLKSAtIDE7XG5AQCAtMTUwOCw3ICsxNTE2LDEwIEBAIGludCBydnVfbWJveF9oYW5kbGVyX25peF9sZl9hbGxvYyhzdHJ1Y3QgcnZ1ICpydnUsXG4gXHRzdHJ1Y3QgcnZ1X2Jsb2NrICpibG9jaztcbiBcdHN0cnVjdCBydnVfcGZ2ZiAqcGZ2ZjtcbiBcdHU2NCBjZmcsIGN0eF9jZmc7XG4rXHRzdHJ1Y3QgY2d4ICpjZ3hkO1xuIFx0aW50IGJsa2FkZHI7XG4rXHR1OCBjZ3g7XG4rXHRpbnQgcGY7XG4gXG4gXHRpZiAoIXJlcS1cdTAwM2VycV9jbnQgfHwgIXJlcS1cdTAwM2VzcV9jbnQgfHwgIXJlcS1cdTAwM2VjcV9jbnQpXG4gXHRcdHJldHVybiBOSVhfQUZfRVJSX1BBUkFNO1xuQEAgLTE2ODAsOCArMTY5MSwxNyBAQCBpbnQgcnZ1X21ib3hfaGFuZGxlcl9uaXhfbGZfYWxsb2Moc3RydWN0IHJ2dSAqcnZ1LFxuIFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1JYX0NGRyhuaXhsZiksIHJlcS1cdTAwM2VyeF9jZmcpO1xuIFxuIFx0LyogQ29uZmlndXJlIHBraW5kIGZvciBUWCBwYXJzZSBjb25maWcgKi9cbi1cdGNmZyA9IE5QQ19UWF9ERUZfUEtJTkQ7XG4tXHRydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHKG5peGxmKSwgY2ZnKTtcbitcdGlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBydnVfZ2V0X3BmKHJ2dS1cdTAwM2VwZGV2LCBwY2lmdW5jKSkpIHtcbitcdFx0cGYgPSBydnVfZ2V0X3BmKHJ2dS1cdTAwM2VwZGV2LCBwY2lmdW5jKTtcbitcdFx0Y2d4ZCA9IHJ2dV9jZ3hfcGRhdGEoY2d4LCBydnUpO1xuK1xuK1x0XHRtdXRleF9sb2NrKFx1MDAyNmNneGQtXHUwMDNlbG9jayk7XG4rXHRcdGlmIChydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWQocnZ1LCBwY2lmdW5jKSkge1xuK1x0XHRcdGNmZyA9IE5QQ19UWF9ERUZfUEtJTkQ7XG4rXHRcdFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1RYX1BBUlNFX0NGRyhuaXhsZiksIGNmZyk7XG4rXHRcdH1cbitcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmNneGQtXHUwMDNlbG9jayk7XG4rXHR9XG4gXG4gXHRpZiAoaXNfcmVwX2RldihydnUsIHBjaWZ1bmMpKSB7XG4gXHRcdHBmdmYtXHUwMDNldHhfY2hhbl9iYXNlID0gUlZVX1NXSVRDSF9MQktfQ0hBTjtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA1OjA5OjU2LjY2Njg0MTY4NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4ODIyMjM5MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBPY3Rlb25UWDIgQUYgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIEFGIGRyaXZlci4gSXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYWRkaW5nIGEgY291cGxlIG9mIGZ1bmN0aW9ucywgYGNneF9nZXRfcGtpbmRgIGFuZCBgcnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkYC4gSXQgYWxzbyB0b3VjaGVzIGBuaXhfaW50ZXJmYWNlX2luaXRgIGFuZCBgcnZ1X21ib3hfaGFuZGxlcl9uaXhfbGZfYWxsb2NgLCB3aGljaCBhcmUga2V5IHBhcnRzIG9mIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgcmVzb3VyY2UgYWxsb2NhdGlvbi4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBpbnZvbHZlIGNoZWNraW5nIGlmIGBydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWRgIGJlZm9yZSBzZXR0aW5nIHRoZSBgcGtpbmRgIHZhbHVlLiBUaGF0IG1ha2VzIHNlbnNlLCBsaWtlbHkgYWRkaW5nIHNvbWUgc29ydCBvZiBjb25maWd1cmF0aW9uIGNvbnRyb2wgb3IgcmVzdHJpY3Rpb24gb24gdGhlIHBraW5kLCB3aGljaCwgaWYgdGhpcyBpcyBhbiBBRiBkcml2ZXIsIHJlbGF0ZXMgdG8gcmVzb3VyY2UgdHlwZXMuXG5cbk5vdywgdGhlIHF1ZXN0aW9uIGJlY29tZXMsIGlzIHRoaXMgZHJpdmVyIGFjdHVhbGx5IHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gY29uc2lkZXIgUUVNVSwgc2luY2UgdGhhdCdzIGEgY29tbW9uIHRlc3RpbmcgcGxhdGZvcm0uIFRoaXMgZHJpdmVyLCB0aGUgTWFydmVsbCBPY3Rlb25UWDIgQUYsIGlzIHR5cGljYWxseSB0aWVkIHRvIHNwZWNpZmljIGhhcmR3YXJlLCBzcGVjaWZpY2FsbHkgZGV2aWNlcyB3aXRoIGBQQ0lfVkVORE9SX0lEX0NBVklVTWAgYW5kIGBQQ0lfREVWSUNFX0lEX1JWVV9BRmAuIFRoZSBtaWxsaW9uIGRvbGxhciBxdWVzdGlvbjogZG9lcyBRRU1VIG9mZmVyIGFueSBlbXVsYXRpb24gZm9yIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmU/IEkgZG9uJ3QgcmVjYWxsIHNlZWluZyBhbnl0aGluZyBsaWtlIHRoYXQuIEkga25vdyB0aGVyZSBhcmUgZW11bGF0aW9ucywgYnV0IHRoZSBPY3Rlb25UWDIgUlZVIEFGIGlzIHByZXR0eSBzcGVjaWFsaXplZC4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gaWYgdGhhdCdzIHN1cHBvcnRlZC5cblxuRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIGlmIHRoaXMgaXMsIGluIGZhY3QsIGEgUENJIGRyaXZlci4gVGhlbiwgaWYgc28sIHRoZSByZWFjaGFiaWxpdHkgb2YgdGhlIGRyaXZlciBiZWNvbWVzIG11Y2ggbW9yZSBjcml0aWNhbCBmb3IgdGVzdGluZy4gSWYgaXQncyAqbm90KiBhIFBDSSBkcml2ZXIsIHRoZW4gdGhlIHF1ZXN0aW9ucyBvZiB2aXJ0dWFsaXphdGlvbiBiZWNvbWUgbGVzcyBjcml0aWNhbCwgYXMgb3RoZXIgcGF0aHMgbWF5IGJlIHJlbGV2YW50LiBUaGUgbmV4dCBzdGVwcyB3aWxsIGludm9sdmUgY29uZmlybWluZyB0aGUgUENJIHN0YXR1cyBvZiB0aGUgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDE4LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDU6MTA6MDIuNTQ5MDY4MDc3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MDgyOTA3MTcsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjaV9kcml2ZXIuKnJ2dV9hZlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDU6MTA6MDUuNDU3MzY4ODI0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzM5NDI1MjM2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gYSBzdWJqZWN0IG1hdHRlciBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipJbnZlc3RpZ2F0aW5nIFBDSSBJRCBNYXBwaW5ncyoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHdvcmsuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGl2ZSBzdHJhaWdodCBpbnRvIHRoZSBQQ0kgSUQgZGF0YWJhc2UuIEkgbmVlZCB0byB0cmFjayBkb3duIHRoZSBkZXZpY2UgaWRlbnRpZmllcnMgZm9yIGBydnVfYWZgIGFuZCBgb2N0ZW9udHgyYC4gVGhlc2UgYXJlIGxpa2VseSByZWxhdGVkIHRvIHNwZWNpZmljIG5ldHdvcmsgaW50ZXJmYWNlIGNhcmQgb3IgYWNjZWxlcmF0b3IgZnVuY3Rpb25zLCBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlaXIgUENJIGNvbmZpZ3VyYXRpb24uIEknbGwgbmVlZCB0byBrbm93IHRoZSB2ZW5kb3IgYW5kIGRldmljZSBJRHMgdG8gcHJvcGVybHkgaWRlbnRpZnkgdGhlbSB3aXRoaW4gdGhlIHN5c3RlbS4gVGhpcyBzZWFyY2ggd2lsbCBiZSBjcnVjaWFsIGZvciBhbnkgaW4tZGVwdGggYW5hbHlzaXMgb3IgdHJvdWJsZXNob290aW5nIEkgdW5kZXJ0YWtlIHJlbGF0ZWQgdG8gdGhlIGhhcmR3YXJlJ3MgaW50ZXJhY3Rpb24gd2l0aGluIHRoZSBQQ0kgYnVzLiBJJ20gdGhpbmtpbmcgSSdsbCBzdGFydCB3aXRoIGEgc3RyYWlnaHRmb3J3YXJkIHNlYXJjaCBmb3IgdGhlc2UgdGVybXMgd2l0aGluIHRoZSBzdGFuZGFyZCBQQ0kgSUQgcmVwb3NpdG9yaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDc2LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDU6MTA6MTIuODUxNjIyNzY1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MDE3NDI0NDAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBDSV9ERVZJQ0VfSURfQ0FWSVVNX1JWVV9BRlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDU6MTA6MTUuNTUzMzcyNjg1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAwNDYzNzI4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIE5ldHdvcmsgRHJpdmVyIExhbmRzY2FwZSoqXG5cblJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSdtIHRoaW5raW5nLCBiYXNlZCBvbiB0aGUgY29udGV4dCwgd2UncmUgbGlrZWx5IGRlYWxpbmcgd2l0aCBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgTWFydmVsbCBPY3Rlb250eDIgYXJjaGl0ZWN0dXJlIGFuZCBpdHMgbmV0d29yayBpbnRlcmZhY2UuIEdpdmVuIHRoYXQsIG15IGd1dCBmZWVsaW5nIHRlbGxzIG1lIHRoZSBjcml0aWNhbCBwaWVjZSBvZiBjb2RlIGlzIHByb2JhYmx5IG5lc3RsZWQgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvYCBkaXJlY3RvcnksIHNwZWNpZmljYWxseSB3aXRoaW4gc29tZXRoaW5nIGxpa2UgYHJ2dS5jYCBvciBhIHNpbWlsYXIgZmlsZSB0aGF0IGhhbmRsZXMgdGhlIHNwZWNpZmljIGFjY2VsZXJhdGVkIGZvcndhcmRpbmcgY29tcG9uZW50cy4gSSdtIGFudGljaXBhdGluZyB0aGF0J3Mgd2hlcmUgdGhlIHJlbGV2YW50IGxvZ2ljIGZvciB0aGUgcGFydGljdWxhciBuZXR3b3JraW5nIGlzc3VlIHdlJ3JlIGZhY2luZyB3aWxsIHJlc2lkZS4gSSdsbCBuZWVkIHRvIGRpZyBpbiB0aGVyZSBhbmQgc2VlIGhvdyB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSdzIGFjY2VsZXJhdGVkIGZlYXR1cmVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzA3LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDU6MTA6MTguNTU4MDE0MTcxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNTA1ODQyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYz0yMDYwPXN0YXRpYyB2b2lkIGNneF9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYy0yMDczLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jOjIwNzQ6c3RydWN0IHBjaV9kcml2ZXIgY2d4X2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYy0yMDc1LVxcdC5uYW1lID0gRFJWX05BTUUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaD0xMzI9c3RydWN0IGNneF9ldmVudF9jYiB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaC0xMzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4Lmg6MTM3OmV4dGVybiBzdHJ1Y3QgcGNpX2RyaXZlciBjZ3hfZHJpdmVyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oLTEzOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21jcy5jPTE1OTk9c3RhdGljIHZvaWQgbWNzX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21jcy5jLTE2MTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvbWNzLmM6MTYxMjpzdHJ1Y3QgcGNpX2RyaXZlciBtY3NfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21jcy5jLTE2MTMtXFx0Lm5hbWUgPSBEUlZfTkFNRSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21jcy5oPTE1NT1zdHJ1Y3QgbWNzX29wcyB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9tY3MuaC0xNjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvbWNzLmg6MTY1OmV4dGVybiBzdHJ1Y3QgcGNpX2RyaXZlciBtY3NfZHJpdmVyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21jcy5oLTE2Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jPTU4OT1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgcHRwX2lkX3RhYmxlW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy02MTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmM6NjEyOnN0cnVjdCBwY2lfZHJpdmVyIHB0cF9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNjEzLVxcdC5uYW1lID0gRFJWX05BTUUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuaD0yOT12b2lkIHB0cF9zdGFydChzdHJ1Y3QgcnZ1ICpydnUsIHU2NCBzY2xrLCB1MzIgZXh0X2Nsa19mcmVxLCB1MzIgZXh0dHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5oLTMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5oOjMxOmV4dGVybiBzdHJ1Y3QgcGNpX2RyaXZlciBwdHBfZHJpdmVyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5oLTMyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM9MzczMz1zdGF0aWMgdm9pZCBydnVfc2h1dGRvd24oc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0zNzQyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjM3NDM6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHJ2dV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMzc0NC1cXHQubmFtZSA9IERSVl9OQU1FLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwNToxMDoxOC42NzMwODI5NjlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDI5MjAwMDUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFzc2Vzc2luZyB0aGUgVmlhYmlsaXR5IG9mIFRlc3RpbmcgdGhpcyBPY3Rlb25UWDIgRHJpdmVyKipcblxuT2theSwgc28gdGhpcyBkcml2ZXIgaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciBNYXJ2ZWxsIE9jdGVvblRYMiBoYXJkd2FyZS4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBcIkNhbiBJIGV2ZW4gKnRvdWNoKiB0aGlzIGluIFFFTVU/XCIgVW5mb3J0dW5hdGVseSwgdGhhdCdzIGEgbm8tZ287IFFFTVUgZG9lc24ndCBvZmZlciBhbnkgZW11bGF0aW9uIGZvciB0aGUgT2N0ZW9uVFgyLiBDcmFwLCB0aGVuIEkgcmVtZW1iZXIgdGhhdCBzeXprYWxsZXIgYWxzbyBkb2Vzbid0IHNlZW0gdG8gaGF2ZSBhbnkgT2N0ZW9uVFgyIGhhcmR3YXJlIGF2YWlsYWJsZS5cblxuQnV0IGhvbGQgb24sIGJlZm9yZSBJIGNvbXBsZXRlbHkgZGlzbWlzcyB0aGlzLCBpcyB0aGVyZSAqYW55KiBpbmRpcmVjdCB3YXkgdG8gZ2V0IGF0IHRoaXMgZHJpdmVyPyBDb25zaWRlcmluZyBpdCdzIGEgUENJIGRyaXZlciwgaXQgc291bmRzIGxpa2UgdGhhdCdzIHVubGlrZWx5IGdpdmVuIHRoZSBoYXJkd2FyZSBzcGVjaWZpY3MuIFRoZSBPY3Rlb25UWDIgaXMgYSBwYXJ0aWN1bGFyIHR5cGUgb2YgaGFyZHdhcmUuIExldCBtZSBjaGVjayBpZiB0aGVyZSBpcyBhbnkgc29mdHdhcmUgZW11bGF0aW9uIGF2YWlsYWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjYwOSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA1OjEwOjIyLjcwMjI4NTk4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTk3NzEwNDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiT0NURU9OVFgyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzo2OmNvbmZpZyBPQ1RFT05UWDJfTUJPWFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctNy1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjk6Y29uZmlnIE9DVEVPTlRYMl9BRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMTAtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzoxMTpcXHRzZWxlY3QgT0NURU9OVFgyX01CT1hcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTEyLVxcdHNlbGVjdCBORVRfREVWTElOS1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZz0yMj1jb25maWcgTkRDX0RJU19EWU5BTUlDX0NBQ0hJTkdcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTIzLVxcdGJvb2wgXFxcIkRpc2FibGUgY2FjaGluZyBvZiBkeW5hbWljIGVudHJpZXMgaW4gTkRDXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6MjQ6XFx0ZGVwZW5kcyBvbiBPQ1RFT05UWDJfQUZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTI1LVxcdGRlZmF1bHQgblxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0zMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjMxOmNvbmZpZyBPQ1RFT05UWDJfUEZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTMyLVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgUGh5c2ljYWwgRnVuY3Rpb24gZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6MzM6XFx0c2VsZWN0IE9DVEVPTlRYMl9NQk9YXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0zNC1cXHRzZWxlY3QgTkVUX0RFVkxJTktcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctNDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzo0NTpjb25maWcgT0NURU9OVFgyX1ZGXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy00Ni1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBPY3Rlb25UWDIgTklDIFZpcnR1YWwgRnVuY3Rpb24gZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6NDc6XFx0ZGVwZW5kcyBvbiBPQ1RFT05UWDJfUEZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTQ4LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc9NTE9Y29uZmlnIFJWVV9FU1dJVENIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy01Mi1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBSVlUgRS1Td2l0Y2ggc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjUzOlxcdGRlcGVuZHMgb24gT0NURU9OVFgyX1BGXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy01NC1cXHRkZWZhdWx0IG1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL01ha2VmaWxlLTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfT0NURU9OVFgyX01CT1gpICs9IGFmL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9BRikgKz0gYWYvXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfT0NURU9OVFgyX1BGKSArPSBuaWMvXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9NYWtlZmlsZT02PWNjZmxhZ3MteSArPSAtSSQoc3JjKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9NQk9YKSArPSBydnVfbWJveC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfT0NURU9OVFgyX0FGKSArPSBydnVfYWYub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL01ha2VmaWxlLTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYz02Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgY2d4X2lkX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmM6Njc6XFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX0NHWCkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYy02OC1cXHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfQ04xMEtfUlBNLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmgtMTUtIC8qIFBDSSBkZXZpY2UgSURzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4Lmg6MTY6I2RlZmluZVxcdFBDSV9ERVZJRF9PQ1RFT05UWDJfQ0dYXFx0XFx0MHhBMDU5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmgtMTctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmM9MTU0PURFRklORV9TSE9XX0FUVFJJQlVURShucGNfbWNhbV9sYXlvdXQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0xNTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jOjE1NjojZGVmaW5lIF9fT0NURU9OVFgyX0RFQlVHRlNfQVRUUklCVVRFX0ZPUFMoX19uYW1lKVxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMTU3LXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIF9fbmFtZSAjIyBfZm9wcyA9IHtcXHRcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMTY0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYzoxNjU6I2RlZmluZSBERUZJTkVfT0NURU9OVFgyX0RFQlVHRlNfQVRUUklCVVRFX1dJVEhfU0laRShfX25hbWUsIF9fc2l6ZSlcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jLTE2Ni1zdGF0aWMgaW50IF9fbmFtZSAjIyBfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMTcwLX1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jOjE3MTpfX09DVEVPTlRYMl9ERUJVR0ZTX0FUVFJJQlVURV9GT1BTKF9fbmFtZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMTcyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jPTE4MT1zdGF0aWMgaW50IG5wY19tY2FtX2RzdGF0c19zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdW51c2VkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jLTI0Mi0jZGVmaW5lIFRPVEFMX1NaIChNQVhfTlVNX0JBTktTICogTUFYX05VTV9TVUJfQkFOS1MgKiBNQVhfU1VCQkFOS19ERVBUSCAqIDY0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYzoyNDM6REVGSU5FX09DVEVPTlRYMl9ERUJVR0ZTX0FUVFJJQlVURV9XSVRIX1NJWkUobnBjX21jYW1fZHN0YXRzLCBUT1RBTF9TWik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jLTI0NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmM9MjQ1PXN0YXRpYyBpbnQgbnBjX21jYW1fbWlzbWF0Y2hfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKnVudXNlZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0yODQtLyogXFxcIiV1XFxcXHQlZFxcXFx0JXVcXFxcblxcXCIgbmVlZHMgbGVzcyB0aGFuIDY0IGNoYXJhY3RlcnMgdG8gcHJpbnQuICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jOjI4NTpERUZJTkVfT0NURU9OVFgyX0RFQlVHRlNfQVRUUklCVVRFX1dJVEhfU0laRShucGNfbWNhbV9taXNtYXRjaCwgVE9UQUxfU1opO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0yODYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy0yMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzoyMTojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfUFRQXFx0XFx0XFx0MHhBMDBDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtMjItI2RlZmluZSBQQ0lfU1VCU1lTX0RFVklEX09DVFgyXzk4eHhfUFRQXFx0XFx0MHhCMTAwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy0yNy0jZGVmaW5lIFBDSV9TVUJTWVNfREVWSURfT0NUWDJfOTVYWE9fUFRQXFx0MHhCNjAwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmM6Mjg6I2RlZmluZSBQQ0lfREVWSURfT0NURU9OVFgyX1JTVFxcdFxcdFxcdDB4QTA4NVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTI5LSNkZWZpbmUgUENJX0RFVklEX0NOMTBLX1BUUFxcdFxcdFxcdDB4QTA5RVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmM9NTg5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBwdHBfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzo1OTA6XFx0eyBQQ0lfREVWSUNFX1NVQihQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9QVFAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNTkxLVxcdFxcdFxcdCBQQ0lfVkVORE9SX0lEX0NBVklVTSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy01OTItXFx0XFx0XFx0IFBDSV9TVUJTWVNfREVWSURfT0NUWDJfOTh4eF9QVFApIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmM6NTkzOlxcdHsgUENJX0RFVklDRV9TVUIoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9PQ1RFT05UWDJfUFRQLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTU5NC1cXHRcXHRcXHQgUENJX1ZFTkRPUl9JRF9DQVZJVU0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNTk1LVxcdFxcdFxcdCBQQ0lfU1VCU1lTX0RFVklEX09DVFgyXzk2WFhfUFRQKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jOjU5NjpcXHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1BUUCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy01OTctXFx0XFx0XFx0IFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTU5OC1cXHRcXHRcXHQgUENJX1NVQlNZU19ERVZJRF9PQ1RYMl85NVhYX1BUUCkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzo1OTk6XFx0eyBQQ0lfREVWSUNFX1NVQihQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9QVFAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNjAwLVxcdFxcdFxcdCBQQ0lfVkVORE9SX0lEX0NBVklVTSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy02MDEtXFx0XFx0XFx0IFBDSV9TVUJTWVNfREVWSURfT0NUWDJfOTVYWE5fUFRQKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jOjYwMjpcXHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1BUUCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy02MDMtXFx0XFx0XFx0IFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTYwNC1cXHRcXHRcXHQgUENJX1NVQlNZU19ERVZJRF9PQ1RYMl85NU1NX1BUUCkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzo2MDU6XFx0eyBQQ0lfREVWSUNFX1NVQihQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9QVFAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNjA2LVxcdFxcdFxcdCBQQ0lfVkVORE9SX0lEX0NBVklVTSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jPTQ0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBydnVfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYzo0NTpcXHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTQ2LVxcdHsgMCwgfSAgLyogZW5kIG9mIHRhYmxlICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYz05Mjc9c3RhdGljIHZvaWQgcnZ1X2dldF9sYmtfYnVmc2l6ZShzdHJ1Y3QgcnZ1ICpydnUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy05MzMtXFx0cGRldiA9IHBjaV9nZXRfZGV2aWNlKFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjkzNDpcXHRcXHRcXHQgICAgICBQQ0lfREVWSURfT0NURU9OVFgyX0xCSywgcGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtOTM1LVxcdGlmICghcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jPTM0NDI9aW50IHJ2dV9nZXRfbnVtX2xia19jaGFucyh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMzQ0Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYzozNDQ4OlxcdHBkZXYgPSBwY2lfZ2V0X2RldmljZShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9MQkssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMzQ0OS1cXHRcXHRcXHQgICAgICBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oLTIzLS8qIFBDSSBkZXZpY2UgSURzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1Lmg6MjQ6I2RlZmluZVxcdFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGXFx0XFx0MHhBMDY1XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1Lmg6MjU6I2RlZmluZVxcdFBDSV9ERVZJRF9PQ1RFT05UWDJfTEJLXFx0XFx0XFx0MHhBMDYxXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgtMjYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY24xMGsuYz0zOTI9c3RhdGljIHZvaWQgcnZ1X2xia19zZXRfY2hhbm5lbHMoc3RydWN0IHJ2dSAqcnZ1KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NuMTBrLmMtNDE1LVxcdFxcdHBkZXYgPSBwY2lfZ2V0X2RldmljZShQQ0lfVkVORE9SX0lEX0NBVklVTSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY24xMGsuYzo0MTY6XFx0XFx0XFx0XFx0ICAgICAgUENJX0RFVklEX09DVEVPTlRYMl9MQkssIHBkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jbjEway5jLTQxNy1cXHRcXHRpZiAoIXBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jPTI4MzM9c3RhdGljIGludCBjZ3hfcHJpbnRfc3RhdHMoc3RydWN0IHNlcV9maWxlICpzLCBpbnQgbG1hY19pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtMjg0My1cXHRydnUgPSBwY2lfZ2V0X2RydmRhdGEocGNpX2dldF9kZXZpY2UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYzoyODQ0OlxcdFxcdFxcdFxcdFxcdCAgICAgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYsIE5VTEwpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jLTI4NDUtXFx0aWYgKCFydnUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jPTI5NTE9c3RhdGljIGludCBjZ3hfcHJpbnRfZG1hY19mbHQoc3RydWN0IHNlcV9maWxlICpzLCBpbnQgbG1hY19pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtMjk2Mi1cXHRydnUgPSBwY2lfZ2V0X2RydmRhdGEocGNpX2dldF9kZXZpY2UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYzoyOTYzOlxcdFxcdFxcdFxcdFxcdCAgICAgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYsIE5VTEwpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jLTI5NjQtXFx0aWYgKCFydnUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jPTMwMTE9c3RhdGljIGludCBjZ3hfcHJpbnRfZndkYXRhKHN0cnVjdCBzZXFfZmlsZSAqcywgaW50IGxtYWNfaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jLTMwMTktXFx0cnZ1ID0gcGNpX2dldF9kcnZkYXRhKHBjaV9nZXRfZGV2aWNlKFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmM6MzAyMDpcXHRcXHRcXHRcXHRcXHQgICAgIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGLCBOVUxMKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYy0zMDIxLVxcdGlmICghcnZ1KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL01ha2VmaWxlLTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9QRikgKz0gcnZ1X25pY3BmLm8gb3R4Ml9wdHAub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19PQ1RFT05UWDJfVkYpICs9IHJ2dV9uaWN2Zi5vIG90eDJfcHRwLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvTWFrZWZpbGUtOC1vYmotJChDT05GSUdfUlZVX0VTV0lUQ0gpICs9IHJ2dV9yZXAub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNDItLyogUENJIGRldmljZSBJRHMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo0MzojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX1BGICAgICAgICAgICAgICAweEEwNjNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo0NDojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX1ZGXFx0XFx0MHhBMDY0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg6NDU6I2RlZmluZSBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRlZGXFx0XFx0MHhBMEY4XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNDYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaC01MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo1MTojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfU0RQX1JFUFxcdFxcdDB4QTBGN1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTUyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg9NTk3PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19vdHgyX2xia3ZmKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTU5OC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg6NTk5OlxcdHJldHVybiAocGRldi1cXHUwMDNlZGV2aWNlID09IFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGVkYpIHx8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNjAwLVxcdFxcdChwZGV2LVxcdTAwM2VkZXZpY2UgPT0gUENJX0RFVklEX1JWVV9SRVApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg9NjE1PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19vdHgyX3NkcF9yZXAoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNjE2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo2MTc6XFx0cmV0dXJuIHBkZXYtXFx1MDAzZWRldmljZSA9PSBQQ0lfREVWSURfT0NURU9OVFgyX1NEUF9SRVA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNjE4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmM9MzY9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG90eDJfcGZfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jOjM3OlxcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfUEYpIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYy0zOC1cXHR7IDAsIH0gIC8qIGVuZCBvZiB0YWJsZSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYz0yMj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgb3R4Ml92Zl9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmM6MjM6XFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRlZGKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmM6MjQ6XFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9WRikgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jOjI1OlxcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9TRFBfUkVQKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmMtMjYtXFx0eyB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA1OjEwOjIyLjgyMjA2NDgxOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDMyMTA3OTQ5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgQXNzZXNzbWVudCBmb3IgTWFydmVsbCBPY3Rlb25UWDIgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBoYXJkd2FyZSBkcml2ZXIgZm9yIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiBzeXprYWxsZXIgZXZlbiB0b3VjaCB0aGlzPyBJIGtub3cgaXQgaGFzIHdheXMgdG8gdGVzdCBQQ0kgZHJpdmVycywgbGlrZSBgc3l6X3BjaV9kZXZpY2VfYWRkYCBhbmQgYHN5el9wY2lfZGV2aWNlX2FkZF92MmAsIGJ1dCB0aGF0J3MgdXN1YWxseSBmb3Igc2ltcGxlciBkcml2ZXJzLiBDYW4gc3l6a2FsbGVyIHByb3Blcmx5IGZ1enogdGhpcz8gSSBuZWVkIHRvIGNvbnNpZGVyIGlmIGl0J3Mgd29ydGggdGhlIGVmZm9ydCBnaXZlbiB0aGUgZHJpdmVyJ3MgY29tcGxleGl0eS5cblxuVGhpcyBwYXRjaCBtb2RpZmllcyBhIGZldyBmdW5jdGlvbnMgKGBjZ3hfZ2V0X3BraW5kYCwgYHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZGAsIGBuaXhfaW50ZXJmYWNlX2luaXRgLCBhbmQgYHJ2dV9tYm94X2hhbmRsZXJfbml4X2xmX2FsbG9jYCkuIEl0IGxvb2tzIGxpa2UgYSBuZXcgY2hlY2ssIGBydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWRgLCBpcyBiZWluZyBpbnRyb2R1Y2VkIGJlZm9yZSBjYWxscyB0byBgY2d4X3NldF9wa2luZGAgYW5kIGBydnVfbnBjX3NldF9wa2luZGAuICBBbmQgYHJ2dV9tYm94X2hhbmRsZXJfbml4X2xmX2FsbG9jYCBpcyBhIG1haWxib3ggaGFuZGxlciwgdGhvc2UgYXJlIG9mdGVuIHRhcmdldHMgZm9yIHN5emthbGxlci5cblxuQnV0LCB0aGUgcHJvbXB0IHNheXMgdG8gcmV0dXJuIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIgaWYgdGhlIHBhdGNoIGludm9sdmVzIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gIENhbiB0aGlzIE1hcnZlbGwgT2N0ZW9uVFgyIGRyaXZlciBiZSBlbXVsYXRlZCBpbiBRRU1VPyBJIGRvbid0IHRoaW5rIHNvLiBUaGVyZSdzIG5vIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGZvciBpdC4gIFRoZSBzeXprYWxsZXIgUENJIGZ1enppbmcgbWlnaHQgYmUgYWJsZSB0byAqdG91Y2gqIGl0LCBidXQgaXQncyB2ZXJ5IGxpbWl0ZWQgd2hlbiBkZWFsaW5nIHdpdGggY29tcGxleCBOSUMgZHJpdmVycyBsaWtlIHRoaXMgb25lLCBiZWNhdXNlIG9mIHRob3NlIERNQSByaW5ncyBhbmQgY29tcGxpY2F0ZWQgTU1JTyBzZXF1ZW5jZXMuIFN5emthbGxlcidzIGBzeXpfcGNpX2RldmljZV9hZGRgIGlzbid0IGNvbnNpZGVyZWQgXCJzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZVwiIGluIHRoZSBzZW5zZSBvZiB0aGUgcHJvbXB0LlxuXG5MZXQgbWUgZG91YmxlLWNoZWNrIGFib3V0IHRoZSBPY3Rlb25UWDIuIFwiT0NURU9OVFgyX0FGXCIgc2VlbXMgdG8gYmUgcmVsYXRlZC4gIFllcCwgaXQncyBhIFBDSSBkcml2ZXIuIEl0J3MgZm9yIGBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRmAuIFN0aWxsIG5vIFFFTVUgZW11bGF0aW9uLlxuXG5Tbywgc2luY2UgaXQncyBhICpwdXJlKiBoYXJkd2FyZSBkcml2ZXIsIHdpdGggbm8gYXZhaWxhYmxlIFFFTVUgZW11bGF0aW9uLCB0aGUgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gIFN5emthbGxlciBtaWdodCBwb2tlIGF0IGl0LCBidXQgdGhhdCdzIG5vdCB0aGUgc2FtZSB0aGluZy4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUgaXMgYSBgc3l6X2AgcHNldWRvLXN5c2NhbGwgZm9yIHRoaXMuIEdpdmVuIHRoZSBwcmVtaXNlIG9mIHRoZSBwcm9tcHQsIHRoZSBhbnN3ZXIgaXMgXCJXb3J0aEZ1enppbmc9ZmFsc2VcIi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMxMjcsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDU6MTA6MzMuMTQzMTQ3NjM2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODg3ODE2NjE3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzeXpfLipvY3Rlb25cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA1OjEwOjM2LjAzMDk3NDczM1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTUzMzcxNTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4gdGhpcyBmaWVsZCwgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6XG5cbioqQ2hlY2tpbmcgZm9yIFNwZWNpYWxpemVkIFN5c2NhbGxzKipcblxuQWxyaWdodCwgSSdtIHRoaW5raW5nLCBsZXQncyBxdWlja2x5IHNlZSBpZiB0aGVyZSBhcmUgYW55IGV4aXN0aW5nIGBzeXpfYCBwc2V1ZG8tc3lzY2FsbHMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciBoYW5kbGluZyB0aGUgYHJ2dWAgb3IgYGNneGAgc3Vic3lzdGVtcy4gVGhlc2UgYXJlIGNvbXBsZXgsIGFuZCBJJ20gcHJldHR5IHN1cmUgSSd2ZSBzZWVuIHNvbWUgY3VzdG9tIHN5c3RlbSBjYWxsIGltcGxlbWVudGF0aW9ucyBpbiB0aGUgcGFzdCB0aGF0IHRhcmdldCB0aGVzZSBhcmVhcy4gTXkgZm9jdXMgaXMgb24gZWZmaWNpZW5jeSBhbmQgd2hldGhlciBJIGNhbiBsZXZlcmFnZSBzb21ldGhpbmcgYWxyZWFkeSBidWlsdCwgYXMgSSBrbm93IG15IGZpZWxkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDQ2OCwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA1OjEwOjM4Ljk4NDM1MDU5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTkzNzI3MDA2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzeXpfLipydnVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA1OjEwOjQxLjk3ODA4NzI5NloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTQ5OTcxOTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgZnJhbWVkIGFzIG15IGludGVybmFsIHRob3VnaHQgcHJvY2VzczpcblxuKipJbnZlc3RpZ2F0aW5nIFBvdGVudGlhbCBgc3l6X2AgU3lzdGVtIENhbGxzIGluIGBuaXhgKipcblxuQWxyaWdodCwgdGltZSB0byBkaWcgaW4uIE15IHByaW1hcnkgb2JqZWN0aXZlIGF0IHRoaXMgbW9tZW50IGlzIHRvIGRldGVybWluZSB3aGV0aGVyIGFueSBgc3l6X2AgcHNldWRvLXN5c3RlbSBjYWxscyBleGlzdCB3aXRoaW4gdGhlIGBuaXhgIG9wZXJhdGluZyBzeXN0ZW0gZW52aXJvbm1lbnQuIEknbSBvcGVyYXRpbmcgb24gdGhlIGFzc3VtcHRpb24gdGhhdCBhIGBzeXpfYCBwcmVmaXggdXN1YWxseSBpbmRpY2F0ZXMgc29tZSBraW5kIG9mIGluc3RydW1lbnRhdGlvbiBvciBmdXp6aW5nLXJlbGF0ZWQgZnVuY3Rpb25hbGl0eSwgbGlrZWx5IHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0b29scyBsaWtlIHN5emthbGxlci4gVGhlcmVmb3JlLCBpZGVudGlmeWluZyB0aGVzZSBjYWxscyB3b3VsZCBiZSBhIGNydWNpYWwgZmlyc3Qgc3RlcCBpbiBhbnkgYXR0ZW1wdCBhdCByZXZlcnNlLWVuZ2luZWVyaW5nIG9yIGZ1enppbmcgYG5peGAgaXRzZWxmLiBUaGlzIG1lYW5zIEknbGwgbmVlZCB0byBrbm93IHdoaWNoIHN5c2NhbGxzIGFyZSBpbiBwbGFjZSwgc28gSSBjYW4gc2VlIGlmIGFueSBhcmUgcHJlZml4ZWQgd2l0aCB0aGUgY29ycmVjdCBjaGFyYWN0ZXJzLiBNeSBhcHByb2FjaCB3aWxsIGJlIG1ldGhvZGljYWwgYW5kIHRhcmdldGVkLCBzdGFydGluZyB3aXRoIHRoZSBzaW1wbGVzdCBjaGVja3MgYW5kIHRoZW4gd29ya2luZyBpbnRvIG1vcmUgY29tcGxleCBvcHRpb25zIGlmIG5lY2Vzc2FyeS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ2NTgsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwNToxMDo0NS4xMjgwNjIzODlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4ODgwNTk1NzgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN5el8uKm5peFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDU6MTA6NDguMDE2MTMyMzM3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3NDUwMDA1MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIERlY2lzaW9uIGZvciB0aGUgT2N0ZW9uVFgyIEFGIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSBzaXR1YXRpb24gaXMgY2xlYXIuIFRoaXMgcGF0Y2ggdG91Y2hlcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlciwgYW5kIGFzIHdlIGFsbCBrbm93LCB0aGVyZSdzIG5vIHN5emthbGxlciBzdXBwb3J0IHNwZWNpZmljYWxseSBidWlsdCBmb3IgdGhpcyBoYXJkd2FyZS4gVGhlIGNvcmUgcHJvYmxlbSwgaG93ZXZlciwgaXMgdGhhdCB0aGlzIGlzIGEgKmhhcmR3YXJlLXNwZWNpZmljKiBkcml2ZXIgZm9yIHRoZSBPY3Rlb25UWDIuIFRoZXJlJ3Mgbm8gZW11bGF0aW9uIGF2YWlsYWJsZSwgbm90IGV2ZW4gYSBiYXNpYyBvbmUgaW4gUUVNVSwgR0NFLCBvciBvdGhlciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoaXMgbWVhbnMgdGhlIGNvZGUgcGF0aHMgYXJlIHV0dGVybHkgdW5yZWFjaGFibGUgdW5kZXIgYW55IGN1cnJlbnQgdmlydHVhbCBzZXR1cC5cblxuTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoZSBwcm9tcHQgY3JpdGVyaWEsIHNpbmNlIHdlIG5lZWQgdG8gYmUgcHJlY2lzZS4gWWVzLCBpdCBwZXJmZWN0bHkgZml0czogXCJSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS5cIiBCaW5nby4gV2UncmUgZ29sZGVuLiBUaGlzIHBhdGNoIGlzIGlzb2xhdGVkIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2AgZGlyZWN0b3J5LCBzbyBpdCBpcyB0aGUgT2N0ZW9uVFgyIEFGIGRyaXZlci5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSdsbCBzb2xpZGlmeSB0aGUgcmVhc29uaW5nOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvKS4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIgZm9yIHdoaWNoIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBpbiBRRU1VIG9yIG90aGVyIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCBkdXJpbmcgZnV6emluZyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCJcblxuTGV0IG1lIGNvbmZpcm0gdGhlIGZpbGUgbW9kaWZpY2F0aW9ucyBvbmUgbGFzdCB0aW1lIHRvIHJlbW92ZSBhbnkgZG91YnQ6XG4tIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guY2Bcbi0gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oYFxuLSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmhgXG4tIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmNgXG4tIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmNgXG5cbll1cCwgYWxsIHdpdGhpbiB0aGF0IGRyaXZlci5cblxuQWxyaWdodCwgSSdtIGNvbmZpZGVudC4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2Agd2l0aCBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ5MDQsIk91dHB1dFRva2VucyI6OTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDU6MTA6NTUuNzYxMTM2NDMzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIyMTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyIGZvciB3aGljaCB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gaW4gUUVNVSBvciBvdGhlciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgZHVyaW5nIGZ1enppbmcgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyIGZvciB3aGljaCB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gaW4gUUVNVSBvciBvdGhlciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgZHVyaW5nIGZ1enppbmcgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowqbsz7[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-25 04:56:23 +0000 UTC FinishedAt: 2026-06-25 05:10:57 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA1OjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlciBmb3Igd2hpY2ggdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGluIFFFTVUgb3Igb3RoZXIgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCB0ZXN0IGR1cmluZyBmdXp6aW5nIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDU6MDk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1OTlhODA5NmIzNjZiYjYzNGIzNDVkYjc4ZDUwN2ZlYzgwYmUwM2VkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdW4gMjUgMDU6MDk6NTQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guY1xuaW5kZXggMmU5NGQ1MTA1MDE2YmYuLmY1ZmQ2MTM4YzM1MmZkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jXG5AQCAtNTE4LDYgJiM0Mzs1MTgsMTggQEAgaW50IGNneF9zZXRfcGtpbmQodm9pZCAqY2d4ZCwgdTggbG1hY19pZCwgaW50IHBraW5kKVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MztpbnQgY2d4X2dldF9wa2luZCh2b2lkICpjZ3hkLCB1OCBsbWFjX2lkLCBpbnQgKnBraW5kKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGNneCAqY2d4ID0gY2d4ZDtcbiYjNDM7XG4mIzQzO1x0aWYgKCFpc19sbWFjX3ZhbGlkKGNneCwgbG1hY19pZCkpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT0RFVjtcbiYjNDM7XG4mIzQzO1x0KnBraW5kID0gY2d4X3JlYWQoY2d4LCBsbWFjX2lkLCBjZ3gtXHUwMDNlbWFjX29wcy1cdTAwM2VyeGlkX21hcF9vZmZzZXQpO1xuJiM0MztcdCpwa2luZCA9ICpwa2luZCBcdTAwMjYgMHgzRjtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdTggY2d4X2dldF9sbWFjX3R5cGUodm9pZCAqY2d4ZCwgaW50IGxtYWNfaWQpXG4ge1xuIFx0c3RydWN0IGNneCAqY2d4ID0gY2d4ZDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oXG5pbmRleCA5MmNjZjM0M2RmZTA0Zi4uODQxMWE3NWRkNzIzZjkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmhcbkBAIC0xNDEsNiAmIzQzOzE0MSw3IEBAIGludCBjZ3hfZ2V0X2NneGlkKHZvaWQgKmNneGQpO1xuIGludCBjZ3hfZ2V0X2xtYWNfY250KHZvaWQgKmNneGQpO1xuIHZvaWQgKmNneF9nZXRfcGRhdGEoaW50IGNneF9pZCk7XG4gaW50IGNneF9zZXRfcGtpbmQodm9pZCAqY2d4ZCwgdTggbG1hY19pZCwgaW50IHBraW5kKTtcbiYjNDM7aW50IGNneF9nZXRfcGtpbmQodm9pZCAqY2d4ZCwgdTggbG1hY19pZCwgaW50ICpwa2luZCk7XG4gaW50IGNneF9sbWFjX2V2aF9yZWdpc3RlcihzdHJ1Y3QgY2d4X2V2ZW50X2NiICpjYiwgdm9pZCAqY2d4ZCwgaW50IGxtYWNfaWQpO1xuIGludCBjZ3hfbG1hY19ldmhfdW5yZWdpc3Rlcih2b2lkICpjZ3hkLCBpbnQgbG1hY19pZCk7XG4gaW50IGNneF9nZXRfdHhfc3RhdHModm9pZCAqY2d4ZCwgaW50IGxtYWNfaWQsIGludCBpZHgsIHU2NCAqdHhfc3RhdCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaFxuaW5kZXggN2YzNTA1YWU2ODYwNDIuLmJiNjcxZTIxNTBhYTY2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oXG5AQCAtMTExNSw2ICYjNDM7MTExNSw3IEBAIHZvaWQgbnBjX3JlYWRfbWNhbV9lbnRyeShzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBucGNfbWNhbSAqbWNhbSxcbiBcdFx0XHQgdTggKmludGYsIHU4ICplbmEpO1xuIGludCBucGNfY29uZmlnX2NudHJfZGVmYXVsdF9lbnRyaWVzKHN0cnVjdCBydnUgKnJ2dSwgYm9vbCBlbmFibGUpO1xuIGJvb2wgaXNfY2d4X2NvbmZpZ19wZXJtaXR0ZWQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYyk7XG4mIzQzO2Jvb2wgcnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpO1xuIGJvb2wgaXNfbWFjX2ZlYXR1cmVfc3VwcG9ydGVkKHN0cnVjdCBydnUgKnJ2dSwgaW50IHBmLCBpbnQgZmVhdHVyZSk7XG4gdTMyICBydnVfY2d4X2dldF9maWZvbGVuKHN0cnVjdCBydnUgKnJ2dSk7XG4gdm9pZCAqcnZ1X2ZpcnN0X2NneF9wZGF0YShzdHJ1Y3QgcnZ1ICpydnUpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guY1xuaW5kZXggNGZmMzkzNWVkM2ZlODQuLjJiZTFkYTM0NzZhYzg0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmNcbkBAIC0xMzU1LDMgJiM0MzsxMzU1LDM1IEBAIHZvaWQgcnZ1X21hY19yZXNldChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKVxuIFx0aWYgKG1hY19vcHMtXHUwMDNlbWFjX3Jlc2V0KGNneGQsIGxtYWMsICFpc192ZihwY2lmdW5jKSkpXG4gXHRcdGRldl9lcnIocnZ1LVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIHJlc2V0IE1BQ1xcblwmIzM0Oyk7XG4gfVxuJiM0MztcbiYjNDM7LyogRG8gbm90IGFsbG93IENHWC1tYXBwZWQgVkZzIHRvIG92ZXJ3cml0ZSBQS0lORCB3aGVuIHNwZWNpYWwgcGFyc2Uga2luZHNcbiYjNDM7ICogKEhpR2lnLCBFRFNBLCBldGMuKSBhcmUgaW4gdXNlIG9uIHRoZSBzaGFyZWQgTE1BQy5cbiYjNDM7ICovXG4mIzQzO2Jvb2wgcnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpXG4mIzQzO3tcbiYjNDM7XHRpbnQgcGYsIGVyciwgcnhwa2luZDtcbiYjNDM7XHR1OCBjZ3hfaWQsIGxtYWNfaWQ7XG4mIzQzO1x0dm9pZCAqY2d4ZDtcbiYjNDM7XG4mIzQzO1x0cGYgPSBydnVfZ2V0X3BmKHJ2dS1cdTAwM2VwZGV2LCBwY2lmdW5jKTtcbiYjNDM7XG4mIzQzO1x0aWYgKCEocGNpZnVuYyBcdTAwMjYgUlZVX1BGVkZfRlVOQ19NQVNLKSlcbiYjNDM7XHRcdHJldHVybiB0cnVlO1xuJiM0MztcbiYjNDM7XHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcbiYjNDM7XHRcdHJldHVybiB0cnVlO1xuJiM0MztcbiYjNDM7XHRydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS1cdTAwM2VwZjJjZ3hsbWFjX21hcFtwZl0sIFx1MDAyNmNneF9pZCwgXHUwMDI2bG1hY19pZCk7XG4mIzQzO1x0Y2d4ZCA9IHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpO1xuJiM0MztcdGVyciA9IGNneF9nZXRfcGtpbmQoY2d4ZCwgbG1hY19pZCwgXHUwMDI2cnhwa2luZCk7XG4mIzQzO1x0aWYgKGVycilcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0c3dpdGNoIChyeHBraW5kKSB7XG4mIzQzO1x0Y2FzZSBOUENfUlhfSElHSUdfUEtJTkQ6XG4mIzQzO1x0Y2FzZSBOUENfUlhfRURTQV9QS0lORDpcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0cmV0dXJuIHRydWU7XG4mIzQzO1x0fVxuJiM0Mzt9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jXG5pbmRleCBkODk4OTM5NWU4NzVkYS4uNDBmNWIyNWVhZmIxMWQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguY1xuQEAgLTMzOCw2ICYjNDM7MzM4LDcgQEAgc3RhdGljIGludCBuaXhfaW50ZXJmYWNlX2luaXQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgaW50IHR5cGUsIGludCBuaXhsZixcbiBcdHN0cnVjdCBzZHBfbm9kZV9pbmZvICpzZHBfaW5mbztcbiBcdGludCBwa2luZCwgcGYsIHZmLCBsYmtpZCwgdmZpZDtcbiBcdHU4IGNneF9pZCwgbG1hY19pZDtcbiYjNDM7XHRzdHJ1Y3QgY2d4ICpjZ3hkO1xuIFx0Ym9vbCBmcm9tX3ZmO1xuIFx0aW50IGVycjtcbiBcbkBAIC0zNjMsOCAmIzQzOzM2NCwxNSBAQCBzdGF0aWMgaW50IG5peF9pbnRlcmZhY2VfaW5pdChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgdHlwZSwgaW50IG5peGxmLFxuIFx0XHRwZnZmLVx1MDAzZXR4X2NoYW5fY250ID0gMTtcbiBcdFx0cnNwLVx1MDAzZXR4X2xpbmsgPSBjZ3hfaWQgKiBody1cdTAwM2VsbWFjX3Blcl9jZ3ggJiM0MzsgbG1hY19pZDtcbiBcbi1cdFx0Y2d4X3NldF9wa2luZChydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KSwgbG1hY19pZCwgcGtpbmQpO1xuLVx0XHRydnVfbnBjX3NldF9wa2luZChydnUsIHBraW5kLCBwZnZmKTtcbiYjNDM7XHRcdGNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTtcbiYjNDM7XG4mIzQzO1x0XHRtdXRleF9sb2NrKFx1MDAyNmNneGQtXHUwMDNlbG9jayk7XG4mIzQzO1x0XHRpZiAocnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkKHJ2dSwgcGNpZnVuYykpIHtcbiYjNDM7XHRcdFx0Y2d4X3NldF9wa2luZChydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KSwgbG1hY19pZCxcbiYjNDM7XHRcdFx0XHQgICAgICBwa2luZCk7XG4mIzQzO1x0XHRcdHJ2dV9ucGNfc2V0X3BraW5kKHJ2dSwgcGtpbmQsIHBmdmYpO1xuJiM0MztcdFx0fVxuJiM0MztcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmNneGQtXHUwMDNlbG9jayk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBOSVhfSU5URl9UWVBFX0xCSzpcbiBcdFx0dmYgPSAocGNpZnVuYyBcdTAwMjYgUlZVX1BGVkZfRlVOQ19NQVNLKSAtIDE7XG5AQCAtMTUwOCw3ICYjNDM7MTUxNiwxMCBAQCBpbnQgcnZ1X21ib3hfaGFuZGxlcl9uaXhfbGZfYWxsb2Moc3RydWN0IHJ2dSAqcnZ1LFxuIFx0c3RydWN0IHJ2dV9ibG9jayAqYmxvY2s7XG4gXHRzdHJ1Y3QgcnZ1X3BmdmYgKnBmdmY7XG4gXHR1NjQgY2ZnLCBjdHhfY2ZnO1xuJiM0MztcdHN0cnVjdCBjZ3ggKmNneGQ7XG4gXHRpbnQgYmxrYWRkcjtcbiYjNDM7XHR1OCBjZ3g7XG4mIzQzO1x0aW50IHBmO1xuIFxuIFx0aWYgKCFyZXEtXHUwMDNlcnFfY250IHx8ICFyZXEtXHUwMDNlc3FfY250IHx8ICFyZXEtXHUwMDNlY3FfY250KVxuIFx0XHRyZXR1cm4gTklYX0FGX0VSUl9QQVJBTTtcbkBAIC0xNjgwLDggJiM0MzsxNjkxLDE3IEBAIGludCBydnVfbWJveF9oYW5kbGVyX25peF9sZl9hbGxvYyhzdHJ1Y3QgcnZ1ICpydnUsXG4gXHRydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfUlhfQ0ZHKG5peGxmKSwgcmVxLVx1MDAzZXJ4X2NmZyk7XG4gXG4gXHQvKiBDb25maWd1cmUgcGtpbmQgZm9yIFRYIHBhcnNlIGNvbmZpZyAqL1xuLVx0Y2ZnID0gTlBDX1RYX0RFRl9QS0lORDtcbi1cdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcobml4bGYpLCBjZmcpO1xuJiM0MztcdGlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBydnVfZ2V0X3BmKHJ2dS1cdTAwM2VwZGV2LCBwY2lmdW5jKSkpIHtcbiYjNDM7XHRcdHBmID0gcnZ1X2dldF9wZihydnUtXHUwMDNlcGRldiwgcGNpZnVuYyk7XG4mIzQzO1x0XHRjZ3hkID0gcnZ1X2NneF9wZGF0YShjZ3gsIHJ2dSk7XG4mIzQzO1xuJiM0MztcdFx0bXV0ZXhfbG9jayhcdTAwMjZjZ3hkLVx1MDAzZWxvY2spO1xuJiM0MztcdFx0aWYgKHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZChydnUsIHBjaWZ1bmMpKSB7XG4mIzQzO1x0XHRcdGNmZyA9IE5QQ19UWF9ERUZfUEtJTkQ7XG4mIzQzO1x0XHRcdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcobml4bGYpLCBjZmcpO1xuJiM0MztcdFx0fVxuJiM0MztcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmNneGQtXHUwMDNlbG9jayk7XG4mIzQzO1x0fVxuIFxuIFx0aWYgKGlzX3JlcF9kZXYocnZ1LCBwY2lmdW5jKSkge1xuIFx0XHRwZnZmLVx1MDAzZXR4X2NoYW5fYmFzZSA9IFJWVV9TV0lUQ0hfTEJLX0NIQU47XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDU6MDk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyIGZvciB3aGljaCB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gaW4gUUVNVSBvciBvdGhlciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgZHVyaW5nIGZ1enppbmcgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTk5YTgwOTZiMzY2YmI2MzRiMzQ1ZGI3OGQ1MDdmZWM4MGJlMDNlZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVuIDI1IDA1OjA5OjU0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYwppbmRleCAyZTk0ZDUxMDUwMTZiZi4uZjVmZDYxMzhjMzUyZmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jCkBAIC01MTgsNiAmIzQzOzUxOCwxOCBAQCBpbnQgY2d4X3NldF9wa2luZCh2b2lkICpjZ3hkLCB1OCBsbWFjX2lkLCBpbnQgcGtpbmQpCiAJcmV0dXJuIDA7CiB9CiAKJiM0MztpbnQgY2d4X2dldF9wa2luZCh2b2lkICpjZ3hkLCB1OCBsbWFjX2lkLCBpbnQgKnBraW5kKQomIzQzO3sKJiM0MzsJc3RydWN0IGNneCAqY2d4ID0gY2d4ZDsKJiM0MzsKJiM0MzsJaWYgKCFpc19sbWFjX3ZhbGlkKGNneCwgbG1hY19pZCkpCiYjNDM7CQlyZXR1cm4gLUVOT0RFVjsKJiM0MzsKJiM0MzsJKnBraW5kID0gY2d4X3JlYWQoY2d4LCBsbWFjX2lkLCBjZ3gtJmd0O21hY19vcHMtJmd0O3J4aWRfbWFwX29mZnNldCk7CiYjNDM7CSpwa2luZCA9ICpwa2luZCAmYW1wOyAweDNGOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdTggY2d4X2dldF9sbWFjX3R5cGUodm9pZCAqY2d4ZCwgaW50IGxtYWNfaWQpCiB7CiAJc3RydWN0IGNneCAqY2d4ID0gY2d4ZDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmgKaW5kZXggOTJjY2YzNDNkZmUwNGYuLjg0MTFhNzVkZDcyM2Y5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaApAQCAtMTQxLDYgJiM0MzsxNDEsNyBAQCBpbnQgY2d4X2dldF9jZ3hpZCh2b2lkICpjZ3hkKTsKIGludCBjZ3hfZ2V0X2xtYWNfY250KHZvaWQgKmNneGQpOwogdm9pZCAqY2d4X2dldF9wZGF0YShpbnQgY2d4X2lkKTsKIGludCBjZ3hfc2V0X3BraW5kKHZvaWQgKmNneGQsIHU4IGxtYWNfaWQsIGludCBwa2luZCk7CiYjNDM7aW50IGNneF9nZXRfcGtpbmQodm9pZCAqY2d4ZCwgdTggbG1hY19pZCwgaW50ICpwa2luZCk7CiBpbnQgY2d4X2xtYWNfZXZoX3JlZ2lzdGVyKHN0cnVjdCBjZ3hfZXZlbnRfY2IgKmNiLCB2b2lkICpjZ3hkLCBpbnQgbG1hY19pZCk7CiBpbnQgY2d4X2xtYWNfZXZoX3VucmVnaXN0ZXIodm9pZCAqY2d4ZCwgaW50IGxtYWNfaWQpOwogaW50IGNneF9nZXRfdHhfc3RhdHModm9pZCAqY2d4ZCwgaW50IGxtYWNfaWQsIGludCBpZHgsIHU2NCAqdHhfc3RhdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oCmluZGV4IDdmMzUwNWFlNjg2MDQyLi5iYjY3MWUyMTUwYWE2NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgKQEAgLTExMTUsNiAmIzQzOzExMTUsNyBAQCB2b2lkIG5wY19yZWFkX21jYW1fZW50cnkoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbnBjX21jYW0gKm1jYW0sCiAJCQkgdTggKmludGYsIHU4ICplbmEpOwogaW50IG5wY19jb25maWdfY250cl9kZWZhdWx0X2VudHJpZXMoc3RydWN0IHJ2dSAqcnZ1LCBib29sIGVuYWJsZSk7CiBib29sIGlzX2NneF9jb25maWdfcGVybWl0dGVkKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpOwomIzQzO2Jvb2wgcnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpOwogYm9vbCBpc19tYWNfZmVhdHVyZV9zdXBwb3J0ZWQoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgcGYsIGludCBmZWF0dXJlKTsKIHUzMiAgcnZ1X2NneF9nZXRfZmlmb2xlbihzdHJ1Y3QgcnZ1ICpydnUpOwogdm9pZCAqcnZ1X2ZpcnN0X2NneF9wZGF0YShzdHJ1Y3QgcnZ1ICpydnUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jCmluZGV4IDRmZjM5MzVlZDNmZTg0Li4yYmUxZGEzNDc2YWM4NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYwpAQCAtMTM1NSwzICYjNDM7MTM1NSwzNSBAQCB2b2lkIHJ2dV9tYWNfcmVzZXQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYykKIAlpZiAobWFjX29wcy0mZ3Q7bWFjX3Jlc2V0KGNneGQsIGxtYWMsICFpc192ZihwY2lmdW5jKSkpCiAJCWRldl9lcnIocnZ1LSZndDtkZXYsICYjMzQ7RmFpbGVkIHRvIHJlc2V0IE1BQ1xuJiMzNDspOwogfQomIzQzOwomIzQzOy8qIERvIG5vdCBhbGxvdyBDR1gtbWFwcGVkIFZGcyB0byBvdmVyd3JpdGUgUEtJTkQgd2hlbiBzcGVjaWFsIHBhcnNlIGtpbmRzCiYjNDM7ICogKEhpR2lnLCBFRFNBLCBldGMuKSBhcmUgaW4gdXNlIG9uIHRoZSBzaGFyZWQgTE1BQy4KJiM0MzsgKi8KJiM0Mztib29sIHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKQomIzQzO3sKJiM0MzsJaW50IHBmLCBlcnIsIHJ4cGtpbmQ7CiYjNDM7CXU4IGNneF9pZCwgbG1hY19pZDsKJiM0MzsJdm9pZCAqY2d4ZDsKJiM0MzsKJiM0MzsJcGYgPSBydnVfZ2V0X3BmKHJ2dS0mZ3Q7cGRldiwgcGNpZnVuYyk7CiYjNDM7CiYjNDM7CWlmICghKHBjaWZ1bmMgJmFtcDsgUlZVX1BGVkZfRlVOQ19NQVNLKSkKJiM0MzsJCXJldHVybiB0cnVlOwomIzQzOwomIzQzOwlpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSkKJiM0MzsJCXJldHVybiB0cnVlOwomIzQzOwomIzQzOwlydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS0mZ3Q7cGYyY2d4bG1hY19tYXBbcGZdLCAmYW1wO2NneF9pZCwgJmFtcDtsbWFjX2lkKTsKJiM0MzsJY2d4ZCA9IHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpOwomIzQzOwllcnIgPSBjZ3hfZ2V0X3BraW5kKGNneGQsIGxtYWNfaWQsICZhbXA7cnhwa2luZCk7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CXN3aXRjaCAocnhwa2luZCkgewomIzQzOwljYXNlIE5QQ19SWF9ISUdJR19QS0lORDoKJiM0MzsJY2FzZSBOUENfUlhfRURTQV9QS0lORDoKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCXJldHVybiB0cnVlOwomIzQzOwl9CiYjNDM7fQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jCmluZGV4IGQ4OTg5Mzk1ZTg3NWRhLi40MGY1YjI1ZWFmYjExZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYwpAQCAtMzM4LDYgJiM0MzszMzgsNyBAQCBzdGF0aWMgaW50IG5peF9pbnRlcmZhY2VfaW5pdChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgdHlwZSwgaW50IG5peGxmLAogCXN0cnVjdCBzZHBfbm9kZV9pbmZvICpzZHBfaW5mbzsKIAlpbnQgcGtpbmQsIHBmLCB2ZiwgbGJraWQsIHZmaWQ7CiAJdTggY2d4X2lkLCBsbWFjX2lkOwomIzQzOwlzdHJ1Y3QgY2d4ICpjZ3hkOwogCWJvb2wgZnJvbV92ZjsKIAlpbnQgZXJyOwogCkBAIC0zNjMsOCAmIzQzOzM2NCwxNSBAQCBzdGF0aWMgaW50IG5peF9pbnRlcmZhY2VfaW5pdChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgdHlwZSwgaW50IG5peGxmLAogCQlwZnZmLSZndDt0eF9jaGFuX2NudCA9IDE7CiAJCXJzcC0mZ3Q7dHhfbGluayA9IGNneF9pZCAqIGh3LSZndDtsbWFjX3Blcl9jZ3ggJiM0MzsgbG1hY19pZDsKIAotCQljZ3hfc2V0X3BraW5kKHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpLCBsbWFjX2lkLCBwa2luZCk7Ci0JCXJ2dV9ucGNfc2V0X3BraW5kKHJ2dSwgcGtpbmQsIHBmdmYpOwomIzQzOwkJY2d4ZCA9IHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpOwomIzQzOwomIzQzOwkJbXV0ZXhfbG9jaygmYW1wO2NneGQtJmd0O2xvY2spOwomIzQzOwkJaWYgKHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZChydnUsIHBjaWZ1bmMpKSB7CiYjNDM7CQkJY2d4X3NldF9wa2luZChydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KSwgbG1hY19pZCwKJiM0MzsJCQkJICAgICAgcGtpbmQpOwomIzQzOwkJCXJ2dV9ucGNfc2V0X3BraW5kKHJ2dSwgcGtpbmQsIHBmdmYpOwomIzQzOwkJfQomIzQzOwkJbXV0ZXhfdW5sb2NrKCZhbXA7Y2d4ZC0mZ3Q7bG9jayk7CiAJCWJyZWFrOwogCWNhc2UgTklYX0lOVEZfVFlQRV9MQks6CiAJCXZmID0gKHBjaWZ1bmMgJmFtcDsgUlZVX1BGVkZfRlVOQ19NQVNLKSAtIDE7CkBAIC0xNTA4LDcgJiM0MzsxNTE2LDEwIEBAIGludCBydnVfbWJveF9oYW5kbGVyX25peF9sZl9hbGxvYyhzdHJ1Y3QgcnZ1ICpydnUsCiAJc3RydWN0IHJ2dV9ibG9jayAqYmxvY2s7CiAJc3RydWN0IHJ2dV9wZnZmICpwZnZmOwogCXU2NCBjZmcsIGN0eF9jZmc7CiYjNDM7CXN0cnVjdCBjZ3ggKmNneGQ7CiAJaW50IGJsa2FkZHI7CiYjNDM7CXU4IGNneDsKJiM0MzsJaW50IHBmOwogCiAJaWYgKCFyZXEtJmd0O3JxX2NudCB8fCAhcmVxLSZndDtzcV9jbnQgfHwgIXJlcS0mZ3Q7Y3FfY250KQogCQlyZXR1cm4gTklYX0FGX0VSUl9QQVJBTTsKQEAgLTE2ODAsOCAmIzQzOzE2OTEsMTcgQEAgaW50IHJ2dV9tYm94X2hhbmRsZXJfbml4X2xmX2FsbG9jKHN0cnVjdCBydnUgKnJ2dSwKIAlydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfUlhfQ0ZHKG5peGxmKSwgcmVxLSZndDtyeF9jZmcpOwogCiAJLyogQ29uZmlndXJlIHBraW5kIGZvciBUWCBwYXJzZSBjb25maWcgKi8KLQljZmcgPSBOUENfVFhfREVGX1BLSU5EOwotCXJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcobml4bGYpLCBjZmcpOwomIzQzOwlpZiAoaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcnZ1X2dldF9wZihydnUtJmd0O3BkZXYsIHBjaWZ1bmMpKSkgewomIzQzOwkJcGYgPSBydnVfZ2V0X3BmKHJ2dS0mZ3Q7cGRldiwgcGNpZnVuYyk7CiYjNDM7CQljZ3hkID0gcnZ1X2NneF9wZGF0YShjZ3gsIHJ2dSk7CiYjNDM7CiYjNDM7CQltdXRleF9sb2NrKCZhbXA7Y2d4ZC0mZ3Q7bG9jayk7CiYjNDM7CQlpZiAocnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkKHJ2dSwgcGNpZnVuYykpIHsKJiM0MzsJCQljZmcgPSBOUENfVFhfREVGX1BLSU5EOwomIzQzOwkJCXJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcobml4bGYpLCBjZmcpOwomIzQzOwkJfQomIzQzOwkJbXV0ZXhfdW5sb2NrKCZhbXA7Y2d4ZC0mZ3Q7bG9jayk7CiYjNDM7CX0KIAogCWlmIChpc19yZXBfZGV2KHJ2dSwgcGNpZnVuYykpIHsKIAkJcGZ2Zi0mZ3Q7dHhfY2hhbl9iYXNlID0gUlZVX1NXSVRDSF9MQktfQ0hBTjsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDU6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQxOAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDIyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE9jdGVvblRYMiBBRiBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBBRiBkcml2ZXIuIEl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGFkZGluZyBhIGNvdXBsZSBvZiBmdW5jdGlvbnMsIGBjZ3hfZ2V0X3BraW5kYCBhbmQgYHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZGAuIEl0IGFsc28gdG91Y2hlcyBgbml4X2ludGVyZmFjZV9pbml0YCBhbmQgYHJ2dV9tYm94X2hhbmRsZXJfbml4X2xmX2FsbG9jYCwgd2hpY2ggYXJlIGtleSBwYXJ0cyBvZiB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIHJlc291cmNlIGFsbG9jYXRpb24uIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gaW52b2x2ZSBjaGVja2luZyBpZiBgcnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkYCBiZWZvcmUgc2V0dGluZyB0aGUgYHBraW5kYCB2YWx1ZS4gVGhhdCBtYWtlcyBzZW5zZSwgbGlrZWx5IGFkZGluZyBzb21lIHNvcnQgb2YgY29uZmlndXJhdGlvbiBjb250cm9sIG9yIHJlc3RyaWN0aW9uIG9uIHRoZSBwa2luZCwgd2hpY2gsIGlmIHRoaXMgaXMgYW4gQUYgZHJpdmVyLCByZWxhdGVzIHRvIHJlc291cmNlIHR5cGVzLgoKTm93LCB0aGUgcXVlc3Rpb24gYmVjb21lcywgaXMgdGhpcyBkcml2ZXIgYWN0dWFsbHkgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBjb25zaWRlciBRRU1VLCBzaW5jZSB0aGF0JiMzOTtzIGEgY29tbW9uIHRlc3RpbmcgcGxhdGZvcm0uIFRoaXMgZHJpdmVyLCB0aGUgTWFydmVsbCBPY3Rlb25UWDIgQUYsIGlzIHR5cGljYWxseSB0aWVkIHRvIHNwZWNpZmljIGhhcmR3YXJlLCBzcGVjaWZpY2FsbHkgZGV2aWNlcyB3aXRoIGBQQ0lfVkVORE9SX0lEX0NBVklVTWAgYW5kIGBQQ0lfREVWSUNFX0lEX1JWVV9BRmAuIFRoZSBtaWxsaW9uIGRvbGxhciBxdWVzdGlvbjogZG9lcyBRRU1VIG9mZmVyIGFueSBlbXVsYXRpb24gZm9yIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmU/IEkgZG9uJiMzOTt0IHJlY2FsbCBzZWVpbmcgYW55dGhpbmcgbGlrZSB0aGF0LiBJIGtub3cgdGhlcmUgYXJlIGVtdWxhdGlvbnMsIGJ1dCB0aGUgT2N0ZW9uVFgyIFJWVSBBRiBpcyBwcmV0dHkgc3BlY2lhbGl6ZWQuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSBpZiB0aGF0JiMzOTtzIHN1cHBvcnRlZC4KCkZpcnN0LCBJIG5lZWQgdG8gY29uZmlybSBpZiB0aGlzIGlzLCBpbiBmYWN0LCBhIFBDSSBkcml2ZXIuIFRoZW4sIGlmIHNvLCB0aGUgcmVhY2hhYmlsaXR5IG9mIHRoZSBkcml2ZXIgYmVjb21lcyBtdWNoIG1vcmUgY3JpdGljYWwgZm9yIHRlc3RpbmcuIElmIGl0JiMzOTtzICpub3QqIGEgUENJIGRyaXZlciwgdGhlbiB0aGUgcXVlc3Rpb25zIG9mIHZpcnR1YWxpemF0aW9uIGJlY29tZSBsZXNzIGNyaXRpY2FsLCBhcyBvdGhlciBwYXRocyBtYXkgYmUgcmVsZXZhbnQuIFRoZSBuZXh0IHN0ZXBzIHdpbGwgaW52b2x2ZSBjb25maXJtaW5nIHRoZSBQQ0kgc3RhdHVzIG9mIHRoZSBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDU6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfZHJpdmVyLipydnVfYWYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA1OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwNzYKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIGEgc3ViamVjdCBtYXR0ZXIgZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipJbnZlc3RpZ2F0aW5nIFBDSSBJRCBNYXBwaW5ncyoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCB0byB3b3JrLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIGRpdmUgc3RyYWlnaHQgaW50byB0aGUgUENJIElEIGRhdGFiYXNlLiBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgZGV2aWNlIGlkZW50aWZpZXJzIGZvciBgcnZ1X2FmYCBhbmQgYG9jdGVvbnR4MmAuIFRoZXNlIGFyZSBsaWtlbHkgcmVsYXRlZCB0byBzcGVjaWZpYyBuZXR3b3JrIGludGVyZmFjZSBjYXJkIG9yIGFjY2VsZXJhdG9yIGZ1bmN0aW9ucywgYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZWlyIFBDSSBjb25maWd1cmF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgdGhlIHZlbmRvciBhbmQgZGV2aWNlIElEcyB0byBwcm9wZXJseSBpZGVudGlmeSB0aGVtIHdpdGhpbiB0aGUgc3lzdGVtLiBUaGlzIHNlYXJjaCB3aWxsIGJlIGNydWNpYWwgZm9yIGFueSBpbi1kZXB0aCBhbmFseXNpcyBvciB0cm91Ymxlc2hvb3RpbmcgSSB1bmRlcnRha2UgcmVsYXRlZCB0byB0aGUgaGFyZHdhcmUmIzM5O3MgaW50ZXJhY3Rpb24gd2l0aGluIHRoZSBQQ0kgYnVzLiBJJiMzOTttIHRoaW5raW5nIEkmIzM5O2xsIHN0YXJ0IHdpdGggYSBzdHJhaWdodGZvcndhcmQgc2VhcmNoIGZvciB0aGVzZSB0ZXJtcyB3aXRoaW4gdGhlIHN0YW5kYXJkIFBDSSBJRCByZXBvc2l0b3JpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDU6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQQ0lfREVWSUNFX0lEX0NBVklVTV9SVlVfQUYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA1OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzMDcKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgTmV0d29yayBEcml2ZXIgTGFuZHNjYXBlKioKClJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkmIzM5O20gdGhpbmtpbmcsIGJhc2VkIG9uIHRoZSBjb250ZXh0LCB3ZSYjMzk7cmUgbGlrZWx5IGRlYWxpbmcgd2l0aCBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgTWFydmVsbCBPY3Rlb250eDIgYXJjaGl0ZWN0dXJlIGFuZCBpdHMgbmV0d29yayBpbnRlcmZhY2UuIEdpdmVuIHRoYXQsIG15IGd1dCBmZWVsaW5nIHRlbGxzIG1lIHRoZSBjcml0aWNhbCBwaWVjZSBvZiBjb2RlIGlzIHByb2JhYmx5IG5lc3RsZWQgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvYCBkaXJlY3RvcnksIHNwZWNpZmljYWxseSB3aXRoaW4gc29tZXRoaW5nIGxpa2UgYHJ2dS5jYCBvciBhIHNpbWlsYXIgZmlsZSB0aGF0IGhhbmRsZXMgdGhlIHNwZWNpZmljIGFjY2VsZXJhdGVkIGZvcndhcmRpbmcgY29tcG9uZW50cy4gSSYjMzk7bSBhbnRpY2lwYXRpbmcgdGhhdCYjMzk7cyB3aGVyZSB0aGUgcmVsZXZhbnQgbG9naWMgZm9yIHRoZSBwYXJ0aWN1bGFyIG5ldHdvcmtpbmcgaXNzdWUgd2UmIzM5O3JlIGZhY2luZyB3aWxsIHJlc2lkZS4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW4gdGhlcmUgYW5kIHNlZSBob3cgdGhlIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGUgaGFyZHdhcmUmIzM5O3MgYWNjZWxlcmF0ZWQgZmVhdHVyZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDU6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYz0yMDYwPXN0YXRpYyB2b2lkIGNneF9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmMtMjA3My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jOjIwNzQ6c3RydWN0IHBjaV9kcml2ZXIgY2d4X2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jLTIwNzUtXHQubmFtZSA9IERSVl9OQU1FLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oPTEzMj1zdHJ1Y3QgY2d4X2V2ZW50X2NiIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaC0xMzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaDoxMzc6ZXh0ZXJuIHN0cnVjdCBwY2lfZHJpdmVyIGNneF9kcml2ZXI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaC0xMzgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvbWNzLmM9MTU5OT1zdGF0aWMgdm9pZCBtY3NfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21jcy5jLTE2MTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9tY3MuYzoxNjEyOnN0cnVjdCBwY2lfZHJpdmVyIG1jc19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9tY3MuYy0xNjEzLVx0Lm5hbWUgPSBEUlZfTkFNRSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9tY3MuaD0xNTU9c3RydWN0IG1jc19vcHMge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21jcy5oLTE2NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21jcy5oOjE2NTpleHRlcm4gc3RydWN0IHBjaV9kcml2ZXIgbWNzX2RyaXZlcjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21jcy5oLTE2Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYz01ODk9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHB0cF9pZF90YWJsZVtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTYxMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jOjYxMjpzdHJ1Y3QgcGNpX2RyaXZlciBwdHBfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNjEzLVx0Lm5hbWUgPSBEUlZfTkFNRSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuaD0yOT12b2lkIHB0cF9zdGFydChzdHJ1Y3QgcnZ1ICpydnUsIHU2NCBzY2xrLCB1MzIgZXh0X2Nsa19mcmVxLCB1MzIgZXh0dHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmgtMzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuaDozMTpleHRlcm4gc3RydWN0IHBjaV9kcml2ZXIgcHRwX2RyaXZlcjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5oLTMyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jPTM3MzM9c3RhdGljIHZvaWQgcnZ1X3NodXRkb3duKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTM3NDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYzozNzQzOnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBydnVfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMzc0NC1cdC5uYW1lID0gRFJWX05BTUUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDU6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjYwOQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDk2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFzc2Vzc2luZyB0aGUgVmlhYmlsaXR5IG9mIFRlc3RpbmcgdGhpcyBPY3Rlb25UWDIgRHJpdmVyKioKCk9rYXksIHNvIHRoaXMgZHJpdmVyIGlzIHNwZWNpZmljYWxseSBkZXNpZ25lZCBmb3IgTWFydmVsbCBPY3Rlb25UWDIgaGFyZHdhcmUuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgJiMzNDtDYW4gSSBldmVuICp0b3VjaCogdGhpcyBpbiBRRU1VPyYjMzQ7IFVuZm9ydHVuYXRlbHksIHRoYXQmIzM5O3MgYSBuby1nbzsgUUVNVSBkb2VzbiYjMzk7dCBvZmZlciBhbnkgZW11bGF0aW9uIGZvciB0aGUgT2N0ZW9uVFgyLiBDcmFwLCB0aGVuIEkgcmVtZW1iZXIgdGhhdCBzeXprYWxsZXIgYWxzbyBkb2VzbiYjMzk7dCBzZWVtIHRvIGhhdmUgYW55IE9jdGVvblRYMiBoYXJkd2FyZSBhdmFpbGFibGUuCgpCdXQgaG9sZCBvbiwgYmVmb3JlIEkgY29tcGxldGVseSBkaXNtaXNzIHRoaXMsIGlzIHRoZXJlICphbnkqIGluZGlyZWN0IHdheSB0byBnZXQgYXQgdGhpcyBkcml2ZXI/IENvbnNpZGVyaW5nIGl0JiMzOTtzIGEgUENJIGRyaXZlciwgaXQgc291bmRzIGxpa2UgdGhhdCYjMzk7cyB1bmxpa2VseSBnaXZlbiB0aGUgaGFyZHdhcmUgc3BlY2lmaWNzLiBUaGUgT2N0ZW9uVFgyIGlzIGEgcGFydGljdWxhciB0eXBlIG9mIGhhcmR3YXJlLiBMZXQgbWUgY2hlY2sgaWYgdGhlcmUgaXMgYW55IHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA1OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O09DVEVPTlRYMiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjY6Y29uZmlnIE9DVEVPTlRYMl9NQk9YXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTctXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy04LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzo5OmNvbmZpZyBPQ1RFT05UWDJfQUZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMTAtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjExOlx0c2VsZWN0IE9DVEVPTlRYMl9NQk9YXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTEyLVx0c2VsZWN0IE5FVF9ERVZMSU5LXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZz0yMj1jb25maWcgTkRDX0RJU19EWU5BTUlDX0NBQ0hJTkdcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMjMtXHRib29sIFwmIzM0O0Rpc2FibGUgY2FjaGluZyBvZiBkeW5hbWljIGVudHJpZXMgaW4gTkRDXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjI0Olx0ZGVwZW5kcyBvbiBPQ1RFT05UWDJfQUZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMjUtXHRkZWZhdWx0IG5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzozMTpjb25maWcgT0NURU9OVFgyX1BGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTMyLVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBPY3Rlb25UWDIgTklDIFBoeXNpY2FsIEZ1bmN0aW9uIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzozMzpcdHNlbGVjdCBPQ1RFT05UWDJfTUJPWFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0zNC1cdHNlbGVjdCBORVRfREVWTElOS1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctNDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjQ1OmNvbmZpZyBPQ1RFT05UWDJfVkZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctNDYtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgVmlydHVhbCBGdW5jdGlvbiBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6NDc6XHRkZXBlbmRzIG9uIE9DVEVPTlRYMl9QRlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy00OC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnPTUxPWNvbmZpZyBSVlVfRVNXSVRDSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy01Mi1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgUlZVIEUtU3dpdGNoIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6NTM6XHRkZXBlbmRzIG9uIE9DVEVPTlRYMl9QRlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy01NC1cdGRlZmF1bHQgbVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL01ha2VmaWxlLTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19PQ1RFT05UWDJfTUJPWCkgJiM0Mzs9IGFmL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfT0NURU9OVFgyX0FGKSAmIzQzOz0gYWYvXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19PQ1RFT05UWDJfUEYpICYjNDM7PSBuaWMvXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvTWFrZWZpbGU9Nj1jY2ZsYWdzLXkgJiM0Mzs9IC1JJChzcmMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19PQ1RFT05UWDJfTUJPWCkgJiM0Mzs9IHJ2dV9tYm94Lm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL01ha2VmaWxlOjg6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9BRikgJiM0Mzs9IHJ2dV9hZi5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9NYWtlZmlsZS05LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jPTY2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBjZ3hfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jOjY3Olx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX0NHWCkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jLTY4LVx0eyBQQ0lfREVWSUNFX1NVQihQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX0NOMTBLX1JQTSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaC0xNS0gLyogUENJIGRldmljZSBJRHMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oOjE2OiNkZWZpbmVcdFBDSV9ERVZJRF9PQ1RFT05UWDJfQ0dYXHRcdDB4QTA1OVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmgtMTctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jPTE1ND1ERUZJTkVfU0hPV19BVFRSSUJVVEUobnBjX21jYW1fbGF5b3V0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0xNTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmM6MTU2OiNkZWZpbmUgX19PQ1RFT05UWDJfREVCVUdGU19BVFRSSUJVVEVfRk9QUyhfX25hbWUpXHRcdFx0XFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0xNTctc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgX19uYW1lICMjIF9mb3BzID0ge1x0XHRcdFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jLTE2NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYzoxNjU6I2RlZmluZSBERUZJTkVfT0NURU9OVFgyX0RFQlVHRlNfQVRUUklCVVRFX1dJVEhfU0laRShfX25hbWUsIF9fc2l6ZSlcdFx0XFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0xNjYtc3RhdGljIGludCBfX25hbWUgIyMgX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXHRcdFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jLTE3MC19XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jOjE3MTpfX09DVEVPTlRYMl9ERUJVR0ZTX0FUVFJJQlVURV9GT1BTKF9fbmFtZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0xNzItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jPTE4MT1zdGF0aWMgaW50IG5wY19tY2FtX2RzdGF0c19zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdW51c2VkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0yNDItI2RlZmluZSBUT1RBTF9TWiAoTUFYX05VTV9CQU5LUyAqIE1BWF9OVU1fU1VCX0JBTktTICogTUFYX1NVQkJBTktfREVQVEggKiA2NClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYzoyNDM6REVGSU5FX09DVEVPTlRYMl9ERUJVR0ZTX0FUVFJJQlVURV9XSVRIX1NJWkUobnBjX21jYW1fZHN0YXRzLCBUT1RBTF9TWik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMjQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jPTI0NT1zdGF0aWMgaW50IG5wY19tY2FtX21pc21hdGNoX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp1bnVzZWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jLTI4NC0vKiBcJiMzNDsldVxcdCVkXFx0JXVcXG5cJiMzNDsgbmVlZHMgbGVzcyB0aGFuIDY0IGNoYXJhY3RlcnMgdG8gcHJpbnQuICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmM6Mjg1OkRFRklORV9PQ1RFT05UWDJfREVCVUdGU19BVFRSSUJVVEVfV0lUSF9TSVpFKG5wY19tY2FtX21pc21hdGNoLCBUT1RBTF9TWik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMjg2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTIwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmM6MjE6I2RlZmluZSBQQ0lfREVWSURfT0NURU9OVFgyX1BUUFx0XHRcdDB4QTAwQ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtMjItI2RlZmluZSBQQ0lfU1VCU1lTX0RFVklEX09DVFgyXzk4eHhfUFRQXHRcdDB4QjEwMFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTI3LSNkZWZpbmUgUENJX1NVQlNZU19ERVZJRF9PQ1RYMl85NVhYT19QVFBcdDB4QjYwMFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmM6Mjg6I2RlZmluZSBQQ0lfREVWSURfT0NURU9OVFgyX1JTVFx0XHRcdDB4QTA4NVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtMjktI2RlZmluZSBQQ0lfREVWSURfQ04xMEtfUFRQXHRcdFx0MHhBMDlFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmM9NTg5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBwdHBfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jOjU5MDpcdHsgUENJX0RFVklDRV9TVUIoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9PQ1RFT05UWDJfUFRQLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNTkxLVx0XHRcdCBQQ0lfVkVORE9SX0lEX0NBVklVTSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTU5Mi1cdFx0XHQgUENJX1NVQlNZU19ERVZJRF9PQ1RYMl85OHh4X1BUUCkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jOjU5MzpcdHsgUENJX0RFVklDRV9TVUIoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9PQ1RFT05UWDJfUFRQLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNTk0LVx0XHRcdCBQQ0lfVkVORE9SX0lEX0NBVklVTSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTU5NS1cdFx0XHQgUENJX1NVQlNZU19ERVZJRF9PQ1RYMl85NlhYX1BUUCkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jOjU5NjpcdHsgUENJX0RFVklDRV9TVUIoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9PQ1RFT05UWDJfUFRQLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNTk3LVx0XHRcdCBQQ0lfVkVORE9SX0lEX0NBVklVTSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTU5OC1cdFx0XHQgUENJX1NVQlNZU19ERVZJRF9PQ1RYMl85NVhYX1BUUCkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jOjU5OTpcdHsgUENJX0RFVklDRV9TVUIoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9PQ1RFT05UWDJfUFRQLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNjAwLVx0XHRcdCBQQ0lfVkVORE9SX0lEX0NBVklVTSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTYwMS1cdFx0XHQgUENJX1NVQlNZU19ERVZJRF9PQ1RYMl85NVhYTl9QVFApIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzo2MDI6XHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1BUUCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTYwMy1cdFx0XHQgUENJX1ZFTkRPUl9JRF9DQVZJVU0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy02MDQtXHRcdFx0IFBDSV9TVUJTWVNfREVWSURfT0NUWDJfOTVNTV9QVFApIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzo2MDU6XHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1BUUCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTYwNi1cdFx0XHQgUENJX1ZFTkRPUl9JRF9DQVZJVU0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM9NDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHJ2dV9pZF90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM6NDU6XHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtNDYtXHR7IDAsIH0gIC8qIGVuZCBvZiB0YWJsZSAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jPTkyNz1zdGF0aWMgdm9pZCBydnVfZ2V0X2xia19idWZzaXplKHN0cnVjdCBydnUgKnJ2dSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy05MzMtXHRwZGV2ID0gcGNpX2dldF9kZXZpY2UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYzo5MzQ6XHRcdFx0ICAgICAgUENJX0RFVklEX09DVEVPTlRYMl9MQkssIHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtOTM1LVx0aWYgKCFwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jPTM0NDI9aW50IHJ2dV9nZXRfbnVtX2xia19jaGFucyh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTM0NDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYzozNDQ4Olx0cGRldiA9IHBjaV9nZXRfZGV2aWNlKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX0xCSyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTM0NDktXHRcdFx0ICAgICAgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgtMjMtLyogUENJIGRldmljZSBJRHMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oOjI0OiNkZWZpbmVcdFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGXHRcdDB4QTA2NVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1Lmg6MjU6I2RlZmluZVx0UENJX0RFVklEX09DVEVPTlRYMl9MQktcdFx0XHQweEEwNjFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oLTI2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jbjEway5jPTM5Mj1zdGF0aWMgdm9pZCBydnVfbGJrX3NldF9jaGFubmVscyhzdHJ1Y3QgcnZ1ICpydnUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NuMTBrLmMtNDE1LVx0XHRwZGV2ID0gcGNpX2dldF9kZXZpY2UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY24xMGsuYzo0MTY6XHRcdFx0XHQgICAgICBQQ0lfREVWSURfT0NURU9OVFgyX0xCSywgcGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY24xMGsuYy00MTctXHRcdGlmICghcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jPTI4MzM9c3RhdGljIGludCBjZ3hfcHJpbnRfc3RhdHMoc3RydWN0IHNlcV9maWxlICpzLCBpbnQgbG1hY19pZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jLTI4NDMtXHRydnUgPSBwY2lfZ2V0X2RydmRhdGEocGNpX2dldF9kZXZpY2UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jOjI4NDQ6XHRcdFx0XHRcdCAgICAgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYsIE5VTEwpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtMjg0NS1cdGlmICghcnZ1KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmM9Mjk1MT1zdGF0aWMgaW50IGNneF9wcmludF9kbWFjX2ZsdChzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIGludCBsbWFjX2lkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtMjk2Mi1cdHJ2dSA9IHBjaV9nZXRfZHJ2ZGF0YShwY2lfZ2V0X2RldmljZShQQ0lfVkVORE9SX0lEX0NBVklVTSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmM6Mjk2MzpcdFx0XHRcdFx0ICAgICBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRiwgTlVMTCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYy0yOTY0LVx0aWYgKCFydnUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYz0zMDExPXN0YXRpYyBpbnQgY2d4X3ByaW50X2Z3ZGF0YShzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIGludCBsbWFjX2lkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtMzAxOS1cdHJ2dSA9IHBjaV9nZXRfZHJ2ZGF0YShwY2lfZ2V0X2RldmljZShQQ0lfVkVORE9SX0lEX0NBVklVTSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmM6MzAyMDpcdFx0XHRcdFx0ICAgICBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRiwgTlVMTCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYy0zMDIxLVx0aWYgKCFydnUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL01ha2VmaWxlLTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfT0NURU9OVFgyX1BGKSAmIzQzOz0gcnZ1X25pY3BmLm8gb3R4Ml9wdHAub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9WRikgJiM0Mzs9IHJ2dV9uaWN2Zi5vIG90eDJfcHRwLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9NYWtlZmlsZS04LW9iai0kKENPTkZJR19SVlVfRVNXSVRDSCkgJiM0Mzs9IHJ2dV9yZXAub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTQyLS8qIFBDSSBkZXZpY2UgSURzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo0MzojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX1BGICAgICAgICAgICAgICAweEEwNjNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oOjQ0OiNkZWZpbmUgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfVkZcdFx0MHhBMDY0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo0NTojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGVkZcdFx0MHhBMEY4XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaC00Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaC01MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oOjUxOiNkZWZpbmUgUENJX0RFVklEX09DVEVPTlRYMl9TRFBfUkVQXHRcdDB4QTBGN1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNTItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg9NTk3PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19vdHgyX2xia3ZmKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNTk4LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oOjU5OTpcdHJldHVybiAocGRldi1cdTAwM2VkZXZpY2UgPT0gUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUZWRikgfHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTYwMC1cdFx0KHBkZXYtXHUwMDNlZGV2aWNlID09IFBDSV9ERVZJRF9SVlVfUkVQKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaD02MTU9c3RhdGljIGlubGluZSBib29sIGlzX290eDJfc2RwX3JlcChzdHJ1Y3QgcGNpX2RldiAqcGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTYxNi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo2MTc6XHRyZXR1cm4gcGRldi1cdTAwM2VkZXZpY2UgPT0gUENJX0RFVklEX09DVEVPTlRYMl9TRFBfUkVQO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNjE4LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jPTM2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBvdHgyX3BmX2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jOjM3Olx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9QRikgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmMtMzgtXHR7IDAsIH0gIC8qIGVuZCBvZiB0YWJsZSAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmM9MjI9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG90eDJfdmZfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmM6MjM6XHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGVkYpIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jOjI0Olx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9WRikgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmM6MjU6XHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9PQ1RFT05UWDJfU0RQX1JFUCkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmMtMjYtXHR7IH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDU6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMxMjcKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA3NDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIEFzc2Vzc21lbnQgZm9yIE1hcnZlbGwgT2N0ZW9uVFgyIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBoYXJkd2FyZSBkcml2ZXIgZm9yIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiBzeXprYWxsZXIgZXZlbiB0b3VjaCB0aGlzPyBJIGtub3cgaXQgaGFzIHdheXMgdG8gdGVzdCBQQ0kgZHJpdmVycywgbGlrZSBgc3l6X3BjaV9kZXZpY2VfYWRkYCBhbmQgYHN5el9wY2lfZGV2aWNlX2FkZF92MmAsIGJ1dCB0aGF0JiMzOTtzIHVzdWFsbHkgZm9yIHNpbXBsZXIgZHJpdmVycy4gQ2FuIHN5emthbGxlciBwcm9wZXJseSBmdXp6IHRoaXM/IEkgbmVlZCB0byBjb25zaWRlciBpZiBpdCYjMzk7cyB3b3J0aCB0aGUgZWZmb3J0IGdpdmVuIHRoZSBkcml2ZXImIzM5O3MgY29tcGxleGl0eS4KClRoaXMgcGF0Y2ggbW9kaWZpZXMgYSBmZXcgZnVuY3Rpb25zIChgY2d4X2dldF9wa2luZGAsIGBydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWRgLCBgbml4X2ludGVyZmFjZV9pbml0YCwgYW5kIGBydnVfbWJveF9oYW5kbGVyX25peF9sZl9hbGxvY2ApLiBJdCBsb29rcyBsaWtlIGEgbmV3IGNoZWNrLCBgcnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkYCwgaXMgYmVpbmcgaW50cm9kdWNlZCBiZWZvcmUgY2FsbHMgdG8gYGNneF9zZXRfcGtpbmRgIGFuZCBgcnZ1X25wY19zZXRfcGtpbmRgLiAgQW5kIGBydnVfbWJveF9oYW5kbGVyX25peF9sZl9hbGxvY2AgaXMgYSBtYWlsYm94IGhhbmRsZXIsIHRob3NlIGFyZSBvZnRlbiB0YXJnZXRzIGZvciBzeXprYWxsZXIuCgpCdXQsIHRoZSBwcm9tcHQgc2F5cyB0byByZXR1cm4gJiMzNDtXb3J0aEZ1enppbmc9ZmFsc2UmIzM0OyBpZiB0aGUgcGF0Y2ggaW52b2x2ZXMgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiAgQ2FuIHRoaXMgTWFydmVsbCBPY3Rlb25UWDIgZHJpdmVyIGJlIGVtdWxhdGVkIGluIFFFTVU/IEkgZG9uJiMzOTt0IHRoaW5rIHNvLiBUaGVyZSYjMzk7cyBubyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBmb3IgaXQuICBUaGUgc3l6a2FsbGVyIFBDSSBmdXp6aW5nIG1pZ2h0IGJlIGFibGUgdG8gKnRvdWNoKiBpdCwgYnV0IGl0JiMzOTtzIHZlcnkgbGltaXRlZCB3aGVuIGRlYWxpbmcgd2l0aCBjb21wbGV4IE5JQyBkcml2ZXJzIGxpa2UgdGhpcyBvbmUsIGJlY2F1c2Ugb2YgdGhvc2UgRE1BIHJpbmdzIGFuZCBjb21wbGljYXRlZCBNTUlPIHNlcXVlbmNlcy4gU3l6a2FsbGVyJiMzOTtzIGBzeXpfcGNpX2RldmljZV9hZGRgIGlzbiYjMzk7dCBjb25zaWRlcmVkICYjMzQ7c29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUmIzM0OyBpbiB0aGUgc2Vuc2Ugb2YgdGhlIHByb21wdC4KCkxldCBtZSBkb3VibGUtY2hlY2sgYWJvdXQgdGhlIE9jdGVvblRYMi4gJiMzNDtPQ1RFT05UWDJfQUYmIzM0OyBzZWVtcyB0byBiZSByZWxhdGVkLiAgWWVwLCBpdCYjMzk7cyBhIFBDSSBkcml2ZXIuIEl0JiMzOTtzIGZvciBgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUZgLiBTdGlsbCBubyBRRU1VIGVtdWxhdGlvbi4KClNvLCBzaW5jZSBpdCYjMzk7cyBhICpwdXJlKiBoYXJkd2FyZSBkcml2ZXIsIHdpdGggbm8gYXZhaWxhYmxlIFFFTVUgZW11bGF0aW9uLCB0aGUgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gIFN5emthbGxlciBtaWdodCBwb2tlIGF0IGl0LCBidXQgdGhhdCYjMzk7cyBub3QgdGhlIHNhbWUgdGhpbmcuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSBpZiB0aGVyZSBpcyBhIGBzeXpfYCBwc2V1ZG8tc3lzY2FsbCBmb3IgdGhpcy4gR2l2ZW4gdGhlIHByZW1pc2Ugb2YgdGhlIHByb21wdCwgdGhlIGFuc3dlciBpcyAmIzM0O1dvcnRoRnV6emluZz1mYWxzZSYjMzQ7LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwNToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N5el8uKm9jdGVvbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA1OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NDY4CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoaXMgZmllbGQsIHByZXNlbnRlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5OgoKKipDaGVja2luZyBmb3IgU3BlY2lhbGl6ZWQgU3lzY2FsbHMqKgoKQWxyaWdodCwgSSYjMzk7bSB0aGlua2luZywgbGV0JiMzOTtzIHF1aWNrbHkgc2VlIGlmIHRoZXJlIGFyZSBhbnkgZXhpc3RpbmcgYHN5el9gIHBzZXVkby1zeXNjYWxscyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIGhhbmRsaW5nIHRoZSBgcnZ1YCBvciBgY2d4YCBzdWJzeXN0ZW1zLiBUaGVzZSBhcmUgY29tcGxleCwgYW5kIEkmIzM5O20gcHJldHR5IHN1cmUgSSYjMzk7dmUgc2VlbiBzb21lIGN1c3RvbSBzeXN0ZW0gY2FsbCBpbXBsZW1lbnRhdGlvbnMgaW4gdGhlIHBhc3QgdGhhdCB0YXJnZXQgdGhlc2UgYXJlYXMuIE15IGZvY3VzIGlzIG9uIGVmZmljaWVuY3kgYW5kIHdoZXRoZXIgSSBjYW4gbGV2ZXJhZ2Ugc29tZXRoaW5nIGFscmVhZHkgYnVpbHQsIGFzIEkga25vdyBteSBmaWVsZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDU6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzeXpfLipydnUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwNToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDY1OAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIGZyYW1lZCBhcyBteSBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6CgoqKkludmVzdGlnYXRpbmcgUG90ZW50aWFsIGBzeXpfYCBTeXN0ZW0gQ2FsbHMgaW4gYG5peGAqKgoKQWxyaWdodCwgdGltZSB0byBkaWcgaW4uIE15IHByaW1hcnkgb2JqZWN0aXZlIGF0IHRoaXMgbW9tZW50IGlzIHRvIGRldGVybWluZSB3aGV0aGVyIGFueSBgc3l6X2AgcHNldWRvLXN5c3RlbSBjYWxscyBleGlzdCB3aXRoaW4gdGhlIGBuaXhgIG9wZXJhdGluZyBzeXN0ZW0gZW52aXJvbm1lbnQuIEkmIzM5O20gb3BlcmF0aW5nIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgYSBgc3l6X2AgcHJlZml4IHVzdWFsbHkgaW5kaWNhdGVzIHNvbWUga2luZCBvZiBpbnN0cnVtZW50YXRpb24gb3IgZnV6emluZy1yZWxhdGVkIGZ1bmN0aW9uYWxpdHksIGxpa2VseSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggdG9vbHMgbGlrZSBzeXprYWxsZXIuIFRoZXJlZm9yZSwgaWRlbnRpZnlpbmcgdGhlc2UgY2FsbHMgd291bGQgYmUgYSBjcnVjaWFsIGZpcnN0IHN0ZXAgaW4gYW55IGF0dGVtcHQgYXQgcmV2ZXJzZS1lbmdpbmVlcmluZyBvciBmdXp6aW5nIGBuaXhgIGl0c2VsZi4gVGhpcyBtZWFucyBJJiMzOTtsbCBuZWVkIHRvIGtub3cgd2hpY2ggc3lzY2FsbHMgYXJlIGluIHBsYWNlLCBzbyBJIGNhbiBzZWUgaWYgYW55IGFyZSBwcmVmaXhlZCB3aXRoIHRoZSBjb3JyZWN0IGNoYXJhY3RlcnMuIE15IGFwcHJvYWNoIHdpbGwgYmUgbWV0aG9kaWNhbCBhbmQgdGFyZ2V0ZWQsIHN0YXJ0aW5nIHdpdGggdGhlIHNpbXBsZXN0IGNoZWNrcyBhbmQgdGhlbiB3b3JraW5nIGludG8gbW9yZSBjb21wbGV4IG9wdGlvbnMgaWYgbmVjZXNzYXJ5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwNToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N5el8uKm5peCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA1OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0OTA0CgkJCQkJCQlvdXRwdXQ6IDkzCgkJCQkJCQl0aG91Z2h0czogNDcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBEZWNpc2lvbiBmb3IgdGhlIE9jdGVvblRYMiBBRiBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhlIHNpdHVhdGlvbiBpcyBjbGVhci4gVGhpcyBwYXRjaCB0b3VjaGVzIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyLCBhbmQgYXMgd2UgYWxsIGtub3csIHRoZXJlJiMzOTtzIG5vIHN5emthbGxlciBzdXBwb3J0IHNwZWNpZmljYWxseSBidWlsdCBmb3IgdGhpcyBoYXJkd2FyZS4gVGhlIGNvcmUgcHJvYmxlbSwgaG93ZXZlciwgaXMgdGhhdCB0aGlzIGlzIGEgKmhhcmR3YXJlLXNwZWNpZmljKiBkcml2ZXIgZm9yIHRoZSBPY3Rlb25UWDIuIFRoZXJlJiMzOTtzIG5vIGVtdWxhdGlvbiBhdmFpbGFibGUsIG5vdCBldmVuIGEgYmFzaWMgb25lIGluIFFFTVUsIEdDRSwgb3Igb3RoZXIgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGlzIG1lYW5zIHRoZSBjb2RlIHBhdGhzIGFyZSB1dHRlcmx5IHVucmVhY2hhYmxlIHVuZGVyIGFueSBjdXJyZW50IHZpcnR1YWwgc2V0dXAuCgpMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhlIHByb21wdCBjcml0ZXJpYSwgc2luY2Ugd2UgbmVlZCB0byBiZSBwcmVjaXNlLiBZZXMsIGl0IHBlcmZlY3RseSBmaXRzOiAmIzM0O1JldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiYjMzQ7IEJpbmdvLiBXZSYjMzk7cmUgZ29sZGVuLiBUaGlzIHBhdGNoIGlzIGlzb2xhdGVkIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2AgZGlyZWN0b3J5LCBzbyBpdCBpcyB0aGUgT2N0ZW9uVFgyIEFGIGRyaXZlci4KCkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkmIzM5O2xsIHNvbGlkaWZ5IHRoZSByZWFzb25pbmc6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi8pLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlciBmb3Igd2hpY2ggdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGluIFFFTVUgb3Igb3RoZXIgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCB0ZXN0IGR1cmluZyBmdXp6aW5nIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OwoKTGV0IG1lIGNvbmZpcm0gdGhlIGZpbGUgbW9kaWZpY2F0aW9ucyBvbmUgbGFzdCB0aW1lIHRvIHJlbW92ZSBhbnkgZG91YnQ6Ci0gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jYAotIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaGAKLSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmhgCi0gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guY2AKLSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jYAoKWXVwLCBhbGwgd2l0aGluIHRoYXQgZHJpdmVyLgoKQWxyaWdodCwgSSYjMzk7bSBjb25maWRlbnQuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIHdpdGggYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA1OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyIGZvciB3aGljaCB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gaW4gUUVNVSBvciBvdGhlciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgZHVyaW5nIGZ1enppbmcgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyIGZvciB3aGljaCB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gaW4gUUVNVSBvciBvdGhlciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgZHVyaW5nIGZ1enppbmcgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA1OjA5OjU2LjA5NDU5ODAyMloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NjY2NTY4ODYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlci4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIgZm9yIHdoaWNoIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBpbiBRRU1VIG9yIG90aGVyIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCBkdXJpbmcgZnV6emluZyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwNTowOTo1Ni4wOTQ2MDQwMzJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MTQzMzc2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDU5OWE4MDk2YjM2NmJiNjM0YjM0NWRiNzhkNTA3ZmVjODBiZTAzZWRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdW4gMjUgMDU6MDk6NTQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guY1xcbmluZGV4IDJlOTRkNTEwNTAxNmJmLi5mNWZkNjEzOGMzNTJmZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jXFxuQEAgLTUxOCw2ICs1MTgsMTggQEAgaW50IGNneF9zZXRfcGtpbmQodm9pZCAqY2d4ZCwgdTggbG1hY19pZCwgaW50IHBraW5kKVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4raW50IGNneF9nZXRfcGtpbmQodm9pZCAqY2d4ZCwgdTggbG1hY19pZCwgaW50ICpwa2luZClcXG4re1xcbitcXHRzdHJ1Y3QgY2d4ICpjZ3ggPSBjZ3hkO1xcbitcXG4rXFx0aWYgKCFpc19sbWFjX3ZhbGlkKGNneCwgbG1hY19pZCkpXFxuK1xcdFxcdHJldHVybiAtRU5PREVWO1xcbitcXG4rXFx0KnBraW5kID0gY2d4X3JlYWQoY2d4LCBsbWFjX2lkLCBjZ3gtXFx1MDAzZW1hY19vcHMtXFx1MDAzZXJ4aWRfbWFwX29mZnNldCk7XFxuK1xcdCpwa2luZCA9ICpwa2luZCBcXHUwMDI2IDB4M0Y7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbiBzdGF0aWMgdTggY2d4X2dldF9sbWFjX3R5cGUodm9pZCAqY2d4ZCwgaW50IGxtYWNfaWQpXFxuIHtcXG4gXFx0c3RydWN0IGNneCAqY2d4ID0gY2d4ZDtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaFxcbmluZGV4IDkyY2NmMzQzZGZlMDRmLi44NDExYTc1ZGQ3MjNmOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oXFxuQEAgLTE0MSw2ICsxNDEsNyBAQCBpbnQgY2d4X2dldF9jZ3hpZCh2b2lkICpjZ3hkKTtcXG4gaW50IGNneF9nZXRfbG1hY19jbnQodm9pZCAqY2d4ZCk7XFxuIHZvaWQgKmNneF9nZXRfcGRhdGEoaW50IGNneF9pZCk7XFxuIGludCBjZ3hfc2V0X3BraW5kKHZvaWQgKmNneGQsIHU4IGxtYWNfaWQsIGludCBwa2luZCk7XFxuK2ludCBjZ3hfZ2V0X3BraW5kKHZvaWQgKmNneGQsIHU4IGxtYWNfaWQsIGludCAqcGtpbmQpO1xcbiBpbnQgY2d4X2xtYWNfZXZoX3JlZ2lzdGVyKHN0cnVjdCBjZ3hfZXZlbnRfY2IgKmNiLCB2b2lkICpjZ3hkLCBpbnQgbG1hY19pZCk7XFxuIGludCBjZ3hfbG1hY19ldmhfdW5yZWdpc3Rlcih2b2lkICpjZ3hkLCBpbnQgbG1hY19pZCk7XFxuIGludCBjZ3hfZ2V0X3R4X3N0YXRzKHZvaWQgKmNneGQsIGludCBsbWFjX2lkLCBpbnQgaWR4LCB1NjQgKnR4X3N0YXQpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oXFxuaW5kZXggN2YzNTA1YWU2ODYwNDIuLmJiNjcxZTIxNTBhYTY2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmhcXG5AQCAtMTExNSw2ICsxMTE1LDcgQEAgdm9pZCBucGNfcmVhZF9tY2FtX2VudHJ5KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wY19tY2FtICptY2FtLFxcbiBcXHRcXHRcXHQgdTggKmludGYsIHU4ICplbmEpO1xcbiBpbnQgbnBjX2NvbmZpZ19jbnRyX2RlZmF1bHRfZW50cmllcyhzdHJ1Y3QgcnZ1ICpydnUsIGJvb2wgZW5hYmxlKTtcXG4gYm9vbCBpc19jZ3hfY29uZmlnX3Blcm1pdHRlZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKTtcXG4rYm9vbCBydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYyk7XFxuIGJvb2wgaXNfbWFjX2ZlYXR1cmVfc3VwcG9ydGVkKHN0cnVjdCBydnUgKnJ2dSwgaW50IHBmLCBpbnQgZmVhdHVyZSk7XFxuIHUzMiAgcnZ1X2NneF9nZXRfZmlmb2xlbihzdHJ1Y3QgcnZ1ICpydnUpO1xcbiB2b2lkICpydnVfZmlyc3RfY2d4X3BkYXRhKHN0cnVjdCBydnUgKnJ2dSk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guY1xcbmluZGV4IDRmZjM5MzVlZDNmZTg0Li4yYmUxZGEzNDc2YWM4NCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmNcXG5AQCAtMTM1NSwzICsxMzU1LDM1IEBAIHZvaWQgcnZ1X21hY19yZXNldChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKVxcbiBcXHRpZiAobWFjX29wcy1cXHUwMDNlbWFjX3Jlc2V0KGNneGQsIGxtYWMsICFpc192ZihwY2lmdW5jKSkpXFxuIFxcdFxcdGRldl9lcnIocnZ1LVxcdTAwM2VkZXYsIFxcXCJGYWlsZWQgdG8gcmVzZXQgTUFDXFxcXG5cXFwiKTtcXG4gfVxcbitcXG4rLyogRG8gbm90IGFsbG93IENHWC1tYXBwZWQgVkZzIHRvIG92ZXJ3cml0ZSBQS0lORCB3aGVuIHNwZWNpYWwgcGFyc2Uga2luZHNcXG4rICogKEhpR2lnLCBFRFNBLCBldGMuKSBhcmUgaW4gdXNlIG9uIHRoZSBzaGFyZWQgTE1BQy5cXG4rICovXFxuK2Jvb2wgcnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpXFxuK3tcXG4rXFx0aW50IHBmLCBlcnIsIHJ4cGtpbmQ7XFxuK1xcdHU4IGNneF9pZCwgbG1hY19pZDtcXG4rXFx0dm9pZCAqY2d4ZDtcXG4rXFxuK1xcdHBmID0gcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsIHBjaWZ1bmMpO1xcbitcXG4rXFx0aWYgKCEocGNpZnVuYyBcXHUwMDI2IFJWVV9QRlZGX0ZVTkNfTUFTSykpXFxuK1xcdFxcdHJldHVybiB0cnVlO1xcbitcXG4rXFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuK1xcdFxcdHJldHVybiB0cnVlO1xcbitcXG4rXFx0cnZ1X2dldF9jZ3hfbG1hY19pZChydnUtXFx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXFx1MDAyNmNneF9pZCwgXFx1MDAyNmxtYWNfaWQpO1xcbitcXHRjZ3hkID0gcnZ1X2NneF9wZGF0YShjZ3hfaWQsIHJ2dSk7XFxuK1xcdGVyciA9IGNneF9nZXRfcGtpbmQoY2d4ZCwgbG1hY19pZCwgXFx1MDAyNnJ4cGtpbmQpO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbitcXHRzd2l0Y2ggKHJ4cGtpbmQpIHtcXG4rXFx0Y2FzZSBOUENfUlhfSElHSUdfUEtJTkQ6XFxuK1xcdGNhc2UgTlBDX1JYX0VEU0FfUEtJTkQ6XFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0cmV0dXJuIHRydWU7XFxuK1xcdH1cXG4rfVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmNcXG5pbmRleCBkODk4OTM5NWU4NzVkYS4uNDBmNWIyNWVhZmIxMWQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jXFxuQEAgLTMzOCw2ICszMzgsNyBAQCBzdGF0aWMgaW50IG5peF9pbnRlcmZhY2VfaW5pdChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgdHlwZSwgaW50IG5peGxmLFxcbiBcXHRzdHJ1Y3Qgc2RwX25vZGVfaW5mbyAqc2RwX2luZm87XFxuIFxcdGludCBwa2luZCwgcGYsIHZmLCBsYmtpZCwgdmZpZDtcXG4gXFx0dTggY2d4X2lkLCBsbWFjX2lkO1xcbitcXHRzdHJ1Y3QgY2d4ICpjZ3hkO1xcbiBcXHRib29sIGZyb21fdmY7XFxuIFxcdGludCBlcnI7XFxuIFxcbkBAIC0zNjMsOCArMzY0LDE1IEBAIHN0YXRpYyBpbnQgbml4X2ludGVyZmFjZV9pbml0KHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGludCB0eXBlLCBpbnQgbml4bGYsXFxuIFxcdFxcdHBmdmYtXFx1MDAzZXR4X2NoYW5fY250ID0gMTtcXG4gXFx0XFx0cnNwLVxcdTAwM2V0eF9saW5rID0gY2d4X2lkICogaHctXFx1MDAzZWxtYWNfcGVyX2NneCArIGxtYWNfaWQ7XFxuIFxcbi1cXHRcXHRjZ3hfc2V0X3BraW5kKHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpLCBsbWFjX2lkLCBwa2luZCk7XFxuLVxcdFxcdHJ2dV9ucGNfc2V0X3BraW5kKHJ2dSwgcGtpbmQsIHBmdmYpO1xcbitcXHRcXHRjZ3hkID0gcnZ1X2NneF9wZGF0YShjZ3hfaWQsIHJ2dSk7XFxuK1xcbitcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZjZ3hkLVxcdTAwM2Vsb2NrKTtcXG4rXFx0XFx0aWYgKHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZChydnUsIHBjaWZ1bmMpKSB7XFxuK1xcdFxcdFxcdGNneF9zZXRfcGtpbmQocnZ1X2NneF9wZGF0YShjZ3hfaWQsIHJ2dSksIGxtYWNfaWQsXFxuK1xcdFxcdFxcdFxcdCAgICAgIHBraW5kKTtcXG4rXFx0XFx0XFx0cnZ1X25wY19zZXRfcGtpbmQocnZ1LCBwa2luZCwgcGZ2Zik7XFxuK1xcdFxcdH1cXG4rXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjZ3hkLVxcdTAwM2Vsb2NrKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgTklYX0lOVEZfVFlQRV9MQks6XFxuIFxcdFxcdHZmID0gKHBjaWZ1bmMgXFx1MDAyNiBSVlVfUEZWRl9GVU5DX01BU0spIC0gMTtcXG5AQCAtMTUwOCw3ICsxNTE2LDEwIEBAIGludCBydnVfbWJveF9oYW5kbGVyX25peF9sZl9hbGxvYyhzdHJ1Y3QgcnZ1ICpydnUsXFxuIFxcdHN0cnVjdCBydnVfYmxvY2sgKmJsb2NrO1xcbiBcXHRzdHJ1Y3QgcnZ1X3BmdmYgKnBmdmY7XFxuIFxcdHU2NCBjZmcsIGN0eF9jZmc7XFxuK1xcdHN0cnVjdCBjZ3ggKmNneGQ7XFxuIFxcdGludCBibGthZGRyO1xcbitcXHR1OCBjZ3g7XFxuK1xcdGludCBwZjtcXG4gXFxuIFxcdGlmICghcmVxLVxcdTAwM2VycV9jbnQgfHwgIXJlcS1cXHUwMDNlc3FfY250IHx8ICFyZXEtXFx1MDAzZWNxX2NudClcXG4gXFx0XFx0cmV0dXJuIE5JWF9BRl9FUlJfUEFSQU07XFxuQEAgLTE2ODAsOCArMTY5MSwxNyBAQCBpbnQgcnZ1X21ib3hfaGFuZGxlcl9uaXhfbGZfYWxsb2Moc3RydWN0IHJ2dSAqcnZ1LFxcbiBcXHRydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfUlhfQ0ZHKG5peGxmKSwgcmVxLVxcdTAwM2VyeF9jZmcpO1xcbiBcXG4gXFx0LyogQ29uZmlndXJlIHBraW5kIGZvciBUWCBwYXJzZSBjb25maWcgKi9cXG4tXFx0Y2ZnID0gTlBDX1RYX0RFRl9QS0lORDtcXG4tXFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1RYX1BBUlNFX0NGRyhuaXhsZiksIGNmZyk7XFxuK1xcdGlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBydnVfZ2V0X3BmKHJ2dS1cXHUwMDNlcGRldiwgcGNpZnVuYykpKSB7XFxuK1xcdFxcdHBmID0gcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsIHBjaWZ1bmMpO1xcbitcXHRcXHRjZ3hkID0gcnZ1X2NneF9wZGF0YShjZ3gsIHJ2dSk7XFxuK1xcbitcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZjZ3hkLVxcdTAwM2Vsb2NrKTtcXG4rXFx0XFx0aWYgKHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZChydnUsIHBjaWZ1bmMpKSB7XFxuK1xcdFxcdFxcdGNmZyA9IE5QQ19UWF9ERUZfUEtJTkQ7XFxuK1xcdFxcdFxcdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcobml4bGYpLCBjZmcpO1xcbitcXHRcXHR9XFxuK1xcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2Y2d4ZC1cXHUwMDNlbG9jayk7XFxuK1xcdH1cXG4gXFxuIFxcdGlmIChpc19yZXBfZGV2KHJ2dSwgcGNpZnVuYykpIHtcXG4gXFx0XFx0cGZ2Zi1cXHUwMDNldHhfY2hhbl9iYXNlID0gUlZVX1NXSVRDSF9MQktfQ0hBTjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDU6MDk6NTYuNjY2ODM4NjU0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTA5NDMyMzA0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyIGZvciB3aGljaCB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gaW4gUUVNVSBvciBvdGhlciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgZHVyaW5nIGZ1enppbmcgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1OTlhODA5NmIzNjZiYjYzNGIzNDVkYjc4ZDUwN2ZlYzgwYmUwM2VkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdW4gMjUgMDU6MDk6NTQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jXG5pbmRleCAyZTk0ZDUxMDUwMTZiZi4uZjVmZDYxMzhjMzUyZmQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmNcbkBAIC01MTgsNiArNTE4LDE4IEBAIGludCBjZ3hfc2V0X3BraW5kKHZvaWQgKmNneGQsIHU4IGxtYWNfaWQsIGludCBwa2luZClcbiBcdHJldHVybiAwO1xuIH1cbiBcbitpbnQgY2d4X2dldF9wa2luZCh2b2lkICpjZ3hkLCB1OCBsbWFjX2lkLCBpbnQgKnBraW5kKVxuK3tcbitcdHN0cnVjdCBjZ3ggKmNneCA9IGNneGQ7XG4rXG4rXHRpZiAoIWlzX2xtYWNfdmFsaWQoY2d4LCBsbWFjX2lkKSlcbitcdFx0cmV0dXJuIC1FTk9ERVY7XG4rXG4rXHQqcGtpbmQgPSBjZ3hfcmVhZChjZ3gsIGxtYWNfaWQsIGNneC1cdTAwM2VtYWNfb3BzLVx1MDAzZXJ4aWRfbWFwX29mZnNldCk7XG4rXHQqcGtpbmQgPSAqcGtpbmQgXHUwMDI2IDB4M0Y7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4gc3RhdGljIHU4IGNneF9nZXRfbG1hY190eXBlKHZvaWQgKmNneGQsIGludCBsbWFjX2lkKVxuIHtcbiBcdHN0cnVjdCBjZ3ggKmNneCA9IGNneGQ7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaFxuaW5kZXggOTJjY2YzNDNkZmUwNGYuLjg0MTFhNzVkZDcyM2Y5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oXG5AQCAtMTQxLDYgKzE0MSw3IEBAIGludCBjZ3hfZ2V0X2NneGlkKHZvaWQgKmNneGQpO1xuIGludCBjZ3hfZ2V0X2xtYWNfY250KHZvaWQgKmNneGQpO1xuIHZvaWQgKmNneF9nZXRfcGRhdGEoaW50IGNneF9pZCk7XG4gaW50IGNneF9zZXRfcGtpbmQodm9pZCAqY2d4ZCwgdTggbG1hY19pZCwgaW50IHBraW5kKTtcbitpbnQgY2d4X2dldF9wa2luZCh2b2lkICpjZ3hkLCB1OCBsbWFjX2lkLCBpbnQgKnBraW5kKTtcbiBpbnQgY2d4X2xtYWNfZXZoX3JlZ2lzdGVyKHN0cnVjdCBjZ3hfZXZlbnRfY2IgKmNiLCB2b2lkICpjZ3hkLCBpbnQgbG1hY19pZCk7XG4gaW50IGNneF9sbWFjX2V2aF91bnJlZ2lzdGVyKHZvaWQgKmNneGQsIGludCBsbWFjX2lkKTtcbiBpbnQgY2d4X2dldF90eF9zdGF0cyh2b2lkICpjZ3hkLCBpbnQgbG1hY19pZCwgaW50IGlkeCwgdTY0ICp0eF9zdGF0KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oXG5pbmRleCA3ZjM1MDVhZTY4NjA0Mi4uYmI2NzFlMjE1MGFhNjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmhcbkBAIC0xMTE1LDYgKzExMTUsNyBAQCB2b2lkIG5wY19yZWFkX21jYW1fZW50cnkoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbnBjX21jYW0gKm1jYW0sXG4gXHRcdFx0IHU4ICppbnRmLCB1OCAqZW5hKTtcbiBpbnQgbnBjX2NvbmZpZ19jbnRyX2RlZmF1bHRfZW50cmllcyhzdHJ1Y3QgcnZ1ICpydnUsIGJvb2wgZW5hYmxlKTtcbiBib29sIGlzX2NneF9jb25maWdfcGVybWl0dGVkKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpO1xuK2Jvb2wgcnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpO1xuIGJvb2wgaXNfbWFjX2ZlYXR1cmVfc3VwcG9ydGVkKHN0cnVjdCBydnUgKnJ2dSwgaW50IHBmLCBpbnQgZmVhdHVyZSk7XG4gdTMyICBydnVfY2d4X2dldF9maWZvbGVuKHN0cnVjdCBydnUgKnJ2dSk7XG4gdm9pZCAqcnZ1X2ZpcnN0X2NneF9wZGF0YShzdHJ1Y3QgcnZ1ICpydnUpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guY1xuaW5kZXggNGZmMzkzNWVkM2ZlODQuLjJiZTFkYTM0NzZhYzg0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmNcbkBAIC0xMzU1LDMgKzEzNTUsMzUgQEAgdm9pZCBydnVfbWFjX3Jlc2V0KHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpXG4gXHRpZiAobWFjX29wcy1cdTAwM2VtYWNfcmVzZXQoY2d4ZCwgbG1hYywgIWlzX3ZmKHBjaWZ1bmMpKSlcbiBcdFx0ZGV2X2VycihydnUtXHUwMDNlZGV2LCBcIkZhaWxlZCB0byByZXNldCBNQUNcXG5cIik7XG4gfVxuK1xuKy8qIERvIG5vdCBhbGxvdyBDR1gtbWFwcGVkIFZGcyB0byBvdmVyd3JpdGUgUEtJTkQgd2hlbiBzcGVjaWFsIHBhcnNlIGtpbmRzXG4rICogKEhpR2lnLCBFRFNBLCBldGMuKSBhcmUgaW4gdXNlIG9uIHRoZSBzaGFyZWQgTE1BQy5cbisgKi9cbitib29sIHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKVxuK3tcbitcdGludCBwZiwgZXJyLCByeHBraW5kO1xuK1x0dTggY2d4X2lkLCBsbWFjX2lkO1xuK1x0dm9pZCAqY2d4ZDtcbitcbitcdHBmID0gcnZ1X2dldF9wZihydnUtXHUwMDNlcGRldiwgcGNpZnVuYyk7XG4rXG4rXHRpZiAoIShwY2lmdW5jIFx1MDAyNiBSVlVfUEZWRl9GVU5DX01BU0spKVxuK1x0XHRyZXR1cm4gdHJ1ZTtcbitcbitcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuK1x0XHRyZXR1cm4gdHJ1ZTtcbitcbitcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXHUwMDI2Y2d4X2lkLCBcdTAwMjZsbWFjX2lkKTtcbitcdGNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTtcbitcdGVyciA9IGNneF9nZXRfcGtpbmQoY2d4ZCwgbG1hY19pZCwgXHUwMDI2cnhwa2luZCk7XG4rXHRpZiAoZXJyKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRzd2l0Y2ggKHJ4cGtpbmQpIHtcbitcdGNhc2UgTlBDX1JYX0hJR0lHX1BLSU5EOlxuK1x0Y2FzZSBOUENfUlhfRURTQV9QS0lORDpcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1x0ZGVmYXVsdDpcbitcdFx0cmV0dXJuIHRydWU7XG4rXHR9XG4rfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguY1xuaW5kZXggZDg5ODkzOTVlODc1ZGEuLjQwZjViMjVlYWZiMTFkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmNcbkBAIC0zMzgsNiArMzM4LDcgQEAgc3RhdGljIGludCBuaXhfaW50ZXJmYWNlX2luaXQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgaW50IHR5cGUsIGludCBuaXhsZixcbiBcdHN0cnVjdCBzZHBfbm9kZV9pbmZvICpzZHBfaW5mbztcbiBcdGludCBwa2luZCwgcGYsIHZmLCBsYmtpZCwgdmZpZDtcbiBcdHU4IGNneF9pZCwgbG1hY19pZDtcbitcdHN0cnVjdCBjZ3ggKmNneGQ7XG4gXHRib29sIGZyb21fdmY7XG4gXHRpbnQgZXJyO1xuIFxuQEAgLTM2Myw4ICszNjQsMTUgQEAgc3RhdGljIGludCBuaXhfaW50ZXJmYWNlX2luaXQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgaW50IHR5cGUsIGludCBuaXhsZixcbiBcdFx0cGZ2Zi1cdTAwM2V0eF9jaGFuX2NudCA9IDE7XG4gXHRcdHJzcC1cdTAwM2V0eF9saW5rID0gY2d4X2lkICogaHctXHUwMDNlbG1hY19wZXJfY2d4ICsgbG1hY19pZDtcbiBcbi1cdFx0Y2d4X3NldF9wa2luZChydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KSwgbG1hY19pZCwgcGtpbmQpO1xuLVx0XHRydnVfbnBjX3NldF9wa2luZChydnUsIHBraW5kLCBwZnZmKTtcbitcdFx0Y2d4ZCA9IHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpO1xuK1xuK1x0XHRtdXRleF9sb2NrKFx1MDAyNmNneGQtXHUwMDNlbG9jayk7XG4rXHRcdGlmIChydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWQocnZ1LCBwY2lmdW5jKSkge1xuK1x0XHRcdGNneF9zZXRfcGtpbmQocnZ1X2NneF9wZGF0YShjZ3hfaWQsIHJ2dSksIGxtYWNfaWQsXG4rXHRcdFx0XHQgICAgICBwa2luZCk7XG4rXHRcdFx0cnZ1X25wY19zZXRfcGtpbmQocnZ1LCBwa2luZCwgcGZ2Zik7XG4rXHRcdH1cbitcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmNneGQtXHUwMDNlbG9jayk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBOSVhfSU5URl9UWVBFX0xCSzpcbiBcdFx0dmYgPSAocGNpZnVuYyBcdTAwMjYgUlZVX1BGVkZfRlVOQ19NQVNLKSAtIDE7XG5AQCAtMTUwOCw3ICsxNTE2LDEwIEBAIGludCBydnVfbWJveF9oYW5kbGVyX25peF9sZl9hbGxvYyhzdHJ1Y3QgcnZ1ICpydnUsXG4gXHRzdHJ1Y3QgcnZ1X2Jsb2NrICpibG9jaztcbiBcdHN0cnVjdCBydnVfcGZ2ZiAqcGZ2ZjtcbiBcdHU2NCBjZmcsIGN0eF9jZmc7XG4rXHRzdHJ1Y3QgY2d4ICpjZ3hkO1xuIFx0aW50IGJsa2FkZHI7XG4rXHR1OCBjZ3g7XG4rXHRpbnQgcGY7XG4gXG4gXHRpZiAoIXJlcS1cdTAwM2VycV9jbnQgfHwgIXJlcS1cdTAwM2VzcV9jbnQgfHwgIXJlcS1cdTAwM2VjcV9jbnQpXG4gXHRcdHJldHVybiBOSVhfQUZfRVJSX1BBUkFNO1xuQEAgLTE2ODAsOCArMTY5MSwxNyBAQCBpbnQgcnZ1X21ib3hfaGFuZGxlcl9uaXhfbGZfYWxsb2Moc3RydWN0IHJ2dSAqcnZ1LFxuIFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1JYX0NGRyhuaXhsZiksIHJlcS1cdTAwM2VyeF9jZmcpO1xuIFxuIFx0LyogQ29uZmlndXJlIHBraW5kIGZvciBUWCBwYXJzZSBjb25maWcgKi9cbi1cdGNmZyA9IE5QQ19UWF9ERUZfUEtJTkQ7XG4tXHRydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHKG5peGxmKSwgY2ZnKTtcbitcdGlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBydnVfZ2V0X3BmKHJ2dS1cdTAwM2VwZGV2LCBwY2lmdW5jKSkpIHtcbitcdFx0cGYgPSBydnVfZ2V0X3BmKHJ2dS1cdTAwM2VwZGV2LCBwY2lmdW5jKTtcbitcdFx0Y2d4ZCA9IHJ2dV9jZ3hfcGRhdGEoY2d4LCBydnUpO1xuK1xuK1x0XHRtdXRleF9sb2NrKFx1MDAyNmNneGQtXHUwMDNlbG9jayk7XG4rXHRcdGlmIChydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWQocnZ1LCBwY2lmdW5jKSkge1xuK1x0XHRcdGNmZyA9IE5QQ19UWF9ERUZfUEtJTkQ7XG4rXHRcdFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1RYX1BBUlNFX0NGRyhuaXhsZiksIGNmZyk7XG4rXHRcdH1cbitcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmNneGQtXHUwMDNlbG9jayk7XG4rXHR9XG4gXG4gXHRpZiAoaXNfcmVwX2RldihydnUsIHBjaWZ1bmMpKSB7XG4gXHRcdHBmdmYtXHUwMDNldHhfY2hhbl9iYXNlID0gUlZVX1NXSVRDSF9MQktfQ0hBTjtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA1OjA5OjU2LjY2Njg0MTY4NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4ODIyMjM5MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBPY3Rlb25UWDIgQUYgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIEFGIGRyaXZlci4gSXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYWRkaW5nIGEgY291cGxlIG9mIGZ1bmN0aW9ucywgYGNneF9nZXRfcGtpbmRgIGFuZCBgcnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkYC4gSXQgYWxzbyB0b3VjaGVzIGBuaXhfaW50ZXJmYWNlX2luaXRgIGFuZCBgcnZ1X21ib3hfaGFuZGxlcl9uaXhfbGZfYWxsb2NgLCB3aGljaCBhcmUga2V5IHBhcnRzIG9mIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgcmVzb3VyY2UgYWxsb2NhdGlvbi4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBpbnZvbHZlIGNoZWNraW5nIGlmIGBydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWRgIGJlZm9yZSBzZXR0aW5nIHRoZSBgcGtpbmRgIHZhbHVlLiBUaGF0IG1ha2VzIHNlbnNlLCBsaWtlbHkgYWRkaW5nIHNvbWUgc29ydCBvZiBjb25maWd1cmF0aW9uIGNvbnRyb2wgb3IgcmVzdHJpY3Rpb24gb24gdGhlIHBraW5kLCB3aGljaCwgaWYgdGhpcyBpcyBhbiBBRiBkcml2ZXIsIHJlbGF0ZXMgdG8gcmVzb3VyY2UgdHlwZXMuXG5cbk5vdywgdGhlIHF1ZXN0aW9uIGJlY29tZXMsIGlzIHRoaXMgZHJpdmVyIGFjdHVhbGx5IHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gY29uc2lkZXIgUUVNVSwgc2luY2UgdGhhdCdzIGEgY29tbW9uIHRlc3RpbmcgcGxhdGZvcm0uIFRoaXMgZHJpdmVyLCB0aGUgTWFydmVsbCBPY3Rlb25UWDIgQUYsIGlzIHR5cGljYWxseSB0aWVkIHRvIHNwZWNpZmljIGhhcmR3YXJlLCBzcGVjaWZpY2FsbHkgZGV2aWNlcyB3aXRoIGBQQ0lfVkVORE9SX0lEX0NBVklVTWAgYW5kIGBQQ0lfREVWSUNFX0lEX1JWVV9BRmAuIFRoZSBtaWxsaW9uIGRvbGxhciBxdWVzdGlvbjogZG9lcyBRRU1VIG9mZmVyIGFueSBlbXVsYXRpb24gZm9yIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmU/IEkgZG9uJ3QgcmVjYWxsIHNlZWluZyBhbnl0aGluZyBsaWtlIHRoYXQuIEkga25vdyB0aGVyZSBhcmUgZW11bGF0aW9ucywgYnV0IHRoZSBPY3Rlb25UWDIgUlZVIEFGIGlzIHByZXR0eSBzcGVjaWFsaXplZC4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gaWYgdGhhdCdzIHN1cHBvcnRlZC5cblxuRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIGlmIHRoaXMgaXMsIGluIGZhY3QsIGEgUENJIGRyaXZlci4gVGhlbiwgaWYgc28sIHRoZSByZWFjaGFiaWxpdHkgb2YgdGhlIGRyaXZlciBiZWNvbWVzIG11Y2ggbW9yZSBjcml0aWNhbCBmb3IgdGVzdGluZy4gSWYgaXQncyAqbm90KiBhIFBDSSBkcml2ZXIsIHRoZW4gdGhlIHF1ZXN0aW9ucyBvZiB2aXJ0dWFsaXphdGlvbiBiZWNvbWUgbGVzcyBjcml0aWNhbCwgYXMgb3RoZXIgcGF0aHMgbWF5IGJlIHJlbGV2YW50LiBUaGUgbmV4dCBzdGVwcyB3aWxsIGludm9sdmUgY29uZmlybWluZyB0aGUgUENJIHN0YXR1cyBvZiB0aGUgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDE4LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDU6MTA6MDIuNTQ5MDY4MDc3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MDgyOTA3MTcsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjaV9kcml2ZXIuKnJ2dV9hZlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDU6MTA6MDUuNDU3MzY4ODI0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzM5NDI1MjM2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gYSBzdWJqZWN0IG1hdHRlciBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipJbnZlc3RpZ2F0aW5nIFBDSSBJRCBNYXBwaW5ncyoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHdvcmsuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGl2ZSBzdHJhaWdodCBpbnRvIHRoZSBQQ0kgSUQgZGF0YWJhc2UuIEkgbmVlZCB0byB0cmFjayBkb3duIHRoZSBkZXZpY2UgaWRlbnRpZmllcnMgZm9yIGBydnVfYWZgIGFuZCBgb2N0ZW9udHgyYC4gVGhlc2UgYXJlIGxpa2VseSByZWxhdGVkIHRvIHNwZWNpZmljIG5ldHdvcmsgaW50ZXJmYWNlIGNhcmQgb3IgYWNjZWxlcmF0b3IgZnVuY3Rpb25zLCBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlaXIgUENJIGNvbmZpZ3VyYXRpb24uIEknbGwgbmVlZCB0byBrbm93IHRoZSB2ZW5kb3IgYW5kIGRldmljZSBJRHMgdG8gcHJvcGVybHkgaWRlbnRpZnkgdGhlbSB3aXRoaW4gdGhlIHN5c3RlbS4gVGhpcyBzZWFyY2ggd2lsbCBiZSBjcnVjaWFsIGZvciBhbnkgaW4tZGVwdGggYW5hbHlzaXMgb3IgdHJvdWJsZXNob290aW5nIEkgdW5kZXJ0YWtlIHJlbGF0ZWQgdG8gdGhlIGhhcmR3YXJlJ3MgaW50ZXJhY3Rpb24gd2l0aGluIHRoZSBQQ0kgYnVzLiBJJ20gdGhpbmtpbmcgSSdsbCBzdGFydCB3aXRoIGEgc3RyYWlnaHRmb3J3YXJkIHNlYXJjaCBmb3IgdGhlc2UgdGVybXMgd2l0aGluIHRoZSBzdGFuZGFyZCBQQ0kgSUQgcmVwb3NpdG9yaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDc2LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDU6MTA6MTIuODUxNjIyNzY1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MDE3NDI0NDAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBDSV9ERVZJQ0VfSURfQ0FWSVVNX1JWVV9BRlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDU6MTA6MTUuNTUzMzcyNjg1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAwNDYzNzI4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIE5ldHdvcmsgRHJpdmVyIExhbmRzY2FwZSoqXG5cblJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSdtIHRoaW5raW5nLCBiYXNlZCBvbiB0aGUgY29udGV4dCwgd2UncmUgbGlrZWx5IGRlYWxpbmcgd2l0aCBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgTWFydmVsbCBPY3Rlb250eDIgYXJjaGl0ZWN0dXJlIGFuZCBpdHMgbmV0d29yayBpbnRlcmZhY2UuIEdpdmVuIHRoYXQsIG15IGd1dCBmZWVsaW5nIHRlbGxzIG1lIHRoZSBjcml0aWNhbCBwaWVjZSBvZiBjb2RlIGlzIHByb2JhYmx5IG5lc3RsZWQgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvYCBkaXJlY3RvcnksIHNwZWNpZmljYWxseSB3aXRoaW4gc29tZXRoaW5nIGxpa2UgYHJ2dS5jYCBvciBhIHNpbWlsYXIgZmlsZSB0aGF0IGhhbmRsZXMgdGhlIHNwZWNpZmljIGFjY2VsZXJhdGVkIGZvcndhcmRpbmcgY29tcG9uZW50cy4gSSdtIGFudGljaXBhdGluZyB0aGF0J3Mgd2hlcmUgdGhlIHJlbGV2YW50IGxvZ2ljIGZvciB0aGUgcGFydGljdWxhciBuZXR3b3JraW5nIGlzc3VlIHdlJ3JlIGZhY2luZyB3aWxsIHJlc2lkZS4gSSdsbCBuZWVkIHRvIGRpZyBpbiB0aGVyZSBhbmQgc2VlIGhvdyB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSdzIGFjY2VsZXJhdGVkIGZlYXR1cmVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzA3LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDU6MTA6MTguNTU4MDE0MTcxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNTA1ODQyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYz0yMDYwPXN0YXRpYyB2b2lkIGNneF9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYy0yMDczLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jOjIwNzQ6c3RydWN0IHBjaV9kcml2ZXIgY2d4X2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYy0yMDc1LVxcdC5uYW1lID0gRFJWX05BTUUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaD0xMzI9c3RydWN0IGNneF9ldmVudF9jYiB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaC0xMzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4Lmg6MTM3OmV4dGVybiBzdHJ1Y3QgcGNpX2RyaXZlciBjZ3hfZHJpdmVyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oLTEzOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21jcy5jPTE1OTk9c3RhdGljIHZvaWQgbWNzX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21jcy5jLTE2MTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvbWNzLmM6MTYxMjpzdHJ1Y3QgcGNpX2RyaXZlciBtY3NfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21jcy5jLTE2MTMtXFx0Lm5hbWUgPSBEUlZfTkFNRSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21jcy5oPTE1NT1zdHJ1Y3QgbWNzX29wcyB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9tY3MuaC0xNjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvbWNzLmg6MTY1OmV4dGVybiBzdHJ1Y3QgcGNpX2RyaXZlciBtY3NfZHJpdmVyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21jcy5oLTE2Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jPTU4OT1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgcHRwX2lkX3RhYmxlW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy02MTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmM6NjEyOnN0cnVjdCBwY2lfZHJpdmVyIHB0cF9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNjEzLVxcdC5uYW1lID0gRFJWX05BTUUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuaD0yOT12b2lkIHB0cF9zdGFydChzdHJ1Y3QgcnZ1ICpydnUsIHU2NCBzY2xrLCB1MzIgZXh0X2Nsa19mcmVxLCB1MzIgZXh0dHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5oLTMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5oOjMxOmV4dGVybiBzdHJ1Y3QgcGNpX2RyaXZlciBwdHBfZHJpdmVyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5oLTMyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM9MzczMz1zdGF0aWMgdm9pZCBydnVfc2h1dGRvd24oc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0zNzQyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjM3NDM6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHJ2dV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMzc0NC1cXHQubmFtZSA9IERSVl9OQU1FLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwNToxMDoxOC42NzMwODI5NjlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDI5MjAwMDUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFzc2Vzc2luZyB0aGUgVmlhYmlsaXR5IG9mIFRlc3RpbmcgdGhpcyBPY3Rlb25UWDIgRHJpdmVyKipcblxuT2theSwgc28gdGhpcyBkcml2ZXIgaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciBNYXJ2ZWxsIE9jdGVvblRYMiBoYXJkd2FyZS4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBcIkNhbiBJIGV2ZW4gKnRvdWNoKiB0aGlzIGluIFFFTVU/XCIgVW5mb3J0dW5hdGVseSwgdGhhdCdzIGEgbm8tZ287IFFFTVUgZG9lc24ndCBvZmZlciBhbnkgZW11bGF0aW9uIGZvciB0aGUgT2N0ZW9uVFgyLiBDcmFwLCB0aGVuIEkgcmVtZW1iZXIgdGhhdCBzeXprYWxsZXIgYWxzbyBkb2Vzbid0IHNlZW0gdG8gaGF2ZSBhbnkgT2N0ZW9uVFgyIGhhcmR3YXJlIGF2YWlsYWJsZS5cblxuQnV0IGhvbGQgb24sIGJlZm9yZSBJIGNvbXBsZXRlbHkgZGlzbWlzcyB0aGlzLCBpcyB0aGVyZSAqYW55KiBpbmRpcmVjdCB3YXkgdG8gZ2V0IGF0IHRoaXMgZHJpdmVyPyBDb25zaWRlcmluZyBpdCdzIGEgUENJIGRyaXZlciwgaXQgc291bmRzIGxpa2UgdGhhdCdzIHVubGlrZWx5IGdpdmVuIHRoZSBoYXJkd2FyZSBzcGVjaWZpY3MuIFRoZSBPY3Rlb25UWDIgaXMgYSBwYXJ0aWN1bGFyIHR5cGUgb2YgaGFyZHdhcmUuIExldCBtZSBjaGVjayBpZiB0aGVyZSBpcyBhbnkgc29mdHdhcmUgZW11bGF0aW9uIGF2YWlsYWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjYwOSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA1OjEwOjIyLjcwMjI4NTk4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTk3NzEwNDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiT0NURU9OVFgyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzo2OmNvbmZpZyBPQ1RFT05UWDJfTUJPWFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctNy1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjk6Y29uZmlnIE9DVEVPTlRYMl9BRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMTAtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzoxMTpcXHRzZWxlY3QgT0NURU9OVFgyX01CT1hcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTEyLVxcdHNlbGVjdCBORVRfREVWTElOS1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZz0yMj1jb25maWcgTkRDX0RJU19EWU5BTUlDX0NBQ0hJTkdcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTIzLVxcdGJvb2wgXFxcIkRpc2FibGUgY2FjaGluZyBvZiBkeW5hbWljIGVudHJpZXMgaW4gTkRDXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6MjQ6XFx0ZGVwZW5kcyBvbiBPQ1RFT05UWDJfQUZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTI1LVxcdGRlZmF1bHQgblxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0zMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjMxOmNvbmZpZyBPQ1RFT05UWDJfUEZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTMyLVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgUGh5c2ljYWwgRnVuY3Rpb24gZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6MzM6XFx0c2VsZWN0IE9DVEVPTlRYMl9NQk9YXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0zNC1cXHRzZWxlY3QgTkVUX0RFVkxJTktcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctNDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzo0NTpjb25maWcgT0NURU9OVFgyX1ZGXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy00Ni1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBPY3Rlb25UWDIgTklDIFZpcnR1YWwgRnVuY3Rpb24gZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6NDc6XFx0ZGVwZW5kcyBvbiBPQ1RFT05UWDJfUEZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTQ4LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc9NTE9Y29uZmlnIFJWVV9FU1dJVENIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy01Mi1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBSVlUgRS1Td2l0Y2ggc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjUzOlxcdGRlcGVuZHMgb24gT0NURU9OVFgyX1BGXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy01NC1cXHRkZWZhdWx0IG1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL01ha2VmaWxlLTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfT0NURU9OVFgyX01CT1gpICs9IGFmL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9BRikgKz0gYWYvXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfT0NURU9OVFgyX1BGKSArPSBuaWMvXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9NYWtlZmlsZT02PWNjZmxhZ3MteSArPSAtSSQoc3JjKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9NQk9YKSArPSBydnVfbWJveC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfT0NURU9OVFgyX0FGKSArPSBydnVfYWYub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL01ha2VmaWxlLTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYz02Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgY2d4X2lkX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmM6Njc6XFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX0NHWCkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYy02OC1cXHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfQ04xMEtfUlBNLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmgtMTUtIC8qIFBDSSBkZXZpY2UgSURzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4Lmg6MTY6I2RlZmluZVxcdFBDSV9ERVZJRF9PQ1RFT05UWDJfQ0dYXFx0XFx0MHhBMDU5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmgtMTctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmM9MTU0PURFRklORV9TSE9XX0FUVFJJQlVURShucGNfbWNhbV9sYXlvdXQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0xNTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jOjE1NjojZGVmaW5lIF9fT0NURU9OVFgyX0RFQlVHRlNfQVRUUklCVVRFX0ZPUFMoX19uYW1lKVxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMTU3LXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIF9fbmFtZSAjIyBfZm9wcyA9IHtcXHRcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMTY0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYzoxNjU6I2RlZmluZSBERUZJTkVfT0NURU9OVFgyX0RFQlVHRlNfQVRUUklCVVRFX1dJVEhfU0laRShfX25hbWUsIF9fc2l6ZSlcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jLTE2Ni1zdGF0aWMgaW50IF9fbmFtZSAjIyBfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMTcwLX1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jOjE3MTpfX09DVEVPTlRYMl9ERUJVR0ZTX0FUVFJJQlVURV9GT1BTKF9fbmFtZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMTcyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jPTE4MT1zdGF0aWMgaW50IG5wY19tY2FtX2RzdGF0c19zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdW51c2VkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jLTI0Mi0jZGVmaW5lIFRPVEFMX1NaIChNQVhfTlVNX0JBTktTICogTUFYX05VTV9TVUJfQkFOS1MgKiBNQVhfU1VCQkFOS19ERVBUSCAqIDY0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYzoyNDM6REVGSU5FX09DVEVPTlRYMl9ERUJVR0ZTX0FUVFJJQlVURV9XSVRIX1NJWkUobnBjX21jYW1fZHN0YXRzLCBUT1RBTF9TWik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jLTI0NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmM9MjQ1PXN0YXRpYyBpbnQgbnBjX21jYW1fbWlzbWF0Y2hfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKnVudXNlZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0yODQtLyogXFxcIiV1XFxcXHQlZFxcXFx0JXVcXFxcblxcXCIgbmVlZHMgbGVzcyB0aGFuIDY0IGNoYXJhY3RlcnMgdG8gcHJpbnQuICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jOjI4NTpERUZJTkVfT0NURU9OVFgyX0RFQlVHRlNfQVRUUklCVVRFX1dJVEhfU0laRShucGNfbWNhbV9taXNtYXRjaCwgVE9UQUxfU1opO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0yODYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy0yMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzoyMTojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfUFRQXFx0XFx0XFx0MHhBMDBDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtMjItI2RlZmluZSBQQ0lfU1VCU1lTX0RFVklEX09DVFgyXzk4eHhfUFRQXFx0XFx0MHhCMTAwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy0yNy0jZGVmaW5lIFBDSV9TVUJTWVNfREVWSURfT0NUWDJfOTVYWE9fUFRQXFx0MHhCNjAwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmM6Mjg6I2RlZmluZSBQQ0lfREVWSURfT0NURU9OVFgyX1JTVFxcdFxcdFxcdDB4QTA4NVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTI5LSNkZWZpbmUgUENJX0RFVklEX0NOMTBLX1BUUFxcdFxcdFxcdDB4QTA5RVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmM9NTg5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBwdHBfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzo1OTA6XFx0eyBQQ0lfREVWSUNFX1NVQihQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9QVFAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNTkxLVxcdFxcdFxcdCBQQ0lfVkVORE9SX0lEX0NBVklVTSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy01OTItXFx0XFx0XFx0IFBDSV9TVUJTWVNfREVWSURfT0NUWDJfOTh4eF9QVFApIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmM6NTkzOlxcdHsgUENJX0RFVklDRV9TVUIoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9PQ1RFT05UWDJfUFRQLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTU5NC1cXHRcXHRcXHQgUENJX1ZFTkRPUl9JRF9DQVZJVU0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNTk1LVxcdFxcdFxcdCBQQ0lfU1VCU1lTX0RFVklEX09DVFgyXzk2WFhfUFRQKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jOjU5NjpcXHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1BUUCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy01OTctXFx0XFx0XFx0IFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTU5OC1cXHRcXHRcXHQgUENJX1NVQlNZU19ERVZJRF9PQ1RYMl85NVhYX1BUUCkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzo1OTk6XFx0eyBQQ0lfREVWSUNFX1NVQihQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9QVFAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNjAwLVxcdFxcdFxcdCBQQ0lfVkVORE9SX0lEX0NBVklVTSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy02MDEtXFx0XFx0XFx0IFBDSV9TVUJTWVNfREVWSURfT0NUWDJfOTVYWE5fUFRQKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jOjYwMjpcXHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1BUUCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy02MDMtXFx0XFx0XFx0IFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTYwNC1cXHRcXHRcXHQgUENJX1NVQlNZU19ERVZJRF9PQ1RYMl85NU1NX1BUUCkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzo2MDU6XFx0eyBQQ0lfREVWSUNFX1NVQihQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9QVFAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNjA2LVxcdFxcdFxcdCBQQ0lfVkVORE9SX0lEX0NBVklVTSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jPTQ0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBydnVfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYzo0NTpcXHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTQ2LVxcdHsgMCwgfSAgLyogZW5kIG9mIHRhYmxlICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYz05Mjc9c3RhdGljIHZvaWQgcnZ1X2dldF9sYmtfYnVmc2l6ZShzdHJ1Y3QgcnZ1ICpydnUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy05MzMtXFx0cGRldiA9IHBjaV9nZXRfZGV2aWNlKFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjkzNDpcXHRcXHRcXHQgICAgICBQQ0lfREVWSURfT0NURU9OVFgyX0xCSywgcGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtOTM1LVxcdGlmICghcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jPTM0NDI9aW50IHJ2dV9nZXRfbnVtX2xia19jaGFucyh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMzQ0Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYzozNDQ4OlxcdHBkZXYgPSBwY2lfZ2V0X2RldmljZShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9MQkssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMzQ0OS1cXHRcXHRcXHQgICAgICBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oLTIzLS8qIFBDSSBkZXZpY2UgSURzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1Lmg6MjQ6I2RlZmluZVxcdFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGXFx0XFx0MHhBMDY1XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1Lmg6MjU6I2RlZmluZVxcdFBDSV9ERVZJRF9PQ1RFT05UWDJfTEJLXFx0XFx0XFx0MHhBMDYxXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgtMjYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY24xMGsuYz0zOTI9c3RhdGljIHZvaWQgcnZ1X2xia19zZXRfY2hhbm5lbHMoc3RydWN0IHJ2dSAqcnZ1KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NuMTBrLmMtNDE1LVxcdFxcdHBkZXYgPSBwY2lfZ2V0X2RldmljZShQQ0lfVkVORE9SX0lEX0NBVklVTSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY24xMGsuYzo0MTY6XFx0XFx0XFx0XFx0ICAgICAgUENJX0RFVklEX09DVEVPTlRYMl9MQkssIHBkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jbjEway5jLTQxNy1cXHRcXHRpZiAoIXBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jPTI4MzM9c3RhdGljIGludCBjZ3hfcHJpbnRfc3RhdHMoc3RydWN0IHNlcV9maWxlICpzLCBpbnQgbG1hY19pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtMjg0My1cXHRydnUgPSBwY2lfZ2V0X2RydmRhdGEocGNpX2dldF9kZXZpY2UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYzoyODQ0OlxcdFxcdFxcdFxcdFxcdCAgICAgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYsIE5VTEwpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jLTI4NDUtXFx0aWYgKCFydnUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jPTI5NTE9c3RhdGljIGludCBjZ3hfcHJpbnRfZG1hY19mbHQoc3RydWN0IHNlcV9maWxlICpzLCBpbnQgbG1hY19pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtMjk2Mi1cXHRydnUgPSBwY2lfZ2V0X2RydmRhdGEocGNpX2dldF9kZXZpY2UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYzoyOTYzOlxcdFxcdFxcdFxcdFxcdCAgICAgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYsIE5VTEwpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jLTI5NjQtXFx0aWYgKCFydnUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jPTMwMTE9c3RhdGljIGludCBjZ3hfcHJpbnRfZndkYXRhKHN0cnVjdCBzZXFfZmlsZSAqcywgaW50IGxtYWNfaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jLTMwMTktXFx0cnZ1ID0gcGNpX2dldF9kcnZkYXRhKHBjaV9nZXRfZGV2aWNlKFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmM6MzAyMDpcXHRcXHRcXHRcXHRcXHQgICAgIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGLCBOVUxMKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYy0zMDIxLVxcdGlmICghcnZ1KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL01ha2VmaWxlLTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9QRikgKz0gcnZ1X25pY3BmLm8gb3R4Ml9wdHAub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19PQ1RFT05UWDJfVkYpICs9IHJ2dV9uaWN2Zi5vIG90eDJfcHRwLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvTWFrZWZpbGUtOC1vYmotJChDT05GSUdfUlZVX0VTV0lUQ0gpICs9IHJ2dV9yZXAub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNDItLyogUENJIGRldmljZSBJRHMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo0MzojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX1BGICAgICAgICAgICAgICAweEEwNjNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo0NDojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX1ZGXFx0XFx0MHhBMDY0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg6NDU6I2RlZmluZSBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRlZGXFx0XFx0MHhBMEY4XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNDYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaC01MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo1MTojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfU0RQX1JFUFxcdFxcdDB4QTBGN1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTUyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg9NTk3PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19vdHgyX2xia3ZmKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTU5OC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg6NTk5OlxcdHJldHVybiAocGRldi1cXHUwMDNlZGV2aWNlID09IFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGVkYpIHx8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNjAwLVxcdFxcdChwZGV2LVxcdTAwM2VkZXZpY2UgPT0gUENJX0RFVklEX1JWVV9SRVApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg9NjE1PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19vdHgyX3NkcF9yZXAoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNjE2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo2MTc6XFx0cmV0dXJuIHBkZXYtXFx1MDAzZWRldmljZSA9PSBQQ0lfREVWSURfT0NURU9OVFgyX1NEUF9SRVA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNjE4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmM9MzY9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG90eDJfcGZfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jOjM3OlxcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfUEYpIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYy0zOC1cXHR7IDAsIH0gIC8qIGVuZCBvZiB0YWJsZSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYz0yMj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgb3R4Ml92Zl9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmM6MjM6XFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRlZGKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmM6MjQ6XFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9WRikgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jOjI1OlxcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9TRFBfUkVQKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmMtMjYtXFx0eyB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA1OjEwOjIyLjgyMjA2NDgxOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDMyMTA3OTQ5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgQXNzZXNzbWVudCBmb3IgTWFydmVsbCBPY3Rlb25UWDIgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBoYXJkd2FyZSBkcml2ZXIgZm9yIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiBzeXprYWxsZXIgZXZlbiB0b3VjaCB0aGlzPyBJIGtub3cgaXQgaGFzIHdheXMgdG8gdGVzdCBQQ0kgZHJpdmVycywgbGlrZSBgc3l6X3BjaV9kZXZpY2VfYWRkYCBhbmQgYHN5el9wY2lfZGV2aWNlX2FkZF92MmAsIGJ1dCB0aGF0J3MgdXN1YWxseSBmb3Igc2ltcGxlciBkcml2ZXJzLiBDYW4gc3l6a2FsbGVyIHByb3Blcmx5IGZ1enogdGhpcz8gSSBuZWVkIHRvIGNvbnNpZGVyIGlmIGl0J3Mgd29ydGggdGhlIGVmZm9ydCBnaXZlbiB0aGUgZHJpdmVyJ3MgY29tcGxleGl0eS5cblxuVGhpcyBwYXRjaCBtb2RpZmllcyBhIGZldyBmdW5jdGlvbnMgKGBjZ3hfZ2V0X3BraW5kYCwgYHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZGAsIGBuaXhfaW50ZXJmYWNlX2luaXRgLCBhbmQgYHJ2dV9tYm94X2hhbmRsZXJfbml4X2xmX2FsbG9jYCkuIEl0IGxvb2tzIGxpa2UgYSBuZXcgY2hlY2ssIGBydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWRgLCBpcyBiZWluZyBpbnRyb2R1Y2VkIGJlZm9yZSBjYWxscyB0byBgY2d4X3NldF9wa2luZGAgYW5kIGBydnVfbnBjX3NldF9wa2luZGAuICBBbmQgYHJ2dV9tYm94X2hhbmRsZXJfbml4X2xmX2FsbG9jYCBpcyBhIG1haWxib3ggaGFuZGxlciwgdGhvc2UgYXJlIG9mdGVuIHRhcmdldHMgZm9yIHN5emthbGxlci5cblxuQnV0LCB0aGUgcHJvbXB0IHNheXMgdG8gcmV0dXJuIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIgaWYgdGhlIHBhdGNoIGludm9sdmVzIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gIENhbiB0aGlzIE1hcnZlbGwgT2N0ZW9uVFgyIGRyaXZlciBiZSBlbXVsYXRlZCBpbiBRRU1VPyBJIGRvbid0IHRoaW5rIHNvLiBUaGVyZSdzIG5vIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGZvciBpdC4gIFRoZSBzeXprYWxsZXIgUENJIGZ1enppbmcgbWlnaHQgYmUgYWJsZSB0byAqdG91Y2gqIGl0LCBidXQgaXQncyB2ZXJ5IGxpbWl0ZWQgd2hlbiBkZWFsaW5nIHdpdGggY29tcGxleCBOSUMgZHJpdmVycyBsaWtlIHRoaXMgb25lLCBiZWNhdXNlIG9mIHRob3NlIERNQSByaW5ncyBhbmQgY29tcGxpY2F0ZWQgTU1JTyBzZXF1ZW5jZXMuIFN5emthbGxlcidzIGBzeXpfcGNpX2RldmljZV9hZGRgIGlzbid0IGNvbnNpZGVyZWQgXCJzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZVwiIGluIHRoZSBzZW5zZSBvZiB0aGUgcHJvbXB0LlxuXG5MZXQgbWUgZG91YmxlLWNoZWNrIGFib3V0IHRoZSBPY3Rlb25UWDIuIFwiT0NURU9OVFgyX0FGXCIgc2VlbXMgdG8gYmUgcmVsYXRlZC4gIFllcCwgaXQncyBhIFBDSSBkcml2ZXIuIEl0J3MgZm9yIGBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRmAuIFN0aWxsIG5vIFFFTVUgZW11bGF0aW9uLlxuXG5Tbywgc2luY2UgaXQncyBhICpwdXJlKiBoYXJkd2FyZSBkcml2ZXIsIHdpdGggbm8gYXZhaWxhYmxlIFFFTVUgZW11bGF0aW9uLCB0aGUgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gIFN5emthbGxlciBtaWdodCBwb2tlIGF0IGl0LCBidXQgdGhhdCdzIG5vdCB0aGUgc2FtZSB0aGluZy4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUgaXMgYSBgc3l6X2AgcHNldWRvLXN5c2NhbGwgZm9yIHRoaXMuIEdpdmVuIHRoZSBwcmVtaXNlIG9mIHRoZSBwcm9tcHQsIHRoZSBhbnN3ZXIgaXMgXCJXb3J0aEZ1enppbmc9ZmFsc2VcIi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMxMjcsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDU6MTA6MzMuMTQzMTQ3NjM2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODg3ODE2NjE3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzeXpfLipvY3Rlb25cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA1OjEwOjM2LjAzMDk3NDczM1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTUzMzcxNTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4gdGhpcyBmaWVsZCwgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6XG5cbioqQ2hlY2tpbmcgZm9yIFNwZWNpYWxpemVkIFN5c2NhbGxzKipcblxuQWxyaWdodCwgSSdtIHRoaW5raW5nLCBsZXQncyBxdWlja2x5IHNlZSBpZiB0aGVyZSBhcmUgYW55IGV4aXN0aW5nIGBzeXpfYCBwc2V1ZG8tc3lzY2FsbHMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciBoYW5kbGluZyB0aGUgYHJ2dWAgb3IgYGNneGAgc3Vic3lzdGVtcy4gVGhlc2UgYXJlIGNvbXBsZXgsIGFuZCBJJ20gcHJldHR5IHN1cmUgSSd2ZSBzZWVuIHNvbWUgY3VzdG9tIHN5c3RlbSBjYWxsIGltcGxlbWVudGF0aW9ucyBpbiB0aGUgcGFzdCB0aGF0IHRhcmdldCB0aGVzZSBhcmVhcy4gTXkgZm9jdXMgaXMgb24gZWZmaWNpZW5jeSBhbmQgd2hldGhlciBJIGNhbiBsZXZlcmFnZSBzb21ldGhpbmcgYWxyZWFkeSBidWlsdCwgYXMgSSBrbm93IG15IGZpZWxkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDQ2OCwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA1OjEwOjM4Ljk4NDM1MDU5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTkzNzI3MDA2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzeXpfLipydnVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA1OjEwOjQxLjk3ODA4NzI5NloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTQ5OTcxOTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgZnJhbWVkIGFzIG15IGludGVybmFsIHRob3VnaHQgcHJvY2VzczpcblxuKipJbnZlc3RpZ2F0aW5nIFBvdGVudGlhbCBgc3l6X2AgU3lzdGVtIENhbGxzIGluIGBuaXhgKipcblxuQWxyaWdodCwgdGltZSB0byBkaWcgaW4uIE15IHByaW1hcnkgb2JqZWN0aXZlIGF0IHRoaXMgbW9tZW50IGlzIHRvIGRldGVybWluZSB3aGV0aGVyIGFueSBgc3l6X2AgcHNldWRvLXN5c3RlbSBjYWxscyBleGlzdCB3aXRoaW4gdGhlIGBuaXhgIG9wZXJhdGluZyBzeXN0ZW0gZW52aXJvbm1lbnQuIEknbSBvcGVyYXRpbmcgb24gdGhlIGFzc3VtcHRpb24gdGhhdCBhIGBzeXpfYCBwcmVmaXggdXN1YWxseSBpbmRpY2F0ZXMgc29tZSBraW5kIG9mIGluc3RydW1lbnRhdGlvbiBvciBmdXp6aW5nLXJlbGF0ZWQgZnVuY3Rpb25hbGl0eSwgbGlrZWx5IHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0b29scyBsaWtlIHN5emthbGxlci4gVGhlcmVmb3JlLCBpZGVudGlmeWluZyB0aGVzZSBjYWxscyB3b3VsZCBiZSBhIGNydWNpYWwgZmlyc3Qgc3RlcCBpbiBhbnkgYXR0ZW1wdCBhdCByZXZlcnNlLWVuZ2luZWVyaW5nIG9yIGZ1enppbmcgYG5peGAgaXRzZWxmLiBUaGlzIG1lYW5zIEknbGwgbmVlZCB0byBrbm93IHdoaWNoIHN5c2NhbGxzIGFyZSBpbiBwbGFjZSwgc28gSSBjYW4gc2VlIGlmIGFueSBhcmUgcHJlZml4ZWQgd2l0aCB0aGUgY29ycmVjdCBjaGFyYWN0ZXJzLiBNeSBhcHByb2FjaCB3aWxsIGJlIG1ldGhvZGljYWwgYW5kIHRhcmdldGVkLCBzdGFydGluZyB3aXRoIHRoZSBzaW1wbGVzdCBjaGVja3MgYW5kIHRoZW4gd29ya2luZyBpbnRvIG1vcmUgY29tcGxleCBvcHRpb25zIGlmIG5lY2Vzc2FyeS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ2NTgsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwNToxMDo0NS4xMjgwNjIzODlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4ODgwNTk1NzgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN5el8uKm5peFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDU6MTA6NDguMDE2MTMyMzM3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3NDUwMDA1MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIERlY2lzaW9uIGZvciB0aGUgT2N0ZW9uVFgyIEFGIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSBzaXR1YXRpb24gaXMgY2xlYXIuIFRoaXMgcGF0Y2ggdG91Y2hlcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlciwgYW5kIGFzIHdlIGFsbCBrbm93LCB0aGVyZSdzIG5vIHN5emthbGxlciBzdXBwb3J0IHNwZWNpZmljYWxseSBidWlsdCBmb3IgdGhpcyBoYXJkd2FyZS4gVGhlIGNvcmUgcHJvYmxlbSwgaG93ZXZlciwgaXMgdGhhdCB0aGlzIGlzIGEgKmhhcmR3YXJlLXNwZWNpZmljKiBkcml2ZXIgZm9yIHRoZSBPY3Rlb25UWDIuIFRoZXJlJ3Mgbm8gZW11bGF0aW9uIGF2YWlsYWJsZSwgbm90IGV2ZW4gYSBiYXNpYyBvbmUgaW4gUUVNVSwgR0NFLCBvciBvdGhlciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoaXMgbWVhbnMgdGhlIGNvZGUgcGF0aHMgYXJlIHV0dGVybHkgdW5yZWFjaGFibGUgdW5kZXIgYW55IGN1cnJlbnQgdmlydHVhbCBzZXR1cC5cblxuTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoZSBwcm9tcHQgY3JpdGVyaWEsIHNpbmNlIHdlIG5lZWQgdG8gYmUgcHJlY2lzZS4gWWVzLCBpdCBwZXJmZWN0bHkgZml0czogXCJSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS5cIiBCaW5nby4gV2UncmUgZ29sZGVuLiBUaGlzIHBhdGNoIGlzIGlzb2xhdGVkIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2AgZGlyZWN0b3J5LCBzbyBpdCBpcyB0aGUgT2N0ZW9uVFgyIEFGIGRyaXZlci5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSdsbCBzb2xpZGlmeSB0aGUgcmVhc29uaW5nOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvKS4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIgZm9yIHdoaWNoIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBpbiBRRU1VIG9yIG90aGVyIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCBkdXJpbmcgZnV6emluZyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCJcblxuTGV0IG1lIGNvbmZpcm0gdGhlIGZpbGUgbW9kaWZpY2F0aW9ucyBvbmUgbGFzdCB0aW1lIHRvIHJlbW92ZSBhbnkgZG91YnQ6XG4tIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guY2Bcbi0gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oYFxuLSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmhgXG4tIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmNgXG4tIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmNgXG5cbll1cCwgYWxsIHdpdGhpbiB0aGF0IGRyaXZlci5cblxuQWxyaWdodCwgSSdtIGNvbmZpZGVudC4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2Agd2l0aCBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ5MDQsIk91dHB1dFRva2VucyI6OTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDU6MTA6NTUuNzYxMTM2NDMzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIyMTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyIGZvciB3aGljaCB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gaW4gUUVNVSBvciBvdGhlciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgZHVyaW5nIGZ1enppbmcgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyIGZvciB3aGljaCB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gaW4gUUVNVSBvciBvdGhlciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgZHVyaW5nIGZ1enppbmcgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowqbsz7[1] Phase: Running StartedAt: 2026-06-25 05:11:22 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbsz7[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-06-25 05:11:22 +0000 UTC FinishedAt: 2026-06-25 05:11:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}