Name: series-workflowvc2bq Phase: Failed StartedAt: 2026-09-07 02:16:11 +0000 UTC FinishedAt: 2026-09-07 02:17:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvc2bq[0] Phase: Succeeded StartedAt: 2026-09-07 02:16:11 +0000 UTC FinishedAt: 2026-09-07 02:17:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvc2bq[0].run-triage Phase: Succeeded StartedAt: 2026-09-07 02:16:11 +0000 UTC FinishedAt: 2026-09-07 02:17:47 +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+CgkJCTx0ZD4yMDI2LzA5LzA3IDAyOjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtBbGwgY2hhbmdlcyBpbiB0aGlzIHBhdGNoIHNlcmllcyBhcmUgc3RyaWN0bHkgY29uZmluZWQgdG8gdXNlci1zcGFjZSB0b29saW5nIHVuZGVyIGB0b29scy9gIChzcGVjaWZpY2FsbHkgYHRvb2xzL3BlcmZgIGFuZCBgdG9vbHMvYnVpbGRgKSwgd2hpY2ggZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlIChgdm1saW51eGApIG9yIGtlcm5lbCBtb2R1bGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwMjoxNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDNjZjhmMzQ4YTUyNWE5NTdjODc4NTY4ZDQ2ZDgwMGNhMDZkYjFhOTNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCA3IDAyOjE3OjI2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL01ha2VmaWxlLmZlYXR1cmUgYi90b29scy9idWlsZC9NYWtlZmlsZS5mZWF0dXJlXG5pbmRleCA5OWViMGVhMDk1Mzc1Li40ZWM5NWMzNWE1YzE5IDEwMDY0NFxuLS0tIGEvdG9vbHMvYnVpbGQvTWFrZWZpbGUuZmVhdHVyZVxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvYnVpbGQvTWFrZWZpbGUuZmVhdHVyZVxuQEAgLTExMyw4ICYjNDM7MTEzLDcgQEAgRkVBVFVSRV9URVNUU19FWFRSQSA6PSAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgY29tcGlsZS14MzIgICAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgY3BsdXMtZGVtYW5nbGUgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgY3hhLWRlbWFuZ2xlICAgICAgICAgICAgICAgICAgIFxcXG4tICAgICAgICAgZ3RrMiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4tICAgICAgICAgZ3RrMi1pbmZvYmFyICAgICAgICAgICAgICAgICAgIFxcXG4mIzQzOyAgICAgICAgIGd0azQgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxuICAgICAgICAgIGhlbGxvICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxuICAgICAgICAgIGJhYmVsdHJhY2UyLWN0Zi13cml0ZXIgICAgICAgICBcXFxuICAgICAgICAgIGxpYmNhcHN0b25lICAgICAgICAgICAgICAgICAgICBcXFxuQEAgLTE0Myw2ICYjNDM7MTQyLDcgQEAgZW5kaWZcbiBGRUFUVVJFX0RJU1BMQVkgPz0gICAgICAgICAgICAgIFxcXG4gICAgICAgICAgbGliZHcgICAgICAgICAgICAgICAgICBcXFxuICAgICAgICAgIGdsaWJjICAgICAgICAgICAgICAgICAgXFxcbiYjNDM7ICAgICAgICAgZ3RrNCAgICAgICAgICAgICAgICAgICBcXFxuICAgICAgICAgIGxpYmVsZiAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICBsaWJudW1hICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgbnVtYV9udW1fcG9zc2libGVfY3B1cyBcXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvTWFrZWZpbGUgYi90b29scy9idWlsZC9mZWF0dXJlL01ha2VmaWxlXG5pbmRleCA3ZDE2NTAxODExNmE1Li4wMWM0OGU2ZWYwMjFkIDEwMDY0NFxuLS0tIGEvdG9vbHMvYnVpbGQvZmVhdHVyZS9NYWtlZmlsZVxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvYnVpbGQvZmVhdHVyZS9NYWtlZmlsZVxuQEAgLTExLDggJiM0MzsxMSw3IEBAIEZJTEVTPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgdGVzdC1ldmVudGZkLmJpbiAgICAgICAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICB0ZXN0LWZvcnRpZnktc291cmNlLmJpbiAgICAgICAgICAgICAgICBcXFxuICAgICAgICAgIHRlc3QtZ2xpYmMuYmluICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4tICAgICAgICAgdGVzdC1ndGsyLmJpbiAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbi0gICAgICAgICB0ZXN0LWd0azItaW5mb2Jhci5iaW4gICAgICAgICAgICAgICAgICBcXFxuJiM0MzsgICAgICAgICB0ZXN0LWd0azQuYmluICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxuICAgICAgICAgIHRlc3QtaGVsbG8uYmluICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgdGVzdC1saWJiZmQuYmluICAgICAgICAgICAgICAgICAgICAgICAgXFxcbiBcdCB0ZXN0LWxpYmJmZC10aHJlYWRzYWZlLmJpbiAgICAgIFx0XFxcbkBAIC0yNDAsMTEgJiM0MzsyMzksOCBAQCAkKE9VVFBVVCl0ZXN0LWxpYmNwdXBvd2VyLmJpbjpcbiAkKE9VVFBVVCl0ZXN0LWxpYnRyYWNlZnMuYmluOlxuIFx0ICQoQlVJTEQpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWNmbGFncyBsaWJ0cmFjZWZzIDJcdTAwM2UvZGV2L251bGwpIC1sdHJhY2Vmc1xuIFxuLSQoT1VUUFVUKXRlc3QtZ3RrMi5iaW46XG4tXHQkKEJVSUxEKSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIC0tY2ZsYWdzIGd0ayYjNDM7LTIuMCAyXHUwMDNlL2Rldi9udWxsKSAtV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zXG4tXG4tJChPVVRQVVQpdGVzdC1ndGsyLWluZm9iYXIuYmluOlxuLVx0JChCVUlMRCkgJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyAtLWNmbGFncyBndGsmIzQzOy0yLjAgMlx1MDAzZS9kZXYvbnVsbClcbiYjNDM7JChPVVRQVVQpdGVzdC1ndGs0LmJpbjpcbiYjNDM7XHQkKEJVSUxEKSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIC0tY2ZsYWdzIGd0azQgMlx1MDAzZS9kZXYvbnVsbClcbiBcbiBncmVwLWxpYnMgID0gJChmaWx0ZXIgLWwlLCQoMSkpXG4gc3RyaXAtbGlicyA9ICQoZmlsdGVyLW91dCAtbCUsJCgxKSlcbmRpZmYgLS1naXQgYS90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi1pbmZvYmFyLmMgYi90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi1pbmZvYmFyLmNcbmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggYjFiNzE2ZGQ1NzMzMC4uMDAwMDAwMDAwMDAwMFxuLS0tIGEvdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azItaW5mb2Jhci5jXG4mIzQzOyYjNDM7JiM0MzsgL2Rldi9udWxsXG5AQCAtMSwxMiAmIzQzOzAsMCBAQFxuLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4tI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkIFwmIzM0Oy1Xc3RyaWN0LXByb3RvdHlwZXNcJiMzNDtcbi0jaW5jbHVkZSBcdTAwM2NndGsvZ3RrLmhcdTAwM2Vcbi0jcHJhZ21hIEdDQyBkaWFnbm9zdGljIGVycm9yIFwmIzM0Oy1Xc3RyaWN0LXByb3RvdHlwZXNcJiMzNDtcbi1cbi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuLXtcbi1cdGd0a19pbml0KFx1MDAyNmFyZ2MsIFx1MDAyNmFyZ3YpO1xuLVx0Z3RrX2luZm9fYmFyX25ldygpO1xuLVxuLVx0cmV0dXJuIDA7XG4tfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGsyLmMgYi90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrNC5jXG5zaW1pbGFyaXR5IGluZGV4IDc2JVxucmVuYW1lIGZyb20gdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azIuY1xucmVuYW1lIHRvIHRvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGs0LmNcbmluZGV4IDJhYWY0YmZjMjA1NTYuLmI5NTIwZTc0MDhiOTkgMTAwNjQ0XG4tLS0gYS90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrNC5jXG5AQCAtMyw5ICYjNDM7Myw5IEBAXG4gI2luY2x1ZGUgXHUwMDNjZ3RrL2d0ay5oXHUwMDNlXG4gI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBlcnJvciBcJiMzNDstV3N0cmljdC1wcm90b3R5cGVzXCYjMzQ7XG4gXG4taW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiYjNDM7aW50IG1haW4odm9pZClcbiB7XG4tXHRndGtfaW5pdChcdTAwMjZhcmdjLCBcdTAwMjZhcmd2KTtcbiYjNDM7XHRndGtfaW5pdCgpO1xuIFxuICAgICAgICAgcmV0dXJuIDA7XG4gfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvRG9jdW1lbnRhdGlvbi9wZXJmLXJlcG9ydC50eHQgYi90b29scy9wZXJmL0RvY3VtZW50YXRpb24vcGVyZi1yZXBvcnQudHh0XG5pbmRleCAyMmY4N2VhYTMyNzk2Li43YWY5YjNmODFjMDY1IDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi9Eb2N1bWVudGF0aW9uL3BlcmYtcmVwb3J0LnR4dFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi9Eb2N1bWVudGF0aW9uL3BlcmYtcmVwb3J0LnR4dFxuQEAgLTM1MSw3ICYjNDM7MzUxLDcgQEAgT1BUSU9OU1xuIFx0cmVxdWlyZXMgYSB0dHksIGlmIG9uZSBpcyBub3QgcHJlc2VudCwgYXMgd2hlbiBwaXBpbmcgdG8gb3RoZXJcbiBcdGNvbW1hbmRzLCB0aGUgc3RkaW8gaW50ZXJmYWNlIGlzIHVzZWQuXG4gXG4tLS1ndGs6OiBVc2UgdGhlIEdUSzIgaW50ZXJmYWNlLlxuJiM0MzstLWd0azo6IFVzZSB0aGUgR1RLNCBpbnRlcmZhY2UuXG4gXG4gLWs6OlxuIC0tdm1saW51eD1cdTAwM2NmaWxlXHUwMDNlOjpcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL01ha2VmaWxlIGIvdG9vbHMvcGVyZi9NYWtlZmlsZVxuaW5kZXggNWI3MTM4MzdlZWRlNy4uNTYwMTQxMDY0NzlhMyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvTWFrZWZpbGVcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvTWFrZWZpbGVcbkBAIC0xMDYsNyAmIzQzOzEwNiw3IEBAIGNsZWFuOlxuICMgbWFrZSAtQyB0b29scy9wZXJmIC1mIHRlc3RzL21ha2VcbiAjXG4gYnVpbGQtdGVzdDpcbi1cdEAkKE1BS0UpIFNIVUY9MSAtZiB0ZXN0cy9tYWtlIFJFVVNFX0ZFQVRVUkVTX0RVTVA9MSBNSz1NYWtlZmlsZSBTRVRfUEFSQUxMRUw9MSAtLW5vLXByaW50LWRpcmVjdG9yeSB0YXJwa2cgbWFrZV9zdGF0aWMgbWFrZV93aXRoX2d0azIgb3V0XG4mIzQzO1x0QCQoTUFLRSkgU0hVRj0xIC1mIHRlc3RzL21ha2UgUkVVU0VfRkVBVFVSRVNfRFVNUD0xIE1LPU1ha2VmaWxlIFNFVF9QQVJBTExFTD0xIC0tbm8tcHJpbnQtZGlyZWN0b3J5IHRhcnBrZyBtYWtlX3N0YXRpYyBtYWtlX3dpdGhfZ3RrNCBvdXRcbiBcbiBidWlsZC10ZXN0LXRhcmJhbGw6XG4gXHRAJChNQUtFKSAtZiB0ZXN0cy9tYWtlIFJFVVNFX0ZFQVRVUkVTX0RVTVA9MSBNSz1NYWtlZmlsZSBTRVRfUEFSQUxMRUw9MSAtLW5vLXByaW50LWRpcmVjdG9yeSBvdXRcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL01ha2VmaWxlLmNvbmZpZyBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUuY29uZmlnXG5pbmRleCA0ZDU5OTNkYTlmOTQ1Li40ZWU3MzkzYTM5ZjkxIDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi9NYWtlZmlsZS5jb25maWdcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUuY29uZmlnXG5AQCAtNzc0LDIxICYjNDM7Nzc0LDIyIEBAIGlmbmRlZiBOT19TTEFOR1xuICAgZW5kaWZcbiBlbmRpZlxuIFxuLWlmZGVmIEdUSzJcbi0gIEZMQUdTX0dUSzI9JChDRkxBR1MpICQoTERGTEFHUykgJChFWFRMSUJTKSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIC0tY2ZsYWdzIGd0ayYjNDM7LTIuMCAyXHUwMDNlL2Rldi9udWxsKVxuLSAgJChjYWxsIGZlYXR1cmVfY2hlY2ssZ3RrMilcbi0gIGlmbmVxICgkKGZlYXR1cmUtZ3RrMiksIDEpXG4tICAgICQod2FybmluZyBHVEsyIG5vdCBmb3VuZCwgZGlzYWJsZXMgR1RLMiBzdXBwb3J0LiBQbGVhc2UgaW5zdGFsbCBndGsyLWRldmVsIG9yIGxpYmd0azIuMC1kZXYpXG4tICAgIE5PX0dUSzIgOj0gMVxuJiM0MztpZmRlZiBHVEs0XG4mIzQzOyAgRkxBR1NfR1RLND0kKENGTEFHUykgJChMREZMQUdTKSAkKEVYVExJQlMpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgLS1jZmxhZ3MgZ3RrNCAyXHUwMDNlL2Rldi9udWxsKVxuJiM0MzsgICQoY2FsbCBmZWF0dXJlX2NoZWNrLGd0azQpXG4mIzQzOyAgaWZuZXEgKCQoZmVhdHVyZS1ndGs0KSwgMSlcbiYjNDM7ICAgICQod2FybmluZyBHVEs0IG5vdCBmb3VuZCwgZGlzYWJsZXMgR1RLNCBzdXBwb3J0LiBQbGVhc2UgaW5zdGFsbCBndGs0LWRldmVsIG9yIGxpYmd0ay00LWRldilcbiYjNDM7ICAgIE5PX0dUSzQgOj0gMVxuICAgZWxzZVxuLSAgICAkKGNhbGwgZmVhdHVyZV9jaGVjayxndGsyLWluZm9iYXIpXG4tICAgIGlmZXEgKCQoZmVhdHVyZS1ndGsyLWluZm9iYXIpLCAxKVxuLSAgICAgIEdUS19DRkxBR1MgOj0gLURIQVZFX0dUS19JTkZPX0JBUl9TVVBQT1JUXG4tICAgIGVuZGlmXG4tICAgIENGTEFHUyAmIzQzOz0gLURIQVZFX0dUSzJfU1VQUE9SVFxuLSAgICBHVEtfQ0ZMQUdTICYjNDM7PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1jZmxhZ3MgZ3RrJiM0MzstMi4wIDJcdTAwM2UvZGV2L251bGwpXG4tICAgIEdUS19MSUJTIDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgZ3RrJiM0MzstMi4wIDJcdTAwM2UvZGV2L251bGwpXG4mIzQzOyAgICBDRkxBR1MgJiM0Mzs9IC1ESEFWRV9HVEs0X1NVUFBPUlRcbiYjNDM7ICAgIEdUS19DRkxBR1MgJiM0Mzs9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWNmbGFncyBndGs0IDJcdTAwM2UvZGV2L251bGwpXG4mIzQzOyAgICBHVEtfTElCUyA6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIGd0azQgMlx1MDAzZS9kZXYvbnVsbClcbiAgICAgRVhUTElCUyAmIzQzOz0gLWxkbFxuJiM0MzsgICAgIyBsaWJwZXJmLWd0ay5zbyBpcyBkbG9wZW4oKWVkIGF0IHJ1bnRpbWUgYW5kIGNhbGxzIGJhY2sgaW50b1xuJiM0MzsgICAgIyBzeW1ib2xzIGRlZmluZWQgaW4gdGhlIHBlcmYgYmluYXJ5IGl0c2VsZiAoY2FsbGNoYWluX3BhcmFtLFxuJiM0MzsgICAgIyBzeW1ib2xfY29uZiwgZXZzZWxfX25hbWUsIC4uLik6IHBlcmYgbmVlZHMgdG8gZXhwb3J0IHRob3NlXG4mIzQzOyAgICAjIGR5bmFtaWNhbGx5IGZvciB0aGUgcGx1Z2luIHRvIHJlc29sdmUgdGhlbS5cbiYjNDM7ICAgIExERkxBR1MgJiM0Mzs9IC1yZHluYW1pY1xuICAgZW5kaWZcbiBlbmRpZlxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvTWFrZWZpbGUucGVyZiBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUucGVyZlxuaW5kZXggMjljZmQ0NGM0MjdmMy4uMjQzOGI0MGVhYWVjMSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvTWFrZWZpbGUucGVyZlxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi9NYWtlZmlsZS5wZXJmXG5AQCAtNDksNyAmIzQzOzQ5LDcgQEAgaW5jbHVkZSAuLi9zY3JpcHRzL3V0aWxpdGllcy5tYWtcbiAjXG4gIyBEZWZpbmUgTk9fU0xBTkcgaWYgeW91IGRvIG5vdCB3YW50IFRVSSBzdXBwb3J0LlxuICNcbi0jIERlZmluZSBHVEsyIGlmIHlvdSB3YW50IEdUSyYjNDM7IEdVSSBzdXBwb3J0LlxuJiM0MzsjIERlZmluZSBHVEs0IGlmIHlvdSB3YW50IEdUSyYjNDM7IEdVSSBzdXBwb3J0LlxuICNcbiAjIERlZmluZSBOT19ERU1BTkdMRSBpZiB5b3UgZG8gbm90IHdhbnQgQyYjNDM7JiM0Mzsgc3ltYm9sIGRlbWFuZ2xpbmcuXG4gI1xuQEAgLTQ3Myw3ICYjNDM7NDczLDcgQEAgaWZuZXEgKCQoT1VUUFVUKSwpXG4gICBDRkxBR1MgJiM0Mzs9IC1JJChPVVRQVVQpXG4gZW5kaWZcbiBcbi1pZmRlZiBHVEsyXG4mIzQzO2lmZGVmIEdUSzRcbiAgIEFMTF9QUk9HUkFNUyAmIzQzOz0gJChPVVRQVVQpbGlicGVyZi1ndGsuc29cbiAgIEdUS19JTiA6PSAkKE9VVFBVVClndGstaW4ub1xuIGVuZGlmXG5AQCAtODExLDcgJiM0Mzs4MTEsNyBAQCBjaGVjazogcHJlcGFyZVxuIFxuICMjIyBJbnN0YWxsYXRpb24gcnVsZXNcbiBcbi1pZmRlZiBHVEsyXG4mIzQzO2lmZGVmIEdUSzRcbiBpbnN0YWxsLWd0azogJChPVVRQVVQpbGlicGVyZi1ndGsuc29cbiBcdCQoY2FsbCBRVUlFVF9JTlNUQUxMLCAmIzM5O0dUSyBVSSYjMzk7KSBcXFxuIFx0XHQkKElOU1RBTEwpIC1kIC1tIDc1NSAmIzM5OyQoREVTVERJUl9TUSkkKGxpYmRpcl9TUSkmIzM5OzsgXFxcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL2J1aWx0aW4tYW5ub3RhdGUuYyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1hbm5vdGF0ZS5jXG5pbmRleCA2OWNiNzJiMjA4MmE2Li4xNTE2M2UwODFhOGNlIDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi9idWlsdGluLWFubm90YXRlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1hbm5vdGF0ZS5jXG5AQCAtNTIsNyAmIzQzOzUyLDcgQEAgc3RydWN0IHBlcmZfYW5ub3RhdGUge1xuIFx0Ym9vbFx0ICAgdXNlX3R1aTtcbiAjZW5kaWZcbiBcdGJvb2xcdCAgIHVzZV9zdGRpbywgdXNlX3N0ZGlvMjtcbi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlRcbiYjNDM7I2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXG4gXHRib29sXHQgICB1c2VfZ3RrO1xuICNlbmRpZlxuIFx0Ym9vbFx0ICAgc2tpcF9taXNzaW5nO1xuQEAgLTcxMiw3ICYjNDM7NzEyLDcgQEAgaW50IGNtZF9hbm5vdGF0ZShpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpXG4gXHRPUFRfQk9PTEVBTigmIzM5O3EmIzM5OywgXCYjMzQ7cXVpZXRcJiMzNDssIFx1MDAyNnF1aWV0LCBcJiMzNDtkbyBub3cgc2hvdyBhbnkgd2FybmluZ3Mgb3IgbWVzc2FnZXNcJiMzNDspLFxuIFx0T1BUX0JPT0xFQU4oJiMzOTtEJiMzOTssIFwmIzM0O2R1bXAtcmF3LXRyYWNlXCYjMzQ7LCBcdTAwMjZkdW1wX3RyYWNlLFxuIFx0XHQgICAgXCYjMzQ7ZHVtcCByYXcgdHJhY2UgaW4gQVNDSUlcJiMzNDspLFxuLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVFxuJiM0MzsjaWZkZWYgSEFWRV9HVEs0X1NVUFBPUlRcbiBcdE9QVF9CT09MRUFOKDAsIFwmIzM0O2d0a1wmIzM0OywgXHUwMDI2YW5ub3RhdGUudXNlX2d0aywgXCYjMzQ7VXNlIHRoZSBHVEsgaW50ZXJmYWNlXCYjMzQ7KSxcbiAjZW5kaWZcbiAjaWZkZWYgSEFWRV9TTEFOR19TVVBQT1JUXG5AQCAtODI4LDcgJiM0Mzs4MjgsNyBAQCBpbnQgY21kX2Fubm90YXRlKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndilcbiBcdGlmIChhbm5vdGF0ZV9jaGVja19hcmdzKCkgXHUwMDNjIDApXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVFxuJiM0MzsjaWZkZWYgSEFWRV9HVEs0X1NVUFBPUlRcbiBcdGlmIChzeW1ib2xfY29uZi5zaG93X25yX3NhbXBsZXMgXHUwMDI2XHUwMDI2IGFubm90YXRlLnVzZV9ndGspIHtcbiBcdFx0cHJfZXJyKFwmIzM0Oy0tc2hvdy1uci1zYW1wbGVzIGlzIG5vdCBhdmFpbGFibGUgaW4gLS1ndGsgbW9kZSBhdCB0aGlzIHRpbWVcXG5cJiMzNDspO1xuIFx0XHRyZXR1cm4gcmV0O1xuQEAgLTg5OCw3ICYjNDM7ODk4LDcgQEAgaW50IGNtZF9hbm5vdGF0ZShpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpXG4gXHRlbHNlIGlmIChhbm5vdGF0ZS51c2VfdHVpKVxuIFx0XHR1c2VfYnJvd3NlciA9IDE7XG4gI2VuZGlmXG4tI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUXG4mIzQzOyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVFxuIFx0ZWxzZSBpZiAoYW5ub3RhdGUudXNlX2d0aylcbiBcdFx0dXNlX2Jyb3dzZXIgPSAyO1xuICNlbmRpZlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1yZXBvcnQuYyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1yZXBvcnQuY1xuaW5kZXggNjBkMWYxNjY2MjllMC4uZDE0Mzg0YzU4NDY2MSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1yZXBvcnQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi9idWlsdGluLXJlcG9ydC5jXG5AQCAtODIsNyAmIzQzOzgyLDcgQEAgc3RydWN0IHJlcG9ydCB7XG4gI2lmZGVmIEhBVkVfU0xBTkdfU1VQUE9SVFxuIFx0Ym9vbFx0XHRcdHVzZV90dWk7XG4gI2VuZGlmXG4tI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUXG4mIzQzOyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVFxuIFx0Ym9vbFx0XHRcdHVzZV9ndGs7XG4gI2VuZGlmXG4gXHRib29sXHRcdFx0dXNlX3N0ZGlvO1xuQEAgLTEzNTksOCAmIzQzOzEzNTksOCBAQCBpbnQgY21kX3JlcG9ydChpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpXG4gI2lmZGVmIEhBVkVfU0xBTkdfU1VQUE9SVFxuIFx0T1BUX0JPT0xFQU4oMCwgXCYjMzQ7dHVpXCYjMzQ7LCBcdTAwMjZyZXBvcnQudXNlX3R1aSwgXCYjMzQ7VXNlIHRoZSBUVUkgaW50ZXJmYWNlXCYjMzQ7KSxcbiAjZW5kaWZcbi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlRcbi1cdE9QVF9CT09MRUFOKDAsIFwmIzM0O2d0a1wmIzM0OywgXHUwMDI2cmVwb3J0LnVzZV9ndGssIFwmIzM0O1VzZSB0aGUgR1RLMiBpbnRlcmZhY2VcJiMzNDspLFxuJiM0MzsjaWZkZWYgSEFWRV9HVEs0X1NVUFBPUlRcbiYjNDM7XHRPUFRfQk9PTEVBTigwLCBcJiMzNDtndGtcJiMzNDssIFx1MDAyNnJlcG9ydC51c2VfZ3RrLCBcJiMzNDtVc2UgdGhlIEdUSzQgaW50ZXJmYWNlXCYjMzQ7KSxcbiAjZW5kaWZcbiBcdE9QVF9CT09MRUFOKDAsIFwmIzM0O3N0ZGlvXCYjMzQ7LCBcdTAwMjZyZXBvcnQudXNlX3N0ZGlvLFxuIFx0XHQgICAgXCYjMzQ7VXNlIHRoZSBzdGRpbyBpbnRlcmZhY2VcJiMzNDspLFxuQEAgLTE3MTAsNyAmIzQzOzE3MTAsNyBAQCBpbnQgY21kX3JlcG9ydChpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpXG4gXHRlbHNlIGlmIChyZXBvcnQudXNlX3R1aSlcbiBcdFx0dXNlX2Jyb3dzZXIgPSAxO1xuICNlbmRpZlxuLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVFxuJiM0MzsjaWZkZWYgSEFWRV9HVEs0X1NVUFBPUlRcbiBcdGVsc2UgaWYgKHJlcG9ydC51c2VfZ3RrKVxuIFx0XHR1c2VfYnJvd3NlciA9IDI7XG4gI2VuZGlmXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9zY3JpcHRzL2luc3RhbGwtYnVpbGQtZGVwcy5zaCBiL3Rvb2xzL3BlcmYvc2NyaXB0cy9pbnN0YWxsLWJ1aWxkLWRlcHMuc2hcbmluZGV4IGQwMDNlN2ZhYjJiZTguLmE2MDFhNTI2MGMxN2UgMTAwNzU1XG4tLS0gYS90b29scy9wZXJmL3NjcmlwdHMvaW5zdGFsbC1idWlsZC1kZXBzLnNoXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3NjcmlwdHMvaW5zdGFsbC1idWlsZC1kZXBzLnNoXG5AQCAtMTk5LDggJiM0MzsxOTksOCBAQCBmZWRvcmFfcGtnX2ZvcigpIHtcbiBcdCMgb3B0LWluIGZlYXR1cmVzLCB3aGljaCBhIGRlZmF1bHQgYnVpbGQgZG9lcyBub3QgZW5hYmxlOiB0aGUgbGliYmZkXG4gXHQjIGRpc2Fzc2VtYmxlciBmYW1pbHkgKGxpYmJmZCwgbGliYmZkLXRocmVhZHNhZmUsIGxpYmJmZC1saWJlcnR5LFxuIFx0IyBkaXNhc3NlbWJsZXItKiwgY3BsdXMtZGVtYW5nbGUpLCBvbmx5IGxpbmtlZCBvbiBCVUlMRF9OT05ESVNUUk9cbi1cdCMgYnVpbGRzIGFuZCBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGNhcHN0b25lLCBHVEsyLCBMSUJQRVJMIGFuZFxuLVx0IyBMSUJVTldJTkQgc3VwcG9ydCAoaWZkZWYgR1RLMiAvIGlmZGVmIExJQlBFUkwgLyBMSUJVTldJTkQ9MSksXG4mIzQzO1x0IyBidWlsZHMgYW5kIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgY2Fwc3RvbmUsIEdUSzQsIExJQlBFUkwgYW5kXG4mIzQzO1x0IyBMSUJVTldJTkQgc3VwcG9ydCAoaWZkZWYgR1RLNCAvIGlmZGVmIExJQlBFUkwgLyBMSUJVTldJTkQ9MSksXG4gXHQjIGFuZCBDb3JlU2lnaHQgKGlmZGVmIENPUkVTSUdIVCksIGFyZSBkZWxpYmVyYXRlbHkgbm90IG1hcHBlZC5cbiBcdCMgbGliYWlvIGlzIG5vdCBtYXBwZWQgZWl0aGVyOiBpdHNcbiBcdCMgdGVzdCB1c2VzIHRoZSBQT1NJWCBBSU8gQVBJIChhaW8uaCwgYWlvXyosIC1scnQpLCBwcm92aWRlZCBieVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdGVzdHMvbWFrZSBiL3Rvb2xzL3BlcmYvdGVzdHMvbWFrZVxuaW5kZXggZDJjMmY1MjZlMWRiMC4uMjAyYWI1NTAxOTE2MSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdGVzdHMvbWFrZVxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi90ZXN0cy9tYWtlXG5AQCAtOTUsNyAmIzQzOzk1LDcgQEAgbWFrZV9ub19iYWJlbHRyYWNlMiA6PSBOT19CQUJFTFRSQUNFMj0xXG4gbWFrZV93aXRoX2NvcmVzaWdodCA6PSBDT1JFU0lHSFQ9MVxuIG1ha2Vfbm9fc2R0XHQgICAgOj0gTk9fU0RUPTFcbiBtYWtlX25vX2xpYnBmbTQgICAgIDo9IE5PX0xJQlBGTTQ9MVxuLW1ha2Vfd2l0aF9ndGsyICAgICAgOj0gR1RLMj0xXG4mIzQzO21ha2Vfd2l0aF9ndGs0ICAgICAgOj0gR1RLND0xXG4gbWFrZV9yZWZjbnRfY2hlY2sgICA6PSBFWFRSQV9DRkxBR1M9XCYjMzQ7LURSRUZDTlRfQ0hFQ0tJTkc9MVwmIzM0O1xuIG1ha2VfdGFncyAgICAgICAgICAgOj0gdGFnc1xuIG1ha2VfY3Njb3BlICAgICAgICAgOj0gY3Njb3BlXG5AQCAtMzE4LDcgJiM0MzszMTgsNyBAQCAkKHJ1bik6XG4gXHQkKGNhbGwgdGVzdCwkQCkgXHUwMDI2XHUwMDI2IFxcXG4gXHRybSAtcmYgJEAgJCRUTVBfREVTVCB8fCAoY2F0ICRAIDsgZmFsc2UpXG4gXG4tbWFrZV93aXRoX2d0azI6XG4mIzQzO21ha2Vfd2l0aF9ndGs0OlxuIFx0JChjYWxsIGNsZWFuKVxuIFx0QFRNUF9ERVNUPSQkKG1rdGVtcCAtZCk7IFxcXG4gXHRjbWQ9XCYjMzQ7Y2QgJChQRVJGKSBcdTAwMjZcdTAwMjYgJChNQUtFX0YpICQoJEApICQoUEFSQUxMRUxfT1BUKSAkKE9fT1BUKSBERVNURElSPSQkVE1QX0RFU1RcJiMzNDs7IFxcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91aS9ndGsvYW5ub3RhdGUuYyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2Fubm90YXRlLmNcbmluZGV4IDg5MjBlMjk4NDIwYTguLjA5NGRmYTA0NWI3NzQgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL3VpL2d0ay9hbm5vdGF0ZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3VpL2d0ay9hbm5vdGF0ZS5jXG5AQCAtMTEsNiAmIzQzOzExLDcgQEBcbiAjaW5jbHVkZSBcJiMzNDt1aS9oZWxwbGluZS5oXCYjMzQ7XG4gI2luY2x1ZGUgXHUwMDNjaW50dHlwZXMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY3NpZ25hbC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY3N0cmluZy5oXHUwMDNlXG4gXG4gZW51bSB7XG4gXHRBTk5fQ09MX19QRVJDRU5ULFxuQEAgLTE2MSw3ICYjNDM7MTYyLDcgQEAgc3RhdGljIGludCBwZXJmX2d0a19fYW5ub3RhdGVfc3ltYm9sKEd0a1dpZGdldCAqd2luZG93LCBzdHJ1Y3QgbWFwX3N5bWJvbCAqbXMsXG4gXHRcdFx0Z3RrX2xpc3Rfc3RvcmVfc2V0KHN0b3JlLCBcdTAwMjZpdGVyLCBBTk5fQ09MX19MSU5FLCBzLCAtMSk7XG4gXHR9XG4gXG4tXHRndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHdpbmRvdyksIHZpZXcpO1xuJiM0MztcdGd0a19zY3JvbGxlZF93aW5kb3dfc2V0X2NoaWxkKEdUS19TQ1JPTExFRF9XSU5ET1cod2luZG93KSwgdmlldyk7XG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocG9zLCBuLCBcdTAwMjZub3Rlcy1cdTAwM2VzcmMtXHUwMDNlc291cmNlLCBhbC5ub2RlKSB7XG4gXHRcdGxpc3RfZGVsX2luaXQoXHUwMDI2cG9zLVx1MDAzZWFsLm5vZGUpO1xuQEAgLTIwNSw0MCAmIzQzOzIwNiwzNCBAQCBzdGF0aWMgaW50IHN5bWJvbF9fZ3RrX2Fubm90YXRlKHN0cnVjdCBtYXBfc3ltYm9sICptcywgc3RydWN0IGV2c2VsICpldnNlbCxcbiBcdFx0R3RrV2lkZ2V0ICppbmZvYmFyO1xuIFx0XHRHdGtXaWRnZXQgKnN0YXRiYXI7XG4gXG4tXHRcdHNpZ25hbChTSUdTRUdWLCBwZXJmX2d0a19fc2lnbmFsKTtcbi1cdFx0c2lnbmFsKFNJR0ZQRSwgIHBlcmZfZ3RrX19zaWduYWwpO1xuLVx0XHRzaWduYWwoU0lHSU5ULCAgcGVyZl9ndGtfX3NpZ25hbCk7XG4tXHRcdHNpZ25hbChTSUdRVUlULCBwZXJmX2d0a19fc2lnbmFsKTtcbi1cdFx0c2lnbmFsKFNJR1RFUk0sIHBlcmZfZ3RrX19zaWduYWwpO1xuJiM0MztcdFx0c2lnbmFsKFNJR1NFR1YsIHBlcmZfZ3RrX19mYXRhbF9zaWduYWwpO1xuJiM0MztcdFx0c2lnbmFsKFNJR0ZQRSwgIHBlcmZfZ3RrX19mYXRhbF9zaWduYWwpO1xuJiM0MztcdFx0cGVyZl9ndGtfX2luc3RhbGxfcXVpdF9zaWduYWxzKCk7XG4gXG4tXHRcdHdpbmRvdyA9IGd0a193aW5kb3dfbmV3KEdUS19XSU5ET1dfVE9QTEVWRUwpO1xuJiM0MztcdFx0d2luZG93ID0gZ3RrX3dpbmRvd19uZXcoKTtcbiBcdFx0Z3RrX3dpbmRvd19zZXRfdGl0bGUoR1RLX1dJTkRPVyh3aW5kb3cpLCBcJiMzNDtwZXJmIGFubm90YXRlXCYjMzQ7KTtcbiBcbi1cdFx0Z19zaWduYWxfY29ubmVjdCh3aW5kb3csIFwmIzM0O2RlbGV0ZV9ldmVudFwmIzM0OywgZ3RrX21haW5fcXVpdCwgTlVMTCk7XG4tXG4gXHRcdHBnY3R4ID0gcGVyZl9ndGtfX2FjdGl2YXRlX2NvbnRleHQod2luZG93KTtcbiBcdFx0aWYgKCFwZ2N0eClcbiBcdFx0XHRyZXR1cm4gLTE7XG4gXG4tXHRcdHZib3ggPSBndGtfdmJveF9uZXcoRkFMU0UsIDApO1xuJiM0MztcdFx0dmJveCA9IGd0a19ib3hfbmV3KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgMCk7XG4gXHRcdG5vdGVib29rID0gZ3RrX25vdGVib29rX25ldygpO1xuIFx0XHRwZ2N0eC1cdTAwM2Vub3RlYm9vayA9IG5vdGVib29rO1xuIFxuLVx0XHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgbm90ZWJvb2ssIFRSVUUsIFRSVUUsIDApO1xuJiM0MztcdFx0Z3RrX3dpZGdldF9zZXRfdmV4cGFuZChub3RlYm9vaywgVFJVRSk7XG4mIzQzO1x0XHRndGtfYm94X2FwcGVuZChHVEtfQk9YKHZib3gpLCBub3RlYm9vayk7XG4gXG4gXHRcdGluZm9iYXIgPSBwZXJmX2d0a19fc2V0dXBfaW5mb19iYXIoKTtcbi1cdFx0aWYgKGluZm9iYXIpIHtcbi1cdFx0XHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgaW5mb2Jhcixcbi1cdFx0XHRcdFx0ICAgRkFMU0UsIEZBTFNFLCAwKTtcbi1cdFx0fVxuJiM0MztcdFx0Z3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgaW5mb2Jhcik7XG4gXG4gXHRcdHN0YXRiYXIgPSBwZXJmX2d0a19fc2V0dXBfc3RhdHVzYmFyKCk7XG4tXHRcdGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBzdGF0YmFyLCBGQUxTRSwgRkFMU0UsIDApO1xuJiM0MztcdFx0Z3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgc3RhdGJhcik7XG4gXG4tXHRcdGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIod2luZG93KSwgdmJveCk7XG4mIzQzO1x0XHRndGtfd2luZG93X3NldF9jaGlsZChHVEtfV0lORE9XKHdpbmRvdyksIHZib3gpO1xuIFx0fVxuIFxuLVx0c2Nyb2xsZWRfd2luZG93ID0gZ3RrX3Njcm9sbGVkX3dpbmRvd19uZXcoTlVMTCwgTlVMTCk7XG4mIzQzO1x0c2Nyb2xsZWRfd2luZG93ID0gZ3RrX3Njcm9sbGVkX3dpbmRvd19uZXcoKTtcbiBcdHRhYl9sYWJlbCA9IGd0a19sYWJlbF9uZXcoc3ltLVx1MDAzZW5hbWUpO1xuIFxuIFx0Z3RrX3Njcm9sbGVkX3dpbmRvd19zZXRfcG9saWN5KEdUS19TQ1JPTExFRF9XSU5ET1coc2Nyb2xsZWRfd2luZG93KSxcbkBAIC0yNjcsMTIgJiM0MzsyNjIsMTEgQEAgdm9pZCBwZXJmX2d0a19fc2hvd19hbm5vdGF0aW9ucyh2b2lkKVxuIFx0XHRyZXR1cm47XG4gXG4gXHR3aW5kb3cgPSBwZ2N0eC1cdTAwM2VtYWluX3dpbmRvdztcbi1cdGd0a193aWRnZXRfc2hvd19hbGwod2luZG93KTtcbiBcbiBcdHBlcmZfZ3RrX19yZXNpemVfd2luZG93KHdpbmRvdyk7XG4tXHRndGtfd2luZG93X3NldF9wb3NpdGlvbihHVEtfV0lORE9XKHdpbmRvdyksIEdUS19XSU5fUE9TX0NFTlRFUik7XG4mIzQzO1x0Z3RrX3dpZGdldF9zZXRfdmlzaWJsZSh3aW5kb3csIFRSVUUpO1xuIFxuLVx0Z3RrX21haW4oKTtcbiYjNDM7XHRwZXJmX2d0a19fcnVuX21haW5fbG9vcCh3aW5kb3cpO1xuIFxuIFx0cGVyZl9ndGtfX2RlYWN0aXZhdGVfY29udGV4dChcdTAwMjZwZ2N0eCk7XG4gfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2Jyb3dzZXIuYyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2Jyb3dzZXIuY1xuaW5kZXggZDJkYWRmMzg3M2ZiZC4uOThmMWQ2YmZjYjI0NiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2Jyb3dzZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91aS9ndGsvYnJvd3Nlci5jXG5AQCAtNSwzMiAmIzQzOzUsOTIgQEBcbiAjaW5jbHVkZSBcJiMzNDsuLi9oaXN0LmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDsuLi9oZWxwbGluZS5oXCYjMzQ7XG4gXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2dsaWItdW5peC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjc2lnbmFsLmhcdTAwM2VcbiBcbi12b2lkIHBlcmZfZ3RrX19zaWduYWwoaW50IHNpZylcbiYjNDM7LypcbiYjNDM7ICogU0lHSU5UL1NJR1FVSVQvU0lHVEVSTSBhcmUgYXN5bmNocm9ub3VzOiBkZWZlcnJpbmcgdGhlIGFjdHVhbCBleGl0IHRvIGFcbiYjNDM7ICogR0xpYiBzb3VyY2UgZGlzcGF0Y2hlZCBmcm9tIHRoZSBtYWluIGxvb3AgbWVhbnMgaXQgYWx3YXlzIHJ1bnMgb24gdGhlXG4mIzQzOyAqIG1haW4gdGhyZWFkLCBzZXJpYWxpemVkIHdpdGggZXZlcnl0aGluZyBlbHNlIHRoZSBtYWluIGxvb3AgZG9lc1xuJiM0MzsgKiAoaW5jbHVkaW5nIHBlcmZfZ3RrX19lcnJvcigpJiMzOTtzIHVwZGF0ZXMgdG8gcGVyZl9ndGtfX2Vycm9yX2xvb3BzKSwgaW5zdGVhZFxuJiM0MzsgKiBvZiByYWNpbmcgdGhlbSBmcm9tIGFyYml0cmFyeSBzaWduYWwtaGFuZGxlciBjb250ZXh0LlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIGdib29sZWFuIHBlcmZfZ3RrX19xdWl0X3NpZ25hbChncG9pbnRlciBkYXRhIF9fbWF5YmVfdW51c2VkKVxuIHtcbiBcdHBlcmZfZ3RrX19leGl0KGZhbHNlKTtcbiYjNDM7XHRyZXR1cm4gR19TT1VSQ0VfUkVNT1ZFO1xuJiM0Mzt9XG4mIzQzO1xuJiM0Mzt2b2lkIHBlcmZfZ3RrX19pbnN0YWxsX3F1aXRfc2lnbmFscyh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0Z191bml4X3NpZ25hbF9hZGQoU0lHSU5ULCAgcGVyZl9ndGtfX3F1aXRfc2lnbmFsLCBOVUxMKTtcbiYjNDM7XHRnX3VuaXhfc2lnbmFsX2FkZChTSUdRVUlULCBwZXJmX2d0a19fcXVpdF9zaWduYWwsIE5VTEwpO1xuJiM0MztcdGdfdW5peF9zaWduYWxfYWRkKFNJR1RFUk0sIHBlcmZfZ3RrX19xdWl0X3NpZ25hbCwgTlVMTCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qXG4mIzQzOyAqIFNJR1NFR1YvU0lHRlBFIGFyZSBzeW5jaHJvbm91cyBmYXVsdHM6IHRoZXJlJiMzOTtzIG5vIFwmIzM0O2xhdGVyXCYjMzQ7IHRvIGRlZmVyIHRvLFxuJiM0MzsgKiBhbmQgbm8gc2FmZSB3YXkgdG8gcnVuIEdUSy9HTGliIGNvZGUgKG9yIGFueXRoaW5nIGVsc2Ugbm9uLWFzeW5jLXNpZ25hbC1cbiYjNDM7ICogc2FmZSkgZnJvbSB0aGUgZmF1bHRpbmcgY29udGV4dC4gUmVwb3J0IGFuZCBsZXQgdGhlIGRlZmF1bHQgZGlzcG9zaXRpb25cbiYjNDM7ICogKGNvcmUgZHVtcCkgaGFwcGVuIGluc3RlYWQgb2YgdHJ5aW5nIHRvIHRlYXIgZG93biBHVEsgc3RhdGUgaGVyZS5cbiYjNDM7ICovXG4mIzQzO3ZvaWQgcGVyZl9ndGtfX2ZhdGFsX3NpZ25hbChpbnQgc2lnKVxuJiM0Mzt7XG4gXHRwc2lnbmFsKHNpZywgXCYjMzQ7cGVyZlwmIzM0Oyk7XG4mIzQzO1x0c2lnbmFsKHNpZywgU0lHX0RGTCk7XG4mIzQzO1x0cmFpc2Uoc2lnKTtcbiB9XG4gXG4gdm9pZCBwZXJmX2d0a19fcmVzaXplX3dpbmRvdyhHdGtXaWRnZXQgKndpbmRvdylcbiB7XG4gXHRHZGtSZWN0YW5nbGUgcmVjdDtcbi1cdEdka1NjcmVlbiAqc2NyZWVuO1xuLVx0aW50IG1vbml0b3I7XG4mIzQzO1x0R2RrTW9uaXRvciAqbW9uaXRvcjtcbiYjNDM7XHRHZGtEaXNwbGF5ICpkaXNwbGF5O1xuJiM0MztcdEdMaXN0TW9kZWwgKm1vbml0b3JzO1xuIFx0aW50IGhlaWdodDtcbiBcdGludCB3aWR0aDtcbiBcbi1cdHNjcmVlbiA9IGd0a193aWRnZXRfZ2V0X3NjcmVlbih3aW5kb3cpO1xuJiM0MztcdGRpc3BsYXkgPSBndGtfd2lkZ2V0X2dldF9kaXNwbGF5KHdpbmRvdyk7XG4mIzQzO1x0bW9uaXRvcnMgPSBnZGtfZGlzcGxheV9nZXRfbW9uaXRvcnMoZGlzcGxheSk7XG4mIzQzO1x0bW9uaXRvciA9IGdfbGlzdF9tb2RlbF9nZXRfaXRlbShtb25pdG9ycywgMCk7XG4mIzQzO1x0aWYgKCFtb25pdG9yKSB7XG4mIzQzO1x0XHRndGtfd2luZG93X3NldF9kZWZhdWx0X3NpemUoR1RLX1dJTkRPVyh3aW5kb3cpLCA4MDAsIDYwMCk7XG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1x0fVxuIFxuLVx0bW9uaXRvciA9IGdka19zY3JlZW5fZ2V0X21vbml0b3JfYXRfd2luZG93KHNjcmVlbiwgd2luZG93LVx1MDAzZXdpbmRvdyk7XG4tXG4tXHRnZGtfc2NyZWVuX2dldF9tb25pdG9yX2dlb21ldHJ5KHNjcmVlbiwgbW9uaXRvciwgXHUwMDI2cmVjdCk7XG4mIzQzO1x0Z2RrX21vbml0b3JfZ2V0X2dlb21ldHJ5KG1vbml0b3IsIFx1MDAyNnJlY3QpO1xuJiM0MztcdGdfb2JqZWN0X3VucmVmKG1vbml0b3IpO1xuIFxuIFx0d2lkdGhcdD0gcmVjdC53aWR0aCAqIDMgLyA0O1xuIFx0aGVpZ2h0XHQ9IHJlY3QuaGVpZ2h0ICogMyAvIDQ7XG4gXG4tXHRndGtfd2luZG93X3Jlc2l6ZShHVEtfV0lORE9XKHdpbmRvdyksIHdpZHRoLCBoZWlnaHQpO1xuJiM0MztcdGd0a193aW5kb3dfc2V0X2RlZmF1bHRfc2l6ZShHVEtfV0lORE9XKHdpbmRvdyksIHdpZHRoLCBoZWlnaHQpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgR01haW5Mb29wICpwZXJmX2d0a19fbWFpbl9sb29wO1xuJiM0MztcbiYjNDM7dm9pZCBwZXJmX2d0a19fcXVpdF9tYWluX2xvb3Aodm9pZClcbiYjNDM7e1xuJiM0MztcdGlmIChwZXJmX2d0a19fbWFpbl9sb29wKVxuJiM0MztcdFx0Z19tYWluX2xvb3BfcXVpdChwZXJmX2d0a19fbWFpbl9sb29wKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGdib29sZWFuIHBlcmZfZ3RrX19jbG9zZV9yZXF1ZXN0KEd0a1dpZGdldCAqd2lkZ2V0IF9fbWF5YmVfdW51c2VkLFxuJiM0MztcdFx0XHRcdFx0Z3BvaW50ZXIgZGF0YSBfX21heWJlX3VudXNlZClcbiYjNDM7e1xuJiM0MztcdHBlcmZfZ3RrX19xdWl0X21haW5fbG9vcCgpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gRkFMU0U7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3ZvaWQgcGVyZl9ndGtfX3J1bl9tYWluX2xvb3AoR3RrV2lkZ2V0ICp3aW5kb3cpXG4mIzQzO3tcbiYjNDM7XHRnX3NpZ25hbF9jb25uZWN0KHdpbmRvdywgXCYjMzQ7Y2xvc2UtcmVxdWVzdFwmIzM0OyxcbiYjNDM7XHRcdFx0IEdfQ0FMTEJBQ0socGVyZl9ndGtfX2Nsb3NlX3JlcXVlc3QpLCBOVUxMKTtcbiYjNDM7XG4mIzQzO1x0cGVyZl9ndGtfX21haW5fbG9vcCA9IGdfbWFpbl9sb29wX25ldyhOVUxMLCBGQUxTRSk7XG4mIzQzO1x0Z19tYWluX2xvb3BfcnVuKHBlcmZfZ3RrX19tYWluX2xvb3ApO1xuJiM0MztcdGdfY2xlYXJfcG9pbnRlcihcdTAwMjZwZXJmX2d0a19fbWFpbl9sb29wLCBnX21haW5fbG9vcF91bnJlZik7XG4gfVxuIFxuIGNvbnN0IGNoYXIgKnBlcmZfZ3RrX19nZXRfcGVyY2VudF9jb2xvcihkb3VibGUgcGVyY2VudClcbkBAIC00MiwzMyAmIzQzOzEwMiwzNSBAQCBjb25zdCBjaGFyICpwZXJmX2d0a19fZ2V0X3BlcmNlbnRfY29sb3IoZG91YmxlIHBlcmNlbnQpXG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4gXG4tI2lmZGVmIEhBVkVfR1RLX0lORk9fQkFSX1NVUFBPUlRcbiYjNDM7c3RhdGljIHZvaWQgcGVyZl9ndGtfX2hpZGVfd2lkZ2V0KEd0a1dpZGdldCAqd2lkZ2V0LCBnaW50IHJlc3BvbnNlX2lkIF9fbWF5YmVfdW51c2VkLFxuJiM0MztcdFx0XHRcdCAgIGdwb2ludGVyIGRhdGEgX19tYXliZV91bnVzZWQpXG4mIzQzO3tcbiYjNDM7XHRndGtfd2lkZ2V0X3NldF92aXNpYmxlKHdpZGdldCwgRkFMU0UpO1xuJiM0Mzt9XG4mIzQzO1xuIEd0a1dpZGdldCAqcGVyZl9ndGtfX3NldHVwX2luZm9fYmFyKHZvaWQpXG4ge1xuIFx0R3RrV2lkZ2V0ICppbmZvX2JhcjtcbiBcdEd0a1dpZGdldCAqbGFiZWw7XG4tXHRHdGtXaWRnZXQgKmNvbnRlbnRfYXJlYTtcbiBcbiBcdGluZm9fYmFyID0gZ3RrX2luZm9fYmFyX25ldygpO1xuLVx0Z3RrX3dpZGdldF9zZXRfbm9fc2hvd19hbGwoaW5mb19iYXIsIFRSVUUpO1xuJiM0MztcdGd0a193aWRnZXRfc2V0X3Zpc2libGUoaW5mb19iYXIsIEZBTFNFKTtcbiBcbiBcdGxhYmVsID0gZ3RrX2xhYmVsX25ldyhcJiMzNDtcJiMzNDspO1xuLVx0Z3RrX3dpZGdldF9zaG93KGxhYmVsKTtcbiYjNDM7XHRndGtfd2lkZ2V0X3NldF92aXNpYmxlKGxhYmVsLCBUUlVFKTtcbiBcbi1cdGNvbnRlbnRfYXJlYSA9IGd0a19pbmZvX2Jhcl9nZXRfY29udGVudF9hcmVhKEdUS19JTkZPX0JBUihpbmZvX2JhcikpO1xuLVx0Z3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUihjb250ZW50X2FyZWEpLCBsYWJlbCk7XG4mIzQzO1x0Z3RrX2luZm9fYmFyX2FkZF9jaGlsZChHVEtfSU5GT19CQVIoaW5mb19iYXIpLCBsYWJlbCk7XG4gXG4tXHRndGtfaW5mb19iYXJfYWRkX2J1dHRvbihHVEtfSU5GT19CQVIoaW5mb19iYXIpLCBHVEtfU1RPQ0tfT0ssXG4mIzQzO1x0Z3RrX2luZm9fYmFyX2FkZF9idXR0b24oR1RLX0lORk9fQkFSKGluZm9fYmFyKSwgXCYjMzQ7X09LXCYjMzQ7LFxuIFx0XHRcdFx0R1RLX1JFU1BPTlNFX09LKTtcbiBcdGdfc2lnbmFsX2Nvbm5lY3QoaW5mb19iYXIsIFwmIzM0O3Jlc3BvbnNlXCYjMzQ7LFxuLVx0XHRcdCBHX0NBTExCQUNLKGd0a193aWRnZXRfaGlkZSksIE5VTEwpO1xuJiM0MztcdFx0XHQgR19DQUxMQkFDSyhwZXJmX2d0a19faGlkZV93aWRnZXQpLCBOVUxMKTtcbiBcbiBcdHBnY3R4LVx1MDAzZWluZm9fYmFyID0gaW5mb19iYXI7XG4gXHRwZ2N0eC1cdTAwM2VtZXNzYWdlX2xhYmVsID0gbGFiZWw7XG4gXG4gXHRyZXR1cm4gaW5mb19iYXI7XG4gfVxuLSNlbmRpZlxuIFxuIEd0a1dpZGdldCAqcGVyZl9ndGtfX3NldHVwX3N0YXR1c2Jhcih2b2lkKVxuIHtcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL2d0ay9ndGsuaCBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2d0ay5oXG5pbmRleCBhMmI0OTdmMDNmZDZlLi42YjM3ZmQ5OTQzYzlkIDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvZ3RrLmhcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2d0ay5oXG5AQCAtMTMsMTAgJiM0MzsxMyw4IEBAIHN0cnVjdCBwZXJmX2d0a19jb250ZXh0IHtcbiBcdEd0a1dpZGdldCAqbWFpbl93aW5kb3c7XG4gXHRHdGtXaWRnZXQgKm5vdGVib29rO1xuIFxuLSNpZmRlZiBIQVZFX0dUS19JTkZPX0JBUl9TVVBQT1JUXG4gXHRHdGtXaWRnZXQgKmluZm9fYmFyO1xuIFx0R3RrV2lkZ2V0ICptZXNzYWdlX2xhYmVsO1xuLSNlbmRpZlxuIFx0R3RrV2lkZ2V0ICpzdGF0YmFyO1xuIFx0Z3VpbnQgc3RhdGJhcl9jdHhfaWQ7XG4gfTtcbkBAIC0zOCwxOSAmIzQzOzM2LDE1IEBAIHZvaWQgcGVyZl9ndGtfX2luaXRfaGVscGxpbmUodm9pZCk7XG4gdm9pZCBndGtfdWlfcHJvZ3Jlc3NfX2luaXQodm9pZCk7XG4gdm9pZCBwZXJmX2d0a19faW5pdF9ocHAodm9pZCk7XG4gXG4tdm9pZCBwZXJmX2d0a19fc2lnbmFsKGludCBzaWcpO1xuJiM0Mzt2b2lkIHBlcmZfZ3RrX19pbnN0YWxsX3F1aXRfc2lnbmFscyh2b2lkKTtcbiYjNDM7dm9pZCBwZXJmX2d0a19fZmF0YWxfc2lnbmFsKGludCBzaWcpO1xuIHZvaWQgcGVyZl9ndGtfX3Jlc2l6ZV93aW5kb3coR3RrV2lkZ2V0ICp3aW5kb3cpO1xuJiM0Mzt2b2lkIHBlcmZfZ3RrX19ydW5fbWFpbl9sb29wKEd0a1dpZGdldCAqd2luZG93KTtcbiYjNDM7dm9pZCBwZXJmX2d0a19fcXVpdF9tYWluX2xvb3Aodm9pZCk7XG4mIzQzO3ZvaWQgcGVyZl9ndGtfX3F1aXRfZXJyb3JfZGlhbG9nKHZvaWQpO1xuIGNvbnN0IGNoYXIgKnBlcmZfZ3RrX19nZXRfcGVyY2VudF9jb2xvcihkb3VibGUgcGVyY2VudCk7XG4gR3RrV2lkZ2V0ICpwZXJmX2d0a19fc2V0dXBfc3RhdHVzYmFyKHZvaWQpO1xuLVxuLSNpZmRlZiBIQVZFX0dUS19JTkZPX0JBUl9TVVBQT1JUXG4gR3RrV2lkZ2V0ICpwZXJmX2d0a19fc2V0dXBfaW5mb19iYXIodm9pZCk7XG4tI2Vsc2Vcbi1zdGF0aWMgaW5saW5lIEd0a1dpZGdldCAqcGVyZl9ndGtfX3NldHVwX2luZm9fYmFyKHZvaWQpXG4te1xuLVx0cmV0dXJuIE5VTEw7XG4tfVxuLSNlbmRpZlxuIFxuIHN0cnVjdCBldnNlbDtcbiBzdHJ1Y3QgZXZsaXN0O1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2hpc3RzLmMgYi90b29scy9wZXJmL3VpL2d0ay9oaXN0cy5jXG5pbmRleCBiYWUyMWYzMzZhZTZkLi43MTZkY2YwMmJkMGU4IDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvaGlzdHMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91aS9ndGsvaGlzdHMuY1xuQEAgLTgsNiAmIzQzOzgsOCBAQFxuICNpbmNsdWRlIFwmIzM0Oy4uL2hlbHBsaW5lLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDsuLi9zdHJpbmcyLmhcJiMzNDtcbiAjaW5jbHVkZSBcdTAwM2NzaWduYWwuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NzdGRhcmcuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NzdGRpby5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjc3RkbGliLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zdHJpbmcuaFx1MDAzZVxuIFxuQEAgLTM5NSwxMSAmIzQzOzM5Nyw5IEBAIHN0YXRpYyB2b2lkIHBlcmZfZ3RrX19zaG93X2hpc3RzKEd0a1dpZGdldCAqd2luZG93LCBzdHJ1Y3QgaGlzdHMgKmhpc3RzLFxuIFx0XHR9XG4gXHR9XG4gXG4tXHRndGtfdHJlZV92aWV3X3NldF9ydWxlc19oaW50KEdUS19UUkVFX1ZJRVcodmlldyksIFRSVUUpO1xuLVxuIFx0Z19zaWduYWxfY29ubmVjdCh2aWV3LCBcJiMzNDtyb3ctYWN0aXZhdGVkXCYjMzQ7LFxuIFx0XHRcdCBHX0NBTExCQUNLKG9uX3Jvd19hY3RpdmF0ZWQpLCBOVUxMKTtcbi1cdGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIod2luZG93KSwgdmlldyk7XG4mIzQzO1x0Z3RrX3Njcm9sbGVkX3dpbmRvd19zZXRfY2hpbGQoR1RLX1NDUk9MTEVEX1dJTkRPVyh3aW5kb3cpLCB2aWV3KTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcGVyZl9ndGtfX2FkZF9oaWVyYXJjaHlfZW50cmllcyhzdHJ1Y3QgaGlzdHMgKmhpc3RzLFxuQEAgLTU4MywxMSAmIzQzOzU4Myw5IEBAIHN0YXRpYyB2b2lkIHBlcmZfZ3RrX19zaG93X2hpZXJhcmNoeShHdGtXaWRnZXQgKndpbmRvdywgc3RydWN0IGhpc3RzICpoaXN0cyxcbiBcdHBlcmZfZ3RrX19hZGRfaGllcmFyY2h5X2VudHJpZXMoaGlzdHMsIFx1MDAyNmhpc3RzLVx1MDAzZWVudHJpZXMsIHN0b3JlLFxuIFx0XHRcdFx0XHROVUxMLCBcdTAwMjZocHAsIG1pbl9wY250KTtcbiBcbi1cdGd0a190cmVlX3ZpZXdfc2V0X3J1bGVzX2hpbnQoR1RLX1RSRUVfVklFVyh2aWV3KSwgVFJVRSk7XG4tXG4gXHRnX3NpZ25hbF9jb25uZWN0KHZpZXcsIFwmIzM0O3Jvdy1hY3RpdmF0ZWRcJiMzNDssXG4gXHRcdFx0IEdfQ0FMTEJBQ0sob25fcm93X2FjdGl2YXRlZCksIE5VTEwpO1xuLVx0Z3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUih3aW5kb3cpLCB2aWV3KTtcbiYjNDM7XHRndGtfc2Nyb2xsZWRfd2luZG93X3NldF9jaGlsZChHVEtfU0NST0xMRURfV0lORE9XKHdpbmRvdyksIHZpZXcpO1xuIH1cbiBcbiBpbnQgZXZsaXN0X19ndGtfYnJvd3NlX2hpc3RzKHN0cnVjdCBldmxpc3QgKmV2bGlzdCwgY29uc3QgY2hhciAqaGVscCxcbkBAIC02MDAsMzYgJiM0Mzs1OTgsMzIgQEAgaW50IGV2bGlzdF9fZ3RrX2Jyb3dzZV9oaXN0cyhzdHJ1Y3QgZXZsaXN0ICpldmxpc3QsIGNvbnN0IGNoYXIgKmhlbHAsXG4gXHRHdGtXaWRnZXQgKnN0YXRiYXI7XG4gXHRHdGtXaWRnZXQgKndpbmRvdztcbiBcbi1cdHNpZ25hbChTSUdTRUdWLCBwZXJmX2d0a19fc2lnbmFsKTtcbi1cdHNpZ25hbChTSUdGUEUsICBwZXJmX2d0a19fc2lnbmFsKTtcbi1cdHNpZ25hbChTSUdJTlQsICBwZXJmX2d0a19fc2lnbmFsKTtcbi1cdHNpZ25hbChTSUdRVUlULCBwZXJmX2d0a19fc2lnbmFsKTtcbi1cdHNpZ25hbChTSUdURVJNLCBwZXJmX2d0a19fc2lnbmFsKTtcbiYjNDM7XHRzaWduYWwoU0lHU0VHViwgcGVyZl9ndGtfX2ZhdGFsX3NpZ25hbCk7XG4mIzQzO1x0c2lnbmFsKFNJR0ZQRSwgIHBlcmZfZ3RrX19mYXRhbF9zaWduYWwpO1xuJiM0MztcdHBlcmZfZ3RrX19pbnN0YWxsX3F1aXRfc2lnbmFscygpO1xuIFxuLVx0d2luZG93ID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJTkRPV19UT1BMRVZFTCk7XG4mIzQzO1x0d2luZG93ID0gZ3RrX3dpbmRvd19uZXcoKTtcbiBcbiBcdGd0a193aW5kb3dfc2V0X3RpdGxlKEdUS19XSU5ET1cod2luZG93KSwgXCYjMzQ7cGVyZiByZXBvcnRcJiMzNDspO1xuIFxuLVx0Z19zaWduYWxfY29ubmVjdCh3aW5kb3csIFwmIzM0O2RlbGV0ZV9ldmVudFwmIzM0OywgZ3RrX21haW5fcXVpdCwgTlVMTCk7XG4tXG4gXHRwZ2N0eCA9IHBlcmZfZ3RrX19hY3RpdmF0ZV9jb250ZXh0KHdpbmRvdyk7XG4gXHRpZiAoIXBnY3R4KVxuIFx0XHRyZXR1cm4gLTE7XG4gXG4tXHR2Ym94ID0gZ3RrX3Zib3hfbmV3KEZBTFNFLCAwKTtcbiYjNDM7XHR2Ym94ID0gZ3RrX2JveF9uZXcoR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCAwKTtcbiBcbiBcdG5vdGVib29rID0gZ3RrX25vdGVib29rX25ldygpO1xuIFxuLVx0Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIG5vdGVib29rLCBUUlVFLCBUUlVFLCAwKTtcbiYjNDM7XHRndGtfd2lkZ2V0X3NldF92ZXhwYW5kKG5vdGVib29rLCBUUlVFKTtcbiYjNDM7XHRndGtfYm94X2FwcGVuZChHVEtfQk9YKHZib3gpLCBub3RlYm9vayk7XG4gXG4gXHRpbmZvX2JhciA9IHBlcmZfZ3RrX19zZXR1cF9pbmZvX2JhcigpO1xuLVx0aWYgKGluZm9fYmFyKVxuLVx0XHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgaW5mb19iYXIsIEZBTFNFLCBGQUxTRSwgMCk7XG4mIzQzO1x0Z3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgaW5mb19iYXIpO1xuIFxuIFx0c3RhdGJhciA9IHBlcmZfZ3RrX19zZXR1cF9zdGF0dXNiYXIoKTtcbi1cdGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBzdGF0YmFyLCBGQUxTRSwgRkFMU0UsIDApO1xuJiM0MztcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIHN0YXRiYXIpO1xuIFxuLVx0Z3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUih3aW5kb3cpLCB2Ym94KTtcbiYjNDM7XHRndGtfd2luZG93X3NldF9jaGlsZChHVEtfV0lORE9XKHdpbmRvdyksIHZib3gpO1xuIFxuIFx0ZXZsaXN0X19mb3JfZWFjaF9lbnRyeShldmxpc3QsIHBvcykge1xuIFx0XHRzdHJ1Y3QgaGlzdHMgKmhpc3RzID0gZXZzZWxfX2hpc3RzKHBvcyk7XG5AQCAtNjQ5LDcgJiM0Mzs2NDMsNyBAQCBpbnQgZXZsaXN0X19ndGtfYnJvd3NlX2hpc3RzKHN0cnVjdCBldmxpc3QgKmV2bGlzdCwgY29uc3QgY2hhciAqaGVscCxcbiBcdFx0XHR9XG4gXHRcdH1cbiBcbi1cdFx0c2Nyb2xsZWRfd2luZG93ID0gZ3RrX3Njcm9sbGVkX3dpbmRvd19uZXcoTlVMTCwgTlVMTCk7XG4mIzQzO1x0XHRzY3JvbGxlZF93aW5kb3cgPSBndGtfc2Nyb2xsZWRfd2luZG93X25ldygpO1xuIFxuIFx0XHRndGtfc2Nyb2xsZWRfd2luZG93X3NldF9wb2xpY3koR1RLX1NDUk9MTEVEX1dJTkRPVyhzY3JvbGxlZF93aW5kb3cpLFxuIFx0XHRcdFx0XHRcdFx0R1RLX1BPTElDWV9BVVRPTUFUSUMsXG5AQCAtNjY1LDE1ICYjNDM7NjU5LDEyIEBAIGludCBldmxpc3RfX2d0a19icm93c2VfaGlzdHMoc3RydWN0IGV2bGlzdCAqZXZsaXN0LCBjb25zdCBjaGFyICpoZWxwLFxuIFx0XHRndGtfbm90ZWJvb2tfYXBwZW5kX3BhZ2UoR1RLX05PVEVCT09LKG5vdGVib29rKSwgc2Nyb2xsZWRfd2luZG93LCB0YWJfbGFiZWwpO1xuIFx0fVxuIFxuLVx0Z3RrX3dpZGdldF9zaG93X2FsbCh3aW5kb3cpO1xuLVxuIFx0cGVyZl9ndGtfX3Jlc2l6ZV93aW5kb3cod2luZG93KTtcbi1cbi1cdGd0a193aW5kb3dfc2V0X3Bvc2l0aW9uKEdUS19XSU5ET1cod2luZG93KSwgR1RLX1dJTl9QT1NfQ0VOVEVSKTtcbiYjNDM7XHRndGtfd2lkZ2V0X3NldF92aXNpYmxlKHdpbmRvdywgVFJVRSk7XG4gXG4gXHR1aV9oZWxwbGluZV9fcHVzaChoZWxwKTtcbiBcbi1cdGd0a19tYWluKCk7XG4mIzQzO1x0cGVyZl9ndGtfX3J1bl9tYWluX2xvb3Aod2luZG93KTtcbiBcbiBcdHBlcmZfZ3RrX19kZWFjdGl2YXRlX2NvbnRleHQoXHUwMDI2cGdjdHgpO1xuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3Byb2dyZXNzLmMgYi90b29scy9wZXJmL3VpL2d0ay9wcm9ncmVzcy5jXG5pbmRleCBlZWE2ZmNkZTUxOGE4Li43NzBmOTI1MWI1NGI3IDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvcHJvZ3Jlc3MuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91aS9ndGsvcHJvZ3Jlc3MuY1xuQEAgLTEsNDkgJiM0MzsxLDY1IEBAXG4gLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAjaW5jbHVkZSBcdTAwM2NpbnR0eXBlcy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY3N0ZGlvLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcJiMzNDtndGsuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0Oy4uL3Byb2dyZXNzLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvY29tcGlsZXIuaFx1MDAzZVxuIFxuIHN0YXRpYyBHdGtXaWRnZXQgKmRpYWxvZztcbiBzdGF0aWMgR3RrV2lkZ2V0ICpwcm9ncmVzcztcbiBcbiYjNDM7c3RhdGljIHZvaWQgZ3RrX3VpX3Byb2dyZXNzX19kZXN0cm95ZWQoR3RrV2lkZ2V0ICp3aWRnZXQgX19tYXliZV91bnVzZWQsXG4mIzQzO1x0XHRcdFx0XHRncG9pbnRlciBkYXRhIF9fbWF5YmVfdW51c2VkKVxuJiM0Mzt7XG4mIzQzO1x0ZGlhbG9nID0gTlVMTDtcbiYjNDM7XHRwcm9ncmVzcyA9IE5VTEw7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgZ3RrX3VpX3Byb2dyZXNzX191cGRhdGUoc3RydWN0IHVpX3Byb2dyZXNzICpwKVxuIHtcbiBcdGRvdWJsZSBmcmFjdGlvbiA9IHAtXHUwMDNldG90YWwgPyAxLjAgKiBwLVx1MDAzZWN1cnIgLyBwLVx1MDAzZXRvdGFsIDogMC4wO1xuIFx0Y2hhciBidWZbMTAyNF07XG4gXG4gXHRpZiAoZGlhbG9nID09IE5VTEwpIHtcbi1cdFx0R3RrV2lkZ2V0ICp2Ym94ID0gZ3RrX3Zib3hfbmV3KFRSVUUsIDUpO1xuJiM0MztcdFx0R3RrV2lkZ2V0ICp2Ym94ID0gZ3RrX2JveF9uZXcoR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCA1KTtcbiBcdFx0R3RrV2lkZ2V0ICpsYWJlbCA9IGd0a19sYWJlbF9uZXcocC1cdTAwM2V0aXRsZSk7XG4gXG4tXHRcdGRpYWxvZyA9IGd0a193aW5kb3dfbmV3KEdUS19XSU5ET1dfVE9QTEVWRUwpO1xuJiM0MztcdFx0ZGlhbG9nID0gZ3RrX3dpbmRvd19uZXcoKTtcbiBcdFx0cHJvZ3Jlc3MgPSBndGtfcHJvZ3Jlc3NfYmFyX25ldygpO1xuIFxuLVx0XHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgbGFiZWwsIFRSVUUsIEZBTFNFLCAzKTtcbi1cdFx0Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIHByb2dyZXNzLCBUUlVFLCBUUlVFLCAzKTtcbiYjNDM7XHRcdGd0a193aWRnZXRfc2V0X3ZleHBhbmQobGFiZWwsIFRSVUUpO1xuJiM0MztcdFx0Z3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgbGFiZWwpO1xuJiM0MztcdFx0Z3RrX3dpZGdldF9zZXRfdmV4cGFuZChwcm9ncmVzcywgVFJVRSk7XG4mIzQzO1x0XHRndGtfYm94X2FwcGVuZChHVEtfQk9YKHZib3gpLCBwcm9ncmVzcyk7XG4mIzQzO1xuJiM0MztcdFx0Z3RrX3dpbmRvd19zZXRfY2hpbGQoR1RLX1dJTkRPVyhkaWFsb2cpLCB2Ym94KTtcbiBcbi1cdFx0Z3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUihkaWFsb2cpLCB2Ym94KTtcbiYjNDM7XHRcdGdfc2lnbmFsX2Nvbm5lY3QoZGlhbG9nLCBcJiMzNDtkZXN0cm95XCYjMzQ7LFxuJiM0MztcdFx0XHRcdCBHX0NBTExCQUNLKGd0a191aV9wcm9ncmVzc19fZGVzdHJveWVkKSwgTlVMTCk7XG4gXG4gXHRcdGd0a193aW5kb3dfc2V0X3RpdGxlKEdUS19XSU5ET1coZGlhbG9nKSwgXCYjMzQ7cGVyZlwmIzM0Oyk7XG4tXHRcdGd0a193aW5kb3dfcmVzaXplKEdUS19XSU5ET1coZGlhbG9nKSwgMzAwLCA4MCk7XG4tXHRcdGd0a193aW5kb3dfc2V0X3Bvc2l0aW9uKEdUS19XSU5ET1coZGlhbG9nKSwgR1RLX1dJTl9QT1NfQ0VOVEVSKTtcbiYjNDM7XHRcdGd0a193aW5kb3dfc2V0X2RlZmF1bHRfc2l6ZShHVEtfV0lORE9XKGRpYWxvZyksIDMwMCwgODApO1xuIFxuLVx0XHRndGtfd2lkZ2V0X3Nob3dfYWxsKGRpYWxvZyk7XG4mIzQzO1x0XHRndGtfd2lkZ2V0X3NldF92aXNpYmxlKGRpYWxvZywgVFJVRSk7XG4gXHR9XG4gXG4gXHRndGtfcHJvZ3Jlc3NfYmFyX3NldF9mcmFjdGlvbihHVEtfUFJPR1JFU1NfQkFSKHByb2dyZXNzKSwgZnJhY3Rpb24pO1xuIFx0c25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgXCYjMzQ7JVwmIzM0O1BSSXU2NFwmIzM0OyAvICVcJiMzNDtQUkl1NjQsIHAtXHUwMDNlY3VyciwgcC1cdTAwM2V0b3RhbCk7XG4gXHRndGtfcHJvZ3Jlc3NfYmFyX3NldF90ZXh0KEdUS19QUk9HUkVTU19CQVIocHJvZ3Jlc3MpLCBidWYpO1xuIFxuLVx0Lyogd2UgZGlkbiYjMzk7dCBjYWxsIGd0a19tYWluIHlldCwgc28gZG8gaXQgbWFudWFsbHkgKi9cbi1cdHdoaWxlIChndGtfZXZlbnRzX3BlbmRpbmcoKSlcbi1cdFx0Z3RrX21haW5faXRlcmF0aW9uKCk7XG4mIzQzO1x0Lyogd2UgZGlkbiYjMzk7dCBzdGFydCBhIG1haW4gbG9vcCB5ZXQsIHNvIHB1bXAgZXZlbnRzIG1hbnVhbGx5ICovXG4mIzQzO1x0d2hpbGUgKGdfbWFpbl9jb250ZXh0X3BlbmRpbmcoTlVMTCkpXG4mIzQzO1x0XHRnX21haW5fY29udGV4dF9pdGVyYXRpb24oTlVMTCwgRkFMU0UpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBndGtfdWlfcHJvZ3Jlc3NfX2ZpbmlzaCh2b2lkKVxuIHtcbiYjNDM7XHRpZiAoZGlhbG9nID09IE5VTEwpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0LyogdGhpcyB3aWxsIGFsc28gZGVzdHJveSBhbGwgb2YgaXRzIGNoaWxkcmVuICovXG4tXHRndGtfd2lkZ2V0X2Rlc3Ryb3koZGlhbG9nKTtcbiYjNDM7XHRndGtfd2luZG93X2Rlc3Ryb3koR1RLX1dJTkRPVyhkaWFsb2cpKTtcbiBcbiBcdGRpYWxvZyA9IE5VTEw7XG4gfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3NldHVwLmMgYi90b29scy9wZXJmL3VpL2d0ay9zZXR1cC5jXG5pbmRleCBmNWVlZTRkNjY4NzM4Li45YjQ0ZjM3MTk3NDc3IDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvc2V0dXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91aS9ndGsvc2V0dXAuY1xuQEAgLTEyLDcgJiM0MzsxMiw3IEBAIGludCBwZXJmX2d0a19faW5pdCh2b2lkKVxuIFx0Z3RrX3VpX3Byb2dyZXNzX19pbml0KCk7XG4gXHRwZXJmX2d0a19faW5pdF9ocHAoKTtcbiBcbi1cdHJldHVybiBndGtfaW5pdF9jaGVjayhOVUxMLCBOVUxMKSA/IDAgOiAtMTtcbiYjNDM7XHRyZXR1cm4gZ3RrX2luaXRfY2hlY2soKSA/IDAgOiAtMTtcbiB9XG4gXG4gdm9pZCBwZXJmX2d0a19fZXhpdChib29sIHdhaXRfZm9yX29rIF9fbWF5YmVfdW51c2VkKVxuQEAgLTIwLDUgJiM0MzsyMCw2IEBAIHZvaWQgcGVyZl9ndGtfX2V4aXQoYm9vbCB3YWl0X2Zvcl9vayBfX21heWJlX3VudXNlZClcbiBcdGlmICghcGVyZl9ndGtfX2lzX2FjdGl2ZV9jb250ZXh0KHBnY3R4KSlcbiBcdFx0cmV0dXJuO1xuIFx0cGVyZl9lcnJvcl9fdW5yZWdpc3RlcihcdTAwMjZwZXJmX2d0a19lb3BzKTtcbi1cdGd0a19tYWluX3F1aXQoKTtcbiYjNDM7XHRwZXJmX2d0a19fcXVpdF9lcnJvcl9kaWFsb2coKTtcbiYjNDM7XHRwZXJmX2d0a19fcXVpdF9tYWluX2xvb3AoKTtcbiB9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91aS9ndGsvdXRpbC5jIGIvdG9vbHMvcGVyZi91aS9ndGsvdXRpbC5jXG5pbmRleCBjNDdmNWMzODc4MzhjLi41ODIzZmYwZDdjMmE3IDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvdXRpbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3VpL2d0ay91dGlsLmNcbkBAIC0yLDggJiM0MzsyLDEwIEBAXG4gI2luY2x1ZGUgXCYjMzQ7Li4vdXRpbC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7Z3RrLmhcJiMzNDtcbiBcbiYjNDM7I2luY2x1ZGUgXHUwMDNjc3RkYXJnLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjc3RkaW8uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY3N0ZGxpYi5oXHUwMDNlXG4tI2luY2x1ZGUgXHUwMDNjc3RyaW5nLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvY29tcGlsZXIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3phbGxvYy5oXHUwMDNlXG4gXG4gc3RydWN0IHBlcmZfZ3RrX2NvbnRleHQgKnBnY3R4O1xuQEAgLTI4LDg2ICYjNDM7MzAsMTAzIEBAIGludCBwZXJmX2d0a19fZGVhY3RpdmF0ZV9jb250ZXh0KHN0cnVjdCBwZXJmX2d0a19jb250ZXh0ICoqY3R4KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MzsvKlxuJiM0MzsgKiBwZXJmX2d0a19fZXJyb3IoKSBjYW4gYmUgY2FsbGVkIHJlLWVudHJhbnRseSwgc2luY2UgdGhlIGRpYWxvZyBpc24mIzM5O3RcbiYjNDM7ICogbW9kYWwgYW5kIGl0cyBuZXN0ZWQgbG9vcCBzdGlsbCBwdW1wcyBldmVudHMgZm9yIHRoZSBtYWluIHdpbmRvdy5cbiYjNDM7ICogVHJhY2sgZXZlcnkgY3VycmVudGx5IHJ1bm5pbmcgbG9vcCBpbnN0ZWFkIG9mIGEgc2luZ2xlIHBvaW50ZXIsIHNvIGFcbiYjNDM7ICogbmVzdGVkIGNhbGwgY2FuJiMzOTt0IGNsb2JiZXIgYW4gb3V0ZXIgY2FsbCYjMzk7cyBsb29wIGFuZCBsZWFrIGl0LlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIEdTTGlzdCAqcGVyZl9ndGtfX2Vycm9yX2xvb3BzO1xuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgcGVyZl9ndGtfX3F1aXRfbG9vcChncG9pbnRlciBkYXRhLCBncG9pbnRlciB1c2VyX2RhdGEgX19tYXliZV91bnVzZWQpXG4mIzQzO3tcbiYjNDM7XHRnX21haW5fbG9vcF9xdWl0KGRhdGEpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0Mzt2b2lkIHBlcmZfZ3RrX19xdWl0X2Vycm9yX2RpYWxvZyh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0Z19zbGlzdF9mb3JlYWNoKHBlcmZfZ3RrX19lcnJvcl9sb29wcywgcGVyZl9ndGtfX3F1aXRfbG9vcCwgTlVMTCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHBlcmZfZ3RrX19kaWFsb2dfcmVzcG9uc2UoR3RrRGlhbG9nICpkaWFsb2csXG4mIzQzO1x0XHRcdFx0ICAgICAgZ2ludCByZXNwb25zZV9pZCBfX21heWJlX3VudXNlZCxcbiYjNDM7XHRcdFx0XHQgICAgICBncG9pbnRlciBkYXRhIF9fbWF5YmVfdW51c2VkKVxuJiM0Mzt7XG4mIzQzO1x0Z3RrX3dpbmRvd19kZXN0cm95KEdUS19XSU5ET1coZGlhbG9nKSk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBwZXJmX2d0a19fZXJyb3IoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpXG4ge1xuIFx0Y2hhciAqbXNnO1xuIFx0R3RrV2lkZ2V0ICpkaWFsb2c7XG4mIzQzO1x0R01haW5Mb29wICpsb29wO1xuJiM0MztcdHZhX2xpc3QgYXJnc19jb3B5O1xuIFxuJiM0MztcdHZhX2NvcHkoYXJnc19jb3B5LCBhcmdzKTtcbiBcdGlmICghcGVyZl9ndGtfX2lzX2FjdGl2ZV9jb250ZXh0KHBnY3R4KSB8fFxuLVx0ICAgIHZhc3ByaW50ZihcdTAwMjZtc2csIGZvcm1hdCwgYXJncykgXHUwMDNjIDApIHtcbiYjNDM7XHQgICAgdmFzcHJpbnRmKFx1MDAyNm1zZywgZm9ybWF0LCBhcmdzX2NvcHkpIFx1MDAzYyAwKSB7XG4mIzQzO1x0XHR2YV9lbmQoYXJnc19jb3B5KTtcbiBcdFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O0Vycm9yOlxcblwmIzM0Oyk7XG4gXHRcdHZmcHJpbnRmKHN0ZGVyciwgZm9ybWF0LCBhcmdzKTtcbiBcdFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1xcblwmIzM0Oyk7XG4gXHRcdHJldHVybiAtMTtcbiBcdH1cbiYjNDM7XHR2YV9lbmQoYXJnc19jb3B5KTtcbiBcbiBcdGRpYWxvZyA9IGd0a19tZXNzYWdlX2RpYWxvZ19uZXdfd2l0aF9tYXJrdXAoR1RLX1dJTkRPVyhwZ2N0eC1cdTAwM2VtYWluX3dpbmRvdyksXG4gXHRcdFx0XHRcdEdUS19ESUFMT0dfREVTVFJPWV9XSVRIX1BBUkVOVCxcbiBcdFx0XHRcdFx0R1RLX01FU1NBR0VfRVJST1IsXG4gXHRcdFx0XHRcdEdUS19CVVRUT05TX0NMT1NFLFxuIFx0XHRcdFx0XHRcJiMzNDtcdTAwM2NiXHUwMDNlRXJyb3JcdTAwM2MvYlx1MDAzZVxcblxcbiVzXCYjMzQ7LCBtc2cpO1xuLVx0Z3RrX2RpYWxvZ19ydW4oR1RLX0RJQUxPRyhkaWFsb2cpKTtcbiBcbi1cdGd0a193aWRnZXRfZGVzdHJveShkaWFsb2cpO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogXCYjMzQ7cmVzcG9uc2VcJiMzNDsgb25seSBmaXJlcyB3aGVuIGEgYnV0dG9uIGlzIGNsaWNrZWQ7IERFU1RST1lfV0lUSF9QQVJFTlRcbiYjNDM7XHQgKiBkZXN0cm95cyB0aGUgZGlhbG9nIGRpcmVjdGx5IHdpdGhvdXQgaXQuIFF1aXQgZnJvbSBcJiMzNDtkZXN0cm95XCYjMzQ7XG4mIzQzO1x0ICogaW5zdGVhZCwgd2hpY2ggZmlyZXMgZWl0aGVyIHdheSwgc28gdGhlIG5lc3RlZCBsb29wIGJlbG93IGNhbiYjMzk7dFxuJiM0MztcdCAqIG91dGxpdmUgdGhlIGRpYWxvZyBhbmQgaGFuZy5cbiYjNDM7XHQgKi9cbiYjNDM7XHRsb29wID0gZ19tYWluX2xvb3BfbmV3KE5VTEwsIEZBTFNFKTtcbiYjNDM7XHRwZXJmX2d0a19fZXJyb3JfbG9vcHMgPSBnX3NsaXN0X3ByZXBlbmQocGVyZl9ndGtfX2Vycm9yX2xvb3BzLCBsb29wKTtcbiYjNDM7XHRnX3NpZ25hbF9jb25uZWN0KGRpYWxvZywgXCYjMzQ7cmVzcG9uc2VcJiMzNDssXG4mIzQzO1x0XHRcdCBHX0NBTExCQUNLKHBlcmZfZ3RrX19kaWFsb2dfcmVzcG9uc2UpLCBOVUxMKTtcbiYjNDM7XHRnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoZGlhbG9nLCBcJiMzNDtkZXN0cm95XCYjMzQ7LFxuJiM0MztcdFx0XHRcdCBHX0NBTExCQUNLKGdfbWFpbl9sb29wX3F1aXQpLCBsb29wKTtcbiYjNDM7XG4mIzQzO1x0Z3RrX3dpZGdldF9zZXRfdmlzaWJsZShkaWFsb2csIFRSVUUpO1xuJiM0MztcdGdfbWFpbl9sb29wX3J1bihsb29wKTtcbiYjNDM7XHRwZXJmX2d0a19fZXJyb3JfbG9vcHMgPSBnX3NsaXN0X3JlbW92ZShwZXJmX2d0a19fZXJyb3JfbG9vcHMsIGxvb3ApO1xuJiM0MztcdGdfbWFpbl9sb29wX3VucmVmKGxvb3ApO1xuJiM0MztcbiBcdGZyZWUobXNnKTtcbiBcdHJldHVybiAwO1xuIH1cbiBcbi0jaWZkZWYgSEFWRV9HVEtfSU5GT19CQVJfU1VQUE9SVFxuIHN0YXRpYyBpbnQgcGVyZl9ndGtfX3dhcm5pbmdfaW5mb19iYXIoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpXG4ge1xuIFx0Y2hhciAqbXNnO1xuJiM0MztcdHZhX2xpc3QgYXJnc19jb3B5O1xuIFxuJiM0MztcdHZhX2NvcHkoYXJnc19jb3B5LCBhcmdzKTtcbiBcdGlmICghcGVyZl9ndGtfX2lzX2FjdGl2ZV9jb250ZXh0KHBnY3R4KSB8fFxuLVx0ICAgIHZhc3ByaW50ZihcdTAwMjZtc2csIGZvcm1hdCwgYXJncykgXHUwMDNjIDApIHtcbiYjNDM7XHQgICAgdmFzcHJpbnRmKFx1MDAyNm1zZywgZm9ybWF0LCBhcmdzX2NvcHkpIFx1MDAzYyAwKSB7XG4mIzQzO1x0XHR2YV9lbmQoYXJnc19jb3B5KTtcbiBcdFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1dhcm5pbmc6XFxuXCYjMzQ7KTtcbiBcdFx0dmZwcmludGYoc3RkZXJyLCBmb3JtYXQsIGFyZ3MpO1xuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIC0xO1xuIFx0fVxuJiM0MztcdHZhX2VuZChhcmdzX2NvcHkpO1xuIFxuIFx0Z3RrX2xhYmVsX3NldF90ZXh0KEdUS19MQUJFTChwZ2N0eC1cdTAwM2VtZXNzYWdlX2xhYmVsKSwgbXNnKTtcbiBcdGd0a19pbmZvX2Jhcl9zZXRfbWVzc2FnZV90eXBlKEdUS19JTkZPX0JBUihwZ2N0eC1cdTAwM2VpbmZvX2JhciksXG4gXHRcdFx0XHQgICAgICBHVEtfTUVTU0FHRV9XQVJOSU5HKTtcbi1cdGd0a193aWRnZXRfc2hvdyhwZ2N0eC1cdTAwM2VpbmZvX2Jhcik7XG4tXG4tXHRmcmVlKG1zZyk7XG4tXHRyZXR1cm4gMDtcbi19XG4tI2Vsc2Vcbi1zdGF0aWMgaW50IHBlcmZfZ3RrX193YXJuaW5nX3N0YXR1c2Jhcihjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncylcbi17XG4tXHRjaGFyICptc2csICpwO1xuLVxuLVx0aWYgKCFwZXJmX2d0a19faXNfYWN0aXZlX2NvbnRleHQocGdjdHgpIHx8XG4tXHQgICAgdmFzcHJpbnRmKFx1MDAyNm1zZywgZm9ybWF0LCBhcmdzKSBcdTAwM2MgMCkge1xuLVx0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7V2FybmluZzpcXG5cJiMzNDspO1xuLVx0XHR2ZnByaW50ZihzdGRlcnIsIGZvcm1hdCwgYXJncyk7XG4tXHRcdGZwcmludGYoc3RkZXJyLCBcJiMzNDtcXG5cJiMzNDspO1xuLVx0XHRyZXR1cm4gLTE7XG4tXHR9XG4tXG4tXHRndGtfc3RhdHVzYmFyX3BvcChHVEtfU1RBVFVTQkFSKHBnY3R4LVx1MDAzZXN0YXRiYXIpLFxuLVx0XHRcdCAgcGdjdHgtXHUwMDNlc3RhdGJhcl9jdHhfaWQpO1xuLVxuLVx0LyogT25seSBmaXJzdCBsaW5lIGNhbiBiZSBkaXNwbGF5ZWQgKi9cbi1cdHAgPSBzdHJjaHIobXNnLCAmIzM5O1xcbiYjMzk7KTtcbi1cdGlmIChwKVxuLVx0XHQqcCA9ICYjMzk7XFwwJiMzOTs7XG4tXG4tXHRndGtfc3RhdHVzYmFyX3B1c2goR1RLX1NUQVRVU0JBUihwZ2N0eC1cdTAwM2VzdGF0YmFyKSxcbi1cdFx0XHQgICBwZ2N0eC1cdTAwM2VzdGF0YmFyX2N0eF9pZCwgbXNnKTtcbiYjNDM7XHRndGtfd2lkZ2V0X3NldF92aXNpYmxlKHBnY3R4LVx1MDAzZWluZm9fYmFyLCBUUlVFKTtcbiBcbiBcdGZyZWUobXNnKTtcbiBcdHJldHVybiAwO1xuIH1cbi0jZW5kaWZcbiBcbiBzdHJ1Y3QgcGVyZl9lcnJvcl9vcHMgcGVyZl9ndGtfZW9wcyA9IHtcbiBcdC5lcnJvclx0XHQ9IHBlcmZfZ3RrX19lcnJvcixcbi0jaWZkZWYgSEFWRV9HVEtfSU5GT19CQVJfU1VQUE9SVFxuIFx0Lndhcm5pbmdcdD0gcGVyZl9ndGtfX3dhcm5pbmdfaW5mb19iYXIsXG4tI2Vsc2Vcbi1cdC53YXJuaW5nXHQ9IHBlcmZfZ3RrX193YXJuaW5nX3N0YXR1c2Jhcixcbi0jZW5kaWZcbiB9O1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvc2V0dXAuYyBiL3Rvb2xzL3BlcmYvdWkvc2V0dXAuY1xuaW5kZXggZmY4MDAwNDdlNjk3Zi4uZDg4NzM0NmM3YTYzMiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdWkvc2V0dXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91aS9zZXR1cC5jXG5AQCAtMTQsNyAmIzQzOzE0LDcgQEAgaW50IHVzZV9icm93c2VyID0gLTE7XG4gXG4gI2RlZmluZSBQRVJGX0dUS19EU08gXCYjMzQ7bGlicGVyZi1ndGsuc29cJiMzNDtcbiBcbi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlRcbiYjNDM7I2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXG4gXG4gc3RhdGljIGludCBzZXR1cF9ndGtfYnJvd3Nlcih2b2lkKVxuIHtcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuYyBiL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5jXG5pbmRleCBkZjcwZTk1YTg0NzA0Li4xMjNiNmQ1ZmNlYTc4IDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91dGlsL2Fubm90YXRlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5jXG5AQCAtMTQ1LDYgJiM0MzsxNDUsMTcgQEAgc3RhdGljIGludCBhbm5vdGF0ZWRfc291cmNlX19hbGxvY19oaXN0b2dyYW1zKHN0cnVjdCBhbm5vdGF0ZWRfc291cmNlICpzcmMsXG4gXHRyZXR1cm4gc3JjLVx1MDAzZWhpc3RvZ3JhbXMgPyAwIDogLTE7XG4gfVxuIFxuJiM0MztzdHJ1Y3Qgc3ltX2hpc3RfZW50cnkgKlxuJiM0Mzthbm5vdGF0ZWRfc291cmNlX19oaXN0X2VudHJ5KHN0cnVjdCBhbm5vdGF0ZWRfc291cmNlICpzcmMsIGNvbnN0IHN0cnVjdCBldnNlbCAqZXZzZWwsIHU2NCBvZmZzZXQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgc3ltX2hpc3RfZW50cnkgKmVudHJ5O1xuJiM0MztcdGxvbmcga2V5ID0gb2Zmc2V0IFx1MDAzY1x1MDAzYyAxNiB8IGV2c2VsLVx1MDAzZWNvcmUuaWR4O1xuJiM0MztcbiYjNDM7XHRpZiAoIWhhc2htYXBfX2ZpbmQoc3JjLVx1MDAzZXNhbXBsZXMsIGtleSwgXHUwMDI2ZW50cnkpKVxuJiM0MztcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0cmV0dXJuIGVudHJ5O1xuJiM0Mzt9XG4mIzQzO1xuIHZvaWQgc3ltYm9sX19hbm5vdGF0ZV96ZXJvX2hpc3RvZ3JhbXMoc3RydWN0IHN5bWJvbCAqc3ltKVxuIHtcbiBcdHN0cnVjdCBhbm5vdGF0aW9uICpub3RlcyA9IHN5bWJvbF9fYW5ub3RhdGlvbihzeW0pO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5oIGIvdG9vbHMvcGVyZi91dGlsL2Fubm90YXRlLmhcbmluZGV4IGZhMDhkMDliODBmNzYuLjQwMDM4YTM3NzlkNDYgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91dGlsL2Fubm90YXRlLmhcbkBAIC00MDYsMTYgJiM0Mzs0MDYsOCBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBzeW1faGlzdCAqYW5ub3RhdGlvbl9faGlzdG9ncmFtKHN0cnVjdCBhbm5vdGF0aW9uICpub3RlcyxcbiBcdHJldHVybiBhbm5vdGF0ZWRfc291cmNlX19oaXN0b2dyYW0obm90ZXMtXHUwMDNlc3JjLCBldnNlbCk7XG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgc3RydWN0IHN5bV9oaXN0X2VudHJ5ICpcbi1hbm5vdGF0ZWRfc291cmNlX19oaXN0X2VudHJ5KHN0cnVjdCBhbm5vdGF0ZWRfc291cmNlICpzcmMsIGNvbnN0IHN0cnVjdCBldnNlbCAqZXZzZWwsIHU2NCBvZmZzZXQpXG4te1xuLVx0c3RydWN0IHN5bV9oaXN0X2VudHJ5ICplbnRyeTtcbi1cdGxvbmcga2V5ID0gb2Zmc2V0IFx1MDAzY1x1MDAzYyAxNiB8IGV2c2VsLVx1MDAzZWNvcmUuaWR4O1xuLVxuLVx0aWYgKCFoYXNobWFwX19maW5kKHNyYy1cdTAwM2VzYW1wbGVzLCBrZXksIFx1MDAyNmVudHJ5KSlcbi1cdFx0cmV0dXJuIE5VTEw7XG4tXHRyZXR1cm4gZW50cnk7XG4tfVxuJiM0MztzdHJ1Y3Qgc3ltX2hpc3RfZW50cnkgKlxuJiM0Mzthbm5vdGF0ZWRfc291cmNlX19oaXN0X2VudHJ5KHN0cnVjdCBhbm5vdGF0ZWRfc291cmNlICpzcmMsIGNvbnN0IHN0cnVjdCBldnNlbCAqZXZzZWwsIHU2NCBvZmZzZXQpO1xuIFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IGFubm90YXRpb24gKnN5bWJvbF9fYW5ub3RhdGlvbihzdHJ1Y3Qgc3ltYm9sICpzeW0pXG4ge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDAyOjE3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7QWxsIGNoYW5nZXMgaW4gdGhpcyBwYXRjaCBzZXJpZXMgYXJlIHN0cmljdGx5IGNvbmZpbmVkIHRvIHVzZXItc3BhY2UgdG9vbGluZyB1bmRlciBgdG9vbHMvYCAoc3BlY2lmaWNhbGx5IGB0b29scy9wZXJmYCBhbmQgYHRvb2xzL2J1aWxkYCksIHdoaWNoIGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAoYHZtbGludXhgKSBvciBrZXJuZWwgbW9kdWxlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzY2Y4ZjM0OGE1MjVhOTU3Yzg3ODU2OGQ0NmQ4MDBjYTA2ZGIxYTkzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBTZXAgNyAwMjoxNzoyNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL01ha2VmaWxlLmZlYXR1cmUgYi90b29scy9idWlsZC9NYWtlZmlsZS5mZWF0dXJlCmluZGV4IDk5ZWIwZWEwOTUzNzUuLjRlYzk1YzM1YTVjMTkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2J1aWxkL01ha2VmaWxlLmZlYXR1cmUKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvYnVpbGQvTWFrZWZpbGUuZmVhdHVyZQpAQCAtMTEzLDggJiM0MzsxMTMsNyBAQCBGRUFUVVJFX1RFU1RTX0VYVFJBIDo9ICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgY29tcGlsZS14MzIgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgIGNwbHVzLWRlbWFuZ2xlICAgICAgICAgICAgICAgICBcCiAgICAgICAgICBjeGEtZGVtYW5nbGUgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgZ3RrMiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIGd0azItaW5mb2JhciAgICAgICAgICAgICAgICAgICBcCiYjNDM7ICAgICAgICAgZ3RrNCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgIGhlbGxvICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICBiYWJlbHRyYWNlMi1jdGYtd3JpdGVyICAgICAgICAgXAogICAgICAgICAgbGliY2Fwc3RvbmUgICAgICAgICAgICAgICAgICAgIFwKQEAgLTE0Myw2ICYjNDM7MTQyLDcgQEAgZW5kaWYKIEZFQVRVUkVfRElTUExBWSA/PSAgICAgICAgICAgICAgXAogICAgICAgICAgbGliZHcgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICBnbGliYyAgICAgICAgICAgICAgICAgIFwKJiM0MzsgICAgICAgICBndGs0ICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgIGxpYmVsZiAgICAgICAgICAgICAgICAgXAogICAgICAgICAgbGlibnVtYSAgICAgICAgICAgICAgICBcCiAgICAgICAgICBudW1hX251bV9wb3NzaWJsZV9jcHVzIFwKZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvTWFrZWZpbGUgYi90b29scy9idWlsZC9mZWF0dXJlL01ha2VmaWxlCmluZGV4IDdkMTY1MDE4MTE2YTUuLjAxYzQ4ZTZlZjAyMWQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvTWFrZWZpbGUKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvYnVpbGQvZmVhdHVyZS9NYWtlZmlsZQpAQCAtMTEsOCAmIzQzOzExLDcgQEAgRklMRVM9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgdGVzdC1ldmVudGZkLmJpbiAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgdGVzdC1mb3J0aWZ5LXNvdXJjZS5iaW4gICAgICAgICAgICAgICAgXAogICAgICAgICAgdGVzdC1nbGliYy5iaW4gICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgdGVzdC1ndGsyLmJpbiAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgdGVzdC1ndGsyLWluZm9iYXIuYmluICAgICAgICAgICAgICAgICAgXAomIzQzOyAgICAgICAgIHRlc3QtZ3RrNC5iaW4gICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgIHRlc3QtaGVsbG8uYmluICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgIHRlc3QtbGliYmZkLmJpbiAgICAgICAgICAgICAgICAgICAgICAgIFwKIAkgdGVzdC1saWJiZmQtdGhyZWFkc2FmZS5iaW4gICAgICAJXApAQCAtMjQwLDExICYjNDM7MjM5LDggQEAgJChPVVRQVVQpdGVzdC1saWJjcHVwb3dlci5iaW46CiAkKE9VVFBVVCl0ZXN0LWxpYnRyYWNlZnMuYmluOgogCSAkKEJVSUxEKSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1jZmxhZ3MgbGlidHJhY2VmcyAyJmd0Oy9kZXYvbnVsbCkgLWx0cmFjZWZzCiAKLSQoT1VUUFVUKXRlc3QtZ3RrMi5iaW46Ci0JJChCVUlMRCkgJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyAtLWNmbGFncyBndGsmIzQzOy0yLjAgMiZndDsvZGV2L251bGwpIC1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMKLQotJChPVVRQVVQpdGVzdC1ndGsyLWluZm9iYXIuYmluOgotCSQoQlVJTEQpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgLS1jZmxhZ3MgZ3RrJiM0MzstMi4wIDImZ3Q7L2Rldi9udWxsKQomIzQzOyQoT1VUUFVUKXRlc3QtZ3RrNC5iaW46CiYjNDM7CSQoQlVJTEQpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgLS1jZmxhZ3MgZ3RrNCAyJmd0Oy9kZXYvbnVsbCkKIAogZ3JlcC1saWJzICA9ICQoZmlsdGVyIC1sJSwkKDEpKQogc3RyaXAtbGlicyA9ICQoZmlsdGVyLW91dCAtbCUsJCgxKSkKZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGsyLWluZm9iYXIuYyBiL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGsyLWluZm9iYXIuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjFiNzE2ZGQ1NzMzMC4uMDAwMDAwMDAwMDAwMAotLS0gYS90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi1pbmZvYmFyLmMKJiM0MzsmIzQzOyYjNDM7IC9kZXYvbnVsbApAQCAtMSwxMiAmIzQzOzAsMCBAQAotLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKLSNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAmIzM0Oy1Xc3RyaWN0LXByb3RvdHlwZXMmIzM0OwotI2luY2x1ZGUgJmx0O2d0ay9ndGsuaCZndDsKLSNwcmFnbWEgR0NDIGRpYWdub3N0aWMgZXJyb3IgJiMzNDstV3N0cmljdC1wcm90b3R5cGVzJiMzNDsKLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLXsKLQlndGtfaW5pdCgmYW1wO2FyZ2MsICZhbXA7YXJndik7Ci0JZ3RrX2luZm9fYmFyX25ldygpOwotCi0JcmV0dXJuIDA7Ci19CmRpZmYgLS1naXQgYS90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi5jIGIvdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azQuYwpzaW1pbGFyaXR5IGluZGV4IDc2JQpyZW5hbWUgZnJvbSB0b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi5jCnJlbmFtZSB0byB0b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrNC5jCmluZGV4IDJhYWY0YmZjMjA1NTYuLmI5NTIwZTc0MDhiOTkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGsyLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azQuYwpAQCAtMyw5ICYjNDM7Myw5IEBACiAjaW5jbHVkZSAmbHQ7Z3RrL2d0ay5oJmd0OwogI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBlcnJvciAmIzM0Oy1Xc3RyaWN0LXByb3RvdHlwZXMmIzM0OwogCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQomIzQzO2ludCBtYWluKHZvaWQpCiB7Ci0JZ3RrX2luaXQoJmFtcDthcmdjLCAmYW1wO2FyZ3YpOwomIzQzOwlndGtfaW5pdCgpOwogCiAgICAgICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9Eb2N1bWVudGF0aW9uL3BlcmYtcmVwb3J0LnR4dCBiL3Rvb2xzL3BlcmYvRG9jdW1lbnRhdGlvbi9wZXJmLXJlcG9ydC50eHQKaW5kZXggMjJmODdlYWEzMjc5Ni4uN2FmOWIzZjgxYzA2NSAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi9Eb2N1bWVudGF0aW9uL3BlcmYtcmVwb3J0LnR4dAomIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL0RvY3VtZW50YXRpb24vcGVyZi1yZXBvcnQudHh0CkBAIC0zNTEsNyAmIzQzOzM1MSw3IEBAIE9QVElPTlMKIAlyZXF1aXJlcyBhIHR0eSwgaWYgb25lIGlzIG5vdCBwcmVzZW50LCBhcyB3aGVuIHBpcGluZyB0byBvdGhlcgogCWNvbW1hbmRzLCB0aGUgc3RkaW8gaW50ZXJmYWNlIGlzIHVzZWQuCiAKLS0tZ3RrOjogVXNlIHRoZSBHVEsyIGludGVyZmFjZS4KJiM0MzstLWd0azo6IFVzZSB0aGUgR1RLNCBpbnRlcmZhY2UuCiAKIC1rOjoKIC0tdm1saW51eD0mbHQ7ZmlsZSZndDs6OgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9NYWtlZmlsZSBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUKaW5kZXggNWI3MTM4MzdlZWRlNy4uNTYwMTQxMDY0NzlhMyAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi9NYWtlZmlsZQomIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL01ha2VmaWxlCkBAIC0xMDYsNyAmIzQzOzEwNiw3IEBAIGNsZWFuOgogIyBtYWtlIC1DIHRvb2xzL3BlcmYgLWYgdGVzdHMvbWFrZQogIwogYnVpbGQtdGVzdDoKLQlAJChNQUtFKSBTSFVGPTEgLWYgdGVzdHMvbWFrZSBSRVVTRV9GRUFUVVJFU19EVU1QPTEgTUs9TWFrZWZpbGUgU0VUX1BBUkFMTEVMPTEgLS1uby1wcmludC1kaXJlY3RvcnkgdGFycGtnIG1ha2Vfc3RhdGljIG1ha2Vfd2l0aF9ndGsyIG91dAomIzQzOwlAJChNQUtFKSBTSFVGPTEgLWYgdGVzdHMvbWFrZSBSRVVTRV9GRUFUVVJFU19EVU1QPTEgTUs9TWFrZWZpbGUgU0VUX1BBUkFMTEVMPTEgLS1uby1wcmludC1kaXJlY3RvcnkgdGFycGtnIG1ha2Vfc3RhdGljIG1ha2Vfd2l0aF9ndGs0IG91dAogCiBidWlsZC10ZXN0LXRhcmJhbGw6CiAJQCQoTUFLRSkgLWYgdGVzdHMvbWFrZSBSRVVTRV9GRUFUVVJFU19EVU1QPTEgTUs9TWFrZWZpbGUgU0VUX1BBUkFMTEVMPTEgLS1uby1wcmludC1kaXJlY3Rvcnkgb3V0CmRpZmYgLS1naXQgYS90b29scy9wZXJmL01ha2VmaWxlLmNvbmZpZyBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUuY29uZmlnCmluZGV4IDRkNTk5M2RhOWY5NDUuLjRlZTczOTNhMzlmOTEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3BlcmYvTWFrZWZpbGUuY29uZmlnCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUuY29uZmlnCkBAIC03NzQsMjEgJiM0Mzs3NzQsMjIgQEAgaWZuZGVmIE5PX1NMQU5HCiAgIGVuZGlmCiBlbmRpZgogCi1pZmRlZiBHVEsyCi0gIEZMQUdTX0dUSzI9JChDRkxBR1MpICQoTERGTEFHUykgJChFWFRMSUJTKSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIC0tY2ZsYWdzIGd0ayYjNDM7LTIuMCAyJmd0Oy9kZXYvbnVsbCkKLSAgJChjYWxsIGZlYXR1cmVfY2hlY2ssZ3RrMikKLSAgaWZuZXEgKCQoZmVhdHVyZS1ndGsyKSwgMSkKLSAgICAkKHdhcm5pbmcgR1RLMiBub3QgZm91bmQsIGRpc2FibGVzIEdUSzIgc3VwcG9ydC4gUGxlYXNlIGluc3RhbGwgZ3RrMi1kZXZlbCBvciBsaWJndGsyLjAtZGV2KQotICAgIE5PX0dUSzIgOj0gMQomIzQzO2lmZGVmIEdUSzQKJiM0MzsgIEZMQUdTX0dUSzQ9JChDRkxBR1MpICQoTERGTEFHUykgJChFWFRMSUJTKSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIC0tY2ZsYWdzIGd0azQgMiZndDsvZGV2L251bGwpCiYjNDM7ICAkKGNhbGwgZmVhdHVyZV9jaGVjayxndGs0KQomIzQzOyAgaWZuZXEgKCQoZmVhdHVyZS1ndGs0KSwgMSkKJiM0MzsgICAgJCh3YXJuaW5nIEdUSzQgbm90IGZvdW5kLCBkaXNhYmxlcyBHVEs0IHN1cHBvcnQuIFBsZWFzZSBpbnN0YWxsIGd0azQtZGV2ZWwgb3IgbGliZ3RrLTQtZGV2KQomIzQzOyAgICBOT19HVEs0IDo9IDEKICAgZWxzZQotICAgICQoY2FsbCBmZWF0dXJlX2NoZWNrLGd0azItaW5mb2JhcikKLSAgICBpZmVxICgkKGZlYXR1cmUtZ3RrMi1pbmZvYmFyKSwgMSkKLSAgICAgIEdUS19DRkxBR1MgOj0gLURIQVZFX0dUS19JTkZPX0JBUl9TVVBQT1JUCi0gICAgZW5kaWYKLSAgICBDRkxBR1MgJiM0Mzs9IC1ESEFWRV9HVEsyX1NVUFBPUlQKLSAgICBHVEtfQ0ZMQUdTICYjNDM7PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1jZmxhZ3MgZ3RrJiM0MzstMi4wIDImZ3Q7L2Rldi9udWxsKQotICAgIEdUS19MSUJTIDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgZ3RrJiM0MzstMi4wIDImZ3Q7L2Rldi9udWxsKQomIzQzOyAgICBDRkxBR1MgJiM0Mzs9IC1ESEFWRV9HVEs0X1NVUFBPUlQKJiM0MzsgICAgR1RLX0NGTEFHUyAmIzQzOz0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tY2ZsYWdzIGd0azQgMiZndDsvZGV2L251bGwpCiYjNDM7ICAgIEdUS19MSUJTIDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgZ3RrNCAyJmd0Oy9kZXYvbnVsbCkKICAgICBFWFRMSUJTICYjNDM7PSAtbGRsCiYjNDM7ICAgICMgbGlicGVyZi1ndGsuc28gaXMgZGxvcGVuKCllZCBhdCBydW50aW1lIGFuZCBjYWxscyBiYWNrIGludG8KJiM0MzsgICAgIyBzeW1ib2xzIGRlZmluZWQgaW4gdGhlIHBlcmYgYmluYXJ5IGl0c2VsZiAoY2FsbGNoYWluX3BhcmFtLAomIzQzOyAgICAjIHN5bWJvbF9jb25mLCBldnNlbF9fbmFtZSwgLi4uKTogcGVyZiBuZWVkcyB0byBleHBvcnQgdGhvc2UKJiM0MzsgICAgIyBkeW5hbWljYWxseSBmb3IgdGhlIHBsdWdpbiB0byByZXNvbHZlIHRoZW0uCiYjNDM7ICAgIExERkxBR1MgJiM0Mzs9IC1yZHluYW1pYwogICBlbmRpZgogZW5kaWYKIApkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9NYWtlZmlsZS5wZXJmIGIvdG9vbHMvcGVyZi9NYWtlZmlsZS5wZXJmCmluZGV4IDI5Y2ZkNDRjNDI3ZjMuLjI0MzhiNDBlYWFlYzEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3BlcmYvTWFrZWZpbGUucGVyZgomIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL01ha2VmaWxlLnBlcmYKQEAgLTQ5LDcgJiM0Mzs0OSw3IEBAIGluY2x1ZGUgLi4vc2NyaXB0cy91dGlsaXRpZXMubWFrCiAjCiAjIERlZmluZSBOT19TTEFORyBpZiB5b3UgZG8gbm90IHdhbnQgVFVJIHN1cHBvcnQuCiAjCi0jIERlZmluZSBHVEsyIGlmIHlvdSB3YW50IEdUSyYjNDM7IEdVSSBzdXBwb3J0LgomIzQzOyMgRGVmaW5lIEdUSzQgaWYgeW91IHdhbnQgR1RLJiM0MzsgR1VJIHN1cHBvcnQuCiAjCiAjIERlZmluZSBOT19ERU1BTkdMRSBpZiB5b3UgZG8gbm90IHdhbnQgQyYjNDM7JiM0Mzsgc3ltYm9sIGRlbWFuZ2xpbmcuCiAjCkBAIC00NzMsNyAmIzQzOzQ3Myw3IEBAIGlmbmVxICgkKE9VVFBVVCksKQogICBDRkxBR1MgJiM0Mzs9IC1JJChPVVRQVVQpCiBlbmRpZgogCi1pZmRlZiBHVEsyCiYjNDM7aWZkZWYgR1RLNAogICBBTExfUFJPR1JBTVMgJiM0Mzs9ICQoT1VUUFVUKWxpYnBlcmYtZ3RrLnNvCiAgIEdUS19JTiA6PSAkKE9VVFBVVClndGstaW4ubwogZW5kaWYKQEAgLTgxMSw3ICYjNDM7ODExLDcgQEAgY2hlY2s6IHByZXBhcmUKIAogIyMjIEluc3RhbGxhdGlvbiBydWxlcwogCi1pZmRlZiBHVEsyCiYjNDM7aWZkZWYgR1RLNAogaW5zdGFsbC1ndGs6ICQoT1VUUFVUKWxpYnBlcmYtZ3RrLnNvCiAJJChjYWxsIFFVSUVUX0lOU1RBTEwsICYjMzk7R1RLIFVJJiMzOTspIFwKIAkJJChJTlNUQUxMKSAtZCAtbSA3NTUgJiMzOTskKERFU1RESVJfU1EpJChsaWJkaXJfU1EpJiMzOTs7IFwKZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1hbm5vdGF0ZS5jIGIvdG9vbHMvcGVyZi9idWlsdGluLWFubm90YXRlLmMKaW5kZXggNjljYjcyYjIwODJhNi4uMTUxNjNlMDgxYThjZSAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi9idWlsdGluLWFubm90YXRlLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi9idWlsdGluLWFubm90YXRlLmMKQEAgLTUyLDcgJiM0Mzs1Miw3IEBAIHN0cnVjdCBwZXJmX2Fubm90YXRlIHsKIAlib29sCSAgIHVzZV90dWk7CiAjZW5kaWYKIAlib29sCSAgIHVzZV9zdGRpbywgdXNlX3N0ZGlvMjsKLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVAomIzQzOyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVAogCWJvb2wJICAgdXNlX2d0azsKICNlbmRpZgogCWJvb2wJICAgc2tpcF9taXNzaW5nOwpAQCAtNzEyLDcgJiM0Mzs3MTIsNyBAQCBpbnQgY21kX2Fubm90YXRlKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndikKIAlPUFRfQk9PTEVBTigmIzM5O3EmIzM5OywgJiMzNDtxdWlldCYjMzQ7LCAmYW1wO3F1aWV0LCAmIzM0O2RvIG5vdyBzaG93IGFueSB3YXJuaW5ncyBvciBtZXNzYWdlcyYjMzQ7KSwKIAlPUFRfQk9PTEVBTigmIzM5O0QmIzM5OywgJiMzNDtkdW1wLXJhdy10cmFjZSYjMzQ7LCAmYW1wO2R1bXBfdHJhY2UsCiAJCSAgICAmIzM0O2R1bXAgcmF3IHRyYWNlIGluIEFTQ0lJJiMzNDspLAotI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUCiYjNDM7I2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUCiAJT1BUX0JPT0xFQU4oMCwgJiMzNDtndGsmIzM0OywgJmFtcDthbm5vdGF0ZS51c2VfZ3RrLCAmIzM0O1VzZSB0aGUgR1RLIGludGVyZmFjZSYjMzQ7KSwKICNlbmRpZgogI2lmZGVmIEhBVkVfU0xBTkdfU1VQUE9SVApAQCAtODI4LDcgJiM0Mzs4MjgsNyBAQCBpbnQgY21kX2Fubm90YXRlKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndikKIAlpZiAoYW5ub3RhdGVfY2hlY2tfYXJncygpICZsdDsgMCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVAomIzQzOyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVAogCWlmIChzeW1ib2xfY29uZi5zaG93X25yX3NhbXBsZXMgJmFtcDsmYW1wOyBhbm5vdGF0ZS51c2VfZ3RrKSB7CiAJCXByX2VycigmIzM0Oy0tc2hvdy1uci1zYW1wbGVzIGlzIG5vdCBhdmFpbGFibGUgaW4gLS1ndGsgbW9kZSBhdCB0aGlzIHRpbWVcbiYjMzQ7KTsKIAkJcmV0dXJuIHJldDsKQEAgLTg5OCw3ICYjNDM7ODk4LDcgQEAgaW50IGNtZF9hbm5vdGF0ZShpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpCiAJZWxzZSBpZiAoYW5ub3RhdGUudXNlX3R1aSkKIAkJdXNlX2Jyb3dzZXIgPSAxOwogI2VuZGlmCi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlQKJiM0MzsjaWZkZWYgSEFWRV9HVEs0X1NVUFBPUlQKIAllbHNlIGlmIChhbm5vdGF0ZS51c2VfZ3RrKQogCQl1c2VfYnJvd3NlciA9IDI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1yZXBvcnQuYyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1yZXBvcnQuYwppbmRleCA2MGQxZjE2NjYyOWUwLi5kMTQzODRjNTg0NjYxIDEwMDY0NAotLS0gYS90b29scy9wZXJmL2J1aWx0aW4tcmVwb3J0LmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi9idWlsdGluLXJlcG9ydC5jCkBAIC04Miw3ICYjNDM7ODIsNyBAQCBzdHJ1Y3QgcmVwb3J0IHsKICNpZmRlZiBIQVZFX1NMQU5HX1NVUFBPUlQKIAlib29sCQkJdXNlX3R1aTsKICNlbmRpZgotI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUCiYjNDM7I2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUCiAJYm9vbAkJCXVzZV9ndGs7CiAjZW5kaWYKIAlib29sCQkJdXNlX3N0ZGlvOwpAQCAtMTM1OSw4ICYjNDM7MTM1OSw4IEBAIGludCBjbWRfcmVwb3J0KGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndikKICNpZmRlZiBIQVZFX1NMQU5HX1NVUFBPUlQKIAlPUFRfQk9PTEVBTigwLCAmIzM0O3R1aSYjMzQ7LCAmYW1wO3JlcG9ydC51c2VfdHVpLCAmIzM0O1VzZSB0aGUgVFVJIGludGVyZmFjZSYjMzQ7KSwKICNlbmRpZgotI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUCi0JT1BUX0JPT0xFQU4oMCwgJiMzNDtndGsmIzM0OywgJmFtcDtyZXBvcnQudXNlX2d0aywgJiMzNDtVc2UgdGhlIEdUSzIgaW50ZXJmYWNlJiMzNDspLAomIzQzOyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVAomIzQzOwlPUFRfQk9PTEVBTigwLCAmIzM0O2d0ayYjMzQ7LCAmYW1wO3JlcG9ydC51c2VfZ3RrLCAmIzM0O1VzZSB0aGUgR1RLNCBpbnRlcmZhY2UmIzM0OyksCiAjZW5kaWYKIAlPUFRfQk9PTEVBTigwLCAmIzM0O3N0ZGlvJiMzNDssICZhbXA7cmVwb3J0LnVzZV9zdGRpbywKIAkJICAgICYjMzQ7VXNlIHRoZSBzdGRpbyBpbnRlcmZhY2UmIzM0OyksCkBAIC0xNzEwLDcgJiM0MzsxNzEwLDcgQEAgaW50IGNtZF9yZXBvcnQoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KQogCWVsc2UgaWYgKHJlcG9ydC51c2VfdHVpKQogCQl1c2VfYnJvd3NlciA9IDE7CiAjZW5kaWYKLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVAomIzQzOyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVAogCWVsc2UgaWYgKHJlcG9ydC51c2VfZ3RrKQogCQl1c2VfYnJvd3NlciA9IDI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvc2NyaXB0cy9pbnN0YWxsLWJ1aWxkLWRlcHMuc2ggYi90b29scy9wZXJmL3NjcmlwdHMvaW5zdGFsbC1idWlsZC1kZXBzLnNoCmluZGV4IGQwMDNlN2ZhYjJiZTguLmE2MDFhNTI2MGMxN2UgMTAwNzU1Ci0tLSBhL3Rvb2xzL3BlcmYvc2NyaXB0cy9pbnN0YWxsLWJ1aWxkLWRlcHMuc2gKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi9zY3JpcHRzL2luc3RhbGwtYnVpbGQtZGVwcy5zaApAQCAtMTk5LDggJiM0MzsxOTksOCBAQCBmZWRvcmFfcGtnX2ZvcigpIHsKIAkjIG9wdC1pbiBmZWF0dXJlcywgd2hpY2ggYSBkZWZhdWx0IGJ1aWxkIGRvZXMgbm90IGVuYWJsZTogdGhlIGxpYmJmZAogCSMgZGlzYXNzZW1ibGVyIGZhbWlseSAobGliYmZkLCBsaWJiZmQtdGhyZWFkc2FmZSwgbGliYmZkLWxpYmVydHksCiAJIyBkaXNhc3NlbWJsZXItKiwgY3BsdXMtZGVtYW5nbGUpLCBvbmx5IGxpbmtlZCBvbiBCVUlMRF9OT05ESVNUUk8KLQkjIGJ1aWxkcyBhbmQgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBjYXBzdG9uZSwgR1RLMiwgTElCUEVSTCBhbmQKLQkjIExJQlVOV0lORCBzdXBwb3J0IChpZmRlZiBHVEsyIC8gaWZkZWYgTElCUEVSTCAvIExJQlVOV0lORD0xKSwKJiM0MzsJIyBidWlsZHMgYW5kIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgY2Fwc3RvbmUsIEdUSzQsIExJQlBFUkwgYW5kCiYjNDM7CSMgTElCVU5XSU5EIHN1cHBvcnQgKGlmZGVmIEdUSzQgLyBpZmRlZiBMSUJQRVJMIC8gTElCVU5XSU5EPTEpLAogCSMgYW5kIENvcmVTaWdodCAoaWZkZWYgQ09SRVNJR0hUKSwgYXJlIGRlbGliZXJhdGVseSBub3QgbWFwcGVkLgogCSMgbGliYWlvIGlzIG5vdCBtYXBwZWQgZWl0aGVyOiBpdHMKIAkjIHRlc3QgdXNlcyB0aGUgUE9TSVggQUlPIEFQSSAoYWlvLmgsIGFpb18qLCAtbHJ0KSwgcHJvdmlkZWQgYnkKZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdGVzdHMvbWFrZSBiL3Rvb2xzL3BlcmYvdGVzdHMvbWFrZQppbmRleCBkMmMyZjUyNmUxZGIwLi4yMDJhYjU1MDE5MTYxIDEwMDY0NAotLS0gYS90b29scy9wZXJmL3Rlc3RzL21ha2UKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi90ZXN0cy9tYWtlCkBAIC05NSw3ICYjNDM7OTUsNyBAQCBtYWtlX25vX2JhYmVsdHJhY2UyIDo9IE5PX0JBQkVMVFJBQ0UyPTEKIG1ha2Vfd2l0aF9jb3Jlc2lnaHQgOj0gQ09SRVNJR0hUPTEKIG1ha2Vfbm9fc2R0CSAgICA6PSBOT19TRFQ9MQogbWFrZV9ub19saWJwZm00ICAgICA6PSBOT19MSUJQRk00PTEKLW1ha2Vfd2l0aF9ndGsyICAgICAgOj0gR1RLMj0xCiYjNDM7bWFrZV93aXRoX2d0azQgICAgICA6PSBHVEs0PTEKIG1ha2VfcmVmY250X2NoZWNrICAgOj0gRVhUUkFfQ0ZMQUdTPSYjMzQ7LURSRUZDTlRfQ0hFQ0tJTkc9MSYjMzQ7CiBtYWtlX3RhZ3MgICAgICAgICAgIDo9IHRhZ3MKIG1ha2VfY3Njb3BlICAgICAgICAgOj0gY3Njb3BlCkBAIC0zMTgsNyAmIzQzOzMxOCw3IEBAICQocnVuKToKIAkkKGNhbGwgdGVzdCwkQCkgJmFtcDsmYW1wOyBcCiAJcm0gLXJmICRAICQkVE1QX0RFU1QgfHwgKGNhdCAkQCA7IGZhbHNlKQogCi1tYWtlX3dpdGhfZ3RrMjoKJiM0MzttYWtlX3dpdGhfZ3RrNDoKIAkkKGNhbGwgY2xlYW4pCiAJQFRNUF9ERVNUPSQkKG1rdGVtcCAtZCk7IFwKIAljbWQ9JiMzNDtjZCAkKFBFUkYpICZhbXA7JmFtcDsgJChNQUtFX0YpICQoJEApICQoUEFSQUxMRUxfT1BUKSAkKE9fT1BUKSBERVNURElSPSQkVE1QX0RFU1QmIzM0OzsgXApkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91aS9ndGsvYW5ub3RhdGUuYyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2Fubm90YXRlLmMKaW5kZXggODkyMGUyOTg0MjBhOC4uMDk0ZGZhMDQ1Yjc3NCAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvYW5ub3RhdGUuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3VpL2d0ay9hbm5vdGF0ZS5jCkBAIC0xMSw2ICYjNDM7MTEsNyBAQAogI2luY2x1ZGUgJiMzNDt1aS9oZWxwbGluZS5oJiMzNDsKICNpbmNsdWRlICZsdDtpbnR0eXBlcy5oJmd0OwogI2luY2x1ZGUgJmx0O3NpZ25hbC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtzdHJpbmcuaCZndDsKIAogZW51bSB7CiAJQU5OX0NPTF9fUEVSQ0VOVCwKQEAgLTE2MSw3ICYjNDM7MTYyLDcgQEAgc3RhdGljIGludCBwZXJmX2d0a19fYW5ub3RhdGVfc3ltYm9sKEd0a1dpZGdldCAqd2luZG93LCBzdHJ1Y3QgbWFwX3N5bWJvbCAqbXMsCiAJCQlndGtfbGlzdF9zdG9yZV9zZXQoc3RvcmUsICZhbXA7aXRlciwgQU5OX0NPTF9fTElORSwgcywgLTEpOwogCX0KIAotCWd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIod2luZG93KSwgdmlldyk7CiYjNDM7CWd0a19zY3JvbGxlZF93aW5kb3dfc2V0X2NoaWxkKEdUS19TQ1JPTExFRF9XSU5ET1cod2luZG93KSwgdmlldyk7CiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocG9zLCBuLCAmYW1wO25vdGVzLSZndDtzcmMtJmd0O3NvdXJjZSwgYWwubm9kZSkgewogCQlsaXN0X2RlbF9pbml0KCZhbXA7cG9zLSZndDthbC5ub2RlKTsKQEAgLTIwNSw0MCAmIzQzOzIwNiwzNCBAQCBzdGF0aWMgaW50IHN5bWJvbF9fZ3RrX2Fubm90YXRlKHN0cnVjdCBtYXBfc3ltYm9sICptcywgc3RydWN0IGV2c2VsICpldnNlbCwKIAkJR3RrV2lkZ2V0ICppbmZvYmFyOwogCQlHdGtXaWRnZXQgKnN0YXRiYXI7CiAKLQkJc2lnbmFsKFNJR1NFR1YsIHBlcmZfZ3RrX19zaWduYWwpOwotCQlzaWduYWwoU0lHRlBFLCAgcGVyZl9ndGtfX3NpZ25hbCk7Ci0JCXNpZ25hbChTSUdJTlQsICBwZXJmX2d0a19fc2lnbmFsKTsKLQkJc2lnbmFsKFNJR1FVSVQsIHBlcmZfZ3RrX19zaWduYWwpOwotCQlzaWduYWwoU0lHVEVSTSwgcGVyZl9ndGtfX3NpZ25hbCk7CiYjNDM7CQlzaWduYWwoU0lHU0VHViwgcGVyZl9ndGtfX2ZhdGFsX3NpZ25hbCk7CiYjNDM7CQlzaWduYWwoU0lHRlBFLCAgcGVyZl9ndGtfX2ZhdGFsX3NpZ25hbCk7CiYjNDM7CQlwZXJmX2d0a19faW5zdGFsbF9xdWl0X3NpZ25hbHMoKTsKIAotCQl3aW5kb3cgPSBndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1RPUExFVkVMKTsKJiM0MzsJCXdpbmRvdyA9IGd0a193aW5kb3dfbmV3KCk7CiAJCWd0a193aW5kb3dfc2V0X3RpdGxlKEdUS19XSU5ET1cod2luZG93KSwgJiMzNDtwZXJmIGFubm90YXRlJiMzNDspOwogCi0JCWdfc2lnbmFsX2Nvbm5lY3Qod2luZG93LCAmIzM0O2RlbGV0ZV9ldmVudCYjMzQ7LCBndGtfbWFpbl9xdWl0LCBOVUxMKTsKLQogCQlwZ2N0eCA9IHBlcmZfZ3RrX19hY3RpdmF0ZV9jb250ZXh0KHdpbmRvdyk7CiAJCWlmICghcGdjdHgpCiAJCQlyZXR1cm4gLTE7CiAKLQkJdmJveCA9IGd0a192Ym94X25ldyhGQUxTRSwgMCk7CiYjNDM7CQl2Ym94ID0gZ3RrX2JveF9uZXcoR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCAwKTsKIAkJbm90ZWJvb2sgPSBndGtfbm90ZWJvb2tfbmV3KCk7CiAJCXBnY3R4LSZndDtub3RlYm9vayA9IG5vdGVib29rOwogCi0JCWd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBub3RlYm9vaywgVFJVRSwgVFJVRSwgMCk7CiYjNDM7CQlndGtfd2lkZ2V0X3NldF92ZXhwYW5kKG5vdGVib29rLCBUUlVFKTsKJiM0MzsJCWd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIG5vdGVib29rKTsKIAogCQlpbmZvYmFyID0gcGVyZl9ndGtfX3NldHVwX2luZm9fYmFyKCk7Ci0JCWlmIChpbmZvYmFyKSB7Ci0JCQlndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgaW5mb2JhciwKLQkJCQkJICAgRkFMU0UsIEZBTFNFLCAwKTsKLQkJfQomIzQzOwkJZ3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgaW5mb2Jhcik7CiAKIAkJc3RhdGJhciA9IHBlcmZfZ3RrX19zZXR1cF9zdGF0dXNiYXIoKTsKLQkJZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIHN0YXRiYXIsIEZBTFNFLCBGQUxTRSwgMCk7CiYjNDM7CQlndGtfYm94X2FwcGVuZChHVEtfQk9YKHZib3gpLCBzdGF0YmFyKTsKIAotCQlndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHdpbmRvdyksIHZib3gpOwomIzQzOwkJZ3RrX3dpbmRvd19zZXRfY2hpbGQoR1RLX1dJTkRPVyh3aW5kb3cpLCB2Ym94KTsKIAl9CiAKLQlzY3JvbGxlZF93aW5kb3cgPSBndGtfc2Nyb2xsZWRfd2luZG93X25ldyhOVUxMLCBOVUxMKTsKJiM0MzsJc2Nyb2xsZWRfd2luZG93ID0gZ3RrX3Njcm9sbGVkX3dpbmRvd19uZXcoKTsKIAl0YWJfbGFiZWwgPSBndGtfbGFiZWxfbmV3KHN5bS0mZ3Q7bmFtZSk7CiAKIAlndGtfc2Nyb2xsZWRfd2luZG93X3NldF9wb2xpY3koR1RLX1NDUk9MTEVEX1dJTkRPVyhzY3JvbGxlZF93aW5kb3cpLApAQCAtMjY3LDEyICYjNDM7MjYyLDExIEBAIHZvaWQgcGVyZl9ndGtfX3Nob3dfYW5ub3RhdGlvbnModm9pZCkKIAkJcmV0dXJuOwogCiAJd2luZG93ID0gcGdjdHgtJmd0O21haW5fd2luZG93OwotCWd0a193aWRnZXRfc2hvd19hbGwod2luZG93KTsKIAogCXBlcmZfZ3RrX19yZXNpemVfd2luZG93KHdpbmRvdyk7Ci0JZ3RrX3dpbmRvd19zZXRfcG9zaXRpb24oR1RLX1dJTkRPVyh3aW5kb3cpLCBHVEtfV0lOX1BPU19DRU5URVIpOwomIzQzOwlndGtfd2lkZ2V0X3NldF92aXNpYmxlKHdpbmRvdywgVFJVRSk7CiAKLQlndGtfbWFpbigpOwomIzQzOwlwZXJmX2d0a19fcnVuX21haW5fbG9vcCh3aW5kb3cpOwogCiAJcGVyZl9ndGtfX2RlYWN0aXZhdGVfY29udGV4dCgmYW1wO3BnY3R4KTsKIH0KZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2Jyb3dzZXIuYyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2Jyb3dzZXIuYwppbmRleCBkMmRhZGYzODczZmJkLi45OGYxZDZiZmNiMjQ2IDEwMDY0NAotLS0gYS90b29scy9wZXJmL3VpL2d0ay9icm93c2VyLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91aS9ndGsvYnJvd3Nlci5jCkBAIC01LDMyICYjNDM7NSw5MiBAQAogI2luY2x1ZGUgJiMzNDsuLi9oaXN0LmgmIzM0OwogI2luY2x1ZGUgJiMzNDsuLi9oZWxwbGluZS5oJiMzNDsKIAomIzQzOyNpbmNsdWRlICZsdDtnbGliLXVuaXguaCZndDsKICNpbmNsdWRlICZsdDtzaWduYWwuaCZndDsKIAotdm9pZCBwZXJmX2d0a19fc2lnbmFsKGludCBzaWcpCiYjNDM7LyoKJiM0MzsgKiBTSUdJTlQvU0lHUVVJVC9TSUdURVJNIGFyZSBhc3luY2hyb25vdXM6IGRlZmVycmluZyB0aGUgYWN0dWFsIGV4aXQgdG8gYQomIzQzOyAqIEdMaWIgc291cmNlIGRpc3BhdGNoZWQgZnJvbSB0aGUgbWFpbiBsb29wIG1lYW5zIGl0IGFsd2F5cyBydW5zIG9uIHRoZQomIzQzOyAqIG1haW4gdGhyZWFkLCBzZXJpYWxpemVkIHdpdGggZXZlcnl0aGluZyBlbHNlIHRoZSBtYWluIGxvb3AgZG9lcwomIzQzOyAqIChpbmNsdWRpbmcgcGVyZl9ndGtfX2Vycm9yKCkmIzM5O3MgdXBkYXRlcyB0byBwZXJmX2d0a19fZXJyb3JfbG9vcHMpLCBpbnN0ZWFkCiYjNDM7ICogb2YgcmFjaW5nIHRoZW0gZnJvbSBhcmJpdHJhcnkgc2lnbmFsLWhhbmRsZXIgY29udGV4dC4KJiM0MzsgKi8KJiM0MztzdGF0aWMgZ2Jvb2xlYW4gcGVyZl9ndGtfX3F1aXRfc2lnbmFsKGdwb2ludGVyIGRhdGEgX19tYXliZV91bnVzZWQpCiB7CiAJcGVyZl9ndGtfX2V4aXQoZmFsc2UpOwomIzQzOwlyZXR1cm4gR19TT1VSQ0VfUkVNT1ZFOwomIzQzO30KJiM0MzsKJiM0Mzt2b2lkIHBlcmZfZ3RrX19pbnN0YWxsX3F1aXRfc2lnbmFscyh2b2lkKQomIzQzO3sKJiM0MzsJZ191bml4X3NpZ25hbF9hZGQoU0lHSU5ULCAgcGVyZl9ndGtfX3F1aXRfc2lnbmFsLCBOVUxMKTsKJiM0MzsJZ191bml4X3NpZ25hbF9hZGQoU0lHUVVJVCwgcGVyZl9ndGtfX3F1aXRfc2lnbmFsLCBOVUxMKTsKJiM0MzsJZ191bml4X3NpZ25hbF9hZGQoU0lHVEVSTSwgcGVyZl9ndGtfX3F1aXRfc2lnbmFsLCBOVUxMKTsKJiM0Mzt9CiYjNDM7CiYjNDM7LyoKJiM0MzsgKiBTSUdTRUdWL1NJR0ZQRSBhcmUgc3luY2hyb25vdXMgZmF1bHRzOiB0aGVyZSYjMzk7cyBubyAmIzM0O2xhdGVyJiMzNDsgdG8gZGVmZXIgdG8sCiYjNDM7ICogYW5kIG5vIHNhZmUgd2F5IHRvIHJ1biBHVEsvR0xpYiBjb2RlIChvciBhbnl0aGluZyBlbHNlIG5vbi1hc3luYy1zaWduYWwtCiYjNDM7ICogc2FmZSkgZnJvbSB0aGUgZmF1bHRpbmcgY29udGV4dC4gUmVwb3J0IGFuZCBsZXQgdGhlIGRlZmF1bHQgZGlzcG9zaXRpb24KJiM0MzsgKiAoY29yZSBkdW1wKSBoYXBwZW4gaW5zdGVhZCBvZiB0cnlpbmcgdG8gdGVhciBkb3duIEdUSyBzdGF0ZSBoZXJlLgomIzQzOyAqLwomIzQzO3ZvaWQgcGVyZl9ndGtfX2ZhdGFsX3NpZ25hbChpbnQgc2lnKQomIzQzO3sKIAlwc2lnbmFsKHNpZywgJiMzNDtwZXJmJiMzNDspOwomIzQzOwlzaWduYWwoc2lnLCBTSUdfREZMKTsKJiM0MzsJcmFpc2Uoc2lnKTsKIH0KIAogdm9pZCBwZXJmX2d0a19fcmVzaXplX3dpbmRvdyhHdGtXaWRnZXQgKndpbmRvdykKIHsKIAlHZGtSZWN0YW5nbGUgcmVjdDsKLQlHZGtTY3JlZW4gKnNjcmVlbjsKLQlpbnQgbW9uaXRvcjsKJiM0MzsJR2RrTW9uaXRvciAqbW9uaXRvcjsKJiM0MzsJR2RrRGlzcGxheSAqZGlzcGxheTsKJiM0MzsJR0xpc3RNb2RlbCAqbW9uaXRvcnM7CiAJaW50IGhlaWdodDsKIAlpbnQgd2lkdGg7CiAKLQlzY3JlZW4gPSBndGtfd2lkZ2V0X2dldF9zY3JlZW4od2luZG93KTsKJiM0MzsJZGlzcGxheSA9IGd0a193aWRnZXRfZ2V0X2Rpc3BsYXkod2luZG93KTsKJiM0MzsJbW9uaXRvcnMgPSBnZGtfZGlzcGxheV9nZXRfbW9uaXRvcnMoZGlzcGxheSk7CiYjNDM7CW1vbml0b3IgPSBnX2xpc3RfbW9kZWxfZ2V0X2l0ZW0obW9uaXRvcnMsIDApOwomIzQzOwlpZiAoIW1vbml0b3IpIHsKJiM0MzsJCWd0a193aW5kb3dfc2V0X2RlZmF1bHRfc2l6ZShHVEtfV0lORE9XKHdpbmRvdyksIDgwMCwgNjAwKTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQogCi0JbW9uaXRvciA9IGdka19zY3JlZW5fZ2V0X21vbml0b3JfYXRfd2luZG93KHNjcmVlbiwgd2luZG93LSZndDt3aW5kb3cpOwotCi0JZ2RrX3NjcmVlbl9nZXRfbW9uaXRvcl9nZW9tZXRyeShzY3JlZW4sIG1vbml0b3IsICZhbXA7cmVjdCk7CiYjNDM7CWdka19tb25pdG9yX2dldF9nZW9tZXRyeShtb25pdG9yLCAmYW1wO3JlY3QpOwomIzQzOwlnX29iamVjdF91bnJlZihtb25pdG9yKTsKIAogCXdpZHRoCT0gcmVjdC53aWR0aCAqIDMgLyA0OwogCWhlaWdodAk9IHJlY3QuaGVpZ2h0ICogMyAvIDQ7CiAKLQlndGtfd2luZG93X3Jlc2l6ZShHVEtfV0lORE9XKHdpbmRvdyksIHdpZHRoLCBoZWlnaHQpOwomIzQzOwlndGtfd2luZG93X3NldF9kZWZhdWx0X3NpemUoR1RLX1dJTkRPVyh3aW5kb3cpLCB3aWR0aCwgaGVpZ2h0KTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIEdNYWluTG9vcCAqcGVyZl9ndGtfX21haW5fbG9vcDsKJiM0MzsKJiM0Mzt2b2lkIHBlcmZfZ3RrX19xdWl0X21haW5fbG9vcCh2b2lkKQomIzQzO3sKJiM0MzsJaWYgKHBlcmZfZ3RrX19tYWluX2xvb3ApCiYjNDM7CQlnX21haW5fbG9vcF9xdWl0KHBlcmZfZ3RrX19tYWluX2xvb3ApOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgZ2Jvb2xlYW4gcGVyZl9ndGtfX2Nsb3NlX3JlcXVlc3QoR3RrV2lkZ2V0ICp3aWRnZXQgX19tYXliZV91bnVzZWQsCiYjNDM7CQkJCQlncG9pbnRlciBkYXRhIF9fbWF5YmVfdW51c2VkKQomIzQzO3sKJiM0MzsJcGVyZl9ndGtfX3F1aXRfbWFpbl9sb29wKCk7CiYjNDM7CiYjNDM7CXJldHVybiBGQUxTRTsKJiM0Mzt9CiYjNDM7CiYjNDM7dm9pZCBwZXJmX2d0a19fcnVuX21haW5fbG9vcChHdGtXaWRnZXQgKndpbmRvdykKJiM0Mzt7CiYjNDM7CWdfc2lnbmFsX2Nvbm5lY3Qod2luZG93LCAmIzM0O2Nsb3NlLXJlcXVlc3QmIzM0OywKJiM0MzsJCQkgR19DQUxMQkFDSyhwZXJmX2d0a19fY2xvc2VfcmVxdWVzdCksIE5VTEwpOwomIzQzOwomIzQzOwlwZXJmX2d0a19fbWFpbl9sb29wID0gZ19tYWluX2xvb3BfbmV3KE5VTEwsIEZBTFNFKTsKJiM0MzsJZ19tYWluX2xvb3BfcnVuKHBlcmZfZ3RrX19tYWluX2xvb3ApOwomIzQzOwlnX2NsZWFyX3BvaW50ZXIoJmFtcDtwZXJmX2d0a19fbWFpbl9sb29wLCBnX21haW5fbG9vcF91bnJlZik7CiB9CiAKIGNvbnN0IGNoYXIgKnBlcmZfZ3RrX19nZXRfcGVyY2VudF9jb2xvcihkb3VibGUgcGVyY2VudCkKQEAgLTQyLDMzICYjNDM7MTAyLDM1IEBAIGNvbnN0IGNoYXIgKnBlcmZfZ3RrX19nZXRfcGVyY2VudF9jb2xvcihkb3VibGUgcGVyY2VudCkKIAlyZXR1cm4gTlVMTDsKIH0KIAotI2lmZGVmIEhBVkVfR1RLX0lORk9fQkFSX1NVUFBPUlQKJiM0MztzdGF0aWMgdm9pZCBwZXJmX2d0a19faGlkZV93aWRnZXQoR3RrV2lkZ2V0ICp3aWRnZXQsIGdpbnQgcmVzcG9uc2VfaWQgX19tYXliZV91bnVzZWQsCiYjNDM7CQkJCSAgIGdwb2ludGVyIGRhdGEgX19tYXliZV91bnVzZWQpCiYjNDM7ewomIzQzOwlndGtfd2lkZ2V0X3NldF92aXNpYmxlKHdpZGdldCwgRkFMU0UpOwomIzQzO30KJiM0MzsKIEd0a1dpZGdldCAqcGVyZl9ndGtfX3NldHVwX2luZm9fYmFyKHZvaWQpCiB7CiAJR3RrV2lkZ2V0ICppbmZvX2JhcjsKIAlHdGtXaWRnZXQgKmxhYmVsOwotCUd0a1dpZGdldCAqY29udGVudF9hcmVhOwogCiAJaW5mb19iYXIgPSBndGtfaW5mb19iYXJfbmV3KCk7Ci0JZ3RrX3dpZGdldF9zZXRfbm9fc2hvd19hbGwoaW5mb19iYXIsIFRSVUUpOwomIzQzOwlndGtfd2lkZ2V0X3NldF92aXNpYmxlKGluZm9fYmFyLCBGQUxTRSk7CiAKIAlsYWJlbCA9IGd0a19sYWJlbF9uZXcoJiMzNDsmIzM0Oyk7Ci0JZ3RrX3dpZGdldF9zaG93KGxhYmVsKTsKJiM0MzsJZ3RrX3dpZGdldF9zZXRfdmlzaWJsZShsYWJlbCwgVFJVRSk7CiAKLQljb250ZW50X2FyZWEgPSBndGtfaW5mb19iYXJfZ2V0X2NvbnRlbnRfYXJlYShHVEtfSU5GT19CQVIoaW5mb19iYXIpKTsKLQlndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKGNvbnRlbnRfYXJlYSksIGxhYmVsKTsKJiM0MzsJZ3RrX2luZm9fYmFyX2FkZF9jaGlsZChHVEtfSU5GT19CQVIoaW5mb19iYXIpLCBsYWJlbCk7CiAKLQlndGtfaW5mb19iYXJfYWRkX2J1dHRvbihHVEtfSU5GT19CQVIoaW5mb19iYXIpLCBHVEtfU1RPQ0tfT0ssCiYjNDM7CWd0a19pbmZvX2Jhcl9hZGRfYnV0dG9uKEdUS19JTkZPX0JBUihpbmZvX2JhciksICYjMzQ7X09LJiMzNDssCiAJCQkJR1RLX1JFU1BPTlNFX09LKTsKIAlnX3NpZ25hbF9jb25uZWN0KGluZm9fYmFyLCAmIzM0O3Jlc3BvbnNlJiMzNDssCi0JCQkgR19DQUxMQkFDSyhndGtfd2lkZ2V0X2hpZGUpLCBOVUxMKTsKJiM0MzsJCQkgR19DQUxMQkFDSyhwZXJmX2d0a19faGlkZV93aWRnZXQpLCBOVUxMKTsKIAogCXBnY3R4LSZndDtpbmZvX2JhciA9IGluZm9fYmFyOwogCXBnY3R4LSZndDttZXNzYWdlX2xhYmVsID0gbGFiZWw7CiAKIAlyZXR1cm4gaW5mb19iYXI7CiB9Ci0jZW5kaWYKIAogR3RrV2lkZ2V0ICpwZXJmX2d0a19fc2V0dXBfc3RhdHVzYmFyKHZvaWQpCiB7CmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL2d0ay9ndGsuaCBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2d0ay5oCmluZGV4IGEyYjQ5N2YwM2ZkNmUuLjZiMzdmZDk5NDNjOWQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2d0ay5oCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2d0ay5oCkBAIC0xMywxMCAmIzQzOzEzLDggQEAgc3RydWN0IHBlcmZfZ3RrX2NvbnRleHQgewogCUd0a1dpZGdldCAqbWFpbl93aW5kb3c7CiAJR3RrV2lkZ2V0ICpub3RlYm9vazsKIAotI2lmZGVmIEhBVkVfR1RLX0lORk9fQkFSX1NVUFBPUlQKIAlHdGtXaWRnZXQgKmluZm9fYmFyOwogCUd0a1dpZGdldCAqbWVzc2FnZV9sYWJlbDsKLSNlbmRpZgogCUd0a1dpZGdldCAqc3RhdGJhcjsKIAlndWludCBzdGF0YmFyX2N0eF9pZDsKIH07CkBAIC0zOCwxOSAmIzQzOzM2LDE1IEBAIHZvaWQgcGVyZl9ndGtfX2luaXRfaGVscGxpbmUodm9pZCk7CiB2b2lkIGd0a191aV9wcm9ncmVzc19faW5pdCh2b2lkKTsKIHZvaWQgcGVyZl9ndGtfX2luaXRfaHBwKHZvaWQpOwogCi12b2lkIHBlcmZfZ3RrX19zaWduYWwoaW50IHNpZyk7CiYjNDM7dm9pZCBwZXJmX2d0a19faW5zdGFsbF9xdWl0X3NpZ25hbHModm9pZCk7CiYjNDM7dm9pZCBwZXJmX2d0a19fZmF0YWxfc2lnbmFsKGludCBzaWcpOwogdm9pZCBwZXJmX2d0a19fcmVzaXplX3dpbmRvdyhHdGtXaWRnZXQgKndpbmRvdyk7CiYjNDM7dm9pZCBwZXJmX2d0a19fcnVuX21haW5fbG9vcChHdGtXaWRnZXQgKndpbmRvdyk7CiYjNDM7dm9pZCBwZXJmX2d0a19fcXVpdF9tYWluX2xvb3Aodm9pZCk7CiYjNDM7dm9pZCBwZXJmX2d0a19fcXVpdF9lcnJvcl9kaWFsb2codm9pZCk7CiBjb25zdCBjaGFyICpwZXJmX2d0a19fZ2V0X3BlcmNlbnRfY29sb3IoZG91YmxlIHBlcmNlbnQpOwogR3RrV2lkZ2V0ICpwZXJmX2d0a19fc2V0dXBfc3RhdHVzYmFyKHZvaWQpOwotCi0jaWZkZWYgSEFWRV9HVEtfSU5GT19CQVJfU1VQUE9SVAogR3RrV2lkZ2V0ICpwZXJmX2d0a19fc2V0dXBfaW5mb19iYXIodm9pZCk7Ci0jZWxzZQotc3RhdGljIGlubGluZSBHdGtXaWRnZXQgKnBlcmZfZ3RrX19zZXR1cF9pbmZvX2Jhcih2b2lkKQotewotCXJldHVybiBOVUxMOwotfQotI2VuZGlmCiAKIHN0cnVjdCBldnNlbDsKIHN0cnVjdCBldmxpc3Q7CmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL2d0ay9oaXN0cy5jIGIvdG9vbHMvcGVyZi91aS9ndGsvaGlzdHMuYwppbmRleCBiYWUyMWYzMzZhZTZkLi43MTZkY2YwMmJkMGU4IDEwMDY0NAotLS0gYS90b29scy9wZXJmL3VpL2d0ay9oaXN0cy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2hpc3RzLmMKQEAgLTgsNiAmIzQzOzgsOCBAQAogI2luY2x1ZGUgJiMzNDsuLi9oZWxwbGluZS5oJiMzNDsKICNpbmNsdWRlICYjMzQ7Li4vc3RyaW5nMi5oJiMzNDsKICNpbmNsdWRlICZsdDtzaWduYWwuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7c3RkYXJnLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O3N0ZGlvLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7c3RkbGliLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvc3RyaW5nLmgmZ3Q7CiAKQEAgLTM5NSwxMSAmIzQzOzM5Nyw5IEBAIHN0YXRpYyB2b2lkIHBlcmZfZ3RrX19zaG93X2hpc3RzKEd0a1dpZGdldCAqd2luZG93LCBzdHJ1Y3QgaGlzdHMgKmhpc3RzLAogCQl9CiAJfQogCi0JZ3RrX3RyZWVfdmlld19zZXRfcnVsZXNfaGludChHVEtfVFJFRV9WSUVXKHZpZXcpLCBUUlVFKTsKLQogCWdfc2lnbmFsX2Nvbm5lY3QodmlldywgJiMzNDtyb3ctYWN0aXZhdGVkJiMzNDssCiAJCQkgR19DQUxMQkFDSyhvbl9yb3dfYWN0aXZhdGVkKSwgTlVMTCk7Ci0JZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUih3aW5kb3cpLCB2aWV3KTsKJiM0MzsJZ3RrX3Njcm9sbGVkX3dpbmRvd19zZXRfY2hpbGQoR1RLX1NDUk9MTEVEX1dJTkRPVyh3aW5kb3cpLCB2aWV3KTsKIH0KIAogc3RhdGljIHZvaWQgcGVyZl9ndGtfX2FkZF9oaWVyYXJjaHlfZW50cmllcyhzdHJ1Y3QgaGlzdHMgKmhpc3RzLApAQCAtNTgzLDExICYjNDM7NTgzLDkgQEAgc3RhdGljIHZvaWQgcGVyZl9ndGtfX3Nob3dfaGllcmFyY2h5KEd0a1dpZGdldCAqd2luZG93LCBzdHJ1Y3QgaGlzdHMgKmhpc3RzLAogCXBlcmZfZ3RrX19hZGRfaGllcmFyY2h5X2VudHJpZXMoaGlzdHMsICZhbXA7aGlzdHMtJmd0O2VudHJpZXMsIHN0b3JlLAogCQkJCQlOVUxMLCAmYW1wO2hwcCwgbWluX3BjbnQpOwogCi0JZ3RrX3RyZWVfdmlld19zZXRfcnVsZXNfaGludChHVEtfVFJFRV9WSUVXKHZpZXcpLCBUUlVFKTsKLQogCWdfc2lnbmFsX2Nvbm5lY3QodmlldywgJiMzNDtyb3ctYWN0aXZhdGVkJiMzNDssCiAJCQkgR19DQUxMQkFDSyhvbl9yb3dfYWN0aXZhdGVkKSwgTlVMTCk7Ci0JZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUih3aW5kb3cpLCB2aWV3KTsKJiM0MzsJZ3RrX3Njcm9sbGVkX3dpbmRvd19zZXRfY2hpbGQoR1RLX1NDUk9MTEVEX1dJTkRPVyh3aW5kb3cpLCB2aWV3KTsKIH0KIAogaW50IGV2bGlzdF9fZ3RrX2Jyb3dzZV9oaXN0cyhzdHJ1Y3QgZXZsaXN0ICpldmxpc3QsIGNvbnN0IGNoYXIgKmhlbHAsCkBAIC02MDAsMzYgJiM0Mzs1OTgsMzIgQEAgaW50IGV2bGlzdF9fZ3RrX2Jyb3dzZV9oaXN0cyhzdHJ1Y3QgZXZsaXN0ICpldmxpc3QsIGNvbnN0IGNoYXIgKmhlbHAsCiAJR3RrV2lkZ2V0ICpzdGF0YmFyOwogCUd0a1dpZGdldCAqd2luZG93OwogCi0Jc2lnbmFsKFNJR1NFR1YsIHBlcmZfZ3RrX19zaWduYWwpOwotCXNpZ25hbChTSUdGUEUsICBwZXJmX2d0a19fc2lnbmFsKTsKLQlzaWduYWwoU0lHSU5ULCAgcGVyZl9ndGtfX3NpZ25hbCk7Ci0Jc2lnbmFsKFNJR1FVSVQsIHBlcmZfZ3RrX19zaWduYWwpOwotCXNpZ25hbChTSUdURVJNLCBwZXJmX2d0a19fc2lnbmFsKTsKJiM0MzsJc2lnbmFsKFNJR1NFR1YsIHBlcmZfZ3RrX19mYXRhbF9zaWduYWwpOwomIzQzOwlzaWduYWwoU0lHRlBFLCAgcGVyZl9ndGtfX2ZhdGFsX3NpZ25hbCk7CiYjNDM7CXBlcmZfZ3RrX19pbnN0YWxsX3F1aXRfc2lnbmFscygpOwogCi0Jd2luZG93ID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJTkRPV19UT1BMRVZFTCk7CiYjNDM7CXdpbmRvdyA9IGd0a193aW5kb3dfbmV3KCk7CiAKIAlndGtfd2luZG93X3NldF90aXRsZShHVEtfV0lORE9XKHdpbmRvdyksICYjMzQ7cGVyZiByZXBvcnQmIzM0Oyk7CiAKLQlnX3NpZ25hbF9jb25uZWN0KHdpbmRvdywgJiMzNDtkZWxldGVfZXZlbnQmIzM0OywgZ3RrX21haW5fcXVpdCwgTlVMTCk7Ci0KIAlwZ2N0eCA9IHBlcmZfZ3RrX19hY3RpdmF0ZV9jb250ZXh0KHdpbmRvdyk7CiAJaWYgKCFwZ2N0eCkKIAkJcmV0dXJuIC0xOwogCi0JdmJveCA9IGd0a192Ym94X25ldyhGQUxTRSwgMCk7CiYjNDM7CXZib3ggPSBndGtfYm94X25ldyhHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIDApOwogCiAJbm90ZWJvb2sgPSBndGtfbm90ZWJvb2tfbmV3KCk7CiAKLQlndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgbm90ZWJvb2ssIFRSVUUsIFRSVUUsIDApOwomIzQzOwlndGtfd2lkZ2V0X3NldF92ZXhwYW5kKG5vdGVib29rLCBUUlVFKTsKJiM0MzsJZ3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgbm90ZWJvb2spOwogCiAJaW5mb19iYXIgPSBwZXJmX2d0a19fc2V0dXBfaW5mb19iYXIoKTsKLQlpZiAoaW5mb19iYXIpCi0JCWd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBpbmZvX2JhciwgRkFMU0UsIEZBTFNFLCAwKTsKJiM0MzsJZ3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgaW5mb19iYXIpOwogCiAJc3RhdGJhciA9IHBlcmZfZ3RrX19zZXR1cF9zdGF0dXNiYXIoKTsKLQlndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgc3RhdGJhciwgRkFMU0UsIEZBTFNFLCAwKTsKJiM0MzsJZ3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgc3RhdGJhcik7CiAKLQlndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHdpbmRvdyksIHZib3gpOwomIzQzOwlndGtfd2luZG93X3NldF9jaGlsZChHVEtfV0lORE9XKHdpbmRvdyksIHZib3gpOwogCiAJZXZsaXN0X19mb3JfZWFjaF9lbnRyeShldmxpc3QsIHBvcykgewogCQlzdHJ1Y3QgaGlzdHMgKmhpc3RzID0gZXZzZWxfX2hpc3RzKHBvcyk7CkBAIC02NDksNyAmIzQzOzY0Myw3IEBAIGludCBldmxpc3RfX2d0a19icm93c2VfaGlzdHMoc3RydWN0IGV2bGlzdCAqZXZsaXN0LCBjb25zdCBjaGFyICpoZWxwLAogCQkJfQogCQl9CiAKLQkJc2Nyb2xsZWRfd2luZG93ID0gZ3RrX3Njcm9sbGVkX3dpbmRvd19uZXcoTlVMTCwgTlVMTCk7CiYjNDM7CQlzY3JvbGxlZF93aW5kb3cgPSBndGtfc2Nyb2xsZWRfd2luZG93X25ldygpOwogCiAJCWd0a19zY3JvbGxlZF93aW5kb3dfc2V0X3BvbGljeShHVEtfU0NST0xMRURfV0lORE9XKHNjcm9sbGVkX3dpbmRvdyksCiAJCQkJCQkJR1RLX1BPTElDWV9BVVRPTUFUSUMsCkBAIC02NjUsMTUgJiM0Mzs2NTksMTIgQEAgaW50IGV2bGlzdF9fZ3RrX2Jyb3dzZV9oaXN0cyhzdHJ1Y3QgZXZsaXN0ICpldmxpc3QsIGNvbnN0IGNoYXIgKmhlbHAsCiAJCWd0a19ub3RlYm9va19hcHBlbmRfcGFnZShHVEtfTk9URUJPT0sobm90ZWJvb2spLCBzY3JvbGxlZF93aW5kb3csIHRhYl9sYWJlbCk7CiAJfQogCi0JZ3RrX3dpZGdldF9zaG93X2FsbCh3aW5kb3cpOwotCiAJcGVyZl9ndGtfX3Jlc2l6ZV93aW5kb3cod2luZG93KTsKLQotCWd0a193aW5kb3dfc2V0X3Bvc2l0aW9uKEdUS19XSU5ET1cod2luZG93KSwgR1RLX1dJTl9QT1NfQ0VOVEVSKTsKJiM0MzsJZ3RrX3dpZGdldF9zZXRfdmlzaWJsZSh3aW5kb3csIFRSVUUpOwogCiAJdWlfaGVscGxpbmVfX3B1c2goaGVscCk7CiAKLQlndGtfbWFpbigpOwomIzQzOwlwZXJmX2d0a19fcnVuX21haW5fbG9vcCh3aW5kb3cpOwogCiAJcGVyZl9ndGtfX2RlYWN0aXZhdGVfY29udGV4dCgmYW1wO3BnY3R4KTsKIApkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91aS9ndGsvcHJvZ3Jlc3MuYyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL3Byb2dyZXNzLmMKaW5kZXggZWVhNmZjZGU1MThhOC4uNzcwZjkyNTFiNTRiNyAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvcHJvZ3Jlc3MuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3VpL2d0ay9wcm9ncmVzcy5jCkBAIC0xLDQ5ICYjNDM7MSw2NSBAQAogLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKICNpbmNsdWRlICZsdDtpbnR0eXBlcy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtzdGRpby5oJmd0OwogCiAjaW5jbHVkZSAmIzM0O2d0ay5oJiMzNDsKICNpbmNsdWRlICYjMzQ7Li4vcHJvZ3Jlc3MuaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2NvbXBpbGVyLmgmZ3Q7CiAKIHN0YXRpYyBHdGtXaWRnZXQgKmRpYWxvZzsKIHN0YXRpYyBHdGtXaWRnZXQgKnByb2dyZXNzOwogCiYjNDM7c3RhdGljIHZvaWQgZ3RrX3VpX3Byb2dyZXNzX19kZXN0cm95ZWQoR3RrV2lkZ2V0ICp3aWRnZXQgX19tYXliZV91bnVzZWQsCiYjNDM7CQkJCQlncG9pbnRlciBkYXRhIF9fbWF5YmVfdW51c2VkKQomIzQzO3sKJiM0MzsJZGlhbG9nID0gTlVMTDsKJiM0MzsJcHJvZ3Jlc3MgPSBOVUxMOwomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIGd0a191aV9wcm9ncmVzc19fdXBkYXRlKHN0cnVjdCB1aV9wcm9ncmVzcyAqcCkKIHsKIAlkb3VibGUgZnJhY3Rpb24gPSBwLSZndDt0b3RhbCA/IDEuMCAqIHAtJmd0O2N1cnIgLyBwLSZndDt0b3RhbCA6IDAuMDsKIAljaGFyIGJ1ZlsxMDI0XTsKIAogCWlmIChkaWFsb2cgPT0gTlVMTCkgewotCQlHdGtXaWRnZXQgKnZib3ggPSBndGtfdmJveF9uZXcoVFJVRSwgNSk7CiYjNDM7CQlHdGtXaWRnZXQgKnZib3ggPSBndGtfYm94X25ldyhHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIDUpOwogCQlHdGtXaWRnZXQgKmxhYmVsID0gZ3RrX2xhYmVsX25ldyhwLSZndDt0aXRsZSk7CiAKLQkJZGlhbG9nID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJTkRPV19UT1BMRVZFTCk7CiYjNDM7CQlkaWFsb2cgPSBndGtfd2luZG93X25ldygpOwogCQlwcm9ncmVzcyA9IGd0a19wcm9ncmVzc19iYXJfbmV3KCk7CiAKLQkJZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIGxhYmVsLCBUUlVFLCBGQUxTRSwgMyk7Ci0JCWd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBwcm9ncmVzcywgVFJVRSwgVFJVRSwgMyk7CiYjNDM7CQlndGtfd2lkZ2V0X3NldF92ZXhwYW5kKGxhYmVsLCBUUlVFKTsKJiM0MzsJCWd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIGxhYmVsKTsKJiM0MzsJCWd0a193aWRnZXRfc2V0X3ZleHBhbmQocHJvZ3Jlc3MsIFRSVUUpOwomIzQzOwkJZ3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgcHJvZ3Jlc3MpOwomIzQzOwomIzQzOwkJZ3RrX3dpbmRvd19zZXRfY2hpbGQoR1RLX1dJTkRPVyhkaWFsb2cpLCB2Ym94KTsKIAotCQlndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKGRpYWxvZyksIHZib3gpOwomIzQzOwkJZ19zaWduYWxfY29ubmVjdChkaWFsb2csICYjMzQ7ZGVzdHJveSYjMzQ7LAomIzQzOwkJCQkgR19DQUxMQkFDSyhndGtfdWlfcHJvZ3Jlc3NfX2Rlc3Ryb3llZCksIE5VTEwpOwogCiAJCWd0a193aW5kb3dfc2V0X3RpdGxlKEdUS19XSU5ET1coZGlhbG9nKSwgJiMzNDtwZXJmJiMzNDspOwotCQlndGtfd2luZG93X3Jlc2l6ZShHVEtfV0lORE9XKGRpYWxvZyksIDMwMCwgODApOwotCQlndGtfd2luZG93X3NldF9wb3NpdGlvbihHVEtfV0lORE9XKGRpYWxvZyksIEdUS19XSU5fUE9TX0NFTlRFUik7CiYjNDM7CQlndGtfd2luZG93X3NldF9kZWZhdWx0X3NpemUoR1RLX1dJTkRPVyhkaWFsb2cpLCAzMDAsIDgwKTsKIAotCQlndGtfd2lkZ2V0X3Nob3dfYWxsKGRpYWxvZyk7CiYjNDM7CQlndGtfd2lkZ2V0X3NldF92aXNpYmxlKGRpYWxvZywgVFJVRSk7CiAJfQogCiAJZ3RrX3Byb2dyZXNzX2Jhcl9zZXRfZnJhY3Rpb24oR1RLX1BST0dSRVNTX0JBUihwcm9ncmVzcyksIGZyYWN0aW9uKTsKIAlzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAmIzM0OyUmIzM0O1BSSXU2NCYjMzQ7IC8gJSYjMzQ7UFJJdTY0LCBwLSZndDtjdXJyLCBwLSZndDt0b3RhbCk7CiAJZ3RrX3Byb2dyZXNzX2Jhcl9zZXRfdGV4dChHVEtfUFJPR1JFU1NfQkFSKHByb2dyZXNzKSwgYnVmKTsKIAotCS8qIHdlIGRpZG4mIzM5O3QgY2FsbCBndGtfbWFpbiB5ZXQsIHNvIGRvIGl0IG1hbnVhbGx5ICovCi0Jd2hpbGUgKGd0a19ldmVudHNfcGVuZGluZygpKQotCQlndGtfbWFpbl9pdGVyYXRpb24oKTsKJiM0MzsJLyogd2UgZGlkbiYjMzk7dCBzdGFydCBhIG1haW4gbG9vcCB5ZXQsIHNvIHB1bXAgZXZlbnRzIG1hbnVhbGx5ICovCiYjNDM7CXdoaWxlIChnX21haW5fY29udGV4dF9wZW5kaW5nKE5VTEwpKQomIzQzOwkJZ19tYWluX2NvbnRleHRfaXRlcmF0aW9uKE5VTEwsIEZBTFNFKTsKIH0KIAogc3RhdGljIHZvaWQgZ3RrX3VpX3Byb2dyZXNzX19maW5pc2godm9pZCkKIHsKJiM0MzsJaWYgKGRpYWxvZyA9PSBOVUxMKQomIzQzOwkJcmV0dXJuOwomIzQzOwogCS8qIHRoaXMgd2lsbCBhbHNvIGRlc3Ryb3kgYWxsIG9mIGl0cyBjaGlsZHJlbiAqLwotCWd0a193aWRnZXRfZGVzdHJveShkaWFsb2cpOwomIzQzOwlndGtfd2luZG93X2Rlc3Ryb3koR1RLX1dJTkRPVyhkaWFsb2cpKTsKIAogCWRpYWxvZyA9IE5VTEw7CiB9CmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL2d0ay9zZXR1cC5jIGIvdG9vbHMvcGVyZi91aS9ndGsvc2V0dXAuYwppbmRleCBmNWVlZTRkNjY4NzM4Li45YjQ0ZjM3MTk3NDc3IDEwMDY0NAotLS0gYS90b29scy9wZXJmL3VpL2d0ay9zZXR1cC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL3NldHVwLmMKQEAgLTEyLDcgJiM0MzsxMiw3IEBAIGludCBwZXJmX2d0a19faW5pdCh2b2lkKQogCWd0a191aV9wcm9ncmVzc19faW5pdCgpOwogCXBlcmZfZ3RrX19pbml0X2hwcCgpOwogCi0JcmV0dXJuIGd0a19pbml0X2NoZWNrKE5VTEwsIE5VTEwpID8gMCA6IC0xOwomIzQzOwlyZXR1cm4gZ3RrX2luaXRfY2hlY2soKSA/IDAgOiAtMTsKIH0KIAogdm9pZCBwZXJmX2d0a19fZXhpdChib29sIHdhaXRfZm9yX29rIF9fbWF5YmVfdW51c2VkKQpAQCAtMjAsNSAmIzQzOzIwLDYgQEAgdm9pZCBwZXJmX2d0a19fZXhpdChib29sIHdhaXRfZm9yX29rIF9fbWF5YmVfdW51c2VkKQogCWlmICghcGVyZl9ndGtfX2lzX2FjdGl2ZV9jb250ZXh0KHBnY3R4KSkKIAkJcmV0dXJuOwogCXBlcmZfZXJyb3JfX3VucmVnaXN0ZXIoJmFtcDtwZXJmX2d0a19lb3BzKTsKLQlndGtfbWFpbl9xdWl0KCk7CiYjNDM7CXBlcmZfZ3RrX19xdWl0X2Vycm9yX2RpYWxvZygpOwomIzQzOwlwZXJmX2d0a19fcXVpdF9tYWluX2xvb3AoKTsKIH0KZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3V0aWwuYyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL3V0aWwuYwppbmRleCBjNDdmNWMzODc4MzhjLi41ODIzZmYwZDdjMmE3IDEwMDY0NAotLS0gYS90b29scy9wZXJmL3VpL2d0ay91dGlsLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91aS9ndGsvdXRpbC5jCkBAIC0yLDggJiM0MzsyLDEwIEBACiAjaW5jbHVkZSAmIzM0Oy4uL3V0aWwuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O2d0ay5oJiMzNDsKIAomIzQzOyNpbmNsdWRlICZsdDtzdGRhcmcuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7c3RkaW8uaCZndDsKICNpbmNsdWRlICZsdDtzdGRsaWIuaCZndDsKLSNpbmNsdWRlICZsdDtzdHJpbmcuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvY29tcGlsZXIuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC96YWxsb2MuaCZndDsKIAogc3RydWN0IHBlcmZfZ3RrX2NvbnRleHQgKnBnY3R4OwpAQCAtMjgsODYgJiM0MzszMCwxMDMgQEAgaW50IHBlcmZfZ3RrX19kZWFjdGl2YXRlX2NvbnRleHQoc3RydWN0IHBlcmZfZ3RrX2NvbnRleHQgKipjdHgpCiAJcmV0dXJuIDA7CiB9CiAKJiM0MzsvKgomIzQzOyAqIHBlcmZfZ3RrX19lcnJvcigpIGNhbiBiZSBjYWxsZWQgcmUtZW50cmFudGx5LCBzaW5jZSB0aGUgZGlhbG9nIGlzbiYjMzk7dAomIzQzOyAqIG1vZGFsIGFuZCBpdHMgbmVzdGVkIGxvb3Agc3RpbGwgcHVtcHMgZXZlbnRzIGZvciB0aGUgbWFpbiB3aW5kb3cuCiYjNDM7ICogVHJhY2sgZXZlcnkgY3VycmVudGx5IHJ1bm5pbmcgbG9vcCBpbnN0ZWFkIG9mIGEgc2luZ2xlIHBvaW50ZXIsIHNvIGEKJiM0MzsgKiBuZXN0ZWQgY2FsbCBjYW4mIzM5O3QgY2xvYmJlciBhbiBvdXRlciBjYWxsJiMzOTtzIGxvb3AgYW5kIGxlYWsgaXQuCiYjNDM7ICovCiYjNDM7c3RhdGljIEdTTGlzdCAqcGVyZl9ndGtfX2Vycm9yX2xvb3BzOwomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHBlcmZfZ3RrX19xdWl0X2xvb3AoZ3BvaW50ZXIgZGF0YSwgZ3BvaW50ZXIgdXNlcl9kYXRhIF9fbWF5YmVfdW51c2VkKQomIzQzO3sKJiM0MzsJZ19tYWluX2xvb3BfcXVpdChkYXRhKTsKJiM0Mzt9CiYjNDM7CiYjNDM7dm9pZCBwZXJmX2d0a19fcXVpdF9lcnJvcl9kaWFsb2codm9pZCkKJiM0Mzt7CiYjNDM7CWdfc2xpc3RfZm9yZWFjaChwZXJmX2d0a19fZXJyb3JfbG9vcHMsIHBlcmZfZ3RrX19xdWl0X2xvb3AsIE5VTEwpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBwZXJmX2d0a19fZGlhbG9nX3Jlc3BvbnNlKEd0a0RpYWxvZyAqZGlhbG9nLAomIzQzOwkJCQkgICAgICBnaW50IHJlc3BvbnNlX2lkIF9fbWF5YmVfdW51c2VkLAomIzQzOwkJCQkgICAgICBncG9pbnRlciBkYXRhIF9fbWF5YmVfdW51c2VkKQomIzQzO3sKJiM0MzsJZ3RrX3dpbmRvd19kZXN0cm95KEdUS19XSU5ET1coZGlhbG9nKSk7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBwZXJmX2d0a19fZXJyb3IoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpCiB7CiAJY2hhciAqbXNnOwogCUd0a1dpZGdldCAqZGlhbG9nOwomIzQzOwlHTWFpbkxvb3AgKmxvb3A7CiYjNDM7CXZhX2xpc3QgYXJnc19jb3B5OwogCiYjNDM7CXZhX2NvcHkoYXJnc19jb3B5LCBhcmdzKTsKIAlpZiAoIXBlcmZfZ3RrX19pc19hY3RpdmVfY29udGV4dChwZ2N0eCkgfHwKLQkgICAgdmFzcHJpbnRmKCZhbXA7bXNnLCBmb3JtYXQsIGFyZ3MpICZsdDsgMCkgewomIzQzOwkgICAgdmFzcHJpbnRmKCZhbXA7bXNnLCBmb3JtYXQsIGFyZ3NfY29weSkgJmx0OyAwKSB7CiYjNDM7CQl2YV9lbmQoYXJnc19jb3B5KTsKIAkJZnByaW50ZihzdGRlcnIsICYjMzQ7RXJyb3I6XG4mIzM0Oyk7CiAJCXZmcHJpbnRmKHN0ZGVyciwgZm9ybWF0LCBhcmdzKTsKIAkJZnByaW50ZihzdGRlcnIsICYjMzQ7XG4mIzM0Oyk7CiAJCXJldHVybiAtMTsKIAl9CiYjNDM7CXZhX2VuZChhcmdzX2NvcHkpOwogCiAJZGlhbG9nID0gZ3RrX21lc3NhZ2VfZGlhbG9nX25ld193aXRoX21hcmt1cChHVEtfV0lORE9XKHBnY3R4LSZndDttYWluX3dpbmRvdyksCiAJCQkJCUdUS19ESUFMT0dfREVTVFJPWV9XSVRIX1BBUkVOVCwKIAkJCQkJR1RLX01FU1NBR0VfRVJST1IsCiAJCQkJCUdUS19CVVRUT05TX0NMT1NFLAogCQkJCQkmIzM0OyZsdDtiJmd0O0Vycm9yJmx0Oy9iJmd0O1xuXG4lcyYjMzQ7LCBtc2cpOwotCWd0a19kaWFsb2dfcnVuKEdUS19ESUFMT0coZGlhbG9nKSk7CiAKLQlndGtfd2lkZ2V0X2Rlc3Ryb3koZGlhbG9nKTsKJiM0MzsJLyoKJiM0MzsJICogJiMzNDtyZXNwb25zZSYjMzQ7IG9ubHkgZmlyZXMgd2hlbiBhIGJ1dHRvbiBpcyBjbGlja2VkOyBERVNUUk9ZX1dJVEhfUEFSRU5UCiYjNDM7CSAqIGRlc3Ryb3lzIHRoZSBkaWFsb2cgZGlyZWN0bHkgd2l0aG91dCBpdC4gUXVpdCBmcm9tICYjMzQ7ZGVzdHJveSYjMzQ7CiYjNDM7CSAqIGluc3RlYWQsIHdoaWNoIGZpcmVzIGVpdGhlciB3YXksIHNvIHRoZSBuZXN0ZWQgbG9vcCBiZWxvdyBjYW4mIzM5O3QKJiM0MzsJICogb3V0bGl2ZSB0aGUgZGlhbG9nIGFuZCBoYW5nLgomIzQzOwkgKi8KJiM0MzsJbG9vcCA9IGdfbWFpbl9sb29wX25ldyhOVUxMLCBGQUxTRSk7CiYjNDM7CXBlcmZfZ3RrX19lcnJvcl9sb29wcyA9IGdfc2xpc3RfcHJlcGVuZChwZXJmX2d0a19fZXJyb3JfbG9vcHMsIGxvb3ApOwomIzQzOwlnX3NpZ25hbF9jb25uZWN0KGRpYWxvZywgJiMzNDtyZXNwb25zZSYjMzQ7LAomIzQzOwkJCSBHX0NBTExCQUNLKHBlcmZfZ3RrX19kaWFsb2dfcmVzcG9uc2UpLCBOVUxMKTsKJiM0MzsJZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKGRpYWxvZywgJiMzNDtkZXN0cm95JiMzNDssCiYjNDM7CQkJCSBHX0NBTExCQUNLKGdfbWFpbl9sb29wX3F1aXQpLCBsb29wKTsKJiM0MzsKJiM0MzsJZ3RrX3dpZGdldF9zZXRfdmlzaWJsZShkaWFsb2csIFRSVUUpOwomIzQzOwlnX21haW5fbG9vcF9ydW4obG9vcCk7CiYjNDM7CXBlcmZfZ3RrX19lcnJvcl9sb29wcyA9IGdfc2xpc3RfcmVtb3ZlKHBlcmZfZ3RrX19lcnJvcl9sb29wcywgbG9vcCk7CiYjNDM7CWdfbWFpbl9sb29wX3VucmVmKGxvb3ApOwomIzQzOwogCWZyZWUobXNnKTsKIAlyZXR1cm4gMDsKIH0KIAotI2lmZGVmIEhBVkVfR1RLX0lORk9fQkFSX1NVUFBPUlQKIHN0YXRpYyBpbnQgcGVyZl9ndGtfX3dhcm5pbmdfaW5mb19iYXIoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpCiB7CiAJY2hhciAqbXNnOwomIzQzOwl2YV9saXN0IGFyZ3NfY29weTsKIAomIzQzOwl2YV9jb3B5KGFyZ3NfY29weSwgYXJncyk7CiAJaWYgKCFwZXJmX2d0a19faXNfYWN0aXZlX2NvbnRleHQocGdjdHgpIHx8Ci0JICAgIHZhc3ByaW50ZigmYW1wO21zZywgZm9ybWF0LCBhcmdzKSAmbHQ7IDApIHsKJiM0MzsJICAgIHZhc3ByaW50ZigmYW1wO21zZywgZm9ybWF0LCBhcmdzX2NvcHkpICZsdDsgMCkgewomIzQzOwkJdmFfZW5kKGFyZ3NfY29weSk7CiAJCWZwcmludGYoc3RkZXJyLCAmIzM0O1dhcm5pbmc6XG4mIzM0Oyk7CiAJCXZmcHJpbnRmKHN0ZGVyciwgZm9ybWF0LCBhcmdzKTsKIAkJZnByaW50ZihzdGRlcnIsICYjMzQ7XG4mIzM0Oyk7CiAJCXJldHVybiAtMTsKIAl9CiYjNDM7CXZhX2VuZChhcmdzX2NvcHkpOwogCiAJZ3RrX2xhYmVsX3NldF90ZXh0KEdUS19MQUJFTChwZ2N0eC0mZ3Q7bWVzc2FnZV9sYWJlbCksIG1zZyk7CiAJZ3RrX2luZm9fYmFyX3NldF9tZXNzYWdlX3R5cGUoR1RLX0lORk9fQkFSKHBnY3R4LSZndDtpbmZvX2JhciksCiAJCQkJICAgICAgR1RLX01FU1NBR0VfV0FSTklORyk7Ci0JZ3RrX3dpZGdldF9zaG93KHBnY3R4LSZndDtpbmZvX2Jhcik7Ci0KLQlmcmVlKG1zZyk7Ci0JcmV0dXJuIDA7Ci19Ci0jZWxzZQotc3RhdGljIGludCBwZXJmX2d0a19fd2FybmluZ19zdGF0dXNiYXIoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpCi17Ci0JY2hhciAqbXNnLCAqcDsKLQotCWlmICghcGVyZl9ndGtfX2lzX2FjdGl2ZV9jb250ZXh0KHBnY3R4KSB8fAotCSAgICB2YXNwcmludGYoJmFtcDttc2csIGZvcm1hdCwgYXJncykgJmx0OyAwKSB7Ci0JCWZwcmludGYoc3RkZXJyLCAmIzM0O1dhcm5pbmc6XG4mIzM0Oyk7Ci0JCXZmcHJpbnRmKHN0ZGVyciwgZm9ybWF0LCBhcmdzKTsKLQkJZnByaW50ZihzdGRlcnIsICYjMzQ7XG4mIzM0Oyk7Ci0JCXJldHVybiAtMTsKLQl9Ci0KLQlndGtfc3RhdHVzYmFyX3BvcChHVEtfU1RBVFVTQkFSKHBnY3R4LSZndDtzdGF0YmFyKSwKLQkJCSAgcGdjdHgtJmd0O3N0YXRiYXJfY3R4X2lkKTsKLQotCS8qIE9ubHkgZmlyc3QgbGluZSBjYW4gYmUgZGlzcGxheWVkICovCi0JcCA9IHN0cmNocihtc2csICYjMzk7XG4mIzM5Oyk7Ci0JaWYgKHApCi0JCSpwID0gJiMzOTtcMCYjMzk7OwotCi0JZ3RrX3N0YXR1c2Jhcl9wdXNoKEdUS19TVEFUVVNCQVIocGdjdHgtJmd0O3N0YXRiYXIpLAotCQkJICAgcGdjdHgtJmd0O3N0YXRiYXJfY3R4X2lkLCBtc2cpOwomIzQzOwlndGtfd2lkZ2V0X3NldF92aXNpYmxlKHBnY3R4LSZndDtpbmZvX2JhciwgVFJVRSk7CiAKIAlmcmVlKG1zZyk7CiAJcmV0dXJuIDA7CiB9Ci0jZW5kaWYKIAogc3RydWN0IHBlcmZfZXJyb3Jfb3BzIHBlcmZfZ3RrX2VvcHMgPSB7CiAJLmVycm9yCQk9IHBlcmZfZ3RrX19lcnJvciwKLSNpZmRlZiBIQVZFX0dUS19JTkZPX0JBUl9TVVBQT1JUCiAJLndhcm5pbmcJPSBwZXJmX2d0a19fd2FybmluZ19pbmZvX2JhciwKLSNlbHNlCi0JLndhcm5pbmcJPSBwZXJmX2d0a19fd2FybmluZ19zdGF0dXNiYXIsCi0jZW5kaWYKIH07CmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL3NldHVwLmMgYi90b29scy9wZXJmL3VpL3NldHVwLmMKaW5kZXggZmY4MDAwNDdlNjk3Zi4uZDg4NzM0NmM3YTYzMiAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi91aS9zZXR1cC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdWkvc2V0dXAuYwpAQCAtMTQsNyAmIzQzOzE0LDcgQEAgaW50IHVzZV9icm93c2VyID0gLTE7CiAKICNkZWZpbmUgUEVSRl9HVEtfRFNPICYjMzQ7bGlicGVyZi1ndGsuc28mIzM0OwogCi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlQKJiM0MzsjaWZkZWYgSEFWRV9HVEs0X1NVUFBPUlQKIAogc3RhdGljIGludCBzZXR1cF9ndGtfYnJvd3Nlcih2b2lkKQogewpkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL2Fubm90YXRlLmMgYi90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuYwppbmRleCBkZjcwZTk1YTg0NzA0Li4xMjNiNmQ1ZmNlYTc4IDEwMDY0NAotLS0gYS90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuYwpAQCAtMTQ1LDYgJiM0MzsxNDUsMTcgQEAgc3RhdGljIGludCBhbm5vdGF0ZWRfc291cmNlX19hbGxvY19oaXN0b2dyYW1zKHN0cnVjdCBhbm5vdGF0ZWRfc291cmNlICpzcmMsCiAJcmV0dXJuIHNyYy0mZ3Q7aGlzdG9ncmFtcyA/IDAgOiAtMTsKIH0KIAomIzQzO3N0cnVjdCBzeW1faGlzdF9lbnRyeSAqCiYjNDM7YW5ub3RhdGVkX3NvdXJjZV9faGlzdF9lbnRyeShzdHJ1Y3QgYW5ub3RhdGVkX3NvdXJjZSAqc3JjLCBjb25zdCBzdHJ1Y3QgZXZzZWwgKmV2c2VsLCB1NjQgb2Zmc2V0KQomIzQzO3sKJiM0MzsJc3RydWN0IHN5bV9oaXN0X2VudHJ5ICplbnRyeTsKJiM0MzsJbG9uZyBrZXkgPSBvZmZzZXQgJmx0OyZsdDsgMTYgfCBldnNlbC0mZ3Q7Y29yZS5pZHg7CiYjNDM7CiYjNDM7CWlmICghaGFzaG1hcF9fZmluZChzcmMtJmd0O3NhbXBsZXMsIGtleSwgJmFtcDtlbnRyeSkpCiYjNDM7CQlyZXR1cm4gTlVMTDsKJiM0MzsJcmV0dXJuIGVudHJ5OwomIzQzO30KJiM0MzsKIHZvaWQgc3ltYm9sX19hbm5vdGF0ZV96ZXJvX2hpc3RvZ3JhbXMoc3RydWN0IHN5bWJvbCAqc3ltKQogewogCXN0cnVjdCBhbm5vdGF0aW9uICpub3RlcyA9IHN5bWJvbF9fYW5ub3RhdGlvbihzeW0pOwpkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL2Fubm90YXRlLmggYi90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuaAppbmRleCBmYTA4ZDA5YjgwZjc2Li40MDAzOGEzNzc5ZDQ2IDEwMDY0NAotLS0gYS90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuaAomIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuaApAQCAtNDA2LDE2ICYjNDM7NDA2LDggQEAgc3RhdGljIGlubGluZSBzdHJ1Y3Qgc3ltX2hpc3QgKmFubm90YXRpb25fX2hpc3RvZ3JhbShzdHJ1Y3QgYW5ub3RhdGlvbiAqbm90ZXMsCiAJcmV0dXJuIGFubm90YXRlZF9zb3VyY2VfX2hpc3RvZ3JhbShub3Rlcy0mZ3Q7c3JjLCBldnNlbCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgc3RydWN0IHN5bV9oaXN0X2VudHJ5ICoKLWFubm90YXRlZF9zb3VyY2VfX2hpc3RfZW50cnkoc3RydWN0IGFubm90YXRlZF9zb3VyY2UgKnNyYywgY29uc3Qgc3RydWN0IGV2c2VsICpldnNlbCwgdTY0IG9mZnNldCkKLXsKLQlzdHJ1Y3Qgc3ltX2hpc3RfZW50cnkgKmVudHJ5OwotCWxvbmcga2V5ID0gb2Zmc2V0ICZsdDsmbHQ7IDE2IHwgZXZzZWwtJmd0O2NvcmUuaWR4OwotCi0JaWYgKCFoYXNobWFwX19maW5kKHNyYy0mZ3Q7c2FtcGxlcywga2V5LCAmYW1wO2VudHJ5KSkKLQkJcmV0dXJuIE5VTEw7Ci0JcmV0dXJuIGVudHJ5OwotfQomIzQzO3N0cnVjdCBzeW1faGlzdF9lbnRyeSAqCiYjNDM7YW5ub3RhdGVkX3NvdXJjZV9faGlzdF9lbnRyeShzdHJ1Y3QgYW5ub3RhdGVkX3NvdXJjZSAqc3JjLCBjb25zdCBzdHJ1Y3QgZXZzZWwgKmV2c2VsLCB1NjQgb2Zmc2V0KTsKIAogc3RhdGljIGlubGluZSBzdHJ1Y3QgYW5ub3RhdGlvbiAqc3ltYm9sX19hbm5vdGF0aW9uKHN0cnVjdCBzeW1ib2wgKnN5bSkKIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDI6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU1NjgKCQkJCQkJCW91dHB1dDogODAKCQkJCQkJCXRob3VnaHRzOiA1NDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUGF0Y2ggVHJpYWdlIC0gV29ydGhGdXp6aW5nIEV2YWx1YXRpb24qKgoKT2theSwgc28gdGhpcyBwYXRjaCBoaXRzIGZpbGVzIHdpdGhpbiBgdG9vbHMvYnVpbGQvYCBhbmQgYHRvb2xzL3BlcmYvYC4gUmlnaHQgYXdheSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBtb2RpZmllZCBmaWxlcyBsaXN0IHRvIGJlIHN1cmUuIEkgc2VlOiBgdG9vbHMvYnVpbGQvTWFrZWZpbGUuZmVhdHVyZWAsIGB0b29scy9idWlsZC9mZWF0dXJlL01ha2VmaWxlYCwgYW5kIGEgZmV3IHNvdXJjZSBmaWxlcyByZWxhdGVkIHRvIHRlc3RpbmcgYW5kIEdUSywgdGhlbiBhIHNsZXcgb2YgZmlsZXMgd2l0aGluIGB0b29scy9wZXJmL2AsIGluY2x1ZGluZyBNYWtlZmlsZXMsIGJ1aWx0aW5zLCBzY3JpcHRzLCB0ZXN0IGNvbXBvbmVudHMsIGFuZCBHVEstYmFzZWQgVUkgZWxlbWVudHMgYW5kIHV0aWxpdHkgZnVuY3Rpb25zLiBBbGwgb2YgdGhlc2UgZmlsZXMgYXJlIGluIHVzZXJzcGFjZS4KCkJhc2VkIG9uIHRoZSB0cmlhZ2UgZ3VpZGVsaW5lcywgc3BlY2lmaWNhbGx5IFNlY3Rpb24gMiwgdGhlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhlc2UgY2hhbmdlcyBmYWxsIGVudGlyZWx5IHdpdGhpbiB1c2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzLCBhbmQgdGhhdCB0aGV5IGRvbiYjMzk7dCBpbXBhY3QgdGhlIGtlcm5lbCBpbWFnZSAoYHZtbGludXhgKSBvciBhbnkga2VybmVsIG1vZHVsZXMuIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IHRoZXNlIHRvb2xzIGFyZSB1bmxpa2VseSB0byBpbXBhY3QgYHZtbGludXhgLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBubyBvdGhlciBhcmVhcyBhcmUgYWZmZWN0ZWQuIEkmIzM5O3ZlIGRvdWJsZS1jaGVja2VkIHRoZSBkaWZmIGFuZCBpdCBpcyBjbGVhciB0aGF0IGFic29sdXRlbHkgZXZlcnkgbW9kaWZpZWQgZmlsZSBiZWdpbnMgd2l0aCBgdG9vbHMvYC4gU28sIHRoaXMgaXMgYWxsIHRvb2xpbmcuIFRoZSBgdG9vbHMvYCBkaXJlY3RvcnkgaXMgZGVkaWNhdGVkIHRvIHVzZXItc3BhY2UgdG9vbHMuIE5vdGhpbmcgaW4gdGhpcyBwYXRjaCB0b3VjaGVzIHRoZSBjb3JlIGtlcm5lbCBvciBhbnkgbW9kdWxlcy4KClRoZXJlZm9yZSwgYXBwbHlpbmcgdGhlIHRyaWFnZSBndWlkZWxpbmVzLCBgV29ydGhGdXp6aW5nYCBzaG91bGQgYmUgc2V0IHRvIGBmYWxzZWAuIE15IHJlYXNvbmluZyBpcyBzb2xpZDogdGhlIGNoYW5nZXMgYXJlIGNvbmZpbmVkIHRvIHVzZXItc3BhY2UgdG9vbGluZyB3aXRoaW4gYHRvb2xzL3BlcmZgIGFuZCBgdG9vbHMvYnVpbGRgLCBhbmQgdGhleSBoYXZlIG5vIGltcGFjdCBvbiB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlIChgdm1saW51eGApIG9yIGtlcm5lbCBtb2R1bGVzLgoKSSYjMzk7bGwgc2V0IGBGb2N1c1N5bWJvbHNgIHRvIGBbXWAgYW5kIGBFbmFibGVDb25maWdzYCB0byBgW11gIGFzIHdlbGwuIFRoYXQgbG9va3MgcmlnaHQuIEkmIzM5O2xsIG1ha2UgYSBzYW5pdHkgY2hlY2sgdXNpbmcgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwMjoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7QWxsIGNoYW5nZXMgaW4gdGhpcyBwYXRjaCBzZXJpZXMgYXJlIHN0cmljdGx5IGNvbmZpbmVkIHRvIHVzZXItc3BhY2UgdG9vbGluZyB1bmRlciBgdG9vbHMvYCAoc3BlY2lmaWNhbGx5IGB0b29scy9wZXJmYCBhbmQgYHRvb2xzL2J1aWxkYCksIHdoaWNoIGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAoYHZtbGludXhgKSBvciBrZXJuZWwgbW9kdWxlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7QWxsIGNoYW5nZXMgaW4gdGhpcyBwYXRjaCBzZXJpZXMgYXJlIHN0cmljdGx5IGNvbmZpbmVkIHRvIHVzZXItc3BhY2UgdG9vbGluZyB1bmRlciBgdG9vbHMvYCAoc3BlY2lmaWNhbGx5IGB0b29scy9wZXJmYCBhbmQgYHRvb2xzL2J1aWxkYCksIHdoaWNoIGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAoYHZtbGludXhgKSBvciBrZXJuZWwgbW9kdWxlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDI6MTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDAyOjE3OjI4LjA0NDM1Mjg4OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1MDY2OTU4MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIkFsbCBjaGFuZ2VzIGluIHRoaXMgcGF0Y2ggc2VyaWVzIGFyZSBzdHJpY3RseSBjb25maW5lZCB0byB1c2VyLXNwYWNlIHRvb2xpbmcgdW5kZXIgYHRvb2xzL2AgKHNwZWNpZmljYWxseSBgdG9vbHMvcGVyZmAgYW5kIGB0b29scy9idWlsZGApLCB3aGljaCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKGB2bWxpbnV4YCkgb3Iga2VybmVsIG1vZHVsZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwMjoxNzoyOC4wNDQzNTc4MzlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MzUxMzIzODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzY2Y4ZjM0OGE1MjVhOTU3Yzg3ODU2OGQ0NmQ4MDBjYTA2ZGIxYTkzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gU2VwIDcgMDI6MTc6MjYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvYnVpbGQvTWFrZWZpbGUuZmVhdHVyZSBiL3Rvb2xzL2J1aWxkL01ha2VmaWxlLmZlYXR1cmVcXG5pbmRleCA5OWViMGVhMDk1Mzc1Li40ZWM5NWMzNWE1YzE5IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL2J1aWxkL01ha2VmaWxlLmZlYXR1cmVcXG4rKysgYi90b29scy9idWlsZC9NYWtlZmlsZS5mZWF0dXJlXFxuQEAgLTExMyw4ICsxMTMsNyBAQCBGRUFUVVJFX1RFU1RTX0VYVFJBIDo9ICAgICAgICAgICAgICAgICAgXFxcXFxcbiAgICAgICAgICBjb21waWxlLXgzMiAgICAgICAgICAgICAgICAgICAgXFxcXFxcbiAgICAgICAgICBjcGx1cy1kZW1hbmdsZSAgICAgICAgICAgICAgICAgXFxcXFxcbiAgICAgICAgICBjeGEtZGVtYW5nbGUgICAgICAgICAgICAgICAgICAgXFxcXFxcbi0gICAgICAgICBndGsyICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcbi0gICAgICAgICBndGsyLWluZm9iYXIgICAgICAgICAgICAgICAgICAgXFxcXFxcbisgICAgICAgICBndGs0ICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcbiAgICAgICAgICBoZWxsbyAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcbiAgICAgICAgICBiYWJlbHRyYWNlMi1jdGYtd3JpdGVyICAgICAgICAgXFxcXFxcbiAgICAgICAgICBsaWJjYXBzdG9uZSAgICAgICAgICAgICAgICAgICAgXFxcXFxcbkBAIC0xNDMsNiArMTQyLDcgQEAgZW5kaWZcXG4gRkVBVFVSRV9ESVNQTEFZID89ICAgICAgICAgICAgICBcXFxcXFxuICAgICAgICAgIGxpYmR3ICAgICAgICAgICAgICAgICAgXFxcXFxcbiAgICAgICAgICBnbGliYyAgICAgICAgICAgICAgICAgIFxcXFxcXG4rICAgICAgICAgZ3RrNCAgICAgICAgICAgICAgICAgICBcXFxcXFxuICAgICAgICAgIGxpYmVsZiAgICAgICAgICAgICAgICAgXFxcXFxcbiAgICAgICAgICBsaWJudW1hICAgICAgICAgICAgICAgIFxcXFxcXG4gICAgICAgICAgbnVtYV9udW1fcG9zc2libGVfY3B1cyBcXFxcXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvTWFrZWZpbGUgYi90b29scy9idWlsZC9mZWF0dXJlL01ha2VmaWxlXFxuaW5kZXggN2QxNjUwMTgxMTZhNS4uMDFjNDhlNmVmMDIxZCAxMDA2NDRcXG4tLS0gYS90b29scy9idWlsZC9mZWF0dXJlL01ha2VmaWxlXFxuKysrIGIvdG9vbHMvYnVpbGQvZmVhdHVyZS9NYWtlZmlsZVxcbkBAIC0xMSw4ICsxMSw3IEBAIEZJTEVTPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXG4gICAgICAgICAgdGVzdC1ldmVudGZkLmJpbiAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcbiAgICAgICAgICB0ZXN0LWZvcnRpZnktc291cmNlLmJpbiAgICAgICAgICAgICAgICBcXFxcXFxuICAgICAgICAgIHRlc3QtZ2xpYmMuYmluICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXG4tICAgICAgICAgdGVzdC1ndGsyLmJpbiAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcbi0gICAgICAgICB0ZXN0LWd0azItaW5mb2Jhci5iaW4gICAgICAgICAgICAgICAgICBcXFxcXFxuKyAgICAgICAgIHRlc3QtZ3RrNC5iaW4gICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXG4gICAgICAgICAgdGVzdC1oZWxsby5iaW4gICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcbiAgICAgICAgICB0ZXN0LWxpYmJmZC5iaW4gICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxuIFxcdCB0ZXN0LWxpYmJmZC10aHJlYWRzYWZlLmJpbiAgICAgIFxcdFxcXFxcXG5AQCAtMjQwLDExICsyMzksOCBAQCAkKE9VVFBVVCl0ZXN0LWxpYmNwdXBvd2VyLmJpbjpcXG4gJChPVVRQVVQpdGVzdC1saWJ0cmFjZWZzLmJpbjpcXG4gXFx0ICQoQlVJTEQpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWNmbGFncyBsaWJ0cmFjZWZzIDJcXHUwMDNlL2Rldi9udWxsKSAtbHRyYWNlZnNcXG4gXFxuLSQoT1VUUFVUKXRlc3QtZ3RrMi5iaW46XFxuLVxcdCQoQlVJTEQpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgLS1jZmxhZ3MgZ3RrKy0yLjAgMlxcdTAwM2UvZGV2L251bGwpIC1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnNcXG4tXFxuLSQoT1VUUFVUKXRlc3QtZ3RrMi1pbmZvYmFyLmJpbjpcXG4tXFx0JChCVUlMRCkgJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyAtLWNmbGFncyBndGsrLTIuMCAyXFx1MDAzZS9kZXYvbnVsbClcXG4rJChPVVRQVVQpdGVzdC1ndGs0LmJpbjpcXG4rXFx0JChCVUlMRCkgJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyAtLWNmbGFncyBndGs0IDJcXHUwMDNlL2Rldi9udWxsKVxcbiBcXG4gZ3JlcC1saWJzICA9ICQoZmlsdGVyIC1sJSwkKDEpKVxcbiBzdHJpcC1saWJzID0gJChmaWx0ZXItb3V0IC1sJSwkKDEpKVxcbmRpZmYgLS1naXQgYS90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi1pbmZvYmFyLmMgYi90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi1pbmZvYmFyLmNcXG5kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCBiMWI3MTZkZDU3MzMwLi4wMDAwMDAwMDAwMDAwXFxuLS0tIGEvdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azItaW5mb2Jhci5jXFxuKysrIC9kZXYvbnVsbFxcbkBAIC0xLDEyICswLDAgQEBcXG4tLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4tI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkIFxcXCItV3N0cmljdC1wcm90b3R5cGVzXFxcIlxcbi0jaW5jbHVkZSBcXHUwMDNjZ3RrL2d0ay5oXFx1MDAzZVxcbi0jcHJhZ21hIEdDQyBkaWFnbm9zdGljIGVycm9yIFxcXCItV3N0cmljdC1wcm90b3R5cGVzXFxcIlxcbi1cXG4taW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcXG4te1xcbi1cXHRndGtfaW5pdChcXHUwMDI2YXJnYywgXFx1MDAyNmFyZ3YpO1xcbi1cXHRndGtfaW5mb19iYXJfbmV3KCk7XFxuLVxcbi1cXHRyZXR1cm4gMDtcXG4tfVxcbmRpZmYgLS1naXQgYS90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi5jIGIvdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azQuY1xcbnNpbWlsYXJpdHkgaW5kZXggNzYlXFxucmVuYW1lIGZyb20gdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azIuY1xcbnJlbmFtZSB0byB0b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrNC5jXFxuaW5kZXggMmFhZjRiZmMyMDU1Ni4uYjk1MjBlNzQwOGI5OSAxMDA2NDRcXG4tLS0gYS90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi5jXFxuKysrIGIvdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azQuY1xcbkBAIC0zLDkgKzMsOSBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjZ3RrL2d0ay5oXFx1MDAzZVxcbiAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGVycm9yIFxcXCItV3N0cmljdC1wcm90b3R5cGVzXFxcIlxcbiBcXG4taW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcXG4raW50IG1haW4odm9pZClcXG4ge1xcbi1cXHRndGtfaW5pdChcXHUwMDI2YXJnYywgXFx1MDAyNmFyZ3YpO1xcbitcXHRndGtfaW5pdCgpO1xcbiBcXG4gICAgICAgICByZXR1cm4gMDtcXG4gfVxcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL0RvY3VtZW50YXRpb24vcGVyZi1yZXBvcnQudHh0IGIvdG9vbHMvcGVyZi9Eb2N1bWVudGF0aW9uL3BlcmYtcmVwb3J0LnR4dFxcbmluZGV4IDIyZjg3ZWFhMzI3OTYuLjdhZjliM2Y4MWMwNjUgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi9Eb2N1bWVudGF0aW9uL3BlcmYtcmVwb3J0LnR4dFxcbisrKyBiL3Rvb2xzL3BlcmYvRG9jdW1lbnRhdGlvbi9wZXJmLXJlcG9ydC50eHRcXG5AQCAtMzUxLDcgKzM1MSw3IEBAIE9QVElPTlNcXG4gXFx0cmVxdWlyZXMgYSB0dHksIGlmIG9uZSBpcyBub3QgcHJlc2VudCwgYXMgd2hlbiBwaXBpbmcgdG8gb3RoZXJcXG4gXFx0Y29tbWFuZHMsIHRoZSBzdGRpbyBpbnRlcmZhY2UgaXMgdXNlZC5cXG4gXFxuLS0tZ3RrOjogVXNlIHRoZSBHVEsyIGludGVyZmFjZS5cXG4rLS1ndGs6OiBVc2UgdGhlIEdUSzQgaW50ZXJmYWNlLlxcbiBcXG4gLWs6OlxcbiAtLXZtbGludXg9XFx1MDAzY2ZpbGVcXHUwMDNlOjpcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9NYWtlZmlsZSBiL3Rvb2xzL3BlcmYvTWFrZWZpbGVcXG5pbmRleCA1YjcxMzgzN2VlZGU3Li41NjAxNDEwNjQ3OWEzIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3BlcmYvTWFrZWZpbGVcXG4rKysgYi90b29scy9wZXJmL01ha2VmaWxlXFxuQEAgLTEwNiw3ICsxMDYsNyBAQCBjbGVhbjpcXG4gIyBtYWtlIC1DIHRvb2xzL3BlcmYgLWYgdGVzdHMvbWFrZVxcbiAjXFxuIGJ1aWxkLXRlc3Q6XFxuLVxcdEAkKE1BS0UpIFNIVUY9MSAtZiB0ZXN0cy9tYWtlIFJFVVNFX0ZFQVRVUkVTX0RVTVA9MSBNSz1NYWtlZmlsZSBTRVRfUEFSQUxMRUw9MSAtLW5vLXByaW50LWRpcmVjdG9yeSB0YXJwa2cgbWFrZV9zdGF0aWMgbWFrZV93aXRoX2d0azIgb3V0XFxuK1xcdEAkKE1BS0UpIFNIVUY9MSAtZiB0ZXN0cy9tYWtlIFJFVVNFX0ZFQVRVUkVTX0RVTVA9MSBNSz1NYWtlZmlsZSBTRVRfUEFSQUxMRUw9MSAtLW5vLXByaW50LWRpcmVjdG9yeSB0YXJwa2cgbWFrZV9zdGF0aWMgbWFrZV93aXRoX2d0azQgb3V0XFxuIFxcbiBidWlsZC10ZXN0LXRhcmJhbGw6XFxuIFxcdEAkKE1BS0UpIC1mIHRlc3RzL21ha2UgUkVVU0VfRkVBVFVSRVNfRFVNUD0xIE1LPU1ha2VmaWxlIFNFVF9QQVJBTExFTD0xIC0tbm8tcHJpbnQtZGlyZWN0b3J5IG91dFxcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL01ha2VmaWxlLmNvbmZpZyBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUuY29uZmlnXFxuaW5kZXggNGQ1OTkzZGE5Zjk0NS4uNGVlNzM5M2EzOWY5MSAxMDA2NDRcXG4tLS0gYS90b29scy9wZXJmL01ha2VmaWxlLmNvbmZpZ1xcbisrKyBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUuY29uZmlnXFxuQEAgLTc3NCwyMSArNzc0LDIyIEBAIGlmbmRlZiBOT19TTEFOR1xcbiAgIGVuZGlmXFxuIGVuZGlmXFxuIFxcbi1pZmRlZiBHVEsyXFxuLSAgRkxBR1NfR1RLMj0kKENGTEFHUykgJChMREZMQUdTKSAkKEVYVExJQlMpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgLS1jZmxhZ3MgZ3RrKy0yLjAgMlxcdTAwM2UvZGV2L251bGwpXFxuLSAgJChjYWxsIGZlYXR1cmVfY2hlY2ssZ3RrMilcXG4tICBpZm5lcSAoJChmZWF0dXJlLWd0azIpLCAxKVxcbi0gICAgJCh3YXJuaW5nIEdUSzIgbm90IGZvdW5kLCBkaXNhYmxlcyBHVEsyIHN1cHBvcnQuIFBsZWFzZSBpbnN0YWxsIGd0azItZGV2ZWwgb3IgbGliZ3RrMi4wLWRldilcXG4tICAgIE5PX0dUSzIgOj0gMVxcbitpZmRlZiBHVEs0XFxuKyAgRkxBR1NfR1RLND0kKENGTEFHUykgJChMREZMQUdTKSAkKEVYVExJQlMpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgLS1jZmxhZ3MgZ3RrNCAyXFx1MDAzZS9kZXYvbnVsbClcXG4rICAkKGNhbGwgZmVhdHVyZV9jaGVjayxndGs0KVxcbisgIGlmbmVxICgkKGZlYXR1cmUtZ3RrNCksIDEpXFxuKyAgICAkKHdhcm5pbmcgR1RLNCBub3QgZm91bmQsIGRpc2FibGVzIEdUSzQgc3VwcG9ydC4gUGxlYXNlIGluc3RhbGwgZ3RrNC1kZXZlbCBvciBsaWJndGstNC1kZXYpXFxuKyAgICBOT19HVEs0IDo9IDFcXG4gICBlbHNlXFxuLSAgICAkKGNhbGwgZmVhdHVyZV9jaGVjayxndGsyLWluZm9iYXIpXFxuLSAgICBpZmVxICgkKGZlYXR1cmUtZ3RrMi1pbmZvYmFyKSwgMSlcXG4tICAgICAgR1RLX0NGTEFHUyA6PSAtREhBVkVfR1RLX0lORk9fQkFSX1NVUFBPUlRcXG4tICAgIGVuZGlmXFxuLSAgICBDRkxBR1MgKz0gLURIQVZFX0dUSzJfU1VQUE9SVFxcbi0gICAgR1RLX0NGTEFHUyArPSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1jZmxhZ3MgZ3RrKy0yLjAgMlxcdTAwM2UvZGV2L251bGwpXFxuLSAgICBHVEtfTElCUyA6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIGd0aystMi4wIDJcXHUwMDNlL2Rldi9udWxsKVxcbisgICAgQ0ZMQUdTICs9IC1ESEFWRV9HVEs0X1NVUFBPUlRcXG4rICAgIEdUS19DRkxBR1MgKz0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tY2ZsYWdzIGd0azQgMlxcdTAwM2UvZGV2L251bGwpXFxuKyAgICBHVEtfTElCUyA6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIGd0azQgMlxcdTAwM2UvZGV2L251bGwpXFxuICAgICBFWFRMSUJTICs9IC1sZGxcXG4rICAgICMgbGlicGVyZi1ndGsuc28gaXMgZGxvcGVuKCllZCBhdCBydW50aW1lIGFuZCBjYWxscyBiYWNrIGludG9cXG4rICAgICMgc3ltYm9scyBkZWZpbmVkIGluIHRoZSBwZXJmIGJpbmFyeSBpdHNlbGYgKGNhbGxjaGFpbl9wYXJhbSxcXG4rICAgICMgc3ltYm9sX2NvbmYsIGV2c2VsX19uYW1lLCAuLi4pOiBwZXJmIG5lZWRzIHRvIGV4cG9ydCB0aG9zZVxcbisgICAgIyBkeW5hbWljYWxseSBmb3IgdGhlIHBsdWdpbiB0byByZXNvbHZlIHRoZW0uXFxuKyAgICBMREZMQUdTICs9IC1yZHluYW1pY1xcbiAgIGVuZGlmXFxuIGVuZGlmXFxuIFxcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL01ha2VmaWxlLnBlcmYgYi90b29scy9wZXJmL01ha2VmaWxlLnBlcmZcXG5pbmRleCAyOWNmZDQ0YzQyN2YzLi4yNDM4YjQwZWFhZWMxIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3BlcmYvTWFrZWZpbGUucGVyZlxcbisrKyBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUucGVyZlxcbkBAIC00OSw3ICs0OSw3IEBAIGluY2x1ZGUgLi4vc2NyaXB0cy91dGlsaXRpZXMubWFrXFxuICNcXG4gIyBEZWZpbmUgTk9fU0xBTkcgaWYgeW91IGRvIG5vdCB3YW50IFRVSSBzdXBwb3J0LlxcbiAjXFxuLSMgRGVmaW5lIEdUSzIgaWYgeW91IHdhbnQgR1RLKyBHVUkgc3VwcG9ydC5cXG4rIyBEZWZpbmUgR1RLNCBpZiB5b3Ugd2FudCBHVEsrIEdVSSBzdXBwb3J0LlxcbiAjXFxuICMgRGVmaW5lIE5PX0RFTUFOR0xFIGlmIHlvdSBkbyBub3Qgd2FudCBDKysgc3ltYm9sIGRlbWFuZ2xpbmcuXFxuICNcXG5AQCAtNDczLDcgKzQ3Myw3IEBAIGlmbmVxICgkKE9VVFBVVCksKVxcbiAgIENGTEFHUyArPSAtSSQoT1VUUFVUKVxcbiBlbmRpZlxcbiBcXG4taWZkZWYgR1RLMlxcbitpZmRlZiBHVEs0XFxuICAgQUxMX1BST0dSQU1TICs9ICQoT1VUUFVUKWxpYnBlcmYtZ3RrLnNvXFxuICAgR1RLX0lOIDo9ICQoT1VUUFVUKWd0ay1pbi5vXFxuIGVuZGlmXFxuQEAgLTgxMSw3ICs4MTEsNyBAQCBjaGVjazogcHJlcGFyZVxcbiBcXG4gIyMjIEluc3RhbGxhdGlvbiBydWxlc1xcbiBcXG4taWZkZWYgR1RLMlxcbitpZmRlZiBHVEs0XFxuIGluc3RhbGwtZ3RrOiAkKE9VVFBVVClsaWJwZXJmLWd0ay5zb1xcbiBcXHQkKGNhbGwgUVVJRVRfSU5TVEFMTCwgJ0dUSyBVSScpIFxcXFxcXG4gXFx0XFx0JChJTlNUQUxMKSAtZCAtbSA3NTUgJyQoREVTVERJUl9TUSkkKGxpYmRpcl9TUSknOyBcXFxcXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1hbm5vdGF0ZS5jIGIvdG9vbHMvcGVyZi9idWlsdGluLWFubm90YXRlLmNcXG5pbmRleCA2OWNiNzJiMjA4MmE2Li4xNTE2M2UwODFhOGNlIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1hbm5vdGF0ZS5jXFxuKysrIGIvdG9vbHMvcGVyZi9idWlsdGluLWFubm90YXRlLmNcXG5AQCAtNTIsNyArNTIsNyBAQCBzdHJ1Y3QgcGVyZl9hbm5vdGF0ZSB7XFxuIFxcdGJvb2xcXHQgICB1c2VfdHVpO1xcbiAjZW5kaWZcXG4gXFx0Ym9vbFxcdCAgIHVzZV9zdGRpbywgdXNlX3N0ZGlvMjtcXG4tI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUXFxuKyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVFxcbiBcXHRib29sXFx0ICAgdXNlX2d0aztcXG4gI2VuZGlmXFxuIFxcdGJvb2xcXHQgICBza2lwX21pc3Npbmc7XFxuQEAgLTcxMiw3ICs3MTIsNyBAQCBpbnQgY21kX2Fubm90YXRlKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndilcXG4gXFx0T1BUX0JPT0xFQU4oJ3EnLCBcXFwicXVpZXRcXFwiLCBcXHUwMDI2cXVpZXQsIFxcXCJkbyBub3cgc2hvdyBhbnkgd2FybmluZ3Mgb3IgbWVzc2FnZXNcXFwiKSxcXG4gXFx0T1BUX0JPT0xFQU4oJ0QnLCBcXFwiZHVtcC1yYXctdHJhY2VcXFwiLCBcXHUwMDI2ZHVtcF90cmFjZSxcXG4gXFx0XFx0ICAgIFxcXCJkdW1wIHJhdyB0cmFjZSBpbiBBU0NJSVxcXCIpLFxcbi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlRcXG4rI2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXFxuIFxcdE9QVF9CT09MRUFOKDAsIFxcXCJndGtcXFwiLCBcXHUwMDI2YW5ub3RhdGUudXNlX2d0aywgXFxcIlVzZSB0aGUgR1RLIGludGVyZmFjZVxcXCIpLFxcbiAjZW5kaWZcXG4gI2lmZGVmIEhBVkVfU0xBTkdfU1VQUE9SVFxcbkBAIC04MjgsNyArODI4LDcgQEAgaW50IGNtZF9hbm5vdGF0ZShpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpXFxuIFxcdGlmIChhbm5vdGF0ZV9jaGVja19hcmdzKCkgXFx1MDAzYyAwKVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFxuLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVFxcbisjaWZkZWYgSEFWRV9HVEs0X1NVUFBPUlRcXG4gXFx0aWYgKHN5bWJvbF9jb25mLnNob3dfbnJfc2FtcGxlcyBcXHUwMDI2XFx1MDAyNiBhbm5vdGF0ZS51c2VfZ3RrKSB7XFxuIFxcdFxcdHByX2VycihcXFwiLS1zaG93LW5yLXNhbXBsZXMgaXMgbm90IGF2YWlsYWJsZSBpbiAtLWd0ayBtb2RlIGF0IHRoaXMgdGltZVxcXFxuXFxcIik7XFxuIFxcdFxcdHJldHVybiByZXQ7XFxuQEAgLTg5OCw3ICs4OTgsNyBAQCBpbnQgY21kX2Fubm90YXRlKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndilcXG4gXFx0ZWxzZSBpZiAoYW5ub3RhdGUudXNlX3R1aSlcXG4gXFx0XFx0dXNlX2Jyb3dzZXIgPSAxO1xcbiAjZW5kaWZcXG4tI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUXFxuKyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVFxcbiBcXHRlbHNlIGlmIChhbm5vdGF0ZS51c2VfZ3RrKVxcbiBcXHRcXHR1c2VfYnJvd3NlciA9IDI7XFxuICNlbmRpZlxcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL2J1aWx0aW4tcmVwb3J0LmMgYi90b29scy9wZXJmL2J1aWx0aW4tcmVwb3J0LmNcXG5pbmRleCA2MGQxZjE2NjYyOWUwLi5kMTQzODRjNTg0NjYxIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1yZXBvcnQuY1xcbisrKyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1yZXBvcnQuY1xcbkBAIC04Miw3ICs4Miw3IEBAIHN0cnVjdCByZXBvcnQge1xcbiAjaWZkZWYgSEFWRV9TTEFOR19TVVBQT1JUXFxuIFxcdGJvb2xcXHRcXHRcXHR1c2VfdHVpO1xcbiAjZW5kaWZcXG4tI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUXFxuKyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVFxcbiBcXHRib29sXFx0XFx0XFx0dXNlX2d0aztcXG4gI2VuZGlmXFxuIFxcdGJvb2xcXHRcXHRcXHR1c2Vfc3RkaW87XFxuQEAgLTEzNTksOCArMTM1OSw4IEBAIGludCBjbWRfcmVwb3J0KGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndilcXG4gI2lmZGVmIEhBVkVfU0xBTkdfU1VQUE9SVFxcbiBcXHRPUFRfQk9PTEVBTigwLCBcXFwidHVpXFxcIiwgXFx1MDAyNnJlcG9ydC51c2VfdHVpLCBcXFwiVXNlIHRoZSBUVUkgaW50ZXJmYWNlXFxcIiksXFxuICNlbmRpZlxcbi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlRcXG4tXFx0T1BUX0JPT0xFQU4oMCwgXFxcImd0a1xcXCIsIFxcdTAwMjZyZXBvcnQudXNlX2d0aywgXFxcIlVzZSB0aGUgR1RLMiBpbnRlcmZhY2VcXFwiKSxcXG4rI2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXFxuK1xcdE9QVF9CT09MRUFOKDAsIFxcXCJndGtcXFwiLCBcXHUwMDI2cmVwb3J0LnVzZV9ndGssIFxcXCJVc2UgdGhlIEdUSzQgaW50ZXJmYWNlXFxcIiksXFxuICNlbmRpZlxcbiBcXHRPUFRfQk9PTEVBTigwLCBcXFwic3RkaW9cXFwiLCBcXHUwMDI2cmVwb3J0LnVzZV9zdGRpbyxcXG4gXFx0XFx0ICAgIFxcXCJVc2UgdGhlIHN0ZGlvIGludGVyZmFjZVxcXCIpLFxcbkBAIC0xNzEwLDcgKzE3MTAsNyBAQCBpbnQgY21kX3JlcG9ydChpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpXFxuIFxcdGVsc2UgaWYgKHJlcG9ydC51c2VfdHVpKVxcbiBcXHRcXHR1c2VfYnJvd3NlciA9IDE7XFxuICNlbmRpZlxcbi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlRcXG4rI2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXFxuIFxcdGVsc2UgaWYgKHJlcG9ydC51c2VfZ3RrKVxcbiBcXHRcXHR1c2VfYnJvd3NlciA9IDI7XFxuICNlbmRpZlxcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3NjcmlwdHMvaW5zdGFsbC1idWlsZC1kZXBzLnNoIGIvdG9vbHMvcGVyZi9zY3JpcHRzL2luc3RhbGwtYnVpbGQtZGVwcy5zaFxcbmluZGV4IGQwMDNlN2ZhYjJiZTguLmE2MDFhNTI2MGMxN2UgMTAwNzU1XFxuLS0tIGEvdG9vbHMvcGVyZi9zY3JpcHRzL2luc3RhbGwtYnVpbGQtZGVwcy5zaFxcbisrKyBiL3Rvb2xzL3BlcmYvc2NyaXB0cy9pbnN0YWxsLWJ1aWxkLWRlcHMuc2hcXG5AQCAtMTk5LDggKzE5OSw4IEBAIGZlZG9yYV9wa2dfZm9yKCkge1xcbiBcXHQjIG9wdC1pbiBmZWF0dXJlcywgd2hpY2ggYSBkZWZhdWx0IGJ1aWxkIGRvZXMgbm90IGVuYWJsZTogdGhlIGxpYmJmZFxcbiBcXHQjIGRpc2Fzc2VtYmxlciBmYW1pbHkgKGxpYmJmZCwgbGliYmZkLXRocmVhZHNhZmUsIGxpYmJmZC1saWJlcnR5LFxcbiBcXHQjIGRpc2Fzc2VtYmxlci0qLCBjcGx1cy1kZW1hbmdsZSksIG9ubHkgbGlua2VkIG9uIEJVSUxEX05PTkRJU1RST1xcbi1cXHQjIGJ1aWxkcyBhbmQgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBjYXBzdG9uZSwgR1RLMiwgTElCUEVSTCBhbmRcXG4tXFx0IyBMSUJVTldJTkQgc3VwcG9ydCAoaWZkZWYgR1RLMiAvIGlmZGVmIExJQlBFUkwgLyBMSUJVTldJTkQ9MSksXFxuK1xcdCMgYnVpbGRzIGFuZCBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGNhcHN0b25lLCBHVEs0LCBMSUJQRVJMIGFuZFxcbitcXHQjIExJQlVOV0lORCBzdXBwb3J0IChpZmRlZiBHVEs0IC8gaWZkZWYgTElCUEVSTCAvIExJQlVOV0lORD0xKSxcXG4gXFx0IyBhbmQgQ29yZVNpZ2h0IChpZmRlZiBDT1JFU0lHSFQpLCBhcmUgZGVsaWJlcmF0ZWx5IG5vdCBtYXBwZWQuXFxuIFxcdCMgbGliYWlvIGlzIG5vdCBtYXBwZWQgZWl0aGVyOiBpdHNcXG4gXFx0IyB0ZXN0IHVzZXMgdGhlIFBPU0lYIEFJTyBBUEkgKGFpby5oLCBhaW9fKiwgLWxydCksIHByb3ZpZGVkIGJ5XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdGVzdHMvbWFrZSBiL3Rvb2xzL3BlcmYvdGVzdHMvbWFrZVxcbmluZGV4IGQyYzJmNTI2ZTFkYjAuLjIwMmFiNTUwMTkxNjEgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi90ZXN0cy9tYWtlXFxuKysrIGIvdG9vbHMvcGVyZi90ZXN0cy9tYWtlXFxuQEAgLTk1LDcgKzk1LDcgQEAgbWFrZV9ub19iYWJlbHRyYWNlMiA6PSBOT19CQUJFTFRSQUNFMj0xXFxuIG1ha2Vfd2l0aF9jb3Jlc2lnaHQgOj0gQ09SRVNJR0hUPTFcXG4gbWFrZV9ub19zZHRcXHQgICAgOj0gTk9fU0RUPTFcXG4gbWFrZV9ub19saWJwZm00ICAgICA6PSBOT19MSUJQRk00PTFcXG4tbWFrZV93aXRoX2d0azIgICAgICA6PSBHVEsyPTFcXG4rbWFrZV93aXRoX2d0azQgICAgICA6PSBHVEs0PTFcXG4gbWFrZV9yZWZjbnRfY2hlY2sgICA6PSBFWFRSQV9DRkxBR1M9XFxcIi1EUkVGQ05UX0NIRUNLSU5HPTFcXFwiXFxuIG1ha2VfdGFncyAgICAgICAgICAgOj0gdGFnc1xcbiBtYWtlX2NzY29wZSAgICAgICAgIDo9IGNzY29wZVxcbkBAIC0zMTgsNyArMzE4LDcgQEAgJChydW4pOlxcbiBcXHQkKGNhbGwgdGVzdCwkQCkgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbiBcXHRybSAtcmYgJEAgJCRUTVBfREVTVCB8fCAoY2F0ICRAIDsgZmFsc2UpXFxuIFxcbi1tYWtlX3dpdGhfZ3RrMjpcXG4rbWFrZV93aXRoX2d0azQ6XFxuIFxcdCQoY2FsbCBjbGVhbilcXG4gXFx0QFRNUF9ERVNUPSQkKG1rdGVtcCAtZCk7IFxcXFxcXG4gXFx0Y21kPVxcXCJjZCAkKFBFUkYpIFxcdTAwMjZcXHUwMDI2ICQoTUFLRV9GKSAkKCRAKSAkKFBBUkFMTEVMX09QVCkgJChPX09QVCkgREVTVERJUj0kJFRNUF9ERVNUXFxcIjsgXFxcXFxcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL2d0ay9hbm5vdGF0ZS5jIGIvdG9vbHMvcGVyZi91aS9ndGsvYW5ub3RhdGUuY1xcbmluZGV4IDg5MjBlMjk4NDIwYTguLjA5NGRmYTA0NWI3NzQgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvYW5ub3RhdGUuY1xcbisrKyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2Fubm90YXRlLmNcXG5AQCAtMTEsNiArMTEsNyBAQFxcbiAjaW5jbHVkZSBcXFwidWkvaGVscGxpbmUuaFxcXCJcXG4gI2luY2x1ZGUgXFx1MDAzY2ludHR5cGVzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NzaWduYWwuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY3N0cmluZy5oXFx1MDAzZVxcbiBcXG4gZW51bSB7XFxuIFxcdEFOTl9DT0xfX1BFUkNFTlQsXFxuQEAgLTE2MSw3ICsxNjIsNyBAQCBzdGF0aWMgaW50IHBlcmZfZ3RrX19hbm5vdGF0ZV9zeW1ib2woR3RrV2lkZ2V0ICp3aW5kb3csIHN0cnVjdCBtYXBfc3ltYm9sICptcyxcXG4gXFx0XFx0XFx0Z3RrX2xpc3Rfc3RvcmVfc2V0KHN0b3JlLCBcXHUwMDI2aXRlciwgQU5OX0NPTF9fTElORSwgcywgLTEpO1xcbiBcXHR9XFxuIFxcbi1cXHRndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHdpbmRvdyksIHZpZXcpO1xcbitcXHRndGtfc2Nyb2xsZWRfd2luZG93X3NldF9jaGlsZChHVEtfU0NST0xMRURfV0lORE9XKHdpbmRvdyksIHZpZXcpO1xcbiBcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHBvcywgbiwgXFx1MDAyNm5vdGVzLVxcdTAwM2VzcmMtXFx1MDAzZXNvdXJjZSwgYWwubm9kZSkge1xcbiBcXHRcXHRsaXN0X2RlbF9pbml0KFxcdTAwMjZwb3MtXFx1MDAzZWFsLm5vZGUpO1xcbkBAIC0yMDUsNDAgKzIwNiwzNCBAQCBzdGF0aWMgaW50IHN5bWJvbF9fZ3RrX2Fubm90YXRlKHN0cnVjdCBtYXBfc3ltYm9sICptcywgc3RydWN0IGV2c2VsICpldnNlbCxcXG4gXFx0XFx0R3RrV2lkZ2V0ICppbmZvYmFyO1xcbiBcXHRcXHRHdGtXaWRnZXQgKnN0YXRiYXI7XFxuIFxcbi1cXHRcXHRzaWduYWwoU0lHU0VHViwgcGVyZl9ndGtfX3NpZ25hbCk7XFxuLVxcdFxcdHNpZ25hbChTSUdGUEUsICBwZXJmX2d0a19fc2lnbmFsKTtcXG4tXFx0XFx0c2lnbmFsKFNJR0lOVCwgIHBlcmZfZ3RrX19zaWduYWwpO1xcbi1cXHRcXHRzaWduYWwoU0lHUVVJVCwgcGVyZl9ndGtfX3NpZ25hbCk7XFxuLVxcdFxcdHNpZ25hbChTSUdURVJNLCBwZXJmX2d0a19fc2lnbmFsKTtcXG4rXFx0XFx0c2lnbmFsKFNJR1NFR1YsIHBlcmZfZ3RrX19mYXRhbF9zaWduYWwpO1xcbitcXHRcXHRzaWduYWwoU0lHRlBFLCAgcGVyZl9ndGtfX2ZhdGFsX3NpZ25hbCk7XFxuK1xcdFxcdHBlcmZfZ3RrX19pbnN0YWxsX3F1aXRfc2lnbmFscygpO1xcbiBcXG4tXFx0XFx0d2luZG93ID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJTkRPV19UT1BMRVZFTCk7XFxuK1xcdFxcdHdpbmRvdyA9IGd0a193aW5kb3dfbmV3KCk7XFxuIFxcdFxcdGd0a193aW5kb3dfc2V0X3RpdGxlKEdUS19XSU5ET1cod2luZG93KSwgXFxcInBlcmYgYW5ub3RhdGVcXFwiKTtcXG4gXFxuLVxcdFxcdGdfc2lnbmFsX2Nvbm5lY3Qod2luZG93LCBcXFwiZGVsZXRlX2V2ZW50XFxcIiwgZ3RrX21haW5fcXVpdCwgTlVMTCk7XFxuLVxcbiBcXHRcXHRwZ2N0eCA9IHBlcmZfZ3RrX19hY3RpdmF0ZV9jb250ZXh0KHdpbmRvdyk7XFxuIFxcdFxcdGlmICghcGdjdHgpXFxuIFxcdFxcdFxcdHJldHVybiAtMTtcXG4gXFxuLVxcdFxcdHZib3ggPSBndGtfdmJveF9uZXcoRkFMU0UsIDApO1xcbitcXHRcXHR2Ym94ID0gZ3RrX2JveF9uZXcoR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCAwKTtcXG4gXFx0XFx0bm90ZWJvb2sgPSBndGtfbm90ZWJvb2tfbmV3KCk7XFxuIFxcdFxcdHBnY3R4LVxcdTAwM2Vub3RlYm9vayA9IG5vdGVib29rO1xcbiBcXG4tXFx0XFx0Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIG5vdGVib29rLCBUUlVFLCBUUlVFLCAwKTtcXG4rXFx0XFx0Z3RrX3dpZGdldF9zZXRfdmV4cGFuZChub3RlYm9vaywgVFJVRSk7XFxuK1xcdFxcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIG5vdGVib29rKTtcXG4gXFxuIFxcdFxcdGluZm9iYXIgPSBwZXJmX2d0a19fc2V0dXBfaW5mb19iYXIoKTtcXG4tXFx0XFx0aWYgKGluZm9iYXIpIHtcXG4tXFx0XFx0XFx0Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIGluZm9iYXIsXFxuLVxcdFxcdFxcdFxcdFxcdCAgIEZBTFNFLCBGQUxTRSwgMCk7XFxuLVxcdFxcdH1cXG4rXFx0XFx0Z3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgaW5mb2Jhcik7XFxuIFxcbiBcXHRcXHRzdGF0YmFyID0gcGVyZl9ndGtfX3NldHVwX3N0YXR1c2JhcigpO1xcbi1cXHRcXHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgc3RhdGJhciwgRkFMU0UsIEZBTFNFLCAwKTtcXG4rXFx0XFx0Z3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgc3RhdGJhcik7XFxuIFxcbi1cXHRcXHRndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHdpbmRvdyksIHZib3gpO1xcbitcXHRcXHRndGtfd2luZG93X3NldF9jaGlsZChHVEtfV0lORE9XKHdpbmRvdyksIHZib3gpO1xcbiBcXHR9XFxuIFxcbi1cXHRzY3JvbGxlZF93aW5kb3cgPSBndGtfc2Nyb2xsZWRfd2luZG93X25ldyhOVUxMLCBOVUxMKTtcXG4rXFx0c2Nyb2xsZWRfd2luZG93ID0gZ3RrX3Njcm9sbGVkX3dpbmRvd19uZXcoKTtcXG4gXFx0dGFiX2xhYmVsID0gZ3RrX2xhYmVsX25ldyhzeW0tXFx1MDAzZW5hbWUpO1xcbiBcXG4gXFx0Z3RrX3Njcm9sbGVkX3dpbmRvd19zZXRfcG9saWN5KEdUS19TQ1JPTExFRF9XSU5ET1coc2Nyb2xsZWRfd2luZG93KSxcXG5AQCAtMjY3LDEyICsyNjIsMTEgQEAgdm9pZCBwZXJmX2d0a19fc2hvd19hbm5vdGF0aW9ucyh2b2lkKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbiBcXHR3aW5kb3cgPSBwZ2N0eC1cXHUwMDNlbWFpbl93aW5kb3c7XFxuLVxcdGd0a193aWRnZXRfc2hvd19hbGwod2luZG93KTtcXG4gXFxuIFxcdHBlcmZfZ3RrX19yZXNpemVfd2luZG93KHdpbmRvdyk7XFxuLVxcdGd0a193aW5kb3dfc2V0X3Bvc2l0aW9uKEdUS19XSU5ET1cod2luZG93KSwgR1RLX1dJTl9QT1NfQ0VOVEVSKTtcXG4rXFx0Z3RrX3dpZGdldF9zZXRfdmlzaWJsZSh3aW5kb3csIFRSVUUpO1xcbiBcXG4tXFx0Z3RrX21haW4oKTtcXG4rXFx0cGVyZl9ndGtfX3J1bl9tYWluX2xvb3Aod2luZG93KTtcXG4gXFxuIFxcdHBlcmZfZ3RrX19kZWFjdGl2YXRlX2NvbnRleHQoXFx1MDAyNnBnY3R4KTtcXG4gfVxcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL2d0ay9icm93c2VyLmMgYi90b29scy9wZXJmL3VpL2d0ay9icm93c2VyLmNcXG5pbmRleCBkMmRhZGYzODczZmJkLi45OGYxZDZiZmNiMjQ2IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2Jyb3dzZXIuY1xcbisrKyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2Jyb3dzZXIuY1xcbkBAIC01LDMyICs1LDkyIEBAXFxuICNpbmNsdWRlIFxcXCIuLi9oaXN0LmhcXFwiXFxuICNpbmNsdWRlIFxcXCIuLi9oZWxwbGluZS5oXFxcIlxcbiBcXG4rI2luY2x1ZGUgXFx1MDAzY2dsaWItdW5peC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjc2lnbmFsLmhcXHUwMDNlXFxuIFxcbi12b2lkIHBlcmZfZ3RrX19zaWduYWwoaW50IHNpZylcXG4rLypcXG4rICogU0lHSU5UL1NJR1FVSVQvU0lHVEVSTSBhcmUgYXN5bmNocm9ub3VzOiBkZWZlcnJpbmcgdGhlIGFjdHVhbCBleGl0IHRvIGFcXG4rICogR0xpYiBzb3VyY2UgZGlzcGF0Y2hlZCBmcm9tIHRoZSBtYWluIGxvb3AgbWVhbnMgaXQgYWx3YXlzIHJ1bnMgb24gdGhlXFxuKyAqIG1haW4gdGhyZWFkLCBzZXJpYWxpemVkIHdpdGggZXZlcnl0aGluZyBlbHNlIHRoZSBtYWluIGxvb3AgZG9lc1xcbisgKiAoaW5jbHVkaW5nIHBlcmZfZ3RrX19lcnJvcigpJ3MgdXBkYXRlcyB0byBwZXJmX2d0a19fZXJyb3JfbG9vcHMpLCBpbnN0ZWFkXFxuKyAqIG9mIHJhY2luZyB0aGVtIGZyb20gYXJiaXRyYXJ5IHNpZ25hbC1oYW5kbGVyIGNvbnRleHQuXFxuKyAqL1xcbitzdGF0aWMgZ2Jvb2xlYW4gcGVyZl9ndGtfX3F1aXRfc2lnbmFsKGdwb2ludGVyIGRhdGEgX19tYXliZV91bnVzZWQpXFxuIHtcXG4gXFx0cGVyZl9ndGtfX2V4aXQoZmFsc2UpO1xcbitcXHRyZXR1cm4gR19TT1VSQ0VfUkVNT1ZFO1xcbit9XFxuK1xcbit2b2lkIHBlcmZfZ3RrX19pbnN0YWxsX3F1aXRfc2lnbmFscyh2b2lkKVxcbit7XFxuK1xcdGdfdW5peF9zaWduYWxfYWRkKFNJR0lOVCwgIHBlcmZfZ3RrX19xdWl0X3NpZ25hbCwgTlVMTCk7XFxuK1xcdGdfdW5peF9zaWduYWxfYWRkKFNJR1FVSVQsIHBlcmZfZ3RrX19xdWl0X3NpZ25hbCwgTlVMTCk7XFxuK1xcdGdfdW5peF9zaWduYWxfYWRkKFNJR1RFUk0sIHBlcmZfZ3RrX19xdWl0X3NpZ25hbCwgTlVMTCk7XFxuK31cXG4rXFxuKy8qXFxuKyAqIFNJR1NFR1YvU0lHRlBFIGFyZSBzeW5jaHJvbm91cyBmYXVsdHM6IHRoZXJlJ3Mgbm8gXFxcImxhdGVyXFxcIiB0byBkZWZlciB0byxcXG4rICogYW5kIG5vIHNhZmUgd2F5IHRvIHJ1biBHVEsvR0xpYiBjb2RlIChvciBhbnl0aGluZyBlbHNlIG5vbi1hc3luYy1zaWduYWwtXFxuKyAqIHNhZmUpIGZyb20gdGhlIGZhdWx0aW5nIGNvbnRleHQuIFJlcG9ydCBhbmQgbGV0IHRoZSBkZWZhdWx0IGRpc3Bvc2l0aW9uXFxuKyAqIChjb3JlIGR1bXApIGhhcHBlbiBpbnN0ZWFkIG9mIHRyeWluZyB0byB0ZWFyIGRvd24gR1RLIHN0YXRlIGhlcmUuXFxuKyAqL1xcbit2b2lkIHBlcmZfZ3RrX19mYXRhbF9zaWduYWwoaW50IHNpZylcXG4re1xcbiBcXHRwc2lnbmFsKHNpZywgXFxcInBlcmZcXFwiKTtcXG4rXFx0c2lnbmFsKHNpZywgU0lHX0RGTCk7XFxuK1xcdHJhaXNlKHNpZyk7XFxuIH1cXG4gXFxuIHZvaWQgcGVyZl9ndGtfX3Jlc2l6ZV93aW5kb3coR3RrV2lkZ2V0ICp3aW5kb3cpXFxuIHtcXG4gXFx0R2RrUmVjdGFuZ2xlIHJlY3Q7XFxuLVxcdEdka1NjcmVlbiAqc2NyZWVuO1xcbi1cXHRpbnQgbW9uaXRvcjtcXG4rXFx0R2RrTW9uaXRvciAqbW9uaXRvcjtcXG4rXFx0R2RrRGlzcGxheSAqZGlzcGxheTtcXG4rXFx0R0xpc3RNb2RlbCAqbW9uaXRvcnM7XFxuIFxcdGludCBoZWlnaHQ7XFxuIFxcdGludCB3aWR0aDtcXG4gXFxuLVxcdHNjcmVlbiA9IGd0a193aWRnZXRfZ2V0X3NjcmVlbih3aW5kb3cpO1xcbitcXHRkaXNwbGF5ID0gZ3RrX3dpZGdldF9nZXRfZGlzcGxheSh3aW5kb3cpO1xcbitcXHRtb25pdG9ycyA9IGdka19kaXNwbGF5X2dldF9tb25pdG9ycyhkaXNwbGF5KTtcXG4rXFx0bW9uaXRvciA9IGdfbGlzdF9tb2RlbF9nZXRfaXRlbShtb25pdG9ycywgMCk7XFxuK1xcdGlmICghbW9uaXRvcikge1xcbitcXHRcXHRndGtfd2luZG93X3NldF9kZWZhdWx0X3NpemUoR1RLX1dJTkRPVyh3aW5kb3cpLCA4MDAsIDYwMCk7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbiBcXG4tXFx0bW9uaXRvciA9IGdka19zY3JlZW5fZ2V0X21vbml0b3JfYXRfd2luZG93KHNjcmVlbiwgd2luZG93LVxcdTAwM2V3aW5kb3cpO1xcbi1cXG4tXFx0Z2RrX3NjcmVlbl9nZXRfbW9uaXRvcl9nZW9tZXRyeShzY3JlZW4sIG1vbml0b3IsIFxcdTAwMjZyZWN0KTtcXG4rXFx0Z2RrX21vbml0b3JfZ2V0X2dlb21ldHJ5KG1vbml0b3IsIFxcdTAwMjZyZWN0KTtcXG4rXFx0Z19vYmplY3RfdW5yZWYobW9uaXRvcik7XFxuIFxcbiBcXHR3aWR0aFxcdD0gcmVjdC53aWR0aCAqIDMgLyA0O1xcbiBcXHRoZWlnaHRcXHQ9IHJlY3QuaGVpZ2h0ICogMyAvIDQ7XFxuIFxcbi1cXHRndGtfd2luZG93X3Jlc2l6ZShHVEtfV0lORE9XKHdpbmRvdyksIHdpZHRoLCBoZWlnaHQpO1xcbitcXHRndGtfd2luZG93X3NldF9kZWZhdWx0X3NpemUoR1RLX1dJTkRPVyh3aW5kb3cpLCB3aWR0aCwgaGVpZ2h0KTtcXG4rfVxcbitcXG4rc3RhdGljIEdNYWluTG9vcCAqcGVyZl9ndGtfX21haW5fbG9vcDtcXG4rXFxuK3ZvaWQgcGVyZl9ndGtfX3F1aXRfbWFpbl9sb29wKHZvaWQpXFxuK3tcXG4rXFx0aWYgKHBlcmZfZ3RrX19tYWluX2xvb3ApXFxuK1xcdFxcdGdfbWFpbl9sb29wX3F1aXQocGVyZl9ndGtfX21haW5fbG9vcCk7XFxuK31cXG4rXFxuK3N0YXRpYyBnYm9vbGVhbiBwZXJmX2d0a19fY2xvc2VfcmVxdWVzdChHdGtXaWRnZXQgKndpZGdldCBfX21heWJlX3VudXNlZCxcXG4rXFx0XFx0XFx0XFx0XFx0Z3BvaW50ZXIgZGF0YSBfX21heWJlX3VudXNlZClcXG4re1xcbitcXHRwZXJmX2d0a19fcXVpdF9tYWluX2xvb3AoKTtcXG4rXFxuK1xcdHJldHVybiBGQUxTRTtcXG4rfVxcbitcXG4rdm9pZCBwZXJmX2d0a19fcnVuX21haW5fbG9vcChHdGtXaWRnZXQgKndpbmRvdylcXG4re1xcbitcXHRnX3NpZ25hbF9jb25uZWN0KHdpbmRvdywgXFxcImNsb3NlLXJlcXVlc3RcXFwiLFxcbitcXHRcXHRcXHQgR19DQUxMQkFDSyhwZXJmX2d0a19fY2xvc2VfcmVxdWVzdCksIE5VTEwpO1xcbitcXG4rXFx0cGVyZl9ndGtfX21haW5fbG9vcCA9IGdfbWFpbl9sb29wX25ldyhOVUxMLCBGQUxTRSk7XFxuK1xcdGdfbWFpbl9sb29wX3J1bihwZXJmX2d0a19fbWFpbl9sb29wKTtcXG4rXFx0Z19jbGVhcl9wb2ludGVyKFxcdTAwMjZwZXJmX2d0a19fbWFpbl9sb29wLCBnX21haW5fbG9vcF91bnJlZik7XFxuIH1cXG4gXFxuIGNvbnN0IGNoYXIgKnBlcmZfZ3RrX19nZXRfcGVyY2VudF9jb2xvcihkb3VibGUgcGVyY2VudClcXG5AQCAtNDIsMzMgKzEwMiwzNSBAQCBjb25zdCBjaGFyICpwZXJmX2d0a19fZ2V0X3BlcmNlbnRfY29sb3IoZG91YmxlIHBlcmNlbnQpXFxuIFxcdHJldHVybiBOVUxMO1xcbiB9XFxuIFxcbi0jaWZkZWYgSEFWRV9HVEtfSU5GT19CQVJfU1VQUE9SVFxcbitzdGF0aWMgdm9pZCBwZXJmX2d0a19faGlkZV93aWRnZXQoR3RrV2lkZ2V0ICp3aWRnZXQsIGdpbnQgcmVzcG9uc2VfaWQgX19tYXliZV91bnVzZWQsXFxuK1xcdFxcdFxcdFxcdCAgIGdwb2ludGVyIGRhdGEgX19tYXliZV91bnVzZWQpXFxuK3tcXG4rXFx0Z3RrX3dpZGdldF9zZXRfdmlzaWJsZSh3aWRnZXQsIEZBTFNFKTtcXG4rfVxcbitcXG4gR3RrV2lkZ2V0ICpwZXJmX2d0a19fc2V0dXBfaW5mb19iYXIodm9pZClcXG4ge1xcbiBcXHRHdGtXaWRnZXQgKmluZm9fYmFyO1xcbiBcXHRHdGtXaWRnZXQgKmxhYmVsO1xcbi1cXHRHdGtXaWRnZXQgKmNvbnRlbnRfYXJlYTtcXG4gXFxuIFxcdGluZm9fYmFyID0gZ3RrX2luZm9fYmFyX25ldygpO1xcbi1cXHRndGtfd2lkZ2V0X3NldF9ub19zaG93X2FsbChpbmZvX2JhciwgVFJVRSk7XFxuK1xcdGd0a193aWRnZXRfc2V0X3Zpc2libGUoaW5mb19iYXIsIEZBTFNFKTtcXG4gXFxuIFxcdGxhYmVsID0gZ3RrX2xhYmVsX25ldyhcXFwiXFxcIik7XFxuLVxcdGd0a193aWRnZXRfc2hvdyhsYWJlbCk7XFxuK1xcdGd0a193aWRnZXRfc2V0X3Zpc2libGUobGFiZWwsIFRSVUUpO1xcbiBcXG4tXFx0Y29udGVudF9hcmVhID0gZ3RrX2luZm9fYmFyX2dldF9jb250ZW50X2FyZWEoR1RLX0lORk9fQkFSKGluZm9fYmFyKSk7XFxuLVxcdGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIoY29udGVudF9hcmVhKSwgbGFiZWwpO1xcbitcXHRndGtfaW5mb19iYXJfYWRkX2NoaWxkKEdUS19JTkZPX0JBUihpbmZvX2JhciksIGxhYmVsKTtcXG4gXFxuLVxcdGd0a19pbmZvX2Jhcl9hZGRfYnV0dG9uKEdUS19JTkZPX0JBUihpbmZvX2JhciksIEdUS19TVE9DS19PSyxcXG4rXFx0Z3RrX2luZm9fYmFyX2FkZF9idXR0b24oR1RLX0lORk9fQkFSKGluZm9fYmFyKSwgXFxcIl9PS1xcXCIsXFxuIFxcdFxcdFxcdFxcdEdUS19SRVNQT05TRV9PSyk7XFxuIFxcdGdfc2lnbmFsX2Nvbm5lY3QoaW5mb19iYXIsIFxcXCJyZXNwb25zZVxcXCIsXFxuLVxcdFxcdFxcdCBHX0NBTExCQUNLKGd0a193aWRnZXRfaGlkZSksIE5VTEwpO1xcbitcXHRcXHRcXHQgR19DQUxMQkFDSyhwZXJmX2d0a19faGlkZV93aWRnZXQpLCBOVUxMKTtcXG4gXFxuIFxcdHBnY3R4LVxcdTAwM2VpbmZvX2JhciA9IGluZm9fYmFyO1xcbiBcXHRwZ2N0eC1cXHUwMDNlbWVzc2FnZV9sYWJlbCA9IGxhYmVsO1xcbiBcXG4gXFx0cmV0dXJuIGluZm9fYmFyO1xcbiB9XFxuLSNlbmRpZlxcbiBcXG4gR3RrV2lkZ2V0ICpwZXJmX2d0a19fc2V0dXBfc3RhdHVzYmFyKHZvaWQpXFxuIHtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91aS9ndGsvZ3RrLmggYi90b29scy9wZXJmL3VpL2d0ay9ndGsuaFxcbmluZGV4IGEyYjQ5N2YwM2ZkNmUuLjZiMzdmZDk5NDNjOWQgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvZ3RrLmhcXG4rKysgYi90b29scy9wZXJmL3VpL2d0ay9ndGsuaFxcbkBAIC0xMywxMCArMTMsOCBAQCBzdHJ1Y3QgcGVyZl9ndGtfY29udGV4dCB7XFxuIFxcdEd0a1dpZGdldCAqbWFpbl93aW5kb3c7XFxuIFxcdEd0a1dpZGdldCAqbm90ZWJvb2s7XFxuIFxcbi0jaWZkZWYgSEFWRV9HVEtfSU5GT19CQVJfU1VQUE9SVFxcbiBcXHRHdGtXaWRnZXQgKmluZm9fYmFyO1xcbiBcXHRHdGtXaWRnZXQgKm1lc3NhZ2VfbGFiZWw7XFxuLSNlbmRpZlxcbiBcXHRHdGtXaWRnZXQgKnN0YXRiYXI7XFxuIFxcdGd1aW50IHN0YXRiYXJfY3R4X2lkO1xcbiB9O1xcbkBAIC0zOCwxOSArMzYsMTUgQEAgdm9pZCBwZXJmX2d0a19faW5pdF9oZWxwbGluZSh2b2lkKTtcXG4gdm9pZCBndGtfdWlfcHJvZ3Jlc3NfX2luaXQodm9pZCk7XFxuIHZvaWQgcGVyZl9ndGtfX2luaXRfaHBwKHZvaWQpO1xcbiBcXG4tdm9pZCBwZXJmX2d0a19fc2lnbmFsKGludCBzaWcpO1xcbit2b2lkIHBlcmZfZ3RrX19pbnN0YWxsX3F1aXRfc2lnbmFscyh2b2lkKTtcXG4rdm9pZCBwZXJmX2d0a19fZmF0YWxfc2lnbmFsKGludCBzaWcpO1xcbiB2b2lkIHBlcmZfZ3RrX19yZXNpemVfd2luZG93KEd0a1dpZGdldCAqd2luZG93KTtcXG4rdm9pZCBwZXJmX2d0a19fcnVuX21haW5fbG9vcChHdGtXaWRnZXQgKndpbmRvdyk7XFxuK3ZvaWQgcGVyZl9ndGtfX3F1aXRfbWFpbl9sb29wKHZvaWQpO1xcbit2b2lkIHBlcmZfZ3RrX19xdWl0X2Vycm9yX2RpYWxvZyh2b2lkKTtcXG4gY29uc3QgY2hhciAqcGVyZl9ndGtfX2dldF9wZXJjZW50X2NvbG9yKGRvdWJsZSBwZXJjZW50KTtcXG4gR3RrV2lkZ2V0ICpwZXJmX2d0a19fc2V0dXBfc3RhdHVzYmFyKHZvaWQpO1xcbi1cXG4tI2lmZGVmIEhBVkVfR1RLX0lORk9fQkFSX1NVUFBPUlRcXG4gR3RrV2lkZ2V0ICpwZXJmX2d0a19fc2V0dXBfaW5mb19iYXIodm9pZCk7XFxuLSNlbHNlXFxuLXN0YXRpYyBpbmxpbmUgR3RrV2lkZ2V0ICpwZXJmX2d0a19fc2V0dXBfaW5mb19iYXIodm9pZClcXG4te1xcbi1cXHRyZXR1cm4gTlVMTDtcXG4tfVxcbi0jZW5kaWZcXG4gXFxuIHN0cnVjdCBldnNlbDtcXG4gc3RydWN0IGV2bGlzdDtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91aS9ndGsvaGlzdHMuYyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2hpc3RzLmNcXG5pbmRleCBiYWUyMWYzMzZhZTZkLi43MTZkY2YwMmJkMGU4IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2hpc3RzLmNcXG4rKysgYi90b29scy9wZXJmL3VpL2d0ay9oaXN0cy5jXFxuQEAgLTgsNiArOCw4IEBAXFxuICNpbmNsdWRlIFxcXCIuLi9oZWxwbGluZS5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiLi4vc3RyaW5nMi5oXFxcIlxcbiAjaW5jbHVkZSBcXHUwMDNjc2lnbmFsLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NzdGRhcmcuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY3N0ZGlvLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NzdGRsaWIuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3N0cmluZy5oXFx1MDAzZVxcbiBcXG5AQCAtMzk1LDExICszOTcsOSBAQCBzdGF0aWMgdm9pZCBwZXJmX2d0a19fc2hvd19oaXN0cyhHdGtXaWRnZXQgKndpbmRvdywgc3RydWN0IGhpc3RzICpoaXN0cyxcXG4gXFx0XFx0fVxcbiBcXHR9XFxuIFxcbi1cXHRndGtfdHJlZV92aWV3X3NldF9ydWxlc19oaW50KEdUS19UUkVFX1ZJRVcodmlldyksIFRSVUUpO1xcbi1cXG4gXFx0Z19zaWduYWxfY29ubmVjdCh2aWV3LCBcXFwicm93LWFjdGl2YXRlZFxcXCIsXFxuIFxcdFxcdFxcdCBHX0NBTExCQUNLKG9uX3Jvd19hY3RpdmF0ZWQpLCBOVUxMKTtcXG4tXFx0Z3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUih3aW5kb3cpLCB2aWV3KTtcXG4rXFx0Z3RrX3Njcm9sbGVkX3dpbmRvd19zZXRfY2hpbGQoR1RLX1NDUk9MTEVEX1dJTkRPVyh3aW5kb3cpLCB2aWV3KTtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgcGVyZl9ndGtfX2FkZF9oaWVyYXJjaHlfZW50cmllcyhzdHJ1Y3QgaGlzdHMgKmhpc3RzLFxcbkBAIC01ODMsMTEgKzU4Myw5IEBAIHN0YXRpYyB2b2lkIHBlcmZfZ3RrX19zaG93X2hpZXJhcmNoeShHdGtXaWRnZXQgKndpbmRvdywgc3RydWN0IGhpc3RzICpoaXN0cyxcXG4gXFx0cGVyZl9ndGtfX2FkZF9oaWVyYXJjaHlfZW50cmllcyhoaXN0cywgXFx1MDAyNmhpc3RzLVxcdTAwM2VlbnRyaWVzLCBzdG9yZSxcXG4gXFx0XFx0XFx0XFx0XFx0TlVMTCwgXFx1MDAyNmhwcCwgbWluX3BjbnQpO1xcbiBcXG4tXFx0Z3RrX3RyZWVfdmlld19zZXRfcnVsZXNfaGludChHVEtfVFJFRV9WSUVXKHZpZXcpLCBUUlVFKTtcXG4tXFxuIFxcdGdfc2lnbmFsX2Nvbm5lY3QodmlldywgXFxcInJvdy1hY3RpdmF0ZWRcXFwiLFxcbiBcXHRcXHRcXHQgR19DQUxMQkFDSyhvbl9yb3dfYWN0aXZhdGVkKSwgTlVMTCk7XFxuLVxcdGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIod2luZG93KSwgdmlldyk7XFxuK1xcdGd0a19zY3JvbGxlZF93aW5kb3dfc2V0X2NoaWxkKEdUS19TQ1JPTExFRF9XSU5ET1cod2luZG93KSwgdmlldyk7XFxuIH1cXG4gXFxuIGludCBldmxpc3RfX2d0a19icm93c2VfaGlzdHMoc3RydWN0IGV2bGlzdCAqZXZsaXN0LCBjb25zdCBjaGFyICpoZWxwLFxcbkBAIC02MDAsMzYgKzU5OCwzMiBAQCBpbnQgZXZsaXN0X19ndGtfYnJvd3NlX2hpc3RzKHN0cnVjdCBldmxpc3QgKmV2bGlzdCwgY29uc3QgY2hhciAqaGVscCxcXG4gXFx0R3RrV2lkZ2V0ICpzdGF0YmFyO1xcbiBcXHRHdGtXaWRnZXQgKndpbmRvdztcXG4gXFxuLVxcdHNpZ25hbChTSUdTRUdWLCBwZXJmX2d0a19fc2lnbmFsKTtcXG4tXFx0c2lnbmFsKFNJR0ZQRSwgIHBlcmZfZ3RrX19zaWduYWwpO1xcbi1cXHRzaWduYWwoU0lHSU5ULCAgcGVyZl9ndGtfX3NpZ25hbCk7XFxuLVxcdHNpZ25hbChTSUdRVUlULCBwZXJmX2d0a19fc2lnbmFsKTtcXG4tXFx0c2lnbmFsKFNJR1RFUk0sIHBlcmZfZ3RrX19zaWduYWwpO1xcbitcXHRzaWduYWwoU0lHU0VHViwgcGVyZl9ndGtfX2ZhdGFsX3NpZ25hbCk7XFxuK1xcdHNpZ25hbChTSUdGUEUsICBwZXJmX2d0a19fZmF0YWxfc2lnbmFsKTtcXG4rXFx0cGVyZl9ndGtfX2luc3RhbGxfcXVpdF9zaWduYWxzKCk7XFxuIFxcbi1cXHR3aW5kb3cgPSBndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1RPUExFVkVMKTtcXG4rXFx0d2luZG93ID0gZ3RrX3dpbmRvd19uZXcoKTtcXG4gXFxuIFxcdGd0a193aW5kb3dfc2V0X3RpdGxlKEdUS19XSU5ET1cod2luZG93KSwgXFxcInBlcmYgcmVwb3J0XFxcIik7XFxuIFxcbi1cXHRnX3NpZ25hbF9jb25uZWN0KHdpbmRvdywgXFxcImRlbGV0ZV9ldmVudFxcXCIsIGd0a19tYWluX3F1aXQsIE5VTEwpO1xcbi1cXG4gXFx0cGdjdHggPSBwZXJmX2d0a19fYWN0aXZhdGVfY29udGV4dCh3aW5kb3cpO1xcbiBcXHRpZiAoIXBnY3R4KVxcbiBcXHRcXHRyZXR1cm4gLTE7XFxuIFxcbi1cXHR2Ym94ID0gZ3RrX3Zib3hfbmV3KEZBTFNFLCAwKTtcXG4rXFx0dmJveCA9IGd0a19ib3hfbmV3KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgMCk7XFxuIFxcbiBcXHRub3RlYm9vayA9IGd0a19ub3RlYm9va19uZXcoKTtcXG4gXFxuLVxcdGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBub3RlYm9vaywgVFJVRSwgVFJVRSwgMCk7XFxuK1xcdGd0a193aWRnZXRfc2V0X3ZleHBhbmQobm90ZWJvb2ssIFRSVUUpO1xcbitcXHRndGtfYm94X2FwcGVuZChHVEtfQk9YKHZib3gpLCBub3RlYm9vayk7XFxuIFxcbiBcXHRpbmZvX2JhciA9IHBlcmZfZ3RrX19zZXR1cF9pbmZvX2JhcigpO1xcbi1cXHRpZiAoaW5mb19iYXIpXFxuLVxcdFxcdGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBpbmZvX2JhciwgRkFMU0UsIEZBTFNFLCAwKTtcXG4rXFx0Z3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgaW5mb19iYXIpO1xcbiBcXG4gXFx0c3RhdGJhciA9IHBlcmZfZ3RrX19zZXR1cF9zdGF0dXNiYXIoKTtcXG4tXFx0Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIHN0YXRiYXIsIEZBTFNFLCBGQUxTRSwgMCk7XFxuK1xcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIHN0YXRiYXIpO1xcbiBcXG4tXFx0Z3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUih3aW5kb3cpLCB2Ym94KTtcXG4rXFx0Z3RrX3dpbmRvd19zZXRfY2hpbGQoR1RLX1dJTkRPVyh3aW5kb3cpLCB2Ym94KTtcXG4gXFxuIFxcdGV2bGlzdF9fZm9yX2VhY2hfZW50cnkoZXZsaXN0LCBwb3MpIHtcXG4gXFx0XFx0c3RydWN0IGhpc3RzICpoaXN0cyA9IGV2c2VsX19oaXN0cyhwb3MpO1xcbkBAIC02NDksNyArNjQzLDcgQEAgaW50IGV2bGlzdF9fZ3RrX2Jyb3dzZV9oaXN0cyhzdHJ1Y3QgZXZsaXN0ICpldmxpc3QsIGNvbnN0IGNoYXIgKmhlbHAsXFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0fVxcbiBcXG4tXFx0XFx0c2Nyb2xsZWRfd2luZG93ID0gZ3RrX3Njcm9sbGVkX3dpbmRvd19uZXcoTlVMTCwgTlVMTCk7XFxuK1xcdFxcdHNjcm9sbGVkX3dpbmRvdyA9IGd0a19zY3JvbGxlZF93aW5kb3dfbmV3KCk7XFxuIFxcbiBcXHRcXHRndGtfc2Nyb2xsZWRfd2luZG93X3NldF9wb2xpY3koR1RLX1NDUk9MTEVEX1dJTkRPVyhzY3JvbGxlZF93aW5kb3cpLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHRHVEtfUE9MSUNZX0FVVE9NQVRJQyxcXG5AQCAtNjY1LDE1ICs2NTksMTIgQEAgaW50IGV2bGlzdF9fZ3RrX2Jyb3dzZV9oaXN0cyhzdHJ1Y3QgZXZsaXN0ICpldmxpc3QsIGNvbnN0IGNoYXIgKmhlbHAsXFxuIFxcdFxcdGd0a19ub3RlYm9va19hcHBlbmRfcGFnZShHVEtfTk9URUJPT0sobm90ZWJvb2spLCBzY3JvbGxlZF93aW5kb3csIHRhYl9sYWJlbCk7XFxuIFxcdH1cXG4gXFxuLVxcdGd0a193aWRnZXRfc2hvd19hbGwod2luZG93KTtcXG4tXFxuIFxcdHBlcmZfZ3RrX19yZXNpemVfd2luZG93KHdpbmRvdyk7XFxuLVxcbi1cXHRndGtfd2luZG93X3NldF9wb3NpdGlvbihHVEtfV0lORE9XKHdpbmRvdyksIEdUS19XSU5fUE9TX0NFTlRFUik7XFxuK1xcdGd0a193aWRnZXRfc2V0X3Zpc2libGUod2luZG93LCBUUlVFKTtcXG4gXFxuIFxcdHVpX2hlbHBsaW5lX19wdXNoKGhlbHApO1xcbiBcXG4tXFx0Z3RrX21haW4oKTtcXG4rXFx0cGVyZl9ndGtfX3J1bl9tYWluX2xvb3Aod2luZG93KTtcXG4gXFxuIFxcdHBlcmZfZ3RrX19kZWFjdGl2YXRlX2NvbnRleHQoXFx1MDAyNnBnY3R4KTtcXG4gXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3Byb2dyZXNzLmMgYi90b29scy9wZXJmL3VpL2d0ay9wcm9ncmVzcy5jXFxuaW5kZXggZWVhNmZjZGU1MThhOC4uNzcwZjkyNTFiNTRiNyAxMDA2NDRcXG4tLS0gYS90b29scy9wZXJmL3VpL2d0ay9wcm9ncmVzcy5jXFxuKysrIGIvdG9vbHMvcGVyZi91aS9ndGsvcHJvZ3Jlc3MuY1xcbkBAIC0xLDQ5ICsxLDY1IEBAXFxuIC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICNpbmNsdWRlIFxcdTAwM2NpbnR0eXBlcy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjc3RkaW8uaFxcdTAwM2VcXG4gXFxuICNpbmNsdWRlIFxcXCJndGsuaFxcXCJcXG4gI2luY2x1ZGUgXFxcIi4uL3Byb2dyZXNzLmhcXFwiXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9jb21waWxlci5oXFx1MDAzZVxcbiBcXG4gc3RhdGljIEd0a1dpZGdldCAqZGlhbG9nO1xcbiBzdGF0aWMgR3RrV2lkZ2V0ICpwcm9ncmVzcztcXG4gXFxuK3N0YXRpYyB2b2lkIGd0a191aV9wcm9ncmVzc19fZGVzdHJveWVkKEd0a1dpZGdldCAqd2lkZ2V0IF9fbWF5YmVfdW51c2VkLFxcbitcXHRcXHRcXHRcXHRcXHRncG9pbnRlciBkYXRhIF9fbWF5YmVfdW51c2VkKVxcbit7XFxuK1xcdGRpYWxvZyA9IE5VTEw7XFxuK1xcdHByb2dyZXNzID0gTlVMTDtcXG4rfVxcbitcXG4gc3RhdGljIHZvaWQgZ3RrX3VpX3Byb2dyZXNzX191cGRhdGUoc3RydWN0IHVpX3Byb2dyZXNzICpwKVxcbiB7XFxuIFxcdGRvdWJsZSBmcmFjdGlvbiA9IHAtXFx1MDAzZXRvdGFsID8gMS4wICogcC1cXHUwMDNlY3VyciAvIHAtXFx1MDAzZXRvdGFsIDogMC4wO1xcbiBcXHRjaGFyIGJ1ZlsxMDI0XTtcXG4gXFxuIFxcdGlmIChkaWFsb2cgPT0gTlVMTCkge1xcbi1cXHRcXHRHdGtXaWRnZXQgKnZib3ggPSBndGtfdmJveF9uZXcoVFJVRSwgNSk7XFxuK1xcdFxcdEd0a1dpZGdldCAqdmJveCA9IGd0a19ib3hfbmV3KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgNSk7XFxuIFxcdFxcdEd0a1dpZGdldCAqbGFiZWwgPSBndGtfbGFiZWxfbmV3KHAtXFx1MDAzZXRpdGxlKTtcXG4gXFxuLVxcdFxcdGRpYWxvZyA9IGd0a193aW5kb3dfbmV3KEdUS19XSU5ET1dfVE9QTEVWRUwpO1xcbitcXHRcXHRkaWFsb2cgPSBndGtfd2luZG93X25ldygpO1xcbiBcXHRcXHRwcm9ncmVzcyA9IGd0a19wcm9ncmVzc19iYXJfbmV3KCk7XFxuIFxcbi1cXHRcXHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgbGFiZWwsIFRSVUUsIEZBTFNFLCAzKTtcXG4tXFx0XFx0Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIHByb2dyZXNzLCBUUlVFLCBUUlVFLCAzKTtcXG4rXFx0XFx0Z3RrX3dpZGdldF9zZXRfdmV4cGFuZChsYWJlbCwgVFJVRSk7XFxuK1xcdFxcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIGxhYmVsKTtcXG4rXFx0XFx0Z3RrX3dpZGdldF9zZXRfdmV4cGFuZChwcm9ncmVzcywgVFJVRSk7XFxuK1xcdFxcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIHByb2dyZXNzKTtcXG4rXFxuK1xcdFxcdGd0a193aW5kb3dfc2V0X2NoaWxkKEdUS19XSU5ET1coZGlhbG9nKSwgdmJveCk7XFxuIFxcbi1cXHRcXHRndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKGRpYWxvZyksIHZib3gpO1xcbitcXHRcXHRnX3NpZ25hbF9jb25uZWN0KGRpYWxvZywgXFxcImRlc3Ryb3lcXFwiLFxcbitcXHRcXHRcXHRcXHQgR19DQUxMQkFDSyhndGtfdWlfcHJvZ3Jlc3NfX2Rlc3Ryb3llZCksIE5VTEwpO1xcbiBcXG4gXFx0XFx0Z3RrX3dpbmRvd19zZXRfdGl0bGUoR1RLX1dJTkRPVyhkaWFsb2cpLCBcXFwicGVyZlxcXCIpO1xcbi1cXHRcXHRndGtfd2luZG93X3Jlc2l6ZShHVEtfV0lORE9XKGRpYWxvZyksIDMwMCwgODApO1xcbi1cXHRcXHRndGtfd2luZG93X3NldF9wb3NpdGlvbihHVEtfV0lORE9XKGRpYWxvZyksIEdUS19XSU5fUE9TX0NFTlRFUik7XFxuK1xcdFxcdGd0a193aW5kb3dfc2V0X2RlZmF1bHRfc2l6ZShHVEtfV0lORE9XKGRpYWxvZyksIDMwMCwgODApO1xcbiBcXG4tXFx0XFx0Z3RrX3dpZGdldF9zaG93X2FsbChkaWFsb2cpO1xcbitcXHRcXHRndGtfd2lkZ2V0X3NldF92aXNpYmxlKGRpYWxvZywgVFJVRSk7XFxuIFxcdH1cXG4gXFxuIFxcdGd0a19wcm9ncmVzc19iYXJfc2V0X2ZyYWN0aW9uKEdUS19QUk9HUkVTU19CQVIocHJvZ3Jlc3MpLCBmcmFjdGlvbik7XFxuIFxcdHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksIFxcXCIlXFxcIlBSSXU2NFxcXCIgLyAlXFxcIlBSSXU2NCwgcC1cXHUwMDNlY3VyciwgcC1cXHUwMDNldG90YWwpO1xcbiBcXHRndGtfcHJvZ3Jlc3NfYmFyX3NldF90ZXh0KEdUS19QUk9HUkVTU19CQVIocHJvZ3Jlc3MpLCBidWYpO1xcbiBcXG4tXFx0Lyogd2UgZGlkbid0IGNhbGwgZ3RrX21haW4geWV0LCBzbyBkbyBpdCBtYW51YWxseSAqL1xcbi1cXHR3aGlsZSAoZ3RrX2V2ZW50c19wZW5kaW5nKCkpXFxuLVxcdFxcdGd0a19tYWluX2l0ZXJhdGlvbigpO1xcbitcXHQvKiB3ZSBkaWRuJ3Qgc3RhcnQgYSBtYWluIGxvb3AgeWV0LCBzbyBwdW1wIGV2ZW50cyBtYW51YWxseSAqL1xcbitcXHR3aGlsZSAoZ19tYWluX2NvbnRleHRfcGVuZGluZyhOVUxMKSlcXG4rXFx0XFx0Z19tYWluX2NvbnRleHRfaXRlcmF0aW9uKE5VTEwsIEZBTFNFKTtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgZ3RrX3VpX3Byb2dyZXNzX19maW5pc2godm9pZClcXG4ge1xcbitcXHRpZiAoZGlhbG9nID09IE5VTEwpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuIFxcdC8qIHRoaXMgd2lsbCBhbHNvIGRlc3Ryb3kgYWxsIG9mIGl0cyBjaGlsZHJlbiAqL1xcbi1cXHRndGtfd2lkZ2V0X2Rlc3Ryb3koZGlhbG9nKTtcXG4rXFx0Z3RrX3dpbmRvd19kZXN0cm95KEdUS19XSU5ET1coZGlhbG9nKSk7XFxuIFxcbiBcXHRkaWFsb2cgPSBOVUxMO1xcbiB9XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3NldHVwLmMgYi90b29scy9wZXJmL3VpL2d0ay9zZXR1cC5jXFxuaW5kZXggZjVlZWU0ZDY2ODczOC4uOWI0NGYzNzE5NzQ3NyAxMDA2NDRcXG4tLS0gYS90b29scy9wZXJmL3VpL2d0ay9zZXR1cC5jXFxuKysrIGIvdG9vbHMvcGVyZi91aS9ndGsvc2V0dXAuY1xcbkBAIC0xMiw3ICsxMiw3IEBAIGludCBwZXJmX2d0a19faW5pdCh2b2lkKVxcbiBcXHRndGtfdWlfcHJvZ3Jlc3NfX2luaXQoKTtcXG4gXFx0cGVyZl9ndGtfX2luaXRfaHBwKCk7XFxuIFxcbi1cXHRyZXR1cm4gZ3RrX2luaXRfY2hlY2soTlVMTCwgTlVMTCkgPyAwIDogLTE7XFxuK1xcdHJldHVybiBndGtfaW5pdF9jaGVjaygpID8gMCA6IC0xO1xcbiB9XFxuIFxcbiB2b2lkIHBlcmZfZ3RrX19leGl0KGJvb2wgd2FpdF9mb3Jfb2sgX19tYXliZV91bnVzZWQpXFxuQEAgLTIwLDUgKzIwLDYgQEAgdm9pZCBwZXJmX2d0a19fZXhpdChib29sIHdhaXRfZm9yX29rIF9fbWF5YmVfdW51c2VkKVxcbiBcXHRpZiAoIXBlcmZfZ3RrX19pc19hY3RpdmVfY29udGV4dChwZ2N0eCkpXFxuIFxcdFxcdHJldHVybjtcXG4gXFx0cGVyZl9lcnJvcl9fdW5yZWdpc3RlcihcXHUwMDI2cGVyZl9ndGtfZW9wcyk7XFxuLVxcdGd0a19tYWluX3F1aXQoKTtcXG4rXFx0cGVyZl9ndGtfX3F1aXRfZXJyb3JfZGlhbG9nKCk7XFxuK1xcdHBlcmZfZ3RrX19xdWl0X21haW5fbG9vcCgpO1xcbiB9XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3V0aWwuYyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL3V0aWwuY1xcbmluZGV4IGM0N2Y1YzM4NzgzOGMuLjU4MjNmZjBkN2MyYTcgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvdXRpbC5jXFxuKysrIGIvdG9vbHMvcGVyZi91aS9ndGsvdXRpbC5jXFxuQEAgLTIsOCArMiwxMCBAQFxcbiAjaW5jbHVkZSBcXFwiLi4vdXRpbC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiZ3RrLmhcXFwiXFxuIFxcbisjaW5jbHVkZSBcXHUwMDNjc3RkYXJnLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NzdGRpby5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjc3RkbGliLmhcXHUwMDNlXFxuLSNpbmNsdWRlIFxcdTAwM2NzdHJpbmcuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NvbXBpbGVyLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC96YWxsb2MuaFxcdTAwM2VcXG4gXFxuIHN0cnVjdCBwZXJmX2d0a19jb250ZXh0ICpwZ2N0eDtcXG5AQCAtMjgsODYgKzMwLDEwMyBAQCBpbnQgcGVyZl9ndGtfX2RlYWN0aXZhdGVfY29udGV4dChzdHJ1Y3QgcGVyZl9ndGtfY29udGV4dCAqKmN0eClcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuKy8qXFxuKyAqIHBlcmZfZ3RrX19lcnJvcigpIGNhbiBiZSBjYWxsZWQgcmUtZW50cmFudGx5LCBzaW5jZSB0aGUgZGlhbG9nIGlzbid0XFxuKyAqIG1vZGFsIGFuZCBpdHMgbmVzdGVkIGxvb3Agc3RpbGwgcHVtcHMgZXZlbnRzIGZvciB0aGUgbWFpbiB3aW5kb3cuXFxuKyAqIFRyYWNrIGV2ZXJ5IGN1cnJlbnRseSBydW5uaW5nIGxvb3AgaW5zdGVhZCBvZiBhIHNpbmdsZSBwb2ludGVyLCBzbyBhXFxuKyAqIG5lc3RlZCBjYWxsIGNhbid0IGNsb2JiZXIgYW4gb3V0ZXIgY2FsbCdzIGxvb3AgYW5kIGxlYWsgaXQuXFxuKyAqL1xcbitzdGF0aWMgR1NMaXN0ICpwZXJmX2d0a19fZXJyb3JfbG9vcHM7XFxuK1xcbitzdGF0aWMgdm9pZCBwZXJmX2d0a19fcXVpdF9sb29wKGdwb2ludGVyIGRhdGEsIGdwb2ludGVyIHVzZXJfZGF0YSBfX21heWJlX3VudXNlZClcXG4re1xcbitcXHRnX21haW5fbG9vcF9xdWl0KGRhdGEpO1xcbit9XFxuK1xcbit2b2lkIHBlcmZfZ3RrX19xdWl0X2Vycm9yX2RpYWxvZyh2b2lkKVxcbit7XFxuK1xcdGdfc2xpc3RfZm9yZWFjaChwZXJmX2d0a19fZXJyb3JfbG9vcHMsIHBlcmZfZ3RrX19xdWl0X2xvb3AsIE5VTEwpO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBwZXJmX2d0a19fZGlhbG9nX3Jlc3BvbnNlKEd0a0RpYWxvZyAqZGlhbG9nLFxcbitcXHRcXHRcXHRcXHQgICAgICBnaW50IHJlc3BvbnNlX2lkIF9fbWF5YmVfdW51c2VkLFxcbitcXHRcXHRcXHRcXHQgICAgICBncG9pbnRlciBkYXRhIF9fbWF5YmVfdW51c2VkKVxcbit7XFxuK1xcdGd0a193aW5kb3dfZGVzdHJveShHVEtfV0lORE9XKGRpYWxvZykpO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IHBlcmZfZ3RrX19lcnJvcihjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncylcXG4ge1xcbiBcXHRjaGFyICptc2c7XFxuIFxcdEd0a1dpZGdldCAqZGlhbG9nO1xcbitcXHRHTWFpbkxvb3AgKmxvb3A7XFxuK1xcdHZhX2xpc3QgYXJnc19jb3B5O1xcbiBcXG4rXFx0dmFfY29weShhcmdzX2NvcHksIGFyZ3MpO1xcbiBcXHRpZiAoIXBlcmZfZ3RrX19pc19hY3RpdmVfY29udGV4dChwZ2N0eCkgfHxcXG4tXFx0ICAgIHZhc3ByaW50ZihcXHUwMDI2bXNnLCBmb3JtYXQsIGFyZ3MpIFxcdTAwM2MgMCkge1xcbitcXHQgICAgdmFzcHJpbnRmKFxcdTAwMjZtc2csIGZvcm1hdCwgYXJnc19jb3B5KSBcXHUwMDNjIDApIHtcXG4rXFx0XFx0dmFfZW5kKGFyZ3NfY29weSk7XFxuIFxcdFxcdGZwcmludGYoc3RkZXJyLCBcXFwiRXJyb3I6XFxcXG5cXFwiKTtcXG4gXFx0XFx0dmZwcmludGYoc3RkZXJyLCBmb3JtYXQsIGFyZ3MpO1xcbiBcXHRcXHRmcHJpbnRmKHN0ZGVyciwgXFxcIlxcXFxuXFxcIik7XFxuIFxcdFxcdHJldHVybiAtMTtcXG4gXFx0fVxcbitcXHR2YV9lbmQoYXJnc19jb3B5KTtcXG4gXFxuIFxcdGRpYWxvZyA9IGd0a19tZXNzYWdlX2RpYWxvZ19uZXdfd2l0aF9tYXJrdXAoR1RLX1dJTkRPVyhwZ2N0eC1cXHUwMDNlbWFpbl93aW5kb3cpLFxcbiBcXHRcXHRcXHRcXHRcXHRHVEtfRElBTE9HX0RFU1RST1lfV0lUSF9QQVJFTlQsXFxuIFxcdFxcdFxcdFxcdFxcdEdUS19NRVNTQUdFX0VSUk9SLFxcbiBcXHRcXHRcXHRcXHRcXHRHVEtfQlVUVE9OU19DTE9TRSxcXG4gXFx0XFx0XFx0XFx0XFx0XFxcIlxcdTAwM2NiXFx1MDAzZUVycm9yXFx1MDAzYy9iXFx1MDAzZVxcXFxuXFxcXG4lc1xcXCIsIG1zZyk7XFxuLVxcdGd0a19kaWFsb2dfcnVuKEdUS19ESUFMT0coZGlhbG9nKSk7XFxuIFxcbi1cXHRndGtfd2lkZ2V0X2Rlc3Ryb3koZGlhbG9nKTtcXG4rXFx0LypcXG4rXFx0ICogXFxcInJlc3BvbnNlXFxcIiBvbmx5IGZpcmVzIHdoZW4gYSBidXR0b24gaXMgY2xpY2tlZDsgREVTVFJPWV9XSVRIX1BBUkVOVFxcbitcXHQgKiBkZXN0cm95cyB0aGUgZGlhbG9nIGRpcmVjdGx5IHdpdGhvdXQgaXQuIFF1aXQgZnJvbSBcXFwiZGVzdHJveVxcXCJcXG4rXFx0ICogaW5zdGVhZCwgd2hpY2ggZmlyZXMgZWl0aGVyIHdheSwgc28gdGhlIG5lc3RlZCBsb29wIGJlbG93IGNhbid0XFxuK1xcdCAqIG91dGxpdmUgdGhlIGRpYWxvZyBhbmQgaGFuZy5cXG4rXFx0ICovXFxuK1xcdGxvb3AgPSBnX21haW5fbG9vcF9uZXcoTlVMTCwgRkFMU0UpO1xcbitcXHRwZXJmX2d0a19fZXJyb3JfbG9vcHMgPSBnX3NsaXN0X3ByZXBlbmQocGVyZl9ndGtfX2Vycm9yX2xvb3BzLCBsb29wKTtcXG4rXFx0Z19zaWduYWxfY29ubmVjdChkaWFsb2csIFxcXCJyZXNwb25zZVxcXCIsXFxuK1xcdFxcdFxcdCBHX0NBTExCQUNLKHBlcmZfZ3RrX19kaWFsb2dfcmVzcG9uc2UpLCBOVUxMKTtcXG4rXFx0Z19zaWduYWxfY29ubmVjdF9zd2FwcGVkKGRpYWxvZywgXFxcImRlc3Ryb3lcXFwiLFxcbitcXHRcXHRcXHRcXHQgR19DQUxMQkFDSyhnX21haW5fbG9vcF9xdWl0KSwgbG9vcCk7XFxuK1xcbitcXHRndGtfd2lkZ2V0X3NldF92aXNpYmxlKGRpYWxvZywgVFJVRSk7XFxuK1xcdGdfbWFpbl9sb29wX3J1bihsb29wKTtcXG4rXFx0cGVyZl9ndGtfX2Vycm9yX2xvb3BzID0gZ19zbGlzdF9yZW1vdmUocGVyZl9ndGtfX2Vycm9yX2xvb3BzLCBsb29wKTtcXG4rXFx0Z19tYWluX2xvb3BfdW5yZWYobG9vcCk7XFxuK1xcbiBcXHRmcmVlKG1zZyk7XFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbi0jaWZkZWYgSEFWRV9HVEtfSU5GT19CQVJfU1VQUE9SVFxcbiBzdGF0aWMgaW50IHBlcmZfZ3RrX193YXJuaW5nX2luZm9fYmFyKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKVxcbiB7XFxuIFxcdGNoYXIgKm1zZztcXG4rXFx0dmFfbGlzdCBhcmdzX2NvcHk7XFxuIFxcbitcXHR2YV9jb3B5KGFyZ3NfY29weSwgYXJncyk7XFxuIFxcdGlmICghcGVyZl9ndGtfX2lzX2FjdGl2ZV9jb250ZXh0KHBnY3R4KSB8fFxcbi1cXHQgICAgdmFzcHJpbnRmKFxcdTAwMjZtc2csIGZvcm1hdCwgYXJncykgXFx1MDAzYyAwKSB7XFxuK1xcdCAgICB2YXNwcmludGYoXFx1MDAyNm1zZywgZm9ybWF0LCBhcmdzX2NvcHkpIFxcdTAwM2MgMCkge1xcbitcXHRcXHR2YV9lbmQoYXJnc19jb3B5KTtcXG4gXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCJXYXJuaW5nOlxcXFxuXFxcIik7XFxuIFxcdFxcdHZmcHJpbnRmKHN0ZGVyciwgZm9ybWF0LCBhcmdzKTtcXG4gXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcbiBcXHRcXHRyZXR1cm4gLTE7XFxuIFxcdH1cXG4rXFx0dmFfZW5kKGFyZ3NfY29weSk7XFxuIFxcbiBcXHRndGtfbGFiZWxfc2V0X3RleHQoR1RLX0xBQkVMKHBnY3R4LVxcdTAwM2VtZXNzYWdlX2xhYmVsKSwgbXNnKTtcXG4gXFx0Z3RrX2luZm9fYmFyX3NldF9tZXNzYWdlX3R5cGUoR1RLX0lORk9fQkFSKHBnY3R4LVxcdTAwM2VpbmZvX2JhciksXFxuIFxcdFxcdFxcdFxcdCAgICAgIEdUS19NRVNTQUdFX1dBUk5JTkcpO1xcbi1cXHRndGtfd2lkZ2V0X3Nob3cocGdjdHgtXFx1MDAzZWluZm9fYmFyKTtcXG4tXFxuLVxcdGZyZWUobXNnKTtcXG4tXFx0cmV0dXJuIDA7XFxuLX1cXG4tI2Vsc2VcXG4tc3RhdGljIGludCBwZXJmX2d0a19fd2FybmluZ19zdGF0dXNiYXIoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpXFxuLXtcXG4tXFx0Y2hhciAqbXNnLCAqcDtcXG4tXFxuLVxcdGlmICghcGVyZl9ndGtfX2lzX2FjdGl2ZV9jb250ZXh0KHBnY3R4KSB8fFxcbi1cXHQgICAgdmFzcHJpbnRmKFxcdTAwMjZtc2csIGZvcm1hdCwgYXJncykgXFx1MDAzYyAwKSB7XFxuLVxcdFxcdGZwcmludGYoc3RkZXJyLCBcXFwiV2FybmluZzpcXFxcblxcXCIpO1xcbi1cXHRcXHR2ZnByaW50ZihzdGRlcnIsIGZvcm1hdCwgYXJncyk7XFxuLVxcdFxcdGZwcmludGYoc3RkZXJyLCBcXFwiXFxcXG5cXFwiKTtcXG4tXFx0XFx0cmV0dXJuIC0xO1xcbi1cXHR9XFxuLVxcbi1cXHRndGtfc3RhdHVzYmFyX3BvcChHVEtfU1RBVFVTQkFSKHBnY3R4LVxcdTAwM2VzdGF0YmFyKSxcXG4tXFx0XFx0XFx0ICBwZ2N0eC1cXHUwMDNlc3RhdGJhcl9jdHhfaWQpO1xcbi1cXG4tXFx0LyogT25seSBmaXJzdCBsaW5lIGNhbiBiZSBkaXNwbGF5ZWQgKi9cXG4tXFx0cCA9IHN0cmNocihtc2csICdcXFxcbicpO1xcbi1cXHRpZiAocClcXG4tXFx0XFx0KnAgPSAnXFxcXDAnO1xcbi1cXG4tXFx0Z3RrX3N0YXR1c2Jhcl9wdXNoKEdUS19TVEFUVVNCQVIocGdjdHgtXFx1MDAzZXN0YXRiYXIpLFxcbi1cXHRcXHRcXHQgICBwZ2N0eC1cXHUwMDNlc3RhdGJhcl9jdHhfaWQsIG1zZyk7XFxuK1xcdGd0a193aWRnZXRfc2V0X3Zpc2libGUocGdjdHgtXFx1MDAzZWluZm9fYmFyLCBUUlVFKTtcXG4gXFxuIFxcdGZyZWUobXNnKTtcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4tI2VuZGlmXFxuIFxcbiBzdHJ1Y3QgcGVyZl9lcnJvcl9vcHMgcGVyZl9ndGtfZW9wcyA9IHtcXG4gXFx0LmVycm9yXFx0XFx0PSBwZXJmX2d0a19fZXJyb3IsXFxuLSNpZmRlZiBIQVZFX0dUS19JTkZPX0JBUl9TVVBQT1JUXFxuIFxcdC53YXJuaW5nXFx0PSBwZXJmX2d0a19fd2FybmluZ19pbmZvX2JhcixcXG4tI2Vsc2VcXG4tXFx0Lndhcm5pbmdcXHQ9IHBlcmZfZ3RrX193YXJuaW5nX3N0YXR1c2JhcixcXG4tI2VuZGlmXFxuIH07XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvc2V0dXAuYyBiL3Rvb2xzL3BlcmYvdWkvc2V0dXAuY1xcbmluZGV4IGZmODAwMDQ3ZTY5N2YuLmQ4ODczNDZjN2E2MzIgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi91aS9zZXR1cC5jXFxuKysrIGIvdG9vbHMvcGVyZi91aS9zZXR1cC5jXFxuQEAgLTE0LDcgKzE0LDcgQEAgaW50IHVzZV9icm93c2VyID0gLTE7XFxuIFxcbiAjZGVmaW5lIFBFUkZfR1RLX0RTTyBcXFwibGlicGVyZi1ndGsuc29cXFwiXFxuIFxcbi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlRcXG4rI2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXFxuIFxcbiBzdGF0aWMgaW50IHNldHVwX2d0a19icm93c2VyKHZvaWQpXFxuIHtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL2Fubm90YXRlLmMgYi90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuY1xcbmluZGV4IGRmNzBlOTVhODQ3MDQuLjEyM2I2ZDVmY2VhNzggMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi91dGlsL2Fubm90YXRlLmNcXG4rKysgYi90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuY1xcbkBAIC0xNDUsNiArMTQ1LDE3IEBAIHN0YXRpYyBpbnQgYW5ub3RhdGVkX3NvdXJjZV9fYWxsb2NfaGlzdG9ncmFtcyhzdHJ1Y3QgYW5ub3RhdGVkX3NvdXJjZSAqc3JjLFxcbiBcXHRyZXR1cm4gc3JjLVxcdTAwM2VoaXN0b2dyYW1zID8gMCA6IC0xO1xcbiB9XFxuIFxcbitzdHJ1Y3Qgc3ltX2hpc3RfZW50cnkgKlxcbithbm5vdGF0ZWRfc291cmNlX19oaXN0X2VudHJ5KHN0cnVjdCBhbm5vdGF0ZWRfc291cmNlICpzcmMsIGNvbnN0IHN0cnVjdCBldnNlbCAqZXZzZWwsIHU2NCBvZmZzZXQpXFxuK3tcXG4rXFx0c3RydWN0IHN5bV9oaXN0X2VudHJ5ICplbnRyeTtcXG4rXFx0bG9uZyBrZXkgPSBvZmZzZXQgXFx1MDAzY1xcdTAwM2MgMTYgfCBldnNlbC1cXHUwMDNlY29yZS5pZHg7XFxuK1xcbitcXHRpZiAoIWhhc2htYXBfX2ZpbmQoc3JjLVxcdTAwM2VzYW1wbGVzLCBrZXksIFxcdTAwMjZlbnRyeSkpXFxuK1xcdFxcdHJldHVybiBOVUxMO1xcbitcXHRyZXR1cm4gZW50cnk7XFxuK31cXG4rXFxuIHZvaWQgc3ltYm9sX19hbm5vdGF0ZV96ZXJvX2hpc3RvZ3JhbXMoc3RydWN0IHN5bWJvbCAqc3ltKVxcbiB7XFxuIFxcdHN0cnVjdCBhbm5vdGF0aW9uICpub3RlcyA9IHN5bWJvbF9fYW5ub3RhdGlvbihzeW0pO1xcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuaCBiL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5oXFxuaW5kZXggZmEwOGQwOWI4MGY3Ni4uNDAwMzhhMzc3OWQ0NiAxMDA2NDRcXG4tLS0gYS90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuaFxcbisrKyBiL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5oXFxuQEAgLTQwNiwxNiArNDA2LDggQEAgc3RhdGljIGlubGluZSBzdHJ1Y3Qgc3ltX2hpc3QgKmFubm90YXRpb25fX2hpc3RvZ3JhbShzdHJ1Y3QgYW5ub3RhdGlvbiAqbm90ZXMsXFxuIFxcdHJldHVybiBhbm5vdGF0ZWRfc291cmNlX19oaXN0b2dyYW0obm90ZXMtXFx1MDAzZXNyYywgZXZzZWwpO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW5saW5lIHN0cnVjdCBzeW1faGlzdF9lbnRyeSAqXFxuLWFubm90YXRlZF9zb3VyY2VfX2hpc3RfZW50cnkoc3RydWN0IGFubm90YXRlZF9zb3VyY2UgKnNyYywgY29uc3Qgc3RydWN0IGV2c2VsICpldnNlbCwgdTY0IG9mZnNldClcXG4te1xcbi1cXHRzdHJ1Y3Qgc3ltX2hpc3RfZW50cnkgKmVudHJ5O1xcbi1cXHRsb25nIGtleSA9IG9mZnNldCBcXHUwMDNjXFx1MDAzYyAxNiB8IGV2c2VsLVxcdTAwM2Vjb3JlLmlkeDtcXG4tXFxuLVxcdGlmICghaGFzaG1hcF9fZmluZChzcmMtXFx1MDAzZXNhbXBsZXMsIGtleSwgXFx1MDAyNmVudHJ5KSlcXG4tXFx0XFx0cmV0dXJuIE5VTEw7XFxuLVxcdHJldHVybiBlbnRyeTtcXG4tfVxcbitzdHJ1Y3Qgc3ltX2hpc3RfZW50cnkgKlxcbithbm5vdGF0ZWRfc291cmNlX19oaXN0X2VudHJ5KHN0cnVjdCBhbm5vdGF0ZWRfc291cmNlICpzcmMsIGNvbnN0IHN0cnVjdCBldnNlbCAqZXZzZWwsIHU2NCBvZmZzZXQpO1xcbiBcXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgYW5ub3RhdGlvbiAqc3ltYm9sX19hbm5vdGF0aW9uKHN0cnVjdCBzeW1ib2wgKnN5bSlcXG4ge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwMjoxNzoyOS42ODAxMDMyNzVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjY4NzA5MzM1OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiQWxsIGNoYW5nZXMgaW4gdGhpcyBwYXRjaCBzZXJpZXMgYXJlIHN0cmljdGx5IGNvbmZpbmVkIHRvIHVzZXItc3BhY2UgdG9vbGluZyB1bmRlciBgdG9vbHMvYCAoc3BlY2lmaWNhbGx5IGB0b29scy9wZXJmYCBhbmQgYHRvb2xzL2J1aWxkYCksIHdoaWNoIGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAoYHZtbGludXhgKSBvciBrZXJuZWwgbW9kdWxlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgM2NmOGYzNDhhNTI1YTk1N2M4Nzg1NjhkNDZkODAwY2EwNmRiMWE5M1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gU2VwIDcgMDI6MTc6MjYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy9idWlsZC9NYWtlZmlsZS5mZWF0dXJlIGIvdG9vbHMvYnVpbGQvTWFrZWZpbGUuZmVhdHVyZVxuaW5kZXggOTllYjBlYTA5NTM3NS4uNGVjOTVjMzVhNWMxOSAxMDA2NDRcbi0tLSBhL3Rvb2xzL2J1aWxkL01ha2VmaWxlLmZlYXR1cmVcbisrKyBiL3Rvb2xzL2J1aWxkL01ha2VmaWxlLmZlYXR1cmVcbkBAIC0xMTMsOCArMTEzLDcgQEAgRkVBVFVSRV9URVNUU19FWFRSQSA6PSAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgY29tcGlsZS14MzIgICAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgY3BsdXMtZGVtYW5nbGUgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgY3hhLWRlbWFuZ2xlICAgICAgICAgICAgICAgICAgIFxcXG4tICAgICAgICAgZ3RrMiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4tICAgICAgICAgZ3RrMi1pbmZvYmFyICAgICAgICAgICAgICAgICAgIFxcXG4rICAgICAgICAgZ3RrNCAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgaGVsbG8gICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgYmFiZWx0cmFjZTItY3RmLXdyaXRlciAgICAgICAgIFxcXG4gICAgICAgICAgbGliY2Fwc3RvbmUgICAgICAgICAgICAgICAgICAgIFxcXG5AQCAtMTQzLDYgKzE0Miw3IEBAIGVuZGlmXG4gRkVBVFVSRV9ESVNQTEFZID89ICAgICAgICAgICAgICBcXFxuICAgICAgICAgIGxpYmR3ICAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICBnbGliYyAgICAgICAgICAgICAgICAgIFxcXG4rICAgICAgICAgZ3RrNCAgICAgICAgICAgICAgICAgICBcXFxuICAgICAgICAgIGxpYmVsZiAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICBsaWJudW1hICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgbnVtYV9udW1fcG9zc2libGVfY3B1cyBcXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvTWFrZWZpbGUgYi90b29scy9idWlsZC9mZWF0dXJlL01ha2VmaWxlXG5pbmRleCA3ZDE2NTAxODExNmE1Li4wMWM0OGU2ZWYwMjFkIDEwMDY0NFxuLS0tIGEvdG9vbHMvYnVpbGQvZmVhdHVyZS9NYWtlZmlsZVxuKysrIGIvdG9vbHMvYnVpbGQvZmVhdHVyZS9NYWtlZmlsZVxuQEAgLTExLDggKzExLDcgQEAgRklMRVM9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICB0ZXN0LWV2ZW50ZmQuYmluICAgICAgICAgICAgICAgICAgICAgICBcXFxuICAgICAgICAgIHRlc3QtZm9ydGlmeS1zb3VyY2UuYmluICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgdGVzdC1nbGliYy5iaW4gICAgICAgICAgICAgICAgICAgICAgICAgXFxcbi0gICAgICAgICB0ZXN0LWd0azIuYmluICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxuLSAgICAgICAgIHRlc3QtZ3RrMi1pbmZvYmFyLmJpbiAgICAgICAgICAgICAgICAgIFxcXG4rICAgICAgICAgdGVzdC1ndGs0LmJpbiAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICB0ZXN0LWhlbGxvLmJpbiAgICAgICAgICAgICAgICAgICAgICAgICBcXFxuICAgICAgICAgIHRlc3QtbGliYmZkLmJpbiAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4gXHQgdGVzdC1saWJiZmQtdGhyZWFkc2FmZS5iaW4gICAgICBcdFxcXG5AQCAtMjQwLDExICsyMzksOCBAQCAkKE9VVFBVVCl0ZXN0LWxpYmNwdXBvd2VyLmJpbjpcbiAkKE9VVFBVVCl0ZXN0LWxpYnRyYWNlZnMuYmluOlxuIFx0ICQoQlVJTEQpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWNmbGFncyBsaWJ0cmFjZWZzIDJcdTAwM2UvZGV2L251bGwpIC1sdHJhY2Vmc1xuIFxuLSQoT1VUUFVUKXRlc3QtZ3RrMi5iaW46XG4tXHQkKEJVSUxEKSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIC0tY2ZsYWdzIGd0aystMi4wIDJcdTAwM2UvZGV2L251bGwpIC1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnNcbi1cbi0kKE9VVFBVVCl0ZXN0LWd0azItaW5mb2Jhci5iaW46XG4tXHQkKEJVSUxEKSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIC0tY2ZsYWdzIGd0aystMi4wIDJcdTAwM2UvZGV2L251bGwpXG4rJChPVVRQVVQpdGVzdC1ndGs0LmJpbjpcbitcdCQoQlVJTEQpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgLS1jZmxhZ3MgZ3RrNCAyXHUwMDNlL2Rldi9udWxsKVxuIFxuIGdyZXAtbGlicyAgPSAkKGZpbHRlciAtbCUsJCgxKSlcbiBzdHJpcC1saWJzID0gJChmaWx0ZXItb3V0IC1sJSwkKDEpKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGsyLWluZm9iYXIuYyBiL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGsyLWluZm9iYXIuY1xuZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCBiMWI3MTZkZDU3MzMwLi4wMDAwMDAwMDAwMDAwXG4tLS0gYS90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi1pbmZvYmFyLmNcbisrKyAvZGV2L251bGxcbkBAIC0xLDEyICswLDAgQEBcbi0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuLSNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCBcIi1Xc3RyaWN0LXByb3RvdHlwZXNcIlxuLSNpbmNsdWRlIFx1MDAzY2d0ay9ndGsuaFx1MDAzZVxuLSNwcmFnbWEgR0NDIGRpYWdub3N0aWMgZXJyb3IgXCItV3N0cmljdC1wcm90b3R5cGVzXCJcbi1cbi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuLXtcbi1cdGd0a19pbml0KFx1MDAyNmFyZ2MsIFx1MDAyNmFyZ3YpO1xuLVx0Z3RrX2luZm9fYmFyX25ldygpO1xuLVxuLVx0cmV0dXJuIDA7XG4tfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGsyLmMgYi90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrNC5jXG5zaW1pbGFyaXR5IGluZGV4IDc2JVxucmVuYW1lIGZyb20gdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azIuY1xucmVuYW1lIHRvIHRvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGs0LmNcbmluZGV4IDJhYWY0YmZjMjA1NTYuLmI5NTIwZTc0MDhiOTkgMTAwNjQ0XG4tLS0gYS90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi5jXG4rKysgYi90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrNC5jXG5AQCAtMyw5ICszLDkgQEBcbiAjaW5jbHVkZSBcdTAwM2NndGsvZ3RrLmhcdTAwM2VcbiAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGVycm9yIFwiLVdzdHJpY3QtcHJvdG90eXBlc1wiXG4gXG4taW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbitpbnQgbWFpbih2b2lkKVxuIHtcbi1cdGd0a19pbml0KFx1MDAyNmFyZ2MsIFx1MDAyNmFyZ3YpO1xuK1x0Z3RrX2luaXQoKTtcbiBcbiAgICAgICAgIHJldHVybiAwO1xuIH1cbmRpZmYgLS1naXQgYS90b29scy9wZXJmL0RvY3VtZW50YXRpb24vcGVyZi1yZXBvcnQudHh0IGIvdG9vbHMvcGVyZi9Eb2N1bWVudGF0aW9uL3BlcmYtcmVwb3J0LnR4dFxuaW5kZXggMjJmODdlYWEzMjc5Ni4uN2FmOWIzZjgxYzA2NSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvRG9jdW1lbnRhdGlvbi9wZXJmLXJlcG9ydC50eHRcbisrKyBiL3Rvb2xzL3BlcmYvRG9jdW1lbnRhdGlvbi9wZXJmLXJlcG9ydC50eHRcbkBAIC0zNTEsNyArMzUxLDcgQEAgT1BUSU9OU1xuIFx0cmVxdWlyZXMgYSB0dHksIGlmIG9uZSBpcyBub3QgcHJlc2VudCwgYXMgd2hlbiBwaXBpbmcgdG8gb3RoZXJcbiBcdGNvbW1hbmRzLCB0aGUgc3RkaW8gaW50ZXJmYWNlIGlzIHVzZWQuXG4gXG4tLS1ndGs6OiBVc2UgdGhlIEdUSzIgaW50ZXJmYWNlLlxuKy0tZ3RrOjogVXNlIHRoZSBHVEs0IGludGVyZmFjZS5cbiBcbiAtazo6XG4gLS12bWxpbnV4PVx1MDAzY2ZpbGVcdTAwM2U6OlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvTWFrZWZpbGUgYi90b29scy9wZXJmL01ha2VmaWxlXG5pbmRleCA1YjcxMzgzN2VlZGU3Li41NjAxNDEwNjQ3OWEzIDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi9NYWtlZmlsZVxuKysrIGIvdG9vbHMvcGVyZi9NYWtlZmlsZVxuQEAgLTEwNiw3ICsxMDYsNyBAQCBjbGVhbjpcbiAjIG1ha2UgLUMgdG9vbHMvcGVyZiAtZiB0ZXN0cy9tYWtlXG4gI1xuIGJ1aWxkLXRlc3Q6XG4tXHRAJChNQUtFKSBTSFVGPTEgLWYgdGVzdHMvbWFrZSBSRVVTRV9GRUFUVVJFU19EVU1QPTEgTUs9TWFrZWZpbGUgU0VUX1BBUkFMTEVMPTEgLS1uby1wcmludC1kaXJlY3RvcnkgdGFycGtnIG1ha2Vfc3RhdGljIG1ha2Vfd2l0aF9ndGsyIG91dFxuK1x0QCQoTUFLRSkgU0hVRj0xIC1mIHRlc3RzL21ha2UgUkVVU0VfRkVBVFVSRVNfRFVNUD0xIE1LPU1ha2VmaWxlIFNFVF9QQVJBTExFTD0xIC0tbm8tcHJpbnQtZGlyZWN0b3J5IHRhcnBrZyBtYWtlX3N0YXRpYyBtYWtlX3dpdGhfZ3RrNCBvdXRcbiBcbiBidWlsZC10ZXN0LXRhcmJhbGw6XG4gXHRAJChNQUtFKSAtZiB0ZXN0cy9tYWtlIFJFVVNFX0ZFQVRVUkVTX0RVTVA9MSBNSz1NYWtlZmlsZSBTRVRfUEFSQUxMRUw9MSAtLW5vLXByaW50LWRpcmVjdG9yeSBvdXRcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL01ha2VmaWxlLmNvbmZpZyBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUuY29uZmlnXG5pbmRleCA0ZDU5OTNkYTlmOTQ1Li40ZWU3MzkzYTM5ZjkxIDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi9NYWtlZmlsZS5jb25maWdcbisrKyBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUuY29uZmlnXG5AQCAtNzc0LDIxICs3NzQsMjIgQEAgaWZuZGVmIE5PX1NMQU5HXG4gICBlbmRpZlxuIGVuZGlmXG4gXG4taWZkZWYgR1RLMlxuLSAgRkxBR1NfR1RLMj0kKENGTEFHUykgJChMREZMQUdTKSAkKEVYVExJQlMpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgLS1jZmxhZ3MgZ3RrKy0yLjAgMlx1MDAzZS9kZXYvbnVsbClcbi0gICQoY2FsbCBmZWF0dXJlX2NoZWNrLGd0azIpXG4tICBpZm5lcSAoJChmZWF0dXJlLWd0azIpLCAxKVxuLSAgICAkKHdhcm5pbmcgR1RLMiBub3QgZm91bmQsIGRpc2FibGVzIEdUSzIgc3VwcG9ydC4gUGxlYXNlIGluc3RhbGwgZ3RrMi1kZXZlbCBvciBsaWJndGsyLjAtZGV2KVxuLSAgICBOT19HVEsyIDo9IDFcbitpZmRlZiBHVEs0XG4rICBGTEFHU19HVEs0PSQoQ0ZMQUdTKSAkKExERkxBR1MpICQoRVhUTElCUykgJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyAtLWNmbGFncyBndGs0IDJcdTAwM2UvZGV2L251bGwpXG4rICAkKGNhbGwgZmVhdHVyZV9jaGVjayxndGs0KVxuKyAgaWZuZXEgKCQoZmVhdHVyZS1ndGs0KSwgMSlcbisgICAgJCh3YXJuaW5nIEdUSzQgbm90IGZvdW5kLCBkaXNhYmxlcyBHVEs0IHN1cHBvcnQuIFBsZWFzZSBpbnN0YWxsIGd0azQtZGV2ZWwgb3IgbGliZ3RrLTQtZGV2KVxuKyAgICBOT19HVEs0IDo9IDFcbiAgIGVsc2Vcbi0gICAgJChjYWxsIGZlYXR1cmVfY2hlY2ssZ3RrMi1pbmZvYmFyKVxuLSAgICBpZmVxICgkKGZlYXR1cmUtZ3RrMi1pbmZvYmFyKSwgMSlcbi0gICAgICBHVEtfQ0ZMQUdTIDo9IC1ESEFWRV9HVEtfSU5GT19CQVJfU1VQUE9SVFxuLSAgICBlbmRpZlxuLSAgICBDRkxBR1MgKz0gLURIQVZFX0dUSzJfU1VQUE9SVFxuLSAgICBHVEtfQ0ZMQUdTICs9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWNmbGFncyBndGsrLTIuMCAyXHUwMDNlL2Rldi9udWxsKVxuLSAgICBHVEtfTElCUyA6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIGd0aystMi4wIDJcdTAwM2UvZGV2L251bGwpXG4rICAgIENGTEFHUyArPSAtREhBVkVfR1RLNF9TVVBQT1JUXG4rICAgIEdUS19DRkxBR1MgKz0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tY2ZsYWdzIGd0azQgMlx1MDAzZS9kZXYvbnVsbClcbisgICAgR1RLX0xJQlMgOj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyBndGs0IDJcdTAwM2UvZGV2L251bGwpXG4gICAgIEVYVExJQlMgKz0gLWxkbFxuKyAgICAjIGxpYnBlcmYtZ3RrLnNvIGlzIGRsb3BlbigpZWQgYXQgcnVudGltZSBhbmQgY2FsbHMgYmFjayBpbnRvXG4rICAgICMgc3ltYm9scyBkZWZpbmVkIGluIHRoZSBwZXJmIGJpbmFyeSBpdHNlbGYgKGNhbGxjaGFpbl9wYXJhbSxcbisgICAgIyBzeW1ib2xfY29uZiwgZXZzZWxfX25hbWUsIC4uLik6IHBlcmYgbmVlZHMgdG8gZXhwb3J0IHRob3NlXG4rICAgICMgZHluYW1pY2FsbHkgZm9yIHRoZSBwbHVnaW4gdG8gcmVzb2x2ZSB0aGVtLlxuKyAgICBMREZMQUdTICs9IC1yZHluYW1pY1xuICAgZW5kaWZcbiBlbmRpZlxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvTWFrZWZpbGUucGVyZiBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUucGVyZlxuaW5kZXggMjljZmQ0NGM0MjdmMy4uMjQzOGI0MGVhYWVjMSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvTWFrZWZpbGUucGVyZlxuKysrIGIvdG9vbHMvcGVyZi9NYWtlZmlsZS5wZXJmXG5AQCAtNDksNyArNDksNyBAQCBpbmNsdWRlIC4uL3NjcmlwdHMvdXRpbGl0aWVzLm1ha1xuICNcbiAjIERlZmluZSBOT19TTEFORyBpZiB5b3UgZG8gbm90IHdhbnQgVFVJIHN1cHBvcnQuXG4gI1xuLSMgRGVmaW5lIEdUSzIgaWYgeW91IHdhbnQgR1RLKyBHVUkgc3VwcG9ydC5cbisjIERlZmluZSBHVEs0IGlmIHlvdSB3YW50IEdUSysgR1VJIHN1cHBvcnQuXG4gI1xuICMgRGVmaW5lIE5PX0RFTUFOR0xFIGlmIHlvdSBkbyBub3Qgd2FudCBDKysgc3ltYm9sIGRlbWFuZ2xpbmcuXG4gI1xuQEAgLTQ3Myw3ICs0NzMsNyBAQCBpZm5lcSAoJChPVVRQVVQpLClcbiAgIENGTEFHUyArPSAtSSQoT1VUUFVUKVxuIGVuZGlmXG4gXG4taWZkZWYgR1RLMlxuK2lmZGVmIEdUSzRcbiAgIEFMTF9QUk9HUkFNUyArPSAkKE9VVFBVVClsaWJwZXJmLWd0ay5zb1xuICAgR1RLX0lOIDo9ICQoT1VUUFVUKWd0ay1pbi5vXG4gZW5kaWZcbkBAIC04MTEsNyArODExLDcgQEAgY2hlY2s6IHByZXBhcmVcbiBcbiAjIyMgSW5zdGFsbGF0aW9uIHJ1bGVzXG4gXG4taWZkZWYgR1RLMlxuK2lmZGVmIEdUSzRcbiBpbnN0YWxsLWd0azogJChPVVRQVVQpbGlicGVyZi1ndGsuc29cbiBcdCQoY2FsbCBRVUlFVF9JTlNUQUxMLCAnR1RLIFVJJykgXFxcbiBcdFx0JChJTlNUQUxMKSAtZCAtbSA3NTUgJyQoREVTVERJUl9TUSkkKGxpYmRpcl9TUSknOyBcXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1hbm5vdGF0ZS5jIGIvdG9vbHMvcGVyZi9idWlsdGluLWFubm90YXRlLmNcbmluZGV4IDY5Y2I3MmIyMDgyYTYuLjE1MTYzZTA4MWE4Y2UgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL2J1aWx0aW4tYW5ub3RhdGUuY1xuKysrIGIvdG9vbHMvcGVyZi9idWlsdGluLWFubm90YXRlLmNcbkBAIC01Miw3ICs1Miw3IEBAIHN0cnVjdCBwZXJmX2Fubm90YXRlIHtcbiBcdGJvb2xcdCAgIHVzZV90dWk7XG4gI2VuZGlmXG4gXHRib29sXHQgICB1c2Vfc3RkaW8sIHVzZV9zdGRpbzI7XG4tI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUXG4rI2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXG4gXHRib29sXHQgICB1c2VfZ3RrO1xuICNlbmRpZlxuIFx0Ym9vbFx0ICAgc2tpcF9taXNzaW5nO1xuQEAgLTcxMiw3ICs3MTIsNyBAQCBpbnQgY21kX2Fubm90YXRlKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndilcbiBcdE9QVF9CT09MRUFOKCdxJywgXCJxdWlldFwiLCBcdTAwMjZxdWlldCwgXCJkbyBub3cgc2hvdyBhbnkgd2FybmluZ3Mgb3IgbWVzc2FnZXNcIiksXG4gXHRPUFRfQk9PTEVBTignRCcsIFwiZHVtcC1yYXctdHJhY2VcIiwgXHUwMDI2ZHVtcF90cmFjZSxcbiBcdFx0ICAgIFwiZHVtcCByYXcgdHJhY2UgaW4gQVNDSUlcIiksXG4tI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUXG4rI2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXG4gXHRPUFRfQk9PTEVBTigwLCBcImd0a1wiLCBcdTAwMjZhbm5vdGF0ZS51c2VfZ3RrLCBcIlVzZSB0aGUgR1RLIGludGVyZmFjZVwiKSxcbiAjZW5kaWZcbiAjaWZkZWYgSEFWRV9TTEFOR19TVVBQT1JUXG5AQCAtODI4LDcgKzgyOCw3IEBAIGludCBjbWRfYW5ub3RhdGUoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KVxuIFx0aWYgKGFubm90YXRlX2NoZWNrX2FyZ3MoKSBcdTAwM2MgMClcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4tI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUXG4rI2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXG4gXHRpZiAoc3ltYm9sX2NvbmYuc2hvd19ucl9zYW1wbGVzIFx1MDAyNlx1MDAyNiBhbm5vdGF0ZS51c2VfZ3RrKSB7XG4gXHRcdHByX2VycihcIi0tc2hvdy1uci1zYW1wbGVzIGlzIG5vdCBhdmFpbGFibGUgaW4gLS1ndGsgbW9kZSBhdCB0aGlzIHRpbWVcXG5cIik7XG4gXHRcdHJldHVybiByZXQ7XG5AQCAtODk4LDcgKzg5OCw3IEBAIGludCBjbWRfYW5ub3RhdGUoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KVxuIFx0ZWxzZSBpZiAoYW5ub3RhdGUudXNlX3R1aSlcbiBcdFx0dXNlX2Jyb3dzZXIgPSAxO1xuICNlbmRpZlxuLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVFxuKyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVFxuIFx0ZWxzZSBpZiAoYW5ub3RhdGUudXNlX2d0aylcbiBcdFx0dXNlX2Jyb3dzZXIgPSAyO1xuICNlbmRpZlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1yZXBvcnQuYyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1yZXBvcnQuY1xuaW5kZXggNjBkMWYxNjY2MjllMC4uZDE0Mzg0YzU4NDY2MSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1yZXBvcnQuY1xuKysrIGIvdG9vbHMvcGVyZi9idWlsdGluLXJlcG9ydC5jXG5AQCAtODIsNyArODIsNyBAQCBzdHJ1Y3QgcmVwb3J0IHtcbiAjaWZkZWYgSEFWRV9TTEFOR19TVVBQT1JUXG4gXHRib29sXHRcdFx0dXNlX3R1aTtcbiAjZW5kaWZcbi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlRcbisjaWZkZWYgSEFWRV9HVEs0X1NVUFBPUlRcbiBcdGJvb2xcdFx0XHR1c2VfZ3RrO1xuICNlbmRpZlxuIFx0Ym9vbFx0XHRcdHVzZV9zdGRpbztcbkBAIC0xMzU5LDggKzEzNTksOCBAQCBpbnQgY21kX3JlcG9ydChpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpXG4gI2lmZGVmIEhBVkVfU0xBTkdfU1VQUE9SVFxuIFx0T1BUX0JPT0xFQU4oMCwgXCJ0dWlcIiwgXHUwMDI2cmVwb3J0LnVzZV90dWksIFwiVXNlIHRoZSBUVUkgaW50ZXJmYWNlXCIpLFxuICNlbmRpZlxuLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVFxuLVx0T1BUX0JPT0xFQU4oMCwgXCJndGtcIiwgXHUwMDI2cmVwb3J0LnVzZV9ndGssIFwiVXNlIHRoZSBHVEsyIGludGVyZmFjZVwiKSxcbisjaWZkZWYgSEFWRV9HVEs0X1NVUFBPUlRcbitcdE9QVF9CT09MRUFOKDAsIFwiZ3RrXCIsIFx1MDAyNnJlcG9ydC51c2VfZ3RrLCBcIlVzZSB0aGUgR1RLNCBpbnRlcmZhY2VcIiksXG4gI2VuZGlmXG4gXHRPUFRfQk9PTEVBTigwLCBcInN0ZGlvXCIsIFx1MDAyNnJlcG9ydC51c2Vfc3RkaW8sXG4gXHRcdCAgICBcIlVzZSB0aGUgc3RkaW8gaW50ZXJmYWNlXCIpLFxuQEAgLTE3MTAsNyArMTcxMCw3IEBAIGludCBjbWRfcmVwb3J0KGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndilcbiBcdGVsc2UgaWYgKHJlcG9ydC51c2VfdHVpKVxuIFx0XHR1c2VfYnJvd3NlciA9IDE7XG4gI2VuZGlmXG4tI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUXG4rI2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXG4gXHRlbHNlIGlmIChyZXBvcnQudXNlX2d0aylcbiBcdFx0dXNlX2Jyb3dzZXIgPSAyO1xuICNlbmRpZlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvc2NyaXB0cy9pbnN0YWxsLWJ1aWxkLWRlcHMuc2ggYi90b29scy9wZXJmL3NjcmlwdHMvaW5zdGFsbC1idWlsZC1kZXBzLnNoXG5pbmRleCBkMDAzZTdmYWIyYmU4Li5hNjAxYTUyNjBjMTdlIDEwMDc1NVxuLS0tIGEvdG9vbHMvcGVyZi9zY3JpcHRzL2luc3RhbGwtYnVpbGQtZGVwcy5zaFxuKysrIGIvdG9vbHMvcGVyZi9zY3JpcHRzL2luc3RhbGwtYnVpbGQtZGVwcy5zaFxuQEAgLTE5OSw4ICsxOTksOCBAQCBmZWRvcmFfcGtnX2ZvcigpIHtcbiBcdCMgb3B0LWluIGZlYXR1cmVzLCB3aGljaCBhIGRlZmF1bHQgYnVpbGQgZG9lcyBub3QgZW5hYmxlOiB0aGUgbGliYmZkXG4gXHQjIGRpc2Fzc2VtYmxlciBmYW1pbHkgKGxpYmJmZCwgbGliYmZkLXRocmVhZHNhZmUsIGxpYmJmZC1saWJlcnR5LFxuIFx0IyBkaXNhc3NlbWJsZXItKiwgY3BsdXMtZGVtYW5nbGUpLCBvbmx5IGxpbmtlZCBvbiBCVUlMRF9OT05ESVNUUk9cbi1cdCMgYnVpbGRzIGFuZCBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGNhcHN0b25lLCBHVEsyLCBMSUJQRVJMIGFuZFxuLVx0IyBMSUJVTldJTkQgc3VwcG9ydCAoaWZkZWYgR1RLMiAvIGlmZGVmIExJQlBFUkwgLyBMSUJVTldJTkQ9MSksXG4rXHQjIGJ1aWxkcyBhbmQgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBjYXBzdG9uZSwgR1RLNCwgTElCUEVSTCBhbmRcbitcdCMgTElCVU5XSU5EIHN1cHBvcnQgKGlmZGVmIEdUSzQgLyBpZmRlZiBMSUJQRVJMIC8gTElCVU5XSU5EPTEpLFxuIFx0IyBhbmQgQ29yZVNpZ2h0IChpZmRlZiBDT1JFU0lHSFQpLCBhcmUgZGVsaWJlcmF0ZWx5IG5vdCBtYXBwZWQuXG4gXHQjIGxpYmFpbyBpcyBub3QgbWFwcGVkIGVpdGhlcjogaXRzXG4gXHQjIHRlc3QgdXNlcyB0aGUgUE9TSVggQUlPIEFQSSAoYWlvLmgsIGFpb18qLCAtbHJ0KSwgcHJvdmlkZWQgYnlcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3Rlc3RzL21ha2UgYi90b29scy9wZXJmL3Rlc3RzL21ha2VcbmluZGV4IGQyYzJmNTI2ZTFkYjAuLjIwMmFiNTUwMTkxNjEgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL3Rlc3RzL21ha2VcbisrKyBiL3Rvb2xzL3BlcmYvdGVzdHMvbWFrZVxuQEAgLTk1LDcgKzk1LDcgQEAgbWFrZV9ub19iYWJlbHRyYWNlMiA6PSBOT19CQUJFTFRSQUNFMj0xXG4gbWFrZV93aXRoX2NvcmVzaWdodCA6PSBDT1JFU0lHSFQ9MVxuIG1ha2Vfbm9fc2R0XHQgICAgOj0gTk9fU0RUPTFcbiBtYWtlX25vX2xpYnBmbTQgICAgIDo9IE5PX0xJQlBGTTQ9MVxuLW1ha2Vfd2l0aF9ndGsyICAgICAgOj0gR1RLMj0xXG4rbWFrZV93aXRoX2d0azQgICAgICA6PSBHVEs0PTFcbiBtYWtlX3JlZmNudF9jaGVjayAgIDo9IEVYVFJBX0NGTEFHUz1cIi1EUkVGQ05UX0NIRUNLSU5HPTFcIlxuIG1ha2VfdGFncyAgICAgICAgICAgOj0gdGFnc1xuIG1ha2VfY3Njb3BlICAgICAgICAgOj0gY3Njb3BlXG5AQCAtMzE4LDcgKzMxOCw3IEBAICQocnVuKTpcbiBcdCQoY2FsbCB0ZXN0LCRAKSBcdTAwMjZcdTAwMjYgXFxcbiBcdHJtIC1yZiAkQCAkJFRNUF9ERVNUIHx8IChjYXQgJEAgOyBmYWxzZSlcbiBcbi1tYWtlX3dpdGhfZ3RrMjpcbittYWtlX3dpdGhfZ3RrNDpcbiBcdCQoY2FsbCBjbGVhbilcbiBcdEBUTVBfREVTVD0kJChta3RlbXAgLWQpOyBcXFxuIFx0Y21kPVwiY2QgJChQRVJGKSBcdTAwMjZcdTAwMjYgJChNQUtFX0YpICQoJEApICQoUEFSQUxMRUxfT1BUKSAkKE9fT1BUKSBERVNURElSPSQkVE1QX0RFU1RcIjsgXFxcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL2d0ay9hbm5vdGF0ZS5jIGIvdG9vbHMvcGVyZi91aS9ndGsvYW5ub3RhdGUuY1xuaW5kZXggODkyMGUyOTg0MjBhOC4uMDk0ZGZhMDQ1Yjc3NCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2Fubm90YXRlLmNcbisrKyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2Fubm90YXRlLmNcbkBAIC0xMSw2ICsxMSw3IEBAXG4gI2luY2x1ZGUgXCJ1aS9oZWxwbGluZS5oXCJcbiAjaW5jbHVkZSBcdTAwM2NpbnR0eXBlcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjc2lnbmFsLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NzdHJpbmcuaFx1MDAzZVxuIFxuIGVudW0ge1xuIFx0QU5OX0NPTF9fUEVSQ0VOVCxcbkBAIC0xNjEsNyArMTYyLDcgQEAgc3RhdGljIGludCBwZXJmX2d0a19fYW5ub3RhdGVfc3ltYm9sKEd0a1dpZGdldCAqd2luZG93LCBzdHJ1Y3QgbWFwX3N5bWJvbCAqbXMsXG4gXHRcdFx0Z3RrX2xpc3Rfc3RvcmVfc2V0KHN0b3JlLCBcdTAwMjZpdGVyLCBBTk5fQ09MX19MSU5FLCBzLCAtMSk7XG4gXHR9XG4gXG4tXHRndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHdpbmRvdyksIHZpZXcpO1xuK1x0Z3RrX3Njcm9sbGVkX3dpbmRvd19zZXRfY2hpbGQoR1RLX1NDUk9MTEVEX1dJTkRPVyh3aW5kb3cpLCB2aWV3KTtcbiBcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwb3MsIG4sIFx1MDAyNm5vdGVzLVx1MDAzZXNyYy1cdTAwM2Vzb3VyY2UsIGFsLm5vZGUpIHtcbiBcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZwb3MtXHUwMDNlYWwubm9kZSk7XG5AQCAtMjA1LDQwICsyMDYsMzQgQEAgc3RhdGljIGludCBzeW1ib2xfX2d0a19hbm5vdGF0ZShzdHJ1Y3QgbWFwX3N5bWJvbCAqbXMsIHN0cnVjdCBldnNlbCAqZXZzZWwsXG4gXHRcdEd0a1dpZGdldCAqaW5mb2JhcjtcbiBcdFx0R3RrV2lkZ2V0ICpzdGF0YmFyO1xuIFxuLVx0XHRzaWduYWwoU0lHU0VHViwgcGVyZl9ndGtfX3NpZ25hbCk7XG4tXHRcdHNpZ25hbChTSUdGUEUsICBwZXJmX2d0a19fc2lnbmFsKTtcbi1cdFx0c2lnbmFsKFNJR0lOVCwgIHBlcmZfZ3RrX19zaWduYWwpO1xuLVx0XHRzaWduYWwoU0lHUVVJVCwgcGVyZl9ndGtfX3NpZ25hbCk7XG4tXHRcdHNpZ25hbChTSUdURVJNLCBwZXJmX2d0a19fc2lnbmFsKTtcbitcdFx0c2lnbmFsKFNJR1NFR1YsIHBlcmZfZ3RrX19mYXRhbF9zaWduYWwpO1xuK1x0XHRzaWduYWwoU0lHRlBFLCAgcGVyZl9ndGtfX2ZhdGFsX3NpZ25hbCk7XG4rXHRcdHBlcmZfZ3RrX19pbnN0YWxsX3F1aXRfc2lnbmFscygpO1xuIFxuLVx0XHR3aW5kb3cgPSBndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1RPUExFVkVMKTtcbitcdFx0d2luZG93ID0gZ3RrX3dpbmRvd19uZXcoKTtcbiBcdFx0Z3RrX3dpbmRvd19zZXRfdGl0bGUoR1RLX1dJTkRPVyh3aW5kb3cpLCBcInBlcmYgYW5ub3RhdGVcIik7XG4gXG4tXHRcdGdfc2lnbmFsX2Nvbm5lY3Qod2luZG93LCBcImRlbGV0ZV9ldmVudFwiLCBndGtfbWFpbl9xdWl0LCBOVUxMKTtcbi1cbiBcdFx0cGdjdHggPSBwZXJmX2d0a19fYWN0aXZhdGVfY29udGV4dCh3aW5kb3cpO1xuIFx0XHRpZiAoIXBnY3R4KVxuIFx0XHRcdHJldHVybiAtMTtcbiBcbi1cdFx0dmJveCA9IGd0a192Ym94X25ldyhGQUxTRSwgMCk7XG4rXHRcdHZib3ggPSBndGtfYm94X25ldyhHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIDApO1xuIFx0XHRub3RlYm9vayA9IGd0a19ub3RlYm9va19uZXcoKTtcbiBcdFx0cGdjdHgtXHUwMDNlbm90ZWJvb2sgPSBub3RlYm9vaztcbiBcbi1cdFx0Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIG5vdGVib29rLCBUUlVFLCBUUlVFLCAwKTtcbitcdFx0Z3RrX3dpZGdldF9zZXRfdmV4cGFuZChub3RlYm9vaywgVFJVRSk7XG4rXHRcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIG5vdGVib29rKTtcbiBcbiBcdFx0aW5mb2JhciA9IHBlcmZfZ3RrX19zZXR1cF9pbmZvX2JhcigpO1xuLVx0XHRpZiAoaW5mb2Jhcikge1xuLVx0XHRcdGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBpbmZvYmFyLFxuLVx0XHRcdFx0XHQgICBGQUxTRSwgRkFMU0UsIDApO1xuLVx0XHR9XG4rXHRcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIGluZm9iYXIpO1xuIFxuIFx0XHRzdGF0YmFyID0gcGVyZl9ndGtfX3NldHVwX3N0YXR1c2JhcigpO1xuLVx0XHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgc3RhdGJhciwgRkFMU0UsIEZBTFNFLCAwKTtcbitcdFx0Z3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgc3RhdGJhcik7XG4gXG4tXHRcdGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIod2luZG93KSwgdmJveCk7XG4rXHRcdGd0a193aW5kb3dfc2V0X2NoaWxkKEdUS19XSU5ET1cod2luZG93KSwgdmJveCk7XG4gXHR9XG4gXG4tXHRzY3JvbGxlZF93aW5kb3cgPSBndGtfc2Nyb2xsZWRfd2luZG93X25ldyhOVUxMLCBOVUxMKTtcbitcdHNjcm9sbGVkX3dpbmRvdyA9IGd0a19zY3JvbGxlZF93aW5kb3dfbmV3KCk7XG4gXHR0YWJfbGFiZWwgPSBndGtfbGFiZWxfbmV3KHN5bS1cdTAwM2VuYW1lKTtcbiBcbiBcdGd0a19zY3JvbGxlZF93aW5kb3dfc2V0X3BvbGljeShHVEtfU0NST0xMRURfV0lORE9XKHNjcm9sbGVkX3dpbmRvdyksXG5AQCAtMjY3LDEyICsyNjIsMTEgQEAgdm9pZCBwZXJmX2d0a19fc2hvd19hbm5vdGF0aW9ucyh2b2lkKVxuIFx0XHRyZXR1cm47XG4gXG4gXHR3aW5kb3cgPSBwZ2N0eC1cdTAwM2VtYWluX3dpbmRvdztcbi1cdGd0a193aWRnZXRfc2hvd19hbGwod2luZG93KTtcbiBcbiBcdHBlcmZfZ3RrX19yZXNpemVfd2luZG93KHdpbmRvdyk7XG4tXHRndGtfd2luZG93X3NldF9wb3NpdGlvbihHVEtfV0lORE9XKHdpbmRvdyksIEdUS19XSU5fUE9TX0NFTlRFUik7XG4rXHRndGtfd2lkZ2V0X3NldF92aXNpYmxlKHdpbmRvdywgVFJVRSk7XG4gXG4tXHRndGtfbWFpbigpO1xuK1x0cGVyZl9ndGtfX3J1bl9tYWluX2xvb3Aod2luZG93KTtcbiBcbiBcdHBlcmZfZ3RrX19kZWFjdGl2YXRlX2NvbnRleHQoXHUwMDI2cGdjdHgpO1xuIH1cbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL2d0ay9icm93c2VyLmMgYi90b29scy9wZXJmL3VpL2d0ay9icm93c2VyLmNcbmluZGV4IGQyZGFkZjM4NzNmYmQuLjk4ZjFkNmJmY2IyNDYgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL3VpL2d0ay9icm93c2VyLmNcbisrKyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2Jyb3dzZXIuY1xuQEAgLTUsMzIgKzUsOTIgQEBcbiAjaW5jbHVkZSBcIi4uL2hpc3QuaFwiXG4gI2luY2x1ZGUgXCIuLi9oZWxwbGluZS5oXCJcbiBcbisjaW5jbHVkZSBcdTAwM2NnbGliLXVuaXguaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY3NpZ25hbC5oXHUwMDNlXG4gXG4tdm9pZCBwZXJmX2d0a19fc2lnbmFsKGludCBzaWcpXG4rLypcbisgKiBTSUdJTlQvU0lHUVVJVC9TSUdURVJNIGFyZSBhc3luY2hyb25vdXM6IGRlZmVycmluZyB0aGUgYWN0dWFsIGV4aXQgdG8gYVxuKyAqIEdMaWIgc291cmNlIGRpc3BhdGNoZWQgZnJvbSB0aGUgbWFpbiBsb29wIG1lYW5zIGl0IGFsd2F5cyBydW5zIG9uIHRoZVxuKyAqIG1haW4gdGhyZWFkLCBzZXJpYWxpemVkIHdpdGggZXZlcnl0aGluZyBlbHNlIHRoZSBtYWluIGxvb3AgZG9lc1xuKyAqIChpbmNsdWRpbmcgcGVyZl9ndGtfX2Vycm9yKCkncyB1cGRhdGVzIHRvIHBlcmZfZ3RrX19lcnJvcl9sb29wcyksIGluc3RlYWRcbisgKiBvZiByYWNpbmcgdGhlbSBmcm9tIGFyYml0cmFyeSBzaWduYWwtaGFuZGxlciBjb250ZXh0LlxuKyAqL1xuK3N0YXRpYyBnYm9vbGVhbiBwZXJmX2d0a19fcXVpdF9zaWduYWwoZ3BvaW50ZXIgZGF0YSBfX21heWJlX3VudXNlZClcbiB7XG4gXHRwZXJmX2d0a19fZXhpdChmYWxzZSk7XG4rXHRyZXR1cm4gR19TT1VSQ0VfUkVNT1ZFO1xuK31cbitcbit2b2lkIHBlcmZfZ3RrX19pbnN0YWxsX3F1aXRfc2lnbmFscyh2b2lkKVxuK3tcbitcdGdfdW5peF9zaWduYWxfYWRkKFNJR0lOVCwgIHBlcmZfZ3RrX19xdWl0X3NpZ25hbCwgTlVMTCk7XG4rXHRnX3VuaXhfc2lnbmFsX2FkZChTSUdRVUlULCBwZXJmX2d0a19fcXVpdF9zaWduYWwsIE5VTEwpO1xuK1x0Z191bml4X3NpZ25hbF9hZGQoU0lHVEVSTSwgcGVyZl9ndGtfX3F1aXRfc2lnbmFsLCBOVUxMKTtcbit9XG4rXG4rLypcbisgKiBTSUdTRUdWL1NJR0ZQRSBhcmUgc3luY2hyb25vdXMgZmF1bHRzOiB0aGVyZSdzIG5vIFwibGF0ZXJcIiB0byBkZWZlciB0byxcbisgKiBhbmQgbm8gc2FmZSB3YXkgdG8gcnVuIEdUSy9HTGliIGNvZGUgKG9yIGFueXRoaW5nIGVsc2Ugbm9uLWFzeW5jLXNpZ25hbC1cbisgKiBzYWZlKSBmcm9tIHRoZSBmYXVsdGluZyBjb250ZXh0LiBSZXBvcnQgYW5kIGxldCB0aGUgZGVmYXVsdCBkaXNwb3NpdGlvblxuKyAqIChjb3JlIGR1bXApIGhhcHBlbiBpbnN0ZWFkIG9mIHRyeWluZyB0byB0ZWFyIGRvd24gR1RLIHN0YXRlIGhlcmUuXG4rICovXG4rdm9pZCBwZXJmX2d0a19fZmF0YWxfc2lnbmFsKGludCBzaWcpXG4re1xuIFx0cHNpZ25hbChzaWcsIFwicGVyZlwiKTtcbitcdHNpZ25hbChzaWcsIFNJR19ERkwpO1xuK1x0cmFpc2Uoc2lnKTtcbiB9XG4gXG4gdm9pZCBwZXJmX2d0a19fcmVzaXplX3dpbmRvdyhHdGtXaWRnZXQgKndpbmRvdylcbiB7XG4gXHRHZGtSZWN0YW5nbGUgcmVjdDtcbi1cdEdka1NjcmVlbiAqc2NyZWVuO1xuLVx0aW50IG1vbml0b3I7XG4rXHRHZGtNb25pdG9yICptb25pdG9yO1xuK1x0R2RrRGlzcGxheSAqZGlzcGxheTtcbitcdEdMaXN0TW9kZWwgKm1vbml0b3JzO1xuIFx0aW50IGhlaWdodDtcbiBcdGludCB3aWR0aDtcbiBcbi1cdHNjcmVlbiA9IGd0a193aWRnZXRfZ2V0X3NjcmVlbih3aW5kb3cpO1xuK1x0ZGlzcGxheSA9IGd0a193aWRnZXRfZ2V0X2Rpc3BsYXkod2luZG93KTtcbitcdG1vbml0b3JzID0gZ2RrX2Rpc3BsYXlfZ2V0X21vbml0b3JzKGRpc3BsYXkpO1xuK1x0bW9uaXRvciA9IGdfbGlzdF9tb2RlbF9nZXRfaXRlbShtb25pdG9ycywgMCk7XG4rXHRpZiAoIW1vbml0b3IpIHtcbitcdFx0Z3RrX3dpbmRvd19zZXRfZGVmYXVsdF9zaXplKEdUS19XSU5ET1cod2luZG93KSwgODAwLCA2MDApO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4gXG4tXHRtb25pdG9yID0gZ2RrX3NjcmVlbl9nZXRfbW9uaXRvcl9hdF93aW5kb3coc2NyZWVuLCB3aW5kb3ctXHUwMDNld2luZG93KTtcbi1cbi1cdGdka19zY3JlZW5fZ2V0X21vbml0b3JfZ2VvbWV0cnkoc2NyZWVuLCBtb25pdG9yLCBcdTAwMjZyZWN0KTtcbitcdGdka19tb25pdG9yX2dldF9nZW9tZXRyeShtb25pdG9yLCBcdTAwMjZyZWN0KTtcbitcdGdfb2JqZWN0X3VucmVmKG1vbml0b3IpO1xuIFxuIFx0d2lkdGhcdD0gcmVjdC53aWR0aCAqIDMgLyA0O1xuIFx0aGVpZ2h0XHQ9IHJlY3QuaGVpZ2h0ICogMyAvIDQ7XG4gXG4tXHRndGtfd2luZG93X3Jlc2l6ZShHVEtfV0lORE9XKHdpbmRvdyksIHdpZHRoLCBoZWlnaHQpO1xuK1x0Z3RrX3dpbmRvd19zZXRfZGVmYXVsdF9zaXplKEdUS19XSU5ET1cod2luZG93KSwgd2lkdGgsIGhlaWdodCk7XG4rfVxuK1xuK3N0YXRpYyBHTWFpbkxvb3AgKnBlcmZfZ3RrX19tYWluX2xvb3A7XG4rXG4rdm9pZCBwZXJmX2d0a19fcXVpdF9tYWluX2xvb3Aodm9pZClcbit7XG4rXHRpZiAocGVyZl9ndGtfX21haW5fbG9vcClcbitcdFx0Z19tYWluX2xvb3BfcXVpdChwZXJmX2d0a19fbWFpbl9sb29wKTtcbit9XG4rXG4rc3RhdGljIGdib29sZWFuIHBlcmZfZ3RrX19jbG9zZV9yZXF1ZXN0KEd0a1dpZGdldCAqd2lkZ2V0IF9fbWF5YmVfdW51c2VkLFxuK1x0XHRcdFx0XHRncG9pbnRlciBkYXRhIF9fbWF5YmVfdW51c2VkKVxuK3tcbitcdHBlcmZfZ3RrX19xdWl0X21haW5fbG9vcCgpO1xuK1xuK1x0cmV0dXJuIEZBTFNFO1xuK31cbitcbit2b2lkIHBlcmZfZ3RrX19ydW5fbWFpbl9sb29wKEd0a1dpZGdldCAqd2luZG93KVxuK3tcbitcdGdfc2lnbmFsX2Nvbm5lY3Qod2luZG93LCBcImNsb3NlLXJlcXVlc3RcIixcbitcdFx0XHQgR19DQUxMQkFDSyhwZXJmX2d0a19fY2xvc2VfcmVxdWVzdCksIE5VTEwpO1xuK1xuK1x0cGVyZl9ndGtfX21haW5fbG9vcCA9IGdfbWFpbl9sb29wX25ldyhOVUxMLCBGQUxTRSk7XG4rXHRnX21haW5fbG9vcF9ydW4ocGVyZl9ndGtfX21haW5fbG9vcCk7XG4rXHRnX2NsZWFyX3BvaW50ZXIoXHUwMDI2cGVyZl9ndGtfX21haW5fbG9vcCwgZ19tYWluX2xvb3BfdW5yZWYpO1xuIH1cbiBcbiBjb25zdCBjaGFyICpwZXJmX2d0a19fZ2V0X3BlcmNlbnRfY29sb3IoZG91YmxlIHBlcmNlbnQpXG5AQCAtNDIsMzMgKzEwMiwzNSBAQCBjb25zdCBjaGFyICpwZXJmX2d0a19fZ2V0X3BlcmNlbnRfY29sb3IoZG91YmxlIHBlcmNlbnQpXG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4gXG4tI2lmZGVmIEhBVkVfR1RLX0lORk9fQkFSX1NVUFBPUlRcbitzdGF0aWMgdm9pZCBwZXJmX2d0a19faGlkZV93aWRnZXQoR3RrV2lkZ2V0ICp3aWRnZXQsIGdpbnQgcmVzcG9uc2VfaWQgX19tYXliZV91bnVzZWQsXG4rXHRcdFx0XHQgICBncG9pbnRlciBkYXRhIF9fbWF5YmVfdW51c2VkKVxuK3tcbitcdGd0a193aWRnZXRfc2V0X3Zpc2libGUod2lkZ2V0LCBGQUxTRSk7XG4rfVxuK1xuIEd0a1dpZGdldCAqcGVyZl9ndGtfX3NldHVwX2luZm9fYmFyKHZvaWQpXG4ge1xuIFx0R3RrV2lkZ2V0ICppbmZvX2JhcjtcbiBcdEd0a1dpZGdldCAqbGFiZWw7XG4tXHRHdGtXaWRnZXQgKmNvbnRlbnRfYXJlYTtcbiBcbiBcdGluZm9fYmFyID0gZ3RrX2luZm9fYmFyX25ldygpO1xuLVx0Z3RrX3dpZGdldF9zZXRfbm9fc2hvd19hbGwoaW5mb19iYXIsIFRSVUUpO1xuK1x0Z3RrX3dpZGdldF9zZXRfdmlzaWJsZShpbmZvX2JhciwgRkFMU0UpO1xuIFxuIFx0bGFiZWwgPSBndGtfbGFiZWxfbmV3KFwiXCIpO1xuLVx0Z3RrX3dpZGdldF9zaG93KGxhYmVsKTtcbitcdGd0a193aWRnZXRfc2V0X3Zpc2libGUobGFiZWwsIFRSVUUpO1xuIFxuLVx0Y29udGVudF9hcmVhID0gZ3RrX2luZm9fYmFyX2dldF9jb250ZW50X2FyZWEoR1RLX0lORk9fQkFSKGluZm9fYmFyKSk7XG4tXHRndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKGNvbnRlbnRfYXJlYSksIGxhYmVsKTtcbitcdGd0a19pbmZvX2Jhcl9hZGRfY2hpbGQoR1RLX0lORk9fQkFSKGluZm9fYmFyKSwgbGFiZWwpO1xuIFxuLVx0Z3RrX2luZm9fYmFyX2FkZF9idXR0b24oR1RLX0lORk9fQkFSKGluZm9fYmFyKSwgR1RLX1NUT0NLX09LLFxuK1x0Z3RrX2luZm9fYmFyX2FkZF9idXR0b24oR1RLX0lORk9fQkFSKGluZm9fYmFyKSwgXCJfT0tcIixcbiBcdFx0XHRcdEdUS19SRVNQT05TRV9PSyk7XG4gXHRnX3NpZ25hbF9jb25uZWN0KGluZm9fYmFyLCBcInJlc3BvbnNlXCIsXG4tXHRcdFx0IEdfQ0FMTEJBQ0soZ3RrX3dpZGdldF9oaWRlKSwgTlVMTCk7XG4rXHRcdFx0IEdfQ0FMTEJBQ0socGVyZl9ndGtfX2hpZGVfd2lkZ2V0KSwgTlVMTCk7XG4gXG4gXHRwZ2N0eC1cdTAwM2VpbmZvX2JhciA9IGluZm9fYmFyO1xuIFx0cGdjdHgtXHUwMDNlbWVzc2FnZV9sYWJlbCA9IGxhYmVsO1xuIFxuIFx0cmV0dXJuIGluZm9fYmFyO1xuIH1cbi0jZW5kaWZcbiBcbiBHdGtXaWRnZXQgKnBlcmZfZ3RrX19zZXR1cF9zdGF0dXNiYXIodm9pZClcbiB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91aS9ndGsvZ3RrLmggYi90b29scy9wZXJmL3VpL2d0ay9ndGsuaFxuaW5kZXggYTJiNDk3ZjAzZmQ2ZS4uNmIzN2ZkOTk0M2M5ZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2d0ay5oXG4rKysgYi90b29scy9wZXJmL3VpL2d0ay9ndGsuaFxuQEAgLTEzLDEwICsxMyw4IEBAIHN0cnVjdCBwZXJmX2d0a19jb250ZXh0IHtcbiBcdEd0a1dpZGdldCAqbWFpbl93aW5kb3c7XG4gXHRHdGtXaWRnZXQgKm5vdGVib29rO1xuIFxuLSNpZmRlZiBIQVZFX0dUS19JTkZPX0JBUl9TVVBQT1JUXG4gXHRHdGtXaWRnZXQgKmluZm9fYmFyO1xuIFx0R3RrV2lkZ2V0ICptZXNzYWdlX2xhYmVsO1xuLSNlbmRpZlxuIFx0R3RrV2lkZ2V0ICpzdGF0YmFyO1xuIFx0Z3VpbnQgc3RhdGJhcl9jdHhfaWQ7XG4gfTtcbkBAIC0zOCwxOSArMzYsMTUgQEAgdm9pZCBwZXJmX2d0a19faW5pdF9oZWxwbGluZSh2b2lkKTtcbiB2b2lkIGd0a191aV9wcm9ncmVzc19faW5pdCh2b2lkKTtcbiB2b2lkIHBlcmZfZ3RrX19pbml0X2hwcCh2b2lkKTtcbiBcbi12b2lkIHBlcmZfZ3RrX19zaWduYWwoaW50IHNpZyk7XG4rdm9pZCBwZXJmX2d0a19faW5zdGFsbF9xdWl0X3NpZ25hbHModm9pZCk7XG4rdm9pZCBwZXJmX2d0a19fZmF0YWxfc2lnbmFsKGludCBzaWcpO1xuIHZvaWQgcGVyZl9ndGtfX3Jlc2l6ZV93aW5kb3coR3RrV2lkZ2V0ICp3aW5kb3cpO1xuK3ZvaWQgcGVyZl9ndGtfX3J1bl9tYWluX2xvb3AoR3RrV2lkZ2V0ICp3aW5kb3cpO1xuK3ZvaWQgcGVyZl9ndGtfX3F1aXRfbWFpbl9sb29wKHZvaWQpO1xuK3ZvaWQgcGVyZl9ndGtfX3F1aXRfZXJyb3JfZGlhbG9nKHZvaWQpO1xuIGNvbnN0IGNoYXIgKnBlcmZfZ3RrX19nZXRfcGVyY2VudF9jb2xvcihkb3VibGUgcGVyY2VudCk7XG4gR3RrV2lkZ2V0ICpwZXJmX2d0a19fc2V0dXBfc3RhdHVzYmFyKHZvaWQpO1xuLVxuLSNpZmRlZiBIQVZFX0dUS19JTkZPX0JBUl9TVVBQT1JUXG4gR3RrV2lkZ2V0ICpwZXJmX2d0a19fc2V0dXBfaW5mb19iYXIodm9pZCk7XG4tI2Vsc2Vcbi1zdGF0aWMgaW5saW5lIEd0a1dpZGdldCAqcGVyZl9ndGtfX3NldHVwX2luZm9fYmFyKHZvaWQpXG4te1xuLVx0cmV0dXJuIE5VTEw7XG4tfVxuLSNlbmRpZlxuIFxuIHN0cnVjdCBldnNlbDtcbiBzdHJ1Y3QgZXZsaXN0O1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2hpc3RzLmMgYi90b29scy9wZXJmL3VpL2d0ay9oaXN0cy5jXG5pbmRleCBiYWUyMWYzMzZhZTZkLi43MTZkY2YwMmJkMGU4IDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvaGlzdHMuY1xuKysrIGIvdG9vbHMvcGVyZi91aS9ndGsvaGlzdHMuY1xuQEAgLTgsNiArOCw4IEBAXG4gI2luY2x1ZGUgXCIuLi9oZWxwbGluZS5oXCJcbiAjaW5jbHVkZSBcIi4uL3N0cmluZzIuaFwiXG4gI2luY2x1ZGUgXHUwMDNjc2lnbmFsLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NzdGRhcmcuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY3N0ZGlvLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NzdGRsaWIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3N0cmluZy5oXHUwMDNlXG4gXG5AQCAtMzk1LDExICszOTcsOSBAQCBzdGF0aWMgdm9pZCBwZXJmX2d0a19fc2hvd19oaXN0cyhHdGtXaWRnZXQgKndpbmRvdywgc3RydWN0IGhpc3RzICpoaXN0cyxcbiBcdFx0fVxuIFx0fVxuIFxuLVx0Z3RrX3RyZWVfdmlld19zZXRfcnVsZXNfaGludChHVEtfVFJFRV9WSUVXKHZpZXcpLCBUUlVFKTtcbi1cbiBcdGdfc2lnbmFsX2Nvbm5lY3QodmlldywgXCJyb3ctYWN0aXZhdGVkXCIsXG4gXHRcdFx0IEdfQ0FMTEJBQ0sob25fcm93X2FjdGl2YXRlZCksIE5VTEwpO1xuLVx0Z3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUih3aW5kb3cpLCB2aWV3KTtcbitcdGd0a19zY3JvbGxlZF93aW5kb3dfc2V0X2NoaWxkKEdUS19TQ1JPTExFRF9XSU5ET1cod2luZG93KSwgdmlldyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHBlcmZfZ3RrX19hZGRfaGllcmFyY2h5X2VudHJpZXMoc3RydWN0IGhpc3RzICpoaXN0cyxcbkBAIC01ODMsMTEgKzU4Myw5IEBAIHN0YXRpYyB2b2lkIHBlcmZfZ3RrX19zaG93X2hpZXJhcmNoeShHdGtXaWRnZXQgKndpbmRvdywgc3RydWN0IGhpc3RzICpoaXN0cyxcbiBcdHBlcmZfZ3RrX19hZGRfaGllcmFyY2h5X2VudHJpZXMoaGlzdHMsIFx1MDAyNmhpc3RzLVx1MDAzZWVudHJpZXMsIHN0b3JlLFxuIFx0XHRcdFx0XHROVUxMLCBcdTAwMjZocHAsIG1pbl9wY250KTtcbiBcbi1cdGd0a190cmVlX3ZpZXdfc2V0X3J1bGVzX2hpbnQoR1RLX1RSRUVfVklFVyh2aWV3KSwgVFJVRSk7XG4tXG4gXHRnX3NpZ25hbF9jb25uZWN0KHZpZXcsIFwicm93LWFjdGl2YXRlZFwiLFxuIFx0XHRcdCBHX0NBTExCQUNLKG9uX3Jvd19hY3RpdmF0ZWQpLCBOVUxMKTtcbi1cdGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIod2luZG93KSwgdmlldyk7XG4rXHRndGtfc2Nyb2xsZWRfd2luZG93X3NldF9jaGlsZChHVEtfU0NST0xMRURfV0lORE9XKHdpbmRvdyksIHZpZXcpO1xuIH1cbiBcbiBpbnQgZXZsaXN0X19ndGtfYnJvd3NlX2hpc3RzKHN0cnVjdCBldmxpc3QgKmV2bGlzdCwgY29uc3QgY2hhciAqaGVscCxcbkBAIC02MDAsMzYgKzU5OCwzMiBAQCBpbnQgZXZsaXN0X19ndGtfYnJvd3NlX2hpc3RzKHN0cnVjdCBldmxpc3QgKmV2bGlzdCwgY29uc3QgY2hhciAqaGVscCxcbiBcdEd0a1dpZGdldCAqc3RhdGJhcjtcbiBcdEd0a1dpZGdldCAqd2luZG93O1xuIFxuLVx0c2lnbmFsKFNJR1NFR1YsIHBlcmZfZ3RrX19zaWduYWwpO1xuLVx0c2lnbmFsKFNJR0ZQRSwgIHBlcmZfZ3RrX19zaWduYWwpO1xuLVx0c2lnbmFsKFNJR0lOVCwgIHBlcmZfZ3RrX19zaWduYWwpO1xuLVx0c2lnbmFsKFNJR1FVSVQsIHBlcmZfZ3RrX19zaWduYWwpO1xuLVx0c2lnbmFsKFNJR1RFUk0sIHBlcmZfZ3RrX19zaWduYWwpO1xuK1x0c2lnbmFsKFNJR1NFR1YsIHBlcmZfZ3RrX19mYXRhbF9zaWduYWwpO1xuK1x0c2lnbmFsKFNJR0ZQRSwgIHBlcmZfZ3RrX19mYXRhbF9zaWduYWwpO1xuK1x0cGVyZl9ndGtfX2luc3RhbGxfcXVpdF9zaWduYWxzKCk7XG4gXG4tXHR3aW5kb3cgPSBndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1RPUExFVkVMKTtcbitcdHdpbmRvdyA9IGd0a193aW5kb3dfbmV3KCk7XG4gXG4gXHRndGtfd2luZG93X3NldF90aXRsZShHVEtfV0lORE9XKHdpbmRvdyksIFwicGVyZiByZXBvcnRcIik7XG4gXG4tXHRnX3NpZ25hbF9jb25uZWN0KHdpbmRvdywgXCJkZWxldGVfZXZlbnRcIiwgZ3RrX21haW5fcXVpdCwgTlVMTCk7XG4tXG4gXHRwZ2N0eCA9IHBlcmZfZ3RrX19hY3RpdmF0ZV9jb250ZXh0KHdpbmRvdyk7XG4gXHRpZiAoIXBnY3R4KVxuIFx0XHRyZXR1cm4gLTE7XG4gXG4tXHR2Ym94ID0gZ3RrX3Zib3hfbmV3KEZBTFNFLCAwKTtcbitcdHZib3ggPSBndGtfYm94X25ldyhHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIDApO1xuIFxuIFx0bm90ZWJvb2sgPSBndGtfbm90ZWJvb2tfbmV3KCk7XG4gXG4tXHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgbm90ZWJvb2ssIFRSVUUsIFRSVUUsIDApO1xuK1x0Z3RrX3dpZGdldF9zZXRfdmV4cGFuZChub3RlYm9vaywgVFJVRSk7XG4rXHRndGtfYm94X2FwcGVuZChHVEtfQk9YKHZib3gpLCBub3RlYm9vayk7XG4gXG4gXHRpbmZvX2JhciA9IHBlcmZfZ3RrX19zZXR1cF9pbmZvX2JhcigpO1xuLVx0aWYgKGluZm9fYmFyKVxuLVx0XHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgaW5mb19iYXIsIEZBTFNFLCBGQUxTRSwgMCk7XG4rXHRndGtfYm94X2FwcGVuZChHVEtfQk9YKHZib3gpLCBpbmZvX2Jhcik7XG4gXG4gXHRzdGF0YmFyID0gcGVyZl9ndGtfX3NldHVwX3N0YXR1c2JhcigpO1xuLVx0Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIHN0YXRiYXIsIEZBTFNFLCBGQUxTRSwgMCk7XG4rXHRndGtfYm94X2FwcGVuZChHVEtfQk9YKHZib3gpLCBzdGF0YmFyKTtcbiBcbi1cdGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIod2luZG93KSwgdmJveCk7XG4rXHRndGtfd2luZG93X3NldF9jaGlsZChHVEtfV0lORE9XKHdpbmRvdyksIHZib3gpO1xuIFxuIFx0ZXZsaXN0X19mb3JfZWFjaF9lbnRyeShldmxpc3QsIHBvcykge1xuIFx0XHRzdHJ1Y3QgaGlzdHMgKmhpc3RzID0gZXZzZWxfX2hpc3RzKHBvcyk7XG5AQCAtNjQ5LDcgKzY0Myw3IEBAIGludCBldmxpc3RfX2d0a19icm93c2VfaGlzdHMoc3RydWN0IGV2bGlzdCAqZXZsaXN0LCBjb25zdCBjaGFyICpoZWxwLFxuIFx0XHRcdH1cbiBcdFx0fVxuIFxuLVx0XHRzY3JvbGxlZF93aW5kb3cgPSBndGtfc2Nyb2xsZWRfd2luZG93X25ldyhOVUxMLCBOVUxMKTtcbitcdFx0c2Nyb2xsZWRfd2luZG93ID0gZ3RrX3Njcm9sbGVkX3dpbmRvd19uZXcoKTtcbiBcbiBcdFx0Z3RrX3Njcm9sbGVkX3dpbmRvd19zZXRfcG9saWN5KEdUS19TQ1JPTExFRF9XSU5ET1coc2Nyb2xsZWRfd2luZG93KSxcbiBcdFx0XHRcdFx0XHRcdEdUS19QT0xJQ1lfQVVUT01BVElDLFxuQEAgLTY2NSwxNSArNjU5LDEyIEBAIGludCBldmxpc3RfX2d0a19icm93c2VfaGlzdHMoc3RydWN0IGV2bGlzdCAqZXZsaXN0LCBjb25zdCBjaGFyICpoZWxwLFxuIFx0XHRndGtfbm90ZWJvb2tfYXBwZW5kX3BhZ2UoR1RLX05PVEVCT09LKG5vdGVib29rKSwgc2Nyb2xsZWRfd2luZG93LCB0YWJfbGFiZWwpO1xuIFx0fVxuIFxuLVx0Z3RrX3dpZGdldF9zaG93X2FsbCh3aW5kb3cpO1xuLVxuIFx0cGVyZl9ndGtfX3Jlc2l6ZV93aW5kb3cod2luZG93KTtcbi1cbi1cdGd0a193aW5kb3dfc2V0X3Bvc2l0aW9uKEdUS19XSU5ET1cod2luZG93KSwgR1RLX1dJTl9QT1NfQ0VOVEVSKTtcbitcdGd0a193aWRnZXRfc2V0X3Zpc2libGUod2luZG93LCBUUlVFKTtcbiBcbiBcdHVpX2hlbHBsaW5lX19wdXNoKGhlbHApO1xuIFxuLVx0Z3RrX21haW4oKTtcbitcdHBlcmZfZ3RrX19ydW5fbWFpbl9sb29wKHdpbmRvdyk7XG4gXG4gXHRwZXJmX2d0a19fZGVhY3RpdmF0ZV9jb250ZXh0KFx1MDAyNnBnY3R4KTtcbiBcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL2d0ay9wcm9ncmVzcy5jIGIvdG9vbHMvcGVyZi91aS9ndGsvcHJvZ3Jlc3MuY1xuaW5kZXggZWVhNmZjZGU1MThhOC4uNzcwZjkyNTFiNTRiNyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3Byb2dyZXNzLmNcbisrKyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL3Byb2dyZXNzLmNcbkBAIC0xLDQ5ICsxLDY1IEBAXG4gLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAjaW5jbHVkZSBcdTAwM2NpbnR0eXBlcy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjc3RkaW8uaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwiZ3RrLmhcIlxuICNpbmNsdWRlIFwiLi4vcHJvZ3Jlc3MuaFwiXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvY29tcGlsZXIuaFx1MDAzZVxuIFxuIHN0YXRpYyBHdGtXaWRnZXQgKmRpYWxvZztcbiBzdGF0aWMgR3RrV2lkZ2V0ICpwcm9ncmVzcztcbiBcbitzdGF0aWMgdm9pZCBndGtfdWlfcHJvZ3Jlc3NfX2Rlc3Ryb3llZChHdGtXaWRnZXQgKndpZGdldCBfX21heWJlX3VudXNlZCxcbitcdFx0XHRcdFx0Z3BvaW50ZXIgZGF0YSBfX21heWJlX3VudXNlZClcbit7XG4rXHRkaWFsb2cgPSBOVUxMO1xuK1x0cHJvZ3Jlc3MgPSBOVUxMO1xuK31cbitcbiBzdGF0aWMgdm9pZCBndGtfdWlfcHJvZ3Jlc3NfX3VwZGF0ZShzdHJ1Y3QgdWlfcHJvZ3Jlc3MgKnApXG4ge1xuIFx0ZG91YmxlIGZyYWN0aW9uID0gcC1cdTAwM2V0b3RhbCA/IDEuMCAqIHAtXHUwMDNlY3VyciAvIHAtXHUwMDNldG90YWwgOiAwLjA7XG4gXHRjaGFyIGJ1ZlsxMDI0XTtcbiBcbiBcdGlmIChkaWFsb2cgPT0gTlVMTCkge1xuLVx0XHRHdGtXaWRnZXQgKnZib3ggPSBndGtfdmJveF9uZXcoVFJVRSwgNSk7XG4rXHRcdEd0a1dpZGdldCAqdmJveCA9IGd0a19ib3hfbmV3KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgNSk7XG4gXHRcdEd0a1dpZGdldCAqbGFiZWwgPSBndGtfbGFiZWxfbmV3KHAtXHUwMDNldGl0bGUpO1xuIFxuLVx0XHRkaWFsb2cgPSBndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1RPUExFVkVMKTtcbitcdFx0ZGlhbG9nID0gZ3RrX3dpbmRvd19uZXcoKTtcbiBcdFx0cHJvZ3Jlc3MgPSBndGtfcHJvZ3Jlc3NfYmFyX25ldygpO1xuIFxuLVx0XHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgbGFiZWwsIFRSVUUsIEZBTFNFLCAzKTtcbi1cdFx0Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIHByb2dyZXNzLCBUUlVFLCBUUlVFLCAzKTtcbitcdFx0Z3RrX3dpZGdldF9zZXRfdmV4cGFuZChsYWJlbCwgVFJVRSk7XG4rXHRcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIGxhYmVsKTtcbitcdFx0Z3RrX3dpZGdldF9zZXRfdmV4cGFuZChwcm9ncmVzcywgVFJVRSk7XG4rXHRcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIHByb2dyZXNzKTtcbitcbitcdFx0Z3RrX3dpbmRvd19zZXRfY2hpbGQoR1RLX1dJTkRPVyhkaWFsb2cpLCB2Ym94KTtcbiBcbi1cdFx0Z3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUihkaWFsb2cpLCB2Ym94KTtcbitcdFx0Z19zaWduYWxfY29ubmVjdChkaWFsb2csIFwiZGVzdHJveVwiLFxuK1x0XHRcdFx0IEdfQ0FMTEJBQ0soZ3RrX3VpX3Byb2dyZXNzX19kZXN0cm95ZWQpLCBOVUxMKTtcbiBcbiBcdFx0Z3RrX3dpbmRvd19zZXRfdGl0bGUoR1RLX1dJTkRPVyhkaWFsb2cpLCBcInBlcmZcIik7XG4tXHRcdGd0a193aW5kb3dfcmVzaXplKEdUS19XSU5ET1coZGlhbG9nKSwgMzAwLCA4MCk7XG4tXHRcdGd0a193aW5kb3dfc2V0X3Bvc2l0aW9uKEdUS19XSU5ET1coZGlhbG9nKSwgR1RLX1dJTl9QT1NfQ0VOVEVSKTtcbitcdFx0Z3RrX3dpbmRvd19zZXRfZGVmYXVsdF9zaXplKEdUS19XSU5ET1coZGlhbG9nKSwgMzAwLCA4MCk7XG4gXG4tXHRcdGd0a193aWRnZXRfc2hvd19hbGwoZGlhbG9nKTtcbitcdFx0Z3RrX3dpZGdldF9zZXRfdmlzaWJsZShkaWFsb2csIFRSVUUpO1xuIFx0fVxuIFxuIFx0Z3RrX3Byb2dyZXNzX2Jhcl9zZXRfZnJhY3Rpb24oR1RLX1BST0dSRVNTX0JBUihwcm9ncmVzcyksIGZyYWN0aW9uKTtcbiBcdHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksIFwiJVwiUFJJdTY0XCIgLyAlXCJQUkl1NjQsIHAtXHUwMDNlY3VyciwgcC1cdTAwM2V0b3RhbCk7XG4gXHRndGtfcHJvZ3Jlc3NfYmFyX3NldF90ZXh0KEdUS19QUk9HUkVTU19CQVIocHJvZ3Jlc3MpLCBidWYpO1xuIFxuLVx0Lyogd2UgZGlkbid0IGNhbGwgZ3RrX21haW4geWV0LCBzbyBkbyBpdCBtYW51YWxseSAqL1xuLVx0d2hpbGUgKGd0a19ldmVudHNfcGVuZGluZygpKVxuLVx0XHRndGtfbWFpbl9pdGVyYXRpb24oKTtcbitcdC8qIHdlIGRpZG4ndCBzdGFydCBhIG1haW4gbG9vcCB5ZXQsIHNvIHB1bXAgZXZlbnRzIG1hbnVhbGx5ICovXG4rXHR3aGlsZSAoZ19tYWluX2NvbnRleHRfcGVuZGluZyhOVUxMKSlcbitcdFx0Z19tYWluX2NvbnRleHRfaXRlcmF0aW9uKE5VTEwsIEZBTFNFKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgZ3RrX3VpX3Byb2dyZXNzX19maW5pc2godm9pZClcbiB7XG4rXHRpZiAoZGlhbG9nID09IE5VTEwpXG4rXHRcdHJldHVybjtcbitcbiBcdC8qIHRoaXMgd2lsbCBhbHNvIGRlc3Ryb3kgYWxsIG9mIGl0cyBjaGlsZHJlbiAqL1xuLVx0Z3RrX3dpZGdldF9kZXN0cm95KGRpYWxvZyk7XG4rXHRndGtfd2luZG93X2Rlc3Ryb3koR1RLX1dJTkRPVyhkaWFsb2cpKTtcbiBcbiBcdGRpYWxvZyA9IE5VTEw7XG4gfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3NldHVwLmMgYi90b29scy9wZXJmL3VpL2d0ay9zZXR1cC5jXG5pbmRleCBmNWVlZTRkNjY4NzM4Li45YjQ0ZjM3MTk3NDc3IDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvc2V0dXAuY1xuKysrIGIvdG9vbHMvcGVyZi91aS9ndGsvc2V0dXAuY1xuQEAgLTEyLDcgKzEyLDcgQEAgaW50IHBlcmZfZ3RrX19pbml0KHZvaWQpXG4gXHRndGtfdWlfcHJvZ3Jlc3NfX2luaXQoKTtcbiBcdHBlcmZfZ3RrX19pbml0X2hwcCgpO1xuIFxuLVx0cmV0dXJuIGd0a19pbml0X2NoZWNrKE5VTEwsIE5VTEwpID8gMCA6IC0xO1xuK1x0cmV0dXJuIGd0a19pbml0X2NoZWNrKCkgPyAwIDogLTE7XG4gfVxuIFxuIHZvaWQgcGVyZl9ndGtfX2V4aXQoYm9vbCB3YWl0X2Zvcl9vayBfX21heWJlX3VudXNlZClcbkBAIC0yMCw1ICsyMCw2IEBAIHZvaWQgcGVyZl9ndGtfX2V4aXQoYm9vbCB3YWl0X2Zvcl9vayBfX21heWJlX3VudXNlZClcbiBcdGlmICghcGVyZl9ndGtfX2lzX2FjdGl2ZV9jb250ZXh0KHBnY3R4KSlcbiBcdFx0cmV0dXJuO1xuIFx0cGVyZl9lcnJvcl9fdW5yZWdpc3RlcihcdTAwMjZwZXJmX2d0a19lb3BzKTtcbi1cdGd0a19tYWluX3F1aXQoKTtcbitcdHBlcmZfZ3RrX19xdWl0X2Vycm9yX2RpYWxvZygpO1xuK1x0cGVyZl9ndGtfX3F1aXRfbWFpbl9sb29wKCk7XG4gfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3V0aWwuYyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL3V0aWwuY1xuaW5kZXggYzQ3ZjVjMzg3ODM4Yy4uNTgyM2ZmMGQ3YzJhNyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3V0aWwuY1xuKysrIGIvdG9vbHMvcGVyZi91aS9ndGsvdXRpbC5jXG5AQCAtMiw4ICsyLDEwIEBAXG4gI2luY2x1ZGUgXCIuLi91dGlsLmhcIlxuICNpbmNsdWRlIFwiZ3RrLmhcIlxuIFxuKyNpbmNsdWRlIFx1MDAzY3N0ZGFyZy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjc3RkaW8uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY3N0ZGxpYi5oXHUwMDNlXG4tI2luY2x1ZGUgXHUwMDNjc3RyaW5nLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9jb21waWxlci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvemFsbG9jLmhcdTAwM2VcbiBcbiBzdHJ1Y3QgcGVyZl9ndGtfY29udGV4dCAqcGdjdHg7XG5AQCAtMjgsODYgKzMwLDEwMyBAQCBpbnQgcGVyZl9ndGtfX2RlYWN0aXZhdGVfY29udGV4dChzdHJ1Y3QgcGVyZl9ndGtfY29udGV4dCAqKmN0eClcbiBcdHJldHVybiAwO1xuIH1cbiBcbisvKlxuKyAqIHBlcmZfZ3RrX19lcnJvcigpIGNhbiBiZSBjYWxsZWQgcmUtZW50cmFudGx5LCBzaW5jZSB0aGUgZGlhbG9nIGlzbid0XG4rICogbW9kYWwgYW5kIGl0cyBuZXN0ZWQgbG9vcCBzdGlsbCBwdW1wcyBldmVudHMgZm9yIHRoZSBtYWluIHdpbmRvdy5cbisgKiBUcmFjayBldmVyeSBjdXJyZW50bHkgcnVubmluZyBsb29wIGluc3RlYWQgb2YgYSBzaW5nbGUgcG9pbnRlciwgc28gYVxuKyAqIG5lc3RlZCBjYWxsIGNhbid0IGNsb2JiZXIgYW4gb3V0ZXIgY2FsbCdzIGxvb3AgYW5kIGxlYWsgaXQuXG4rICovXG4rc3RhdGljIEdTTGlzdCAqcGVyZl9ndGtfX2Vycm9yX2xvb3BzO1xuK1xuK3N0YXRpYyB2b2lkIHBlcmZfZ3RrX19xdWl0X2xvb3AoZ3BvaW50ZXIgZGF0YSwgZ3BvaW50ZXIgdXNlcl9kYXRhIF9fbWF5YmVfdW51c2VkKVxuK3tcbitcdGdfbWFpbl9sb29wX3F1aXQoZGF0YSk7XG4rfVxuK1xuK3ZvaWQgcGVyZl9ndGtfX3F1aXRfZXJyb3JfZGlhbG9nKHZvaWQpXG4re1xuK1x0Z19zbGlzdF9mb3JlYWNoKHBlcmZfZ3RrX19lcnJvcl9sb29wcywgcGVyZl9ndGtfX3F1aXRfbG9vcCwgTlVMTCk7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHBlcmZfZ3RrX19kaWFsb2dfcmVzcG9uc2UoR3RrRGlhbG9nICpkaWFsb2csXG4rXHRcdFx0XHQgICAgICBnaW50IHJlc3BvbnNlX2lkIF9fbWF5YmVfdW51c2VkLFxuK1x0XHRcdFx0ICAgICAgZ3BvaW50ZXIgZGF0YSBfX21heWJlX3VudXNlZClcbit7XG4rXHRndGtfd2luZG93X2Rlc3Ryb3koR1RLX1dJTkRPVyhkaWFsb2cpKTtcbit9XG4rXG4gc3RhdGljIGludCBwZXJmX2d0a19fZXJyb3IoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpXG4ge1xuIFx0Y2hhciAqbXNnO1xuIFx0R3RrV2lkZ2V0ICpkaWFsb2c7XG4rXHRHTWFpbkxvb3AgKmxvb3A7XG4rXHR2YV9saXN0IGFyZ3NfY29weTtcbiBcbitcdHZhX2NvcHkoYXJnc19jb3B5LCBhcmdzKTtcbiBcdGlmICghcGVyZl9ndGtfX2lzX2FjdGl2ZV9jb250ZXh0KHBnY3R4KSB8fFxuLVx0ICAgIHZhc3ByaW50ZihcdTAwMjZtc2csIGZvcm1hdCwgYXJncykgXHUwMDNjIDApIHtcbitcdCAgICB2YXNwcmludGYoXHUwMDI2bXNnLCBmb3JtYXQsIGFyZ3NfY29weSkgXHUwMDNjIDApIHtcbitcdFx0dmFfZW5kKGFyZ3NfY29weSk7XG4gXHRcdGZwcmludGYoc3RkZXJyLCBcIkVycm9yOlxcblwiKTtcbiBcdFx0dmZwcmludGYoc3RkZXJyLCBmb3JtYXQsIGFyZ3MpO1xuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCJcXG5cIik7XG4gXHRcdHJldHVybiAtMTtcbiBcdH1cbitcdHZhX2VuZChhcmdzX2NvcHkpO1xuIFxuIFx0ZGlhbG9nID0gZ3RrX21lc3NhZ2VfZGlhbG9nX25ld193aXRoX21hcmt1cChHVEtfV0lORE9XKHBnY3R4LVx1MDAzZW1haW5fd2luZG93KSxcbiBcdFx0XHRcdFx0R1RLX0RJQUxPR19ERVNUUk9ZX1dJVEhfUEFSRU5ULFxuIFx0XHRcdFx0XHRHVEtfTUVTU0FHRV9FUlJPUixcbiBcdFx0XHRcdFx0R1RLX0JVVFRPTlNfQ0xPU0UsXG4gXHRcdFx0XHRcdFwiXHUwMDNjYlx1MDAzZUVycm9yXHUwMDNjL2JcdTAwM2VcXG5cXG4lc1wiLCBtc2cpO1xuLVx0Z3RrX2RpYWxvZ19ydW4oR1RLX0RJQUxPRyhkaWFsb2cpKTtcbiBcbi1cdGd0a193aWRnZXRfZGVzdHJveShkaWFsb2cpO1xuK1x0LypcbitcdCAqIFwicmVzcG9uc2VcIiBvbmx5IGZpcmVzIHdoZW4gYSBidXR0b24gaXMgY2xpY2tlZDsgREVTVFJPWV9XSVRIX1BBUkVOVFxuK1x0ICogZGVzdHJveXMgdGhlIGRpYWxvZyBkaXJlY3RseSB3aXRob3V0IGl0LiBRdWl0IGZyb20gXCJkZXN0cm95XCJcbitcdCAqIGluc3RlYWQsIHdoaWNoIGZpcmVzIGVpdGhlciB3YXksIHNvIHRoZSBuZXN0ZWQgbG9vcCBiZWxvdyBjYW4ndFxuK1x0ICogb3V0bGl2ZSB0aGUgZGlhbG9nIGFuZCBoYW5nLlxuK1x0ICovXG4rXHRsb29wID0gZ19tYWluX2xvb3BfbmV3KE5VTEwsIEZBTFNFKTtcbitcdHBlcmZfZ3RrX19lcnJvcl9sb29wcyA9IGdfc2xpc3RfcHJlcGVuZChwZXJmX2d0a19fZXJyb3JfbG9vcHMsIGxvb3ApO1xuK1x0Z19zaWduYWxfY29ubmVjdChkaWFsb2csIFwicmVzcG9uc2VcIixcbitcdFx0XHQgR19DQUxMQkFDSyhwZXJmX2d0a19fZGlhbG9nX3Jlc3BvbnNlKSwgTlVMTCk7XG4rXHRnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoZGlhbG9nLCBcImRlc3Ryb3lcIixcbitcdFx0XHRcdCBHX0NBTExCQUNLKGdfbWFpbl9sb29wX3F1aXQpLCBsb29wKTtcbitcbitcdGd0a193aWRnZXRfc2V0X3Zpc2libGUoZGlhbG9nLCBUUlVFKTtcbitcdGdfbWFpbl9sb29wX3J1bihsb29wKTtcbitcdHBlcmZfZ3RrX19lcnJvcl9sb29wcyA9IGdfc2xpc3RfcmVtb3ZlKHBlcmZfZ3RrX19lcnJvcl9sb29wcywgbG9vcCk7XG4rXHRnX21haW5fbG9vcF91bnJlZihsb29wKTtcbitcbiBcdGZyZWUobXNnKTtcbiBcdHJldHVybiAwO1xuIH1cbiBcbi0jaWZkZWYgSEFWRV9HVEtfSU5GT19CQVJfU1VQUE9SVFxuIHN0YXRpYyBpbnQgcGVyZl9ndGtfX3dhcm5pbmdfaW5mb19iYXIoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpXG4ge1xuIFx0Y2hhciAqbXNnO1xuK1x0dmFfbGlzdCBhcmdzX2NvcHk7XG4gXG4rXHR2YV9jb3B5KGFyZ3NfY29weSwgYXJncyk7XG4gXHRpZiAoIXBlcmZfZ3RrX19pc19hY3RpdmVfY29udGV4dChwZ2N0eCkgfHxcbi1cdCAgICB2YXNwcmludGYoXHUwMDI2bXNnLCBmb3JtYXQsIGFyZ3MpIFx1MDAzYyAwKSB7XG4rXHQgICAgdmFzcHJpbnRmKFx1MDAyNm1zZywgZm9ybWF0LCBhcmdzX2NvcHkpIFx1MDAzYyAwKSB7XG4rXHRcdHZhX2VuZChhcmdzX2NvcHkpO1xuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCJXYXJuaW5nOlxcblwiKTtcbiBcdFx0dmZwcmludGYoc3RkZXJyLCBmb3JtYXQsIGFyZ3MpO1xuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCJcXG5cIik7XG4gXHRcdHJldHVybiAtMTtcbiBcdH1cbitcdHZhX2VuZChhcmdzX2NvcHkpO1xuIFxuIFx0Z3RrX2xhYmVsX3NldF90ZXh0KEdUS19MQUJFTChwZ2N0eC1cdTAwM2VtZXNzYWdlX2xhYmVsKSwgbXNnKTtcbiBcdGd0a19pbmZvX2Jhcl9zZXRfbWVzc2FnZV90eXBlKEdUS19JTkZPX0JBUihwZ2N0eC1cdTAwM2VpbmZvX2JhciksXG4gXHRcdFx0XHQgICAgICBHVEtfTUVTU0FHRV9XQVJOSU5HKTtcbi1cdGd0a193aWRnZXRfc2hvdyhwZ2N0eC1cdTAwM2VpbmZvX2Jhcik7XG4tXG4tXHRmcmVlKG1zZyk7XG4tXHRyZXR1cm4gMDtcbi19XG4tI2Vsc2Vcbi1zdGF0aWMgaW50IHBlcmZfZ3RrX193YXJuaW5nX3N0YXR1c2Jhcihjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncylcbi17XG4tXHRjaGFyICptc2csICpwO1xuLVxuLVx0aWYgKCFwZXJmX2d0a19faXNfYWN0aXZlX2NvbnRleHQocGdjdHgpIHx8XG4tXHQgICAgdmFzcHJpbnRmKFx1MDAyNm1zZywgZm9ybWF0LCBhcmdzKSBcdTAwM2MgMCkge1xuLVx0XHRmcHJpbnRmKHN0ZGVyciwgXCJXYXJuaW5nOlxcblwiKTtcbi1cdFx0dmZwcmludGYoc3RkZXJyLCBmb3JtYXQsIGFyZ3MpO1xuLVx0XHRmcHJpbnRmKHN0ZGVyciwgXCJcXG5cIik7XG4tXHRcdHJldHVybiAtMTtcbi1cdH1cbi1cbi1cdGd0a19zdGF0dXNiYXJfcG9wKEdUS19TVEFUVVNCQVIocGdjdHgtXHUwMDNlc3RhdGJhciksXG4tXHRcdFx0ICBwZ2N0eC1cdTAwM2VzdGF0YmFyX2N0eF9pZCk7XG4tXG4tXHQvKiBPbmx5IGZpcnN0IGxpbmUgY2FuIGJlIGRpc3BsYXllZCAqL1xuLVx0cCA9IHN0cmNocihtc2csICdcXG4nKTtcbi1cdGlmIChwKVxuLVx0XHQqcCA9ICdcXDAnO1xuLVxuLVx0Z3RrX3N0YXR1c2Jhcl9wdXNoKEdUS19TVEFUVVNCQVIocGdjdHgtXHUwMDNlc3RhdGJhciksXG4tXHRcdFx0ICAgcGdjdHgtXHUwMDNlc3RhdGJhcl9jdHhfaWQsIG1zZyk7XG4rXHRndGtfd2lkZ2V0X3NldF92aXNpYmxlKHBnY3R4LVx1MDAzZWluZm9fYmFyLCBUUlVFKTtcbiBcbiBcdGZyZWUobXNnKTtcbiBcdHJldHVybiAwO1xuIH1cbi0jZW5kaWZcbiBcbiBzdHJ1Y3QgcGVyZl9lcnJvcl9vcHMgcGVyZl9ndGtfZW9wcyA9IHtcbiBcdC5lcnJvclx0XHQ9IHBlcmZfZ3RrX19lcnJvcixcbi0jaWZkZWYgSEFWRV9HVEtfSU5GT19CQVJfU1VQUE9SVFxuIFx0Lndhcm5pbmdcdD0gcGVyZl9ndGtfX3dhcm5pbmdfaW5mb19iYXIsXG4tI2Vsc2Vcbi1cdC53YXJuaW5nXHQ9IHBlcmZfZ3RrX193YXJuaW5nX3N0YXR1c2Jhcixcbi0jZW5kaWZcbiB9O1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvc2V0dXAuYyBiL3Rvb2xzL3BlcmYvdWkvc2V0dXAuY1xuaW5kZXggZmY4MDAwNDdlNjk3Zi4uZDg4NzM0NmM3YTYzMiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdWkvc2V0dXAuY1xuKysrIGIvdG9vbHMvcGVyZi91aS9zZXR1cC5jXG5AQCAtMTQsNyArMTQsNyBAQCBpbnQgdXNlX2Jyb3dzZXIgPSAtMTtcbiBcbiAjZGVmaW5lIFBFUkZfR1RLX0RTTyBcImxpYnBlcmYtZ3RrLnNvXCJcbiBcbi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlRcbisjaWZkZWYgSEFWRV9HVEs0X1NVUFBPUlRcbiBcbiBzdGF0aWMgaW50IHNldHVwX2d0a19icm93c2VyKHZvaWQpXG4ge1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5jIGIvdG9vbHMvcGVyZi91dGlsL2Fubm90YXRlLmNcbmluZGV4IGRmNzBlOTVhODQ3MDQuLjEyM2I2ZDVmY2VhNzggMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuY1xuKysrIGIvdG9vbHMvcGVyZi91dGlsL2Fubm90YXRlLmNcbkBAIC0xNDUsNiArMTQ1LDE3IEBAIHN0YXRpYyBpbnQgYW5ub3RhdGVkX3NvdXJjZV9fYWxsb2NfaGlzdG9ncmFtcyhzdHJ1Y3QgYW5ub3RhdGVkX3NvdXJjZSAqc3JjLFxuIFx0cmV0dXJuIHNyYy1cdTAwM2VoaXN0b2dyYW1zID8gMCA6IC0xO1xuIH1cbiBcbitzdHJ1Y3Qgc3ltX2hpc3RfZW50cnkgKlxuK2Fubm90YXRlZF9zb3VyY2VfX2hpc3RfZW50cnkoc3RydWN0IGFubm90YXRlZF9zb3VyY2UgKnNyYywgY29uc3Qgc3RydWN0IGV2c2VsICpldnNlbCwgdTY0IG9mZnNldClcbit7XG4rXHRzdHJ1Y3Qgc3ltX2hpc3RfZW50cnkgKmVudHJ5O1xuK1x0bG9uZyBrZXkgPSBvZmZzZXQgXHUwMDNjXHUwMDNjIDE2IHwgZXZzZWwtXHUwMDNlY29yZS5pZHg7XG4rXG4rXHRpZiAoIWhhc2htYXBfX2ZpbmQoc3JjLVx1MDAzZXNhbXBsZXMsIGtleSwgXHUwMDI2ZW50cnkpKVxuK1x0XHRyZXR1cm4gTlVMTDtcbitcdHJldHVybiBlbnRyeTtcbit9XG4rXG4gdm9pZCBzeW1ib2xfX2Fubm90YXRlX3plcm9faGlzdG9ncmFtcyhzdHJ1Y3Qgc3ltYm9sICpzeW0pXG4ge1xuIFx0c3RydWN0IGFubm90YXRpb24gKm5vdGVzID0gc3ltYm9sX19hbm5vdGF0aW9uKHN5bSk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL2Fubm90YXRlLmggYi90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuaFxuaW5kZXggZmEwOGQwOWI4MGY3Ni4uNDAwMzhhMzc3OWQ0NiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5oXG4rKysgYi90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuaFxuQEAgLTQwNiwxNiArNDA2LDggQEAgc3RhdGljIGlubGluZSBzdHJ1Y3Qgc3ltX2hpc3QgKmFubm90YXRpb25fX2hpc3RvZ3JhbShzdHJ1Y3QgYW5ub3RhdGlvbiAqbm90ZXMsXG4gXHRyZXR1cm4gYW5ub3RhdGVkX3NvdXJjZV9faGlzdG9ncmFtKG5vdGVzLVx1MDAzZXNyYywgZXZzZWwpO1xuIH1cbiBcbi1zdGF0aWMgaW5saW5lIHN0cnVjdCBzeW1faGlzdF9lbnRyeSAqXG4tYW5ub3RhdGVkX3NvdXJjZV9faGlzdF9lbnRyeShzdHJ1Y3QgYW5ub3RhdGVkX3NvdXJjZSAqc3JjLCBjb25zdCBzdHJ1Y3QgZXZzZWwgKmV2c2VsLCB1NjQgb2Zmc2V0KVxuLXtcbi1cdHN0cnVjdCBzeW1faGlzdF9lbnRyeSAqZW50cnk7XG4tXHRsb25nIGtleSA9IG9mZnNldCBcdTAwM2NcdTAwM2MgMTYgfCBldnNlbC1cdTAwM2Vjb3JlLmlkeDtcbi1cbi1cdGlmICghaGFzaG1hcF9fZmluZChzcmMtXHUwMDNlc2FtcGxlcywga2V5LCBcdTAwMjZlbnRyeSkpXG4tXHRcdHJldHVybiBOVUxMO1xuLVx0cmV0dXJuIGVudHJ5O1xuLX1cbitzdHJ1Y3Qgc3ltX2hpc3RfZW50cnkgKlxuK2Fubm90YXRlZF9zb3VyY2VfX2hpc3RfZW50cnkoc3RydWN0IGFubm90YXRlZF9zb3VyY2UgKnNyYywgY29uc3Qgc3RydWN0IGV2c2VsICpldnNlbCwgdTY0IG9mZnNldCk7XG4gXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgYW5ub3RhdGlvbiAqc3ltYm9sX19hbm5vdGF0aW9uKHN0cnVjdCBzeW1ib2wgKnN5bSlcbiB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwMjoxNzoyOS42ODAxMDQ5MTVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2ODcwOTA5MDkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlBhdGNoIFRyaWFnZSAtIFdvcnRoRnV6emluZyBFdmFsdWF0aW9uKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBoaXRzIGZpbGVzIHdpdGhpbiBgdG9vbHMvYnVpbGQvYCBhbmQgYHRvb2xzL3BlcmYvYC4gUmlnaHQgYXdheSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBtb2RpZmllZCBmaWxlcyBsaXN0IHRvIGJlIHN1cmUuIEkgc2VlOiBgdG9vbHMvYnVpbGQvTWFrZWZpbGUuZmVhdHVyZWAsIGB0b29scy9idWlsZC9mZWF0dXJlL01ha2VmaWxlYCwgYW5kIGEgZmV3IHNvdXJjZSBmaWxlcyByZWxhdGVkIHRvIHRlc3RpbmcgYW5kIEdUSywgdGhlbiBhIHNsZXcgb2YgZmlsZXMgd2l0aGluIGB0b29scy9wZXJmL2AsIGluY2x1ZGluZyBNYWtlZmlsZXMsIGJ1aWx0aW5zLCBzY3JpcHRzLCB0ZXN0IGNvbXBvbmVudHMsIGFuZCBHVEstYmFzZWQgVUkgZWxlbWVudHMgYW5kIHV0aWxpdHkgZnVuY3Rpb25zLiBBbGwgb2YgdGhlc2UgZmlsZXMgYXJlIGluIHVzZXJzcGFjZS5cblxuQmFzZWQgb24gdGhlIHRyaWFnZSBndWlkZWxpbmVzLCBzcGVjaWZpY2FsbHkgU2VjdGlvbiAyLCB0aGUgcXVlc3Rpb24gaXMgd2hldGhlciB0aGVzZSBjaGFuZ2VzIGZhbGwgZW50aXJlbHkgd2l0aGluIHVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMsIGFuZCB0aGF0IHRoZXkgZG9uJ3QgaW1wYWN0IHRoZSBrZXJuZWwgaW1hZ2UgKGB2bWxpbnV4YCkgb3IgYW55IGtlcm5lbCBtb2R1bGVzLiBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCB0aGVzZSB0b29scyBhcmUgdW5saWtlbHkgdG8gaW1wYWN0IGB2bWxpbnV4YC5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBubyBvdGhlciBhcmVhcyBhcmUgYWZmZWN0ZWQuIEkndmUgZG91YmxlLWNoZWNrZWQgdGhlIGRpZmYgYW5kIGl0IGlzIGNsZWFyIHRoYXQgYWJzb2x1dGVseSBldmVyeSBtb2RpZmllZCBmaWxlIGJlZ2lucyB3aXRoIGB0b29scy9gLiBTbywgdGhpcyBpcyBhbGwgdG9vbGluZy4gVGhlIGB0b29scy9gIGRpcmVjdG9yeSBpcyBkZWRpY2F0ZWQgdG8gdXNlci1zcGFjZSB0b29scy4gTm90aGluZyBpbiB0aGlzIHBhdGNoIHRvdWNoZXMgdGhlIGNvcmUga2VybmVsIG9yIGFueSBtb2R1bGVzLlxuXG5UaGVyZWZvcmUsIGFwcGx5aW5nIHRoZSB0cmlhZ2UgZ3VpZGVsaW5lcywgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIHNldCB0byBgZmFsc2VgLiBNeSByZWFzb25pbmcgaXMgc29saWQ6IHRoZSBjaGFuZ2VzIGFyZSBjb25maW5lZCB0byB1c2VyLXNwYWNlIHRvb2xpbmcgd2l0aGluIGB0b29scy9wZXJmYCBhbmQgYHRvb2xzL2J1aWxkYCwgYW5kIHRoZXkgaGF2ZSBubyBpbXBhY3Qgb24gdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAoYHZtbGludXhgKSBvciBrZXJuZWwgbW9kdWxlcy5cblxuSSdsbCBzZXQgYEZvY3VzU3ltYm9sc2AgdG8gYFtdYCBhbmQgYEVuYWJsZUNvbmZpZ3NgIHRvIGBbXWAgYXMgd2VsbC4gVGhhdCBsb29rcyByaWdodC4gSSdsbCBtYWtlIGEgc2FuaXR5IGNoZWNrIHVzaW5nIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NTY4LCJPdXRwdXRUb2tlbnMiOjgwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDI6MTc6MzYuNTUxMDE2OTk2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODAwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIkFsbCBjaGFuZ2VzIGluIHRoaXMgcGF0Y2ggc2VyaWVzIGFyZSBzdHJpY3RseSBjb25maW5lZCB0byB1c2VyLXNwYWNlIHRvb2xpbmcgdW5kZXIgYHRvb2xzL2AgKHNwZWNpZmljYWxseSBgdG9vbHMvcGVyZmAgYW5kIGB0b29scy9idWlsZGApLCB3aGljaCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKGB2bWxpbnV4YCkgb3Iga2VybmVsIG1vZHVsZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIkFsbCBjaGFuZ2VzIGluIHRoaXMgcGF0Y2ggc2VyaWVzIGFyZSBzdHJpY3RseSBjb25maW5lZCB0byB1c2VyLXNwYWNlIHRvb2xpbmcgdW5kZXIgYHRvb2xzL2AgKHNwZWNpZmljYWxseSBgdG9vbHMvcGVyZmAgYW5kIGB0b29scy9idWlsZGApLCB3aGljaCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKGB2bWxpbnV4YCkgb3Iga2VybmVsIG1vZHVsZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwMjoxNzozNi41NTEwMzg3MTZaIiwiU2VxIjo1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowvc2bq[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-07 02:16:11 +0000 UTC FinishedAt: 2026-09-07 02:17:37 +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+CgkJCTx0ZD4yMDI2LzA5LzA3IDAyOjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtBbGwgY2hhbmdlcyBpbiB0aGlzIHBhdGNoIHNlcmllcyBhcmUgc3RyaWN0bHkgY29uZmluZWQgdG8gdXNlci1zcGFjZSB0b29saW5nIHVuZGVyIGB0b29scy9gIChzcGVjaWZpY2FsbHkgYHRvb2xzL3BlcmZgIGFuZCBgdG9vbHMvYnVpbGRgKSwgd2hpY2ggZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlIChgdm1saW51eGApIG9yIGtlcm5lbCBtb2R1bGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwMjoxNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDNjZjhmMzQ4YTUyNWE5NTdjODc4NTY4ZDQ2ZDgwMGNhMDZkYjFhOTNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCA3IDAyOjE3OjI2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL01ha2VmaWxlLmZlYXR1cmUgYi90b29scy9idWlsZC9NYWtlZmlsZS5mZWF0dXJlXG5pbmRleCA5OWViMGVhMDk1Mzc1Li40ZWM5NWMzNWE1YzE5IDEwMDY0NFxuLS0tIGEvdG9vbHMvYnVpbGQvTWFrZWZpbGUuZmVhdHVyZVxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvYnVpbGQvTWFrZWZpbGUuZmVhdHVyZVxuQEAgLTExMyw4ICYjNDM7MTEzLDcgQEAgRkVBVFVSRV9URVNUU19FWFRSQSA6PSAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgY29tcGlsZS14MzIgICAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgY3BsdXMtZGVtYW5nbGUgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgY3hhLWRlbWFuZ2xlICAgICAgICAgICAgICAgICAgIFxcXG4tICAgICAgICAgZ3RrMiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4tICAgICAgICAgZ3RrMi1pbmZvYmFyICAgICAgICAgICAgICAgICAgIFxcXG4mIzQzOyAgICAgICAgIGd0azQgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxuICAgICAgICAgIGhlbGxvICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxuICAgICAgICAgIGJhYmVsdHJhY2UyLWN0Zi13cml0ZXIgICAgICAgICBcXFxuICAgICAgICAgIGxpYmNhcHN0b25lICAgICAgICAgICAgICAgICAgICBcXFxuQEAgLTE0Myw2ICYjNDM7MTQyLDcgQEAgZW5kaWZcbiBGRUFUVVJFX0RJU1BMQVkgPz0gICAgICAgICAgICAgIFxcXG4gICAgICAgICAgbGliZHcgICAgICAgICAgICAgICAgICBcXFxuICAgICAgICAgIGdsaWJjICAgICAgICAgICAgICAgICAgXFxcbiYjNDM7ICAgICAgICAgZ3RrNCAgICAgICAgICAgICAgICAgICBcXFxuICAgICAgICAgIGxpYmVsZiAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICBsaWJudW1hICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgbnVtYV9udW1fcG9zc2libGVfY3B1cyBcXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvTWFrZWZpbGUgYi90b29scy9idWlsZC9mZWF0dXJlL01ha2VmaWxlXG5pbmRleCA3ZDE2NTAxODExNmE1Li4wMWM0OGU2ZWYwMjFkIDEwMDY0NFxuLS0tIGEvdG9vbHMvYnVpbGQvZmVhdHVyZS9NYWtlZmlsZVxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvYnVpbGQvZmVhdHVyZS9NYWtlZmlsZVxuQEAgLTExLDggJiM0MzsxMSw3IEBAIEZJTEVTPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgdGVzdC1ldmVudGZkLmJpbiAgICAgICAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICB0ZXN0LWZvcnRpZnktc291cmNlLmJpbiAgICAgICAgICAgICAgICBcXFxuICAgICAgICAgIHRlc3QtZ2xpYmMuYmluICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4tICAgICAgICAgdGVzdC1ndGsyLmJpbiAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbi0gICAgICAgICB0ZXN0LWd0azItaW5mb2Jhci5iaW4gICAgICAgICAgICAgICAgICBcXFxuJiM0MzsgICAgICAgICB0ZXN0LWd0azQuYmluICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxuICAgICAgICAgIHRlc3QtaGVsbG8uYmluICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgdGVzdC1saWJiZmQuYmluICAgICAgICAgICAgICAgICAgICAgICAgXFxcbiBcdCB0ZXN0LWxpYmJmZC10aHJlYWRzYWZlLmJpbiAgICAgIFx0XFxcbkBAIC0yNDAsMTEgJiM0MzsyMzksOCBAQCAkKE9VVFBVVCl0ZXN0LWxpYmNwdXBvd2VyLmJpbjpcbiAkKE9VVFBVVCl0ZXN0LWxpYnRyYWNlZnMuYmluOlxuIFx0ICQoQlVJTEQpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWNmbGFncyBsaWJ0cmFjZWZzIDJcdTAwM2UvZGV2L251bGwpIC1sdHJhY2Vmc1xuIFxuLSQoT1VUUFVUKXRlc3QtZ3RrMi5iaW46XG4tXHQkKEJVSUxEKSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIC0tY2ZsYWdzIGd0ayYjNDM7LTIuMCAyXHUwMDNlL2Rldi9udWxsKSAtV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zXG4tXG4tJChPVVRQVVQpdGVzdC1ndGsyLWluZm9iYXIuYmluOlxuLVx0JChCVUlMRCkgJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyAtLWNmbGFncyBndGsmIzQzOy0yLjAgMlx1MDAzZS9kZXYvbnVsbClcbiYjNDM7JChPVVRQVVQpdGVzdC1ndGs0LmJpbjpcbiYjNDM7XHQkKEJVSUxEKSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIC0tY2ZsYWdzIGd0azQgMlx1MDAzZS9kZXYvbnVsbClcbiBcbiBncmVwLWxpYnMgID0gJChmaWx0ZXIgLWwlLCQoMSkpXG4gc3RyaXAtbGlicyA9ICQoZmlsdGVyLW91dCAtbCUsJCgxKSlcbmRpZmYgLS1naXQgYS90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi1pbmZvYmFyLmMgYi90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi1pbmZvYmFyLmNcbmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggYjFiNzE2ZGQ1NzMzMC4uMDAwMDAwMDAwMDAwMFxuLS0tIGEvdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azItaW5mb2Jhci5jXG4mIzQzOyYjNDM7JiM0MzsgL2Rldi9udWxsXG5AQCAtMSwxMiAmIzQzOzAsMCBAQFxuLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4tI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkIFwmIzM0Oy1Xc3RyaWN0LXByb3RvdHlwZXNcJiMzNDtcbi0jaW5jbHVkZSBcdTAwM2NndGsvZ3RrLmhcdTAwM2Vcbi0jcHJhZ21hIEdDQyBkaWFnbm9zdGljIGVycm9yIFwmIzM0Oy1Xc3RyaWN0LXByb3RvdHlwZXNcJiMzNDtcbi1cbi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuLXtcbi1cdGd0a19pbml0KFx1MDAyNmFyZ2MsIFx1MDAyNmFyZ3YpO1xuLVx0Z3RrX2luZm9fYmFyX25ldygpO1xuLVxuLVx0cmV0dXJuIDA7XG4tfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGsyLmMgYi90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrNC5jXG5zaW1pbGFyaXR5IGluZGV4IDc2JVxucmVuYW1lIGZyb20gdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azIuY1xucmVuYW1lIHRvIHRvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGs0LmNcbmluZGV4IDJhYWY0YmZjMjA1NTYuLmI5NTIwZTc0MDhiOTkgMTAwNjQ0XG4tLS0gYS90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrNC5jXG5AQCAtMyw5ICYjNDM7Myw5IEBAXG4gI2luY2x1ZGUgXHUwMDNjZ3RrL2d0ay5oXHUwMDNlXG4gI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBlcnJvciBcJiMzNDstV3N0cmljdC1wcm90b3R5cGVzXCYjMzQ7XG4gXG4taW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiYjNDM7aW50IG1haW4odm9pZClcbiB7XG4tXHRndGtfaW5pdChcdTAwMjZhcmdjLCBcdTAwMjZhcmd2KTtcbiYjNDM7XHRndGtfaW5pdCgpO1xuIFxuICAgICAgICAgcmV0dXJuIDA7XG4gfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvRG9jdW1lbnRhdGlvbi9wZXJmLXJlcG9ydC50eHQgYi90b29scy9wZXJmL0RvY3VtZW50YXRpb24vcGVyZi1yZXBvcnQudHh0XG5pbmRleCAyMmY4N2VhYTMyNzk2Li43YWY5YjNmODFjMDY1IDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi9Eb2N1bWVudGF0aW9uL3BlcmYtcmVwb3J0LnR4dFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi9Eb2N1bWVudGF0aW9uL3BlcmYtcmVwb3J0LnR4dFxuQEAgLTM1MSw3ICYjNDM7MzUxLDcgQEAgT1BUSU9OU1xuIFx0cmVxdWlyZXMgYSB0dHksIGlmIG9uZSBpcyBub3QgcHJlc2VudCwgYXMgd2hlbiBwaXBpbmcgdG8gb3RoZXJcbiBcdGNvbW1hbmRzLCB0aGUgc3RkaW8gaW50ZXJmYWNlIGlzIHVzZWQuXG4gXG4tLS1ndGs6OiBVc2UgdGhlIEdUSzIgaW50ZXJmYWNlLlxuJiM0MzstLWd0azo6IFVzZSB0aGUgR1RLNCBpbnRlcmZhY2UuXG4gXG4gLWs6OlxuIC0tdm1saW51eD1cdTAwM2NmaWxlXHUwMDNlOjpcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL01ha2VmaWxlIGIvdG9vbHMvcGVyZi9NYWtlZmlsZVxuaW5kZXggNWI3MTM4MzdlZWRlNy4uNTYwMTQxMDY0NzlhMyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvTWFrZWZpbGVcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvTWFrZWZpbGVcbkBAIC0xMDYsNyAmIzQzOzEwNiw3IEBAIGNsZWFuOlxuICMgbWFrZSAtQyB0b29scy9wZXJmIC1mIHRlc3RzL21ha2VcbiAjXG4gYnVpbGQtdGVzdDpcbi1cdEAkKE1BS0UpIFNIVUY9MSAtZiB0ZXN0cy9tYWtlIFJFVVNFX0ZFQVRVUkVTX0RVTVA9MSBNSz1NYWtlZmlsZSBTRVRfUEFSQUxMRUw9MSAtLW5vLXByaW50LWRpcmVjdG9yeSB0YXJwa2cgbWFrZV9zdGF0aWMgbWFrZV93aXRoX2d0azIgb3V0XG4mIzQzO1x0QCQoTUFLRSkgU0hVRj0xIC1mIHRlc3RzL21ha2UgUkVVU0VfRkVBVFVSRVNfRFVNUD0xIE1LPU1ha2VmaWxlIFNFVF9QQVJBTExFTD0xIC0tbm8tcHJpbnQtZGlyZWN0b3J5IHRhcnBrZyBtYWtlX3N0YXRpYyBtYWtlX3dpdGhfZ3RrNCBvdXRcbiBcbiBidWlsZC10ZXN0LXRhcmJhbGw6XG4gXHRAJChNQUtFKSAtZiB0ZXN0cy9tYWtlIFJFVVNFX0ZFQVRVUkVTX0RVTVA9MSBNSz1NYWtlZmlsZSBTRVRfUEFSQUxMRUw9MSAtLW5vLXByaW50LWRpcmVjdG9yeSBvdXRcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL01ha2VmaWxlLmNvbmZpZyBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUuY29uZmlnXG5pbmRleCA0ZDU5OTNkYTlmOTQ1Li40ZWU3MzkzYTM5ZjkxIDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi9NYWtlZmlsZS5jb25maWdcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUuY29uZmlnXG5AQCAtNzc0LDIxICYjNDM7Nzc0LDIyIEBAIGlmbmRlZiBOT19TTEFOR1xuICAgZW5kaWZcbiBlbmRpZlxuIFxuLWlmZGVmIEdUSzJcbi0gIEZMQUdTX0dUSzI9JChDRkxBR1MpICQoTERGTEFHUykgJChFWFRMSUJTKSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIC0tY2ZsYWdzIGd0ayYjNDM7LTIuMCAyXHUwMDNlL2Rldi9udWxsKVxuLSAgJChjYWxsIGZlYXR1cmVfY2hlY2ssZ3RrMilcbi0gIGlmbmVxICgkKGZlYXR1cmUtZ3RrMiksIDEpXG4tICAgICQod2FybmluZyBHVEsyIG5vdCBmb3VuZCwgZGlzYWJsZXMgR1RLMiBzdXBwb3J0LiBQbGVhc2UgaW5zdGFsbCBndGsyLWRldmVsIG9yIGxpYmd0azIuMC1kZXYpXG4tICAgIE5PX0dUSzIgOj0gMVxuJiM0MztpZmRlZiBHVEs0XG4mIzQzOyAgRkxBR1NfR1RLND0kKENGTEFHUykgJChMREZMQUdTKSAkKEVYVExJQlMpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgLS1jZmxhZ3MgZ3RrNCAyXHUwMDNlL2Rldi9udWxsKVxuJiM0MzsgICQoY2FsbCBmZWF0dXJlX2NoZWNrLGd0azQpXG4mIzQzOyAgaWZuZXEgKCQoZmVhdHVyZS1ndGs0KSwgMSlcbiYjNDM7ICAgICQod2FybmluZyBHVEs0IG5vdCBmb3VuZCwgZGlzYWJsZXMgR1RLNCBzdXBwb3J0LiBQbGVhc2UgaW5zdGFsbCBndGs0LWRldmVsIG9yIGxpYmd0ay00LWRldilcbiYjNDM7ICAgIE5PX0dUSzQgOj0gMVxuICAgZWxzZVxuLSAgICAkKGNhbGwgZmVhdHVyZV9jaGVjayxndGsyLWluZm9iYXIpXG4tICAgIGlmZXEgKCQoZmVhdHVyZS1ndGsyLWluZm9iYXIpLCAxKVxuLSAgICAgIEdUS19DRkxBR1MgOj0gLURIQVZFX0dUS19JTkZPX0JBUl9TVVBQT1JUXG4tICAgIGVuZGlmXG4tICAgIENGTEFHUyAmIzQzOz0gLURIQVZFX0dUSzJfU1VQUE9SVFxuLSAgICBHVEtfQ0ZMQUdTICYjNDM7PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1jZmxhZ3MgZ3RrJiM0MzstMi4wIDJcdTAwM2UvZGV2L251bGwpXG4tICAgIEdUS19MSUJTIDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgZ3RrJiM0MzstMi4wIDJcdTAwM2UvZGV2L251bGwpXG4mIzQzOyAgICBDRkxBR1MgJiM0Mzs9IC1ESEFWRV9HVEs0X1NVUFBPUlRcbiYjNDM7ICAgIEdUS19DRkxBR1MgJiM0Mzs9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWNmbGFncyBndGs0IDJcdTAwM2UvZGV2L251bGwpXG4mIzQzOyAgICBHVEtfTElCUyA6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIGd0azQgMlx1MDAzZS9kZXYvbnVsbClcbiAgICAgRVhUTElCUyAmIzQzOz0gLWxkbFxuJiM0MzsgICAgIyBsaWJwZXJmLWd0ay5zbyBpcyBkbG9wZW4oKWVkIGF0IHJ1bnRpbWUgYW5kIGNhbGxzIGJhY2sgaW50b1xuJiM0MzsgICAgIyBzeW1ib2xzIGRlZmluZWQgaW4gdGhlIHBlcmYgYmluYXJ5IGl0c2VsZiAoY2FsbGNoYWluX3BhcmFtLFxuJiM0MzsgICAgIyBzeW1ib2xfY29uZiwgZXZzZWxfX25hbWUsIC4uLik6IHBlcmYgbmVlZHMgdG8gZXhwb3J0IHRob3NlXG4mIzQzOyAgICAjIGR5bmFtaWNhbGx5IGZvciB0aGUgcGx1Z2luIHRvIHJlc29sdmUgdGhlbS5cbiYjNDM7ICAgIExERkxBR1MgJiM0Mzs9IC1yZHluYW1pY1xuICAgZW5kaWZcbiBlbmRpZlxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvTWFrZWZpbGUucGVyZiBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUucGVyZlxuaW5kZXggMjljZmQ0NGM0MjdmMy4uMjQzOGI0MGVhYWVjMSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvTWFrZWZpbGUucGVyZlxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi9NYWtlZmlsZS5wZXJmXG5AQCAtNDksNyAmIzQzOzQ5LDcgQEAgaW5jbHVkZSAuLi9zY3JpcHRzL3V0aWxpdGllcy5tYWtcbiAjXG4gIyBEZWZpbmUgTk9fU0xBTkcgaWYgeW91IGRvIG5vdCB3YW50IFRVSSBzdXBwb3J0LlxuICNcbi0jIERlZmluZSBHVEsyIGlmIHlvdSB3YW50IEdUSyYjNDM7IEdVSSBzdXBwb3J0LlxuJiM0MzsjIERlZmluZSBHVEs0IGlmIHlvdSB3YW50IEdUSyYjNDM7IEdVSSBzdXBwb3J0LlxuICNcbiAjIERlZmluZSBOT19ERU1BTkdMRSBpZiB5b3UgZG8gbm90IHdhbnQgQyYjNDM7JiM0Mzsgc3ltYm9sIGRlbWFuZ2xpbmcuXG4gI1xuQEAgLTQ3Myw3ICYjNDM7NDczLDcgQEAgaWZuZXEgKCQoT1VUUFVUKSwpXG4gICBDRkxBR1MgJiM0Mzs9IC1JJChPVVRQVVQpXG4gZW5kaWZcbiBcbi1pZmRlZiBHVEsyXG4mIzQzO2lmZGVmIEdUSzRcbiAgIEFMTF9QUk9HUkFNUyAmIzQzOz0gJChPVVRQVVQpbGlicGVyZi1ndGsuc29cbiAgIEdUS19JTiA6PSAkKE9VVFBVVClndGstaW4ub1xuIGVuZGlmXG5AQCAtODExLDcgJiM0Mzs4MTEsNyBAQCBjaGVjazogcHJlcGFyZVxuIFxuICMjIyBJbnN0YWxsYXRpb24gcnVsZXNcbiBcbi1pZmRlZiBHVEsyXG4mIzQzO2lmZGVmIEdUSzRcbiBpbnN0YWxsLWd0azogJChPVVRQVVQpbGlicGVyZi1ndGsuc29cbiBcdCQoY2FsbCBRVUlFVF9JTlNUQUxMLCAmIzM5O0dUSyBVSSYjMzk7KSBcXFxuIFx0XHQkKElOU1RBTEwpIC1kIC1tIDc1NSAmIzM5OyQoREVTVERJUl9TUSkkKGxpYmRpcl9TUSkmIzM5OzsgXFxcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL2J1aWx0aW4tYW5ub3RhdGUuYyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1hbm5vdGF0ZS5jXG5pbmRleCA2OWNiNzJiMjA4MmE2Li4xNTE2M2UwODFhOGNlIDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi9idWlsdGluLWFubm90YXRlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1hbm5vdGF0ZS5jXG5AQCAtNTIsNyAmIzQzOzUyLDcgQEAgc3RydWN0IHBlcmZfYW5ub3RhdGUge1xuIFx0Ym9vbFx0ICAgdXNlX3R1aTtcbiAjZW5kaWZcbiBcdGJvb2xcdCAgIHVzZV9zdGRpbywgdXNlX3N0ZGlvMjtcbi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlRcbiYjNDM7I2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXG4gXHRib29sXHQgICB1c2VfZ3RrO1xuICNlbmRpZlxuIFx0Ym9vbFx0ICAgc2tpcF9taXNzaW5nO1xuQEAgLTcxMiw3ICYjNDM7NzEyLDcgQEAgaW50IGNtZF9hbm5vdGF0ZShpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpXG4gXHRPUFRfQk9PTEVBTigmIzM5O3EmIzM5OywgXCYjMzQ7cXVpZXRcJiMzNDssIFx1MDAyNnF1aWV0LCBcJiMzNDtkbyBub3cgc2hvdyBhbnkgd2FybmluZ3Mgb3IgbWVzc2FnZXNcJiMzNDspLFxuIFx0T1BUX0JPT0xFQU4oJiMzOTtEJiMzOTssIFwmIzM0O2R1bXAtcmF3LXRyYWNlXCYjMzQ7LCBcdTAwMjZkdW1wX3RyYWNlLFxuIFx0XHQgICAgXCYjMzQ7ZHVtcCByYXcgdHJhY2UgaW4gQVNDSUlcJiMzNDspLFxuLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVFxuJiM0MzsjaWZkZWYgSEFWRV9HVEs0X1NVUFBPUlRcbiBcdE9QVF9CT09MRUFOKDAsIFwmIzM0O2d0a1wmIzM0OywgXHUwMDI2YW5ub3RhdGUudXNlX2d0aywgXCYjMzQ7VXNlIHRoZSBHVEsgaW50ZXJmYWNlXCYjMzQ7KSxcbiAjZW5kaWZcbiAjaWZkZWYgSEFWRV9TTEFOR19TVVBQT1JUXG5AQCAtODI4LDcgJiM0Mzs4MjgsNyBAQCBpbnQgY21kX2Fubm90YXRlKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndilcbiBcdGlmIChhbm5vdGF0ZV9jaGVja19hcmdzKCkgXHUwMDNjIDApXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVFxuJiM0MzsjaWZkZWYgSEFWRV9HVEs0X1NVUFBPUlRcbiBcdGlmIChzeW1ib2xfY29uZi5zaG93X25yX3NhbXBsZXMgXHUwMDI2XHUwMDI2IGFubm90YXRlLnVzZV9ndGspIHtcbiBcdFx0cHJfZXJyKFwmIzM0Oy0tc2hvdy1uci1zYW1wbGVzIGlzIG5vdCBhdmFpbGFibGUgaW4gLS1ndGsgbW9kZSBhdCB0aGlzIHRpbWVcXG5cJiMzNDspO1xuIFx0XHRyZXR1cm4gcmV0O1xuQEAgLTg5OCw3ICYjNDM7ODk4LDcgQEAgaW50IGNtZF9hbm5vdGF0ZShpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpXG4gXHRlbHNlIGlmIChhbm5vdGF0ZS51c2VfdHVpKVxuIFx0XHR1c2VfYnJvd3NlciA9IDE7XG4gI2VuZGlmXG4tI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUXG4mIzQzOyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVFxuIFx0ZWxzZSBpZiAoYW5ub3RhdGUudXNlX2d0aylcbiBcdFx0dXNlX2Jyb3dzZXIgPSAyO1xuICNlbmRpZlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1yZXBvcnQuYyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1yZXBvcnQuY1xuaW5kZXggNjBkMWYxNjY2MjllMC4uZDE0Mzg0YzU4NDY2MSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1yZXBvcnQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi9idWlsdGluLXJlcG9ydC5jXG5AQCAtODIsNyAmIzQzOzgyLDcgQEAgc3RydWN0IHJlcG9ydCB7XG4gI2lmZGVmIEhBVkVfU0xBTkdfU1VQUE9SVFxuIFx0Ym9vbFx0XHRcdHVzZV90dWk7XG4gI2VuZGlmXG4tI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUXG4mIzQzOyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVFxuIFx0Ym9vbFx0XHRcdHVzZV9ndGs7XG4gI2VuZGlmXG4gXHRib29sXHRcdFx0dXNlX3N0ZGlvO1xuQEAgLTEzNTksOCAmIzQzOzEzNTksOCBAQCBpbnQgY21kX3JlcG9ydChpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpXG4gI2lmZGVmIEhBVkVfU0xBTkdfU1VQUE9SVFxuIFx0T1BUX0JPT0xFQU4oMCwgXCYjMzQ7dHVpXCYjMzQ7LCBcdTAwMjZyZXBvcnQudXNlX3R1aSwgXCYjMzQ7VXNlIHRoZSBUVUkgaW50ZXJmYWNlXCYjMzQ7KSxcbiAjZW5kaWZcbi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlRcbi1cdE9QVF9CT09MRUFOKDAsIFwmIzM0O2d0a1wmIzM0OywgXHUwMDI2cmVwb3J0LnVzZV9ndGssIFwmIzM0O1VzZSB0aGUgR1RLMiBpbnRlcmZhY2VcJiMzNDspLFxuJiM0MzsjaWZkZWYgSEFWRV9HVEs0X1NVUFBPUlRcbiYjNDM7XHRPUFRfQk9PTEVBTigwLCBcJiMzNDtndGtcJiMzNDssIFx1MDAyNnJlcG9ydC51c2VfZ3RrLCBcJiMzNDtVc2UgdGhlIEdUSzQgaW50ZXJmYWNlXCYjMzQ7KSxcbiAjZW5kaWZcbiBcdE9QVF9CT09MRUFOKDAsIFwmIzM0O3N0ZGlvXCYjMzQ7LCBcdTAwMjZyZXBvcnQudXNlX3N0ZGlvLFxuIFx0XHQgICAgXCYjMzQ7VXNlIHRoZSBzdGRpbyBpbnRlcmZhY2VcJiMzNDspLFxuQEAgLTE3MTAsNyAmIzQzOzE3MTAsNyBAQCBpbnQgY21kX3JlcG9ydChpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpXG4gXHRlbHNlIGlmIChyZXBvcnQudXNlX3R1aSlcbiBcdFx0dXNlX2Jyb3dzZXIgPSAxO1xuICNlbmRpZlxuLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVFxuJiM0MzsjaWZkZWYgSEFWRV9HVEs0X1NVUFBPUlRcbiBcdGVsc2UgaWYgKHJlcG9ydC51c2VfZ3RrKVxuIFx0XHR1c2VfYnJvd3NlciA9IDI7XG4gI2VuZGlmXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9zY3JpcHRzL2luc3RhbGwtYnVpbGQtZGVwcy5zaCBiL3Rvb2xzL3BlcmYvc2NyaXB0cy9pbnN0YWxsLWJ1aWxkLWRlcHMuc2hcbmluZGV4IGQwMDNlN2ZhYjJiZTguLmE2MDFhNTI2MGMxN2UgMTAwNzU1XG4tLS0gYS90b29scy9wZXJmL3NjcmlwdHMvaW5zdGFsbC1idWlsZC1kZXBzLnNoXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3NjcmlwdHMvaW5zdGFsbC1idWlsZC1kZXBzLnNoXG5AQCAtMTk5LDggJiM0MzsxOTksOCBAQCBmZWRvcmFfcGtnX2ZvcigpIHtcbiBcdCMgb3B0LWluIGZlYXR1cmVzLCB3aGljaCBhIGRlZmF1bHQgYnVpbGQgZG9lcyBub3QgZW5hYmxlOiB0aGUgbGliYmZkXG4gXHQjIGRpc2Fzc2VtYmxlciBmYW1pbHkgKGxpYmJmZCwgbGliYmZkLXRocmVhZHNhZmUsIGxpYmJmZC1saWJlcnR5LFxuIFx0IyBkaXNhc3NlbWJsZXItKiwgY3BsdXMtZGVtYW5nbGUpLCBvbmx5IGxpbmtlZCBvbiBCVUlMRF9OT05ESVNUUk9cbi1cdCMgYnVpbGRzIGFuZCBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGNhcHN0b25lLCBHVEsyLCBMSUJQRVJMIGFuZFxuLVx0IyBMSUJVTldJTkQgc3VwcG9ydCAoaWZkZWYgR1RLMiAvIGlmZGVmIExJQlBFUkwgLyBMSUJVTldJTkQ9MSksXG4mIzQzO1x0IyBidWlsZHMgYW5kIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgY2Fwc3RvbmUsIEdUSzQsIExJQlBFUkwgYW5kXG4mIzQzO1x0IyBMSUJVTldJTkQgc3VwcG9ydCAoaWZkZWYgR1RLNCAvIGlmZGVmIExJQlBFUkwgLyBMSUJVTldJTkQ9MSksXG4gXHQjIGFuZCBDb3JlU2lnaHQgKGlmZGVmIENPUkVTSUdIVCksIGFyZSBkZWxpYmVyYXRlbHkgbm90IG1hcHBlZC5cbiBcdCMgbGliYWlvIGlzIG5vdCBtYXBwZWQgZWl0aGVyOiBpdHNcbiBcdCMgdGVzdCB1c2VzIHRoZSBQT1NJWCBBSU8gQVBJIChhaW8uaCwgYWlvXyosIC1scnQpLCBwcm92aWRlZCBieVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdGVzdHMvbWFrZSBiL3Rvb2xzL3BlcmYvdGVzdHMvbWFrZVxuaW5kZXggZDJjMmY1MjZlMWRiMC4uMjAyYWI1NTAxOTE2MSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdGVzdHMvbWFrZVxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi90ZXN0cy9tYWtlXG5AQCAtOTUsNyAmIzQzOzk1LDcgQEAgbWFrZV9ub19iYWJlbHRyYWNlMiA6PSBOT19CQUJFTFRSQUNFMj0xXG4gbWFrZV93aXRoX2NvcmVzaWdodCA6PSBDT1JFU0lHSFQ9MVxuIG1ha2Vfbm9fc2R0XHQgICAgOj0gTk9fU0RUPTFcbiBtYWtlX25vX2xpYnBmbTQgICAgIDo9IE5PX0xJQlBGTTQ9MVxuLW1ha2Vfd2l0aF9ndGsyICAgICAgOj0gR1RLMj0xXG4mIzQzO21ha2Vfd2l0aF9ndGs0ICAgICAgOj0gR1RLND0xXG4gbWFrZV9yZWZjbnRfY2hlY2sgICA6PSBFWFRSQV9DRkxBR1M9XCYjMzQ7LURSRUZDTlRfQ0hFQ0tJTkc9MVwmIzM0O1xuIG1ha2VfdGFncyAgICAgICAgICAgOj0gdGFnc1xuIG1ha2VfY3Njb3BlICAgICAgICAgOj0gY3Njb3BlXG5AQCAtMzE4LDcgJiM0MzszMTgsNyBAQCAkKHJ1bik6XG4gXHQkKGNhbGwgdGVzdCwkQCkgXHUwMDI2XHUwMDI2IFxcXG4gXHRybSAtcmYgJEAgJCRUTVBfREVTVCB8fCAoY2F0ICRAIDsgZmFsc2UpXG4gXG4tbWFrZV93aXRoX2d0azI6XG4mIzQzO21ha2Vfd2l0aF9ndGs0OlxuIFx0JChjYWxsIGNsZWFuKVxuIFx0QFRNUF9ERVNUPSQkKG1rdGVtcCAtZCk7IFxcXG4gXHRjbWQ9XCYjMzQ7Y2QgJChQRVJGKSBcdTAwMjZcdTAwMjYgJChNQUtFX0YpICQoJEApICQoUEFSQUxMRUxfT1BUKSAkKE9fT1BUKSBERVNURElSPSQkVE1QX0RFU1RcJiMzNDs7IFxcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91aS9ndGsvYW5ub3RhdGUuYyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2Fubm90YXRlLmNcbmluZGV4IDg5MjBlMjk4NDIwYTguLjA5NGRmYTA0NWI3NzQgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL3VpL2d0ay9hbm5vdGF0ZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3VpL2d0ay9hbm5vdGF0ZS5jXG5AQCAtMTEsNiAmIzQzOzExLDcgQEBcbiAjaW5jbHVkZSBcJiMzNDt1aS9oZWxwbGluZS5oXCYjMzQ7XG4gI2luY2x1ZGUgXHUwMDNjaW50dHlwZXMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY3NpZ25hbC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY3N0cmluZy5oXHUwMDNlXG4gXG4gZW51bSB7XG4gXHRBTk5fQ09MX19QRVJDRU5ULFxuQEAgLTE2MSw3ICYjNDM7MTYyLDcgQEAgc3RhdGljIGludCBwZXJmX2d0a19fYW5ub3RhdGVfc3ltYm9sKEd0a1dpZGdldCAqd2luZG93LCBzdHJ1Y3QgbWFwX3N5bWJvbCAqbXMsXG4gXHRcdFx0Z3RrX2xpc3Rfc3RvcmVfc2V0KHN0b3JlLCBcdTAwMjZpdGVyLCBBTk5fQ09MX19MSU5FLCBzLCAtMSk7XG4gXHR9XG4gXG4tXHRndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHdpbmRvdyksIHZpZXcpO1xuJiM0MztcdGd0a19zY3JvbGxlZF93aW5kb3dfc2V0X2NoaWxkKEdUS19TQ1JPTExFRF9XSU5ET1cod2luZG93KSwgdmlldyk7XG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocG9zLCBuLCBcdTAwMjZub3Rlcy1cdTAwM2VzcmMtXHUwMDNlc291cmNlLCBhbC5ub2RlKSB7XG4gXHRcdGxpc3RfZGVsX2luaXQoXHUwMDI2cG9zLVx1MDAzZWFsLm5vZGUpO1xuQEAgLTIwNSw0MCAmIzQzOzIwNiwzNCBAQCBzdGF0aWMgaW50IHN5bWJvbF9fZ3RrX2Fubm90YXRlKHN0cnVjdCBtYXBfc3ltYm9sICptcywgc3RydWN0IGV2c2VsICpldnNlbCxcbiBcdFx0R3RrV2lkZ2V0ICppbmZvYmFyO1xuIFx0XHRHdGtXaWRnZXQgKnN0YXRiYXI7XG4gXG4tXHRcdHNpZ25hbChTSUdTRUdWLCBwZXJmX2d0a19fc2lnbmFsKTtcbi1cdFx0c2lnbmFsKFNJR0ZQRSwgIHBlcmZfZ3RrX19zaWduYWwpO1xuLVx0XHRzaWduYWwoU0lHSU5ULCAgcGVyZl9ndGtfX3NpZ25hbCk7XG4tXHRcdHNpZ25hbChTSUdRVUlULCBwZXJmX2d0a19fc2lnbmFsKTtcbi1cdFx0c2lnbmFsKFNJR1RFUk0sIHBlcmZfZ3RrX19zaWduYWwpO1xuJiM0MztcdFx0c2lnbmFsKFNJR1NFR1YsIHBlcmZfZ3RrX19mYXRhbF9zaWduYWwpO1xuJiM0MztcdFx0c2lnbmFsKFNJR0ZQRSwgIHBlcmZfZ3RrX19mYXRhbF9zaWduYWwpO1xuJiM0MztcdFx0cGVyZl9ndGtfX2luc3RhbGxfcXVpdF9zaWduYWxzKCk7XG4gXG4tXHRcdHdpbmRvdyA9IGd0a193aW5kb3dfbmV3KEdUS19XSU5ET1dfVE9QTEVWRUwpO1xuJiM0MztcdFx0d2luZG93ID0gZ3RrX3dpbmRvd19uZXcoKTtcbiBcdFx0Z3RrX3dpbmRvd19zZXRfdGl0bGUoR1RLX1dJTkRPVyh3aW5kb3cpLCBcJiMzNDtwZXJmIGFubm90YXRlXCYjMzQ7KTtcbiBcbi1cdFx0Z19zaWduYWxfY29ubmVjdCh3aW5kb3csIFwmIzM0O2RlbGV0ZV9ldmVudFwmIzM0OywgZ3RrX21haW5fcXVpdCwgTlVMTCk7XG4tXG4gXHRcdHBnY3R4ID0gcGVyZl9ndGtfX2FjdGl2YXRlX2NvbnRleHQod2luZG93KTtcbiBcdFx0aWYgKCFwZ2N0eClcbiBcdFx0XHRyZXR1cm4gLTE7XG4gXG4tXHRcdHZib3ggPSBndGtfdmJveF9uZXcoRkFMU0UsIDApO1xuJiM0MztcdFx0dmJveCA9IGd0a19ib3hfbmV3KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgMCk7XG4gXHRcdG5vdGVib29rID0gZ3RrX25vdGVib29rX25ldygpO1xuIFx0XHRwZ2N0eC1cdTAwM2Vub3RlYm9vayA9IG5vdGVib29rO1xuIFxuLVx0XHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgbm90ZWJvb2ssIFRSVUUsIFRSVUUsIDApO1xuJiM0MztcdFx0Z3RrX3dpZGdldF9zZXRfdmV4cGFuZChub3RlYm9vaywgVFJVRSk7XG4mIzQzO1x0XHRndGtfYm94X2FwcGVuZChHVEtfQk9YKHZib3gpLCBub3RlYm9vayk7XG4gXG4gXHRcdGluZm9iYXIgPSBwZXJmX2d0a19fc2V0dXBfaW5mb19iYXIoKTtcbi1cdFx0aWYgKGluZm9iYXIpIHtcbi1cdFx0XHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgaW5mb2Jhcixcbi1cdFx0XHRcdFx0ICAgRkFMU0UsIEZBTFNFLCAwKTtcbi1cdFx0fVxuJiM0MztcdFx0Z3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgaW5mb2Jhcik7XG4gXG4gXHRcdHN0YXRiYXIgPSBwZXJmX2d0a19fc2V0dXBfc3RhdHVzYmFyKCk7XG4tXHRcdGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBzdGF0YmFyLCBGQUxTRSwgRkFMU0UsIDApO1xuJiM0MztcdFx0Z3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgc3RhdGJhcik7XG4gXG4tXHRcdGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIod2luZG93KSwgdmJveCk7XG4mIzQzO1x0XHRndGtfd2luZG93X3NldF9jaGlsZChHVEtfV0lORE9XKHdpbmRvdyksIHZib3gpO1xuIFx0fVxuIFxuLVx0c2Nyb2xsZWRfd2luZG93ID0gZ3RrX3Njcm9sbGVkX3dpbmRvd19uZXcoTlVMTCwgTlVMTCk7XG4mIzQzO1x0c2Nyb2xsZWRfd2luZG93ID0gZ3RrX3Njcm9sbGVkX3dpbmRvd19uZXcoKTtcbiBcdHRhYl9sYWJlbCA9IGd0a19sYWJlbF9uZXcoc3ltLVx1MDAzZW5hbWUpO1xuIFxuIFx0Z3RrX3Njcm9sbGVkX3dpbmRvd19zZXRfcG9saWN5KEdUS19TQ1JPTExFRF9XSU5ET1coc2Nyb2xsZWRfd2luZG93KSxcbkBAIC0yNjcsMTIgJiM0MzsyNjIsMTEgQEAgdm9pZCBwZXJmX2d0a19fc2hvd19hbm5vdGF0aW9ucyh2b2lkKVxuIFx0XHRyZXR1cm47XG4gXG4gXHR3aW5kb3cgPSBwZ2N0eC1cdTAwM2VtYWluX3dpbmRvdztcbi1cdGd0a193aWRnZXRfc2hvd19hbGwod2luZG93KTtcbiBcbiBcdHBlcmZfZ3RrX19yZXNpemVfd2luZG93KHdpbmRvdyk7XG4tXHRndGtfd2luZG93X3NldF9wb3NpdGlvbihHVEtfV0lORE9XKHdpbmRvdyksIEdUS19XSU5fUE9TX0NFTlRFUik7XG4mIzQzO1x0Z3RrX3dpZGdldF9zZXRfdmlzaWJsZSh3aW5kb3csIFRSVUUpO1xuIFxuLVx0Z3RrX21haW4oKTtcbiYjNDM7XHRwZXJmX2d0a19fcnVuX21haW5fbG9vcCh3aW5kb3cpO1xuIFxuIFx0cGVyZl9ndGtfX2RlYWN0aXZhdGVfY29udGV4dChcdTAwMjZwZ2N0eCk7XG4gfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2Jyb3dzZXIuYyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2Jyb3dzZXIuY1xuaW5kZXggZDJkYWRmMzg3M2ZiZC4uOThmMWQ2YmZjYjI0NiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2Jyb3dzZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91aS9ndGsvYnJvd3Nlci5jXG5AQCAtNSwzMiAmIzQzOzUsOTIgQEBcbiAjaW5jbHVkZSBcJiMzNDsuLi9oaXN0LmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDsuLi9oZWxwbGluZS5oXCYjMzQ7XG4gXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2dsaWItdW5peC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjc2lnbmFsLmhcdTAwM2VcbiBcbi12b2lkIHBlcmZfZ3RrX19zaWduYWwoaW50IHNpZylcbiYjNDM7LypcbiYjNDM7ICogU0lHSU5UL1NJR1FVSVQvU0lHVEVSTSBhcmUgYXN5bmNocm9ub3VzOiBkZWZlcnJpbmcgdGhlIGFjdHVhbCBleGl0IHRvIGFcbiYjNDM7ICogR0xpYiBzb3VyY2UgZGlzcGF0Y2hlZCBmcm9tIHRoZSBtYWluIGxvb3AgbWVhbnMgaXQgYWx3YXlzIHJ1bnMgb24gdGhlXG4mIzQzOyAqIG1haW4gdGhyZWFkLCBzZXJpYWxpemVkIHdpdGggZXZlcnl0aGluZyBlbHNlIHRoZSBtYWluIGxvb3AgZG9lc1xuJiM0MzsgKiAoaW5jbHVkaW5nIHBlcmZfZ3RrX19lcnJvcigpJiMzOTtzIHVwZGF0ZXMgdG8gcGVyZl9ndGtfX2Vycm9yX2xvb3BzKSwgaW5zdGVhZFxuJiM0MzsgKiBvZiByYWNpbmcgdGhlbSBmcm9tIGFyYml0cmFyeSBzaWduYWwtaGFuZGxlciBjb250ZXh0LlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIGdib29sZWFuIHBlcmZfZ3RrX19xdWl0X3NpZ25hbChncG9pbnRlciBkYXRhIF9fbWF5YmVfdW51c2VkKVxuIHtcbiBcdHBlcmZfZ3RrX19leGl0KGZhbHNlKTtcbiYjNDM7XHRyZXR1cm4gR19TT1VSQ0VfUkVNT1ZFO1xuJiM0Mzt9XG4mIzQzO1xuJiM0Mzt2b2lkIHBlcmZfZ3RrX19pbnN0YWxsX3F1aXRfc2lnbmFscyh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0Z191bml4X3NpZ25hbF9hZGQoU0lHSU5ULCAgcGVyZl9ndGtfX3F1aXRfc2lnbmFsLCBOVUxMKTtcbiYjNDM7XHRnX3VuaXhfc2lnbmFsX2FkZChTSUdRVUlULCBwZXJmX2d0a19fcXVpdF9zaWduYWwsIE5VTEwpO1xuJiM0MztcdGdfdW5peF9zaWduYWxfYWRkKFNJR1RFUk0sIHBlcmZfZ3RrX19xdWl0X3NpZ25hbCwgTlVMTCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qXG4mIzQzOyAqIFNJR1NFR1YvU0lHRlBFIGFyZSBzeW5jaHJvbm91cyBmYXVsdHM6IHRoZXJlJiMzOTtzIG5vIFwmIzM0O2xhdGVyXCYjMzQ7IHRvIGRlZmVyIHRvLFxuJiM0MzsgKiBhbmQgbm8gc2FmZSB3YXkgdG8gcnVuIEdUSy9HTGliIGNvZGUgKG9yIGFueXRoaW5nIGVsc2Ugbm9uLWFzeW5jLXNpZ25hbC1cbiYjNDM7ICogc2FmZSkgZnJvbSB0aGUgZmF1bHRpbmcgY29udGV4dC4gUmVwb3J0IGFuZCBsZXQgdGhlIGRlZmF1bHQgZGlzcG9zaXRpb25cbiYjNDM7ICogKGNvcmUgZHVtcCkgaGFwcGVuIGluc3RlYWQgb2YgdHJ5aW5nIHRvIHRlYXIgZG93biBHVEsgc3RhdGUgaGVyZS5cbiYjNDM7ICovXG4mIzQzO3ZvaWQgcGVyZl9ndGtfX2ZhdGFsX3NpZ25hbChpbnQgc2lnKVxuJiM0Mzt7XG4gXHRwc2lnbmFsKHNpZywgXCYjMzQ7cGVyZlwmIzM0Oyk7XG4mIzQzO1x0c2lnbmFsKHNpZywgU0lHX0RGTCk7XG4mIzQzO1x0cmFpc2Uoc2lnKTtcbiB9XG4gXG4gdm9pZCBwZXJmX2d0a19fcmVzaXplX3dpbmRvdyhHdGtXaWRnZXQgKndpbmRvdylcbiB7XG4gXHRHZGtSZWN0YW5nbGUgcmVjdDtcbi1cdEdka1NjcmVlbiAqc2NyZWVuO1xuLVx0aW50IG1vbml0b3I7XG4mIzQzO1x0R2RrTW9uaXRvciAqbW9uaXRvcjtcbiYjNDM7XHRHZGtEaXNwbGF5ICpkaXNwbGF5O1xuJiM0MztcdEdMaXN0TW9kZWwgKm1vbml0b3JzO1xuIFx0aW50IGhlaWdodDtcbiBcdGludCB3aWR0aDtcbiBcbi1cdHNjcmVlbiA9IGd0a193aWRnZXRfZ2V0X3NjcmVlbih3aW5kb3cpO1xuJiM0MztcdGRpc3BsYXkgPSBndGtfd2lkZ2V0X2dldF9kaXNwbGF5KHdpbmRvdyk7XG4mIzQzO1x0bW9uaXRvcnMgPSBnZGtfZGlzcGxheV9nZXRfbW9uaXRvcnMoZGlzcGxheSk7XG4mIzQzO1x0bW9uaXRvciA9IGdfbGlzdF9tb2RlbF9nZXRfaXRlbShtb25pdG9ycywgMCk7XG4mIzQzO1x0aWYgKCFtb25pdG9yKSB7XG4mIzQzO1x0XHRndGtfd2luZG93X3NldF9kZWZhdWx0X3NpemUoR1RLX1dJTkRPVyh3aW5kb3cpLCA4MDAsIDYwMCk7XG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1x0fVxuIFxuLVx0bW9uaXRvciA9IGdka19zY3JlZW5fZ2V0X21vbml0b3JfYXRfd2luZG93KHNjcmVlbiwgd2luZG93LVx1MDAzZXdpbmRvdyk7XG4tXG4tXHRnZGtfc2NyZWVuX2dldF9tb25pdG9yX2dlb21ldHJ5KHNjcmVlbiwgbW9uaXRvciwgXHUwMDI2cmVjdCk7XG4mIzQzO1x0Z2RrX21vbml0b3JfZ2V0X2dlb21ldHJ5KG1vbml0b3IsIFx1MDAyNnJlY3QpO1xuJiM0MztcdGdfb2JqZWN0X3VucmVmKG1vbml0b3IpO1xuIFxuIFx0d2lkdGhcdD0gcmVjdC53aWR0aCAqIDMgLyA0O1xuIFx0aGVpZ2h0XHQ9IHJlY3QuaGVpZ2h0ICogMyAvIDQ7XG4gXG4tXHRndGtfd2luZG93X3Jlc2l6ZShHVEtfV0lORE9XKHdpbmRvdyksIHdpZHRoLCBoZWlnaHQpO1xuJiM0MztcdGd0a193aW5kb3dfc2V0X2RlZmF1bHRfc2l6ZShHVEtfV0lORE9XKHdpbmRvdyksIHdpZHRoLCBoZWlnaHQpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgR01haW5Mb29wICpwZXJmX2d0a19fbWFpbl9sb29wO1xuJiM0MztcbiYjNDM7dm9pZCBwZXJmX2d0a19fcXVpdF9tYWluX2xvb3Aodm9pZClcbiYjNDM7e1xuJiM0MztcdGlmIChwZXJmX2d0a19fbWFpbl9sb29wKVxuJiM0MztcdFx0Z19tYWluX2xvb3BfcXVpdChwZXJmX2d0a19fbWFpbl9sb29wKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGdib29sZWFuIHBlcmZfZ3RrX19jbG9zZV9yZXF1ZXN0KEd0a1dpZGdldCAqd2lkZ2V0IF9fbWF5YmVfdW51c2VkLFxuJiM0MztcdFx0XHRcdFx0Z3BvaW50ZXIgZGF0YSBfX21heWJlX3VudXNlZClcbiYjNDM7e1xuJiM0MztcdHBlcmZfZ3RrX19xdWl0X21haW5fbG9vcCgpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gRkFMU0U7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3ZvaWQgcGVyZl9ndGtfX3J1bl9tYWluX2xvb3AoR3RrV2lkZ2V0ICp3aW5kb3cpXG4mIzQzO3tcbiYjNDM7XHRnX3NpZ25hbF9jb25uZWN0KHdpbmRvdywgXCYjMzQ7Y2xvc2UtcmVxdWVzdFwmIzM0OyxcbiYjNDM7XHRcdFx0IEdfQ0FMTEJBQ0socGVyZl9ndGtfX2Nsb3NlX3JlcXVlc3QpLCBOVUxMKTtcbiYjNDM7XG4mIzQzO1x0cGVyZl9ndGtfX21haW5fbG9vcCA9IGdfbWFpbl9sb29wX25ldyhOVUxMLCBGQUxTRSk7XG4mIzQzO1x0Z19tYWluX2xvb3BfcnVuKHBlcmZfZ3RrX19tYWluX2xvb3ApO1xuJiM0MztcdGdfY2xlYXJfcG9pbnRlcihcdTAwMjZwZXJmX2d0a19fbWFpbl9sb29wLCBnX21haW5fbG9vcF91bnJlZik7XG4gfVxuIFxuIGNvbnN0IGNoYXIgKnBlcmZfZ3RrX19nZXRfcGVyY2VudF9jb2xvcihkb3VibGUgcGVyY2VudClcbkBAIC00MiwzMyAmIzQzOzEwMiwzNSBAQCBjb25zdCBjaGFyICpwZXJmX2d0a19fZ2V0X3BlcmNlbnRfY29sb3IoZG91YmxlIHBlcmNlbnQpXG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4gXG4tI2lmZGVmIEhBVkVfR1RLX0lORk9fQkFSX1NVUFBPUlRcbiYjNDM7c3RhdGljIHZvaWQgcGVyZl9ndGtfX2hpZGVfd2lkZ2V0KEd0a1dpZGdldCAqd2lkZ2V0LCBnaW50IHJlc3BvbnNlX2lkIF9fbWF5YmVfdW51c2VkLFxuJiM0MztcdFx0XHRcdCAgIGdwb2ludGVyIGRhdGEgX19tYXliZV91bnVzZWQpXG4mIzQzO3tcbiYjNDM7XHRndGtfd2lkZ2V0X3NldF92aXNpYmxlKHdpZGdldCwgRkFMU0UpO1xuJiM0Mzt9XG4mIzQzO1xuIEd0a1dpZGdldCAqcGVyZl9ndGtfX3NldHVwX2luZm9fYmFyKHZvaWQpXG4ge1xuIFx0R3RrV2lkZ2V0ICppbmZvX2JhcjtcbiBcdEd0a1dpZGdldCAqbGFiZWw7XG4tXHRHdGtXaWRnZXQgKmNvbnRlbnRfYXJlYTtcbiBcbiBcdGluZm9fYmFyID0gZ3RrX2luZm9fYmFyX25ldygpO1xuLVx0Z3RrX3dpZGdldF9zZXRfbm9fc2hvd19hbGwoaW5mb19iYXIsIFRSVUUpO1xuJiM0MztcdGd0a193aWRnZXRfc2V0X3Zpc2libGUoaW5mb19iYXIsIEZBTFNFKTtcbiBcbiBcdGxhYmVsID0gZ3RrX2xhYmVsX25ldyhcJiMzNDtcJiMzNDspO1xuLVx0Z3RrX3dpZGdldF9zaG93KGxhYmVsKTtcbiYjNDM7XHRndGtfd2lkZ2V0X3NldF92aXNpYmxlKGxhYmVsLCBUUlVFKTtcbiBcbi1cdGNvbnRlbnRfYXJlYSA9IGd0a19pbmZvX2Jhcl9nZXRfY29udGVudF9hcmVhKEdUS19JTkZPX0JBUihpbmZvX2JhcikpO1xuLVx0Z3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUihjb250ZW50X2FyZWEpLCBsYWJlbCk7XG4mIzQzO1x0Z3RrX2luZm9fYmFyX2FkZF9jaGlsZChHVEtfSU5GT19CQVIoaW5mb19iYXIpLCBsYWJlbCk7XG4gXG4tXHRndGtfaW5mb19iYXJfYWRkX2J1dHRvbihHVEtfSU5GT19CQVIoaW5mb19iYXIpLCBHVEtfU1RPQ0tfT0ssXG4mIzQzO1x0Z3RrX2luZm9fYmFyX2FkZF9idXR0b24oR1RLX0lORk9fQkFSKGluZm9fYmFyKSwgXCYjMzQ7X09LXCYjMzQ7LFxuIFx0XHRcdFx0R1RLX1JFU1BPTlNFX09LKTtcbiBcdGdfc2lnbmFsX2Nvbm5lY3QoaW5mb19iYXIsIFwmIzM0O3Jlc3BvbnNlXCYjMzQ7LFxuLVx0XHRcdCBHX0NBTExCQUNLKGd0a193aWRnZXRfaGlkZSksIE5VTEwpO1xuJiM0MztcdFx0XHQgR19DQUxMQkFDSyhwZXJmX2d0a19faGlkZV93aWRnZXQpLCBOVUxMKTtcbiBcbiBcdHBnY3R4LVx1MDAzZWluZm9fYmFyID0gaW5mb19iYXI7XG4gXHRwZ2N0eC1cdTAwM2VtZXNzYWdlX2xhYmVsID0gbGFiZWw7XG4gXG4gXHRyZXR1cm4gaW5mb19iYXI7XG4gfVxuLSNlbmRpZlxuIFxuIEd0a1dpZGdldCAqcGVyZl9ndGtfX3NldHVwX3N0YXR1c2Jhcih2b2lkKVxuIHtcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL2d0ay9ndGsuaCBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2d0ay5oXG5pbmRleCBhMmI0OTdmMDNmZDZlLi42YjM3ZmQ5OTQzYzlkIDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvZ3RrLmhcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2d0ay5oXG5AQCAtMTMsMTAgJiM0MzsxMyw4IEBAIHN0cnVjdCBwZXJmX2d0a19jb250ZXh0IHtcbiBcdEd0a1dpZGdldCAqbWFpbl93aW5kb3c7XG4gXHRHdGtXaWRnZXQgKm5vdGVib29rO1xuIFxuLSNpZmRlZiBIQVZFX0dUS19JTkZPX0JBUl9TVVBQT1JUXG4gXHRHdGtXaWRnZXQgKmluZm9fYmFyO1xuIFx0R3RrV2lkZ2V0ICptZXNzYWdlX2xhYmVsO1xuLSNlbmRpZlxuIFx0R3RrV2lkZ2V0ICpzdGF0YmFyO1xuIFx0Z3VpbnQgc3RhdGJhcl9jdHhfaWQ7XG4gfTtcbkBAIC0zOCwxOSAmIzQzOzM2LDE1IEBAIHZvaWQgcGVyZl9ndGtfX2luaXRfaGVscGxpbmUodm9pZCk7XG4gdm9pZCBndGtfdWlfcHJvZ3Jlc3NfX2luaXQodm9pZCk7XG4gdm9pZCBwZXJmX2d0a19faW5pdF9ocHAodm9pZCk7XG4gXG4tdm9pZCBwZXJmX2d0a19fc2lnbmFsKGludCBzaWcpO1xuJiM0Mzt2b2lkIHBlcmZfZ3RrX19pbnN0YWxsX3F1aXRfc2lnbmFscyh2b2lkKTtcbiYjNDM7dm9pZCBwZXJmX2d0a19fZmF0YWxfc2lnbmFsKGludCBzaWcpO1xuIHZvaWQgcGVyZl9ndGtfX3Jlc2l6ZV93aW5kb3coR3RrV2lkZ2V0ICp3aW5kb3cpO1xuJiM0Mzt2b2lkIHBlcmZfZ3RrX19ydW5fbWFpbl9sb29wKEd0a1dpZGdldCAqd2luZG93KTtcbiYjNDM7dm9pZCBwZXJmX2d0a19fcXVpdF9tYWluX2xvb3Aodm9pZCk7XG4mIzQzO3ZvaWQgcGVyZl9ndGtfX3F1aXRfZXJyb3JfZGlhbG9nKHZvaWQpO1xuIGNvbnN0IGNoYXIgKnBlcmZfZ3RrX19nZXRfcGVyY2VudF9jb2xvcihkb3VibGUgcGVyY2VudCk7XG4gR3RrV2lkZ2V0ICpwZXJmX2d0a19fc2V0dXBfc3RhdHVzYmFyKHZvaWQpO1xuLVxuLSNpZmRlZiBIQVZFX0dUS19JTkZPX0JBUl9TVVBQT1JUXG4gR3RrV2lkZ2V0ICpwZXJmX2d0a19fc2V0dXBfaW5mb19iYXIodm9pZCk7XG4tI2Vsc2Vcbi1zdGF0aWMgaW5saW5lIEd0a1dpZGdldCAqcGVyZl9ndGtfX3NldHVwX2luZm9fYmFyKHZvaWQpXG4te1xuLVx0cmV0dXJuIE5VTEw7XG4tfVxuLSNlbmRpZlxuIFxuIHN0cnVjdCBldnNlbDtcbiBzdHJ1Y3QgZXZsaXN0O1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2hpc3RzLmMgYi90b29scy9wZXJmL3VpL2d0ay9oaXN0cy5jXG5pbmRleCBiYWUyMWYzMzZhZTZkLi43MTZkY2YwMmJkMGU4IDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvaGlzdHMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91aS9ndGsvaGlzdHMuY1xuQEAgLTgsNiAmIzQzOzgsOCBAQFxuICNpbmNsdWRlIFwmIzM0Oy4uL2hlbHBsaW5lLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDsuLi9zdHJpbmcyLmhcJiMzNDtcbiAjaW5jbHVkZSBcdTAwM2NzaWduYWwuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NzdGRhcmcuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NzdGRpby5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjc3RkbGliLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zdHJpbmcuaFx1MDAzZVxuIFxuQEAgLTM5NSwxMSAmIzQzOzM5Nyw5IEBAIHN0YXRpYyB2b2lkIHBlcmZfZ3RrX19zaG93X2hpc3RzKEd0a1dpZGdldCAqd2luZG93LCBzdHJ1Y3QgaGlzdHMgKmhpc3RzLFxuIFx0XHR9XG4gXHR9XG4gXG4tXHRndGtfdHJlZV92aWV3X3NldF9ydWxlc19oaW50KEdUS19UUkVFX1ZJRVcodmlldyksIFRSVUUpO1xuLVxuIFx0Z19zaWduYWxfY29ubmVjdCh2aWV3LCBcJiMzNDtyb3ctYWN0aXZhdGVkXCYjMzQ7LFxuIFx0XHRcdCBHX0NBTExCQUNLKG9uX3Jvd19hY3RpdmF0ZWQpLCBOVUxMKTtcbi1cdGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIod2luZG93KSwgdmlldyk7XG4mIzQzO1x0Z3RrX3Njcm9sbGVkX3dpbmRvd19zZXRfY2hpbGQoR1RLX1NDUk9MTEVEX1dJTkRPVyh3aW5kb3cpLCB2aWV3KTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcGVyZl9ndGtfX2FkZF9oaWVyYXJjaHlfZW50cmllcyhzdHJ1Y3QgaGlzdHMgKmhpc3RzLFxuQEAgLTU4MywxMSAmIzQzOzU4Myw5IEBAIHN0YXRpYyB2b2lkIHBlcmZfZ3RrX19zaG93X2hpZXJhcmNoeShHdGtXaWRnZXQgKndpbmRvdywgc3RydWN0IGhpc3RzICpoaXN0cyxcbiBcdHBlcmZfZ3RrX19hZGRfaGllcmFyY2h5X2VudHJpZXMoaGlzdHMsIFx1MDAyNmhpc3RzLVx1MDAzZWVudHJpZXMsIHN0b3JlLFxuIFx0XHRcdFx0XHROVUxMLCBcdTAwMjZocHAsIG1pbl9wY250KTtcbiBcbi1cdGd0a190cmVlX3ZpZXdfc2V0X3J1bGVzX2hpbnQoR1RLX1RSRUVfVklFVyh2aWV3KSwgVFJVRSk7XG4tXG4gXHRnX3NpZ25hbF9jb25uZWN0KHZpZXcsIFwmIzM0O3Jvdy1hY3RpdmF0ZWRcJiMzNDssXG4gXHRcdFx0IEdfQ0FMTEJBQ0sob25fcm93X2FjdGl2YXRlZCksIE5VTEwpO1xuLVx0Z3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUih3aW5kb3cpLCB2aWV3KTtcbiYjNDM7XHRndGtfc2Nyb2xsZWRfd2luZG93X3NldF9jaGlsZChHVEtfU0NST0xMRURfV0lORE9XKHdpbmRvdyksIHZpZXcpO1xuIH1cbiBcbiBpbnQgZXZsaXN0X19ndGtfYnJvd3NlX2hpc3RzKHN0cnVjdCBldmxpc3QgKmV2bGlzdCwgY29uc3QgY2hhciAqaGVscCxcbkBAIC02MDAsMzYgJiM0Mzs1OTgsMzIgQEAgaW50IGV2bGlzdF9fZ3RrX2Jyb3dzZV9oaXN0cyhzdHJ1Y3QgZXZsaXN0ICpldmxpc3QsIGNvbnN0IGNoYXIgKmhlbHAsXG4gXHRHdGtXaWRnZXQgKnN0YXRiYXI7XG4gXHRHdGtXaWRnZXQgKndpbmRvdztcbiBcbi1cdHNpZ25hbChTSUdTRUdWLCBwZXJmX2d0a19fc2lnbmFsKTtcbi1cdHNpZ25hbChTSUdGUEUsICBwZXJmX2d0a19fc2lnbmFsKTtcbi1cdHNpZ25hbChTSUdJTlQsICBwZXJmX2d0a19fc2lnbmFsKTtcbi1cdHNpZ25hbChTSUdRVUlULCBwZXJmX2d0a19fc2lnbmFsKTtcbi1cdHNpZ25hbChTSUdURVJNLCBwZXJmX2d0a19fc2lnbmFsKTtcbiYjNDM7XHRzaWduYWwoU0lHU0VHViwgcGVyZl9ndGtfX2ZhdGFsX3NpZ25hbCk7XG4mIzQzO1x0c2lnbmFsKFNJR0ZQRSwgIHBlcmZfZ3RrX19mYXRhbF9zaWduYWwpO1xuJiM0MztcdHBlcmZfZ3RrX19pbnN0YWxsX3F1aXRfc2lnbmFscygpO1xuIFxuLVx0d2luZG93ID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJTkRPV19UT1BMRVZFTCk7XG4mIzQzO1x0d2luZG93ID0gZ3RrX3dpbmRvd19uZXcoKTtcbiBcbiBcdGd0a193aW5kb3dfc2V0X3RpdGxlKEdUS19XSU5ET1cod2luZG93KSwgXCYjMzQ7cGVyZiByZXBvcnRcJiMzNDspO1xuIFxuLVx0Z19zaWduYWxfY29ubmVjdCh3aW5kb3csIFwmIzM0O2RlbGV0ZV9ldmVudFwmIzM0OywgZ3RrX21haW5fcXVpdCwgTlVMTCk7XG4tXG4gXHRwZ2N0eCA9IHBlcmZfZ3RrX19hY3RpdmF0ZV9jb250ZXh0KHdpbmRvdyk7XG4gXHRpZiAoIXBnY3R4KVxuIFx0XHRyZXR1cm4gLTE7XG4gXG4tXHR2Ym94ID0gZ3RrX3Zib3hfbmV3KEZBTFNFLCAwKTtcbiYjNDM7XHR2Ym94ID0gZ3RrX2JveF9uZXcoR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCAwKTtcbiBcbiBcdG5vdGVib29rID0gZ3RrX25vdGVib29rX25ldygpO1xuIFxuLVx0Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIG5vdGVib29rLCBUUlVFLCBUUlVFLCAwKTtcbiYjNDM7XHRndGtfd2lkZ2V0X3NldF92ZXhwYW5kKG5vdGVib29rLCBUUlVFKTtcbiYjNDM7XHRndGtfYm94X2FwcGVuZChHVEtfQk9YKHZib3gpLCBub3RlYm9vayk7XG4gXG4gXHRpbmZvX2JhciA9IHBlcmZfZ3RrX19zZXR1cF9pbmZvX2JhcigpO1xuLVx0aWYgKGluZm9fYmFyKVxuLVx0XHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgaW5mb19iYXIsIEZBTFNFLCBGQUxTRSwgMCk7XG4mIzQzO1x0Z3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgaW5mb19iYXIpO1xuIFxuIFx0c3RhdGJhciA9IHBlcmZfZ3RrX19zZXR1cF9zdGF0dXNiYXIoKTtcbi1cdGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBzdGF0YmFyLCBGQUxTRSwgRkFMU0UsIDApO1xuJiM0MztcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIHN0YXRiYXIpO1xuIFxuLVx0Z3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUih3aW5kb3cpLCB2Ym94KTtcbiYjNDM7XHRndGtfd2luZG93X3NldF9jaGlsZChHVEtfV0lORE9XKHdpbmRvdyksIHZib3gpO1xuIFxuIFx0ZXZsaXN0X19mb3JfZWFjaF9lbnRyeShldmxpc3QsIHBvcykge1xuIFx0XHRzdHJ1Y3QgaGlzdHMgKmhpc3RzID0gZXZzZWxfX2hpc3RzKHBvcyk7XG5AQCAtNjQ5LDcgJiM0Mzs2NDMsNyBAQCBpbnQgZXZsaXN0X19ndGtfYnJvd3NlX2hpc3RzKHN0cnVjdCBldmxpc3QgKmV2bGlzdCwgY29uc3QgY2hhciAqaGVscCxcbiBcdFx0XHR9XG4gXHRcdH1cbiBcbi1cdFx0c2Nyb2xsZWRfd2luZG93ID0gZ3RrX3Njcm9sbGVkX3dpbmRvd19uZXcoTlVMTCwgTlVMTCk7XG4mIzQzO1x0XHRzY3JvbGxlZF93aW5kb3cgPSBndGtfc2Nyb2xsZWRfd2luZG93X25ldygpO1xuIFxuIFx0XHRndGtfc2Nyb2xsZWRfd2luZG93X3NldF9wb2xpY3koR1RLX1NDUk9MTEVEX1dJTkRPVyhzY3JvbGxlZF93aW5kb3cpLFxuIFx0XHRcdFx0XHRcdFx0R1RLX1BPTElDWV9BVVRPTUFUSUMsXG5AQCAtNjY1LDE1ICYjNDM7NjU5LDEyIEBAIGludCBldmxpc3RfX2d0a19icm93c2VfaGlzdHMoc3RydWN0IGV2bGlzdCAqZXZsaXN0LCBjb25zdCBjaGFyICpoZWxwLFxuIFx0XHRndGtfbm90ZWJvb2tfYXBwZW5kX3BhZ2UoR1RLX05PVEVCT09LKG5vdGVib29rKSwgc2Nyb2xsZWRfd2luZG93LCB0YWJfbGFiZWwpO1xuIFx0fVxuIFxuLVx0Z3RrX3dpZGdldF9zaG93X2FsbCh3aW5kb3cpO1xuLVxuIFx0cGVyZl9ndGtfX3Jlc2l6ZV93aW5kb3cod2luZG93KTtcbi1cbi1cdGd0a193aW5kb3dfc2V0X3Bvc2l0aW9uKEdUS19XSU5ET1cod2luZG93KSwgR1RLX1dJTl9QT1NfQ0VOVEVSKTtcbiYjNDM7XHRndGtfd2lkZ2V0X3NldF92aXNpYmxlKHdpbmRvdywgVFJVRSk7XG4gXG4gXHR1aV9oZWxwbGluZV9fcHVzaChoZWxwKTtcbiBcbi1cdGd0a19tYWluKCk7XG4mIzQzO1x0cGVyZl9ndGtfX3J1bl9tYWluX2xvb3Aod2luZG93KTtcbiBcbiBcdHBlcmZfZ3RrX19kZWFjdGl2YXRlX2NvbnRleHQoXHUwMDI2cGdjdHgpO1xuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3Byb2dyZXNzLmMgYi90b29scy9wZXJmL3VpL2d0ay9wcm9ncmVzcy5jXG5pbmRleCBlZWE2ZmNkZTUxOGE4Li43NzBmOTI1MWI1NGI3IDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvcHJvZ3Jlc3MuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91aS9ndGsvcHJvZ3Jlc3MuY1xuQEAgLTEsNDkgJiM0MzsxLDY1IEBAXG4gLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAjaW5jbHVkZSBcdTAwM2NpbnR0eXBlcy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY3N0ZGlvLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcJiMzNDtndGsuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0Oy4uL3Byb2dyZXNzLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvY29tcGlsZXIuaFx1MDAzZVxuIFxuIHN0YXRpYyBHdGtXaWRnZXQgKmRpYWxvZztcbiBzdGF0aWMgR3RrV2lkZ2V0ICpwcm9ncmVzcztcbiBcbiYjNDM7c3RhdGljIHZvaWQgZ3RrX3VpX3Byb2dyZXNzX19kZXN0cm95ZWQoR3RrV2lkZ2V0ICp3aWRnZXQgX19tYXliZV91bnVzZWQsXG4mIzQzO1x0XHRcdFx0XHRncG9pbnRlciBkYXRhIF9fbWF5YmVfdW51c2VkKVxuJiM0Mzt7XG4mIzQzO1x0ZGlhbG9nID0gTlVMTDtcbiYjNDM7XHRwcm9ncmVzcyA9IE5VTEw7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgZ3RrX3VpX3Byb2dyZXNzX191cGRhdGUoc3RydWN0IHVpX3Byb2dyZXNzICpwKVxuIHtcbiBcdGRvdWJsZSBmcmFjdGlvbiA9IHAtXHUwMDNldG90YWwgPyAxLjAgKiBwLVx1MDAzZWN1cnIgLyBwLVx1MDAzZXRvdGFsIDogMC4wO1xuIFx0Y2hhciBidWZbMTAyNF07XG4gXG4gXHRpZiAoZGlhbG9nID09IE5VTEwpIHtcbi1cdFx0R3RrV2lkZ2V0ICp2Ym94ID0gZ3RrX3Zib3hfbmV3KFRSVUUsIDUpO1xuJiM0MztcdFx0R3RrV2lkZ2V0ICp2Ym94ID0gZ3RrX2JveF9uZXcoR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCA1KTtcbiBcdFx0R3RrV2lkZ2V0ICpsYWJlbCA9IGd0a19sYWJlbF9uZXcocC1cdTAwM2V0aXRsZSk7XG4gXG4tXHRcdGRpYWxvZyA9IGd0a193aW5kb3dfbmV3KEdUS19XSU5ET1dfVE9QTEVWRUwpO1xuJiM0MztcdFx0ZGlhbG9nID0gZ3RrX3dpbmRvd19uZXcoKTtcbiBcdFx0cHJvZ3Jlc3MgPSBndGtfcHJvZ3Jlc3NfYmFyX25ldygpO1xuIFxuLVx0XHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgbGFiZWwsIFRSVUUsIEZBTFNFLCAzKTtcbi1cdFx0Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIHByb2dyZXNzLCBUUlVFLCBUUlVFLCAzKTtcbiYjNDM7XHRcdGd0a193aWRnZXRfc2V0X3ZleHBhbmQobGFiZWwsIFRSVUUpO1xuJiM0MztcdFx0Z3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgbGFiZWwpO1xuJiM0MztcdFx0Z3RrX3dpZGdldF9zZXRfdmV4cGFuZChwcm9ncmVzcywgVFJVRSk7XG4mIzQzO1x0XHRndGtfYm94X2FwcGVuZChHVEtfQk9YKHZib3gpLCBwcm9ncmVzcyk7XG4mIzQzO1xuJiM0MztcdFx0Z3RrX3dpbmRvd19zZXRfY2hpbGQoR1RLX1dJTkRPVyhkaWFsb2cpLCB2Ym94KTtcbiBcbi1cdFx0Z3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUihkaWFsb2cpLCB2Ym94KTtcbiYjNDM7XHRcdGdfc2lnbmFsX2Nvbm5lY3QoZGlhbG9nLCBcJiMzNDtkZXN0cm95XCYjMzQ7LFxuJiM0MztcdFx0XHRcdCBHX0NBTExCQUNLKGd0a191aV9wcm9ncmVzc19fZGVzdHJveWVkKSwgTlVMTCk7XG4gXG4gXHRcdGd0a193aW5kb3dfc2V0X3RpdGxlKEdUS19XSU5ET1coZGlhbG9nKSwgXCYjMzQ7cGVyZlwmIzM0Oyk7XG4tXHRcdGd0a193aW5kb3dfcmVzaXplKEdUS19XSU5ET1coZGlhbG9nKSwgMzAwLCA4MCk7XG4tXHRcdGd0a193aW5kb3dfc2V0X3Bvc2l0aW9uKEdUS19XSU5ET1coZGlhbG9nKSwgR1RLX1dJTl9QT1NfQ0VOVEVSKTtcbiYjNDM7XHRcdGd0a193aW5kb3dfc2V0X2RlZmF1bHRfc2l6ZShHVEtfV0lORE9XKGRpYWxvZyksIDMwMCwgODApO1xuIFxuLVx0XHRndGtfd2lkZ2V0X3Nob3dfYWxsKGRpYWxvZyk7XG4mIzQzO1x0XHRndGtfd2lkZ2V0X3NldF92aXNpYmxlKGRpYWxvZywgVFJVRSk7XG4gXHR9XG4gXG4gXHRndGtfcHJvZ3Jlc3NfYmFyX3NldF9mcmFjdGlvbihHVEtfUFJPR1JFU1NfQkFSKHByb2dyZXNzKSwgZnJhY3Rpb24pO1xuIFx0c25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgXCYjMzQ7JVwmIzM0O1BSSXU2NFwmIzM0OyAvICVcJiMzNDtQUkl1NjQsIHAtXHUwMDNlY3VyciwgcC1cdTAwM2V0b3RhbCk7XG4gXHRndGtfcHJvZ3Jlc3NfYmFyX3NldF90ZXh0KEdUS19QUk9HUkVTU19CQVIocHJvZ3Jlc3MpLCBidWYpO1xuIFxuLVx0Lyogd2UgZGlkbiYjMzk7dCBjYWxsIGd0a19tYWluIHlldCwgc28gZG8gaXQgbWFudWFsbHkgKi9cbi1cdHdoaWxlIChndGtfZXZlbnRzX3BlbmRpbmcoKSlcbi1cdFx0Z3RrX21haW5faXRlcmF0aW9uKCk7XG4mIzQzO1x0Lyogd2UgZGlkbiYjMzk7dCBzdGFydCBhIG1haW4gbG9vcCB5ZXQsIHNvIHB1bXAgZXZlbnRzIG1hbnVhbGx5ICovXG4mIzQzO1x0d2hpbGUgKGdfbWFpbl9jb250ZXh0X3BlbmRpbmcoTlVMTCkpXG4mIzQzO1x0XHRnX21haW5fY29udGV4dF9pdGVyYXRpb24oTlVMTCwgRkFMU0UpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBndGtfdWlfcHJvZ3Jlc3NfX2ZpbmlzaCh2b2lkKVxuIHtcbiYjNDM7XHRpZiAoZGlhbG9nID09IE5VTEwpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0LyogdGhpcyB3aWxsIGFsc28gZGVzdHJveSBhbGwgb2YgaXRzIGNoaWxkcmVuICovXG4tXHRndGtfd2lkZ2V0X2Rlc3Ryb3koZGlhbG9nKTtcbiYjNDM7XHRndGtfd2luZG93X2Rlc3Ryb3koR1RLX1dJTkRPVyhkaWFsb2cpKTtcbiBcbiBcdGRpYWxvZyA9IE5VTEw7XG4gfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3NldHVwLmMgYi90b29scy9wZXJmL3VpL2d0ay9zZXR1cC5jXG5pbmRleCBmNWVlZTRkNjY4NzM4Li45YjQ0ZjM3MTk3NDc3IDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvc2V0dXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91aS9ndGsvc2V0dXAuY1xuQEAgLTEyLDcgJiM0MzsxMiw3IEBAIGludCBwZXJmX2d0a19faW5pdCh2b2lkKVxuIFx0Z3RrX3VpX3Byb2dyZXNzX19pbml0KCk7XG4gXHRwZXJmX2d0a19faW5pdF9ocHAoKTtcbiBcbi1cdHJldHVybiBndGtfaW5pdF9jaGVjayhOVUxMLCBOVUxMKSA/IDAgOiAtMTtcbiYjNDM7XHRyZXR1cm4gZ3RrX2luaXRfY2hlY2soKSA/IDAgOiAtMTtcbiB9XG4gXG4gdm9pZCBwZXJmX2d0a19fZXhpdChib29sIHdhaXRfZm9yX29rIF9fbWF5YmVfdW51c2VkKVxuQEAgLTIwLDUgJiM0MzsyMCw2IEBAIHZvaWQgcGVyZl9ndGtfX2V4aXQoYm9vbCB3YWl0X2Zvcl9vayBfX21heWJlX3VudXNlZClcbiBcdGlmICghcGVyZl9ndGtfX2lzX2FjdGl2ZV9jb250ZXh0KHBnY3R4KSlcbiBcdFx0cmV0dXJuO1xuIFx0cGVyZl9lcnJvcl9fdW5yZWdpc3RlcihcdTAwMjZwZXJmX2d0a19lb3BzKTtcbi1cdGd0a19tYWluX3F1aXQoKTtcbiYjNDM7XHRwZXJmX2d0a19fcXVpdF9lcnJvcl9kaWFsb2coKTtcbiYjNDM7XHRwZXJmX2d0a19fcXVpdF9tYWluX2xvb3AoKTtcbiB9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91aS9ndGsvdXRpbC5jIGIvdG9vbHMvcGVyZi91aS9ndGsvdXRpbC5jXG5pbmRleCBjNDdmNWMzODc4MzhjLi41ODIzZmYwZDdjMmE3IDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvdXRpbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3VpL2d0ay91dGlsLmNcbkBAIC0yLDggJiM0MzsyLDEwIEBAXG4gI2luY2x1ZGUgXCYjMzQ7Li4vdXRpbC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7Z3RrLmhcJiMzNDtcbiBcbiYjNDM7I2luY2x1ZGUgXHUwMDNjc3RkYXJnLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjc3RkaW8uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY3N0ZGxpYi5oXHUwMDNlXG4tI2luY2x1ZGUgXHUwMDNjc3RyaW5nLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvY29tcGlsZXIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3phbGxvYy5oXHUwMDNlXG4gXG4gc3RydWN0IHBlcmZfZ3RrX2NvbnRleHQgKnBnY3R4O1xuQEAgLTI4LDg2ICYjNDM7MzAsMTAzIEBAIGludCBwZXJmX2d0a19fZGVhY3RpdmF0ZV9jb250ZXh0KHN0cnVjdCBwZXJmX2d0a19jb250ZXh0ICoqY3R4KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MzsvKlxuJiM0MzsgKiBwZXJmX2d0a19fZXJyb3IoKSBjYW4gYmUgY2FsbGVkIHJlLWVudHJhbnRseSwgc2luY2UgdGhlIGRpYWxvZyBpc24mIzM5O3RcbiYjNDM7ICogbW9kYWwgYW5kIGl0cyBuZXN0ZWQgbG9vcCBzdGlsbCBwdW1wcyBldmVudHMgZm9yIHRoZSBtYWluIHdpbmRvdy5cbiYjNDM7ICogVHJhY2sgZXZlcnkgY3VycmVudGx5IHJ1bm5pbmcgbG9vcCBpbnN0ZWFkIG9mIGEgc2luZ2xlIHBvaW50ZXIsIHNvIGFcbiYjNDM7ICogbmVzdGVkIGNhbGwgY2FuJiMzOTt0IGNsb2JiZXIgYW4gb3V0ZXIgY2FsbCYjMzk7cyBsb29wIGFuZCBsZWFrIGl0LlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIEdTTGlzdCAqcGVyZl9ndGtfX2Vycm9yX2xvb3BzO1xuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgcGVyZl9ndGtfX3F1aXRfbG9vcChncG9pbnRlciBkYXRhLCBncG9pbnRlciB1c2VyX2RhdGEgX19tYXliZV91bnVzZWQpXG4mIzQzO3tcbiYjNDM7XHRnX21haW5fbG9vcF9xdWl0KGRhdGEpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0Mzt2b2lkIHBlcmZfZ3RrX19xdWl0X2Vycm9yX2RpYWxvZyh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0Z19zbGlzdF9mb3JlYWNoKHBlcmZfZ3RrX19lcnJvcl9sb29wcywgcGVyZl9ndGtfX3F1aXRfbG9vcCwgTlVMTCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHBlcmZfZ3RrX19kaWFsb2dfcmVzcG9uc2UoR3RrRGlhbG9nICpkaWFsb2csXG4mIzQzO1x0XHRcdFx0ICAgICAgZ2ludCByZXNwb25zZV9pZCBfX21heWJlX3VudXNlZCxcbiYjNDM7XHRcdFx0XHQgICAgICBncG9pbnRlciBkYXRhIF9fbWF5YmVfdW51c2VkKVxuJiM0Mzt7XG4mIzQzO1x0Z3RrX3dpbmRvd19kZXN0cm95KEdUS19XSU5ET1coZGlhbG9nKSk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBwZXJmX2d0a19fZXJyb3IoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpXG4ge1xuIFx0Y2hhciAqbXNnO1xuIFx0R3RrV2lkZ2V0ICpkaWFsb2c7XG4mIzQzO1x0R01haW5Mb29wICpsb29wO1xuJiM0MztcdHZhX2xpc3QgYXJnc19jb3B5O1xuIFxuJiM0MztcdHZhX2NvcHkoYXJnc19jb3B5LCBhcmdzKTtcbiBcdGlmICghcGVyZl9ndGtfX2lzX2FjdGl2ZV9jb250ZXh0KHBnY3R4KSB8fFxuLVx0ICAgIHZhc3ByaW50ZihcdTAwMjZtc2csIGZvcm1hdCwgYXJncykgXHUwMDNjIDApIHtcbiYjNDM7XHQgICAgdmFzcHJpbnRmKFx1MDAyNm1zZywgZm9ybWF0LCBhcmdzX2NvcHkpIFx1MDAzYyAwKSB7XG4mIzQzO1x0XHR2YV9lbmQoYXJnc19jb3B5KTtcbiBcdFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O0Vycm9yOlxcblwmIzM0Oyk7XG4gXHRcdHZmcHJpbnRmKHN0ZGVyciwgZm9ybWF0LCBhcmdzKTtcbiBcdFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1xcblwmIzM0Oyk7XG4gXHRcdHJldHVybiAtMTtcbiBcdH1cbiYjNDM7XHR2YV9lbmQoYXJnc19jb3B5KTtcbiBcbiBcdGRpYWxvZyA9IGd0a19tZXNzYWdlX2RpYWxvZ19uZXdfd2l0aF9tYXJrdXAoR1RLX1dJTkRPVyhwZ2N0eC1cdTAwM2VtYWluX3dpbmRvdyksXG4gXHRcdFx0XHRcdEdUS19ESUFMT0dfREVTVFJPWV9XSVRIX1BBUkVOVCxcbiBcdFx0XHRcdFx0R1RLX01FU1NBR0VfRVJST1IsXG4gXHRcdFx0XHRcdEdUS19CVVRUT05TX0NMT1NFLFxuIFx0XHRcdFx0XHRcJiMzNDtcdTAwM2NiXHUwMDNlRXJyb3JcdTAwM2MvYlx1MDAzZVxcblxcbiVzXCYjMzQ7LCBtc2cpO1xuLVx0Z3RrX2RpYWxvZ19ydW4oR1RLX0RJQUxPRyhkaWFsb2cpKTtcbiBcbi1cdGd0a193aWRnZXRfZGVzdHJveShkaWFsb2cpO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogXCYjMzQ7cmVzcG9uc2VcJiMzNDsgb25seSBmaXJlcyB3aGVuIGEgYnV0dG9uIGlzIGNsaWNrZWQ7IERFU1RST1lfV0lUSF9QQVJFTlRcbiYjNDM7XHQgKiBkZXN0cm95cyB0aGUgZGlhbG9nIGRpcmVjdGx5IHdpdGhvdXQgaXQuIFF1aXQgZnJvbSBcJiMzNDtkZXN0cm95XCYjMzQ7XG4mIzQzO1x0ICogaW5zdGVhZCwgd2hpY2ggZmlyZXMgZWl0aGVyIHdheSwgc28gdGhlIG5lc3RlZCBsb29wIGJlbG93IGNhbiYjMzk7dFxuJiM0MztcdCAqIG91dGxpdmUgdGhlIGRpYWxvZyBhbmQgaGFuZy5cbiYjNDM7XHQgKi9cbiYjNDM7XHRsb29wID0gZ19tYWluX2xvb3BfbmV3KE5VTEwsIEZBTFNFKTtcbiYjNDM7XHRwZXJmX2d0a19fZXJyb3JfbG9vcHMgPSBnX3NsaXN0X3ByZXBlbmQocGVyZl9ndGtfX2Vycm9yX2xvb3BzLCBsb29wKTtcbiYjNDM7XHRnX3NpZ25hbF9jb25uZWN0KGRpYWxvZywgXCYjMzQ7cmVzcG9uc2VcJiMzNDssXG4mIzQzO1x0XHRcdCBHX0NBTExCQUNLKHBlcmZfZ3RrX19kaWFsb2dfcmVzcG9uc2UpLCBOVUxMKTtcbiYjNDM7XHRnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoZGlhbG9nLCBcJiMzNDtkZXN0cm95XCYjMzQ7LFxuJiM0MztcdFx0XHRcdCBHX0NBTExCQUNLKGdfbWFpbl9sb29wX3F1aXQpLCBsb29wKTtcbiYjNDM7XG4mIzQzO1x0Z3RrX3dpZGdldF9zZXRfdmlzaWJsZShkaWFsb2csIFRSVUUpO1xuJiM0MztcdGdfbWFpbl9sb29wX3J1bihsb29wKTtcbiYjNDM7XHRwZXJmX2d0a19fZXJyb3JfbG9vcHMgPSBnX3NsaXN0X3JlbW92ZShwZXJmX2d0a19fZXJyb3JfbG9vcHMsIGxvb3ApO1xuJiM0MztcdGdfbWFpbl9sb29wX3VucmVmKGxvb3ApO1xuJiM0MztcbiBcdGZyZWUobXNnKTtcbiBcdHJldHVybiAwO1xuIH1cbiBcbi0jaWZkZWYgSEFWRV9HVEtfSU5GT19CQVJfU1VQUE9SVFxuIHN0YXRpYyBpbnQgcGVyZl9ndGtfX3dhcm5pbmdfaW5mb19iYXIoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpXG4ge1xuIFx0Y2hhciAqbXNnO1xuJiM0MztcdHZhX2xpc3QgYXJnc19jb3B5O1xuIFxuJiM0MztcdHZhX2NvcHkoYXJnc19jb3B5LCBhcmdzKTtcbiBcdGlmICghcGVyZl9ndGtfX2lzX2FjdGl2ZV9jb250ZXh0KHBnY3R4KSB8fFxuLVx0ICAgIHZhc3ByaW50ZihcdTAwMjZtc2csIGZvcm1hdCwgYXJncykgXHUwMDNjIDApIHtcbiYjNDM7XHQgICAgdmFzcHJpbnRmKFx1MDAyNm1zZywgZm9ybWF0LCBhcmdzX2NvcHkpIFx1MDAzYyAwKSB7XG4mIzQzO1x0XHR2YV9lbmQoYXJnc19jb3B5KTtcbiBcdFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1dhcm5pbmc6XFxuXCYjMzQ7KTtcbiBcdFx0dmZwcmludGYoc3RkZXJyLCBmb3JtYXQsIGFyZ3MpO1xuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIC0xO1xuIFx0fVxuJiM0MztcdHZhX2VuZChhcmdzX2NvcHkpO1xuIFxuIFx0Z3RrX2xhYmVsX3NldF90ZXh0KEdUS19MQUJFTChwZ2N0eC1cdTAwM2VtZXNzYWdlX2xhYmVsKSwgbXNnKTtcbiBcdGd0a19pbmZvX2Jhcl9zZXRfbWVzc2FnZV90eXBlKEdUS19JTkZPX0JBUihwZ2N0eC1cdTAwM2VpbmZvX2JhciksXG4gXHRcdFx0XHQgICAgICBHVEtfTUVTU0FHRV9XQVJOSU5HKTtcbi1cdGd0a193aWRnZXRfc2hvdyhwZ2N0eC1cdTAwM2VpbmZvX2Jhcik7XG4tXG4tXHRmcmVlKG1zZyk7XG4tXHRyZXR1cm4gMDtcbi19XG4tI2Vsc2Vcbi1zdGF0aWMgaW50IHBlcmZfZ3RrX193YXJuaW5nX3N0YXR1c2Jhcihjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncylcbi17XG4tXHRjaGFyICptc2csICpwO1xuLVxuLVx0aWYgKCFwZXJmX2d0a19faXNfYWN0aXZlX2NvbnRleHQocGdjdHgpIHx8XG4tXHQgICAgdmFzcHJpbnRmKFx1MDAyNm1zZywgZm9ybWF0LCBhcmdzKSBcdTAwM2MgMCkge1xuLVx0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7V2FybmluZzpcXG5cJiMzNDspO1xuLVx0XHR2ZnByaW50ZihzdGRlcnIsIGZvcm1hdCwgYXJncyk7XG4tXHRcdGZwcmludGYoc3RkZXJyLCBcJiMzNDtcXG5cJiMzNDspO1xuLVx0XHRyZXR1cm4gLTE7XG4tXHR9XG4tXG4tXHRndGtfc3RhdHVzYmFyX3BvcChHVEtfU1RBVFVTQkFSKHBnY3R4LVx1MDAzZXN0YXRiYXIpLFxuLVx0XHRcdCAgcGdjdHgtXHUwMDNlc3RhdGJhcl9jdHhfaWQpO1xuLVxuLVx0LyogT25seSBmaXJzdCBsaW5lIGNhbiBiZSBkaXNwbGF5ZWQgKi9cbi1cdHAgPSBzdHJjaHIobXNnLCAmIzM5O1xcbiYjMzk7KTtcbi1cdGlmIChwKVxuLVx0XHQqcCA9ICYjMzk7XFwwJiMzOTs7XG4tXG4tXHRndGtfc3RhdHVzYmFyX3B1c2goR1RLX1NUQVRVU0JBUihwZ2N0eC1cdTAwM2VzdGF0YmFyKSxcbi1cdFx0XHQgICBwZ2N0eC1cdTAwM2VzdGF0YmFyX2N0eF9pZCwgbXNnKTtcbiYjNDM7XHRndGtfd2lkZ2V0X3NldF92aXNpYmxlKHBnY3R4LVx1MDAzZWluZm9fYmFyLCBUUlVFKTtcbiBcbiBcdGZyZWUobXNnKTtcbiBcdHJldHVybiAwO1xuIH1cbi0jZW5kaWZcbiBcbiBzdHJ1Y3QgcGVyZl9lcnJvcl9vcHMgcGVyZl9ndGtfZW9wcyA9IHtcbiBcdC5lcnJvclx0XHQ9IHBlcmZfZ3RrX19lcnJvcixcbi0jaWZkZWYgSEFWRV9HVEtfSU5GT19CQVJfU1VQUE9SVFxuIFx0Lndhcm5pbmdcdD0gcGVyZl9ndGtfX3dhcm5pbmdfaW5mb19iYXIsXG4tI2Vsc2Vcbi1cdC53YXJuaW5nXHQ9IHBlcmZfZ3RrX193YXJuaW5nX3N0YXR1c2Jhcixcbi0jZW5kaWZcbiB9O1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvc2V0dXAuYyBiL3Rvb2xzL3BlcmYvdWkvc2V0dXAuY1xuaW5kZXggZmY4MDAwNDdlNjk3Zi4uZDg4NzM0NmM3YTYzMiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdWkvc2V0dXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91aS9zZXR1cC5jXG5AQCAtMTQsNyAmIzQzOzE0LDcgQEAgaW50IHVzZV9icm93c2VyID0gLTE7XG4gXG4gI2RlZmluZSBQRVJGX0dUS19EU08gXCYjMzQ7bGlicGVyZi1ndGsuc29cJiMzNDtcbiBcbi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlRcbiYjNDM7I2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXG4gXG4gc3RhdGljIGludCBzZXR1cF9ndGtfYnJvd3Nlcih2b2lkKVxuIHtcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuYyBiL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5jXG5pbmRleCBkZjcwZTk1YTg0NzA0Li4xMjNiNmQ1ZmNlYTc4IDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91dGlsL2Fubm90YXRlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5jXG5AQCAtMTQ1LDYgJiM0MzsxNDUsMTcgQEAgc3RhdGljIGludCBhbm5vdGF0ZWRfc291cmNlX19hbGxvY19oaXN0b2dyYW1zKHN0cnVjdCBhbm5vdGF0ZWRfc291cmNlICpzcmMsXG4gXHRyZXR1cm4gc3JjLVx1MDAzZWhpc3RvZ3JhbXMgPyAwIDogLTE7XG4gfVxuIFxuJiM0MztzdHJ1Y3Qgc3ltX2hpc3RfZW50cnkgKlxuJiM0Mzthbm5vdGF0ZWRfc291cmNlX19oaXN0X2VudHJ5KHN0cnVjdCBhbm5vdGF0ZWRfc291cmNlICpzcmMsIGNvbnN0IHN0cnVjdCBldnNlbCAqZXZzZWwsIHU2NCBvZmZzZXQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgc3ltX2hpc3RfZW50cnkgKmVudHJ5O1xuJiM0MztcdGxvbmcga2V5ID0gb2Zmc2V0IFx1MDAzY1x1MDAzYyAxNiB8IGV2c2VsLVx1MDAzZWNvcmUuaWR4O1xuJiM0MztcbiYjNDM7XHRpZiAoIWhhc2htYXBfX2ZpbmQoc3JjLVx1MDAzZXNhbXBsZXMsIGtleSwgXHUwMDI2ZW50cnkpKVxuJiM0MztcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0cmV0dXJuIGVudHJ5O1xuJiM0Mzt9XG4mIzQzO1xuIHZvaWQgc3ltYm9sX19hbm5vdGF0ZV96ZXJvX2hpc3RvZ3JhbXMoc3RydWN0IHN5bWJvbCAqc3ltKVxuIHtcbiBcdHN0cnVjdCBhbm5vdGF0aW9uICpub3RlcyA9IHN5bWJvbF9fYW5ub3RhdGlvbihzeW0pO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5oIGIvdG9vbHMvcGVyZi91dGlsL2Fubm90YXRlLmhcbmluZGV4IGZhMDhkMDliODBmNzYuLjQwMDM4YTM3NzlkNDYgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91dGlsL2Fubm90YXRlLmhcbkBAIC00MDYsMTYgJiM0Mzs0MDYsOCBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBzeW1faGlzdCAqYW5ub3RhdGlvbl9faGlzdG9ncmFtKHN0cnVjdCBhbm5vdGF0aW9uICpub3RlcyxcbiBcdHJldHVybiBhbm5vdGF0ZWRfc291cmNlX19oaXN0b2dyYW0obm90ZXMtXHUwMDNlc3JjLCBldnNlbCk7XG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgc3RydWN0IHN5bV9oaXN0X2VudHJ5ICpcbi1hbm5vdGF0ZWRfc291cmNlX19oaXN0X2VudHJ5KHN0cnVjdCBhbm5vdGF0ZWRfc291cmNlICpzcmMsIGNvbnN0IHN0cnVjdCBldnNlbCAqZXZzZWwsIHU2NCBvZmZzZXQpXG4te1xuLVx0c3RydWN0IHN5bV9oaXN0X2VudHJ5ICplbnRyeTtcbi1cdGxvbmcga2V5ID0gb2Zmc2V0IFx1MDAzY1x1MDAzYyAxNiB8IGV2c2VsLVx1MDAzZWNvcmUuaWR4O1xuLVxuLVx0aWYgKCFoYXNobWFwX19maW5kKHNyYy1cdTAwM2VzYW1wbGVzLCBrZXksIFx1MDAyNmVudHJ5KSlcbi1cdFx0cmV0dXJuIE5VTEw7XG4tXHRyZXR1cm4gZW50cnk7XG4tfVxuJiM0MztzdHJ1Y3Qgc3ltX2hpc3RfZW50cnkgKlxuJiM0Mzthbm5vdGF0ZWRfc291cmNlX19oaXN0X2VudHJ5KHN0cnVjdCBhbm5vdGF0ZWRfc291cmNlICpzcmMsIGNvbnN0IHN0cnVjdCBldnNlbCAqZXZzZWwsIHU2NCBvZmZzZXQpO1xuIFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IGFubm90YXRpb24gKnN5bWJvbF9fYW5ub3RhdGlvbihzdHJ1Y3Qgc3ltYm9sICpzeW0pXG4ge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDAyOjE3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7QWxsIGNoYW5nZXMgaW4gdGhpcyBwYXRjaCBzZXJpZXMgYXJlIHN0cmljdGx5IGNvbmZpbmVkIHRvIHVzZXItc3BhY2UgdG9vbGluZyB1bmRlciBgdG9vbHMvYCAoc3BlY2lmaWNhbGx5IGB0b29scy9wZXJmYCBhbmQgYHRvb2xzL2J1aWxkYCksIHdoaWNoIGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAoYHZtbGludXhgKSBvciBrZXJuZWwgbW9kdWxlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzY2Y4ZjM0OGE1MjVhOTU3Yzg3ODU2OGQ0NmQ4MDBjYTA2ZGIxYTkzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBTZXAgNyAwMjoxNzoyNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL01ha2VmaWxlLmZlYXR1cmUgYi90b29scy9idWlsZC9NYWtlZmlsZS5mZWF0dXJlCmluZGV4IDk5ZWIwZWEwOTUzNzUuLjRlYzk1YzM1YTVjMTkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2J1aWxkL01ha2VmaWxlLmZlYXR1cmUKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvYnVpbGQvTWFrZWZpbGUuZmVhdHVyZQpAQCAtMTEzLDggJiM0MzsxMTMsNyBAQCBGRUFUVVJFX1RFU1RTX0VYVFJBIDo9ICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgY29tcGlsZS14MzIgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgIGNwbHVzLWRlbWFuZ2xlICAgICAgICAgICAgICAgICBcCiAgICAgICAgICBjeGEtZGVtYW5nbGUgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgZ3RrMiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIGd0azItaW5mb2JhciAgICAgICAgICAgICAgICAgICBcCiYjNDM7ICAgICAgICAgZ3RrNCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgIGhlbGxvICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICBiYWJlbHRyYWNlMi1jdGYtd3JpdGVyICAgICAgICAgXAogICAgICAgICAgbGliY2Fwc3RvbmUgICAgICAgICAgICAgICAgICAgIFwKQEAgLTE0Myw2ICYjNDM7MTQyLDcgQEAgZW5kaWYKIEZFQVRVUkVfRElTUExBWSA/PSAgICAgICAgICAgICAgXAogICAgICAgICAgbGliZHcgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICBnbGliYyAgICAgICAgICAgICAgICAgIFwKJiM0MzsgICAgICAgICBndGs0ICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgIGxpYmVsZiAgICAgICAgICAgICAgICAgXAogICAgICAgICAgbGlibnVtYSAgICAgICAgICAgICAgICBcCiAgICAgICAgICBudW1hX251bV9wb3NzaWJsZV9jcHVzIFwKZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvTWFrZWZpbGUgYi90b29scy9idWlsZC9mZWF0dXJlL01ha2VmaWxlCmluZGV4IDdkMTY1MDE4MTE2YTUuLjAxYzQ4ZTZlZjAyMWQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvTWFrZWZpbGUKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvYnVpbGQvZmVhdHVyZS9NYWtlZmlsZQpAQCAtMTEsOCAmIzQzOzExLDcgQEAgRklMRVM9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgdGVzdC1ldmVudGZkLmJpbiAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgdGVzdC1mb3J0aWZ5LXNvdXJjZS5iaW4gICAgICAgICAgICAgICAgXAogICAgICAgICAgdGVzdC1nbGliYy5iaW4gICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgdGVzdC1ndGsyLmJpbiAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgdGVzdC1ndGsyLWluZm9iYXIuYmluICAgICAgICAgICAgICAgICAgXAomIzQzOyAgICAgICAgIHRlc3QtZ3RrNC5iaW4gICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgIHRlc3QtaGVsbG8uYmluICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgIHRlc3QtbGliYmZkLmJpbiAgICAgICAgICAgICAgICAgICAgICAgIFwKIAkgdGVzdC1saWJiZmQtdGhyZWFkc2FmZS5iaW4gICAgICAJXApAQCAtMjQwLDExICYjNDM7MjM5LDggQEAgJChPVVRQVVQpdGVzdC1saWJjcHVwb3dlci5iaW46CiAkKE9VVFBVVCl0ZXN0LWxpYnRyYWNlZnMuYmluOgogCSAkKEJVSUxEKSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1jZmxhZ3MgbGlidHJhY2VmcyAyJmd0Oy9kZXYvbnVsbCkgLWx0cmFjZWZzCiAKLSQoT1VUUFVUKXRlc3QtZ3RrMi5iaW46Ci0JJChCVUlMRCkgJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyAtLWNmbGFncyBndGsmIzQzOy0yLjAgMiZndDsvZGV2L251bGwpIC1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMKLQotJChPVVRQVVQpdGVzdC1ndGsyLWluZm9iYXIuYmluOgotCSQoQlVJTEQpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgLS1jZmxhZ3MgZ3RrJiM0MzstMi4wIDImZ3Q7L2Rldi9udWxsKQomIzQzOyQoT1VUUFVUKXRlc3QtZ3RrNC5iaW46CiYjNDM7CSQoQlVJTEQpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgLS1jZmxhZ3MgZ3RrNCAyJmd0Oy9kZXYvbnVsbCkKIAogZ3JlcC1saWJzICA9ICQoZmlsdGVyIC1sJSwkKDEpKQogc3RyaXAtbGlicyA9ICQoZmlsdGVyLW91dCAtbCUsJCgxKSkKZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGsyLWluZm9iYXIuYyBiL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGsyLWluZm9iYXIuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjFiNzE2ZGQ1NzMzMC4uMDAwMDAwMDAwMDAwMAotLS0gYS90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi1pbmZvYmFyLmMKJiM0MzsmIzQzOyYjNDM7IC9kZXYvbnVsbApAQCAtMSwxMiAmIzQzOzAsMCBAQAotLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKLSNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAmIzM0Oy1Xc3RyaWN0LXByb3RvdHlwZXMmIzM0OwotI2luY2x1ZGUgJmx0O2d0ay9ndGsuaCZndDsKLSNwcmFnbWEgR0NDIGRpYWdub3N0aWMgZXJyb3IgJiMzNDstV3N0cmljdC1wcm90b3R5cGVzJiMzNDsKLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLXsKLQlndGtfaW5pdCgmYW1wO2FyZ2MsICZhbXA7YXJndik7Ci0JZ3RrX2luZm9fYmFyX25ldygpOwotCi0JcmV0dXJuIDA7Ci19CmRpZmYgLS1naXQgYS90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi5jIGIvdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azQuYwpzaW1pbGFyaXR5IGluZGV4IDc2JQpyZW5hbWUgZnJvbSB0b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi5jCnJlbmFtZSB0byB0b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrNC5jCmluZGV4IDJhYWY0YmZjMjA1NTYuLmI5NTIwZTc0MDhiOTkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGsyLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azQuYwpAQCAtMyw5ICYjNDM7Myw5IEBACiAjaW5jbHVkZSAmbHQ7Z3RrL2d0ay5oJmd0OwogI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBlcnJvciAmIzM0Oy1Xc3RyaWN0LXByb3RvdHlwZXMmIzM0OwogCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQomIzQzO2ludCBtYWluKHZvaWQpCiB7Ci0JZ3RrX2luaXQoJmFtcDthcmdjLCAmYW1wO2FyZ3YpOwomIzQzOwlndGtfaW5pdCgpOwogCiAgICAgICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9Eb2N1bWVudGF0aW9uL3BlcmYtcmVwb3J0LnR4dCBiL3Rvb2xzL3BlcmYvRG9jdW1lbnRhdGlvbi9wZXJmLXJlcG9ydC50eHQKaW5kZXggMjJmODdlYWEzMjc5Ni4uN2FmOWIzZjgxYzA2NSAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi9Eb2N1bWVudGF0aW9uL3BlcmYtcmVwb3J0LnR4dAomIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL0RvY3VtZW50YXRpb24vcGVyZi1yZXBvcnQudHh0CkBAIC0zNTEsNyAmIzQzOzM1MSw3IEBAIE9QVElPTlMKIAlyZXF1aXJlcyBhIHR0eSwgaWYgb25lIGlzIG5vdCBwcmVzZW50LCBhcyB3aGVuIHBpcGluZyB0byBvdGhlcgogCWNvbW1hbmRzLCB0aGUgc3RkaW8gaW50ZXJmYWNlIGlzIHVzZWQuCiAKLS0tZ3RrOjogVXNlIHRoZSBHVEsyIGludGVyZmFjZS4KJiM0MzstLWd0azo6IFVzZSB0aGUgR1RLNCBpbnRlcmZhY2UuCiAKIC1rOjoKIC0tdm1saW51eD0mbHQ7ZmlsZSZndDs6OgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9NYWtlZmlsZSBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUKaW5kZXggNWI3MTM4MzdlZWRlNy4uNTYwMTQxMDY0NzlhMyAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi9NYWtlZmlsZQomIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL01ha2VmaWxlCkBAIC0xMDYsNyAmIzQzOzEwNiw3IEBAIGNsZWFuOgogIyBtYWtlIC1DIHRvb2xzL3BlcmYgLWYgdGVzdHMvbWFrZQogIwogYnVpbGQtdGVzdDoKLQlAJChNQUtFKSBTSFVGPTEgLWYgdGVzdHMvbWFrZSBSRVVTRV9GRUFUVVJFU19EVU1QPTEgTUs9TWFrZWZpbGUgU0VUX1BBUkFMTEVMPTEgLS1uby1wcmludC1kaXJlY3RvcnkgdGFycGtnIG1ha2Vfc3RhdGljIG1ha2Vfd2l0aF9ndGsyIG91dAomIzQzOwlAJChNQUtFKSBTSFVGPTEgLWYgdGVzdHMvbWFrZSBSRVVTRV9GRUFUVVJFU19EVU1QPTEgTUs9TWFrZWZpbGUgU0VUX1BBUkFMTEVMPTEgLS1uby1wcmludC1kaXJlY3RvcnkgdGFycGtnIG1ha2Vfc3RhdGljIG1ha2Vfd2l0aF9ndGs0IG91dAogCiBidWlsZC10ZXN0LXRhcmJhbGw6CiAJQCQoTUFLRSkgLWYgdGVzdHMvbWFrZSBSRVVTRV9GRUFUVVJFU19EVU1QPTEgTUs9TWFrZWZpbGUgU0VUX1BBUkFMTEVMPTEgLS1uby1wcmludC1kaXJlY3Rvcnkgb3V0CmRpZmYgLS1naXQgYS90b29scy9wZXJmL01ha2VmaWxlLmNvbmZpZyBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUuY29uZmlnCmluZGV4IDRkNTk5M2RhOWY5NDUuLjRlZTczOTNhMzlmOTEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3BlcmYvTWFrZWZpbGUuY29uZmlnCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUuY29uZmlnCkBAIC03NzQsMjEgJiM0Mzs3NzQsMjIgQEAgaWZuZGVmIE5PX1NMQU5HCiAgIGVuZGlmCiBlbmRpZgogCi1pZmRlZiBHVEsyCi0gIEZMQUdTX0dUSzI9JChDRkxBR1MpICQoTERGTEFHUykgJChFWFRMSUJTKSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIC0tY2ZsYWdzIGd0ayYjNDM7LTIuMCAyJmd0Oy9kZXYvbnVsbCkKLSAgJChjYWxsIGZlYXR1cmVfY2hlY2ssZ3RrMikKLSAgaWZuZXEgKCQoZmVhdHVyZS1ndGsyKSwgMSkKLSAgICAkKHdhcm5pbmcgR1RLMiBub3QgZm91bmQsIGRpc2FibGVzIEdUSzIgc3VwcG9ydC4gUGxlYXNlIGluc3RhbGwgZ3RrMi1kZXZlbCBvciBsaWJndGsyLjAtZGV2KQotICAgIE5PX0dUSzIgOj0gMQomIzQzO2lmZGVmIEdUSzQKJiM0MzsgIEZMQUdTX0dUSzQ9JChDRkxBR1MpICQoTERGTEFHUykgJChFWFRMSUJTKSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIC0tY2ZsYWdzIGd0azQgMiZndDsvZGV2L251bGwpCiYjNDM7ICAkKGNhbGwgZmVhdHVyZV9jaGVjayxndGs0KQomIzQzOyAgaWZuZXEgKCQoZmVhdHVyZS1ndGs0KSwgMSkKJiM0MzsgICAgJCh3YXJuaW5nIEdUSzQgbm90IGZvdW5kLCBkaXNhYmxlcyBHVEs0IHN1cHBvcnQuIFBsZWFzZSBpbnN0YWxsIGd0azQtZGV2ZWwgb3IgbGliZ3RrLTQtZGV2KQomIzQzOyAgICBOT19HVEs0IDo9IDEKICAgZWxzZQotICAgICQoY2FsbCBmZWF0dXJlX2NoZWNrLGd0azItaW5mb2JhcikKLSAgICBpZmVxICgkKGZlYXR1cmUtZ3RrMi1pbmZvYmFyKSwgMSkKLSAgICAgIEdUS19DRkxBR1MgOj0gLURIQVZFX0dUS19JTkZPX0JBUl9TVVBQT1JUCi0gICAgZW5kaWYKLSAgICBDRkxBR1MgJiM0Mzs9IC1ESEFWRV9HVEsyX1NVUFBPUlQKLSAgICBHVEtfQ0ZMQUdTICYjNDM7PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1jZmxhZ3MgZ3RrJiM0MzstMi4wIDImZ3Q7L2Rldi9udWxsKQotICAgIEdUS19MSUJTIDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgZ3RrJiM0MzstMi4wIDImZ3Q7L2Rldi9udWxsKQomIzQzOyAgICBDRkxBR1MgJiM0Mzs9IC1ESEFWRV9HVEs0X1NVUFBPUlQKJiM0MzsgICAgR1RLX0NGTEFHUyAmIzQzOz0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tY2ZsYWdzIGd0azQgMiZndDsvZGV2L251bGwpCiYjNDM7ICAgIEdUS19MSUJTIDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgZ3RrNCAyJmd0Oy9kZXYvbnVsbCkKICAgICBFWFRMSUJTICYjNDM7PSAtbGRsCiYjNDM7ICAgICMgbGlicGVyZi1ndGsuc28gaXMgZGxvcGVuKCllZCBhdCBydW50aW1lIGFuZCBjYWxscyBiYWNrIGludG8KJiM0MzsgICAgIyBzeW1ib2xzIGRlZmluZWQgaW4gdGhlIHBlcmYgYmluYXJ5IGl0c2VsZiAoY2FsbGNoYWluX3BhcmFtLAomIzQzOyAgICAjIHN5bWJvbF9jb25mLCBldnNlbF9fbmFtZSwgLi4uKTogcGVyZiBuZWVkcyB0byBleHBvcnQgdGhvc2UKJiM0MzsgICAgIyBkeW5hbWljYWxseSBmb3IgdGhlIHBsdWdpbiB0byByZXNvbHZlIHRoZW0uCiYjNDM7ICAgIExERkxBR1MgJiM0Mzs9IC1yZHluYW1pYwogICBlbmRpZgogZW5kaWYKIApkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9NYWtlZmlsZS5wZXJmIGIvdG9vbHMvcGVyZi9NYWtlZmlsZS5wZXJmCmluZGV4IDI5Y2ZkNDRjNDI3ZjMuLjI0MzhiNDBlYWFlYzEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3BlcmYvTWFrZWZpbGUucGVyZgomIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL01ha2VmaWxlLnBlcmYKQEAgLTQ5LDcgJiM0Mzs0OSw3IEBAIGluY2x1ZGUgLi4vc2NyaXB0cy91dGlsaXRpZXMubWFrCiAjCiAjIERlZmluZSBOT19TTEFORyBpZiB5b3UgZG8gbm90IHdhbnQgVFVJIHN1cHBvcnQuCiAjCi0jIERlZmluZSBHVEsyIGlmIHlvdSB3YW50IEdUSyYjNDM7IEdVSSBzdXBwb3J0LgomIzQzOyMgRGVmaW5lIEdUSzQgaWYgeW91IHdhbnQgR1RLJiM0MzsgR1VJIHN1cHBvcnQuCiAjCiAjIERlZmluZSBOT19ERU1BTkdMRSBpZiB5b3UgZG8gbm90IHdhbnQgQyYjNDM7JiM0Mzsgc3ltYm9sIGRlbWFuZ2xpbmcuCiAjCkBAIC00NzMsNyAmIzQzOzQ3Myw3IEBAIGlmbmVxICgkKE9VVFBVVCksKQogICBDRkxBR1MgJiM0Mzs9IC1JJChPVVRQVVQpCiBlbmRpZgogCi1pZmRlZiBHVEsyCiYjNDM7aWZkZWYgR1RLNAogICBBTExfUFJPR1JBTVMgJiM0Mzs9ICQoT1VUUFVUKWxpYnBlcmYtZ3RrLnNvCiAgIEdUS19JTiA6PSAkKE9VVFBVVClndGstaW4ubwogZW5kaWYKQEAgLTgxMSw3ICYjNDM7ODExLDcgQEAgY2hlY2s6IHByZXBhcmUKIAogIyMjIEluc3RhbGxhdGlvbiBydWxlcwogCi1pZmRlZiBHVEsyCiYjNDM7aWZkZWYgR1RLNAogaW5zdGFsbC1ndGs6ICQoT1VUUFVUKWxpYnBlcmYtZ3RrLnNvCiAJJChjYWxsIFFVSUVUX0lOU1RBTEwsICYjMzk7R1RLIFVJJiMzOTspIFwKIAkJJChJTlNUQUxMKSAtZCAtbSA3NTUgJiMzOTskKERFU1RESVJfU1EpJChsaWJkaXJfU1EpJiMzOTs7IFwKZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1hbm5vdGF0ZS5jIGIvdG9vbHMvcGVyZi9idWlsdGluLWFubm90YXRlLmMKaW5kZXggNjljYjcyYjIwODJhNi4uMTUxNjNlMDgxYThjZSAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi9idWlsdGluLWFubm90YXRlLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi9idWlsdGluLWFubm90YXRlLmMKQEAgLTUyLDcgJiM0Mzs1Miw3IEBAIHN0cnVjdCBwZXJmX2Fubm90YXRlIHsKIAlib29sCSAgIHVzZV90dWk7CiAjZW5kaWYKIAlib29sCSAgIHVzZV9zdGRpbywgdXNlX3N0ZGlvMjsKLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVAomIzQzOyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVAogCWJvb2wJICAgdXNlX2d0azsKICNlbmRpZgogCWJvb2wJICAgc2tpcF9taXNzaW5nOwpAQCAtNzEyLDcgJiM0Mzs3MTIsNyBAQCBpbnQgY21kX2Fubm90YXRlKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndikKIAlPUFRfQk9PTEVBTigmIzM5O3EmIzM5OywgJiMzNDtxdWlldCYjMzQ7LCAmYW1wO3F1aWV0LCAmIzM0O2RvIG5vdyBzaG93IGFueSB3YXJuaW5ncyBvciBtZXNzYWdlcyYjMzQ7KSwKIAlPUFRfQk9PTEVBTigmIzM5O0QmIzM5OywgJiMzNDtkdW1wLXJhdy10cmFjZSYjMzQ7LCAmYW1wO2R1bXBfdHJhY2UsCiAJCSAgICAmIzM0O2R1bXAgcmF3IHRyYWNlIGluIEFTQ0lJJiMzNDspLAotI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUCiYjNDM7I2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUCiAJT1BUX0JPT0xFQU4oMCwgJiMzNDtndGsmIzM0OywgJmFtcDthbm5vdGF0ZS51c2VfZ3RrLCAmIzM0O1VzZSB0aGUgR1RLIGludGVyZmFjZSYjMzQ7KSwKICNlbmRpZgogI2lmZGVmIEhBVkVfU0xBTkdfU1VQUE9SVApAQCAtODI4LDcgJiM0Mzs4MjgsNyBAQCBpbnQgY21kX2Fubm90YXRlKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndikKIAlpZiAoYW5ub3RhdGVfY2hlY2tfYXJncygpICZsdDsgMCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVAomIzQzOyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVAogCWlmIChzeW1ib2xfY29uZi5zaG93X25yX3NhbXBsZXMgJmFtcDsmYW1wOyBhbm5vdGF0ZS51c2VfZ3RrKSB7CiAJCXByX2VycigmIzM0Oy0tc2hvdy1uci1zYW1wbGVzIGlzIG5vdCBhdmFpbGFibGUgaW4gLS1ndGsgbW9kZSBhdCB0aGlzIHRpbWVcbiYjMzQ7KTsKIAkJcmV0dXJuIHJldDsKQEAgLTg5OCw3ICYjNDM7ODk4LDcgQEAgaW50IGNtZF9hbm5vdGF0ZShpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpCiAJZWxzZSBpZiAoYW5ub3RhdGUudXNlX3R1aSkKIAkJdXNlX2Jyb3dzZXIgPSAxOwogI2VuZGlmCi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlQKJiM0MzsjaWZkZWYgSEFWRV9HVEs0X1NVUFBPUlQKIAllbHNlIGlmIChhbm5vdGF0ZS51c2VfZ3RrKQogCQl1c2VfYnJvd3NlciA9IDI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1yZXBvcnQuYyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1yZXBvcnQuYwppbmRleCA2MGQxZjE2NjYyOWUwLi5kMTQzODRjNTg0NjYxIDEwMDY0NAotLS0gYS90b29scy9wZXJmL2J1aWx0aW4tcmVwb3J0LmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi9idWlsdGluLXJlcG9ydC5jCkBAIC04Miw3ICYjNDM7ODIsNyBAQCBzdHJ1Y3QgcmVwb3J0IHsKICNpZmRlZiBIQVZFX1NMQU5HX1NVUFBPUlQKIAlib29sCQkJdXNlX3R1aTsKICNlbmRpZgotI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUCiYjNDM7I2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUCiAJYm9vbAkJCXVzZV9ndGs7CiAjZW5kaWYKIAlib29sCQkJdXNlX3N0ZGlvOwpAQCAtMTM1OSw4ICYjNDM7MTM1OSw4IEBAIGludCBjbWRfcmVwb3J0KGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndikKICNpZmRlZiBIQVZFX1NMQU5HX1NVUFBPUlQKIAlPUFRfQk9PTEVBTigwLCAmIzM0O3R1aSYjMzQ7LCAmYW1wO3JlcG9ydC51c2VfdHVpLCAmIzM0O1VzZSB0aGUgVFVJIGludGVyZmFjZSYjMzQ7KSwKICNlbmRpZgotI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUCi0JT1BUX0JPT0xFQU4oMCwgJiMzNDtndGsmIzM0OywgJmFtcDtyZXBvcnQudXNlX2d0aywgJiMzNDtVc2UgdGhlIEdUSzIgaW50ZXJmYWNlJiMzNDspLAomIzQzOyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVAomIzQzOwlPUFRfQk9PTEVBTigwLCAmIzM0O2d0ayYjMzQ7LCAmYW1wO3JlcG9ydC51c2VfZ3RrLCAmIzM0O1VzZSB0aGUgR1RLNCBpbnRlcmZhY2UmIzM0OyksCiAjZW5kaWYKIAlPUFRfQk9PTEVBTigwLCAmIzM0O3N0ZGlvJiMzNDssICZhbXA7cmVwb3J0LnVzZV9zdGRpbywKIAkJICAgICYjMzQ7VXNlIHRoZSBzdGRpbyBpbnRlcmZhY2UmIzM0OyksCkBAIC0xNzEwLDcgJiM0MzsxNzEwLDcgQEAgaW50IGNtZF9yZXBvcnQoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KQogCWVsc2UgaWYgKHJlcG9ydC51c2VfdHVpKQogCQl1c2VfYnJvd3NlciA9IDE7CiAjZW5kaWYKLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVAomIzQzOyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVAogCWVsc2UgaWYgKHJlcG9ydC51c2VfZ3RrKQogCQl1c2VfYnJvd3NlciA9IDI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvc2NyaXB0cy9pbnN0YWxsLWJ1aWxkLWRlcHMuc2ggYi90b29scy9wZXJmL3NjcmlwdHMvaW5zdGFsbC1idWlsZC1kZXBzLnNoCmluZGV4IGQwMDNlN2ZhYjJiZTguLmE2MDFhNTI2MGMxN2UgMTAwNzU1Ci0tLSBhL3Rvb2xzL3BlcmYvc2NyaXB0cy9pbnN0YWxsLWJ1aWxkLWRlcHMuc2gKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi9zY3JpcHRzL2luc3RhbGwtYnVpbGQtZGVwcy5zaApAQCAtMTk5LDggJiM0MzsxOTksOCBAQCBmZWRvcmFfcGtnX2ZvcigpIHsKIAkjIG9wdC1pbiBmZWF0dXJlcywgd2hpY2ggYSBkZWZhdWx0IGJ1aWxkIGRvZXMgbm90IGVuYWJsZTogdGhlIGxpYmJmZAogCSMgZGlzYXNzZW1ibGVyIGZhbWlseSAobGliYmZkLCBsaWJiZmQtdGhyZWFkc2FmZSwgbGliYmZkLWxpYmVydHksCiAJIyBkaXNhc3NlbWJsZXItKiwgY3BsdXMtZGVtYW5nbGUpLCBvbmx5IGxpbmtlZCBvbiBCVUlMRF9OT05ESVNUUk8KLQkjIGJ1aWxkcyBhbmQgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBjYXBzdG9uZSwgR1RLMiwgTElCUEVSTCBhbmQKLQkjIExJQlVOV0lORCBzdXBwb3J0IChpZmRlZiBHVEsyIC8gaWZkZWYgTElCUEVSTCAvIExJQlVOV0lORD0xKSwKJiM0MzsJIyBidWlsZHMgYW5kIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgY2Fwc3RvbmUsIEdUSzQsIExJQlBFUkwgYW5kCiYjNDM7CSMgTElCVU5XSU5EIHN1cHBvcnQgKGlmZGVmIEdUSzQgLyBpZmRlZiBMSUJQRVJMIC8gTElCVU5XSU5EPTEpLAogCSMgYW5kIENvcmVTaWdodCAoaWZkZWYgQ09SRVNJR0hUKSwgYXJlIGRlbGliZXJhdGVseSBub3QgbWFwcGVkLgogCSMgbGliYWlvIGlzIG5vdCBtYXBwZWQgZWl0aGVyOiBpdHMKIAkjIHRlc3QgdXNlcyB0aGUgUE9TSVggQUlPIEFQSSAoYWlvLmgsIGFpb18qLCAtbHJ0KSwgcHJvdmlkZWQgYnkKZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdGVzdHMvbWFrZSBiL3Rvb2xzL3BlcmYvdGVzdHMvbWFrZQppbmRleCBkMmMyZjUyNmUxZGIwLi4yMDJhYjU1MDE5MTYxIDEwMDY0NAotLS0gYS90b29scy9wZXJmL3Rlc3RzL21ha2UKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi90ZXN0cy9tYWtlCkBAIC05NSw3ICYjNDM7OTUsNyBAQCBtYWtlX25vX2JhYmVsdHJhY2UyIDo9IE5PX0JBQkVMVFJBQ0UyPTEKIG1ha2Vfd2l0aF9jb3Jlc2lnaHQgOj0gQ09SRVNJR0hUPTEKIG1ha2Vfbm9fc2R0CSAgICA6PSBOT19TRFQ9MQogbWFrZV9ub19saWJwZm00ICAgICA6PSBOT19MSUJQRk00PTEKLW1ha2Vfd2l0aF9ndGsyICAgICAgOj0gR1RLMj0xCiYjNDM7bWFrZV93aXRoX2d0azQgICAgICA6PSBHVEs0PTEKIG1ha2VfcmVmY250X2NoZWNrICAgOj0gRVhUUkFfQ0ZMQUdTPSYjMzQ7LURSRUZDTlRfQ0hFQ0tJTkc9MSYjMzQ7CiBtYWtlX3RhZ3MgICAgICAgICAgIDo9IHRhZ3MKIG1ha2VfY3Njb3BlICAgICAgICAgOj0gY3Njb3BlCkBAIC0zMTgsNyAmIzQzOzMxOCw3IEBAICQocnVuKToKIAkkKGNhbGwgdGVzdCwkQCkgJmFtcDsmYW1wOyBcCiAJcm0gLXJmICRAICQkVE1QX0RFU1QgfHwgKGNhdCAkQCA7IGZhbHNlKQogCi1tYWtlX3dpdGhfZ3RrMjoKJiM0MzttYWtlX3dpdGhfZ3RrNDoKIAkkKGNhbGwgY2xlYW4pCiAJQFRNUF9ERVNUPSQkKG1rdGVtcCAtZCk7IFwKIAljbWQ9JiMzNDtjZCAkKFBFUkYpICZhbXA7JmFtcDsgJChNQUtFX0YpICQoJEApICQoUEFSQUxMRUxfT1BUKSAkKE9fT1BUKSBERVNURElSPSQkVE1QX0RFU1QmIzM0OzsgXApkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91aS9ndGsvYW5ub3RhdGUuYyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2Fubm90YXRlLmMKaW5kZXggODkyMGUyOTg0MjBhOC4uMDk0ZGZhMDQ1Yjc3NCAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvYW5ub3RhdGUuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3VpL2d0ay9hbm5vdGF0ZS5jCkBAIC0xMSw2ICYjNDM7MTEsNyBAQAogI2luY2x1ZGUgJiMzNDt1aS9oZWxwbGluZS5oJiMzNDsKICNpbmNsdWRlICZsdDtpbnR0eXBlcy5oJmd0OwogI2luY2x1ZGUgJmx0O3NpZ25hbC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtzdHJpbmcuaCZndDsKIAogZW51bSB7CiAJQU5OX0NPTF9fUEVSQ0VOVCwKQEAgLTE2MSw3ICYjNDM7MTYyLDcgQEAgc3RhdGljIGludCBwZXJmX2d0a19fYW5ub3RhdGVfc3ltYm9sKEd0a1dpZGdldCAqd2luZG93LCBzdHJ1Y3QgbWFwX3N5bWJvbCAqbXMsCiAJCQlndGtfbGlzdF9zdG9yZV9zZXQoc3RvcmUsICZhbXA7aXRlciwgQU5OX0NPTF9fTElORSwgcywgLTEpOwogCX0KIAotCWd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIod2luZG93KSwgdmlldyk7CiYjNDM7CWd0a19zY3JvbGxlZF93aW5kb3dfc2V0X2NoaWxkKEdUS19TQ1JPTExFRF9XSU5ET1cod2luZG93KSwgdmlldyk7CiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocG9zLCBuLCAmYW1wO25vdGVzLSZndDtzcmMtJmd0O3NvdXJjZSwgYWwubm9kZSkgewogCQlsaXN0X2RlbF9pbml0KCZhbXA7cG9zLSZndDthbC5ub2RlKTsKQEAgLTIwNSw0MCAmIzQzOzIwNiwzNCBAQCBzdGF0aWMgaW50IHN5bWJvbF9fZ3RrX2Fubm90YXRlKHN0cnVjdCBtYXBfc3ltYm9sICptcywgc3RydWN0IGV2c2VsICpldnNlbCwKIAkJR3RrV2lkZ2V0ICppbmZvYmFyOwogCQlHdGtXaWRnZXQgKnN0YXRiYXI7CiAKLQkJc2lnbmFsKFNJR1NFR1YsIHBlcmZfZ3RrX19zaWduYWwpOwotCQlzaWduYWwoU0lHRlBFLCAgcGVyZl9ndGtfX3NpZ25hbCk7Ci0JCXNpZ25hbChTSUdJTlQsICBwZXJmX2d0a19fc2lnbmFsKTsKLQkJc2lnbmFsKFNJR1FVSVQsIHBlcmZfZ3RrX19zaWduYWwpOwotCQlzaWduYWwoU0lHVEVSTSwgcGVyZl9ndGtfX3NpZ25hbCk7CiYjNDM7CQlzaWduYWwoU0lHU0VHViwgcGVyZl9ndGtfX2ZhdGFsX3NpZ25hbCk7CiYjNDM7CQlzaWduYWwoU0lHRlBFLCAgcGVyZl9ndGtfX2ZhdGFsX3NpZ25hbCk7CiYjNDM7CQlwZXJmX2d0a19faW5zdGFsbF9xdWl0X3NpZ25hbHMoKTsKIAotCQl3aW5kb3cgPSBndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1RPUExFVkVMKTsKJiM0MzsJCXdpbmRvdyA9IGd0a193aW5kb3dfbmV3KCk7CiAJCWd0a193aW5kb3dfc2V0X3RpdGxlKEdUS19XSU5ET1cod2luZG93KSwgJiMzNDtwZXJmIGFubm90YXRlJiMzNDspOwogCi0JCWdfc2lnbmFsX2Nvbm5lY3Qod2luZG93LCAmIzM0O2RlbGV0ZV9ldmVudCYjMzQ7LCBndGtfbWFpbl9xdWl0LCBOVUxMKTsKLQogCQlwZ2N0eCA9IHBlcmZfZ3RrX19hY3RpdmF0ZV9jb250ZXh0KHdpbmRvdyk7CiAJCWlmICghcGdjdHgpCiAJCQlyZXR1cm4gLTE7CiAKLQkJdmJveCA9IGd0a192Ym94X25ldyhGQUxTRSwgMCk7CiYjNDM7CQl2Ym94ID0gZ3RrX2JveF9uZXcoR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCAwKTsKIAkJbm90ZWJvb2sgPSBndGtfbm90ZWJvb2tfbmV3KCk7CiAJCXBnY3R4LSZndDtub3RlYm9vayA9IG5vdGVib29rOwogCi0JCWd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBub3RlYm9vaywgVFJVRSwgVFJVRSwgMCk7CiYjNDM7CQlndGtfd2lkZ2V0X3NldF92ZXhwYW5kKG5vdGVib29rLCBUUlVFKTsKJiM0MzsJCWd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIG5vdGVib29rKTsKIAogCQlpbmZvYmFyID0gcGVyZl9ndGtfX3NldHVwX2luZm9fYmFyKCk7Ci0JCWlmIChpbmZvYmFyKSB7Ci0JCQlndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgaW5mb2JhciwKLQkJCQkJICAgRkFMU0UsIEZBTFNFLCAwKTsKLQkJfQomIzQzOwkJZ3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgaW5mb2Jhcik7CiAKIAkJc3RhdGJhciA9IHBlcmZfZ3RrX19zZXR1cF9zdGF0dXNiYXIoKTsKLQkJZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIHN0YXRiYXIsIEZBTFNFLCBGQUxTRSwgMCk7CiYjNDM7CQlndGtfYm94X2FwcGVuZChHVEtfQk9YKHZib3gpLCBzdGF0YmFyKTsKIAotCQlndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHdpbmRvdyksIHZib3gpOwomIzQzOwkJZ3RrX3dpbmRvd19zZXRfY2hpbGQoR1RLX1dJTkRPVyh3aW5kb3cpLCB2Ym94KTsKIAl9CiAKLQlzY3JvbGxlZF93aW5kb3cgPSBndGtfc2Nyb2xsZWRfd2luZG93X25ldyhOVUxMLCBOVUxMKTsKJiM0MzsJc2Nyb2xsZWRfd2luZG93ID0gZ3RrX3Njcm9sbGVkX3dpbmRvd19uZXcoKTsKIAl0YWJfbGFiZWwgPSBndGtfbGFiZWxfbmV3KHN5bS0mZ3Q7bmFtZSk7CiAKIAlndGtfc2Nyb2xsZWRfd2luZG93X3NldF9wb2xpY3koR1RLX1NDUk9MTEVEX1dJTkRPVyhzY3JvbGxlZF93aW5kb3cpLApAQCAtMjY3LDEyICYjNDM7MjYyLDExIEBAIHZvaWQgcGVyZl9ndGtfX3Nob3dfYW5ub3RhdGlvbnModm9pZCkKIAkJcmV0dXJuOwogCiAJd2luZG93ID0gcGdjdHgtJmd0O21haW5fd2luZG93OwotCWd0a193aWRnZXRfc2hvd19hbGwod2luZG93KTsKIAogCXBlcmZfZ3RrX19yZXNpemVfd2luZG93KHdpbmRvdyk7Ci0JZ3RrX3dpbmRvd19zZXRfcG9zaXRpb24oR1RLX1dJTkRPVyh3aW5kb3cpLCBHVEtfV0lOX1BPU19DRU5URVIpOwomIzQzOwlndGtfd2lkZ2V0X3NldF92aXNpYmxlKHdpbmRvdywgVFJVRSk7CiAKLQlndGtfbWFpbigpOwomIzQzOwlwZXJmX2d0a19fcnVuX21haW5fbG9vcCh3aW5kb3cpOwogCiAJcGVyZl9ndGtfX2RlYWN0aXZhdGVfY29udGV4dCgmYW1wO3BnY3R4KTsKIH0KZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2Jyb3dzZXIuYyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2Jyb3dzZXIuYwppbmRleCBkMmRhZGYzODczZmJkLi45OGYxZDZiZmNiMjQ2IDEwMDY0NAotLS0gYS90b29scy9wZXJmL3VpL2d0ay9icm93c2VyLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91aS9ndGsvYnJvd3Nlci5jCkBAIC01LDMyICYjNDM7NSw5MiBAQAogI2luY2x1ZGUgJiMzNDsuLi9oaXN0LmgmIzM0OwogI2luY2x1ZGUgJiMzNDsuLi9oZWxwbGluZS5oJiMzNDsKIAomIzQzOyNpbmNsdWRlICZsdDtnbGliLXVuaXguaCZndDsKICNpbmNsdWRlICZsdDtzaWduYWwuaCZndDsKIAotdm9pZCBwZXJmX2d0a19fc2lnbmFsKGludCBzaWcpCiYjNDM7LyoKJiM0MzsgKiBTSUdJTlQvU0lHUVVJVC9TSUdURVJNIGFyZSBhc3luY2hyb25vdXM6IGRlZmVycmluZyB0aGUgYWN0dWFsIGV4aXQgdG8gYQomIzQzOyAqIEdMaWIgc291cmNlIGRpc3BhdGNoZWQgZnJvbSB0aGUgbWFpbiBsb29wIG1lYW5zIGl0IGFsd2F5cyBydW5zIG9uIHRoZQomIzQzOyAqIG1haW4gdGhyZWFkLCBzZXJpYWxpemVkIHdpdGggZXZlcnl0aGluZyBlbHNlIHRoZSBtYWluIGxvb3AgZG9lcwomIzQzOyAqIChpbmNsdWRpbmcgcGVyZl9ndGtfX2Vycm9yKCkmIzM5O3MgdXBkYXRlcyB0byBwZXJmX2d0a19fZXJyb3JfbG9vcHMpLCBpbnN0ZWFkCiYjNDM7ICogb2YgcmFjaW5nIHRoZW0gZnJvbSBhcmJpdHJhcnkgc2lnbmFsLWhhbmRsZXIgY29udGV4dC4KJiM0MzsgKi8KJiM0MztzdGF0aWMgZ2Jvb2xlYW4gcGVyZl9ndGtfX3F1aXRfc2lnbmFsKGdwb2ludGVyIGRhdGEgX19tYXliZV91bnVzZWQpCiB7CiAJcGVyZl9ndGtfX2V4aXQoZmFsc2UpOwomIzQzOwlyZXR1cm4gR19TT1VSQ0VfUkVNT1ZFOwomIzQzO30KJiM0MzsKJiM0Mzt2b2lkIHBlcmZfZ3RrX19pbnN0YWxsX3F1aXRfc2lnbmFscyh2b2lkKQomIzQzO3sKJiM0MzsJZ191bml4X3NpZ25hbF9hZGQoU0lHSU5ULCAgcGVyZl9ndGtfX3F1aXRfc2lnbmFsLCBOVUxMKTsKJiM0MzsJZ191bml4X3NpZ25hbF9hZGQoU0lHUVVJVCwgcGVyZl9ndGtfX3F1aXRfc2lnbmFsLCBOVUxMKTsKJiM0MzsJZ191bml4X3NpZ25hbF9hZGQoU0lHVEVSTSwgcGVyZl9ndGtfX3F1aXRfc2lnbmFsLCBOVUxMKTsKJiM0Mzt9CiYjNDM7CiYjNDM7LyoKJiM0MzsgKiBTSUdTRUdWL1NJR0ZQRSBhcmUgc3luY2hyb25vdXMgZmF1bHRzOiB0aGVyZSYjMzk7cyBubyAmIzM0O2xhdGVyJiMzNDsgdG8gZGVmZXIgdG8sCiYjNDM7ICogYW5kIG5vIHNhZmUgd2F5IHRvIHJ1biBHVEsvR0xpYiBjb2RlIChvciBhbnl0aGluZyBlbHNlIG5vbi1hc3luYy1zaWduYWwtCiYjNDM7ICogc2FmZSkgZnJvbSB0aGUgZmF1bHRpbmcgY29udGV4dC4gUmVwb3J0IGFuZCBsZXQgdGhlIGRlZmF1bHQgZGlzcG9zaXRpb24KJiM0MzsgKiAoY29yZSBkdW1wKSBoYXBwZW4gaW5zdGVhZCBvZiB0cnlpbmcgdG8gdGVhciBkb3duIEdUSyBzdGF0ZSBoZXJlLgomIzQzOyAqLwomIzQzO3ZvaWQgcGVyZl9ndGtfX2ZhdGFsX3NpZ25hbChpbnQgc2lnKQomIzQzO3sKIAlwc2lnbmFsKHNpZywgJiMzNDtwZXJmJiMzNDspOwomIzQzOwlzaWduYWwoc2lnLCBTSUdfREZMKTsKJiM0MzsJcmFpc2Uoc2lnKTsKIH0KIAogdm9pZCBwZXJmX2d0a19fcmVzaXplX3dpbmRvdyhHdGtXaWRnZXQgKndpbmRvdykKIHsKIAlHZGtSZWN0YW5nbGUgcmVjdDsKLQlHZGtTY3JlZW4gKnNjcmVlbjsKLQlpbnQgbW9uaXRvcjsKJiM0MzsJR2RrTW9uaXRvciAqbW9uaXRvcjsKJiM0MzsJR2RrRGlzcGxheSAqZGlzcGxheTsKJiM0MzsJR0xpc3RNb2RlbCAqbW9uaXRvcnM7CiAJaW50IGhlaWdodDsKIAlpbnQgd2lkdGg7CiAKLQlzY3JlZW4gPSBndGtfd2lkZ2V0X2dldF9zY3JlZW4od2luZG93KTsKJiM0MzsJZGlzcGxheSA9IGd0a193aWRnZXRfZ2V0X2Rpc3BsYXkod2luZG93KTsKJiM0MzsJbW9uaXRvcnMgPSBnZGtfZGlzcGxheV9nZXRfbW9uaXRvcnMoZGlzcGxheSk7CiYjNDM7CW1vbml0b3IgPSBnX2xpc3RfbW9kZWxfZ2V0X2l0ZW0obW9uaXRvcnMsIDApOwomIzQzOwlpZiAoIW1vbml0b3IpIHsKJiM0MzsJCWd0a193aW5kb3dfc2V0X2RlZmF1bHRfc2l6ZShHVEtfV0lORE9XKHdpbmRvdyksIDgwMCwgNjAwKTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQogCi0JbW9uaXRvciA9IGdka19zY3JlZW5fZ2V0X21vbml0b3JfYXRfd2luZG93KHNjcmVlbiwgd2luZG93LSZndDt3aW5kb3cpOwotCi0JZ2RrX3NjcmVlbl9nZXRfbW9uaXRvcl9nZW9tZXRyeShzY3JlZW4sIG1vbml0b3IsICZhbXA7cmVjdCk7CiYjNDM7CWdka19tb25pdG9yX2dldF9nZW9tZXRyeShtb25pdG9yLCAmYW1wO3JlY3QpOwomIzQzOwlnX29iamVjdF91bnJlZihtb25pdG9yKTsKIAogCXdpZHRoCT0gcmVjdC53aWR0aCAqIDMgLyA0OwogCWhlaWdodAk9IHJlY3QuaGVpZ2h0ICogMyAvIDQ7CiAKLQlndGtfd2luZG93X3Jlc2l6ZShHVEtfV0lORE9XKHdpbmRvdyksIHdpZHRoLCBoZWlnaHQpOwomIzQzOwlndGtfd2luZG93X3NldF9kZWZhdWx0X3NpemUoR1RLX1dJTkRPVyh3aW5kb3cpLCB3aWR0aCwgaGVpZ2h0KTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIEdNYWluTG9vcCAqcGVyZl9ndGtfX21haW5fbG9vcDsKJiM0MzsKJiM0Mzt2b2lkIHBlcmZfZ3RrX19xdWl0X21haW5fbG9vcCh2b2lkKQomIzQzO3sKJiM0MzsJaWYgKHBlcmZfZ3RrX19tYWluX2xvb3ApCiYjNDM7CQlnX21haW5fbG9vcF9xdWl0KHBlcmZfZ3RrX19tYWluX2xvb3ApOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgZ2Jvb2xlYW4gcGVyZl9ndGtfX2Nsb3NlX3JlcXVlc3QoR3RrV2lkZ2V0ICp3aWRnZXQgX19tYXliZV91bnVzZWQsCiYjNDM7CQkJCQlncG9pbnRlciBkYXRhIF9fbWF5YmVfdW51c2VkKQomIzQzO3sKJiM0MzsJcGVyZl9ndGtfX3F1aXRfbWFpbl9sb29wKCk7CiYjNDM7CiYjNDM7CXJldHVybiBGQUxTRTsKJiM0Mzt9CiYjNDM7CiYjNDM7dm9pZCBwZXJmX2d0a19fcnVuX21haW5fbG9vcChHdGtXaWRnZXQgKndpbmRvdykKJiM0Mzt7CiYjNDM7CWdfc2lnbmFsX2Nvbm5lY3Qod2luZG93LCAmIzM0O2Nsb3NlLXJlcXVlc3QmIzM0OywKJiM0MzsJCQkgR19DQUxMQkFDSyhwZXJmX2d0a19fY2xvc2VfcmVxdWVzdCksIE5VTEwpOwomIzQzOwomIzQzOwlwZXJmX2d0a19fbWFpbl9sb29wID0gZ19tYWluX2xvb3BfbmV3KE5VTEwsIEZBTFNFKTsKJiM0MzsJZ19tYWluX2xvb3BfcnVuKHBlcmZfZ3RrX19tYWluX2xvb3ApOwomIzQzOwlnX2NsZWFyX3BvaW50ZXIoJmFtcDtwZXJmX2d0a19fbWFpbl9sb29wLCBnX21haW5fbG9vcF91bnJlZik7CiB9CiAKIGNvbnN0IGNoYXIgKnBlcmZfZ3RrX19nZXRfcGVyY2VudF9jb2xvcihkb3VibGUgcGVyY2VudCkKQEAgLTQyLDMzICYjNDM7MTAyLDM1IEBAIGNvbnN0IGNoYXIgKnBlcmZfZ3RrX19nZXRfcGVyY2VudF9jb2xvcihkb3VibGUgcGVyY2VudCkKIAlyZXR1cm4gTlVMTDsKIH0KIAotI2lmZGVmIEhBVkVfR1RLX0lORk9fQkFSX1NVUFBPUlQKJiM0MztzdGF0aWMgdm9pZCBwZXJmX2d0a19faGlkZV93aWRnZXQoR3RrV2lkZ2V0ICp3aWRnZXQsIGdpbnQgcmVzcG9uc2VfaWQgX19tYXliZV91bnVzZWQsCiYjNDM7CQkJCSAgIGdwb2ludGVyIGRhdGEgX19tYXliZV91bnVzZWQpCiYjNDM7ewomIzQzOwlndGtfd2lkZ2V0X3NldF92aXNpYmxlKHdpZGdldCwgRkFMU0UpOwomIzQzO30KJiM0MzsKIEd0a1dpZGdldCAqcGVyZl9ndGtfX3NldHVwX2luZm9fYmFyKHZvaWQpCiB7CiAJR3RrV2lkZ2V0ICppbmZvX2JhcjsKIAlHdGtXaWRnZXQgKmxhYmVsOwotCUd0a1dpZGdldCAqY29udGVudF9hcmVhOwogCiAJaW5mb19iYXIgPSBndGtfaW5mb19iYXJfbmV3KCk7Ci0JZ3RrX3dpZGdldF9zZXRfbm9fc2hvd19hbGwoaW5mb19iYXIsIFRSVUUpOwomIzQzOwlndGtfd2lkZ2V0X3NldF92aXNpYmxlKGluZm9fYmFyLCBGQUxTRSk7CiAKIAlsYWJlbCA9IGd0a19sYWJlbF9uZXcoJiMzNDsmIzM0Oyk7Ci0JZ3RrX3dpZGdldF9zaG93KGxhYmVsKTsKJiM0MzsJZ3RrX3dpZGdldF9zZXRfdmlzaWJsZShsYWJlbCwgVFJVRSk7CiAKLQljb250ZW50X2FyZWEgPSBndGtfaW5mb19iYXJfZ2V0X2NvbnRlbnRfYXJlYShHVEtfSU5GT19CQVIoaW5mb19iYXIpKTsKLQlndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKGNvbnRlbnRfYXJlYSksIGxhYmVsKTsKJiM0MzsJZ3RrX2luZm9fYmFyX2FkZF9jaGlsZChHVEtfSU5GT19CQVIoaW5mb19iYXIpLCBsYWJlbCk7CiAKLQlndGtfaW5mb19iYXJfYWRkX2J1dHRvbihHVEtfSU5GT19CQVIoaW5mb19iYXIpLCBHVEtfU1RPQ0tfT0ssCiYjNDM7CWd0a19pbmZvX2Jhcl9hZGRfYnV0dG9uKEdUS19JTkZPX0JBUihpbmZvX2JhciksICYjMzQ7X09LJiMzNDssCiAJCQkJR1RLX1JFU1BPTlNFX09LKTsKIAlnX3NpZ25hbF9jb25uZWN0KGluZm9fYmFyLCAmIzM0O3Jlc3BvbnNlJiMzNDssCi0JCQkgR19DQUxMQkFDSyhndGtfd2lkZ2V0X2hpZGUpLCBOVUxMKTsKJiM0MzsJCQkgR19DQUxMQkFDSyhwZXJmX2d0a19faGlkZV93aWRnZXQpLCBOVUxMKTsKIAogCXBnY3R4LSZndDtpbmZvX2JhciA9IGluZm9fYmFyOwogCXBnY3R4LSZndDttZXNzYWdlX2xhYmVsID0gbGFiZWw7CiAKIAlyZXR1cm4gaW5mb19iYXI7CiB9Ci0jZW5kaWYKIAogR3RrV2lkZ2V0ICpwZXJmX2d0a19fc2V0dXBfc3RhdHVzYmFyKHZvaWQpCiB7CmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL2d0ay9ndGsuaCBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2d0ay5oCmluZGV4IGEyYjQ5N2YwM2ZkNmUuLjZiMzdmZDk5NDNjOWQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2d0ay5oCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2d0ay5oCkBAIC0xMywxMCAmIzQzOzEzLDggQEAgc3RydWN0IHBlcmZfZ3RrX2NvbnRleHQgewogCUd0a1dpZGdldCAqbWFpbl93aW5kb3c7CiAJR3RrV2lkZ2V0ICpub3RlYm9vazsKIAotI2lmZGVmIEhBVkVfR1RLX0lORk9fQkFSX1NVUFBPUlQKIAlHdGtXaWRnZXQgKmluZm9fYmFyOwogCUd0a1dpZGdldCAqbWVzc2FnZV9sYWJlbDsKLSNlbmRpZgogCUd0a1dpZGdldCAqc3RhdGJhcjsKIAlndWludCBzdGF0YmFyX2N0eF9pZDsKIH07CkBAIC0zOCwxOSAmIzQzOzM2LDE1IEBAIHZvaWQgcGVyZl9ndGtfX2luaXRfaGVscGxpbmUodm9pZCk7CiB2b2lkIGd0a191aV9wcm9ncmVzc19faW5pdCh2b2lkKTsKIHZvaWQgcGVyZl9ndGtfX2luaXRfaHBwKHZvaWQpOwogCi12b2lkIHBlcmZfZ3RrX19zaWduYWwoaW50IHNpZyk7CiYjNDM7dm9pZCBwZXJmX2d0a19faW5zdGFsbF9xdWl0X3NpZ25hbHModm9pZCk7CiYjNDM7dm9pZCBwZXJmX2d0a19fZmF0YWxfc2lnbmFsKGludCBzaWcpOwogdm9pZCBwZXJmX2d0a19fcmVzaXplX3dpbmRvdyhHdGtXaWRnZXQgKndpbmRvdyk7CiYjNDM7dm9pZCBwZXJmX2d0a19fcnVuX21haW5fbG9vcChHdGtXaWRnZXQgKndpbmRvdyk7CiYjNDM7dm9pZCBwZXJmX2d0a19fcXVpdF9tYWluX2xvb3Aodm9pZCk7CiYjNDM7dm9pZCBwZXJmX2d0a19fcXVpdF9lcnJvcl9kaWFsb2codm9pZCk7CiBjb25zdCBjaGFyICpwZXJmX2d0a19fZ2V0X3BlcmNlbnRfY29sb3IoZG91YmxlIHBlcmNlbnQpOwogR3RrV2lkZ2V0ICpwZXJmX2d0a19fc2V0dXBfc3RhdHVzYmFyKHZvaWQpOwotCi0jaWZkZWYgSEFWRV9HVEtfSU5GT19CQVJfU1VQUE9SVAogR3RrV2lkZ2V0ICpwZXJmX2d0a19fc2V0dXBfaW5mb19iYXIodm9pZCk7Ci0jZWxzZQotc3RhdGljIGlubGluZSBHdGtXaWRnZXQgKnBlcmZfZ3RrX19zZXR1cF9pbmZvX2Jhcih2b2lkKQotewotCXJldHVybiBOVUxMOwotfQotI2VuZGlmCiAKIHN0cnVjdCBldnNlbDsKIHN0cnVjdCBldmxpc3Q7CmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL2d0ay9oaXN0cy5jIGIvdG9vbHMvcGVyZi91aS9ndGsvaGlzdHMuYwppbmRleCBiYWUyMWYzMzZhZTZkLi43MTZkY2YwMmJkMGU4IDEwMDY0NAotLS0gYS90b29scy9wZXJmL3VpL2d0ay9oaXN0cy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2hpc3RzLmMKQEAgLTgsNiAmIzQzOzgsOCBAQAogI2luY2x1ZGUgJiMzNDsuLi9oZWxwbGluZS5oJiMzNDsKICNpbmNsdWRlICYjMzQ7Li4vc3RyaW5nMi5oJiMzNDsKICNpbmNsdWRlICZsdDtzaWduYWwuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7c3RkYXJnLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O3N0ZGlvLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7c3RkbGliLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvc3RyaW5nLmgmZ3Q7CiAKQEAgLTM5NSwxMSAmIzQzOzM5Nyw5IEBAIHN0YXRpYyB2b2lkIHBlcmZfZ3RrX19zaG93X2hpc3RzKEd0a1dpZGdldCAqd2luZG93LCBzdHJ1Y3QgaGlzdHMgKmhpc3RzLAogCQl9CiAJfQogCi0JZ3RrX3RyZWVfdmlld19zZXRfcnVsZXNfaGludChHVEtfVFJFRV9WSUVXKHZpZXcpLCBUUlVFKTsKLQogCWdfc2lnbmFsX2Nvbm5lY3QodmlldywgJiMzNDtyb3ctYWN0aXZhdGVkJiMzNDssCiAJCQkgR19DQUxMQkFDSyhvbl9yb3dfYWN0aXZhdGVkKSwgTlVMTCk7Ci0JZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUih3aW5kb3cpLCB2aWV3KTsKJiM0MzsJZ3RrX3Njcm9sbGVkX3dpbmRvd19zZXRfY2hpbGQoR1RLX1NDUk9MTEVEX1dJTkRPVyh3aW5kb3cpLCB2aWV3KTsKIH0KIAogc3RhdGljIHZvaWQgcGVyZl9ndGtfX2FkZF9oaWVyYXJjaHlfZW50cmllcyhzdHJ1Y3QgaGlzdHMgKmhpc3RzLApAQCAtNTgzLDExICYjNDM7NTgzLDkgQEAgc3RhdGljIHZvaWQgcGVyZl9ndGtfX3Nob3dfaGllcmFyY2h5KEd0a1dpZGdldCAqd2luZG93LCBzdHJ1Y3QgaGlzdHMgKmhpc3RzLAogCXBlcmZfZ3RrX19hZGRfaGllcmFyY2h5X2VudHJpZXMoaGlzdHMsICZhbXA7aGlzdHMtJmd0O2VudHJpZXMsIHN0b3JlLAogCQkJCQlOVUxMLCAmYW1wO2hwcCwgbWluX3BjbnQpOwogCi0JZ3RrX3RyZWVfdmlld19zZXRfcnVsZXNfaGludChHVEtfVFJFRV9WSUVXKHZpZXcpLCBUUlVFKTsKLQogCWdfc2lnbmFsX2Nvbm5lY3QodmlldywgJiMzNDtyb3ctYWN0aXZhdGVkJiMzNDssCiAJCQkgR19DQUxMQkFDSyhvbl9yb3dfYWN0aXZhdGVkKSwgTlVMTCk7Ci0JZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUih3aW5kb3cpLCB2aWV3KTsKJiM0MzsJZ3RrX3Njcm9sbGVkX3dpbmRvd19zZXRfY2hpbGQoR1RLX1NDUk9MTEVEX1dJTkRPVyh3aW5kb3cpLCB2aWV3KTsKIH0KIAogaW50IGV2bGlzdF9fZ3RrX2Jyb3dzZV9oaXN0cyhzdHJ1Y3QgZXZsaXN0ICpldmxpc3QsIGNvbnN0IGNoYXIgKmhlbHAsCkBAIC02MDAsMzYgJiM0Mzs1OTgsMzIgQEAgaW50IGV2bGlzdF9fZ3RrX2Jyb3dzZV9oaXN0cyhzdHJ1Y3QgZXZsaXN0ICpldmxpc3QsIGNvbnN0IGNoYXIgKmhlbHAsCiAJR3RrV2lkZ2V0ICpzdGF0YmFyOwogCUd0a1dpZGdldCAqd2luZG93OwogCi0Jc2lnbmFsKFNJR1NFR1YsIHBlcmZfZ3RrX19zaWduYWwpOwotCXNpZ25hbChTSUdGUEUsICBwZXJmX2d0a19fc2lnbmFsKTsKLQlzaWduYWwoU0lHSU5ULCAgcGVyZl9ndGtfX3NpZ25hbCk7Ci0Jc2lnbmFsKFNJR1FVSVQsIHBlcmZfZ3RrX19zaWduYWwpOwotCXNpZ25hbChTSUdURVJNLCBwZXJmX2d0a19fc2lnbmFsKTsKJiM0MzsJc2lnbmFsKFNJR1NFR1YsIHBlcmZfZ3RrX19mYXRhbF9zaWduYWwpOwomIzQzOwlzaWduYWwoU0lHRlBFLCAgcGVyZl9ndGtfX2ZhdGFsX3NpZ25hbCk7CiYjNDM7CXBlcmZfZ3RrX19pbnN0YWxsX3F1aXRfc2lnbmFscygpOwogCi0Jd2luZG93ID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJTkRPV19UT1BMRVZFTCk7CiYjNDM7CXdpbmRvdyA9IGd0a193aW5kb3dfbmV3KCk7CiAKIAlndGtfd2luZG93X3NldF90aXRsZShHVEtfV0lORE9XKHdpbmRvdyksICYjMzQ7cGVyZiByZXBvcnQmIzM0Oyk7CiAKLQlnX3NpZ25hbF9jb25uZWN0KHdpbmRvdywgJiMzNDtkZWxldGVfZXZlbnQmIzM0OywgZ3RrX21haW5fcXVpdCwgTlVMTCk7Ci0KIAlwZ2N0eCA9IHBlcmZfZ3RrX19hY3RpdmF0ZV9jb250ZXh0KHdpbmRvdyk7CiAJaWYgKCFwZ2N0eCkKIAkJcmV0dXJuIC0xOwogCi0JdmJveCA9IGd0a192Ym94X25ldyhGQUxTRSwgMCk7CiYjNDM7CXZib3ggPSBndGtfYm94X25ldyhHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIDApOwogCiAJbm90ZWJvb2sgPSBndGtfbm90ZWJvb2tfbmV3KCk7CiAKLQlndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgbm90ZWJvb2ssIFRSVUUsIFRSVUUsIDApOwomIzQzOwlndGtfd2lkZ2V0X3NldF92ZXhwYW5kKG5vdGVib29rLCBUUlVFKTsKJiM0MzsJZ3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgbm90ZWJvb2spOwogCiAJaW5mb19iYXIgPSBwZXJmX2d0a19fc2V0dXBfaW5mb19iYXIoKTsKLQlpZiAoaW5mb19iYXIpCi0JCWd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBpbmZvX2JhciwgRkFMU0UsIEZBTFNFLCAwKTsKJiM0MzsJZ3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgaW5mb19iYXIpOwogCiAJc3RhdGJhciA9IHBlcmZfZ3RrX19zZXR1cF9zdGF0dXNiYXIoKTsKLQlndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgc3RhdGJhciwgRkFMU0UsIEZBTFNFLCAwKTsKJiM0MzsJZ3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgc3RhdGJhcik7CiAKLQlndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHdpbmRvdyksIHZib3gpOwomIzQzOwlndGtfd2luZG93X3NldF9jaGlsZChHVEtfV0lORE9XKHdpbmRvdyksIHZib3gpOwogCiAJZXZsaXN0X19mb3JfZWFjaF9lbnRyeShldmxpc3QsIHBvcykgewogCQlzdHJ1Y3QgaGlzdHMgKmhpc3RzID0gZXZzZWxfX2hpc3RzKHBvcyk7CkBAIC02NDksNyAmIzQzOzY0Myw3IEBAIGludCBldmxpc3RfX2d0a19icm93c2VfaGlzdHMoc3RydWN0IGV2bGlzdCAqZXZsaXN0LCBjb25zdCBjaGFyICpoZWxwLAogCQkJfQogCQl9CiAKLQkJc2Nyb2xsZWRfd2luZG93ID0gZ3RrX3Njcm9sbGVkX3dpbmRvd19uZXcoTlVMTCwgTlVMTCk7CiYjNDM7CQlzY3JvbGxlZF93aW5kb3cgPSBndGtfc2Nyb2xsZWRfd2luZG93X25ldygpOwogCiAJCWd0a19zY3JvbGxlZF93aW5kb3dfc2V0X3BvbGljeShHVEtfU0NST0xMRURfV0lORE9XKHNjcm9sbGVkX3dpbmRvdyksCiAJCQkJCQkJR1RLX1BPTElDWV9BVVRPTUFUSUMsCkBAIC02NjUsMTUgJiM0Mzs2NTksMTIgQEAgaW50IGV2bGlzdF9fZ3RrX2Jyb3dzZV9oaXN0cyhzdHJ1Y3QgZXZsaXN0ICpldmxpc3QsIGNvbnN0IGNoYXIgKmhlbHAsCiAJCWd0a19ub3RlYm9va19hcHBlbmRfcGFnZShHVEtfTk9URUJPT0sobm90ZWJvb2spLCBzY3JvbGxlZF93aW5kb3csIHRhYl9sYWJlbCk7CiAJfQogCi0JZ3RrX3dpZGdldF9zaG93X2FsbCh3aW5kb3cpOwotCiAJcGVyZl9ndGtfX3Jlc2l6ZV93aW5kb3cod2luZG93KTsKLQotCWd0a193aW5kb3dfc2V0X3Bvc2l0aW9uKEdUS19XSU5ET1cod2luZG93KSwgR1RLX1dJTl9QT1NfQ0VOVEVSKTsKJiM0MzsJZ3RrX3dpZGdldF9zZXRfdmlzaWJsZSh3aW5kb3csIFRSVUUpOwogCiAJdWlfaGVscGxpbmVfX3B1c2goaGVscCk7CiAKLQlndGtfbWFpbigpOwomIzQzOwlwZXJmX2d0a19fcnVuX21haW5fbG9vcCh3aW5kb3cpOwogCiAJcGVyZl9ndGtfX2RlYWN0aXZhdGVfY29udGV4dCgmYW1wO3BnY3R4KTsKIApkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91aS9ndGsvcHJvZ3Jlc3MuYyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL3Byb2dyZXNzLmMKaW5kZXggZWVhNmZjZGU1MThhOC4uNzcwZjkyNTFiNTRiNyAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvcHJvZ3Jlc3MuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3VpL2d0ay9wcm9ncmVzcy5jCkBAIC0xLDQ5ICYjNDM7MSw2NSBAQAogLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKICNpbmNsdWRlICZsdDtpbnR0eXBlcy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtzdGRpby5oJmd0OwogCiAjaW5jbHVkZSAmIzM0O2d0ay5oJiMzNDsKICNpbmNsdWRlICYjMzQ7Li4vcHJvZ3Jlc3MuaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2NvbXBpbGVyLmgmZ3Q7CiAKIHN0YXRpYyBHdGtXaWRnZXQgKmRpYWxvZzsKIHN0YXRpYyBHdGtXaWRnZXQgKnByb2dyZXNzOwogCiYjNDM7c3RhdGljIHZvaWQgZ3RrX3VpX3Byb2dyZXNzX19kZXN0cm95ZWQoR3RrV2lkZ2V0ICp3aWRnZXQgX19tYXliZV91bnVzZWQsCiYjNDM7CQkJCQlncG9pbnRlciBkYXRhIF9fbWF5YmVfdW51c2VkKQomIzQzO3sKJiM0MzsJZGlhbG9nID0gTlVMTDsKJiM0MzsJcHJvZ3Jlc3MgPSBOVUxMOwomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIGd0a191aV9wcm9ncmVzc19fdXBkYXRlKHN0cnVjdCB1aV9wcm9ncmVzcyAqcCkKIHsKIAlkb3VibGUgZnJhY3Rpb24gPSBwLSZndDt0b3RhbCA/IDEuMCAqIHAtJmd0O2N1cnIgLyBwLSZndDt0b3RhbCA6IDAuMDsKIAljaGFyIGJ1ZlsxMDI0XTsKIAogCWlmIChkaWFsb2cgPT0gTlVMTCkgewotCQlHdGtXaWRnZXQgKnZib3ggPSBndGtfdmJveF9uZXcoVFJVRSwgNSk7CiYjNDM7CQlHdGtXaWRnZXQgKnZib3ggPSBndGtfYm94X25ldyhHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIDUpOwogCQlHdGtXaWRnZXQgKmxhYmVsID0gZ3RrX2xhYmVsX25ldyhwLSZndDt0aXRsZSk7CiAKLQkJZGlhbG9nID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJTkRPV19UT1BMRVZFTCk7CiYjNDM7CQlkaWFsb2cgPSBndGtfd2luZG93X25ldygpOwogCQlwcm9ncmVzcyA9IGd0a19wcm9ncmVzc19iYXJfbmV3KCk7CiAKLQkJZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIGxhYmVsLCBUUlVFLCBGQUxTRSwgMyk7Ci0JCWd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBwcm9ncmVzcywgVFJVRSwgVFJVRSwgMyk7CiYjNDM7CQlndGtfd2lkZ2V0X3NldF92ZXhwYW5kKGxhYmVsLCBUUlVFKTsKJiM0MzsJCWd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIGxhYmVsKTsKJiM0MzsJCWd0a193aWRnZXRfc2V0X3ZleHBhbmQocHJvZ3Jlc3MsIFRSVUUpOwomIzQzOwkJZ3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgcHJvZ3Jlc3MpOwomIzQzOwomIzQzOwkJZ3RrX3dpbmRvd19zZXRfY2hpbGQoR1RLX1dJTkRPVyhkaWFsb2cpLCB2Ym94KTsKIAotCQlndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKGRpYWxvZyksIHZib3gpOwomIzQzOwkJZ19zaWduYWxfY29ubmVjdChkaWFsb2csICYjMzQ7ZGVzdHJveSYjMzQ7LAomIzQzOwkJCQkgR19DQUxMQkFDSyhndGtfdWlfcHJvZ3Jlc3NfX2Rlc3Ryb3llZCksIE5VTEwpOwogCiAJCWd0a193aW5kb3dfc2V0X3RpdGxlKEdUS19XSU5ET1coZGlhbG9nKSwgJiMzNDtwZXJmJiMzNDspOwotCQlndGtfd2luZG93X3Jlc2l6ZShHVEtfV0lORE9XKGRpYWxvZyksIDMwMCwgODApOwotCQlndGtfd2luZG93X3NldF9wb3NpdGlvbihHVEtfV0lORE9XKGRpYWxvZyksIEdUS19XSU5fUE9TX0NFTlRFUik7CiYjNDM7CQlndGtfd2luZG93X3NldF9kZWZhdWx0X3NpemUoR1RLX1dJTkRPVyhkaWFsb2cpLCAzMDAsIDgwKTsKIAotCQlndGtfd2lkZ2V0X3Nob3dfYWxsKGRpYWxvZyk7CiYjNDM7CQlndGtfd2lkZ2V0X3NldF92aXNpYmxlKGRpYWxvZywgVFJVRSk7CiAJfQogCiAJZ3RrX3Byb2dyZXNzX2Jhcl9zZXRfZnJhY3Rpb24oR1RLX1BST0dSRVNTX0JBUihwcm9ncmVzcyksIGZyYWN0aW9uKTsKIAlzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAmIzM0OyUmIzM0O1BSSXU2NCYjMzQ7IC8gJSYjMzQ7UFJJdTY0LCBwLSZndDtjdXJyLCBwLSZndDt0b3RhbCk7CiAJZ3RrX3Byb2dyZXNzX2Jhcl9zZXRfdGV4dChHVEtfUFJPR1JFU1NfQkFSKHByb2dyZXNzKSwgYnVmKTsKIAotCS8qIHdlIGRpZG4mIzM5O3QgY2FsbCBndGtfbWFpbiB5ZXQsIHNvIGRvIGl0IG1hbnVhbGx5ICovCi0Jd2hpbGUgKGd0a19ldmVudHNfcGVuZGluZygpKQotCQlndGtfbWFpbl9pdGVyYXRpb24oKTsKJiM0MzsJLyogd2UgZGlkbiYjMzk7dCBzdGFydCBhIG1haW4gbG9vcCB5ZXQsIHNvIHB1bXAgZXZlbnRzIG1hbnVhbGx5ICovCiYjNDM7CXdoaWxlIChnX21haW5fY29udGV4dF9wZW5kaW5nKE5VTEwpKQomIzQzOwkJZ19tYWluX2NvbnRleHRfaXRlcmF0aW9uKE5VTEwsIEZBTFNFKTsKIH0KIAogc3RhdGljIHZvaWQgZ3RrX3VpX3Byb2dyZXNzX19maW5pc2godm9pZCkKIHsKJiM0MzsJaWYgKGRpYWxvZyA9PSBOVUxMKQomIzQzOwkJcmV0dXJuOwomIzQzOwogCS8qIHRoaXMgd2lsbCBhbHNvIGRlc3Ryb3kgYWxsIG9mIGl0cyBjaGlsZHJlbiAqLwotCWd0a193aWRnZXRfZGVzdHJveShkaWFsb2cpOwomIzQzOwlndGtfd2luZG93X2Rlc3Ryb3koR1RLX1dJTkRPVyhkaWFsb2cpKTsKIAogCWRpYWxvZyA9IE5VTEw7CiB9CmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL2d0ay9zZXR1cC5jIGIvdG9vbHMvcGVyZi91aS9ndGsvc2V0dXAuYwppbmRleCBmNWVlZTRkNjY4NzM4Li45YjQ0ZjM3MTk3NDc3IDEwMDY0NAotLS0gYS90b29scy9wZXJmL3VpL2d0ay9zZXR1cC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL3NldHVwLmMKQEAgLTEyLDcgJiM0MzsxMiw3IEBAIGludCBwZXJmX2d0a19faW5pdCh2b2lkKQogCWd0a191aV9wcm9ncmVzc19faW5pdCgpOwogCXBlcmZfZ3RrX19pbml0X2hwcCgpOwogCi0JcmV0dXJuIGd0a19pbml0X2NoZWNrKE5VTEwsIE5VTEwpID8gMCA6IC0xOwomIzQzOwlyZXR1cm4gZ3RrX2luaXRfY2hlY2soKSA/IDAgOiAtMTsKIH0KIAogdm9pZCBwZXJmX2d0a19fZXhpdChib29sIHdhaXRfZm9yX29rIF9fbWF5YmVfdW51c2VkKQpAQCAtMjAsNSAmIzQzOzIwLDYgQEAgdm9pZCBwZXJmX2d0a19fZXhpdChib29sIHdhaXRfZm9yX29rIF9fbWF5YmVfdW51c2VkKQogCWlmICghcGVyZl9ndGtfX2lzX2FjdGl2ZV9jb250ZXh0KHBnY3R4KSkKIAkJcmV0dXJuOwogCXBlcmZfZXJyb3JfX3VucmVnaXN0ZXIoJmFtcDtwZXJmX2d0a19lb3BzKTsKLQlndGtfbWFpbl9xdWl0KCk7CiYjNDM7CXBlcmZfZ3RrX19xdWl0X2Vycm9yX2RpYWxvZygpOwomIzQzOwlwZXJmX2d0a19fcXVpdF9tYWluX2xvb3AoKTsKIH0KZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3V0aWwuYyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL3V0aWwuYwppbmRleCBjNDdmNWMzODc4MzhjLi41ODIzZmYwZDdjMmE3IDEwMDY0NAotLS0gYS90b29scy9wZXJmL3VpL2d0ay91dGlsLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91aS9ndGsvdXRpbC5jCkBAIC0yLDggJiM0MzsyLDEwIEBACiAjaW5jbHVkZSAmIzM0Oy4uL3V0aWwuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O2d0ay5oJiMzNDsKIAomIzQzOyNpbmNsdWRlICZsdDtzdGRhcmcuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7c3RkaW8uaCZndDsKICNpbmNsdWRlICZsdDtzdGRsaWIuaCZndDsKLSNpbmNsdWRlICZsdDtzdHJpbmcuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvY29tcGlsZXIuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC96YWxsb2MuaCZndDsKIAogc3RydWN0IHBlcmZfZ3RrX2NvbnRleHQgKnBnY3R4OwpAQCAtMjgsODYgJiM0MzszMCwxMDMgQEAgaW50IHBlcmZfZ3RrX19kZWFjdGl2YXRlX2NvbnRleHQoc3RydWN0IHBlcmZfZ3RrX2NvbnRleHQgKipjdHgpCiAJcmV0dXJuIDA7CiB9CiAKJiM0MzsvKgomIzQzOyAqIHBlcmZfZ3RrX19lcnJvcigpIGNhbiBiZSBjYWxsZWQgcmUtZW50cmFudGx5LCBzaW5jZSB0aGUgZGlhbG9nIGlzbiYjMzk7dAomIzQzOyAqIG1vZGFsIGFuZCBpdHMgbmVzdGVkIGxvb3Agc3RpbGwgcHVtcHMgZXZlbnRzIGZvciB0aGUgbWFpbiB3aW5kb3cuCiYjNDM7ICogVHJhY2sgZXZlcnkgY3VycmVudGx5IHJ1bm5pbmcgbG9vcCBpbnN0ZWFkIG9mIGEgc2luZ2xlIHBvaW50ZXIsIHNvIGEKJiM0MzsgKiBuZXN0ZWQgY2FsbCBjYW4mIzM5O3QgY2xvYmJlciBhbiBvdXRlciBjYWxsJiMzOTtzIGxvb3AgYW5kIGxlYWsgaXQuCiYjNDM7ICovCiYjNDM7c3RhdGljIEdTTGlzdCAqcGVyZl9ndGtfX2Vycm9yX2xvb3BzOwomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHBlcmZfZ3RrX19xdWl0X2xvb3AoZ3BvaW50ZXIgZGF0YSwgZ3BvaW50ZXIgdXNlcl9kYXRhIF9fbWF5YmVfdW51c2VkKQomIzQzO3sKJiM0MzsJZ19tYWluX2xvb3BfcXVpdChkYXRhKTsKJiM0Mzt9CiYjNDM7CiYjNDM7dm9pZCBwZXJmX2d0a19fcXVpdF9lcnJvcl9kaWFsb2codm9pZCkKJiM0Mzt7CiYjNDM7CWdfc2xpc3RfZm9yZWFjaChwZXJmX2d0a19fZXJyb3JfbG9vcHMsIHBlcmZfZ3RrX19xdWl0X2xvb3AsIE5VTEwpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBwZXJmX2d0a19fZGlhbG9nX3Jlc3BvbnNlKEd0a0RpYWxvZyAqZGlhbG9nLAomIzQzOwkJCQkgICAgICBnaW50IHJlc3BvbnNlX2lkIF9fbWF5YmVfdW51c2VkLAomIzQzOwkJCQkgICAgICBncG9pbnRlciBkYXRhIF9fbWF5YmVfdW51c2VkKQomIzQzO3sKJiM0MzsJZ3RrX3dpbmRvd19kZXN0cm95KEdUS19XSU5ET1coZGlhbG9nKSk7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBwZXJmX2d0a19fZXJyb3IoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpCiB7CiAJY2hhciAqbXNnOwogCUd0a1dpZGdldCAqZGlhbG9nOwomIzQzOwlHTWFpbkxvb3AgKmxvb3A7CiYjNDM7CXZhX2xpc3QgYXJnc19jb3B5OwogCiYjNDM7CXZhX2NvcHkoYXJnc19jb3B5LCBhcmdzKTsKIAlpZiAoIXBlcmZfZ3RrX19pc19hY3RpdmVfY29udGV4dChwZ2N0eCkgfHwKLQkgICAgdmFzcHJpbnRmKCZhbXA7bXNnLCBmb3JtYXQsIGFyZ3MpICZsdDsgMCkgewomIzQzOwkgICAgdmFzcHJpbnRmKCZhbXA7bXNnLCBmb3JtYXQsIGFyZ3NfY29weSkgJmx0OyAwKSB7CiYjNDM7CQl2YV9lbmQoYXJnc19jb3B5KTsKIAkJZnByaW50ZihzdGRlcnIsICYjMzQ7RXJyb3I6XG4mIzM0Oyk7CiAJCXZmcHJpbnRmKHN0ZGVyciwgZm9ybWF0LCBhcmdzKTsKIAkJZnByaW50ZihzdGRlcnIsICYjMzQ7XG4mIzM0Oyk7CiAJCXJldHVybiAtMTsKIAl9CiYjNDM7CXZhX2VuZChhcmdzX2NvcHkpOwogCiAJZGlhbG9nID0gZ3RrX21lc3NhZ2VfZGlhbG9nX25ld193aXRoX21hcmt1cChHVEtfV0lORE9XKHBnY3R4LSZndDttYWluX3dpbmRvdyksCiAJCQkJCUdUS19ESUFMT0dfREVTVFJPWV9XSVRIX1BBUkVOVCwKIAkJCQkJR1RLX01FU1NBR0VfRVJST1IsCiAJCQkJCUdUS19CVVRUT05TX0NMT1NFLAogCQkJCQkmIzM0OyZsdDtiJmd0O0Vycm9yJmx0Oy9iJmd0O1xuXG4lcyYjMzQ7LCBtc2cpOwotCWd0a19kaWFsb2dfcnVuKEdUS19ESUFMT0coZGlhbG9nKSk7CiAKLQlndGtfd2lkZ2V0X2Rlc3Ryb3koZGlhbG9nKTsKJiM0MzsJLyoKJiM0MzsJICogJiMzNDtyZXNwb25zZSYjMzQ7IG9ubHkgZmlyZXMgd2hlbiBhIGJ1dHRvbiBpcyBjbGlja2VkOyBERVNUUk9ZX1dJVEhfUEFSRU5UCiYjNDM7CSAqIGRlc3Ryb3lzIHRoZSBkaWFsb2cgZGlyZWN0bHkgd2l0aG91dCBpdC4gUXVpdCBmcm9tICYjMzQ7ZGVzdHJveSYjMzQ7CiYjNDM7CSAqIGluc3RlYWQsIHdoaWNoIGZpcmVzIGVpdGhlciB3YXksIHNvIHRoZSBuZXN0ZWQgbG9vcCBiZWxvdyBjYW4mIzM5O3QKJiM0MzsJICogb3V0bGl2ZSB0aGUgZGlhbG9nIGFuZCBoYW5nLgomIzQzOwkgKi8KJiM0MzsJbG9vcCA9IGdfbWFpbl9sb29wX25ldyhOVUxMLCBGQUxTRSk7CiYjNDM7CXBlcmZfZ3RrX19lcnJvcl9sb29wcyA9IGdfc2xpc3RfcHJlcGVuZChwZXJmX2d0a19fZXJyb3JfbG9vcHMsIGxvb3ApOwomIzQzOwlnX3NpZ25hbF9jb25uZWN0KGRpYWxvZywgJiMzNDtyZXNwb25zZSYjMzQ7LAomIzQzOwkJCSBHX0NBTExCQUNLKHBlcmZfZ3RrX19kaWFsb2dfcmVzcG9uc2UpLCBOVUxMKTsKJiM0MzsJZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKGRpYWxvZywgJiMzNDtkZXN0cm95JiMzNDssCiYjNDM7CQkJCSBHX0NBTExCQUNLKGdfbWFpbl9sb29wX3F1aXQpLCBsb29wKTsKJiM0MzsKJiM0MzsJZ3RrX3dpZGdldF9zZXRfdmlzaWJsZShkaWFsb2csIFRSVUUpOwomIzQzOwlnX21haW5fbG9vcF9ydW4obG9vcCk7CiYjNDM7CXBlcmZfZ3RrX19lcnJvcl9sb29wcyA9IGdfc2xpc3RfcmVtb3ZlKHBlcmZfZ3RrX19lcnJvcl9sb29wcywgbG9vcCk7CiYjNDM7CWdfbWFpbl9sb29wX3VucmVmKGxvb3ApOwomIzQzOwogCWZyZWUobXNnKTsKIAlyZXR1cm4gMDsKIH0KIAotI2lmZGVmIEhBVkVfR1RLX0lORk9fQkFSX1NVUFBPUlQKIHN0YXRpYyBpbnQgcGVyZl9ndGtfX3dhcm5pbmdfaW5mb19iYXIoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpCiB7CiAJY2hhciAqbXNnOwomIzQzOwl2YV9saXN0IGFyZ3NfY29weTsKIAomIzQzOwl2YV9jb3B5KGFyZ3NfY29weSwgYXJncyk7CiAJaWYgKCFwZXJmX2d0a19faXNfYWN0aXZlX2NvbnRleHQocGdjdHgpIHx8Ci0JICAgIHZhc3ByaW50ZigmYW1wO21zZywgZm9ybWF0LCBhcmdzKSAmbHQ7IDApIHsKJiM0MzsJICAgIHZhc3ByaW50ZigmYW1wO21zZywgZm9ybWF0LCBhcmdzX2NvcHkpICZsdDsgMCkgewomIzQzOwkJdmFfZW5kKGFyZ3NfY29weSk7CiAJCWZwcmludGYoc3RkZXJyLCAmIzM0O1dhcm5pbmc6XG4mIzM0Oyk7CiAJCXZmcHJpbnRmKHN0ZGVyciwgZm9ybWF0LCBhcmdzKTsKIAkJZnByaW50ZihzdGRlcnIsICYjMzQ7XG4mIzM0Oyk7CiAJCXJldHVybiAtMTsKIAl9CiYjNDM7CXZhX2VuZChhcmdzX2NvcHkpOwogCiAJZ3RrX2xhYmVsX3NldF90ZXh0KEdUS19MQUJFTChwZ2N0eC0mZ3Q7bWVzc2FnZV9sYWJlbCksIG1zZyk7CiAJZ3RrX2luZm9fYmFyX3NldF9tZXNzYWdlX3R5cGUoR1RLX0lORk9fQkFSKHBnY3R4LSZndDtpbmZvX2JhciksCiAJCQkJICAgICAgR1RLX01FU1NBR0VfV0FSTklORyk7Ci0JZ3RrX3dpZGdldF9zaG93KHBnY3R4LSZndDtpbmZvX2Jhcik7Ci0KLQlmcmVlKG1zZyk7Ci0JcmV0dXJuIDA7Ci19Ci0jZWxzZQotc3RhdGljIGludCBwZXJmX2d0a19fd2FybmluZ19zdGF0dXNiYXIoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpCi17Ci0JY2hhciAqbXNnLCAqcDsKLQotCWlmICghcGVyZl9ndGtfX2lzX2FjdGl2ZV9jb250ZXh0KHBnY3R4KSB8fAotCSAgICB2YXNwcmludGYoJmFtcDttc2csIGZvcm1hdCwgYXJncykgJmx0OyAwKSB7Ci0JCWZwcmludGYoc3RkZXJyLCAmIzM0O1dhcm5pbmc6XG4mIzM0Oyk7Ci0JCXZmcHJpbnRmKHN0ZGVyciwgZm9ybWF0LCBhcmdzKTsKLQkJZnByaW50ZihzdGRlcnIsICYjMzQ7XG4mIzM0Oyk7Ci0JCXJldHVybiAtMTsKLQl9Ci0KLQlndGtfc3RhdHVzYmFyX3BvcChHVEtfU1RBVFVTQkFSKHBnY3R4LSZndDtzdGF0YmFyKSwKLQkJCSAgcGdjdHgtJmd0O3N0YXRiYXJfY3R4X2lkKTsKLQotCS8qIE9ubHkgZmlyc3QgbGluZSBjYW4gYmUgZGlzcGxheWVkICovCi0JcCA9IHN0cmNocihtc2csICYjMzk7XG4mIzM5Oyk7Ci0JaWYgKHApCi0JCSpwID0gJiMzOTtcMCYjMzk7OwotCi0JZ3RrX3N0YXR1c2Jhcl9wdXNoKEdUS19TVEFUVVNCQVIocGdjdHgtJmd0O3N0YXRiYXIpLAotCQkJICAgcGdjdHgtJmd0O3N0YXRiYXJfY3R4X2lkLCBtc2cpOwomIzQzOwlndGtfd2lkZ2V0X3NldF92aXNpYmxlKHBnY3R4LSZndDtpbmZvX2JhciwgVFJVRSk7CiAKIAlmcmVlKG1zZyk7CiAJcmV0dXJuIDA7CiB9Ci0jZW5kaWYKIAogc3RydWN0IHBlcmZfZXJyb3Jfb3BzIHBlcmZfZ3RrX2VvcHMgPSB7CiAJLmVycm9yCQk9IHBlcmZfZ3RrX19lcnJvciwKLSNpZmRlZiBIQVZFX0dUS19JTkZPX0JBUl9TVVBQT1JUCiAJLndhcm5pbmcJPSBwZXJmX2d0a19fd2FybmluZ19pbmZvX2JhciwKLSNlbHNlCi0JLndhcm5pbmcJPSBwZXJmX2d0a19fd2FybmluZ19zdGF0dXNiYXIsCi0jZW5kaWYKIH07CmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL3NldHVwLmMgYi90b29scy9wZXJmL3VpL3NldHVwLmMKaW5kZXggZmY4MDAwNDdlNjk3Zi4uZDg4NzM0NmM3YTYzMiAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi91aS9zZXR1cC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdWkvc2V0dXAuYwpAQCAtMTQsNyAmIzQzOzE0LDcgQEAgaW50IHVzZV9icm93c2VyID0gLTE7CiAKICNkZWZpbmUgUEVSRl9HVEtfRFNPICYjMzQ7bGlicGVyZi1ndGsuc28mIzM0OwogCi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlQKJiM0MzsjaWZkZWYgSEFWRV9HVEs0X1NVUFBPUlQKIAogc3RhdGljIGludCBzZXR1cF9ndGtfYnJvd3Nlcih2b2lkKQogewpkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL2Fubm90YXRlLmMgYi90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuYwppbmRleCBkZjcwZTk1YTg0NzA0Li4xMjNiNmQ1ZmNlYTc4IDEwMDY0NAotLS0gYS90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuYwpAQCAtMTQ1LDYgJiM0MzsxNDUsMTcgQEAgc3RhdGljIGludCBhbm5vdGF0ZWRfc291cmNlX19hbGxvY19oaXN0b2dyYW1zKHN0cnVjdCBhbm5vdGF0ZWRfc291cmNlICpzcmMsCiAJcmV0dXJuIHNyYy0mZ3Q7aGlzdG9ncmFtcyA/IDAgOiAtMTsKIH0KIAomIzQzO3N0cnVjdCBzeW1faGlzdF9lbnRyeSAqCiYjNDM7YW5ub3RhdGVkX3NvdXJjZV9faGlzdF9lbnRyeShzdHJ1Y3QgYW5ub3RhdGVkX3NvdXJjZSAqc3JjLCBjb25zdCBzdHJ1Y3QgZXZzZWwgKmV2c2VsLCB1NjQgb2Zmc2V0KQomIzQzO3sKJiM0MzsJc3RydWN0IHN5bV9oaXN0X2VudHJ5ICplbnRyeTsKJiM0MzsJbG9uZyBrZXkgPSBvZmZzZXQgJmx0OyZsdDsgMTYgfCBldnNlbC0mZ3Q7Y29yZS5pZHg7CiYjNDM7CiYjNDM7CWlmICghaGFzaG1hcF9fZmluZChzcmMtJmd0O3NhbXBsZXMsIGtleSwgJmFtcDtlbnRyeSkpCiYjNDM7CQlyZXR1cm4gTlVMTDsKJiM0MzsJcmV0dXJuIGVudHJ5OwomIzQzO30KJiM0MzsKIHZvaWQgc3ltYm9sX19hbm5vdGF0ZV96ZXJvX2hpc3RvZ3JhbXMoc3RydWN0IHN5bWJvbCAqc3ltKQogewogCXN0cnVjdCBhbm5vdGF0aW9uICpub3RlcyA9IHN5bWJvbF9fYW5ub3RhdGlvbihzeW0pOwpkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL2Fubm90YXRlLmggYi90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuaAppbmRleCBmYTA4ZDA5YjgwZjc2Li40MDAzOGEzNzc5ZDQ2IDEwMDY0NAotLS0gYS90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuaAomIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuaApAQCAtNDA2LDE2ICYjNDM7NDA2LDggQEAgc3RhdGljIGlubGluZSBzdHJ1Y3Qgc3ltX2hpc3QgKmFubm90YXRpb25fX2hpc3RvZ3JhbShzdHJ1Y3QgYW5ub3RhdGlvbiAqbm90ZXMsCiAJcmV0dXJuIGFubm90YXRlZF9zb3VyY2VfX2hpc3RvZ3JhbShub3Rlcy0mZ3Q7c3JjLCBldnNlbCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgc3RydWN0IHN5bV9oaXN0X2VudHJ5ICoKLWFubm90YXRlZF9zb3VyY2VfX2hpc3RfZW50cnkoc3RydWN0IGFubm90YXRlZF9zb3VyY2UgKnNyYywgY29uc3Qgc3RydWN0IGV2c2VsICpldnNlbCwgdTY0IG9mZnNldCkKLXsKLQlzdHJ1Y3Qgc3ltX2hpc3RfZW50cnkgKmVudHJ5OwotCWxvbmcga2V5ID0gb2Zmc2V0ICZsdDsmbHQ7IDE2IHwgZXZzZWwtJmd0O2NvcmUuaWR4OwotCi0JaWYgKCFoYXNobWFwX19maW5kKHNyYy0mZ3Q7c2FtcGxlcywga2V5LCAmYW1wO2VudHJ5KSkKLQkJcmV0dXJuIE5VTEw7Ci0JcmV0dXJuIGVudHJ5OwotfQomIzQzO3N0cnVjdCBzeW1faGlzdF9lbnRyeSAqCiYjNDM7YW5ub3RhdGVkX3NvdXJjZV9faGlzdF9lbnRyeShzdHJ1Y3QgYW5ub3RhdGVkX3NvdXJjZSAqc3JjLCBjb25zdCBzdHJ1Y3QgZXZzZWwgKmV2c2VsLCB1NjQgb2Zmc2V0KTsKIAogc3RhdGljIGlubGluZSBzdHJ1Y3QgYW5ub3RhdGlvbiAqc3ltYm9sX19hbm5vdGF0aW9uKHN0cnVjdCBzeW1ib2wgKnN5bSkKIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDI6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU1NjgKCQkJCQkJCW91dHB1dDogODAKCQkJCQkJCXRob3VnaHRzOiA1NDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUGF0Y2ggVHJpYWdlIC0gV29ydGhGdXp6aW5nIEV2YWx1YXRpb24qKgoKT2theSwgc28gdGhpcyBwYXRjaCBoaXRzIGZpbGVzIHdpdGhpbiBgdG9vbHMvYnVpbGQvYCBhbmQgYHRvb2xzL3BlcmYvYC4gUmlnaHQgYXdheSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBtb2RpZmllZCBmaWxlcyBsaXN0IHRvIGJlIHN1cmUuIEkgc2VlOiBgdG9vbHMvYnVpbGQvTWFrZWZpbGUuZmVhdHVyZWAsIGB0b29scy9idWlsZC9mZWF0dXJlL01ha2VmaWxlYCwgYW5kIGEgZmV3IHNvdXJjZSBmaWxlcyByZWxhdGVkIHRvIHRlc3RpbmcgYW5kIEdUSywgdGhlbiBhIHNsZXcgb2YgZmlsZXMgd2l0aGluIGB0b29scy9wZXJmL2AsIGluY2x1ZGluZyBNYWtlZmlsZXMsIGJ1aWx0aW5zLCBzY3JpcHRzLCB0ZXN0IGNvbXBvbmVudHMsIGFuZCBHVEstYmFzZWQgVUkgZWxlbWVudHMgYW5kIHV0aWxpdHkgZnVuY3Rpb25zLiBBbGwgb2YgdGhlc2UgZmlsZXMgYXJlIGluIHVzZXJzcGFjZS4KCkJhc2VkIG9uIHRoZSB0cmlhZ2UgZ3VpZGVsaW5lcywgc3BlY2lmaWNhbGx5IFNlY3Rpb24gMiwgdGhlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhlc2UgY2hhbmdlcyBmYWxsIGVudGlyZWx5IHdpdGhpbiB1c2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzLCBhbmQgdGhhdCB0aGV5IGRvbiYjMzk7dCBpbXBhY3QgdGhlIGtlcm5lbCBpbWFnZSAoYHZtbGludXhgKSBvciBhbnkga2VybmVsIG1vZHVsZXMuIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IHRoZXNlIHRvb2xzIGFyZSB1bmxpa2VseSB0byBpbXBhY3QgYHZtbGludXhgLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBubyBvdGhlciBhcmVhcyBhcmUgYWZmZWN0ZWQuIEkmIzM5O3ZlIGRvdWJsZS1jaGVja2VkIHRoZSBkaWZmIGFuZCBpdCBpcyBjbGVhciB0aGF0IGFic29sdXRlbHkgZXZlcnkgbW9kaWZpZWQgZmlsZSBiZWdpbnMgd2l0aCBgdG9vbHMvYC4gU28sIHRoaXMgaXMgYWxsIHRvb2xpbmcuIFRoZSBgdG9vbHMvYCBkaXJlY3RvcnkgaXMgZGVkaWNhdGVkIHRvIHVzZXItc3BhY2UgdG9vbHMuIE5vdGhpbmcgaW4gdGhpcyBwYXRjaCB0b3VjaGVzIHRoZSBjb3JlIGtlcm5lbCBvciBhbnkgbW9kdWxlcy4KClRoZXJlZm9yZSwgYXBwbHlpbmcgdGhlIHRyaWFnZSBndWlkZWxpbmVzLCBgV29ydGhGdXp6aW5nYCBzaG91bGQgYmUgc2V0IHRvIGBmYWxzZWAuIE15IHJlYXNvbmluZyBpcyBzb2xpZDogdGhlIGNoYW5nZXMgYXJlIGNvbmZpbmVkIHRvIHVzZXItc3BhY2UgdG9vbGluZyB3aXRoaW4gYHRvb2xzL3BlcmZgIGFuZCBgdG9vbHMvYnVpbGRgLCBhbmQgdGhleSBoYXZlIG5vIGltcGFjdCBvbiB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlIChgdm1saW51eGApIG9yIGtlcm5lbCBtb2R1bGVzLgoKSSYjMzk7bGwgc2V0IGBGb2N1c1N5bWJvbHNgIHRvIGBbXWAgYW5kIGBFbmFibGVDb25maWdzYCB0byBgW11gIGFzIHdlbGwuIFRoYXQgbG9va3MgcmlnaHQuIEkmIzM5O2xsIG1ha2UgYSBzYW5pdHkgY2hlY2sgdXNpbmcgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwMjoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7QWxsIGNoYW5nZXMgaW4gdGhpcyBwYXRjaCBzZXJpZXMgYXJlIHN0cmljdGx5IGNvbmZpbmVkIHRvIHVzZXItc3BhY2UgdG9vbGluZyB1bmRlciBgdG9vbHMvYCAoc3BlY2lmaWNhbGx5IGB0b29scy9wZXJmYCBhbmQgYHRvb2xzL2J1aWxkYCksIHdoaWNoIGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAoYHZtbGludXhgKSBvciBrZXJuZWwgbW9kdWxlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7QWxsIGNoYW5nZXMgaW4gdGhpcyBwYXRjaCBzZXJpZXMgYXJlIHN0cmljdGx5IGNvbmZpbmVkIHRvIHVzZXItc3BhY2UgdG9vbGluZyB1bmRlciBgdG9vbHMvYCAoc3BlY2lmaWNhbGx5IGB0b29scy9wZXJmYCBhbmQgYHRvb2xzL2J1aWxkYCksIHdoaWNoIGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAoYHZtbGludXhgKSBvciBrZXJuZWwgbW9kdWxlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDI6MTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDAyOjE3OjI4LjA0NDM1Mjg4OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1MDY2OTU4MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIkFsbCBjaGFuZ2VzIGluIHRoaXMgcGF0Y2ggc2VyaWVzIGFyZSBzdHJpY3RseSBjb25maW5lZCB0byB1c2VyLXNwYWNlIHRvb2xpbmcgdW5kZXIgYHRvb2xzL2AgKHNwZWNpZmljYWxseSBgdG9vbHMvcGVyZmAgYW5kIGB0b29scy9idWlsZGApLCB3aGljaCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKGB2bWxpbnV4YCkgb3Iga2VybmVsIG1vZHVsZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwMjoxNzoyOC4wNDQzNTc4MzlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MzUxMzIzODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzY2Y4ZjM0OGE1MjVhOTU3Yzg3ODU2OGQ0NmQ4MDBjYTA2ZGIxYTkzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gU2VwIDcgMDI6MTc6MjYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvYnVpbGQvTWFrZWZpbGUuZmVhdHVyZSBiL3Rvb2xzL2J1aWxkL01ha2VmaWxlLmZlYXR1cmVcXG5pbmRleCA5OWViMGVhMDk1Mzc1Li40ZWM5NWMzNWE1YzE5IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL2J1aWxkL01ha2VmaWxlLmZlYXR1cmVcXG4rKysgYi90b29scy9idWlsZC9NYWtlZmlsZS5mZWF0dXJlXFxuQEAgLTExMyw4ICsxMTMsNyBAQCBGRUFUVVJFX1RFU1RTX0VYVFJBIDo9ICAgICAgICAgICAgICAgICAgXFxcXFxcbiAgICAgICAgICBjb21waWxlLXgzMiAgICAgICAgICAgICAgICAgICAgXFxcXFxcbiAgICAgICAgICBjcGx1cy1kZW1hbmdsZSAgICAgICAgICAgICAgICAgXFxcXFxcbiAgICAgICAgICBjeGEtZGVtYW5nbGUgICAgICAgICAgICAgICAgICAgXFxcXFxcbi0gICAgICAgICBndGsyICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcbi0gICAgICAgICBndGsyLWluZm9iYXIgICAgICAgICAgICAgICAgICAgXFxcXFxcbisgICAgICAgICBndGs0ICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcbiAgICAgICAgICBoZWxsbyAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcbiAgICAgICAgICBiYWJlbHRyYWNlMi1jdGYtd3JpdGVyICAgICAgICAgXFxcXFxcbiAgICAgICAgICBsaWJjYXBzdG9uZSAgICAgICAgICAgICAgICAgICAgXFxcXFxcbkBAIC0xNDMsNiArMTQyLDcgQEAgZW5kaWZcXG4gRkVBVFVSRV9ESVNQTEFZID89ICAgICAgICAgICAgICBcXFxcXFxuICAgICAgICAgIGxpYmR3ICAgICAgICAgICAgICAgICAgXFxcXFxcbiAgICAgICAgICBnbGliYyAgICAgICAgICAgICAgICAgIFxcXFxcXG4rICAgICAgICAgZ3RrNCAgICAgICAgICAgICAgICAgICBcXFxcXFxuICAgICAgICAgIGxpYmVsZiAgICAgICAgICAgICAgICAgXFxcXFxcbiAgICAgICAgICBsaWJudW1hICAgICAgICAgICAgICAgIFxcXFxcXG4gICAgICAgICAgbnVtYV9udW1fcG9zc2libGVfY3B1cyBcXFxcXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvTWFrZWZpbGUgYi90b29scy9idWlsZC9mZWF0dXJlL01ha2VmaWxlXFxuaW5kZXggN2QxNjUwMTgxMTZhNS4uMDFjNDhlNmVmMDIxZCAxMDA2NDRcXG4tLS0gYS90b29scy9idWlsZC9mZWF0dXJlL01ha2VmaWxlXFxuKysrIGIvdG9vbHMvYnVpbGQvZmVhdHVyZS9NYWtlZmlsZVxcbkBAIC0xMSw4ICsxMSw3IEBAIEZJTEVTPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXG4gICAgICAgICAgdGVzdC1ldmVudGZkLmJpbiAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcbiAgICAgICAgICB0ZXN0LWZvcnRpZnktc291cmNlLmJpbiAgICAgICAgICAgICAgICBcXFxcXFxuICAgICAgICAgIHRlc3QtZ2xpYmMuYmluICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXG4tICAgICAgICAgdGVzdC1ndGsyLmJpbiAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcbi0gICAgICAgICB0ZXN0LWd0azItaW5mb2Jhci5iaW4gICAgICAgICAgICAgICAgICBcXFxcXFxuKyAgICAgICAgIHRlc3QtZ3RrNC5iaW4gICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXG4gICAgICAgICAgdGVzdC1oZWxsby5iaW4gICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcbiAgICAgICAgICB0ZXN0LWxpYmJmZC5iaW4gICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxuIFxcdCB0ZXN0LWxpYmJmZC10aHJlYWRzYWZlLmJpbiAgICAgIFxcdFxcXFxcXG5AQCAtMjQwLDExICsyMzksOCBAQCAkKE9VVFBVVCl0ZXN0LWxpYmNwdXBvd2VyLmJpbjpcXG4gJChPVVRQVVQpdGVzdC1saWJ0cmFjZWZzLmJpbjpcXG4gXFx0ICQoQlVJTEQpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWNmbGFncyBsaWJ0cmFjZWZzIDJcXHUwMDNlL2Rldi9udWxsKSAtbHRyYWNlZnNcXG4gXFxuLSQoT1VUUFVUKXRlc3QtZ3RrMi5iaW46XFxuLVxcdCQoQlVJTEQpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgLS1jZmxhZ3MgZ3RrKy0yLjAgMlxcdTAwM2UvZGV2L251bGwpIC1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnNcXG4tXFxuLSQoT1VUUFVUKXRlc3QtZ3RrMi1pbmZvYmFyLmJpbjpcXG4tXFx0JChCVUlMRCkgJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyAtLWNmbGFncyBndGsrLTIuMCAyXFx1MDAzZS9kZXYvbnVsbClcXG4rJChPVVRQVVQpdGVzdC1ndGs0LmJpbjpcXG4rXFx0JChCVUlMRCkgJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyAtLWNmbGFncyBndGs0IDJcXHUwMDNlL2Rldi9udWxsKVxcbiBcXG4gZ3JlcC1saWJzICA9ICQoZmlsdGVyIC1sJSwkKDEpKVxcbiBzdHJpcC1saWJzID0gJChmaWx0ZXItb3V0IC1sJSwkKDEpKVxcbmRpZmYgLS1naXQgYS90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi1pbmZvYmFyLmMgYi90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi1pbmZvYmFyLmNcXG5kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCBiMWI3MTZkZDU3MzMwLi4wMDAwMDAwMDAwMDAwXFxuLS0tIGEvdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azItaW5mb2Jhci5jXFxuKysrIC9kZXYvbnVsbFxcbkBAIC0xLDEyICswLDAgQEBcXG4tLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4tI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkIFxcXCItV3N0cmljdC1wcm90b3R5cGVzXFxcIlxcbi0jaW5jbHVkZSBcXHUwMDNjZ3RrL2d0ay5oXFx1MDAzZVxcbi0jcHJhZ21hIEdDQyBkaWFnbm9zdGljIGVycm9yIFxcXCItV3N0cmljdC1wcm90b3R5cGVzXFxcIlxcbi1cXG4taW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcXG4te1xcbi1cXHRndGtfaW5pdChcXHUwMDI2YXJnYywgXFx1MDAyNmFyZ3YpO1xcbi1cXHRndGtfaW5mb19iYXJfbmV3KCk7XFxuLVxcbi1cXHRyZXR1cm4gMDtcXG4tfVxcbmRpZmYgLS1naXQgYS90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi5jIGIvdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azQuY1xcbnNpbWlsYXJpdHkgaW5kZXggNzYlXFxucmVuYW1lIGZyb20gdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azIuY1xcbnJlbmFtZSB0byB0b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrNC5jXFxuaW5kZXggMmFhZjRiZmMyMDU1Ni4uYjk1MjBlNzQwOGI5OSAxMDA2NDRcXG4tLS0gYS90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi5jXFxuKysrIGIvdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azQuY1xcbkBAIC0zLDkgKzMsOSBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjZ3RrL2d0ay5oXFx1MDAzZVxcbiAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGVycm9yIFxcXCItV3N0cmljdC1wcm90b3R5cGVzXFxcIlxcbiBcXG4taW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcXG4raW50IG1haW4odm9pZClcXG4ge1xcbi1cXHRndGtfaW5pdChcXHUwMDI2YXJnYywgXFx1MDAyNmFyZ3YpO1xcbitcXHRndGtfaW5pdCgpO1xcbiBcXG4gICAgICAgICByZXR1cm4gMDtcXG4gfVxcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL0RvY3VtZW50YXRpb24vcGVyZi1yZXBvcnQudHh0IGIvdG9vbHMvcGVyZi9Eb2N1bWVudGF0aW9uL3BlcmYtcmVwb3J0LnR4dFxcbmluZGV4IDIyZjg3ZWFhMzI3OTYuLjdhZjliM2Y4MWMwNjUgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi9Eb2N1bWVudGF0aW9uL3BlcmYtcmVwb3J0LnR4dFxcbisrKyBiL3Rvb2xzL3BlcmYvRG9jdW1lbnRhdGlvbi9wZXJmLXJlcG9ydC50eHRcXG5AQCAtMzUxLDcgKzM1MSw3IEBAIE9QVElPTlNcXG4gXFx0cmVxdWlyZXMgYSB0dHksIGlmIG9uZSBpcyBub3QgcHJlc2VudCwgYXMgd2hlbiBwaXBpbmcgdG8gb3RoZXJcXG4gXFx0Y29tbWFuZHMsIHRoZSBzdGRpbyBpbnRlcmZhY2UgaXMgdXNlZC5cXG4gXFxuLS0tZ3RrOjogVXNlIHRoZSBHVEsyIGludGVyZmFjZS5cXG4rLS1ndGs6OiBVc2UgdGhlIEdUSzQgaW50ZXJmYWNlLlxcbiBcXG4gLWs6OlxcbiAtLXZtbGludXg9XFx1MDAzY2ZpbGVcXHUwMDNlOjpcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9NYWtlZmlsZSBiL3Rvb2xzL3BlcmYvTWFrZWZpbGVcXG5pbmRleCA1YjcxMzgzN2VlZGU3Li41NjAxNDEwNjQ3OWEzIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3BlcmYvTWFrZWZpbGVcXG4rKysgYi90b29scy9wZXJmL01ha2VmaWxlXFxuQEAgLTEwNiw3ICsxMDYsNyBAQCBjbGVhbjpcXG4gIyBtYWtlIC1DIHRvb2xzL3BlcmYgLWYgdGVzdHMvbWFrZVxcbiAjXFxuIGJ1aWxkLXRlc3Q6XFxuLVxcdEAkKE1BS0UpIFNIVUY9MSAtZiB0ZXN0cy9tYWtlIFJFVVNFX0ZFQVRVUkVTX0RVTVA9MSBNSz1NYWtlZmlsZSBTRVRfUEFSQUxMRUw9MSAtLW5vLXByaW50LWRpcmVjdG9yeSB0YXJwa2cgbWFrZV9zdGF0aWMgbWFrZV93aXRoX2d0azIgb3V0XFxuK1xcdEAkKE1BS0UpIFNIVUY9MSAtZiB0ZXN0cy9tYWtlIFJFVVNFX0ZFQVRVUkVTX0RVTVA9MSBNSz1NYWtlZmlsZSBTRVRfUEFSQUxMRUw9MSAtLW5vLXByaW50LWRpcmVjdG9yeSB0YXJwa2cgbWFrZV9zdGF0aWMgbWFrZV93aXRoX2d0azQgb3V0XFxuIFxcbiBidWlsZC10ZXN0LXRhcmJhbGw6XFxuIFxcdEAkKE1BS0UpIC1mIHRlc3RzL21ha2UgUkVVU0VfRkVBVFVSRVNfRFVNUD0xIE1LPU1ha2VmaWxlIFNFVF9QQVJBTExFTD0xIC0tbm8tcHJpbnQtZGlyZWN0b3J5IG91dFxcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL01ha2VmaWxlLmNvbmZpZyBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUuY29uZmlnXFxuaW5kZXggNGQ1OTkzZGE5Zjk0NS4uNGVlNzM5M2EzOWY5MSAxMDA2NDRcXG4tLS0gYS90b29scy9wZXJmL01ha2VmaWxlLmNvbmZpZ1xcbisrKyBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUuY29uZmlnXFxuQEAgLTc3NCwyMSArNzc0LDIyIEBAIGlmbmRlZiBOT19TTEFOR1xcbiAgIGVuZGlmXFxuIGVuZGlmXFxuIFxcbi1pZmRlZiBHVEsyXFxuLSAgRkxBR1NfR1RLMj0kKENGTEFHUykgJChMREZMQUdTKSAkKEVYVExJQlMpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgLS1jZmxhZ3MgZ3RrKy0yLjAgMlxcdTAwM2UvZGV2L251bGwpXFxuLSAgJChjYWxsIGZlYXR1cmVfY2hlY2ssZ3RrMilcXG4tICBpZm5lcSAoJChmZWF0dXJlLWd0azIpLCAxKVxcbi0gICAgJCh3YXJuaW5nIEdUSzIgbm90IGZvdW5kLCBkaXNhYmxlcyBHVEsyIHN1cHBvcnQuIFBsZWFzZSBpbnN0YWxsIGd0azItZGV2ZWwgb3IgbGliZ3RrMi4wLWRldilcXG4tICAgIE5PX0dUSzIgOj0gMVxcbitpZmRlZiBHVEs0XFxuKyAgRkxBR1NfR1RLND0kKENGTEFHUykgJChMREZMQUdTKSAkKEVYVExJQlMpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgLS1jZmxhZ3MgZ3RrNCAyXFx1MDAzZS9kZXYvbnVsbClcXG4rICAkKGNhbGwgZmVhdHVyZV9jaGVjayxndGs0KVxcbisgIGlmbmVxICgkKGZlYXR1cmUtZ3RrNCksIDEpXFxuKyAgICAkKHdhcm5pbmcgR1RLNCBub3QgZm91bmQsIGRpc2FibGVzIEdUSzQgc3VwcG9ydC4gUGxlYXNlIGluc3RhbGwgZ3RrNC1kZXZlbCBvciBsaWJndGstNC1kZXYpXFxuKyAgICBOT19HVEs0IDo9IDFcXG4gICBlbHNlXFxuLSAgICAkKGNhbGwgZmVhdHVyZV9jaGVjayxndGsyLWluZm9iYXIpXFxuLSAgICBpZmVxICgkKGZlYXR1cmUtZ3RrMi1pbmZvYmFyKSwgMSlcXG4tICAgICAgR1RLX0NGTEFHUyA6PSAtREhBVkVfR1RLX0lORk9fQkFSX1NVUFBPUlRcXG4tICAgIGVuZGlmXFxuLSAgICBDRkxBR1MgKz0gLURIQVZFX0dUSzJfU1VQUE9SVFxcbi0gICAgR1RLX0NGTEFHUyArPSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1jZmxhZ3MgZ3RrKy0yLjAgMlxcdTAwM2UvZGV2L251bGwpXFxuLSAgICBHVEtfTElCUyA6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIGd0aystMi4wIDJcXHUwMDNlL2Rldi9udWxsKVxcbisgICAgQ0ZMQUdTICs9IC1ESEFWRV9HVEs0X1NVUFBPUlRcXG4rICAgIEdUS19DRkxBR1MgKz0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tY2ZsYWdzIGd0azQgMlxcdTAwM2UvZGV2L251bGwpXFxuKyAgICBHVEtfTElCUyA6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIGd0azQgMlxcdTAwM2UvZGV2L251bGwpXFxuICAgICBFWFRMSUJTICs9IC1sZGxcXG4rICAgICMgbGlicGVyZi1ndGsuc28gaXMgZGxvcGVuKCllZCBhdCBydW50aW1lIGFuZCBjYWxscyBiYWNrIGludG9cXG4rICAgICMgc3ltYm9scyBkZWZpbmVkIGluIHRoZSBwZXJmIGJpbmFyeSBpdHNlbGYgKGNhbGxjaGFpbl9wYXJhbSxcXG4rICAgICMgc3ltYm9sX2NvbmYsIGV2c2VsX19uYW1lLCAuLi4pOiBwZXJmIG5lZWRzIHRvIGV4cG9ydCB0aG9zZVxcbisgICAgIyBkeW5hbWljYWxseSBmb3IgdGhlIHBsdWdpbiB0byByZXNvbHZlIHRoZW0uXFxuKyAgICBMREZMQUdTICs9IC1yZHluYW1pY1xcbiAgIGVuZGlmXFxuIGVuZGlmXFxuIFxcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL01ha2VmaWxlLnBlcmYgYi90b29scy9wZXJmL01ha2VmaWxlLnBlcmZcXG5pbmRleCAyOWNmZDQ0YzQyN2YzLi4yNDM4YjQwZWFhZWMxIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3BlcmYvTWFrZWZpbGUucGVyZlxcbisrKyBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUucGVyZlxcbkBAIC00OSw3ICs0OSw3IEBAIGluY2x1ZGUgLi4vc2NyaXB0cy91dGlsaXRpZXMubWFrXFxuICNcXG4gIyBEZWZpbmUgTk9fU0xBTkcgaWYgeW91IGRvIG5vdCB3YW50IFRVSSBzdXBwb3J0LlxcbiAjXFxuLSMgRGVmaW5lIEdUSzIgaWYgeW91IHdhbnQgR1RLKyBHVUkgc3VwcG9ydC5cXG4rIyBEZWZpbmUgR1RLNCBpZiB5b3Ugd2FudCBHVEsrIEdVSSBzdXBwb3J0LlxcbiAjXFxuICMgRGVmaW5lIE5PX0RFTUFOR0xFIGlmIHlvdSBkbyBub3Qgd2FudCBDKysgc3ltYm9sIGRlbWFuZ2xpbmcuXFxuICNcXG5AQCAtNDczLDcgKzQ3Myw3IEBAIGlmbmVxICgkKE9VVFBVVCksKVxcbiAgIENGTEFHUyArPSAtSSQoT1VUUFVUKVxcbiBlbmRpZlxcbiBcXG4taWZkZWYgR1RLMlxcbitpZmRlZiBHVEs0XFxuICAgQUxMX1BST0dSQU1TICs9ICQoT1VUUFVUKWxpYnBlcmYtZ3RrLnNvXFxuICAgR1RLX0lOIDo9ICQoT1VUUFVUKWd0ay1pbi5vXFxuIGVuZGlmXFxuQEAgLTgxMSw3ICs4MTEsNyBAQCBjaGVjazogcHJlcGFyZVxcbiBcXG4gIyMjIEluc3RhbGxhdGlvbiBydWxlc1xcbiBcXG4taWZkZWYgR1RLMlxcbitpZmRlZiBHVEs0XFxuIGluc3RhbGwtZ3RrOiAkKE9VVFBVVClsaWJwZXJmLWd0ay5zb1xcbiBcXHQkKGNhbGwgUVVJRVRfSU5TVEFMTCwgJ0dUSyBVSScpIFxcXFxcXG4gXFx0XFx0JChJTlNUQUxMKSAtZCAtbSA3NTUgJyQoREVTVERJUl9TUSkkKGxpYmRpcl9TUSknOyBcXFxcXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1hbm5vdGF0ZS5jIGIvdG9vbHMvcGVyZi9idWlsdGluLWFubm90YXRlLmNcXG5pbmRleCA2OWNiNzJiMjA4MmE2Li4xNTE2M2UwODFhOGNlIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1hbm5vdGF0ZS5jXFxuKysrIGIvdG9vbHMvcGVyZi9idWlsdGluLWFubm90YXRlLmNcXG5AQCAtNTIsNyArNTIsNyBAQCBzdHJ1Y3QgcGVyZl9hbm5vdGF0ZSB7XFxuIFxcdGJvb2xcXHQgICB1c2VfdHVpO1xcbiAjZW5kaWZcXG4gXFx0Ym9vbFxcdCAgIHVzZV9zdGRpbywgdXNlX3N0ZGlvMjtcXG4tI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUXFxuKyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVFxcbiBcXHRib29sXFx0ICAgdXNlX2d0aztcXG4gI2VuZGlmXFxuIFxcdGJvb2xcXHQgICBza2lwX21pc3Npbmc7XFxuQEAgLTcxMiw3ICs3MTIsNyBAQCBpbnQgY21kX2Fubm90YXRlKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndilcXG4gXFx0T1BUX0JPT0xFQU4oJ3EnLCBcXFwicXVpZXRcXFwiLCBcXHUwMDI2cXVpZXQsIFxcXCJkbyBub3cgc2hvdyBhbnkgd2FybmluZ3Mgb3IgbWVzc2FnZXNcXFwiKSxcXG4gXFx0T1BUX0JPT0xFQU4oJ0QnLCBcXFwiZHVtcC1yYXctdHJhY2VcXFwiLCBcXHUwMDI2ZHVtcF90cmFjZSxcXG4gXFx0XFx0ICAgIFxcXCJkdW1wIHJhdyB0cmFjZSBpbiBBU0NJSVxcXCIpLFxcbi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlRcXG4rI2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXFxuIFxcdE9QVF9CT09MRUFOKDAsIFxcXCJndGtcXFwiLCBcXHUwMDI2YW5ub3RhdGUudXNlX2d0aywgXFxcIlVzZSB0aGUgR1RLIGludGVyZmFjZVxcXCIpLFxcbiAjZW5kaWZcXG4gI2lmZGVmIEhBVkVfU0xBTkdfU1VQUE9SVFxcbkBAIC04MjgsNyArODI4LDcgQEAgaW50IGNtZF9hbm5vdGF0ZShpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpXFxuIFxcdGlmIChhbm5vdGF0ZV9jaGVja19hcmdzKCkgXFx1MDAzYyAwKVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFxuLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVFxcbisjaWZkZWYgSEFWRV9HVEs0X1NVUFBPUlRcXG4gXFx0aWYgKHN5bWJvbF9jb25mLnNob3dfbnJfc2FtcGxlcyBcXHUwMDI2XFx1MDAyNiBhbm5vdGF0ZS51c2VfZ3RrKSB7XFxuIFxcdFxcdHByX2VycihcXFwiLS1zaG93LW5yLXNhbXBsZXMgaXMgbm90IGF2YWlsYWJsZSBpbiAtLWd0ayBtb2RlIGF0IHRoaXMgdGltZVxcXFxuXFxcIik7XFxuIFxcdFxcdHJldHVybiByZXQ7XFxuQEAgLTg5OCw3ICs4OTgsNyBAQCBpbnQgY21kX2Fubm90YXRlKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndilcXG4gXFx0ZWxzZSBpZiAoYW5ub3RhdGUudXNlX3R1aSlcXG4gXFx0XFx0dXNlX2Jyb3dzZXIgPSAxO1xcbiAjZW5kaWZcXG4tI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUXFxuKyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVFxcbiBcXHRlbHNlIGlmIChhbm5vdGF0ZS51c2VfZ3RrKVxcbiBcXHRcXHR1c2VfYnJvd3NlciA9IDI7XFxuICNlbmRpZlxcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL2J1aWx0aW4tcmVwb3J0LmMgYi90b29scy9wZXJmL2J1aWx0aW4tcmVwb3J0LmNcXG5pbmRleCA2MGQxZjE2NjYyOWUwLi5kMTQzODRjNTg0NjYxIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1yZXBvcnQuY1xcbisrKyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1yZXBvcnQuY1xcbkBAIC04Miw3ICs4Miw3IEBAIHN0cnVjdCByZXBvcnQge1xcbiAjaWZkZWYgSEFWRV9TTEFOR19TVVBQT1JUXFxuIFxcdGJvb2xcXHRcXHRcXHR1c2VfdHVpO1xcbiAjZW5kaWZcXG4tI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUXFxuKyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVFxcbiBcXHRib29sXFx0XFx0XFx0dXNlX2d0aztcXG4gI2VuZGlmXFxuIFxcdGJvb2xcXHRcXHRcXHR1c2Vfc3RkaW87XFxuQEAgLTEzNTksOCArMTM1OSw4IEBAIGludCBjbWRfcmVwb3J0KGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndilcXG4gI2lmZGVmIEhBVkVfU0xBTkdfU1VQUE9SVFxcbiBcXHRPUFRfQk9PTEVBTigwLCBcXFwidHVpXFxcIiwgXFx1MDAyNnJlcG9ydC51c2VfdHVpLCBcXFwiVXNlIHRoZSBUVUkgaW50ZXJmYWNlXFxcIiksXFxuICNlbmRpZlxcbi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlRcXG4tXFx0T1BUX0JPT0xFQU4oMCwgXFxcImd0a1xcXCIsIFxcdTAwMjZyZXBvcnQudXNlX2d0aywgXFxcIlVzZSB0aGUgR1RLMiBpbnRlcmZhY2VcXFwiKSxcXG4rI2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXFxuK1xcdE9QVF9CT09MRUFOKDAsIFxcXCJndGtcXFwiLCBcXHUwMDI2cmVwb3J0LnVzZV9ndGssIFxcXCJVc2UgdGhlIEdUSzQgaW50ZXJmYWNlXFxcIiksXFxuICNlbmRpZlxcbiBcXHRPUFRfQk9PTEVBTigwLCBcXFwic3RkaW9cXFwiLCBcXHUwMDI2cmVwb3J0LnVzZV9zdGRpbyxcXG4gXFx0XFx0ICAgIFxcXCJVc2UgdGhlIHN0ZGlvIGludGVyZmFjZVxcXCIpLFxcbkBAIC0xNzEwLDcgKzE3MTAsNyBAQCBpbnQgY21kX3JlcG9ydChpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpXFxuIFxcdGVsc2UgaWYgKHJlcG9ydC51c2VfdHVpKVxcbiBcXHRcXHR1c2VfYnJvd3NlciA9IDE7XFxuICNlbmRpZlxcbi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlRcXG4rI2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXFxuIFxcdGVsc2UgaWYgKHJlcG9ydC51c2VfZ3RrKVxcbiBcXHRcXHR1c2VfYnJvd3NlciA9IDI7XFxuICNlbmRpZlxcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3NjcmlwdHMvaW5zdGFsbC1idWlsZC1kZXBzLnNoIGIvdG9vbHMvcGVyZi9zY3JpcHRzL2luc3RhbGwtYnVpbGQtZGVwcy5zaFxcbmluZGV4IGQwMDNlN2ZhYjJiZTguLmE2MDFhNTI2MGMxN2UgMTAwNzU1XFxuLS0tIGEvdG9vbHMvcGVyZi9zY3JpcHRzL2luc3RhbGwtYnVpbGQtZGVwcy5zaFxcbisrKyBiL3Rvb2xzL3BlcmYvc2NyaXB0cy9pbnN0YWxsLWJ1aWxkLWRlcHMuc2hcXG5AQCAtMTk5LDggKzE5OSw4IEBAIGZlZG9yYV9wa2dfZm9yKCkge1xcbiBcXHQjIG9wdC1pbiBmZWF0dXJlcywgd2hpY2ggYSBkZWZhdWx0IGJ1aWxkIGRvZXMgbm90IGVuYWJsZTogdGhlIGxpYmJmZFxcbiBcXHQjIGRpc2Fzc2VtYmxlciBmYW1pbHkgKGxpYmJmZCwgbGliYmZkLXRocmVhZHNhZmUsIGxpYmJmZC1saWJlcnR5LFxcbiBcXHQjIGRpc2Fzc2VtYmxlci0qLCBjcGx1cy1kZW1hbmdsZSksIG9ubHkgbGlua2VkIG9uIEJVSUxEX05PTkRJU1RST1xcbi1cXHQjIGJ1aWxkcyBhbmQgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBjYXBzdG9uZSwgR1RLMiwgTElCUEVSTCBhbmRcXG4tXFx0IyBMSUJVTldJTkQgc3VwcG9ydCAoaWZkZWYgR1RLMiAvIGlmZGVmIExJQlBFUkwgLyBMSUJVTldJTkQ9MSksXFxuK1xcdCMgYnVpbGRzIGFuZCBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGNhcHN0b25lLCBHVEs0LCBMSUJQRVJMIGFuZFxcbitcXHQjIExJQlVOV0lORCBzdXBwb3J0IChpZmRlZiBHVEs0IC8gaWZkZWYgTElCUEVSTCAvIExJQlVOV0lORD0xKSxcXG4gXFx0IyBhbmQgQ29yZVNpZ2h0IChpZmRlZiBDT1JFU0lHSFQpLCBhcmUgZGVsaWJlcmF0ZWx5IG5vdCBtYXBwZWQuXFxuIFxcdCMgbGliYWlvIGlzIG5vdCBtYXBwZWQgZWl0aGVyOiBpdHNcXG4gXFx0IyB0ZXN0IHVzZXMgdGhlIFBPU0lYIEFJTyBBUEkgKGFpby5oLCBhaW9fKiwgLWxydCksIHByb3ZpZGVkIGJ5XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdGVzdHMvbWFrZSBiL3Rvb2xzL3BlcmYvdGVzdHMvbWFrZVxcbmluZGV4IGQyYzJmNTI2ZTFkYjAuLjIwMmFiNTUwMTkxNjEgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi90ZXN0cy9tYWtlXFxuKysrIGIvdG9vbHMvcGVyZi90ZXN0cy9tYWtlXFxuQEAgLTk1LDcgKzk1LDcgQEAgbWFrZV9ub19iYWJlbHRyYWNlMiA6PSBOT19CQUJFTFRSQUNFMj0xXFxuIG1ha2Vfd2l0aF9jb3Jlc2lnaHQgOj0gQ09SRVNJR0hUPTFcXG4gbWFrZV9ub19zZHRcXHQgICAgOj0gTk9fU0RUPTFcXG4gbWFrZV9ub19saWJwZm00ICAgICA6PSBOT19MSUJQRk00PTFcXG4tbWFrZV93aXRoX2d0azIgICAgICA6PSBHVEsyPTFcXG4rbWFrZV93aXRoX2d0azQgICAgICA6PSBHVEs0PTFcXG4gbWFrZV9yZWZjbnRfY2hlY2sgICA6PSBFWFRSQV9DRkxBR1M9XFxcIi1EUkVGQ05UX0NIRUNLSU5HPTFcXFwiXFxuIG1ha2VfdGFncyAgICAgICAgICAgOj0gdGFnc1xcbiBtYWtlX2NzY29wZSAgICAgICAgIDo9IGNzY29wZVxcbkBAIC0zMTgsNyArMzE4LDcgQEAgJChydW4pOlxcbiBcXHQkKGNhbGwgdGVzdCwkQCkgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbiBcXHRybSAtcmYgJEAgJCRUTVBfREVTVCB8fCAoY2F0ICRAIDsgZmFsc2UpXFxuIFxcbi1tYWtlX3dpdGhfZ3RrMjpcXG4rbWFrZV93aXRoX2d0azQ6XFxuIFxcdCQoY2FsbCBjbGVhbilcXG4gXFx0QFRNUF9ERVNUPSQkKG1rdGVtcCAtZCk7IFxcXFxcXG4gXFx0Y21kPVxcXCJjZCAkKFBFUkYpIFxcdTAwMjZcXHUwMDI2ICQoTUFLRV9GKSAkKCRAKSAkKFBBUkFMTEVMX09QVCkgJChPX09QVCkgREVTVERJUj0kJFRNUF9ERVNUXFxcIjsgXFxcXFxcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL2d0ay9hbm5vdGF0ZS5jIGIvdG9vbHMvcGVyZi91aS9ndGsvYW5ub3RhdGUuY1xcbmluZGV4IDg5MjBlMjk4NDIwYTguLjA5NGRmYTA0NWI3NzQgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvYW5ub3RhdGUuY1xcbisrKyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2Fubm90YXRlLmNcXG5AQCAtMTEsNiArMTEsNyBAQFxcbiAjaW5jbHVkZSBcXFwidWkvaGVscGxpbmUuaFxcXCJcXG4gI2luY2x1ZGUgXFx1MDAzY2ludHR5cGVzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NzaWduYWwuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY3N0cmluZy5oXFx1MDAzZVxcbiBcXG4gZW51bSB7XFxuIFxcdEFOTl9DT0xfX1BFUkNFTlQsXFxuQEAgLTE2MSw3ICsxNjIsNyBAQCBzdGF0aWMgaW50IHBlcmZfZ3RrX19hbm5vdGF0ZV9zeW1ib2woR3RrV2lkZ2V0ICp3aW5kb3csIHN0cnVjdCBtYXBfc3ltYm9sICptcyxcXG4gXFx0XFx0XFx0Z3RrX2xpc3Rfc3RvcmVfc2V0KHN0b3JlLCBcXHUwMDI2aXRlciwgQU5OX0NPTF9fTElORSwgcywgLTEpO1xcbiBcXHR9XFxuIFxcbi1cXHRndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHdpbmRvdyksIHZpZXcpO1xcbitcXHRndGtfc2Nyb2xsZWRfd2luZG93X3NldF9jaGlsZChHVEtfU0NST0xMRURfV0lORE9XKHdpbmRvdyksIHZpZXcpO1xcbiBcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHBvcywgbiwgXFx1MDAyNm5vdGVzLVxcdTAwM2VzcmMtXFx1MDAzZXNvdXJjZSwgYWwubm9kZSkge1xcbiBcXHRcXHRsaXN0X2RlbF9pbml0KFxcdTAwMjZwb3MtXFx1MDAzZWFsLm5vZGUpO1xcbkBAIC0yMDUsNDAgKzIwNiwzNCBAQCBzdGF0aWMgaW50IHN5bWJvbF9fZ3RrX2Fubm90YXRlKHN0cnVjdCBtYXBfc3ltYm9sICptcywgc3RydWN0IGV2c2VsICpldnNlbCxcXG4gXFx0XFx0R3RrV2lkZ2V0ICppbmZvYmFyO1xcbiBcXHRcXHRHdGtXaWRnZXQgKnN0YXRiYXI7XFxuIFxcbi1cXHRcXHRzaWduYWwoU0lHU0VHViwgcGVyZl9ndGtfX3NpZ25hbCk7XFxuLVxcdFxcdHNpZ25hbChTSUdGUEUsICBwZXJmX2d0a19fc2lnbmFsKTtcXG4tXFx0XFx0c2lnbmFsKFNJR0lOVCwgIHBlcmZfZ3RrX19zaWduYWwpO1xcbi1cXHRcXHRzaWduYWwoU0lHUVVJVCwgcGVyZl9ndGtfX3NpZ25hbCk7XFxuLVxcdFxcdHNpZ25hbChTSUdURVJNLCBwZXJmX2d0a19fc2lnbmFsKTtcXG4rXFx0XFx0c2lnbmFsKFNJR1NFR1YsIHBlcmZfZ3RrX19mYXRhbF9zaWduYWwpO1xcbitcXHRcXHRzaWduYWwoU0lHRlBFLCAgcGVyZl9ndGtfX2ZhdGFsX3NpZ25hbCk7XFxuK1xcdFxcdHBlcmZfZ3RrX19pbnN0YWxsX3F1aXRfc2lnbmFscygpO1xcbiBcXG4tXFx0XFx0d2luZG93ID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJTkRPV19UT1BMRVZFTCk7XFxuK1xcdFxcdHdpbmRvdyA9IGd0a193aW5kb3dfbmV3KCk7XFxuIFxcdFxcdGd0a193aW5kb3dfc2V0X3RpdGxlKEdUS19XSU5ET1cod2luZG93KSwgXFxcInBlcmYgYW5ub3RhdGVcXFwiKTtcXG4gXFxuLVxcdFxcdGdfc2lnbmFsX2Nvbm5lY3Qod2luZG93LCBcXFwiZGVsZXRlX2V2ZW50XFxcIiwgZ3RrX21haW5fcXVpdCwgTlVMTCk7XFxuLVxcbiBcXHRcXHRwZ2N0eCA9IHBlcmZfZ3RrX19hY3RpdmF0ZV9jb250ZXh0KHdpbmRvdyk7XFxuIFxcdFxcdGlmICghcGdjdHgpXFxuIFxcdFxcdFxcdHJldHVybiAtMTtcXG4gXFxuLVxcdFxcdHZib3ggPSBndGtfdmJveF9uZXcoRkFMU0UsIDApO1xcbitcXHRcXHR2Ym94ID0gZ3RrX2JveF9uZXcoR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCAwKTtcXG4gXFx0XFx0bm90ZWJvb2sgPSBndGtfbm90ZWJvb2tfbmV3KCk7XFxuIFxcdFxcdHBnY3R4LVxcdTAwM2Vub3RlYm9vayA9IG5vdGVib29rO1xcbiBcXG4tXFx0XFx0Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIG5vdGVib29rLCBUUlVFLCBUUlVFLCAwKTtcXG4rXFx0XFx0Z3RrX3dpZGdldF9zZXRfdmV4cGFuZChub3RlYm9vaywgVFJVRSk7XFxuK1xcdFxcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIG5vdGVib29rKTtcXG4gXFxuIFxcdFxcdGluZm9iYXIgPSBwZXJmX2d0a19fc2V0dXBfaW5mb19iYXIoKTtcXG4tXFx0XFx0aWYgKGluZm9iYXIpIHtcXG4tXFx0XFx0XFx0Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIGluZm9iYXIsXFxuLVxcdFxcdFxcdFxcdFxcdCAgIEZBTFNFLCBGQUxTRSwgMCk7XFxuLVxcdFxcdH1cXG4rXFx0XFx0Z3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgaW5mb2Jhcik7XFxuIFxcbiBcXHRcXHRzdGF0YmFyID0gcGVyZl9ndGtfX3NldHVwX3N0YXR1c2JhcigpO1xcbi1cXHRcXHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgc3RhdGJhciwgRkFMU0UsIEZBTFNFLCAwKTtcXG4rXFx0XFx0Z3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgc3RhdGJhcik7XFxuIFxcbi1cXHRcXHRndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHdpbmRvdyksIHZib3gpO1xcbitcXHRcXHRndGtfd2luZG93X3NldF9jaGlsZChHVEtfV0lORE9XKHdpbmRvdyksIHZib3gpO1xcbiBcXHR9XFxuIFxcbi1cXHRzY3JvbGxlZF93aW5kb3cgPSBndGtfc2Nyb2xsZWRfd2luZG93X25ldyhOVUxMLCBOVUxMKTtcXG4rXFx0c2Nyb2xsZWRfd2luZG93ID0gZ3RrX3Njcm9sbGVkX3dpbmRvd19uZXcoKTtcXG4gXFx0dGFiX2xhYmVsID0gZ3RrX2xhYmVsX25ldyhzeW0tXFx1MDAzZW5hbWUpO1xcbiBcXG4gXFx0Z3RrX3Njcm9sbGVkX3dpbmRvd19zZXRfcG9saWN5KEdUS19TQ1JPTExFRF9XSU5ET1coc2Nyb2xsZWRfd2luZG93KSxcXG5AQCAtMjY3LDEyICsyNjIsMTEgQEAgdm9pZCBwZXJmX2d0a19fc2hvd19hbm5vdGF0aW9ucyh2b2lkKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbiBcXHR3aW5kb3cgPSBwZ2N0eC1cXHUwMDNlbWFpbl93aW5kb3c7XFxuLVxcdGd0a193aWRnZXRfc2hvd19hbGwod2luZG93KTtcXG4gXFxuIFxcdHBlcmZfZ3RrX19yZXNpemVfd2luZG93KHdpbmRvdyk7XFxuLVxcdGd0a193aW5kb3dfc2V0X3Bvc2l0aW9uKEdUS19XSU5ET1cod2luZG93KSwgR1RLX1dJTl9QT1NfQ0VOVEVSKTtcXG4rXFx0Z3RrX3dpZGdldF9zZXRfdmlzaWJsZSh3aW5kb3csIFRSVUUpO1xcbiBcXG4tXFx0Z3RrX21haW4oKTtcXG4rXFx0cGVyZl9ndGtfX3J1bl9tYWluX2xvb3Aod2luZG93KTtcXG4gXFxuIFxcdHBlcmZfZ3RrX19kZWFjdGl2YXRlX2NvbnRleHQoXFx1MDAyNnBnY3R4KTtcXG4gfVxcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL2d0ay9icm93c2VyLmMgYi90b29scy9wZXJmL3VpL2d0ay9icm93c2VyLmNcXG5pbmRleCBkMmRhZGYzODczZmJkLi45OGYxZDZiZmNiMjQ2IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2Jyb3dzZXIuY1xcbisrKyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2Jyb3dzZXIuY1xcbkBAIC01LDMyICs1LDkyIEBAXFxuICNpbmNsdWRlIFxcXCIuLi9oaXN0LmhcXFwiXFxuICNpbmNsdWRlIFxcXCIuLi9oZWxwbGluZS5oXFxcIlxcbiBcXG4rI2luY2x1ZGUgXFx1MDAzY2dsaWItdW5peC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjc2lnbmFsLmhcXHUwMDNlXFxuIFxcbi12b2lkIHBlcmZfZ3RrX19zaWduYWwoaW50IHNpZylcXG4rLypcXG4rICogU0lHSU5UL1NJR1FVSVQvU0lHVEVSTSBhcmUgYXN5bmNocm9ub3VzOiBkZWZlcnJpbmcgdGhlIGFjdHVhbCBleGl0IHRvIGFcXG4rICogR0xpYiBzb3VyY2UgZGlzcGF0Y2hlZCBmcm9tIHRoZSBtYWluIGxvb3AgbWVhbnMgaXQgYWx3YXlzIHJ1bnMgb24gdGhlXFxuKyAqIG1haW4gdGhyZWFkLCBzZXJpYWxpemVkIHdpdGggZXZlcnl0aGluZyBlbHNlIHRoZSBtYWluIGxvb3AgZG9lc1xcbisgKiAoaW5jbHVkaW5nIHBlcmZfZ3RrX19lcnJvcigpJ3MgdXBkYXRlcyB0byBwZXJmX2d0a19fZXJyb3JfbG9vcHMpLCBpbnN0ZWFkXFxuKyAqIG9mIHJhY2luZyB0aGVtIGZyb20gYXJiaXRyYXJ5IHNpZ25hbC1oYW5kbGVyIGNvbnRleHQuXFxuKyAqL1xcbitzdGF0aWMgZ2Jvb2xlYW4gcGVyZl9ndGtfX3F1aXRfc2lnbmFsKGdwb2ludGVyIGRhdGEgX19tYXliZV91bnVzZWQpXFxuIHtcXG4gXFx0cGVyZl9ndGtfX2V4aXQoZmFsc2UpO1xcbitcXHRyZXR1cm4gR19TT1VSQ0VfUkVNT1ZFO1xcbit9XFxuK1xcbit2b2lkIHBlcmZfZ3RrX19pbnN0YWxsX3F1aXRfc2lnbmFscyh2b2lkKVxcbit7XFxuK1xcdGdfdW5peF9zaWduYWxfYWRkKFNJR0lOVCwgIHBlcmZfZ3RrX19xdWl0X3NpZ25hbCwgTlVMTCk7XFxuK1xcdGdfdW5peF9zaWduYWxfYWRkKFNJR1FVSVQsIHBlcmZfZ3RrX19xdWl0X3NpZ25hbCwgTlVMTCk7XFxuK1xcdGdfdW5peF9zaWduYWxfYWRkKFNJR1RFUk0sIHBlcmZfZ3RrX19xdWl0X3NpZ25hbCwgTlVMTCk7XFxuK31cXG4rXFxuKy8qXFxuKyAqIFNJR1NFR1YvU0lHRlBFIGFyZSBzeW5jaHJvbm91cyBmYXVsdHM6IHRoZXJlJ3Mgbm8gXFxcImxhdGVyXFxcIiB0byBkZWZlciB0byxcXG4rICogYW5kIG5vIHNhZmUgd2F5IHRvIHJ1biBHVEsvR0xpYiBjb2RlIChvciBhbnl0aGluZyBlbHNlIG5vbi1hc3luYy1zaWduYWwtXFxuKyAqIHNhZmUpIGZyb20gdGhlIGZhdWx0aW5nIGNvbnRleHQuIFJlcG9ydCBhbmQgbGV0IHRoZSBkZWZhdWx0IGRpc3Bvc2l0aW9uXFxuKyAqIChjb3JlIGR1bXApIGhhcHBlbiBpbnN0ZWFkIG9mIHRyeWluZyB0byB0ZWFyIGRvd24gR1RLIHN0YXRlIGhlcmUuXFxuKyAqL1xcbit2b2lkIHBlcmZfZ3RrX19mYXRhbF9zaWduYWwoaW50IHNpZylcXG4re1xcbiBcXHRwc2lnbmFsKHNpZywgXFxcInBlcmZcXFwiKTtcXG4rXFx0c2lnbmFsKHNpZywgU0lHX0RGTCk7XFxuK1xcdHJhaXNlKHNpZyk7XFxuIH1cXG4gXFxuIHZvaWQgcGVyZl9ndGtfX3Jlc2l6ZV93aW5kb3coR3RrV2lkZ2V0ICp3aW5kb3cpXFxuIHtcXG4gXFx0R2RrUmVjdGFuZ2xlIHJlY3Q7XFxuLVxcdEdka1NjcmVlbiAqc2NyZWVuO1xcbi1cXHRpbnQgbW9uaXRvcjtcXG4rXFx0R2RrTW9uaXRvciAqbW9uaXRvcjtcXG4rXFx0R2RrRGlzcGxheSAqZGlzcGxheTtcXG4rXFx0R0xpc3RNb2RlbCAqbW9uaXRvcnM7XFxuIFxcdGludCBoZWlnaHQ7XFxuIFxcdGludCB3aWR0aDtcXG4gXFxuLVxcdHNjcmVlbiA9IGd0a193aWRnZXRfZ2V0X3NjcmVlbih3aW5kb3cpO1xcbitcXHRkaXNwbGF5ID0gZ3RrX3dpZGdldF9nZXRfZGlzcGxheSh3aW5kb3cpO1xcbitcXHRtb25pdG9ycyA9IGdka19kaXNwbGF5X2dldF9tb25pdG9ycyhkaXNwbGF5KTtcXG4rXFx0bW9uaXRvciA9IGdfbGlzdF9tb2RlbF9nZXRfaXRlbShtb25pdG9ycywgMCk7XFxuK1xcdGlmICghbW9uaXRvcikge1xcbitcXHRcXHRndGtfd2luZG93X3NldF9kZWZhdWx0X3NpemUoR1RLX1dJTkRPVyh3aW5kb3cpLCA4MDAsIDYwMCk7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbiBcXG4tXFx0bW9uaXRvciA9IGdka19zY3JlZW5fZ2V0X21vbml0b3JfYXRfd2luZG93KHNjcmVlbiwgd2luZG93LVxcdTAwM2V3aW5kb3cpO1xcbi1cXG4tXFx0Z2RrX3NjcmVlbl9nZXRfbW9uaXRvcl9nZW9tZXRyeShzY3JlZW4sIG1vbml0b3IsIFxcdTAwMjZyZWN0KTtcXG4rXFx0Z2RrX21vbml0b3JfZ2V0X2dlb21ldHJ5KG1vbml0b3IsIFxcdTAwMjZyZWN0KTtcXG4rXFx0Z19vYmplY3RfdW5yZWYobW9uaXRvcik7XFxuIFxcbiBcXHR3aWR0aFxcdD0gcmVjdC53aWR0aCAqIDMgLyA0O1xcbiBcXHRoZWlnaHRcXHQ9IHJlY3QuaGVpZ2h0ICogMyAvIDQ7XFxuIFxcbi1cXHRndGtfd2luZG93X3Jlc2l6ZShHVEtfV0lORE9XKHdpbmRvdyksIHdpZHRoLCBoZWlnaHQpO1xcbitcXHRndGtfd2luZG93X3NldF9kZWZhdWx0X3NpemUoR1RLX1dJTkRPVyh3aW5kb3cpLCB3aWR0aCwgaGVpZ2h0KTtcXG4rfVxcbitcXG4rc3RhdGljIEdNYWluTG9vcCAqcGVyZl9ndGtfX21haW5fbG9vcDtcXG4rXFxuK3ZvaWQgcGVyZl9ndGtfX3F1aXRfbWFpbl9sb29wKHZvaWQpXFxuK3tcXG4rXFx0aWYgKHBlcmZfZ3RrX19tYWluX2xvb3ApXFxuK1xcdFxcdGdfbWFpbl9sb29wX3F1aXQocGVyZl9ndGtfX21haW5fbG9vcCk7XFxuK31cXG4rXFxuK3N0YXRpYyBnYm9vbGVhbiBwZXJmX2d0a19fY2xvc2VfcmVxdWVzdChHdGtXaWRnZXQgKndpZGdldCBfX21heWJlX3VudXNlZCxcXG4rXFx0XFx0XFx0XFx0XFx0Z3BvaW50ZXIgZGF0YSBfX21heWJlX3VudXNlZClcXG4re1xcbitcXHRwZXJmX2d0a19fcXVpdF9tYWluX2xvb3AoKTtcXG4rXFxuK1xcdHJldHVybiBGQUxTRTtcXG4rfVxcbitcXG4rdm9pZCBwZXJmX2d0a19fcnVuX21haW5fbG9vcChHdGtXaWRnZXQgKndpbmRvdylcXG4re1xcbitcXHRnX3NpZ25hbF9jb25uZWN0KHdpbmRvdywgXFxcImNsb3NlLXJlcXVlc3RcXFwiLFxcbitcXHRcXHRcXHQgR19DQUxMQkFDSyhwZXJmX2d0a19fY2xvc2VfcmVxdWVzdCksIE5VTEwpO1xcbitcXG4rXFx0cGVyZl9ndGtfX21haW5fbG9vcCA9IGdfbWFpbl9sb29wX25ldyhOVUxMLCBGQUxTRSk7XFxuK1xcdGdfbWFpbl9sb29wX3J1bihwZXJmX2d0a19fbWFpbl9sb29wKTtcXG4rXFx0Z19jbGVhcl9wb2ludGVyKFxcdTAwMjZwZXJmX2d0a19fbWFpbl9sb29wLCBnX21haW5fbG9vcF91bnJlZik7XFxuIH1cXG4gXFxuIGNvbnN0IGNoYXIgKnBlcmZfZ3RrX19nZXRfcGVyY2VudF9jb2xvcihkb3VibGUgcGVyY2VudClcXG5AQCAtNDIsMzMgKzEwMiwzNSBAQCBjb25zdCBjaGFyICpwZXJmX2d0a19fZ2V0X3BlcmNlbnRfY29sb3IoZG91YmxlIHBlcmNlbnQpXFxuIFxcdHJldHVybiBOVUxMO1xcbiB9XFxuIFxcbi0jaWZkZWYgSEFWRV9HVEtfSU5GT19CQVJfU1VQUE9SVFxcbitzdGF0aWMgdm9pZCBwZXJmX2d0a19faGlkZV93aWRnZXQoR3RrV2lkZ2V0ICp3aWRnZXQsIGdpbnQgcmVzcG9uc2VfaWQgX19tYXliZV91bnVzZWQsXFxuK1xcdFxcdFxcdFxcdCAgIGdwb2ludGVyIGRhdGEgX19tYXliZV91bnVzZWQpXFxuK3tcXG4rXFx0Z3RrX3dpZGdldF9zZXRfdmlzaWJsZSh3aWRnZXQsIEZBTFNFKTtcXG4rfVxcbitcXG4gR3RrV2lkZ2V0ICpwZXJmX2d0a19fc2V0dXBfaW5mb19iYXIodm9pZClcXG4ge1xcbiBcXHRHdGtXaWRnZXQgKmluZm9fYmFyO1xcbiBcXHRHdGtXaWRnZXQgKmxhYmVsO1xcbi1cXHRHdGtXaWRnZXQgKmNvbnRlbnRfYXJlYTtcXG4gXFxuIFxcdGluZm9fYmFyID0gZ3RrX2luZm9fYmFyX25ldygpO1xcbi1cXHRndGtfd2lkZ2V0X3NldF9ub19zaG93X2FsbChpbmZvX2JhciwgVFJVRSk7XFxuK1xcdGd0a193aWRnZXRfc2V0X3Zpc2libGUoaW5mb19iYXIsIEZBTFNFKTtcXG4gXFxuIFxcdGxhYmVsID0gZ3RrX2xhYmVsX25ldyhcXFwiXFxcIik7XFxuLVxcdGd0a193aWRnZXRfc2hvdyhsYWJlbCk7XFxuK1xcdGd0a193aWRnZXRfc2V0X3Zpc2libGUobGFiZWwsIFRSVUUpO1xcbiBcXG4tXFx0Y29udGVudF9hcmVhID0gZ3RrX2luZm9fYmFyX2dldF9jb250ZW50X2FyZWEoR1RLX0lORk9fQkFSKGluZm9fYmFyKSk7XFxuLVxcdGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIoY29udGVudF9hcmVhKSwgbGFiZWwpO1xcbitcXHRndGtfaW5mb19iYXJfYWRkX2NoaWxkKEdUS19JTkZPX0JBUihpbmZvX2JhciksIGxhYmVsKTtcXG4gXFxuLVxcdGd0a19pbmZvX2Jhcl9hZGRfYnV0dG9uKEdUS19JTkZPX0JBUihpbmZvX2JhciksIEdUS19TVE9DS19PSyxcXG4rXFx0Z3RrX2luZm9fYmFyX2FkZF9idXR0b24oR1RLX0lORk9fQkFSKGluZm9fYmFyKSwgXFxcIl9PS1xcXCIsXFxuIFxcdFxcdFxcdFxcdEdUS19SRVNQT05TRV9PSyk7XFxuIFxcdGdfc2lnbmFsX2Nvbm5lY3QoaW5mb19iYXIsIFxcXCJyZXNwb25zZVxcXCIsXFxuLVxcdFxcdFxcdCBHX0NBTExCQUNLKGd0a193aWRnZXRfaGlkZSksIE5VTEwpO1xcbitcXHRcXHRcXHQgR19DQUxMQkFDSyhwZXJmX2d0a19faGlkZV93aWRnZXQpLCBOVUxMKTtcXG4gXFxuIFxcdHBnY3R4LVxcdTAwM2VpbmZvX2JhciA9IGluZm9fYmFyO1xcbiBcXHRwZ2N0eC1cXHUwMDNlbWVzc2FnZV9sYWJlbCA9IGxhYmVsO1xcbiBcXG4gXFx0cmV0dXJuIGluZm9fYmFyO1xcbiB9XFxuLSNlbmRpZlxcbiBcXG4gR3RrV2lkZ2V0ICpwZXJmX2d0a19fc2V0dXBfc3RhdHVzYmFyKHZvaWQpXFxuIHtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91aS9ndGsvZ3RrLmggYi90b29scy9wZXJmL3VpL2d0ay9ndGsuaFxcbmluZGV4IGEyYjQ5N2YwM2ZkNmUuLjZiMzdmZDk5NDNjOWQgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvZ3RrLmhcXG4rKysgYi90b29scy9wZXJmL3VpL2d0ay9ndGsuaFxcbkBAIC0xMywxMCArMTMsOCBAQCBzdHJ1Y3QgcGVyZl9ndGtfY29udGV4dCB7XFxuIFxcdEd0a1dpZGdldCAqbWFpbl93aW5kb3c7XFxuIFxcdEd0a1dpZGdldCAqbm90ZWJvb2s7XFxuIFxcbi0jaWZkZWYgSEFWRV9HVEtfSU5GT19CQVJfU1VQUE9SVFxcbiBcXHRHdGtXaWRnZXQgKmluZm9fYmFyO1xcbiBcXHRHdGtXaWRnZXQgKm1lc3NhZ2VfbGFiZWw7XFxuLSNlbmRpZlxcbiBcXHRHdGtXaWRnZXQgKnN0YXRiYXI7XFxuIFxcdGd1aW50IHN0YXRiYXJfY3R4X2lkO1xcbiB9O1xcbkBAIC0zOCwxOSArMzYsMTUgQEAgdm9pZCBwZXJmX2d0a19faW5pdF9oZWxwbGluZSh2b2lkKTtcXG4gdm9pZCBndGtfdWlfcHJvZ3Jlc3NfX2luaXQodm9pZCk7XFxuIHZvaWQgcGVyZl9ndGtfX2luaXRfaHBwKHZvaWQpO1xcbiBcXG4tdm9pZCBwZXJmX2d0a19fc2lnbmFsKGludCBzaWcpO1xcbit2b2lkIHBlcmZfZ3RrX19pbnN0YWxsX3F1aXRfc2lnbmFscyh2b2lkKTtcXG4rdm9pZCBwZXJmX2d0a19fZmF0YWxfc2lnbmFsKGludCBzaWcpO1xcbiB2b2lkIHBlcmZfZ3RrX19yZXNpemVfd2luZG93KEd0a1dpZGdldCAqd2luZG93KTtcXG4rdm9pZCBwZXJmX2d0a19fcnVuX21haW5fbG9vcChHdGtXaWRnZXQgKndpbmRvdyk7XFxuK3ZvaWQgcGVyZl9ndGtfX3F1aXRfbWFpbl9sb29wKHZvaWQpO1xcbit2b2lkIHBlcmZfZ3RrX19xdWl0X2Vycm9yX2RpYWxvZyh2b2lkKTtcXG4gY29uc3QgY2hhciAqcGVyZl9ndGtfX2dldF9wZXJjZW50X2NvbG9yKGRvdWJsZSBwZXJjZW50KTtcXG4gR3RrV2lkZ2V0ICpwZXJmX2d0a19fc2V0dXBfc3RhdHVzYmFyKHZvaWQpO1xcbi1cXG4tI2lmZGVmIEhBVkVfR1RLX0lORk9fQkFSX1NVUFBPUlRcXG4gR3RrV2lkZ2V0ICpwZXJmX2d0a19fc2V0dXBfaW5mb19iYXIodm9pZCk7XFxuLSNlbHNlXFxuLXN0YXRpYyBpbmxpbmUgR3RrV2lkZ2V0ICpwZXJmX2d0a19fc2V0dXBfaW5mb19iYXIodm9pZClcXG4te1xcbi1cXHRyZXR1cm4gTlVMTDtcXG4tfVxcbi0jZW5kaWZcXG4gXFxuIHN0cnVjdCBldnNlbDtcXG4gc3RydWN0IGV2bGlzdDtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91aS9ndGsvaGlzdHMuYyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2hpc3RzLmNcXG5pbmRleCBiYWUyMWYzMzZhZTZkLi43MTZkY2YwMmJkMGU4IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2hpc3RzLmNcXG4rKysgYi90b29scy9wZXJmL3VpL2d0ay9oaXN0cy5jXFxuQEAgLTgsNiArOCw4IEBAXFxuICNpbmNsdWRlIFxcXCIuLi9oZWxwbGluZS5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiLi4vc3RyaW5nMi5oXFxcIlxcbiAjaW5jbHVkZSBcXHUwMDNjc2lnbmFsLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NzdGRhcmcuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY3N0ZGlvLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NzdGRsaWIuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3N0cmluZy5oXFx1MDAzZVxcbiBcXG5AQCAtMzk1LDExICszOTcsOSBAQCBzdGF0aWMgdm9pZCBwZXJmX2d0a19fc2hvd19oaXN0cyhHdGtXaWRnZXQgKndpbmRvdywgc3RydWN0IGhpc3RzICpoaXN0cyxcXG4gXFx0XFx0fVxcbiBcXHR9XFxuIFxcbi1cXHRndGtfdHJlZV92aWV3X3NldF9ydWxlc19oaW50KEdUS19UUkVFX1ZJRVcodmlldyksIFRSVUUpO1xcbi1cXG4gXFx0Z19zaWduYWxfY29ubmVjdCh2aWV3LCBcXFwicm93LWFjdGl2YXRlZFxcXCIsXFxuIFxcdFxcdFxcdCBHX0NBTExCQUNLKG9uX3Jvd19hY3RpdmF0ZWQpLCBOVUxMKTtcXG4tXFx0Z3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUih3aW5kb3cpLCB2aWV3KTtcXG4rXFx0Z3RrX3Njcm9sbGVkX3dpbmRvd19zZXRfY2hpbGQoR1RLX1NDUk9MTEVEX1dJTkRPVyh3aW5kb3cpLCB2aWV3KTtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgcGVyZl9ndGtfX2FkZF9oaWVyYXJjaHlfZW50cmllcyhzdHJ1Y3QgaGlzdHMgKmhpc3RzLFxcbkBAIC01ODMsMTEgKzU4Myw5IEBAIHN0YXRpYyB2b2lkIHBlcmZfZ3RrX19zaG93X2hpZXJhcmNoeShHdGtXaWRnZXQgKndpbmRvdywgc3RydWN0IGhpc3RzICpoaXN0cyxcXG4gXFx0cGVyZl9ndGtfX2FkZF9oaWVyYXJjaHlfZW50cmllcyhoaXN0cywgXFx1MDAyNmhpc3RzLVxcdTAwM2VlbnRyaWVzLCBzdG9yZSxcXG4gXFx0XFx0XFx0XFx0XFx0TlVMTCwgXFx1MDAyNmhwcCwgbWluX3BjbnQpO1xcbiBcXG4tXFx0Z3RrX3RyZWVfdmlld19zZXRfcnVsZXNfaGludChHVEtfVFJFRV9WSUVXKHZpZXcpLCBUUlVFKTtcXG4tXFxuIFxcdGdfc2lnbmFsX2Nvbm5lY3QodmlldywgXFxcInJvdy1hY3RpdmF0ZWRcXFwiLFxcbiBcXHRcXHRcXHQgR19DQUxMQkFDSyhvbl9yb3dfYWN0aXZhdGVkKSwgTlVMTCk7XFxuLVxcdGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIod2luZG93KSwgdmlldyk7XFxuK1xcdGd0a19zY3JvbGxlZF93aW5kb3dfc2V0X2NoaWxkKEdUS19TQ1JPTExFRF9XSU5ET1cod2luZG93KSwgdmlldyk7XFxuIH1cXG4gXFxuIGludCBldmxpc3RfX2d0a19icm93c2VfaGlzdHMoc3RydWN0IGV2bGlzdCAqZXZsaXN0LCBjb25zdCBjaGFyICpoZWxwLFxcbkBAIC02MDAsMzYgKzU5OCwzMiBAQCBpbnQgZXZsaXN0X19ndGtfYnJvd3NlX2hpc3RzKHN0cnVjdCBldmxpc3QgKmV2bGlzdCwgY29uc3QgY2hhciAqaGVscCxcXG4gXFx0R3RrV2lkZ2V0ICpzdGF0YmFyO1xcbiBcXHRHdGtXaWRnZXQgKndpbmRvdztcXG4gXFxuLVxcdHNpZ25hbChTSUdTRUdWLCBwZXJmX2d0a19fc2lnbmFsKTtcXG4tXFx0c2lnbmFsKFNJR0ZQRSwgIHBlcmZfZ3RrX19zaWduYWwpO1xcbi1cXHRzaWduYWwoU0lHSU5ULCAgcGVyZl9ndGtfX3NpZ25hbCk7XFxuLVxcdHNpZ25hbChTSUdRVUlULCBwZXJmX2d0a19fc2lnbmFsKTtcXG4tXFx0c2lnbmFsKFNJR1RFUk0sIHBlcmZfZ3RrX19zaWduYWwpO1xcbitcXHRzaWduYWwoU0lHU0VHViwgcGVyZl9ndGtfX2ZhdGFsX3NpZ25hbCk7XFxuK1xcdHNpZ25hbChTSUdGUEUsICBwZXJmX2d0a19fZmF0YWxfc2lnbmFsKTtcXG4rXFx0cGVyZl9ndGtfX2luc3RhbGxfcXVpdF9zaWduYWxzKCk7XFxuIFxcbi1cXHR3aW5kb3cgPSBndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1RPUExFVkVMKTtcXG4rXFx0d2luZG93ID0gZ3RrX3dpbmRvd19uZXcoKTtcXG4gXFxuIFxcdGd0a193aW5kb3dfc2V0X3RpdGxlKEdUS19XSU5ET1cod2luZG93KSwgXFxcInBlcmYgcmVwb3J0XFxcIik7XFxuIFxcbi1cXHRnX3NpZ25hbF9jb25uZWN0KHdpbmRvdywgXFxcImRlbGV0ZV9ldmVudFxcXCIsIGd0a19tYWluX3F1aXQsIE5VTEwpO1xcbi1cXG4gXFx0cGdjdHggPSBwZXJmX2d0a19fYWN0aXZhdGVfY29udGV4dCh3aW5kb3cpO1xcbiBcXHRpZiAoIXBnY3R4KVxcbiBcXHRcXHRyZXR1cm4gLTE7XFxuIFxcbi1cXHR2Ym94ID0gZ3RrX3Zib3hfbmV3KEZBTFNFLCAwKTtcXG4rXFx0dmJveCA9IGd0a19ib3hfbmV3KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgMCk7XFxuIFxcbiBcXHRub3RlYm9vayA9IGd0a19ub3RlYm9va19uZXcoKTtcXG4gXFxuLVxcdGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBub3RlYm9vaywgVFJVRSwgVFJVRSwgMCk7XFxuK1xcdGd0a193aWRnZXRfc2V0X3ZleHBhbmQobm90ZWJvb2ssIFRSVUUpO1xcbitcXHRndGtfYm94X2FwcGVuZChHVEtfQk9YKHZib3gpLCBub3RlYm9vayk7XFxuIFxcbiBcXHRpbmZvX2JhciA9IHBlcmZfZ3RrX19zZXR1cF9pbmZvX2JhcigpO1xcbi1cXHRpZiAoaW5mb19iYXIpXFxuLVxcdFxcdGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBpbmZvX2JhciwgRkFMU0UsIEZBTFNFLCAwKTtcXG4rXFx0Z3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgaW5mb19iYXIpO1xcbiBcXG4gXFx0c3RhdGJhciA9IHBlcmZfZ3RrX19zZXR1cF9zdGF0dXNiYXIoKTtcXG4tXFx0Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIHN0YXRiYXIsIEZBTFNFLCBGQUxTRSwgMCk7XFxuK1xcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIHN0YXRiYXIpO1xcbiBcXG4tXFx0Z3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUih3aW5kb3cpLCB2Ym94KTtcXG4rXFx0Z3RrX3dpbmRvd19zZXRfY2hpbGQoR1RLX1dJTkRPVyh3aW5kb3cpLCB2Ym94KTtcXG4gXFxuIFxcdGV2bGlzdF9fZm9yX2VhY2hfZW50cnkoZXZsaXN0LCBwb3MpIHtcXG4gXFx0XFx0c3RydWN0IGhpc3RzICpoaXN0cyA9IGV2c2VsX19oaXN0cyhwb3MpO1xcbkBAIC02NDksNyArNjQzLDcgQEAgaW50IGV2bGlzdF9fZ3RrX2Jyb3dzZV9oaXN0cyhzdHJ1Y3QgZXZsaXN0ICpldmxpc3QsIGNvbnN0IGNoYXIgKmhlbHAsXFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0fVxcbiBcXG4tXFx0XFx0c2Nyb2xsZWRfd2luZG93ID0gZ3RrX3Njcm9sbGVkX3dpbmRvd19uZXcoTlVMTCwgTlVMTCk7XFxuK1xcdFxcdHNjcm9sbGVkX3dpbmRvdyA9IGd0a19zY3JvbGxlZF93aW5kb3dfbmV3KCk7XFxuIFxcbiBcXHRcXHRndGtfc2Nyb2xsZWRfd2luZG93X3NldF9wb2xpY3koR1RLX1NDUk9MTEVEX1dJTkRPVyhzY3JvbGxlZF93aW5kb3cpLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHRHVEtfUE9MSUNZX0FVVE9NQVRJQyxcXG5AQCAtNjY1LDE1ICs2NTksMTIgQEAgaW50IGV2bGlzdF9fZ3RrX2Jyb3dzZV9oaXN0cyhzdHJ1Y3QgZXZsaXN0ICpldmxpc3QsIGNvbnN0IGNoYXIgKmhlbHAsXFxuIFxcdFxcdGd0a19ub3RlYm9va19hcHBlbmRfcGFnZShHVEtfTk9URUJPT0sobm90ZWJvb2spLCBzY3JvbGxlZF93aW5kb3csIHRhYl9sYWJlbCk7XFxuIFxcdH1cXG4gXFxuLVxcdGd0a193aWRnZXRfc2hvd19hbGwod2luZG93KTtcXG4tXFxuIFxcdHBlcmZfZ3RrX19yZXNpemVfd2luZG93KHdpbmRvdyk7XFxuLVxcbi1cXHRndGtfd2luZG93X3NldF9wb3NpdGlvbihHVEtfV0lORE9XKHdpbmRvdyksIEdUS19XSU5fUE9TX0NFTlRFUik7XFxuK1xcdGd0a193aWRnZXRfc2V0X3Zpc2libGUod2luZG93LCBUUlVFKTtcXG4gXFxuIFxcdHVpX2hlbHBsaW5lX19wdXNoKGhlbHApO1xcbiBcXG4tXFx0Z3RrX21haW4oKTtcXG4rXFx0cGVyZl9ndGtfX3J1bl9tYWluX2xvb3Aod2luZG93KTtcXG4gXFxuIFxcdHBlcmZfZ3RrX19kZWFjdGl2YXRlX2NvbnRleHQoXFx1MDAyNnBnY3R4KTtcXG4gXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3Byb2dyZXNzLmMgYi90b29scy9wZXJmL3VpL2d0ay9wcm9ncmVzcy5jXFxuaW5kZXggZWVhNmZjZGU1MThhOC4uNzcwZjkyNTFiNTRiNyAxMDA2NDRcXG4tLS0gYS90b29scy9wZXJmL3VpL2d0ay9wcm9ncmVzcy5jXFxuKysrIGIvdG9vbHMvcGVyZi91aS9ndGsvcHJvZ3Jlc3MuY1xcbkBAIC0xLDQ5ICsxLDY1IEBAXFxuIC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICNpbmNsdWRlIFxcdTAwM2NpbnR0eXBlcy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjc3RkaW8uaFxcdTAwM2VcXG4gXFxuICNpbmNsdWRlIFxcXCJndGsuaFxcXCJcXG4gI2luY2x1ZGUgXFxcIi4uL3Byb2dyZXNzLmhcXFwiXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9jb21waWxlci5oXFx1MDAzZVxcbiBcXG4gc3RhdGljIEd0a1dpZGdldCAqZGlhbG9nO1xcbiBzdGF0aWMgR3RrV2lkZ2V0ICpwcm9ncmVzcztcXG4gXFxuK3N0YXRpYyB2b2lkIGd0a191aV9wcm9ncmVzc19fZGVzdHJveWVkKEd0a1dpZGdldCAqd2lkZ2V0IF9fbWF5YmVfdW51c2VkLFxcbitcXHRcXHRcXHRcXHRcXHRncG9pbnRlciBkYXRhIF9fbWF5YmVfdW51c2VkKVxcbit7XFxuK1xcdGRpYWxvZyA9IE5VTEw7XFxuK1xcdHByb2dyZXNzID0gTlVMTDtcXG4rfVxcbitcXG4gc3RhdGljIHZvaWQgZ3RrX3VpX3Byb2dyZXNzX191cGRhdGUoc3RydWN0IHVpX3Byb2dyZXNzICpwKVxcbiB7XFxuIFxcdGRvdWJsZSBmcmFjdGlvbiA9IHAtXFx1MDAzZXRvdGFsID8gMS4wICogcC1cXHUwMDNlY3VyciAvIHAtXFx1MDAzZXRvdGFsIDogMC4wO1xcbiBcXHRjaGFyIGJ1ZlsxMDI0XTtcXG4gXFxuIFxcdGlmIChkaWFsb2cgPT0gTlVMTCkge1xcbi1cXHRcXHRHdGtXaWRnZXQgKnZib3ggPSBndGtfdmJveF9uZXcoVFJVRSwgNSk7XFxuK1xcdFxcdEd0a1dpZGdldCAqdmJveCA9IGd0a19ib3hfbmV3KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgNSk7XFxuIFxcdFxcdEd0a1dpZGdldCAqbGFiZWwgPSBndGtfbGFiZWxfbmV3KHAtXFx1MDAzZXRpdGxlKTtcXG4gXFxuLVxcdFxcdGRpYWxvZyA9IGd0a193aW5kb3dfbmV3KEdUS19XSU5ET1dfVE9QTEVWRUwpO1xcbitcXHRcXHRkaWFsb2cgPSBndGtfd2luZG93X25ldygpO1xcbiBcXHRcXHRwcm9ncmVzcyA9IGd0a19wcm9ncmVzc19iYXJfbmV3KCk7XFxuIFxcbi1cXHRcXHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgbGFiZWwsIFRSVUUsIEZBTFNFLCAzKTtcXG4tXFx0XFx0Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIHByb2dyZXNzLCBUUlVFLCBUUlVFLCAzKTtcXG4rXFx0XFx0Z3RrX3dpZGdldF9zZXRfdmV4cGFuZChsYWJlbCwgVFJVRSk7XFxuK1xcdFxcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIGxhYmVsKTtcXG4rXFx0XFx0Z3RrX3dpZGdldF9zZXRfdmV4cGFuZChwcm9ncmVzcywgVFJVRSk7XFxuK1xcdFxcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIHByb2dyZXNzKTtcXG4rXFxuK1xcdFxcdGd0a193aW5kb3dfc2V0X2NoaWxkKEdUS19XSU5ET1coZGlhbG9nKSwgdmJveCk7XFxuIFxcbi1cXHRcXHRndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKGRpYWxvZyksIHZib3gpO1xcbitcXHRcXHRnX3NpZ25hbF9jb25uZWN0KGRpYWxvZywgXFxcImRlc3Ryb3lcXFwiLFxcbitcXHRcXHRcXHRcXHQgR19DQUxMQkFDSyhndGtfdWlfcHJvZ3Jlc3NfX2Rlc3Ryb3llZCksIE5VTEwpO1xcbiBcXG4gXFx0XFx0Z3RrX3dpbmRvd19zZXRfdGl0bGUoR1RLX1dJTkRPVyhkaWFsb2cpLCBcXFwicGVyZlxcXCIpO1xcbi1cXHRcXHRndGtfd2luZG93X3Jlc2l6ZShHVEtfV0lORE9XKGRpYWxvZyksIDMwMCwgODApO1xcbi1cXHRcXHRndGtfd2luZG93X3NldF9wb3NpdGlvbihHVEtfV0lORE9XKGRpYWxvZyksIEdUS19XSU5fUE9TX0NFTlRFUik7XFxuK1xcdFxcdGd0a193aW5kb3dfc2V0X2RlZmF1bHRfc2l6ZShHVEtfV0lORE9XKGRpYWxvZyksIDMwMCwgODApO1xcbiBcXG4tXFx0XFx0Z3RrX3dpZGdldF9zaG93X2FsbChkaWFsb2cpO1xcbitcXHRcXHRndGtfd2lkZ2V0X3NldF92aXNpYmxlKGRpYWxvZywgVFJVRSk7XFxuIFxcdH1cXG4gXFxuIFxcdGd0a19wcm9ncmVzc19iYXJfc2V0X2ZyYWN0aW9uKEdUS19QUk9HUkVTU19CQVIocHJvZ3Jlc3MpLCBmcmFjdGlvbik7XFxuIFxcdHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksIFxcXCIlXFxcIlBSSXU2NFxcXCIgLyAlXFxcIlBSSXU2NCwgcC1cXHUwMDNlY3VyciwgcC1cXHUwMDNldG90YWwpO1xcbiBcXHRndGtfcHJvZ3Jlc3NfYmFyX3NldF90ZXh0KEdUS19QUk9HUkVTU19CQVIocHJvZ3Jlc3MpLCBidWYpO1xcbiBcXG4tXFx0Lyogd2UgZGlkbid0IGNhbGwgZ3RrX21haW4geWV0LCBzbyBkbyBpdCBtYW51YWxseSAqL1xcbi1cXHR3aGlsZSAoZ3RrX2V2ZW50c19wZW5kaW5nKCkpXFxuLVxcdFxcdGd0a19tYWluX2l0ZXJhdGlvbigpO1xcbitcXHQvKiB3ZSBkaWRuJ3Qgc3RhcnQgYSBtYWluIGxvb3AgeWV0LCBzbyBwdW1wIGV2ZW50cyBtYW51YWxseSAqL1xcbitcXHR3aGlsZSAoZ19tYWluX2NvbnRleHRfcGVuZGluZyhOVUxMKSlcXG4rXFx0XFx0Z19tYWluX2NvbnRleHRfaXRlcmF0aW9uKE5VTEwsIEZBTFNFKTtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgZ3RrX3VpX3Byb2dyZXNzX19maW5pc2godm9pZClcXG4ge1xcbitcXHRpZiAoZGlhbG9nID09IE5VTEwpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuIFxcdC8qIHRoaXMgd2lsbCBhbHNvIGRlc3Ryb3kgYWxsIG9mIGl0cyBjaGlsZHJlbiAqL1xcbi1cXHRndGtfd2lkZ2V0X2Rlc3Ryb3koZGlhbG9nKTtcXG4rXFx0Z3RrX3dpbmRvd19kZXN0cm95KEdUS19XSU5ET1coZGlhbG9nKSk7XFxuIFxcbiBcXHRkaWFsb2cgPSBOVUxMO1xcbiB9XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3NldHVwLmMgYi90b29scy9wZXJmL3VpL2d0ay9zZXR1cC5jXFxuaW5kZXggZjVlZWU0ZDY2ODczOC4uOWI0NGYzNzE5NzQ3NyAxMDA2NDRcXG4tLS0gYS90b29scy9wZXJmL3VpL2d0ay9zZXR1cC5jXFxuKysrIGIvdG9vbHMvcGVyZi91aS9ndGsvc2V0dXAuY1xcbkBAIC0xMiw3ICsxMiw3IEBAIGludCBwZXJmX2d0a19faW5pdCh2b2lkKVxcbiBcXHRndGtfdWlfcHJvZ3Jlc3NfX2luaXQoKTtcXG4gXFx0cGVyZl9ndGtfX2luaXRfaHBwKCk7XFxuIFxcbi1cXHRyZXR1cm4gZ3RrX2luaXRfY2hlY2soTlVMTCwgTlVMTCkgPyAwIDogLTE7XFxuK1xcdHJldHVybiBndGtfaW5pdF9jaGVjaygpID8gMCA6IC0xO1xcbiB9XFxuIFxcbiB2b2lkIHBlcmZfZ3RrX19leGl0KGJvb2wgd2FpdF9mb3Jfb2sgX19tYXliZV91bnVzZWQpXFxuQEAgLTIwLDUgKzIwLDYgQEAgdm9pZCBwZXJmX2d0a19fZXhpdChib29sIHdhaXRfZm9yX29rIF9fbWF5YmVfdW51c2VkKVxcbiBcXHRpZiAoIXBlcmZfZ3RrX19pc19hY3RpdmVfY29udGV4dChwZ2N0eCkpXFxuIFxcdFxcdHJldHVybjtcXG4gXFx0cGVyZl9lcnJvcl9fdW5yZWdpc3RlcihcXHUwMDI2cGVyZl9ndGtfZW9wcyk7XFxuLVxcdGd0a19tYWluX3F1aXQoKTtcXG4rXFx0cGVyZl9ndGtfX3F1aXRfZXJyb3JfZGlhbG9nKCk7XFxuK1xcdHBlcmZfZ3RrX19xdWl0X21haW5fbG9vcCgpO1xcbiB9XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3V0aWwuYyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL3V0aWwuY1xcbmluZGV4IGM0N2Y1YzM4NzgzOGMuLjU4MjNmZjBkN2MyYTcgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvdXRpbC5jXFxuKysrIGIvdG9vbHMvcGVyZi91aS9ndGsvdXRpbC5jXFxuQEAgLTIsOCArMiwxMCBAQFxcbiAjaW5jbHVkZSBcXFwiLi4vdXRpbC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiZ3RrLmhcXFwiXFxuIFxcbisjaW5jbHVkZSBcXHUwMDNjc3RkYXJnLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NzdGRpby5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjc3RkbGliLmhcXHUwMDNlXFxuLSNpbmNsdWRlIFxcdTAwM2NzdHJpbmcuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NvbXBpbGVyLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC96YWxsb2MuaFxcdTAwM2VcXG4gXFxuIHN0cnVjdCBwZXJmX2d0a19jb250ZXh0ICpwZ2N0eDtcXG5AQCAtMjgsODYgKzMwLDEwMyBAQCBpbnQgcGVyZl9ndGtfX2RlYWN0aXZhdGVfY29udGV4dChzdHJ1Y3QgcGVyZl9ndGtfY29udGV4dCAqKmN0eClcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuKy8qXFxuKyAqIHBlcmZfZ3RrX19lcnJvcigpIGNhbiBiZSBjYWxsZWQgcmUtZW50cmFudGx5LCBzaW5jZSB0aGUgZGlhbG9nIGlzbid0XFxuKyAqIG1vZGFsIGFuZCBpdHMgbmVzdGVkIGxvb3Agc3RpbGwgcHVtcHMgZXZlbnRzIGZvciB0aGUgbWFpbiB3aW5kb3cuXFxuKyAqIFRyYWNrIGV2ZXJ5IGN1cnJlbnRseSBydW5uaW5nIGxvb3AgaW5zdGVhZCBvZiBhIHNpbmdsZSBwb2ludGVyLCBzbyBhXFxuKyAqIG5lc3RlZCBjYWxsIGNhbid0IGNsb2JiZXIgYW4gb3V0ZXIgY2FsbCdzIGxvb3AgYW5kIGxlYWsgaXQuXFxuKyAqL1xcbitzdGF0aWMgR1NMaXN0ICpwZXJmX2d0a19fZXJyb3JfbG9vcHM7XFxuK1xcbitzdGF0aWMgdm9pZCBwZXJmX2d0a19fcXVpdF9sb29wKGdwb2ludGVyIGRhdGEsIGdwb2ludGVyIHVzZXJfZGF0YSBfX21heWJlX3VudXNlZClcXG4re1xcbitcXHRnX21haW5fbG9vcF9xdWl0KGRhdGEpO1xcbit9XFxuK1xcbit2b2lkIHBlcmZfZ3RrX19xdWl0X2Vycm9yX2RpYWxvZyh2b2lkKVxcbit7XFxuK1xcdGdfc2xpc3RfZm9yZWFjaChwZXJmX2d0a19fZXJyb3JfbG9vcHMsIHBlcmZfZ3RrX19xdWl0X2xvb3AsIE5VTEwpO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBwZXJmX2d0a19fZGlhbG9nX3Jlc3BvbnNlKEd0a0RpYWxvZyAqZGlhbG9nLFxcbitcXHRcXHRcXHRcXHQgICAgICBnaW50IHJlc3BvbnNlX2lkIF9fbWF5YmVfdW51c2VkLFxcbitcXHRcXHRcXHRcXHQgICAgICBncG9pbnRlciBkYXRhIF9fbWF5YmVfdW51c2VkKVxcbit7XFxuK1xcdGd0a193aW5kb3dfZGVzdHJveShHVEtfV0lORE9XKGRpYWxvZykpO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IHBlcmZfZ3RrX19lcnJvcihjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncylcXG4ge1xcbiBcXHRjaGFyICptc2c7XFxuIFxcdEd0a1dpZGdldCAqZGlhbG9nO1xcbitcXHRHTWFpbkxvb3AgKmxvb3A7XFxuK1xcdHZhX2xpc3QgYXJnc19jb3B5O1xcbiBcXG4rXFx0dmFfY29weShhcmdzX2NvcHksIGFyZ3MpO1xcbiBcXHRpZiAoIXBlcmZfZ3RrX19pc19hY3RpdmVfY29udGV4dChwZ2N0eCkgfHxcXG4tXFx0ICAgIHZhc3ByaW50ZihcXHUwMDI2bXNnLCBmb3JtYXQsIGFyZ3MpIFxcdTAwM2MgMCkge1xcbitcXHQgICAgdmFzcHJpbnRmKFxcdTAwMjZtc2csIGZvcm1hdCwgYXJnc19jb3B5KSBcXHUwMDNjIDApIHtcXG4rXFx0XFx0dmFfZW5kKGFyZ3NfY29weSk7XFxuIFxcdFxcdGZwcmludGYoc3RkZXJyLCBcXFwiRXJyb3I6XFxcXG5cXFwiKTtcXG4gXFx0XFx0dmZwcmludGYoc3RkZXJyLCBmb3JtYXQsIGFyZ3MpO1xcbiBcXHRcXHRmcHJpbnRmKHN0ZGVyciwgXFxcIlxcXFxuXFxcIik7XFxuIFxcdFxcdHJldHVybiAtMTtcXG4gXFx0fVxcbitcXHR2YV9lbmQoYXJnc19jb3B5KTtcXG4gXFxuIFxcdGRpYWxvZyA9IGd0a19tZXNzYWdlX2RpYWxvZ19uZXdfd2l0aF9tYXJrdXAoR1RLX1dJTkRPVyhwZ2N0eC1cXHUwMDNlbWFpbl93aW5kb3cpLFxcbiBcXHRcXHRcXHRcXHRcXHRHVEtfRElBTE9HX0RFU1RST1lfV0lUSF9QQVJFTlQsXFxuIFxcdFxcdFxcdFxcdFxcdEdUS19NRVNTQUdFX0VSUk9SLFxcbiBcXHRcXHRcXHRcXHRcXHRHVEtfQlVUVE9OU19DTE9TRSxcXG4gXFx0XFx0XFx0XFx0XFx0XFxcIlxcdTAwM2NiXFx1MDAzZUVycm9yXFx1MDAzYy9iXFx1MDAzZVxcXFxuXFxcXG4lc1xcXCIsIG1zZyk7XFxuLVxcdGd0a19kaWFsb2dfcnVuKEdUS19ESUFMT0coZGlhbG9nKSk7XFxuIFxcbi1cXHRndGtfd2lkZ2V0X2Rlc3Ryb3koZGlhbG9nKTtcXG4rXFx0LypcXG4rXFx0ICogXFxcInJlc3BvbnNlXFxcIiBvbmx5IGZpcmVzIHdoZW4gYSBidXR0b24gaXMgY2xpY2tlZDsgREVTVFJPWV9XSVRIX1BBUkVOVFxcbitcXHQgKiBkZXN0cm95cyB0aGUgZGlhbG9nIGRpcmVjdGx5IHdpdGhvdXQgaXQuIFF1aXQgZnJvbSBcXFwiZGVzdHJveVxcXCJcXG4rXFx0ICogaW5zdGVhZCwgd2hpY2ggZmlyZXMgZWl0aGVyIHdheSwgc28gdGhlIG5lc3RlZCBsb29wIGJlbG93IGNhbid0XFxuK1xcdCAqIG91dGxpdmUgdGhlIGRpYWxvZyBhbmQgaGFuZy5cXG4rXFx0ICovXFxuK1xcdGxvb3AgPSBnX21haW5fbG9vcF9uZXcoTlVMTCwgRkFMU0UpO1xcbitcXHRwZXJmX2d0a19fZXJyb3JfbG9vcHMgPSBnX3NsaXN0X3ByZXBlbmQocGVyZl9ndGtfX2Vycm9yX2xvb3BzLCBsb29wKTtcXG4rXFx0Z19zaWduYWxfY29ubmVjdChkaWFsb2csIFxcXCJyZXNwb25zZVxcXCIsXFxuK1xcdFxcdFxcdCBHX0NBTExCQUNLKHBlcmZfZ3RrX19kaWFsb2dfcmVzcG9uc2UpLCBOVUxMKTtcXG4rXFx0Z19zaWduYWxfY29ubmVjdF9zd2FwcGVkKGRpYWxvZywgXFxcImRlc3Ryb3lcXFwiLFxcbitcXHRcXHRcXHRcXHQgR19DQUxMQkFDSyhnX21haW5fbG9vcF9xdWl0KSwgbG9vcCk7XFxuK1xcbitcXHRndGtfd2lkZ2V0X3NldF92aXNpYmxlKGRpYWxvZywgVFJVRSk7XFxuK1xcdGdfbWFpbl9sb29wX3J1bihsb29wKTtcXG4rXFx0cGVyZl9ndGtfX2Vycm9yX2xvb3BzID0gZ19zbGlzdF9yZW1vdmUocGVyZl9ndGtfX2Vycm9yX2xvb3BzLCBsb29wKTtcXG4rXFx0Z19tYWluX2xvb3BfdW5yZWYobG9vcCk7XFxuK1xcbiBcXHRmcmVlKG1zZyk7XFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbi0jaWZkZWYgSEFWRV9HVEtfSU5GT19CQVJfU1VQUE9SVFxcbiBzdGF0aWMgaW50IHBlcmZfZ3RrX193YXJuaW5nX2luZm9fYmFyKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKVxcbiB7XFxuIFxcdGNoYXIgKm1zZztcXG4rXFx0dmFfbGlzdCBhcmdzX2NvcHk7XFxuIFxcbitcXHR2YV9jb3B5KGFyZ3NfY29weSwgYXJncyk7XFxuIFxcdGlmICghcGVyZl9ndGtfX2lzX2FjdGl2ZV9jb250ZXh0KHBnY3R4KSB8fFxcbi1cXHQgICAgdmFzcHJpbnRmKFxcdTAwMjZtc2csIGZvcm1hdCwgYXJncykgXFx1MDAzYyAwKSB7XFxuK1xcdCAgICB2YXNwcmludGYoXFx1MDAyNm1zZywgZm9ybWF0LCBhcmdzX2NvcHkpIFxcdTAwM2MgMCkge1xcbitcXHRcXHR2YV9lbmQoYXJnc19jb3B5KTtcXG4gXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCJXYXJuaW5nOlxcXFxuXFxcIik7XFxuIFxcdFxcdHZmcHJpbnRmKHN0ZGVyciwgZm9ybWF0LCBhcmdzKTtcXG4gXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcbiBcXHRcXHRyZXR1cm4gLTE7XFxuIFxcdH1cXG4rXFx0dmFfZW5kKGFyZ3NfY29weSk7XFxuIFxcbiBcXHRndGtfbGFiZWxfc2V0X3RleHQoR1RLX0xBQkVMKHBnY3R4LVxcdTAwM2VtZXNzYWdlX2xhYmVsKSwgbXNnKTtcXG4gXFx0Z3RrX2luZm9fYmFyX3NldF9tZXNzYWdlX3R5cGUoR1RLX0lORk9fQkFSKHBnY3R4LVxcdTAwM2VpbmZvX2JhciksXFxuIFxcdFxcdFxcdFxcdCAgICAgIEdUS19NRVNTQUdFX1dBUk5JTkcpO1xcbi1cXHRndGtfd2lkZ2V0X3Nob3cocGdjdHgtXFx1MDAzZWluZm9fYmFyKTtcXG4tXFxuLVxcdGZyZWUobXNnKTtcXG4tXFx0cmV0dXJuIDA7XFxuLX1cXG4tI2Vsc2VcXG4tc3RhdGljIGludCBwZXJmX2d0a19fd2FybmluZ19zdGF0dXNiYXIoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpXFxuLXtcXG4tXFx0Y2hhciAqbXNnLCAqcDtcXG4tXFxuLVxcdGlmICghcGVyZl9ndGtfX2lzX2FjdGl2ZV9jb250ZXh0KHBnY3R4KSB8fFxcbi1cXHQgICAgdmFzcHJpbnRmKFxcdTAwMjZtc2csIGZvcm1hdCwgYXJncykgXFx1MDAzYyAwKSB7XFxuLVxcdFxcdGZwcmludGYoc3RkZXJyLCBcXFwiV2FybmluZzpcXFxcblxcXCIpO1xcbi1cXHRcXHR2ZnByaW50ZihzdGRlcnIsIGZvcm1hdCwgYXJncyk7XFxuLVxcdFxcdGZwcmludGYoc3RkZXJyLCBcXFwiXFxcXG5cXFwiKTtcXG4tXFx0XFx0cmV0dXJuIC0xO1xcbi1cXHR9XFxuLVxcbi1cXHRndGtfc3RhdHVzYmFyX3BvcChHVEtfU1RBVFVTQkFSKHBnY3R4LVxcdTAwM2VzdGF0YmFyKSxcXG4tXFx0XFx0XFx0ICBwZ2N0eC1cXHUwMDNlc3RhdGJhcl9jdHhfaWQpO1xcbi1cXG4tXFx0LyogT25seSBmaXJzdCBsaW5lIGNhbiBiZSBkaXNwbGF5ZWQgKi9cXG4tXFx0cCA9IHN0cmNocihtc2csICdcXFxcbicpO1xcbi1cXHRpZiAocClcXG4tXFx0XFx0KnAgPSAnXFxcXDAnO1xcbi1cXG4tXFx0Z3RrX3N0YXR1c2Jhcl9wdXNoKEdUS19TVEFUVVNCQVIocGdjdHgtXFx1MDAzZXN0YXRiYXIpLFxcbi1cXHRcXHRcXHQgICBwZ2N0eC1cXHUwMDNlc3RhdGJhcl9jdHhfaWQsIG1zZyk7XFxuK1xcdGd0a193aWRnZXRfc2V0X3Zpc2libGUocGdjdHgtXFx1MDAzZWluZm9fYmFyLCBUUlVFKTtcXG4gXFxuIFxcdGZyZWUobXNnKTtcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4tI2VuZGlmXFxuIFxcbiBzdHJ1Y3QgcGVyZl9lcnJvcl9vcHMgcGVyZl9ndGtfZW9wcyA9IHtcXG4gXFx0LmVycm9yXFx0XFx0PSBwZXJmX2d0a19fZXJyb3IsXFxuLSNpZmRlZiBIQVZFX0dUS19JTkZPX0JBUl9TVVBQT1JUXFxuIFxcdC53YXJuaW5nXFx0PSBwZXJmX2d0a19fd2FybmluZ19pbmZvX2JhcixcXG4tI2Vsc2VcXG4tXFx0Lndhcm5pbmdcXHQ9IHBlcmZfZ3RrX193YXJuaW5nX3N0YXR1c2JhcixcXG4tI2VuZGlmXFxuIH07XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvc2V0dXAuYyBiL3Rvb2xzL3BlcmYvdWkvc2V0dXAuY1xcbmluZGV4IGZmODAwMDQ3ZTY5N2YuLmQ4ODczNDZjN2E2MzIgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi91aS9zZXR1cC5jXFxuKysrIGIvdG9vbHMvcGVyZi91aS9zZXR1cC5jXFxuQEAgLTE0LDcgKzE0LDcgQEAgaW50IHVzZV9icm93c2VyID0gLTE7XFxuIFxcbiAjZGVmaW5lIFBFUkZfR1RLX0RTTyBcXFwibGlicGVyZi1ndGsuc29cXFwiXFxuIFxcbi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlRcXG4rI2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXFxuIFxcbiBzdGF0aWMgaW50IHNldHVwX2d0a19icm93c2VyKHZvaWQpXFxuIHtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL2Fubm90YXRlLmMgYi90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuY1xcbmluZGV4IGRmNzBlOTVhODQ3MDQuLjEyM2I2ZDVmY2VhNzggMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi91dGlsL2Fubm90YXRlLmNcXG4rKysgYi90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuY1xcbkBAIC0xNDUsNiArMTQ1LDE3IEBAIHN0YXRpYyBpbnQgYW5ub3RhdGVkX3NvdXJjZV9fYWxsb2NfaGlzdG9ncmFtcyhzdHJ1Y3QgYW5ub3RhdGVkX3NvdXJjZSAqc3JjLFxcbiBcXHRyZXR1cm4gc3JjLVxcdTAwM2VoaXN0b2dyYW1zID8gMCA6IC0xO1xcbiB9XFxuIFxcbitzdHJ1Y3Qgc3ltX2hpc3RfZW50cnkgKlxcbithbm5vdGF0ZWRfc291cmNlX19oaXN0X2VudHJ5KHN0cnVjdCBhbm5vdGF0ZWRfc291cmNlICpzcmMsIGNvbnN0IHN0cnVjdCBldnNlbCAqZXZzZWwsIHU2NCBvZmZzZXQpXFxuK3tcXG4rXFx0c3RydWN0IHN5bV9oaXN0X2VudHJ5ICplbnRyeTtcXG4rXFx0bG9uZyBrZXkgPSBvZmZzZXQgXFx1MDAzY1xcdTAwM2MgMTYgfCBldnNlbC1cXHUwMDNlY29yZS5pZHg7XFxuK1xcbitcXHRpZiAoIWhhc2htYXBfX2ZpbmQoc3JjLVxcdTAwM2VzYW1wbGVzLCBrZXksIFxcdTAwMjZlbnRyeSkpXFxuK1xcdFxcdHJldHVybiBOVUxMO1xcbitcXHRyZXR1cm4gZW50cnk7XFxuK31cXG4rXFxuIHZvaWQgc3ltYm9sX19hbm5vdGF0ZV96ZXJvX2hpc3RvZ3JhbXMoc3RydWN0IHN5bWJvbCAqc3ltKVxcbiB7XFxuIFxcdHN0cnVjdCBhbm5vdGF0aW9uICpub3RlcyA9IHN5bWJvbF9fYW5ub3RhdGlvbihzeW0pO1xcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuaCBiL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5oXFxuaW5kZXggZmEwOGQwOWI4MGY3Ni4uNDAwMzhhMzc3OWQ0NiAxMDA2NDRcXG4tLS0gYS90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuaFxcbisrKyBiL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5oXFxuQEAgLTQwNiwxNiArNDA2LDggQEAgc3RhdGljIGlubGluZSBzdHJ1Y3Qgc3ltX2hpc3QgKmFubm90YXRpb25fX2hpc3RvZ3JhbShzdHJ1Y3QgYW5ub3RhdGlvbiAqbm90ZXMsXFxuIFxcdHJldHVybiBhbm5vdGF0ZWRfc291cmNlX19oaXN0b2dyYW0obm90ZXMtXFx1MDAzZXNyYywgZXZzZWwpO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW5saW5lIHN0cnVjdCBzeW1faGlzdF9lbnRyeSAqXFxuLWFubm90YXRlZF9zb3VyY2VfX2hpc3RfZW50cnkoc3RydWN0IGFubm90YXRlZF9zb3VyY2UgKnNyYywgY29uc3Qgc3RydWN0IGV2c2VsICpldnNlbCwgdTY0IG9mZnNldClcXG4te1xcbi1cXHRzdHJ1Y3Qgc3ltX2hpc3RfZW50cnkgKmVudHJ5O1xcbi1cXHRsb25nIGtleSA9IG9mZnNldCBcXHUwMDNjXFx1MDAzYyAxNiB8IGV2c2VsLVxcdTAwM2Vjb3JlLmlkeDtcXG4tXFxuLVxcdGlmICghaGFzaG1hcF9fZmluZChzcmMtXFx1MDAzZXNhbXBsZXMsIGtleSwgXFx1MDAyNmVudHJ5KSlcXG4tXFx0XFx0cmV0dXJuIE5VTEw7XFxuLVxcdHJldHVybiBlbnRyeTtcXG4tfVxcbitzdHJ1Y3Qgc3ltX2hpc3RfZW50cnkgKlxcbithbm5vdGF0ZWRfc291cmNlX19oaXN0X2VudHJ5KHN0cnVjdCBhbm5vdGF0ZWRfc291cmNlICpzcmMsIGNvbnN0IHN0cnVjdCBldnNlbCAqZXZzZWwsIHU2NCBvZmZzZXQpO1xcbiBcXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgYW5ub3RhdGlvbiAqc3ltYm9sX19hbm5vdGF0aW9uKHN0cnVjdCBzeW1ib2wgKnN5bSlcXG4ge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwMjoxNzoyOS42ODAxMDMyNzVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjY4NzA5MzM1OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiQWxsIGNoYW5nZXMgaW4gdGhpcyBwYXRjaCBzZXJpZXMgYXJlIHN0cmljdGx5IGNvbmZpbmVkIHRvIHVzZXItc3BhY2UgdG9vbGluZyB1bmRlciBgdG9vbHMvYCAoc3BlY2lmaWNhbGx5IGB0b29scy9wZXJmYCBhbmQgYHRvb2xzL2J1aWxkYCksIHdoaWNoIGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAoYHZtbGludXhgKSBvciBrZXJuZWwgbW9kdWxlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgM2NmOGYzNDhhNTI1YTk1N2M4Nzg1NjhkNDZkODAwY2EwNmRiMWE5M1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gU2VwIDcgMDI6MTc6MjYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy9idWlsZC9NYWtlZmlsZS5mZWF0dXJlIGIvdG9vbHMvYnVpbGQvTWFrZWZpbGUuZmVhdHVyZVxuaW5kZXggOTllYjBlYTA5NTM3NS4uNGVjOTVjMzVhNWMxOSAxMDA2NDRcbi0tLSBhL3Rvb2xzL2J1aWxkL01ha2VmaWxlLmZlYXR1cmVcbisrKyBiL3Rvb2xzL2J1aWxkL01ha2VmaWxlLmZlYXR1cmVcbkBAIC0xMTMsOCArMTEzLDcgQEAgRkVBVFVSRV9URVNUU19FWFRSQSA6PSAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgY29tcGlsZS14MzIgICAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgY3BsdXMtZGVtYW5nbGUgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgY3hhLWRlbWFuZ2xlICAgICAgICAgICAgICAgICAgIFxcXG4tICAgICAgICAgZ3RrMiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4tICAgICAgICAgZ3RrMi1pbmZvYmFyICAgICAgICAgICAgICAgICAgIFxcXG4rICAgICAgICAgZ3RrNCAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgaGVsbG8gICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgYmFiZWx0cmFjZTItY3RmLXdyaXRlciAgICAgICAgIFxcXG4gICAgICAgICAgbGliY2Fwc3RvbmUgICAgICAgICAgICAgICAgICAgIFxcXG5AQCAtMTQzLDYgKzE0Miw3IEBAIGVuZGlmXG4gRkVBVFVSRV9ESVNQTEFZID89ICAgICAgICAgICAgICBcXFxuICAgICAgICAgIGxpYmR3ICAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICBnbGliYyAgICAgICAgICAgICAgICAgIFxcXG4rICAgICAgICAgZ3RrNCAgICAgICAgICAgICAgICAgICBcXFxuICAgICAgICAgIGxpYmVsZiAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICBsaWJudW1hICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgbnVtYV9udW1fcG9zc2libGVfY3B1cyBcXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvTWFrZWZpbGUgYi90b29scy9idWlsZC9mZWF0dXJlL01ha2VmaWxlXG5pbmRleCA3ZDE2NTAxODExNmE1Li4wMWM0OGU2ZWYwMjFkIDEwMDY0NFxuLS0tIGEvdG9vbHMvYnVpbGQvZmVhdHVyZS9NYWtlZmlsZVxuKysrIGIvdG9vbHMvYnVpbGQvZmVhdHVyZS9NYWtlZmlsZVxuQEAgLTExLDggKzExLDcgQEAgRklMRVM9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICB0ZXN0LWV2ZW50ZmQuYmluICAgICAgICAgICAgICAgICAgICAgICBcXFxuICAgICAgICAgIHRlc3QtZm9ydGlmeS1zb3VyY2UuYmluICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgdGVzdC1nbGliYy5iaW4gICAgICAgICAgICAgICAgICAgICAgICAgXFxcbi0gICAgICAgICB0ZXN0LWd0azIuYmluICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxuLSAgICAgICAgIHRlc3QtZ3RrMi1pbmZvYmFyLmJpbiAgICAgICAgICAgICAgICAgIFxcXG4rICAgICAgICAgdGVzdC1ndGs0LmJpbiAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICB0ZXN0LWhlbGxvLmJpbiAgICAgICAgICAgICAgICAgICAgICAgICBcXFxuICAgICAgICAgIHRlc3QtbGliYmZkLmJpbiAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4gXHQgdGVzdC1saWJiZmQtdGhyZWFkc2FmZS5iaW4gICAgICBcdFxcXG5AQCAtMjQwLDExICsyMzksOCBAQCAkKE9VVFBVVCl0ZXN0LWxpYmNwdXBvd2VyLmJpbjpcbiAkKE9VVFBVVCl0ZXN0LWxpYnRyYWNlZnMuYmluOlxuIFx0ICQoQlVJTEQpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWNmbGFncyBsaWJ0cmFjZWZzIDJcdTAwM2UvZGV2L251bGwpIC1sdHJhY2Vmc1xuIFxuLSQoT1VUUFVUKXRlc3QtZ3RrMi5iaW46XG4tXHQkKEJVSUxEKSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIC0tY2ZsYWdzIGd0aystMi4wIDJcdTAwM2UvZGV2L251bGwpIC1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnNcbi1cbi0kKE9VVFBVVCl0ZXN0LWd0azItaW5mb2Jhci5iaW46XG4tXHQkKEJVSUxEKSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIC0tY2ZsYWdzIGd0aystMi4wIDJcdTAwM2UvZGV2L251bGwpXG4rJChPVVRQVVQpdGVzdC1ndGs0LmJpbjpcbitcdCQoQlVJTEQpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgLS1jZmxhZ3MgZ3RrNCAyXHUwMDNlL2Rldi9udWxsKVxuIFxuIGdyZXAtbGlicyAgPSAkKGZpbHRlciAtbCUsJCgxKSlcbiBzdHJpcC1saWJzID0gJChmaWx0ZXItb3V0IC1sJSwkKDEpKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGsyLWluZm9iYXIuYyBiL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGsyLWluZm9iYXIuY1xuZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCBiMWI3MTZkZDU3MzMwLi4wMDAwMDAwMDAwMDAwXG4tLS0gYS90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi1pbmZvYmFyLmNcbisrKyAvZGV2L251bGxcbkBAIC0xLDEyICswLDAgQEBcbi0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuLSNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCBcIi1Xc3RyaWN0LXByb3RvdHlwZXNcIlxuLSNpbmNsdWRlIFx1MDAzY2d0ay9ndGsuaFx1MDAzZVxuLSNwcmFnbWEgR0NDIGRpYWdub3N0aWMgZXJyb3IgXCItV3N0cmljdC1wcm90b3R5cGVzXCJcbi1cbi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuLXtcbi1cdGd0a19pbml0KFx1MDAyNmFyZ2MsIFx1MDAyNmFyZ3YpO1xuLVx0Z3RrX2luZm9fYmFyX25ldygpO1xuLVxuLVx0cmV0dXJuIDA7XG4tfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGsyLmMgYi90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrNC5jXG5zaW1pbGFyaXR5IGluZGV4IDc2JVxucmVuYW1lIGZyb20gdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azIuY1xucmVuYW1lIHRvIHRvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGs0LmNcbmluZGV4IDJhYWY0YmZjMjA1NTYuLmI5NTIwZTc0MDhiOTkgMTAwNjQ0XG4tLS0gYS90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi5jXG4rKysgYi90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrNC5jXG5AQCAtMyw5ICszLDkgQEBcbiAjaW5jbHVkZSBcdTAwM2NndGsvZ3RrLmhcdTAwM2VcbiAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGVycm9yIFwiLVdzdHJpY3QtcHJvdG90eXBlc1wiXG4gXG4taW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbitpbnQgbWFpbih2b2lkKVxuIHtcbi1cdGd0a19pbml0KFx1MDAyNmFyZ2MsIFx1MDAyNmFyZ3YpO1xuK1x0Z3RrX2luaXQoKTtcbiBcbiAgICAgICAgIHJldHVybiAwO1xuIH1cbmRpZmYgLS1naXQgYS90b29scy9wZXJmL0RvY3VtZW50YXRpb24vcGVyZi1yZXBvcnQudHh0IGIvdG9vbHMvcGVyZi9Eb2N1bWVudGF0aW9uL3BlcmYtcmVwb3J0LnR4dFxuaW5kZXggMjJmODdlYWEzMjc5Ni4uN2FmOWIzZjgxYzA2NSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvRG9jdW1lbnRhdGlvbi9wZXJmLXJlcG9ydC50eHRcbisrKyBiL3Rvb2xzL3BlcmYvRG9jdW1lbnRhdGlvbi9wZXJmLXJlcG9ydC50eHRcbkBAIC0zNTEsNyArMzUxLDcgQEAgT1BUSU9OU1xuIFx0cmVxdWlyZXMgYSB0dHksIGlmIG9uZSBpcyBub3QgcHJlc2VudCwgYXMgd2hlbiBwaXBpbmcgdG8gb3RoZXJcbiBcdGNvbW1hbmRzLCB0aGUgc3RkaW8gaW50ZXJmYWNlIGlzIHVzZWQuXG4gXG4tLS1ndGs6OiBVc2UgdGhlIEdUSzIgaW50ZXJmYWNlLlxuKy0tZ3RrOjogVXNlIHRoZSBHVEs0IGludGVyZmFjZS5cbiBcbiAtazo6XG4gLS12bWxpbnV4PVx1MDAzY2ZpbGVcdTAwM2U6OlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvTWFrZWZpbGUgYi90b29scy9wZXJmL01ha2VmaWxlXG5pbmRleCA1YjcxMzgzN2VlZGU3Li41NjAxNDEwNjQ3OWEzIDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi9NYWtlZmlsZVxuKysrIGIvdG9vbHMvcGVyZi9NYWtlZmlsZVxuQEAgLTEwNiw3ICsxMDYsNyBAQCBjbGVhbjpcbiAjIG1ha2UgLUMgdG9vbHMvcGVyZiAtZiB0ZXN0cy9tYWtlXG4gI1xuIGJ1aWxkLXRlc3Q6XG4tXHRAJChNQUtFKSBTSFVGPTEgLWYgdGVzdHMvbWFrZSBSRVVTRV9GRUFUVVJFU19EVU1QPTEgTUs9TWFrZWZpbGUgU0VUX1BBUkFMTEVMPTEgLS1uby1wcmludC1kaXJlY3RvcnkgdGFycGtnIG1ha2Vfc3RhdGljIG1ha2Vfd2l0aF9ndGsyIG91dFxuK1x0QCQoTUFLRSkgU0hVRj0xIC1mIHRlc3RzL21ha2UgUkVVU0VfRkVBVFVSRVNfRFVNUD0xIE1LPU1ha2VmaWxlIFNFVF9QQVJBTExFTD0xIC0tbm8tcHJpbnQtZGlyZWN0b3J5IHRhcnBrZyBtYWtlX3N0YXRpYyBtYWtlX3dpdGhfZ3RrNCBvdXRcbiBcbiBidWlsZC10ZXN0LXRhcmJhbGw6XG4gXHRAJChNQUtFKSAtZiB0ZXN0cy9tYWtlIFJFVVNFX0ZFQVRVUkVTX0RVTVA9MSBNSz1NYWtlZmlsZSBTRVRfUEFSQUxMRUw9MSAtLW5vLXByaW50LWRpcmVjdG9yeSBvdXRcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL01ha2VmaWxlLmNvbmZpZyBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUuY29uZmlnXG5pbmRleCA0ZDU5OTNkYTlmOTQ1Li40ZWU3MzkzYTM5ZjkxIDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi9NYWtlZmlsZS5jb25maWdcbisrKyBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUuY29uZmlnXG5AQCAtNzc0LDIxICs3NzQsMjIgQEAgaWZuZGVmIE5PX1NMQU5HXG4gICBlbmRpZlxuIGVuZGlmXG4gXG4taWZkZWYgR1RLMlxuLSAgRkxBR1NfR1RLMj0kKENGTEFHUykgJChMREZMQUdTKSAkKEVYVExJQlMpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgLS1jZmxhZ3MgZ3RrKy0yLjAgMlx1MDAzZS9kZXYvbnVsbClcbi0gICQoY2FsbCBmZWF0dXJlX2NoZWNrLGd0azIpXG4tICBpZm5lcSAoJChmZWF0dXJlLWd0azIpLCAxKVxuLSAgICAkKHdhcm5pbmcgR1RLMiBub3QgZm91bmQsIGRpc2FibGVzIEdUSzIgc3VwcG9ydC4gUGxlYXNlIGluc3RhbGwgZ3RrMi1kZXZlbCBvciBsaWJndGsyLjAtZGV2KVxuLSAgICBOT19HVEsyIDo9IDFcbitpZmRlZiBHVEs0XG4rICBGTEFHU19HVEs0PSQoQ0ZMQUdTKSAkKExERkxBR1MpICQoRVhUTElCUykgJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyAtLWNmbGFncyBndGs0IDJcdTAwM2UvZGV2L251bGwpXG4rICAkKGNhbGwgZmVhdHVyZV9jaGVjayxndGs0KVxuKyAgaWZuZXEgKCQoZmVhdHVyZS1ndGs0KSwgMSlcbisgICAgJCh3YXJuaW5nIEdUSzQgbm90IGZvdW5kLCBkaXNhYmxlcyBHVEs0IHN1cHBvcnQuIFBsZWFzZSBpbnN0YWxsIGd0azQtZGV2ZWwgb3IgbGliZ3RrLTQtZGV2KVxuKyAgICBOT19HVEs0IDo9IDFcbiAgIGVsc2Vcbi0gICAgJChjYWxsIGZlYXR1cmVfY2hlY2ssZ3RrMi1pbmZvYmFyKVxuLSAgICBpZmVxICgkKGZlYXR1cmUtZ3RrMi1pbmZvYmFyKSwgMSlcbi0gICAgICBHVEtfQ0ZMQUdTIDo9IC1ESEFWRV9HVEtfSU5GT19CQVJfU1VQUE9SVFxuLSAgICBlbmRpZlxuLSAgICBDRkxBR1MgKz0gLURIQVZFX0dUSzJfU1VQUE9SVFxuLSAgICBHVEtfQ0ZMQUdTICs9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWNmbGFncyBndGsrLTIuMCAyXHUwMDNlL2Rldi9udWxsKVxuLSAgICBHVEtfTElCUyA6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIGd0aystMi4wIDJcdTAwM2UvZGV2L251bGwpXG4rICAgIENGTEFHUyArPSAtREhBVkVfR1RLNF9TVVBQT1JUXG4rICAgIEdUS19DRkxBR1MgKz0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tY2ZsYWdzIGd0azQgMlx1MDAzZS9kZXYvbnVsbClcbisgICAgR1RLX0xJQlMgOj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyBndGs0IDJcdTAwM2UvZGV2L251bGwpXG4gICAgIEVYVExJQlMgKz0gLWxkbFxuKyAgICAjIGxpYnBlcmYtZ3RrLnNvIGlzIGRsb3BlbigpZWQgYXQgcnVudGltZSBhbmQgY2FsbHMgYmFjayBpbnRvXG4rICAgICMgc3ltYm9scyBkZWZpbmVkIGluIHRoZSBwZXJmIGJpbmFyeSBpdHNlbGYgKGNhbGxjaGFpbl9wYXJhbSxcbisgICAgIyBzeW1ib2xfY29uZiwgZXZzZWxfX25hbWUsIC4uLik6IHBlcmYgbmVlZHMgdG8gZXhwb3J0IHRob3NlXG4rICAgICMgZHluYW1pY2FsbHkgZm9yIHRoZSBwbHVnaW4gdG8gcmVzb2x2ZSB0aGVtLlxuKyAgICBMREZMQUdTICs9IC1yZHluYW1pY1xuICAgZW5kaWZcbiBlbmRpZlxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvTWFrZWZpbGUucGVyZiBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUucGVyZlxuaW5kZXggMjljZmQ0NGM0MjdmMy4uMjQzOGI0MGVhYWVjMSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvTWFrZWZpbGUucGVyZlxuKysrIGIvdG9vbHMvcGVyZi9NYWtlZmlsZS5wZXJmXG5AQCAtNDksNyArNDksNyBAQCBpbmNsdWRlIC4uL3NjcmlwdHMvdXRpbGl0aWVzLm1ha1xuICNcbiAjIERlZmluZSBOT19TTEFORyBpZiB5b3UgZG8gbm90IHdhbnQgVFVJIHN1cHBvcnQuXG4gI1xuLSMgRGVmaW5lIEdUSzIgaWYgeW91IHdhbnQgR1RLKyBHVUkgc3VwcG9ydC5cbisjIERlZmluZSBHVEs0IGlmIHlvdSB3YW50IEdUSysgR1VJIHN1cHBvcnQuXG4gI1xuICMgRGVmaW5lIE5PX0RFTUFOR0xFIGlmIHlvdSBkbyBub3Qgd2FudCBDKysgc3ltYm9sIGRlbWFuZ2xpbmcuXG4gI1xuQEAgLTQ3Myw3ICs0NzMsNyBAQCBpZm5lcSAoJChPVVRQVVQpLClcbiAgIENGTEFHUyArPSAtSSQoT1VUUFVUKVxuIGVuZGlmXG4gXG4taWZkZWYgR1RLMlxuK2lmZGVmIEdUSzRcbiAgIEFMTF9QUk9HUkFNUyArPSAkKE9VVFBVVClsaWJwZXJmLWd0ay5zb1xuICAgR1RLX0lOIDo9ICQoT1VUUFVUKWd0ay1pbi5vXG4gZW5kaWZcbkBAIC04MTEsNyArODExLDcgQEAgY2hlY2s6IHByZXBhcmVcbiBcbiAjIyMgSW5zdGFsbGF0aW9uIHJ1bGVzXG4gXG4taWZkZWYgR1RLMlxuK2lmZGVmIEdUSzRcbiBpbnN0YWxsLWd0azogJChPVVRQVVQpbGlicGVyZi1ndGsuc29cbiBcdCQoY2FsbCBRVUlFVF9JTlNUQUxMLCAnR1RLIFVJJykgXFxcbiBcdFx0JChJTlNUQUxMKSAtZCAtbSA3NTUgJyQoREVTVERJUl9TUSkkKGxpYmRpcl9TUSknOyBcXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1hbm5vdGF0ZS5jIGIvdG9vbHMvcGVyZi9idWlsdGluLWFubm90YXRlLmNcbmluZGV4IDY5Y2I3MmIyMDgyYTYuLjE1MTYzZTA4MWE4Y2UgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL2J1aWx0aW4tYW5ub3RhdGUuY1xuKysrIGIvdG9vbHMvcGVyZi9idWlsdGluLWFubm90YXRlLmNcbkBAIC01Miw3ICs1Miw3IEBAIHN0cnVjdCBwZXJmX2Fubm90YXRlIHtcbiBcdGJvb2xcdCAgIHVzZV90dWk7XG4gI2VuZGlmXG4gXHRib29sXHQgICB1c2Vfc3RkaW8sIHVzZV9zdGRpbzI7XG4tI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUXG4rI2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXG4gXHRib29sXHQgICB1c2VfZ3RrO1xuICNlbmRpZlxuIFx0Ym9vbFx0ICAgc2tpcF9taXNzaW5nO1xuQEAgLTcxMiw3ICs3MTIsNyBAQCBpbnQgY21kX2Fubm90YXRlKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndilcbiBcdE9QVF9CT09MRUFOKCdxJywgXCJxdWlldFwiLCBcdTAwMjZxdWlldCwgXCJkbyBub3cgc2hvdyBhbnkgd2FybmluZ3Mgb3IgbWVzc2FnZXNcIiksXG4gXHRPUFRfQk9PTEVBTignRCcsIFwiZHVtcC1yYXctdHJhY2VcIiwgXHUwMDI2ZHVtcF90cmFjZSxcbiBcdFx0ICAgIFwiZHVtcCByYXcgdHJhY2UgaW4gQVNDSUlcIiksXG4tI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUXG4rI2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXG4gXHRPUFRfQk9PTEVBTigwLCBcImd0a1wiLCBcdTAwMjZhbm5vdGF0ZS51c2VfZ3RrLCBcIlVzZSB0aGUgR1RLIGludGVyZmFjZVwiKSxcbiAjZW5kaWZcbiAjaWZkZWYgSEFWRV9TTEFOR19TVVBQT1JUXG5AQCAtODI4LDcgKzgyOCw3IEBAIGludCBjbWRfYW5ub3RhdGUoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KVxuIFx0aWYgKGFubm90YXRlX2NoZWNrX2FyZ3MoKSBcdTAwM2MgMClcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4tI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUXG4rI2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXG4gXHRpZiAoc3ltYm9sX2NvbmYuc2hvd19ucl9zYW1wbGVzIFx1MDAyNlx1MDAyNiBhbm5vdGF0ZS51c2VfZ3RrKSB7XG4gXHRcdHByX2VycihcIi0tc2hvdy1uci1zYW1wbGVzIGlzIG5vdCBhdmFpbGFibGUgaW4gLS1ndGsgbW9kZSBhdCB0aGlzIHRpbWVcXG5cIik7XG4gXHRcdHJldHVybiByZXQ7XG5AQCAtODk4LDcgKzg5OCw3IEBAIGludCBjbWRfYW5ub3RhdGUoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KVxuIFx0ZWxzZSBpZiAoYW5ub3RhdGUudXNlX3R1aSlcbiBcdFx0dXNlX2Jyb3dzZXIgPSAxO1xuICNlbmRpZlxuLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVFxuKyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVFxuIFx0ZWxzZSBpZiAoYW5ub3RhdGUudXNlX2d0aylcbiBcdFx0dXNlX2Jyb3dzZXIgPSAyO1xuICNlbmRpZlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1yZXBvcnQuYyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1yZXBvcnQuY1xuaW5kZXggNjBkMWYxNjY2MjllMC4uZDE0Mzg0YzU4NDY2MSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1yZXBvcnQuY1xuKysrIGIvdG9vbHMvcGVyZi9idWlsdGluLXJlcG9ydC5jXG5AQCAtODIsNyArODIsNyBAQCBzdHJ1Y3QgcmVwb3J0IHtcbiAjaWZkZWYgSEFWRV9TTEFOR19TVVBQT1JUXG4gXHRib29sXHRcdFx0dXNlX3R1aTtcbiAjZW5kaWZcbi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlRcbisjaWZkZWYgSEFWRV9HVEs0X1NVUFBPUlRcbiBcdGJvb2xcdFx0XHR1c2VfZ3RrO1xuICNlbmRpZlxuIFx0Ym9vbFx0XHRcdHVzZV9zdGRpbztcbkBAIC0xMzU5LDggKzEzNTksOCBAQCBpbnQgY21kX3JlcG9ydChpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpXG4gI2lmZGVmIEhBVkVfU0xBTkdfU1VQUE9SVFxuIFx0T1BUX0JPT0xFQU4oMCwgXCJ0dWlcIiwgXHUwMDI2cmVwb3J0LnVzZV90dWksIFwiVXNlIHRoZSBUVUkgaW50ZXJmYWNlXCIpLFxuICNlbmRpZlxuLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVFxuLVx0T1BUX0JPT0xFQU4oMCwgXCJndGtcIiwgXHUwMDI2cmVwb3J0LnVzZV9ndGssIFwiVXNlIHRoZSBHVEsyIGludGVyZmFjZVwiKSxcbisjaWZkZWYgSEFWRV9HVEs0X1NVUFBPUlRcbitcdE9QVF9CT09MRUFOKDAsIFwiZ3RrXCIsIFx1MDAyNnJlcG9ydC51c2VfZ3RrLCBcIlVzZSB0aGUgR1RLNCBpbnRlcmZhY2VcIiksXG4gI2VuZGlmXG4gXHRPUFRfQk9PTEVBTigwLCBcInN0ZGlvXCIsIFx1MDAyNnJlcG9ydC51c2Vfc3RkaW8sXG4gXHRcdCAgICBcIlVzZSB0aGUgc3RkaW8gaW50ZXJmYWNlXCIpLFxuQEAgLTE3MTAsNyArMTcxMCw3IEBAIGludCBjbWRfcmVwb3J0KGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndilcbiBcdGVsc2UgaWYgKHJlcG9ydC51c2VfdHVpKVxuIFx0XHR1c2VfYnJvd3NlciA9IDE7XG4gI2VuZGlmXG4tI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUXG4rI2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXG4gXHRlbHNlIGlmIChyZXBvcnQudXNlX2d0aylcbiBcdFx0dXNlX2Jyb3dzZXIgPSAyO1xuICNlbmRpZlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvc2NyaXB0cy9pbnN0YWxsLWJ1aWxkLWRlcHMuc2ggYi90b29scy9wZXJmL3NjcmlwdHMvaW5zdGFsbC1idWlsZC1kZXBzLnNoXG5pbmRleCBkMDAzZTdmYWIyYmU4Li5hNjAxYTUyNjBjMTdlIDEwMDc1NVxuLS0tIGEvdG9vbHMvcGVyZi9zY3JpcHRzL2luc3RhbGwtYnVpbGQtZGVwcy5zaFxuKysrIGIvdG9vbHMvcGVyZi9zY3JpcHRzL2luc3RhbGwtYnVpbGQtZGVwcy5zaFxuQEAgLTE5OSw4ICsxOTksOCBAQCBmZWRvcmFfcGtnX2ZvcigpIHtcbiBcdCMgb3B0LWluIGZlYXR1cmVzLCB3aGljaCBhIGRlZmF1bHQgYnVpbGQgZG9lcyBub3QgZW5hYmxlOiB0aGUgbGliYmZkXG4gXHQjIGRpc2Fzc2VtYmxlciBmYW1pbHkgKGxpYmJmZCwgbGliYmZkLXRocmVhZHNhZmUsIGxpYmJmZC1saWJlcnR5LFxuIFx0IyBkaXNhc3NlbWJsZXItKiwgY3BsdXMtZGVtYW5nbGUpLCBvbmx5IGxpbmtlZCBvbiBCVUlMRF9OT05ESVNUUk9cbi1cdCMgYnVpbGRzIGFuZCBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGNhcHN0b25lLCBHVEsyLCBMSUJQRVJMIGFuZFxuLVx0IyBMSUJVTldJTkQgc3VwcG9ydCAoaWZkZWYgR1RLMiAvIGlmZGVmIExJQlBFUkwgLyBMSUJVTldJTkQ9MSksXG4rXHQjIGJ1aWxkcyBhbmQgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBjYXBzdG9uZSwgR1RLNCwgTElCUEVSTCBhbmRcbitcdCMgTElCVU5XSU5EIHN1cHBvcnQgKGlmZGVmIEdUSzQgLyBpZmRlZiBMSUJQRVJMIC8gTElCVU5XSU5EPTEpLFxuIFx0IyBhbmQgQ29yZVNpZ2h0IChpZmRlZiBDT1JFU0lHSFQpLCBhcmUgZGVsaWJlcmF0ZWx5IG5vdCBtYXBwZWQuXG4gXHQjIGxpYmFpbyBpcyBub3QgbWFwcGVkIGVpdGhlcjogaXRzXG4gXHQjIHRlc3QgdXNlcyB0aGUgUE9TSVggQUlPIEFQSSAoYWlvLmgsIGFpb18qLCAtbHJ0KSwgcHJvdmlkZWQgYnlcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3Rlc3RzL21ha2UgYi90b29scy9wZXJmL3Rlc3RzL21ha2VcbmluZGV4IGQyYzJmNTI2ZTFkYjAuLjIwMmFiNTUwMTkxNjEgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL3Rlc3RzL21ha2VcbisrKyBiL3Rvb2xzL3BlcmYvdGVzdHMvbWFrZVxuQEAgLTk1LDcgKzk1LDcgQEAgbWFrZV9ub19iYWJlbHRyYWNlMiA6PSBOT19CQUJFTFRSQUNFMj0xXG4gbWFrZV93aXRoX2NvcmVzaWdodCA6PSBDT1JFU0lHSFQ9MVxuIG1ha2Vfbm9fc2R0XHQgICAgOj0gTk9fU0RUPTFcbiBtYWtlX25vX2xpYnBmbTQgICAgIDo9IE5PX0xJQlBGTTQ9MVxuLW1ha2Vfd2l0aF9ndGsyICAgICAgOj0gR1RLMj0xXG4rbWFrZV93aXRoX2d0azQgICAgICA6PSBHVEs0PTFcbiBtYWtlX3JlZmNudF9jaGVjayAgIDo9IEVYVFJBX0NGTEFHUz1cIi1EUkVGQ05UX0NIRUNLSU5HPTFcIlxuIG1ha2VfdGFncyAgICAgICAgICAgOj0gdGFnc1xuIG1ha2VfY3Njb3BlICAgICAgICAgOj0gY3Njb3BlXG5AQCAtMzE4LDcgKzMxOCw3IEBAICQocnVuKTpcbiBcdCQoY2FsbCB0ZXN0LCRAKSBcdTAwMjZcdTAwMjYgXFxcbiBcdHJtIC1yZiAkQCAkJFRNUF9ERVNUIHx8IChjYXQgJEAgOyBmYWxzZSlcbiBcbi1tYWtlX3dpdGhfZ3RrMjpcbittYWtlX3dpdGhfZ3RrNDpcbiBcdCQoY2FsbCBjbGVhbilcbiBcdEBUTVBfREVTVD0kJChta3RlbXAgLWQpOyBcXFxuIFx0Y21kPVwiY2QgJChQRVJGKSBcdTAwMjZcdTAwMjYgJChNQUtFX0YpICQoJEApICQoUEFSQUxMRUxfT1BUKSAkKE9fT1BUKSBERVNURElSPSQkVE1QX0RFU1RcIjsgXFxcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL2d0ay9hbm5vdGF0ZS5jIGIvdG9vbHMvcGVyZi91aS9ndGsvYW5ub3RhdGUuY1xuaW5kZXggODkyMGUyOTg0MjBhOC4uMDk0ZGZhMDQ1Yjc3NCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2Fubm90YXRlLmNcbisrKyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2Fubm90YXRlLmNcbkBAIC0xMSw2ICsxMSw3IEBAXG4gI2luY2x1ZGUgXCJ1aS9oZWxwbGluZS5oXCJcbiAjaW5jbHVkZSBcdTAwM2NpbnR0eXBlcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjc2lnbmFsLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NzdHJpbmcuaFx1MDAzZVxuIFxuIGVudW0ge1xuIFx0QU5OX0NPTF9fUEVSQ0VOVCxcbkBAIC0xNjEsNyArMTYyLDcgQEAgc3RhdGljIGludCBwZXJmX2d0a19fYW5ub3RhdGVfc3ltYm9sKEd0a1dpZGdldCAqd2luZG93LCBzdHJ1Y3QgbWFwX3N5bWJvbCAqbXMsXG4gXHRcdFx0Z3RrX2xpc3Rfc3RvcmVfc2V0KHN0b3JlLCBcdTAwMjZpdGVyLCBBTk5fQ09MX19MSU5FLCBzLCAtMSk7XG4gXHR9XG4gXG4tXHRndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHdpbmRvdyksIHZpZXcpO1xuK1x0Z3RrX3Njcm9sbGVkX3dpbmRvd19zZXRfY2hpbGQoR1RLX1NDUk9MTEVEX1dJTkRPVyh3aW5kb3cpLCB2aWV3KTtcbiBcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwb3MsIG4sIFx1MDAyNm5vdGVzLVx1MDAzZXNyYy1cdTAwM2Vzb3VyY2UsIGFsLm5vZGUpIHtcbiBcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZwb3MtXHUwMDNlYWwubm9kZSk7XG5AQCAtMjA1LDQwICsyMDYsMzQgQEAgc3RhdGljIGludCBzeW1ib2xfX2d0a19hbm5vdGF0ZShzdHJ1Y3QgbWFwX3N5bWJvbCAqbXMsIHN0cnVjdCBldnNlbCAqZXZzZWwsXG4gXHRcdEd0a1dpZGdldCAqaW5mb2JhcjtcbiBcdFx0R3RrV2lkZ2V0ICpzdGF0YmFyO1xuIFxuLVx0XHRzaWduYWwoU0lHU0VHViwgcGVyZl9ndGtfX3NpZ25hbCk7XG4tXHRcdHNpZ25hbChTSUdGUEUsICBwZXJmX2d0a19fc2lnbmFsKTtcbi1cdFx0c2lnbmFsKFNJR0lOVCwgIHBlcmZfZ3RrX19zaWduYWwpO1xuLVx0XHRzaWduYWwoU0lHUVVJVCwgcGVyZl9ndGtfX3NpZ25hbCk7XG4tXHRcdHNpZ25hbChTSUdURVJNLCBwZXJmX2d0a19fc2lnbmFsKTtcbitcdFx0c2lnbmFsKFNJR1NFR1YsIHBlcmZfZ3RrX19mYXRhbF9zaWduYWwpO1xuK1x0XHRzaWduYWwoU0lHRlBFLCAgcGVyZl9ndGtfX2ZhdGFsX3NpZ25hbCk7XG4rXHRcdHBlcmZfZ3RrX19pbnN0YWxsX3F1aXRfc2lnbmFscygpO1xuIFxuLVx0XHR3aW5kb3cgPSBndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1RPUExFVkVMKTtcbitcdFx0d2luZG93ID0gZ3RrX3dpbmRvd19uZXcoKTtcbiBcdFx0Z3RrX3dpbmRvd19zZXRfdGl0bGUoR1RLX1dJTkRPVyh3aW5kb3cpLCBcInBlcmYgYW5ub3RhdGVcIik7XG4gXG4tXHRcdGdfc2lnbmFsX2Nvbm5lY3Qod2luZG93LCBcImRlbGV0ZV9ldmVudFwiLCBndGtfbWFpbl9xdWl0LCBOVUxMKTtcbi1cbiBcdFx0cGdjdHggPSBwZXJmX2d0a19fYWN0aXZhdGVfY29udGV4dCh3aW5kb3cpO1xuIFx0XHRpZiAoIXBnY3R4KVxuIFx0XHRcdHJldHVybiAtMTtcbiBcbi1cdFx0dmJveCA9IGd0a192Ym94X25ldyhGQUxTRSwgMCk7XG4rXHRcdHZib3ggPSBndGtfYm94X25ldyhHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIDApO1xuIFx0XHRub3RlYm9vayA9IGd0a19ub3RlYm9va19uZXcoKTtcbiBcdFx0cGdjdHgtXHUwMDNlbm90ZWJvb2sgPSBub3RlYm9vaztcbiBcbi1cdFx0Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIG5vdGVib29rLCBUUlVFLCBUUlVFLCAwKTtcbitcdFx0Z3RrX3dpZGdldF9zZXRfdmV4cGFuZChub3RlYm9vaywgVFJVRSk7XG4rXHRcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIG5vdGVib29rKTtcbiBcbiBcdFx0aW5mb2JhciA9IHBlcmZfZ3RrX19zZXR1cF9pbmZvX2JhcigpO1xuLVx0XHRpZiAoaW5mb2Jhcikge1xuLVx0XHRcdGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBpbmZvYmFyLFxuLVx0XHRcdFx0XHQgICBGQUxTRSwgRkFMU0UsIDApO1xuLVx0XHR9XG4rXHRcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIGluZm9iYXIpO1xuIFxuIFx0XHRzdGF0YmFyID0gcGVyZl9ndGtfX3NldHVwX3N0YXR1c2JhcigpO1xuLVx0XHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgc3RhdGJhciwgRkFMU0UsIEZBTFNFLCAwKTtcbitcdFx0Z3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgc3RhdGJhcik7XG4gXG4tXHRcdGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIod2luZG93KSwgdmJveCk7XG4rXHRcdGd0a193aW5kb3dfc2V0X2NoaWxkKEdUS19XSU5ET1cod2luZG93KSwgdmJveCk7XG4gXHR9XG4gXG4tXHRzY3JvbGxlZF93aW5kb3cgPSBndGtfc2Nyb2xsZWRfd2luZG93X25ldyhOVUxMLCBOVUxMKTtcbitcdHNjcm9sbGVkX3dpbmRvdyA9IGd0a19zY3JvbGxlZF93aW5kb3dfbmV3KCk7XG4gXHR0YWJfbGFiZWwgPSBndGtfbGFiZWxfbmV3KHN5bS1cdTAwM2VuYW1lKTtcbiBcbiBcdGd0a19zY3JvbGxlZF93aW5kb3dfc2V0X3BvbGljeShHVEtfU0NST0xMRURfV0lORE9XKHNjcm9sbGVkX3dpbmRvdyksXG5AQCAtMjY3LDEyICsyNjIsMTEgQEAgdm9pZCBwZXJmX2d0a19fc2hvd19hbm5vdGF0aW9ucyh2b2lkKVxuIFx0XHRyZXR1cm47XG4gXG4gXHR3aW5kb3cgPSBwZ2N0eC1cdTAwM2VtYWluX3dpbmRvdztcbi1cdGd0a193aWRnZXRfc2hvd19hbGwod2luZG93KTtcbiBcbiBcdHBlcmZfZ3RrX19yZXNpemVfd2luZG93KHdpbmRvdyk7XG4tXHRndGtfd2luZG93X3NldF9wb3NpdGlvbihHVEtfV0lORE9XKHdpbmRvdyksIEdUS19XSU5fUE9TX0NFTlRFUik7XG4rXHRndGtfd2lkZ2V0X3NldF92aXNpYmxlKHdpbmRvdywgVFJVRSk7XG4gXG4tXHRndGtfbWFpbigpO1xuK1x0cGVyZl9ndGtfX3J1bl9tYWluX2xvb3Aod2luZG93KTtcbiBcbiBcdHBlcmZfZ3RrX19kZWFjdGl2YXRlX2NvbnRleHQoXHUwMDI2cGdjdHgpO1xuIH1cbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL2d0ay9icm93c2VyLmMgYi90b29scy9wZXJmL3VpL2d0ay9icm93c2VyLmNcbmluZGV4IGQyZGFkZjM4NzNmYmQuLjk4ZjFkNmJmY2IyNDYgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL3VpL2d0ay9icm93c2VyLmNcbisrKyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2Jyb3dzZXIuY1xuQEAgLTUsMzIgKzUsOTIgQEBcbiAjaW5jbHVkZSBcIi4uL2hpc3QuaFwiXG4gI2luY2x1ZGUgXCIuLi9oZWxwbGluZS5oXCJcbiBcbisjaW5jbHVkZSBcdTAwM2NnbGliLXVuaXguaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY3NpZ25hbC5oXHUwMDNlXG4gXG4tdm9pZCBwZXJmX2d0a19fc2lnbmFsKGludCBzaWcpXG4rLypcbisgKiBTSUdJTlQvU0lHUVVJVC9TSUdURVJNIGFyZSBhc3luY2hyb25vdXM6IGRlZmVycmluZyB0aGUgYWN0dWFsIGV4aXQgdG8gYVxuKyAqIEdMaWIgc291cmNlIGRpc3BhdGNoZWQgZnJvbSB0aGUgbWFpbiBsb29wIG1lYW5zIGl0IGFsd2F5cyBydW5zIG9uIHRoZVxuKyAqIG1haW4gdGhyZWFkLCBzZXJpYWxpemVkIHdpdGggZXZlcnl0aGluZyBlbHNlIHRoZSBtYWluIGxvb3AgZG9lc1xuKyAqIChpbmNsdWRpbmcgcGVyZl9ndGtfX2Vycm9yKCkncyB1cGRhdGVzIHRvIHBlcmZfZ3RrX19lcnJvcl9sb29wcyksIGluc3RlYWRcbisgKiBvZiByYWNpbmcgdGhlbSBmcm9tIGFyYml0cmFyeSBzaWduYWwtaGFuZGxlciBjb250ZXh0LlxuKyAqL1xuK3N0YXRpYyBnYm9vbGVhbiBwZXJmX2d0a19fcXVpdF9zaWduYWwoZ3BvaW50ZXIgZGF0YSBfX21heWJlX3VudXNlZClcbiB7XG4gXHRwZXJmX2d0a19fZXhpdChmYWxzZSk7XG4rXHRyZXR1cm4gR19TT1VSQ0VfUkVNT1ZFO1xuK31cbitcbit2b2lkIHBlcmZfZ3RrX19pbnN0YWxsX3F1aXRfc2lnbmFscyh2b2lkKVxuK3tcbitcdGdfdW5peF9zaWduYWxfYWRkKFNJR0lOVCwgIHBlcmZfZ3RrX19xdWl0X3NpZ25hbCwgTlVMTCk7XG4rXHRnX3VuaXhfc2lnbmFsX2FkZChTSUdRVUlULCBwZXJmX2d0a19fcXVpdF9zaWduYWwsIE5VTEwpO1xuK1x0Z191bml4X3NpZ25hbF9hZGQoU0lHVEVSTSwgcGVyZl9ndGtfX3F1aXRfc2lnbmFsLCBOVUxMKTtcbit9XG4rXG4rLypcbisgKiBTSUdTRUdWL1NJR0ZQRSBhcmUgc3luY2hyb25vdXMgZmF1bHRzOiB0aGVyZSdzIG5vIFwibGF0ZXJcIiB0byBkZWZlciB0byxcbisgKiBhbmQgbm8gc2FmZSB3YXkgdG8gcnVuIEdUSy9HTGliIGNvZGUgKG9yIGFueXRoaW5nIGVsc2Ugbm9uLWFzeW5jLXNpZ25hbC1cbisgKiBzYWZlKSBmcm9tIHRoZSBmYXVsdGluZyBjb250ZXh0LiBSZXBvcnQgYW5kIGxldCB0aGUgZGVmYXVsdCBkaXNwb3NpdGlvblxuKyAqIChjb3JlIGR1bXApIGhhcHBlbiBpbnN0ZWFkIG9mIHRyeWluZyB0byB0ZWFyIGRvd24gR1RLIHN0YXRlIGhlcmUuXG4rICovXG4rdm9pZCBwZXJmX2d0a19fZmF0YWxfc2lnbmFsKGludCBzaWcpXG4re1xuIFx0cHNpZ25hbChzaWcsIFwicGVyZlwiKTtcbitcdHNpZ25hbChzaWcsIFNJR19ERkwpO1xuK1x0cmFpc2Uoc2lnKTtcbiB9XG4gXG4gdm9pZCBwZXJmX2d0a19fcmVzaXplX3dpbmRvdyhHdGtXaWRnZXQgKndpbmRvdylcbiB7XG4gXHRHZGtSZWN0YW5nbGUgcmVjdDtcbi1cdEdka1NjcmVlbiAqc2NyZWVuO1xuLVx0aW50IG1vbml0b3I7XG4rXHRHZGtNb25pdG9yICptb25pdG9yO1xuK1x0R2RrRGlzcGxheSAqZGlzcGxheTtcbitcdEdMaXN0TW9kZWwgKm1vbml0b3JzO1xuIFx0aW50IGhlaWdodDtcbiBcdGludCB3aWR0aDtcbiBcbi1cdHNjcmVlbiA9IGd0a193aWRnZXRfZ2V0X3NjcmVlbih3aW5kb3cpO1xuK1x0ZGlzcGxheSA9IGd0a193aWRnZXRfZ2V0X2Rpc3BsYXkod2luZG93KTtcbitcdG1vbml0b3JzID0gZ2RrX2Rpc3BsYXlfZ2V0X21vbml0b3JzKGRpc3BsYXkpO1xuK1x0bW9uaXRvciA9IGdfbGlzdF9tb2RlbF9nZXRfaXRlbShtb25pdG9ycywgMCk7XG4rXHRpZiAoIW1vbml0b3IpIHtcbitcdFx0Z3RrX3dpbmRvd19zZXRfZGVmYXVsdF9zaXplKEdUS19XSU5ET1cod2luZG93KSwgODAwLCA2MDApO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4gXG4tXHRtb25pdG9yID0gZ2RrX3NjcmVlbl9nZXRfbW9uaXRvcl9hdF93aW5kb3coc2NyZWVuLCB3aW5kb3ctXHUwMDNld2luZG93KTtcbi1cbi1cdGdka19zY3JlZW5fZ2V0X21vbml0b3JfZ2VvbWV0cnkoc2NyZWVuLCBtb25pdG9yLCBcdTAwMjZyZWN0KTtcbitcdGdka19tb25pdG9yX2dldF9nZW9tZXRyeShtb25pdG9yLCBcdTAwMjZyZWN0KTtcbitcdGdfb2JqZWN0X3VucmVmKG1vbml0b3IpO1xuIFxuIFx0d2lkdGhcdD0gcmVjdC53aWR0aCAqIDMgLyA0O1xuIFx0aGVpZ2h0XHQ9IHJlY3QuaGVpZ2h0ICogMyAvIDQ7XG4gXG4tXHRndGtfd2luZG93X3Jlc2l6ZShHVEtfV0lORE9XKHdpbmRvdyksIHdpZHRoLCBoZWlnaHQpO1xuK1x0Z3RrX3dpbmRvd19zZXRfZGVmYXVsdF9zaXplKEdUS19XSU5ET1cod2luZG93KSwgd2lkdGgsIGhlaWdodCk7XG4rfVxuK1xuK3N0YXRpYyBHTWFpbkxvb3AgKnBlcmZfZ3RrX19tYWluX2xvb3A7XG4rXG4rdm9pZCBwZXJmX2d0a19fcXVpdF9tYWluX2xvb3Aodm9pZClcbit7XG4rXHRpZiAocGVyZl9ndGtfX21haW5fbG9vcClcbitcdFx0Z19tYWluX2xvb3BfcXVpdChwZXJmX2d0a19fbWFpbl9sb29wKTtcbit9XG4rXG4rc3RhdGljIGdib29sZWFuIHBlcmZfZ3RrX19jbG9zZV9yZXF1ZXN0KEd0a1dpZGdldCAqd2lkZ2V0IF9fbWF5YmVfdW51c2VkLFxuK1x0XHRcdFx0XHRncG9pbnRlciBkYXRhIF9fbWF5YmVfdW51c2VkKVxuK3tcbitcdHBlcmZfZ3RrX19xdWl0X21haW5fbG9vcCgpO1xuK1xuK1x0cmV0dXJuIEZBTFNFO1xuK31cbitcbit2b2lkIHBlcmZfZ3RrX19ydW5fbWFpbl9sb29wKEd0a1dpZGdldCAqd2luZG93KVxuK3tcbitcdGdfc2lnbmFsX2Nvbm5lY3Qod2luZG93LCBcImNsb3NlLXJlcXVlc3RcIixcbitcdFx0XHQgR19DQUxMQkFDSyhwZXJmX2d0a19fY2xvc2VfcmVxdWVzdCksIE5VTEwpO1xuK1xuK1x0cGVyZl9ndGtfX21haW5fbG9vcCA9IGdfbWFpbl9sb29wX25ldyhOVUxMLCBGQUxTRSk7XG4rXHRnX21haW5fbG9vcF9ydW4ocGVyZl9ndGtfX21haW5fbG9vcCk7XG4rXHRnX2NsZWFyX3BvaW50ZXIoXHUwMDI2cGVyZl9ndGtfX21haW5fbG9vcCwgZ19tYWluX2xvb3BfdW5yZWYpO1xuIH1cbiBcbiBjb25zdCBjaGFyICpwZXJmX2d0a19fZ2V0X3BlcmNlbnRfY29sb3IoZG91YmxlIHBlcmNlbnQpXG5AQCAtNDIsMzMgKzEwMiwzNSBAQCBjb25zdCBjaGFyICpwZXJmX2d0a19fZ2V0X3BlcmNlbnRfY29sb3IoZG91YmxlIHBlcmNlbnQpXG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4gXG4tI2lmZGVmIEhBVkVfR1RLX0lORk9fQkFSX1NVUFBPUlRcbitzdGF0aWMgdm9pZCBwZXJmX2d0a19faGlkZV93aWRnZXQoR3RrV2lkZ2V0ICp3aWRnZXQsIGdpbnQgcmVzcG9uc2VfaWQgX19tYXliZV91bnVzZWQsXG4rXHRcdFx0XHQgICBncG9pbnRlciBkYXRhIF9fbWF5YmVfdW51c2VkKVxuK3tcbitcdGd0a193aWRnZXRfc2V0X3Zpc2libGUod2lkZ2V0LCBGQUxTRSk7XG4rfVxuK1xuIEd0a1dpZGdldCAqcGVyZl9ndGtfX3NldHVwX2luZm9fYmFyKHZvaWQpXG4ge1xuIFx0R3RrV2lkZ2V0ICppbmZvX2JhcjtcbiBcdEd0a1dpZGdldCAqbGFiZWw7XG4tXHRHdGtXaWRnZXQgKmNvbnRlbnRfYXJlYTtcbiBcbiBcdGluZm9fYmFyID0gZ3RrX2luZm9fYmFyX25ldygpO1xuLVx0Z3RrX3dpZGdldF9zZXRfbm9fc2hvd19hbGwoaW5mb19iYXIsIFRSVUUpO1xuK1x0Z3RrX3dpZGdldF9zZXRfdmlzaWJsZShpbmZvX2JhciwgRkFMU0UpO1xuIFxuIFx0bGFiZWwgPSBndGtfbGFiZWxfbmV3KFwiXCIpO1xuLVx0Z3RrX3dpZGdldF9zaG93KGxhYmVsKTtcbitcdGd0a193aWRnZXRfc2V0X3Zpc2libGUobGFiZWwsIFRSVUUpO1xuIFxuLVx0Y29udGVudF9hcmVhID0gZ3RrX2luZm9fYmFyX2dldF9jb250ZW50X2FyZWEoR1RLX0lORk9fQkFSKGluZm9fYmFyKSk7XG4tXHRndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKGNvbnRlbnRfYXJlYSksIGxhYmVsKTtcbitcdGd0a19pbmZvX2Jhcl9hZGRfY2hpbGQoR1RLX0lORk9fQkFSKGluZm9fYmFyKSwgbGFiZWwpO1xuIFxuLVx0Z3RrX2luZm9fYmFyX2FkZF9idXR0b24oR1RLX0lORk9fQkFSKGluZm9fYmFyKSwgR1RLX1NUT0NLX09LLFxuK1x0Z3RrX2luZm9fYmFyX2FkZF9idXR0b24oR1RLX0lORk9fQkFSKGluZm9fYmFyKSwgXCJfT0tcIixcbiBcdFx0XHRcdEdUS19SRVNQT05TRV9PSyk7XG4gXHRnX3NpZ25hbF9jb25uZWN0KGluZm9fYmFyLCBcInJlc3BvbnNlXCIsXG4tXHRcdFx0IEdfQ0FMTEJBQ0soZ3RrX3dpZGdldF9oaWRlKSwgTlVMTCk7XG4rXHRcdFx0IEdfQ0FMTEJBQ0socGVyZl9ndGtfX2hpZGVfd2lkZ2V0KSwgTlVMTCk7XG4gXG4gXHRwZ2N0eC1cdTAwM2VpbmZvX2JhciA9IGluZm9fYmFyO1xuIFx0cGdjdHgtXHUwMDNlbWVzc2FnZV9sYWJlbCA9IGxhYmVsO1xuIFxuIFx0cmV0dXJuIGluZm9fYmFyO1xuIH1cbi0jZW5kaWZcbiBcbiBHdGtXaWRnZXQgKnBlcmZfZ3RrX19zZXR1cF9zdGF0dXNiYXIodm9pZClcbiB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91aS9ndGsvZ3RrLmggYi90b29scy9wZXJmL3VpL2d0ay9ndGsuaFxuaW5kZXggYTJiNDk3ZjAzZmQ2ZS4uNmIzN2ZkOTk0M2M5ZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2d0ay5oXG4rKysgYi90b29scy9wZXJmL3VpL2d0ay9ndGsuaFxuQEAgLTEzLDEwICsxMyw4IEBAIHN0cnVjdCBwZXJmX2d0a19jb250ZXh0IHtcbiBcdEd0a1dpZGdldCAqbWFpbl93aW5kb3c7XG4gXHRHdGtXaWRnZXQgKm5vdGVib29rO1xuIFxuLSNpZmRlZiBIQVZFX0dUS19JTkZPX0JBUl9TVVBQT1JUXG4gXHRHdGtXaWRnZXQgKmluZm9fYmFyO1xuIFx0R3RrV2lkZ2V0ICptZXNzYWdlX2xhYmVsO1xuLSNlbmRpZlxuIFx0R3RrV2lkZ2V0ICpzdGF0YmFyO1xuIFx0Z3VpbnQgc3RhdGJhcl9jdHhfaWQ7XG4gfTtcbkBAIC0zOCwxOSArMzYsMTUgQEAgdm9pZCBwZXJmX2d0a19faW5pdF9oZWxwbGluZSh2b2lkKTtcbiB2b2lkIGd0a191aV9wcm9ncmVzc19faW5pdCh2b2lkKTtcbiB2b2lkIHBlcmZfZ3RrX19pbml0X2hwcCh2b2lkKTtcbiBcbi12b2lkIHBlcmZfZ3RrX19zaWduYWwoaW50IHNpZyk7XG4rdm9pZCBwZXJmX2d0a19faW5zdGFsbF9xdWl0X3NpZ25hbHModm9pZCk7XG4rdm9pZCBwZXJmX2d0a19fZmF0YWxfc2lnbmFsKGludCBzaWcpO1xuIHZvaWQgcGVyZl9ndGtfX3Jlc2l6ZV93aW5kb3coR3RrV2lkZ2V0ICp3aW5kb3cpO1xuK3ZvaWQgcGVyZl9ndGtfX3J1bl9tYWluX2xvb3AoR3RrV2lkZ2V0ICp3aW5kb3cpO1xuK3ZvaWQgcGVyZl9ndGtfX3F1aXRfbWFpbl9sb29wKHZvaWQpO1xuK3ZvaWQgcGVyZl9ndGtfX3F1aXRfZXJyb3JfZGlhbG9nKHZvaWQpO1xuIGNvbnN0IGNoYXIgKnBlcmZfZ3RrX19nZXRfcGVyY2VudF9jb2xvcihkb3VibGUgcGVyY2VudCk7XG4gR3RrV2lkZ2V0ICpwZXJmX2d0a19fc2V0dXBfc3RhdHVzYmFyKHZvaWQpO1xuLVxuLSNpZmRlZiBIQVZFX0dUS19JTkZPX0JBUl9TVVBQT1JUXG4gR3RrV2lkZ2V0ICpwZXJmX2d0a19fc2V0dXBfaW5mb19iYXIodm9pZCk7XG4tI2Vsc2Vcbi1zdGF0aWMgaW5saW5lIEd0a1dpZGdldCAqcGVyZl9ndGtfX3NldHVwX2luZm9fYmFyKHZvaWQpXG4te1xuLVx0cmV0dXJuIE5VTEw7XG4tfVxuLSNlbmRpZlxuIFxuIHN0cnVjdCBldnNlbDtcbiBzdHJ1Y3QgZXZsaXN0O1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2hpc3RzLmMgYi90b29scy9wZXJmL3VpL2d0ay9oaXN0cy5jXG5pbmRleCBiYWUyMWYzMzZhZTZkLi43MTZkY2YwMmJkMGU4IDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvaGlzdHMuY1xuKysrIGIvdG9vbHMvcGVyZi91aS9ndGsvaGlzdHMuY1xuQEAgLTgsNiArOCw4IEBAXG4gI2luY2x1ZGUgXCIuLi9oZWxwbGluZS5oXCJcbiAjaW5jbHVkZSBcIi4uL3N0cmluZzIuaFwiXG4gI2luY2x1ZGUgXHUwMDNjc2lnbmFsLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NzdGRhcmcuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY3N0ZGlvLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NzdGRsaWIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3N0cmluZy5oXHUwMDNlXG4gXG5AQCAtMzk1LDExICszOTcsOSBAQCBzdGF0aWMgdm9pZCBwZXJmX2d0a19fc2hvd19oaXN0cyhHdGtXaWRnZXQgKndpbmRvdywgc3RydWN0IGhpc3RzICpoaXN0cyxcbiBcdFx0fVxuIFx0fVxuIFxuLVx0Z3RrX3RyZWVfdmlld19zZXRfcnVsZXNfaGludChHVEtfVFJFRV9WSUVXKHZpZXcpLCBUUlVFKTtcbi1cbiBcdGdfc2lnbmFsX2Nvbm5lY3QodmlldywgXCJyb3ctYWN0aXZhdGVkXCIsXG4gXHRcdFx0IEdfQ0FMTEJBQ0sob25fcm93X2FjdGl2YXRlZCksIE5VTEwpO1xuLVx0Z3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUih3aW5kb3cpLCB2aWV3KTtcbitcdGd0a19zY3JvbGxlZF93aW5kb3dfc2V0X2NoaWxkKEdUS19TQ1JPTExFRF9XSU5ET1cod2luZG93KSwgdmlldyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHBlcmZfZ3RrX19hZGRfaGllcmFyY2h5X2VudHJpZXMoc3RydWN0IGhpc3RzICpoaXN0cyxcbkBAIC01ODMsMTEgKzU4Myw5IEBAIHN0YXRpYyB2b2lkIHBlcmZfZ3RrX19zaG93X2hpZXJhcmNoeShHdGtXaWRnZXQgKndpbmRvdywgc3RydWN0IGhpc3RzICpoaXN0cyxcbiBcdHBlcmZfZ3RrX19hZGRfaGllcmFyY2h5X2VudHJpZXMoaGlzdHMsIFx1MDAyNmhpc3RzLVx1MDAzZWVudHJpZXMsIHN0b3JlLFxuIFx0XHRcdFx0XHROVUxMLCBcdTAwMjZocHAsIG1pbl9wY250KTtcbiBcbi1cdGd0a190cmVlX3ZpZXdfc2V0X3J1bGVzX2hpbnQoR1RLX1RSRUVfVklFVyh2aWV3KSwgVFJVRSk7XG4tXG4gXHRnX3NpZ25hbF9jb25uZWN0KHZpZXcsIFwicm93LWFjdGl2YXRlZFwiLFxuIFx0XHRcdCBHX0NBTExCQUNLKG9uX3Jvd19hY3RpdmF0ZWQpLCBOVUxMKTtcbi1cdGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIod2luZG93KSwgdmlldyk7XG4rXHRndGtfc2Nyb2xsZWRfd2luZG93X3NldF9jaGlsZChHVEtfU0NST0xMRURfV0lORE9XKHdpbmRvdyksIHZpZXcpO1xuIH1cbiBcbiBpbnQgZXZsaXN0X19ndGtfYnJvd3NlX2hpc3RzKHN0cnVjdCBldmxpc3QgKmV2bGlzdCwgY29uc3QgY2hhciAqaGVscCxcbkBAIC02MDAsMzYgKzU5OCwzMiBAQCBpbnQgZXZsaXN0X19ndGtfYnJvd3NlX2hpc3RzKHN0cnVjdCBldmxpc3QgKmV2bGlzdCwgY29uc3QgY2hhciAqaGVscCxcbiBcdEd0a1dpZGdldCAqc3RhdGJhcjtcbiBcdEd0a1dpZGdldCAqd2luZG93O1xuIFxuLVx0c2lnbmFsKFNJR1NFR1YsIHBlcmZfZ3RrX19zaWduYWwpO1xuLVx0c2lnbmFsKFNJR0ZQRSwgIHBlcmZfZ3RrX19zaWduYWwpO1xuLVx0c2lnbmFsKFNJR0lOVCwgIHBlcmZfZ3RrX19zaWduYWwpO1xuLVx0c2lnbmFsKFNJR1FVSVQsIHBlcmZfZ3RrX19zaWduYWwpO1xuLVx0c2lnbmFsKFNJR1RFUk0sIHBlcmZfZ3RrX19zaWduYWwpO1xuK1x0c2lnbmFsKFNJR1NFR1YsIHBlcmZfZ3RrX19mYXRhbF9zaWduYWwpO1xuK1x0c2lnbmFsKFNJR0ZQRSwgIHBlcmZfZ3RrX19mYXRhbF9zaWduYWwpO1xuK1x0cGVyZl9ndGtfX2luc3RhbGxfcXVpdF9zaWduYWxzKCk7XG4gXG4tXHR3aW5kb3cgPSBndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1RPUExFVkVMKTtcbitcdHdpbmRvdyA9IGd0a193aW5kb3dfbmV3KCk7XG4gXG4gXHRndGtfd2luZG93X3NldF90aXRsZShHVEtfV0lORE9XKHdpbmRvdyksIFwicGVyZiByZXBvcnRcIik7XG4gXG4tXHRnX3NpZ25hbF9jb25uZWN0KHdpbmRvdywgXCJkZWxldGVfZXZlbnRcIiwgZ3RrX21haW5fcXVpdCwgTlVMTCk7XG4tXG4gXHRwZ2N0eCA9IHBlcmZfZ3RrX19hY3RpdmF0ZV9jb250ZXh0KHdpbmRvdyk7XG4gXHRpZiAoIXBnY3R4KVxuIFx0XHRyZXR1cm4gLTE7XG4gXG4tXHR2Ym94ID0gZ3RrX3Zib3hfbmV3KEZBTFNFLCAwKTtcbitcdHZib3ggPSBndGtfYm94X25ldyhHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIDApO1xuIFxuIFx0bm90ZWJvb2sgPSBndGtfbm90ZWJvb2tfbmV3KCk7XG4gXG4tXHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgbm90ZWJvb2ssIFRSVUUsIFRSVUUsIDApO1xuK1x0Z3RrX3dpZGdldF9zZXRfdmV4cGFuZChub3RlYm9vaywgVFJVRSk7XG4rXHRndGtfYm94X2FwcGVuZChHVEtfQk9YKHZib3gpLCBub3RlYm9vayk7XG4gXG4gXHRpbmZvX2JhciA9IHBlcmZfZ3RrX19zZXR1cF9pbmZvX2JhcigpO1xuLVx0aWYgKGluZm9fYmFyKVxuLVx0XHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgaW5mb19iYXIsIEZBTFNFLCBGQUxTRSwgMCk7XG4rXHRndGtfYm94X2FwcGVuZChHVEtfQk9YKHZib3gpLCBpbmZvX2Jhcik7XG4gXG4gXHRzdGF0YmFyID0gcGVyZl9ndGtfX3NldHVwX3N0YXR1c2JhcigpO1xuLVx0Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIHN0YXRiYXIsIEZBTFNFLCBGQUxTRSwgMCk7XG4rXHRndGtfYm94X2FwcGVuZChHVEtfQk9YKHZib3gpLCBzdGF0YmFyKTtcbiBcbi1cdGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIod2luZG93KSwgdmJveCk7XG4rXHRndGtfd2luZG93X3NldF9jaGlsZChHVEtfV0lORE9XKHdpbmRvdyksIHZib3gpO1xuIFxuIFx0ZXZsaXN0X19mb3JfZWFjaF9lbnRyeShldmxpc3QsIHBvcykge1xuIFx0XHRzdHJ1Y3QgaGlzdHMgKmhpc3RzID0gZXZzZWxfX2hpc3RzKHBvcyk7XG5AQCAtNjQ5LDcgKzY0Myw3IEBAIGludCBldmxpc3RfX2d0a19icm93c2VfaGlzdHMoc3RydWN0IGV2bGlzdCAqZXZsaXN0LCBjb25zdCBjaGFyICpoZWxwLFxuIFx0XHRcdH1cbiBcdFx0fVxuIFxuLVx0XHRzY3JvbGxlZF93aW5kb3cgPSBndGtfc2Nyb2xsZWRfd2luZG93X25ldyhOVUxMLCBOVUxMKTtcbitcdFx0c2Nyb2xsZWRfd2luZG93ID0gZ3RrX3Njcm9sbGVkX3dpbmRvd19uZXcoKTtcbiBcbiBcdFx0Z3RrX3Njcm9sbGVkX3dpbmRvd19zZXRfcG9saWN5KEdUS19TQ1JPTExFRF9XSU5ET1coc2Nyb2xsZWRfd2luZG93KSxcbiBcdFx0XHRcdFx0XHRcdEdUS19QT0xJQ1lfQVVUT01BVElDLFxuQEAgLTY2NSwxNSArNjU5LDEyIEBAIGludCBldmxpc3RfX2d0a19icm93c2VfaGlzdHMoc3RydWN0IGV2bGlzdCAqZXZsaXN0LCBjb25zdCBjaGFyICpoZWxwLFxuIFx0XHRndGtfbm90ZWJvb2tfYXBwZW5kX3BhZ2UoR1RLX05PVEVCT09LKG5vdGVib29rKSwgc2Nyb2xsZWRfd2luZG93LCB0YWJfbGFiZWwpO1xuIFx0fVxuIFxuLVx0Z3RrX3dpZGdldF9zaG93X2FsbCh3aW5kb3cpO1xuLVxuIFx0cGVyZl9ndGtfX3Jlc2l6ZV93aW5kb3cod2luZG93KTtcbi1cbi1cdGd0a193aW5kb3dfc2V0X3Bvc2l0aW9uKEdUS19XSU5ET1cod2luZG93KSwgR1RLX1dJTl9QT1NfQ0VOVEVSKTtcbitcdGd0a193aWRnZXRfc2V0X3Zpc2libGUod2luZG93LCBUUlVFKTtcbiBcbiBcdHVpX2hlbHBsaW5lX19wdXNoKGhlbHApO1xuIFxuLVx0Z3RrX21haW4oKTtcbitcdHBlcmZfZ3RrX19ydW5fbWFpbl9sb29wKHdpbmRvdyk7XG4gXG4gXHRwZXJmX2d0a19fZGVhY3RpdmF0ZV9jb250ZXh0KFx1MDAyNnBnY3R4KTtcbiBcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL2d0ay9wcm9ncmVzcy5jIGIvdG9vbHMvcGVyZi91aS9ndGsvcHJvZ3Jlc3MuY1xuaW5kZXggZWVhNmZjZGU1MThhOC4uNzcwZjkyNTFiNTRiNyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3Byb2dyZXNzLmNcbisrKyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL3Byb2dyZXNzLmNcbkBAIC0xLDQ5ICsxLDY1IEBAXG4gLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAjaW5jbHVkZSBcdTAwM2NpbnR0eXBlcy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjc3RkaW8uaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwiZ3RrLmhcIlxuICNpbmNsdWRlIFwiLi4vcHJvZ3Jlc3MuaFwiXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvY29tcGlsZXIuaFx1MDAzZVxuIFxuIHN0YXRpYyBHdGtXaWRnZXQgKmRpYWxvZztcbiBzdGF0aWMgR3RrV2lkZ2V0ICpwcm9ncmVzcztcbiBcbitzdGF0aWMgdm9pZCBndGtfdWlfcHJvZ3Jlc3NfX2Rlc3Ryb3llZChHdGtXaWRnZXQgKndpZGdldCBfX21heWJlX3VudXNlZCxcbitcdFx0XHRcdFx0Z3BvaW50ZXIgZGF0YSBfX21heWJlX3VudXNlZClcbit7XG4rXHRkaWFsb2cgPSBOVUxMO1xuK1x0cHJvZ3Jlc3MgPSBOVUxMO1xuK31cbitcbiBzdGF0aWMgdm9pZCBndGtfdWlfcHJvZ3Jlc3NfX3VwZGF0ZShzdHJ1Y3QgdWlfcHJvZ3Jlc3MgKnApXG4ge1xuIFx0ZG91YmxlIGZyYWN0aW9uID0gcC1cdTAwM2V0b3RhbCA/IDEuMCAqIHAtXHUwMDNlY3VyciAvIHAtXHUwMDNldG90YWwgOiAwLjA7XG4gXHRjaGFyIGJ1ZlsxMDI0XTtcbiBcbiBcdGlmIChkaWFsb2cgPT0gTlVMTCkge1xuLVx0XHRHdGtXaWRnZXQgKnZib3ggPSBndGtfdmJveF9uZXcoVFJVRSwgNSk7XG4rXHRcdEd0a1dpZGdldCAqdmJveCA9IGd0a19ib3hfbmV3KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgNSk7XG4gXHRcdEd0a1dpZGdldCAqbGFiZWwgPSBndGtfbGFiZWxfbmV3KHAtXHUwMDNldGl0bGUpO1xuIFxuLVx0XHRkaWFsb2cgPSBndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1RPUExFVkVMKTtcbitcdFx0ZGlhbG9nID0gZ3RrX3dpbmRvd19uZXcoKTtcbiBcdFx0cHJvZ3Jlc3MgPSBndGtfcHJvZ3Jlc3NfYmFyX25ldygpO1xuIFxuLVx0XHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgbGFiZWwsIFRSVUUsIEZBTFNFLCAzKTtcbi1cdFx0Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIHByb2dyZXNzLCBUUlVFLCBUUlVFLCAzKTtcbitcdFx0Z3RrX3dpZGdldF9zZXRfdmV4cGFuZChsYWJlbCwgVFJVRSk7XG4rXHRcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIGxhYmVsKTtcbitcdFx0Z3RrX3dpZGdldF9zZXRfdmV4cGFuZChwcm9ncmVzcywgVFJVRSk7XG4rXHRcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIHByb2dyZXNzKTtcbitcbitcdFx0Z3RrX3dpbmRvd19zZXRfY2hpbGQoR1RLX1dJTkRPVyhkaWFsb2cpLCB2Ym94KTtcbiBcbi1cdFx0Z3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUihkaWFsb2cpLCB2Ym94KTtcbitcdFx0Z19zaWduYWxfY29ubmVjdChkaWFsb2csIFwiZGVzdHJveVwiLFxuK1x0XHRcdFx0IEdfQ0FMTEJBQ0soZ3RrX3VpX3Byb2dyZXNzX19kZXN0cm95ZWQpLCBOVUxMKTtcbiBcbiBcdFx0Z3RrX3dpbmRvd19zZXRfdGl0bGUoR1RLX1dJTkRPVyhkaWFsb2cpLCBcInBlcmZcIik7XG4tXHRcdGd0a193aW5kb3dfcmVzaXplKEdUS19XSU5ET1coZGlhbG9nKSwgMzAwLCA4MCk7XG4tXHRcdGd0a193aW5kb3dfc2V0X3Bvc2l0aW9uKEdUS19XSU5ET1coZGlhbG9nKSwgR1RLX1dJTl9QT1NfQ0VOVEVSKTtcbitcdFx0Z3RrX3dpbmRvd19zZXRfZGVmYXVsdF9zaXplKEdUS19XSU5ET1coZGlhbG9nKSwgMzAwLCA4MCk7XG4gXG4tXHRcdGd0a193aWRnZXRfc2hvd19hbGwoZGlhbG9nKTtcbitcdFx0Z3RrX3dpZGdldF9zZXRfdmlzaWJsZShkaWFsb2csIFRSVUUpO1xuIFx0fVxuIFxuIFx0Z3RrX3Byb2dyZXNzX2Jhcl9zZXRfZnJhY3Rpb24oR1RLX1BST0dSRVNTX0JBUihwcm9ncmVzcyksIGZyYWN0aW9uKTtcbiBcdHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksIFwiJVwiUFJJdTY0XCIgLyAlXCJQUkl1NjQsIHAtXHUwMDNlY3VyciwgcC1cdTAwM2V0b3RhbCk7XG4gXHRndGtfcHJvZ3Jlc3NfYmFyX3NldF90ZXh0KEdUS19QUk9HUkVTU19CQVIocHJvZ3Jlc3MpLCBidWYpO1xuIFxuLVx0Lyogd2UgZGlkbid0IGNhbGwgZ3RrX21haW4geWV0LCBzbyBkbyBpdCBtYW51YWxseSAqL1xuLVx0d2hpbGUgKGd0a19ldmVudHNfcGVuZGluZygpKVxuLVx0XHRndGtfbWFpbl9pdGVyYXRpb24oKTtcbitcdC8qIHdlIGRpZG4ndCBzdGFydCBhIG1haW4gbG9vcCB5ZXQsIHNvIHB1bXAgZXZlbnRzIG1hbnVhbGx5ICovXG4rXHR3aGlsZSAoZ19tYWluX2NvbnRleHRfcGVuZGluZyhOVUxMKSlcbitcdFx0Z19tYWluX2NvbnRleHRfaXRlcmF0aW9uKE5VTEwsIEZBTFNFKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgZ3RrX3VpX3Byb2dyZXNzX19maW5pc2godm9pZClcbiB7XG4rXHRpZiAoZGlhbG9nID09IE5VTEwpXG4rXHRcdHJldHVybjtcbitcbiBcdC8qIHRoaXMgd2lsbCBhbHNvIGRlc3Ryb3kgYWxsIG9mIGl0cyBjaGlsZHJlbiAqL1xuLVx0Z3RrX3dpZGdldF9kZXN0cm95KGRpYWxvZyk7XG4rXHRndGtfd2luZG93X2Rlc3Ryb3koR1RLX1dJTkRPVyhkaWFsb2cpKTtcbiBcbiBcdGRpYWxvZyA9IE5VTEw7XG4gfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3NldHVwLmMgYi90b29scy9wZXJmL3VpL2d0ay9zZXR1cC5jXG5pbmRleCBmNWVlZTRkNjY4NzM4Li45YjQ0ZjM3MTk3NDc3IDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvc2V0dXAuY1xuKysrIGIvdG9vbHMvcGVyZi91aS9ndGsvc2V0dXAuY1xuQEAgLTEyLDcgKzEyLDcgQEAgaW50IHBlcmZfZ3RrX19pbml0KHZvaWQpXG4gXHRndGtfdWlfcHJvZ3Jlc3NfX2luaXQoKTtcbiBcdHBlcmZfZ3RrX19pbml0X2hwcCgpO1xuIFxuLVx0cmV0dXJuIGd0a19pbml0X2NoZWNrKE5VTEwsIE5VTEwpID8gMCA6IC0xO1xuK1x0cmV0dXJuIGd0a19pbml0X2NoZWNrKCkgPyAwIDogLTE7XG4gfVxuIFxuIHZvaWQgcGVyZl9ndGtfX2V4aXQoYm9vbCB3YWl0X2Zvcl9vayBfX21heWJlX3VudXNlZClcbkBAIC0yMCw1ICsyMCw2IEBAIHZvaWQgcGVyZl9ndGtfX2V4aXQoYm9vbCB3YWl0X2Zvcl9vayBfX21heWJlX3VudXNlZClcbiBcdGlmICghcGVyZl9ndGtfX2lzX2FjdGl2ZV9jb250ZXh0KHBnY3R4KSlcbiBcdFx0cmV0dXJuO1xuIFx0cGVyZl9lcnJvcl9fdW5yZWdpc3RlcihcdTAwMjZwZXJmX2d0a19lb3BzKTtcbi1cdGd0a19tYWluX3F1aXQoKTtcbitcdHBlcmZfZ3RrX19xdWl0X2Vycm9yX2RpYWxvZygpO1xuK1x0cGVyZl9ndGtfX3F1aXRfbWFpbl9sb29wKCk7XG4gfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3V0aWwuYyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL3V0aWwuY1xuaW5kZXggYzQ3ZjVjMzg3ODM4Yy4uNTgyM2ZmMGQ3YzJhNyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3V0aWwuY1xuKysrIGIvdG9vbHMvcGVyZi91aS9ndGsvdXRpbC5jXG5AQCAtMiw4ICsyLDEwIEBAXG4gI2luY2x1ZGUgXCIuLi91dGlsLmhcIlxuICNpbmNsdWRlIFwiZ3RrLmhcIlxuIFxuKyNpbmNsdWRlIFx1MDAzY3N0ZGFyZy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjc3RkaW8uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY3N0ZGxpYi5oXHUwMDNlXG4tI2luY2x1ZGUgXHUwMDNjc3RyaW5nLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9jb21waWxlci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvemFsbG9jLmhcdTAwM2VcbiBcbiBzdHJ1Y3QgcGVyZl9ndGtfY29udGV4dCAqcGdjdHg7XG5AQCAtMjgsODYgKzMwLDEwMyBAQCBpbnQgcGVyZl9ndGtfX2RlYWN0aXZhdGVfY29udGV4dChzdHJ1Y3QgcGVyZl9ndGtfY29udGV4dCAqKmN0eClcbiBcdHJldHVybiAwO1xuIH1cbiBcbisvKlxuKyAqIHBlcmZfZ3RrX19lcnJvcigpIGNhbiBiZSBjYWxsZWQgcmUtZW50cmFudGx5LCBzaW5jZSB0aGUgZGlhbG9nIGlzbid0XG4rICogbW9kYWwgYW5kIGl0cyBuZXN0ZWQgbG9vcCBzdGlsbCBwdW1wcyBldmVudHMgZm9yIHRoZSBtYWluIHdpbmRvdy5cbisgKiBUcmFjayBldmVyeSBjdXJyZW50bHkgcnVubmluZyBsb29wIGluc3RlYWQgb2YgYSBzaW5nbGUgcG9pbnRlciwgc28gYVxuKyAqIG5lc3RlZCBjYWxsIGNhbid0IGNsb2JiZXIgYW4gb3V0ZXIgY2FsbCdzIGxvb3AgYW5kIGxlYWsgaXQuXG4rICovXG4rc3RhdGljIEdTTGlzdCAqcGVyZl9ndGtfX2Vycm9yX2xvb3BzO1xuK1xuK3N0YXRpYyB2b2lkIHBlcmZfZ3RrX19xdWl0X2xvb3AoZ3BvaW50ZXIgZGF0YSwgZ3BvaW50ZXIgdXNlcl9kYXRhIF9fbWF5YmVfdW51c2VkKVxuK3tcbitcdGdfbWFpbl9sb29wX3F1aXQoZGF0YSk7XG4rfVxuK1xuK3ZvaWQgcGVyZl9ndGtfX3F1aXRfZXJyb3JfZGlhbG9nKHZvaWQpXG4re1xuK1x0Z19zbGlzdF9mb3JlYWNoKHBlcmZfZ3RrX19lcnJvcl9sb29wcywgcGVyZl9ndGtfX3F1aXRfbG9vcCwgTlVMTCk7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHBlcmZfZ3RrX19kaWFsb2dfcmVzcG9uc2UoR3RrRGlhbG9nICpkaWFsb2csXG4rXHRcdFx0XHQgICAgICBnaW50IHJlc3BvbnNlX2lkIF9fbWF5YmVfdW51c2VkLFxuK1x0XHRcdFx0ICAgICAgZ3BvaW50ZXIgZGF0YSBfX21heWJlX3VudXNlZClcbit7XG4rXHRndGtfd2luZG93X2Rlc3Ryb3koR1RLX1dJTkRPVyhkaWFsb2cpKTtcbit9XG4rXG4gc3RhdGljIGludCBwZXJmX2d0a19fZXJyb3IoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpXG4ge1xuIFx0Y2hhciAqbXNnO1xuIFx0R3RrV2lkZ2V0ICpkaWFsb2c7XG4rXHRHTWFpbkxvb3AgKmxvb3A7XG4rXHR2YV9saXN0IGFyZ3NfY29weTtcbiBcbitcdHZhX2NvcHkoYXJnc19jb3B5LCBhcmdzKTtcbiBcdGlmICghcGVyZl9ndGtfX2lzX2FjdGl2ZV9jb250ZXh0KHBnY3R4KSB8fFxuLVx0ICAgIHZhc3ByaW50ZihcdTAwMjZtc2csIGZvcm1hdCwgYXJncykgXHUwMDNjIDApIHtcbitcdCAgICB2YXNwcmludGYoXHUwMDI2bXNnLCBmb3JtYXQsIGFyZ3NfY29weSkgXHUwMDNjIDApIHtcbitcdFx0dmFfZW5kKGFyZ3NfY29weSk7XG4gXHRcdGZwcmludGYoc3RkZXJyLCBcIkVycm9yOlxcblwiKTtcbiBcdFx0dmZwcmludGYoc3RkZXJyLCBmb3JtYXQsIGFyZ3MpO1xuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCJcXG5cIik7XG4gXHRcdHJldHVybiAtMTtcbiBcdH1cbitcdHZhX2VuZChhcmdzX2NvcHkpO1xuIFxuIFx0ZGlhbG9nID0gZ3RrX21lc3NhZ2VfZGlhbG9nX25ld193aXRoX21hcmt1cChHVEtfV0lORE9XKHBnY3R4LVx1MDAzZW1haW5fd2luZG93KSxcbiBcdFx0XHRcdFx0R1RLX0RJQUxPR19ERVNUUk9ZX1dJVEhfUEFSRU5ULFxuIFx0XHRcdFx0XHRHVEtfTUVTU0FHRV9FUlJPUixcbiBcdFx0XHRcdFx0R1RLX0JVVFRPTlNfQ0xPU0UsXG4gXHRcdFx0XHRcdFwiXHUwMDNjYlx1MDAzZUVycm9yXHUwMDNjL2JcdTAwM2VcXG5cXG4lc1wiLCBtc2cpO1xuLVx0Z3RrX2RpYWxvZ19ydW4oR1RLX0RJQUxPRyhkaWFsb2cpKTtcbiBcbi1cdGd0a193aWRnZXRfZGVzdHJveShkaWFsb2cpO1xuK1x0LypcbitcdCAqIFwicmVzcG9uc2VcIiBvbmx5IGZpcmVzIHdoZW4gYSBidXR0b24gaXMgY2xpY2tlZDsgREVTVFJPWV9XSVRIX1BBUkVOVFxuK1x0ICogZGVzdHJveXMgdGhlIGRpYWxvZyBkaXJlY3RseSB3aXRob3V0IGl0LiBRdWl0IGZyb20gXCJkZXN0cm95XCJcbitcdCAqIGluc3RlYWQsIHdoaWNoIGZpcmVzIGVpdGhlciB3YXksIHNvIHRoZSBuZXN0ZWQgbG9vcCBiZWxvdyBjYW4ndFxuK1x0ICogb3V0bGl2ZSB0aGUgZGlhbG9nIGFuZCBoYW5nLlxuK1x0ICovXG4rXHRsb29wID0gZ19tYWluX2xvb3BfbmV3KE5VTEwsIEZBTFNFKTtcbitcdHBlcmZfZ3RrX19lcnJvcl9sb29wcyA9IGdfc2xpc3RfcHJlcGVuZChwZXJmX2d0a19fZXJyb3JfbG9vcHMsIGxvb3ApO1xuK1x0Z19zaWduYWxfY29ubmVjdChkaWFsb2csIFwicmVzcG9uc2VcIixcbitcdFx0XHQgR19DQUxMQkFDSyhwZXJmX2d0a19fZGlhbG9nX3Jlc3BvbnNlKSwgTlVMTCk7XG4rXHRnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoZGlhbG9nLCBcImRlc3Ryb3lcIixcbitcdFx0XHRcdCBHX0NBTExCQUNLKGdfbWFpbl9sb29wX3F1aXQpLCBsb29wKTtcbitcbitcdGd0a193aWRnZXRfc2V0X3Zpc2libGUoZGlhbG9nLCBUUlVFKTtcbitcdGdfbWFpbl9sb29wX3J1bihsb29wKTtcbitcdHBlcmZfZ3RrX19lcnJvcl9sb29wcyA9IGdfc2xpc3RfcmVtb3ZlKHBlcmZfZ3RrX19lcnJvcl9sb29wcywgbG9vcCk7XG4rXHRnX21haW5fbG9vcF91bnJlZihsb29wKTtcbitcbiBcdGZyZWUobXNnKTtcbiBcdHJldHVybiAwO1xuIH1cbiBcbi0jaWZkZWYgSEFWRV9HVEtfSU5GT19CQVJfU1VQUE9SVFxuIHN0YXRpYyBpbnQgcGVyZl9ndGtfX3dhcm5pbmdfaW5mb19iYXIoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpXG4ge1xuIFx0Y2hhciAqbXNnO1xuK1x0dmFfbGlzdCBhcmdzX2NvcHk7XG4gXG4rXHR2YV9jb3B5KGFyZ3NfY29weSwgYXJncyk7XG4gXHRpZiAoIXBlcmZfZ3RrX19pc19hY3RpdmVfY29udGV4dChwZ2N0eCkgfHxcbi1cdCAgICB2YXNwcmludGYoXHUwMDI2bXNnLCBmb3JtYXQsIGFyZ3MpIFx1MDAzYyAwKSB7XG4rXHQgICAgdmFzcHJpbnRmKFx1MDAyNm1zZywgZm9ybWF0LCBhcmdzX2NvcHkpIFx1MDAzYyAwKSB7XG4rXHRcdHZhX2VuZChhcmdzX2NvcHkpO1xuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCJXYXJuaW5nOlxcblwiKTtcbiBcdFx0dmZwcmludGYoc3RkZXJyLCBmb3JtYXQsIGFyZ3MpO1xuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCJcXG5cIik7XG4gXHRcdHJldHVybiAtMTtcbiBcdH1cbitcdHZhX2VuZChhcmdzX2NvcHkpO1xuIFxuIFx0Z3RrX2xhYmVsX3NldF90ZXh0KEdUS19MQUJFTChwZ2N0eC1cdTAwM2VtZXNzYWdlX2xhYmVsKSwgbXNnKTtcbiBcdGd0a19pbmZvX2Jhcl9zZXRfbWVzc2FnZV90eXBlKEdUS19JTkZPX0JBUihwZ2N0eC1cdTAwM2VpbmZvX2JhciksXG4gXHRcdFx0XHQgICAgICBHVEtfTUVTU0FHRV9XQVJOSU5HKTtcbi1cdGd0a193aWRnZXRfc2hvdyhwZ2N0eC1cdTAwM2VpbmZvX2Jhcik7XG4tXG4tXHRmcmVlKG1zZyk7XG4tXHRyZXR1cm4gMDtcbi19XG4tI2Vsc2Vcbi1zdGF0aWMgaW50IHBlcmZfZ3RrX193YXJuaW5nX3N0YXR1c2Jhcihjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncylcbi17XG4tXHRjaGFyICptc2csICpwO1xuLVxuLVx0aWYgKCFwZXJmX2d0a19faXNfYWN0aXZlX2NvbnRleHQocGdjdHgpIHx8XG4tXHQgICAgdmFzcHJpbnRmKFx1MDAyNm1zZywgZm9ybWF0LCBhcmdzKSBcdTAwM2MgMCkge1xuLVx0XHRmcHJpbnRmKHN0ZGVyciwgXCJXYXJuaW5nOlxcblwiKTtcbi1cdFx0dmZwcmludGYoc3RkZXJyLCBmb3JtYXQsIGFyZ3MpO1xuLVx0XHRmcHJpbnRmKHN0ZGVyciwgXCJcXG5cIik7XG4tXHRcdHJldHVybiAtMTtcbi1cdH1cbi1cbi1cdGd0a19zdGF0dXNiYXJfcG9wKEdUS19TVEFUVVNCQVIocGdjdHgtXHUwMDNlc3RhdGJhciksXG4tXHRcdFx0ICBwZ2N0eC1cdTAwM2VzdGF0YmFyX2N0eF9pZCk7XG4tXG4tXHQvKiBPbmx5IGZpcnN0IGxpbmUgY2FuIGJlIGRpc3BsYXllZCAqL1xuLVx0cCA9IHN0cmNocihtc2csICdcXG4nKTtcbi1cdGlmIChwKVxuLVx0XHQqcCA9ICdcXDAnO1xuLVxuLVx0Z3RrX3N0YXR1c2Jhcl9wdXNoKEdUS19TVEFUVVNCQVIocGdjdHgtXHUwMDNlc3RhdGJhciksXG4tXHRcdFx0ICAgcGdjdHgtXHUwMDNlc3RhdGJhcl9jdHhfaWQsIG1zZyk7XG4rXHRndGtfd2lkZ2V0X3NldF92aXNpYmxlKHBnY3R4LVx1MDAzZWluZm9fYmFyLCBUUlVFKTtcbiBcbiBcdGZyZWUobXNnKTtcbiBcdHJldHVybiAwO1xuIH1cbi0jZW5kaWZcbiBcbiBzdHJ1Y3QgcGVyZl9lcnJvcl9vcHMgcGVyZl9ndGtfZW9wcyA9IHtcbiBcdC5lcnJvclx0XHQ9IHBlcmZfZ3RrX19lcnJvcixcbi0jaWZkZWYgSEFWRV9HVEtfSU5GT19CQVJfU1VQUE9SVFxuIFx0Lndhcm5pbmdcdD0gcGVyZl9ndGtfX3dhcm5pbmdfaW5mb19iYXIsXG4tI2Vsc2Vcbi1cdC53YXJuaW5nXHQ9IHBlcmZfZ3RrX193YXJuaW5nX3N0YXR1c2Jhcixcbi0jZW5kaWZcbiB9O1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvc2V0dXAuYyBiL3Rvb2xzL3BlcmYvdWkvc2V0dXAuY1xuaW5kZXggZmY4MDAwNDdlNjk3Zi4uZDg4NzM0NmM3YTYzMiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdWkvc2V0dXAuY1xuKysrIGIvdG9vbHMvcGVyZi91aS9zZXR1cC5jXG5AQCAtMTQsNyArMTQsNyBAQCBpbnQgdXNlX2Jyb3dzZXIgPSAtMTtcbiBcbiAjZGVmaW5lIFBFUkZfR1RLX0RTTyBcImxpYnBlcmYtZ3RrLnNvXCJcbiBcbi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlRcbisjaWZkZWYgSEFWRV9HVEs0X1NVUFBPUlRcbiBcbiBzdGF0aWMgaW50IHNldHVwX2d0a19icm93c2VyKHZvaWQpXG4ge1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5jIGIvdG9vbHMvcGVyZi91dGlsL2Fubm90YXRlLmNcbmluZGV4IGRmNzBlOTVhODQ3MDQuLjEyM2I2ZDVmY2VhNzggMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuY1xuKysrIGIvdG9vbHMvcGVyZi91dGlsL2Fubm90YXRlLmNcbkBAIC0xNDUsNiArMTQ1LDE3IEBAIHN0YXRpYyBpbnQgYW5ub3RhdGVkX3NvdXJjZV9fYWxsb2NfaGlzdG9ncmFtcyhzdHJ1Y3QgYW5ub3RhdGVkX3NvdXJjZSAqc3JjLFxuIFx0cmV0dXJuIHNyYy1cdTAwM2VoaXN0b2dyYW1zID8gMCA6IC0xO1xuIH1cbiBcbitzdHJ1Y3Qgc3ltX2hpc3RfZW50cnkgKlxuK2Fubm90YXRlZF9zb3VyY2VfX2hpc3RfZW50cnkoc3RydWN0IGFubm90YXRlZF9zb3VyY2UgKnNyYywgY29uc3Qgc3RydWN0IGV2c2VsICpldnNlbCwgdTY0IG9mZnNldClcbit7XG4rXHRzdHJ1Y3Qgc3ltX2hpc3RfZW50cnkgKmVudHJ5O1xuK1x0bG9uZyBrZXkgPSBvZmZzZXQgXHUwMDNjXHUwMDNjIDE2IHwgZXZzZWwtXHUwMDNlY29yZS5pZHg7XG4rXG4rXHRpZiAoIWhhc2htYXBfX2ZpbmQoc3JjLVx1MDAzZXNhbXBsZXMsIGtleSwgXHUwMDI2ZW50cnkpKVxuK1x0XHRyZXR1cm4gTlVMTDtcbitcdHJldHVybiBlbnRyeTtcbit9XG4rXG4gdm9pZCBzeW1ib2xfX2Fubm90YXRlX3plcm9faGlzdG9ncmFtcyhzdHJ1Y3Qgc3ltYm9sICpzeW0pXG4ge1xuIFx0c3RydWN0IGFubm90YXRpb24gKm5vdGVzID0gc3ltYm9sX19hbm5vdGF0aW9uKHN5bSk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL2Fubm90YXRlLmggYi90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuaFxuaW5kZXggZmEwOGQwOWI4MGY3Ni4uNDAwMzhhMzc3OWQ0NiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5oXG4rKysgYi90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuaFxuQEAgLTQwNiwxNiArNDA2LDggQEAgc3RhdGljIGlubGluZSBzdHJ1Y3Qgc3ltX2hpc3QgKmFubm90YXRpb25fX2hpc3RvZ3JhbShzdHJ1Y3QgYW5ub3RhdGlvbiAqbm90ZXMsXG4gXHRyZXR1cm4gYW5ub3RhdGVkX3NvdXJjZV9faGlzdG9ncmFtKG5vdGVzLVx1MDAzZXNyYywgZXZzZWwpO1xuIH1cbiBcbi1zdGF0aWMgaW5saW5lIHN0cnVjdCBzeW1faGlzdF9lbnRyeSAqXG4tYW5ub3RhdGVkX3NvdXJjZV9faGlzdF9lbnRyeShzdHJ1Y3QgYW5ub3RhdGVkX3NvdXJjZSAqc3JjLCBjb25zdCBzdHJ1Y3QgZXZzZWwgKmV2c2VsLCB1NjQgb2Zmc2V0KVxuLXtcbi1cdHN0cnVjdCBzeW1faGlzdF9lbnRyeSAqZW50cnk7XG4tXHRsb25nIGtleSA9IG9mZnNldCBcdTAwM2NcdTAwM2MgMTYgfCBldnNlbC1cdTAwM2Vjb3JlLmlkeDtcbi1cbi1cdGlmICghaGFzaG1hcF9fZmluZChzcmMtXHUwMDNlc2FtcGxlcywga2V5LCBcdTAwMjZlbnRyeSkpXG4tXHRcdHJldHVybiBOVUxMO1xuLVx0cmV0dXJuIGVudHJ5O1xuLX1cbitzdHJ1Y3Qgc3ltX2hpc3RfZW50cnkgKlxuK2Fubm90YXRlZF9zb3VyY2VfX2hpc3RfZW50cnkoc3RydWN0IGFubm90YXRlZF9zb3VyY2UgKnNyYywgY29uc3Qgc3RydWN0IGV2c2VsICpldnNlbCwgdTY0IG9mZnNldCk7XG4gXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgYW5ub3RhdGlvbiAqc3ltYm9sX19hbm5vdGF0aW9uKHN0cnVjdCBzeW1ib2wgKnN5bSlcbiB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwMjoxNzoyOS42ODAxMDQ5MTVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2ODcwOTA5MDkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlBhdGNoIFRyaWFnZSAtIFdvcnRoRnV6emluZyBFdmFsdWF0aW9uKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBoaXRzIGZpbGVzIHdpdGhpbiBgdG9vbHMvYnVpbGQvYCBhbmQgYHRvb2xzL3BlcmYvYC4gUmlnaHQgYXdheSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBtb2RpZmllZCBmaWxlcyBsaXN0IHRvIGJlIHN1cmUuIEkgc2VlOiBgdG9vbHMvYnVpbGQvTWFrZWZpbGUuZmVhdHVyZWAsIGB0b29scy9idWlsZC9mZWF0dXJlL01ha2VmaWxlYCwgYW5kIGEgZmV3IHNvdXJjZSBmaWxlcyByZWxhdGVkIHRvIHRlc3RpbmcgYW5kIEdUSywgdGhlbiBhIHNsZXcgb2YgZmlsZXMgd2l0aGluIGB0b29scy9wZXJmL2AsIGluY2x1ZGluZyBNYWtlZmlsZXMsIGJ1aWx0aW5zLCBzY3JpcHRzLCB0ZXN0IGNvbXBvbmVudHMsIGFuZCBHVEstYmFzZWQgVUkgZWxlbWVudHMgYW5kIHV0aWxpdHkgZnVuY3Rpb25zLiBBbGwgb2YgdGhlc2UgZmlsZXMgYXJlIGluIHVzZXJzcGFjZS5cblxuQmFzZWQgb24gdGhlIHRyaWFnZSBndWlkZWxpbmVzLCBzcGVjaWZpY2FsbHkgU2VjdGlvbiAyLCB0aGUgcXVlc3Rpb24gaXMgd2hldGhlciB0aGVzZSBjaGFuZ2VzIGZhbGwgZW50aXJlbHkgd2l0aGluIHVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMsIGFuZCB0aGF0IHRoZXkgZG9uJ3QgaW1wYWN0IHRoZSBrZXJuZWwgaW1hZ2UgKGB2bWxpbnV4YCkgb3IgYW55IGtlcm5lbCBtb2R1bGVzLiBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCB0aGVzZSB0b29scyBhcmUgdW5saWtlbHkgdG8gaW1wYWN0IGB2bWxpbnV4YC5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBubyBvdGhlciBhcmVhcyBhcmUgYWZmZWN0ZWQuIEkndmUgZG91YmxlLWNoZWNrZWQgdGhlIGRpZmYgYW5kIGl0IGlzIGNsZWFyIHRoYXQgYWJzb2x1dGVseSBldmVyeSBtb2RpZmllZCBmaWxlIGJlZ2lucyB3aXRoIGB0b29scy9gLiBTbywgdGhpcyBpcyBhbGwgdG9vbGluZy4gVGhlIGB0b29scy9gIGRpcmVjdG9yeSBpcyBkZWRpY2F0ZWQgdG8gdXNlci1zcGFjZSB0b29scy4gTm90aGluZyBpbiB0aGlzIHBhdGNoIHRvdWNoZXMgdGhlIGNvcmUga2VybmVsIG9yIGFueSBtb2R1bGVzLlxuXG5UaGVyZWZvcmUsIGFwcGx5aW5nIHRoZSB0cmlhZ2UgZ3VpZGVsaW5lcywgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIHNldCB0byBgZmFsc2VgLiBNeSByZWFzb25pbmcgaXMgc29saWQ6IHRoZSBjaGFuZ2VzIGFyZSBjb25maW5lZCB0byB1c2VyLXNwYWNlIHRvb2xpbmcgd2l0aGluIGB0b29scy9wZXJmYCBhbmQgYHRvb2xzL2J1aWxkYCwgYW5kIHRoZXkgaGF2ZSBubyBpbXBhY3Qgb24gdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAoYHZtbGludXhgKSBvciBrZXJuZWwgbW9kdWxlcy5cblxuSSdsbCBzZXQgYEZvY3VzU3ltYm9sc2AgdG8gYFtdYCBhbmQgYEVuYWJsZUNvbmZpZ3NgIHRvIGBbXWAgYXMgd2VsbC4gVGhhdCBsb29rcyByaWdodC4gSSdsbCBtYWtlIGEgc2FuaXR5IGNoZWNrIHVzaW5nIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NTY4LCJPdXRwdXRUb2tlbnMiOjgwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDI6MTc6MzYuNTUxMDE2OTk2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODAwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIkFsbCBjaGFuZ2VzIGluIHRoaXMgcGF0Y2ggc2VyaWVzIGFyZSBzdHJpY3RseSBjb25maW5lZCB0byB1c2VyLXNwYWNlIHRvb2xpbmcgdW5kZXIgYHRvb2xzL2AgKHNwZWNpZmljYWxseSBgdG9vbHMvcGVyZmAgYW5kIGB0b29scy9idWlsZGApLCB3aGljaCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKGB2bWxpbnV4YCkgb3Iga2VybmVsIG1vZHVsZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIkFsbCBjaGFuZ2VzIGluIHRoaXMgcGF0Y2ggc2VyaWVzIGFyZSBzdHJpY3RseSBjb25maW5lZCB0byB1c2VyLXNwYWNlIHRvb2xpbmcgdW5kZXIgYHRvb2xzL2AgKHNwZWNpZmljYWxseSBgdG9vbHMvcGVyZmAgYW5kIGB0b29scy9idWlsZGApLCB3aGljaCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKGB2bWxpbnV4YCkgb3Iga2VybmVsIG1vZHVsZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwMjoxNzozNi41NTEwMzg3MTZaIiwiU2VxIjo1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowvc2bq[1] Phase: Running StartedAt: 2026-09-07 02:17:47 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvc2bq[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-07 02:17:47 +0000 UTC FinishedAt: 2026-09-07 02:17:51 +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,}