Name: series-workflowgphbc Phase: Failed StartedAt: 2026-07-14 02:48:19 +0000 UTC FinishedAt: 2026-07-14 02:57:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgphbc[0] Phase: Succeeded StartedAt: 2026-07-14 02:48:19 +0000 UTC FinishedAt: 2026-07-14 02:57:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgphbc[0].run-triage Phase: Succeeded StartedAt: 2026-07-14 02:48:19 +0000 UTC FinishedAt: 2026-07-14 02:57:03 +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+CgkJCTx0ZD4yMDI2LzA3LzE0IDAyOjU1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCQ000N3h4IGJ1dHRvbnMgZHJpdmVyIGFuZCBhc3NvY2lhdGVkIEJDTUEvU1NCIEdQSU8gZHJpdmVycyB0byB1c2Ugc29mdHdhcmUgbm9kZXMgaW5zdGVhZCBvZiBwbGF0Zm9ybSBkYXRhLiBUaGVzZSBjaGFuZ2VzIGFyZSBzcGVjaWZpYyB0byB0aGUgTUlQUyBCQ000N3h4IGFyY2hpdGVjdHVyZSBhbmQgaXRzIFNvQyBidXNlcyAoQkNNQV9IT1NUVFlQRV9TT0MgYW5kIFNTQl9CVVNUWVBFX1NTQikuIFNpbmNlIHN5emthbGxlciBkb2VzIG5vdCBmdXp6IE1JUFMgQkNNNDd4eCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMjo1NTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGY4Yzc5NTAyNTQzZWUyMTA0ZWE0MjA1MzcxOTVjODZmN2MzMDQyOTlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAxNCAwMjo1NTowOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvYmNtNDd4eC9idXR0b25zLmMgYi9hcmNoL21pcHMvYmNtNDd4eC9idXR0b25zLmNcbmluZGV4IDQ2OTk0ZjliYjgyMTljLi4xNTFhNGVlMjgwM2YwMiAxMDA2NDRcbi0tLSBhL2FyY2gvbWlwcy9iY200N3h4L2J1dHRvbnMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9taXBzL2JjbTQ3eHgvYnV0dG9ucy5jXG5AQCAtMSw5ICYjNDM7MSwxNCBAQFxuIC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gI2luY2x1ZGUgXCYjMzQ7YmNtNDd4eF9wcml2YXRlLmhcJiMzNDtcbiBcbi0jaW5jbHVkZSBcdTAwM2NsaW51eC9pbnB1dC5oXHUwMDNlXG4tI2luY2x1ZGUgXHUwMDNjbGludXgvZ3Bpb19rZXlzLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7bGludXgvZXJyLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZ3Bpby9tYWNoaW5lLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZ3Bpby9wcm9wZXJ0eS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2lucHV0LWV2ZW50LWNvZGVzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pbnRlcnJ1cHQuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9wcm9wZXJ0eS5oXHUwMDNlXG4mIzQzO1xuICNpbmNsdWRlIFx1MDAzY2JjbTQ3eHhfYm9hcmQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2JjbTQ3eHguaFx1MDAzZVxuIFxuQEAgLTExLDI5ICYjNDM7MTYsMzQgQEBcbiAgKiBEYXRhYmFzZVxuICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbiBcbi0jZGVmaW5lIEJDTTQ3WFhfR1BJT19LRVkoX2dwaW8sIF9jb2RlKVx0XHRcdFx0XHRcXFxuLVx0e1x0XHRcdFx0XHRcdFx0XHRcXFxuLVx0XHQuY29kZVx0XHQ9IF9jb2RlLFx0XHRcdFx0XFxcbi1cdFx0LmdwaW9cdFx0PSBfZ3BpbyxcdFx0XHRcdFxcXG4tXHRcdC5hY3RpdmVfbG93XHQ9IDEsXHRcdFx0XHRcdFxcXG4mIzQzO3N0cnVjdCBiY200N3h4X2dwaW9fa2V5IHtcbiYjNDM7XHR1MTYgY29kZTtcbiYjNDM7XHR1OCBwaW47XG4mIzQzO1x0dTggZmxhZ3M7XG4mIzQzO307XG4mIzQzO1xuJiM0MzsjZGVmaW5lIEJDTTQ3WFhfR1BJT19LRVkoX2dwaW8sIF9jb2RlKVx0XHRcdFxcXG4mIzQzO1x0e1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHQuY29kZVx0PSBfY29kZSxcdFx0XHRcXFxuJiM0MztcdFx0LnBpblx0PSBfZ3BpbyxcdFx0XHRcXFxuJiM0MztcdFx0LmZsYWdzXHQ9IEdQSU9fQUNUSVZFX0xPVyxcdFx0XFxcbiBcdH1cbiBcbi0jZGVmaW5lIEJDTTQ3WFhfR1BJT19LRVlfSChfZ3BpbywgX2NvZGUpXHRcdFx0XHRcXFxuLVx0e1x0XHRcdFx0XHRcdFx0XHRcXFxuLVx0XHQuY29kZVx0XHQ9IF9jb2RlLFx0XHRcdFx0XFxcbi1cdFx0LmdwaW9cdFx0PSBfZ3BpbyxcdFx0XHRcdFxcXG4mIzQzOyNkZWZpbmUgQkNNNDdYWF9HUElPX0tFWV9IKF9ncGlvLCBfY29kZSlcdFx0XFxcbiYjNDM7XHR7XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdC5jb2RlXHQ9IF9jb2RlLFx0XHRcdFxcXG4mIzQzO1x0XHQucGluXHQ9IF9ncGlvLFx0XHRcdFxcXG4mIzQzO1x0XHQuZmxhZ3NcdD0gR1BJT19BQ1RJVkVfSElHSCxcdFx0XFxcbiBcdH1cbiBcbiAvKiBBc3VzICovXG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4tYmNtNDd4eF9idXR0b25zX2FzdXNfcnRuMTB1W10gX19pbml0Y29uc3QgPSB7XG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleSBiY200N3h4X2J1dHRvbnNfYXN1c19ydG4xMHVbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMjAsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMjEsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuLWJjbTQ3eHhfYnV0dG9uc19hc3VzX3J0bjEyW10gX19pbml0Y29uc3QgPSB7XG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleSBiY200N3h4X2J1dHRvbnNfYXN1c19ydG4xMltdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgwLCBLRVlfV1BTX0JVVFRPTiksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDEsIEtFWV9SRVNUQVJUKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgQlROXzApLCAvKiBSb3V0ZXIgbW9kZSAqL1xuQEAgLTQxLDc0ICYjNDM7NTEsNzMgQEAgYmNtNDd4eF9idXR0b25zX2FzdXNfcnRuMTJbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgQlROXzIpLCAvKiBBUCBtb2RlICovXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbi1iY200N3h4X2J1dHRvbnNfYXN1c19ydG4xNltdIF9faW5pdGNvbnN0ID0ge1xuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkgYmNtNDd4eF9idXR0b25zX2FzdXNfcnRuMTZbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg4LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2FzdXNfcnRuNjZ1W10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoOSwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsMzAwZ1tdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2FzdXNfd2wzMjBnZVtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2FzdXNfd2wzMzBnZVtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgyLCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBnW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfYXN1c193bDUwMGdkW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfYXN1c193bDUwMGdwdjFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMCwgS0VZX1JFU1RBUlQpLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBncHYyW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDIsIEtFWV9SRVNUQVJUKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMywgS0VZX1dQU19CVVRUT04pLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwd1tdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWV9IKDYsIEtFWV9SRVNUQVJUKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVlfSCg3LCBLRVlfV1BTX0JVVFRPTiksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MjBnY1tdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgyLCBLRVlfUkVTVEFSVCksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDMsIEtFWV9XUFNfQlVUVE9OKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfYXN1c193bDUyMGd1W10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDIsIEtFWV9SRVNUQVJUKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMywgS0VZX1dQU19CVVRUT04pLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNzAwZ2VbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMCwgS0VZX1BPV0VSKSwgLyogSGFyZCBkaXNrIHBvd2VyIHN3aXRjaCAqL1xuIFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksIC8qIEVaU2V0dXAgKi9cbkBAIC0xMTYsMjEgJiM0MzsxMjUsMjEgQEAgYmNtNDd4eF9idXR0b25zX2FzdXNfd2w3MDBnZVtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg3LCBLRVlfUkVTVEFSVCksIC8qIEhhcmQgcmVzZXQgKi9cbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfYXN1c193bGhkZFtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbiAvKiBIdWF3ZWkgKi9cbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2h1YXdlaV9lOTcwW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuIC8qIEJlbGtpbiAqL1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfYmVsa2luX2Y3ZDQzMDFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg4LCBLRVlfV1BTX0JVVFRPTiksXG5AQCAtMTM4LDQ0ICYjNDM7MTQ3LDQ0IEBAIGJjbTQ3eHhfYnV0dG9uc19iZWxraW5fZjdkNDMwMVtdIF9faW5pdGNvbnN0ID0ge1xuIFxuIC8qIEJ1ZmZhbG8gKi9cbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd2hyMl9hNTRnNTRbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docl9nMTI1W10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDAsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1JFU1RBUlQpLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg1LCBCVE5fMCksIC8qIFJvdXRlciAvIEFQIG1vZGUgc3dpdGNoICovXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd2hyX2c1NHNbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMCwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWV9IKDQsIEtFWV9SRVNUQVJUKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNSwgQlROXzApLCAvKiBSb3V0ZXIgLyBBUCBtb2RlIHN3aXRjaCAqL1xuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docl9ocF9nNTRbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMCwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfUkVTVEFSVCksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDUsIEJUTl8wKSwgLyogUm91dGVyIC8gQVAgbW9kZSBzd2l0Y2ggKi9cbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfYnVmZmFsb193enJfZzMwMG5bXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3d6cl9yc19nNTRbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMCwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd3pyX3JzX2c1NGhwW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDAsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1JFU1RBUlQpLFxuQEAgLTE4MywyMCAmIzQzOzE5MiwyMCBAQCBiY200N3h4X2J1dHRvbnNfYnVmZmFsb193enJfcnNfZzU0aHBbXSBfX2luaXRjb25zdCA9IHtcbiBcbiAvKiBEZWxsICovXG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19kZWxsX3RtMjMwMFtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgwLCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbiAvKiBELUxpbmsgKi9cbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2RsaW5rX2RpcjEzMFtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgzLCBLRVlfUkVTVEFSVCksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDcsIEtFWV9VTktOT1dOKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfZGxpbmtfZGlyMzMwW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDMsIEtFWV9SRVNUQVJUKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNywgS0VZX1VOS05PV04pLFxuQEAgLTIwNCwxMjcgJiM0MzsyMTMsMTI3IEBAIGJjbTQ3eHhfYnV0dG9uc19kbGlua19kaXIzMzBbXSBfX2luaXRjb25zdCA9IHtcbiBcbiAvKiBMaW5rc3lzICovXG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UxMDAwdjFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNSwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTEwMDB2MjFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoOSwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSgxMCwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UyMDAwdjFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNSwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg4LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTI1MDB2M1tdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg5LCBLRVlfV1BTX0JVVFRPTiksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDEwLCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTMwMDB2MVtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMzIwMHYxW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDUsIEtFWV9SRVNUQVJUKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoOCwgS0VZX1dQU19CVVRUT04pLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2U0MjAwdjFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTUwbnYxW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDE1MG52MTFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTYwbnYxW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDE2MG52M1tdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg1LCBLRVlfV1BTX0JVVFRPTiksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMDBuX3YxW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDMwMG52MTFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1VOS05PV04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzEwbnYxW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoOCwgS0VZX1VOS05PV04pLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDMxMG5fdjJbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNSwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzIwbl92MVtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg1LCBLRVlfV1BTX0JVVFRPTiksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDgsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQ1NGczZ3YyW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDUsIEtFWV9XSU1BWCksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQ1NGdfZ2VuZXJpY1tdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQ2MTBudjFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg4LCBLRVlfV1BTX0JVVFRPTiksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NjEwbnYyW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydHNsNTRnc1tdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcbkBAIC0zMzIsMTU0ICYjNDM7MzQxLDE1NCBAQCBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnRzbDU0Z3NbXSBfX2luaXRjb25zdCA9IHtcbiBcbiAvKiBMdXh1bCAqL1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbHV4dWxfYWJyXzQ0MDBfdjFbXSA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMTQsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbHV4dWxfeGFwXzMxMF92MVtdID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgyMCwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMTIxMF92MVtdID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg4LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8xMjMwX3YxW10gPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDgsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbHV4dWxfeGFwXzEyNDBfdjFbXSA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoOCwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMTUwMF92MVtdID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgxNCwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YnJfNDQwMF92MVtdID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgxNCwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94dndfcDMwX3YxW10gPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDIwLCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2x1eHVsX3h3cl82MDBfdjFbXSA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoOCwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94d3JfMTc1MF92MVtdID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgxNCwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4gLyogTWljcm9zb2Z0ICovXG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19taWNyb3NvZnRfbm03MDBbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNywgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4gLyogTW90b3JvbGEgKi9cbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX21vdG9yb2xhX3dlODAwZ1tdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgwLCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX21vdG9yb2xhX3dyODUwZ3BbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNSwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19tb3Rvcm9sYV93cjg1MGd2MnYzW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDUsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuIC8qIE5ldGdlYXIgKi9cbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX25ldGdlYXJfcjYyMDBfdjFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMiwgS0VZX1JGS0lMTCksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDMsIEtFWV9SRVNUQVJUKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3I2MzAwX3YxW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bjI1MDBycF92MVtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgxMiwgS0VZX1JFU1RBUlQpLFxuIFx0QkNNNDdYWF9HUElPX0tFWSgzMSwgS0VZX1dQU19CVVRUT04pLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duZHIzNDAwdjFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1JFU1RBUlQpLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfV1BTX0JVVFRPTiksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDgsIEtFWV9SRktJTEwpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duZHIzNDAwX3YzW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDEyLCBLRVlfUkVTVEFSVCksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDIzLCBLRVlfV1BTX0JVVFRPTiksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjM3MDB2M1tdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgyLCBLRVlfUkZLSUxMKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMywgS0VZX1JFU1RBUlQpLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjQ1MDB2MVtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDUsIEtFWV9SRktJTEwpLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25yMTAwMF92M1tdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgyLCBLRVlfV1BTX0JVVFRPTiksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDMsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bnIzNTAwbHYxW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9SRVNUQVJUKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1dQU19CVVRUT04pLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3ducjM1MDBsdjJbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1JFU1RBUlQpLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfV1BTX0JVVFRPTiksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDgsIEtFWV9SRktJTEwpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3ducjgzNGJ2MltdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbiAvKiBTaW1wbGVUZWNoICovXG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19zaW1wbGV0ZWNoX3NpbXBsZXNoYXJlW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDAsIEtFWV9SRVNUQVJUKSxcbiB9O1xuQEAgLTQ4OCwzMSAmIzQzOzQ5Nyw5NiBAQCBiY200N3h4X2J1dHRvbnNfc2ltcGxldGVjaF9zaW1wbGVzaGFyZVtdIF9faW5pdGNvbnN0ID0ge1xuICAqIEluaXRcbiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4gXG4tc3RhdGljIHN0cnVjdCBncGlvX2tleXNfcGxhdGZvcm1fZGF0YSBiY200N3h4X2J1dHRvbl9wZGF0YTtcbi1cbi1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBiY200N3h4X2J1dHRvbnNfZ3Bpb19rZXlzID0ge1xuLVx0Lm5hbWUgPSBcJiMzNDtncGlvLWtleXNcJiMzNDssXG4tXHQuZGV2ID0ge1xuLVx0XHQucGxhdGZvcm1fZGF0YSA9IFx1MDAyNmJjbTQ3eHhfYnV0dG9uX3BkYXRhLFxuJiM0MztzdGF0aWMgaW50IF9faW5pdFxuJiM0MztiY200N3h4X2J1dHRvbnNfYWRkKGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5ICpidXR0b25zLCBpbnQgbmJ1dHRvbnMpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2O1xuJiM0MztcdGNvbnN0IHN0cnVjdCBzb2Z0d2FyZV9ub2RlICpncGlvX3N3bm9kZTtcbiYjNDM7XHRzdHJ1Y3QgcHJvcGVydHlfZW50cnkgKnA7XG4mIzQzO1x0aW50IGVycm9yO1xuJiM0MztcdGludCBpO1xuJiM0MztcbiYjNDM7XHRzd2l0Y2ggKGJjbTQ3eHhfYnVzX3R5cGUpIHtcbiYjNDM7I2lmZGVmIENPTkZJR19CQ000N1hYX0JDTUFcbiYjNDM7XHRjYXNlIEJDTTQ3WFhfQlVTX1RZUEVfQkNNQTpcbiYjNDM7XHRcdGdwaW9fc3dub2RlID0gXHUwMDI2YmNtYV9ncGlvX3N3bm9kZTtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MzsjZW5kaWZcbiYjNDM7I2lmZGVmIENPTkZJR19CQ000N1hYX1NTQlxuJiM0MztcdGNhc2UgQkNNNDdYWF9CVVNfVFlQRV9TU0I6XG4mIzQzO1x0XHRncGlvX3N3bm9kZSA9IFx1MDAyNnNzYl9ncGlvX3N3bm9kZTtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MzsjZW5kaWZcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4gXHR9XG4tfTtcbiBcbi0vKiBDb3B5IGRhdGEgZnJvbSBfX2luaXRjb25zdCAqL1xuLXN0YXRpYyBpbnQgX19pbml0IGJjbTQ3eHhfYnV0dG9uc19jb3B5KGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uICpidXR0b25zLFxuLVx0XHRcdFx0ICAgICAgIHNpemVfdCBuYnV0dG9ucylcbi17XG4tXHRzaXplX3Qgc2l6ZSA9IG5idXR0b25zICogc2l6ZW9mKCpidXR0b25zKTtcbiYjNDM7XHQvKiAxIG5vZGUgZm9yIGdwaW8ta2V5cyBkZXZpY2UsIDEgbm9kZSBmb3IgZWFjaCBidXR0b24sIDEgdGVybWluYXRvciAqL1xuJiM0MztcdGNvbnN0IHN0cnVjdCBzb2Z0d2FyZV9ub2RlICoqbm9kZV9ncm91cCBfX2ZyZWUoa2ZyZWUpID1cbiYjNDM7XHRcdGtjYWxsb2MoMSAmIzQzOyBuYnV0dG9ucyAmIzQzOyAxLCBzaXplb2YoKm5vZGVfZ3JvdXApLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRpZiAoIW5vZGVfZ3JvdXApXG4mIzQzO1x0XHRyZXR1cm4gLUVOT01FTTtcbiBcbi1cdGJjbTQ3eHhfYnV0dG9uX3BkYXRhLmJ1dHRvbnMgPSBrbWVtZHVwKGJ1dHRvbnMsIHNpemUsIEdGUF9LRVJORUwpO1xuLVx0aWYgKCFiY200N3h4X2J1dHRvbl9wZGF0YS5idXR0b25zKVxuJiM0MztcdC8qIDEgY29kZSBwcm9wZXJ0eSwgMSBncGlvIHByb3BlcnR5LCAxIHRlcm1pbmF0b3IgKi9cbiYjNDM7XHRzdHJ1Y3QgcHJvcGVydHlfZW50cnkgKnByb3BzIF9fZnJlZShrZnJlZSkgPVxuJiM0MztcdFx0a2NhbGxvYyhuYnV0dG9ucyAqIDMsIHNpemVvZigqcHJvcHMpLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRpZiAoIXByb3BzKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbi1cdGJjbTQ3eHhfYnV0dG9uX3BkYXRhLm5idXR0b25zID0gbmJ1dHRvbnM7XG4gXG4mIzQzO1x0LyogMSBub2RlIGZvciBncGlvLWtleXMgZGV2aWNlLCAxIG5vZGUgZm9yIGVhY2ggYnV0dG9uICovXG4mIzQzO1x0c3RydWN0IHNvZnR3YXJlX25vZGUgKm5vZGVzIF9fZnJlZShrZnJlZSkgPVxuJiM0MztcdFx0a2NhbGxvYygxICYjNDM7IG5idXR0b25zLCBzaXplb2YoKm5vZGVzKSwgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0aWYgKCFub2RlcylcbiYjNDM7XHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcbiYjNDM7XHRzdHJ1Y3Qgc29mdHdhcmVfbm9kZV9yZWZfYXJncyAqcmVmX2FyZ3MgX19mcmVlKGtmcmVlKSA9XG4mIzQzO1x0XHRrY2FsbG9jKG5idXR0b25zLCBzaXplb2YoKnJlZl9hcmdzKSwgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0aWYgKCFyZWZfYXJncylcbiYjNDM7XHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcbiYjNDM7XHQvKiBncGlvLWtleXMgbm9kZSAqL1xuJiM0MztcdG5vZGVzWzBdLm5hbWUgPSBcJiMzNDtiY200N3h4LWdwaW8tYnV0dG9uc1wmIzM0OztcbiYjNDM7XG4mIzQzO1x0cCA9IHByb3BzO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5idXR0b25zOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0Y29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkgKmJ1dHRvbiA9IFx1MDAyNmJ1dHRvbnNbaV07XG4mIzQzO1x0XHRzdHJ1Y3Qgc29mdHdhcmVfbm9kZSAqbm9kZSA9IFx1MDAyNm5vZGVzWzEgJiM0MzsgaV07XG4mIzQzO1x0XHRzdHJ1Y3Qgc29mdHdhcmVfbm9kZV9yZWZfYXJncyAqcmVmID0gXHUwMDI2cmVmX2FyZ3NbaV07XG4mIzQzO1xuJiM0MztcdFx0bm9kZS1cdTAwM2VwYXJlbnQgPSBcdTAwMjZub2Rlc1swXTtcbiYjNDM7XHRcdG5vZGUtXHUwMDNlcHJvcGVydGllcyA9IHA7XG4mIzQzO1xuJiM0MztcdFx0KnJlZiA9IFNPRlRXQVJFX05PREVfUkVGRVJFTkNFKGdwaW9fc3dub2RlLCBidXR0b24tXHUwMDNlcGluLCBidXR0b24tXHUwMDNlZmxhZ3MpO1xuJiM0MztcdFx0KnAmIzQzOyYjNDM7ID0gUFJPUEVSVFlfRU5UUllfUkVGKFwmIzM0O2dwaW9zXCYjMzQ7LCBcdTAwMjZyZWZfYXJnc1tpXSk7XG4mIzQzO1x0XHQqcCYjNDM7JiM0MzsgPSBQUk9QRVJUWV9FTlRSWV9VMzIoXCYjMzQ7bGludXgsY29kZVwmIzM0OywgYnV0dG9uLVx1MDAzZWNvZGUpO1xuJiM0MztcdFx0cCYjNDM7JiM0Mzs7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBuYnV0dG9ucyAmIzQzOyAxOyBpJiM0MzsmIzQzOylcbiYjNDM7XHRcdG5vZGVfZ3JvdXBbaV0gPSBcdTAwMjZub2Rlc1tpXTtcbiYjNDM7XG4mIzQzO1x0ZXJyb3IgPSBzb2Z0d2FyZV9ub2RlX3JlZ2lzdGVyX25vZGVfZ3JvdXAobm9kZV9ncm91cCk7XG4mIzQzO1x0aWYgKGVycm9yKVxuJiM0MztcdFx0cmV0dXJuIGVycm9yO1xuJiM0MztcbiYjNDM7XHRwZGV2ID0gcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyX2Z1bGwoXHUwMDI2KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2VfaW5mbyl7XG4mIzQzO1x0XHQubmFtZSA9IFwmIzM0O2dwaW8ta2V5c1wmIzM0OyxcbiYjNDM7XHRcdC5zd25vZGUgPSBcdTAwMjZub2Rlc1swXSxcbiYjNDM7XHR9KTtcbiYjNDM7XHRlcnJvciA9IFBUUl9FUlJfT1JfWkVSTyhwZGV2KTtcbiYjNDM7XHRpZiAoZXJyb3IpIHtcbiYjNDM7XHRcdHNvZnR3YXJlX25vZGVfdW5yZWdpc3Rlcl9ub2RlX2dyb3VwKG5vZGVfZ3JvdXApO1xuJiM0MztcdFx0cmV0dXJuIGVycm9yO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0YWluX2FuZF9udWxsX3B0cihwcm9wcyk7XG4mIzQzO1x0cmV0YWluX2FuZF9udWxsX3B0cihub2Rlcyk7XG4mIzQzO1x0cmV0YWluX2FuZF9udWxsX3B0cihyZWZfYXJncyk7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tI2RlZmluZSBiY200N3h4X2NvcHlfYmRhdGEoZGV2X2J1dHRvbnMpXHRcdFx0XHRcdFxcXG4tXHRiY200N3h4X2J1dHRvbnNfY29weShkZXZfYnV0dG9ucywgQVJSQVlfU0laRShkZXZfYnV0dG9ucykpO1xuJiM0MzsjZGVmaW5lIGJjbTQ3eHhfYWRkX2JkYXRhKGRldl9idXR0b25zKVx0XHRcdFx0XHRcXFxuJiM0MztcdGJjbTQ3eHhfYnV0dG9uc19hZGQoZGV2X2J1dHRvbnMsIEFSUkFZX1NJWkUoZGV2X2J1dHRvbnMpKVxuIFxuIGludCBfX2luaXQgYmNtNDd4eF9idXR0b25zX3JlZ2lzdGVyKHZvaWQpXG4ge1xuQEAgLTUyMSw1MiAmIzQzOzU5NSw1MiBAQCBpbnQgX19pbml0IGJjbTQ3eHhfYnV0dG9uc19yZWdpc3Rlcih2b2lkKVxuIFxuIFx0c3dpdGNoIChib2FyZCkge1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfUlROMTBVOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfcnRuMTB1KTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3J0bjEwdSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfUlROMTI6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c19ydG4xMik7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c19ydG4xMik7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfUlROMTY6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c19ydG4xNik7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c19ydG4xNik7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfUlRONjZVOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfcnRuNjZ1KTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3J0bjY2dSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0wzMDBHOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2wzMDBnKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsMzAwZyk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0wzMjBHRTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsMzIwZ2UpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2wzMjBnZSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0wzMzBHRTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsMzMwZ2UpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2wzMzBnZSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0w1MDBHOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBnKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwZyk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0w1MDBHRDpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwZ2QpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBnZCk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0w1MDBHUFYxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBncHYxKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwZ3B2MSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0w1MDBHUFYyOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBncHYyKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwZ3B2Mik7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0w1MDBXOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDB3KTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwdyk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0w1MjBHQzpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTIwZ2MpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MjBnYyk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0w1MjBHVTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTIwZ3UpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MjBndSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0w3MDBHRTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNzAwZ2UpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w3MDBnZSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0xIREQ6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bGhkZCk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bGhkZCk7XG4gXHRcdGJyZWFrO1xuIFxuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0JFTEtJTl9GN0QzMzAxOlxuQEAgLTU3NCwxOTMgJiM0Mzs2NDgsMTkzIEBAIGludCBfX2luaXQgYmNtNDd4eF9idXR0b25zX3JlZ2lzdGVyKHZvaWQpXG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQkVMS0lOX0Y3RDQzMDE6XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQkVMS0lOX0Y3RDQzMDI6XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQkVMS0lOX0Y3RDQ0MDE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYmVsa2luX2Y3ZDQzMDEpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2JlbGtpbl9mN2Q0MzAxKTtcbiBcdFx0YnJlYWs7XG4gXG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQlVGRkFMT19XSFIyX0E1NEc1NDpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docjJfYTU0ZzU0KTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docjJfYTU0ZzU0KTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQlVGRkFMT19XSFJfRzEyNTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docl9nMTI1KTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docl9nMTI1KTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQlVGRkFMT19XSFJfRzU0Uzpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docl9nNTRzKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docl9nNTRzKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQlVGRkFMT19XSFJfSFBfRzU0OlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd2hyX2hwX2c1NCk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYnVmZmFsb193aHJfaHBfZzU0KTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQlVGRkFMT19XWlJfRzMwME46XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYnVmZmFsb193enJfZzMwMG4pO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd3pyX2czMDBuKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQlVGRkFMT19XWlJfUlNfRzU0OlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd3pyX3JzX2c1NCk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYnVmZmFsb193enJfcnNfZzU0KTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQlVGRkFMT19XWlJfUlNfRzU0SFA6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYnVmZmFsb193enJfcnNfZzU0aHApO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd3pyX3JzX2c1NGhwKTtcbiBcdFx0YnJlYWs7XG4gXG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfREVMTF9UTTIzMDA6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfZGVsbF90bTIzMDApO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2RlbGxfdG0yMzAwKTtcbiBcdFx0YnJlYWs7XG4gXG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfRExJTktfRElSMTMwOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2RsaW5rX2RpcjEzMCk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfZGxpbmtfZGlyMTMwKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfRExJTktfRElSMzMwOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2RsaW5rX2RpcjMzMCk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfZGxpbmtfZGlyMzMwKTtcbiBcdFx0YnJlYWs7XG4gXG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfSFVBV0VJX0U5NzA6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfaHVhd2VpX2U5NzApO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2h1YXdlaV9lOTcwKTtcbiBcdFx0YnJlYWs7XG4gXG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19FMTAwMFYxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTEwMDB2MSk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMTAwMHYxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19FMTAwMFYyMTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UxMDAwdjIxKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UxMDAwdjIxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19FMjAwMFYxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTIwMDB2MSk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMjAwMHYxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19FMjUwMFYzOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTI1MDB2Myk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMjUwMHYzKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19FMzAwMFYxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTMwMDB2MSk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMzAwMHYxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19FMzIwMFYxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTMyMDB2MSk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMzIwMHYxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19FNDIwMFYxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTQyMDB2MSk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c19lNDIwMHYxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQxNTBOVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQxNTBudjEpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTUwbnYxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQxNTBOVjExOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTUwbnYxMSk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQxNTBudjExKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQxNjBOVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQxNjBudjEpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTYwbnYxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQxNjBOVjM6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQxNjBudjMpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTYwbnYzKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQzMDBOX1YxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzAwbl92MSk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMDBuX3YxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQzMDBOVjExOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzAwbnYxMSk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMDBudjExKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQzMTBOVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMTBudjEpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzEwbnYxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQzMTBOVjI6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMTBuX3YyKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDMxMG5fdjIpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX1dSVDMyME5fVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMjBuX3YxKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDMyMG5fdjEpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX1dSVDU0RzNHVjI6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQ1NGczZ3YyKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDU0ZzNndjIpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX1dSVDU0R19UWVBFXzAxMDE6XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQ1NEdfVFlQRV8wNDY3OlxuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfV1JUNTRHX1RZUEVfMDcwODpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDU0Z19nZW5lcmljKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDU0Z19nZW5lcmljKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQ2MTBOVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQ2MTBudjEpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NjEwbnYxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQ2MTBOVjI6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQ2MTBudjIpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NjEwbnYyKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlRTTDU0R1M6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnRzbDU0Z3MpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0c2w1NGdzKTtcbiBcdFx0YnJlYWs7XG4gXG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTFVYVUxfQUJSXzQ0MDBfVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfYWJyXzQ0MDBfdjEpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX2Ficl80NDAwX3YxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTFVYVUxfWEFQXzMxMF9WMTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMzEwX3YxKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMzEwX3YxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTFVYVUxfWEFQXzEyMTBfVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfeGFwXzEyMTBfdjEpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8xMjEwX3YxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTFVYVUxfWEFQXzEyMzBfVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfeGFwXzEyMzBfdjEpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8xMjMwX3YxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTFVYVUxfWEFQXzEyNDBfVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfeGFwXzEyNDBfdjEpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8xMjQwX3YxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTFVYVUxfWEFQXzE1MDBfVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfeGFwXzE1MDBfdjEpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8xNTAwX3YxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTFVYVUxfWEJSXzQ0MDBfVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfeGJyXzQ0MDBfdjEpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3hicl80NDAwX3YxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTFVYVUxfWFZXX1AzMF9WMTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94dndfcDMwX3YxKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94dndfcDMwX3YxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTFVYVUxfWFdSXzYwMF9WMTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94d3JfNjAwX3YxKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94d3JfNjAwX3YxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTFVYVUxfWFdSXzE3NTBfVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfeHdyXzE3NTBfdjEpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3h3cl8xNzUwX3YxKTtcbiBcdFx0YnJlYWs7XG4gXG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTUlDUk9TT0ZUX01ONzAwOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX21pY3Jvc29mdF9ubTcwMCk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbWljcm9zb2Z0X25tNzAwKTtcbiBcdFx0YnJlYWs7XG4gXG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTU9UT1JPTEFfV0U4MDBHOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX21vdG9yb2xhX3dlODAwZyk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbW90b3JvbGFfd2U4MDBnKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTU9UT1JPTEFfV1I4NTBHUDpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19tb3Rvcm9sYV93cjg1MGdwKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19tb3Rvcm9sYV93cjg1MGdwKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTU9UT1JPTEFfV1I4NTBHVjJWMzpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19tb3Rvcm9sYV93cjg1MGd2MnYzKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19tb3Rvcm9sYV93cjg1MGd2MnYzKTtcbiBcdFx0YnJlYWs7XG4gXG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9SNjIwMF9WMTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3I2MjAwX3YxKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3I2MjAwX3YxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9SNjMwMF9WMTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3I2MzAwX3YxKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3I2MzAwX3YxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9XTjI1MDBSUF9WMTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duMjUwMHJwX3YxKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duMjUwMHJwX3YxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9XTkRSMzQwMFYxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjM0MDB2MSk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bmRyMzQwMHYxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9XTkRSMzQwMF9WMzpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duZHIzNDAwX3YzKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duZHIzNDAwX3YzKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9XTkRSMzcwMFYzOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjM3MDB2Myk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bmRyMzcwMHYzKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9XTkRSNDUwMFYxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjQ1MDB2MSk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bmRyNDUwMHYxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9XTlIxMDAwX1YzOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25yMTAwMF92Myk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bnIxMDAwX3YzKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9XTlIzNTAwTDpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3ducjM1MDBsdjEpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25yMzUwMGx2MSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX05FVEdFQVJfV05SMzUwMExfVjI6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bnIzNTAwbHYyKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3ducjM1MDBsdjIpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9ORVRHRUFSX1dOUjgzNEJWMjpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3ducjgzNGJ2Mik7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bnI4MzRidjIpO1xuIFx0XHRicmVhaztcbiBcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9TSU1QTEVURUNIX1NJTVBMRVNIQVJFOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX3NpbXBsZXRlY2hfc2ltcGxlc2hhcmUpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX3NpbXBsZXRlY2hfc2ltcGxlc2hhcmUpO1xuIFx0XHRicmVhaztcbiBcbiBcdGRlZmF1bHQ6XG5AQCAtNzY5LDEzICYjNDM7ODQzLDcgQEAgaW50IF9faW5pdCBiY200N3h4X2J1dHRvbnNfcmVnaXN0ZXIodm9pZClcbiBcdH1cbiBcbiBcdGlmIChlcnIpXG4tXHRcdHJldHVybiAtRU5PTUVNO1xuLVxuLVx0ZXJyID0gcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKFx1MDAyNmJjbTQ3eHhfYnV0dG9uc19ncGlvX2tleXMpO1xuLVx0aWYgKGVycikge1xuLVx0XHRwcl9lcnIoXCYjMzQ7RmFpbGVkIHRvIHJlZ2lzdGVyIHBsYXRmb3JtIGRldmljZTogJWRcXG5cJiMzNDssIGVycik7XG4gXHRcdHJldHVybiBlcnI7XG4tXHR9XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmMgYi9kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uY1xuaW5kZXggNjU4YzdlMmFjOGJmNjEuLmVhNDUyMjJmMmZhMGZjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmNtYS9kcml2ZXJfZ3Bpby5jXG5AQCAtMTksNiAmIzQzOzE5LDExIEBAXG4gXG4gI2RlZmluZSBCQ01BX0dQSU9fTUFYX1BJTlNcdDMyXG4gXG4mIzQzO2NvbnN0IHN0cnVjdCBzb2Z0d2FyZV9ub2RlIGJjbWFfZ3Bpb19zd25vZGUgPSB7XG4mIzQzO1x0Lm5hbWUgPSBcJiMzNDtiY21hLWdwaW9cJiMzNDssXG4mIzQzO307XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKGJjbWFfZ3Bpb19zd25vZGUpO1xuJiM0MztcbiBzdGF0aWMgaW50IGJjbWFfZ3Bpb19nZXRfdmFsdWUoc3RydWN0IGdwaW9fY2hpcCAqY2hpcCwgdW5zaWduZWQgZ3BpbylcbiB7XG4gXHRzdHJ1Y3QgYmNtYV9kcnZfY2MgKmNjID0gZ3Bpb2NoaXBfZ2V0X2RhdGEoY2hpcCk7XG5AQCAtMTkwLDcgJiM0MzsxOTUsMjAgQEAgaW50IGJjbWFfZ3Bpb19pbml0KHN0cnVjdCBiY21hX2Rydl9jYyAqY2MpXG4gXHRjaGlwLVx1MDAzZWRpcmVjdGlvbl9pbnB1dFx0PSBiY21hX2dwaW9fZGlyZWN0aW9uX2lucHV0O1xuIFx0Y2hpcC1cdTAwM2VkaXJlY3Rpb25fb3V0cHV0XHQ9IGJjbWFfZ3Bpb19kaXJlY3Rpb25fb3V0cHV0O1xuIFx0Y2hpcC1cdTAwM2VwYXJlbnRcdFx0PSBidXMtXHUwMDNlZGV2O1xuLVx0Y2hpcC1cdTAwM2Vmd25vZGVcdFx0PSBkZXZfZndub2RlKFx1MDAyNmNjLVx1MDAzZWNvcmUtXHUwMDNlZGV2KTtcbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBSZWdpc3RlciBzb2Z0d2FyZSBub2RlIG9ubHkgZm9yIHRoZSBob3N0IFNvQyBidXMsIHVubGVzcyB0aGVyZSBpc1xuJiM0MztcdCAqIGFscmVhZHkgYSBmaXJtd2FyZSBub2RlIGFzc2lnbmVkLiBUaGVyZSBpcyBvbmx5IG9uZSBTb0MgaW5zdGFuY2VcbiYjNDM7XHQgKiBpbiB0aGUgc3lzdGVtLCBzbyB0aGVyZSBhcmUgbm8gY29uY2VybnMgd2l0aCByZWdpc3RyYXRpb24gY29uZmxpY3RzLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmIChidXMtXHUwMDNlaG9zdHR5cGUgPT0gQkNNQV9IT1NUVFlQRV9TT0MgXHUwMDI2XHUwMDI2ICFkZXZfZndub2RlKFx1MDAyNmNjLVx1MDAzZWNvcmUtXHUwMDNlZGV2KSkge1xuJiM0MztcdFx0ZXJyID0gc29mdHdhcmVfbm9kZV9yZWdpc3RlcihcdTAwMjZiY21hX2dwaW9fc3dub2RlKTtcbiYjNDM7XHRcdGlmIChlcnIpXG4mIzQzO1x0XHRcdHJldHVybiBlcnI7XG4mIzQzO1x0XHRjaGlwLVx1MDAzZWZ3bm9kZSA9IHNvZnR3YXJlX25vZGVfZndub2RlKFx1MDAyNmJjbWFfZ3Bpb19zd25vZGUpO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRjaGlwLVx1MDAzZWZ3bm9kZSA9IGRldl9md25vZGUoXHUwMDI2Y2MtXHUwMDNlY29yZS1cdTAwM2VkZXYpO1xuJiM0MztcdH1cbiBcbiBcdHN3aXRjaCAoYnVzLVx1MDAzZWNoaXBpbmZvLmlkKSB7XG4gXHRjYXNlIEJDTUFfQ0hJUF9JRF9CQ000NzA3OlxuQEAgLTIxOSwyMCAmIzQzOzIzNywzMyBAQCBpbnQgYmNtYV9ncGlvX2luaXQoc3RydWN0IGJjbWFfZHJ2X2NjICpjYylcbiBcbiBcdGVyciA9IGJjbWFfZ3Bpb19pcnFfaW5pdChjYyk7XG4gXHRpZiAoZXJyKVxuLVx0XHRyZXR1cm4gZXJyO1xuJiM0MztcdFx0Z290byBlcnJfdW5yZWdpc3Rlcl9zd25vZGU7XG4gXG4gXHRlcnIgPSBncGlvY2hpcF9hZGRfZGF0YShjaGlwLCBjYyk7XG4tXHRpZiAoZXJyKSB7XG4tXHRcdGJjbWFfZ3Bpb19pcnFfZXhpdChjYyk7XG4tXHRcdHJldHVybiBlcnI7XG4tXHR9XG4mIzQzO1x0aWYgKGVycilcbiYjNDM7XHRcdGdvdG8gZXJyX2lycV9leGl0O1xuIFxuIFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztlcnJfaXJxX2V4aXQ6XG4mIzQzO1x0YmNtYV9ncGlvX2lycV9leGl0KGNjKTtcbiYjNDM7ZXJyX3VucmVnaXN0ZXJfc3dub2RlOlxuJiM0MztcdGlmIChidXMtXHUwMDNlaG9zdHR5cGUgPT0gQkNNQV9IT1NUVFlQRV9TT0MgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIGNoaXAtXHUwMDNlZndub2RlIFx1MDAyNlx1MDAyNiBpc19zb2Z0d2FyZV9ub2RlKGNoaXAtXHUwMDNlZndub2RlKSkge1xuJiM0MztcdFx0c29mdHdhcmVfbm9kZV91bnJlZ2lzdGVyKFx1MDAyNmJjbWFfZ3Bpb19zd25vZGUpO1xuJiM0MztcdFx0Y2hpcC1cdTAwM2Vmd25vZGUgPSBOVUxMO1xuJiM0MztcdH1cbiYjNDM7XHRyZXR1cm4gZXJyO1xuIH1cbiBcbiBpbnQgYmNtYV9ncGlvX3VucmVnaXN0ZXIoc3RydWN0IGJjbWFfZHJ2X2NjICpjYylcbiB7XG4gXHRiY21hX2dwaW9faXJxX2V4aXQoY2MpO1xuIFx0Z3Bpb2NoaXBfcmVtb3ZlKFx1MDAyNmNjLVx1MDAzZWdwaW8pO1xuJiM0MztcdGlmIChjYy1cdTAwM2Vjb3JlLVx1MDAzZWJ1cy1cdTAwM2Vob3N0dHlwZSA9PSBCQ01BX0hPU1RUWVBFX1NPQyBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgY2MtXHUwMDNlZ3Bpby5md25vZGUgXHUwMDI2XHUwMDI2IGlzX3NvZnR3YXJlX25vZGUoY2MtXHUwMDNlZ3Bpby5md25vZGUpKSB7XG4mIzQzO1x0XHRzb2Z0d2FyZV9ub2RlX3VucmVnaXN0ZXIoXHUwMDI2YmNtYV9ncGlvX3N3bm9kZSk7XG4mIzQzO1x0XHRjYy1cdTAwM2VncGlvLmZ3bm9kZSA9IE5VTEw7XG4mIzQzO1x0fVxuIFx0cmV0dXJuIDA7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmMgYi9kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jXG5pbmRleCA5MDU2NTdjOTI1YmNlYi4uODc5MjI0Nzk5NDZjYjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jXG5AQCAtMTUsOCAmIzQzOzE1LDE0IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaW50ZXJydXB0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pcnFkb21haW4uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2V4cG9ydC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zc2Ivc3NiLmhcdTAwM2VcbiBcbiYjNDM7Y29uc3Qgc3RydWN0IHNvZnR3YXJlX25vZGUgc3NiX2dwaW9fc3dub2RlID0ge1xuJiM0MztcdC5uYW1lID0gXCYjMzQ7c3NiLWdwaW9cJiMzNDssXG4mIzQzO307XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHNzYl9ncGlvX3N3bm9kZSk7XG4mIzQzO1xuIFxuIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAqIFNoYXJlZFxuQEAgLTIzMiw2ICYjNDM7MjM4LDggQEAgc3RhdGljIGludCBzc2JfZ3Bpb19jaGlwY29faW5pdChzdHJ1Y3Qgc3NiX2J1cyAqYnVzKVxuIFx0Y2hpcC1cdTAwM2V0b19pcnFcdFx0PSBzc2JfZ3Bpb190b19pcnE7XG4gI2VuZGlmXG4gXHRjaGlwLVx1MDAzZW5ncGlvXHRcdD0gMTY7XG4mIzQzO1x0aWYgKGJ1cy1cdTAwM2VidXN0eXBlID09IFNTQl9CVVNUWVBFX1NTQilcbiYjNDM7XHRcdGNoaXAtXHUwMDNlZndub2RlXHQ9IHNvZnR3YXJlX25vZGVfZndub2RlKFx1MDAyNnNzYl9ncGlvX3N3bm9kZSk7XG4gXHQvKiBUaGVyZSBpcyBqdXN0IG9uZSBTb0MgaW4gb25lIGRldmljZSBhbmQgaXRzIEdQSU8gYWRkcmVzc2VzIHNob3VsZCBiZVxuIFx0ICogZGV0ZXJtaW5pc3RpYyB0byBhZGRyZXNzIHRoZW0gbW9yZSBlYXNpbHkuIFRoZSBvdGhlciBidXNlcyBjb3VsZCBnZXRcbiBcdCAqIGEgcmFuZG9tIGJhc2UgbnVtYmVyLlxuQEAgLTQzMywxMCAmIzQzOzQ0MSwxMiBAQCBzdGF0aWMgaW50IHNzYl9ncGlvX2V4dGlmX2luaXQoc3RydWN0IHNzYl9idXMgKmJ1cylcbiBcdCAqIGRldGVybWluaXN0aWMgdG8gYWRkcmVzcyB0aGVtIG1vcmUgZWFzaWx5LiBUaGUgb3RoZXIgYnVzZXMgY291bGQgZ2V0XG4gXHQgKiBhIHJhbmRvbSBiYXNlIG51bWJlci5cbiBcdCAqL1xuLVx0aWYgKGJ1cy1cdTAwM2VidXN0eXBlID09IFNTQl9CVVNUWVBFX1NTQilcbi1cdFx0Y2hpcC1cdTAwM2ViYXNlXHRcdD0gMDtcbi1cdGVsc2Vcbi1cdFx0Y2hpcC1cdTAwM2ViYXNlXHRcdD0gLTE7XG4mIzQzO1x0aWYgKGJ1cy1cdTAwM2VidXN0eXBlID09IFNTQl9CVVNUWVBFX1NTQikge1xuJiM0MztcdFx0Y2hpcC1cdTAwM2ViYXNlXHQ9IDA7XG4mIzQzO1x0XHRjaGlwLVx1MDAzZWZ3bm9kZVx0PSBzb2Z0d2FyZV9ub2RlX2Z3bm9kZShcdTAwMjZzc2JfZ3Bpb19zd25vZGUpO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRjaGlwLVx1MDAzZWJhc2VcdD0gLTE7XG4mIzQzO1x0fVxuIFxuIFx0ZXJyID0gc3NiX2dwaW9faXJxX2V4dGlmX2RvbWFpbl9pbml0KGJ1cyk7XG4gXHRpZiAoZXJyKVxuQEAgLTQ2NCwxMSAmIzQzOzQ3NCwzMyBAQCBzdGF0aWMgaW50IHNzYl9ncGlvX2V4dGlmX2luaXQoc3RydWN0IHNzYl9idXMgKmJ1cylcbiBcbiBpbnQgc3NiX2dwaW9faW5pdChzdHJ1Y3Qgc3NiX2J1cyAqYnVzKVxuIHtcbiYjNDM7XHRpbnQgZXJyID0gMDtcbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBSZWdpc3RlciBzb2Z0d2FyZSBub2RlIG9ubHkgZm9yIHRoZSBob3N0IFNvQyBidXMuIFRoZXJlIGlzIG9ubHlcbiYjNDM7XHQgKiBvbmUgU29DIGluc3RhbmNlIGluIHRoZSBzeXN0ZW0sIHNvIHRoZXJlIGFyZSBubyBjb25jZXJucyB3aXRoXG4mIzQzO1x0ICogcmVnaXN0cmF0aW9uIGNvbmZsaWN0cy5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoYnVzLVx1MDAzZWJ1c3R5cGUgPT0gU1NCX0JVU1RZUEVfU1NCKSB7XG4mIzQzO1x0XHRlcnIgPSBzb2Z0d2FyZV9ub2RlX3JlZ2lzdGVyKFx1MDAyNnNzYl9ncGlvX3N3bm9kZSk7XG4mIzQzO1x0XHRpZiAoZXJyKVxuJiM0MztcdFx0XHRyZXR1cm4gZXJyO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRpZiAoc3NiX2NoaXBjb19hdmFpbGFibGUoXHUwMDI2YnVzLVx1MDAzZWNoaXBjbykpXG4tXHRcdHJldHVybiBzc2JfZ3Bpb19jaGlwY29faW5pdChidXMpO1xuJiM0MztcdFx0ZXJyID0gc3NiX2dwaW9fY2hpcGNvX2luaXQoYnVzKTtcbiBcdGVsc2UgaWYgKHNzYl9leHRpZl9hdmFpbGFibGUoXHUwMDI2YnVzLVx1MDAzZWV4dGlmKSlcbi1cdFx0cmV0dXJuIHNzYl9ncGlvX2V4dGlmX2luaXQoYnVzKTtcbi1cdHJldHVybiAtMTtcbiYjNDM7XHRcdGVyciA9IHNzYl9ncGlvX2V4dGlmX2luaXQoYnVzKTtcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRlcnIgPSAtRU5PREVWO1xuJiM0MztcbiYjNDM7XHRpZiAoZXJyKSB7XG4mIzQzO1x0XHRpZiAoYnVzLVx1MDAzZWJ1c3R5cGUgPT0gU1NCX0JVU1RZUEVfU1NCKVxuJiM0MztcdFx0XHRzb2Z0d2FyZV9ub2RlX3VucmVnaXN0ZXIoXHUwMDI2c3NiX2dwaW9fc3dub2RlKTtcbiYjNDM7XHRcdHJldHVybiBlcnI7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiB9XG4gXG4gaW50IHNzYl9ncGlvX3VucmVnaXN0ZXIoc3RydWN0IHNzYl9idXMgKmJ1cylcbkBAIC00NzYsNiAmIzQzOzUwOCw4IEBAIGludCBzc2JfZ3Bpb191bnJlZ2lzdGVyKHN0cnVjdCBzc2JfYnVzICpidXMpXG4gXHRpZiAoc3NiX2NoaXBjb19hdmFpbGFibGUoXHUwMDI2YnVzLVx1MDAzZWNoaXBjbykgfHxcbiBcdCAgICBzc2JfZXh0aWZfYXZhaWxhYmxlKFx1MDAyNmJ1cy1cdTAwM2VleHRpZikpIHtcbiBcdFx0Z3Bpb2NoaXBfcmVtb3ZlKFx1MDAyNmJ1cy1cdTAwM2VncGlvKTtcbiYjNDM7XHRcdGlmIChidXMtXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpXG4mIzQzO1x0XHRcdHNvZnR3YXJlX25vZGVfdW5yZWdpc3RlcihcdTAwMjZzc2JfZ3Bpb19zd25vZGUpO1xuIFx0XHRyZXR1cm4gMDtcbiBcdH1cbiBcdHJldHVybiAtMTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2JjbWEvYmNtYS5oIGIvaW5jbHVkZS9saW51eC9iY21hL2JjbWEuaFxuaW5kZXggZjAyY2IzOTA5Mzc1ZTAuLjE3ZmM1MDE5MDAxNGU5IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9iY21hL2JjbWEuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9iY21hL2JjbWEuaFxuQEAgLTQ4Niw0ICYjNDM7NDg2LDYgQEAgZXh0ZXJuIHUzMiBiY21hX2NvcmVfZG1hX3RyYW5zbGF0aW9uKHN0cnVjdCBiY21hX2RldmljZSAqY29yZSk7XG4gXG4gZXh0ZXJuIHVuc2lnbmVkIGludCBiY21hX2NvcmVfaXJxKHN0cnVjdCBiY21hX2RldmljZSAqY29yZSwgaW50IG51bSk7XG4gXG4mIzQzO2V4dGVybiBjb25zdCBzdHJ1Y3Qgc29mdHdhcmVfbm9kZSBiY21hX2dwaW9fc3dub2RlO1xuJiM0MztcbiAjZW5kaWYgLyogTElOVVhfQkNNQV9IXyAqL1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc3NiL3NzYi5oIGIvaW5jbHVkZS9saW51eC9zc2Ivc3NiLmhcbmluZGV4IDdmZWU5YWZhOTQ1ODhiLi42N2NiNjZmNmY1ZWQ2ZCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvc3NiL3NzYi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3NzYi9zc2IuaFxuQEAgLTY3MSw0ICYjNDM7NjcxLDYgQEAgaW50IHNzYl9wY2liaW9zX3BsYXRfZGV2X2luaXQoc3RydWN0IHBjaV9kZXYgKmRldik7XG4gaW50IHNzYl9wY2liaW9zX21hcF9pcnEoY29uc3Qgc3RydWN0IHBjaV9kZXYgKmRldiwgdTggc2xvdCwgdTggcGluKTtcbiAjZW5kaWYgLyogQ09ORklHX1NTQl9FTUJFRERFRCAqL1xuIFxuJiM0MztleHRlcm4gY29uc3Qgc3RydWN0IHNvZnR3YXJlX25vZGUgc3NiX2dwaW9fc3dub2RlO1xuJiM0MztcbiAjZW5kaWYgLyogTElOVVhfU1NCX0hfICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDI6NTU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJDTTQ3eHggYnV0dG9ucyBkcml2ZXIgYW5kIGFzc29jaWF0ZWQgQkNNQS9TU0IgR1BJTyBkcml2ZXJzIHRvIHVzZSBzb2Z0d2FyZSBub2RlcyBpbnN0ZWFkIG9mIHBsYXRmb3JtIGRhdGEuIFRoZXNlIGNoYW5nZXMgYXJlIHNwZWNpZmljIHRvIHRoZSBNSVBTIEJDTTQ3eHggYXJjaGl0ZWN0dXJlIGFuZCBpdHMgU29DIGJ1c2VzIChCQ01BX0hPU1RUWVBFX1NPQyBhbmQgU1NCX0JVU1RZUEVfU1NCKS4gU2luY2Ugc3l6a2FsbGVyIGRvZXMgbm90IGZ1enogTUlQUyBCQ000N3h4IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgdGhlc2UgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmOGM3OTUwMjU0M2VlMjEwNGVhNDIwNTM3MTk1Yzg2ZjdjMzA0Mjk5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdWwgMTQgMDI6NTU6MDkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvYmNtNDd4eC9idXR0b25zLmMgYi9hcmNoL21pcHMvYmNtNDd4eC9idXR0b25zLmMKaW5kZXggNDY5OTRmOWJiODIxOWMuLjE1MWE0ZWUyODAzZjAyIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvYmNtNDd4eC9idXR0b25zLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9taXBzL2JjbTQ3eHgvYnV0dG9ucy5jCkBAIC0xLDkgJiM0MzsxLDE0IEBACiAvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAogI2luY2x1ZGUgJiMzNDtiY200N3h4X3ByaXZhdGUuaCYjMzQ7CiAKLSNpbmNsdWRlICZsdDtsaW51eC9pbnB1dC5oJmd0OwotI2luY2x1ZGUgJmx0O2xpbnV4L2dwaW9fa2V5cy5oJmd0OwomIzQzOyNpbmNsdWRlICYjMzQ7bGludXgvZXJyLmgmIzM0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9ncGlvL21hY2hpbmUuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvZ3Bpby9wcm9wZXJ0eS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9pbnB1dC1ldmVudC1jb2Rlcy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2ludGVycnVwdC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcHJvcGVydHkuaCZndDsKJiM0MzsKICNpbmNsdWRlICZsdDtiY200N3h4X2JvYXJkLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7YmNtNDd4eC5oJmd0OwogCkBAIC0xMSwyOSAmIzQzOzE2LDM0IEBACiAgKiBEYXRhYmFzZQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi0jZGVmaW5lIEJDTTQ3WFhfR1BJT19LRVkoX2dwaW8sIF9jb2RlKQkJCQkJXAotCXsJCQkJCQkJCVwKLQkJLmNvZGUJCT0gX2NvZGUsCQkJCVwKLQkJLmdwaW8JCT0gX2dwaW8sCQkJCVwKLQkJLmFjdGl2ZV9sb3cJPSAxLAkJCQkJXAomIzQzO3N0cnVjdCBiY200N3h4X2dwaW9fa2V5IHsKJiM0MzsJdTE2IGNvZGU7CiYjNDM7CXU4IHBpbjsKJiM0MzsJdTggZmxhZ3M7CiYjNDM7fTsKJiM0MzsKJiM0MzsjZGVmaW5lIEJDTTQ3WFhfR1BJT19LRVkoX2dwaW8sIF9jb2RlKQkJCVwKJiM0MzsJewkJCQkJCVwKJiM0MzsJCS5jb2RlCT0gX2NvZGUsCQkJXAomIzQzOwkJLnBpbgk9IF9ncGlvLAkJCVwKJiM0MzsJCS5mbGFncwk9IEdQSU9fQUNUSVZFX0xPVywJCVwKIAl9CiAKLSNkZWZpbmUgQkNNNDdYWF9HUElPX0tFWV9IKF9ncGlvLCBfY29kZSkJCQkJXAotCXsJCQkJCQkJCVwKLQkJLmNvZGUJCT0gX2NvZGUsCQkJCVwKLQkJLmdwaW8JCT0gX2dwaW8sCQkJCVwKJiM0MzsjZGVmaW5lIEJDTTQ3WFhfR1BJT19LRVlfSChfZ3BpbywgX2NvZGUpCQlcCiYjNDM7CXsJCQkJCQlcCiYjNDM7CQkuY29kZQk9IF9jb2RlLAkJCVwKJiM0MzsJCS5waW4JPSBfZ3BpbywJCQlcCiYjNDM7CQkuZmxhZ3MJPSBHUElPX0FDVElWRV9ISUdILAkJXAogCX0KIAogLyogQXN1cyAqLwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KLWJjbTQ3eHhfYnV0dG9uc19hc3VzX3J0bjEwdVtdIF9faW5pdGNvbnN0ID0gewomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleSBiY200N3h4X2J1dHRvbnNfYXN1c19ydG4xMHVbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDIwLCBLRVlfV1BTX0JVVFRPTiksCiAJQkNNNDdYWF9HUElPX0tFWSgyMSwgS0VZX1JFU1RBUlQpLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCi1iY200N3h4X2J1dHRvbnNfYXN1c19ydG4xMltdIF9faW5pdGNvbnN0ID0gewomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleSBiY200N3h4X2J1dHRvbnNfYXN1c19ydG4xMltdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoMCwgS0VZX1dQU19CVVRUT04pLAogCUJDTTQ3WFhfR1BJT19LRVkoMSwgS0VZX1JFU1RBUlQpLAogCUJDTTQ3WFhfR1BJT19LRVkoNCwgQlROXzApLCAvKiBSb3V0ZXIgbW9kZSAqLwpAQCAtNDEsNzQgJiM0Mzs1MSw3MyBAQCBiY200N3h4X2J1dHRvbnNfYXN1c19ydG4xMltdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoNiwgQlROXzIpLCAvKiBBUCBtb2RlICovCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KLWJjbTQ3eHhfYnV0dG9uc19hc3VzX3J0bjE2W10gX19pbml0Y29uc3QgPSB7CiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5IGJjbTQ3eHhfYnV0dG9uc19hc3VzX3J0bjE2W10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfV1BTX0JVVFRPTiksCiAJQkNNNDdYWF9HUElPX0tFWSg4LCBLRVlfUkVTVEFSVCksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19hc3VzX3J0bjY2dVtdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLAogCUJDTTQ3WFhfR1BJT19LRVkoOSwgS0VZX1JFU1RBUlQpLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfYXN1c193bDMwMGdbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX2FzdXNfd2wzMjBnZVtdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfYXN1c193bDMzMGdlW10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSgyLCBLRVlfUkVTVEFSVCksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwZ1tdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfYXN1c193bDUwMGdkW10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwZ3B2MVtdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoMCwgS0VZX1JFU1RBUlQpLAogCUJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfYXN1c193bDUwMGdwdjJbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDIsIEtFWV9SRVNUQVJUKSwKIAlCQ000N1hYX0dQSU9fS0VZKDMsIEtFWV9XUFNfQlVUVE9OKSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDB3W10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWV9IKDYsIEtFWV9SRVNUQVJUKSwKIAlCQ000N1hYX0dQSU9fS0VZX0goNywgS0VZX1dQU19CVVRUT04pLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfYXN1c193bDUyMGdjW10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSgyLCBLRVlfUkVTVEFSVCksCiAJQkNNNDdYWF9HUElPX0tFWSgzLCBLRVlfV1BTX0JVVFRPTiksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTIwZ3VbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDIsIEtFWV9SRVNUQVJUKSwKIAlCQ000N1hYX0dQSU9fS0VZKDMsIEtFWV9XUFNfQlVUVE9OKSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX2FzdXNfd2w3MDBnZVtdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoMCwgS0VZX1BPV0VSKSwgLyogSGFyZCBkaXNrIHBvd2VyIHN3aXRjaCAqLwogCUJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLCAvKiBFWlNldHVwICovCkBAIC0xMTYsMjEgJiM0MzsxMjUsMjEgQEAgYmNtNDd4eF9idXR0b25zX2FzdXNfd2w3MDBnZVtdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoNywgS0VZX1JFU1RBUlQpLCAvKiBIYXJkIHJlc2V0ICovCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsaGRkW10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksCiB9OwogCiAvKiBIdWF3ZWkgKi8KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfaHVhd2VpX2U5NzBbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSwKIH07CiAKIC8qIEJlbGtpbiAqLwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19iZWxraW5fZjdkNDMwMVtdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLAogCUJDTTQ3WFhfR1BJT19LRVkoOCwgS0VZX1dQU19CVVRUT04pLApAQCAtMTM4LDQ0ICYjNDM7MTQ3LDQ0IEBAIGJjbTQ3eHhfYnV0dG9uc19iZWxraW5fZjdkNDMwMVtdIF9faW5pdGNvbnN0ID0gewogCiAvKiBCdWZmYWxvICovCiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd2hyMl9hNTRnNTRbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9SRVNUQVJUKSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd2hyX2cxMjVbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDAsIEtFWV9XUFNfQlVUVE9OKSwKIAlCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9SRVNUQVJUKSwKIAlCQ000N1hYX0dQSU9fS0VZKDUsIEJUTl8wKSwgLyogUm91dGVyIC8gQVAgbW9kZSBzd2l0Y2ggKi8KIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd2hyX2c1NHNbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDAsIEtFWV9XUFNfQlVUVE9OKSwKIAlCQ000N1hYX0dQSU9fS0VZX0goNCwgS0VZX1JFU1RBUlQpLAogCUJDTTQ3WFhfR1BJT19LRVkoNSwgQlROXzApLCAvKiBSb3V0ZXIgLyBBUCBtb2RlIHN3aXRjaCAqLwogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfYnVmZmFsb193aHJfaHBfZzU0W10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSgwLCBLRVlfV1BTX0JVVFRPTiksCiAJQkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfUkVTVEFSVCksCiAJQkNNNDdYWF9HUElPX0tFWSg1LCBCVE5fMCksIC8qIFJvdXRlciAvIEFQIG1vZGUgc3dpdGNoICovCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3d6cl9nMzAwbltdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1JFU1RBUlQpLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfYnVmZmFsb193enJfcnNfZzU0W10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSgwLCBLRVlfV1BTX0JVVFRPTiksCiAJQkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfUkVTVEFSVCksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3d6cl9yc19nNTRocFtdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoMCwgS0VZX1dQU19CVVRUT04pLAogCUJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1JFU1RBUlQpLApAQCAtMTgzLDIwICYjNDM7MTkyLDIwIEBAIGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3d6cl9yc19nNTRocFtdIF9faW5pdGNvbnN0ID0gewogCiAvKiBEZWxsICovCiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX2RlbGxfdG0yMzAwW10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSgwLCBLRVlfUkVTVEFSVCksCiB9OwogCiAvKiBELUxpbmsgKi8KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfZGxpbmtfZGlyMTMwW10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSgzLCBLRVlfUkVTVEFSVCksCiAJQkNNNDdYWF9HUElPX0tFWSg3LCBLRVlfVU5LTk9XTiksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19kbGlua19kaXIzMzBbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDMsIEtFWV9SRVNUQVJUKSwKIAlCQ000N1hYX0dQSU9fS0VZKDcsIEtFWV9VTktOT1dOKSwKQEAgLTIwNCwxMjcgJiM0MzsyMTMsMTI3IEBAIGJjbTQ3eHhfYnV0dG9uc19kbGlua19kaXIzMzBbXSBfX2luaXRjb25zdCA9IHsKIAogLyogTGlua3N5cyAqLwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UxMDAwdjFbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDUsIEtFWV9XUFNfQlVUVE9OKSwKIAlCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTEwMDB2MjFbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDksIEtFWV9XUFNfQlVUVE9OKSwKIAlCQ000N1hYX0dQSU9fS0VZKDEwLCBLRVlfUkVTVEFSVCksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UyMDAwdjFbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDUsIEtFWV9XUFNfQlVUVE9OKSwKIAlCQ000N1hYX0dQSU9fS0VZKDgsIEtFWV9SRVNUQVJUKSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTI1MDB2M1tdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoOSwgS0VZX1dQU19CVVRUT04pLAogCUJDTTQ3WFhfR1BJT19LRVkoMTAsIEtFWV9SRVNUQVJUKSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTMwMDB2MVtdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLAogCUJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMzIwMHYxW10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSg1LCBLRVlfUkVTVEFSVCksCiAJQkNNNDdYWF9HUElPX0tFWSg4LCBLRVlfV1BTX0JVVFRPTiksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2U0MjAwdjFbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9XUFNfQlVUVE9OKSwKIAlCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTUwbnYxW10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksCiAJQkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDE1MG52MTFbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9XUFNfQlVUVE9OKSwKIAlCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTYwbnYxW10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksCiAJQkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDE2MG52M1tdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoNSwgS0VZX1dQU19CVVRUT04pLAogCUJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMDBuX3YxW10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksCiAJQkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDMwMG52MTFbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9VTktOT1dOKSwKIAlCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzEwbnYxW10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksCiAJQkNNNDdYWF9HUElPX0tFWSg4LCBLRVlfVU5LTk9XTiksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDMxMG5fdjJbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDUsIEtFWV9XUFNfQlVUVE9OKSwKIAlCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzIwbl92MVtdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoNSwgS0VZX1dQU19CVVRUT04pLAogCUJDTTQ3WFhfR1BJT19LRVkoOCwgS0VZX1JFU1RBUlQpLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQ1NGczZ3YyW10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSg1LCBLRVlfV0lNQVgpLAogCUJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQ1NGdfZ2VuZXJpY1tdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLAogCUJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQ2MTBudjFbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSwKIAlCQ000N1hYX0dQSU9fS0VZKDgsIEtFWV9XUFNfQlVUVE9OKSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NjEwbnYyW10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksCiAJQkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydHNsNTRnc1tdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLAogCUJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLApAQCAtMzMyLDE1NCAmIzQzOzM0MSwxNTQgQEAgYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0c2w1NGdzW10gX19pbml0Y29uc3QgPSB7CiAKIC8qIEx1eHVsICovCiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX2x1eHVsX2Ficl80NDAwX3YxW10gPSB7CiAJQkNNNDdYWF9HUElPX0tFWSgxNCwgS0VZX1JFU1RBUlQpLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfbHV4dWxfeGFwXzMxMF92MVtdID0gewogCUJDTTQ3WFhfR1BJT19LRVkoMjAsIEtFWV9SRVNUQVJUKSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8xMjEwX3YxW10gPSB7CiAJQkNNNDdYWF9HUElPX0tFWSg4LCBLRVlfUkVTVEFSVCksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMTIzMF92MVtdID0gewogCUJDTTQ3WFhfR1BJT19LRVkoOCwgS0VZX1JFU1RBUlQpLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfbHV4dWxfeGFwXzEyNDBfdjFbXSA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDgsIEtFWV9SRVNUQVJUKSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8xNTAwX3YxW10gPSB7CiAJQkNNNDdYWF9HUElPX0tFWSgxNCwgS0VZX1JFU1RBUlQpLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfbHV4dWxfeGJyXzQ0MDBfdjFbXSA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDE0LCBLRVlfUkVTVEFSVCksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94dndfcDMwX3YxW10gPSB7CiAJQkNNNDdYWF9HUElPX0tFWSgyMCwgS0VZX1JFU1RBUlQpLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfbHV4dWxfeHdyXzYwMF92MVtdID0gewogCUJDTTQ3WFhfR1BJT19LRVkoOCwgS0VZX1JFU1RBUlQpLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfbHV4dWxfeHdyXzE3NTBfdjFbXSA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDE0LCBLRVlfUkVTVEFSVCksCiB9OwogCiAvKiBNaWNyb3NvZnQgKi8KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfbWljcm9zb2Z0X25tNzAwW10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSg3LCBLRVlfUkVTVEFSVCksCiB9OwogCiAvKiBNb3Rvcm9sYSAqLwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19tb3Rvcm9sYV93ZTgwMGdbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDAsIEtFWV9SRVNUQVJUKSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX21vdG9yb2xhX3dyODUwZ3BbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDUsIEtFWV9SRVNUQVJUKSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX21vdG9yb2xhX3dyODUwZ3YydjNbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDUsIEtFWV9SRVNUQVJUKSwKIH07CiAKIC8qIE5ldGdlYXIgKi8KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl9yNjIwMF92MVtdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoMiwgS0VZX1JGS0lMTCksCiAJQkNNNDdYWF9HUElPX0tFWSgzLCBLRVlfUkVTVEFSVCksCiAJQkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3I2MzAwX3YxW10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duMjUwMHJwX3YxW10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSgxMiwgS0VZX1JFU1RBUlQpLAogCUJDTTQ3WFhfR1BJT19LRVkoMzEsIEtFWV9XUFNfQlVUVE9OKSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjM0MDB2MVtdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1JFU1RBUlQpLAogCUJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1dQU19CVVRUT04pLAogCUJDTTQ3WFhfR1BJT19LRVkoOCwgS0VZX1JGS0lMTCksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duZHIzNDAwX3YzW10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSgxMiwgS0VZX1JFU1RBUlQpLAogCUJDTTQ3WFhfR1BJT19LRVkoMjMsIEtFWV9XUFNfQlVUVE9OKSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjM3MDB2M1tdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoMiwgS0VZX1JGS0lMTCksCiAJQkNNNDdYWF9HUElPX0tFWSgzLCBLRVlfUkVTVEFSVCksCiAJQkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duZHI0NTAwdjFbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9XUFNfQlVUVE9OKSwKIAlCQ000N1hYX0dQSU9fS0VZKDUsIEtFWV9SRktJTEwpLAogCUJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bnIxMDAwX3YzW10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSgyLCBLRVlfV1BTX0JVVFRPTiksCiAJQkNNNDdYWF9HUElPX0tFWSgzLCBLRVlfUkVTVEFSVCksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3ducjM1MDBsdjFbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9SRVNUQVJUKSwKIAlCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9XUFNfQlVUVE9OKSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25yMzUwMGx2MltdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1JFU1RBUlQpLAogCUJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1dQU19CVVRUT04pLAogCUJDTTQ3WFhfR1BJT19LRVkoOCwgS0VZX1JGS0lMTCksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3ducjgzNGJ2MltdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLAogfTsKIAogLyogU2ltcGxlVGVjaCAqLwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19zaW1wbGV0ZWNoX3NpbXBsZXNoYXJlW10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSgwLCBLRVlfUkVTVEFSVCksCiB9OwpAQCAtNDg4LDMxICYjNDM7NDk3LDk2IEBAIGJjbTQ3eHhfYnV0dG9uc19zaW1wbGV0ZWNoX3NpbXBsZXNoYXJlW10gX19pbml0Y29uc3QgPSB7CiAgKiBJbml0CiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLXN0YXRpYyBzdHJ1Y3QgZ3Bpb19rZXlzX3BsYXRmb3JtX2RhdGEgYmNtNDd4eF9idXR0b25fcGRhdGE7Ci0KLXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIGJjbTQ3eHhfYnV0dG9uc19ncGlvX2tleXMgPSB7Ci0JLm5hbWUgPSAmIzM0O2dwaW8ta2V5cyYjMzQ7LAotCS5kZXYgPSB7Ci0JCS5wbGF0Zm9ybV9kYXRhID0gJmFtcDtiY200N3h4X2J1dHRvbl9wZGF0YSwKJiM0MztzdGF0aWMgaW50IF9faW5pdAomIzQzO2JjbTQ3eHhfYnV0dG9uc19hZGQoY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkgKmJ1dHRvbnMsIGludCBuYnV0dG9ucykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7CiYjNDM7CWNvbnN0IHN0cnVjdCBzb2Z0d2FyZV9ub2RlICpncGlvX3N3bm9kZTsKJiM0MzsJc3RydWN0IHByb3BlcnR5X2VudHJ5ICpwOwomIzQzOwlpbnQgZXJyb3I7CiYjNDM7CWludCBpOwomIzQzOwomIzQzOwlzd2l0Y2ggKGJjbTQ3eHhfYnVzX3R5cGUpIHsKJiM0MzsjaWZkZWYgQ09ORklHX0JDTTQ3WFhfQkNNQQomIzQzOwljYXNlIEJDTTQ3WFhfQlVTX1RZUEVfQkNNQToKJiM0MzsJCWdwaW9fc3dub2RlID0gJmFtcDtiY21hX2dwaW9fc3dub2RlOwomIzQzOwkJYnJlYWs7CiYjNDM7I2VuZGlmCiYjNDM7I2lmZGVmIENPTkZJR19CQ000N1hYX1NTQgomIzQzOwljYXNlIEJDTTQ3WFhfQlVTX1RZUEVfU1NCOgomIzQzOwkJZ3Bpb19zd25vZGUgPSAmYW1wO3NzYl9ncGlvX3N3bm9kZTsKJiM0MzsJCWJyZWFrOwomIzQzOyNlbmRpZgomIzQzOwlkZWZhdWx0OgomIzQzOwkJcmV0dXJuIC1FTk9ERVY7CiAJfQotfTsKIAotLyogQ29weSBkYXRhIGZyb20gX19pbml0Y29uc3QgKi8KLXN0YXRpYyBpbnQgX19pbml0IGJjbTQ3eHhfYnV0dG9uc19jb3B5KGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uICpidXR0b25zLAotCQkJCSAgICAgICBzaXplX3QgbmJ1dHRvbnMpCi17Ci0Jc2l6ZV90IHNpemUgPSBuYnV0dG9ucyAqIHNpemVvZigqYnV0dG9ucyk7CiYjNDM7CS8qIDEgbm9kZSBmb3IgZ3Bpby1rZXlzIGRldmljZSwgMSBub2RlIGZvciBlYWNoIGJ1dHRvbiwgMSB0ZXJtaW5hdG9yICovCiYjNDM7CWNvbnN0IHN0cnVjdCBzb2Z0d2FyZV9ub2RlICoqbm9kZV9ncm91cCBfX2ZyZWUoa2ZyZWUpID0KJiM0MzsJCWtjYWxsb2MoMSAmIzQzOyBuYnV0dG9ucyAmIzQzOyAxLCBzaXplb2YoKm5vZGVfZ3JvdXApLCBHRlBfS0VSTkVMKTsKJiM0MzsJaWYgKCFub2RlX2dyb3VwKQomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiAKLQliY200N3h4X2J1dHRvbl9wZGF0YS5idXR0b25zID0ga21lbWR1cChidXR0b25zLCBzaXplLCBHRlBfS0VSTkVMKTsKLQlpZiAoIWJjbTQ3eHhfYnV0dG9uX3BkYXRhLmJ1dHRvbnMpCiYjNDM7CS8qIDEgY29kZSBwcm9wZXJ0eSwgMSBncGlvIHByb3BlcnR5LCAxIHRlcm1pbmF0b3IgKi8KJiM0MzsJc3RydWN0IHByb3BlcnR5X2VudHJ5ICpwcm9wcyBfX2ZyZWUoa2ZyZWUpID0KJiM0MzsJCWtjYWxsb2MobmJ1dHRvbnMgKiAzLCBzaXplb2YoKnByb3BzKSwgR0ZQX0tFUk5FTCk7CiYjNDM7CWlmICghcHJvcHMpCiAJCXJldHVybiAtRU5PTUVNOwotCWJjbTQ3eHhfYnV0dG9uX3BkYXRhLm5idXR0b25zID0gbmJ1dHRvbnM7CiAKJiM0MzsJLyogMSBub2RlIGZvciBncGlvLWtleXMgZGV2aWNlLCAxIG5vZGUgZm9yIGVhY2ggYnV0dG9uICovCiYjNDM7CXN0cnVjdCBzb2Z0d2FyZV9ub2RlICpub2RlcyBfX2ZyZWUoa2ZyZWUpID0KJiM0MzsJCWtjYWxsb2MoMSAmIzQzOyBuYnV0dG9ucywgc2l6ZW9mKCpub2RlcyksIEdGUF9LRVJORUwpOwomIzQzOwlpZiAoIW5vZGVzKQomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CiYjNDM7CXN0cnVjdCBzb2Z0d2FyZV9ub2RlX3JlZl9hcmdzICpyZWZfYXJncyBfX2ZyZWUoa2ZyZWUpID0KJiM0MzsJCWtjYWxsb2MobmJ1dHRvbnMsIHNpemVvZigqcmVmX2FyZ3MpLCBHRlBfS0VSTkVMKTsKJiM0MzsJaWYgKCFyZWZfYXJncykKJiM0MzsJCXJldHVybiAtRU5PTUVNOwomIzQzOwomIzQzOwkvKiBncGlvLWtleXMgbm9kZSAqLwomIzQzOwlub2Rlc1swXS5uYW1lID0gJiMzNDtiY200N3h4LWdwaW8tYnV0dG9ucyYjMzQ7OwomIzQzOwomIzQzOwlwID0gcHJvcHM7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBuYnV0dG9uczsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCWNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5ICpidXR0b24gPSAmYW1wO2J1dHRvbnNbaV07CiYjNDM7CQlzdHJ1Y3Qgc29mdHdhcmVfbm9kZSAqbm9kZSA9ICZhbXA7bm9kZXNbMSAmIzQzOyBpXTsKJiM0MzsJCXN0cnVjdCBzb2Z0d2FyZV9ub2RlX3JlZl9hcmdzICpyZWYgPSAmYW1wO3JlZl9hcmdzW2ldOwomIzQzOwomIzQzOwkJbm9kZS0mZ3Q7cGFyZW50ID0gJmFtcDtub2Rlc1swXTsKJiM0MzsJCW5vZGUtJmd0O3Byb3BlcnRpZXMgPSBwOwomIzQzOwomIzQzOwkJKnJlZiA9IFNPRlRXQVJFX05PREVfUkVGRVJFTkNFKGdwaW9fc3dub2RlLCBidXR0b24tJmd0O3BpbiwgYnV0dG9uLSZndDtmbGFncyk7CiYjNDM7CQkqcCYjNDM7JiM0MzsgPSBQUk9QRVJUWV9FTlRSWV9SRUYoJiMzNDtncGlvcyYjMzQ7LCAmYW1wO3JlZl9hcmdzW2ldKTsKJiM0MzsJCSpwJiM0MzsmIzQzOyA9IFBST1BFUlRZX0VOVFJZX1UzMigmIzM0O2xpbnV4LGNvZGUmIzM0OywgYnV0dG9uLSZndDtjb2RlKTsKJiM0MzsJCXAmIzQzOyYjNDM7OwomIzQzOwl9CiYjNDM7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBuYnV0dG9ucyAmIzQzOyAxOyBpJiM0MzsmIzQzOykKJiM0MzsJCW5vZGVfZ3JvdXBbaV0gPSAmYW1wO25vZGVzW2ldOwomIzQzOwomIzQzOwllcnJvciA9IHNvZnR3YXJlX25vZGVfcmVnaXN0ZXJfbm9kZV9ncm91cChub2RlX2dyb3VwKTsKJiM0MzsJaWYgKGVycm9yKQomIzQzOwkJcmV0dXJuIGVycm9yOwomIzQzOwomIzQzOwlwZGV2ID0gcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyX2Z1bGwoJmFtcDsoc3RydWN0IHBsYXRmb3JtX2RldmljZV9pbmZvKXsKJiM0MzsJCS5uYW1lID0gJiMzNDtncGlvLWtleXMmIzM0OywKJiM0MzsJCS5zd25vZGUgPSAmYW1wO25vZGVzWzBdLAomIzQzOwl9KTsKJiM0MzsJZXJyb3IgPSBQVFJfRVJSX09SX1pFUk8ocGRldik7CiYjNDM7CWlmIChlcnJvcikgewomIzQzOwkJc29mdHdhcmVfbm9kZV91bnJlZ2lzdGVyX25vZGVfZ3JvdXAobm9kZV9ncm91cCk7CiYjNDM7CQlyZXR1cm4gZXJyb3I7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0YWluX2FuZF9udWxsX3B0cihwcm9wcyk7CiYjNDM7CXJldGFpbl9hbmRfbnVsbF9wdHIobm9kZXMpOwomIzQzOwlyZXRhaW5fYW5kX251bGxfcHRyKHJlZl9hcmdzKTsKIAlyZXR1cm4gMDsKIH0KIAotI2RlZmluZSBiY200N3h4X2NvcHlfYmRhdGEoZGV2X2J1dHRvbnMpCQkJCQlcCi0JYmNtNDd4eF9idXR0b25zX2NvcHkoZGV2X2J1dHRvbnMsIEFSUkFZX1NJWkUoZGV2X2J1dHRvbnMpKTsKJiM0MzsjZGVmaW5lIGJjbTQ3eHhfYWRkX2JkYXRhKGRldl9idXR0b25zKQkJCQkJXAomIzQzOwliY200N3h4X2J1dHRvbnNfYWRkKGRldl9idXR0b25zLCBBUlJBWV9TSVpFKGRldl9idXR0b25zKSkKIAogaW50IF9faW5pdCBiY200N3h4X2J1dHRvbnNfcmVnaXN0ZXIodm9pZCkKIHsKQEAgLTUyMSw1MiAmIzQzOzU5NSw1MiBAQCBpbnQgX19pbml0IGJjbTQ3eHhfYnV0dG9uc19yZWdpc3Rlcih2b2lkKQogCiAJc3dpdGNoIChib2FyZCkgewogCWNhc2UgQkNNNDdYWF9CT0FSRF9BU1VTX1JUTjEwVToKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3J0bjEwdSk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c19ydG4xMHUpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfQVNVU19SVE4xMjoKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3J0bjEyKTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3J0bjEyKTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfUlROMTY6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c19ydG4xNik7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c19ydG4xNik7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9BU1VTX1JUTjY2VToKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3J0bjY2dSk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c19ydG42NnUpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfQVNVU19XTDMwMEc6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDMwMGcpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2wzMDBnKTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0wzMjBHRToKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsMzIwZ2UpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2wzMjBnZSk7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9BU1VTX1dMMzMwR0U6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDMzMGdlKTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsMzMwZ2UpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfQVNVU19XTDUwMEc6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDUwMGcpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBnKTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0w1MDBHRDoKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwZ2QpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBnZCk7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9BU1VTX1dMNTAwR1BWMToKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwZ3B2MSk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDUwMGdwdjEpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfQVNVU19XTDUwMEdQVjI6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDUwMGdwdjIpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBncHYyKTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0w1MDBXOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDB3KTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwdyk7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9BU1VTX1dMNTIwR0M6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDUyMGdjKTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTIwZ2MpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfQVNVU19XTDUyMEdVOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MjBndSk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDUyMGd1KTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0w3MDBHRToKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNzAwZ2UpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w3MDBnZSk7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9BU1VTX1dMSEREOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2xoZGQpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2xoZGQpOwogCQlicmVhazsKIAogCWNhc2UgQkNNNDdYWF9CT0FSRF9CRUxLSU5fRjdEMzMwMToKQEAgLTU3NCwxOTMgJiM0Mzs2NDgsMTkzIEBAIGludCBfX2luaXQgYmNtNDd4eF9idXR0b25zX3JlZ2lzdGVyKHZvaWQpCiAJY2FzZSBCQ000N1hYX0JPQVJEX0JFTEtJTl9GN0Q0MzAxOgogCWNhc2UgQkNNNDdYWF9CT0FSRF9CRUxLSU5fRjdENDMwMjoKIAljYXNlIEJDTTQ3WFhfQk9BUkRfQkVMS0lOX0Y3RDQ0MDE6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYmVsa2luX2Y3ZDQzMDEpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2JlbGtpbl9mN2Q0MzAxKTsKIAkJYnJlYWs7CiAKIAljYXNlIEJDTTQ3WFhfQk9BUkRfQlVGRkFMT19XSFIyX0E1NEc1NDoKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docjJfYTU0ZzU0KTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docjJfYTU0ZzU0KTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX0JVRkZBTE9fV0hSX0cxMjU6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYnVmZmFsb193aHJfZzEyNSk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYnVmZmFsb193aHJfZzEyNSk7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9CVUZGQUxPX1dIUl9HNTRTOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd2hyX2c1NHMpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd2hyX2c1NHMpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfQlVGRkFMT19XSFJfSFBfRzU0OgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd2hyX2hwX2c1NCk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYnVmZmFsb193aHJfaHBfZzU0KTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX0JVRkZBTE9fV1pSX0czMDBOOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd3pyX2czMDBuKTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3d6cl9nMzAwbik7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9CVUZGQUxPX1daUl9SU19HNTQ6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYnVmZmFsb193enJfcnNfZzU0KTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3d6cl9yc19nNTQpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfQlVGRkFMT19XWlJfUlNfRzU0SFA6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYnVmZmFsb193enJfcnNfZzU0aHApOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd3pyX3JzX2c1NGhwKTsKIAkJYnJlYWs7CiAKIAljYXNlIEJDTTQ3WFhfQk9BUkRfREVMTF9UTTIzMDA6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfZGVsbF90bTIzMDApOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2RlbGxfdG0yMzAwKTsKIAkJYnJlYWs7CiAKIAljYXNlIEJDTTQ3WFhfQk9BUkRfRExJTktfRElSMTMwOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2RsaW5rX2RpcjEzMCk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfZGxpbmtfZGlyMTMwKTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX0RMSU5LX0RJUjMzMDoKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19kbGlua19kaXIzMzApOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2RsaW5rX2RpcjMzMCk7CiAJCWJyZWFrOwogCiAJY2FzZSBCQ000N1hYX0JPQVJEX0hVQVdFSV9FOTcwOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2h1YXdlaV9lOTcwKTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19odWF3ZWlfZTk3MCk7CiAJCWJyZWFrOwogCiAJY2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfRTEwMDBWMToKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UxMDAwdjEpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTEwMDB2MSk7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX0UxMDAwVjIxOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTEwMDB2MjEpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTEwMDB2MjEpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19FMjAwMFYxOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTIwMDB2MSk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMjAwMHYxKTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfRTI1MDBWMzoKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UyNTAwdjMpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTI1MDB2Myk7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX0UzMDAwVjE6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMzAwMHYxKTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UzMDAwdjEpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19FMzIwMFYxOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTMyMDB2MSk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMzIwMHYxKTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfRTQyMDBWMToKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2U0MjAwdjEpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTQyMDB2MSk7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX1dSVDE1ME5WMToKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDE1MG52MSk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQxNTBudjEpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQxNTBOVjExOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTUwbnYxMSk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQxNTBudjExKTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfV1JUMTYwTlYxOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTYwbnYxKTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDE2MG52MSk7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX1dSVDE2ME5WMzoKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDE2MG52Myk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQxNjBudjMpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQzMDBOX1YxOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzAwbl92MSk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMDBuX3YxKTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfV1JUMzAwTlYxMToKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDMwMG52MTEpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzAwbnYxMSk7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX1dSVDMxME5WMToKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDMxMG52MSk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMTBudjEpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQzMTBOVjI6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMTBuX3YyKTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDMxMG5fdjIpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQzMjBOX1YxOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzIwbl92MSk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMjBuX3YxKTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfV1JUNTRHM0dWMjoKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDU0ZzNndjIpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NTRnM2d2Mik7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX1dSVDU0R19UWVBFXzAxMDE6CiAJY2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfV1JUNTRHX1RZUEVfMDQ2NzoKIAljYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQ1NEdfVFlQRV8wNzA4OgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NTRnX2dlbmVyaWMpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NTRnX2dlbmVyaWMpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQ2MTBOVjE6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQ2MTBudjEpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NjEwbnYxKTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfV1JUNjEwTlYyOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NjEwbnYyKTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDYxMG52Mik7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX1dSVFNMNTRHUzoKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydHNsNTRncyk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnRzbDU0Z3MpOwogCQlicmVhazsKIAogCWNhc2UgQkNNNDdYWF9CT0FSRF9MVVhVTF9BQlJfNDQwMF9WMToKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF9hYnJfNDQwMF92MSk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfYWJyXzQ0MDBfdjEpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfTFVYVUxfWEFQXzMxMF9WMToKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMzEwX3YxKTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMzEwX3YxKTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX0xVWFVMX1hBUF8xMjEwX1YxOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8xMjEwX3YxKTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMTIxMF92MSk7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9MVVhVTF9YQVBfMTIzMF9WMToKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMTIzMF92MSk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfeGFwXzEyMzBfdjEpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfTFVYVUxfWEFQXzEyNDBfVjE6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfeGFwXzEyNDBfdjEpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8xMjQwX3YxKTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX0xVWFVMX1hBUF8xNTAwX1YxOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8xNTAwX3YxKTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMTUwMF92MSk7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9MVVhVTF9YQlJfNDQwMF9WMToKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YnJfNDQwMF92MSk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfeGJyXzQ0MDBfdjEpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfTFVYVUxfWFZXX1AzMF9WMToKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94dndfcDMwX3YxKTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94dndfcDMwX3YxKTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX0xVWFVMX1hXUl82MDBfVjE6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfeHdyXzYwMF92MSk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfeHdyXzYwMF92MSk7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9MVVhVTF9YV1JfMTc1MF9WMToKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94d3JfMTc1MF92MSk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfeHdyXzE3NTBfdjEpOwogCQlicmVhazsKIAogCWNhc2UgQkNNNDdYWF9CT0FSRF9NSUNST1NPRlRfTU43MDA6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbWljcm9zb2Z0X25tNzAwKTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19taWNyb3NvZnRfbm03MDApOwogCQlicmVhazsKIAogCWNhc2UgQkNNNDdYWF9CT0FSRF9NT1RPUk9MQV9XRTgwMEc6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbW90b3JvbGFfd2U4MDBnKTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19tb3Rvcm9sYV93ZTgwMGcpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfTU9UT1JPTEFfV1I4NTBHUDoKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19tb3Rvcm9sYV93cjg1MGdwKTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19tb3Rvcm9sYV93cjg1MGdwKTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX01PVE9ST0xBX1dSODUwR1YyVjM6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbW90b3JvbGFfd3I4NTBndjJ2Myk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbW90b3JvbGFfd3I4NTBndjJ2Myk7CiAJCWJyZWFrOwogCiAJY2FzZSBCQ000N1hYX0JPQVJEX05FVEdFQVJfUjYyMDBfVjE6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl9yNjIwMF92MSk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl9yNjIwMF92MSk7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9ORVRHRUFSX1I2MzAwX1YxOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfcjYzMDBfdjEpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfcjYzMDBfdjEpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9XTjI1MDBSUF9WMToKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duMjUwMHJwX3YxKTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duMjUwMHJwX3YxKTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX05FVEdFQVJfV05EUjM0MDBWMToKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duZHIzNDAwdjEpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjM0MDB2MSk7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9ORVRHRUFSX1dORFIzNDAwX1YzOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjM0MDBfdjMpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjM0MDBfdjMpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9XTkRSMzcwMFYzOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjM3MDB2Myk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bmRyMzcwMHYzKTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX05FVEdFQVJfV05EUjQ1MDBWMToKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duZHI0NTAwdjEpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjQ1MDB2MSk7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9ORVRHRUFSX1dOUjEwMDBfVjM6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bnIxMDAwX3YzKTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3ducjEwMDBfdjMpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9XTlIzNTAwTDoKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3ducjM1MDBsdjEpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25yMzUwMGx2MSk7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9ORVRHRUFSX1dOUjM1MDBMX1YyOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25yMzUwMGx2Mik7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bnIzNTAwbHYyKTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX05FVEdFQVJfV05SODM0QlYyOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25yODM0YnYyKTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3ducjgzNGJ2Mik7CiAJCWJyZWFrOwogCiAJY2FzZSBCQ000N1hYX0JPQVJEX1NJTVBMRVRFQ0hfU0lNUExFU0hBUkU6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfc2ltcGxldGVjaF9zaW1wbGVzaGFyZSk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfc2ltcGxldGVjaF9zaW1wbGVzaGFyZSk7CiAJCWJyZWFrOwogCiAJZGVmYXVsdDoKQEAgLTc2OSwxMyAmIzQzOzg0Myw3IEBAIGludCBfX2luaXQgYmNtNDd4eF9idXR0b25zX3JlZ2lzdGVyKHZvaWQpCiAJfQogCiAJaWYgKGVycikKLQkJcmV0dXJuIC1FTk9NRU07Ci0KLQllcnIgPSBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJmFtcDtiY200N3h4X2J1dHRvbnNfZ3Bpb19rZXlzKTsKLQlpZiAoZXJyKSB7Ci0JCXByX2VycigmIzM0O0ZhaWxlZCB0byByZWdpc3RlciBwbGF0Zm9ybSBkZXZpY2U6ICVkXG4mIzM0OywgZXJyKTsKIAkJcmV0dXJuIGVycjsKLQl9CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmNtYS9kcml2ZXJfZ3Bpby5jIGIvZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmMKaW5kZXggNjU4YzdlMmFjOGJmNjEuLmVhNDUyMjJmMmZhMGZjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYwpAQCAtMTksNiAmIzQzOzE5LDExIEBACiAKICNkZWZpbmUgQkNNQV9HUElPX01BWF9QSU5TCTMyCiAKJiM0Mztjb25zdCBzdHJ1Y3Qgc29mdHdhcmVfbm9kZSBiY21hX2dwaW9fc3dub2RlID0gewomIzQzOwkubmFtZSA9ICYjMzQ7YmNtYS1ncGlvJiMzNDssCiYjNDM7fTsKJiM0MztFWFBPUlRfU1lNQk9MX0dQTChiY21hX2dwaW9fc3dub2RlKTsKJiM0MzsKIHN0YXRpYyBpbnQgYmNtYV9ncGlvX2dldF92YWx1ZShzdHJ1Y3QgZ3Bpb19jaGlwICpjaGlwLCB1bnNpZ25lZCBncGlvKQogewogCXN0cnVjdCBiY21hX2Rydl9jYyAqY2MgPSBncGlvY2hpcF9nZXRfZGF0YShjaGlwKTsKQEAgLTE5MCw3ICYjNDM7MTk1LDIwIEBAIGludCBiY21hX2dwaW9faW5pdChzdHJ1Y3QgYmNtYV9kcnZfY2MgKmNjKQogCWNoaXAtJmd0O2RpcmVjdGlvbl9pbnB1dAk9IGJjbWFfZ3Bpb19kaXJlY3Rpb25faW5wdXQ7CiAJY2hpcC0mZ3Q7ZGlyZWN0aW9uX291dHB1dAk9IGJjbWFfZ3Bpb19kaXJlY3Rpb25fb3V0cHV0OwogCWNoaXAtJmd0O3BhcmVudAkJPSBidXMtJmd0O2RldjsKLQljaGlwLSZndDtmd25vZGUJCT0gZGV2X2Z3bm9kZSgmYW1wO2NjLSZndDtjb3JlLSZndDtkZXYpOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBSZWdpc3RlciBzb2Z0d2FyZSBub2RlIG9ubHkgZm9yIHRoZSBob3N0IFNvQyBidXMsIHVubGVzcyB0aGVyZSBpcwomIzQzOwkgKiBhbHJlYWR5IGEgZmlybXdhcmUgbm9kZSBhc3NpZ25lZC4gVGhlcmUgaXMgb25seSBvbmUgU29DIGluc3RhbmNlCiYjNDM7CSAqIGluIHRoZSBzeXN0ZW0sIHNvIHRoZXJlIGFyZSBubyBjb25jZXJucyB3aXRoIHJlZ2lzdHJhdGlvbiBjb25mbGljdHMuCiYjNDM7CSAqLwomIzQzOwlpZiAoYnVzLSZndDtob3N0dHlwZSA9PSBCQ01BX0hPU1RUWVBFX1NPQyAmYW1wOyZhbXA7ICFkZXZfZndub2RlKCZhbXA7Y2MtJmd0O2NvcmUtJmd0O2RldikpIHsKJiM0MzsJCWVyciA9IHNvZnR3YXJlX25vZGVfcmVnaXN0ZXIoJmFtcDtiY21hX2dwaW9fc3dub2RlKTsKJiM0MzsJCWlmIChlcnIpCiYjNDM7CQkJcmV0dXJuIGVycjsKJiM0MzsJCWNoaXAtJmd0O2Z3bm9kZSA9IHNvZnR3YXJlX25vZGVfZndub2RlKCZhbXA7YmNtYV9ncGlvX3N3bm9kZSk7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQljaGlwLSZndDtmd25vZGUgPSBkZXZfZndub2RlKCZhbXA7Y2MtJmd0O2NvcmUtJmd0O2Rldik7CiYjNDM7CX0KIAogCXN3aXRjaCAoYnVzLSZndDtjaGlwaW5mby5pZCkgewogCWNhc2UgQkNNQV9DSElQX0lEX0JDTTQ3MDc6CkBAIC0yMTksMjAgJiM0MzsyMzcsMzMgQEAgaW50IGJjbWFfZ3Bpb19pbml0KHN0cnVjdCBiY21hX2Rydl9jYyAqY2MpCiAKIAllcnIgPSBiY21hX2dwaW9faXJxX2luaXQoY2MpOwogCWlmIChlcnIpCi0JCXJldHVybiBlcnI7CiYjNDM7CQlnb3RvIGVycl91bnJlZ2lzdGVyX3N3bm9kZTsKIAogCWVyciA9IGdwaW9jaGlwX2FkZF9kYXRhKGNoaXAsIGNjKTsKLQlpZiAoZXJyKSB7Ci0JCWJjbWFfZ3Bpb19pcnFfZXhpdChjYyk7Ci0JCXJldHVybiBlcnI7Ci0JfQomIzQzOwlpZiAoZXJyKQomIzQzOwkJZ290byBlcnJfaXJxX2V4aXQ7CiAKIAlyZXR1cm4gMDsKJiM0MzsKJiM0MztlcnJfaXJxX2V4aXQ6CiYjNDM7CWJjbWFfZ3Bpb19pcnFfZXhpdChjYyk7CiYjNDM7ZXJyX3VucmVnaXN0ZXJfc3dub2RlOgomIzQzOwlpZiAoYnVzLSZndDtob3N0dHlwZSA9PSBCQ01BX0hPU1RUWVBFX1NPQyAmYW1wOyZhbXA7CiYjNDM7CSAgICBjaGlwLSZndDtmd25vZGUgJmFtcDsmYW1wOyBpc19zb2Z0d2FyZV9ub2RlKGNoaXAtJmd0O2Z3bm9kZSkpIHsKJiM0MzsJCXNvZnR3YXJlX25vZGVfdW5yZWdpc3RlcigmYW1wO2JjbWFfZ3Bpb19zd25vZGUpOwomIzQzOwkJY2hpcC0mZ3Q7Zndub2RlID0gTlVMTDsKJiM0MzsJfQomIzQzOwlyZXR1cm4gZXJyOwogfQogCiBpbnQgYmNtYV9ncGlvX3VucmVnaXN0ZXIoc3RydWN0IGJjbWFfZHJ2X2NjICpjYykKIHsKIAliY21hX2dwaW9faXJxX2V4aXQoY2MpOwogCWdwaW9jaGlwX3JlbW92ZSgmYW1wO2NjLSZndDtncGlvKTsKJiM0MzsJaWYgKGNjLSZndDtjb3JlLSZndDtidXMtJmd0O2hvc3R0eXBlID09IEJDTUFfSE9TVFRZUEVfU09DICZhbXA7JmFtcDsKJiM0MzsJICAgIGNjLSZndDtncGlvLmZ3bm9kZSAmYW1wOyZhbXA7IGlzX3NvZnR3YXJlX25vZGUoY2MtJmd0O2dwaW8uZndub2RlKSkgewomIzQzOwkJc29mdHdhcmVfbm9kZV91bnJlZ2lzdGVyKCZhbXA7YmNtYV9ncGlvX3N3bm9kZSk7CiYjNDM7CQljYy0mZ3Q7Z3Bpby5md25vZGUgPSBOVUxMOwomIzQzOwl9CiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jIGIvZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYwppbmRleCA5MDU2NTdjOTI1YmNlYi4uODc5MjI0Nzk5NDZjYjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYwpAQCAtMTUsOCAmIzQzOzE1LDE0IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvaW50ZXJydXB0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvaXJxZG9tYWluLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvZXhwb3J0LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3Byb3BlcnR5LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvc3NiL3NzYi5oJmd0OwogCiYjNDM7Y29uc3Qgc3RydWN0IHNvZnR3YXJlX25vZGUgc3NiX2dwaW9fc3dub2RlID0gewomIzQzOwkubmFtZSA9ICYjMzQ7c3NiLWdwaW8mIzM0OywKJiM0Mzt9OwomIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHNzYl9ncGlvX3N3bm9kZSk7CiYjNDM7CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogU2hhcmVkCkBAIC0yMzIsNiAmIzQzOzIzOCw4IEBAIHN0YXRpYyBpbnQgc3NiX2dwaW9fY2hpcGNvX2luaXQoc3RydWN0IHNzYl9idXMgKmJ1cykKIAljaGlwLSZndDt0b19pcnEJCT0gc3NiX2dwaW9fdG9faXJxOwogI2VuZGlmCiAJY2hpcC0mZ3Q7bmdwaW8JCT0gMTY7CiYjNDM7CWlmIChidXMtJmd0O2J1c3R5cGUgPT0gU1NCX0JVU1RZUEVfU1NCKQomIzQzOwkJY2hpcC0mZ3Q7Zndub2RlCT0gc29mdHdhcmVfbm9kZV9md25vZGUoJmFtcDtzc2JfZ3Bpb19zd25vZGUpOwogCS8qIFRoZXJlIGlzIGp1c3Qgb25lIFNvQyBpbiBvbmUgZGV2aWNlIGFuZCBpdHMgR1BJTyBhZGRyZXNzZXMgc2hvdWxkIGJlCiAJICogZGV0ZXJtaW5pc3RpYyB0byBhZGRyZXNzIHRoZW0gbW9yZSBlYXNpbHkuIFRoZSBvdGhlciBidXNlcyBjb3VsZCBnZXQKIAkgKiBhIHJhbmRvbSBiYXNlIG51bWJlci4KQEAgLTQzMywxMCAmIzQzOzQ0MSwxMiBAQCBzdGF0aWMgaW50IHNzYl9ncGlvX2V4dGlmX2luaXQoc3RydWN0IHNzYl9idXMgKmJ1cykKIAkgKiBkZXRlcm1pbmlzdGljIHRvIGFkZHJlc3MgdGhlbSBtb3JlIGVhc2lseS4gVGhlIG90aGVyIGJ1c2VzIGNvdWxkIGdldAogCSAqIGEgcmFuZG9tIGJhc2UgbnVtYmVyLgogCSAqLwotCWlmIChidXMtJmd0O2J1c3R5cGUgPT0gU1NCX0JVU1RZUEVfU1NCKQotCQljaGlwLSZndDtiYXNlCQk9IDA7Ci0JZWxzZQotCQljaGlwLSZndDtiYXNlCQk9IC0xOwomIzQzOwlpZiAoYnVzLSZndDtidXN0eXBlID09IFNTQl9CVVNUWVBFX1NTQikgewomIzQzOwkJY2hpcC0mZ3Q7YmFzZQk9IDA7CiYjNDM7CQljaGlwLSZndDtmd25vZGUJPSBzb2Z0d2FyZV9ub2RlX2Z3bm9kZSgmYW1wO3NzYl9ncGlvX3N3bm9kZSk7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQljaGlwLSZndDtiYXNlCT0gLTE7CiYjNDM7CX0KIAogCWVyciA9IHNzYl9ncGlvX2lycV9leHRpZl9kb21haW5faW5pdChidXMpOwogCWlmIChlcnIpCkBAIC00NjQsMTEgJiM0Mzs0NzQsMzMgQEAgc3RhdGljIGludCBzc2JfZ3Bpb19leHRpZl9pbml0KHN0cnVjdCBzc2JfYnVzICpidXMpCiAKIGludCBzc2JfZ3Bpb19pbml0KHN0cnVjdCBzc2JfYnVzICpidXMpCiB7CiYjNDM7CWludCBlcnIgPSAwOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBSZWdpc3RlciBzb2Z0d2FyZSBub2RlIG9ubHkgZm9yIHRoZSBob3N0IFNvQyBidXMuIFRoZXJlIGlzIG9ubHkKJiM0MzsJICogb25lIFNvQyBpbnN0YW5jZSBpbiB0aGUgc3lzdGVtLCBzbyB0aGVyZSBhcmUgbm8gY29uY2VybnMgd2l0aAomIzQzOwkgKiByZWdpc3RyYXRpb24gY29uZmxpY3RzLgomIzQzOwkgKi8KJiM0MzsJaWYgKGJ1cy0mZ3Q7YnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpIHsKJiM0MzsJCWVyciA9IHNvZnR3YXJlX25vZGVfcmVnaXN0ZXIoJmFtcDtzc2JfZ3Bpb19zd25vZGUpOwomIzQzOwkJaWYgKGVycikKJiM0MzsJCQlyZXR1cm4gZXJyOwomIzQzOwl9CiYjNDM7CiAJaWYgKHNzYl9jaGlwY29fYXZhaWxhYmxlKCZhbXA7YnVzLSZndDtjaGlwY28pKQotCQlyZXR1cm4gc3NiX2dwaW9fY2hpcGNvX2luaXQoYnVzKTsKJiM0MzsJCWVyciA9IHNzYl9ncGlvX2NoaXBjb19pbml0KGJ1cyk7CiAJZWxzZSBpZiAoc3NiX2V4dGlmX2F2YWlsYWJsZSgmYW1wO2J1cy0mZ3Q7ZXh0aWYpKQotCQlyZXR1cm4gc3NiX2dwaW9fZXh0aWZfaW5pdChidXMpOwotCXJldHVybiAtMTsKJiM0MzsJCWVyciA9IHNzYl9ncGlvX2V4dGlmX2luaXQoYnVzKTsKJiM0MzsJZWxzZQomIzQzOwkJZXJyID0gLUVOT0RFVjsKJiM0MzsKJiM0MzsJaWYgKGVycikgewomIzQzOwkJaWYgKGJ1cy0mZ3Q7YnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpCiYjNDM7CQkJc29mdHdhcmVfbm9kZV91bnJlZ2lzdGVyKCZhbXA7c3NiX2dwaW9fc3dub2RlKTsKJiM0MzsJCXJldHVybiBlcnI7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiB9CiAKIGludCBzc2JfZ3Bpb191bnJlZ2lzdGVyKHN0cnVjdCBzc2JfYnVzICpidXMpCkBAIC00NzYsNiAmIzQzOzUwOCw4IEBAIGludCBzc2JfZ3Bpb191bnJlZ2lzdGVyKHN0cnVjdCBzc2JfYnVzICpidXMpCiAJaWYgKHNzYl9jaGlwY29fYXZhaWxhYmxlKCZhbXA7YnVzLSZndDtjaGlwY28pIHx8CiAJICAgIHNzYl9leHRpZl9hdmFpbGFibGUoJmFtcDtidXMtJmd0O2V4dGlmKSkgewogCQlncGlvY2hpcF9yZW1vdmUoJmFtcDtidXMtJmd0O2dwaW8pOwomIzQzOwkJaWYgKGJ1cy0mZ3Q7YnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpCiYjNDM7CQkJc29mdHdhcmVfbm9kZV91bnJlZ2lzdGVyKCZhbXA7c3NiX2dwaW9fc3dub2RlKTsKIAkJcmV0dXJuIDA7CiAJfQogCXJldHVybiAtMTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYmNtYS9iY21hLmggYi9pbmNsdWRlL2xpbnV4L2JjbWEvYmNtYS5oCmluZGV4IGYwMmNiMzkwOTM3NWUwLi4xN2ZjNTAxOTAwMTRlOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9iY21hL2JjbWEuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2JjbWEvYmNtYS5oCkBAIC00ODYsNCAmIzQzOzQ4Niw2IEBAIGV4dGVybiB1MzIgYmNtYV9jb3JlX2RtYV90cmFuc2xhdGlvbihzdHJ1Y3QgYmNtYV9kZXZpY2UgKmNvcmUpOwogCiBleHRlcm4gdW5zaWduZWQgaW50IGJjbWFfY29yZV9pcnEoc3RydWN0IGJjbWFfZGV2aWNlICpjb3JlLCBpbnQgbnVtKTsKIAomIzQzO2V4dGVybiBjb25zdCBzdHJ1Y3Qgc29mdHdhcmVfbm9kZSBiY21hX2dwaW9fc3dub2RlOwomIzQzOwogI2VuZGlmIC8qIExJTlVYX0JDTUFfSF8gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc3NiL3NzYi5oIGIvaW5jbHVkZS9saW51eC9zc2Ivc3NiLmgKaW5kZXggN2ZlZTlhZmE5NDU4OGIuLjY3Y2I2NmY2ZjVlZDZkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3NzYi9zc2IuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3NzYi9zc2IuaApAQCAtNjcxLDQgJiM0Mzs2NzEsNiBAQCBpbnQgc3NiX3BjaWJpb3NfcGxhdF9kZXZfaW5pdChzdHJ1Y3QgcGNpX2RldiAqZGV2KTsKIGludCBzc2JfcGNpYmlvc19tYXBfaXJxKGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpkZXYsIHU4IHNsb3QsIHU4IHBpbik7CiAjZW5kaWYgLyogQ09ORklHX1NTQl9FTUJFRERFRCAqLwogCiYjNDM7ZXh0ZXJuIGNvbnN0IHN0cnVjdCBzb2Z0d2FyZV9ub2RlIHNzYl9ncGlvX3N3bm9kZTsKJiM0MzsKICNlbmRpZiAvKiBMSU5VWF9TU0JfSF8gKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDI6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA5MzUKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA5MzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVW5yZWFjaGFibGUgQ29kZSBQYXRocyBpbiBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudHMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggc2VyaWVzIHRoYXQgcmVmYWN0b3JzIHRoZSBCQ000N3h4IGJ1dHRvbnMgZHJpdmVyLCBtb3ZpbmcgaXQgdG8gdXNlIHNvZnR3YXJlIG5vZGVzIGluc3RlYWQgb2YgYGdwaW9fa2V5c19wbGF0Zm9ybV9kYXRhYC4gVGhlIHBhdGNoIHRvdWNoZXMgYGFyY2gvbWlwcy9iY200N3h4L2J1dHRvbnMuY2AsIGFuZCBhbHNvIGBkcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uY2AsIGFuZCBgZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uY2AsIGFsb25nIHdpdGggYXNzb2NpYXRlZCBoZWFkZXIgZmlsZXMuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaW52b2x2ZXMgcmVnaXN0ZXJpbmcgYGJjbWFfZ3Bpb19zd25vZGVgIGFuZCBgc3NiX2dwaW9fc3dub2RlYCB3aXRoaW4gdGhlIHJlc3BlY3RpdmUgR1BJTyBkcml2ZXJzLgoKTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgcmVhY2hhYmlsaXR5LCBwYXJ0aWN1bGFybHkgaW4gb3VyIHR5cGljYWwgdmlydHVhbGl6ZWQgZnV6emluZyBzZXR1cHMuIFRoZSBCQ000N3h4IGlzIE1JUFMsIGFuZCB3aGlsZSBRRU1VICpjYW4qIHJ1biBNSVBTLCBvdXIgcHJpbWFyeSBmb2N1cyBpbiBzeXprYWxsZXIgaXMgdXN1YWxseSBvbiB4ODZfNjQsIGFybTY0LCByaXNjdjY0LCBhbmQgczM5MHguIFdlIGRvbiYjMzk7dCB0eXBpY2FsbHkgdGFyZ2V0IEJDTTQ3eHggc3BlY2lmaWNhbGx5LiBUaGUgaW5zdHJ1Y3Rpb25zIG1lbnRpb24gdGhhdCB3ZSBzaG91bGQgYmUgY29uY2VybmVkIGFib3V0IGNvZGUgdGhhdCYjMzk7cyBpbXBvc3NpYmxlIHRvIGhpdCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuCgpTbywgdGhlIGtleSBxdWVzdGlvbnMgYXJlOiBhcmUgdGhlc2UgQkNNQSBhbmQgU1NCIGJ1cyBwYXRocyByZWFjaGFibGUgaW4gb3VyIHN0YW5kYXJkIHRlc3Qgc2V0dXBzPyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGVzZSBgYmNtYV9ncGlvX3N3bm9kZWAgYW5kIGBzc2JfZ3Bpb19zd25vZGVgIHJlZ2lzdHJhdGlvbnMgYWN0dWFsbHkgaGFwcGVuLiBJIG5lZWQgdG8gdHJhY2UgdGhpcy4KCmBiY200N3h4X2J1dHRvbnNfYWRkYCBpcyB0aGUga2V5LCBhbmQgaXQmIzM5O3MgaW4gYGFyY2gvbWlwcy9iY200N3h4L2J1dHRvbnMuY2Agd2hpY2ggaXMgZ3VhcmRlZCBieSBgQ09ORklHX0JDTTQ3WFhgLiBUaGF0IGNvbmZpcm1zIGl0JiMzOTtzIE1JUFMgQkNNNDd4eC1zcGVjaWZpYy4gVGhpcyBpcyBhIHZlcnkgdGFyZ2V0ZWQgYXJjaGl0ZWN0dXJlLgoKTGV0JiMzOTtzIGxvb2sgYXQgYGRyaXZlcnMvYmNtYS9kcml2ZXJfZ3Bpby5jYCBhbmQgYGRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmNgLiBUaGV5JiMzOTtyZSBndWFyZGVkIGJ5IGBDT05GSUdfQkNNQV9EUklWRVJfR1BJT2AgYW5kIGBDT05GSUdfU1NCX0RSSVZFUl9HUElPYC4gQnV0LCB1bmRlciB3aGF0ICpjb25kaXRpb25zKiBhcmUgYGJjbWFfZ3Bpb19zd25vZGVgIGFuZCBgc3NiX2dwaW9fc3dub2RlYCBhY3R1YWxseSByZWdpc3RlcmVkPwoKRGlnZ2luZyBpbnRvIGBkcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uY2AsIGBiY21hX2dwaW9faW5pdGAgaXMgY2FsbGVkIGZyb20gYGJjbWFfY29yZV9ncGlvX2luaXRgLiBMb29raW5nIGF0IHRoaXMsIHRoZSBzb2Z0d2FyZSBub2RlIHJlZ2lzdHJhdGlvbiBvbmx5IGhhcHBlbnMgd2hlbiBgYnVzLSZndDtob3N0dHlwZSA9PSBCQ01BX0hPU1RUWVBFX1NPQ2AgYW5kIHdlIGFyZSBub3QgdXNpbmcgZGV2aWNlIGZpcm13YXJlIG5vZGUgKG5vdCBzdXBwb3J0ZWQgZm9yIEJDTTQ3eHgpLiBgQkNNQV9IT1NUVFlQRV9TT0NgIGlzICpzcGVjaWZpY2FsbHkqIGZvciBTb0MgY29uZmlndXJhdGlvbnMgbGlrZSB0aGUgQkNNNDd4eC4gRm9yIFBDSSBkZXZpY2VzLCB0aGUgYGhvc3R0eXBlYCBpcyBgQkNNQV9IT1NUVFlQRV9QQ0lgLiBUaGlzIGlzIHJlYWxseSB0YXJnZXRlZCBhdCB0aGUgU29DLgoKU2ltaWxhcmx5LCBpbiBgZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uY2AsIHRoZSBzb2Z0d2FyZSBub2RlIHJlZ2lzdHJhdGlvbiBvY2N1cnMgb25seSBpZiBgYnVzLSZndDtidXN0eXBlID09IFNTQl9CVVNUWVBFX1NTQmAsIHdoaWNoIGlzIGFsc28gU29DIHNwZWNpZmljLiBQQ0kgdXNlcyBgU1NCX0JVU1RZUEVfUENJYC4KClRoZXJlZm9yZSwgdGhpcyBuZXcgY29kZSAtIHRoZSBzb2Z0d2FyZSBub2RlIHJlZ2lzdHJhdGlvbiAtIGlzIG9ubHkgZXhlY3V0ZWQgd2hlbiB0aGUgZHJpdmVyIGlzIHJ1bm5pbmcgb24gYW4gU29DLCBpLmUuLCBNSVBTIEJDTTQ3eHguCgpTaW5jZSB3ZSBkb24mIzM5O3QgZnV6eiBNSVBTIEJDTTQ3eHggaW4gb3VyIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgYW5kIGV2ZW4gKmlmKiB3ZSBkaWQsIHRoZSBlbXVsYXRpb24gb2YgdGhlICpzcGVjaWZpYyogU29DIHdvdWxkIGJlIHJlcXVpcmVkLCB3aGljaCBzeXprYWxsZXIgZG9lc24mIzM5O3Qgc3VwcG9ydCBmb3IgQkNNNDd4eCwgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoYXQgdGhlc2UgbmV3IGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIG91ciBjdXJyZW50IGZ1enppbmcgc2V0dXAuIEkgdGhpbmsgSSYjMzk7bSBnb2luZyB0byBkb3VibGUgY2hlY2sgdGhlIHVzZSBvZiBgQkNNQV9IT1NUVFlQRV9TT0NgIHRvIGJlIGNlcnRhaW4uIEJ1dCBJIHRoaW5rIHRoaXMgaXMgcHJldHR5IHNvbGlkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAyOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0JDTUFfSE9TVFRZUEVfU09DJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmNtYS9jb3JlLmM9MTQwPXUzMiBiY21hX2NvcmVfZG1hX3RyYW5zbGF0aW9uKHN0cnVjdCBiY21hX2RldmljZSAqY29yZSlcbi0tXG5kcml2ZXJzL2JjbWEvY29yZS5jLTE0Mi1cdHN3aXRjaCAoY29yZS1cdTAwM2VidXMtXHUwMDNlaG9zdHR5cGUpIHtcbmRyaXZlcnMvYmNtYS9jb3JlLmM6MTQzOlx0Y2FzZSBCQ01BX0hPU1RUWVBFX1NPQzpcbmRyaXZlcnMvYmNtYS9jb3JlLmMtMTQ0LVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2NoaXBjb21tb24uYz0xNjk9dm9pZCBiY21hX2NvcmVfY2hpcGNvbW1vbl9lYXJseV9pbml0KHN0cnVjdCBiY21hX2Rydl9jYyAqY2MpXG4tLVxuZHJpdmVycy9iY21hL2RyaXZlcl9jaGlwY29tbW9uLmMtMTg2LVxuZHJpdmVycy9iY21hL2RyaXZlcl9jaGlwY29tbW9uLmM6MTg3Olx0aWYgKGJ1cy1cdTAwM2Vob3N0dHlwZSA9PSBCQ01BX0hPU1RUWVBFX1NPQylcbmRyaXZlcnMvYmNtYS9kcml2ZXJfY2hpcGNvbW1vbi5jLTE4OC1cdFx0YmNtYV9jb3JlX2NoaXBjb21tb25fZmxhc2hfZGV0ZWN0KGNjKTtcbi0tXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYz0xMzU9c3RhdGljIGludCBiY21hX2dwaW9faXJxX2luaXQoc3RydWN0IGJjbWFfZHJ2X2NjICpjYylcbi0tXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYy0xNDAtXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYzoxNDE6XHRpZiAoY2MtXHUwMDNlY29yZS1cdTAwM2VidXMtXHUwMDNlaG9zdHR5cGUgIT0gQkNNQV9IT1NUVFlQRV9TT0MpXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYy0xNDItXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvYmNtYS9kcml2ZXJfZ3Bpby5jPTE2ND1zdGF0aWMgdm9pZCBiY21hX2dwaW9faXJxX2V4aXQoc3RydWN0IGJjbWFfZHJ2X2NjICpjYylcbmRyaXZlcnMvYmNtYS9kcml2ZXJfZ3Bpby5jLTE2NS17XG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYzoxNjY6XHRpZiAoY2MtXHUwMDNlY29yZS1cdTAwM2VidXMtXHUwMDNlaG9zdHR5cGUgIT0gQkNNQV9IT1NUVFlQRV9TT0MpXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYy0xNjctXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYz0xODM9aW50IGJjbWFfZ3Bpb19pbml0KHN0cnVjdCBiY21hX2Rydl9jYyAqY2MpXG4tLVxuZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmMtMjAzLVx0ICovXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYzoyMDQ6XHRpZiAoYnVzLVx1MDAzZWhvc3R0eXBlID09IEJDTUFfSE9TVFRZUEVfU09DIFx1MDAyNlx1MDAyNiAhZGV2X2Z3bm9kZShcdTAwMjZjYy1cdTAwM2Vjb3JlLVx1MDAzZWRldikpIHtcbmRyaXZlcnMvYmNtYS9kcml2ZXJfZ3Bpby5jLTIwNS1cdFx0ZXJyID0gc29mdHdhcmVfbm9kZV9yZWdpc3RlcihcdTAwMjZiY21hX2dwaW9fc3dub2RlKTtcbi0tXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYy0yMzItXHRpZiAoSVNfQlVJTFRJTihDT05GSUdfQkNNNDdYWCkgfHxcbmRyaXZlcnMvYmNtYS9kcml2ZXJfZ3Bpby5jOjIzMzpcdCAgICBjYy1cdTAwM2Vjb3JlLVx1MDAzZWJ1cy1cdTAwM2Vob3N0dHlwZSA9PSBCQ01BX0hPU1RUWVBFX1NPQylcbmRyaXZlcnMvYmNtYS9kcml2ZXJfZ3Bpby5jLTIzNC1cdFx0Y2hpcC1cdTAwM2ViYXNlXHRcdD0gYnVzLVx1MDAzZW51bSAqIEJDTUFfR1BJT19NQVhfUElOUztcbi0tXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYy0yNTAtZXJyX3VucmVnaXN0ZXJfc3dub2RlOlxuZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmM6MjUxOlx0aWYgKGJ1cy1cdTAwM2Vob3N0dHlwZSA9PSBCQ01BX0hPU1RUWVBFX1NPQyBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvYmNtYS9kcml2ZXJfZ3Bpby5jLTI1Mi1cdCAgICBjaGlwLVx1MDAzZWZ3bm9kZSBcdTAwMjZcdTAwMjYgaXNfc29mdHdhcmVfbm9kZShjaGlwLVx1MDAzZWZ3bm9kZSkpIHtcbi0tXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYz0yNTk9aW50IGJjbWFfZ3Bpb191bnJlZ2lzdGVyKHN0cnVjdCBiY21hX2Rydl9jYyAqY2MpXG4tLVxuZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmMtMjYyLVx0Z3Bpb2NoaXBfcmVtb3ZlKFx1MDAyNmNjLVx1MDAzZWdwaW8pO1xuZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmM6MjYzOlx0aWYgKGNjLVx1MDAzZWNvcmUtXHUwMDNlYnVzLVx1MDAzZWhvc3R0eXBlID09IEJDTUFfSE9TVFRZUEVfU09DIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmMtMjY0LVx0ICAgIGNjLVx1MDAzZWdwaW8uZndub2RlIFx1MDAyNlx1MDAyNiBpc19zb2Z0d2FyZV9ub2RlKGNjLVx1MDAzZWdwaW8uZndub2RlKSkge1xuLS1cbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jPTE2OD1pbnQgX19pbml0IGJjbWFfaG9zdF9zb2NfcmVnaXN0ZXIoc3RydWN0IGJjbWFfc29jICpzb2MpXG4tLVxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmMtMTc5LVx0LyogSG9zdCBzcGVjaWZpYyAqL1xuZHJpdmVycy9iY21hL2hvc3Rfc29jLmM6MTgwOlx0YnVzLVx1MDAzZWhvc3R0eXBlID0gQkNNQV9IT1NUVFlQRV9TT0M7XG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYy0xODEtXHRidXMtXHUwMDNlb3BzID0gXHUwMDI2YmNtYV9ob3N0X3NvY19vcHM7XG4tLVxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmM9MjAzPXN0YXRpYyBpbnQgYmNtYV9ob3N0X3NvY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jLTIyMi1cdC8qIEhvc3Qgc3BlY2lmaWMgKi9cbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jOjIyMzpcdGJ1cy1cdTAwM2Vob3N0dHlwZSA9IEJDTUFfSE9TVFRZUEVfU09DO1xuZHJpdmVycy9iY21hL2hvc3Rfc29jLmMtMjI0LVx0YnVzLVx1MDAzZW9wcyA9IFx1MDAyNmJjbWFfaG9zdF9zb2Nfb3BzO1xuLS1cbmRyaXZlcnMvYmNtYS9tYWluLmM9MjE0PXVuc2lnbmVkIGludCBiY21hX2NvcmVfaXJxKHN0cnVjdCBiY21hX2RldmljZSAqY29yZSwgaW50IG51bSlcbi0tXG5kcml2ZXJzL2JjbWEvbWFpbi5jLTIyMS1cdFx0cmV0dXJuIGJ1cy1cdTAwM2Vob3N0X3BjaS1cdTAwM2VpcnE7XG5kcml2ZXJzL2JjbWEvbWFpbi5jOjIyMjpcdGNhc2UgQkNNQV9IT1NUVFlQRV9TT0M6XG5kcml2ZXJzL2JjbWEvbWFpbi5jLTIyMy1cdFx0aWYgKGJ1cy1cdTAwM2VkcnZfbWlwcy5jb3JlIFx1MDAyNlx1MDAyNiBudW0gPT0gMCkge1xuLS1cbmRyaXZlcnMvYmNtYS9tYWluLmM9MjM4PXZvaWQgYmNtYV9wcmVwYXJlX2NvcmUoc3RydWN0IGJjbWFfYnVzICpidXMsIHN0cnVjdCBiY21hX2RldmljZSAqY29yZSlcbi0tXG5kcml2ZXJzL2JjbWEvbWFpbi5jLTI1Mi1cdFx0YnJlYWs7XG5kcml2ZXJzL2JjbWEvbWFpbi5jOjI1MzpcdGNhc2UgQkNNQV9IT1NUVFlQRV9TT0M6XG5kcml2ZXJzL2JjbWEvbWFpbi5jLTI1NC1cdFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX09GKSBcdTAwMjZcdTAwMjYgYnVzLVx1MDAzZWRldikge1xuLS1cbmRyaXZlcnMvYmNtYS9tYWluLmM9MjkxPXN0YXRpYyBpbnQgYmNtYV9yZWdpc3Rlcl9kZXZpY2VzKHN0cnVjdCBiY21hX2J1cyAqYnVzKVxuLS1cbmRyaXZlcnMvYmNtYS9tYWluLmMtMzU4LVxuZHJpdmVycy9iY21hL21haW4uYzozNTk6XHRpZiAoYnVzLVx1MDAzZWhvc3R0eXBlID09IEJDTUFfSE9TVFRZUEVfU09DKSB7XG5kcml2ZXJzL2JjbWEvbWFpbi5jLTM2MC1cdFx0ZXJyID0gYmNtYV9jaGlwY29fd2F0Y2hkb2dfcmVnaXN0ZXIoXHUwMDI2YnVzLVx1MDAzZWRydl9jYyk7XG4tLVxuZHJpdmVycy9iY21hL21haW4uYz0zNjg9dm9pZCBiY21hX3VucmVnaXN0ZXJfY29yZXMoc3RydWN0IGJjbWFfYnVzICpidXMpXG4tLVxuZHJpdmVycy9iY21hL21haW4uYy0zNzctXHR9XG5kcml2ZXJzL2JjbWEvbWFpbi5jOjM3ODpcdGlmIChidXMtXHUwMDNlaG9zdHR5cGUgPT0gQkNNQV9IT1NUVFlQRV9TT0MpXG5kcml2ZXJzL2JjbWEvbWFpbi5jLTM3OS1cdFx0cGxhdGZvcm1fZGV2aWNlX3VucmVnaXN0ZXIoYnVzLVx1MDAzZWRydl9jYy53YXRjaGRvZyk7XG4tLVxuZHJpdmVycy9iY21hL3NjYW4uYz0yNzE9c3RhdGljIGludCBiY21hX2dldF9uZXh0X2NvcmUoc3RydWN0IGJjbWFfYnVzICpidXMsIHUzMiBfX2lvbWVtICoqZXJvbXB0cixcbi0tXG5kcml2ZXJzL2JjbWEvc2Nhbi5jLTQyMC1cdH1cbmRyaXZlcnMvYmNtYS9zY2FuLmM6NDIxOlx0aWYgKGJ1cy1cdTAwM2Vob3N0dHlwZSA9PSBCQ01BX0hPU1RUWVBFX1NPQykge1xuZHJpdmVycy9iY21hL3NjYW4uYy00MjItXHRcdGNvcmUtXHUwMDNlaW9fYWRkciA9IGlvcmVtYXAoY29yZS1cdTAwM2VhZGRyLCBCQ01BX0NPUkVfU0laRSk7XG4tLVxuZHJpdmVycy9iY21hL3NjYW4uYz00NTY9aW50IGJjbWFfYnVzX3NjYW4oc3RydWN0IGJjbWFfYnVzICpidXMpXG4tLVxuZHJpdmVycy9iY21hL3NjYW4uYy00NjctXHRlcm9tYmFzZSA9IGJjbWFfc2Nhbl9yZWFkMzIoYnVzLCBCQ01BX0NDX0VST00pO1xuZHJpdmVycy9iY21hL3NjYW4uYzo0Njg6XHRpZiAoYnVzLVx1MDAzZWhvc3R0eXBlID09IEJDTUFfSE9TVFRZUEVfU09DKSB7XG5kcml2ZXJzL2JjbWEvc2Nhbi5jLTQ2OS1cdFx0ZXJvbXB0ciA9IGlvcmVtYXAoZXJvbWJhc2UsIEJDTUFfQ09SRV9TSVpFKTtcbi0tXG5kcml2ZXJzL2JjbWEvc2Nhbi5jLTUxOS1vdXQ6XG5kcml2ZXJzL2JjbWEvc2Nhbi5jOjUyMDpcdGlmIChidXMtXHUwMDNlaG9zdHR5cGUgPT0gQkNNQV9IT1NUVFlQRV9TT0MpXG5kcml2ZXJzL2JjbWEvc2Nhbi5jLTUyMS1cdFx0aW91bm1hcChlcm9tcHRyKTtcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2Jyb2FkY29tL2JjbTQ3eHhfc3Byb20uYz02NTA9c3RhdGljIGludCBiY200N3h4X2dldF9zcHJvbV9iY21hKHN0cnVjdCBiY21hX2J1cyAqYnVzLCBzdHJ1Y3Qgc3NiX3Nwcm9tICpvdXQpXG4tLVxuZHJpdmVycy9maXJtd2FyZS9icm9hZGNvbS9iY200N3h4X3Nwcm9tLmMtNjcyLVx0XHRicmVhaztcbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vYmNtNDd4eF9zcHJvbS5jOjY3MzpcdGNhc2UgQkNNQV9IT1NUVFlQRV9TT0M6XG5kcml2ZXJzL2Zpcm13YXJlL2Jyb2FkY29tL2JjbTQ3eHhfc3Byb20uYy02NzQtXHRcdG1lbXNldChvdXQsIDAsIHNpemVvZihzdHJ1Y3Qgc3NiX3Nwcm9tKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYz01NTg2PWJvb2wgYnJjbXNfY19jaGlwbWF0Y2goc3RydWN0IGJjbWFfZGV2aWNlICpjb3JlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmMtNTU5MC1cdFx0cmV0dXJuIGJyY21zX2NfY2hpcG1hdGNoX3BjaShjb3JlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmM6NTU5MTpcdGNhc2UgQkNNQV9IT1NUVFlQRV9TT0M6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jLTU1OTItXHRcdHJldHVybiBicmNtc19jX2NoaXBtYXRjaF9zb2MoY29yZSk7XG4tLVxuaW5jbHVkZS9saW51eC9iY21hL2JjbWEuaD0yMT1lbnVtIGJjbWFfaG9zdHR5cGUge1xuLS1cbmluY2x1ZGUvbGludXgvYmNtYS9iY21hLmgtMjMtXHRCQ01BX0hPU1RUWVBFX1NESU8sXG5pbmNsdWRlL2xpbnV4L2JjbWEvYmNtYS5oOjI0Olx0QkNNQV9IT1NUVFlQRV9TT0MsXG5pbmNsdWRlL2xpbnV4L2JjbWEvYmNtYS5oLTI1LX07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDI6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUxMTgKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIEJDTUEgSG9zdCBUeXBlIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKgoKT2theSwgc28gYEJDTUFfSE9TVFRZUEVfU09DYCBpcyBkZWZpbmVkIHdpdGhpbiBgZHJpdmVycy9iY21hL2hvc3Rfc29jLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtDYW4gdGhpcyBwYXJ0aWN1bGFyIHNldHRpbmcsIG9yIHRoZSBjb2RlIHBhdGggdGhhdCBsZWFkcyB0byBpdCwgYmUgcmVhY2hlZCB3aGVuIHdlJiMzOTtyZSBydW5uaW5nIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/JiMzNDsgSXQmIzM5O3MgYSBrZXkgcXVlc3Rpb24sIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyBsaWtlIEJDTUEuIEkmIzM5O2xsIG5lZWQgdG8gZGl2ZSBpbnRvIGBkcml2ZXJzL2JjbWEvaG9zdF9zb2MuY2AgZGlyZWN0bHkuIE15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBjb2RlIGluIHRoYXQgZmlsZSwgZm9jdXNpbmcgb24gaG93IHRoZSBgQkNNQV9IT1NUVFlQRV9TT0NgIGZsYWcgaXMgc2V0IGFuZCB1bmRlciB3aGF0IGNvbmRpdGlvbnMuIFNwZWNpZmljYWxseSwgSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYW55IGluZGljYXRpb25zIG9yIGNoZWNrcyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSB3aGV0aGVyIHRoZSBTT0Mtc3BlY2lmaWMgY29kZSBpcyBhY3RpdmUgd2hlbiBydW5uaW5nIG9uIGEgdmlydHVhbCBob3N0LiBUaGlzIHdpbGwgcmVxdWlyZSBzb21lIGNhcmVmdWwgYW5hbHlzaXMgb2YgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uLCBhbnkgaGFyZHdhcmUgZGV0ZWN0aW9uIHJvdXRpbmVzLCBhbmQgYW55IGludGVyYWN0aW9ucyB3aXRoIHRoZSB1bmRlcmx5aW5nIGh5cGVydmlzb3IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDI6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmNtYV9ob3N0X3NvY19yZWdpc3RlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL21pcHMvYmNtNDd4eC9zZXR1cC5jPTE0MD1zdGF0aWMgdm9pZCBfX2luaXQgYmNtNDd4eF9yZWdpc3Rlcl9iY21hKHZvaWQpXG4tLVxuYXJjaC9taXBzL2JjbTQ3eHgvc2V0dXAuYy0xNDMtXG5hcmNoL21pcHMvYmNtNDd4eC9zZXR1cC5jOjE0NDpcdGVyciA9IGJjbWFfaG9zdF9zb2NfcmVnaXN0ZXIoXHUwMDI2YmNtNDd4eF9idXMuYmNtYSk7XG5hcmNoL21pcHMvYmNtNDd4eC9zZXR1cC5jLTE0NS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9iY21hL2JjbWFfcHJpdmF0ZS5oPTEwND1leHRlcm4gdm9pZCBfX2V4aXQgYmNtYV9ob3N0X3BjaV9leGl0KHZvaWQpO1xuLS1cbmRyaXZlcnMvYmNtYS9iY21hX3ByaXZhdGUuaC0xMDgtI2lmIGRlZmluZWQoQ09ORklHX0JDTUFfSE9TVF9TT0MpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19PRilcbmRyaXZlcnMvYmNtYS9iY21hX3ByaXZhdGUuaDoxMDk6ZXh0ZXJuIGludCBfX2luaXQgYmNtYV9ob3N0X3NvY19yZWdpc3Rlcl9kcml2ZXIodm9pZCk7XG5kcml2ZXJzL2JjbWEvYmNtYV9wcml2YXRlLmgtMTEwLWV4dGVybiB2b2lkIF9fZXhpdCBiY21hX2hvc3Rfc29jX3VucmVnaXN0ZXJfZHJpdmVyKHZvaWQpO1xuZHJpdmVycy9iY21hL2JjbWFfcHJpdmF0ZS5oLTExMS0jZWxzZVxuZHJpdmVycy9iY21hL2JjbWFfcHJpdmF0ZS5oOjExMjpzdGF0aWMgaW5saW5lIGludCBfX2luaXQgYmNtYV9ob3N0X3NvY19yZWdpc3Rlcl9kcml2ZXIodm9pZClcbmRyaXZlcnMvYmNtYS9iY21hX3ByaXZhdGUuaC0xMTMte1xuLS1cbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jPTE1Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGJjbWFfaG9zdF9vcHMgYmNtYV9ob3N0X3NvY19vcHMgPSB7XG4tLVxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmMtMTY3LVxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmM6MTY4OmludCBfX2luaXQgYmNtYV9ob3N0X3NvY19yZWdpc3RlcihzdHJ1Y3QgYmNtYV9zb2MgKnNvYylcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jLTE2OS17XG4tLVxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmM9MjU4PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGJjbWFfaG9zdF9zb2NfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jLTI2Ni1cbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jOjI2NzppbnQgX19pbml0IGJjbWFfaG9zdF9zb2NfcmVnaXN0ZXJfZHJpdmVyKHZvaWQpXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYy0yNjgte1xuLS1cbmRyaXZlcnMvYmNtYS9tYWluLmM9NjcyPXN0YXRpYyBpbnQgX19pbml0IGJjbWFfbW9kaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvYmNtYS9tYWluLmMtNjc5LVxuZHJpdmVycy9iY21hL21haW4uYzo2ODA6XHRlcnIgPSBiY21hX2hvc3Rfc29jX3JlZ2lzdGVyX2RyaXZlcigpO1xuZHJpdmVycy9iY21hL21haW4uYy02ODEtXHRpZiAoZXJyKSB7XG4tLVxuaW5jbHVkZS9saW51eC9iY21hL2JjbWFfc29jLmg9Nz1zdHJ1Y3QgYmNtYV9zb2Mge1xuLS1cbmluY2x1ZGUvbGludXgvYmNtYS9iY21hX3NvYy5oLTExLVxuaW5jbHVkZS9saW51eC9iY21hL2JjbWFfc29jLmg6MTI6aW50IF9faW5pdCBiY21hX2hvc3Rfc29jX3JlZ2lzdGVyKHN0cnVjdCBiY21hX3NvYyAqc29jKTtcbmluY2x1ZGUvbGludXgvYmNtYS9iY21hX3NvYy5oLTEzLWludCBfX2luaXQgYmNtYV9ob3N0X3NvY19pbml0KHN0cnVjdCBiY21hX3NvYyAqc29jKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMjo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjE2NQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gaGVyZS4KCioqRGVjb25zdHJ1Y3RpbmcgdGhlIEJDTUEgSG9zdC9Tb0MgRHJpdmVyIFJlZ2lzdHJhdGlvbioqCgpSaWdodCwgc28gYGJjbWFfaG9zdF9zb2NfcmVnaXN0ZXJfZHJpdmVyYCBpcyBnZXR0aW5nIGNhbGxlZCBmcm9tIGBiY21hX21vZGluaXRgLiBUaGF0IG1ha2VzIHNlbnNlLCBidXQgaXQgYWxzbyBtZWFucyB0aGF0IHRoZSBidWlsZCBjb25maWd1cmF0aW9uIGhhcyB0byBpbmNsdWRlIGJvdGggYENPTkZJR19CQ01BX0hPU1RfU09DYCBhbmQgYENPTkZJR19PRmAuIEkgbmVlZCB0byByZW1lbWJlciB0aGF0LiBJdCYjMzk7cyBhIHByZXR0eSBzdGFuZGFyZCBwYXR0ZXJuIGZvciBtb2R1bGUgaW5pdGlhbGl6YXRpb24sIG9idmlvdXNseSB0cmlnZ2VyZWQgd2hlbiB0aGUgZHJpdmVyIGlzIGxvYWRlZCBvciBhdCBzeXN0ZW0gc3RhcnR1cC4gTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgKndoYXQqIGlzIGBiY21hX2hvc3Rfc29jX3JlZ2lzdGVyX2RyaXZlcmAgYWN0dWFsbHkgKmRvaW5nKj8gSSBuZWVkIHRvIGRpZyBpbnRvIGl0cyBpbXBsZW1lbnRhdGlvbi4gUHJlc3VtYWJseSwgdGhpcyBpcyB3aGVyZSB0aGUgY29yZSBkZXZpY2UgZHJpdmVyIGdldHMgYXR0YWNoZWQgdG8gdGhlIGJ1cyBhbmQgdGhlIGJvYXJkLXNwZWNpZmljIGluaXRpYWxpemF0aW9uIGJlZ2lucyBpZiBpdCYjMzk7cyBiYXNlZCBvbiBhbiBTb0MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDI6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmNtYV9ob3N0X3NvY19yZWdpc3Rlcl9kcml2ZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9iY21hL2JjbWFfcHJpdmF0ZS5oPTEwND1leHRlcm4gdm9pZCBfX2V4aXQgYmNtYV9ob3N0X3BjaV9leGl0KHZvaWQpO1xuLS1cbmRyaXZlcnMvYmNtYS9iY21hX3ByaXZhdGUuaC0xMDgtI2lmIGRlZmluZWQoQ09ORklHX0JDTUFfSE9TVF9TT0MpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19PRilcbmRyaXZlcnMvYmNtYS9iY21hX3ByaXZhdGUuaDoxMDk6ZXh0ZXJuIGludCBfX2luaXQgYmNtYV9ob3N0X3NvY19yZWdpc3Rlcl9kcml2ZXIodm9pZCk7XG5kcml2ZXJzL2JjbWEvYmNtYV9wcml2YXRlLmgtMTEwLWV4dGVybiB2b2lkIF9fZXhpdCBiY21hX2hvc3Rfc29jX3VucmVnaXN0ZXJfZHJpdmVyKHZvaWQpO1xuZHJpdmVycy9iY21hL2JjbWFfcHJpdmF0ZS5oLTExMS0jZWxzZVxuZHJpdmVycy9iY21hL2JjbWFfcHJpdmF0ZS5oOjExMjpzdGF0aWMgaW5saW5lIGludCBfX2luaXQgYmNtYV9ob3N0X3NvY19yZWdpc3Rlcl9kcml2ZXIodm9pZClcbmRyaXZlcnMvYmNtYS9iY21hX3ByaXZhdGUuaC0xMTMte1xuLS1cbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jPTI1OD1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBiY21hX2hvc3Rfc29jX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYy0yNjYtXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYzoyNjc6aW50IF9faW5pdCBiY21hX2hvc3Rfc29jX3JlZ2lzdGVyX2RyaXZlcih2b2lkKVxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmMtMjY4LXtcbi0tXG5kcml2ZXJzL2JjbWEvbWFpbi5jPTY3Mj1zdGF0aWMgaW50IF9faW5pdCBiY21hX21vZGluaXQodm9pZClcbi0tXG5kcml2ZXJzL2JjbWEvbWFpbi5jLTY3OS1cbmRyaXZlcnMvYmNtYS9tYWluLmM6NjgwOlx0ZXJyID0gYmNtYV9ob3N0X3NvY19yZWdpc3Rlcl9kcml2ZXIoKTtcbmRyaXZlcnMvYmNtYS9tYWluLmMtNjgxLVx0aWYgKGVycikge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAyOjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2ODQ3CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipEaXZpbmcgaW50byB0aGUgQkNNQSBIb3N0IFNPQyBEcml2ZXIgUmVnaXN0cmF0aW9uKioKClJpZ2h0LCBgYmNtYV9ob3N0X3NvY19yZWdpc3Rlcl9kcml2ZXJgIGlzIGJlaW5nIGNhbGxlZCwgd2hpY2ggaXMgc3RhbmRhcmQgcHJvY2VkdXJlLiBJdCYjMzk7cyBlc3NlbnRpYWxseSB0ZWxsaW5nIHRoZSBrZXJuZWwsICYjMzQ7SGV5LCB0aGVyZSYjMzk7cyBhIG5ldyBkcml2ZXIsIGBiY21hX2hvc3Rfc29jX2RyaXZlcmAsIGF2YWlsYWJsZTsgYmUgb24gdGhlIGxvb2tvdXQgZm9yIGhhcmR3YXJlIHRoYXQgaXQgY2FuIGhhbmRsZS4mIzM0OyBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtPa2F5LCBnb29kLiBOb3csIHdoYXQgcGxhdGZvcm0gSURzIG9yIGRldmljZSBwcm9wZXJ0aWVzIGlzIHRoaXMgZHJpdmVyIGV4cGVjdGluZz8gV2hhdCBjcml0ZXJpYSBkb2VzIGl0IHVzZSB0byBkZXRlcm1pbmUgaWYgaXQgc2hvdWxkIHRha2UgcmVzcG9uc2liaWxpdHkgZm9yIGEgcGllY2Ugb2YgaGFyZHdhcmU/JiMzNDsgSSBuZWVkIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHRoZSBwcm9iZSBtYXRjaGVzLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgYGJjbWFfaG9zdF9zb2NfZHJpdmVyYCBpcyBkZXNpZ25lZCB0byBpZGVudGlmeSBhbmQgd29yayB3aXRoIHBhcnRpY3VsYXIgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMuIFRoaXMgaGVscHMgbWUgdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhlIGRyaXZlciBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggdGhlIHVuZGVybHlpbmcgU09DLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGl0JiMzOTtzICpsb29raW5nKiBmb3IgaW4gb3JkZXIgdG8ga25vdyAqd2hlcmUqIGl0IHdpbGwgYmUgZWZmZWN0aXZlLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhhdCBkcml2ZXIgKmFjdHVhbGx5KiBtYXRjaGVzIGFnYWluc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAyOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JjbWFfaG9zdF9zb2NfZHJpdmVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmNtYS9ob3N0X3NvYy5jPTI1Nj1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBiY21hX2hvc3Rfc29jX29mX21hdGNoKTtcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jLTI1Ny1cbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jOjI1ODpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBiY21hX2hvc3Rfc29jX2RyaXZlciA9IHtcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jLTI1OS1cdC5kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmM9MjY3PWludCBfX2luaXQgYmNtYV9ob3N0X3NvY19yZWdpc3Rlcl9kcml2ZXIodm9pZClcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jLTI2OC17XG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYzoyNjk6XHRyZXR1cm4gcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKFx1MDAyNmJjbWFfaG9zdF9zb2NfZHJpdmVyKTtcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jLTI3MC19XG4tLVxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmM9MjcyPXZvaWQgX19leGl0IGJjbWFfaG9zdF9zb2NfdW5yZWdpc3Rlcl9kcml2ZXIodm9pZClcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jLTI3My17XG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYzoyNzQ6XHRwbGF0Zm9ybV9kcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZiY21hX2hvc3Rfc29jX2RyaXZlcik7XG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYy0yNzUtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMjo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzQ1NQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQ6CgoqKkFuYWx5emluZyB0aGUgYGJjbWFfaG9zdF9zb2Nfb2ZfbWF0Y2hgIEZ1bmN0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgYmNtYV9ob3N0X3NvY19vZl9tYXRjaGAgZnVuY3Rpb24uIEltbWVkaWF0ZWx5LCBteSBleHBlcnQgYnJhaW4ga2lja3MgaW4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBwdXJwb3NlIHdpdGhpbiB0aGUgYnJvYWRlciBjb250ZXh0LiAmIzM0O2JjbWEmIzM0OyBzdWdnZXN0cyBCcm9hZGNvbSwgaW5kaWNhdGluZyB0aGlzIGlzIHByb2JhYmx5IHJlbGF0ZWQgdG8gdGhlaXIgQ29tbXVuaWNhdGlvbiBBcmNoaXRlY3R1cmUuICYjMzQ7aG9zdCYjMzQ7IGltcGxpZXMgaXQmIzM5O3MgZGVhbGluZyB3aXRoIHRoZSBob3N0IGludGVyZmFjZSwgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiBhIHN5c3RlbS1vbi1hLWNoaXAgKFNvQykgYW5kIHRoZSBob3N0IENQVSBvciBvdGhlciBjb21wb25lbnRzLiAmIzM0O29mJiMzNDsgYW5kICYjMzQ7bWF0Y2gmIzM0OyBoaW50cyBhdCBhbiBhZGRyZXNzIHRhYmxlIG9yIGxvb2t1cCBwcm9jZXNzLgoKVGhlcmVmb3JlLCBteSBpbml0aWFsIGh5cG90aGVzaXMgaXMgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGRlc2lnbmVkIHRvICoqZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgcGllY2Ugb2YgaGFyZHdhcmUgKGxpa2VseSBhIEJyb2FkY29tIFNvQykgaXMgY29tcGF0aWJsZSB3aXRoIGEgcGFydGljdWxhciBob3N0IGludGVyZmFjZSBiYXNlZCBvbiBhIERldmljZSBUcmVlIChEVCkgZW50cnkuKiogSXTigJlzIHByb2JhYmx5IGNoZWNraW5nIHByb3BlcnRpZXMgd2l0aGluIHRoZSBEVCB0byBzZWUgaWYgdGhleSBhbGlnbiB3aXRoIHRoZSBleHBlY3RlZCByZXF1aXJlbWVudHMgZm9yIHRoYXQgc3BlY2lmaWMgU29DLiBUaGlzIG1hdGNoaW5nIHByb2Nlc3MgaXMgY3J1Y2lhbC4gSXTigJlzIHRoZSBnYXRld2F5LCBkZXRlcm1pbmluZyBpZiB0aGUgZHJpdmVyIGlzIGxvYWRlZCBhbmQgdGhlIGhhcmR3YXJlIGlzIGNvcnJlY3RseSBpbml0aWFsaXplZC4gVGhlIGNvZGUgaGVyZSBpcyB0aGUgZ2F0ZWtlZXBlci4KCkkmIzM5O20gZXhwZWN0aW5nIHRoaXMgZnVuY3Rpb24gdG8gY29tcGFyZSBzb21lIElEIGZpZWxkcywgbGlrZSBhIGJvYXJkIGlkZW50aWZpZXIsIGNoaXBzZXQgdmVyc2lvbiwgb3Igc3BlY2lmaWMgZGV2aWNlIGlkZW50aWZpZXJzIGFnYWluc3QgdGhlIERldmljZSBUcmVlIGRhdGEuIFBvdGVudGlhbGx5LCBpdCBjb3VsZCBleGFtaW5lIHRoZSBEVCBwcm9wZXJ0aWVzIHRvIHNlZSBpZiB0aGV5JiMzOTtyZSBhICYjMzQ7cGVyZmVjdCYjMzQ7IG1hdGNoLCBvciBpZiBzb21lIHRvbGVyYW5jZXMgb3Igd2lsZGNhcmRpbmcgYXJlIGludm9sdmVkIHRvIHN1cHBvcnQgYSByYW5nZSBvZiBCcm9hZGNvbSBTb0NzLiBJIGJldCB0aGVyZSBpcyBhbiBpbnRlcnJ1cHQgY29uZmlndXJhdGlvbiBoZXJlLCB0b28uIFRoZSBgb2ZgIHByZWZpeCBzdWdnZXN0cyBEZXZpY2UgVHJlZSBiaW5kaW5ncywgc28gaXTigJlzIGxpa2VseSB1c2luZyBEVCBwcm9wZXJ0aWVzIHRvIGNvbmZpZ3VyZSB0aGUgaGFyZHdhcmUsIGFuZCB0aGUgbWF0Y2ggaXMgcGFydCBvZiB2YWxpZGF0aW5nIHRoZSBjb3JyZWN0IGNvbmZpZ3VyYXRpb24gYW5kIGRyaXZlci4gTGV0JiMzOTtzIHNlZSBpZiBteSBkZWR1Y3Rpb25zIGFyZSBjb3JyZWN0LiBJIG5lZWQgdG8gc2VlIHRoZSBjb2RlIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDI6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmNtYV9ob3N0X3NvY19vZl9tYXRjaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2JjbWEvaG9zdF9zb2MuYz0yNDM9c3RhdGljIHZvaWQgYmNtYV9ob3N0X3NvY19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYy0yNTEtXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYzoyNTI6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYmNtYV9ob3N0X3NvY19vZl9tYXRjaFtdID0ge1xuZHJpdmVycy9iY21hL2hvc3Rfc29jLmMtMjUzLVx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O2JyY20sYnVzLWF4aVwmIzM0OywgfSxcbi0tXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYy0yNTUtfTtcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jOjI1NjpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBiY21hX2hvc3Rfc29jX29mX21hdGNoKTtcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jLTI1Ny1cbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jPTI1OD1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBiY21hX2hvc3Rfc29jX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYy0yNjAtXHRcdC5uYW1lID0gXCYjMzQ7YmNtYS1ob3N0LXNvY1wmIzM0OyxcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jOjI2MTpcdFx0Lm9mX21hdGNoX3RhYmxlID0gYmNtYV9ob3N0X3NvY19vZl9tYXRjaCxcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jLTI2Mi1cdH0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAyOjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4MTg5CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNTE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQkNNQSBHUElPIEluaXRpYWxpemF0aW9uIFBhdGgqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzOiBpZiB0aGUgZGV2aWNlIHRyZWUgaW5jbHVkZXMgJiMzNDticmNtLGJ1cy1heGksJiMzNDsgdGhlbiBgYmNtYV9ob3N0X3NvY19wcm9iZWAgd2lsbCBiZSB0cmlnZ2VyZWQuIFRoYXQmIzM5O3MgY3J1Y2lhbCBiZWNhdXNlIGBiY21hX2hvc3Rfc29jX3Byb2JlYCBzZXRzIGBidXMtJmd0O2hvc3R0eXBlYCB0byBgQkNNQV9IT1NUVFlQRV9TT0NgLCB3aGljaCBpcyB0aGVuIGVzc2VudGlhbCBmb3IgYGJjbWFfYnVzX3JlZ2lzdGVyYC4gSWYgdGhhdCBoYXBwZW5zLCB0aGUgYnVzIHdpbGwgYmUgc2Nhbm5lZCwgYW5kIGlmIGEgR1BJTyBjb250cm9sbGVyIGlzIGZvdW5kLCBgYmNtYV9ncGlvX2luaXRgIGdldHMgY2FsbGVkLgoKVGhlIGtleSBxdWVzdGlvbiBpcyB3aGV0aGVyIHdlIGNhbiBpbmplY3QgYSAmIzM0O2JyY20sYnVzLWF4aSYjMzQ7IG5vZGUgdmlhIHN5emthbGxlci4gIFN5emthbGxlciBkb2VzbiYjMzk7dCB0eXBpY2FsbHkganVzdCAqaW5qZWN0KiBhcmJpdHJhcnkgZGV2aWNlIHRyZWUgbm9kZXMgdW5sZXNzIGl0JiMzOTtzIGV4cGxpY2l0bHkgY29uZmlndXJlZCwgYW5kIEkgZG9uJiMzOTt0IHRoaW5rIHdlJiMzOTtyZSB1c2luZyB0aG9zZSBzb3J0cyBvZiBtZWNoYW5pc21zIGJ5IGRlZmF1bHQuIFNvIHRoYXQmIzM5O3MgcHJvYmFibHkgYSBuby1nby4KCk5vdywgd2FpdCBhIG1pbnV0ZS4uLiB3aGF0IGFib3V0IGBiY200N3h4X2J1dHRvbnNfYWRkYD8gVGhhdCYjMzk7cyBpbiBgYXJjaC9taXBzL2JjbTQ3eHgvYnV0dG9ucy5jYC4gIFRoYXQmIzM5O3MgZGVmaW5pdGVseSBNSVBTLXNwZWNpZmljLCBzbyBub3QgcmVsZXZhbnQgZm9yIG91ciB4ODYgb3IgQVJNNjQgc3l6a2FsbGVyIGluc3RhbmNlcy4KCk9rYXksIGxldCYjMzk7cyBzdGVwIGJhY2sgYW5kIGNvbnNpZGVyIGBkcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uY2AgaXMgY29tcGlsZWQgZm9yIHg4NiBhbmQgQVJNIGlmIGBDT05GSUdfQkNNQV9EUklWRVJfR1BJT2AgaXMgZW5hYmxlZCwgZXZlbiBpZiB0aGF0IG1lYW5zIHdlIG5lZWQgYENPTkZJR19CQ01BYCB0byBiZSBlbmFibGVkLgoKQnV0IGhlcmUmIzM5O3MgdGhlIGtpY2tlcjogYGJjbWFfZ3Bpb19pbml0YCAqb25seSogcmVnaXN0ZXJzIHRoZSBzb2Z0d2FyZSBub2RlIGlmIGBidXMtJmd0O2hvc3R0eXBlYCBpcyBgQkNNQV9IT1NUVFlQRV9TT0NgLiBBbmQgdGhhdCBgQkNNQV9IT1NUVFlQRV9TT0NgIG9ubHkgZ2V0cyBzZXQgaWYgZWl0aGVyIGBiY21hX2hvc3Rfc29jX3Byb2JlYCBpcyBjYWxsZWQgKHdoaWNoIHdlIGFscmVhZHkga25vdyBkZXBlbmRzIG9uIHRoZSAmIzM0O2JyY20sYnVzLWF4aSYjMzQ7IERUIG5vZGUpIG9yIGBiY21hX2hvc3Rfc29jX3JlZ2lzdGVyYCBnZXRzIGNhbGxlZCBmcm9tIHRoZSBNSVBTIGBiY200N3h4X3JlZ2lzdGVyX2JjbWFgIHJvdXRpbmUuCgpTbywgb24geDg2LCB3ZSYjMzk7ZCBuZWVkIHRoYXQgJiMzNDticmNtLGJ1cy1heGkmIzM0OyBpbiB0aGUgRFQuIEhvd2V2ZXIsIHN5emthbGxlciBvbiB4ODYgZG9lc24mIzM5O3QgdXNlIGEgZGV2aWNlIHRyZWUuCgpUaGVuLCB3aGF0IGFib3V0IEFSTS9BUk02ND8gIFN5emthbGxlciAqb24qIEFSTTY0IG1pZ2h0IHVzZSBhIERULCBidXQgdHlwaWNhbGx5IGEgZml4ZWQgb25lIHByb3ZpZGVkIGJ5IFFFTVUgKGUuZy4sIHRoZSBgdmlydGAgbWFjaGluZSkuIEFuZCAqdGhhdCogRFQgd29uJiMzOTt0IGhhdmUgJiMzNDticmNtLGJ1cy1heGkmIzM0OyBpbiBpdC4KClRoZSBjb25jbHVzaW9uIGlzIHRoYXQgYGJjbWFfZ3Bpb19pbml0YCB3aWxsICpuZXZlciogc2VlIGBCQ01BX0hPU1RUWVBFX1NPQ2AgaW4gb3VyIHN5emthbGxlciBpbnN0YW5jZXMgb24geDg2IG9yIEFSTTY0LgoKT2theSwgd2hhdCBhYm91dCBgc3NiX2dwaW9faW5pdGA/IFRoYXQgZGVwZW5kcyBvbiBgYnVzLSZndDtidXN0eXBlID09IFNTQl9CVVNUWVBFX1NTQmAgd2hpY2ggaXNuJiMzOTt0IHRoZSBjdXJyZW50IHBhdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAyOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1NTQl9CVVNUWVBFX1NTQiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Zpcm13YXJlL2Jyb2FkY29tL2JjbTQ3eHhfc3Byb20uYz01OTU9c3RhdGljIGludCBiY200N3h4X2dldF9zcHJvbV9zc2Ioc3RydWN0IHNzYl9idXMgKmJ1cywgc3RydWN0IHNzYl9zcHJvbSAqb3V0KVxuLS1cbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vYmNtNDd4eF9zcHJvbS5jLTU5OS1cdHN3aXRjaCAoYnVzLVx1MDAzZWJ1c3R5cGUpIHtcbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vYmNtNDd4eF9zcHJvbS5jOjYwMDpcdGNhc2UgU1NCX0JVU1RZUEVfU1NCOlxuZHJpdmVycy9maXJtd2FyZS9icm9hZGNvbS9iY200N3h4X3Nwcm9tLmMtNjAxLVx0XHRiY200N3h4X2ZpbGxfc3Byb20ob3V0LCBOVUxMLCBmYWxzZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM9MTI1Nj1zdGF0aWMgdm9pZCBiNDRfY2hpcF9yZXNldChzdHJ1Y3QgYjQ0ICpicCwgaW50IHJlc2V0X2tpbmQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMTI4OS1cdHN3aXRjaCAoc2Rldi1cdTAwM2VidXMtXHUwMDNlYnVzdHlwZSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM6MTI5MDpcdGNhc2UgU1NCX0JVU1RZUEVfU1NCOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMTI5MS1cdFx0YnczMihicCwgQjQ0X01ESU9fQ1RSTCwgKE1ESU9fQ1RSTF9QUkVBTUJMRSB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM9MTU3OD1zdGF0aWMgdm9pZCBiNDRfc2V0dXBfd29sX3BjaShzdHJ1Y3QgYjQ0ICpicClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYy0xNTgxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM6MTU4MjpcdGlmIChicC1cdTAwM2VzZGV2LVx1MDAzZWJ1cy1cdTAwM2VidXN0eXBlICE9IFNTQl9CVVNUWVBFX1NTQikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMTU4My1cdFx0YnczMihicCwgU1NCX1RNU0xPVywgYnIzMihicCwgU1NCX1RNU0xPVykgfCBTU0JfVE1TTE9XX1BFKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYz0xNzY3PXN0YXRpYyB2b2lkIGI0NF9nZXRfZHJ2aW5mbyAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGV0aHRvb2xfZHJ2aW5mbyAqaW5mbylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYy0xNzc2LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jOjE3Nzc6XHRjYXNlIFNTQl9CVVNUWVBFX1NTQjpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTE3NzgtXHRcdHN0cnNjcHkoaW5mby1cdTAwM2VidXNfaW5mbywgXCYjMzQ7U1NCXCYjMzQ7LCBzaXplb2YoaW5mby1cdTAwM2VidXNfaW5mbykpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jPTIxNDE9c3RhdGljIGludCBiNDRfZ2V0X2ludmFyaWFudHMoc3RydWN0IGI0NCAqYnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjE0OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jOjIxNDk6XHRpZiAoc2Rldi1cdTAwM2VidXMtXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYy0yMTUwLVx0ICAgIGluc3RhbmNlIFx1MDAzZSAxKSB7XG4tLVxuZHJpdmVycy9zc2IvZHJpdmVyX2NoaXBjb21tb24uYz0xMTk9c3RhdGljIGVudW0gc3NiX2Nsa3NyYyBjaGlwY29fcGN0bF9nZXRfc2xvd2Nsa3NyYyhzdHJ1Y3Qgc3NiX2NoaXBjb21tb24gKmNjKVxuLS1cbmRyaXZlcnMvc3NiL2RyaXZlcl9jaGlwY29tbW9uLmMtMTI0LVx0aWYgKGNjLVx1MDAzZWRldi1cdTAwM2VpZC5yZXZpc2lvbiBcdTAwM2MgNikge1xuZHJpdmVycy9zc2IvZHJpdmVyX2NoaXBjb21tb24uYzoxMjU6XHRcdGlmIChidXMtXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IgfHxcbmRyaXZlcnMvc3NiL2RyaXZlcl9jaGlwY29tbW9uLmMtMTI2LVx0XHQgICAgYnVzLVx1MDAzZWJ1c3R5cGUgPT0gU1NCX0JVU1RZUEVfUENNQ0lBKVxuLS1cbmRyaXZlcnMvc3NiL2RyaXZlcl9jaGlwY29tbW9uLmM9MzExPXUzMiBzc2JfY2hpcGNvX3dhdGNoZG9nX3RpbWVyX3NldF93ZHQoc3RydWN0IGJjbTQ3eHhfd2R0ICp3ZHQsIHUzMiB0aWNrcylcbi0tXG5kcml2ZXJzL3NzYi9kcml2ZXJfY2hpcGNvbW1vbi5jLTMxNC1cbmRyaXZlcnMvc3NiL2RyaXZlcl9jaGlwY29tbW9uLmM6MzE1Olx0aWYgKGNjLVx1MDAzZWRldi1cdTAwM2VidXMtXHUwMDNlYnVzdHlwZSAhPSBTU0JfQlVTVFlQRV9TU0IpXG5kcml2ZXJzL3NzYi9kcml2ZXJfY2hpcGNvbW1vbi5jLTMxNi1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9zc2IvZHJpdmVyX2NoaXBjb21tb24uYz0zMjE9dTMyIHNzYl9jaGlwY29fd2F0Y2hkb2dfdGltZXJfc2V0X21zKHN0cnVjdCBiY200N3h4X3dkdCAqd2R0LCB1MzIgbXMpXG4tLVxuZHJpdmVycy9zc2IvZHJpdmVyX2NoaXBjb21tb24uYy0zMjUtXG5kcml2ZXJzL3NzYi9kcml2ZXJfY2hpcGNvbW1vbi5jOjMyNjpcdGlmIChjYy1cdTAwM2VkZXYtXHUwMDNlYnVzLVx1MDAzZWJ1c3R5cGUgIT0gU1NCX0JVU1RZUEVfU1NCKVxuZHJpdmVycy9zc2IvZHJpdmVyX2NoaXBjb21tb24uYy0zMjctXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvc3NiL2RyaXZlcl9jaGlwY29tbW9uLmM9MzQ4PXZvaWQgc3NiX2NoaXBjb21tb25faW5pdChzdHJ1Y3Qgc3NiX2NoaXBjb21tb24gKmNjKVxuLS1cbmRyaXZlcnMvc3NiL2RyaXZlcl9jaGlwY29tbW9uLmMtMzY4LVxuZHJpdmVycy9zc2IvZHJpdmVyX2NoaXBjb21tb24uYzozNjk6XHRpZiAoY2MtXHUwMDNlZGV2LVx1MDAzZWJ1cy1cdTAwM2VidXN0eXBlID09IFNTQl9CVVNUWVBFX1NTQikge1xuZHJpdmVycy9zc2IvZHJpdmVyX2NoaXBjb21tb24uYy0zNzAtXHRcdGNjLVx1MDAzZXRpY2tzX3Blcl9tcyA9IHNzYl9jaGlwY29fd2F0Y2hkb2dfdGlja3NfcGVyX21zKGNjKTtcbi0tXG5kcml2ZXJzL3NzYi9kcml2ZXJfY2hpcGNvbW1vbl9wbXUuYz0zMTc9c3RhdGljIHZvaWQgc3NiX3BtdV9wbGxfaW5pdChzdHJ1Y3Qgc3NiX2NoaXBjb21tb24gKmNjKVxuLS1cbmRyaXZlcnMvc3NiL2RyaXZlcl9jaGlwY29tbW9uX3BtdS5jLTMyMS1cbmRyaXZlcnMvc3NiL2RyaXZlcl9jaGlwY29tbW9uX3BtdS5jOjMyMjpcdGlmIChidXMtXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpIHtcbmRyaXZlcnMvc3NiL2RyaXZlcl9jaGlwY29tbW9uX3BtdS5jLTMyMy0jaWZkZWYgQ09ORklHX0JDTTQ3WFhcbi0tXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jPTMyPXN0YXRpYyBpbnQgc3NiX2dwaW9fdG9faXJxKHN0cnVjdCBncGlvX2NoaXAgKmNoaXAsIHVuc2lnbmVkIGludCBncGlvKVxuLS1cbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmMtMzUtXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jOjM2Olx0aWYgKGJ1cy1cdTAwM2VidXN0eXBlID09IFNTQl9CVVNUWVBFX1NTQilcbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmMtMzctXHRcdHJldHVybiBpcnFfZmluZF9tYXBwaW5nKGJ1cy1cdTAwM2VpcnFfZG9tYWluLCBncGlvKTtcbi0tXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jPTE1MD1zdGF0aWMgaW50IHNzYl9ncGlvX2lycV9jaGlwY29fZG9tYWluX2luaXQoc3RydWN0IHNzYl9idXMgKmJ1cylcbi0tXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jLTE1NS1cbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmM6MTU2Olx0aWYgKGJ1cy1cdTAwM2VidXN0eXBlICE9IFNTQl9CVVNUWVBFX1NTQilcbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmMtMTU3LVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jPTE5NT1zdGF0aWMgdm9pZCBzc2JfZ3Bpb19pcnFfY2hpcGNvX2RvbWFpbl9leGl0KHN0cnVjdCBzc2JfYnVzICpidXMpXG4tLVxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYy0yMDAtXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jOjIwMTpcdGlmIChidXMtXHUwMDNlYnVzdHlwZSAhPSBTU0JfQlVTVFlQRV9TU0IpXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jLTIwMi1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmM9MjI0PXN0YXRpYyBpbnQgc3NiX2dwaW9fY2hpcGNvX2luaXQoc3RydWN0IHNzYl9idXMgKmJ1cylcbi0tXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jLTI0MC1cdGNoaXAtXHUwMDNlbmdwaW9cdFx0PSAxNjtcbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmM6MjQxOlx0aWYgKGJ1cy1cdTAwM2VidXN0eXBlID09IFNTQl9CVVNUWVBFX1NTQilcbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmMtMjQyLVx0XHRjaGlwLVx1MDAzZWZ3bm9kZVx0PSBzb2Z0d2FyZV9ub2RlX2Z3bm9kZShcdTAwMjZzc2JfZ3Bpb19zd25vZGUpO1xuLS1cbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmMtMjQ2LVx0ICovXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jOjI0NzpcdGlmIChidXMtXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jLTI0OC1cdFx0Y2hpcC1cdTAwM2ViYXNlXHRcdD0gMDtcbi0tXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jPTM1Mz1zdGF0aWMgaW50IHNzYl9ncGlvX2lycV9leHRpZl9kb21haW5faW5pdChzdHJ1Y3Qgc3NiX2J1cyAqYnVzKVxuLS1cbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmMtMzU4LVxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYzozNTk6XHRpZiAoYnVzLVx1MDAzZWJ1c3R5cGUgIT0gU1NCX0JVU1RZUEVfU1NCKVxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYy0zNjAtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmM9Mzk3PXN0YXRpYyB2b2lkIHNzYl9ncGlvX2lycV9leHRpZl9kb21haW5fZXhpdChzdHJ1Y3Qgc3NiX2J1cyAqYnVzKVxuLS1cbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmMtNDAyLVxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYzo0MDM6XHRpZiAoYnVzLVx1MDAzZWJ1c3R5cGUgIT0gU1NCX0JVU1RZUEVfU1NCKVxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYy00MDQtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jPTQyNT1zdGF0aWMgaW50IHNzYl9ncGlvX2V4dGlmX2luaXQoc3RydWN0IHNzYl9idXMgKmJ1cylcbi0tXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jLTQ0My1cdCAqL1xuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYzo0NDQ6XHRpZiAoYnVzLVx1MDAzZWJ1c3R5cGUgPT0gU1NCX0JVU1RZUEVfU1NCKSB7XG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jLTQ0NS1cdFx0Y2hpcC1cdTAwM2ViYXNlXHQ9IDA7XG4tLVxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYz00NzU9aW50IHNzYl9ncGlvX2luaXQoc3RydWN0IHNzYl9idXMgKmJ1cylcbi0tXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jLTQ4My1cdCAqL1xuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYzo0ODQ6XHRpZiAoYnVzLVx1MDAzZWJ1c3R5cGUgPT0gU1NCX0JVU1RZUEVfU1NCKSB7XG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jLTQ4NS1cdFx0ZXJyID0gc29mdHdhcmVfbm9kZV9yZWdpc3RlcihcdTAwMjZzc2JfZ3Bpb19zd25vZGUpO1xuLS1cbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmMtNDk3LVx0aWYgKGVycikge1xuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYzo0OTg6XHRcdGlmIChidXMtXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jLTQ5OS1cdFx0XHRzb2Z0d2FyZV9ub2RlX3VucmVnaXN0ZXIoXHUwMDI2c3NiX2dwaW9fc3dub2RlKTtcbi0tXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jPTUwNj1pbnQgc3NiX2dwaW9fdW5yZWdpc3RlcihzdHJ1Y3Qgc3NiX2J1cyAqYnVzKVxuLS1cbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmMtNTEwLVx0XHRncGlvY2hpcF9yZW1vdmUoXHUwMDI2YnVzLVx1MDAzZWdwaW8pO1xuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYzo1MTE6XHRcdGlmIChidXMtXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jLTUxMi1cdFx0XHRzb2Z0d2FyZV9ub2RlX3VucmVnaXN0ZXIoXHUwMDI2c3NiX2dwaW9fc3dub2RlKTtcbi0tXG5kcml2ZXJzL3NzYi9tYWluLmM9NDE1PXN0YXRpYyB2b2lkIHNzYl9kZXZpY2VzX3VucmVnaXN0ZXIoc3RydWN0IHNzYl9idXMgKmJ1cylcbi0tXG5kcml2ZXJzL3NzYi9tYWluLmMtNDI2LSNpZmRlZiBDT05GSUdfU1NCX0VNQkVEREVEXG5kcml2ZXJzL3NzYi9tYWluLmM6NDI3Olx0aWYgKGJ1cy1cdTAwM2VidXN0eXBlID09IFNTQl9CVVNUWVBFX1NTQilcbmRyaXZlcnMvc3NiL21haW4uYy00MjgtXHRcdHBsYXRmb3JtX2RldmljZV91bnJlZ2lzdGVyKGJ1cy1cdTAwM2V3YXRjaGRvZyk7XG4tLVxuZHJpdmVycy9zc2IvbWFpbi5jPTQ1OT1zdGF0aWMgaW50IHNzYl9kZXZpY2VzX3JlZ2lzdGVyKHN0cnVjdCBzc2JfYnVzICpidXMpXG4tLVxuZHJpdmVycy9zc2IvbWFpbi5jLTUxNC1cdFx0XHRicmVhaztcbmRyaXZlcnMvc3NiL21haW4uYzo1MTU6XHRcdGNhc2UgU1NCX0JVU1RZUEVfU1NCOlxuZHJpdmVycy9zc2IvbWFpbi5jLTUxNi1cdFx0XHRkZXYtXHUwMDNlZG1hX21hc2sgPSBcdTAwMjZkZXYtXHUwMDNlY29oZXJlbnRfZG1hX21hc2s7XG4tLVxuZHJpdmVycy9zc2IvbWFpbi5jPTU1OT1zdGF0aWMgaW50IHNzYl9hdHRhY2hfcXVldWVkX2J1c2VzKHZvaWQpXG4tLVxuZHJpdmVycy9zc2IvbWFpbi5jLTU3Ny1cdFx0c3NiX3BjaWNvcmVfaW5pdChcdTAwMjZidXMtXHUwMDNlcGNpY29yZSk7XG5kcml2ZXJzL3NzYi9tYWluLmM6NTc4Olx0XHRpZiAoYnVzLVx1MDAzZWJ1c3R5cGUgPT0gU1NCX0JVU1RZUEVfU1NCKVxuZHJpdmVycy9zc2IvbWFpbi5jLTU3OS1cdFx0XHRzc2Jfd2F0Y2hkb2dfcmVnaXN0ZXIoYnVzKTtcbi0tXG5kcml2ZXJzL3NzYi9tYWluLmM9Nzc0PWludCBzc2JfYnVzX2hvc3Rfc29jX3JlZ2lzdGVyKHN0cnVjdCBzc2JfYnVzICpidXMsIHVuc2lnbmVkIGxvbmcgYmFzZWFkZHIpXG4tLVxuZHJpdmVycy9zc2IvbWFpbi5jLTc3Ny1cbmRyaXZlcnMvc3NiL21haW4uYzo3Nzg6XHRidXMtXHUwMDNlYnVzdHlwZSA9IFNTQl9CVVNUWVBFX1NTQjtcbmRyaXZlcnMvc3NiL21haW4uYy03NzktXHRidXMtXHUwMDNlb3BzID0gXHUwMDI2c3NiX2hvc3Rfc29jX29wcztcbi0tXG5kcml2ZXJzL3NzYi9tYWluLmM9MTEzMz11MzIgc3NiX2RtYV90cmFuc2xhdGlvbihzdHJ1Y3Qgc3NiX2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvc3NiL21haW4uYy0xMTM1LVx0c3dpdGNoIChkZXYtXHUwMDNlYnVzLVx1MDAzZWJ1c3R5cGUpIHtcbmRyaXZlcnMvc3NiL21haW4uYzoxMTM2Olx0Y2FzZSBTU0JfQlVTVFlQRV9TU0I6XG5kcml2ZXJzL3NzYi9tYWluLmMtMTEzNy1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9zc2IvbWFpbi5jPTExNTU9aW50IHNzYl9idXNfbWF5X3Bvd2VyZG93bihzdHJ1Y3Qgc3NiX2J1cyAqYnVzKVxuLS1cbmRyaXZlcnMvc3NiL21haW4uYy0xMTYzLVx0ICovXG5kcml2ZXJzL3NzYi9tYWluLmM6MTE2NDpcdGlmIChidXMtXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpXG5kcml2ZXJzL3NzYi9tYWluLmMtMTE2NS1cdFx0Z290byBvdXQ7XG4tLVxuZHJpdmVycy9zc2Ivc2Nhbi5jPTE2MD1zdGF0aWMgdTMyIHNjYW5fcmVhZDMyKHN0cnVjdCBzc2JfYnVzICpidXMsIHU4IGN1cnJlbnRfY29yZWlkeCxcbi0tXG5kcml2ZXJzL3NzYi9zY2FuLmMtMTY1LVx0c3dpdGNoIChidXMtXHUwMDNlYnVzdHlwZSkge1xuZHJpdmVycy9zc2Ivc2Nhbi5jOjE2NjpcdGNhc2UgU1NCX0JVU1RZUEVfU1NCOlxuZHJpdmVycy9zc2Ivc2Nhbi5jLTE2Ny1cdFx0b2Zmc2V0ICYjNDM7PSBjdXJyZW50X2NvcmVpZHggKiBTU0JfQ09SRV9TSVpFO1xuLS1cbmRyaXZlcnMvc3NiL3NjYW4uYz0xODc9c3RhdGljIGludCBzY2FuX3N3aXRjaGNvcmUoc3RydWN0IHNzYl9idXMgKmJ1cywgdTggY29yZWlkeClcbi0tXG5kcml2ZXJzL3NzYi9zY2FuLmMtMTg5LVx0c3dpdGNoIChidXMtXHUwMDNlYnVzdHlwZSkge1xuZHJpdmVycy9zc2Ivc2Nhbi5jOjE5MDpcdGNhc2UgU1NCX0JVU1RZUEVfU1NCOlxuZHJpdmVycy9zc2Ivc2Nhbi5jLTE5MS1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9zc2Ivc2Nhbi5jPTIwMj12b2lkIHNzYl9pb3VubWFwKHN0cnVjdCBzc2JfYnVzICpidXMpXG4tLVxuZHJpdmVycy9zc2Ivc2Nhbi5jLTIwNC1cdHN3aXRjaCAoYnVzLVx1MDAzZWJ1c3R5cGUpIHtcbmRyaXZlcnMvc3NiL3NjYW4uYzoyMDU6XHRjYXNlIFNTQl9CVVNUWVBFX1NTQjpcbmRyaXZlcnMvc3NiL3NjYW4uYy0yMDYtXHRjYXNlIFNTQl9CVVNUWVBFX1BDTUNJQTpcbi0tXG5kcml2ZXJzL3NzYi9zY2FuLmM9MjIzPXN0YXRpYyB2b2lkIF9faW9tZW0gKnNzYl9pb3JlbWFwKHN0cnVjdCBzc2JfYnVzICpidXMsXG4tLVxuZHJpdmVycy9zc2Ivc2Nhbi5jLTIyOC1cdHN3aXRjaCAoYnVzLVx1MDAzZWJ1c3R5cGUpIHtcbmRyaXZlcnMvc3NiL3NjYW4uYzoyMjk6XHRjYXNlIFNTQl9CVVNUWVBFX1NTQjpcbmRyaXZlcnMvc3NiL3NjYW4uYy0yMzAtXHRcdC8qIE9ubHkgbWFwIHRoZSBmaXJzdCBjb3JlIGZvciBub3cuICovXG4tLVxuZHJpdmVycy9zc2Ivc2Nhbi5jPTI3MT1pbnQgc3NiX2J1c19zY2FuKHN0cnVjdCBzc2JfYnVzICpidXMsXG4tLVxuZHJpdmVycy9zc2Ivc2Nhbi5jLTMzMC1cdH1cbmRyaXZlcnMvc3NiL3NjYW4uYzozMzE6XHRpZiAoYnVzLVx1MDAzZWJ1c3R5cGUgPT0gU1NCX0JVU1RZUEVfU1NCKSB7XG5kcml2ZXJzL3NzYi9zY2FuLmMtMzMyLVx0XHQvKiBOb3cgdGhhdCB3ZSBrbm93IHRoZSBudW1iZXIgb2YgY29yZXMsXG4tLVxuaW5jbHVkZS9saW51eC9zc2Ivc3NiLmg9MzM5PWVudW0gc3NiX2J1c3R5cGUge1xuaW5jbHVkZS9saW51eC9zc2Ivc3NiLmg6MzQwOlx0U1NCX0JVU1RZUEVfU1NCLFx0LyogVGhpcyBTU0IgYnVzIGlzIHRoZSBzeXN0ZW0gYnVzICovXG5pbmNsdWRlL2xpbnV4L3NzYi9zc2IuaC0zNDEtXHRTU0JfQlVTVFlQRV9QQ0ksXHQvKiBTU0IgaXMgY29ubmVjdGVkIHRvIFBDSSBidXMgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDI6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMzOTYKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBTU0JfQlVTVFlQRV9TU0IgUmVnaXN0cmF0aW9uKioKCkFscmlnaHQsIHNvIGBTU0JfQlVTVFlQRV9TU0JgIGlzIGJlaW5nIGluaXRpYWxpemVkIHdpdGhpbiBgc3NiX2J1c19ob3N0X3NvY19yZWdpc3RlcmAuIFRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6ICp3aGVyZSogYW5kICp3aHkqIGlzIGBzc2JfYnVzX2hvc3Rfc29jX3JlZ2lzdGVyYCBiZWluZyBjYWxsZWQ/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc2l0ZXMgaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgb2YgdGhpcyBidXMgdHlwZSByZWdpc3RyYXRpb24uIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhhdCBmdW5jdGlvbiBhbmQgc2VlIHdoYXQmIzM5O3Mgc2V0dGluZyBpdCB1cC4gS25vd2luZyB0aGUgYnJvYWRlciBjYWxsIHN0YWNrIGFyb3VuZCBgc3NiX2J1c19ob3N0X3NvY19yZWdpc3RlcmAgd2lsbCBpbGx1bWluYXRlIGl0cyBwdXJwb3NlIHdpdGhpbiB0aGUgc3lzdGVtLCByZXZlYWxpbmcgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGFuZCBkZXBlbmRlbmNpZXMuIExldCYjMzk7cyBkaWcgaW4gYW5kIGZpZ3VyZSBvdXQgdGhlIHVwc3RyZWFtIGxvZ2ljLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMjo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzc2JfYnVzX2hvc3Rfc29jX3JlZ2lzdGVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvbWlwcy9iY200N3h4L3NldHVwLmM9MTEzPXN0YXRpYyB2b2lkIF9faW5pdCBiY200N3h4X3JlZ2lzdGVyX3NzYih2b2lkKVxuLS1cbmFyY2gvbWlwcy9iY200N3h4L3NldHVwLmMtMTE4LVxuYXJjaC9taXBzL2JjbTQ3eHgvc2V0dXAuYzoxMTk6XHRlcnIgPSBzc2JfYnVzX2hvc3Rfc29jX3JlZ2lzdGVyKFx1MDAyNmJjbTQ3eHhfYnVzLnNzYiwgU1NCX0VOVU1fQkFTRSk7XG5hcmNoL21pcHMvYmNtNDd4eC9zZXR1cC5jLTEyMC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9zc2IvbWFpbi5jPTc3MD1FWFBPUlRfU1lNQk9MKHNzYl9idXNfc2Rpb2J1c19yZWdpc3Rlcik7XG4tLVxuZHJpdmVycy9zc2IvbWFpbi5jLTc3My0jaWZkZWYgQ09ORklHX1NTQl9IT1NUX1NPQ1xuZHJpdmVycy9zc2IvbWFpbi5jOjc3NDppbnQgc3NiX2J1c19ob3N0X3NvY19yZWdpc3RlcihzdHJ1Y3Qgc3NiX2J1cyAqYnVzLCB1bnNpZ25lZCBsb25nIGJhc2VhZGRyKVxuZHJpdmVycy9zc2IvbWFpbi5jLTc3NS17XG4tLVxuaW5jbHVkZS9saW51eC9zc2Ivc3NiLmg9NTIzPXR5cGVkZWYgaW50ICgqc3NiX2ludmFyaWFudHNfZnVuY190KShzdHJ1Y3Qgc3NiX2J1cyAqYnVzLFxuLS1cbmluY2x1ZGUvbGludXgvc3NiL3NzYi5oLTUyNi0vKiBSZWdpc3RlciBTb0MgYnVzLiAqL1xuaW5jbHVkZS9saW51eC9zc2Ivc3NiLmg6NTI3OmV4dGVybiBpbnQgc3NiX2J1c19ob3N0X3NvY19yZWdpc3RlcihzdHJ1Y3Qgc3NiX2J1cyAqYnVzLFxuaW5jbHVkZS9saW51eC9zc2Ivc3NiLmgtNTI4LVx0XHRcdFx0ICAgICB1bnNpZ25lZCBsb25nIGJhc2VhZGRyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDI6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQwMjYKCQkJCQkJCW91dHB1dDogMTIwCgkJCQkJCQl0aG91Z2h0czogMjc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZz1GYWxzZTogQSBNSVBTLVNwZWNpZmljIERlYWQgRW5kKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoaXMgY29kZSBwYXRoLCB0aGUgb25lIHRoZSBwYXRjaCB0b3VjaGVzLCBpcyBleGNsdXNpdmVseSBjYWxsZWQgZnJvbSBgYXJjaC9taXBzL2JjbTQ3eHgvc2V0dXAuY2AuIFRoYXQgbWVhbnMgdGhlIGBTU0JfQlVTVFlQRV9TU0JgIGRlc2lnbmF0aW9uLCB3aGljaCBpcyBrZXkgaGVyZSwgaXMgKm9ubHkqIHNldCBvbiBNSVBTIEJDTTQ3eHggc3lzdGVtcy4gTm93LCB0aGUga2lja2VyIGlzIHRoYXQgc3l6a2FsbGVyLCBvdXIgcHJpbWFyeSBmdXp6aW5nIHRvb2wsIGRvZXNuJiMzOTt0IGV2ZW4gdG91Y2ggTUlQUyBCQ000N3h4IGFyY2hpdGVjdHVyZXMuIFNvLCBpbmhlcmVudGx5LCB0aGlzIHNwZWNpZmljIGNvZGUgaXMgY29tcGxldGVseSB1bnJlYWNoYWJsZSB3aXRoaW4gb3VyIHZpcnR1YWxpemVkIHRlc3RpbmcgZW52aXJvbm1lbnRzLgoKVGhlIHBhdGNoIGl0c2VsZiBpcyBhYm91dCByZWZhY3RvcmluZyB0aGUgQkNNNDd4eCBidXR0b25zIGRyaXZlciB0byB1dGlsaXplIHNvZnR3YXJlIG5vZGVzIGluc3RlYWQgb2YgYGdwaW9fa2V5c19wbGF0Zm9ybV9kYXRhYC4gSG93ZXZlciwgdGhlIHNjb3BlIG9mIHRoZXNlIGNoYW5nZXMgaXMgc3RyaWN0bHkgbGltaXRlZC4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgbW9kaWZpY2F0aW9ucyB3aXRoaW46CgoqICAgYGFyY2gvbWlwcy9iY200N3h4L2J1dHRvbnMuY2AKKiAgIGBkcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uY2AgKGJ1dCBvbmx5IHdoZW4gYGJ1cy0mZ3Q7aG9zdHR5cGUgPT0gQkNNQV9IT1NUVFlQRV9TT0NgKQoqICAgYGRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmNgIChleGNsdXNpdmVseSB3aGVuIGBidXMtJmd0O2J1c3R5cGUgPT0gU1NCX0JVU1RZUEVfU1NCYCkKKiAgIGBpbmNsdWRlL2xpbnV4L2JjbWEvYmNtYS5oYAoqICAgYGluY2x1ZGUvbGludXgvc3NiL3NzYi5oYAoKQWxsIG9mIHRoZXNlIGFyZWFzIGFyZSBlaXRoZXIgaW5oZXJlbnRseSBNSVBTLXNwZWNpZmljIG9yIGFyZSBjb250aW5nZW50IG9uIHRoYXQgdmVyeSBzcGVjaWZpYyBCQ000N3h4IFNvQy4gQ29uc2lkZXJpbmcgb3VyIHRlc3RpbmcgaW5mcmFzdHJ1Y3R1cmUgcmV2b2x2ZXMgYXJvdW5kIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCB0aGUgY29kZSBwYXRocyB0b3VjaGVkIGJ5IHRoaXMgcGF0Y2ggYXJlIGZ1bmRhbWVudGFsbHkgdW5yZWFjaGFibGUuIFRoZXJlZm9yZSwgYmFzZWQgb24gdGhpcyBhbmFseXNpcywgSSYjMzk7bSBjb21mb3J0YWJsZSByZXR1cm5pbmcgV29ydGhGdXp6aW5nPWZhbHNlLiBUaGVyZSYjMzk7cyBubyB2YWx1ZSBpbiBleHBlbmRpbmcgcmVzb3VyY2VzIHRvIGFuYWx5emUgdGhpczsgaXQmIzM5O3MgYSBkZWFkIGVuZCBhcyBmYXIgYXMgb3VyIGN1cnJlbnQgdGVzdGluZyBjYXBhYmlsaXRpZXMgZ28uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAyOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJDTTQ3eHggYnV0dG9ucyBkcml2ZXIgYW5kIGFzc29jaWF0ZWQgQkNNQS9TU0IgR1BJTyBkcml2ZXJzIHRvIHVzZSBzb2Z0d2FyZSBub2RlcyBpbnN0ZWFkIG9mIHBsYXRmb3JtIGRhdGEuIFRoZXNlIGNoYW5nZXMgYXJlIHNwZWNpZmljIHRvIHRoZSBNSVBTIEJDTTQ3eHggYXJjaGl0ZWN0dXJlIGFuZCBpdHMgU29DIGJ1c2VzIChCQ01BX0hPU1RUWVBFX1NPQyBhbmQgU1NCX0JVU1RZUEVfU1NCKS4gU2luY2Ugc3l6a2FsbGVyIGRvZXMgbm90IGZ1enogTUlQUyBCQ000N3h4IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgdGhlc2UgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQkNNNDd4eCBidXR0b25zIGRyaXZlciBhbmQgYXNzb2NpYXRlZCBCQ01BL1NTQiBHUElPIGRyaXZlcnMgdG8gdXNlIHNvZnR3YXJlIG5vZGVzIGluc3RlYWQgb2YgcGxhdGZvcm0gZGF0YS4gVGhlc2UgY2hhbmdlcyBhcmUgc3BlY2lmaWMgdG8gdGhlIE1JUFMgQkNNNDd4eCBhcmNoaXRlY3R1cmUgYW5kIGl0cyBTb0MgYnVzZXMgKEJDTUFfSE9TVFRZUEVfU09DIGFuZCBTU0JfQlVTVFlQRV9TU0IpLiBTaW5jZSBzeXprYWxsZXIgZG9lcyBub3QgZnV6eiBNSVBTIEJDTTQ3eHggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMjo1NToxMC43NzE5MTQ2MTJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjM5NzY1NjM2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJDTTQ3eHggYnV0dG9ucyBkcml2ZXIgYW5kIGFzc29jaWF0ZWQgQkNNQS9TU0IgR1BJTyBkcml2ZXJzIHRvIHVzZSBzb2Z0d2FyZSBub2RlcyBpbnN0ZWFkIG9mIHBsYXRmb3JtIGRhdGEuIFRoZXNlIGNoYW5nZXMgYXJlIHNwZWNpZmljIHRvIHRoZSBNSVBTIEJDTTQ3eHggYXJjaGl0ZWN0dXJlIGFuZCBpdHMgU29DIGJ1c2VzIChCQ01BX0hPU1RUWVBFX1NPQyBhbmQgU1NCX0JVU1RZUEVfU1NCKS4gU2luY2Ugc3l6a2FsbGVyIGRvZXMgbm90IGZ1enogTUlQUyBCQ000N3h4IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgdGhlc2UgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMjo1NToxMC43NzE5MTkxMDJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MTA0OTkzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGY4Yzc5NTAyNTQzZWUyMTA0ZWE0MjA1MzcxOTVjODZmN2MzMDQyOTlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMDI6NTU6MDkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2JjbTQ3eHgvYnV0dG9ucy5jIGIvYXJjaC9taXBzL2JjbTQ3eHgvYnV0dG9ucy5jXFxuaW5kZXggNDY5OTRmOWJiODIxOWMuLjE1MWE0ZWUyODAzZjAyIDEwMDY0NFxcbi0tLSBhL2FyY2gvbWlwcy9iY200N3h4L2J1dHRvbnMuY1xcbisrKyBiL2FyY2gvbWlwcy9iY200N3h4L2J1dHRvbnMuY1xcbkBAIC0xLDkgKzEsMTQgQEBcXG4gLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gI2luY2x1ZGUgXFxcImJjbTQ3eHhfcHJpdmF0ZS5oXFxcIlxcbiBcXG4tI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lucHV0LmhcXHUwMDNlXFxuLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9ncGlvX2tleXMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFxcImxpbnV4L2Vyci5oXFxcIlxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvZ3Bpby9tYWNoaW5lLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9ncGlvL3Byb3BlcnR5LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9pbnB1dC1ldmVudC1jb2Rlcy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvaW50ZXJydXB0LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcXHUwMDNlXFxuK1xcbiAjaW5jbHVkZSBcXHUwMDNjYmNtNDd4eF9ib2FyZC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjYmNtNDd4eC5oXFx1MDAzZVxcbiBcXG5AQCAtMTEsMjkgKzE2LDM0IEBAXFxuICAqIERhdGFiYXNlXFxuICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4gXFxuLSNkZWZpbmUgQkNNNDdYWF9HUElPX0tFWShfZ3BpbywgX2NvZGUpXFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHR7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQuY29kZVxcdFxcdD0gX2NvZGUsXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQuZ3Bpb1xcdFxcdD0gX2dwaW8sXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQuYWN0aXZlX2xvd1xcdD0gMSxcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK3N0cnVjdCBiY200N3h4X2dwaW9fa2V5IHtcXG4rXFx0dTE2IGNvZGU7XFxuK1xcdHU4IHBpbjtcXG4rXFx0dTggZmxhZ3M7XFxuK307XFxuK1xcbisjZGVmaW5lIEJDTTQ3WFhfR1BJT19LRVkoX2dwaW8sIF9jb2RlKVxcdFxcdFxcdFxcXFxcXG4rXFx0e1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0LmNvZGVcXHQ9IF9jb2RlLFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0LnBpblxcdD0gX2dwaW8sXFx0XFx0XFx0XFxcXFxcbitcXHRcXHQuZmxhZ3NcXHQ9IEdQSU9fQUNUSVZFX0xPVyxcXHRcXHRcXFxcXFxuIFxcdH1cXG4gXFxuLSNkZWZpbmUgQkNNNDdYWF9HUElPX0tFWV9IKF9ncGlvLCBfY29kZSlcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdC5jb2RlXFx0XFx0PSBfY29kZSxcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdC5ncGlvXFx0XFx0PSBfZ3BpbyxcXHRcXHRcXHRcXHRcXFxcXFxuKyNkZWZpbmUgQkNNNDdYWF9HUElPX0tFWV9IKF9ncGlvLCBfY29kZSlcXHRcXHRcXFxcXFxuK1xcdHtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdC5jb2RlXFx0PSBfY29kZSxcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdC5waW5cXHQ9IF9ncGlvLFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0LmZsYWdzXFx0PSBHUElPX0FDVElWRV9ISUdILFxcdFxcdFxcXFxcXG4gXFx0fVxcbiBcXG4gLyogQXN1cyAqL1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuLWJjbTQ3eHhfYnV0dG9uc19hc3VzX3J0bjEwdVtdIF9faW5pdGNvbnN0ID0ge1xcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkgYmNtNDd4eF9idXR0b25zX2FzdXNfcnRuMTB1W10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoMjAsIEtFWV9XUFNfQlVUVE9OKSxcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSgyMSwgS0VZX1JFU1RBUlQpLFxcbiB9O1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuLWJjbTQ3eHhfYnV0dG9uc19hc3VzX3J0bjEyW10gX19pbml0Y29uc3QgPSB7XFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleSBiY200N3h4X2J1dHRvbnNfYXN1c19ydG4xMltdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDAsIEtFWV9XUFNfQlVUVE9OKSxcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSgxLCBLRVlfUkVTVEFSVCksXFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNCwgQlROXzApLCAvKiBSb3V0ZXIgbW9kZSAqL1xcbkBAIC00MSw3NCArNTEsNzMgQEAgYmNtNDd4eF9idXR0b25zX2FzdXNfcnRuMTJbXSBfX2luaXRjb25zdCA9IHtcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg2LCBCVE5fMiksIC8qIEFQIG1vZGUgKi9cXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbi1iY200N3h4X2J1dHRvbnNfYXN1c19ydG4xNltdIF9faW5pdGNvbnN0ID0ge1xcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkgYmNtNDd4eF9idXR0b25zX2FzdXNfcnRuMTZbXSBfX2luaXRjb25zdCA9IHtcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfV1BTX0JVVFRPTiksXFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoOCwgS0VZX1JFU1RBUlQpLFxcbiB9O1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfYXN1c19ydG42NnVbXSBfX2luaXRjb25zdCA9IHtcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksXFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoOSwgS0VZX1JFU1RBUlQpLFxcbiB9O1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfYXN1c193bDMwMGdbXSBfX2luaXRjb25zdCA9IHtcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsMzIwZ2VbXSBfX2luaXRjb25zdCA9IHtcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsMzMwZ2VbXSBfX2luaXRjb25zdCA9IHtcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSgyLCBLRVlfUkVTVEFSVCksXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwZ1tdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBnZFtdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBncHYxW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoMCwgS0VZX1JFU1RBUlQpLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9XUFNfQlVUVE9OKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBncHYyW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoMiwgS0VZX1JFU1RBUlQpLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDMsIEtFWV9XUFNfQlVUVE9OKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDB3W10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVlfSCg2LCBLRVlfUkVTVEFSVCksXFxuIFxcdEJDTTQ3WFhfR1BJT19LRVlfSCg3LCBLRVlfV1BTX0JVVFRPTiksXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTIwZ2NbXSBfX2luaXRjb25zdCA9IHtcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSgyLCBLRVlfUkVTVEFSVCksXFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoMywgS0VZX1dQU19CVVRUT04pLFxcbiB9O1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfYXN1c193bDUyMGd1W10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoMiwgS0VZX1JFU1RBUlQpLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDMsIEtFWV9XUFNfQlVUVE9OKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2FzdXNfd2w3MDBnZVtdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDAsIEtFWV9QT1dFUiksIC8qIEhhcmQgZGlzayBwb3dlciBzd2l0Y2ggKi9cXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksIC8qIEVaU2V0dXAgKi9cXG5AQCAtMTE2LDIxICsxMjUsMjEgQEAgYmNtNDd4eF9idXR0b25zX2FzdXNfd2w3MDBnZVtdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDcsIEtFWV9SRVNUQVJUKSwgLyogSGFyZCByZXNldCAqL1xcbiB9O1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfYXN1c193bGhkZFtdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuIC8qIEh1YXdlaSAqL1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfaHVhd2VpX2U5NzBbXSBfX2luaXRjb25zdCA9IHtcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXFxuIH07XFxuIFxcbiAvKiBCZWxraW4gKi9cXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2JlbGtpbl9mN2Q0MzAxW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDgsIEtFWV9XUFNfQlVUVE9OKSxcXG5AQCAtMTM4LDQ0ICsxNDcsNDQgQEAgYmNtNDd4eF9idXR0b25zX2JlbGtpbl9mN2Q0MzAxW10gX19pbml0Y29uc3QgPSB7XFxuIFxcbiAvKiBCdWZmYWxvICovXFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docjJfYTU0ZzU0W10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1JFU1RBUlQpLFxcbiB9O1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfYnVmZmFsb193aHJfZzEyNVtdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDAsIEtFWV9XUFNfQlVUVE9OKSxcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfUkVTVEFSVCksXFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNSwgQlROXzApLCAvKiBSb3V0ZXIgLyBBUCBtb2RlIHN3aXRjaCAqL1xcbiB9O1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfYnVmZmFsb193aHJfZzU0c1tdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDAsIEtFWV9XUFNfQlVUVE9OKSxcXG4gXFx0QkNNNDdYWF9HUElPX0tFWV9IKDQsIEtFWV9SRVNUQVJUKSxcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg1LCBCVE5fMCksIC8qIFJvdXRlciAvIEFQIG1vZGUgc3dpdGNoICovXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docl9ocF9nNTRbXSBfX2luaXRjb25zdCA9IHtcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSgwLCBLRVlfV1BTX0JVVFRPTiksXFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1JFU1RBUlQpLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDUsIEJUTl8wKSwgLyogUm91dGVyIC8gQVAgbW9kZSBzd2l0Y2ggKi9cXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd3pyX2czMDBuW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1JFU1RBUlQpLFxcbiB9O1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfYnVmZmFsb193enJfcnNfZzU0W10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoMCwgS0VZX1dQU19CVVRUT04pLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd3pyX3JzX2c1NGhwW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoMCwgS0VZX1dQU19CVVRUT04pLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9SRVNUQVJUKSxcXG5AQCAtMTgzLDIwICsxOTIsMjAgQEAgYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd3pyX3JzX2c1NGhwW10gX19pbml0Y29uc3QgPSB7XFxuIFxcbiAvKiBEZWxsICovXFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19kZWxsX3RtMjMwMFtdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDAsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuIC8qIEQtTGluayAqL1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfZGxpbmtfZGlyMTMwW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoMywgS0VZX1JFU1RBUlQpLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDcsIEtFWV9VTktOT1dOKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2RsaW5rX2RpcjMzMFtdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDMsIEtFWV9SRVNUQVJUKSxcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg3LCBLRVlfVU5LTk9XTiksXFxuQEAgLTIwNCwxMjcgKzIxMywxMjcgQEAgYmNtNDd4eF9idXR0b25zX2RsaW5rX2RpcjMzMFtdIF9faW5pdGNvbnN0ID0ge1xcbiBcXG4gLyogTGlua3N5cyAqL1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMTAwMHYxW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNSwgS0VZX1dQU19CVVRUT04pLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTEwMDB2MjFbXSBfX2luaXRjb25zdCA9IHtcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg5LCBLRVlfV1BTX0JVVFRPTiksXFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoMTAsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTIwMDB2MVtdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDUsIEtFWV9XUFNfQlVUVE9OKSxcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg4LCBLRVlfUkVTVEFSVCksXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UyNTAwdjNbXSBfX2luaXRjb25zdCA9IHtcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg5LCBLRVlfV1BTX0JVVFRPTiksXFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoMTAsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTMwMDB2MVtdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9XUFNfQlVUVE9OKSxcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UzMjAwdjFbXSBfX2luaXRjb25zdCA9IHtcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg1LCBLRVlfUkVTVEFSVCksXFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoOCwgS0VZX1dQU19CVVRUT04pLFxcbiB9O1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfbGlua3N5c19lNDIwMHYxW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTUwbnYxW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTUwbnYxMVtdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9XUFNfQlVUVE9OKSxcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDE2MG52MVtdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9XUFNfQlVUVE9OKSxcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDE2MG52M1tdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDUsIEtFWV9XUFNfQlVUVE9OKSxcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDMwMG5fdjFbXSBfX2luaXRjb25zdCA9IHtcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksXFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxcbiB9O1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMDBudjExW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1VOS05PV04pLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzEwbnYxW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDgsIEtFWV9VTktOT1dOKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzEwbl92MltdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDUsIEtFWV9XUFNfQlVUVE9OKSxcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDMyMG5fdjFbXSBfX2luaXRjb25zdCA9IHtcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg1LCBLRVlfV1BTX0JVVFRPTiksXFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoOCwgS0VZX1JFU1RBUlQpLFxcbiB9O1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQ1NGczZ3YyW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNSwgS0VZX1dJTUFYKSxcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDU0Z19nZW5lcmljW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NjEwbnYxW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDgsIEtFWV9XUFNfQlVUVE9OKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NjEwbnYyW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0c2w1NGdzW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcXG5AQCAtMzMyLDE1NCArMzQxLDE1NCBAQCBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnRzbDU0Z3NbXSBfX2luaXRjb25zdCA9IHtcXG4gXFxuIC8qIEx1eHVsICovXFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19sdXh1bF9hYnJfNDQwMF92MVtdID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDE0LCBLRVlfUkVTVEFSVCksXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMzEwX3YxW10gPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoMjAsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8xMjEwX3YxW10gPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoOCwgS0VZX1JFU1RBUlQpLFxcbiB9O1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfbHV4dWxfeGFwXzEyMzBfdjFbXSA9IHtcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg4LCBLRVlfUkVTVEFSVCksXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMTI0MF92MVtdID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDgsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8xNTAwX3YxW10gPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoMTQsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2x1eHVsX3hicl80NDAwX3YxW10gPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoMTQsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2x1eHVsX3h2d19wMzBfdjFbXSA9IHtcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSgyMCwgS0VZX1JFU1RBUlQpLFxcbiB9O1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfbHV4dWxfeHdyXzYwMF92MVtdID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDgsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2x1eHVsX3h3cl8xNzUwX3YxW10gPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoMTQsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuIC8qIE1pY3Jvc29mdCAqL1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfbWljcm9zb2Z0X25tNzAwW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNywgS0VZX1JFU1RBUlQpLFxcbiB9O1xcbiBcXG4gLyogTW90b3JvbGEgKi9cXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX21vdG9yb2xhX3dlODAwZ1tdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDAsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX21vdG9yb2xhX3dyODUwZ3BbXSBfX2luaXRjb25zdCA9IHtcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg1LCBLRVlfUkVTVEFSVCksXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19tb3Rvcm9sYV93cjg1MGd2MnYzW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNSwgS0VZX1JFU1RBUlQpLFxcbiB9O1xcbiBcXG4gLyogTmV0Z2VhciAqL1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl9yNjIwMF92MVtdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDIsIEtFWV9SRktJTEwpLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDMsIEtFWV9SRVNUQVJUKSxcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3I2MzAwX3YxW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxcbiB9O1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bjI1MDBycF92MVtdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDEyLCBLRVlfUkVTVEFSVCksXFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoMzEsIEtFWV9XUFNfQlVUVE9OKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjM0MDB2MVtdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9SRVNUQVJUKSxcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfV1BTX0JVVFRPTiksXFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoOCwgS0VZX1JGS0lMTCksXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duZHIzNDAwX3YzW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoMTIsIEtFWV9SRVNUQVJUKSxcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSgyMywgS0VZX1dQU19CVVRUT04pLFxcbiB9O1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bmRyMzcwMHYzW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoMiwgS0VZX1JGS0lMTCksXFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoMywgS0VZX1JFU1RBUlQpLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9XUFNfQlVUVE9OKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjQ1MDB2MVtdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9XUFNfQlVUVE9OKSxcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg1LCBLRVlfUkZLSUxMKSxcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3ducjEwMDBfdjNbXSBfX2luaXRjb25zdCA9IHtcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSgyLCBLRVlfV1BTX0JVVFRPTiksXFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoMywgS0VZX1JFU1RBUlQpLFxcbiB9O1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bnIzNTAwbHYxW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1JFU1RBUlQpLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9XUFNfQlVUVE9OKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25yMzUwMGx2MltdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9SRVNUQVJUKSxcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfV1BTX0JVVFRPTiksXFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoOCwgS0VZX1JGS0lMTCksXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3ducjgzNGJ2MltdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuIC8qIFNpbXBsZVRlY2ggKi9cXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX3NpbXBsZXRlY2hfc2ltcGxlc2hhcmVbXSBfX2luaXRjb25zdCA9IHtcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSgwLCBLRVlfUkVTVEFSVCksXFxuIH07XFxuQEAgLTQ4OCwzMSArNDk3LDk2IEBAIGJjbTQ3eHhfYnV0dG9uc19zaW1wbGV0ZWNoX3NpbXBsZXNoYXJlW10gX19pbml0Y29uc3QgPSB7XFxuICAqIEluaXRcXG4gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbiBcXG4tc3RhdGljIHN0cnVjdCBncGlvX2tleXNfcGxhdGZvcm1fZGF0YSBiY200N3h4X2J1dHRvbl9wZGF0YTtcXG4tXFxuLXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIGJjbTQ3eHhfYnV0dG9uc19ncGlvX2tleXMgPSB7XFxuLVxcdC5uYW1lID0gXFxcImdwaW8ta2V5c1xcXCIsXFxuLVxcdC5kZXYgPSB7XFxuLVxcdFxcdC5wbGF0Zm9ybV9kYXRhID0gXFx1MDAyNmJjbTQ3eHhfYnV0dG9uX3BkYXRhLFxcbitzdGF0aWMgaW50IF9faW5pdFxcbitiY200N3h4X2J1dHRvbnNfYWRkKGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5ICpidXR0b25zLCBpbnQgbmJ1dHRvbnMpXFxuK3tcXG4rXFx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjtcXG4rXFx0Y29uc3Qgc3RydWN0IHNvZnR3YXJlX25vZGUgKmdwaW9fc3dub2RlO1xcbitcXHRzdHJ1Y3QgcHJvcGVydHlfZW50cnkgKnA7XFxuK1xcdGludCBlcnJvcjtcXG4rXFx0aW50IGk7XFxuK1xcbitcXHRzd2l0Y2ggKGJjbTQ3eHhfYnVzX3R5cGUpIHtcXG4rI2lmZGVmIENPTkZJR19CQ000N1hYX0JDTUFcXG4rXFx0Y2FzZSBCQ000N1hYX0JVU19UWVBFX0JDTUE6XFxuK1xcdFxcdGdwaW9fc3dub2RlID0gXFx1MDAyNmJjbWFfZ3Bpb19zd25vZGU7XFxuK1xcdFxcdGJyZWFrO1xcbisjZW5kaWZcXG4rI2lmZGVmIENPTkZJR19CQ000N1hYX1NTQlxcbitcXHRjYXNlIEJDTTQ3WFhfQlVTX1RZUEVfU1NCOlxcbitcXHRcXHRncGlvX3N3bm9kZSA9IFxcdTAwMjZzc2JfZ3Bpb19zd25vZGU7XFxuK1xcdFxcdGJyZWFrO1xcbisjZW5kaWZcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuIFxcdH1cXG4tfTtcXG4gXFxuLS8qIENvcHkgZGF0YSBmcm9tIF9faW5pdGNvbnN0ICovXFxuLXN0YXRpYyBpbnQgX19pbml0IGJjbTQ3eHhfYnV0dG9uc19jb3B5KGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uICpidXR0b25zLFxcbi1cXHRcXHRcXHRcXHQgICAgICAgc2l6ZV90IG5idXR0b25zKVxcbi17XFxuLVxcdHNpemVfdCBzaXplID0gbmJ1dHRvbnMgKiBzaXplb2YoKmJ1dHRvbnMpO1xcbitcXHQvKiAxIG5vZGUgZm9yIGdwaW8ta2V5cyBkZXZpY2UsIDEgbm9kZSBmb3IgZWFjaCBidXR0b24sIDEgdGVybWluYXRvciAqL1xcbitcXHRjb25zdCBzdHJ1Y3Qgc29mdHdhcmVfbm9kZSAqKm5vZGVfZ3JvdXAgX19mcmVlKGtmcmVlKSA9XFxuK1xcdFxcdGtjYWxsb2MoMSArIG5idXR0b25zICsgMSwgc2l6ZW9mKCpub2RlX2dyb3VwKSwgR0ZQX0tFUk5FTCk7XFxuK1xcdGlmICghbm9kZV9ncm91cClcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbi1cXHRiY200N3h4X2J1dHRvbl9wZGF0YS5idXR0b25zID0ga21lbWR1cChidXR0b25zLCBzaXplLCBHRlBfS0VSTkVMKTtcXG4tXFx0aWYgKCFiY200N3h4X2J1dHRvbl9wZGF0YS5idXR0b25zKVxcbitcXHQvKiAxIGNvZGUgcHJvcGVydHksIDEgZ3BpbyBwcm9wZXJ0eSwgMSB0ZXJtaW5hdG9yICovXFxuK1xcdHN0cnVjdCBwcm9wZXJ0eV9lbnRyeSAqcHJvcHMgX19mcmVlKGtmcmVlKSA9XFxuK1xcdFxcdGtjYWxsb2MobmJ1dHRvbnMgKiAzLCBzaXplb2YoKnByb3BzKSwgR0ZQX0tFUk5FTCk7XFxuK1xcdGlmICghcHJvcHMpXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbi1cXHRiY200N3h4X2J1dHRvbl9wZGF0YS5uYnV0dG9ucyA9IG5idXR0b25zO1xcbiBcXG4rXFx0LyogMSBub2RlIGZvciBncGlvLWtleXMgZGV2aWNlLCAxIG5vZGUgZm9yIGVhY2ggYnV0dG9uICovXFxuK1xcdHN0cnVjdCBzb2Z0d2FyZV9ub2RlICpub2RlcyBfX2ZyZWUoa2ZyZWUpID1cXG4rXFx0XFx0a2NhbGxvYygxICsgbmJ1dHRvbnMsIHNpemVvZigqbm9kZXMpLCBHRlBfS0VSTkVMKTtcXG4rXFx0aWYgKCFub2RlcylcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcbitcXHRzdHJ1Y3Qgc29mdHdhcmVfbm9kZV9yZWZfYXJncyAqcmVmX2FyZ3MgX19mcmVlKGtmcmVlKSA9XFxuK1xcdFxcdGtjYWxsb2MobmJ1dHRvbnMsIHNpemVvZigqcmVmX2FyZ3MpLCBHRlBfS0VSTkVMKTtcXG4rXFx0aWYgKCFyZWZfYXJncylcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcbitcXHQvKiBncGlvLWtleXMgbm9kZSAqL1xcbitcXHRub2Rlc1swXS5uYW1lID0gXFxcImJjbTQ3eHgtZ3Bpby1idXR0b25zXFxcIjtcXG4rXFxuK1xcdHAgPSBwcm9wcztcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5idXR0b25zOyBpKyspIHtcXG4rXFx0XFx0Y29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkgKmJ1dHRvbiA9IFxcdTAwMjZidXR0b25zW2ldO1xcbitcXHRcXHRzdHJ1Y3Qgc29mdHdhcmVfbm9kZSAqbm9kZSA9IFxcdTAwMjZub2Rlc1sxICsgaV07XFxuK1xcdFxcdHN0cnVjdCBzb2Z0d2FyZV9ub2RlX3JlZl9hcmdzICpyZWYgPSBcXHUwMDI2cmVmX2FyZ3NbaV07XFxuK1xcbitcXHRcXHRub2RlLVxcdTAwM2VwYXJlbnQgPSBcXHUwMDI2bm9kZXNbMF07XFxuK1xcdFxcdG5vZGUtXFx1MDAzZXByb3BlcnRpZXMgPSBwO1xcbitcXG4rXFx0XFx0KnJlZiA9IFNPRlRXQVJFX05PREVfUkVGRVJFTkNFKGdwaW9fc3dub2RlLCBidXR0b24tXFx1MDAzZXBpbiwgYnV0dG9uLVxcdTAwM2VmbGFncyk7XFxuK1xcdFxcdCpwKysgPSBQUk9QRVJUWV9FTlRSWV9SRUYoXFxcImdwaW9zXFxcIiwgXFx1MDAyNnJlZl9hcmdzW2ldKTtcXG4rXFx0XFx0KnArKyA9IFBST1BFUlRZX0VOVFJZX1UzMihcXFwibGludXgsY29kZVxcXCIsIGJ1dHRvbi1cXHUwMDNlY29kZSk7XFxuK1xcdFxcdHArKztcXG4rXFx0fVxcbitcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5idXR0b25zICsgMTsgaSsrKVxcbitcXHRcXHRub2RlX2dyb3VwW2ldID0gXFx1MDAyNm5vZGVzW2ldO1xcbitcXG4rXFx0ZXJyb3IgPSBzb2Z0d2FyZV9ub2RlX3JlZ2lzdGVyX25vZGVfZ3JvdXAobm9kZV9ncm91cCk7XFxuK1xcdGlmIChlcnJvcilcXG4rXFx0XFx0cmV0dXJuIGVycm9yO1xcbitcXG4rXFx0cGRldiA9IHBsYXRmb3JtX2RldmljZV9yZWdpc3Rlcl9mdWxsKFxcdTAwMjYoc3RydWN0IHBsYXRmb3JtX2RldmljZV9pbmZvKXtcXG4rXFx0XFx0Lm5hbWUgPSBcXFwiZ3Bpby1rZXlzXFxcIixcXG4rXFx0XFx0LnN3bm9kZSA9IFxcdTAwMjZub2Rlc1swXSxcXG4rXFx0fSk7XFxuK1xcdGVycm9yID0gUFRSX0VSUl9PUl9aRVJPKHBkZXYpO1xcbitcXHRpZiAoZXJyb3IpIHtcXG4rXFx0XFx0c29mdHdhcmVfbm9kZV91bnJlZ2lzdGVyX25vZGVfZ3JvdXAobm9kZV9ncm91cCk7XFxuK1xcdFxcdHJldHVybiBlcnJvcjtcXG4rXFx0fVxcbitcXG4rXFx0cmV0YWluX2FuZF9udWxsX3B0cihwcm9wcyk7XFxuK1xcdHJldGFpbl9hbmRfbnVsbF9wdHIobm9kZXMpO1xcbitcXHRyZXRhaW5fYW5kX251bGxfcHRyKHJlZl9hcmdzKTtcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuLSNkZWZpbmUgYmNtNDd4eF9jb3B5X2JkYXRhKGRldl9idXR0b25zKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0YmNtNDd4eF9idXR0b25zX2NvcHkoZGV2X2J1dHRvbnMsIEFSUkFZX1NJWkUoZGV2X2J1dHRvbnMpKTtcXG4rI2RlZmluZSBiY200N3h4X2FkZF9iZGF0YShkZXZfYnV0dG9ucylcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdGJjbTQ3eHhfYnV0dG9uc19hZGQoZGV2X2J1dHRvbnMsIEFSUkFZX1NJWkUoZGV2X2J1dHRvbnMpKVxcbiBcXG4gaW50IF9faW5pdCBiY200N3h4X2J1dHRvbnNfcmVnaXN0ZXIodm9pZClcXG4ge1xcbkBAIC01MjEsNTIgKzU5NSw1MiBAQCBpbnQgX19pbml0IGJjbTQ3eHhfYnV0dG9uc19yZWdpc3Rlcih2b2lkKVxcbiBcXG4gXFx0c3dpdGNoIChib2FyZCkge1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQVNVU19SVE4xMFU6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c19ydG4xMHUpO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c19ydG4xMHUpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfUlROMTI6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c19ydG4xMik7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3J0bjEyKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9BU1VTX1JUTjE2Olxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfcnRuMTYpO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c19ydG4xNik7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQVNVU19SVE42NlU6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c19ydG42NnUpO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c19ydG42NnUpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0wzMDBHOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2wzMDBnKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2wzMDBnKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9BU1VTX1dMMzIwR0U6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDMyMGdlKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2wzMjBnZSk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQVNVU19XTDMzMEdFOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2wzMzBnZSk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsMzMwZ2UpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0w1MDBHOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBnKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBnKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9BU1VTX1dMNTAwR0Q6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDUwMGdkKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBnZCk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQVNVU19XTDUwMEdQVjE6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDUwMGdwdjEpO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDUwMGdwdjEpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0w1MDBHUFYyOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBncHYyKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBncHYyKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9BU1VTX1dMNTAwVzpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwdyk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwdyk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQVNVU19XTDUyMEdDOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MjBnYyk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTIwZ2MpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0w1MjBHVTpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTIwZ3UpO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDUyMGd1KTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9BU1VTX1dMNzAwR0U6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDcwMGdlKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w3MDBnZSk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQVNVU19XTEhERDpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsaGRkKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2xoZGQpO1xcbiBcXHRcXHRicmVhaztcXG4gXFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9CRUxLSU5fRjdEMzMwMTpcXG5AQCAtNTc0LDE5MyArNjQ4LDE5MyBAQCBpbnQgX19pbml0IGJjbTQ3eHhfYnV0dG9uc19yZWdpc3Rlcih2b2lkKVxcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQkVMS0lOX0Y3RDQzMDE6XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9CRUxLSU5fRjdENDMwMjpcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0JFTEtJTl9GN0Q0NDAxOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2JlbGtpbl9mN2Q0MzAxKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2JlbGtpbl9mN2Q0MzAxKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQlVGRkFMT19XSFIyX0E1NEc1NDpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docjJfYTU0ZzU0KTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd2hyMl9hNTRnNTQpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0JVRkZBTE9fV0hSX0cxMjU6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYnVmZmFsb193aHJfZzEyNSk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docl9nMTI1KTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9CVUZGQUxPX1dIUl9HNTRTOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd2hyX2c1NHMpO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYnVmZmFsb193aHJfZzU0cyk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQlVGRkFMT19XSFJfSFBfRzU0Olxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd2hyX2hwX2c1NCk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docl9ocF9nNTQpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0JVRkZBTE9fV1pSX0czMDBOOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd3pyX2czMDBuKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd3pyX2czMDBuKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9CVUZGQUxPX1daUl9SU19HNTQ6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYnVmZmFsb193enJfcnNfZzU0KTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd3pyX3JzX2c1NCk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQlVGRkFMT19XWlJfUlNfRzU0SFA6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYnVmZmFsb193enJfcnNfZzU0aHApO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYnVmZmFsb193enJfcnNfZzU0aHApO1xcbiBcXHRcXHRicmVhaztcXG4gXFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9ERUxMX1RNMjMwMDpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19kZWxsX3RtMjMwMCk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19kZWxsX3RtMjMwMCk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0RMSU5LX0RJUjEzMDpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19kbGlua19kaXIxMzApO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfZGxpbmtfZGlyMTMwKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9ETElOS19ESVIzMzA6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfZGxpbmtfZGlyMzMwKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2RsaW5rX2RpcjMzMCk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0hVQVdFSV9FOTcwOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2h1YXdlaV9lOTcwKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2h1YXdlaV9lOTcwKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19FMTAwMFYxOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTEwMDB2MSk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UxMDAwdjEpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfRTEwMDBWMjE6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMTAwMHYyMSk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UxMDAwdjIxKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX0UyMDAwVjE6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMjAwMHYxKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTIwMDB2MSk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19FMjUwMFYzOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTI1MDB2Myk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UyNTAwdjMpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfRTMwMDBWMTpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UzMDAwdjEpO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMzAwMHYxKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX0UzMjAwVjE6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMzIwMHYxKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTMyMDB2MSk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19FNDIwMFYxOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTQyMDB2MSk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2U0MjAwdjEpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfV1JUMTUwTlYxOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTUwbnYxKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTUwbnYxKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX1dSVDE1ME5WMTE6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQxNTBudjExKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTUwbnYxMSk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQxNjBOVjE6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQxNjBudjEpO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQxNjBudjEpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfV1JUMTYwTlYzOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTYwbnYzKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTYwbnYzKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX1dSVDMwME5fVjE6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMDBuX3YxKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzAwbl92MSk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQzMDBOVjExOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzAwbnYxMSk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDMwMG52MTEpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfV1JUMzEwTlYxOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzEwbnYxKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzEwbnYxKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX1dSVDMxME5WMjpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDMxMG5fdjIpO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMTBuX3YyKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX1dSVDMyME5fVjE6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMjBuX3YxKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzIwbl92MSk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQ1NEczR1YyOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NTRnM2d2Mik7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDU0ZzNndjIpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfV1JUNTRHX1RZUEVfMDEwMTpcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfV1JUNTRHX1RZUEVfMDQ2NzpcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfV1JUNTRHX1RZUEVfMDcwODpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDU0Z19nZW5lcmljKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NTRnX2dlbmVyaWMpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfV1JUNjEwTlYxOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NjEwbnYxKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NjEwbnYxKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX1dSVDYxME5WMjpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDYxMG52Mik7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDYxMG52Mik7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlRTTDU0R1M6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnRzbDU0Z3MpO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnRzbDU0Z3MpO1xcbiBcXHRcXHRicmVhaztcXG4gXFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9MVVhVTF9BQlJfNDQwMF9WMTpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF9hYnJfNDQwMF92MSk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF9hYnJfNDQwMF92MSk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTFVYVUxfWEFQXzMxMF9WMTpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMzEwX3YxKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8zMTBfdjEpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xVWFVMX1hBUF8xMjEwX1YxOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8xMjEwX3YxKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8xMjEwX3YxKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9MVVhVTF9YQVBfMTIzMF9WMTpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMTIzMF92MSk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMTIzMF92MSk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTFVYVUxfWEFQXzEyNDBfVjE6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfeGFwXzEyNDBfdjEpO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfeGFwXzEyNDBfdjEpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xVWFVMX1hBUF8xNTAwX1YxOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8xNTAwX3YxKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8xNTAwX3YxKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9MVVhVTF9YQlJfNDQwMF9WMTpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YnJfNDQwMF92MSk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YnJfNDQwMF92MSk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTFVYVUxfWFZXX1AzMF9WMTpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94dndfcDMwX3YxKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3h2d19wMzBfdjEpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xVWFVMX1hXUl82MDBfVjE6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfeHdyXzYwMF92MSk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94d3JfNjAwX3YxKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9MVVhVTF9YV1JfMTc1MF9WMTpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94d3JfMTc1MF92MSk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94d3JfMTc1MF92MSk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX01JQ1JPU09GVF9NTjcwMDpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19taWNyb3NvZnRfbm03MDApO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbWljcm9zb2Z0X25tNzAwKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTU9UT1JPTEFfV0U4MDBHOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX21vdG9yb2xhX3dlODAwZyk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19tb3Rvcm9sYV93ZTgwMGcpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX01PVE9ST0xBX1dSODUwR1A6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbW90b3JvbGFfd3I4NTBncCk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19tb3Rvcm9sYV93cjg1MGdwKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9NT1RPUk9MQV9XUjg1MEdWMlYzOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX21vdG9yb2xhX3dyODUwZ3YydjMpO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbW90b3JvbGFfd3I4NTBndjJ2Myk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX05FVEdFQVJfUjYyMDBfVjE6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl9yNjIwMF92MSk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3I2MjAwX3YxKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9ORVRHRUFSX1I2MzAwX1YxOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfcjYzMDBfdjEpO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl9yNjMwMF92MSk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9XTjI1MDBSUF9WMTpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duMjUwMHJwX3YxKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd24yNTAwcnBfdjEpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX05FVEdFQVJfV05EUjM0MDBWMTpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duZHIzNDAwdjEpO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bmRyMzQwMHYxKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9ORVRHRUFSX1dORFIzNDAwX1YzOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjM0MDBfdjMpO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bmRyMzQwMF92Myk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9XTkRSMzcwMFYzOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjM3MDB2Myk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duZHIzNzAwdjMpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX05FVEdFQVJfV05EUjQ1MDBWMTpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duZHI0NTAwdjEpO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bmRyNDUwMHYxKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9ORVRHRUFSX1dOUjEwMDBfVjM6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bnIxMDAwX3YzKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25yMTAwMF92Myk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9XTlIzNTAwTDpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3ducjM1MDBsdjEpO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bnIzNTAwbHYxKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9ORVRHRUFSX1dOUjM1MDBMX1YyOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25yMzUwMGx2Mik7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3ducjM1MDBsdjIpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX05FVEdFQVJfV05SODM0QlYyOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25yODM0YnYyKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25yODM0YnYyKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfU0lNUExFVEVDSF9TSU1QTEVTSEFSRTpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19zaW1wbGV0ZWNoX3NpbXBsZXNoYXJlKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX3NpbXBsZXRlY2hfc2ltcGxlc2hhcmUpO1xcbiBcXHRcXHRicmVhaztcXG4gXFxuIFxcdGRlZmF1bHQ6XFxuQEAgLTc2OSwxMyArODQzLDcgQEAgaW50IF9faW5pdCBiY200N3h4X2J1dHRvbnNfcmVnaXN0ZXIodm9pZClcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKGVycilcXG4tXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuLVxcbi1cXHRlcnIgPSBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoXFx1MDAyNmJjbTQ3eHhfYnV0dG9uc19ncGlvX2tleXMpO1xcbi1cXHRpZiAoZXJyKSB7XFxuLVxcdFxcdHByX2VycihcXFwiRmFpbGVkIHRvIHJlZ2lzdGVyIHBsYXRmb3JtIGRldmljZTogJWRcXFxcblxcXCIsIGVycik7XFxuIFxcdFxcdHJldHVybiBlcnI7XFxuLVxcdH1cXG4gXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmNtYS9kcml2ZXJfZ3Bpby5jIGIvZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmNcXG5pbmRleCA2NThjN2UyYWM4YmY2MS4uZWE0NTIyMmYyZmEwZmMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmNcXG4rKysgYi9kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uY1xcbkBAIC0xOSw2ICsxOSwxMSBAQFxcbiBcXG4gI2RlZmluZSBCQ01BX0dQSU9fTUFYX1BJTlNcXHQzMlxcbiBcXG4rY29uc3Qgc3RydWN0IHNvZnR3YXJlX25vZGUgYmNtYV9ncGlvX3N3bm9kZSA9IHtcXG4rXFx0Lm5hbWUgPSBcXFwiYmNtYS1ncGlvXFxcIixcXG4rfTtcXG4rRVhQT1JUX1NZTUJPTF9HUEwoYmNtYV9ncGlvX3N3bm9kZSk7XFxuK1xcbiBzdGF0aWMgaW50IGJjbWFfZ3Bpb19nZXRfdmFsdWUoc3RydWN0IGdwaW9fY2hpcCAqY2hpcCwgdW5zaWduZWQgZ3BpbylcXG4ge1xcbiBcXHRzdHJ1Y3QgYmNtYV9kcnZfY2MgKmNjID0gZ3Bpb2NoaXBfZ2V0X2RhdGEoY2hpcCk7XFxuQEAgLTE5MCw3ICsxOTUsMjAgQEAgaW50IGJjbWFfZ3Bpb19pbml0KHN0cnVjdCBiY21hX2Rydl9jYyAqY2MpXFxuIFxcdGNoaXAtXFx1MDAzZWRpcmVjdGlvbl9pbnB1dFxcdD0gYmNtYV9ncGlvX2RpcmVjdGlvbl9pbnB1dDtcXG4gXFx0Y2hpcC1cXHUwMDNlZGlyZWN0aW9uX291dHB1dFxcdD0gYmNtYV9ncGlvX2RpcmVjdGlvbl9vdXRwdXQ7XFxuIFxcdGNoaXAtXFx1MDAzZXBhcmVudFxcdFxcdD0gYnVzLVxcdTAwM2VkZXY7XFxuLVxcdGNoaXAtXFx1MDAzZWZ3bm9kZVxcdFxcdD0gZGV2X2Z3bm9kZShcXHUwMDI2Y2MtXFx1MDAzZWNvcmUtXFx1MDAzZWRldik7XFxuK1xcbitcXHQvKlxcbitcXHQgKiBSZWdpc3RlciBzb2Z0d2FyZSBub2RlIG9ubHkgZm9yIHRoZSBob3N0IFNvQyBidXMsIHVubGVzcyB0aGVyZSBpc1xcbitcXHQgKiBhbHJlYWR5IGEgZmlybXdhcmUgbm9kZSBhc3NpZ25lZC4gVGhlcmUgaXMgb25seSBvbmUgU29DIGluc3RhbmNlXFxuK1xcdCAqIGluIHRoZSBzeXN0ZW0sIHNvIHRoZXJlIGFyZSBubyBjb25jZXJucyB3aXRoIHJlZ2lzdHJhdGlvbiBjb25mbGljdHMuXFxuK1xcdCAqL1xcbitcXHRpZiAoYnVzLVxcdTAwM2Vob3N0dHlwZSA9PSBCQ01BX0hPU1RUWVBFX1NPQyBcXHUwMDI2XFx1MDAyNiAhZGV2X2Z3bm9kZShcXHUwMDI2Y2MtXFx1MDAzZWNvcmUtXFx1MDAzZWRldikpIHtcXG4rXFx0XFx0ZXJyID0gc29mdHdhcmVfbm9kZV9yZWdpc3RlcihcXHUwMDI2YmNtYV9ncGlvX3N3bm9kZSk7XFxuK1xcdFxcdGlmIChlcnIpXFxuK1xcdFxcdFxcdHJldHVybiBlcnI7XFxuK1xcdFxcdGNoaXAtXFx1MDAzZWZ3bm9kZSA9IHNvZnR3YXJlX25vZGVfZndub2RlKFxcdTAwMjZiY21hX2dwaW9fc3dub2RlKTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0Y2hpcC1cXHUwMDNlZndub2RlID0gZGV2X2Z3bm9kZShcXHUwMDI2Y2MtXFx1MDAzZWNvcmUtXFx1MDAzZWRldik7XFxuK1xcdH1cXG4gXFxuIFxcdHN3aXRjaCAoYnVzLVxcdTAwM2VjaGlwaW5mby5pZCkge1xcbiBcXHRjYXNlIEJDTUFfQ0hJUF9JRF9CQ000NzA3OlxcbkBAIC0yMTksMjAgKzIzNywzMyBAQCBpbnQgYmNtYV9ncGlvX2luaXQoc3RydWN0IGJjbWFfZHJ2X2NjICpjYylcXG4gXFxuIFxcdGVyciA9IGJjbWFfZ3Bpb19pcnFfaW5pdChjYyk7XFxuIFxcdGlmIChlcnIpXFxuLVxcdFxcdHJldHVybiBlcnI7XFxuK1xcdFxcdGdvdG8gZXJyX3VucmVnaXN0ZXJfc3dub2RlO1xcbiBcXG4gXFx0ZXJyID0gZ3Bpb2NoaXBfYWRkX2RhdGEoY2hpcCwgY2MpO1xcbi1cXHRpZiAoZXJyKSB7XFxuLVxcdFxcdGJjbWFfZ3Bpb19pcnFfZXhpdChjYyk7XFxuLVxcdFxcdHJldHVybiBlcnI7XFxuLVxcdH1cXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0Z290byBlcnJfaXJxX2V4aXQ7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4rXFxuK2Vycl9pcnFfZXhpdDpcXG4rXFx0YmNtYV9ncGlvX2lycV9leGl0KGNjKTtcXG4rZXJyX3VucmVnaXN0ZXJfc3dub2RlOlxcbitcXHRpZiAoYnVzLVxcdTAwM2Vob3N0dHlwZSA9PSBCQ01BX0hPU1RUWVBFX1NPQyBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgY2hpcC1cXHUwMDNlZndub2RlIFxcdTAwMjZcXHUwMDI2IGlzX3NvZnR3YXJlX25vZGUoY2hpcC1cXHUwMDNlZndub2RlKSkge1xcbitcXHRcXHRzb2Z0d2FyZV9ub2RlX3VucmVnaXN0ZXIoXFx1MDAyNmJjbWFfZ3Bpb19zd25vZGUpO1xcbitcXHRcXHRjaGlwLVxcdTAwM2Vmd25vZGUgPSBOVUxMO1xcbitcXHR9XFxuK1xcdHJldHVybiBlcnI7XFxuIH1cXG4gXFxuIGludCBiY21hX2dwaW9fdW5yZWdpc3RlcihzdHJ1Y3QgYmNtYV9kcnZfY2MgKmNjKVxcbiB7XFxuIFxcdGJjbWFfZ3Bpb19pcnFfZXhpdChjYyk7XFxuIFxcdGdwaW9jaGlwX3JlbW92ZShcXHUwMDI2Y2MtXFx1MDAzZWdwaW8pO1xcbitcXHRpZiAoY2MtXFx1MDAzZWNvcmUtXFx1MDAzZWJ1cy1cXHUwMDNlaG9zdHR5cGUgPT0gQkNNQV9IT1NUVFlQRV9TT0MgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIGNjLVxcdTAwM2VncGlvLmZ3bm9kZSBcXHUwMDI2XFx1MDAyNiBpc19zb2Z0d2FyZV9ub2RlKGNjLVxcdTAwM2VncGlvLmZ3bm9kZSkpIHtcXG4rXFx0XFx0c29mdHdhcmVfbm9kZV91bnJlZ2lzdGVyKFxcdTAwMjZiY21hX2dwaW9fc3dub2RlKTtcXG4rXFx0XFx0Y2MtXFx1MDAzZWdwaW8uZndub2RlID0gTlVMTDtcXG4rXFx0fVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jIGIvZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uY1xcbmluZGV4IDkwNTY1N2M5MjViY2ViLi44NzkyMjQ3OTk0NmNiNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jXFxuKysrIGIvZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uY1xcbkBAIC0xNSw4ICsxNSwxNCBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvaW50ZXJydXB0LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9pcnFkb21haW4uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2V4cG9ydC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcHJvcGVydHkuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NzYi9zc2IuaFxcdTAwM2VcXG4gXFxuK2NvbnN0IHN0cnVjdCBzb2Z0d2FyZV9ub2RlIHNzYl9ncGlvX3N3bm9kZSA9IHtcXG4rXFx0Lm5hbWUgPSBcXFwic3NiLWdwaW9cXFwiLFxcbit9O1xcbitFWFBPUlRfU1lNQk9MX0dQTChzc2JfZ3Bpb19zd25vZGUpO1xcbitcXG4gXFxuIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgKiBTaGFyZWRcXG5AQCAtMjMyLDYgKzIzOCw4IEBAIHN0YXRpYyBpbnQgc3NiX2dwaW9fY2hpcGNvX2luaXQoc3RydWN0IHNzYl9idXMgKmJ1cylcXG4gXFx0Y2hpcC1cXHUwMDNldG9faXJxXFx0XFx0PSBzc2JfZ3Bpb190b19pcnE7XFxuICNlbmRpZlxcbiBcXHRjaGlwLVxcdTAwM2VuZ3Bpb1xcdFxcdD0gMTY7XFxuK1xcdGlmIChidXMtXFx1MDAzZWJ1c3R5cGUgPT0gU1NCX0JVU1RZUEVfU1NCKVxcbitcXHRcXHRjaGlwLVxcdTAwM2Vmd25vZGVcXHQ9IHNvZnR3YXJlX25vZGVfZndub2RlKFxcdTAwMjZzc2JfZ3Bpb19zd25vZGUpO1xcbiBcXHQvKiBUaGVyZSBpcyBqdXN0IG9uZSBTb0MgaW4gb25lIGRldmljZSBhbmQgaXRzIEdQSU8gYWRkcmVzc2VzIHNob3VsZCBiZVxcbiBcXHQgKiBkZXRlcm1pbmlzdGljIHRvIGFkZHJlc3MgdGhlbSBtb3JlIGVhc2lseS4gVGhlIG90aGVyIGJ1c2VzIGNvdWxkIGdldFxcbiBcXHQgKiBhIHJhbmRvbSBiYXNlIG51bWJlci5cXG5AQCAtNDMzLDEwICs0NDEsMTIgQEAgc3RhdGljIGludCBzc2JfZ3Bpb19leHRpZl9pbml0KHN0cnVjdCBzc2JfYnVzICpidXMpXFxuIFxcdCAqIGRldGVybWluaXN0aWMgdG8gYWRkcmVzcyB0aGVtIG1vcmUgZWFzaWx5LiBUaGUgb3RoZXIgYnVzZXMgY291bGQgZ2V0XFxuIFxcdCAqIGEgcmFuZG9tIGJhc2UgbnVtYmVyLlxcbiBcXHQgKi9cXG4tXFx0aWYgKGJ1cy1cXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpXFxuLVxcdFxcdGNoaXAtXFx1MDAzZWJhc2VcXHRcXHQ9IDA7XFxuLVxcdGVsc2VcXG4tXFx0XFx0Y2hpcC1cXHUwMDNlYmFzZVxcdFxcdD0gLTE7XFxuK1xcdGlmIChidXMtXFx1MDAzZWJ1c3R5cGUgPT0gU1NCX0JVU1RZUEVfU1NCKSB7XFxuK1xcdFxcdGNoaXAtXFx1MDAzZWJhc2VcXHQ9IDA7XFxuK1xcdFxcdGNoaXAtXFx1MDAzZWZ3bm9kZVxcdD0gc29mdHdhcmVfbm9kZV9md25vZGUoXFx1MDAyNnNzYl9ncGlvX3N3bm9kZSk7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdGNoaXAtXFx1MDAzZWJhc2VcXHQ9IC0xO1xcbitcXHR9XFxuIFxcbiBcXHRlcnIgPSBzc2JfZ3Bpb19pcnFfZXh0aWZfZG9tYWluX2luaXQoYnVzKTtcXG4gXFx0aWYgKGVycilcXG5AQCAtNDY0LDExICs0NzQsMzMgQEAgc3RhdGljIGludCBzc2JfZ3Bpb19leHRpZl9pbml0KHN0cnVjdCBzc2JfYnVzICpidXMpXFxuIFxcbiBpbnQgc3NiX2dwaW9faW5pdChzdHJ1Y3Qgc3NiX2J1cyAqYnVzKVxcbiB7XFxuK1xcdGludCBlcnIgPSAwO1xcbitcXG4rXFx0LypcXG4rXFx0ICogUmVnaXN0ZXIgc29mdHdhcmUgbm9kZSBvbmx5IGZvciB0aGUgaG9zdCBTb0MgYnVzLiBUaGVyZSBpcyBvbmx5XFxuK1xcdCAqIG9uZSBTb0MgaW5zdGFuY2UgaW4gdGhlIHN5c3RlbSwgc28gdGhlcmUgYXJlIG5vIGNvbmNlcm5zIHdpdGhcXG4rXFx0ICogcmVnaXN0cmF0aW9uIGNvbmZsaWN0cy5cXG4rXFx0ICovXFxuK1xcdGlmIChidXMtXFx1MDAzZWJ1c3R5cGUgPT0gU1NCX0JVU1RZUEVfU1NCKSB7XFxuK1xcdFxcdGVyciA9IHNvZnR3YXJlX25vZGVfcmVnaXN0ZXIoXFx1MDAyNnNzYl9ncGlvX3N3bm9kZSk7XFxuK1xcdFxcdGlmIChlcnIpXFxuK1xcdFxcdFxcdHJldHVybiBlcnI7XFxuK1xcdH1cXG4rXFxuIFxcdGlmIChzc2JfY2hpcGNvX2F2YWlsYWJsZShcXHUwMDI2YnVzLVxcdTAwM2VjaGlwY28pKVxcbi1cXHRcXHRyZXR1cm4gc3NiX2dwaW9fY2hpcGNvX2luaXQoYnVzKTtcXG4rXFx0XFx0ZXJyID0gc3NiX2dwaW9fY2hpcGNvX2luaXQoYnVzKTtcXG4gXFx0ZWxzZSBpZiAoc3NiX2V4dGlmX2F2YWlsYWJsZShcXHUwMDI2YnVzLVxcdTAwM2VleHRpZikpXFxuLVxcdFxcdHJldHVybiBzc2JfZ3Bpb19leHRpZl9pbml0KGJ1cyk7XFxuLVxcdHJldHVybiAtMTtcXG4rXFx0XFx0ZXJyID0gc3NiX2dwaW9fZXh0aWZfaW5pdChidXMpO1xcbitcXHRlbHNlXFxuK1xcdFxcdGVyciA9IC1FTk9ERVY7XFxuK1xcbitcXHRpZiAoZXJyKSB7XFxuK1xcdFxcdGlmIChidXMtXFx1MDAzZWJ1c3R5cGUgPT0gU1NCX0JVU1RZUEVfU1NCKVxcbitcXHRcXHRcXHRzb2Z0d2FyZV9ub2RlX3VucmVnaXN0ZXIoXFx1MDAyNnNzYl9ncGlvX3N3bm9kZSk7XFxuK1xcdFxcdHJldHVybiBlcnI7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiAwO1xcbiB9XFxuIFxcbiBpbnQgc3NiX2dwaW9fdW5yZWdpc3RlcihzdHJ1Y3Qgc3NiX2J1cyAqYnVzKVxcbkBAIC00NzYsNiArNTA4LDggQEAgaW50IHNzYl9ncGlvX3VucmVnaXN0ZXIoc3RydWN0IHNzYl9idXMgKmJ1cylcXG4gXFx0aWYgKHNzYl9jaGlwY29fYXZhaWxhYmxlKFxcdTAwMjZidXMtXFx1MDAzZWNoaXBjbykgfHxcXG4gXFx0ICAgIHNzYl9leHRpZl9hdmFpbGFibGUoXFx1MDAyNmJ1cy1cXHUwMDNlZXh0aWYpKSB7XFxuIFxcdFxcdGdwaW9jaGlwX3JlbW92ZShcXHUwMDI2YnVzLVxcdTAwM2VncGlvKTtcXG4rXFx0XFx0aWYgKGJ1cy1cXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpXFxuK1xcdFxcdFxcdHNvZnR3YXJlX25vZGVfdW5yZWdpc3RlcihcXHUwMDI2c3NiX2dwaW9fc3dub2RlKTtcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcdH1cXG4gXFx0cmV0dXJuIC0xO1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2JjbWEvYmNtYS5oIGIvaW5jbHVkZS9saW51eC9iY21hL2JjbWEuaFxcbmluZGV4IGYwMmNiMzkwOTM3NWUwLi4xN2ZjNTAxOTAwMTRlOSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2JjbWEvYmNtYS5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9iY21hL2JjbWEuaFxcbkBAIC00ODYsNCArNDg2LDYgQEAgZXh0ZXJuIHUzMiBiY21hX2NvcmVfZG1hX3RyYW5zbGF0aW9uKHN0cnVjdCBiY21hX2RldmljZSAqY29yZSk7XFxuIFxcbiBleHRlcm4gdW5zaWduZWQgaW50IGJjbWFfY29yZV9pcnEoc3RydWN0IGJjbWFfZGV2aWNlICpjb3JlLCBpbnQgbnVtKTtcXG4gXFxuK2V4dGVybiBjb25zdCBzdHJ1Y3Qgc29mdHdhcmVfbm9kZSBiY21hX2dwaW9fc3dub2RlO1xcbitcXG4gI2VuZGlmIC8qIExJTlVYX0JDTUFfSF8gKi9cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zc2Ivc3NiLmggYi9pbmNsdWRlL2xpbnV4L3NzYi9zc2IuaFxcbmluZGV4IDdmZWU5YWZhOTQ1ODhiLi42N2NiNjZmNmY1ZWQ2ZCAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L3NzYi9zc2IuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvc3NiL3NzYi5oXFxuQEAgLTY3MSw0ICs2NzEsNiBAQCBpbnQgc3NiX3BjaWJpb3NfcGxhdF9kZXZfaW5pdChzdHJ1Y3QgcGNpX2RldiAqZGV2KTtcXG4gaW50IHNzYl9wY2liaW9zX21hcF9pcnEoY29uc3Qgc3RydWN0IHBjaV9kZXYgKmRldiwgdTggc2xvdCwgdTggcGluKTtcXG4gI2VuZGlmIC8qIENPTkZJR19TU0JfRU1CRURERUQgKi9cXG4gXFxuK2V4dGVybiBjb25zdCBzdHJ1Y3Qgc29mdHdhcmVfbm9kZSBzc2JfZ3Bpb19zd25vZGU7XFxuK1xcbiAjZW5kaWYgLyogTElOVVhfU1NCX0hfICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAyOjU1OjExLjM2MzczODM2M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU4MDU4MjYyOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCQ000N3h4IGJ1dHRvbnMgZHJpdmVyIGFuZCBhc3NvY2lhdGVkIEJDTUEvU1NCIEdQSU8gZHJpdmVycyB0byB1c2Ugc29mdHdhcmUgbm9kZXMgaW5zdGVhZCBvZiBwbGF0Zm9ybSBkYXRhLiBUaGVzZSBjaGFuZ2VzIGFyZSBzcGVjaWZpYyB0byB0aGUgTUlQUyBCQ000N3h4IGFyY2hpdGVjdHVyZSBhbmQgaXRzIFNvQyBidXNlcyAoQkNNQV9IT1NUVFlQRV9TT0MgYW5kIFNTQl9CVVNUWVBFX1NTQikuIFNpbmNlIHN5emthbGxlciBkb2VzIG5vdCBmdXp6IE1JUFMgQkNNNDd4eCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmOGM3OTUwMjU0M2VlMjEwNGVhNDIwNTM3MTk1Yzg2ZjdjMzA0Mjk5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMDI6NTU6MDkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvYmNtNDd4eC9idXR0b25zLmMgYi9hcmNoL21pcHMvYmNtNDd4eC9idXR0b25zLmNcbmluZGV4IDQ2OTk0ZjliYjgyMTljLi4xNTFhNGVlMjgwM2YwMiAxMDA2NDRcbi0tLSBhL2FyY2gvbWlwcy9iY200N3h4L2J1dHRvbnMuY1xuKysrIGIvYXJjaC9taXBzL2JjbTQ3eHgvYnV0dG9ucy5jXG5AQCAtMSw5ICsxLDE0IEBAXG4gLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAjaW5jbHVkZSBcImJjbTQ3eHhfcHJpdmF0ZS5oXCJcbiBcbi0jaW5jbHVkZSBcdTAwM2NsaW51eC9pbnB1dC5oXHUwMDNlXG4tI2luY2x1ZGUgXHUwMDNjbGludXgvZ3Bpb19rZXlzLmhcdTAwM2VcbisjaW5jbHVkZSBcImxpbnV4L2Vyci5oXCJcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9ncGlvL21hY2hpbmUuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2dwaW8vcHJvcGVydHkuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2lucHV0LWV2ZW50LWNvZGVzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pbnRlcnJ1cHQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcHJvcGVydHkuaFx1MDAzZVxuK1xuICNpbmNsdWRlIFx1MDAzY2JjbTQ3eHhfYm9hcmQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2JjbTQ3eHguaFx1MDAzZVxuIFxuQEAgLTExLDI5ICsxNiwzNCBAQFxuICAqIERhdGFiYXNlXG4gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuIFxuLSNkZWZpbmUgQkNNNDdYWF9HUElPX0tFWShfZ3BpbywgX2NvZGUpXHRcdFx0XHRcdFxcXG4tXHR7XHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRcdC5jb2RlXHRcdD0gX2NvZGUsXHRcdFx0XHRcXFxuLVx0XHQuZ3Bpb1x0XHQ9IF9ncGlvLFx0XHRcdFx0XFxcbi1cdFx0LmFjdGl2ZV9sb3dcdD0gMSxcdFx0XHRcdFx0XFxcbitzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleSB7XG4rXHR1MTYgY29kZTtcbitcdHU4IHBpbjtcbitcdHU4IGZsYWdzO1xuK307XG4rXG4rI2RlZmluZSBCQ000N1hYX0dQSU9fS0VZKF9ncGlvLCBfY29kZSlcdFx0XHRcXFxuK1x0e1x0XHRcdFx0XHRcdFxcXG4rXHRcdC5jb2RlXHQ9IF9jb2RlLFx0XHRcdFxcXG4rXHRcdC5waW5cdD0gX2dwaW8sXHRcdFx0XFxcbitcdFx0LmZsYWdzXHQ9IEdQSU9fQUNUSVZFX0xPVyxcdFx0XFxcbiBcdH1cbiBcbi0jZGVmaW5lIEJDTTQ3WFhfR1BJT19LRVlfSChfZ3BpbywgX2NvZGUpXHRcdFx0XHRcXFxuLVx0e1x0XHRcdFx0XHRcdFx0XHRcXFxuLVx0XHQuY29kZVx0XHQ9IF9jb2RlLFx0XHRcdFx0XFxcbi1cdFx0LmdwaW9cdFx0PSBfZ3BpbyxcdFx0XHRcdFxcXG4rI2RlZmluZSBCQ000N1hYX0dQSU9fS0VZX0goX2dwaW8sIF9jb2RlKVx0XHRcXFxuK1x0e1x0XHRcdFx0XHRcdFxcXG4rXHRcdC5jb2RlXHQ9IF9jb2RlLFx0XHRcdFxcXG4rXHRcdC5waW5cdD0gX2dwaW8sXHRcdFx0XFxcbitcdFx0LmZsYWdzXHQ9IEdQSU9fQUNUSVZFX0hJR0gsXHRcdFxcXG4gXHR9XG4gXG4gLyogQXN1cyAqL1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuLWJjbTQ3eHhfYnV0dG9uc19hc3VzX3J0bjEwdVtdIF9faW5pdGNvbnN0ID0ge1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleSBiY200N3h4X2J1dHRvbnNfYXN1c19ydG4xMHVbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMjAsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMjEsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuLWJjbTQ3eHhfYnV0dG9uc19hc3VzX3J0bjEyW10gX19pbml0Y29uc3QgPSB7XG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5IGJjbTQ3eHhfYnV0dG9uc19hc3VzX3J0bjEyW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDAsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMSwgS0VZX1JFU1RBUlQpLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg0LCBCVE5fMCksIC8qIFJvdXRlciBtb2RlICovXG5AQCAtNDEsNzQgKzUxLDczIEBAIGJjbTQ3eHhfYnV0dG9uc19hc3VzX3J0bjEyW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDYsIEJUTl8yKSwgLyogQVAgbW9kZSAqL1xuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4tYmNtNDd4eF9idXR0b25zX2FzdXNfcnRuMTZbXSBfX2luaXRjb25zdCA9IHtcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkgYmNtNDd4eF9idXR0b25zX2FzdXNfcnRuMTZbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg4LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfYXN1c19ydG42NnVbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg5LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfYXN1c193bDMwMGdbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2FzdXNfd2wzMjBnZVtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfYXN1c193bDMzMGdlW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDIsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwZ1tdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfYXN1c193bDUwMGdkW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwZ3B2MVtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgwLCBLRVlfUkVTVEFSVCksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9XUFNfQlVUVE9OKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwZ3B2MltdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgyLCBLRVlfUkVTVEFSVCksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDMsIEtFWV9XUFNfQlVUVE9OKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwd1tdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWV9IKDYsIEtFWV9SRVNUQVJUKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVlfSCg3LCBLRVlfV1BTX0JVVFRPTiksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfYXN1c193bDUyMGdjW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDIsIEtFWV9SRVNUQVJUKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMywgS0VZX1dQU19CVVRUT04pLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MjBndVtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgyLCBLRVlfUkVTVEFSVCksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDMsIEtFWV9XUFNfQlVUVE9OKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNzAwZ2VbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMCwgS0VZX1BPV0VSKSwgLyogSGFyZCBkaXNrIHBvd2VyIHN3aXRjaCAqL1xuIFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksIC8qIEVaU2V0dXAgKi9cbkBAIC0xMTYsMjEgKzEyNSwyMSBAQCBiY200N3h4X2J1dHRvbnNfYXN1c193bDcwMGdlW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDcsIEtFWV9SRVNUQVJUKSwgLyogSGFyZCByZXNldCAqL1xuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2FzdXNfd2xoZGRbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4gLyogSHVhd2VpICovXG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2h1YXdlaV9lOTcwW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuIC8qIEJlbGtpbiAqL1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19iZWxraW5fZjdkNDMwMVtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDgsIEtFWV9XUFNfQlVUVE9OKSxcbkBAIC0xMzgsNDQgKzE0Nyw0NCBAQCBiY200N3h4X2J1dHRvbnNfYmVsa2luX2Y3ZDQzMDFbXSBfX2luaXRjb25zdCA9IHtcbiBcbiAvKiBCdWZmYWxvICovXG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd2hyMl9hNTRnNTRbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd2hyX2cxMjVbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMCwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfUkVTVEFSVCksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDUsIEJUTl8wKSwgLyogUm91dGVyIC8gQVAgbW9kZSBzd2l0Y2ggKi9cbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docl9nNTRzW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDAsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVlfSCg0LCBLRVlfUkVTVEFSVCksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDUsIEJUTl8wKSwgLyogUm91dGVyIC8gQVAgbW9kZSBzd2l0Y2ggKi9cbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docl9ocF9nNTRbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMCwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfUkVTVEFSVCksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDUsIEJUTl8wKSwgLyogUm91dGVyIC8gQVAgbW9kZSBzd2l0Y2ggKi9cbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3d6cl9nMzAwbltdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfYnVmZmFsb193enJfcnNfZzU0W10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDAsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd3pyX3JzX2c1NGhwW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDAsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1JFU1RBUlQpLFxuQEAgLTE4MywyMCArMTkyLDIwIEBAIGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3d6cl9yc19nNTRocFtdIF9faW5pdGNvbnN0ID0ge1xuIFxuIC8qIERlbGwgKi9cbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfZGVsbF90bTIzMDBbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMCwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4gLyogRC1MaW5rICovXG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2RsaW5rX2RpcjEzMFtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgzLCBLRVlfUkVTVEFSVCksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDcsIEtFWV9VTktOT1dOKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19kbGlua19kaXIzMzBbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMywgS0VZX1JFU1RBUlQpLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg3LCBLRVlfVU5LTk9XTiksXG5AQCAtMjA0LDEyNyArMjEzLDEyNyBAQCBiY200N3h4X2J1dHRvbnNfZGxpbmtfZGlyMzMwW10gX19pbml0Y29uc3QgPSB7XG4gXG4gLyogTGlua3N5cyAqL1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UxMDAwdjFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNSwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMTAwMHYyMVtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg5LCBLRVlfV1BTX0JVVFRPTiksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDEwLCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMjAwMHYxW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDUsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoOCwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTI1MDB2M1tdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg5LCBLRVlfV1BTX0JVVFRPTiksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDEwLCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMzAwMHYxW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTMyMDB2MVtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg1LCBLRVlfUkVTVEFSVCksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDgsIEtFWV9XUFNfQlVUVE9OKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2U0MjAwdjFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQxNTBudjFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQxNTBudjExW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTYwbnYxW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTYwbnYzW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDUsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzAwbl92MVtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDMwMG52MTFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1VOS05PV04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMTBudjFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg4LCBLRVlfVU5LTk9XTiksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMTBuX3YyW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDUsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzIwbl92MVtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg1LCBLRVlfV1BTX0JVVFRPTiksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDgsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDU0ZzNndjJbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNSwgS0VZX1dJTUFYKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NTRnX2dlbmVyaWNbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQ2MTBudjFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg4LCBLRVlfV1BTX0JVVFRPTiksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQ2MTBudjJbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnRzbDU0Z3NbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG5AQCAtMzMyLDE1NCArMzQxLDE1NCBAQCBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnRzbDU0Z3NbXSBfX2luaXRjb25zdCA9IHtcbiBcbiAvKiBMdXh1bCAqL1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19sdXh1bF9hYnJfNDQwMF92MVtdID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgxNCwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8zMTBfdjFbXSA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMjAsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMTIxMF92MVtdID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg4LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbHV4dWxfeGFwXzEyMzBfdjFbXSA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoOCwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8xMjQwX3YxW10gPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDgsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMTUwMF92MVtdID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgxNCwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2x1eHVsX3hicl80NDAwX3YxW10gPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDE0LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbHV4dWxfeHZ3X3AzMF92MVtdID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgyMCwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2x1eHVsX3h3cl82MDBfdjFbXSA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoOCwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2x1eHVsX3h3cl8xNzUwX3YxW10gPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDE0LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbiAvKiBNaWNyb3NvZnQgKi9cbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbWljcm9zb2Z0X25tNzAwW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDcsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuIC8qIE1vdG9yb2xhICovXG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX21vdG9yb2xhX3dlODAwZ1tdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgwLCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbW90b3JvbGFfd3I4NTBncFtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg1LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbW90b3JvbGFfd3I4NTBndjJ2M1tdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg1LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbiAvKiBOZXRnZWFyICovXG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX25ldGdlYXJfcjYyMDBfdjFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMiwgS0VZX1JGS0lMTCksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDMsIEtFWV9SRVNUQVJUKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX25ldGdlYXJfcjYzMDBfdjFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd24yNTAwcnBfdjFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMTIsIEtFWV9SRVNUQVJUKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMzEsIEtFWV9XUFNfQlVUVE9OKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duZHIzNDAwdjFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1JFU1RBUlQpLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfV1BTX0JVVFRPTiksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDgsIEtFWV9SRktJTEwpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjM0MDBfdjNbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMTIsIEtFWV9SRVNUQVJUKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMjMsIEtFWV9XUFNfQlVUVE9OKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duZHIzNzAwdjNbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMiwgS0VZX1JGS0lMTCksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDMsIEtFWV9SRVNUQVJUKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjQ1MDB2MVtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDUsIEtFWV9SRktJTEwpLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bnIxMDAwX3YzW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDIsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMywgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25yMzUwMGx2MVtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfUkVTVEFSVCksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9XUFNfQlVUVE9OKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3ducjM1MDBsdjJbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1JFU1RBUlQpLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfV1BTX0JVVFRPTiksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDgsIEtFWV9SRktJTEwpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25yODM0YnYyW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuIC8qIFNpbXBsZVRlY2ggKi9cbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfc2ltcGxldGVjaF9zaW1wbGVzaGFyZVtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgwLCBLRVlfUkVTVEFSVCksXG4gfTtcbkBAIC00ODgsMzEgKzQ5Nyw5NiBAQCBiY200N3h4X2J1dHRvbnNfc2ltcGxldGVjaF9zaW1wbGVzaGFyZVtdIF9faW5pdGNvbnN0ID0ge1xuICAqIEluaXRcbiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4gXG4tc3RhdGljIHN0cnVjdCBncGlvX2tleXNfcGxhdGZvcm1fZGF0YSBiY200N3h4X2J1dHRvbl9wZGF0YTtcbi1cbi1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBiY200N3h4X2J1dHRvbnNfZ3Bpb19rZXlzID0ge1xuLVx0Lm5hbWUgPSBcImdwaW8ta2V5c1wiLFxuLVx0LmRldiA9IHtcbi1cdFx0LnBsYXRmb3JtX2RhdGEgPSBcdTAwMjZiY200N3h4X2J1dHRvbl9wZGF0YSxcbitzdGF0aWMgaW50IF9faW5pdFxuK2JjbTQ3eHhfYnV0dG9uc19hZGQoY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkgKmJ1dHRvbnMsIGludCBuYnV0dG9ucylcbit7XG4rXHRzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2O1xuK1x0Y29uc3Qgc3RydWN0IHNvZnR3YXJlX25vZGUgKmdwaW9fc3dub2RlO1xuK1x0c3RydWN0IHByb3BlcnR5X2VudHJ5ICpwO1xuK1x0aW50IGVycm9yO1xuK1x0aW50IGk7XG4rXG4rXHRzd2l0Y2ggKGJjbTQ3eHhfYnVzX3R5cGUpIHtcbisjaWZkZWYgQ09ORklHX0JDTTQ3WFhfQkNNQVxuK1x0Y2FzZSBCQ000N1hYX0JVU19UWVBFX0JDTUE6XG4rXHRcdGdwaW9fc3dub2RlID0gXHUwMDI2YmNtYV9ncGlvX3N3bm9kZTtcbitcdFx0YnJlYWs7XG4rI2VuZGlmXG4rI2lmZGVmIENPTkZJR19CQ000N1hYX1NTQlxuK1x0Y2FzZSBCQ000N1hYX0JVU19UWVBFX1NTQjpcbitcdFx0Z3Bpb19zd25vZGUgPSBcdTAwMjZzc2JfZ3Bpb19zd25vZGU7XG4rXHRcdGJyZWFrO1xuKyNlbmRpZlxuK1x0ZGVmYXVsdDpcbitcdFx0cmV0dXJuIC1FTk9ERVY7XG4gXHR9XG4tfTtcbiBcbi0vKiBDb3B5IGRhdGEgZnJvbSBfX2luaXRjb25zdCAqL1xuLXN0YXRpYyBpbnQgX19pbml0IGJjbTQ3eHhfYnV0dG9uc19jb3B5KGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uICpidXR0b25zLFxuLVx0XHRcdFx0ICAgICAgIHNpemVfdCBuYnV0dG9ucylcbi17XG4tXHRzaXplX3Qgc2l6ZSA9IG5idXR0b25zICogc2l6ZW9mKCpidXR0b25zKTtcbitcdC8qIDEgbm9kZSBmb3IgZ3Bpby1rZXlzIGRldmljZSwgMSBub2RlIGZvciBlYWNoIGJ1dHRvbiwgMSB0ZXJtaW5hdG9yICovXG4rXHRjb25zdCBzdHJ1Y3Qgc29mdHdhcmVfbm9kZSAqKm5vZGVfZ3JvdXAgX19mcmVlKGtmcmVlKSA9XG4rXHRcdGtjYWxsb2MoMSArIG5idXR0b25zICsgMSwgc2l6ZW9mKCpub2RlX2dyb3VwKSwgR0ZQX0tFUk5FTCk7XG4rXHRpZiAoIW5vZGVfZ3JvdXApXG4rXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuLVx0YmNtNDd4eF9idXR0b25fcGRhdGEuYnV0dG9ucyA9IGttZW1kdXAoYnV0dG9ucywgc2l6ZSwgR0ZQX0tFUk5FTCk7XG4tXHRpZiAoIWJjbTQ3eHhfYnV0dG9uX3BkYXRhLmJ1dHRvbnMpXG4rXHQvKiAxIGNvZGUgcHJvcGVydHksIDEgZ3BpbyBwcm9wZXJ0eSwgMSB0ZXJtaW5hdG9yICovXG4rXHRzdHJ1Y3QgcHJvcGVydHlfZW50cnkgKnByb3BzIF9fZnJlZShrZnJlZSkgPVxuK1x0XHRrY2FsbG9jKG5idXR0b25zICogMywgc2l6ZW9mKCpwcm9wcyksIEdGUF9LRVJORUwpO1xuK1x0aWYgKCFwcm9wcylcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4tXHRiY200N3h4X2J1dHRvbl9wZGF0YS5uYnV0dG9ucyA9IG5idXR0b25zO1xuIFxuK1x0LyogMSBub2RlIGZvciBncGlvLWtleXMgZGV2aWNlLCAxIG5vZGUgZm9yIGVhY2ggYnV0dG9uICovXG4rXHRzdHJ1Y3Qgc29mdHdhcmVfbm9kZSAqbm9kZXMgX19mcmVlKGtmcmVlKSA9XG4rXHRcdGtjYWxsb2MoMSArIG5idXR0b25zLCBzaXplb2YoKm5vZGVzKSwgR0ZQX0tFUk5FTCk7XG4rXHRpZiAoIW5vZGVzKVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcbitcdHN0cnVjdCBzb2Z0d2FyZV9ub2RlX3JlZl9hcmdzICpyZWZfYXJncyBfX2ZyZWUoa2ZyZWUpID1cbitcdFx0a2NhbGxvYyhuYnV0dG9ucywgc2l6ZW9mKCpyZWZfYXJncyksIEdGUF9LRVJORUwpO1xuK1x0aWYgKCFyZWZfYXJncylcbitcdFx0cmV0dXJuIC1FTk9NRU07XG4rXG4rXHQvKiBncGlvLWtleXMgbm9kZSAqL1xuK1x0bm9kZXNbMF0ubmFtZSA9IFwiYmNtNDd4eC1ncGlvLWJ1dHRvbnNcIjtcbitcbitcdHAgPSBwcm9wcztcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5idXR0b25zOyBpKyspIHtcbitcdFx0Y29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkgKmJ1dHRvbiA9IFx1MDAyNmJ1dHRvbnNbaV07XG4rXHRcdHN0cnVjdCBzb2Z0d2FyZV9ub2RlICpub2RlID0gXHUwMDI2bm9kZXNbMSArIGldO1xuK1x0XHRzdHJ1Y3Qgc29mdHdhcmVfbm9kZV9yZWZfYXJncyAqcmVmID0gXHUwMDI2cmVmX2FyZ3NbaV07XG4rXG4rXHRcdG5vZGUtXHUwMDNlcGFyZW50ID0gXHUwMDI2bm9kZXNbMF07XG4rXHRcdG5vZGUtXHUwMDNlcHJvcGVydGllcyA9IHA7XG4rXG4rXHRcdCpyZWYgPSBTT0ZUV0FSRV9OT0RFX1JFRkVSRU5DRShncGlvX3N3bm9kZSwgYnV0dG9uLVx1MDAzZXBpbiwgYnV0dG9uLVx1MDAzZWZsYWdzKTtcbitcdFx0KnArKyA9IFBST1BFUlRZX0VOVFJZX1JFRihcImdwaW9zXCIsIFx1MDAyNnJlZl9hcmdzW2ldKTtcbitcdFx0KnArKyA9IFBST1BFUlRZX0VOVFJZX1UzMihcImxpbnV4LGNvZGVcIiwgYnV0dG9uLVx1MDAzZWNvZGUpO1xuK1x0XHRwKys7XG4rXHR9XG4rXG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBuYnV0dG9ucyArIDE7IGkrKylcbitcdFx0bm9kZV9ncm91cFtpXSA9IFx1MDAyNm5vZGVzW2ldO1xuK1xuK1x0ZXJyb3IgPSBzb2Z0d2FyZV9ub2RlX3JlZ2lzdGVyX25vZGVfZ3JvdXAobm9kZV9ncm91cCk7XG4rXHRpZiAoZXJyb3IpXG4rXHRcdHJldHVybiBlcnJvcjtcbitcbitcdHBkZXYgPSBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJfZnVsbChcdTAwMjYoc3RydWN0IHBsYXRmb3JtX2RldmljZV9pbmZvKXtcbitcdFx0Lm5hbWUgPSBcImdwaW8ta2V5c1wiLFxuK1x0XHQuc3dub2RlID0gXHUwMDI2bm9kZXNbMF0sXG4rXHR9KTtcbitcdGVycm9yID0gUFRSX0VSUl9PUl9aRVJPKHBkZXYpO1xuK1x0aWYgKGVycm9yKSB7XG4rXHRcdHNvZnR3YXJlX25vZGVfdW5yZWdpc3Rlcl9ub2RlX2dyb3VwKG5vZGVfZ3JvdXApO1xuK1x0XHRyZXR1cm4gZXJyb3I7XG4rXHR9XG4rXG4rXHRyZXRhaW5fYW5kX251bGxfcHRyKHByb3BzKTtcbitcdHJldGFpbl9hbmRfbnVsbF9wdHIobm9kZXMpO1xuK1x0cmV0YWluX2FuZF9udWxsX3B0cihyZWZfYXJncyk7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tI2RlZmluZSBiY200N3h4X2NvcHlfYmRhdGEoZGV2X2J1dHRvbnMpXHRcdFx0XHRcdFxcXG4tXHRiY200N3h4X2J1dHRvbnNfY29weShkZXZfYnV0dG9ucywgQVJSQVlfU0laRShkZXZfYnV0dG9ucykpO1xuKyNkZWZpbmUgYmNtNDd4eF9hZGRfYmRhdGEoZGV2X2J1dHRvbnMpXHRcdFx0XHRcdFxcXG4rXHRiY200N3h4X2J1dHRvbnNfYWRkKGRldl9idXR0b25zLCBBUlJBWV9TSVpFKGRldl9idXR0b25zKSlcbiBcbiBpbnQgX19pbml0IGJjbTQ3eHhfYnV0dG9uc19yZWdpc3Rlcih2b2lkKVxuIHtcbkBAIC01MjEsNTIgKzU5NSw1MiBAQCBpbnQgX19pbml0IGJjbTQ3eHhfYnV0dG9uc19yZWdpc3Rlcih2b2lkKVxuIFxuIFx0c3dpdGNoIChib2FyZCkge1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfUlROMTBVOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfcnRuMTB1KTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfcnRuMTB1KTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQVNVU19SVE4xMjpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3J0bjEyKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfcnRuMTIpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9BU1VTX1JUTjE2OlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfcnRuMTYpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c19ydG4xNik7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfUlRONjZVOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfcnRuNjZ1KTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfcnRuNjZ1KTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQVNVU19XTDMwMEc6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDMwMGcpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDMwMGcpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9BU1VTX1dMMzIwR0U6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDMyMGdlKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2wzMjBnZSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0wzMzBHRTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsMzMwZ2UpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDMzMGdlKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQVNVU19XTDUwMEc6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDUwMGcpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDUwMGcpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9BU1VTX1dMNTAwR0Q6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDUwMGdkKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBnZCk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0w1MDBHUFYxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBncHYxKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBncHYxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQVNVU19XTDUwMEdQVjI6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDUwMGdwdjIpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDUwMGdwdjIpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9BU1VTX1dMNTAwVzpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwdyk7XG4rXHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwdyk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0w1MjBHQzpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTIwZ2MpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDUyMGdjKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQVNVU19XTDUyMEdVOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MjBndSk7XG4rXHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTIwZ3UpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9BU1VTX1dMNzAwR0U6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDcwMGdlKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w3MDBnZSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0xIREQ6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bGhkZCk7XG4rXHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsaGRkKTtcbiBcdFx0YnJlYWs7XG4gXG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQkVMS0lOX0Y3RDMzMDE6XG5AQCAtNTc0LDE5MyArNjQ4LDE5MyBAQCBpbnQgX19pbml0IGJjbTQ3eHhfYnV0dG9uc19yZWdpc3Rlcih2b2lkKVxuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0JFTEtJTl9GN0Q0MzAxOlxuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0JFTEtJTl9GN0Q0MzAyOlxuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0JFTEtJTl9GN0Q0NDAxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2JlbGtpbl9mN2Q0MzAxKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2JlbGtpbl9mN2Q0MzAxKTtcbiBcdFx0YnJlYWs7XG4gXG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQlVGRkFMT19XSFIyX0E1NEc1NDpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docjJfYTU0ZzU0KTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd2hyMl9hNTRnNTQpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9CVUZGQUxPX1dIUl9HMTI1OlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd2hyX2cxMjUpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYnVmZmFsb193aHJfZzEyNSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0JVRkZBTE9fV0hSX0c1NFM6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYnVmZmFsb193aHJfZzU0cyk7XG4rXHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docl9nNTRzKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQlVGRkFMT19XSFJfSFBfRzU0OlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd2hyX2hwX2c1NCk7XG4rXHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docl9ocF9nNTQpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9CVUZGQUxPX1daUl9HMzAwTjpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3d6cl9nMzAwbik7XG4rXHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3d6cl9nMzAwbik7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0JVRkZBTE9fV1pSX1JTX0c1NDpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3d6cl9yc19nNTQpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYnVmZmFsb193enJfcnNfZzU0KTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQlVGRkFMT19XWlJfUlNfRzU0SFA6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYnVmZmFsb193enJfcnNfZzU0aHApO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYnVmZmFsb193enJfcnNfZzU0aHApO1xuIFx0XHRicmVhaztcbiBcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9ERUxMX1RNMjMwMDpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19kZWxsX3RtMjMwMCk7XG4rXHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19kZWxsX3RtMjMwMCk7XG4gXHRcdGJyZWFrO1xuIFxuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0RMSU5LX0RJUjEzMDpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19kbGlua19kaXIxMzApO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfZGxpbmtfZGlyMTMwKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfRExJTktfRElSMzMwOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2RsaW5rX2RpcjMzMCk7XG4rXHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19kbGlua19kaXIzMzApO1xuIFx0XHRicmVhaztcbiBcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9IVUFXRUlfRTk3MDpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19odWF3ZWlfZTk3MCk7XG4rXHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19odWF3ZWlfZTk3MCk7XG4gXHRcdGJyZWFrO1xuIFxuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfRTEwMDBWMTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UxMDAwdjEpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMTAwMHYxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19FMTAwMFYyMTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UxMDAwdjIxKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTEwMDB2MjEpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX0UyMDAwVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMjAwMHYxKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTIwMDB2MSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfRTI1MDBWMzpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UyNTAwdjMpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMjUwMHYzKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19FMzAwMFYxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTMwMDB2MSk7XG4rXHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UzMDAwdjEpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX0UzMjAwVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMzIwMHYxKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTMyMDB2MSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfRTQyMDBWMTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2U0MjAwdjEpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c19lNDIwMHYxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQxNTBOVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQxNTBudjEpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQxNTBudjEpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX1dSVDE1ME5WMTE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQxNTBudjExKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTUwbnYxMSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfV1JUMTYwTlYxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTYwbnYxKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTYwbnYxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQxNjBOVjM6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQxNjBudjMpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQxNjBudjMpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX1dSVDMwME5fVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMDBuX3YxKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzAwbl92MSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfV1JUMzAwTlYxMTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDMwMG52MTEpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMDBudjExKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQzMTBOVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMTBudjEpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMTBudjEpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX1dSVDMxME5WMjpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDMxMG5fdjIpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMTBuX3YyKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQzMjBOX1YxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzIwbl92MSk7XG4rXHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDMyMG5fdjEpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX1dSVDU0RzNHVjI6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQ1NGczZ3YyKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NTRnM2d2Mik7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfV1JUNTRHX1RZUEVfMDEwMTpcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX1dSVDU0R19UWVBFXzA0Njc6XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQ1NEdfVFlQRV8wNzA4OlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NTRnX2dlbmVyaWMpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQ1NGdfZ2VuZXJpYyk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfV1JUNjEwTlYxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NjEwbnYxKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NjEwbnYxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQ2MTBOVjI6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQ2MTBudjIpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQ2MTBudjIpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX1dSVFNMNTRHUzpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydHNsNTRncyk7XG4rXHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydHNsNTRncyk7XG4gXHRcdGJyZWFrO1xuIFxuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xVWFVMX0FCUl80NDAwX1YxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX2Ficl80NDAwX3YxKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX2Ficl80NDAwX3YxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTFVYVUxfWEFQXzMxMF9WMTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMzEwX3YxKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8zMTBfdjEpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9MVVhVTF9YQVBfMTIxMF9WMTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMTIxMF92MSk7XG4rXHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMTIxMF92MSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xVWFVMX1hBUF8xMjMwX1YxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8xMjMwX3YxKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8xMjMwX3YxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTFVYVUxfWEFQXzEyNDBfVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfeGFwXzEyNDBfdjEpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfeGFwXzEyNDBfdjEpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9MVVhVTF9YQVBfMTUwMF9WMTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMTUwMF92MSk7XG4rXHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMTUwMF92MSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xVWFVMX1hCUl80NDAwX1YxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3hicl80NDAwX3YxKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3hicl80NDAwX3YxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTFVYVUxfWFZXX1AzMF9WMTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94dndfcDMwX3YxKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3h2d19wMzBfdjEpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9MVVhVTF9YV1JfNjAwX1YxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3h3cl82MDBfdjEpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfeHdyXzYwMF92MSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xVWFVMX1hXUl8xNzUwX1YxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3h3cl8xNzUwX3YxKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3h3cl8xNzUwX3YxKTtcbiBcdFx0YnJlYWs7XG4gXG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTUlDUk9TT0ZUX01ONzAwOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX21pY3Jvc29mdF9ubTcwMCk7XG4rXHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19taWNyb3NvZnRfbm03MDApO1xuIFx0XHRicmVhaztcbiBcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9NT1RPUk9MQV9XRTgwMEc6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbW90b3JvbGFfd2U4MDBnKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX21vdG9yb2xhX3dlODAwZyk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX01PVE9ST0xBX1dSODUwR1A6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbW90b3JvbGFfd3I4NTBncCk7XG4rXHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19tb3Rvcm9sYV93cjg1MGdwKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTU9UT1JPTEFfV1I4NTBHVjJWMzpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19tb3Rvcm9sYV93cjg1MGd2MnYzKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX21vdG9yb2xhX3dyODUwZ3YydjMpO1xuIFx0XHRicmVhaztcbiBcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9ORVRHRUFSX1I2MjAwX1YxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfcjYyMDBfdjEpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl9yNjIwMF92MSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX05FVEdFQVJfUjYzMDBfVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl9yNjMwMF92MSk7XG4rXHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3I2MzAwX3YxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9XTjI1MDBSUF9WMTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duMjUwMHJwX3YxKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd24yNTAwcnBfdjEpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9ORVRHRUFSX1dORFIzNDAwVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bmRyMzQwMHYxKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjM0MDB2MSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX05FVEdFQVJfV05EUjM0MDBfVjM6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bmRyMzQwMF92Myk7XG4rXHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duZHIzNDAwX3YzKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9XTkRSMzcwMFYzOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjM3MDB2Myk7XG4rXHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duZHIzNzAwdjMpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9ORVRHRUFSX1dORFI0NTAwVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bmRyNDUwMHYxKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjQ1MDB2MSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX05FVEdFQVJfV05SMTAwMF9WMzpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3ducjEwMDBfdjMpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bnIxMDAwX3YzKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9XTlIzNTAwTDpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3ducjM1MDBsdjEpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bnIzNTAwbHYxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9XTlIzNTAwTF9WMjpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3ducjM1MDBsdjIpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bnIzNTAwbHYyKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9XTlI4MzRCVjI6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bnI4MzRidjIpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bnI4MzRidjIpO1xuIFx0XHRicmVhaztcbiBcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9TSU1QTEVURUNIX1NJTVBMRVNIQVJFOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX3NpbXBsZXRlY2hfc2ltcGxlc2hhcmUpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfc2ltcGxldGVjaF9zaW1wbGVzaGFyZSk7XG4gXHRcdGJyZWFrO1xuIFxuIFx0ZGVmYXVsdDpcbkBAIC03NjksMTMgKzg0Myw3IEBAIGludCBfX2luaXQgYmNtNDd4eF9idXR0b25zX3JlZ2lzdGVyKHZvaWQpXG4gXHR9XG4gXG4gXHRpZiAoZXJyKVxuLVx0XHRyZXR1cm4gLUVOT01FTTtcbi1cbi1cdGVyciA9IHBsYXRmb3JtX2RldmljZV9yZWdpc3RlcihcdTAwMjZiY200N3h4X2J1dHRvbnNfZ3Bpb19rZXlzKTtcbi1cdGlmIChlcnIpIHtcbi1cdFx0cHJfZXJyKFwiRmFpbGVkIHRvIHJlZ2lzdGVyIHBsYXRmb3JtIGRldmljZTogJWRcXG5cIiwgZXJyKTtcbiBcdFx0cmV0dXJuIGVycjtcbi1cdH1cbiBcbiBcdHJldHVybiAwO1xuIH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYyBiL2RyaXZlcnMvYmNtYS9kcml2ZXJfZ3Bpby5jXG5pbmRleCA2NThjN2UyYWM4YmY2MS4uZWE0NTIyMmYyZmEwZmMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uY1xuKysrIGIvZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmNcbkBAIC0xOSw2ICsxOSwxMSBAQFxuIFxuICNkZWZpbmUgQkNNQV9HUElPX01BWF9QSU5TXHQzMlxuIFxuK2NvbnN0IHN0cnVjdCBzb2Z0d2FyZV9ub2RlIGJjbWFfZ3Bpb19zd25vZGUgPSB7XG4rXHQubmFtZSA9IFwiYmNtYS1ncGlvXCIsXG4rfTtcbitFWFBPUlRfU1lNQk9MX0dQTChiY21hX2dwaW9fc3dub2RlKTtcbitcbiBzdGF0aWMgaW50IGJjbWFfZ3Bpb19nZXRfdmFsdWUoc3RydWN0IGdwaW9fY2hpcCAqY2hpcCwgdW5zaWduZWQgZ3BpbylcbiB7XG4gXHRzdHJ1Y3QgYmNtYV9kcnZfY2MgKmNjID0gZ3Bpb2NoaXBfZ2V0X2RhdGEoY2hpcCk7XG5AQCAtMTkwLDcgKzE5NSwyMCBAQCBpbnQgYmNtYV9ncGlvX2luaXQoc3RydWN0IGJjbWFfZHJ2X2NjICpjYylcbiBcdGNoaXAtXHUwMDNlZGlyZWN0aW9uX2lucHV0XHQ9IGJjbWFfZ3Bpb19kaXJlY3Rpb25faW5wdXQ7XG4gXHRjaGlwLVx1MDAzZWRpcmVjdGlvbl9vdXRwdXRcdD0gYmNtYV9ncGlvX2RpcmVjdGlvbl9vdXRwdXQ7XG4gXHRjaGlwLVx1MDAzZXBhcmVudFx0XHQ9IGJ1cy1cdTAwM2VkZXY7XG4tXHRjaGlwLVx1MDAzZWZ3bm9kZVx0XHQ9IGRldl9md25vZGUoXHUwMDI2Y2MtXHUwMDNlY29yZS1cdTAwM2VkZXYpO1xuK1xuK1x0LypcbitcdCAqIFJlZ2lzdGVyIHNvZnR3YXJlIG5vZGUgb25seSBmb3IgdGhlIGhvc3QgU29DIGJ1cywgdW5sZXNzIHRoZXJlIGlzXG4rXHQgKiBhbHJlYWR5IGEgZmlybXdhcmUgbm9kZSBhc3NpZ25lZC4gVGhlcmUgaXMgb25seSBvbmUgU29DIGluc3RhbmNlXG4rXHQgKiBpbiB0aGUgc3lzdGVtLCBzbyB0aGVyZSBhcmUgbm8gY29uY2VybnMgd2l0aCByZWdpc3RyYXRpb24gY29uZmxpY3RzLlxuK1x0ICovXG4rXHRpZiAoYnVzLVx1MDAzZWhvc3R0eXBlID09IEJDTUFfSE9TVFRZUEVfU09DIFx1MDAyNlx1MDAyNiAhZGV2X2Z3bm9kZShcdTAwMjZjYy1cdTAwM2Vjb3JlLVx1MDAzZWRldikpIHtcbitcdFx0ZXJyID0gc29mdHdhcmVfbm9kZV9yZWdpc3RlcihcdTAwMjZiY21hX2dwaW9fc3dub2RlKTtcbitcdFx0aWYgKGVycilcbitcdFx0XHRyZXR1cm4gZXJyO1xuK1x0XHRjaGlwLVx1MDAzZWZ3bm9kZSA9IHNvZnR3YXJlX25vZGVfZndub2RlKFx1MDAyNmJjbWFfZ3Bpb19zd25vZGUpO1xuK1x0fSBlbHNlIHtcbitcdFx0Y2hpcC1cdTAwM2Vmd25vZGUgPSBkZXZfZndub2RlKFx1MDAyNmNjLVx1MDAzZWNvcmUtXHUwMDNlZGV2KTtcbitcdH1cbiBcbiBcdHN3aXRjaCAoYnVzLVx1MDAzZWNoaXBpbmZvLmlkKSB7XG4gXHRjYXNlIEJDTUFfQ0hJUF9JRF9CQ000NzA3OlxuQEAgLTIxOSwyMCArMjM3LDMzIEBAIGludCBiY21hX2dwaW9faW5pdChzdHJ1Y3QgYmNtYV9kcnZfY2MgKmNjKVxuIFxuIFx0ZXJyID0gYmNtYV9ncGlvX2lycV9pbml0KGNjKTtcbiBcdGlmIChlcnIpXG4tXHRcdHJldHVybiBlcnI7XG4rXHRcdGdvdG8gZXJyX3VucmVnaXN0ZXJfc3dub2RlO1xuIFxuIFx0ZXJyID0gZ3Bpb2NoaXBfYWRkX2RhdGEoY2hpcCwgY2MpO1xuLVx0aWYgKGVycikge1xuLVx0XHRiY21hX2dwaW9faXJxX2V4aXQoY2MpO1xuLVx0XHRyZXR1cm4gZXJyO1xuLVx0fVxuK1x0aWYgKGVycilcbitcdFx0Z290byBlcnJfaXJxX2V4aXQ7XG4gXG4gXHRyZXR1cm4gMDtcbitcbitlcnJfaXJxX2V4aXQ6XG4rXHRiY21hX2dwaW9faXJxX2V4aXQoY2MpO1xuK2Vycl91bnJlZ2lzdGVyX3N3bm9kZTpcbitcdGlmIChidXMtXHUwMDNlaG9zdHR5cGUgPT0gQkNNQV9IT1NUVFlQRV9TT0MgXHUwMDI2XHUwMDI2XG4rXHQgICAgY2hpcC1cdTAwM2Vmd25vZGUgXHUwMDI2XHUwMDI2IGlzX3NvZnR3YXJlX25vZGUoY2hpcC1cdTAwM2Vmd25vZGUpKSB7XG4rXHRcdHNvZnR3YXJlX25vZGVfdW5yZWdpc3RlcihcdTAwMjZiY21hX2dwaW9fc3dub2RlKTtcbitcdFx0Y2hpcC1cdTAwM2Vmd25vZGUgPSBOVUxMO1xuK1x0fVxuK1x0cmV0dXJuIGVycjtcbiB9XG4gXG4gaW50IGJjbWFfZ3Bpb191bnJlZ2lzdGVyKHN0cnVjdCBiY21hX2Rydl9jYyAqY2MpXG4ge1xuIFx0YmNtYV9ncGlvX2lycV9leGl0KGNjKTtcbiBcdGdwaW9jaGlwX3JlbW92ZShcdTAwMjZjYy1cdTAwM2VncGlvKTtcbitcdGlmIChjYy1cdTAwM2Vjb3JlLVx1MDAzZWJ1cy1cdTAwM2Vob3N0dHlwZSA9PSBCQ01BX0hPU1RUWVBFX1NPQyBcdTAwMjZcdTAwMjZcbitcdCAgICBjYy1cdTAwM2VncGlvLmZ3bm9kZSBcdTAwMjZcdTAwMjYgaXNfc29mdHdhcmVfbm9kZShjYy1cdTAwM2VncGlvLmZ3bm9kZSkpIHtcbitcdFx0c29mdHdhcmVfbm9kZV91bnJlZ2lzdGVyKFx1MDAyNmJjbWFfZ3Bpb19zd25vZGUpO1xuK1x0XHRjYy1cdTAwM2VncGlvLmZ3bm9kZSA9IE5VTEw7XG4rXHR9XG4gXHRyZXR1cm4gMDtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYyBiL2RyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmNcbmluZGV4IDkwNTY1N2M5MjViY2ViLi44NzkyMjQ3OTk0NmNiNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmNcbisrKyBiL2RyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmNcbkBAIC0xNSw4ICsxNSwxNCBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2ludGVycnVwdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaXJxZG9tYWluLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9leHBvcnQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zc2Ivc3NiLmhcdTAwM2VcbiBcbitjb25zdCBzdHJ1Y3Qgc29mdHdhcmVfbm9kZSBzc2JfZ3Bpb19zd25vZGUgPSB7XG4rXHQubmFtZSA9IFwic3NiLWdwaW9cIixcbit9O1xuK0VYUE9SVF9TWU1CT0xfR1BMKHNzYl9ncGlvX3N3bm9kZSk7XG4rXG4gXG4gLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICogU2hhcmVkXG5AQCAtMjMyLDYgKzIzOCw4IEBAIHN0YXRpYyBpbnQgc3NiX2dwaW9fY2hpcGNvX2luaXQoc3RydWN0IHNzYl9idXMgKmJ1cylcbiBcdGNoaXAtXHUwMDNldG9faXJxXHRcdD0gc3NiX2dwaW9fdG9faXJxO1xuICNlbmRpZlxuIFx0Y2hpcC1cdTAwM2VuZ3Bpb1x0XHQ9IDE2O1xuK1x0aWYgKGJ1cy1cdTAwM2VidXN0eXBlID09IFNTQl9CVVNUWVBFX1NTQilcbitcdFx0Y2hpcC1cdTAwM2Vmd25vZGVcdD0gc29mdHdhcmVfbm9kZV9md25vZGUoXHUwMDI2c3NiX2dwaW9fc3dub2RlKTtcbiBcdC8qIFRoZXJlIGlzIGp1c3Qgb25lIFNvQyBpbiBvbmUgZGV2aWNlIGFuZCBpdHMgR1BJTyBhZGRyZXNzZXMgc2hvdWxkIGJlXG4gXHQgKiBkZXRlcm1pbmlzdGljIHRvIGFkZHJlc3MgdGhlbSBtb3JlIGVhc2lseS4gVGhlIG90aGVyIGJ1c2VzIGNvdWxkIGdldFxuIFx0ICogYSByYW5kb20gYmFzZSBudW1iZXIuXG5AQCAtNDMzLDEwICs0NDEsMTIgQEAgc3RhdGljIGludCBzc2JfZ3Bpb19leHRpZl9pbml0KHN0cnVjdCBzc2JfYnVzICpidXMpXG4gXHQgKiBkZXRlcm1pbmlzdGljIHRvIGFkZHJlc3MgdGhlbSBtb3JlIGVhc2lseS4gVGhlIG90aGVyIGJ1c2VzIGNvdWxkIGdldFxuIFx0ICogYSByYW5kb20gYmFzZSBudW1iZXIuXG4gXHQgKi9cbi1cdGlmIChidXMtXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpXG4tXHRcdGNoaXAtXHUwMDNlYmFzZVx0XHQ9IDA7XG4tXHRlbHNlXG4tXHRcdGNoaXAtXHUwMDNlYmFzZVx0XHQ9IC0xO1xuK1x0aWYgKGJ1cy1cdTAwM2VidXN0eXBlID09IFNTQl9CVVNUWVBFX1NTQikge1xuK1x0XHRjaGlwLVx1MDAzZWJhc2VcdD0gMDtcbitcdFx0Y2hpcC1cdTAwM2Vmd25vZGVcdD0gc29mdHdhcmVfbm9kZV9md25vZGUoXHUwMDI2c3NiX2dwaW9fc3dub2RlKTtcbitcdH0gZWxzZSB7XG4rXHRcdGNoaXAtXHUwMDNlYmFzZVx0PSAtMTtcbitcdH1cbiBcbiBcdGVyciA9IHNzYl9ncGlvX2lycV9leHRpZl9kb21haW5faW5pdChidXMpO1xuIFx0aWYgKGVycilcbkBAIC00NjQsMTEgKzQ3NCwzMyBAQCBzdGF0aWMgaW50IHNzYl9ncGlvX2V4dGlmX2luaXQoc3RydWN0IHNzYl9idXMgKmJ1cylcbiBcbiBpbnQgc3NiX2dwaW9faW5pdChzdHJ1Y3Qgc3NiX2J1cyAqYnVzKVxuIHtcbitcdGludCBlcnIgPSAwO1xuK1xuK1x0LypcbitcdCAqIFJlZ2lzdGVyIHNvZnR3YXJlIG5vZGUgb25seSBmb3IgdGhlIGhvc3QgU29DIGJ1cy4gVGhlcmUgaXMgb25seVxuK1x0ICogb25lIFNvQyBpbnN0YW5jZSBpbiB0aGUgc3lzdGVtLCBzbyB0aGVyZSBhcmUgbm8gY29uY2VybnMgd2l0aFxuK1x0ICogcmVnaXN0cmF0aW9uIGNvbmZsaWN0cy5cbitcdCAqL1xuK1x0aWYgKGJ1cy1cdTAwM2VidXN0eXBlID09IFNTQl9CVVNUWVBFX1NTQikge1xuK1x0XHRlcnIgPSBzb2Z0d2FyZV9ub2RlX3JlZ2lzdGVyKFx1MDAyNnNzYl9ncGlvX3N3bm9kZSk7XG4rXHRcdGlmIChlcnIpXG4rXHRcdFx0cmV0dXJuIGVycjtcbitcdH1cbitcbiBcdGlmIChzc2JfY2hpcGNvX2F2YWlsYWJsZShcdTAwMjZidXMtXHUwMDNlY2hpcGNvKSlcbi1cdFx0cmV0dXJuIHNzYl9ncGlvX2NoaXBjb19pbml0KGJ1cyk7XG4rXHRcdGVyciA9IHNzYl9ncGlvX2NoaXBjb19pbml0KGJ1cyk7XG4gXHRlbHNlIGlmIChzc2JfZXh0aWZfYXZhaWxhYmxlKFx1MDAyNmJ1cy1cdTAwM2VleHRpZikpXG4tXHRcdHJldHVybiBzc2JfZ3Bpb19leHRpZl9pbml0KGJ1cyk7XG4tXHRyZXR1cm4gLTE7XG4rXHRcdGVyciA9IHNzYl9ncGlvX2V4dGlmX2luaXQoYnVzKTtcbitcdGVsc2VcbitcdFx0ZXJyID0gLUVOT0RFVjtcbitcbitcdGlmIChlcnIpIHtcbitcdFx0aWYgKGJ1cy1cdTAwM2VidXN0eXBlID09IFNTQl9CVVNUWVBFX1NTQilcbitcdFx0XHRzb2Z0d2FyZV9ub2RlX3VucmVnaXN0ZXIoXHUwMDI2c3NiX2dwaW9fc3dub2RlKTtcbitcdFx0cmV0dXJuIGVycjtcbitcdH1cbitcbitcdHJldHVybiAwO1xuIH1cbiBcbiBpbnQgc3NiX2dwaW9fdW5yZWdpc3RlcihzdHJ1Y3Qgc3NiX2J1cyAqYnVzKVxuQEAgLTQ3Niw2ICs1MDgsOCBAQCBpbnQgc3NiX2dwaW9fdW5yZWdpc3RlcihzdHJ1Y3Qgc3NiX2J1cyAqYnVzKVxuIFx0aWYgKHNzYl9jaGlwY29fYXZhaWxhYmxlKFx1MDAyNmJ1cy1cdTAwM2VjaGlwY28pIHx8XG4gXHQgICAgc3NiX2V4dGlmX2F2YWlsYWJsZShcdTAwMjZidXMtXHUwMDNlZXh0aWYpKSB7XG4gXHRcdGdwaW9jaGlwX3JlbW92ZShcdTAwMjZidXMtXHUwMDNlZ3Bpbyk7XG4rXHRcdGlmIChidXMtXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpXG4rXHRcdFx0c29mdHdhcmVfbm9kZV91bnJlZ2lzdGVyKFx1MDAyNnNzYl9ncGlvX3N3bm9kZSk7XG4gXHRcdHJldHVybiAwO1xuIFx0fVxuIFx0cmV0dXJuIC0xO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYmNtYS9iY21hLmggYi9pbmNsdWRlL2xpbnV4L2JjbWEvYmNtYS5oXG5pbmRleCBmMDJjYjM5MDkzNzVlMC4uMTdmYzUwMTkwMDE0ZTkgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2JjbWEvYmNtYS5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L2JjbWEvYmNtYS5oXG5AQCAtNDg2LDQgKzQ4Niw2IEBAIGV4dGVybiB1MzIgYmNtYV9jb3JlX2RtYV90cmFuc2xhdGlvbihzdHJ1Y3QgYmNtYV9kZXZpY2UgKmNvcmUpO1xuIFxuIGV4dGVybiB1bnNpZ25lZCBpbnQgYmNtYV9jb3JlX2lycShzdHJ1Y3QgYmNtYV9kZXZpY2UgKmNvcmUsIGludCBudW0pO1xuIFxuK2V4dGVybiBjb25zdCBzdHJ1Y3Qgc29mdHdhcmVfbm9kZSBiY21hX2dwaW9fc3dub2RlO1xuK1xuICNlbmRpZiAvKiBMSU5VWF9CQ01BX0hfICovXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zc2Ivc3NiLmggYi9pbmNsdWRlL2xpbnV4L3NzYi9zc2IuaFxuaW5kZXggN2ZlZTlhZmE5NDU4OGIuLjY3Y2I2NmY2ZjVlZDZkIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9zc2Ivc3NiLmhcbisrKyBiL2luY2x1ZGUvbGludXgvc3NiL3NzYi5oXG5AQCAtNjcxLDQgKzY3MSw2IEBAIGludCBzc2JfcGNpYmlvc19wbGF0X2Rldl9pbml0KHN0cnVjdCBwY2lfZGV2ICpkZXYpO1xuIGludCBzc2JfcGNpYmlvc19tYXBfaXJxKGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpkZXYsIHU4IHNsb3QsIHU4IHBpbik7XG4gI2VuZGlmIC8qIENPTkZJR19TU0JfRU1CRURERUQgKi9cbiBcbitleHRlcm4gY29uc3Qgc3RydWN0IHNvZnR3YXJlX25vZGUgc3NiX2dwaW9fc3dub2RlO1xuK1xuICNlbmRpZiAvKiBMSU5VWF9TU0JfSF8gKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAyOjU1OjExLjM2MzczOTk4M1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExODg0OTAzMjc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVucmVhY2hhYmxlIENvZGUgUGF0aHMgaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBzZXJpZXMgdGhhdCByZWZhY3RvcnMgdGhlIEJDTTQ3eHggYnV0dG9ucyBkcml2ZXIsIG1vdmluZyBpdCB0byB1c2Ugc29mdHdhcmUgbm9kZXMgaW5zdGVhZCBvZiBgZ3Bpb19rZXlzX3BsYXRmb3JtX2RhdGFgLiBUaGUgcGF0Y2ggdG91Y2hlcyBgYXJjaC9taXBzL2JjbTQ3eHgvYnV0dG9ucy5jYCwgYW5kIGFsc28gYGRyaXZlcnMvYmNtYS9kcml2ZXJfZ3Bpby5jYCwgYW5kIGBkcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jYCwgYWxvbmcgd2l0aCBhc3NvY2lhdGVkIGhlYWRlciBmaWxlcy4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpbnZvbHZlcyByZWdpc3RlcmluZyBgYmNtYV9ncGlvX3N3bm9kZWAgYW5kIGBzc2JfZ3Bpb19zd25vZGVgIHdpdGhpbiB0aGUgcmVzcGVjdGl2ZSBHUElPIGRyaXZlcnMuXG5cbk15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHJlYWNoYWJpbGl0eSwgcGFydGljdWxhcmx5IGluIG91ciB0eXBpY2FsIHZpcnR1YWxpemVkIGZ1enppbmcgc2V0dXBzLiBUaGUgQkNNNDd4eCBpcyBNSVBTLCBhbmQgd2hpbGUgUUVNVSAqY2FuKiBydW4gTUlQUywgb3VyIHByaW1hcnkgZm9jdXMgaW4gc3l6a2FsbGVyIGlzIHVzdWFsbHkgb24geDg2XzY0LCBhcm02NCwgcmlzY3Y2NCwgYW5kIHMzOTB4LiBXZSBkb24ndCB0eXBpY2FsbHkgdGFyZ2V0IEJDTTQ3eHggc3BlY2lmaWNhbGx5LiBUaGUgaW5zdHJ1Y3Rpb25zIG1lbnRpb24gdGhhdCB3ZSBzaG91bGQgYmUgY29uY2VybmVkIGFib3V0IGNvZGUgdGhhdCdzIGltcG9zc2libGUgdG8gaGl0IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cblxuU28sIHRoZSBrZXkgcXVlc3Rpb25zIGFyZTogYXJlIHRoZXNlIEJDTUEgYW5kIFNTQiBidXMgcGF0aHMgcmVhY2hhYmxlIGluIG91ciBzdGFuZGFyZCB0ZXN0IHNldHVwcz8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhlc2UgYGJjbWFfZ3Bpb19zd25vZGVgIGFuZCBgc3NiX2dwaW9fc3dub2RlYCByZWdpc3RyYXRpb25zIGFjdHVhbGx5IGhhcHBlbi4gSSBuZWVkIHRvIHRyYWNlIHRoaXMuXG5cbmBiY200N3h4X2J1dHRvbnNfYWRkYCBpcyB0aGUga2V5LCBhbmQgaXQncyBpbiBgYXJjaC9taXBzL2JjbTQ3eHgvYnV0dG9ucy5jYCB3aGljaCBpcyBndWFyZGVkIGJ5IGBDT05GSUdfQkNNNDdYWGAuIFRoYXQgY29uZmlybXMgaXQncyBNSVBTIEJDTTQ3eHgtc3BlY2lmaWMuIFRoaXMgaXMgYSB2ZXJ5IHRhcmdldGVkIGFyY2hpdGVjdHVyZS5cblxuTGV0J3MgbG9vayBhdCBgZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmNgIGFuZCBgZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uY2AuIFRoZXkncmUgZ3VhcmRlZCBieSBgQ09ORklHX0JDTUFfRFJJVkVSX0dQSU9gIGFuZCBgQ09ORklHX1NTQl9EUklWRVJfR1BJT2AuIEJ1dCwgdW5kZXIgd2hhdCAqY29uZGl0aW9ucyogYXJlIGBiY21hX2dwaW9fc3dub2RlYCBhbmQgYHNzYl9ncGlvX3N3bm9kZWAgYWN0dWFsbHkgcmVnaXN0ZXJlZD9cblxuRGlnZ2luZyBpbnRvIGBkcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uY2AsIGBiY21hX2dwaW9faW5pdGAgaXMgY2FsbGVkIGZyb20gYGJjbWFfY29yZV9ncGlvX2luaXRgLiBMb29raW5nIGF0IHRoaXMsIHRoZSBzb2Z0d2FyZSBub2RlIHJlZ2lzdHJhdGlvbiBvbmx5IGhhcHBlbnMgd2hlbiBgYnVzLVx1MDAzZWhvc3R0eXBlID09IEJDTUFfSE9TVFRZUEVfU09DYCBhbmQgd2UgYXJlIG5vdCB1c2luZyBkZXZpY2UgZmlybXdhcmUgbm9kZSAobm90IHN1cHBvcnRlZCBmb3IgQkNNNDd4eCkuIGBCQ01BX0hPU1RUWVBFX1NPQ2AgaXMgKnNwZWNpZmljYWxseSogZm9yIFNvQyBjb25maWd1cmF0aW9ucyBsaWtlIHRoZSBCQ000N3h4LiBGb3IgUENJIGRldmljZXMsIHRoZSBgaG9zdHR5cGVgIGlzIGBCQ01BX0hPU1RUWVBFX1BDSWAuIFRoaXMgaXMgcmVhbGx5IHRhcmdldGVkIGF0IHRoZSBTb0MuXG5cblNpbWlsYXJseSwgaW4gYGRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmNgLCB0aGUgc29mdHdhcmUgbm9kZSByZWdpc3RyYXRpb24gb2NjdXJzIG9ubHkgaWYgYGJ1cy1cdTAwM2VidXN0eXBlID09IFNTQl9CVVNUWVBFX1NTQmAsIHdoaWNoIGlzIGFsc28gU29DIHNwZWNpZmljLiBQQ0kgdXNlcyBgU1NCX0JVU1RZUEVfUENJYC5cblxuVGhlcmVmb3JlLCB0aGlzIG5ldyBjb2RlIC0gdGhlIHNvZnR3YXJlIG5vZGUgcmVnaXN0cmF0aW9uIC0gaXMgb25seSBleGVjdXRlZCB3aGVuIHRoZSBkcml2ZXIgaXMgcnVubmluZyBvbiBhbiBTb0MsIGkuZS4sIE1JUFMgQkNNNDd4eC5cblxuU2luY2Ugd2UgZG9uJ3QgZnV6eiBNSVBTIEJDTTQ3eHggaW4gb3VyIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgYW5kIGV2ZW4gKmlmKiB3ZSBkaWQsIHRoZSBlbXVsYXRpb24gb2YgdGhlICpzcGVjaWZpYyogU29DIHdvdWxkIGJlIHJlcXVpcmVkLCB3aGljaCBzeXprYWxsZXIgZG9lc24ndCBzdXBwb3J0IGZvciBCQ000N3h4LCBpdCdzIHByZXR0eSBjbGVhciB0aGF0IHRoZXNlIG5ldyBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBpbiBvdXIgY3VycmVudCBmdXp6aW5nIHNldHVwLiBJIHRoaW5rIEknbSBnb2luZyB0byBkb3VibGUgY2hlY2sgdGhlIHVzZSBvZiBgQkNNQV9IT1NUVFlQRV9TT0NgIHRvIGJlIGNlcnRhaW4uIEJ1dCBJIHRoaW5rIHRoaXMgaXMgcHJldHR5IHNvbGlkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDkzNSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkzMSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAyOjU1OjIzLjI0ODY0NDk0MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzkzMDIwMjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkJDTUFfSE9TVFRZUEVfU09DXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmNtYS9jb3JlLmM9MTQwPXUzMiBiY21hX2NvcmVfZG1hX3RyYW5zbGF0aW9uKHN0cnVjdCBiY21hX2RldmljZSAqY29yZSlcXG4tLVxcbmRyaXZlcnMvYmNtYS9jb3JlLmMtMTQyLVxcdHN3aXRjaCAoY29yZS1cXHUwMDNlYnVzLVxcdTAwM2Vob3N0dHlwZSkge1xcbmRyaXZlcnMvYmNtYS9jb3JlLmM6MTQzOlxcdGNhc2UgQkNNQV9IT1NUVFlQRV9TT0M6XFxuZHJpdmVycy9iY21hL2NvcmUuYy0xNDQtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2NoaXBjb21tb24uYz0xNjk9dm9pZCBiY21hX2NvcmVfY2hpcGNvbW1vbl9lYXJseV9pbml0KHN0cnVjdCBiY21hX2Rydl9jYyAqY2MpXFxuLS1cXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2NoaXBjb21tb24uYy0xODYtXFxuZHJpdmVycy9iY21hL2RyaXZlcl9jaGlwY29tbW9uLmM6MTg3OlxcdGlmIChidXMtXFx1MDAzZWhvc3R0eXBlID09IEJDTUFfSE9TVFRZUEVfU09DKVxcbmRyaXZlcnMvYmNtYS9kcml2ZXJfY2hpcGNvbW1vbi5jLTE4OC1cXHRcXHRiY21hX2NvcmVfY2hpcGNvbW1vbl9mbGFzaF9kZXRlY3QoY2MpO1xcbi0tXFxuZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmM9MTM1PXN0YXRpYyBpbnQgYmNtYV9ncGlvX2lycV9pbml0KHN0cnVjdCBiY21hX2Rydl9jYyAqY2MpXFxuLS1cXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYy0xNDAtXFxuZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmM6MTQxOlxcdGlmIChjYy1cXHUwMDNlY29yZS1cXHUwMDNlYnVzLVxcdTAwM2Vob3N0dHlwZSAhPSBCQ01BX0hPU1RUWVBFX1NPQylcXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYy0xNDItXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYz0xNjQ9c3RhdGljIHZvaWQgYmNtYV9ncGlvX2lycV9leGl0KHN0cnVjdCBiY21hX2Rydl9jYyAqY2MpXFxuZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmMtMTY1LXtcXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYzoxNjY6XFx0aWYgKGNjLVxcdTAwM2Vjb3JlLVxcdTAwM2VidXMtXFx1MDAzZWhvc3R0eXBlICE9IEJDTUFfSE9TVFRZUEVfU09DKVxcbmRyaXZlcnMvYmNtYS9kcml2ZXJfZ3Bpby5jLTE2Ny1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYz0xODM9aW50IGJjbWFfZ3Bpb19pbml0KHN0cnVjdCBiY21hX2Rydl9jYyAqY2MpXFxuLS1cXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYy0yMDMtXFx0ICovXFxuZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmM6MjA0OlxcdGlmIChidXMtXFx1MDAzZWhvc3R0eXBlID09IEJDTUFfSE9TVFRZUEVfU09DIFxcdTAwMjZcXHUwMDI2ICFkZXZfZndub2RlKFxcdTAwMjZjYy1cXHUwMDNlY29yZS1cXHUwMDNlZGV2KSkge1xcbmRyaXZlcnMvYmNtYS9kcml2ZXJfZ3Bpby5jLTIwNS1cXHRcXHRlcnIgPSBzb2Z0d2FyZV9ub2RlX3JlZ2lzdGVyKFxcdTAwMjZiY21hX2dwaW9fc3dub2RlKTtcXG4tLVxcbmRyaXZlcnMvYmNtYS9kcml2ZXJfZ3Bpby5jLTIzMi1cXHRpZiAoSVNfQlVJTFRJTihDT05GSUdfQkNNNDdYWCkgfHxcXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYzoyMzM6XFx0ICAgIGNjLVxcdTAwM2Vjb3JlLVxcdTAwM2VidXMtXFx1MDAzZWhvc3R0eXBlID09IEJDTUFfSE9TVFRZUEVfU09DKVxcbmRyaXZlcnMvYmNtYS9kcml2ZXJfZ3Bpby5jLTIzNC1cXHRcXHRjaGlwLVxcdTAwM2ViYXNlXFx0XFx0PSBidXMtXFx1MDAzZW51bSAqIEJDTUFfR1BJT19NQVhfUElOUztcXG4tLVxcbmRyaXZlcnMvYmNtYS9kcml2ZXJfZ3Bpby5jLTI1MC1lcnJfdW5yZWdpc3Rlcl9zd25vZGU6XFxuZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmM6MjUxOlxcdGlmIChidXMtXFx1MDAzZWhvc3R0eXBlID09IEJDTUFfSE9TVFRZUEVfU09DIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmMtMjUyLVxcdCAgICBjaGlwLVxcdTAwM2Vmd25vZGUgXFx1MDAyNlxcdTAwMjYgaXNfc29mdHdhcmVfbm9kZShjaGlwLVxcdTAwM2Vmd25vZGUpKSB7XFxuLS1cXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYz0yNTk9aW50IGJjbWFfZ3Bpb191bnJlZ2lzdGVyKHN0cnVjdCBiY21hX2Rydl9jYyAqY2MpXFxuLS1cXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYy0yNjItXFx0Z3Bpb2NoaXBfcmVtb3ZlKFxcdTAwMjZjYy1cXHUwMDNlZ3Bpbyk7XFxuZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmM6MjYzOlxcdGlmIChjYy1cXHUwMDNlY29yZS1cXHUwMDNlYnVzLVxcdTAwM2Vob3N0dHlwZSA9PSBCQ01BX0hPU1RUWVBFX1NPQyBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvYmNtYS9kcml2ZXJfZ3Bpby5jLTI2NC1cXHQgICAgY2MtXFx1MDAzZWdwaW8uZndub2RlIFxcdTAwMjZcXHUwMDI2IGlzX3NvZnR3YXJlX25vZGUoY2MtXFx1MDAzZWdwaW8uZndub2RlKSkge1xcbi0tXFxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmM9MTY4PWludCBfX2luaXQgYmNtYV9ob3N0X3NvY19yZWdpc3RlcihzdHJ1Y3QgYmNtYV9zb2MgKnNvYylcXG4tLVxcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jLTE3OS1cXHQvKiBIb3N0IHNwZWNpZmljICovXFxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmM6MTgwOlxcdGJ1cy1cXHUwMDNlaG9zdHR5cGUgPSBCQ01BX0hPU1RUWVBFX1NPQztcXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYy0xODEtXFx0YnVzLVxcdTAwM2VvcHMgPSBcXHUwMDI2YmNtYV9ob3N0X3NvY19vcHM7XFxuLS1cXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYz0yMDM9c3RhdGljIGludCBiY21hX2hvc3Rfc29jX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYy0yMjItXFx0LyogSG9zdCBzcGVjaWZpYyAqL1xcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jOjIyMzpcXHRidXMtXFx1MDAzZWhvc3R0eXBlID0gQkNNQV9IT1NUVFlQRV9TT0M7XFxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmMtMjI0LVxcdGJ1cy1cXHUwMDNlb3BzID0gXFx1MDAyNmJjbWFfaG9zdF9zb2Nfb3BzO1xcbi0tXFxuZHJpdmVycy9iY21hL21haW4uYz0yMTQ9dW5zaWduZWQgaW50IGJjbWFfY29yZV9pcnEoc3RydWN0IGJjbWFfZGV2aWNlICpjb3JlLCBpbnQgbnVtKVxcbi0tXFxuZHJpdmVycy9iY21hL21haW4uYy0yMjEtXFx0XFx0cmV0dXJuIGJ1cy1cXHUwMDNlaG9zdF9wY2ktXFx1MDAzZWlycTtcXG5kcml2ZXJzL2JjbWEvbWFpbi5jOjIyMjpcXHRjYXNlIEJDTUFfSE9TVFRZUEVfU09DOlxcbmRyaXZlcnMvYmNtYS9tYWluLmMtMjIzLVxcdFxcdGlmIChidXMtXFx1MDAzZWRydl9taXBzLmNvcmUgXFx1MDAyNlxcdTAwMjYgbnVtID09IDApIHtcXG4tLVxcbmRyaXZlcnMvYmNtYS9tYWluLmM9MjM4PXZvaWQgYmNtYV9wcmVwYXJlX2NvcmUoc3RydWN0IGJjbWFfYnVzICpidXMsIHN0cnVjdCBiY21hX2RldmljZSAqY29yZSlcXG4tLVxcbmRyaXZlcnMvYmNtYS9tYWluLmMtMjUyLVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvYmNtYS9tYWluLmM6MjUzOlxcdGNhc2UgQkNNQV9IT1NUVFlQRV9TT0M6XFxuZHJpdmVycy9iY21hL21haW4uYy0yNTQtXFx0XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX09GKSBcXHUwMDI2XFx1MDAyNiBidXMtXFx1MDAzZWRldikge1xcbi0tXFxuZHJpdmVycy9iY21hL21haW4uYz0yOTE9c3RhdGljIGludCBiY21hX3JlZ2lzdGVyX2RldmljZXMoc3RydWN0IGJjbWFfYnVzICpidXMpXFxuLS1cXG5kcml2ZXJzL2JjbWEvbWFpbi5jLTM1OC1cXG5kcml2ZXJzL2JjbWEvbWFpbi5jOjM1OTpcXHRpZiAoYnVzLVxcdTAwM2Vob3N0dHlwZSA9PSBCQ01BX0hPU1RUWVBFX1NPQykge1xcbmRyaXZlcnMvYmNtYS9tYWluLmMtMzYwLVxcdFxcdGVyciA9IGJjbWFfY2hpcGNvX3dhdGNoZG9nX3JlZ2lzdGVyKFxcdTAwMjZidXMtXFx1MDAzZWRydl9jYyk7XFxuLS1cXG5kcml2ZXJzL2JjbWEvbWFpbi5jPTM2OD12b2lkIGJjbWFfdW5yZWdpc3Rlcl9jb3JlcyhzdHJ1Y3QgYmNtYV9idXMgKmJ1cylcXG4tLVxcbmRyaXZlcnMvYmNtYS9tYWluLmMtMzc3LVxcdH1cXG5kcml2ZXJzL2JjbWEvbWFpbi5jOjM3ODpcXHRpZiAoYnVzLVxcdTAwM2Vob3N0dHlwZSA9PSBCQ01BX0hPU1RUWVBFX1NPQylcXG5kcml2ZXJzL2JjbWEvbWFpbi5jLTM3OS1cXHRcXHRwbGF0Zm9ybV9kZXZpY2VfdW5yZWdpc3RlcihidXMtXFx1MDAzZWRydl9jYy53YXRjaGRvZyk7XFxuLS1cXG5kcml2ZXJzL2JjbWEvc2Nhbi5jPTI3MT1zdGF0aWMgaW50IGJjbWFfZ2V0X25leHRfY29yZShzdHJ1Y3QgYmNtYV9idXMgKmJ1cywgdTMyIF9faW9tZW0gKiplcm9tcHRyLFxcbi0tXFxuZHJpdmVycy9iY21hL3NjYW4uYy00MjAtXFx0fVxcbmRyaXZlcnMvYmNtYS9zY2FuLmM6NDIxOlxcdGlmIChidXMtXFx1MDAzZWhvc3R0eXBlID09IEJDTUFfSE9TVFRZUEVfU09DKSB7XFxuZHJpdmVycy9iY21hL3NjYW4uYy00MjItXFx0XFx0Y29yZS1cXHUwMDNlaW9fYWRkciA9IGlvcmVtYXAoY29yZS1cXHUwMDNlYWRkciwgQkNNQV9DT1JFX1NJWkUpO1xcbi0tXFxuZHJpdmVycy9iY21hL3NjYW4uYz00NTY9aW50IGJjbWFfYnVzX3NjYW4oc3RydWN0IGJjbWFfYnVzICpidXMpXFxuLS1cXG5kcml2ZXJzL2JjbWEvc2Nhbi5jLTQ2Ny1cXHRlcm9tYmFzZSA9IGJjbWFfc2Nhbl9yZWFkMzIoYnVzLCBCQ01BX0NDX0VST00pO1xcbmRyaXZlcnMvYmNtYS9zY2FuLmM6NDY4OlxcdGlmIChidXMtXFx1MDAzZWhvc3R0eXBlID09IEJDTUFfSE9TVFRZUEVfU09DKSB7XFxuZHJpdmVycy9iY21hL3NjYW4uYy00NjktXFx0XFx0ZXJvbXB0ciA9IGlvcmVtYXAoZXJvbWJhc2UsIEJDTUFfQ09SRV9TSVpFKTtcXG4tLVxcbmRyaXZlcnMvYmNtYS9zY2FuLmMtNTE5LW91dDpcXG5kcml2ZXJzL2JjbWEvc2Nhbi5jOjUyMDpcXHRpZiAoYnVzLVxcdTAwM2Vob3N0dHlwZSA9PSBCQ01BX0hPU1RUWVBFX1NPQylcXG5kcml2ZXJzL2JjbWEvc2Nhbi5jLTUyMS1cXHRcXHRpb3VubWFwKGVyb21wdHIpO1xcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9icm9hZGNvbS9iY200N3h4X3Nwcm9tLmM9NjUwPXN0YXRpYyBpbnQgYmNtNDd4eF9nZXRfc3Byb21fYmNtYShzdHJ1Y3QgYmNtYV9idXMgKmJ1cywgc3RydWN0IHNzYl9zcHJvbSAqb3V0KVxcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9icm9hZGNvbS9iY200N3h4X3Nwcm9tLmMtNjcyLVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vYmNtNDd4eF9zcHJvbS5jOjY3MzpcXHRjYXNlIEJDTUFfSE9TVFRZUEVfU09DOlxcbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vYmNtNDd4eF9zcHJvbS5jLTY3NC1cXHRcXHRtZW1zZXQob3V0LCAwLCBzaXplb2Yoc3RydWN0IHNzYl9zcHJvbSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYz01NTg2PWJvb2wgYnJjbXNfY19jaGlwbWF0Y2goc3RydWN0IGJjbWFfZGV2aWNlICpjb3JlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYy01NTkwLVxcdFxcdHJldHVybiBicmNtc19jX2NoaXBtYXRjaF9wY2koY29yZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYzo1NTkxOlxcdGNhc2UgQkNNQV9IT1NUVFlQRV9TT0M6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYy01NTkyLVxcdFxcdHJldHVybiBicmNtc19jX2NoaXBtYXRjaF9zb2MoY29yZSk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JjbWEvYmNtYS5oPTIxPWVudW0gYmNtYV9ob3N0dHlwZSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JjbWEvYmNtYS5oLTIzLVxcdEJDTUFfSE9TVFRZUEVfU0RJTyxcXG5pbmNsdWRlL2xpbnV4L2JjbWEvYmNtYS5oOjI0OlxcdEJDTUFfSE9TVFRZUEVfU09DLFxcbmluY2x1ZGUvbGludXgvYmNtYS9iY21hLmgtMjUtfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDI6NTU6MjUuMDQxNjcwOTQ2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE1OTUxMDkxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIEJDTUEgSG9zdCBUeXBlIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyBgQkNNQV9IT1NUVFlQRV9TT0NgIGlzIGRlZmluZWQgd2l0aGluIGBkcml2ZXJzL2JjbWEvaG9zdF9zb2MuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkNhbiB0aGlzIHBhcnRpY3VsYXIgc2V0dGluZywgb3IgdGhlIGNvZGUgcGF0aCB0aGF0IGxlYWRzIHRvIGl0LCBiZSByZWFjaGVkIHdoZW4gd2UncmUgcnVubmluZyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50P1wiIEl0J3MgYSBrZXkgcXVlc3Rpb24sIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyBsaWtlIEJDTUEuIEknbGwgbmVlZCB0byBkaXZlIGludG8gYGRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jYCBkaXJlY3RseS4gTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGNvZGUgaW4gdGhhdCBmaWxlLCBmb2N1c2luZyBvbiBob3cgdGhlIGBCQ01BX0hPU1RUWVBFX1NPQ2AgZmxhZyBpcyBzZXQgYW5kIHVuZGVyIHdoYXQgY29uZGl0aW9ucy4gU3BlY2lmaWNhbGx5LCBJJ2xsIGJlIGxvb2tpbmcgZm9yIGFueSBpbmRpY2F0aW9ucyBvciBjaGVja3MgdGhhdCBtaWdodCBpbmZsdWVuY2Ugd2hldGhlciB0aGUgU09DLXNwZWNpZmljIGNvZGUgaXMgYWN0aXZlIHdoZW4gcnVubmluZyBvbiBhIHZpcnR1YWwgaG9zdC4gVGhpcyB3aWxsIHJlcXVpcmUgc29tZSBjYXJlZnVsIGFuYWx5c2lzIG9mIHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiwgYW55IGhhcmR3YXJlIGRldGVjdGlvbiByb3V0aW5lcywgYW5kIGFueSBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgdW5kZXJseWluZyBoeXBlcnZpc29yLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTExOCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAyOjU1OjI4LjIwMTE4MzYzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MjM3NTMxNDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYmNtYV9ob3N0X3NvY19yZWdpc3RlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL21pcHMvYmNtNDd4eC9zZXR1cC5jPTE0MD1zdGF0aWMgdm9pZCBfX2luaXQgYmNtNDd4eF9yZWdpc3Rlcl9iY21hKHZvaWQpXFxuLS1cXG5hcmNoL21pcHMvYmNtNDd4eC9zZXR1cC5jLTE0My1cXG5hcmNoL21pcHMvYmNtNDd4eC9zZXR1cC5jOjE0NDpcXHRlcnIgPSBiY21hX2hvc3Rfc29jX3JlZ2lzdGVyKFxcdTAwMjZiY200N3h4X2J1cy5iY21hKTtcXG5hcmNoL21pcHMvYmNtNDd4eC9zZXR1cC5jLTE0NS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9iY21hL2JjbWFfcHJpdmF0ZS5oPTEwND1leHRlcm4gdm9pZCBfX2V4aXQgYmNtYV9ob3N0X3BjaV9leGl0KHZvaWQpO1xcbi0tXFxuZHJpdmVycy9iY21hL2JjbWFfcHJpdmF0ZS5oLTEwOC0jaWYgZGVmaW5lZChDT05GSUdfQkNNQV9IT1NUX1NPQykgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfT0YpXFxuZHJpdmVycy9iY21hL2JjbWFfcHJpdmF0ZS5oOjEwOTpleHRlcm4gaW50IF9faW5pdCBiY21hX2hvc3Rfc29jX3JlZ2lzdGVyX2RyaXZlcih2b2lkKTtcXG5kcml2ZXJzL2JjbWEvYmNtYV9wcml2YXRlLmgtMTEwLWV4dGVybiB2b2lkIF9fZXhpdCBiY21hX2hvc3Rfc29jX3VucmVnaXN0ZXJfZHJpdmVyKHZvaWQpO1xcbmRyaXZlcnMvYmNtYS9iY21hX3ByaXZhdGUuaC0xMTEtI2Vsc2VcXG5kcml2ZXJzL2JjbWEvYmNtYV9wcml2YXRlLmg6MTEyOnN0YXRpYyBpbmxpbmUgaW50IF9faW5pdCBiY21hX2hvc3Rfc29jX3JlZ2lzdGVyX2RyaXZlcih2b2lkKVxcbmRyaXZlcnMvYmNtYS9iY21hX3ByaXZhdGUuaC0xMTMte1xcbi0tXFxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmM9MTUzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtYV9ob3N0X29wcyBiY21hX2hvc3Rfc29jX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jLTE2Ny1cXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYzoxNjg6aW50IF9faW5pdCBiY21hX2hvc3Rfc29jX3JlZ2lzdGVyKHN0cnVjdCBiY21hX3NvYyAqc29jKVxcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jLTE2OS17XFxuLS1cXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYz0yNTg9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYmNtYV9ob3N0X3NvY19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYy0yNjYtXFxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmM6MjY3OmludCBfX2luaXQgYmNtYV9ob3N0X3NvY19yZWdpc3Rlcl9kcml2ZXIodm9pZClcXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYy0yNjgte1xcbi0tXFxuZHJpdmVycy9iY21hL21haW4uYz02NzI9c3RhdGljIGludCBfX2luaXQgYmNtYV9tb2Rpbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL2JjbWEvbWFpbi5jLTY3OS1cXG5kcml2ZXJzL2JjbWEvbWFpbi5jOjY4MDpcXHRlcnIgPSBiY21hX2hvc3Rfc29jX3JlZ2lzdGVyX2RyaXZlcigpO1xcbmRyaXZlcnMvYmNtYS9tYWluLmMtNjgxLVxcdGlmIChlcnIpIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvYmNtYS9iY21hX3NvYy5oPTc9c3RydWN0IGJjbWFfc29jIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvYmNtYS9iY21hX3NvYy5oLTExLVxcbmluY2x1ZGUvbGludXgvYmNtYS9iY21hX3NvYy5oOjEyOmludCBfX2luaXQgYmNtYV9ob3N0X3NvY19yZWdpc3RlcihzdHJ1Y3QgYmNtYV9zb2MgKnNvYyk7XFxuaW5jbHVkZS9saW51eC9iY21hL2JjbWFfc29jLmgtMTMtaW50IF9faW5pdCBiY21hX2hvc3Rfc29jX2luaXQoc3RydWN0IGJjbWFfc29jICpzb2MpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMjo1NTozMC4wMjQ5NDcwMDRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzIzODA1NzQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUgd2hhdCdzIGdvaW5nIG9uIGhlcmUuXG5cbioqRGVjb25zdHJ1Y3RpbmcgdGhlIEJDTUEgSG9zdC9Tb0MgRHJpdmVyIFJlZ2lzdHJhdGlvbioqXG5cblJpZ2h0LCBzbyBgYmNtYV9ob3N0X3NvY19yZWdpc3Rlcl9kcml2ZXJgIGlzIGdldHRpbmcgY2FsbGVkIGZyb20gYGJjbWFfbW9kaW5pdGAuIFRoYXQgbWFrZXMgc2Vuc2UsIGJ1dCBpdCBhbHNvIG1lYW5zIHRoYXQgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gaGFzIHRvIGluY2x1ZGUgYm90aCBgQ09ORklHX0JDTUFfSE9TVF9TT0NgIGFuZCBgQ09ORklHX09GYC4gSSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQuIEl0J3MgYSBwcmV0dHkgc3RhbmRhcmQgcGF0dGVybiBmb3IgbW9kdWxlIGluaXRpYWxpemF0aW9uLCBvYnZpb3VzbHkgdHJpZ2dlcmVkIHdoZW4gdGhlIGRyaXZlciBpcyBsb2FkZWQgb3IgYXQgc3lzdGVtIHN0YXJ0dXAuIE5vdywgdGhlIHJlYWwgcXVlc3Rpb24gaXMsICp3aGF0KiBpcyBgYmNtYV9ob3N0X3NvY19yZWdpc3Rlcl9kcml2ZXJgIGFjdHVhbGx5ICpkb2luZyo/IEkgbmVlZCB0byBkaWcgaW50byBpdHMgaW1wbGVtZW50YXRpb24uIFByZXN1bWFibHksIHRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgZGV2aWNlIGRyaXZlciBnZXRzIGF0dGFjaGVkIHRvIHRoZSBidXMgYW5kIHRoZSBib2FyZC1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiBiZWdpbnMgaWYgaXQncyBiYXNlZCBvbiBhbiBTb0MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MTY1LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDI6NTU6MzMuNzQ4NzU0ODZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk5NTMwMjk5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJiY21hX2hvc3Rfc29jX3JlZ2lzdGVyX2RyaXZlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2JjbWEvYmNtYV9wcml2YXRlLmg9MTA0PWV4dGVybiB2b2lkIF9fZXhpdCBiY21hX2hvc3RfcGNpX2V4aXQodm9pZCk7XFxuLS1cXG5kcml2ZXJzL2JjbWEvYmNtYV9wcml2YXRlLmgtMTA4LSNpZiBkZWZpbmVkKENPTkZJR19CQ01BX0hPU1RfU09DKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19PRilcXG5kcml2ZXJzL2JjbWEvYmNtYV9wcml2YXRlLmg6MTA5OmV4dGVybiBpbnQgX19pbml0IGJjbWFfaG9zdF9zb2NfcmVnaXN0ZXJfZHJpdmVyKHZvaWQpO1xcbmRyaXZlcnMvYmNtYS9iY21hX3ByaXZhdGUuaC0xMTAtZXh0ZXJuIHZvaWQgX19leGl0IGJjbWFfaG9zdF9zb2NfdW5yZWdpc3Rlcl9kcml2ZXIodm9pZCk7XFxuZHJpdmVycy9iY21hL2JjbWFfcHJpdmF0ZS5oLTExMS0jZWxzZVxcbmRyaXZlcnMvYmNtYS9iY21hX3ByaXZhdGUuaDoxMTI6c3RhdGljIGlubGluZSBpbnQgX19pbml0IGJjbWFfaG9zdF9zb2NfcmVnaXN0ZXJfZHJpdmVyKHZvaWQpXFxuZHJpdmVycy9iY21hL2JjbWFfcHJpdmF0ZS5oLTExMy17XFxuLS1cXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYz0yNTg9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYmNtYV9ob3N0X3NvY19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYy0yNjYtXFxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmM6MjY3OmludCBfX2luaXQgYmNtYV9ob3N0X3NvY19yZWdpc3Rlcl9kcml2ZXIodm9pZClcXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYy0yNjgte1xcbi0tXFxuZHJpdmVycy9iY21hL21haW4uYz02NzI9c3RhdGljIGludCBfX2luaXQgYmNtYV9tb2Rpbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL2JjbWEvbWFpbi5jLTY3OS1cXG5kcml2ZXJzL2JjbWEvbWFpbi5jOjY4MDpcXHRlcnIgPSBiY21hX2hvc3Rfc29jX3JlZ2lzdGVyX2RyaXZlcigpO1xcbmRyaXZlcnMvYmNtYS9tYWluLmMtNjgxLVxcdGlmIChlcnIpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDI6NTU6MzUuNzQ0MDYzMDUxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUxNjc0NDQxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBCQ01BIEhvc3QgU09DIERyaXZlciBSZWdpc3RyYXRpb24qKlxuXG5SaWdodCwgYGJjbWFfaG9zdF9zb2NfcmVnaXN0ZXJfZHJpdmVyYCBpcyBiZWluZyBjYWxsZWQsIHdoaWNoIGlzIHN0YW5kYXJkIHByb2NlZHVyZS4gSXQncyBlc3NlbnRpYWxseSB0ZWxsaW5nIHRoZSBrZXJuZWwsIFwiSGV5LCB0aGVyZSdzIGEgbmV3IGRyaXZlciwgYGJjbWFfaG9zdF9zb2NfZHJpdmVyYCwgYXZhaWxhYmxlOyBiZSBvbiB0aGUgbG9va291dCBmb3IgaGFyZHdhcmUgdGhhdCBpdCBjYW4gaGFuZGxlLlwiIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIk9rYXksIGdvb2QuIE5vdywgd2hhdCBwbGF0Zm9ybSBJRHMgb3IgZGV2aWNlIHByb3BlcnRpZXMgaXMgdGhpcyBkcml2ZXIgZXhwZWN0aW5nPyBXaGF0IGNyaXRlcmlhIGRvZXMgaXQgdXNlIHRvIGRldGVybWluZSBpZiBpdCBzaG91bGQgdGFrZSByZXNwb25zaWJpbGl0eSBmb3IgYSBwaWVjZSBvZiBoYXJkd2FyZT9cIiBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIHByb2JlIG1hdGNoZXMuIEkgd2FudCB0byBzZWUgaG93IHRoZSBgYmNtYV9ob3N0X3NvY19kcml2ZXJgIGlzIGRlc2lnbmVkIHRvIGlkZW50aWZ5IGFuZCB3b3JrIHdpdGggcGFydGljdWxhciBoYXJkd2FyZSBjb25maWd1cmF0aW9ucy4gVGhpcyBoZWxwcyBtZSB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGUgZHJpdmVyIGFuZCBpdHMgaW50ZXJhY3Rpb24gd2l0aCB0aGUgdW5kZXJseWluZyBTT0MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaXQncyAqbG9va2luZyogZm9yIGluIG9yZGVyIHRvIGtub3cgKndoZXJlKiBpdCB3aWxsIGJlIGVmZmVjdGl2ZS4gTGV0J3Mgc2VlIHdoYXQgdGhhdCBkcml2ZXIgKmFjdHVhbGx5KiBtYXRjaGVzIGFnYWluc3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2ODQ3LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDI6NTU6MzkuMjYwODA5NTZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2OTYwNDcwNzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYmNtYV9ob3N0X3NvY19kcml2ZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9iY21hL2hvc3Rfc29jLmM9MjU2PU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGJjbWFfaG9zdF9zb2Nfb2ZfbWF0Y2gpO1xcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jLTI1Ny1cXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYzoyNTg6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYmNtYV9ob3N0X3NvY19kcml2ZXIgPSB7XFxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmMtMjU5LVxcdC5kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYz0yNjc9aW50IF9faW5pdCBiY21hX2hvc3Rfc29jX3JlZ2lzdGVyX2RyaXZlcih2b2lkKVxcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jLTI2OC17XFxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmM6MjY5OlxcdHJldHVybiBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXIoXFx1MDAyNmJjbWFfaG9zdF9zb2NfZHJpdmVyKTtcXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYy0yNzAtfVxcbi0tXFxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmM9MjcyPXZvaWQgX19leGl0IGJjbWFfaG9zdF9zb2NfdW5yZWdpc3Rlcl9kcml2ZXIodm9pZClcXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYy0yNzMte1xcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jOjI3NDpcXHRwbGF0Zm9ybV9kcml2ZXJfdW5yZWdpc3RlcihcXHUwMDI2YmNtYV9ob3N0X3NvY19kcml2ZXIpO1xcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jLTI3NS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAyOjU1OjQwLjk1Njg2MTgyNloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODAzMTU5NDU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdDpcblxuKipBbmFseXppbmcgdGhlIGBiY21hX2hvc3Rfc29jX29mX21hdGNoYCBGdW5jdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzIGBiY21hX2hvc3Rfc29jX29mX21hdGNoYCBmdW5jdGlvbi4gSW1tZWRpYXRlbHksIG15IGV4cGVydCBicmFpbiBraWNrcyBpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHB1cnBvc2Ugd2l0aGluIHRoZSBicm9hZGVyIGNvbnRleHQuIFwiYmNtYVwiIHN1Z2dlc3RzIEJyb2FkY29tLCBpbmRpY2F0aW5nIHRoaXMgaXMgcHJvYmFibHkgcmVsYXRlZCB0byB0aGVpciBDb21tdW5pY2F0aW9uIEFyY2hpdGVjdHVyZS4gXCJob3N0XCIgaW1wbGllcyBpdCdzIGRlYWxpbmcgd2l0aCB0aGUgaG9zdCBpbnRlcmZhY2UsIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gYSBzeXN0ZW0tb24tYS1jaGlwIChTb0MpIGFuZCB0aGUgaG9zdCBDUFUgb3Igb3RoZXIgY29tcG9uZW50cy4gXCJvZlwiIGFuZCBcIm1hdGNoXCIgaGludHMgYXQgYW4gYWRkcmVzcyB0YWJsZSBvciBsb29rdXAgcHJvY2Vzcy5cblxuVGhlcmVmb3JlLCBteSBpbml0aWFsIGh5cG90aGVzaXMgaXMgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGRlc2lnbmVkIHRvICoqZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgcGllY2Ugb2YgaGFyZHdhcmUgKGxpa2VseSBhIEJyb2FkY29tIFNvQykgaXMgY29tcGF0aWJsZSB3aXRoIGEgcGFydGljdWxhciBob3N0IGludGVyZmFjZSBiYXNlZCBvbiBhIERldmljZSBUcmVlIChEVCkgZW50cnkuKiogSXTigJlzIHByb2JhYmx5IGNoZWNraW5nIHByb3BlcnRpZXMgd2l0aGluIHRoZSBEVCB0byBzZWUgaWYgdGhleSBhbGlnbiB3aXRoIHRoZSBleHBlY3RlZCByZXF1aXJlbWVudHMgZm9yIHRoYXQgc3BlY2lmaWMgU29DLiBUaGlzIG1hdGNoaW5nIHByb2Nlc3MgaXMgY3J1Y2lhbC4gSXTigJlzIHRoZSBnYXRld2F5LCBkZXRlcm1pbmluZyBpZiB0aGUgZHJpdmVyIGlzIGxvYWRlZCBhbmQgdGhlIGhhcmR3YXJlIGlzIGNvcnJlY3RseSBpbml0aWFsaXplZC4gVGhlIGNvZGUgaGVyZSBpcyB0aGUgZ2F0ZWtlZXBlci5cblxuSSdtIGV4cGVjdGluZyB0aGlzIGZ1bmN0aW9uIHRvIGNvbXBhcmUgc29tZSBJRCBmaWVsZHMsIGxpa2UgYSBib2FyZCBpZGVudGlmaWVyLCBjaGlwc2V0IHZlcnNpb24sIG9yIHNwZWNpZmljIGRldmljZSBpZGVudGlmaWVycyBhZ2FpbnN0IHRoZSBEZXZpY2UgVHJlZSBkYXRhLiBQb3RlbnRpYWxseSwgaXQgY291bGQgZXhhbWluZSB0aGUgRFQgcHJvcGVydGllcyB0byBzZWUgaWYgdGhleSdyZSBhIFwicGVyZmVjdFwiIG1hdGNoLCBvciBpZiBzb21lIHRvbGVyYW5jZXMgb3Igd2lsZGNhcmRpbmcgYXJlIGludm9sdmVkIHRvIHN1cHBvcnQgYSByYW5nZSBvZiBCcm9hZGNvbSBTb0NzLiBJIGJldCB0aGVyZSBpcyBhbiBpbnRlcnJ1cHQgY29uZmlndXJhdGlvbiBoZXJlLCB0b28uIFRoZSBgb2ZgIHByZWZpeCBzdWdnZXN0cyBEZXZpY2UgVHJlZSBiaW5kaW5ncywgc28gaXTigJlzIGxpa2VseSB1c2luZyBEVCBwcm9wZXJ0aWVzIHRvIGNvbmZpZ3VyZSB0aGUgaGFyZHdhcmUsIGFuZCB0aGUgbWF0Y2ggaXMgcGFydCBvZiB2YWxpZGF0aW5nIHRoZSBjb3JyZWN0IGNvbmZpZ3VyYXRpb24gYW5kIGRyaXZlci4gTGV0J3Mgc2VlIGlmIG15IGRlZHVjdGlvbnMgYXJlIGNvcnJlY3QuIEkgbmVlZCB0byBzZWUgdGhlIGNvZGUgbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzQ1NSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAyOjU1OjQ0Ljc2MDAyNTIwMVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY5Mjk0NDU3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJiY21hX2hvc3Rfc29jX29mX21hdGNoXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jPTI0Mz1zdGF0aWMgdm9pZCBiY21hX2hvc3Rfc29jX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmMtMjUxLVxcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jOjI1MjpzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBiY21hX2hvc3Rfc29jX29mX21hdGNoW10gPSB7XFxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmMtMjUzLVxcdHsgLmNvbXBhdGlibGUgPSBcXFwiYnJjbSxidXMtYXhpXFxcIiwgfSxcXG4tLVxcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jLTI1NS19O1xcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jOjI1NjpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBiY21hX2hvc3Rfc29jX29mX21hdGNoKTtcXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYy0yNTctXFxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmM9MjU4PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGJjbWFfaG9zdF9zb2NfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmMtMjYwLVxcdFxcdC5uYW1lID0gXFxcImJjbWEtaG9zdC1zb2NcXFwiLFxcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jOjI2MTpcXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBiY21hX2hvc3Rfc29jX29mX21hdGNoLFxcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jLTI2Mi1cXHR9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMjo1NTo0Ni40NTI5NzcxMTdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODE1MzM3Mjk2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJDTUEgR1BJTyBJbml0aWFsaXphdGlvbiBQYXRoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXM6IGlmIHRoZSBkZXZpY2UgdHJlZSBpbmNsdWRlcyBcImJyY20sYnVzLWF4aSxcIiB0aGVuIGBiY21hX2hvc3Rfc29jX3Byb2JlYCB3aWxsIGJlIHRyaWdnZXJlZC4gVGhhdCdzIGNydWNpYWwgYmVjYXVzZSBgYmNtYV9ob3N0X3NvY19wcm9iZWAgc2V0cyBgYnVzLVx1MDAzZWhvc3R0eXBlYCB0byBgQkNNQV9IT1NUVFlQRV9TT0NgLCB3aGljaCBpcyB0aGVuIGVzc2VudGlhbCBmb3IgYGJjbWFfYnVzX3JlZ2lzdGVyYC4gSWYgdGhhdCBoYXBwZW5zLCB0aGUgYnVzIHdpbGwgYmUgc2Nhbm5lZCwgYW5kIGlmIGEgR1BJTyBjb250cm9sbGVyIGlzIGZvdW5kLCBgYmNtYV9ncGlvX2luaXRgIGdldHMgY2FsbGVkLlxuXG5UaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgd2UgY2FuIGluamVjdCBhIFwiYnJjbSxidXMtYXhpXCIgbm9kZSB2aWEgc3l6a2FsbGVyLiAgU3l6a2FsbGVyIGRvZXNuJ3QgdHlwaWNhbGx5IGp1c3QgKmluamVjdCogYXJiaXRyYXJ5IGRldmljZSB0cmVlIG5vZGVzIHVubGVzcyBpdCdzIGV4cGxpY2l0bHkgY29uZmlndXJlZCwgYW5kIEkgZG9uJ3QgdGhpbmsgd2UncmUgdXNpbmcgdGhvc2Ugc29ydHMgb2YgbWVjaGFuaXNtcyBieSBkZWZhdWx0LiBTbyB0aGF0J3MgcHJvYmFibHkgYSBuby1nby5cblxuTm93LCB3YWl0IGEgbWludXRlLi4uIHdoYXQgYWJvdXQgYGJjbTQ3eHhfYnV0dG9uc19hZGRgPyBUaGF0J3MgaW4gYGFyY2gvbWlwcy9iY200N3h4L2J1dHRvbnMuY2AuICBUaGF0J3MgZGVmaW5pdGVseSBNSVBTLXNwZWNpZmljLCBzbyBub3QgcmVsZXZhbnQgZm9yIG91ciB4ODYgb3IgQVJNNjQgc3l6a2FsbGVyIGluc3RhbmNlcy5cblxuT2theSwgbGV0J3Mgc3RlcCBiYWNrIGFuZCBjb25zaWRlciBgZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmNgIGlzIGNvbXBpbGVkIGZvciB4ODYgYW5kIEFSTSBpZiBgQ09ORklHX0JDTUFfRFJJVkVSX0dQSU9gIGlzIGVuYWJsZWQsIGV2ZW4gaWYgdGhhdCBtZWFucyB3ZSBuZWVkIGBDT05GSUdfQkNNQWAgdG8gYmUgZW5hYmxlZC5cblxuQnV0IGhlcmUncyB0aGUga2lja2VyOiBgYmNtYV9ncGlvX2luaXRgICpvbmx5KiByZWdpc3RlcnMgdGhlIHNvZnR3YXJlIG5vZGUgaWYgYGJ1cy1cdTAwM2Vob3N0dHlwZWAgaXMgYEJDTUFfSE9TVFRZUEVfU09DYC4gQW5kIHRoYXQgYEJDTUFfSE9TVFRZUEVfU09DYCBvbmx5IGdldHMgc2V0IGlmIGVpdGhlciBgYmNtYV9ob3N0X3NvY19wcm9iZWAgaXMgY2FsbGVkICh3aGljaCB3ZSBhbHJlYWR5IGtub3cgZGVwZW5kcyBvbiB0aGUgXCJicmNtLGJ1cy1heGlcIiBEVCBub2RlKSBvciBgYmNtYV9ob3N0X3NvY19yZWdpc3RlcmAgZ2V0cyBjYWxsZWQgZnJvbSB0aGUgTUlQUyBgYmNtNDd4eF9yZWdpc3Rlcl9iY21hYCByb3V0aW5lLlxuXG5Tbywgb24geDg2LCB3ZSdkIG5lZWQgdGhhdCBcImJyY20sYnVzLWF4aVwiIGluIHRoZSBEVC4gSG93ZXZlciwgc3l6a2FsbGVyIG9uIHg4NiBkb2Vzbid0IHVzZSBhIGRldmljZSB0cmVlLlxuXG5UaGVuLCB3aGF0IGFib3V0IEFSTS9BUk02ND8gIFN5emthbGxlciAqb24qIEFSTTY0IG1pZ2h0IHVzZSBhIERULCBidXQgdHlwaWNhbGx5IGEgZml4ZWQgb25lIHByb3ZpZGVkIGJ5IFFFTVUgKGUuZy4sIHRoZSBgdmlydGAgbWFjaGluZSkuIEFuZCAqdGhhdCogRFQgd29uJ3QgaGF2ZSBcImJyY20sYnVzLWF4aVwiIGluIGl0LlxuXG5UaGUgY29uY2x1c2lvbiBpcyB0aGF0IGBiY21hX2dwaW9faW5pdGAgd2lsbCAqbmV2ZXIqIHNlZSBgQkNNQV9IT1NUVFlQRV9TT0NgIGluIG91ciBzeXprYWxsZXIgaW5zdGFuY2VzIG9uIHg4NiBvciBBUk02NC5cblxuT2theSwgd2hhdCBhYm91dCBgc3NiX2dwaW9faW5pdGA/IFRoYXQgZGVwZW5kcyBvbiBgYnVzLVx1MDAzZWJ1c3R5cGUgPT0gU1NCX0JVU1RZUEVfU1NCYCB3aGljaCBpc24ndCB0aGUgY3VycmVudCBwYXRoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODE4OSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMjo1NTo1NC42MDYzNTI3MDlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MTkxNjEzMTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiU1NCX0JVU1RZUEVfU1NCXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vYmNtNDd4eF9zcHJvbS5jPTU5NT1zdGF0aWMgaW50IGJjbTQ3eHhfZ2V0X3Nwcm9tX3NzYihzdHJ1Y3Qgc3NiX2J1cyAqYnVzLCBzdHJ1Y3Qgc3NiX3Nwcm9tICpvdXQpXFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2Jyb2FkY29tL2JjbTQ3eHhfc3Byb20uYy01OTktXFx0c3dpdGNoIChidXMtXFx1MDAzZWJ1c3R5cGUpIHtcXG5kcml2ZXJzL2Zpcm13YXJlL2Jyb2FkY29tL2JjbTQ3eHhfc3Byb20uYzo2MDA6XFx0Y2FzZSBTU0JfQlVTVFlQRV9TU0I6XFxuZHJpdmVycy9maXJtd2FyZS9icm9hZGNvbS9iY200N3h4X3Nwcm9tLmMtNjAxLVxcdFxcdGJjbTQ3eHhfZmlsbF9zcHJvbShvdXQsIE5VTEwsIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jPTEyNTY9c3RhdGljIHZvaWQgYjQ0X2NoaXBfcmVzZXQoc3RydWN0IGI0NCAqYnAsIGludCByZXNldF9raW5kKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMTI4OS1cXHRzd2l0Y2ggKHNkZXYtXFx1MDAzZWJ1cy1cXHUwMDNlYnVzdHlwZSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jOjEyOTA6XFx0Y2FzZSBTU0JfQlVTVFlQRV9TU0I6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMTI5MS1cXHRcXHRidzMyKGJwLCBCNDRfTURJT19DVFJMLCAoTURJT19DVFJMX1BSRUFNQkxFIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jPTE1Nzg9c3RhdGljIHZvaWQgYjQ0X3NldHVwX3dvbF9wY2koc3RydWN0IGI0NCAqYnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYy0xNTgxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jOjE1ODI6XFx0aWYgKGJwLVxcdTAwM2VzZGV2LVxcdTAwM2VidXMtXFx1MDAzZWJ1c3R5cGUgIT0gU1NCX0JVU1RZUEVfU1NCKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMTU4My1cXHRcXHRidzMyKGJwLCBTU0JfVE1TTE9XLCBicjMyKGJwLCBTU0JfVE1TTE9XKSB8IFNTQl9UTVNMT1dfUEUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM9MTc2Nz1zdGF0aWMgdm9pZCBiNDRfZ2V0X2RydmluZm8gKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBldGh0b29sX2RydmluZm8gKmluZm8pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYy0xNzc2LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jOjE3Nzc6XFx0Y2FzZSBTU0JfQlVTVFlQRV9TU0I6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMTc3OC1cXHRcXHRzdHJzY3B5KGluZm8tXFx1MDAzZWJ1c19pbmZvLCBcXFwiU1NCXFxcIiwgc2l6ZW9mKGluZm8tXFx1MDAzZWJ1c19pbmZvKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYz0yMTQxPXN0YXRpYyBpbnQgYjQ0X2dldF9pbnZhcmlhbnRzKHN0cnVjdCBiNDQgKmJwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjE0OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYzoyMTQ5OlxcdGlmIChzZGV2LVxcdTAwM2VidXMtXFx1MDAzZWJ1c3R5cGUgPT0gU1NCX0JVU1RZUEVfU1NCIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjE1MC1cXHQgICAgaW5zdGFuY2UgXFx1MDAzZSAxKSB7XFxuLS1cXG5kcml2ZXJzL3NzYi9kcml2ZXJfY2hpcGNvbW1vbi5jPTExOT1zdGF0aWMgZW51bSBzc2JfY2xrc3JjIGNoaXBjb19wY3RsX2dldF9zbG93Y2xrc3JjKHN0cnVjdCBzc2JfY2hpcGNvbW1vbiAqY2MpXFxuLS1cXG5kcml2ZXJzL3NzYi9kcml2ZXJfY2hpcGNvbW1vbi5jLTEyNC1cXHRpZiAoY2MtXFx1MDAzZWRldi1cXHUwMDNlaWQucmV2aXNpb24gXFx1MDAzYyA2KSB7XFxuZHJpdmVycy9zc2IvZHJpdmVyX2NoaXBjb21tb24uYzoxMjU6XFx0XFx0aWYgKGJ1cy1cXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IgfHxcXG5kcml2ZXJzL3NzYi9kcml2ZXJfY2hpcGNvbW1vbi5jLTEyNi1cXHRcXHQgICAgYnVzLVxcdTAwM2VidXN0eXBlID09IFNTQl9CVVNUWVBFX1BDTUNJQSlcXG4tLVxcbmRyaXZlcnMvc3NiL2RyaXZlcl9jaGlwY29tbW9uLmM9MzExPXUzMiBzc2JfY2hpcGNvX3dhdGNoZG9nX3RpbWVyX3NldF93ZHQoc3RydWN0IGJjbTQ3eHhfd2R0ICp3ZHQsIHUzMiB0aWNrcylcXG4tLVxcbmRyaXZlcnMvc3NiL2RyaXZlcl9jaGlwY29tbW9uLmMtMzE0LVxcbmRyaXZlcnMvc3NiL2RyaXZlcl9jaGlwY29tbW9uLmM6MzE1OlxcdGlmIChjYy1cXHUwMDNlZGV2LVxcdTAwM2VidXMtXFx1MDAzZWJ1c3R5cGUgIT0gU1NCX0JVU1RZUEVfU1NCKVxcbmRyaXZlcnMvc3NiL2RyaXZlcl9jaGlwY29tbW9uLmMtMzE2LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9zc2IvZHJpdmVyX2NoaXBjb21tb24uYz0zMjE9dTMyIHNzYl9jaGlwY29fd2F0Y2hkb2dfdGltZXJfc2V0X21zKHN0cnVjdCBiY200N3h4X3dkdCAqd2R0LCB1MzIgbXMpXFxuLS1cXG5kcml2ZXJzL3NzYi9kcml2ZXJfY2hpcGNvbW1vbi5jLTMyNS1cXG5kcml2ZXJzL3NzYi9kcml2ZXJfY2hpcGNvbW1vbi5jOjMyNjpcXHRpZiAoY2MtXFx1MDAzZWRldi1cXHUwMDNlYnVzLVxcdTAwM2VidXN0eXBlICE9IFNTQl9CVVNUWVBFX1NTQilcXG5kcml2ZXJzL3NzYi9kcml2ZXJfY2hpcGNvbW1vbi5jLTMyNy1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvc3NiL2RyaXZlcl9jaGlwY29tbW9uLmM9MzQ4PXZvaWQgc3NiX2NoaXBjb21tb25faW5pdChzdHJ1Y3Qgc3NiX2NoaXBjb21tb24gKmNjKVxcbi0tXFxuZHJpdmVycy9zc2IvZHJpdmVyX2NoaXBjb21tb24uYy0zNjgtXFxuZHJpdmVycy9zc2IvZHJpdmVyX2NoaXBjb21tb24uYzozNjk6XFx0aWYgKGNjLVxcdTAwM2VkZXYtXFx1MDAzZWJ1cy1cXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpIHtcXG5kcml2ZXJzL3NzYi9kcml2ZXJfY2hpcGNvbW1vbi5jLTM3MC1cXHRcXHRjYy1cXHUwMDNldGlja3NfcGVyX21zID0gc3NiX2NoaXBjb193YXRjaGRvZ190aWNrc19wZXJfbXMoY2MpO1xcbi0tXFxuZHJpdmVycy9zc2IvZHJpdmVyX2NoaXBjb21tb25fcG11LmM9MzE3PXN0YXRpYyB2b2lkIHNzYl9wbXVfcGxsX2luaXQoc3RydWN0IHNzYl9jaGlwY29tbW9uICpjYylcXG4tLVxcbmRyaXZlcnMvc3NiL2RyaXZlcl9jaGlwY29tbW9uX3BtdS5jLTMyMS1cXG5kcml2ZXJzL3NzYi9kcml2ZXJfY2hpcGNvbW1vbl9wbXUuYzozMjI6XFx0aWYgKGJ1cy1cXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpIHtcXG5kcml2ZXJzL3NzYi9kcml2ZXJfY2hpcGNvbW1vbl9wbXUuYy0zMjMtI2lmZGVmIENPTkZJR19CQ000N1hYXFxuLS1cXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jPTMyPXN0YXRpYyBpbnQgc3NiX2dwaW9fdG9faXJxKHN0cnVjdCBncGlvX2NoaXAgKmNoaXAsIHVuc2lnbmVkIGludCBncGlvKVxcbi0tXFxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYy0zNS1cXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jOjM2OlxcdGlmIChidXMtXFx1MDAzZWJ1c3R5cGUgPT0gU1NCX0JVU1RZUEVfU1NCKVxcbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmMtMzctXFx0XFx0cmV0dXJuIGlycV9maW5kX21hcHBpbmcoYnVzLVxcdTAwM2VpcnFfZG9tYWluLCBncGlvKTtcXG4tLVxcbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmM9MTUwPXN0YXRpYyBpbnQgc3NiX2dwaW9faXJxX2NoaXBjb19kb21haW5faW5pdChzdHJ1Y3Qgc3NiX2J1cyAqYnVzKVxcbi0tXFxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYy0xNTUtXFxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYzoxNTY6XFx0aWYgKGJ1cy1cXHUwMDNlYnVzdHlwZSAhPSBTU0JfQlVTVFlQRV9TU0IpXFxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYy0xNTctXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jPTE5NT1zdGF0aWMgdm9pZCBzc2JfZ3Bpb19pcnFfY2hpcGNvX2RvbWFpbl9leGl0KHN0cnVjdCBzc2JfYnVzICpidXMpXFxuLS1cXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jLTIwMC1cXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jOjIwMTpcXHRpZiAoYnVzLVxcdTAwM2VidXN0eXBlICE9IFNTQl9CVVNUWVBFX1NTQilcXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jLTIwMi1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jPTIyND1zdGF0aWMgaW50IHNzYl9ncGlvX2NoaXBjb19pbml0KHN0cnVjdCBzc2JfYnVzICpidXMpXFxuLS1cXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jLTI0MC1cXHRjaGlwLVxcdTAwM2VuZ3Bpb1xcdFxcdD0gMTY7XFxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYzoyNDE6XFx0aWYgKGJ1cy1cXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpXFxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYy0yNDItXFx0XFx0Y2hpcC1cXHUwMDNlZndub2RlXFx0PSBzb2Z0d2FyZV9ub2RlX2Z3bm9kZShcXHUwMDI2c3NiX2dwaW9fc3dub2RlKTtcXG4tLVxcbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmMtMjQ2LVxcdCAqL1xcbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmM6MjQ3OlxcdGlmIChidXMtXFx1MDAzZWJ1c3R5cGUgPT0gU1NCX0JVU1RZUEVfU1NCKVxcbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmMtMjQ4LVxcdFxcdGNoaXAtXFx1MDAzZWJhc2VcXHRcXHQ9IDA7XFxuLS1cXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jPTM1Mz1zdGF0aWMgaW50IHNzYl9ncGlvX2lycV9leHRpZl9kb21haW5faW5pdChzdHJ1Y3Qgc3NiX2J1cyAqYnVzKVxcbi0tXFxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYy0zNTgtXFxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYzozNTk6XFx0aWYgKGJ1cy1cXHUwMDNlYnVzdHlwZSAhPSBTU0JfQlVTVFlQRV9TU0IpXFxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYy0zNjAtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jPTM5Nz1zdGF0aWMgdm9pZCBzc2JfZ3Bpb19pcnFfZXh0aWZfZG9tYWluX2V4aXQoc3RydWN0IHNzYl9idXMgKmJ1cylcXG4tLVxcbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmMtNDAyLVxcbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmM6NDAzOlxcdGlmIChidXMtXFx1MDAzZWJ1c3R5cGUgIT0gU1NCX0JVU1RZUEVfU1NCKVxcbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmMtNDA0LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmM9NDI1PXN0YXRpYyBpbnQgc3NiX2dwaW9fZXh0aWZfaW5pdChzdHJ1Y3Qgc3NiX2J1cyAqYnVzKVxcbi0tXFxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYy00NDMtXFx0ICovXFxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYzo0NDQ6XFx0aWYgKGJ1cy1cXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpIHtcXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jLTQ0NS1cXHRcXHRjaGlwLVxcdTAwM2ViYXNlXFx0PSAwO1xcbi0tXFxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYz00NzU9aW50IHNzYl9ncGlvX2luaXQoc3RydWN0IHNzYl9idXMgKmJ1cylcXG4tLVxcbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmMtNDgzLVxcdCAqL1xcbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmM6NDg0OlxcdGlmIChidXMtXFx1MDAzZWJ1c3R5cGUgPT0gU1NCX0JVU1RZUEVfU1NCKSB7XFxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYy00ODUtXFx0XFx0ZXJyID0gc29mdHdhcmVfbm9kZV9yZWdpc3RlcihcXHUwMDI2c3NiX2dwaW9fc3dub2RlKTtcXG4tLVxcbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmMtNDk3LVxcdGlmIChlcnIpIHtcXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jOjQ5ODpcXHRcXHRpZiAoYnVzLVxcdTAwM2VidXN0eXBlID09IFNTQl9CVVNUWVBFX1NTQilcXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jLTQ5OS1cXHRcXHRcXHRzb2Z0d2FyZV9ub2RlX3VucmVnaXN0ZXIoXFx1MDAyNnNzYl9ncGlvX3N3bm9kZSk7XFxuLS1cXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jPTUwNj1pbnQgc3NiX2dwaW9fdW5yZWdpc3RlcihzdHJ1Y3Qgc3NiX2J1cyAqYnVzKVxcbi0tXFxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYy01MTAtXFx0XFx0Z3Bpb2NoaXBfcmVtb3ZlKFxcdTAwMjZidXMtXFx1MDAzZWdwaW8pO1xcbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmM6NTExOlxcdFxcdGlmIChidXMtXFx1MDAzZWJ1c3R5cGUgPT0gU1NCX0JVU1RZUEVfU1NCKVxcbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmMtNTEyLVxcdFxcdFxcdHNvZnR3YXJlX25vZGVfdW5yZWdpc3RlcihcXHUwMDI2c3NiX2dwaW9fc3dub2RlKTtcXG4tLVxcbmRyaXZlcnMvc3NiL21haW4uYz00MTU9c3RhdGljIHZvaWQgc3NiX2RldmljZXNfdW5yZWdpc3RlcihzdHJ1Y3Qgc3NiX2J1cyAqYnVzKVxcbi0tXFxuZHJpdmVycy9zc2IvbWFpbi5jLTQyNi0jaWZkZWYgQ09ORklHX1NTQl9FTUJFRERFRFxcbmRyaXZlcnMvc3NiL21haW4uYzo0Mjc6XFx0aWYgKGJ1cy1cXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpXFxuZHJpdmVycy9zc2IvbWFpbi5jLTQyOC1cXHRcXHRwbGF0Zm9ybV9kZXZpY2VfdW5yZWdpc3RlcihidXMtXFx1MDAzZXdhdGNoZG9nKTtcXG4tLVxcbmRyaXZlcnMvc3NiL21haW4uYz00NTk9c3RhdGljIGludCBzc2JfZGV2aWNlc19yZWdpc3RlcihzdHJ1Y3Qgc3NiX2J1cyAqYnVzKVxcbi0tXFxuZHJpdmVycy9zc2IvbWFpbi5jLTUxNC1cXHRcXHRcXHRicmVhaztcXG5kcml2ZXJzL3NzYi9tYWluLmM6NTE1OlxcdFxcdGNhc2UgU1NCX0JVU1RZUEVfU1NCOlxcbmRyaXZlcnMvc3NiL21haW4uYy01MTYtXFx0XFx0XFx0ZGV2LVxcdTAwM2VkbWFfbWFzayA9IFxcdTAwMjZkZXYtXFx1MDAzZWNvaGVyZW50X2RtYV9tYXNrO1xcbi0tXFxuZHJpdmVycy9zc2IvbWFpbi5jPTU1OT1zdGF0aWMgaW50IHNzYl9hdHRhY2hfcXVldWVkX2J1c2VzKHZvaWQpXFxuLS1cXG5kcml2ZXJzL3NzYi9tYWluLmMtNTc3LVxcdFxcdHNzYl9wY2ljb3JlX2luaXQoXFx1MDAyNmJ1cy1cXHUwMDNlcGNpY29yZSk7XFxuZHJpdmVycy9zc2IvbWFpbi5jOjU3ODpcXHRcXHRpZiAoYnVzLVxcdTAwM2VidXN0eXBlID09IFNTQl9CVVNUWVBFX1NTQilcXG5kcml2ZXJzL3NzYi9tYWluLmMtNTc5LVxcdFxcdFxcdHNzYl93YXRjaGRvZ19yZWdpc3RlcihidXMpO1xcbi0tXFxuZHJpdmVycy9zc2IvbWFpbi5jPTc3ND1pbnQgc3NiX2J1c19ob3N0X3NvY19yZWdpc3RlcihzdHJ1Y3Qgc3NiX2J1cyAqYnVzLCB1bnNpZ25lZCBsb25nIGJhc2VhZGRyKVxcbi0tXFxuZHJpdmVycy9zc2IvbWFpbi5jLTc3Ny1cXG5kcml2ZXJzL3NzYi9tYWluLmM6Nzc4OlxcdGJ1cy1cXHUwMDNlYnVzdHlwZSA9IFNTQl9CVVNUWVBFX1NTQjtcXG5kcml2ZXJzL3NzYi9tYWluLmMtNzc5LVxcdGJ1cy1cXHUwMDNlb3BzID0gXFx1MDAyNnNzYl9ob3N0X3NvY19vcHM7XFxuLS1cXG5kcml2ZXJzL3NzYi9tYWluLmM9MTEzMz11MzIgc3NiX2RtYV90cmFuc2xhdGlvbihzdHJ1Y3Qgc3NiX2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9zc2IvbWFpbi5jLTExMzUtXFx0c3dpdGNoIChkZXYtXFx1MDAzZWJ1cy1cXHUwMDNlYnVzdHlwZSkge1xcbmRyaXZlcnMvc3NiL21haW4uYzoxMTM2OlxcdGNhc2UgU1NCX0JVU1RZUEVfU1NCOlxcbmRyaXZlcnMvc3NiL21haW4uYy0xMTM3LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9zc2IvbWFpbi5jPTExNTU9aW50IHNzYl9idXNfbWF5X3Bvd2VyZG93bihzdHJ1Y3Qgc3NiX2J1cyAqYnVzKVxcbi0tXFxuZHJpdmVycy9zc2IvbWFpbi5jLTExNjMtXFx0ICovXFxuZHJpdmVycy9zc2IvbWFpbi5jOjExNjQ6XFx0aWYgKGJ1cy1cXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpXFxuZHJpdmVycy9zc2IvbWFpbi5jLTExNjUtXFx0XFx0Z290byBvdXQ7XFxuLS1cXG5kcml2ZXJzL3NzYi9zY2FuLmM9MTYwPXN0YXRpYyB1MzIgc2Nhbl9yZWFkMzIoc3RydWN0IHNzYl9idXMgKmJ1cywgdTggY3VycmVudF9jb3JlaWR4LFxcbi0tXFxuZHJpdmVycy9zc2Ivc2Nhbi5jLTE2NS1cXHRzd2l0Y2ggKGJ1cy1cXHUwMDNlYnVzdHlwZSkge1xcbmRyaXZlcnMvc3NiL3NjYW4uYzoxNjY6XFx0Y2FzZSBTU0JfQlVTVFlQRV9TU0I6XFxuZHJpdmVycy9zc2Ivc2Nhbi5jLTE2Ny1cXHRcXHRvZmZzZXQgKz0gY3VycmVudF9jb3JlaWR4ICogU1NCX0NPUkVfU0laRTtcXG4tLVxcbmRyaXZlcnMvc3NiL3NjYW4uYz0xODc9c3RhdGljIGludCBzY2FuX3N3aXRjaGNvcmUoc3RydWN0IHNzYl9idXMgKmJ1cywgdTggY29yZWlkeClcXG4tLVxcbmRyaXZlcnMvc3NiL3NjYW4uYy0xODktXFx0c3dpdGNoIChidXMtXFx1MDAzZWJ1c3R5cGUpIHtcXG5kcml2ZXJzL3NzYi9zY2FuLmM6MTkwOlxcdGNhc2UgU1NCX0JVU1RZUEVfU1NCOlxcbmRyaXZlcnMvc3NiL3NjYW4uYy0xOTEtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL3NzYi9zY2FuLmM9MjAyPXZvaWQgc3NiX2lvdW5tYXAoc3RydWN0IHNzYl9idXMgKmJ1cylcXG4tLVxcbmRyaXZlcnMvc3NiL3NjYW4uYy0yMDQtXFx0c3dpdGNoIChidXMtXFx1MDAzZWJ1c3R5cGUpIHtcXG5kcml2ZXJzL3NzYi9zY2FuLmM6MjA1OlxcdGNhc2UgU1NCX0JVU1RZUEVfU1NCOlxcbmRyaXZlcnMvc3NiL3NjYW4uYy0yMDYtXFx0Y2FzZSBTU0JfQlVTVFlQRV9QQ01DSUE6XFxuLS1cXG5kcml2ZXJzL3NzYi9zY2FuLmM9MjIzPXN0YXRpYyB2b2lkIF9faW9tZW0gKnNzYl9pb3JlbWFwKHN0cnVjdCBzc2JfYnVzICpidXMsXFxuLS1cXG5kcml2ZXJzL3NzYi9zY2FuLmMtMjI4LVxcdHN3aXRjaCAoYnVzLVxcdTAwM2VidXN0eXBlKSB7XFxuZHJpdmVycy9zc2Ivc2Nhbi5jOjIyOTpcXHRjYXNlIFNTQl9CVVNUWVBFX1NTQjpcXG5kcml2ZXJzL3NzYi9zY2FuLmMtMjMwLVxcdFxcdC8qIE9ubHkgbWFwIHRoZSBmaXJzdCBjb3JlIGZvciBub3cuICovXFxuLS1cXG5kcml2ZXJzL3NzYi9zY2FuLmM9MjcxPWludCBzc2JfYnVzX3NjYW4oc3RydWN0IHNzYl9idXMgKmJ1cyxcXG4tLVxcbmRyaXZlcnMvc3NiL3NjYW4uYy0zMzAtXFx0fVxcbmRyaXZlcnMvc3NiL3NjYW4uYzozMzE6XFx0aWYgKGJ1cy1cXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpIHtcXG5kcml2ZXJzL3NzYi9zY2FuLmMtMzMyLVxcdFxcdC8qIE5vdyB0aGF0IHdlIGtub3cgdGhlIG51bWJlciBvZiBjb3JlcyxcXG4tLVxcbmluY2x1ZGUvbGludXgvc3NiL3NzYi5oPTMzOT1lbnVtIHNzYl9idXN0eXBlIHtcXG5pbmNsdWRlL2xpbnV4L3NzYi9zc2IuaDozNDA6XFx0U1NCX0JVU1RZUEVfU1NCLFxcdC8qIFRoaXMgU1NCIGJ1cyBpcyB0aGUgc3lzdGVtIGJ1cyAqL1xcbmluY2x1ZGUvbGludXgvc3NiL3NzYi5oLTM0MS1cXHRTU0JfQlVTVFlQRV9QQ0ksXFx0LyogU1NCIGlzIGNvbm5lY3RlZCB0byBQQ0kgYnVzICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAyOjU1OjU2LjMyNTUxOTMzNFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODY2OTU4ODU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIFNTQl9CVVNUWVBFX1NTQiBSZWdpc3RyYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyBgU1NCX0JVU1RZUEVfU1NCYCBpcyBiZWluZyBpbml0aWFsaXplZCB3aXRoaW4gYHNzYl9idXNfaG9zdF9zb2NfcmVnaXN0ZXJgLiBUaGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6ICp3aGVyZSogYW5kICp3aHkqIGlzIGBzc2JfYnVzX2hvc3Rfc29jX3JlZ2lzdGVyYCBiZWluZyBjYWxsZWQ/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc2l0ZXMgaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgb2YgdGhpcyBidXMgdHlwZSByZWdpc3RyYXRpb24uIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhhdCBmdW5jdGlvbiBhbmQgc2VlIHdoYXQncyBzZXR0aW5nIGl0IHVwLiBLbm93aW5nIHRoZSBicm9hZGVyIGNhbGwgc3RhY2sgYXJvdW5kIGBzc2JfYnVzX2hvc3Rfc29jX3JlZ2lzdGVyYCB3aWxsIGlsbHVtaW5hdGUgaXRzIHB1cnBvc2Ugd2l0aGluIHRoZSBzeXN0ZW0sIHJldmVhbGluZyB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgYW5kIGRlcGVuZGVuY2llcy4gTGV0J3MgZGlnIGluIGFuZCBmaWd1cmUgb3V0IHRoZSB1cHN0cmVhbSBsb2dpYy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMzOTYsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMjo1NTo1OS4xOTI0ODA2OTNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NzA1NTcwOTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3NiX2J1c19ob3N0X3NvY19yZWdpc3RlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL21pcHMvYmNtNDd4eC9zZXR1cC5jPTExMz1zdGF0aWMgdm9pZCBfX2luaXQgYmNtNDd4eF9yZWdpc3Rlcl9zc2Iodm9pZClcXG4tLVxcbmFyY2gvbWlwcy9iY200N3h4L3NldHVwLmMtMTE4LVxcbmFyY2gvbWlwcy9iY200N3h4L3NldHVwLmM6MTE5OlxcdGVyciA9IHNzYl9idXNfaG9zdF9zb2NfcmVnaXN0ZXIoXFx1MDAyNmJjbTQ3eHhfYnVzLnNzYiwgU1NCX0VOVU1fQkFTRSk7XFxuYXJjaC9taXBzL2JjbTQ3eHgvc2V0dXAuYy0xMjAtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvc3NiL21haW4uYz03NzA9RVhQT1JUX1NZTUJPTChzc2JfYnVzX3NkaW9idXNfcmVnaXN0ZXIpO1xcbi0tXFxuZHJpdmVycy9zc2IvbWFpbi5jLTc3My0jaWZkZWYgQ09ORklHX1NTQl9IT1NUX1NPQ1xcbmRyaXZlcnMvc3NiL21haW4uYzo3NzQ6aW50IHNzYl9idXNfaG9zdF9zb2NfcmVnaXN0ZXIoc3RydWN0IHNzYl9idXMgKmJ1cywgdW5zaWduZWQgbG9uZyBiYXNlYWRkcilcXG5kcml2ZXJzL3NzYi9tYWluLmMtNzc1LXtcXG4tLVxcbmluY2x1ZGUvbGludXgvc3NiL3NzYi5oPTUyMz10eXBlZGVmIGludCAoKnNzYl9pbnZhcmlhbnRzX2Z1bmNfdCkoc3RydWN0IHNzYl9idXMgKmJ1cyxcXG4tLVxcbmluY2x1ZGUvbGludXgvc3NiL3NzYi5oLTUyNi0vKiBSZWdpc3RlciBTb0MgYnVzLiAqL1xcbmluY2x1ZGUvbGludXgvc3NiL3NzYi5oOjUyNzpleHRlcm4gaW50IHNzYl9idXNfaG9zdF9zb2NfcmVnaXN0ZXIoc3RydWN0IHNzYl9idXMgKmJ1cyxcXG5pbmNsdWRlL2xpbnV4L3NzYi9zc2IuaC01MjgtXFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBsb25nIGJhc2VhZGRyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDI6NTY6MDEuMDYzMDQ0OTQ2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxMDY0OTIxODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nPUZhbHNlOiBBIE1JUFMtU3BlY2lmaWMgRGVhZCBFbmQqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoaXMgY29kZSBwYXRoLCB0aGUgb25lIHRoZSBwYXRjaCB0b3VjaGVzLCBpcyBleGNsdXNpdmVseSBjYWxsZWQgZnJvbSBgYXJjaC9taXBzL2JjbTQ3eHgvc2V0dXAuY2AuIFRoYXQgbWVhbnMgdGhlIGBTU0JfQlVTVFlQRV9TU0JgIGRlc2lnbmF0aW9uLCB3aGljaCBpcyBrZXkgaGVyZSwgaXMgKm9ubHkqIHNldCBvbiBNSVBTIEJDTTQ3eHggc3lzdGVtcy4gTm93LCB0aGUga2lja2VyIGlzIHRoYXQgc3l6a2FsbGVyLCBvdXIgcHJpbWFyeSBmdXp6aW5nIHRvb2wsIGRvZXNuJ3QgZXZlbiB0b3VjaCBNSVBTIEJDTTQ3eHggYXJjaGl0ZWN0dXJlcy4gU28sIGluaGVyZW50bHksIHRoaXMgc3BlY2lmaWMgY29kZSBpcyBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIHdpdGhpbiBvdXIgdmlydHVhbGl6ZWQgdGVzdGluZyBlbnZpcm9ubWVudHMuXG5cblRoZSBwYXRjaCBpdHNlbGYgaXMgYWJvdXQgcmVmYWN0b3JpbmcgdGhlIEJDTTQ3eHggYnV0dG9ucyBkcml2ZXIgdG8gdXRpbGl6ZSBzb2Z0d2FyZSBub2RlcyBpbnN0ZWFkIG9mIGBncGlvX2tleXNfcGxhdGZvcm1fZGF0YWAuIEhvd2V2ZXIsIHRoZSBzY29wZSBvZiB0aGVzZSBjaGFuZ2VzIGlzIHN0cmljdGx5IGxpbWl0ZWQuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgbW9kaWZpY2F0aW9ucyB3aXRoaW46XG5cbiogICBgYXJjaC9taXBzL2JjbTQ3eHgvYnV0dG9ucy5jYFxuKiAgIGBkcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uY2AgKGJ1dCBvbmx5IHdoZW4gYGJ1cy1cdTAwM2Vob3N0dHlwZSA9PSBCQ01BX0hPU1RUWVBFX1NPQ2ApXG4qICAgYGRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmNgIChleGNsdXNpdmVseSB3aGVuIGBidXMtXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0JgKVxuKiAgIGBpbmNsdWRlL2xpbnV4L2JjbWEvYmNtYS5oYFxuKiAgIGBpbmNsdWRlL2xpbnV4L3NzYi9zc2IuaGBcblxuQWxsIG9mIHRoZXNlIGFyZWFzIGFyZSBlaXRoZXIgaW5oZXJlbnRseSBNSVBTLXNwZWNpZmljIG9yIGFyZSBjb250aW5nZW50IG9uIHRoYXQgdmVyeSBzcGVjaWZpYyBCQ000N3h4IFNvQy4gQ29uc2lkZXJpbmcgb3VyIHRlc3RpbmcgaW5mcmFzdHJ1Y3R1cmUgcmV2b2x2ZXMgYXJvdW5kIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCB0aGUgY29kZSBwYXRocyB0b3VjaGVkIGJ5IHRoaXMgcGF0Y2ggYXJlIGZ1bmRhbWVudGFsbHkgdW5yZWFjaGFibGUuIFRoZXJlZm9yZSwgYmFzZWQgb24gdGhpcyBhbmFseXNpcywgSSdtIGNvbWZvcnRhYmxlIHJldHVybmluZyBXb3J0aEZ1enppbmc9ZmFsc2UuIFRoZXJlJ3Mgbm8gdmFsdWUgaW4gZXhwZW5kaW5nIHJlc291cmNlcyB0byBhbmFseXplIHRoaXM7IGl0J3MgYSBkZWFkIGVuZCBhcyBmYXIgYXMgb3VyIGN1cnJlbnQgdGVzdGluZyBjYXBhYmlsaXRpZXMgZ28uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MDI2LCJPdXRwdXRUb2tlbnMiOjEyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMjo1NjowNy4xNjk1NDAyNjhaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQkNNNDd4eCBidXR0b25zIGRyaXZlciBhbmQgYXNzb2NpYXRlZCBCQ01BL1NTQiBHUElPIGRyaXZlcnMgdG8gdXNlIHNvZnR3YXJlIG5vZGVzIGluc3RlYWQgb2YgcGxhdGZvcm0gZGF0YS4gVGhlc2UgY2hhbmdlcyBhcmUgc3BlY2lmaWMgdG8gdGhlIE1JUFMgQkNNNDd4eCBhcmNoaXRlY3R1cmUgYW5kIGl0cyBTb0MgYnVzZXMgKEJDTUFfSE9TVFRZUEVfU09DIGFuZCBTU0JfQlVTVFlQRV9TU0IpLiBTaW5jZSBzeXprYWxsZXIgZG9lcyBub3QgZnV6eiBNSVBTIEJDTTQ3eHggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCQ000N3h4IGJ1dHRvbnMgZHJpdmVyIGFuZCBhc3NvY2lhdGVkIEJDTUEvU1NCIEdQSU8gZHJpdmVycyB0byB1c2Ugc29mdHdhcmUgbm9kZXMgaW5zdGVhZCBvZiBwbGF0Zm9ybSBkYXRhLiBUaGVzZSBjaGFuZ2VzIGFyZSBzcGVjaWZpYyB0byB0aGUgTUlQUyBCQ000N3h4IGFyY2hpdGVjdHVyZSBhbmQgaXRzIFNvQyBidXNlcyAoQkNNQV9IT1NUVFlQRV9TT0MgYW5kIFNTQl9CVVNUWVBFX1NTQikuIFNpbmNlIHN5emthbGxlciBkb2VzIG5vdCBmdXp6IE1JUFMgQkNNNDd4eCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowgphbc[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-14 02:48:19 +0000 UTC FinishedAt: 2026-07-14 02:56:09 +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+CgkJCTx0ZD4yMDI2LzA3LzE0IDAyOjU1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCQ000N3h4IGJ1dHRvbnMgZHJpdmVyIGFuZCBhc3NvY2lhdGVkIEJDTUEvU1NCIEdQSU8gZHJpdmVycyB0byB1c2Ugc29mdHdhcmUgbm9kZXMgaW5zdGVhZCBvZiBwbGF0Zm9ybSBkYXRhLiBUaGVzZSBjaGFuZ2VzIGFyZSBzcGVjaWZpYyB0byB0aGUgTUlQUyBCQ000N3h4IGFyY2hpdGVjdHVyZSBhbmQgaXRzIFNvQyBidXNlcyAoQkNNQV9IT1NUVFlQRV9TT0MgYW5kIFNTQl9CVVNUWVBFX1NTQikuIFNpbmNlIHN5emthbGxlciBkb2VzIG5vdCBmdXp6IE1JUFMgQkNNNDd4eCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMjo1NTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGY4Yzc5NTAyNTQzZWUyMTA0ZWE0MjA1MzcxOTVjODZmN2MzMDQyOTlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAxNCAwMjo1NTowOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvYmNtNDd4eC9idXR0b25zLmMgYi9hcmNoL21pcHMvYmNtNDd4eC9idXR0b25zLmNcbmluZGV4IDQ2OTk0ZjliYjgyMTljLi4xNTFhNGVlMjgwM2YwMiAxMDA2NDRcbi0tLSBhL2FyY2gvbWlwcy9iY200N3h4L2J1dHRvbnMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9taXBzL2JjbTQ3eHgvYnV0dG9ucy5jXG5AQCAtMSw5ICYjNDM7MSwxNCBAQFxuIC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gI2luY2x1ZGUgXCYjMzQ7YmNtNDd4eF9wcml2YXRlLmhcJiMzNDtcbiBcbi0jaW5jbHVkZSBcdTAwM2NsaW51eC9pbnB1dC5oXHUwMDNlXG4tI2luY2x1ZGUgXHUwMDNjbGludXgvZ3Bpb19rZXlzLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7bGludXgvZXJyLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZ3Bpby9tYWNoaW5lLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZ3Bpby9wcm9wZXJ0eS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2lucHV0LWV2ZW50LWNvZGVzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pbnRlcnJ1cHQuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9wcm9wZXJ0eS5oXHUwMDNlXG4mIzQzO1xuICNpbmNsdWRlIFx1MDAzY2JjbTQ3eHhfYm9hcmQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2JjbTQ3eHguaFx1MDAzZVxuIFxuQEAgLTExLDI5ICYjNDM7MTYsMzQgQEBcbiAgKiBEYXRhYmFzZVxuICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbiBcbi0jZGVmaW5lIEJDTTQ3WFhfR1BJT19LRVkoX2dwaW8sIF9jb2RlKVx0XHRcdFx0XHRcXFxuLVx0e1x0XHRcdFx0XHRcdFx0XHRcXFxuLVx0XHQuY29kZVx0XHQ9IF9jb2RlLFx0XHRcdFx0XFxcbi1cdFx0LmdwaW9cdFx0PSBfZ3BpbyxcdFx0XHRcdFxcXG4tXHRcdC5hY3RpdmVfbG93XHQ9IDEsXHRcdFx0XHRcdFxcXG4mIzQzO3N0cnVjdCBiY200N3h4X2dwaW9fa2V5IHtcbiYjNDM7XHR1MTYgY29kZTtcbiYjNDM7XHR1OCBwaW47XG4mIzQzO1x0dTggZmxhZ3M7XG4mIzQzO307XG4mIzQzO1xuJiM0MzsjZGVmaW5lIEJDTTQ3WFhfR1BJT19LRVkoX2dwaW8sIF9jb2RlKVx0XHRcdFxcXG4mIzQzO1x0e1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHQuY29kZVx0PSBfY29kZSxcdFx0XHRcXFxuJiM0MztcdFx0LnBpblx0PSBfZ3BpbyxcdFx0XHRcXFxuJiM0MztcdFx0LmZsYWdzXHQ9IEdQSU9fQUNUSVZFX0xPVyxcdFx0XFxcbiBcdH1cbiBcbi0jZGVmaW5lIEJDTTQ3WFhfR1BJT19LRVlfSChfZ3BpbywgX2NvZGUpXHRcdFx0XHRcXFxuLVx0e1x0XHRcdFx0XHRcdFx0XHRcXFxuLVx0XHQuY29kZVx0XHQ9IF9jb2RlLFx0XHRcdFx0XFxcbi1cdFx0LmdwaW9cdFx0PSBfZ3BpbyxcdFx0XHRcdFxcXG4mIzQzOyNkZWZpbmUgQkNNNDdYWF9HUElPX0tFWV9IKF9ncGlvLCBfY29kZSlcdFx0XFxcbiYjNDM7XHR7XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdC5jb2RlXHQ9IF9jb2RlLFx0XHRcdFxcXG4mIzQzO1x0XHQucGluXHQ9IF9ncGlvLFx0XHRcdFxcXG4mIzQzO1x0XHQuZmxhZ3NcdD0gR1BJT19BQ1RJVkVfSElHSCxcdFx0XFxcbiBcdH1cbiBcbiAvKiBBc3VzICovXG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4tYmNtNDd4eF9idXR0b25zX2FzdXNfcnRuMTB1W10gX19pbml0Y29uc3QgPSB7XG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleSBiY200N3h4X2J1dHRvbnNfYXN1c19ydG4xMHVbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMjAsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMjEsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuLWJjbTQ3eHhfYnV0dG9uc19hc3VzX3J0bjEyW10gX19pbml0Y29uc3QgPSB7XG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleSBiY200N3h4X2J1dHRvbnNfYXN1c19ydG4xMltdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgwLCBLRVlfV1BTX0JVVFRPTiksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDEsIEtFWV9SRVNUQVJUKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgQlROXzApLCAvKiBSb3V0ZXIgbW9kZSAqL1xuQEAgLTQxLDc0ICYjNDM7NTEsNzMgQEAgYmNtNDd4eF9idXR0b25zX2FzdXNfcnRuMTJbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgQlROXzIpLCAvKiBBUCBtb2RlICovXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbi1iY200N3h4X2J1dHRvbnNfYXN1c19ydG4xNltdIF9faW5pdGNvbnN0ID0ge1xuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkgYmNtNDd4eF9idXR0b25zX2FzdXNfcnRuMTZbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg4LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2FzdXNfcnRuNjZ1W10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoOSwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsMzAwZ1tdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2FzdXNfd2wzMjBnZVtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2FzdXNfd2wzMzBnZVtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgyLCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBnW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfYXN1c193bDUwMGdkW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfYXN1c193bDUwMGdwdjFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMCwgS0VZX1JFU1RBUlQpLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBncHYyW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDIsIEtFWV9SRVNUQVJUKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMywgS0VZX1dQU19CVVRUT04pLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwd1tdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWV9IKDYsIEtFWV9SRVNUQVJUKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVlfSCg3LCBLRVlfV1BTX0JVVFRPTiksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MjBnY1tdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgyLCBLRVlfUkVTVEFSVCksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDMsIEtFWV9XUFNfQlVUVE9OKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfYXN1c193bDUyMGd1W10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDIsIEtFWV9SRVNUQVJUKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMywgS0VZX1dQU19CVVRUT04pLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNzAwZ2VbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMCwgS0VZX1BPV0VSKSwgLyogSGFyZCBkaXNrIHBvd2VyIHN3aXRjaCAqL1xuIFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksIC8qIEVaU2V0dXAgKi9cbkBAIC0xMTYsMjEgJiM0MzsxMjUsMjEgQEAgYmNtNDd4eF9idXR0b25zX2FzdXNfd2w3MDBnZVtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg3LCBLRVlfUkVTVEFSVCksIC8qIEhhcmQgcmVzZXQgKi9cbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfYXN1c193bGhkZFtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbiAvKiBIdWF3ZWkgKi9cbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2h1YXdlaV9lOTcwW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuIC8qIEJlbGtpbiAqL1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfYmVsa2luX2Y3ZDQzMDFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg4LCBLRVlfV1BTX0JVVFRPTiksXG5AQCAtMTM4LDQ0ICYjNDM7MTQ3LDQ0IEBAIGJjbTQ3eHhfYnV0dG9uc19iZWxraW5fZjdkNDMwMVtdIF9faW5pdGNvbnN0ID0ge1xuIFxuIC8qIEJ1ZmZhbG8gKi9cbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd2hyMl9hNTRnNTRbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docl9nMTI1W10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDAsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1JFU1RBUlQpLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg1LCBCVE5fMCksIC8qIFJvdXRlciAvIEFQIG1vZGUgc3dpdGNoICovXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd2hyX2c1NHNbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMCwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWV9IKDQsIEtFWV9SRVNUQVJUKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNSwgQlROXzApLCAvKiBSb3V0ZXIgLyBBUCBtb2RlIHN3aXRjaCAqL1xuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docl9ocF9nNTRbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMCwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfUkVTVEFSVCksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDUsIEJUTl8wKSwgLyogUm91dGVyIC8gQVAgbW9kZSBzd2l0Y2ggKi9cbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfYnVmZmFsb193enJfZzMwMG5bXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3d6cl9yc19nNTRbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMCwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd3pyX3JzX2c1NGhwW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDAsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1JFU1RBUlQpLFxuQEAgLTE4MywyMCAmIzQzOzE5MiwyMCBAQCBiY200N3h4X2J1dHRvbnNfYnVmZmFsb193enJfcnNfZzU0aHBbXSBfX2luaXRjb25zdCA9IHtcbiBcbiAvKiBEZWxsICovXG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19kZWxsX3RtMjMwMFtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgwLCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbiAvKiBELUxpbmsgKi9cbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2RsaW5rX2RpcjEzMFtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgzLCBLRVlfUkVTVEFSVCksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDcsIEtFWV9VTktOT1dOKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfZGxpbmtfZGlyMzMwW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDMsIEtFWV9SRVNUQVJUKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNywgS0VZX1VOS05PV04pLFxuQEAgLTIwNCwxMjcgJiM0MzsyMTMsMTI3IEBAIGJjbTQ3eHhfYnV0dG9uc19kbGlua19kaXIzMzBbXSBfX2luaXRjb25zdCA9IHtcbiBcbiAvKiBMaW5rc3lzICovXG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UxMDAwdjFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNSwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTEwMDB2MjFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoOSwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSgxMCwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UyMDAwdjFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNSwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg4LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTI1MDB2M1tdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg5LCBLRVlfV1BTX0JVVFRPTiksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDEwLCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTMwMDB2MVtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMzIwMHYxW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDUsIEtFWV9SRVNUQVJUKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoOCwgS0VZX1dQU19CVVRUT04pLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2U0MjAwdjFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTUwbnYxW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDE1MG52MTFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTYwbnYxW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDE2MG52M1tdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg1LCBLRVlfV1BTX0JVVFRPTiksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMDBuX3YxW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDMwMG52MTFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1VOS05PV04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzEwbnYxW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoOCwgS0VZX1VOS05PV04pLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDMxMG5fdjJbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNSwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzIwbl92MVtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg1LCBLRVlfV1BTX0JVVFRPTiksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDgsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQ1NGczZ3YyW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDUsIEtFWV9XSU1BWCksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQ1NGdfZ2VuZXJpY1tdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQ2MTBudjFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg4LCBLRVlfV1BTX0JVVFRPTiksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NjEwbnYyW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydHNsNTRnc1tdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcbkBAIC0zMzIsMTU0ICYjNDM7MzQxLDE1NCBAQCBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnRzbDU0Z3NbXSBfX2luaXRjb25zdCA9IHtcbiBcbiAvKiBMdXh1bCAqL1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbHV4dWxfYWJyXzQ0MDBfdjFbXSA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMTQsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbHV4dWxfeGFwXzMxMF92MVtdID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgyMCwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMTIxMF92MVtdID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg4LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8xMjMwX3YxW10gPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDgsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbHV4dWxfeGFwXzEyNDBfdjFbXSA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoOCwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMTUwMF92MVtdID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgxNCwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YnJfNDQwMF92MVtdID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgxNCwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94dndfcDMwX3YxW10gPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDIwLCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2x1eHVsX3h3cl82MDBfdjFbXSA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoOCwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94d3JfMTc1MF92MVtdID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgxNCwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4gLyogTWljcm9zb2Z0ICovXG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19taWNyb3NvZnRfbm03MDBbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNywgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4gLyogTW90b3JvbGEgKi9cbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX21vdG9yb2xhX3dlODAwZ1tdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgwLCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX21vdG9yb2xhX3dyODUwZ3BbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNSwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19tb3Rvcm9sYV93cjg1MGd2MnYzW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDUsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuIC8qIE5ldGdlYXIgKi9cbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX25ldGdlYXJfcjYyMDBfdjFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMiwgS0VZX1JGS0lMTCksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDMsIEtFWV9SRVNUQVJUKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3I2MzAwX3YxW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bjI1MDBycF92MVtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgxMiwgS0VZX1JFU1RBUlQpLFxuIFx0QkNNNDdYWF9HUElPX0tFWSgzMSwgS0VZX1dQU19CVVRUT04pLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duZHIzNDAwdjFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1JFU1RBUlQpLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfV1BTX0JVVFRPTiksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDgsIEtFWV9SRktJTEwpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duZHIzNDAwX3YzW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDEyLCBLRVlfUkVTVEFSVCksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDIzLCBLRVlfV1BTX0JVVFRPTiksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjM3MDB2M1tdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgyLCBLRVlfUkZLSUxMKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMywgS0VZX1JFU1RBUlQpLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjQ1MDB2MVtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDUsIEtFWV9SRktJTEwpLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25yMTAwMF92M1tdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgyLCBLRVlfV1BTX0JVVFRPTiksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDMsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bnIzNTAwbHYxW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9SRVNUQVJUKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1dQU19CVVRUT04pLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3ducjM1MDBsdjJbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1JFU1RBUlQpLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfV1BTX0JVVFRPTiksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDgsIEtFWV9SRktJTEwpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3ducjgzNGJ2MltdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbiAvKiBTaW1wbGVUZWNoICovXG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19zaW1wbGV0ZWNoX3NpbXBsZXNoYXJlW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDAsIEtFWV9SRVNUQVJUKSxcbiB9O1xuQEAgLTQ4OCwzMSAmIzQzOzQ5Nyw5NiBAQCBiY200N3h4X2J1dHRvbnNfc2ltcGxldGVjaF9zaW1wbGVzaGFyZVtdIF9faW5pdGNvbnN0ID0ge1xuICAqIEluaXRcbiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4gXG4tc3RhdGljIHN0cnVjdCBncGlvX2tleXNfcGxhdGZvcm1fZGF0YSBiY200N3h4X2J1dHRvbl9wZGF0YTtcbi1cbi1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBiY200N3h4X2J1dHRvbnNfZ3Bpb19rZXlzID0ge1xuLVx0Lm5hbWUgPSBcJiMzNDtncGlvLWtleXNcJiMzNDssXG4tXHQuZGV2ID0ge1xuLVx0XHQucGxhdGZvcm1fZGF0YSA9IFx1MDAyNmJjbTQ3eHhfYnV0dG9uX3BkYXRhLFxuJiM0MztzdGF0aWMgaW50IF9faW5pdFxuJiM0MztiY200N3h4X2J1dHRvbnNfYWRkKGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5ICpidXR0b25zLCBpbnQgbmJ1dHRvbnMpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2O1xuJiM0MztcdGNvbnN0IHN0cnVjdCBzb2Z0d2FyZV9ub2RlICpncGlvX3N3bm9kZTtcbiYjNDM7XHRzdHJ1Y3QgcHJvcGVydHlfZW50cnkgKnA7XG4mIzQzO1x0aW50IGVycm9yO1xuJiM0MztcdGludCBpO1xuJiM0MztcbiYjNDM7XHRzd2l0Y2ggKGJjbTQ3eHhfYnVzX3R5cGUpIHtcbiYjNDM7I2lmZGVmIENPTkZJR19CQ000N1hYX0JDTUFcbiYjNDM7XHRjYXNlIEJDTTQ3WFhfQlVTX1RZUEVfQkNNQTpcbiYjNDM7XHRcdGdwaW9fc3dub2RlID0gXHUwMDI2YmNtYV9ncGlvX3N3bm9kZTtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MzsjZW5kaWZcbiYjNDM7I2lmZGVmIENPTkZJR19CQ000N1hYX1NTQlxuJiM0MztcdGNhc2UgQkNNNDdYWF9CVVNfVFlQRV9TU0I6XG4mIzQzO1x0XHRncGlvX3N3bm9kZSA9IFx1MDAyNnNzYl9ncGlvX3N3bm9kZTtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MzsjZW5kaWZcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4gXHR9XG4tfTtcbiBcbi0vKiBDb3B5IGRhdGEgZnJvbSBfX2luaXRjb25zdCAqL1xuLXN0YXRpYyBpbnQgX19pbml0IGJjbTQ3eHhfYnV0dG9uc19jb3B5KGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uICpidXR0b25zLFxuLVx0XHRcdFx0ICAgICAgIHNpemVfdCBuYnV0dG9ucylcbi17XG4tXHRzaXplX3Qgc2l6ZSA9IG5idXR0b25zICogc2l6ZW9mKCpidXR0b25zKTtcbiYjNDM7XHQvKiAxIG5vZGUgZm9yIGdwaW8ta2V5cyBkZXZpY2UsIDEgbm9kZSBmb3IgZWFjaCBidXR0b24sIDEgdGVybWluYXRvciAqL1xuJiM0MztcdGNvbnN0IHN0cnVjdCBzb2Z0d2FyZV9ub2RlICoqbm9kZV9ncm91cCBfX2ZyZWUoa2ZyZWUpID1cbiYjNDM7XHRcdGtjYWxsb2MoMSAmIzQzOyBuYnV0dG9ucyAmIzQzOyAxLCBzaXplb2YoKm5vZGVfZ3JvdXApLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRpZiAoIW5vZGVfZ3JvdXApXG4mIzQzO1x0XHRyZXR1cm4gLUVOT01FTTtcbiBcbi1cdGJjbTQ3eHhfYnV0dG9uX3BkYXRhLmJ1dHRvbnMgPSBrbWVtZHVwKGJ1dHRvbnMsIHNpemUsIEdGUF9LRVJORUwpO1xuLVx0aWYgKCFiY200N3h4X2J1dHRvbl9wZGF0YS5idXR0b25zKVxuJiM0MztcdC8qIDEgY29kZSBwcm9wZXJ0eSwgMSBncGlvIHByb3BlcnR5LCAxIHRlcm1pbmF0b3IgKi9cbiYjNDM7XHRzdHJ1Y3QgcHJvcGVydHlfZW50cnkgKnByb3BzIF9fZnJlZShrZnJlZSkgPVxuJiM0MztcdFx0a2NhbGxvYyhuYnV0dG9ucyAqIDMsIHNpemVvZigqcHJvcHMpLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRpZiAoIXByb3BzKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbi1cdGJjbTQ3eHhfYnV0dG9uX3BkYXRhLm5idXR0b25zID0gbmJ1dHRvbnM7XG4gXG4mIzQzO1x0LyogMSBub2RlIGZvciBncGlvLWtleXMgZGV2aWNlLCAxIG5vZGUgZm9yIGVhY2ggYnV0dG9uICovXG4mIzQzO1x0c3RydWN0IHNvZnR3YXJlX25vZGUgKm5vZGVzIF9fZnJlZShrZnJlZSkgPVxuJiM0MztcdFx0a2NhbGxvYygxICYjNDM7IG5idXR0b25zLCBzaXplb2YoKm5vZGVzKSwgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0aWYgKCFub2RlcylcbiYjNDM7XHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcbiYjNDM7XHRzdHJ1Y3Qgc29mdHdhcmVfbm9kZV9yZWZfYXJncyAqcmVmX2FyZ3MgX19mcmVlKGtmcmVlKSA9XG4mIzQzO1x0XHRrY2FsbG9jKG5idXR0b25zLCBzaXplb2YoKnJlZl9hcmdzKSwgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0aWYgKCFyZWZfYXJncylcbiYjNDM7XHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcbiYjNDM7XHQvKiBncGlvLWtleXMgbm9kZSAqL1xuJiM0MztcdG5vZGVzWzBdLm5hbWUgPSBcJiMzNDtiY200N3h4LWdwaW8tYnV0dG9uc1wmIzM0OztcbiYjNDM7XG4mIzQzO1x0cCA9IHByb3BzO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5idXR0b25zOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0Y29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkgKmJ1dHRvbiA9IFx1MDAyNmJ1dHRvbnNbaV07XG4mIzQzO1x0XHRzdHJ1Y3Qgc29mdHdhcmVfbm9kZSAqbm9kZSA9IFx1MDAyNm5vZGVzWzEgJiM0MzsgaV07XG4mIzQzO1x0XHRzdHJ1Y3Qgc29mdHdhcmVfbm9kZV9yZWZfYXJncyAqcmVmID0gXHUwMDI2cmVmX2FyZ3NbaV07XG4mIzQzO1xuJiM0MztcdFx0bm9kZS1cdTAwM2VwYXJlbnQgPSBcdTAwMjZub2Rlc1swXTtcbiYjNDM7XHRcdG5vZGUtXHUwMDNlcHJvcGVydGllcyA9IHA7XG4mIzQzO1xuJiM0MztcdFx0KnJlZiA9IFNPRlRXQVJFX05PREVfUkVGRVJFTkNFKGdwaW9fc3dub2RlLCBidXR0b24tXHUwMDNlcGluLCBidXR0b24tXHUwMDNlZmxhZ3MpO1xuJiM0MztcdFx0KnAmIzQzOyYjNDM7ID0gUFJPUEVSVFlfRU5UUllfUkVGKFwmIzM0O2dwaW9zXCYjMzQ7LCBcdTAwMjZyZWZfYXJnc1tpXSk7XG4mIzQzO1x0XHQqcCYjNDM7JiM0MzsgPSBQUk9QRVJUWV9FTlRSWV9VMzIoXCYjMzQ7bGludXgsY29kZVwmIzM0OywgYnV0dG9uLVx1MDAzZWNvZGUpO1xuJiM0MztcdFx0cCYjNDM7JiM0Mzs7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBuYnV0dG9ucyAmIzQzOyAxOyBpJiM0MzsmIzQzOylcbiYjNDM7XHRcdG5vZGVfZ3JvdXBbaV0gPSBcdTAwMjZub2Rlc1tpXTtcbiYjNDM7XG4mIzQzO1x0ZXJyb3IgPSBzb2Z0d2FyZV9ub2RlX3JlZ2lzdGVyX25vZGVfZ3JvdXAobm9kZV9ncm91cCk7XG4mIzQzO1x0aWYgKGVycm9yKVxuJiM0MztcdFx0cmV0dXJuIGVycm9yO1xuJiM0MztcbiYjNDM7XHRwZGV2ID0gcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyX2Z1bGwoXHUwMDI2KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2VfaW5mbyl7XG4mIzQzO1x0XHQubmFtZSA9IFwmIzM0O2dwaW8ta2V5c1wmIzM0OyxcbiYjNDM7XHRcdC5zd25vZGUgPSBcdTAwMjZub2Rlc1swXSxcbiYjNDM7XHR9KTtcbiYjNDM7XHRlcnJvciA9IFBUUl9FUlJfT1JfWkVSTyhwZGV2KTtcbiYjNDM7XHRpZiAoZXJyb3IpIHtcbiYjNDM7XHRcdHNvZnR3YXJlX25vZGVfdW5yZWdpc3Rlcl9ub2RlX2dyb3VwKG5vZGVfZ3JvdXApO1xuJiM0MztcdFx0cmV0dXJuIGVycm9yO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0YWluX2FuZF9udWxsX3B0cihwcm9wcyk7XG4mIzQzO1x0cmV0YWluX2FuZF9udWxsX3B0cihub2Rlcyk7XG4mIzQzO1x0cmV0YWluX2FuZF9udWxsX3B0cihyZWZfYXJncyk7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tI2RlZmluZSBiY200N3h4X2NvcHlfYmRhdGEoZGV2X2J1dHRvbnMpXHRcdFx0XHRcdFxcXG4tXHRiY200N3h4X2J1dHRvbnNfY29weShkZXZfYnV0dG9ucywgQVJSQVlfU0laRShkZXZfYnV0dG9ucykpO1xuJiM0MzsjZGVmaW5lIGJjbTQ3eHhfYWRkX2JkYXRhKGRldl9idXR0b25zKVx0XHRcdFx0XHRcXFxuJiM0MztcdGJjbTQ3eHhfYnV0dG9uc19hZGQoZGV2X2J1dHRvbnMsIEFSUkFZX1NJWkUoZGV2X2J1dHRvbnMpKVxuIFxuIGludCBfX2luaXQgYmNtNDd4eF9idXR0b25zX3JlZ2lzdGVyKHZvaWQpXG4ge1xuQEAgLTUyMSw1MiAmIzQzOzU5NSw1MiBAQCBpbnQgX19pbml0IGJjbTQ3eHhfYnV0dG9uc19yZWdpc3Rlcih2b2lkKVxuIFxuIFx0c3dpdGNoIChib2FyZCkge1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfUlROMTBVOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfcnRuMTB1KTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3J0bjEwdSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfUlROMTI6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c19ydG4xMik7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c19ydG4xMik7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfUlROMTY6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c19ydG4xNik7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c19ydG4xNik7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfUlRONjZVOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfcnRuNjZ1KTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3J0bjY2dSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0wzMDBHOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2wzMDBnKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsMzAwZyk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0wzMjBHRTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsMzIwZ2UpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2wzMjBnZSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0wzMzBHRTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsMzMwZ2UpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2wzMzBnZSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0w1MDBHOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBnKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwZyk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0w1MDBHRDpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwZ2QpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBnZCk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0w1MDBHUFYxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBncHYxKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwZ3B2MSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0w1MDBHUFYyOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBncHYyKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwZ3B2Mik7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0w1MDBXOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDB3KTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwdyk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0w1MjBHQzpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTIwZ2MpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MjBnYyk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0w1MjBHVTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTIwZ3UpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MjBndSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0w3MDBHRTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNzAwZ2UpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w3MDBnZSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0xIREQ6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bGhkZCk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bGhkZCk7XG4gXHRcdGJyZWFrO1xuIFxuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0JFTEtJTl9GN0QzMzAxOlxuQEAgLTU3NCwxOTMgJiM0Mzs2NDgsMTkzIEBAIGludCBfX2luaXQgYmNtNDd4eF9idXR0b25zX3JlZ2lzdGVyKHZvaWQpXG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQkVMS0lOX0Y3RDQzMDE6XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQkVMS0lOX0Y3RDQzMDI6XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQkVMS0lOX0Y3RDQ0MDE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYmVsa2luX2Y3ZDQzMDEpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2JlbGtpbl9mN2Q0MzAxKTtcbiBcdFx0YnJlYWs7XG4gXG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQlVGRkFMT19XSFIyX0E1NEc1NDpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docjJfYTU0ZzU0KTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docjJfYTU0ZzU0KTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQlVGRkFMT19XSFJfRzEyNTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docl9nMTI1KTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docl9nMTI1KTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQlVGRkFMT19XSFJfRzU0Uzpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docl9nNTRzKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docl9nNTRzKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQlVGRkFMT19XSFJfSFBfRzU0OlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd2hyX2hwX2c1NCk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYnVmZmFsb193aHJfaHBfZzU0KTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQlVGRkFMT19XWlJfRzMwME46XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYnVmZmFsb193enJfZzMwMG4pO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd3pyX2czMDBuKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQlVGRkFMT19XWlJfUlNfRzU0OlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd3pyX3JzX2c1NCk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYnVmZmFsb193enJfcnNfZzU0KTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQlVGRkFMT19XWlJfUlNfRzU0SFA6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYnVmZmFsb193enJfcnNfZzU0aHApO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd3pyX3JzX2c1NGhwKTtcbiBcdFx0YnJlYWs7XG4gXG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfREVMTF9UTTIzMDA6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfZGVsbF90bTIzMDApO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2RlbGxfdG0yMzAwKTtcbiBcdFx0YnJlYWs7XG4gXG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfRExJTktfRElSMTMwOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2RsaW5rX2RpcjEzMCk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfZGxpbmtfZGlyMTMwKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfRExJTktfRElSMzMwOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2RsaW5rX2RpcjMzMCk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfZGxpbmtfZGlyMzMwKTtcbiBcdFx0YnJlYWs7XG4gXG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfSFVBV0VJX0U5NzA6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfaHVhd2VpX2U5NzApO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2h1YXdlaV9lOTcwKTtcbiBcdFx0YnJlYWs7XG4gXG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19FMTAwMFYxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTEwMDB2MSk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMTAwMHYxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19FMTAwMFYyMTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UxMDAwdjIxKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UxMDAwdjIxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19FMjAwMFYxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTIwMDB2MSk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMjAwMHYxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19FMjUwMFYzOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTI1MDB2Myk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMjUwMHYzKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19FMzAwMFYxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTMwMDB2MSk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMzAwMHYxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19FMzIwMFYxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTMyMDB2MSk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMzIwMHYxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19FNDIwMFYxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTQyMDB2MSk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c19lNDIwMHYxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQxNTBOVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQxNTBudjEpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTUwbnYxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQxNTBOVjExOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTUwbnYxMSk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQxNTBudjExKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQxNjBOVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQxNjBudjEpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTYwbnYxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQxNjBOVjM6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQxNjBudjMpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTYwbnYzKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQzMDBOX1YxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzAwbl92MSk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMDBuX3YxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQzMDBOVjExOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzAwbnYxMSk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMDBudjExKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQzMTBOVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMTBudjEpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzEwbnYxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQzMTBOVjI6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMTBuX3YyKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDMxMG5fdjIpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX1dSVDMyME5fVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMjBuX3YxKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDMyMG5fdjEpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX1dSVDU0RzNHVjI6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQ1NGczZ3YyKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDU0ZzNndjIpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX1dSVDU0R19UWVBFXzAxMDE6XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQ1NEdfVFlQRV8wNDY3OlxuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfV1JUNTRHX1RZUEVfMDcwODpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDU0Z19nZW5lcmljKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDU0Z19nZW5lcmljKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQ2MTBOVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQ2MTBudjEpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NjEwbnYxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQ2MTBOVjI6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQ2MTBudjIpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NjEwbnYyKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlRTTDU0R1M6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnRzbDU0Z3MpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0c2w1NGdzKTtcbiBcdFx0YnJlYWs7XG4gXG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTFVYVUxfQUJSXzQ0MDBfVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfYWJyXzQ0MDBfdjEpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX2Ficl80NDAwX3YxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTFVYVUxfWEFQXzMxMF9WMTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMzEwX3YxKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMzEwX3YxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTFVYVUxfWEFQXzEyMTBfVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfeGFwXzEyMTBfdjEpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8xMjEwX3YxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTFVYVUxfWEFQXzEyMzBfVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfeGFwXzEyMzBfdjEpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8xMjMwX3YxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTFVYVUxfWEFQXzEyNDBfVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfeGFwXzEyNDBfdjEpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8xMjQwX3YxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTFVYVUxfWEFQXzE1MDBfVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfeGFwXzE1MDBfdjEpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8xNTAwX3YxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTFVYVUxfWEJSXzQ0MDBfVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfeGJyXzQ0MDBfdjEpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3hicl80NDAwX3YxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTFVYVUxfWFZXX1AzMF9WMTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94dndfcDMwX3YxKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94dndfcDMwX3YxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTFVYVUxfWFdSXzYwMF9WMTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94d3JfNjAwX3YxKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94d3JfNjAwX3YxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTFVYVUxfWFdSXzE3NTBfVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfeHdyXzE3NTBfdjEpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3h3cl8xNzUwX3YxKTtcbiBcdFx0YnJlYWs7XG4gXG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTUlDUk9TT0ZUX01ONzAwOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX21pY3Jvc29mdF9ubTcwMCk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbWljcm9zb2Z0X25tNzAwKTtcbiBcdFx0YnJlYWs7XG4gXG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTU9UT1JPTEFfV0U4MDBHOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX21vdG9yb2xhX3dlODAwZyk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbW90b3JvbGFfd2U4MDBnKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTU9UT1JPTEFfV1I4NTBHUDpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19tb3Rvcm9sYV93cjg1MGdwKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19tb3Rvcm9sYV93cjg1MGdwKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTU9UT1JPTEFfV1I4NTBHVjJWMzpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19tb3Rvcm9sYV93cjg1MGd2MnYzKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19tb3Rvcm9sYV93cjg1MGd2MnYzKTtcbiBcdFx0YnJlYWs7XG4gXG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9SNjIwMF9WMTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3I2MjAwX3YxKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3I2MjAwX3YxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9SNjMwMF9WMTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3I2MzAwX3YxKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3I2MzAwX3YxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9XTjI1MDBSUF9WMTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duMjUwMHJwX3YxKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duMjUwMHJwX3YxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9XTkRSMzQwMFYxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjM0MDB2MSk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bmRyMzQwMHYxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9XTkRSMzQwMF9WMzpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duZHIzNDAwX3YzKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duZHIzNDAwX3YzKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9XTkRSMzcwMFYzOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjM3MDB2Myk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bmRyMzcwMHYzKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9XTkRSNDUwMFYxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjQ1MDB2MSk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bmRyNDUwMHYxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9XTlIxMDAwX1YzOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25yMTAwMF92Myk7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bnIxMDAwX3YzKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9XTlIzNTAwTDpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3ducjM1MDBsdjEpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25yMzUwMGx2MSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX05FVEdFQVJfV05SMzUwMExfVjI6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bnIzNTAwbHYyKTtcbiYjNDM7XHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3ducjM1MDBsdjIpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9ORVRHRUFSX1dOUjgzNEJWMjpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3ducjgzNGJ2Mik7XG4mIzQzO1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bnI4MzRidjIpO1xuIFx0XHRicmVhaztcbiBcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9TSU1QTEVURUNIX1NJTVBMRVNIQVJFOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX3NpbXBsZXRlY2hfc2ltcGxlc2hhcmUpO1xuJiM0MztcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX3NpbXBsZXRlY2hfc2ltcGxlc2hhcmUpO1xuIFx0XHRicmVhaztcbiBcbiBcdGRlZmF1bHQ6XG5AQCAtNzY5LDEzICYjNDM7ODQzLDcgQEAgaW50IF9faW5pdCBiY200N3h4X2J1dHRvbnNfcmVnaXN0ZXIodm9pZClcbiBcdH1cbiBcbiBcdGlmIChlcnIpXG4tXHRcdHJldHVybiAtRU5PTUVNO1xuLVxuLVx0ZXJyID0gcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKFx1MDAyNmJjbTQ3eHhfYnV0dG9uc19ncGlvX2tleXMpO1xuLVx0aWYgKGVycikge1xuLVx0XHRwcl9lcnIoXCYjMzQ7RmFpbGVkIHRvIHJlZ2lzdGVyIHBsYXRmb3JtIGRldmljZTogJWRcXG5cJiMzNDssIGVycik7XG4gXHRcdHJldHVybiBlcnI7XG4tXHR9XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmMgYi9kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uY1xuaW5kZXggNjU4YzdlMmFjOGJmNjEuLmVhNDUyMjJmMmZhMGZjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmNtYS9kcml2ZXJfZ3Bpby5jXG5AQCAtMTksNiAmIzQzOzE5LDExIEBAXG4gXG4gI2RlZmluZSBCQ01BX0dQSU9fTUFYX1BJTlNcdDMyXG4gXG4mIzQzO2NvbnN0IHN0cnVjdCBzb2Z0d2FyZV9ub2RlIGJjbWFfZ3Bpb19zd25vZGUgPSB7XG4mIzQzO1x0Lm5hbWUgPSBcJiMzNDtiY21hLWdwaW9cJiMzNDssXG4mIzQzO307XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKGJjbWFfZ3Bpb19zd25vZGUpO1xuJiM0MztcbiBzdGF0aWMgaW50IGJjbWFfZ3Bpb19nZXRfdmFsdWUoc3RydWN0IGdwaW9fY2hpcCAqY2hpcCwgdW5zaWduZWQgZ3BpbylcbiB7XG4gXHRzdHJ1Y3QgYmNtYV9kcnZfY2MgKmNjID0gZ3Bpb2NoaXBfZ2V0X2RhdGEoY2hpcCk7XG5AQCAtMTkwLDcgJiM0MzsxOTUsMjAgQEAgaW50IGJjbWFfZ3Bpb19pbml0KHN0cnVjdCBiY21hX2Rydl9jYyAqY2MpXG4gXHRjaGlwLVx1MDAzZWRpcmVjdGlvbl9pbnB1dFx0PSBiY21hX2dwaW9fZGlyZWN0aW9uX2lucHV0O1xuIFx0Y2hpcC1cdTAwM2VkaXJlY3Rpb25fb3V0cHV0XHQ9IGJjbWFfZ3Bpb19kaXJlY3Rpb25fb3V0cHV0O1xuIFx0Y2hpcC1cdTAwM2VwYXJlbnRcdFx0PSBidXMtXHUwMDNlZGV2O1xuLVx0Y2hpcC1cdTAwM2Vmd25vZGVcdFx0PSBkZXZfZndub2RlKFx1MDAyNmNjLVx1MDAzZWNvcmUtXHUwMDNlZGV2KTtcbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBSZWdpc3RlciBzb2Z0d2FyZSBub2RlIG9ubHkgZm9yIHRoZSBob3N0IFNvQyBidXMsIHVubGVzcyB0aGVyZSBpc1xuJiM0MztcdCAqIGFscmVhZHkgYSBmaXJtd2FyZSBub2RlIGFzc2lnbmVkLiBUaGVyZSBpcyBvbmx5IG9uZSBTb0MgaW5zdGFuY2VcbiYjNDM7XHQgKiBpbiB0aGUgc3lzdGVtLCBzbyB0aGVyZSBhcmUgbm8gY29uY2VybnMgd2l0aCByZWdpc3RyYXRpb24gY29uZmxpY3RzLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmIChidXMtXHUwMDNlaG9zdHR5cGUgPT0gQkNNQV9IT1NUVFlQRV9TT0MgXHUwMDI2XHUwMDI2ICFkZXZfZndub2RlKFx1MDAyNmNjLVx1MDAzZWNvcmUtXHUwMDNlZGV2KSkge1xuJiM0MztcdFx0ZXJyID0gc29mdHdhcmVfbm9kZV9yZWdpc3RlcihcdTAwMjZiY21hX2dwaW9fc3dub2RlKTtcbiYjNDM7XHRcdGlmIChlcnIpXG4mIzQzO1x0XHRcdHJldHVybiBlcnI7XG4mIzQzO1x0XHRjaGlwLVx1MDAzZWZ3bm9kZSA9IHNvZnR3YXJlX25vZGVfZndub2RlKFx1MDAyNmJjbWFfZ3Bpb19zd25vZGUpO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRjaGlwLVx1MDAzZWZ3bm9kZSA9IGRldl9md25vZGUoXHUwMDI2Y2MtXHUwMDNlY29yZS1cdTAwM2VkZXYpO1xuJiM0MztcdH1cbiBcbiBcdHN3aXRjaCAoYnVzLVx1MDAzZWNoaXBpbmZvLmlkKSB7XG4gXHRjYXNlIEJDTUFfQ0hJUF9JRF9CQ000NzA3OlxuQEAgLTIxOSwyMCAmIzQzOzIzNywzMyBAQCBpbnQgYmNtYV9ncGlvX2luaXQoc3RydWN0IGJjbWFfZHJ2X2NjICpjYylcbiBcbiBcdGVyciA9IGJjbWFfZ3Bpb19pcnFfaW5pdChjYyk7XG4gXHRpZiAoZXJyKVxuLVx0XHRyZXR1cm4gZXJyO1xuJiM0MztcdFx0Z290byBlcnJfdW5yZWdpc3Rlcl9zd25vZGU7XG4gXG4gXHRlcnIgPSBncGlvY2hpcF9hZGRfZGF0YShjaGlwLCBjYyk7XG4tXHRpZiAoZXJyKSB7XG4tXHRcdGJjbWFfZ3Bpb19pcnFfZXhpdChjYyk7XG4tXHRcdHJldHVybiBlcnI7XG4tXHR9XG4mIzQzO1x0aWYgKGVycilcbiYjNDM7XHRcdGdvdG8gZXJyX2lycV9leGl0O1xuIFxuIFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztlcnJfaXJxX2V4aXQ6XG4mIzQzO1x0YmNtYV9ncGlvX2lycV9leGl0KGNjKTtcbiYjNDM7ZXJyX3VucmVnaXN0ZXJfc3dub2RlOlxuJiM0MztcdGlmIChidXMtXHUwMDNlaG9zdHR5cGUgPT0gQkNNQV9IT1NUVFlQRV9TT0MgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIGNoaXAtXHUwMDNlZndub2RlIFx1MDAyNlx1MDAyNiBpc19zb2Z0d2FyZV9ub2RlKGNoaXAtXHUwMDNlZndub2RlKSkge1xuJiM0MztcdFx0c29mdHdhcmVfbm9kZV91bnJlZ2lzdGVyKFx1MDAyNmJjbWFfZ3Bpb19zd25vZGUpO1xuJiM0MztcdFx0Y2hpcC1cdTAwM2Vmd25vZGUgPSBOVUxMO1xuJiM0MztcdH1cbiYjNDM7XHRyZXR1cm4gZXJyO1xuIH1cbiBcbiBpbnQgYmNtYV9ncGlvX3VucmVnaXN0ZXIoc3RydWN0IGJjbWFfZHJ2X2NjICpjYylcbiB7XG4gXHRiY21hX2dwaW9faXJxX2V4aXQoY2MpO1xuIFx0Z3Bpb2NoaXBfcmVtb3ZlKFx1MDAyNmNjLVx1MDAzZWdwaW8pO1xuJiM0MztcdGlmIChjYy1cdTAwM2Vjb3JlLVx1MDAzZWJ1cy1cdTAwM2Vob3N0dHlwZSA9PSBCQ01BX0hPU1RUWVBFX1NPQyBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgY2MtXHUwMDNlZ3Bpby5md25vZGUgXHUwMDI2XHUwMDI2IGlzX3NvZnR3YXJlX25vZGUoY2MtXHUwMDNlZ3Bpby5md25vZGUpKSB7XG4mIzQzO1x0XHRzb2Z0d2FyZV9ub2RlX3VucmVnaXN0ZXIoXHUwMDI2YmNtYV9ncGlvX3N3bm9kZSk7XG4mIzQzO1x0XHRjYy1cdTAwM2VncGlvLmZ3bm9kZSA9IE5VTEw7XG4mIzQzO1x0fVxuIFx0cmV0dXJuIDA7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmMgYi9kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jXG5pbmRleCA5MDU2NTdjOTI1YmNlYi4uODc5MjI0Nzk5NDZjYjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jXG5AQCAtMTUsOCAmIzQzOzE1LDE0IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaW50ZXJydXB0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pcnFkb21haW4uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2V4cG9ydC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zc2Ivc3NiLmhcdTAwM2VcbiBcbiYjNDM7Y29uc3Qgc3RydWN0IHNvZnR3YXJlX25vZGUgc3NiX2dwaW9fc3dub2RlID0ge1xuJiM0MztcdC5uYW1lID0gXCYjMzQ7c3NiLWdwaW9cJiMzNDssXG4mIzQzO307XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHNzYl9ncGlvX3N3bm9kZSk7XG4mIzQzO1xuIFxuIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAqIFNoYXJlZFxuQEAgLTIzMiw2ICYjNDM7MjM4LDggQEAgc3RhdGljIGludCBzc2JfZ3Bpb19jaGlwY29faW5pdChzdHJ1Y3Qgc3NiX2J1cyAqYnVzKVxuIFx0Y2hpcC1cdTAwM2V0b19pcnFcdFx0PSBzc2JfZ3Bpb190b19pcnE7XG4gI2VuZGlmXG4gXHRjaGlwLVx1MDAzZW5ncGlvXHRcdD0gMTY7XG4mIzQzO1x0aWYgKGJ1cy1cdTAwM2VidXN0eXBlID09IFNTQl9CVVNUWVBFX1NTQilcbiYjNDM7XHRcdGNoaXAtXHUwMDNlZndub2RlXHQ9IHNvZnR3YXJlX25vZGVfZndub2RlKFx1MDAyNnNzYl9ncGlvX3N3bm9kZSk7XG4gXHQvKiBUaGVyZSBpcyBqdXN0IG9uZSBTb0MgaW4gb25lIGRldmljZSBhbmQgaXRzIEdQSU8gYWRkcmVzc2VzIHNob3VsZCBiZVxuIFx0ICogZGV0ZXJtaW5pc3RpYyB0byBhZGRyZXNzIHRoZW0gbW9yZSBlYXNpbHkuIFRoZSBvdGhlciBidXNlcyBjb3VsZCBnZXRcbiBcdCAqIGEgcmFuZG9tIGJhc2UgbnVtYmVyLlxuQEAgLTQzMywxMCAmIzQzOzQ0MSwxMiBAQCBzdGF0aWMgaW50IHNzYl9ncGlvX2V4dGlmX2luaXQoc3RydWN0IHNzYl9idXMgKmJ1cylcbiBcdCAqIGRldGVybWluaXN0aWMgdG8gYWRkcmVzcyB0aGVtIG1vcmUgZWFzaWx5LiBUaGUgb3RoZXIgYnVzZXMgY291bGQgZ2V0XG4gXHQgKiBhIHJhbmRvbSBiYXNlIG51bWJlci5cbiBcdCAqL1xuLVx0aWYgKGJ1cy1cdTAwM2VidXN0eXBlID09IFNTQl9CVVNUWVBFX1NTQilcbi1cdFx0Y2hpcC1cdTAwM2ViYXNlXHRcdD0gMDtcbi1cdGVsc2Vcbi1cdFx0Y2hpcC1cdTAwM2ViYXNlXHRcdD0gLTE7XG4mIzQzO1x0aWYgKGJ1cy1cdTAwM2VidXN0eXBlID09IFNTQl9CVVNUWVBFX1NTQikge1xuJiM0MztcdFx0Y2hpcC1cdTAwM2ViYXNlXHQ9IDA7XG4mIzQzO1x0XHRjaGlwLVx1MDAzZWZ3bm9kZVx0PSBzb2Z0d2FyZV9ub2RlX2Z3bm9kZShcdTAwMjZzc2JfZ3Bpb19zd25vZGUpO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRjaGlwLVx1MDAzZWJhc2VcdD0gLTE7XG4mIzQzO1x0fVxuIFxuIFx0ZXJyID0gc3NiX2dwaW9faXJxX2V4dGlmX2RvbWFpbl9pbml0KGJ1cyk7XG4gXHRpZiAoZXJyKVxuQEAgLTQ2NCwxMSAmIzQzOzQ3NCwzMyBAQCBzdGF0aWMgaW50IHNzYl9ncGlvX2V4dGlmX2luaXQoc3RydWN0IHNzYl9idXMgKmJ1cylcbiBcbiBpbnQgc3NiX2dwaW9faW5pdChzdHJ1Y3Qgc3NiX2J1cyAqYnVzKVxuIHtcbiYjNDM7XHRpbnQgZXJyID0gMDtcbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBSZWdpc3RlciBzb2Z0d2FyZSBub2RlIG9ubHkgZm9yIHRoZSBob3N0IFNvQyBidXMuIFRoZXJlIGlzIG9ubHlcbiYjNDM7XHQgKiBvbmUgU29DIGluc3RhbmNlIGluIHRoZSBzeXN0ZW0sIHNvIHRoZXJlIGFyZSBubyBjb25jZXJucyB3aXRoXG4mIzQzO1x0ICogcmVnaXN0cmF0aW9uIGNvbmZsaWN0cy5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoYnVzLVx1MDAzZWJ1c3R5cGUgPT0gU1NCX0JVU1RZUEVfU1NCKSB7XG4mIzQzO1x0XHRlcnIgPSBzb2Z0d2FyZV9ub2RlX3JlZ2lzdGVyKFx1MDAyNnNzYl9ncGlvX3N3bm9kZSk7XG4mIzQzO1x0XHRpZiAoZXJyKVxuJiM0MztcdFx0XHRyZXR1cm4gZXJyO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRpZiAoc3NiX2NoaXBjb19hdmFpbGFibGUoXHUwMDI2YnVzLVx1MDAzZWNoaXBjbykpXG4tXHRcdHJldHVybiBzc2JfZ3Bpb19jaGlwY29faW5pdChidXMpO1xuJiM0MztcdFx0ZXJyID0gc3NiX2dwaW9fY2hpcGNvX2luaXQoYnVzKTtcbiBcdGVsc2UgaWYgKHNzYl9leHRpZl9hdmFpbGFibGUoXHUwMDI2YnVzLVx1MDAzZWV4dGlmKSlcbi1cdFx0cmV0dXJuIHNzYl9ncGlvX2V4dGlmX2luaXQoYnVzKTtcbi1cdHJldHVybiAtMTtcbiYjNDM7XHRcdGVyciA9IHNzYl9ncGlvX2V4dGlmX2luaXQoYnVzKTtcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRlcnIgPSAtRU5PREVWO1xuJiM0MztcbiYjNDM7XHRpZiAoZXJyKSB7XG4mIzQzO1x0XHRpZiAoYnVzLVx1MDAzZWJ1c3R5cGUgPT0gU1NCX0JVU1RZUEVfU1NCKVxuJiM0MztcdFx0XHRzb2Z0d2FyZV9ub2RlX3VucmVnaXN0ZXIoXHUwMDI2c3NiX2dwaW9fc3dub2RlKTtcbiYjNDM7XHRcdHJldHVybiBlcnI7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiB9XG4gXG4gaW50IHNzYl9ncGlvX3VucmVnaXN0ZXIoc3RydWN0IHNzYl9idXMgKmJ1cylcbkBAIC00NzYsNiAmIzQzOzUwOCw4IEBAIGludCBzc2JfZ3Bpb191bnJlZ2lzdGVyKHN0cnVjdCBzc2JfYnVzICpidXMpXG4gXHRpZiAoc3NiX2NoaXBjb19hdmFpbGFibGUoXHUwMDI2YnVzLVx1MDAzZWNoaXBjbykgfHxcbiBcdCAgICBzc2JfZXh0aWZfYXZhaWxhYmxlKFx1MDAyNmJ1cy1cdTAwM2VleHRpZikpIHtcbiBcdFx0Z3Bpb2NoaXBfcmVtb3ZlKFx1MDAyNmJ1cy1cdTAwM2VncGlvKTtcbiYjNDM7XHRcdGlmIChidXMtXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpXG4mIzQzO1x0XHRcdHNvZnR3YXJlX25vZGVfdW5yZWdpc3RlcihcdTAwMjZzc2JfZ3Bpb19zd25vZGUpO1xuIFx0XHRyZXR1cm4gMDtcbiBcdH1cbiBcdHJldHVybiAtMTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2JjbWEvYmNtYS5oIGIvaW5jbHVkZS9saW51eC9iY21hL2JjbWEuaFxuaW5kZXggZjAyY2IzOTA5Mzc1ZTAuLjE3ZmM1MDE5MDAxNGU5IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9iY21hL2JjbWEuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9iY21hL2JjbWEuaFxuQEAgLTQ4Niw0ICYjNDM7NDg2LDYgQEAgZXh0ZXJuIHUzMiBiY21hX2NvcmVfZG1hX3RyYW5zbGF0aW9uKHN0cnVjdCBiY21hX2RldmljZSAqY29yZSk7XG4gXG4gZXh0ZXJuIHVuc2lnbmVkIGludCBiY21hX2NvcmVfaXJxKHN0cnVjdCBiY21hX2RldmljZSAqY29yZSwgaW50IG51bSk7XG4gXG4mIzQzO2V4dGVybiBjb25zdCBzdHJ1Y3Qgc29mdHdhcmVfbm9kZSBiY21hX2dwaW9fc3dub2RlO1xuJiM0MztcbiAjZW5kaWYgLyogTElOVVhfQkNNQV9IXyAqL1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc3NiL3NzYi5oIGIvaW5jbHVkZS9saW51eC9zc2Ivc3NiLmhcbmluZGV4IDdmZWU5YWZhOTQ1ODhiLi42N2NiNjZmNmY1ZWQ2ZCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvc3NiL3NzYi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3NzYi9zc2IuaFxuQEAgLTY3MSw0ICYjNDM7NjcxLDYgQEAgaW50IHNzYl9wY2liaW9zX3BsYXRfZGV2X2luaXQoc3RydWN0IHBjaV9kZXYgKmRldik7XG4gaW50IHNzYl9wY2liaW9zX21hcF9pcnEoY29uc3Qgc3RydWN0IHBjaV9kZXYgKmRldiwgdTggc2xvdCwgdTggcGluKTtcbiAjZW5kaWYgLyogQ09ORklHX1NTQl9FTUJFRERFRCAqL1xuIFxuJiM0MztleHRlcm4gY29uc3Qgc3RydWN0IHNvZnR3YXJlX25vZGUgc3NiX2dwaW9fc3dub2RlO1xuJiM0MztcbiAjZW5kaWYgLyogTElOVVhfU1NCX0hfICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDI6NTU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJDTTQ3eHggYnV0dG9ucyBkcml2ZXIgYW5kIGFzc29jaWF0ZWQgQkNNQS9TU0IgR1BJTyBkcml2ZXJzIHRvIHVzZSBzb2Z0d2FyZSBub2RlcyBpbnN0ZWFkIG9mIHBsYXRmb3JtIGRhdGEuIFRoZXNlIGNoYW5nZXMgYXJlIHNwZWNpZmljIHRvIHRoZSBNSVBTIEJDTTQ3eHggYXJjaGl0ZWN0dXJlIGFuZCBpdHMgU29DIGJ1c2VzIChCQ01BX0hPU1RUWVBFX1NPQyBhbmQgU1NCX0JVU1RZUEVfU1NCKS4gU2luY2Ugc3l6a2FsbGVyIGRvZXMgbm90IGZ1enogTUlQUyBCQ000N3h4IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgdGhlc2UgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmOGM3OTUwMjU0M2VlMjEwNGVhNDIwNTM3MTk1Yzg2ZjdjMzA0Mjk5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdWwgMTQgMDI6NTU6MDkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvYmNtNDd4eC9idXR0b25zLmMgYi9hcmNoL21pcHMvYmNtNDd4eC9idXR0b25zLmMKaW5kZXggNDY5OTRmOWJiODIxOWMuLjE1MWE0ZWUyODAzZjAyIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvYmNtNDd4eC9idXR0b25zLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9taXBzL2JjbTQ3eHgvYnV0dG9ucy5jCkBAIC0xLDkgJiM0MzsxLDE0IEBACiAvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAogI2luY2x1ZGUgJiMzNDtiY200N3h4X3ByaXZhdGUuaCYjMzQ7CiAKLSNpbmNsdWRlICZsdDtsaW51eC9pbnB1dC5oJmd0OwotI2luY2x1ZGUgJmx0O2xpbnV4L2dwaW9fa2V5cy5oJmd0OwomIzQzOyNpbmNsdWRlICYjMzQ7bGludXgvZXJyLmgmIzM0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9ncGlvL21hY2hpbmUuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvZ3Bpby9wcm9wZXJ0eS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9pbnB1dC1ldmVudC1jb2Rlcy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2ludGVycnVwdC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcHJvcGVydHkuaCZndDsKJiM0MzsKICNpbmNsdWRlICZsdDtiY200N3h4X2JvYXJkLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7YmNtNDd4eC5oJmd0OwogCkBAIC0xMSwyOSAmIzQzOzE2LDM0IEBACiAgKiBEYXRhYmFzZQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi0jZGVmaW5lIEJDTTQ3WFhfR1BJT19LRVkoX2dwaW8sIF9jb2RlKQkJCQkJXAotCXsJCQkJCQkJCVwKLQkJLmNvZGUJCT0gX2NvZGUsCQkJCVwKLQkJLmdwaW8JCT0gX2dwaW8sCQkJCVwKLQkJLmFjdGl2ZV9sb3cJPSAxLAkJCQkJXAomIzQzO3N0cnVjdCBiY200N3h4X2dwaW9fa2V5IHsKJiM0MzsJdTE2IGNvZGU7CiYjNDM7CXU4IHBpbjsKJiM0MzsJdTggZmxhZ3M7CiYjNDM7fTsKJiM0MzsKJiM0MzsjZGVmaW5lIEJDTTQ3WFhfR1BJT19LRVkoX2dwaW8sIF9jb2RlKQkJCVwKJiM0MzsJewkJCQkJCVwKJiM0MzsJCS5jb2RlCT0gX2NvZGUsCQkJXAomIzQzOwkJLnBpbgk9IF9ncGlvLAkJCVwKJiM0MzsJCS5mbGFncwk9IEdQSU9fQUNUSVZFX0xPVywJCVwKIAl9CiAKLSNkZWZpbmUgQkNNNDdYWF9HUElPX0tFWV9IKF9ncGlvLCBfY29kZSkJCQkJXAotCXsJCQkJCQkJCVwKLQkJLmNvZGUJCT0gX2NvZGUsCQkJCVwKLQkJLmdwaW8JCT0gX2dwaW8sCQkJCVwKJiM0MzsjZGVmaW5lIEJDTTQ3WFhfR1BJT19LRVlfSChfZ3BpbywgX2NvZGUpCQlcCiYjNDM7CXsJCQkJCQlcCiYjNDM7CQkuY29kZQk9IF9jb2RlLAkJCVwKJiM0MzsJCS5waW4JPSBfZ3BpbywJCQlcCiYjNDM7CQkuZmxhZ3MJPSBHUElPX0FDVElWRV9ISUdILAkJXAogCX0KIAogLyogQXN1cyAqLwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KLWJjbTQ3eHhfYnV0dG9uc19hc3VzX3J0bjEwdVtdIF9faW5pdGNvbnN0ID0gewomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleSBiY200N3h4X2J1dHRvbnNfYXN1c19ydG4xMHVbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDIwLCBLRVlfV1BTX0JVVFRPTiksCiAJQkNNNDdYWF9HUElPX0tFWSgyMSwgS0VZX1JFU1RBUlQpLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCi1iY200N3h4X2J1dHRvbnNfYXN1c19ydG4xMltdIF9faW5pdGNvbnN0ID0gewomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleSBiY200N3h4X2J1dHRvbnNfYXN1c19ydG4xMltdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoMCwgS0VZX1dQU19CVVRUT04pLAogCUJDTTQ3WFhfR1BJT19LRVkoMSwgS0VZX1JFU1RBUlQpLAogCUJDTTQ3WFhfR1BJT19LRVkoNCwgQlROXzApLCAvKiBSb3V0ZXIgbW9kZSAqLwpAQCAtNDEsNzQgJiM0Mzs1MSw3MyBAQCBiY200N3h4X2J1dHRvbnNfYXN1c19ydG4xMltdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoNiwgQlROXzIpLCAvKiBBUCBtb2RlICovCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KLWJjbTQ3eHhfYnV0dG9uc19hc3VzX3J0bjE2W10gX19pbml0Y29uc3QgPSB7CiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5IGJjbTQ3eHhfYnV0dG9uc19hc3VzX3J0bjE2W10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfV1BTX0JVVFRPTiksCiAJQkNNNDdYWF9HUElPX0tFWSg4LCBLRVlfUkVTVEFSVCksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19hc3VzX3J0bjY2dVtdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLAogCUJDTTQ3WFhfR1BJT19LRVkoOSwgS0VZX1JFU1RBUlQpLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfYXN1c193bDMwMGdbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX2FzdXNfd2wzMjBnZVtdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfYXN1c193bDMzMGdlW10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSgyLCBLRVlfUkVTVEFSVCksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwZ1tdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfYXN1c193bDUwMGdkW10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwZ3B2MVtdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoMCwgS0VZX1JFU1RBUlQpLAogCUJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfYXN1c193bDUwMGdwdjJbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDIsIEtFWV9SRVNUQVJUKSwKIAlCQ000N1hYX0dQSU9fS0VZKDMsIEtFWV9XUFNfQlVUVE9OKSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDB3W10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWV9IKDYsIEtFWV9SRVNUQVJUKSwKIAlCQ000N1hYX0dQSU9fS0VZX0goNywgS0VZX1dQU19CVVRUT04pLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfYXN1c193bDUyMGdjW10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSgyLCBLRVlfUkVTVEFSVCksCiAJQkNNNDdYWF9HUElPX0tFWSgzLCBLRVlfV1BTX0JVVFRPTiksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTIwZ3VbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDIsIEtFWV9SRVNUQVJUKSwKIAlCQ000N1hYX0dQSU9fS0VZKDMsIEtFWV9XUFNfQlVUVE9OKSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX2FzdXNfd2w3MDBnZVtdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoMCwgS0VZX1BPV0VSKSwgLyogSGFyZCBkaXNrIHBvd2VyIHN3aXRjaCAqLwogCUJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLCAvKiBFWlNldHVwICovCkBAIC0xMTYsMjEgJiM0MzsxMjUsMjEgQEAgYmNtNDd4eF9idXR0b25zX2FzdXNfd2w3MDBnZVtdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoNywgS0VZX1JFU1RBUlQpLCAvKiBIYXJkIHJlc2V0ICovCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsaGRkW10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksCiB9OwogCiAvKiBIdWF3ZWkgKi8KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfaHVhd2VpX2U5NzBbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSwKIH07CiAKIC8qIEJlbGtpbiAqLwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19iZWxraW5fZjdkNDMwMVtdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLAogCUJDTTQ3WFhfR1BJT19LRVkoOCwgS0VZX1dQU19CVVRUT04pLApAQCAtMTM4LDQ0ICYjNDM7MTQ3LDQ0IEBAIGJjbTQ3eHhfYnV0dG9uc19iZWxraW5fZjdkNDMwMVtdIF9faW5pdGNvbnN0ID0gewogCiAvKiBCdWZmYWxvICovCiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd2hyMl9hNTRnNTRbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9SRVNUQVJUKSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd2hyX2cxMjVbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDAsIEtFWV9XUFNfQlVUVE9OKSwKIAlCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9SRVNUQVJUKSwKIAlCQ000N1hYX0dQSU9fS0VZKDUsIEJUTl8wKSwgLyogUm91dGVyIC8gQVAgbW9kZSBzd2l0Y2ggKi8KIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd2hyX2c1NHNbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDAsIEtFWV9XUFNfQlVUVE9OKSwKIAlCQ000N1hYX0dQSU9fS0VZX0goNCwgS0VZX1JFU1RBUlQpLAogCUJDTTQ3WFhfR1BJT19LRVkoNSwgQlROXzApLCAvKiBSb3V0ZXIgLyBBUCBtb2RlIHN3aXRjaCAqLwogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfYnVmZmFsb193aHJfaHBfZzU0W10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSgwLCBLRVlfV1BTX0JVVFRPTiksCiAJQkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfUkVTVEFSVCksCiAJQkNNNDdYWF9HUElPX0tFWSg1LCBCVE5fMCksIC8qIFJvdXRlciAvIEFQIG1vZGUgc3dpdGNoICovCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3d6cl9nMzAwbltdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1JFU1RBUlQpLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfYnVmZmFsb193enJfcnNfZzU0W10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSgwLCBLRVlfV1BTX0JVVFRPTiksCiAJQkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfUkVTVEFSVCksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3d6cl9yc19nNTRocFtdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoMCwgS0VZX1dQU19CVVRUT04pLAogCUJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1JFU1RBUlQpLApAQCAtMTgzLDIwICYjNDM7MTkyLDIwIEBAIGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3d6cl9yc19nNTRocFtdIF9faW5pdGNvbnN0ID0gewogCiAvKiBEZWxsICovCiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX2RlbGxfdG0yMzAwW10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSgwLCBLRVlfUkVTVEFSVCksCiB9OwogCiAvKiBELUxpbmsgKi8KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfZGxpbmtfZGlyMTMwW10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSgzLCBLRVlfUkVTVEFSVCksCiAJQkNNNDdYWF9HUElPX0tFWSg3LCBLRVlfVU5LTk9XTiksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19kbGlua19kaXIzMzBbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDMsIEtFWV9SRVNUQVJUKSwKIAlCQ000N1hYX0dQSU9fS0VZKDcsIEtFWV9VTktOT1dOKSwKQEAgLTIwNCwxMjcgJiM0MzsyMTMsMTI3IEBAIGJjbTQ3eHhfYnV0dG9uc19kbGlua19kaXIzMzBbXSBfX2luaXRjb25zdCA9IHsKIAogLyogTGlua3N5cyAqLwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UxMDAwdjFbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDUsIEtFWV9XUFNfQlVUVE9OKSwKIAlCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTEwMDB2MjFbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDksIEtFWV9XUFNfQlVUVE9OKSwKIAlCQ000N1hYX0dQSU9fS0VZKDEwLCBLRVlfUkVTVEFSVCksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UyMDAwdjFbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDUsIEtFWV9XUFNfQlVUVE9OKSwKIAlCQ000N1hYX0dQSU9fS0VZKDgsIEtFWV9SRVNUQVJUKSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTI1MDB2M1tdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoOSwgS0VZX1dQU19CVVRUT04pLAogCUJDTTQ3WFhfR1BJT19LRVkoMTAsIEtFWV9SRVNUQVJUKSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTMwMDB2MVtdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLAogCUJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMzIwMHYxW10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSg1LCBLRVlfUkVTVEFSVCksCiAJQkNNNDdYWF9HUElPX0tFWSg4LCBLRVlfV1BTX0JVVFRPTiksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2U0MjAwdjFbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9XUFNfQlVUVE9OKSwKIAlCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTUwbnYxW10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksCiAJQkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDE1MG52MTFbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9XUFNfQlVUVE9OKSwKIAlCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTYwbnYxW10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksCiAJQkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDE2MG52M1tdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoNSwgS0VZX1dQU19CVVRUT04pLAogCUJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMDBuX3YxW10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksCiAJQkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDMwMG52MTFbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9VTktOT1dOKSwKIAlCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzEwbnYxW10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksCiAJQkNNNDdYWF9HUElPX0tFWSg4LCBLRVlfVU5LTk9XTiksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDMxMG5fdjJbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDUsIEtFWV9XUFNfQlVUVE9OKSwKIAlCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzIwbl92MVtdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoNSwgS0VZX1dQU19CVVRUT04pLAogCUJDTTQ3WFhfR1BJT19LRVkoOCwgS0VZX1JFU1RBUlQpLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQ1NGczZ3YyW10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSg1LCBLRVlfV0lNQVgpLAogCUJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQ1NGdfZ2VuZXJpY1tdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLAogCUJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQ2MTBudjFbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSwKIAlCQ000N1hYX0dQSU9fS0VZKDgsIEtFWV9XUFNfQlVUVE9OKSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NjEwbnYyW10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksCiAJQkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydHNsNTRnc1tdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLAogCUJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLApAQCAtMzMyLDE1NCAmIzQzOzM0MSwxNTQgQEAgYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0c2w1NGdzW10gX19pbml0Y29uc3QgPSB7CiAKIC8qIEx1eHVsICovCiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX2x1eHVsX2Ficl80NDAwX3YxW10gPSB7CiAJQkNNNDdYWF9HUElPX0tFWSgxNCwgS0VZX1JFU1RBUlQpLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfbHV4dWxfeGFwXzMxMF92MVtdID0gewogCUJDTTQ3WFhfR1BJT19LRVkoMjAsIEtFWV9SRVNUQVJUKSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8xMjEwX3YxW10gPSB7CiAJQkNNNDdYWF9HUElPX0tFWSg4LCBLRVlfUkVTVEFSVCksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMTIzMF92MVtdID0gewogCUJDTTQ3WFhfR1BJT19LRVkoOCwgS0VZX1JFU1RBUlQpLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfbHV4dWxfeGFwXzEyNDBfdjFbXSA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDgsIEtFWV9SRVNUQVJUKSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8xNTAwX3YxW10gPSB7CiAJQkNNNDdYWF9HUElPX0tFWSgxNCwgS0VZX1JFU1RBUlQpLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfbHV4dWxfeGJyXzQ0MDBfdjFbXSA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDE0LCBLRVlfUkVTVEFSVCksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94dndfcDMwX3YxW10gPSB7CiAJQkNNNDdYWF9HUElPX0tFWSgyMCwgS0VZX1JFU1RBUlQpLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfbHV4dWxfeHdyXzYwMF92MVtdID0gewogCUJDTTQ3WFhfR1BJT19LRVkoOCwgS0VZX1JFU1RBUlQpLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfbHV4dWxfeHdyXzE3NTBfdjFbXSA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDE0LCBLRVlfUkVTVEFSVCksCiB9OwogCiAvKiBNaWNyb3NvZnQgKi8KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfbWljcm9zb2Z0X25tNzAwW10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSg3LCBLRVlfUkVTVEFSVCksCiB9OwogCiAvKiBNb3Rvcm9sYSAqLwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19tb3Rvcm9sYV93ZTgwMGdbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDAsIEtFWV9SRVNUQVJUKSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX21vdG9yb2xhX3dyODUwZ3BbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDUsIEtFWV9SRVNUQVJUKSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX21vdG9yb2xhX3dyODUwZ3YydjNbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDUsIEtFWV9SRVNUQVJUKSwKIH07CiAKIC8qIE5ldGdlYXIgKi8KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl9yNjIwMF92MVtdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoMiwgS0VZX1JGS0lMTCksCiAJQkNNNDdYWF9HUElPX0tFWSgzLCBLRVlfUkVTVEFSVCksCiAJQkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3I2MzAwX3YxW10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duMjUwMHJwX3YxW10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSgxMiwgS0VZX1JFU1RBUlQpLAogCUJDTTQ3WFhfR1BJT19LRVkoMzEsIEtFWV9XUFNfQlVUVE9OKSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjM0MDB2MVtdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1JFU1RBUlQpLAogCUJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1dQU19CVVRUT04pLAogCUJDTTQ3WFhfR1BJT19LRVkoOCwgS0VZX1JGS0lMTCksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duZHIzNDAwX3YzW10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSgxMiwgS0VZX1JFU1RBUlQpLAogCUJDTTQ3WFhfR1BJT19LRVkoMjMsIEtFWV9XUFNfQlVUVE9OKSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjM3MDB2M1tdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoMiwgS0VZX1JGS0lMTCksCiAJQkNNNDdYWF9HUElPX0tFWSgzLCBLRVlfUkVTVEFSVCksCiAJQkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duZHI0NTAwdjFbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9XUFNfQlVUVE9OKSwKIAlCQ000N1hYX0dQSU9fS0VZKDUsIEtFWV9SRktJTEwpLAogCUJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5CiBiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bnIxMDAwX3YzW10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSgyLCBLRVlfV1BTX0JVVFRPTiksCiAJQkNNNDdYWF9HUElPX0tFWSgzLCBLRVlfUkVTVEFSVCksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3ducjM1MDBsdjFbXSBfX2luaXRjb25zdCA9IHsKIAlCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9SRVNUQVJUKSwKIAlCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9XUFNfQlVUVE9OKSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbgomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleQogYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25yMzUwMGx2MltdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1JFU1RBUlQpLAogCUJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1dQU19CVVRUT04pLAogCUJDTTQ3WFhfR1BJT19LRVkoOCwgS0VZX1JGS0lMTCksCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3ducjgzNGJ2MltdIF9faW5pdGNvbnN0ID0gewogCUJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLAogfTsKIAogLyogU2ltcGxlVGVjaCAqLwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24KJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkKIGJjbTQ3eHhfYnV0dG9uc19zaW1wbGV0ZWNoX3NpbXBsZXNoYXJlW10gX19pbml0Y29uc3QgPSB7CiAJQkNNNDdYWF9HUElPX0tFWSgwLCBLRVlfUkVTVEFSVCksCiB9OwpAQCAtNDg4LDMxICYjNDM7NDk3LDk2IEBAIGJjbTQ3eHhfYnV0dG9uc19zaW1wbGV0ZWNoX3NpbXBsZXNoYXJlW10gX19pbml0Y29uc3QgPSB7CiAgKiBJbml0CiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLXN0YXRpYyBzdHJ1Y3QgZ3Bpb19rZXlzX3BsYXRmb3JtX2RhdGEgYmNtNDd4eF9idXR0b25fcGRhdGE7Ci0KLXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIGJjbTQ3eHhfYnV0dG9uc19ncGlvX2tleXMgPSB7Ci0JLm5hbWUgPSAmIzM0O2dwaW8ta2V5cyYjMzQ7LAotCS5kZXYgPSB7Ci0JCS5wbGF0Zm9ybV9kYXRhID0gJmFtcDtiY200N3h4X2J1dHRvbl9wZGF0YSwKJiM0MztzdGF0aWMgaW50IF9faW5pdAomIzQzO2JjbTQ3eHhfYnV0dG9uc19hZGQoY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkgKmJ1dHRvbnMsIGludCBuYnV0dG9ucykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7CiYjNDM7CWNvbnN0IHN0cnVjdCBzb2Z0d2FyZV9ub2RlICpncGlvX3N3bm9kZTsKJiM0MzsJc3RydWN0IHByb3BlcnR5X2VudHJ5ICpwOwomIzQzOwlpbnQgZXJyb3I7CiYjNDM7CWludCBpOwomIzQzOwomIzQzOwlzd2l0Y2ggKGJjbTQ3eHhfYnVzX3R5cGUpIHsKJiM0MzsjaWZkZWYgQ09ORklHX0JDTTQ3WFhfQkNNQQomIzQzOwljYXNlIEJDTTQ3WFhfQlVTX1RZUEVfQkNNQToKJiM0MzsJCWdwaW9fc3dub2RlID0gJmFtcDtiY21hX2dwaW9fc3dub2RlOwomIzQzOwkJYnJlYWs7CiYjNDM7I2VuZGlmCiYjNDM7I2lmZGVmIENPTkZJR19CQ000N1hYX1NTQgomIzQzOwljYXNlIEJDTTQ3WFhfQlVTX1RZUEVfU1NCOgomIzQzOwkJZ3Bpb19zd25vZGUgPSAmYW1wO3NzYl9ncGlvX3N3bm9kZTsKJiM0MzsJCWJyZWFrOwomIzQzOyNlbmRpZgomIzQzOwlkZWZhdWx0OgomIzQzOwkJcmV0dXJuIC1FTk9ERVY7CiAJfQotfTsKIAotLyogQ29weSBkYXRhIGZyb20gX19pbml0Y29uc3QgKi8KLXN0YXRpYyBpbnQgX19pbml0IGJjbTQ3eHhfYnV0dG9uc19jb3B5KGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uICpidXR0b25zLAotCQkJCSAgICAgICBzaXplX3QgbmJ1dHRvbnMpCi17Ci0Jc2l6ZV90IHNpemUgPSBuYnV0dG9ucyAqIHNpemVvZigqYnV0dG9ucyk7CiYjNDM7CS8qIDEgbm9kZSBmb3IgZ3Bpby1rZXlzIGRldmljZSwgMSBub2RlIGZvciBlYWNoIGJ1dHRvbiwgMSB0ZXJtaW5hdG9yICovCiYjNDM7CWNvbnN0IHN0cnVjdCBzb2Z0d2FyZV9ub2RlICoqbm9kZV9ncm91cCBfX2ZyZWUoa2ZyZWUpID0KJiM0MzsJCWtjYWxsb2MoMSAmIzQzOyBuYnV0dG9ucyAmIzQzOyAxLCBzaXplb2YoKm5vZGVfZ3JvdXApLCBHRlBfS0VSTkVMKTsKJiM0MzsJaWYgKCFub2RlX2dyb3VwKQomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiAKLQliY200N3h4X2J1dHRvbl9wZGF0YS5idXR0b25zID0ga21lbWR1cChidXR0b25zLCBzaXplLCBHRlBfS0VSTkVMKTsKLQlpZiAoIWJjbTQ3eHhfYnV0dG9uX3BkYXRhLmJ1dHRvbnMpCiYjNDM7CS8qIDEgY29kZSBwcm9wZXJ0eSwgMSBncGlvIHByb3BlcnR5LCAxIHRlcm1pbmF0b3IgKi8KJiM0MzsJc3RydWN0IHByb3BlcnR5X2VudHJ5ICpwcm9wcyBfX2ZyZWUoa2ZyZWUpID0KJiM0MzsJCWtjYWxsb2MobmJ1dHRvbnMgKiAzLCBzaXplb2YoKnByb3BzKSwgR0ZQX0tFUk5FTCk7CiYjNDM7CWlmICghcHJvcHMpCiAJCXJldHVybiAtRU5PTUVNOwotCWJjbTQ3eHhfYnV0dG9uX3BkYXRhLm5idXR0b25zID0gbmJ1dHRvbnM7CiAKJiM0MzsJLyogMSBub2RlIGZvciBncGlvLWtleXMgZGV2aWNlLCAxIG5vZGUgZm9yIGVhY2ggYnV0dG9uICovCiYjNDM7CXN0cnVjdCBzb2Z0d2FyZV9ub2RlICpub2RlcyBfX2ZyZWUoa2ZyZWUpID0KJiM0MzsJCWtjYWxsb2MoMSAmIzQzOyBuYnV0dG9ucywgc2l6ZW9mKCpub2RlcyksIEdGUF9LRVJORUwpOwomIzQzOwlpZiAoIW5vZGVzKQomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CiYjNDM7CXN0cnVjdCBzb2Z0d2FyZV9ub2RlX3JlZl9hcmdzICpyZWZfYXJncyBfX2ZyZWUoa2ZyZWUpID0KJiM0MzsJCWtjYWxsb2MobmJ1dHRvbnMsIHNpemVvZigqcmVmX2FyZ3MpLCBHRlBfS0VSTkVMKTsKJiM0MzsJaWYgKCFyZWZfYXJncykKJiM0MzsJCXJldHVybiAtRU5PTUVNOwomIzQzOwomIzQzOwkvKiBncGlvLWtleXMgbm9kZSAqLwomIzQzOwlub2Rlc1swXS5uYW1lID0gJiMzNDtiY200N3h4LWdwaW8tYnV0dG9ucyYjMzQ7OwomIzQzOwomIzQzOwlwID0gcHJvcHM7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBuYnV0dG9uczsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCWNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5ICpidXR0b24gPSAmYW1wO2J1dHRvbnNbaV07CiYjNDM7CQlzdHJ1Y3Qgc29mdHdhcmVfbm9kZSAqbm9kZSA9ICZhbXA7bm9kZXNbMSAmIzQzOyBpXTsKJiM0MzsJCXN0cnVjdCBzb2Z0d2FyZV9ub2RlX3JlZl9hcmdzICpyZWYgPSAmYW1wO3JlZl9hcmdzW2ldOwomIzQzOwomIzQzOwkJbm9kZS0mZ3Q7cGFyZW50ID0gJmFtcDtub2Rlc1swXTsKJiM0MzsJCW5vZGUtJmd0O3Byb3BlcnRpZXMgPSBwOwomIzQzOwomIzQzOwkJKnJlZiA9IFNPRlRXQVJFX05PREVfUkVGRVJFTkNFKGdwaW9fc3dub2RlLCBidXR0b24tJmd0O3BpbiwgYnV0dG9uLSZndDtmbGFncyk7CiYjNDM7CQkqcCYjNDM7JiM0MzsgPSBQUk9QRVJUWV9FTlRSWV9SRUYoJiMzNDtncGlvcyYjMzQ7LCAmYW1wO3JlZl9hcmdzW2ldKTsKJiM0MzsJCSpwJiM0MzsmIzQzOyA9IFBST1BFUlRZX0VOVFJZX1UzMigmIzM0O2xpbnV4LGNvZGUmIzM0OywgYnV0dG9uLSZndDtjb2RlKTsKJiM0MzsJCXAmIzQzOyYjNDM7OwomIzQzOwl9CiYjNDM7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBuYnV0dG9ucyAmIzQzOyAxOyBpJiM0MzsmIzQzOykKJiM0MzsJCW5vZGVfZ3JvdXBbaV0gPSAmYW1wO25vZGVzW2ldOwomIzQzOwomIzQzOwllcnJvciA9IHNvZnR3YXJlX25vZGVfcmVnaXN0ZXJfbm9kZV9ncm91cChub2RlX2dyb3VwKTsKJiM0MzsJaWYgKGVycm9yKQomIzQzOwkJcmV0dXJuIGVycm9yOwomIzQzOwomIzQzOwlwZGV2ID0gcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyX2Z1bGwoJmFtcDsoc3RydWN0IHBsYXRmb3JtX2RldmljZV9pbmZvKXsKJiM0MzsJCS5uYW1lID0gJiMzNDtncGlvLWtleXMmIzM0OywKJiM0MzsJCS5zd25vZGUgPSAmYW1wO25vZGVzWzBdLAomIzQzOwl9KTsKJiM0MzsJZXJyb3IgPSBQVFJfRVJSX09SX1pFUk8ocGRldik7CiYjNDM7CWlmIChlcnJvcikgewomIzQzOwkJc29mdHdhcmVfbm9kZV91bnJlZ2lzdGVyX25vZGVfZ3JvdXAobm9kZV9ncm91cCk7CiYjNDM7CQlyZXR1cm4gZXJyb3I7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0YWluX2FuZF9udWxsX3B0cihwcm9wcyk7CiYjNDM7CXJldGFpbl9hbmRfbnVsbF9wdHIobm9kZXMpOwomIzQzOwlyZXRhaW5fYW5kX251bGxfcHRyKHJlZl9hcmdzKTsKIAlyZXR1cm4gMDsKIH0KIAotI2RlZmluZSBiY200N3h4X2NvcHlfYmRhdGEoZGV2X2J1dHRvbnMpCQkJCQlcCi0JYmNtNDd4eF9idXR0b25zX2NvcHkoZGV2X2J1dHRvbnMsIEFSUkFZX1NJWkUoZGV2X2J1dHRvbnMpKTsKJiM0MzsjZGVmaW5lIGJjbTQ3eHhfYWRkX2JkYXRhKGRldl9idXR0b25zKQkJCQkJXAomIzQzOwliY200N3h4X2J1dHRvbnNfYWRkKGRldl9idXR0b25zLCBBUlJBWV9TSVpFKGRldl9idXR0b25zKSkKIAogaW50IF9faW5pdCBiY200N3h4X2J1dHRvbnNfcmVnaXN0ZXIodm9pZCkKIHsKQEAgLTUyMSw1MiAmIzQzOzU5NSw1MiBAQCBpbnQgX19pbml0IGJjbTQ3eHhfYnV0dG9uc19yZWdpc3Rlcih2b2lkKQogCiAJc3dpdGNoIChib2FyZCkgewogCWNhc2UgQkNNNDdYWF9CT0FSRF9BU1VTX1JUTjEwVToKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3J0bjEwdSk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c19ydG4xMHUpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfQVNVU19SVE4xMjoKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3J0bjEyKTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3J0bjEyKTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfUlROMTY6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c19ydG4xNik7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c19ydG4xNik7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9BU1VTX1JUTjY2VToKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3J0bjY2dSk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c19ydG42NnUpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfQVNVU19XTDMwMEc6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDMwMGcpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2wzMDBnKTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0wzMjBHRToKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsMzIwZ2UpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2wzMjBnZSk7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9BU1VTX1dMMzMwR0U6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDMzMGdlKTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsMzMwZ2UpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfQVNVU19XTDUwMEc6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDUwMGcpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBnKTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0w1MDBHRDoKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwZ2QpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBnZCk7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9BU1VTX1dMNTAwR1BWMToKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwZ3B2MSk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDUwMGdwdjEpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfQVNVU19XTDUwMEdQVjI6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDUwMGdwdjIpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBncHYyKTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0w1MDBXOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDB3KTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwdyk7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9BU1VTX1dMNTIwR0M6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDUyMGdjKTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTIwZ2MpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfQVNVU19XTDUyMEdVOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MjBndSk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDUyMGd1KTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0w3MDBHRToKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNzAwZ2UpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w3MDBnZSk7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9BU1VTX1dMSEREOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2xoZGQpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2xoZGQpOwogCQlicmVhazsKIAogCWNhc2UgQkNNNDdYWF9CT0FSRF9CRUxLSU5fRjdEMzMwMToKQEAgLTU3NCwxOTMgJiM0Mzs2NDgsMTkzIEBAIGludCBfX2luaXQgYmNtNDd4eF9idXR0b25zX3JlZ2lzdGVyKHZvaWQpCiAJY2FzZSBCQ000N1hYX0JPQVJEX0JFTEtJTl9GN0Q0MzAxOgogCWNhc2UgQkNNNDdYWF9CT0FSRF9CRUxLSU5fRjdENDMwMjoKIAljYXNlIEJDTTQ3WFhfQk9BUkRfQkVMS0lOX0Y3RDQ0MDE6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYmVsa2luX2Y3ZDQzMDEpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2JlbGtpbl9mN2Q0MzAxKTsKIAkJYnJlYWs7CiAKIAljYXNlIEJDTTQ3WFhfQk9BUkRfQlVGRkFMT19XSFIyX0E1NEc1NDoKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docjJfYTU0ZzU0KTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docjJfYTU0ZzU0KTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX0JVRkZBTE9fV0hSX0cxMjU6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYnVmZmFsb193aHJfZzEyNSk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYnVmZmFsb193aHJfZzEyNSk7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9CVUZGQUxPX1dIUl9HNTRTOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd2hyX2c1NHMpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd2hyX2c1NHMpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfQlVGRkFMT19XSFJfSFBfRzU0OgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd2hyX2hwX2c1NCk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYnVmZmFsb193aHJfaHBfZzU0KTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX0JVRkZBTE9fV1pSX0czMDBOOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd3pyX2czMDBuKTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3d6cl9nMzAwbik7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9CVUZGQUxPX1daUl9SU19HNTQ6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYnVmZmFsb193enJfcnNfZzU0KTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3d6cl9yc19nNTQpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfQlVGRkFMT19XWlJfUlNfRzU0SFA6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYnVmZmFsb193enJfcnNfZzU0aHApOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd3pyX3JzX2c1NGhwKTsKIAkJYnJlYWs7CiAKIAljYXNlIEJDTTQ3WFhfQk9BUkRfREVMTF9UTTIzMDA6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfZGVsbF90bTIzMDApOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2RlbGxfdG0yMzAwKTsKIAkJYnJlYWs7CiAKIAljYXNlIEJDTTQ3WFhfQk9BUkRfRExJTktfRElSMTMwOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2RsaW5rX2RpcjEzMCk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfZGxpbmtfZGlyMTMwKTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX0RMSU5LX0RJUjMzMDoKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19kbGlua19kaXIzMzApOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2RsaW5rX2RpcjMzMCk7CiAJCWJyZWFrOwogCiAJY2FzZSBCQ000N1hYX0JPQVJEX0hVQVdFSV9FOTcwOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2h1YXdlaV9lOTcwKTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19odWF3ZWlfZTk3MCk7CiAJCWJyZWFrOwogCiAJY2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfRTEwMDBWMToKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UxMDAwdjEpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTEwMDB2MSk7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX0UxMDAwVjIxOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTEwMDB2MjEpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTEwMDB2MjEpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19FMjAwMFYxOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTIwMDB2MSk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMjAwMHYxKTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfRTI1MDBWMzoKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UyNTAwdjMpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTI1MDB2Myk7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX0UzMDAwVjE6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMzAwMHYxKTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UzMDAwdjEpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19FMzIwMFYxOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTMyMDB2MSk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMzIwMHYxKTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfRTQyMDBWMToKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2U0MjAwdjEpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTQyMDB2MSk7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX1dSVDE1ME5WMToKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDE1MG52MSk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQxNTBudjEpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQxNTBOVjExOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTUwbnYxMSk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQxNTBudjExKTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfV1JUMTYwTlYxOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTYwbnYxKTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDE2MG52MSk7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX1dSVDE2ME5WMzoKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDE2MG52Myk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQxNjBudjMpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQzMDBOX1YxOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzAwbl92MSk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMDBuX3YxKTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfV1JUMzAwTlYxMToKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDMwMG52MTEpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzAwbnYxMSk7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX1dSVDMxME5WMToKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDMxMG52MSk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMTBudjEpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQzMTBOVjI6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMTBuX3YyKTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDMxMG5fdjIpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQzMjBOX1YxOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzIwbl92MSk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMjBuX3YxKTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfV1JUNTRHM0dWMjoKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDU0ZzNndjIpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NTRnM2d2Mik7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX1dSVDU0R19UWVBFXzAxMDE6CiAJY2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfV1JUNTRHX1RZUEVfMDQ2NzoKIAljYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQ1NEdfVFlQRV8wNzA4OgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NTRnX2dlbmVyaWMpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NTRnX2dlbmVyaWMpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQ2MTBOVjE6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQ2MTBudjEpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NjEwbnYxKTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfV1JUNjEwTlYyOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NjEwbnYyKTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDYxMG52Mik7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX1dSVFNMNTRHUzoKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydHNsNTRncyk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnRzbDU0Z3MpOwogCQlicmVhazsKIAogCWNhc2UgQkNNNDdYWF9CT0FSRF9MVVhVTF9BQlJfNDQwMF9WMToKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF9hYnJfNDQwMF92MSk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfYWJyXzQ0MDBfdjEpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfTFVYVUxfWEFQXzMxMF9WMToKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMzEwX3YxKTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMzEwX3YxKTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX0xVWFVMX1hBUF8xMjEwX1YxOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8xMjEwX3YxKTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMTIxMF92MSk7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9MVVhVTF9YQVBfMTIzMF9WMToKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMTIzMF92MSk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfeGFwXzEyMzBfdjEpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfTFVYVUxfWEFQXzEyNDBfVjE6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfeGFwXzEyNDBfdjEpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8xMjQwX3YxKTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX0xVWFVMX1hBUF8xNTAwX1YxOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8xNTAwX3YxKTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMTUwMF92MSk7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9MVVhVTF9YQlJfNDQwMF9WMToKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YnJfNDQwMF92MSk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfeGJyXzQ0MDBfdjEpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfTFVYVUxfWFZXX1AzMF9WMToKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94dndfcDMwX3YxKTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94dndfcDMwX3YxKTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX0xVWFVMX1hXUl82MDBfVjE6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfeHdyXzYwMF92MSk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfeHdyXzYwMF92MSk7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9MVVhVTF9YV1JfMTc1MF9WMToKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94d3JfMTc1MF92MSk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfeHdyXzE3NTBfdjEpOwogCQlicmVhazsKIAogCWNhc2UgQkNNNDdYWF9CT0FSRF9NSUNST1NPRlRfTU43MDA6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbWljcm9zb2Z0X25tNzAwKTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19taWNyb3NvZnRfbm03MDApOwogCQlicmVhazsKIAogCWNhc2UgQkNNNDdYWF9CT0FSRF9NT1RPUk9MQV9XRTgwMEc6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbW90b3JvbGFfd2U4MDBnKTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19tb3Rvcm9sYV93ZTgwMGcpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfTU9UT1JPTEFfV1I4NTBHUDoKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19tb3Rvcm9sYV93cjg1MGdwKTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19tb3Rvcm9sYV93cjg1MGdwKTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX01PVE9ST0xBX1dSODUwR1YyVjM6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbW90b3JvbGFfd3I4NTBndjJ2Myk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbW90b3JvbGFfd3I4NTBndjJ2Myk7CiAJCWJyZWFrOwogCiAJY2FzZSBCQ000N1hYX0JPQVJEX05FVEdFQVJfUjYyMDBfVjE6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl9yNjIwMF92MSk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl9yNjIwMF92MSk7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9ORVRHRUFSX1I2MzAwX1YxOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfcjYzMDBfdjEpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfcjYzMDBfdjEpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9XTjI1MDBSUF9WMToKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duMjUwMHJwX3YxKTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duMjUwMHJwX3YxKTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX05FVEdFQVJfV05EUjM0MDBWMToKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duZHIzNDAwdjEpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjM0MDB2MSk7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9ORVRHRUFSX1dORFIzNDAwX1YzOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjM0MDBfdjMpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjM0MDBfdjMpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9XTkRSMzcwMFYzOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjM3MDB2Myk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bmRyMzcwMHYzKTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX05FVEdFQVJfV05EUjQ1MDBWMToKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duZHI0NTAwdjEpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjQ1MDB2MSk7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9ORVRHRUFSX1dOUjEwMDBfVjM6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bnIxMDAwX3YzKTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3ducjEwMDBfdjMpOwogCQlicmVhazsKIAljYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9XTlIzNTAwTDoKLQkJZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3ducjM1MDBsdjEpOwomIzQzOwkJZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25yMzUwMGx2MSk7CiAJCWJyZWFrOwogCWNhc2UgQkNNNDdYWF9CT0FSRF9ORVRHRUFSX1dOUjM1MDBMX1YyOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25yMzUwMGx2Mik7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bnIzNTAwbHYyKTsKIAkJYnJlYWs7CiAJY2FzZSBCQ000N1hYX0JPQVJEX05FVEdFQVJfV05SODM0QlYyOgotCQllcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25yODM0YnYyKTsKJiM0MzsJCWVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3ducjgzNGJ2Mik7CiAJCWJyZWFrOwogCiAJY2FzZSBCQ000N1hYX0JPQVJEX1NJTVBMRVRFQ0hfU0lNUExFU0hBUkU6Ci0JCWVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfc2ltcGxldGVjaF9zaW1wbGVzaGFyZSk7CiYjNDM7CQllcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfc2ltcGxldGVjaF9zaW1wbGVzaGFyZSk7CiAJCWJyZWFrOwogCiAJZGVmYXVsdDoKQEAgLTc2OSwxMyAmIzQzOzg0Myw3IEBAIGludCBfX2luaXQgYmNtNDd4eF9idXR0b25zX3JlZ2lzdGVyKHZvaWQpCiAJfQogCiAJaWYgKGVycikKLQkJcmV0dXJuIC1FTk9NRU07Ci0KLQllcnIgPSBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJmFtcDtiY200N3h4X2J1dHRvbnNfZ3Bpb19rZXlzKTsKLQlpZiAoZXJyKSB7Ci0JCXByX2VycigmIzM0O0ZhaWxlZCB0byByZWdpc3RlciBwbGF0Zm9ybSBkZXZpY2U6ICVkXG4mIzM0OywgZXJyKTsKIAkJcmV0dXJuIGVycjsKLQl9CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmNtYS9kcml2ZXJfZ3Bpby5jIGIvZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmMKaW5kZXggNjU4YzdlMmFjOGJmNjEuLmVhNDUyMjJmMmZhMGZjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYwpAQCAtMTksNiAmIzQzOzE5LDExIEBACiAKICNkZWZpbmUgQkNNQV9HUElPX01BWF9QSU5TCTMyCiAKJiM0Mztjb25zdCBzdHJ1Y3Qgc29mdHdhcmVfbm9kZSBiY21hX2dwaW9fc3dub2RlID0gewomIzQzOwkubmFtZSA9ICYjMzQ7YmNtYS1ncGlvJiMzNDssCiYjNDM7fTsKJiM0MztFWFBPUlRfU1lNQk9MX0dQTChiY21hX2dwaW9fc3dub2RlKTsKJiM0MzsKIHN0YXRpYyBpbnQgYmNtYV9ncGlvX2dldF92YWx1ZShzdHJ1Y3QgZ3Bpb19jaGlwICpjaGlwLCB1bnNpZ25lZCBncGlvKQogewogCXN0cnVjdCBiY21hX2Rydl9jYyAqY2MgPSBncGlvY2hpcF9nZXRfZGF0YShjaGlwKTsKQEAgLTE5MCw3ICYjNDM7MTk1LDIwIEBAIGludCBiY21hX2dwaW9faW5pdChzdHJ1Y3QgYmNtYV9kcnZfY2MgKmNjKQogCWNoaXAtJmd0O2RpcmVjdGlvbl9pbnB1dAk9IGJjbWFfZ3Bpb19kaXJlY3Rpb25faW5wdXQ7CiAJY2hpcC0mZ3Q7ZGlyZWN0aW9uX291dHB1dAk9IGJjbWFfZ3Bpb19kaXJlY3Rpb25fb3V0cHV0OwogCWNoaXAtJmd0O3BhcmVudAkJPSBidXMtJmd0O2RldjsKLQljaGlwLSZndDtmd25vZGUJCT0gZGV2X2Z3bm9kZSgmYW1wO2NjLSZndDtjb3JlLSZndDtkZXYpOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBSZWdpc3RlciBzb2Z0d2FyZSBub2RlIG9ubHkgZm9yIHRoZSBob3N0IFNvQyBidXMsIHVubGVzcyB0aGVyZSBpcwomIzQzOwkgKiBhbHJlYWR5IGEgZmlybXdhcmUgbm9kZSBhc3NpZ25lZC4gVGhlcmUgaXMgb25seSBvbmUgU29DIGluc3RhbmNlCiYjNDM7CSAqIGluIHRoZSBzeXN0ZW0sIHNvIHRoZXJlIGFyZSBubyBjb25jZXJucyB3aXRoIHJlZ2lzdHJhdGlvbiBjb25mbGljdHMuCiYjNDM7CSAqLwomIzQzOwlpZiAoYnVzLSZndDtob3N0dHlwZSA9PSBCQ01BX0hPU1RUWVBFX1NPQyAmYW1wOyZhbXA7ICFkZXZfZndub2RlKCZhbXA7Y2MtJmd0O2NvcmUtJmd0O2RldikpIHsKJiM0MzsJCWVyciA9IHNvZnR3YXJlX25vZGVfcmVnaXN0ZXIoJmFtcDtiY21hX2dwaW9fc3dub2RlKTsKJiM0MzsJCWlmIChlcnIpCiYjNDM7CQkJcmV0dXJuIGVycjsKJiM0MzsJCWNoaXAtJmd0O2Z3bm9kZSA9IHNvZnR3YXJlX25vZGVfZndub2RlKCZhbXA7YmNtYV9ncGlvX3N3bm9kZSk7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQljaGlwLSZndDtmd25vZGUgPSBkZXZfZndub2RlKCZhbXA7Y2MtJmd0O2NvcmUtJmd0O2Rldik7CiYjNDM7CX0KIAogCXN3aXRjaCAoYnVzLSZndDtjaGlwaW5mby5pZCkgewogCWNhc2UgQkNNQV9DSElQX0lEX0JDTTQ3MDc6CkBAIC0yMTksMjAgJiM0MzsyMzcsMzMgQEAgaW50IGJjbWFfZ3Bpb19pbml0KHN0cnVjdCBiY21hX2Rydl9jYyAqY2MpCiAKIAllcnIgPSBiY21hX2dwaW9faXJxX2luaXQoY2MpOwogCWlmIChlcnIpCi0JCXJldHVybiBlcnI7CiYjNDM7CQlnb3RvIGVycl91bnJlZ2lzdGVyX3N3bm9kZTsKIAogCWVyciA9IGdwaW9jaGlwX2FkZF9kYXRhKGNoaXAsIGNjKTsKLQlpZiAoZXJyKSB7Ci0JCWJjbWFfZ3Bpb19pcnFfZXhpdChjYyk7Ci0JCXJldHVybiBlcnI7Ci0JfQomIzQzOwlpZiAoZXJyKQomIzQzOwkJZ290byBlcnJfaXJxX2V4aXQ7CiAKIAlyZXR1cm4gMDsKJiM0MzsKJiM0MztlcnJfaXJxX2V4aXQ6CiYjNDM7CWJjbWFfZ3Bpb19pcnFfZXhpdChjYyk7CiYjNDM7ZXJyX3VucmVnaXN0ZXJfc3dub2RlOgomIzQzOwlpZiAoYnVzLSZndDtob3N0dHlwZSA9PSBCQ01BX0hPU1RUWVBFX1NPQyAmYW1wOyZhbXA7CiYjNDM7CSAgICBjaGlwLSZndDtmd25vZGUgJmFtcDsmYW1wOyBpc19zb2Z0d2FyZV9ub2RlKGNoaXAtJmd0O2Z3bm9kZSkpIHsKJiM0MzsJCXNvZnR3YXJlX25vZGVfdW5yZWdpc3RlcigmYW1wO2JjbWFfZ3Bpb19zd25vZGUpOwomIzQzOwkJY2hpcC0mZ3Q7Zndub2RlID0gTlVMTDsKJiM0MzsJfQomIzQzOwlyZXR1cm4gZXJyOwogfQogCiBpbnQgYmNtYV9ncGlvX3VucmVnaXN0ZXIoc3RydWN0IGJjbWFfZHJ2X2NjICpjYykKIHsKIAliY21hX2dwaW9faXJxX2V4aXQoY2MpOwogCWdwaW9jaGlwX3JlbW92ZSgmYW1wO2NjLSZndDtncGlvKTsKJiM0MzsJaWYgKGNjLSZndDtjb3JlLSZndDtidXMtJmd0O2hvc3R0eXBlID09IEJDTUFfSE9TVFRZUEVfU09DICZhbXA7JmFtcDsKJiM0MzsJICAgIGNjLSZndDtncGlvLmZ3bm9kZSAmYW1wOyZhbXA7IGlzX3NvZnR3YXJlX25vZGUoY2MtJmd0O2dwaW8uZndub2RlKSkgewomIzQzOwkJc29mdHdhcmVfbm9kZV91bnJlZ2lzdGVyKCZhbXA7YmNtYV9ncGlvX3N3bm9kZSk7CiYjNDM7CQljYy0mZ3Q7Z3Bpby5md25vZGUgPSBOVUxMOwomIzQzOwl9CiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jIGIvZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYwppbmRleCA5MDU2NTdjOTI1YmNlYi4uODc5MjI0Nzk5NDZjYjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYwpAQCAtMTUsOCAmIzQzOzE1LDE0IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvaW50ZXJydXB0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvaXJxZG9tYWluLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvZXhwb3J0LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3Byb3BlcnR5LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvc3NiL3NzYi5oJmd0OwogCiYjNDM7Y29uc3Qgc3RydWN0IHNvZnR3YXJlX25vZGUgc3NiX2dwaW9fc3dub2RlID0gewomIzQzOwkubmFtZSA9ICYjMzQ7c3NiLWdwaW8mIzM0OywKJiM0Mzt9OwomIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHNzYl9ncGlvX3N3bm9kZSk7CiYjNDM7CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogU2hhcmVkCkBAIC0yMzIsNiAmIzQzOzIzOCw4IEBAIHN0YXRpYyBpbnQgc3NiX2dwaW9fY2hpcGNvX2luaXQoc3RydWN0IHNzYl9idXMgKmJ1cykKIAljaGlwLSZndDt0b19pcnEJCT0gc3NiX2dwaW9fdG9faXJxOwogI2VuZGlmCiAJY2hpcC0mZ3Q7bmdwaW8JCT0gMTY7CiYjNDM7CWlmIChidXMtJmd0O2J1c3R5cGUgPT0gU1NCX0JVU1RZUEVfU1NCKQomIzQzOwkJY2hpcC0mZ3Q7Zndub2RlCT0gc29mdHdhcmVfbm9kZV9md25vZGUoJmFtcDtzc2JfZ3Bpb19zd25vZGUpOwogCS8qIFRoZXJlIGlzIGp1c3Qgb25lIFNvQyBpbiBvbmUgZGV2aWNlIGFuZCBpdHMgR1BJTyBhZGRyZXNzZXMgc2hvdWxkIGJlCiAJICogZGV0ZXJtaW5pc3RpYyB0byBhZGRyZXNzIHRoZW0gbW9yZSBlYXNpbHkuIFRoZSBvdGhlciBidXNlcyBjb3VsZCBnZXQKIAkgKiBhIHJhbmRvbSBiYXNlIG51bWJlci4KQEAgLTQzMywxMCAmIzQzOzQ0MSwxMiBAQCBzdGF0aWMgaW50IHNzYl9ncGlvX2V4dGlmX2luaXQoc3RydWN0IHNzYl9idXMgKmJ1cykKIAkgKiBkZXRlcm1pbmlzdGljIHRvIGFkZHJlc3MgdGhlbSBtb3JlIGVhc2lseS4gVGhlIG90aGVyIGJ1c2VzIGNvdWxkIGdldAogCSAqIGEgcmFuZG9tIGJhc2UgbnVtYmVyLgogCSAqLwotCWlmIChidXMtJmd0O2J1c3R5cGUgPT0gU1NCX0JVU1RZUEVfU1NCKQotCQljaGlwLSZndDtiYXNlCQk9IDA7Ci0JZWxzZQotCQljaGlwLSZndDtiYXNlCQk9IC0xOwomIzQzOwlpZiAoYnVzLSZndDtidXN0eXBlID09IFNTQl9CVVNUWVBFX1NTQikgewomIzQzOwkJY2hpcC0mZ3Q7YmFzZQk9IDA7CiYjNDM7CQljaGlwLSZndDtmd25vZGUJPSBzb2Z0d2FyZV9ub2RlX2Z3bm9kZSgmYW1wO3NzYl9ncGlvX3N3bm9kZSk7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQljaGlwLSZndDtiYXNlCT0gLTE7CiYjNDM7CX0KIAogCWVyciA9IHNzYl9ncGlvX2lycV9leHRpZl9kb21haW5faW5pdChidXMpOwogCWlmIChlcnIpCkBAIC00NjQsMTEgJiM0Mzs0NzQsMzMgQEAgc3RhdGljIGludCBzc2JfZ3Bpb19leHRpZl9pbml0KHN0cnVjdCBzc2JfYnVzICpidXMpCiAKIGludCBzc2JfZ3Bpb19pbml0KHN0cnVjdCBzc2JfYnVzICpidXMpCiB7CiYjNDM7CWludCBlcnIgPSAwOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBSZWdpc3RlciBzb2Z0d2FyZSBub2RlIG9ubHkgZm9yIHRoZSBob3N0IFNvQyBidXMuIFRoZXJlIGlzIG9ubHkKJiM0MzsJICogb25lIFNvQyBpbnN0YW5jZSBpbiB0aGUgc3lzdGVtLCBzbyB0aGVyZSBhcmUgbm8gY29uY2VybnMgd2l0aAomIzQzOwkgKiByZWdpc3RyYXRpb24gY29uZmxpY3RzLgomIzQzOwkgKi8KJiM0MzsJaWYgKGJ1cy0mZ3Q7YnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpIHsKJiM0MzsJCWVyciA9IHNvZnR3YXJlX25vZGVfcmVnaXN0ZXIoJmFtcDtzc2JfZ3Bpb19zd25vZGUpOwomIzQzOwkJaWYgKGVycikKJiM0MzsJCQlyZXR1cm4gZXJyOwomIzQzOwl9CiYjNDM7CiAJaWYgKHNzYl9jaGlwY29fYXZhaWxhYmxlKCZhbXA7YnVzLSZndDtjaGlwY28pKQotCQlyZXR1cm4gc3NiX2dwaW9fY2hpcGNvX2luaXQoYnVzKTsKJiM0MzsJCWVyciA9IHNzYl9ncGlvX2NoaXBjb19pbml0KGJ1cyk7CiAJZWxzZSBpZiAoc3NiX2V4dGlmX2F2YWlsYWJsZSgmYW1wO2J1cy0mZ3Q7ZXh0aWYpKQotCQlyZXR1cm4gc3NiX2dwaW9fZXh0aWZfaW5pdChidXMpOwotCXJldHVybiAtMTsKJiM0MzsJCWVyciA9IHNzYl9ncGlvX2V4dGlmX2luaXQoYnVzKTsKJiM0MzsJZWxzZQomIzQzOwkJZXJyID0gLUVOT0RFVjsKJiM0MzsKJiM0MzsJaWYgKGVycikgewomIzQzOwkJaWYgKGJ1cy0mZ3Q7YnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpCiYjNDM7CQkJc29mdHdhcmVfbm9kZV91bnJlZ2lzdGVyKCZhbXA7c3NiX2dwaW9fc3dub2RlKTsKJiM0MzsJCXJldHVybiBlcnI7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiB9CiAKIGludCBzc2JfZ3Bpb191bnJlZ2lzdGVyKHN0cnVjdCBzc2JfYnVzICpidXMpCkBAIC00NzYsNiAmIzQzOzUwOCw4IEBAIGludCBzc2JfZ3Bpb191bnJlZ2lzdGVyKHN0cnVjdCBzc2JfYnVzICpidXMpCiAJaWYgKHNzYl9jaGlwY29fYXZhaWxhYmxlKCZhbXA7YnVzLSZndDtjaGlwY28pIHx8CiAJICAgIHNzYl9leHRpZl9hdmFpbGFibGUoJmFtcDtidXMtJmd0O2V4dGlmKSkgewogCQlncGlvY2hpcF9yZW1vdmUoJmFtcDtidXMtJmd0O2dwaW8pOwomIzQzOwkJaWYgKGJ1cy0mZ3Q7YnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpCiYjNDM7CQkJc29mdHdhcmVfbm9kZV91bnJlZ2lzdGVyKCZhbXA7c3NiX2dwaW9fc3dub2RlKTsKIAkJcmV0dXJuIDA7CiAJfQogCXJldHVybiAtMTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYmNtYS9iY21hLmggYi9pbmNsdWRlL2xpbnV4L2JjbWEvYmNtYS5oCmluZGV4IGYwMmNiMzkwOTM3NWUwLi4xN2ZjNTAxOTAwMTRlOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9iY21hL2JjbWEuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2JjbWEvYmNtYS5oCkBAIC00ODYsNCAmIzQzOzQ4Niw2IEBAIGV4dGVybiB1MzIgYmNtYV9jb3JlX2RtYV90cmFuc2xhdGlvbihzdHJ1Y3QgYmNtYV9kZXZpY2UgKmNvcmUpOwogCiBleHRlcm4gdW5zaWduZWQgaW50IGJjbWFfY29yZV9pcnEoc3RydWN0IGJjbWFfZGV2aWNlICpjb3JlLCBpbnQgbnVtKTsKIAomIzQzO2V4dGVybiBjb25zdCBzdHJ1Y3Qgc29mdHdhcmVfbm9kZSBiY21hX2dwaW9fc3dub2RlOwomIzQzOwogI2VuZGlmIC8qIExJTlVYX0JDTUFfSF8gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc3NiL3NzYi5oIGIvaW5jbHVkZS9saW51eC9zc2Ivc3NiLmgKaW5kZXggN2ZlZTlhZmE5NDU4OGIuLjY3Y2I2NmY2ZjVlZDZkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3NzYi9zc2IuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3NzYi9zc2IuaApAQCAtNjcxLDQgJiM0Mzs2NzEsNiBAQCBpbnQgc3NiX3BjaWJpb3NfcGxhdF9kZXZfaW5pdChzdHJ1Y3QgcGNpX2RldiAqZGV2KTsKIGludCBzc2JfcGNpYmlvc19tYXBfaXJxKGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpkZXYsIHU4IHNsb3QsIHU4IHBpbik7CiAjZW5kaWYgLyogQ09ORklHX1NTQl9FTUJFRERFRCAqLwogCiYjNDM7ZXh0ZXJuIGNvbnN0IHN0cnVjdCBzb2Z0d2FyZV9ub2RlIHNzYl9ncGlvX3N3bm9kZTsKJiM0MzsKICNlbmRpZiAvKiBMSU5VWF9TU0JfSF8gKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDI6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA5MzUKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA5MzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVW5yZWFjaGFibGUgQ29kZSBQYXRocyBpbiBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudHMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggc2VyaWVzIHRoYXQgcmVmYWN0b3JzIHRoZSBCQ000N3h4IGJ1dHRvbnMgZHJpdmVyLCBtb3ZpbmcgaXQgdG8gdXNlIHNvZnR3YXJlIG5vZGVzIGluc3RlYWQgb2YgYGdwaW9fa2V5c19wbGF0Zm9ybV9kYXRhYC4gVGhlIHBhdGNoIHRvdWNoZXMgYGFyY2gvbWlwcy9iY200N3h4L2J1dHRvbnMuY2AsIGFuZCBhbHNvIGBkcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uY2AsIGFuZCBgZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uY2AsIGFsb25nIHdpdGggYXNzb2NpYXRlZCBoZWFkZXIgZmlsZXMuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaW52b2x2ZXMgcmVnaXN0ZXJpbmcgYGJjbWFfZ3Bpb19zd25vZGVgIGFuZCBgc3NiX2dwaW9fc3dub2RlYCB3aXRoaW4gdGhlIHJlc3BlY3RpdmUgR1BJTyBkcml2ZXJzLgoKTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgcmVhY2hhYmlsaXR5LCBwYXJ0aWN1bGFybHkgaW4gb3VyIHR5cGljYWwgdmlydHVhbGl6ZWQgZnV6emluZyBzZXR1cHMuIFRoZSBCQ000N3h4IGlzIE1JUFMsIGFuZCB3aGlsZSBRRU1VICpjYW4qIHJ1biBNSVBTLCBvdXIgcHJpbWFyeSBmb2N1cyBpbiBzeXprYWxsZXIgaXMgdXN1YWxseSBvbiB4ODZfNjQsIGFybTY0LCByaXNjdjY0LCBhbmQgczM5MHguIFdlIGRvbiYjMzk7dCB0eXBpY2FsbHkgdGFyZ2V0IEJDTTQ3eHggc3BlY2lmaWNhbGx5LiBUaGUgaW5zdHJ1Y3Rpb25zIG1lbnRpb24gdGhhdCB3ZSBzaG91bGQgYmUgY29uY2VybmVkIGFib3V0IGNvZGUgdGhhdCYjMzk7cyBpbXBvc3NpYmxlIHRvIGhpdCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuCgpTbywgdGhlIGtleSBxdWVzdGlvbnMgYXJlOiBhcmUgdGhlc2UgQkNNQSBhbmQgU1NCIGJ1cyBwYXRocyByZWFjaGFibGUgaW4gb3VyIHN0YW5kYXJkIHRlc3Qgc2V0dXBzPyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGVzZSBgYmNtYV9ncGlvX3N3bm9kZWAgYW5kIGBzc2JfZ3Bpb19zd25vZGVgIHJlZ2lzdHJhdGlvbnMgYWN0dWFsbHkgaGFwcGVuLiBJIG5lZWQgdG8gdHJhY2UgdGhpcy4KCmBiY200N3h4X2J1dHRvbnNfYWRkYCBpcyB0aGUga2V5LCBhbmQgaXQmIzM5O3MgaW4gYGFyY2gvbWlwcy9iY200N3h4L2J1dHRvbnMuY2Agd2hpY2ggaXMgZ3VhcmRlZCBieSBgQ09ORklHX0JDTTQ3WFhgLiBUaGF0IGNvbmZpcm1zIGl0JiMzOTtzIE1JUFMgQkNNNDd4eC1zcGVjaWZpYy4gVGhpcyBpcyBhIHZlcnkgdGFyZ2V0ZWQgYXJjaGl0ZWN0dXJlLgoKTGV0JiMzOTtzIGxvb2sgYXQgYGRyaXZlcnMvYmNtYS9kcml2ZXJfZ3Bpby5jYCBhbmQgYGRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmNgLiBUaGV5JiMzOTtyZSBndWFyZGVkIGJ5IGBDT05GSUdfQkNNQV9EUklWRVJfR1BJT2AgYW5kIGBDT05GSUdfU1NCX0RSSVZFUl9HUElPYC4gQnV0LCB1bmRlciB3aGF0ICpjb25kaXRpb25zKiBhcmUgYGJjbWFfZ3Bpb19zd25vZGVgIGFuZCBgc3NiX2dwaW9fc3dub2RlYCBhY3R1YWxseSByZWdpc3RlcmVkPwoKRGlnZ2luZyBpbnRvIGBkcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uY2AsIGBiY21hX2dwaW9faW5pdGAgaXMgY2FsbGVkIGZyb20gYGJjbWFfY29yZV9ncGlvX2luaXRgLiBMb29raW5nIGF0IHRoaXMsIHRoZSBzb2Z0d2FyZSBub2RlIHJlZ2lzdHJhdGlvbiBvbmx5IGhhcHBlbnMgd2hlbiBgYnVzLSZndDtob3N0dHlwZSA9PSBCQ01BX0hPU1RUWVBFX1NPQ2AgYW5kIHdlIGFyZSBub3QgdXNpbmcgZGV2aWNlIGZpcm13YXJlIG5vZGUgKG5vdCBzdXBwb3J0ZWQgZm9yIEJDTTQ3eHgpLiBgQkNNQV9IT1NUVFlQRV9TT0NgIGlzICpzcGVjaWZpY2FsbHkqIGZvciBTb0MgY29uZmlndXJhdGlvbnMgbGlrZSB0aGUgQkNNNDd4eC4gRm9yIFBDSSBkZXZpY2VzLCB0aGUgYGhvc3R0eXBlYCBpcyBgQkNNQV9IT1NUVFlQRV9QQ0lgLiBUaGlzIGlzIHJlYWxseSB0YXJnZXRlZCBhdCB0aGUgU29DLgoKU2ltaWxhcmx5LCBpbiBgZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uY2AsIHRoZSBzb2Z0d2FyZSBub2RlIHJlZ2lzdHJhdGlvbiBvY2N1cnMgb25seSBpZiBgYnVzLSZndDtidXN0eXBlID09IFNTQl9CVVNUWVBFX1NTQmAsIHdoaWNoIGlzIGFsc28gU29DIHNwZWNpZmljLiBQQ0kgdXNlcyBgU1NCX0JVU1RZUEVfUENJYC4KClRoZXJlZm9yZSwgdGhpcyBuZXcgY29kZSAtIHRoZSBzb2Z0d2FyZSBub2RlIHJlZ2lzdHJhdGlvbiAtIGlzIG9ubHkgZXhlY3V0ZWQgd2hlbiB0aGUgZHJpdmVyIGlzIHJ1bm5pbmcgb24gYW4gU29DLCBpLmUuLCBNSVBTIEJDTTQ3eHguCgpTaW5jZSB3ZSBkb24mIzM5O3QgZnV6eiBNSVBTIEJDTTQ3eHggaW4gb3VyIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgYW5kIGV2ZW4gKmlmKiB3ZSBkaWQsIHRoZSBlbXVsYXRpb24gb2YgdGhlICpzcGVjaWZpYyogU29DIHdvdWxkIGJlIHJlcXVpcmVkLCB3aGljaCBzeXprYWxsZXIgZG9lc24mIzM5O3Qgc3VwcG9ydCBmb3IgQkNNNDd4eCwgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoYXQgdGhlc2UgbmV3IGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIG91ciBjdXJyZW50IGZ1enppbmcgc2V0dXAuIEkgdGhpbmsgSSYjMzk7bSBnb2luZyB0byBkb3VibGUgY2hlY2sgdGhlIHVzZSBvZiBgQkNNQV9IT1NUVFlQRV9TT0NgIHRvIGJlIGNlcnRhaW4uIEJ1dCBJIHRoaW5rIHRoaXMgaXMgcHJldHR5IHNvbGlkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAyOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0JDTUFfSE9TVFRZUEVfU09DJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmNtYS9jb3JlLmM9MTQwPXUzMiBiY21hX2NvcmVfZG1hX3RyYW5zbGF0aW9uKHN0cnVjdCBiY21hX2RldmljZSAqY29yZSlcbi0tXG5kcml2ZXJzL2JjbWEvY29yZS5jLTE0Mi1cdHN3aXRjaCAoY29yZS1cdTAwM2VidXMtXHUwMDNlaG9zdHR5cGUpIHtcbmRyaXZlcnMvYmNtYS9jb3JlLmM6MTQzOlx0Y2FzZSBCQ01BX0hPU1RUWVBFX1NPQzpcbmRyaXZlcnMvYmNtYS9jb3JlLmMtMTQ0LVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2NoaXBjb21tb24uYz0xNjk9dm9pZCBiY21hX2NvcmVfY2hpcGNvbW1vbl9lYXJseV9pbml0KHN0cnVjdCBiY21hX2Rydl9jYyAqY2MpXG4tLVxuZHJpdmVycy9iY21hL2RyaXZlcl9jaGlwY29tbW9uLmMtMTg2LVxuZHJpdmVycy9iY21hL2RyaXZlcl9jaGlwY29tbW9uLmM6MTg3Olx0aWYgKGJ1cy1cdTAwM2Vob3N0dHlwZSA9PSBCQ01BX0hPU1RUWVBFX1NPQylcbmRyaXZlcnMvYmNtYS9kcml2ZXJfY2hpcGNvbW1vbi5jLTE4OC1cdFx0YmNtYV9jb3JlX2NoaXBjb21tb25fZmxhc2hfZGV0ZWN0KGNjKTtcbi0tXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYz0xMzU9c3RhdGljIGludCBiY21hX2dwaW9faXJxX2luaXQoc3RydWN0IGJjbWFfZHJ2X2NjICpjYylcbi0tXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYy0xNDAtXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYzoxNDE6XHRpZiAoY2MtXHUwMDNlY29yZS1cdTAwM2VidXMtXHUwMDNlaG9zdHR5cGUgIT0gQkNNQV9IT1NUVFlQRV9TT0MpXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYy0xNDItXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvYmNtYS9kcml2ZXJfZ3Bpby5jPTE2ND1zdGF0aWMgdm9pZCBiY21hX2dwaW9faXJxX2V4aXQoc3RydWN0IGJjbWFfZHJ2X2NjICpjYylcbmRyaXZlcnMvYmNtYS9kcml2ZXJfZ3Bpby5jLTE2NS17XG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYzoxNjY6XHRpZiAoY2MtXHUwMDNlY29yZS1cdTAwM2VidXMtXHUwMDNlaG9zdHR5cGUgIT0gQkNNQV9IT1NUVFlQRV9TT0MpXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYy0xNjctXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYz0xODM9aW50IGJjbWFfZ3Bpb19pbml0KHN0cnVjdCBiY21hX2Rydl9jYyAqY2MpXG4tLVxuZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmMtMjAzLVx0ICovXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYzoyMDQ6XHRpZiAoYnVzLVx1MDAzZWhvc3R0eXBlID09IEJDTUFfSE9TVFRZUEVfU09DIFx1MDAyNlx1MDAyNiAhZGV2X2Z3bm9kZShcdTAwMjZjYy1cdTAwM2Vjb3JlLVx1MDAzZWRldikpIHtcbmRyaXZlcnMvYmNtYS9kcml2ZXJfZ3Bpby5jLTIwNS1cdFx0ZXJyID0gc29mdHdhcmVfbm9kZV9yZWdpc3RlcihcdTAwMjZiY21hX2dwaW9fc3dub2RlKTtcbi0tXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYy0yMzItXHRpZiAoSVNfQlVJTFRJTihDT05GSUdfQkNNNDdYWCkgfHxcbmRyaXZlcnMvYmNtYS9kcml2ZXJfZ3Bpby5jOjIzMzpcdCAgICBjYy1cdTAwM2Vjb3JlLVx1MDAzZWJ1cy1cdTAwM2Vob3N0dHlwZSA9PSBCQ01BX0hPU1RUWVBFX1NPQylcbmRyaXZlcnMvYmNtYS9kcml2ZXJfZ3Bpby5jLTIzNC1cdFx0Y2hpcC1cdTAwM2ViYXNlXHRcdD0gYnVzLVx1MDAzZW51bSAqIEJDTUFfR1BJT19NQVhfUElOUztcbi0tXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYy0yNTAtZXJyX3VucmVnaXN0ZXJfc3dub2RlOlxuZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmM6MjUxOlx0aWYgKGJ1cy1cdTAwM2Vob3N0dHlwZSA9PSBCQ01BX0hPU1RUWVBFX1NPQyBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvYmNtYS9kcml2ZXJfZ3Bpby5jLTI1Mi1cdCAgICBjaGlwLVx1MDAzZWZ3bm9kZSBcdTAwMjZcdTAwMjYgaXNfc29mdHdhcmVfbm9kZShjaGlwLVx1MDAzZWZ3bm9kZSkpIHtcbi0tXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYz0yNTk9aW50IGJjbWFfZ3Bpb191bnJlZ2lzdGVyKHN0cnVjdCBiY21hX2Rydl9jYyAqY2MpXG4tLVxuZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmMtMjYyLVx0Z3Bpb2NoaXBfcmVtb3ZlKFx1MDAyNmNjLVx1MDAzZWdwaW8pO1xuZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmM6MjYzOlx0aWYgKGNjLVx1MDAzZWNvcmUtXHUwMDNlYnVzLVx1MDAzZWhvc3R0eXBlID09IEJDTUFfSE9TVFRZUEVfU09DIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmMtMjY0LVx0ICAgIGNjLVx1MDAzZWdwaW8uZndub2RlIFx1MDAyNlx1MDAyNiBpc19zb2Z0d2FyZV9ub2RlKGNjLVx1MDAzZWdwaW8uZndub2RlKSkge1xuLS1cbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jPTE2OD1pbnQgX19pbml0IGJjbWFfaG9zdF9zb2NfcmVnaXN0ZXIoc3RydWN0IGJjbWFfc29jICpzb2MpXG4tLVxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmMtMTc5LVx0LyogSG9zdCBzcGVjaWZpYyAqL1xuZHJpdmVycy9iY21hL2hvc3Rfc29jLmM6MTgwOlx0YnVzLVx1MDAzZWhvc3R0eXBlID0gQkNNQV9IT1NUVFlQRV9TT0M7XG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYy0xODEtXHRidXMtXHUwMDNlb3BzID0gXHUwMDI2YmNtYV9ob3N0X3NvY19vcHM7XG4tLVxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmM9MjAzPXN0YXRpYyBpbnQgYmNtYV9ob3N0X3NvY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jLTIyMi1cdC8qIEhvc3Qgc3BlY2lmaWMgKi9cbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jOjIyMzpcdGJ1cy1cdTAwM2Vob3N0dHlwZSA9IEJDTUFfSE9TVFRZUEVfU09DO1xuZHJpdmVycy9iY21hL2hvc3Rfc29jLmMtMjI0LVx0YnVzLVx1MDAzZW9wcyA9IFx1MDAyNmJjbWFfaG9zdF9zb2Nfb3BzO1xuLS1cbmRyaXZlcnMvYmNtYS9tYWluLmM9MjE0PXVuc2lnbmVkIGludCBiY21hX2NvcmVfaXJxKHN0cnVjdCBiY21hX2RldmljZSAqY29yZSwgaW50IG51bSlcbi0tXG5kcml2ZXJzL2JjbWEvbWFpbi5jLTIyMS1cdFx0cmV0dXJuIGJ1cy1cdTAwM2Vob3N0X3BjaS1cdTAwM2VpcnE7XG5kcml2ZXJzL2JjbWEvbWFpbi5jOjIyMjpcdGNhc2UgQkNNQV9IT1NUVFlQRV9TT0M6XG5kcml2ZXJzL2JjbWEvbWFpbi5jLTIyMy1cdFx0aWYgKGJ1cy1cdTAwM2VkcnZfbWlwcy5jb3JlIFx1MDAyNlx1MDAyNiBudW0gPT0gMCkge1xuLS1cbmRyaXZlcnMvYmNtYS9tYWluLmM9MjM4PXZvaWQgYmNtYV9wcmVwYXJlX2NvcmUoc3RydWN0IGJjbWFfYnVzICpidXMsIHN0cnVjdCBiY21hX2RldmljZSAqY29yZSlcbi0tXG5kcml2ZXJzL2JjbWEvbWFpbi5jLTI1Mi1cdFx0YnJlYWs7XG5kcml2ZXJzL2JjbWEvbWFpbi5jOjI1MzpcdGNhc2UgQkNNQV9IT1NUVFlQRV9TT0M6XG5kcml2ZXJzL2JjbWEvbWFpbi5jLTI1NC1cdFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX09GKSBcdTAwMjZcdTAwMjYgYnVzLVx1MDAzZWRldikge1xuLS1cbmRyaXZlcnMvYmNtYS9tYWluLmM9MjkxPXN0YXRpYyBpbnQgYmNtYV9yZWdpc3Rlcl9kZXZpY2VzKHN0cnVjdCBiY21hX2J1cyAqYnVzKVxuLS1cbmRyaXZlcnMvYmNtYS9tYWluLmMtMzU4LVxuZHJpdmVycy9iY21hL21haW4uYzozNTk6XHRpZiAoYnVzLVx1MDAzZWhvc3R0eXBlID09IEJDTUFfSE9TVFRZUEVfU09DKSB7XG5kcml2ZXJzL2JjbWEvbWFpbi5jLTM2MC1cdFx0ZXJyID0gYmNtYV9jaGlwY29fd2F0Y2hkb2dfcmVnaXN0ZXIoXHUwMDI2YnVzLVx1MDAzZWRydl9jYyk7XG4tLVxuZHJpdmVycy9iY21hL21haW4uYz0zNjg9dm9pZCBiY21hX3VucmVnaXN0ZXJfY29yZXMoc3RydWN0IGJjbWFfYnVzICpidXMpXG4tLVxuZHJpdmVycy9iY21hL21haW4uYy0zNzctXHR9XG5kcml2ZXJzL2JjbWEvbWFpbi5jOjM3ODpcdGlmIChidXMtXHUwMDNlaG9zdHR5cGUgPT0gQkNNQV9IT1NUVFlQRV9TT0MpXG5kcml2ZXJzL2JjbWEvbWFpbi5jLTM3OS1cdFx0cGxhdGZvcm1fZGV2aWNlX3VucmVnaXN0ZXIoYnVzLVx1MDAzZWRydl9jYy53YXRjaGRvZyk7XG4tLVxuZHJpdmVycy9iY21hL3NjYW4uYz0yNzE9c3RhdGljIGludCBiY21hX2dldF9uZXh0X2NvcmUoc3RydWN0IGJjbWFfYnVzICpidXMsIHUzMiBfX2lvbWVtICoqZXJvbXB0cixcbi0tXG5kcml2ZXJzL2JjbWEvc2Nhbi5jLTQyMC1cdH1cbmRyaXZlcnMvYmNtYS9zY2FuLmM6NDIxOlx0aWYgKGJ1cy1cdTAwM2Vob3N0dHlwZSA9PSBCQ01BX0hPU1RUWVBFX1NPQykge1xuZHJpdmVycy9iY21hL3NjYW4uYy00MjItXHRcdGNvcmUtXHUwMDNlaW9fYWRkciA9IGlvcmVtYXAoY29yZS1cdTAwM2VhZGRyLCBCQ01BX0NPUkVfU0laRSk7XG4tLVxuZHJpdmVycy9iY21hL3NjYW4uYz00NTY9aW50IGJjbWFfYnVzX3NjYW4oc3RydWN0IGJjbWFfYnVzICpidXMpXG4tLVxuZHJpdmVycy9iY21hL3NjYW4uYy00NjctXHRlcm9tYmFzZSA9IGJjbWFfc2Nhbl9yZWFkMzIoYnVzLCBCQ01BX0NDX0VST00pO1xuZHJpdmVycy9iY21hL3NjYW4uYzo0Njg6XHRpZiAoYnVzLVx1MDAzZWhvc3R0eXBlID09IEJDTUFfSE9TVFRZUEVfU09DKSB7XG5kcml2ZXJzL2JjbWEvc2Nhbi5jLTQ2OS1cdFx0ZXJvbXB0ciA9IGlvcmVtYXAoZXJvbWJhc2UsIEJDTUFfQ09SRV9TSVpFKTtcbi0tXG5kcml2ZXJzL2JjbWEvc2Nhbi5jLTUxOS1vdXQ6XG5kcml2ZXJzL2JjbWEvc2Nhbi5jOjUyMDpcdGlmIChidXMtXHUwMDNlaG9zdHR5cGUgPT0gQkNNQV9IT1NUVFlQRV9TT0MpXG5kcml2ZXJzL2JjbWEvc2Nhbi5jLTUyMS1cdFx0aW91bm1hcChlcm9tcHRyKTtcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2Jyb2FkY29tL2JjbTQ3eHhfc3Byb20uYz02NTA9c3RhdGljIGludCBiY200N3h4X2dldF9zcHJvbV9iY21hKHN0cnVjdCBiY21hX2J1cyAqYnVzLCBzdHJ1Y3Qgc3NiX3Nwcm9tICpvdXQpXG4tLVxuZHJpdmVycy9maXJtd2FyZS9icm9hZGNvbS9iY200N3h4X3Nwcm9tLmMtNjcyLVx0XHRicmVhaztcbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vYmNtNDd4eF9zcHJvbS5jOjY3MzpcdGNhc2UgQkNNQV9IT1NUVFlQRV9TT0M6XG5kcml2ZXJzL2Zpcm13YXJlL2Jyb2FkY29tL2JjbTQ3eHhfc3Byb20uYy02NzQtXHRcdG1lbXNldChvdXQsIDAsIHNpemVvZihzdHJ1Y3Qgc3NiX3Nwcm9tKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYz01NTg2PWJvb2wgYnJjbXNfY19jaGlwbWF0Y2goc3RydWN0IGJjbWFfZGV2aWNlICpjb3JlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmMtNTU5MC1cdFx0cmV0dXJuIGJyY21zX2NfY2hpcG1hdGNoX3BjaShjb3JlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmM6NTU5MTpcdGNhc2UgQkNNQV9IT1NUVFlQRV9TT0M6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jLTU1OTItXHRcdHJldHVybiBicmNtc19jX2NoaXBtYXRjaF9zb2MoY29yZSk7XG4tLVxuaW5jbHVkZS9saW51eC9iY21hL2JjbWEuaD0yMT1lbnVtIGJjbWFfaG9zdHR5cGUge1xuLS1cbmluY2x1ZGUvbGludXgvYmNtYS9iY21hLmgtMjMtXHRCQ01BX0hPU1RUWVBFX1NESU8sXG5pbmNsdWRlL2xpbnV4L2JjbWEvYmNtYS5oOjI0Olx0QkNNQV9IT1NUVFlQRV9TT0MsXG5pbmNsdWRlL2xpbnV4L2JjbWEvYmNtYS5oLTI1LX07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDI6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUxMTgKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIEJDTUEgSG9zdCBUeXBlIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKgoKT2theSwgc28gYEJDTUFfSE9TVFRZUEVfU09DYCBpcyBkZWZpbmVkIHdpdGhpbiBgZHJpdmVycy9iY21hL2hvc3Rfc29jLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtDYW4gdGhpcyBwYXJ0aWN1bGFyIHNldHRpbmcsIG9yIHRoZSBjb2RlIHBhdGggdGhhdCBsZWFkcyB0byBpdCwgYmUgcmVhY2hlZCB3aGVuIHdlJiMzOTtyZSBydW5uaW5nIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/JiMzNDsgSXQmIzM5O3MgYSBrZXkgcXVlc3Rpb24sIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyBsaWtlIEJDTUEuIEkmIzM5O2xsIG5lZWQgdG8gZGl2ZSBpbnRvIGBkcml2ZXJzL2JjbWEvaG9zdF9zb2MuY2AgZGlyZWN0bHkuIE15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBjb2RlIGluIHRoYXQgZmlsZSwgZm9jdXNpbmcgb24gaG93IHRoZSBgQkNNQV9IT1NUVFlQRV9TT0NgIGZsYWcgaXMgc2V0IGFuZCB1bmRlciB3aGF0IGNvbmRpdGlvbnMuIFNwZWNpZmljYWxseSwgSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYW55IGluZGljYXRpb25zIG9yIGNoZWNrcyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSB3aGV0aGVyIHRoZSBTT0Mtc3BlY2lmaWMgY29kZSBpcyBhY3RpdmUgd2hlbiBydW5uaW5nIG9uIGEgdmlydHVhbCBob3N0LiBUaGlzIHdpbGwgcmVxdWlyZSBzb21lIGNhcmVmdWwgYW5hbHlzaXMgb2YgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uLCBhbnkgaGFyZHdhcmUgZGV0ZWN0aW9uIHJvdXRpbmVzLCBhbmQgYW55IGludGVyYWN0aW9ucyB3aXRoIHRoZSB1bmRlcmx5aW5nIGh5cGVydmlzb3IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDI6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmNtYV9ob3N0X3NvY19yZWdpc3RlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL21pcHMvYmNtNDd4eC9zZXR1cC5jPTE0MD1zdGF0aWMgdm9pZCBfX2luaXQgYmNtNDd4eF9yZWdpc3Rlcl9iY21hKHZvaWQpXG4tLVxuYXJjaC9taXBzL2JjbTQ3eHgvc2V0dXAuYy0xNDMtXG5hcmNoL21pcHMvYmNtNDd4eC9zZXR1cC5jOjE0NDpcdGVyciA9IGJjbWFfaG9zdF9zb2NfcmVnaXN0ZXIoXHUwMDI2YmNtNDd4eF9idXMuYmNtYSk7XG5hcmNoL21pcHMvYmNtNDd4eC9zZXR1cC5jLTE0NS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9iY21hL2JjbWFfcHJpdmF0ZS5oPTEwND1leHRlcm4gdm9pZCBfX2V4aXQgYmNtYV9ob3N0X3BjaV9leGl0KHZvaWQpO1xuLS1cbmRyaXZlcnMvYmNtYS9iY21hX3ByaXZhdGUuaC0xMDgtI2lmIGRlZmluZWQoQ09ORklHX0JDTUFfSE9TVF9TT0MpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19PRilcbmRyaXZlcnMvYmNtYS9iY21hX3ByaXZhdGUuaDoxMDk6ZXh0ZXJuIGludCBfX2luaXQgYmNtYV9ob3N0X3NvY19yZWdpc3Rlcl9kcml2ZXIodm9pZCk7XG5kcml2ZXJzL2JjbWEvYmNtYV9wcml2YXRlLmgtMTEwLWV4dGVybiB2b2lkIF9fZXhpdCBiY21hX2hvc3Rfc29jX3VucmVnaXN0ZXJfZHJpdmVyKHZvaWQpO1xuZHJpdmVycy9iY21hL2JjbWFfcHJpdmF0ZS5oLTExMS0jZWxzZVxuZHJpdmVycy9iY21hL2JjbWFfcHJpdmF0ZS5oOjExMjpzdGF0aWMgaW5saW5lIGludCBfX2luaXQgYmNtYV9ob3N0X3NvY19yZWdpc3Rlcl9kcml2ZXIodm9pZClcbmRyaXZlcnMvYmNtYS9iY21hX3ByaXZhdGUuaC0xMTMte1xuLS1cbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jPTE1Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGJjbWFfaG9zdF9vcHMgYmNtYV9ob3N0X3NvY19vcHMgPSB7XG4tLVxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmMtMTY3LVxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmM6MTY4OmludCBfX2luaXQgYmNtYV9ob3N0X3NvY19yZWdpc3RlcihzdHJ1Y3QgYmNtYV9zb2MgKnNvYylcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jLTE2OS17XG4tLVxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmM9MjU4PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGJjbWFfaG9zdF9zb2NfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jLTI2Ni1cbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jOjI2NzppbnQgX19pbml0IGJjbWFfaG9zdF9zb2NfcmVnaXN0ZXJfZHJpdmVyKHZvaWQpXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYy0yNjgte1xuLS1cbmRyaXZlcnMvYmNtYS9tYWluLmM9NjcyPXN0YXRpYyBpbnQgX19pbml0IGJjbWFfbW9kaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvYmNtYS9tYWluLmMtNjc5LVxuZHJpdmVycy9iY21hL21haW4uYzo2ODA6XHRlcnIgPSBiY21hX2hvc3Rfc29jX3JlZ2lzdGVyX2RyaXZlcigpO1xuZHJpdmVycy9iY21hL21haW4uYy02ODEtXHRpZiAoZXJyKSB7XG4tLVxuaW5jbHVkZS9saW51eC9iY21hL2JjbWFfc29jLmg9Nz1zdHJ1Y3QgYmNtYV9zb2Mge1xuLS1cbmluY2x1ZGUvbGludXgvYmNtYS9iY21hX3NvYy5oLTExLVxuaW5jbHVkZS9saW51eC9iY21hL2JjbWFfc29jLmg6MTI6aW50IF9faW5pdCBiY21hX2hvc3Rfc29jX3JlZ2lzdGVyKHN0cnVjdCBiY21hX3NvYyAqc29jKTtcbmluY2x1ZGUvbGludXgvYmNtYS9iY21hX3NvYy5oLTEzLWludCBfX2luaXQgYmNtYV9ob3N0X3NvY19pbml0KHN0cnVjdCBiY21hX3NvYyAqc29jKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMjo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjE2NQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gaGVyZS4KCioqRGVjb25zdHJ1Y3RpbmcgdGhlIEJDTUEgSG9zdC9Tb0MgRHJpdmVyIFJlZ2lzdHJhdGlvbioqCgpSaWdodCwgc28gYGJjbWFfaG9zdF9zb2NfcmVnaXN0ZXJfZHJpdmVyYCBpcyBnZXR0aW5nIGNhbGxlZCBmcm9tIGBiY21hX21vZGluaXRgLiBUaGF0IG1ha2VzIHNlbnNlLCBidXQgaXQgYWxzbyBtZWFucyB0aGF0IHRoZSBidWlsZCBjb25maWd1cmF0aW9uIGhhcyB0byBpbmNsdWRlIGJvdGggYENPTkZJR19CQ01BX0hPU1RfU09DYCBhbmQgYENPTkZJR19PRmAuIEkgbmVlZCB0byByZW1lbWJlciB0aGF0LiBJdCYjMzk7cyBhIHByZXR0eSBzdGFuZGFyZCBwYXR0ZXJuIGZvciBtb2R1bGUgaW5pdGlhbGl6YXRpb24sIG9idmlvdXNseSB0cmlnZ2VyZWQgd2hlbiB0aGUgZHJpdmVyIGlzIGxvYWRlZCBvciBhdCBzeXN0ZW0gc3RhcnR1cC4gTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgKndoYXQqIGlzIGBiY21hX2hvc3Rfc29jX3JlZ2lzdGVyX2RyaXZlcmAgYWN0dWFsbHkgKmRvaW5nKj8gSSBuZWVkIHRvIGRpZyBpbnRvIGl0cyBpbXBsZW1lbnRhdGlvbi4gUHJlc3VtYWJseSwgdGhpcyBpcyB3aGVyZSB0aGUgY29yZSBkZXZpY2UgZHJpdmVyIGdldHMgYXR0YWNoZWQgdG8gdGhlIGJ1cyBhbmQgdGhlIGJvYXJkLXNwZWNpZmljIGluaXRpYWxpemF0aW9uIGJlZ2lucyBpZiBpdCYjMzk7cyBiYXNlZCBvbiBhbiBTb0MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDI6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmNtYV9ob3N0X3NvY19yZWdpc3Rlcl9kcml2ZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9iY21hL2JjbWFfcHJpdmF0ZS5oPTEwND1leHRlcm4gdm9pZCBfX2V4aXQgYmNtYV9ob3N0X3BjaV9leGl0KHZvaWQpO1xuLS1cbmRyaXZlcnMvYmNtYS9iY21hX3ByaXZhdGUuaC0xMDgtI2lmIGRlZmluZWQoQ09ORklHX0JDTUFfSE9TVF9TT0MpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19PRilcbmRyaXZlcnMvYmNtYS9iY21hX3ByaXZhdGUuaDoxMDk6ZXh0ZXJuIGludCBfX2luaXQgYmNtYV9ob3N0X3NvY19yZWdpc3Rlcl9kcml2ZXIodm9pZCk7XG5kcml2ZXJzL2JjbWEvYmNtYV9wcml2YXRlLmgtMTEwLWV4dGVybiB2b2lkIF9fZXhpdCBiY21hX2hvc3Rfc29jX3VucmVnaXN0ZXJfZHJpdmVyKHZvaWQpO1xuZHJpdmVycy9iY21hL2JjbWFfcHJpdmF0ZS5oLTExMS0jZWxzZVxuZHJpdmVycy9iY21hL2JjbWFfcHJpdmF0ZS5oOjExMjpzdGF0aWMgaW5saW5lIGludCBfX2luaXQgYmNtYV9ob3N0X3NvY19yZWdpc3Rlcl9kcml2ZXIodm9pZClcbmRyaXZlcnMvYmNtYS9iY21hX3ByaXZhdGUuaC0xMTMte1xuLS1cbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jPTI1OD1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBiY21hX2hvc3Rfc29jX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYy0yNjYtXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYzoyNjc6aW50IF9faW5pdCBiY21hX2hvc3Rfc29jX3JlZ2lzdGVyX2RyaXZlcih2b2lkKVxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmMtMjY4LXtcbi0tXG5kcml2ZXJzL2JjbWEvbWFpbi5jPTY3Mj1zdGF0aWMgaW50IF9faW5pdCBiY21hX21vZGluaXQodm9pZClcbi0tXG5kcml2ZXJzL2JjbWEvbWFpbi5jLTY3OS1cbmRyaXZlcnMvYmNtYS9tYWluLmM6NjgwOlx0ZXJyID0gYmNtYV9ob3N0X3NvY19yZWdpc3Rlcl9kcml2ZXIoKTtcbmRyaXZlcnMvYmNtYS9tYWluLmMtNjgxLVx0aWYgKGVycikge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAyOjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2ODQ3CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipEaXZpbmcgaW50byB0aGUgQkNNQSBIb3N0IFNPQyBEcml2ZXIgUmVnaXN0cmF0aW9uKioKClJpZ2h0LCBgYmNtYV9ob3N0X3NvY19yZWdpc3Rlcl9kcml2ZXJgIGlzIGJlaW5nIGNhbGxlZCwgd2hpY2ggaXMgc3RhbmRhcmQgcHJvY2VkdXJlLiBJdCYjMzk7cyBlc3NlbnRpYWxseSB0ZWxsaW5nIHRoZSBrZXJuZWwsICYjMzQ7SGV5LCB0aGVyZSYjMzk7cyBhIG5ldyBkcml2ZXIsIGBiY21hX2hvc3Rfc29jX2RyaXZlcmAsIGF2YWlsYWJsZTsgYmUgb24gdGhlIGxvb2tvdXQgZm9yIGhhcmR3YXJlIHRoYXQgaXQgY2FuIGhhbmRsZS4mIzM0OyBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtPa2F5LCBnb29kLiBOb3csIHdoYXQgcGxhdGZvcm0gSURzIG9yIGRldmljZSBwcm9wZXJ0aWVzIGlzIHRoaXMgZHJpdmVyIGV4cGVjdGluZz8gV2hhdCBjcml0ZXJpYSBkb2VzIGl0IHVzZSB0byBkZXRlcm1pbmUgaWYgaXQgc2hvdWxkIHRha2UgcmVzcG9uc2liaWxpdHkgZm9yIGEgcGllY2Ugb2YgaGFyZHdhcmU/JiMzNDsgSSBuZWVkIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHRoZSBwcm9iZSBtYXRjaGVzLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgYGJjbWFfaG9zdF9zb2NfZHJpdmVyYCBpcyBkZXNpZ25lZCB0byBpZGVudGlmeSBhbmQgd29yayB3aXRoIHBhcnRpY3VsYXIgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMuIFRoaXMgaGVscHMgbWUgdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhlIGRyaXZlciBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggdGhlIHVuZGVybHlpbmcgU09DLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGl0JiMzOTtzICpsb29raW5nKiBmb3IgaW4gb3JkZXIgdG8ga25vdyAqd2hlcmUqIGl0IHdpbGwgYmUgZWZmZWN0aXZlLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhhdCBkcml2ZXIgKmFjdHVhbGx5KiBtYXRjaGVzIGFnYWluc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAyOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JjbWFfaG9zdF9zb2NfZHJpdmVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmNtYS9ob3N0X3NvYy5jPTI1Nj1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBiY21hX2hvc3Rfc29jX29mX21hdGNoKTtcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jLTI1Ny1cbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jOjI1ODpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBiY21hX2hvc3Rfc29jX2RyaXZlciA9IHtcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jLTI1OS1cdC5kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmM9MjY3PWludCBfX2luaXQgYmNtYV9ob3N0X3NvY19yZWdpc3Rlcl9kcml2ZXIodm9pZClcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jLTI2OC17XG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYzoyNjk6XHRyZXR1cm4gcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKFx1MDAyNmJjbWFfaG9zdF9zb2NfZHJpdmVyKTtcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jLTI3MC19XG4tLVxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmM9MjcyPXZvaWQgX19leGl0IGJjbWFfaG9zdF9zb2NfdW5yZWdpc3Rlcl9kcml2ZXIodm9pZClcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jLTI3My17XG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYzoyNzQ6XHRwbGF0Zm9ybV9kcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZiY21hX2hvc3Rfc29jX2RyaXZlcik7XG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYy0yNzUtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMjo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzQ1NQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQ6CgoqKkFuYWx5emluZyB0aGUgYGJjbWFfaG9zdF9zb2Nfb2ZfbWF0Y2hgIEZ1bmN0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgYmNtYV9ob3N0X3NvY19vZl9tYXRjaGAgZnVuY3Rpb24uIEltbWVkaWF0ZWx5LCBteSBleHBlcnQgYnJhaW4ga2lja3MgaW4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBwdXJwb3NlIHdpdGhpbiB0aGUgYnJvYWRlciBjb250ZXh0LiAmIzM0O2JjbWEmIzM0OyBzdWdnZXN0cyBCcm9hZGNvbSwgaW5kaWNhdGluZyB0aGlzIGlzIHByb2JhYmx5IHJlbGF0ZWQgdG8gdGhlaXIgQ29tbXVuaWNhdGlvbiBBcmNoaXRlY3R1cmUuICYjMzQ7aG9zdCYjMzQ7IGltcGxpZXMgaXQmIzM5O3MgZGVhbGluZyB3aXRoIHRoZSBob3N0IGludGVyZmFjZSwgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiBhIHN5c3RlbS1vbi1hLWNoaXAgKFNvQykgYW5kIHRoZSBob3N0IENQVSBvciBvdGhlciBjb21wb25lbnRzLiAmIzM0O29mJiMzNDsgYW5kICYjMzQ7bWF0Y2gmIzM0OyBoaW50cyBhdCBhbiBhZGRyZXNzIHRhYmxlIG9yIGxvb2t1cCBwcm9jZXNzLgoKVGhlcmVmb3JlLCBteSBpbml0aWFsIGh5cG90aGVzaXMgaXMgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGRlc2lnbmVkIHRvICoqZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgcGllY2Ugb2YgaGFyZHdhcmUgKGxpa2VseSBhIEJyb2FkY29tIFNvQykgaXMgY29tcGF0aWJsZSB3aXRoIGEgcGFydGljdWxhciBob3N0IGludGVyZmFjZSBiYXNlZCBvbiBhIERldmljZSBUcmVlIChEVCkgZW50cnkuKiogSXTigJlzIHByb2JhYmx5IGNoZWNraW5nIHByb3BlcnRpZXMgd2l0aGluIHRoZSBEVCB0byBzZWUgaWYgdGhleSBhbGlnbiB3aXRoIHRoZSBleHBlY3RlZCByZXF1aXJlbWVudHMgZm9yIHRoYXQgc3BlY2lmaWMgU29DLiBUaGlzIG1hdGNoaW5nIHByb2Nlc3MgaXMgY3J1Y2lhbC4gSXTigJlzIHRoZSBnYXRld2F5LCBkZXRlcm1pbmluZyBpZiB0aGUgZHJpdmVyIGlzIGxvYWRlZCBhbmQgdGhlIGhhcmR3YXJlIGlzIGNvcnJlY3RseSBpbml0aWFsaXplZC4gVGhlIGNvZGUgaGVyZSBpcyB0aGUgZ2F0ZWtlZXBlci4KCkkmIzM5O20gZXhwZWN0aW5nIHRoaXMgZnVuY3Rpb24gdG8gY29tcGFyZSBzb21lIElEIGZpZWxkcywgbGlrZSBhIGJvYXJkIGlkZW50aWZpZXIsIGNoaXBzZXQgdmVyc2lvbiwgb3Igc3BlY2lmaWMgZGV2aWNlIGlkZW50aWZpZXJzIGFnYWluc3QgdGhlIERldmljZSBUcmVlIGRhdGEuIFBvdGVudGlhbGx5LCBpdCBjb3VsZCBleGFtaW5lIHRoZSBEVCBwcm9wZXJ0aWVzIHRvIHNlZSBpZiB0aGV5JiMzOTtyZSBhICYjMzQ7cGVyZmVjdCYjMzQ7IG1hdGNoLCBvciBpZiBzb21lIHRvbGVyYW5jZXMgb3Igd2lsZGNhcmRpbmcgYXJlIGludm9sdmVkIHRvIHN1cHBvcnQgYSByYW5nZSBvZiBCcm9hZGNvbSBTb0NzLiBJIGJldCB0aGVyZSBpcyBhbiBpbnRlcnJ1cHQgY29uZmlndXJhdGlvbiBoZXJlLCB0b28uIFRoZSBgb2ZgIHByZWZpeCBzdWdnZXN0cyBEZXZpY2UgVHJlZSBiaW5kaW5ncywgc28gaXTigJlzIGxpa2VseSB1c2luZyBEVCBwcm9wZXJ0aWVzIHRvIGNvbmZpZ3VyZSB0aGUgaGFyZHdhcmUsIGFuZCB0aGUgbWF0Y2ggaXMgcGFydCBvZiB2YWxpZGF0aW5nIHRoZSBjb3JyZWN0IGNvbmZpZ3VyYXRpb24gYW5kIGRyaXZlci4gTGV0JiMzOTtzIHNlZSBpZiBteSBkZWR1Y3Rpb25zIGFyZSBjb3JyZWN0LiBJIG5lZWQgdG8gc2VlIHRoZSBjb2RlIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDI6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmNtYV9ob3N0X3NvY19vZl9tYXRjaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2JjbWEvaG9zdF9zb2MuYz0yNDM9c3RhdGljIHZvaWQgYmNtYV9ob3N0X3NvY19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYy0yNTEtXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYzoyNTI6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYmNtYV9ob3N0X3NvY19vZl9tYXRjaFtdID0ge1xuZHJpdmVycy9iY21hL2hvc3Rfc29jLmMtMjUzLVx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O2JyY20sYnVzLWF4aVwmIzM0OywgfSxcbi0tXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYy0yNTUtfTtcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jOjI1NjpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBiY21hX2hvc3Rfc29jX29mX21hdGNoKTtcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jLTI1Ny1cbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jPTI1OD1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBiY21hX2hvc3Rfc29jX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYy0yNjAtXHRcdC5uYW1lID0gXCYjMzQ7YmNtYS1ob3N0LXNvY1wmIzM0OyxcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jOjI2MTpcdFx0Lm9mX21hdGNoX3RhYmxlID0gYmNtYV9ob3N0X3NvY19vZl9tYXRjaCxcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jLTI2Mi1cdH0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAyOjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4MTg5CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNTE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQkNNQSBHUElPIEluaXRpYWxpemF0aW9uIFBhdGgqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzOiBpZiB0aGUgZGV2aWNlIHRyZWUgaW5jbHVkZXMgJiMzNDticmNtLGJ1cy1heGksJiMzNDsgdGhlbiBgYmNtYV9ob3N0X3NvY19wcm9iZWAgd2lsbCBiZSB0cmlnZ2VyZWQuIFRoYXQmIzM5O3MgY3J1Y2lhbCBiZWNhdXNlIGBiY21hX2hvc3Rfc29jX3Byb2JlYCBzZXRzIGBidXMtJmd0O2hvc3R0eXBlYCB0byBgQkNNQV9IT1NUVFlQRV9TT0NgLCB3aGljaCBpcyB0aGVuIGVzc2VudGlhbCBmb3IgYGJjbWFfYnVzX3JlZ2lzdGVyYC4gSWYgdGhhdCBoYXBwZW5zLCB0aGUgYnVzIHdpbGwgYmUgc2Nhbm5lZCwgYW5kIGlmIGEgR1BJTyBjb250cm9sbGVyIGlzIGZvdW5kLCBgYmNtYV9ncGlvX2luaXRgIGdldHMgY2FsbGVkLgoKVGhlIGtleSBxdWVzdGlvbiBpcyB3aGV0aGVyIHdlIGNhbiBpbmplY3QgYSAmIzM0O2JyY20sYnVzLWF4aSYjMzQ7IG5vZGUgdmlhIHN5emthbGxlci4gIFN5emthbGxlciBkb2VzbiYjMzk7dCB0eXBpY2FsbHkganVzdCAqaW5qZWN0KiBhcmJpdHJhcnkgZGV2aWNlIHRyZWUgbm9kZXMgdW5sZXNzIGl0JiMzOTtzIGV4cGxpY2l0bHkgY29uZmlndXJlZCwgYW5kIEkgZG9uJiMzOTt0IHRoaW5rIHdlJiMzOTtyZSB1c2luZyB0aG9zZSBzb3J0cyBvZiBtZWNoYW5pc21zIGJ5IGRlZmF1bHQuIFNvIHRoYXQmIzM5O3MgcHJvYmFibHkgYSBuby1nby4KCk5vdywgd2FpdCBhIG1pbnV0ZS4uLiB3aGF0IGFib3V0IGBiY200N3h4X2J1dHRvbnNfYWRkYD8gVGhhdCYjMzk7cyBpbiBgYXJjaC9taXBzL2JjbTQ3eHgvYnV0dG9ucy5jYC4gIFRoYXQmIzM5O3MgZGVmaW5pdGVseSBNSVBTLXNwZWNpZmljLCBzbyBub3QgcmVsZXZhbnQgZm9yIG91ciB4ODYgb3IgQVJNNjQgc3l6a2FsbGVyIGluc3RhbmNlcy4KCk9rYXksIGxldCYjMzk7cyBzdGVwIGJhY2sgYW5kIGNvbnNpZGVyIGBkcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uY2AgaXMgY29tcGlsZWQgZm9yIHg4NiBhbmQgQVJNIGlmIGBDT05GSUdfQkNNQV9EUklWRVJfR1BJT2AgaXMgZW5hYmxlZCwgZXZlbiBpZiB0aGF0IG1lYW5zIHdlIG5lZWQgYENPTkZJR19CQ01BYCB0byBiZSBlbmFibGVkLgoKQnV0IGhlcmUmIzM5O3MgdGhlIGtpY2tlcjogYGJjbWFfZ3Bpb19pbml0YCAqb25seSogcmVnaXN0ZXJzIHRoZSBzb2Z0d2FyZSBub2RlIGlmIGBidXMtJmd0O2hvc3R0eXBlYCBpcyBgQkNNQV9IT1NUVFlQRV9TT0NgLiBBbmQgdGhhdCBgQkNNQV9IT1NUVFlQRV9TT0NgIG9ubHkgZ2V0cyBzZXQgaWYgZWl0aGVyIGBiY21hX2hvc3Rfc29jX3Byb2JlYCBpcyBjYWxsZWQgKHdoaWNoIHdlIGFscmVhZHkga25vdyBkZXBlbmRzIG9uIHRoZSAmIzM0O2JyY20sYnVzLWF4aSYjMzQ7IERUIG5vZGUpIG9yIGBiY21hX2hvc3Rfc29jX3JlZ2lzdGVyYCBnZXRzIGNhbGxlZCBmcm9tIHRoZSBNSVBTIGBiY200N3h4X3JlZ2lzdGVyX2JjbWFgIHJvdXRpbmUuCgpTbywgb24geDg2LCB3ZSYjMzk7ZCBuZWVkIHRoYXQgJiMzNDticmNtLGJ1cy1heGkmIzM0OyBpbiB0aGUgRFQuIEhvd2V2ZXIsIHN5emthbGxlciBvbiB4ODYgZG9lc24mIzM5O3QgdXNlIGEgZGV2aWNlIHRyZWUuCgpUaGVuLCB3aGF0IGFib3V0IEFSTS9BUk02ND8gIFN5emthbGxlciAqb24qIEFSTTY0IG1pZ2h0IHVzZSBhIERULCBidXQgdHlwaWNhbGx5IGEgZml4ZWQgb25lIHByb3ZpZGVkIGJ5IFFFTVUgKGUuZy4sIHRoZSBgdmlydGAgbWFjaGluZSkuIEFuZCAqdGhhdCogRFQgd29uJiMzOTt0IGhhdmUgJiMzNDticmNtLGJ1cy1heGkmIzM0OyBpbiBpdC4KClRoZSBjb25jbHVzaW9uIGlzIHRoYXQgYGJjbWFfZ3Bpb19pbml0YCB3aWxsICpuZXZlciogc2VlIGBCQ01BX0hPU1RUWVBFX1NPQ2AgaW4gb3VyIHN5emthbGxlciBpbnN0YW5jZXMgb24geDg2IG9yIEFSTTY0LgoKT2theSwgd2hhdCBhYm91dCBgc3NiX2dwaW9faW5pdGA/IFRoYXQgZGVwZW5kcyBvbiBgYnVzLSZndDtidXN0eXBlID09IFNTQl9CVVNUWVBFX1NTQmAgd2hpY2ggaXNuJiMzOTt0IHRoZSBjdXJyZW50IHBhdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAyOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1NTQl9CVVNUWVBFX1NTQiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Zpcm13YXJlL2Jyb2FkY29tL2JjbTQ3eHhfc3Byb20uYz01OTU9c3RhdGljIGludCBiY200N3h4X2dldF9zcHJvbV9zc2Ioc3RydWN0IHNzYl9idXMgKmJ1cywgc3RydWN0IHNzYl9zcHJvbSAqb3V0KVxuLS1cbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vYmNtNDd4eF9zcHJvbS5jLTU5OS1cdHN3aXRjaCAoYnVzLVx1MDAzZWJ1c3R5cGUpIHtcbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vYmNtNDd4eF9zcHJvbS5jOjYwMDpcdGNhc2UgU1NCX0JVU1RZUEVfU1NCOlxuZHJpdmVycy9maXJtd2FyZS9icm9hZGNvbS9iY200N3h4X3Nwcm9tLmMtNjAxLVx0XHRiY200N3h4X2ZpbGxfc3Byb20ob3V0LCBOVUxMLCBmYWxzZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM9MTI1Nj1zdGF0aWMgdm9pZCBiNDRfY2hpcF9yZXNldChzdHJ1Y3QgYjQ0ICpicCwgaW50IHJlc2V0X2tpbmQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMTI4OS1cdHN3aXRjaCAoc2Rldi1cdTAwM2VidXMtXHUwMDNlYnVzdHlwZSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM6MTI5MDpcdGNhc2UgU1NCX0JVU1RZUEVfU1NCOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMTI5MS1cdFx0YnczMihicCwgQjQ0X01ESU9fQ1RSTCwgKE1ESU9fQ1RSTF9QUkVBTUJMRSB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM9MTU3OD1zdGF0aWMgdm9pZCBiNDRfc2V0dXBfd29sX3BjaShzdHJ1Y3QgYjQ0ICpicClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYy0xNTgxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM6MTU4MjpcdGlmIChicC1cdTAwM2VzZGV2LVx1MDAzZWJ1cy1cdTAwM2VidXN0eXBlICE9IFNTQl9CVVNUWVBFX1NTQikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMTU4My1cdFx0YnczMihicCwgU1NCX1RNU0xPVywgYnIzMihicCwgU1NCX1RNU0xPVykgfCBTU0JfVE1TTE9XX1BFKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYz0xNzY3PXN0YXRpYyB2b2lkIGI0NF9nZXRfZHJ2aW5mbyAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGV0aHRvb2xfZHJ2aW5mbyAqaW5mbylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYy0xNzc2LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jOjE3Nzc6XHRjYXNlIFNTQl9CVVNUWVBFX1NTQjpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTE3NzgtXHRcdHN0cnNjcHkoaW5mby1cdTAwM2VidXNfaW5mbywgXCYjMzQ7U1NCXCYjMzQ7LCBzaXplb2YoaW5mby1cdTAwM2VidXNfaW5mbykpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jPTIxNDE9c3RhdGljIGludCBiNDRfZ2V0X2ludmFyaWFudHMoc3RydWN0IGI0NCAqYnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjE0OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jOjIxNDk6XHRpZiAoc2Rldi1cdTAwM2VidXMtXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYy0yMTUwLVx0ICAgIGluc3RhbmNlIFx1MDAzZSAxKSB7XG4tLVxuZHJpdmVycy9zc2IvZHJpdmVyX2NoaXBjb21tb24uYz0xMTk9c3RhdGljIGVudW0gc3NiX2Nsa3NyYyBjaGlwY29fcGN0bF9nZXRfc2xvd2Nsa3NyYyhzdHJ1Y3Qgc3NiX2NoaXBjb21tb24gKmNjKVxuLS1cbmRyaXZlcnMvc3NiL2RyaXZlcl9jaGlwY29tbW9uLmMtMTI0LVx0aWYgKGNjLVx1MDAzZWRldi1cdTAwM2VpZC5yZXZpc2lvbiBcdTAwM2MgNikge1xuZHJpdmVycy9zc2IvZHJpdmVyX2NoaXBjb21tb24uYzoxMjU6XHRcdGlmIChidXMtXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IgfHxcbmRyaXZlcnMvc3NiL2RyaXZlcl9jaGlwY29tbW9uLmMtMTI2LVx0XHQgICAgYnVzLVx1MDAzZWJ1c3R5cGUgPT0gU1NCX0JVU1RZUEVfUENNQ0lBKVxuLS1cbmRyaXZlcnMvc3NiL2RyaXZlcl9jaGlwY29tbW9uLmM9MzExPXUzMiBzc2JfY2hpcGNvX3dhdGNoZG9nX3RpbWVyX3NldF93ZHQoc3RydWN0IGJjbTQ3eHhfd2R0ICp3ZHQsIHUzMiB0aWNrcylcbi0tXG5kcml2ZXJzL3NzYi9kcml2ZXJfY2hpcGNvbW1vbi5jLTMxNC1cbmRyaXZlcnMvc3NiL2RyaXZlcl9jaGlwY29tbW9uLmM6MzE1Olx0aWYgKGNjLVx1MDAzZWRldi1cdTAwM2VidXMtXHUwMDNlYnVzdHlwZSAhPSBTU0JfQlVTVFlQRV9TU0IpXG5kcml2ZXJzL3NzYi9kcml2ZXJfY2hpcGNvbW1vbi5jLTMxNi1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9zc2IvZHJpdmVyX2NoaXBjb21tb24uYz0zMjE9dTMyIHNzYl9jaGlwY29fd2F0Y2hkb2dfdGltZXJfc2V0X21zKHN0cnVjdCBiY200N3h4X3dkdCAqd2R0LCB1MzIgbXMpXG4tLVxuZHJpdmVycy9zc2IvZHJpdmVyX2NoaXBjb21tb24uYy0zMjUtXG5kcml2ZXJzL3NzYi9kcml2ZXJfY2hpcGNvbW1vbi5jOjMyNjpcdGlmIChjYy1cdTAwM2VkZXYtXHUwMDNlYnVzLVx1MDAzZWJ1c3R5cGUgIT0gU1NCX0JVU1RZUEVfU1NCKVxuZHJpdmVycy9zc2IvZHJpdmVyX2NoaXBjb21tb24uYy0zMjctXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvc3NiL2RyaXZlcl9jaGlwY29tbW9uLmM9MzQ4PXZvaWQgc3NiX2NoaXBjb21tb25faW5pdChzdHJ1Y3Qgc3NiX2NoaXBjb21tb24gKmNjKVxuLS1cbmRyaXZlcnMvc3NiL2RyaXZlcl9jaGlwY29tbW9uLmMtMzY4LVxuZHJpdmVycy9zc2IvZHJpdmVyX2NoaXBjb21tb24uYzozNjk6XHRpZiAoY2MtXHUwMDNlZGV2LVx1MDAzZWJ1cy1cdTAwM2VidXN0eXBlID09IFNTQl9CVVNUWVBFX1NTQikge1xuZHJpdmVycy9zc2IvZHJpdmVyX2NoaXBjb21tb24uYy0zNzAtXHRcdGNjLVx1MDAzZXRpY2tzX3Blcl9tcyA9IHNzYl9jaGlwY29fd2F0Y2hkb2dfdGlja3NfcGVyX21zKGNjKTtcbi0tXG5kcml2ZXJzL3NzYi9kcml2ZXJfY2hpcGNvbW1vbl9wbXUuYz0zMTc9c3RhdGljIHZvaWQgc3NiX3BtdV9wbGxfaW5pdChzdHJ1Y3Qgc3NiX2NoaXBjb21tb24gKmNjKVxuLS1cbmRyaXZlcnMvc3NiL2RyaXZlcl9jaGlwY29tbW9uX3BtdS5jLTMyMS1cbmRyaXZlcnMvc3NiL2RyaXZlcl9jaGlwY29tbW9uX3BtdS5jOjMyMjpcdGlmIChidXMtXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpIHtcbmRyaXZlcnMvc3NiL2RyaXZlcl9jaGlwY29tbW9uX3BtdS5jLTMyMy0jaWZkZWYgQ09ORklHX0JDTTQ3WFhcbi0tXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jPTMyPXN0YXRpYyBpbnQgc3NiX2dwaW9fdG9faXJxKHN0cnVjdCBncGlvX2NoaXAgKmNoaXAsIHVuc2lnbmVkIGludCBncGlvKVxuLS1cbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmMtMzUtXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jOjM2Olx0aWYgKGJ1cy1cdTAwM2VidXN0eXBlID09IFNTQl9CVVNUWVBFX1NTQilcbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmMtMzctXHRcdHJldHVybiBpcnFfZmluZF9tYXBwaW5nKGJ1cy1cdTAwM2VpcnFfZG9tYWluLCBncGlvKTtcbi0tXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jPTE1MD1zdGF0aWMgaW50IHNzYl9ncGlvX2lycV9jaGlwY29fZG9tYWluX2luaXQoc3RydWN0IHNzYl9idXMgKmJ1cylcbi0tXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jLTE1NS1cbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmM6MTU2Olx0aWYgKGJ1cy1cdTAwM2VidXN0eXBlICE9IFNTQl9CVVNUWVBFX1NTQilcbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmMtMTU3LVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jPTE5NT1zdGF0aWMgdm9pZCBzc2JfZ3Bpb19pcnFfY2hpcGNvX2RvbWFpbl9leGl0KHN0cnVjdCBzc2JfYnVzICpidXMpXG4tLVxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYy0yMDAtXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jOjIwMTpcdGlmIChidXMtXHUwMDNlYnVzdHlwZSAhPSBTU0JfQlVTVFlQRV9TU0IpXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jLTIwMi1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmM9MjI0PXN0YXRpYyBpbnQgc3NiX2dwaW9fY2hpcGNvX2luaXQoc3RydWN0IHNzYl9idXMgKmJ1cylcbi0tXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jLTI0MC1cdGNoaXAtXHUwMDNlbmdwaW9cdFx0PSAxNjtcbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmM6MjQxOlx0aWYgKGJ1cy1cdTAwM2VidXN0eXBlID09IFNTQl9CVVNUWVBFX1NTQilcbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmMtMjQyLVx0XHRjaGlwLVx1MDAzZWZ3bm9kZVx0PSBzb2Z0d2FyZV9ub2RlX2Z3bm9kZShcdTAwMjZzc2JfZ3Bpb19zd25vZGUpO1xuLS1cbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmMtMjQ2LVx0ICovXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jOjI0NzpcdGlmIChidXMtXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jLTI0OC1cdFx0Y2hpcC1cdTAwM2ViYXNlXHRcdD0gMDtcbi0tXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jPTM1Mz1zdGF0aWMgaW50IHNzYl9ncGlvX2lycV9leHRpZl9kb21haW5faW5pdChzdHJ1Y3Qgc3NiX2J1cyAqYnVzKVxuLS1cbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmMtMzU4LVxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYzozNTk6XHRpZiAoYnVzLVx1MDAzZWJ1c3R5cGUgIT0gU1NCX0JVU1RZUEVfU1NCKVxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYy0zNjAtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmM9Mzk3PXN0YXRpYyB2b2lkIHNzYl9ncGlvX2lycV9leHRpZl9kb21haW5fZXhpdChzdHJ1Y3Qgc3NiX2J1cyAqYnVzKVxuLS1cbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmMtNDAyLVxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYzo0MDM6XHRpZiAoYnVzLVx1MDAzZWJ1c3R5cGUgIT0gU1NCX0JVU1RZUEVfU1NCKVxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYy00MDQtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jPTQyNT1zdGF0aWMgaW50IHNzYl9ncGlvX2V4dGlmX2luaXQoc3RydWN0IHNzYl9idXMgKmJ1cylcbi0tXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jLTQ0My1cdCAqL1xuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYzo0NDQ6XHRpZiAoYnVzLVx1MDAzZWJ1c3R5cGUgPT0gU1NCX0JVU1RZUEVfU1NCKSB7XG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jLTQ0NS1cdFx0Y2hpcC1cdTAwM2ViYXNlXHQ9IDA7XG4tLVxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYz00NzU9aW50IHNzYl9ncGlvX2luaXQoc3RydWN0IHNzYl9idXMgKmJ1cylcbi0tXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jLTQ4My1cdCAqL1xuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYzo0ODQ6XHRpZiAoYnVzLVx1MDAzZWJ1c3R5cGUgPT0gU1NCX0JVU1RZUEVfU1NCKSB7XG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jLTQ4NS1cdFx0ZXJyID0gc29mdHdhcmVfbm9kZV9yZWdpc3RlcihcdTAwMjZzc2JfZ3Bpb19zd25vZGUpO1xuLS1cbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmMtNDk3LVx0aWYgKGVycikge1xuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYzo0OTg6XHRcdGlmIChidXMtXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jLTQ5OS1cdFx0XHRzb2Z0d2FyZV9ub2RlX3VucmVnaXN0ZXIoXHUwMDI2c3NiX2dwaW9fc3dub2RlKTtcbi0tXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jPTUwNj1pbnQgc3NiX2dwaW9fdW5yZWdpc3RlcihzdHJ1Y3Qgc3NiX2J1cyAqYnVzKVxuLS1cbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmMtNTEwLVx0XHRncGlvY2hpcF9yZW1vdmUoXHUwMDI2YnVzLVx1MDAzZWdwaW8pO1xuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYzo1MTE6XHRcdGlmIChidXMtXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jLTUxMi1cdFx0XHRzb2Z0d2FyZV9ub2RlX3VucmVnaXN0ZXIoXHUwMDI2c3NiX2dwaW9fc3dub2RlKTtcbi0tXG5kcml2ZXJzL3NzYi9tYWluLmM9NDE1PXN0YXRpYyB2b2lkIHNzYl9kZXZpY2VzX3VucmVnaXN0ZXIoc3RydWN0IHNzYl9idXMgKmJ1cylcbi0tXG5kcml2ZXJzL3NzYi9tYWluLmMtNDI2LSNpZmRlZiBDT05GSUdfU1NCX0VNQkVEREVEXG5kcml2ZXJzL3NzYi9tYWluLmM6NDI3Olx0aWYgKGJ1cy1cdTAwM2VidXN0eXBlID09IFNTQl9CVVNUWVBFX1NTQilcbmRyaXZlcnMvc3NiL21haW4uYy00MjgtXHRcdHBsYXRmb3JtX2RldmljZV91bnJlZ2lzdGVyKGJ1cy1cdTAwM2V3YXRjaGRvZyk7XG4tLVxuZHJpdmVycy9zc2IvbWFpbi5jPTQ1OT1zdGF0aWMgaW50IHNzYl9kZXZpY2VzX3JlZ2lzdGVyKHN0cnVjdCBzc2JfYnVzICpidXMpXG4tLVxuZHJpdmVycy9zc2IvbWFpbi5jLTUxNC1cdFx0XHRicmVhaztcbmRyaXZlcnMvc3NiL21haW4uYzo1MTU6XHRcdGNhc2UgU1NCX0JVU1RZUEVfU1NCOlxuZHJpdmVycy9zc2IvbWFpbi5jLTUxNi1cdFx0XHRkZXYtXHUwMDNlZG1hX21hc2sgPSBcdTAwMjZkZXYtXHUwMDNlY29oZXJlbnRfZG1hX21hc2s7XG4tLVxuZHJpdmVycy9zc2IvbWFpbi5jPTU1OT1zdGF0aWMgaW50IHNzYl9hdHRhY2hfcXVldWVkX2J1c2VzKHZvaWQpXG4tLVxuZHJpdmVycy9zc2IvbWFpbi5jLTU3Ny1cdFx0c3NiX3BjaWNvcmVfaW5pdChcdTAwMjZidXMtXHUwMDNlcGNpY29yZSk7XG5kcml2ZXJzL3NzYi9tYWluLmM6NTc4Olx0XHRpZiAoYnVzLVx1MDAzZWJ1c3R5cGUgPT0gU1NCX0JVU1RZUEVfU1NCKVxuZHJpdmVycy9zc2IvbWFpbi5jLTU3OS1cdFx0XHRzc2Jfd2F0Y2hkb2dfcmVnaXN0ZXIoYnVzKTtcbi0tXG5kcml2ZXJzL3NzYi9tYWluLmM9Nzc0PWludCBzc2JfYnVzX2hvc3Rfc29jX3JlZ2lzdGVyKHN0cnVjdCBzc2JfYnVzICpidXMsIHVuc2lnbmVkIGxvbmcgYmFzZWFkZHIpXG4tLVxuZHJpdmVycy9zc2IvbWFpbi5jLTc3Ny1cbmRyaXZlcnMvc3NiL21haW4uYzo3Nzg6XHRidXMtXHUwMDNlYnVzdHlwZSA9IFNTQl9CVVNUWVBFX1NTQjtcbmRyaXZlcnMvc3NiL21haW4uYy03NzktXHRidXMtXHUwMDNlb3BzID0gXHUwMDI2c3NiX2hvc3Rfc29jX29wcztcbi0tXG5kcml2ZXJzL3NzYi9tYWluLmM9MTEzMz11MzIgc3NiX2RtYV90cmFuc2xhdGlvbihzdHJ1Y3Qgc3NiX2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvc3NiL21haW4uYy0xMTM1LVx0c3dpdGNoIChkZXYtXHUwMDNlYnVzLVx1MDAzZWJ1c3R5cGUpIHtcbmRyaXZlcnMvc3NiL21haW4uYzoxMTM2Olx0Y2FzZSBTU0JfQlVTVFlQRV9TU0I6XG5kcml2ZXJzL3NzYi9tYWluLmMtMTEzNy1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9zc2IvbWFpbi5jPTExNTU9aW50IHNzYl9idXNfbWF5X3Bvd2VyZG93bihzdHJ1Y3Qgc3NiX2J1cyAqYnVzKVxuLS1cbmRyaXZlcnMvc3NiL21haW4uYy0xMTYzLVx0ICovXG5kcml2ZXJzL3NzYi9tYWluLmM6MTE2NDpcdGlmIChidXMtXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpXG5kcml2ZXJzL3NzYi9tYWluLmMtMTE2NS1cdFx0Z290byBvdXQ7XG4tLVxuZHJpdmVycy9zc2Ivc2Nhbi5jPTE2MD1zdGF0aWMgdTMyIHNjYW5fcmVhZDMyKHN0cnVjdCBzc2JfYnVzICpidXMsIHU4IGN1cnJlbnRfY29yZWlkeCxcbi0tXG5kcml2ZXJzL3NzYi9zY2FuLmMtMTY1LVx0c3dpdGNoIChidXMtXHUwMDNlYnVzdHlwZSkge1xuZHJpdmVycy9zc2Ivc2Nhbi5jOjE2NjpcdGNhc2UgU1NCX0JVU1RZUEVfU1NCOlxuZHJpdmVycy9zc2Ivc2Nhbi5jLTE2Ny1cdFx0b2Zmc2V0ICYjNDM7PSBjdXJyZW50X2NvcmVpZHggKiBTU0JfQ09SRV9TSVpFO1xuLS1cbmRyaXZlcnMvc3NiL3NjYW4uYz0xODc9c3RhdGljIGludCBzY2FuX3N3aXRjaGNvcmUoc3RydWN0IHNzYl9idXMgKmJ1cywgdTggY29yZWlkeClcbi0tXG5kcml2ZXJzL3NzYi9zY2FuLmMtMTg5LVx0c3dpdGNoIChidXMtXHUwMDNlYnVzdHlwZSkge1xuZHJpdmVycy9zc2Ivc2Nhbi5jOjE5MDpcdGNhc2UgU1NCX0JVU1RZUEVfU1NCOlxuZHJpdmVycy9zc2Ivc2Nhbi5jLTE5MS1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9zc2Ivc2Nhbi5jPTIwMj12b2lkIHNzYl9pb3VubWFwKHN0cnVjdCBzc2JfYnVzICpidXMpXG4tLVxuZHJpdmVycy9zc2Ivc2Nhbi5jLTIwNC1cdHN3aXRjaCAoYnVzLVx1MDAzZWJ1c3R5cGUpIHtcbmRyaXZlcnMvc3NiL3NjYW4uYzoyMDU6XHRjYXNlIFNTQl9CVVNUWVBFX1NTQjpcbmRyaXZlcnMvc3NiL3NjYW4uYy0yMDYtXHRjYXNlIFNTQl9CVVNUWVBFX1BDTUNJQTpcbi0tXG5kcml2ZXJzL3NzYi9zY2FuLmM9MjIzPXN0YXRpYyB2b2lkIF9faW9tZW0gKnNzYl9pb3JlbWFwKHN0cnVjdCBzc2JfYnVzICpidXMsXG4tLVxuZHJpdmVycy9zc2Ivc2Nhbi5jLTIyOC1cdHN3aXRjaCAoYnVzLVx1MDAzZWJ1c3R5cGUpIHtcbmRyaXZlcnMvc3NiL3NjYW4uYzoyMjk6XHRjYXNlIFNTQl9CVVNUWVBFX1NTQjpcbmRyaXZlcnMvc3NiL3NjYW4uYy0yMzAtXHRcdC8qIE9ubHkgbWFwIHRoZSBmaXJzdCBjb3JlIGZvciBub3cuICovXG4tLVxuZHJpdmVycy9zc2Ivc2Nhbi5jPTI3MT1pbnQgc3NiX2J1c19zY2FuKHN0cnVjdCBzc2JfYnVzICpidXMsXG4tLVxuZHJpdmVycy9zc2Ivc2Nhbi5jLTMzMC1cdH1cbmRyaXZlcnMvc3NiL3NjYW4uYzozMzE6XHRpZiAoYnVzLVx1MDAzZWJ1c3R5cGUgPT0gU1NCX0JVU1RZUEVfU1NCKSB7XG5kcml2ZXJzL3NzYi9zY2FuLmMtMzMyLVx0XHQvKiBOb3cgdGhhdCB3ZSBrbm93IHRoZSBudW1iZXIgb2YgY29yZXMsXG4tLVxuaW5jbHVkZS9saW51eC9zc2Ivc3NiLmg9MzM5PWVudW0gc3NiX2J1c3R5cGUge1xuaW5jbHVkZS9saW51eC9zc2Ivc3NiLmg6MzQwOlx0U1NCX0JVU1RZUEVfU1NCLFx0LyogVGhpcyBTU0IgYnVzIGlzIHRoZSBzeXN0ZW0gYnVzICovXG5pbmNsdWRlL2xpbnV4L3NzYi9zc2IuaC0zNDEtXHRTU0JfQlVTVFlQRV9QQ0ksXHQvKiBTU0IgaXMgY29ubmVjdGVkIHRvIFBDSSBidXMgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDI6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMzOTYKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBTU0JfQlVTVFlQRV9TU0IgUmVnaXN0cmF0aW9uKioKCkFscmlnaHQsIHNvIGBTU0JfQlVTVFlQRV9TU0JgIGlzIGJlaW5nIGluaXRpYWxpemVkIHdpdGhpbiBgc3NiX2J1c19ob3N0X3NvY19yZWdpc3RlcmAuIFRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6ICp3aGVyZSogYW5kICp3aHkqIGlzIGBzc2JfYnVzX2hvc3Rfc29jX3JlZ2lzdGVyYCBiZWluZyBjYWxsZWQ/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc2l0ZXMgaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgb2YgdGhpcyBidXMgdHlwZSByZWdpc3RyYXRpb24uIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhhdCBmdW5jdGlvbiBhbmQgc2VlIHdoYXQmIzM5O3Mgc2V0dGluZyBpdCB1cC4gS25vd2luZyB0aGUgYnJvYWRlciBjYWxsIHN0YWNrIGFyb3VuZCBgc3NiX2J1c19ob3N0X3NvY19yZWdpc3RlcmAgd2lsbCBpbGx1bWluYXRlIGl0cyBwdXJwb3NlIHdpdGhpbiB0aGUgc3lzdGVtLCByZXZlYWxpbmcgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGFuZCBkZXBlbmRlbmNpZXMuIExldCYjMzk7cyBkaWcgaW4gYW5kIGZpZ3VyZSBvdXQgdGhlIHVwc3RyZWFtIGxvZ2ljLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMjo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzc2JfYnVzX2hvc3Rfc29jX3JlZ2lzdGVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvbWlwcy9iY200N3h4L3NldHVwLmM9MTEzPXN0YXRpYyB2b2lkIF9faW5pdCBiY200N3h4X3JlZ2lzdGVyX3NzYih2b2lkKVxuLS1cbmFyY2gvbWlwcy9iY200N3h4L3NldHVwLmMtMTE4LVxuYXJjaC9taXBzL2JjbTQ3eHgvc2V0dXAuYzoxMTk6XHRlcnIgPSBzc2JfYnVzX2hvc3Rfc29jX3JlZ2lzdGVyKFx1MDAyNmJjbTQ3eHhfYnVzLnNzYiwgU1NCX0VOVU1fQkFTRSk7XG5hcmNoL21pcHMvYmNtNDd4eC9zZXR1cC5jLTEyMC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9zc2IvbWFpbi5jPTc3MD1FWFBPUlRfU1lNQk9MKHNzYl9idXNfc2Rpb2J1c19yZWdpc3Rlcik7XG4tLVxuZHJpdmVycy9zc2IvbWFpbi5jLTc3My0jaWZkZWYgQ09ORklHX1NTQl9IT1NUX1NPQ1xuZHJpdmVycy9zc2IvbWFpbi5jOjc3NDppbnQgc3NiX2J1c19ob3N0X3NvY19yZWdpc3RlcihzdHJ1Y3Qgc3NiX2J1cyAqYnVzLCB1bnNpZ25lZCBsb25nIGJhc2VhZGRyKVxuZHJpdmVycy9zc2IvbWFpbi5jLTc3NS17XG4tLVxuaW5jbHVkZS9saW51eC9zc2Ivc3NiLmg9NTIzPXR5cGVkZWYgaW50ICgqc3NiX2ludmFyaWFudHNfZnVuY190KShzdHJ1Y3Qgc3NiX2J1cyAqYnVzLFxuLS1cbmluY2x1ZGUvbGludXgvc3NiL3NzYi5oLTUyNi0vKiBSZWdpc3RlciBTb0MgYnVzLiAqL1xuaW5jbHVkZS9saW51eC9zc2Ivc3NiLmg6NTI3OmV4dGVybiBpbnQgc3NiX2J1c19ob3N0X3NvY19yZWdpc3RlcihzdHJ1Y3Qgc3NiX2J1cyAqYnVzLFxuaW5jbHVkZS9saW51eC9zc2Ivc3NiLmgtNTI4LVx0XHRcdFx0ICAgICB1bnNpZ25lZCBsb25nIGJhc2VhZGRyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDI6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQwMjYKCQkJCQkJCW91dHB1dDogMTIwCgkJCQkJCQl0aG91Z2h0czogMjc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZz1GYWxzZTogQSBNSVBTLVNwZWNpZmljIERlYWQgRW5kKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoaXMgY29kZSBwYXRoLCB0aGUgb25lIHRoZSBwYXRjaCB0b3VjaGVzLCBpcyBleGNsdXNpdmVseSBjYWxsZWQgZnJvbSBgYXJjaC9taXBzL2JjbTQ3eHgvc2V0dXAuY2AuIFRoYXQgbWVhbnMgdGhlIGBTU0JfQlVTVFlQRV9TU0JgIGRlc2lnbmF0aW9uLCB3aGljaCBpcyBrZXkgaGVyZSwgaXMgKm9ubHkqIHNldCBvbiBNSVBTIEJDTTQ3eHggc3lzdGVtcy4gTm93LCB0aGUga2lja2VyIGlzIHRoYXQgc3l6a2FsbGVyLCBvdXIgcHJpbWFyeSBmdXp6aW5nIHRvb2wsIGRvZXNuJiMzOTt0IGV2ZW4gdG91Y2ggTUlQUyBCQ000N3h4IGFyY2hpdGVjdHVyZXMuIFNvLCBpbmhlcmVudGx5LCB0aGlzIHNwZWNpZmljIGNvZGUgaXMgY29tcGxldGVseSB1bnJlYWNoYWJsZSB3aXRoaW4gb3VyIHZpcnR1YWxpemVkIHRlc3RpbmcgZW52aXJvbm1lbnRzLgoKVGhlIHBhdGNoIGl0c2VsZiBpcyBhYm91dCByZWZhY3RvcmluZyB0aGUgQkNNNDd4eCBidXR0b25zIGRyaXZlciB0byB1dGlsaXplIHNvZnR3YXJlIG5vZGVzIGluc3RlYWQgb2YgYGdwaW9fa2V5c19wbGF0Zm9ybV9kYXRhYC4gSG93ZXZlciwgdGhlIHNjb3BlIG9mIHRoZXNlIGNoYW5nZXMgaXMgc3RyaWN0bHkgbGltaXRlZC4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgbW9kaWZpY2F0aW9ucyB3aXRoaW46CgoqICAgYGFyY2gvbWlwcy9iY200N3h4L2J1dHRvbnMuY2AKKiAgIGBkcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uY2AgKGJ1dCBvbmx5IHdoZW4gYGJ1cy0mZ3Q7aG9zdHR5cGUgPT0gQkNNQV9IT1NUVFlQRV9TT0NgKQoqICAgYGRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmNgIChleGNsdXNpdmVseSB3aGVuIGBidXMtJmd0O2J1c3R5cGUgPT0gU1NCX0JVU1RZUEVfU1NCYCkKKiAgIGBpbmNsdWRlL2xpbnV4L2JjbWEvYmNtYS5oYAoqICAgYGluY2x1ZGUvbGludXgvc3NiL3NzYi5oYAoKQWxsIG9mIHRoZXNlIGFyZWFzIGFyZSBlaXRoZXIgaW5oZXJlbnRseSBNSVBTLXNwZWNpZmljIG9yIGFyZSBjb250aW5nZW50IG9uIHRoYXQgdmVyeSBzcGVjaWZpYyBCQ000N3h4IFNvQy4gQ29uc2lkZXJpbmcgb3VyIHRlc3RpbmcgaW5mcmFzdHJ1Y3R1cmUgcmV2b2x2ZXMgYXJvdW5kIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCB0aGUgY29kZSBwYXRocyB0b3VjaGVkIGJ5IHRoaXMgcGF0Y2ggYXJlIGZ1bmRhbWVudGFsbHkgdW5yZWFjaGFibGUuIFRoZXJlZm9yZSwgYmFzZWQgb24gdGhpcyBhbmFseXNpcywgSSYjMzk7bSBjb21mb3J0YWJsZSByZXR1cm5pbmcgV29ydGhGdXp6aW5nPWZhbHNlLiBUaGVyZSYjMzk7cyBubyB2YWx1ZSBpbiBleHBlbmRpbmcgcmVzb3VyY2VzIHRvIGFuYWx5emUgdGhpczsgaXQmIzM5O3MgYSBkZWFkIGVuZCBhcyBmYXIgYXMgb3VyIGN1cnJlbnQgdGVzdGluZyBjYXBhYmlsaXRpZXMgZ28uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAyOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJDTTQ3eHggYnV0dG9ucyBkcml2ZXIgYW5kIGFzc29jaWF0ZWQgQkNNQS9TU0IgR1BJTyBkcml2ZXJzIHRvIHVzZSBzb2Z0d2FyZSBub2RlcyBpbnN0ZWFkIG9mIHBsYXRmb3JtIGRhdGEuIFRoZXNlIGNoYW5nZXMgYXJlIHNwZWNpZmljIHRvIHRoZSBNSVBTIEJDTTQ3eHggYXJjaGl0ZWN0dXJlIGFuZCBpdHMgU29DIGJ1c2VzIChCQ01BX0hPU1RUWVBFX1NPQyBhbmQgU1NCX0JVU1RZUEVfU1NCKS4gU2luY2Ugc3l6a2FsbGVyIGRvZXMgbm90IGZ1enogTUlQUyBCQ000N3h4IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgdGhlc2UgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQkNNNDd4eCBidXR0b25zIGRyaXZlciBhbmQgYXNzb2NpYXRlZCBCQ01BL1NTQiBHUElPIGRyaXZlcnMgdG8gdXNlIHNvZnR3YXJlIG5vZGVzIGluc3RlYWQgb2YgcGxhdGZvcm0gZGF0YS4gVGhlc2UgY2hhbmdlcyBhcmUgc3BlY2lmaWMgdG8gdGhlIE1JUFMgQkNNNDd4eCBhcmNoaXRlY3R1cmUgYW5kIGl0cyBTb0MgYnVzZXMgKEJDTUFfSE9TVFRZUEVfU09DIGFuZCBTU0JfQlVTVFlQRV9TU0IpLiBTaW5jZSBzeXprYWxsZXIgZG9lcyBub3QgZnV6eiBNSVBTIEJDTTQ3eHggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMjo1NToxMC43NzE5MTQ2MTJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjM5NzY1NjM2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJDTTQ3eHggYnV0dG9ucyBkcml2ZXIgYW5kIGFzc29jaWF0ZWQgQkNNQS9TU0IgR1BJTyBkcml2ZXJzIHRvIHVzZSBzb2Z0d2FyZSBub2RlcyBpbnN0ZWFkIG9mIHBsYXRmb3JtIGRhdGEuIFRoZXNlIGNoYW5nZXMgYXJlIHNwZWNpZmljIHRvIHRoZSBNSVBTIEJDTTQ3eHggYXJjaGl0ZWN0dXJlIGFuZCBpdHMgU29DIGJ1c2VzIChCQ01BX0hPU1RUWVBFX1NPQyBhbmQgU1NCX0JVU1RZUEVfU1NCKS4gU2luY2Ugc3l6a2FsbGVyIGRvZXMgbm90IGZ1enogTUlQUyBCQ000N3h4IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgdGhlc2UgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMjo1NToxMC43NzE5MTkxMDJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MTA0OTkzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGY4Yzc5NTAyNTQzZWUyMTA0ZWE0MjA1MzcxOTVjODZmN2MzMDQyOTlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMDI6NTU6MDkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2JjbTQ3eHgvYnV0dG9ucy5jIGIvYXJjaC9taXBzL2JjbTQ3eHgvYnV0dG9ucy5jXFxuaW5kZXggNDY5OTRmOWJiODIxOWMuLjE1MWE0ZWUyODAzZjAyIDEwMDY0NFxcbi0tLSBhL2FyY2gvbWlwcy9iY200N3h4L2J1dHRvbnMuY1xcbisrKyBiL2FyY2gvbWlwcy9iY200N3h4L2J1dHRvbnMuY1xcbkBAIC0xLDkgKzEsMTQgQEBcXG4gLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gI2luY2x1ZGUgXFxcImJjbTQ3eHhfcHJpdmF0ZS5oXFxcIlxcbiBcXG4tI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lucHV0LmhcXHUwMDNlXFxuLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9ncGlvX2tleXMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFxcImxpbnV4L2Vyci5oXFxcIlxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvZ3Bpby9tYWNoaW5lLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9ncGlvL3Byb3BlcnR5LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9pbnB1dC1ldmVudC1jb2Rlcy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvaW50ZXJydXB0LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcXHUwMDNlXFxuK1xcbiAjaW5jbHVkZSBcXHUwMDNjYmNtNDd4eF9ib2FyZC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjYmNtNDd4eC5oXFx1MDAzZVxcbiBcXG5AQCAtMTEsMjkgKzE2LDM0IEBAXFxuICAqIERhdGFiYXNlXFxuICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4gXFxuLSNkZWZpbmUgQkNNNDdYWF9HUElPX0tFWShfZ3BpbywgX2NvZGUpXFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHR7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQuY29kZVxcdFxcdD0gX2NvZGUsXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQuZ3Bpb1xcdFxcdD0gX2dwaW8sXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQuYWN0aXZlX2xvd1xcdD0gMSxcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK3N0cnVjdCBiY200N3h4X2dwaW9fa2V5IHtcXG4rXFx0dTE2IGNvZGU7XFxuK1xcdHU4IHBpbjtcXG4rXFx0dTggZmxhZ3M7XFxuK307XFxuK1xcbisjZGVmaW5lIEJDTTQ3WFhfR1BJT19LRVkoX2dwaW8sIF9jb2RlKVxcdFxcdFxcdFxcXFxcXG4rXFx0e1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0LmNvZGVcXHQ9IF9jb2RlLFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0LnBpblxcdD0gX2dwaW8sXFx0XFx0XFx0XFxcXFxcbitcXHRcXHQuZmxhZ3NcXHQ9IEdQSU9fQUNUSVZFX0xPVyxcXHRcXHRcXFxcXFxuIFxcdH1cXG4gXFxuLSNkZWZpbmUgQkNNNDdYWF9HUElPX0tFWV9IKF9ncGlvLCBfY29kZSlcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdC5jb2RlXFx0XFx0PSBfY29kZSxcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdC5ncGlvXFx0XFx0PSBfZ3BpbyxcXHRcXHRcXHRcXHRcXFxcXFxuKyNkZWZpbmUgQkNNNDdYWF9HUElPX0tFWV9IKF9ncGlvLCBfY29kZSlcXHRcXHRcXFxcXFxuK1xcdHtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdC5jb2RlXFx0PSBfY29kZSxcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdC5waW5cXHQ9IF9ncGlvLFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0LmZsYWdzXFx0PSBHUElPX0FDVElWRV9ISUdILFxcdFxcdFxcXFxcXG4gXFx0fVxcbiBcXG4gLyogQXN1cyAqL1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuLWJjbTQ3eHhfYnV0dG9uc19hc3VzX3J0bjEwdVtdIF9faW5pdGNvbnN0ID0ge1xcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkgYmNtNDd4eF9idXR0b25zX2FzdXNfcnRuMTB1W10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoMjAsIEtFWV9XUFNfQlVUVE9OKSxcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSgyMSwgS0VZX1JFU1RBUlQpLFxcbiB9O1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuLWJjbTQ3eHhfYnV0dG9uc19hc3VzX3J0bjEyW10gX19pbml0Y29uc3QgPSB7XFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleSBiY200N3h4X2J1dHRvbnNfYXN1c19ydG4xMltdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDAsIEtFWV9XUFNfQlVUVE9OKSxcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSgxLCBLRVlfUkVTVEFSVCksXFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNCwgQlROXzApLCAvKiBSb3V0ZXIgbW9kZSAqL1xcbkBAIC00MSw3NCArNTEsNzMgQEAgYmNtNDd4eF9idXR0b25zX2FzdXNfcnRuMTJbXSBfX2luaXRjb25zdCA9IHtcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg2LCBCVE5fMiksIC8qIEFQIG1vZGUgKi9cXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbi1iY200N3h4X2J1dHRvbnNfYXN1c19ydG4xNltdIF9faW5pdGNvbnN0ID0ge1xcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkgYmNtNDd4eF9idXR0b25zX2FzdXNfcnRuMTZbXSBfX2luaXRjb25zdCA9IHtcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfV1BTX0JVVFRPTiksXFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoOCwgS0VZX1JFU1RBUlQpLFxcbiB9O1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfYXN1c19ydG42NnVbXSBfX2luaXRjb25zdCA9IHtcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksXFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoOSwgS0VZX1JFU1RBUlQpLFxcbiB9O1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfYXN1c193bDMwMGdbXSBfX2luaXRjb25zdCA9IHtcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsMzIwZ2VbXSBfX2luaXRjb25zdCA9IHtcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsMzMwZ2VbXSBfX2luaXRjb25zdCA9IHtcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSgyLCBLRVlfUkVTVEFSVCksXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwZ1tdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBnZFtdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBncHYxW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoMCwgS0VZX1JFU1RBUlQpLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9XUFNfQlVUVE9OKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBncHYyW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoMiwgS0VZX1JFU1RBUlQpLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDMsIEtFWV9XUFNfQlVUVE9OKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDB3W10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVlfSCg2LCBLRVlfUkVTVEFSVCksXFxuIFxcdEJDTTQ3WFhfR1BJT19LRVlfSCg3LCBLRVlfV1BTX0JVVFRPTiksXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTIwZ2NbXSBfX2luaXRjb25zdCA9IHtcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSgyLCBLRVlfUkVTVEFSVCksXFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoMywgS0VZX1dQU19CVVRUT04pLFxcbiB9O1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfYXN1c193bDUyMGd1W10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoMiwgS0VZX1JFU1RBUlQpLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDMsIEtFWV9XUFNfQlVUVE9OKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2FzdXNfd2w3MDBnZVtdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDAsIEtFWV9QT1dFUiksIC8qIEhhcmQgZGlzayBwb3dlciBzd2l0Y2ggKi9cXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksIC8qIEVaU2V0dXAgKi9cXG5AQCAtMTE2LDIxICsxMjUsMjEgQEAgYmNtNDd4eF9idXR0b25zX2FzdXNfd2w3MDBnZVtdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDcsIEtFWV9SRVNUQVJUKSwgLyogSGFyZCByZXNldCAqL1xcbiB9O1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfYXN1c193bGhkZFtdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuIC8qIEh1YXdlaSAqL1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfaHVhd2VpX2U5NzBbXSBfX2luaXRjb25zdCA9IHtcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXFxuIH07XFxuIFxcbiAvKiBCZWxraW4gKi9cXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2JlbGtpbl9mN2Q0MzAxW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDgsIEtFWV9XUFNfQlVUVE9OKSxcXG5AQCAtMTM4LDQ0ICsxNDcsNDQgQEAgYmNtNDd4eF9idXR0b25zX2JlbGtpbl9mN2Q0MzAxW10gX19pbml0Y29uc3QgPSB7XFxuIFxcbiAvKiBCdWZmYWxvICovXFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docjJfYTU0ZzU0W10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1JFU1RBUlQpLFxcbiB9O1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfYnVmZmFsb193aHJfZzEyNVtdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDAsIEtFWV9XUFNfQlVUVE9OKSxcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfUkVTVEFSVCksXFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNSwgQlROXzApLCAvKiBSb3V0ZXIgLyBBUCBtb2RlIHN3aXRjaCAqL1xcbiB9O1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfYnVmZmFsb193aHJfZzU0c1tdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDAsIEtFWV9XUFNfQlVUVE9OKSxcXG4gXFx0QkNNNDdYWF9HUElPX0tFWV9IKDQsIEtFWV9SRVNUQVJUKSxcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg1LCBCVE5fMCksIC8qIFJvdXRlciAvIEFQIG1vZGUgc3dpdGNoICovXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docl9ocF9nNTRbXSBfX2luaXRjb25zdCA9IHtcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSgwLCBLRVlfV1BTX0JVVFRPTiksXFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1JFU1RBUlQpLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDUsIEJUTl8wKSwgLyogUm91dGVyIC8gQVAgbW9kZSBzd2l0Y2ggKi9cXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd3pyX2czMDBuW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1JFU1RBUlQpLFxcbiB9O1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfYnVmZmFsb193enJfcnNfZzU0W10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoMCwgS0VZX1dQU19CVVRUT04pLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd3pyX3JzX2c1NGhwW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoMCwgS0VZX1dQU19CVVRUT04pLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9SRVNUQVJUKSxcXG5AQCAtMTgzLDIwICsxOTIsMjAgQEAgYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd3pyX3JzX2c1NGhwW10gX19pbml0Y29uc3QgPSB7XFxuIFxcbiAvKiBEZWxsICovXFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19kZWxsX3RtMjMwMFtdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDAsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuIC8qIEQtTGluayAqL1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfZGxpbmtfZGlyMTMwW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoMywgS0VZX1JFU1RBUlQpLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDcsIEtFWV9VTktOT1dOKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2RsaW5rX2RpcjMzMFtdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDMsIEtFWV9SRVNUQVJUKSxcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg3LCBLRVlfVU5LTk9XTiksXFxuQEAgLTIwNCwxMjcgKzIxMywxMjcgQEAgYmNtNDd4eF9idXR0b25zX2RsaW5rX2RpcjMzMFtdIF9faW5pdGNvbnN0ID0ge1xcbiBcXG4gLyogTGlua3N5cyAqL1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMTAwMHYxW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNSwgS0VZX1dQU19CVVRUT04pLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTEwMDB2MjFbXSBfX2luaXRjb25zdCA9IHtcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg5LCBLRVlfV1BTX0JVVFRPTiksXFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoMTAsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTIwMDB2MVtdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDUsIEtFWV9XUFNfQlVUVE9OKSxcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg4LCBLRVlfUkVTVEFSVCksXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UyNTAwdjNbXSBfX2luaXRjb25zdCA9IHtcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg5LCBLRVlfV1BTX0JVVFRPTiksXFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoMTAsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTMwMDB2MVtdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9XUFNfQlVUVE9OKSxcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UzMjAwdjFbXSBfX2luaXRjb25zdCA9IHtcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg1LCBLRVlfUkVTVEFSVCksXFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoOCwgS0VZX1dQU19CVVRUT04pLFxcbiB9O1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfbGlua3N5c19lNDIwMHYxW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTUwbnYxW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTUwbnYxMVtdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9XUFNfQlVUVE9OKSxcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDE2MG52MVtdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9XUFNfQlVUVE9OKSxcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDE2MG52M1tdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDUsIEtFWV9XUFNfQlVUVE9OKSxcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDMwMG5fdjFbXSBfX2luaXRjb25zdCA9IHtcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksXFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxcbiB9O1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMDBudjExW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1VOS05PV04pLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzEwbnYxW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDgsIEtFWV9VTktOT1dOKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzEwbl92MltdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDUsIEtFWV9XUFNfQlVUVE9OKSxcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDMyMG5fdjFbXSBfX2luaXRjb25zdCA9IHtcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg1LCBLRVlfV1BTX0JVVFRPTiksXFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoOCwgS0VZX1JFU1RBUlQpLFxcbiB9O1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQ1NGczZ3YyW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNSwgS0VZX1dJTUFYKSxcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDU0Z19nZW5lcmljW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NjEwbnYxW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDgsIEtFWV9XUFNfQlVUVE9OKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NjEwbnYyW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0c2w1NGdzW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcXG5AQCAtMzMyLDE1NCArMzQxLDE1NCBAQCBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnRzbDU0Z3NbXSBfX2luaXRjb25zdCA9IHtcXG4gXFxuIC8qIEx1eHVsICovXFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19sdXh1bF9hYnJfNDQwMF92MVtdID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDE0LCBLRVlfUkVTVEFSVCksXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMzEwX3YxW10gPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoMjAsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8xMjEwX3YxW10gPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoOCwgS0VZX1JFU1RBUlQpLFxcbiB9O1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfbHV4dWxfeGFwXzEyMzBfdjFbXSA9IHtcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg4LCBLRVlfUkVTVEFSVCksXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMTI0MF92MVtdID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDgsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8xNTAwX3YxW10gPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoMTQsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2x1eHVsX3hicl80NDAwX3YxW10gPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoMTQsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2x1eHVsX3h2d19wMzBfdjFbXSA9IHtcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSgyMCwgS0VZX1JFU1RBUlQpLFxcbiB9O1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfbHV4dWxfeHdyXzYwMF92MVtdID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDgsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX2x1eHVsX3h3cl8xNzUwX3YxW10gPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoMTQsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuIC8qIE1pY3Jvc29mdCAqL1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfbWljcm9zb2Z0X25tNzAwW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNywgS0VZX1JFU1RBUlQpLFxcbiB9O1xcbiBcXG4gLyogTW90b3JvbGEgKi9cXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX21vdG9yb2xhX3dlODAwZ1tdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDAsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX21vdG9yb2xhX3dyODUwZ3BbXSBfX2luaXRjb25zdCA9IHtcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg1LCBLRVlfUkVTVEFSVCksXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19tb3Rvcm9sYV93cjg1MGd2MnYzW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNSwgS0VZX1JFU1RBUlQpLFxcbiB9O1xcbiBcXG4gLyogTmV0Z2VhciAqL1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl9yNjIwMF92MVtdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDIsIEtFWV9SRktJTEwpLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDMsIEtFWV9SRVNUQVJUKSxcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3I2MzAwX3YxW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxcbiB9O1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bjI1MDBycF92MVtdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDEyLCBLRVlfUkVTVEFSVCksXFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoMzEsIEtFWV9XUFNfQlVUVE9OKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjM0MDB2MVtdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9SRVNUQVJUKSxcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfV1BTX0JVVFRPTiksXFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoOCwgS0VZX1JGS0lMTCksXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duZHIzNDAwX3YzW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoMTIsIEtFWV9SRVNUQVJUKSxcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSgyMywgS0VZX1dQU19CVVRUT04pLFxcbiB9O1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bmRyMzcwMHYzW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoMiwgS0VZX1JGS0lMTCksXFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoMywgS0VZX1JFU1RBUlQpLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9XUFNfQlVUVE9OKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjQ1MDB2MVtdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9XUFNfQlVUVE9OKSxcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg1LCBLRVlfUkZLSUxMKSxcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3ducjEwMDBfdjNbXSBfX2luaXRjb25zdCA9IHtcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSgyLCBLRVlfV1BTX0JVVFRPTiksXFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoMywgS0VZX1JFU1RBUlQpLFxcbiB9O1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxcbiBiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bnIzNTAwbHYxW10gX19pbml0Y29uc3QgPSB7XFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1JFU1RBUlQpLFxcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9XUFNfQlVUVE9OKSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25yMzUwMGx2MltdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9SRVNUQVJUKSxcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfV1BTX0JVVFRPTiksXFxuIFxcdEJDTTQ3WFhfR1BJT19LRVkoOCwgS0VZX1JGS0lMTCksXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XFxuIGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3ducjgzNGJ2MltdIF9faW5pdGNvbnN0ID0ge1xcbiBcXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcXG4gfTtcXG4gXFxuIC8qIFNpbXBsZVRlY2ggKi9cXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcXG4gYmNtNDd4eF9idXR0b25zX3NpbXBsZXRlY2hfc2ltcGxlc2hhcmVbXSBfX2luaXRjb25zdCA9IHtcXG4gXFx0QkNNNDdYWF9HUElPX0tFWSgwLCBLRVlfUkVTVEFSVCksXFxuIH07XFxuQEAgLTQ4OCwzMSArNDk3LDk2IEBAIGJjbTQ3eHhfYnV0dG9uc19zaW1wbGV0ZWNoX3NpbXBsZXNoYXJlW10gX19pbml0Y29uc3QgPSB7XFxuICAqIEluaXRcXG4gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbiBcXG4tc3RhdGljIHN0cnVjdCBncGlvX2tleXNfcGxhdGZvcm1fZGF0YSBiY200N3h4X2J1dHRvbl9wZGF0YTtcXG4tXFxuLXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIGJjbTQ3eHhfYnV0dG9uc19ncGlvX2tleXMgPSB7XFxuLVxcdC5uYW1lID0gXFxcImdwaW8ta2V5c1xcXCIsXFxuLVxcdC5kZXYgPSB7XFxuLVxcdFxcdC5wbGF0Zm9ybV9kYXRhID0gXFx1MDAyNmJjbTQ3eHhfYnV0dG9uX3BkYXRhLFxcbitzdGF0aWMgaW50IF9faW5pdFxcbitiY200N3h4X2J1dHRvbnNfYWRkKGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5ICpidXR0b25zLCBpbnQgbmJ1dHRvbnMpXFxuK3tcXG4rXFx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjtcXG4rXFx0Y29uc3Qgc3RydWN0IHNvZnR3YXJlX25vZGUgKmdwaW9fc3dub2RlO1xcbitcXHRzdHJ1Y3QgcHJvcGVydHlfZW50cnkgKnA7XFxuK1xcdGludCBlcnJvcjtcXG4rXFx0aW50IGk7XFxuK1xcbitcXHRzd2l0Y2ggKGJjbTQ3eHhfYnVzX3R5cGUpIHtcXG4rI2lmZGVmIENPTkZJR19CQ000N1hYX0JDTUFcXG4rXFx0Y2FzZSBCQ000N1hYX0JVU19UWVBFX0JDTUE6XFxuK1xcdFxcdGdwaW9fc3dub2RlID0gXFx1MDAyNmJjbWFfZ3Bpb19zd25vZGU7XFxuK1xcdFxcdGJyZWFrO1xcbisjZW5kaWZcXG4rI2lmZGVmIENPTkZJR19CQ000N1hYX1NTQlxcbitcXHRjYXNlIEJDTTQ3WFhfQlVTX1RZUEVfU1NCOlxcbitcXHRcXHRncGlvX3N3bm9kZSA9IFxcdTAwMjZzc2JfZ3Bpb19zd25vZGU7XFxuK1xcdFxcdGJyZWFrO1xcbisjZW5kaWZcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuIFxcdH1cXG4tfTtcXG4gXFxuLS8qIENvcHkgZGF0YSBmcm9tIF9faW5pdGNvbnN0ICovXFxuLXN0YXRpYyBpbnQgX19pbml0IGJjbTQ3eHhfYnV0dG9uc19jb3B5KGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uICpidXR0b25zLFxcbi1cXHRcXHRcXHRcXHQgICAgICAgc2l6ZV90IG5idXR0b25zKVxcbi17XFxuLVxcdHNpemVfdCBzaXplID0gbmJ1dHRvbnMgKiBzaXplb2YoKmJ1dHRvbnMpO1xcbitcXHQvKiAxIG5vZGUgZm9yIGdwaW8ta2V5cyBkZXZpY2UsIDEgbm9kZSBmb3IgZWFjaCBidXR0b24sIDEgdGVybWluYXRvciAqL1xcbitcXHRjb25zdCBzdHJ1Y3Qgc29mdHdhcmVfbm9kZSAqKm5vZGVfZ3JvdXAgX19mcmVlKGtmcmVlKSA9XFxuK1xcdFxcdGtjYWxsb2MoMSArIG5idXR0b25zICsgMSwgc2l6ZW9mKCpub2RlX2dyb3VwKSwgR0ZQX0tFUk5FTCk7XFxuK1xcdGlmICghbm9kZV9ncm91cClcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbi1cXHRiY200N3h4X2J1dHRvbl9wZGF0YS5idXR0b25zID0ga21lbWR1cChidXR0b25zLCBzaXplLCBHRlBfS0VSTkVMKTtcXG4tXFx0aWYgKCFiY200N3h4X2J1dHRvbl9wZGF0YS5idXR0b25zKVxcbitcXHQvKiAxIGNvZGUgcHJvcGVydHksIDEgZ3BpbyBwcm9wZXJ0eSwgMSB0ZXJtaW5hdG9yICovXFxuK1xcdHN0cnVjdCBwcm9wZXJ0eV9lbnRyeSAqcHJvcHMgX19mcmVlKGtmcmVlKSA9XFxuK1xcdFxcdGtjYWxsb2MobmJ1dHRvbnMgKiAzLCBzaXplb2YoKnByb3BzKSwgR0ZQX0tFUk5FTCk7XFxuK1xcdGlmICghcHJvcHMpXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbi1cXHRiY200N3h4X2J1dHRvbl9wZGF0YS5uYnV0dG9ucyA9IG5idXR0b25zO1xcbiBcXG4rXFx0LyogMSBub2RlIGZvciBncGlvLWtleXMgZGV2aWNlLCAxIG5vZGUgZm9yIGVhY2ggYnV0dG9uICovXFxuK1xcdHN0cnVjdCBzb2Z0d2FyZV9ub2RlICpub2RlcyBfX2ZyZWUoa2ZyZWUpID1cXG4rXFx0XFx0a2NhbGxvYygxICsgbmJ1dHRvbnMsIHNpemVvZigqbm9kZXMpLCBHRlBfS0VSTkVMKTtcXG4rXFx0aWYgKCFub2RlcylcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcbitcXHRzdHJ1Y3Qgc29mdHdhcmVfbm9kZV9yZWZfYXJncyAqcmVmX2FyZ3MgX19mcmVlKGtmcmVlKSA9XFxuK1xcdFxcdGtjYWxsb2MobmJ1dHRvbnMsIHNpemVvZigqcmVmX2FyZ3MpLCBHRlBfS0VSTkVMKTtcXG4rXFx0aWYgKCFyZWZfYXJncylcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcbitcXHQvKiBncGlvLWtleXMgbm9kZSAqL1xcbitcXHRub2Rlc1swXS5uYW1lID0gXFxcImJjbTQ3eHgtZ3Bpby1idXR0b25zXFxcIjtcXG4rXFxuK1xcdHAgPSBwcm9wcztcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5idXR0b25zOyBpKyspIHtcXG4rXFx0XFx0Y29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkgKmJ1dHRvbiA9IFxcdTAwMjZidXR0b25zW2ldO1xcbitcXHRcXHRzdHJ1Y3Qgc29mdHdhcmVfbm9kZSAqbm9kZSA9IFxcdTAwMjZub2Rlc1sxICsgaV07XFxuK1xcdFxcdHN0cnVjdCBzb2Z0d2FyZV9ub2RlX3JlZl9hcmdzICpyZWYgPSBcXHUwMDI2cmVmX2FyZ3NbaV07XFxuK1xcbitcXHRcXHRub2RlLVxcdTAwM2VwYXJlbnQgPSBcXHUwMDI2bm9kZXNbMF07XFxuK1xcdFxcdG5vZGUtXFx1MDAzZXByb3BlcnRpZXMgPSBwO1xcbitcXG4rXFx0XFx0KnJlZiA9IFNPRlRXQVJFX05PREVfUkVGRVJFTkNFKGdwaW9fc3dub2RlLCBidXR0b24tXFx1MDAzZXBpbiwgYnV0dG9uLVxcdTAwM2VmbGFncyk7XFxuK1xcdFxcdCpwKysgPSBQUk9QRVJUWV9FTlRSWV9SRUYoXFxcImdwaW9zXFxcIiwgXFx1MDAyNnJlZl9hcmdzW2ldKTtcXG4rXFx0XFx0KnArKyA9IFBST1BFUlRZX0VOVFJZX1UzMihcXFwibGludXgsY29kZVxcXCIsIGJ1dHRvbi1cXHUwMDNlY29kZSk7XFxuK1xcdFxcdHArKztcXG4rXFx0fVxcbitcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5idXR0b25zICsgMTsgaSsrKVxcbitcXHRcXHRub2RlX2dyb3VwW2ldID0gXFx1MDAyNm5vZGVzW2ldO1xcbitcXG4rXFx0ZXJyb3IgPSBzb2Z0d2FyZV9ub2RlX3JlZ2lzdGVyX25vZGVfZ3JvdXAobm9kZV9ncm91cCk7XFxuK1xcdGlmIChlcnJvcilcXG4rXFx0XFx0cmV0dXJuIGVycm9yO1xcbitcXG4rXFx0cGRldiA9IHBsYXRmb3JtX2RldmljZV9yZWdpc3Rlcl9mdWxsKFxcdTAwMjYoc3RydWN0IHBsYXRmb3JtX2RldmljZV9pbmZvKXtcXG4rXFx0XFx0Lm5hbWUgPSBcXFwiZ3Bpby1rZXlzXFxcIixcXG4rXFx0XFx0LnN3bm9kZSA9IFxcdTAwMjZub2Rlc1swXSxcXG4rXFx0fSk7XFxuK1xcdGVycm9yID0gUFRSX0VSUl9PUl9aRVJPKHBkZXYpO1xcbitcXHRpZiAoZXJyb3IpIHtcXG4rXFx0XFx0c29mdHdhcmVfbm9kZV91bnJlZ2lzdGVyX25vZGVfZ3JvdXAobm9kZV9ncm91cCk7XFxuK1xcdFxcdHJldHVybiBlcnJvcjtcXG4rXFx0fVxcbitcXG4rXFx0cmV0YWluX2FuZF9udWxsX3B0cihwcm9wcyk7XFxuK1xcdHJldGFpbl9hbmRfbnVsbF9wdHIobm9kZXMpO1xcbitcXHRyZXRhaW5fYW5kX251bGxfcHRyKHJlZl9hcmdzKTtcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuLSNkZWZpbmUgYmNtNDd4eF9jb3B5X2JkYXRhKGRldl9idXR0b25zKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0YmNtNDd4eF9idXR0b25zX2NvcHkoZGV2X2J1dHRvbnMsIEFSUkFZX1NJWkUoZGV2X2J1dHRvbnMpKTtcXG4rI2RlZmluZSBiY200N3h4X2FkZF9iZGF0YShkZXZfYnV0dG9ucylcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdGJjbTQ3eHhfYnV0dG9uc19hZGQoZGV2X2J1dHRvbnMsIEFSUkFZX1NJWkUoZGV2X2J1dHRvbnMpKVxcbiBcXG4gaW50IF9faW5pdCBiY200N3h4X2J1dHRvbnNfcmVnaXN0ZXIodm9pZClcXG4ge1xcbkBAIC01MjEsNTIgKzU5NSw1MiBAQCBpbnQgX19pbml0IGJjbTQ3eHhfYnV0dG9uc19yZWdpc3Rlcih2b2lkKVxcbiBcXG4gXFx0c3dpdGNoIChib2FyZCkge1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQVNVU19SVE4xMFU6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c19ydG4xMHUpO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c19ydG4xMHUpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfUlROMTI6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c19ydG4xMik7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3J0bjEyKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9BU1VTX1JUTjE2Olxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfcnRuMTYpO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c19ydG4xNik7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQVNVU19SVE42NlU6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c19ydG42NnUpO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c19ydG42NnUpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0wzMDBHOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2wzMDBnKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2wzMDBnKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9BU1VTX1dMMzIwR0U6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDMyMGdlKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2wzMjBnZSk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQVNVU19XTDMzMEdFOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2wzMzBnZSk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsMzMwZ2UpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0w1MDBHOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBnKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBnKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9BU1VTX1dMNTAwR0Q6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDUwMGdkKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBnZCk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQVNVU19XTDUwMEdQVjE6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDUwMGdwdjEpO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDUwMGdwdjEpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0w1MDBHUFYyOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBncHYyKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBncHYyKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9BU1VTX1dMNTAwVzpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwdyk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwdyk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQVNVU19XTDUyMEdDOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MjBnYyk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTIwZ2MpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0w1MjBHVTpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTIwZ3UpO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDUyMGd1KTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9BU1VTX1dMNzAwR0U6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDcwMGdlKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w3MDBnZSk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQVNVU19XTEhERDpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsaGRkKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2xoZGQpO1xcbiBcXHRcXHRicmVhaztcXG4gXFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9CRUxLSU5fRjdEMzMwMTpcXG5AQCAtNTc0LDE5MyArNjQ4LDE5MyBAQCBpbnQgX19pbml0IGJjbTQ3eHhfYnV0dG9uc19yZWdpc3Rlcih2b2lkKVxcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQkVMS0lOX0Y3RDQzMDE6XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9CRUxLSU5fRjdENDMwMjpcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0JFTEtJTl9GN0Q0NDAxOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2JlbGtpbl9mN2Q0MzAxKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2JlbGtpbl9mN2Q0MzAxKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQlVGRkFMT19XSFIyX0E1NEc1NDpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docjJfYTU0ZzU0KTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd2hyMl9hNTRnNTQpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0JVRkZBTE9fV0hSX0cxMjU6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYnVmZmFsb193aHJfZzEyNSk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docl9nMTI1KTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9CVUZGQUxPX1dIUl9HNTRTOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd2hyX2c1NHMpO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYnVmZmFsb193aHJfZzU0cyk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQlVGRkFMT19XSFJfSFBfRzU0Olxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd2hyX2hwX2c1NCk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docl9ocF9nNTQpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0JVRkZBTE9fV1pSX0czMDBOOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd3pyX2czMDBuKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd3pyX2czMDBuKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9CVUZGQUxPX1daUl9SU19HNTQ6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYnVmZmFsb193enJfcnNfZzU0KTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd3pyX3JzX2c1NCk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQlVGRkFMT19XWlJfUlNfRzU0SFA6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYnVmZmFsb193enJfcnNfZzU0aHApO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYnVmZmFsb193enJfcnNfZzU0aHApO1xcbiBcXHRcXHRicmVhaztcXG4gXFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9ERUxMX1RNMjMwMDpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19kZWxsX3RtMjMwMCk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19kZWxsX3RtMjMwMCk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0RMSU5LX0RJUjEzMDpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19kbGlua19kaXIxMzApO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfZGxpbmtfZGlyMTMwKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9ETElOS19ESVIzMzA6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfZGxpbmtfZGlyMzMwKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2RsaW5rX2RpcjMzMCk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0hVQVdFSV9FOTcwOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2h1YXdlaV9lOTcwKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2h1YXdlaV9lOTcwKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19FMTAwMFYxOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTEwMDB2MSk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UxMDAwdjEpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfRTEwMDBWMjE6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMTAwMHYyMSk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UxMDAwdjIxKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX0UyMDAwVjE6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMjAwMHYxKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTIwMDB2MSk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19FMjUwMFYzOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTI1MDB2Myk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UyNTAwdjMpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfRTMwMDBWMTpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UzMDAwdjEpO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMzAwMHYxKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX0UzMjAwVjE6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMzIwMHYxKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTMyMDB2MSk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19FNDIwMFYxOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTQyMDB2MSk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2U0MjAwdjEpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfV1JUMTUwTlYxOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTUwbnYxKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTUwbnYxKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX1dSVDE1ME5WMTE6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQxNTBudjExKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTUwbnYxMSk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQxNjBOVjE6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQxNjBudjEpO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQxNjBudjEpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfV1JUMTYwTlYzOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTYwbnYzKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTYwbnYzKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX1dSVDMwME5fVjE6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMDBuX3YxKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzAwbl92MSk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQzMDBOVjExOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzAwbnYxMSk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDMwMG52MTEpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfV1JUMzEwTlYxOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzEwbnYxKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzEwbnYxKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX1dSVDMxME5WMjpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDMxMG5fdjIpO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMTBuX3YyKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX1dSVDMyME5fVjE6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMjBuX3YxKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzIwbl92MSk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQ1NEczR1YyOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NTRnM2d2Mik7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDU0ZzNndjIpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfV1JUNTRHX1RZUEVfMDEwMTpcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfV1JUNTRHX1RZUEVfMDQ2NzpcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfV1JUNTRHX1RZUEVfMDcwODpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDU0Z19nZW5lcmljKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NTRnX2dlbmVyaWMpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfV1JUNjEwTlYxOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NjEwbnYxKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NjEwbnYxKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX1dSVDYxME5WMjpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDYxMG52Mik7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDYxMG52Mik7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlRTTDU0R1M6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnRzbDU0Z3MpO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnRzbDU0Z3MpO1xcbiBcXHRcXHRicmVhaztcXG4gXFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9MVVhVTF9BQlJfNDQwMF9WMTpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF9hYnJfNDQwMF92MSk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF9hYnJfNDQwMF92MSk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTFVYVUxfWEFQXzMxMF9WMTpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMzEwX3YxKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8zMTBfdjEpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xVWFVMX1hBUF8xMjEwX1YxOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8xMjEwX3YxKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8xMjEwX3YxKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9MVVhVTF9YQVBfMTIzMF9WMTpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMTIzMF92MSk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMTIzMF92MSk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTFVYVUxfWEFQXzEyNDBfVjE6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfeGFwXzEyNDBfdjEpO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfeGFwXzEyNDBfdjEpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xVWFVMX1hBUF8xNTAwX1YxOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8xNTAwX3YxKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8xNTAwX3YxKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9MVVhVTF9YQlJfNDQwMF9WMTpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YnJfNDQwMF92MSk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YnJfNDQwMF92MSk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTFVYVUxfWFZXX1AzMF9WMTpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94dndfcDMwX3YxKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3h2d19wMzBfdjEpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xVWFVMX1hXUl82MDBfVjE6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfeHdyXzYwMF92MSk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94d3JfNjAwX3YxKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9MVVhVTF9YV1JfMTc1MF9WMTpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94d3JfMTc1MF92MSk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94d3JfMTc1MF92MSk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX01JQ1JPU09GVF9NTjcwMDpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19taWNyb3NvZnRfbm03MDApO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbWljcm9zb2Z0X25tNzAwKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTU9UT1JPTEFfV0U4MDBHOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX21vdG9yb2xhX3dlODAwZyk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19tb3Rvcm9sYV93ZTgwMGcpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX01PVE9ST0xBX1dSODUwR1A6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbW90b3JvbGFfd3I4NTBncCk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19tb3Rvcm9sYV93cjg1MGdwKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9NT1RPUk9MQV9XUjg1MEdWMlYzOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX21vdG9yb2xhX3dyODUwZ3YydjMpO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbW90b3JvbGFfd3I4NTBndjJ2Myk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX05FVEdFQVJfUjYyMDBfVjE6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl9yNjIwMF92MSk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3I2MjAwX3YxKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9ORVRHRUFSX1I2MzAwX1YxOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfcjYzMDBfdjEpO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl9yNjMwMF92MSk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9XTjI1MDBSUF9WMTpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duMjUwMHJwX3YxKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd24yNTAwcnBfdjEpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX05FVEdFQVJfV05EUjM0MDBWMTpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duZHIzNDAwdjEpO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bmRyMzQwMHYxKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9ORVRHRUFSX1dORFIzNDAwX1YzOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjM0MDBfdjMpO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bmRyMzQwMF92Myk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9XTkRSMzcwMFYzOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjM3MDB2Myk7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duZHIzNzAwdjMpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX05FVEdFQVJfV05EUjQ1MDBWMTpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duZHI0NTAwdjEpO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bmRyNDUwMHYxKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9ORVRHRUFSX1dOUjEwMDBfVjM6XFxuLVxcdFxcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bnIxMDAwX3YzKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25yMTAwMF92Myk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9XTlIzNTAwTDpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3ducjM1MDBsdjEpO1xcbitcXHRcXHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bnIzNTAwbHYxKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQkNNNDdYWF9CT0FSRF9ORVRHRUFSX1dOUjM1MDBMX1YyOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25yMzUwMGx2Mik7XFxuK1xcdFxcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3ducjM1MDBsdjIpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBCQ000N1hYX0JPQVJEX05FVEdFQVJfV05SODM0QlYyOlxcbi1cXHRcXHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25yODM0YnYyKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25yODM0YnYyKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcbiBcXHRjYXNlIEJDTTQ3WFhfQk9BUkRfU0lNUExFVEVDSF9TSU1QTEVTSEFSRTpcXG4tXFx0XFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19zaW1wbGV0ZWNoX3NpbXBsZXNoYXJlKTtcXG4rXFx0XFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX3NpbXBsZXRlY2hfc2ltcGxlc2hhcmUpO1xcbiBcXHRcXHRicmVhaztcXG4gXFxuIFxcdGRlZmF1bHQ6XFxuQEAgLTc2OSwxMyArODQzLDcgQEAgaW50IF9faW5pdCBiY200N3h4X2J1dHRvbnNfcmVnaXN0ZXIodm9pZClcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKGVycilcXG4tXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuLVxcbi1cXHRlcnIgPSBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoXFx1MDAyNmJjbTQ3eHhfYnV0dG9uc19ncGlvX2tleXMpO1xcbi1cXHRpZiAoZXJyKSB7XFxuLVxcdFxcdHByX2VycihcXFwiRmFpbGVkIHRvIHJlZ2lzdGVyIHBsYXRmb3JtIGRldmljZTogJWRcXFxcblxcXCIsIGVycik7XFxuIFxcdFxcdHJldHVybiBlcnI7XFxuLVxcdH1cXG4gXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmNtYS9kcml2ZXJfZ3Bpby5jIGIvZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmNcXG5pbmRleCA2NThjN2UyYWM4YmY2MS4uZWE0NTIyMmYyZmEwZmMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmNcXG4rKysgYi9kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uY1xcbkBAIC0xOSw2ICsxOSwxMSBAQFxcbiBcXG4gI2RlZmluZSBCQ01BX0dQSU9fTUFYX1BJTlNcXHQzMlxcbiBcXG4rY29uc3Qgc3RydWN0IHNvZnR3YXJlX25vZGUgYmNtYV9ncGlvX3N3bm9kZSA9IHtcXG4rXFx0Lm5hbWUgPSBcXFwiYmNtYS1ncGlvXFxcIixcXG4rfTtcXG4rRVhQT1JUX1NZTUJPTF9HUEwoYmNtYV9ncGlvX3N3bm9kZSk7XFxuK1xcbiBzdGF0aWMgaW50IGJjbWFfZ3Bpb19nZXRfdmFsdWUoc3RydWN0IGdwaW9fY2hpcCAqY2hpcCwgdW5zaWduZWQgZ3BpbylcXG4ge1xcbiBcXHRzdHJ1Y3QgYmNtYV9kcnZfY2MgKmNjID0gZ3Bpb2NoaXBfZ2V0X2RhdGEoY2hpcCk7XFxuQEAgLTE5MCw3ICsxOTUsMjAgQEAgaW50IGJjbWFfZ3Bpb19pbml0KHN0cnVjdCBiY21hX2Rydl9jYyAqY2MpXFxuIFxcdGNoaXAtXFx1MDAzZWRpcmVjdGlvbl9pbnB1dFxcdD0gYmNtYV9ncGlvX2RpcmVjdGlvbl9pbnB1dDtcXG4gXFx0Y2hpcC1cXHUwMDNlZGlyZWN0aW9uX291dHB1dFxcdD0gYmNtYV9ncGlvX2RpcmVjdGlvbl9vdXRwdXQ7XFxuIFxcdGNoaXAtXFx1MDAzZXBhcmVudFxcdFxcdD0gYnVzLVxcdTAwM2VkZXY7XFxuLVxcdGNoaXAtXFx1MDAzZWZ3bm9kZVxcdFxcdD0gZGV2X2Z3bm9kZShcXHUwMDI2Y2MtXFx1MDAzZWNvcmUtXFx1MDAzZWRldik7XFxuK1xcbitcXHQvKlxcbitcXHQgKiBSZWdpc3RlciBzb2Z0d2FyZSBub2RlIG9ubHkgZm9yIHRoZSBob3N0IFNvQyBidXMsIHVubGVzcyB0aGVyZSBpc1xcbitcXHQgKiBhbHJlYWR5IGEgZmlybXdhcmUgbm9kZSBhc3NpZ25lZC4gVGhlcmUgaXMgb25seSBvbmUgU29DIGluc3RhbmNlXFxuK1xcdCAqIGluIHRoZSBzeXN0ZW0sIHNvIHRoZXJlIGFyZSBubyBjb25jZXJucyB3aXRoIHJlZ2lzdHJhdGlvbiBjb25mbGljdHMuXFxuK1xcdCAqL1xcbitcXHRpZiAoYnVzLVxcdTAwM2Vob3N0dHlwZSA9PSBCQ01BX0hPU1RUWVBFX1NPQyBcXHUwMDI2XFx1MDAyNiAhZGV2X2Z3bm9kZShcXHUwMDI2Y2MtXFx1MDAzZWNvcmUtXFx1MDAzZWRldikpIHtcXG4rXFx0XFx0ZXJyID0gc29mdHdhcmVfbm9kZV9yZWdpc3RlcihcXHUwMDI2YmNtYV9ncGlvX3N3bm9kZSk7XFxuK1xcdFxcdGlmIChlcnIpXFxuK1xcdFxcdFxcdHJldHVybiBlcnI7XFxuK1xcdFxcdGNoaXAtXFx1MDAzZWZ3bm9kZSA9IHNvZnR3YXJlX25vZGVfZndub2RlKFxcdTAwMjZiY21hX2dwaW9fc3dub2RlKTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0Y2hpcC1cXHUwMDNlZndub2RlID0gZGV2X2Z3bm9kZShcXHUwMDI2Y2MtXFx1MDAzZWNvcmUtXFx1MDAzZWRldik7XFxuK1xcdH1cXG4gXFxuIFxcdHN3aXRjaCAoYnVzLVxcdTAwM2VjaGlwaW5mby5pZCkge1xcbiBcXHRjYXNlIEJDTUFfQ0hJUF9JRF9CQ000NzA3OlxcbkBAIC0yMTksMjAgKzIzNywzMyBAQCBpbnQgYmNtYV9ncGlvX2luaXQoc3RydWN0IGJjbWFfZHJ2X2NjICpjYylcXG4gXFxuIFxcdGVyciA9IGJjbWFfZ3Bpb19pcnFfaW5pdChjYyk7XFxuIFxcdGlmIChlcnIpXFxuLVxcdFxcdHJldHVybiBlcnI7XFxuK1xcdFxcdGdvdG8gZXJyX3VucmVnaXN0ZXJfc3dub2RlO1xcbiBcXG4gXFx0ZXJyID0gZ3Bpb2NoaXBfYWRkX2RhdGEoY2hpcCwgY2MpO1xcbi1cXHRpZiAoZXJyKSB7XFxuLVxcdFxcdGJjbWFfZ3Bpb19pcnFfZXhpdChjYyk7XFxuLVxcdFxcdHJldHVybiBlcnI7XFxuLVxcdH1cXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0Z290byBlcnJfaXJxX2V4aXQ7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4rXFxuK2Vycl9pcnFfZXhpdDpcXG4rXFx0YmNtYV9ncGlvX2lycV9leGl0KGNjKTtcXG4rZXJyX3VucmVnaXN0ZXJfc3dub2RlOlxcbitcXHRpZiAoYnVzLVxcdTAwM2Vob3N0dHlwZSA9PSBCQ01BX0hPU1RUWVBFX1NPQyBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgY2hpcC1cXHUwMDNlZndub2RlIFxcdTAwMjZcXHUwMDI2IGlzX3NvZnR3YXJlX25vZGUoY2hpcC1cXHUwMDNlZndub2RlKSkge1xcbitcXHRcXHRzb2Z0d2FyZV9ub2RlX3VucmVnaXN0ZXIoXFx1MDAyNmJjbWFfZ3Bpb19zd25vZGUpO1xcbitcXHRcXHRjaGlwLVxcdTAwM2Vmd25vZGUgPSBOVUxMO1xcbitcXHR9XFxuK1xcdHJldHVybiBlcnI7XFxuIH1cXG4gXFxuIGludCBiY21hX2dwaW9fdW5yZWdpc3RlcihzdHJ1Y3QgYmNtYV9kcnZfY2MgKmNjKVxcbiB7XFxuIFxcdGJjbWFfZ3Bpb19pcnFfZXhpdChjYyk7XFxuIFxcdGdwaW9jaGlwX3JlbW92ZShcXHUwMDI2Y2MtXFx1MDAzZWdwaW8pO1xcbitcXHRpZiAoY2MtXFx1MDAzZWNvcmUtXFx1MDAzZWJ1cy1cXHUwMDNlaG9zdHR5cGUgPT0gQkNNQV9IT1NUVFlQRV9TT0MgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIGNjLVxcdTAwM2VncGlvLmZ3bm9kZSBcXHUwMDI2XFx1MDAyNiBpc19zb2Z0d2FyZV9ub2RlKGNjLVxcdTAwM2VncGlvLmZ3bm9kZSkpIHtcXG4rXFx0XFx0c29mdHdhcmVfbm9kZV91bnJlZ2lzdGVyKFxcdTAwMjZiY21hX2dwaW9fc3dub2RlKTtcXG4rXFx0XFx0Y2MtXFx1MDAzZWdwaW8uZndub2RlID0gTlVMTDtcXG4rXFx0fVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jIGIvZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uY1xcbmluZGV4IDkwNTY1N2M5MjViY2ViLi44NzkyMjQ3OTk0NmNiNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jXFxuKysrIGIvZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uY1xcbkBAIC0xNSw4ICsxNSwxNCBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvaW50ZXJydXB0LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9pcnFkb21haW4uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2V4cG9ydC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcHJvcGVydHkuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NzYi9zc2IuaFxcdTAwM2VcXG4gXFxuK2NvbnN0IHN0cnVjdCBzb2Z0d2FyZV9ub2RlIHNzYl9ncGlvX3N3bm9kZSA9IHtcXG4rXFx0Lm5hbWUgPSBcXFwic3NiLWdwaW9cXFwiLFxcbit9O1xcbitFWFBPUlRfU1lNQk9MX0dQTChzc2JfZ3Bpb19zd25vZGUpO1xcbitcXG4gXFxuIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgKiBTaGFyZWRcXG5AQCAtMjMyLDYgKzIzOCw4IEBAIHN0YXRpYyBpbnQgc3NiX2dwaW9fY2hpcGNvX2luaXQoc3RydWN0IHNzYl9idXMgKmJ1cylcXG4gXFx0Y2hpcC1cXHUwMDNldG9faXJxXFx0XFx0PSBzc2JfZ3Bpb190b19pcnE7XFxuICNlbmRpZlxcbiBcXHRjaGlwLVxcdTAwM2VuZ3Bpb1xcdFxcdD0gMTY7XFxuK1xcdGlmIChidXMtXFx1MDAzZWJ1c3R5cGUgPT0gU1NCX0JVU1RZUEVfU1NCKVxcbitcXHRcXHRjaGlwLVxcdTAwM2Vmd25vZGVcXHQ9IHNvZnR3YXJlX25vZGVfZndub2RlKFxcdTAwMjZzc2JfZ3Bpb19zd25vZGUpO1xcbiBcXHQvKiBUaGVyZSBpcyBqdXN0IG9uZSBTb0MgaW4gb25lIGRldmljZSBhbmQgaXRzIEdQSU8gYWRkcmVzc2VzIHNob3VsZCBiZVxcbiBcXHQgKiBkZXRlcm1pbmlzdGljIHRvIGFkZHJlc3MgdGhlbSBtb3JlIGVhc2lseS4gVGhlIG90aGVyIGJ1c2VzIGNvdWxkIGdldFxcbiBcXHQgKiBhIHJhbmRvbSBiYXNlIG51bWJlci5cXG5AQCAtNDMzLDEwICs0NDEsMTIgQEAgc3RhdGljIGludCBzc2JfZ3Bpb19leHRpZl9pbml0KHN0cnVjdCBzc2JfYnVzICpidXMpXFxuIFxcdCAqIGRldGVybWluaXN0aWMgdG8gYWRkcmVzcyB0aGVtIG1vcmUgZWFzaWx5LiBUaGUgb3RoZXIgYnVzZXMgY291bGQgZ2V0XFxuIFxcdCAqIGEgcmFuZG9tIGJhc2UgbnVtYmVyLlxcbiBcXHQgKi9cXG4tXFx0aWYgKGJ1cy1cXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpXFxuLVxcdFxcdGNoaXAtXFx1MDAzZWJhc2VcXHRcXHQ9IDA7XFxuLVxcdGVsc2VcXG4tXFx0XFx0Y2hpcC1cXHUwMDNlYmFzZVxcdFxcdD0gLTE7XFxuK1xcdGlmIChidXMtXFx1MDAzZWJ1c3R5cGUgPT0gU1NCX0JVU1RZUEVfU1NCKSB7XFxuK1xcdFxcdGNoaXAtXFx1MDAzZWJhc2VcXHQ9IDA7XFxuK1xcdFxcdGNoaXAtXFx1MDAzZWZ3bm9kZVxcdD0gc29mdHdhcmVfbm9kZV9md25vZGUoXFx1MDAyNnNzYl9ncGlvX3N3bm9kZSk7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdGNoaXAtXFx1MDAzZWJhc2VcXHQ9IC0xO1xcbitcXHR9XFxuIFxcbiBcXHRlcnIgPSBzc2JfZ3Bpb19pcnFfZXh0aWZfZG9tYWluX2luaXQoYnVzKTtcXG4gXFx0aWYgKGVycilcXG5AQCAtNDY0LDExICs0NzQsMzMgQEAgc3RhdGljIGludCBzc2JfZ3Bpb19leHRpZl9pbml0KHN0cnVjdCBzc2JfYnVzICpidXMpXFxuIFxcbiBpbnQgc3NiX2dwaW9faW5pdChzdHJ1Y3Qgc3NiX2J1cyAqYnVzKVxcbiB7XFxuK1xcdGludCBlcnIgPSAwO1xcbitcXG4rXFx0LypcXG4rXFx0ICogUmVnaXN0ZXIgc29mdHdhcmUgbm9kZSBvbmx5IGZvciB0aGUgaG9zdCBTb0MgYnVzLiBUaGVyZSBpcyBvbmx5XFxuK1xcdCAqIG9uZSBTb0MgaW5zdGFuY2UgaW4gdGhlIHN5c3RlbSwgc28gdGhlcmUgYXJlIG5vIGNvbmNlcm5zIHdpdGhcXG4rXFx0ICogcmVnaXN0cmF0aW9uIGNvbmZsaWN0cy5cXG4rXFx0ICovXFxuK1xcdGlmIChidXMtXFx1MDAzZWJ1c3R5cGUgPT0gU1NCX0JVU1RZUEVfU1NCKSB7XFxuK1xcdFxcdGVyciA9IHNvZnR3YXJlX25vZGVfcmVnaXN0ZXIoXFx1MDAyNnNzYl9ncGlvX3N3bm9kZSk7XFxuK1xcdFxcdGlmIChlcnIpXFxuK1xcdFxcdFxcdHJldHVybiBlcnI7XFxuK1xcdH1cXG4rXFxuIFxcdGlmIChzc2JfY2hpcGNvX2F2YWlsYWJsZShcXHUwMDI2YnVzLVxcdTAwM2VjaGlwY28pKVxcbi1cXHRcXHRyZXR1cm4gc3NiX2dwaW9fY2hpcGNvX2luaXQoYnVzKTtcXG4rXFx0XFx0ZXJyID0gc3NiX2dwaW9fY2hpcGNvX2luaXQoYnVzKTtcXG4gXFx0ZWxzZSBpZiAoc3NiX2V4dGlmX2F2YWlsYWJsZShcXHUwMDI2YnVzLVxcdTAwM2VleHRpZikpXFxuLVxcdFxcdHJldHVybiBzc2JfZ3Bpb19leHRpZl9pbml0KGJ1cyk7XFxuLVxcdHJldHVybiAtMTtcXG4rXFx0XFx0ZXJyID0gc3NiX2dwaW9fZXh0aWZfaW5pdChidXMpO1xcbitcXHRlbHNlXFxuK1xcdFxcdGVyciA9IC1FTk9ERVY7XFxuK1xcbitcXHRpZiAoZXJyKSB7XFxuK1xcdFxcdGlmIChidXMtXFx1MDAzZWJ1c3R5cGUgPT0gU1NCX0JVU1RZUEVfU1NCKVxcbitcXHRcXHRcXHRzb2Z0d2FyZV9ub2RlX3VucmVnaXN0ZXIoXFx1MDAyNnNzYl9ncGlvX3N3bm9kZSk7XFxuK1xcdFxcdHJldHVybiBlcnI7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiAwO1xcbiB9XFxuIFxcbiBpbnQgc3NiX2dwaW9fdW5yZWdpc3RlcihzdHJ1Y3Qgc3NiX2J1cyAqYnVzKVxcbkBAIC00NzYsNiArNTA4LDggQEAgaW50IHNzYl9ncGlvX3VucmVnaXN0ZXIoc3RydWN0IHNzYl9idXMgKmJ1cylcXG4gXFx0aWYgKHNzYl9jaGlwY29fYXZhaWxhYmxlKFxcdTAwMjZidXMtXFx1MDAzZWNoaXBjbykgfHxcXG4gXFx0ICAgIHNzYl9leHRpZl9hdmFpbGFibGUoXFx1MDAyNmJ1cy1cXHUwMDNlZXh0aWYpKSB7XFxuIFxcdFxcdGdwaW9jaGlwX3JlbW92ZShcXHUwMDI2YnVzLVxcdTAwM2VncGlvKTtcXG4rXFx0XFx0aWYgKGJ1cy1cXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpXFxuK1xcdFxcdFxcdHNvZnR3YXJlX25vZGVfdW5yZWdpc3RlcihcXHUwMDI2c3NiX2dwaW9fc3dub2RlKTtcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcdH1cXG4gXFx0cmV0dXJuIC0xO1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2JjbWEvYmNtYS5oIGIvaW5jbHVkZS9saW51eC9iY21hL2JjbWEuaFxcbmluZGV4IGYwMmNiMzkwOTM3NWUwLi4xN2ZjNTAxOTAwMTRlOSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2JjbWEvYmNtYS5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9iY21hL2JjbWEuaFxcbkBAIC00ODYsNCArNDg2LDYgQEAgZXh0ZXJuIHUzMiBiY21hX2NvcmVfZG1hX3RyYW5zbGF0aW9uKHN0cnVjdCBiY21hX2RldmljZSAqY29yZSk7XFxuIFxcbiBleHRlcm4gdW5zaWduZWQgaW50IGJjbWFfY29yZV9pcnEoc3RydWN0IGJjbWFfZGV2aWNlICpjb3JlLCBpbnQgbnVtKTtcXG4gXFxuK2V4dGVybiBjb25zdCBzdHJ1Y3Qgc29mdHdhcmVfbm9kZSBiY21hX2dwaW9fc3dub2RlO1xcbitcXG4gI2VuZGlmIC8qIExJTlVYX0JDTUFfSF8gKi9cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zc2Ivc3NiLmggYi9pbmNsdWRlL2xpbnV4L3NzYi9zc2IuaFxcbmluZGV4IDdmZWU5YWZhOTQ1ODhiLi42N2NiNjZmNmY1ZWQ2ZCAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L3NzYi9zc2IuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvc3NiL3NzYi5oXFxuQEAgLTY3MSw0ICs2NzEsNiBAQCBpbnQgc3NiX3BjaWJpb3NfcGxhdF9kZXZfaW5pdChzdHJ1Y3QgcGNpX2RldiAqZGV2KTtcXG4gaW50IHNzYl9wY2liaW9zX21hcF9pcnEoY29uc3Qgc3RydWN0IHBjaV9kZXYgKmRldiwgdTggc2xvdCwgdTggcGluKTtcXG4gI2VuZGlmIC8qIENPTkZJR19TU0JfRU1CRURERUQgKi9cXG4gXFxuK2V4dGVybiBjb25zdCBzdHJ1Y3Qgc29mdHdhcmVfbm9kZSBzc2JfZ3Bpb19zd25vZGU7XFxuK1xcbiAjZW5kaWYgLyogTElOVVhfU1NCX0hfICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAyOjU1OjExLjM2MzczODM2M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU4MDU4MjYyOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCQ000N3h4IGJ1dHRvbnMgZHJpdmVyIGFuZCBhc3NvY2lhdGVkIEJDTUEvU1NCIEdQSU8gZHJpdmVycyB0byB1c2Ugc29mdHdhcmUgbm9kZXMgaW5zdGVhZCBvZiBwbGF0Zm9ybSBkYXRhLiBUaGVzZSBjaGFuZ2VzIGFyZSBzcGVjaWZpYyB0byB0aGUgTUlQUyBCQ000N3h4IGFyY2hpdGVjdHVyZSBhbmQgaXRzIFNvQyBidXNlcyAoQkNNQV9IT1NUVFlQRV9TT0MgYW5kIFNTQl9CVVNUWVBFX1NTQikuIFNpbmNlIHN5emthbGxlciBkb2VzIG5vdCBmdXp6IE1JUFMgQkNNNDd4eCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmOGM3OTUwMjU0M2VlMjEwNGVhNDIwNTM3MTk1Yzg2ZjdjMzA0Mjk5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMDI6NTU6MDkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvYmNtNDd4eC9idXR0b25zLmMgYi9hcmNoL21pcHMvYmNtNDd4eC9idXR0b25zLmNcbmluZGV4IDQ2OTk0ZjliYjgyMTljLi4xNTFhNGVlMjgwM2YwMiAxMDA2NDRcbi0tLSBhL2FyY2gvbWlwcy9iY200N3h4L2J1dHRvbnMuY1xuKysrIGIvYXJjaC9taXBzL2JjbTQ3eHgvYnV0dG9ucy5jXG5AQCAtMSw5ICsxLDE0IEBAXG4gLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAjaW5jbHVkZSBcImJjbTQ3eHhfcHJpdmF0ZS5oXCJcbiBcbi0jaW5jbHVkZSBcdTAwM2NsaW51eC9pbnB1dC5oXHUwMDNlXG4tI2luY2x1ZGUgXHUwMDNjbGludXgvZ3Bpb19rZXlzLmhcdTAwM2VcbisjaW5jbHVkZSBcImxpbnV4L2Vyci5oXCJcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9ncGlvL21hY2hpbmUuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2dwaW8vcHJvcGVydHkuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2lucHV0LWV2ZW50LWNvZGVzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pbnRlcnJ1cHQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcHJvcGVydHkuaFx1MDAzZVxuK1xuICNpbmNsdWRlIFx1MDAzY2JjbTQ3eHhfYm9hcmQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2JjbTQ3eHguaFx1MDAzZVxuIFxuQEAgLTExLDI5ICsxNiwzNCBAQFxuICAqIERhdGFiYXNlXG4gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuIFxuLSNkZWZpbmUgQkNNNDdYWF9HUElPX0tFWShfZ3BpbywgX2NvZGUpXHRcdFx0XHRcdFxcXG4tXHR7XHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRcdC5jb2RlXHRcdD0gX2NvZGUsXHRcdFx0XHRcXFxuLVx0XHQuZ3Bpb1x0XHQ9IF9ncGlvLFx0XHRcdFx0XFxcbi1cdFx0LmFjdGl2ZV9sb3dcdD0gMSxcdFx0XHRcdFx0XFxcbitzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleSB7XG4rXHR1MTYgY29kZTtcbitcdHU4IHBpbjtcbitcdHU4IGZsYWdzO1xuK307XG4rXG4rI2RlZmluZSBCQ000N1hYX0dQSU9fS0VZKF9ncGlvLCBfY29kZSlcdFx0XHRcXFxuK1x0e1x0XHRcdFx0XHRcdFxcXG4rXHRcdC5jb2RlXHQ9IF9jb2RlLFx0XHRcdFxcXG4rXHRcdC5waW5cdD0gX2dwaW8sXHRcdFx0XFxcbitcdFx0LmZsYWdzXHQ9IEdQSU9fQUNUSVZFX0xPVyxcdFx0XFxcbiBcdH1cbiBcbi0jZGVmaW5lIEJDTTQ3WFhfR1BJT19LRVlfSChfZ3BpbywgX2NvZGUpXHRcdFx0XHRcXFxuLVx0e1x0XHRcdFx0XHRcdFx0XHRcXFxuLVx0XHQuY29kZVx0XHQ9IF9jb2RlLFx0XHRcdFx0XFxcbi1cdFx0LmdwaW9cdFx0PSBfZ3BpbyxcdFx0XHRcdFxcXG4rI2RlZmluZSBCQ000N1hYX0dQSU9fS0VZX0goX2dwaW8sIF9jb2RlKVx0XHRcXFxuK1x0e1x0XHRcdFx0XHRcdFxcXG4rXHRcdC5jb2RlXHQ9IF9jb2RlLFx0XHRcdFxcXG4rXHRcdC5waW5cdD0gX2dwaW8sXHRcdFx0XFxcbitcdFx0LmZsYWdzXHQ9IEdQSU9fQUNUSVZFX0hJR0gsXHRcdFxcXG4gXHR9XG4gXG4gLyogQXN1cyAqL1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuLWJjbTQ3eHhfYnV0dG9uc19hc3VzX3J0bjEwdVtdIF9faW5pdGNvbnN0ID0ge1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleSBiY200N3h4X2J1dHRvbnNfYXN1c19ydG4xMHVbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMjAsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMjEsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuLWJjbTQ3eHhfYnV0dG9uc19hc3VzX3J0bjEyW10gX19pbml0Y29uc3QgPSB7XG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5IGJjbTQ3eHhfYnV0dG9uc19hc3VzX3J0bjEyW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDAsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMSwgS0VZX1JFU1RBUlQpLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg0LCBCVE5fMCksIC8qIFJvdXRlciBtb2RlICovXG5AQCAtNDEsNzQgKzUxLDczIEBAIGJjbTQ3eHhfYnV0dG9uc19hc3VzX3J0bjEyW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDYsIEJUTl8yKSwgLyogQVAgbW9kZSAqL1xuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4tYmNtNDd4eF9idXR0b25zX2FzdXNfcnRuMTZbXSBfX2luaXRjb25zdCA9IHtcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkgYmNtNDd4eF9idXR0b25zX2FzdXNfcnRuMTZbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg4LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfYXN1c19ydG42NnVbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg5LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfYXN1c193bDMwMGdbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2FzdXNfd2wzMjBnZVtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfYXN1c193bDMzMGdlW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDIsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwZ1tdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfYXN1c193bDUwMGdkW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwZ3B2MVtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgwLCBLRVlfUkVTVEFSVCksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9XUFNfQlVUVE9OKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwZ3B2MltdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgyLCBLRVlfUkVTVEFSVCksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDMsIEtFWV9XUFNfQlVUVE9OKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwd1tdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWV9IKDYsIEtFWV9SRVNUQVJUKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVlfSCg3LCBLRVlfV1BTX0JVVFRPTiksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfYXN1c193bDUyMGdjW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDIsIEtFWV9SRVNUQVJUKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMywgS0VZX1dQU19CVVRUT04pLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MjBndVtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgyLCBLRVlfUkVTVEFSVCksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDMsIEtFWV9XUFNfQlVUVE9OKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNzAwZ2VbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMCwgS0VZX1BPV0VSKSwgLyogSGFyZCBkaXNrIHBvd2VyIHN3aXRjaCAqL1xuIFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksIC8qIEVaU2V0dXAgKi9cbkBAIC0xMTYsMjEgKzEyNSwyMSBAQCBiY200N3h4X2J1dHRvbnNfYXN1c193bDcwMGdlW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDcsIEtFWV9SRVNUQVJUKSwgLyogSGFyZCByZXNldCAqL1xuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2FzdXNfd2xoZGRbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4gLyogSHVhd2VpICovXG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2h1YXdlaV9lOTcwW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuIC8qIEJlbGtpbiAqL1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19iZWxraW5fZjdkNDMwMVtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDgsIEtFWV9XUFNfQlVUVE9OKSxcbkBAIC0xMzgsNDQgKzE0Nyw0NCBAQCBiY200N3h4X2J1dHRvbnNfYmVsa2luX2Y3ZDQzMDFbXSBfX2luaXRjb25zdCA9IHtcbiBcbiAvKiBCdWZmYWxvICovXG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd2hyMl9hNTRnNTRbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd2hyX2cxMjVbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMCwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfUkVTVEFSVCksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDUsIEJUTl8wKSwgLyogUm91dGVyIC8gQVAgbW9kZSBzd2l0Y2ggKi9cbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docl9nNTRzW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDAsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVlfSCg0LCBLRVlfUkVTVEFSVCksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDUsIEJUTl8wKSwgLyogUm91dGVyIC8gQVAgbW9kZSBzd2l0Y2ggKi9cbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docl9ocF9nNTRbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMCwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfUkVTVEFSVCksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDUsIEJUTl8wKSwgLyogUm91dGVyIC8gQVAgbW9kZSBzd2l0Y2ggKi9cbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3d6cl9nMzAwbltdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfYnVmZmFsb193enJfcnNfZzU0W10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDAsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd3pyX3JzX2c1NGhwW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDAsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1JFU1RBUlQpLFxuQEAgLTE4MywyMCArMTkyLDIwIEBAIGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3d6cl9yc19nNTRocFtdIF9faW5pdGNvbnN0ID0ge1xuIFxuIC8qIERlbGwgKi9cbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfZGVsbF90bTIzMDBbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMCwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4gLyogRC1MaW5rICovXG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2RsaW5rX2RpcjEzMFtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgzLCBLRVlfUkVTVEFSVCksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDcsIEtFWV9VTktOT1dOKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19kbGlua19kaXIzMzBbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMywgS0VZX1JFU1RBUlQpLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg3LCBLRVlfVU5LTk9XTiksXG5AQCAtMjA0LDEyNyArMjEzLDEyNyBAQCBiY200N3h4X2J1dHRvbnNfZGxpbmtfZGlyMzMwW10gX19pbml0Y29uc3QgPSB7XG4gXG4gLyogTGlua3N5cyAqL1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UxMDAwdjFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNSwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMTAwMHYyMVtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg5LCBLRVlfV1BTX0JVVFRPTiksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDEwLCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMjAwMHYxW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDUsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoOCwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTI1MDB2M1tdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg5LCBLRVlfV1BTX0JVVFRPTiksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDEwLCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMzAwMHYxW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTMyMDB2MVtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg1LCBLRVlfUkVTVEFSVCksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDgsIEtFWV9XUFNfQlVUVE9OKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2U0MjAwdjFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQxNTBudjFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQxNTBudjExW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTYwbnYxW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDQsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTYwbnYzW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDUsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzAwbl92MVtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDMwMG52MTFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1VOS05PV04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMTBudjFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg4LCBLRVlfVU5LTk9XTiksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMTBuX3YyW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDUsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzIwbl92MVtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg1LCBLRVlfV1BTX0JVVFRPTiksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDgsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDU0ZzNndjJbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNSwgS0VZX1dJTUFYKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NTRnX2dlbmVyaWNbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQ2MTBudjFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg4LCBLRVlfV1BTX0JVVFRPTiksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQ2MTBudjJbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnRzbDU0Z3NbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG5AQCAtMzMyLDE1NCArMzQxLDE1NCBAQCBiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnRzbDU0Z3NbXSBfX2luaXRjb25zdCA9IHtcbiBcbiAvKiBMdXh1bCAqL1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19sdXh1bF9hYnJfNDQwMF92MVtdID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgxNCwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8zMTBfdjFbXSA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMjAsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMTIxMF92MVtdID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg4LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbHV4dWxfeGFwXzEyMzBfdjFbXSA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoOCwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8xMjQwX3YxW10gPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDgsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMTUwMF92MVtdID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgxNCwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2x1eHVsX3hicl80NDAwX3YxW10gPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDE0LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbHV4dWxfeHZ3X3AzMF92MVtdID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgyMCwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2x1eHVsX3h3cl82MDBfdjFbXSA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoOCwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX2x1eHVsX3h3cl8xNzUwX3YxW10gPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDE0LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbiAvKiBNaWNyb3NvZnQgKi9cbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbWljcm9zb2Z0X25tNzAwW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDcsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuIC8qIE1vdG9yb2xhICovXG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX21vdG9yb2xhX3dlODAwZ1tdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgwLCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbW90b3JvbGFfd3I4NTBncFtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg1LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbW90b3JvbGFfd3I4NTBndjJ2M1tdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg1LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbiAvKiBOZXRnZWFyICovXG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX25ldGdlYXJfcjYyMDBfdjFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMiwgS0VZX1JGS0lMTCksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDMsIEtFWV9SRVNUQVJUKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX25ldGdlYXJfcjYzMDBfdjFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNiwgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd24yNTAwcnBfdjFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMTIsIEtFWV9SRVNUQVJUKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMzEsIEtFWV9XUFNfQlVUVE9OKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duZHIzNDAwdjFbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1JFU1RBUlQpLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfV1BTX0JVVFRPTiksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDgsIEtFWV9SRktJTEwpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjM0MDBfdjNbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMTIsIEtFWV9SRVNUQVJUKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMjMsIEtFWV9XUFNfQlVUVE9OKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duZHIzNzAwdjNbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMiwgS0VZX1JGS0lMTCksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDMsIEtFWV9SRVNUQVJUKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1dQU19CVVRUT04pLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjQ1MDB2MVtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfV1BTX0JVVFRPTiksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDUsIEtFWV9SRktJTEwpLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfUkVTVEFSVCksXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bnIxMDAwX3YzW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDIsIEtFWV9XUFNfQlVUVE9OKSxcbiBcdEJDTTQ3WFhfR1BJT19LRVkoMywgS0VZX1JFU1RBUlQpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25yMzUwMGx2MVtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSg0LCBLRVlfUkVTVEFSVCksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9XUFNfQlVUVE9OKSxcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvblxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtNDd4eF9ncGlvX2tleVxuIGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3ducjM1MDBsdjJbXSBfX2luaXRjb25zdCA9IHtcbiBcdEJDTTQ3WFhfR1BJT19LRVkoNCwgS0VZX1JFU1RBUlQpLFxuIFx0QkNNNDdYWF9HUElPX0tFWSg2LCBLRVlfV1BTX0JVVFRPTiksXG4gXHRCQ000N1hYX0dQSU9fS0VZKDgsIEtFWV9SRktJTEwpLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBiY200N3h4X2dwaW9fa2V5XG4gYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25yODM0YnYyW10gX19pbml0Y29uc3QgPSB7XG4gXHRCQ000N1hYX0dQSU9fS0VZKDYsIEtFWV9SRVNUQVJUKSxcbiB9O1xuIFxuIC8qIFNpbXBsZVRlY2ggKi9cbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b25cbitzdGF0aWMgY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXlcbiBiY200N3h4X2J1dHRvbnNfc2ltcGxldGVjaF9zaW1wbGVzaGFyZVtdIF9faW5pdGNvbnN0ID0ge1xuIFx0QkNNNDdYWF9HUElPX0tFWSgwLCBLRVlfUkVTVEFSVCksXG4gfTtcbkBAIC00ODgsMzEgKzQ5Nyw5NiBAQCBiY200N3h4X2J1dHRvbnNfc2ltcGxldGVjaF9zaW1wbGVzaGFyZVtdIF9faW5pdGNvbnN0ID0ge1xuICAqIEluaXRcbiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4gXG4tc3RhdGljIHN0cnVjdCBncGlvX2tleXNfcGxhdGZvcm1fZGF0YSBiY200N3h4X2J1dHRvbl9wZGF0YTtcbi1cbi1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBiY200N3h4X2J1dHRvbnNfZ3Bpb19rZXlzID0ge1xuLVx0Lm5hbWUgPSBcImdwaW8ta2V5c1wiLFxuLVx0LmRldiA9IHtcbi1cdFx0LnBsYXRmb3JtX2RhdGEgPSBcdTAwMjZiY200N3h4X2J1dHRvbl9wZGF0YSxcbitzdGF0aWMgaW50IF9faW5pdFxuK2JjbTQ3eHhfYnV0dG9uc19hZGQoY29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkgKmJ1dHRvbnMsIGludCBuYnV0dG9ucylcbit7XG4rXHRzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2O1xuK1x0Y29uc3Qgc3RydWN0IHNvZnR3YXJlX25vZGUgKmdwaW9fc3dub2RlO1xuK1x0c3RydWN0IHByb3BlcnR5X2VudHJ5ICpwO1xuK1x0aW50IGVycm9yO1xuK1x0aW50IGk7XG4rXG4rXHRzd2l0Y2ggKGJjbTQ3eHhfYnVzX3R5cGUpIHtcbisjaWZkZWYgQ09ORklHX0JDTTQ3WFhfQkNNQVxuK1x0Y2FzZSBCQ000N1hYX0JVU19UWVBFX0JDTUE6XG4rXHRcdGdwaW9fc3dub2RlID0gXHUwMDI2YmNtYV9ncGlvX3N3bm9kZTtcbitcdFx0YnJlYWs7XG4rI2VuZGlmXG4rI2lmZGVmIENPTkZJR19CQ000N1hYX1NTQlxuK1x0Y2FzZSBCQ000N1hYX0JVU19UWVBFX1NTQjpcbitcdFx0Z3Bpb19zd25vZGUgPSBcdTAwMjZzc2JfZ3Bpb19zd25vZGU7XG4rXHRcdGJyZWFrO1xuKyNlbmRpZlxuK1x0ZGVmYXVsdDpcbitcdFx0cmV0dXJuIC1FTk9ERVY7XG4gXHR9XG4tfTtcbiBcbi0vKiBDb3B5IGRhdGEgZnJvbSBfX2luaXRjb25zdCAqL1xuLXN0YXRpYyBpbnQgX19pbml0IGJjbTQ3eHhfYnV0dG9uc19jb3B5KGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uICpidXR0b25zLFxuLVx0XHRcdFx0ICAgICAgIHNpemVfdCBuYnV0dG9ucylcbi17XG4tXHRzaXplX3Qgc2l6ZSA9IG5idXR0b25zICogc2l6ZW9mKCpidXR0b25zKTtcbitcdC8qIDEgbm9kZSBmb3IgZ3Bpby1rZXlzIGRldmljZSwgMSBub2RlIGZvciBlYWNoIGJ1dHRvbiwgMSB0ZXJtaW5hdG9yICovXG4rXHRjb25zdCBzdHJ1Y3Qgc29mdHdhcmVfbm9kZSAqKm5vZGVfZ3JvdXAgX19mcmVlKGtmcmVlKSA9XG4rXHRcdGtjYWxsb2MoMSArIG5idXR0b25zICsgMSwgc2l6ZW9mKCpub2RlX2dyb3VwKSwgR0ZQX0tFUk5FTCk7XG4rXHRpZiAoIW5vZGVfZ3JvdXApXG4rXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuLVx0YmNtNDd4eF9idXR0b25fcGRhdGEuYnV0dG9ucyA9IGttZW1kdXAoYnV0dG9ucywgc2l6ZSwgR0ZQX0tFUk5FTCk7XG4tXHRpZiAoIWJjbTQ3eHhfYnV0dG9uX3BkYXRhLmJ1dHRvbnMpXG4rXHQvKiAxIGNvZGUgcHJvcGVydHksIDEgZ3BpbyBwcm9wZXJ0eSwgMSB0ZXJtaW5hdG9yICovXG4rXHRzdHJ1Y3QgcHJvcGVydHlfZW50cnkgKnByb3BzIF9fZnJlZShrZnJlZSkgPVxuK1x0XHRrY2FsbG9jKG5idXR0b25zICogMywgc2l6ZW9mKCpwcm9wcyksIEdGUF9LRVJORUwpO1xuK1x0aWYgKCFwcm9wcylcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4tXHRiY200N3h4X2J1dHRvbl9wZGF0YS5uYnV0dG9ucyA9IG5idXR0b25zO1xuIFxuK1x0LyogMSBub2RlIGZvciBncGlvLWtleXMgZGV2aWNlLCAxIG5vZGUgZm9yIGVhY2ggYnV0dG9uICovXG4rXHRzdHJ1Y3Qgc29mdHdhcmVfbm9kZSAqbm9kZXMgX19mcmVlKGtmcmVlKSA9XG4rXHRcdGtjYWxsb2MoMSArIG5idXR0b25zLCBzaXplb2YoKm5vZGVzKSwgR0ZQX0tFUk5FTCk7XG4rXHRpZiAoIW5vZGVzKVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcbitcdHN0cnVjdCBzb2Z0d2FyZV9ub2RlX3JlZl9hcmdzICpyZWZfYXJncyBfX2ZyZWUoa2ZyZWUpID1cbitcdFx0a2NhbGxvYyhuYnV0dG9ucywgc2l6ZW9mKCpyZWZfYXJncyksIEdGUF9LRVJORUwpO1xuK1x0aWYgKCFyZWZfYXJncylcbitcdFx0cmV0dXJuIC1FTk9NRU07XG4rXG4rXHQvKiBncGlvLWtleXMgbm9kZSAqL1xuK1x0bm9kZXNbMF0ubmFtZSA9IFwiYmNtNDd4eC1ncGlvLWJ1dHRvbnNcIjtcbitcbitcdHAgPSBwcm9wcztcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5idXR0b25zOyBpKyspIHtcbitcdFx0Y29uc3Qgc3RydWN0IGJjbTQ3eHhfZ3Bpb19rZXkgKmJ1dHRvbiA9IFx1MDAyNmJ1dHRvbnNbaV07XG4rXHRcdHN0cnVjdCBzb2Z0d2FyZV9ub2RlICpub2RlID0gXHUwMDI2bm9kZXNbMSArIGldO1xuK1x0XHRzdHJ1Y3Qgc29mdHdhcmVfbm9kZV9yZWZfYXJncyAqcmVmID0gXHUwMDI2cmVmX2FyZ3NbaV07XG4rXG4rXHRcdG5vZGUtXHUwMDNlcGFyZW50ID0gXHUwMDI2bm9kZXNbMF07XG4rXHRcdG5vZGUtXHUwMDNlcHJvcGVydGllcyA9IHA7XG4rXG4rXHRcdCpyZWYgPSBTT0ZUV0FSRV9OT0RFX1JFRkVSRU5DRShncGlvX3N3bm9kZSwgYnV0dG9uLVx1MDAzZXBpbiwgYnV0dG9uLVx1MDAzZWZsYWdzKTtcbitcdFx0KnArKyA9IFBST1BFUlRZX0VOVFJZX1JFRihcImdwaW9zXCIsIFx1MDAyNnJlZl9hcmdzW2ldKTtcbitcdFx0KnArKyA9IFBST1BFUlRZX0VOVFJZX1UzMihcImxpbnV4LGNvZGVcIiwgYnV0dG9uLVx1MDAzZWNvZGUpO1xuK1x0XHRwKys7XG4rXHR9XG4rXG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBuYnV0dG9ucyArIDE7IGkrKylcbitcdFx0bm9kZV9ncm91cFtpXSA9IFx1MDAyNm5vZGVzW2ldO1xuK1xuK1x0ZXJyb3IgPSBzb2Z0d2FyZV9ub2RlX3JlZ2lzdGVyX25vZGVfZ3JvdXAobm9kZV9ncm91cCk7XG4rXHRpZiAoZXJyb3IpXG4rXHRcdHJldHVybiBlcnJvcjtcbitcbitcdHBkZXYgPSBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJfZnVsbChcdTAwMjYoc3RydWN0IHBsYXRmb3JtX2RldmljZV9pbmZvKXtcbitcdFx0Lm5hbWUgPSBcImdwaW8ta2V5c1wiLFxuK1x0XHQuc3dub2RlID0gXHUwMDI2bm9kZXNbMF0sXG4rXHR9KTtcbitcdGVycm9yID0gUFRSX0VSUl9PUl9aRVJPKHBkZXYpO1xuK1x0aWYgKGVycm9yKSB7XG4rXHRcdHNvZnR3YXJlX25vZGVfdW5yZWdpc3Rlcl9ub2RlX2dyb3VwKG5vZGVfZ3JvdXApO1xuK1x0XHRyZXR1cm4gZXJyb3I7XG4rXHR9XG4rXG4rXHRyZXRhaW5fYW5kX251bGxfcHRyKHByb3BzKTtcbitcdHJldGFpbl9hbmRfbnVsbF9wdHIobm9kZXMpO1xuK1x0cmV0YWluX2FuZF9udWxsX3B0cihyZWZfYXJncyk7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tI2RlZmluZSBiY200N3h4X2NvcHlfYmRhdGEoZGV2X2J1dHRvbnMpXHRcdFx0XHRcdFxcXG4tXHRiY200N3h4X2J1dHRvbnNfY29weShkZXZfYnV0dG9ucywgQVJSQVlfU0laRShkZXZfYnV0dG9ucykpO1xuKyNkZWZpbmUgYmNtNDd4eF9hZGRfYmRhdGEoZGV2X2J1dHRvbnMpXHRcdFx0XHRcdFxcXG4rXHRiY200N3h4X2J1dHRvbnNfYWRkKGRldl9idXR0b25zLCBBUlJBWV9TSVpFKGRldl9idXR0b25zKSlcbiBcbiBpbnQgX19pbml0IGJjbTQ3eHhfYnV0dG9uc19yZWdpc3Rlcih2b2lkKVxuIHtcbkBAIC01MjEsNTIgKzU5NSw1MiBAQCBpbnQgX19pbml0IGJjbTQ3eHhfYnV0dG9uc19yZWdpc3Rlcih2b2lkKVxuIFxuIFx0c3dpdGNoIChib2FyZCkge1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfUlROMTBVOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfcnRuMTB1KTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfcnRuMTB1KTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQVNVU19SVE4xMjpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3J0bjEyKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfcnRuMTIpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9BU1VTX1JUTjE2OlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfcnRuMTYpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c19ydG4xNik7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfUlRONjZVOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfcnRuNjZ1KTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfcnRuNjZ1KTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQVNVU19XTDMwMEc6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDMwMGcpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDMwMGcpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9BU1VTX1dMMzIwR0U6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDMyMGdlKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2wzMjBnZSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0wzMzBHRTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsMzMwZ2UpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDMzMGdlKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQVNVU19XTDUwMEc6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDUwMGcpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDUwMGcpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9BU1VTX1dMNTAwR0Q6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDUwMGdkKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBnZCk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0w1MDBHUFYxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBncHYxKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MDBncHYxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQVNVU19XTDUwMEdQVjI6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDUwMGdwdjIpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDUwMGdwdjIpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9BU1VTX1dMNTAwVzpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwdyk7XG4rXHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTAwdyk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0w1MjBHQzpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTIwZ2MpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDUyMGdjKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQVNVU19XTDUyMEdVOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w1MjBndSk7XG4rXHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsNTIwZ3UpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9BU1VTX1dMNzAwR0U6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bDcwMGdlKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2FzdXNfd2w3MDBnZSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0FTVVNfV0xIREQ6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYXN1c193bGhkZCk7XG4rXHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19hc3VzX3dsaGRkKTtcbiBcdFx0YnJlYWs7XG4gXG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQkVMS0lOX0Y3RDMzMDE6XG5AQCAtNTc0LDE5MyArNjQ4LDE5MyBAQCBpbnQgX19pbml0IGJjbTQ3eHhfYnV0dG9uc19yZWdpc3Rlcih2b2lkKVxuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0JFTEtJTl9GN0Q0MzAxOlxuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0JFTEtJTl9GN0Q0MzAyOlxuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0JFTEtJTl9GN0Q0NDAxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2JlbGtpbl9mN2Q0MzAxKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2JlbGtpbl9mN2Q0MzAxKTtcbiBcdFx0YnJlYWs7XG4gXG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQlVGRkFMT19XSFIyX0E1NEc1NDpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docjJfYTU0ZzU0KTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd2hyMl9hNTRnNTQpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9CVUZGQUxPX1dIUl9HMTI1OlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd2hyX2cxMjUpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYnVmZmFsb193aHJfZzEyNSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0JVRkZBTE9fV0hSX0c1NFM6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYnVmZmFsb193aHJfZzU0cyk7XG4rXHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docl9nNTRzKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQlVGRkFMT19XSFJfSFBfRzU0OlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2J1ZmZhbG9fd2hyX2hwX2c1NCk7XG4rXHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3docl9ocF9nNTQpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9CVUZGQUxPX1daUl9HMzAwTjpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3d6cl9nMzAwbik7XG4rXHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3d6cl9nMzAwbik7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0JVRkZBTE9fV1pSX1JTX0c1NDpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19idWZmYWxvX3d6cl9yc19nNTQpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYnVmZmFsb193enJfcnNfZzU0KTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfQlVGRkFMT19XWlJfUlNfRzU0SFA6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfYnVmZmFsb193enJfcnNfZzU0aHApO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfYnVmZmFsb193enJfcnNfZzU0aHApO1xuIFx0XHRicmVhaztcbiBcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9ERUxMX1RNMjMwMDpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19kZWxsX3RtMjMwMCk7XG4rXHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19kZWxsX3RtMjMwMCk7XG4gXHRcdGJyZWFrO1xuIFxuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0RMSU5LX0RJUjEzMDpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19kbGlua19kaXIxMzApO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfZGxpbmtfZGlyMTMwKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfRExJTktfRElSMzMwOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2RsaW5rX2RpcjMzMCk7XG4rXHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19kbGlua19kaXIzMzApO1xuIFx0XHRicmVhaztcbiBcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9IVUFXRUlfRTk3MDpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19odWF3ZWlfZTk3MCk7XG4rXHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19odWF3ZWlfZTk3MCk7XG4gXHRcdGJyZWFrO1xuIFxuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfRTEwMDBWMTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UxMDAwdjEpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMTAwMHYxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19FMTAwMFYyMTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UxMDAwdjIxKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTEwMDB2MjEpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX0UyMDAwVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMjAwMHYxKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTIwMDB2MSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfRTI1MDBWMzpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UyNTAwdjMpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMjUwMHYzKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19FMzAwMFYxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTMwMDB2MSk7XG4rXHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2UzMDAwdjEpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX0UzMjAwVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c19lMzIwMHYxKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfZTMyMDB2MSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfRTQyMDBWMTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX2U0MjAwdjEpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c19lNDIwMHYxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQxNTBOVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQxNTBudjEpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQxNTBudjEpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX1dSVDE1ME5WMTE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQxNTBudjExKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTUwbnYxMSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfV1JUMTYwTlYxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTYwbnYxKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MTYwbnYxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQxNjBOVjM6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQxNjBudjMpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQxNjBudjMpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX1dSVDMwME5fVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMDBuX3YxKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzAwbl92MSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfV1JUMzAwTlYxMTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDMwMG52MTEpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMDBudjExKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQzMTBOVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMTBudjEpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMTBudjEpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX1dSVDMxME5WMjpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDMxMG5fdjIpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQzMTBuX3YyKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQzMjBOX1YxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0MzIwbl92MSk7XG4rXHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydDMyMG5fdjEpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX1dSVDU0RzNHVjI6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQ1NGczZ3YyKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NTRnM2d2Mik7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfV1JUNTRHX1RZUEVfMDEwMTpcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX1dSVDU0R19UWVBFXzA0Njc6XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQ1NEdfVFlQRV8wNzA4OlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NTRnX2dlbmVyaWMpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQ1NGdfZ2VuZXJpYyk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xJTktTWVNfV1JUNjEwTlYxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NjEwbnYxKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2xpbmtzeXNfd3J0NjEwbnYxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTElOS1NZU19XUlQ2MTBOVjI6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQ2MTBudjIpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbGlua3N5c193cnQ2MTBudjIpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9MSU5LU1lTX1dSVFNMNTRHUzpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydHNsNTRncyk7XG4rXHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19saW5rc3lzX3dydHNsNTRncyk7XG4gXHRcdGJyZWFrO1xuIFxuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xVWFVMX0FCUl80NDAwX1YxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX2Ficl80NDAwX3YxKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX2Ficl80NDAwX3YxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTFVYVUxfWEFQXzMxMF9WMTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMzEwX3YxKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8zMTBfdjEpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9MVVhVTF9YQVBfMTIxMF9WMTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMTIxMF92MSk7XG4rXHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMTIxMF92MSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xVWFVMX1hBUF8xMjMwX1YxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8xMjMwX3YxKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3hhcF8xMjMwX3YxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTFVYVUxfWEFQXzEyNDBfVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfeGFwXzEyNDBfdjEpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfeGFwXzEyNDBfdjEpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9MVVhVTF9YQVBfMTUwMF9WMTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMTUwMF92MSk7XG4rXHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94YXBfMTUwMF92MSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xVWFVMX1hCUl80NDAwX1YxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3hicl80NDAwX3YxKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3hicl80NDAwX3YxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTFVYVUxfWFZXX1AzMF9WMTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19sdXh1bF94dndfcDMwX3YxKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3h2d19wMzBfdjEpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9MVVhVTF9YV1JfNjAwX1YxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3h3cl82MDBfdjEpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbHV4dWxfeHdyXzYwMF92MSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX0xVWFVMX1hXUl8xNzUwX1YxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3h3cl8xNzUwX3YxKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX2x1eHVsX3h3cl8xNzUwX3YxKTtcbiBcdFx0YnJlYWs7XG4gXG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTUlDUk9TT0ZUX01ONzAwOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX21pY3Jvc29mdF9ubTcwMCk7XG4rXHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19taWNyb3NvZnRfbm03MDApO1xuIFx0XHRicmVhaztcbiBcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9NT1RPUk9MQV9XRTgwMEc6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbW90b3JvbGFfd2U4MDBnKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX21vdG9yb2xhX3dlODAwZyk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX01PVE9ST0xBX1dSODUwR1A6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbW90b3JvbGFfd3I4NTBncCk7XG4rXHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19tb3Rvcm9sYV93cjg1MGdwKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTU9UT1JPTEFfV1I4NTBHVjJWMzpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19tb3Rvcm9sYV93cjg1MGd2MnYzKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX21vdG9yb2xhX3dyODUwZ3YydjMpO1xuIFx0XHRicmVhaztcbiBcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9ORVRHRUFSX1I2MjAwX1YxOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfcjYyMDBfdjEpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl9yNjIwMF92MSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX05FVEdFQVJfUjYzMDBfVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl9yNjMwMF92MSk7XG4rXHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3I2MzAwX3YxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9XTjI1MDBSUF9WMTpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duMjUwMHJwX3YxKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd24yNTAwcnBfdjEpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9ORVRHRUFSX1dORFIzNDAwVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bmRyMzQwMHYxKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjM0MDB2MSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX05FVEdFQVJfV05EUjM0MDBfVjM6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bmRyMzQwMF92Myk7XG4rXHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duZHIzNDAwX3YzKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9XTkRSMzcwMFYzOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjM3MDB2Myk7XG4rXHRcdGVyciA9IGJjbTQ3eHhfYWRkX2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3duZHIzNzAwdjMpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9ORVRHRUFSX1dORFI0NTAwVjE6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bmRyNDUwMHYxKTtcbitcdFx0ZXJyID0gYmNtNDd4eF9hZGRfYmRhdGEoYmNtNDd4eF9idXR0b25zX25ldGdlYXJfd25kcjQ1MDB2MSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCQ000N1hYX0JPQVJEX05FVEdFQVJfV05SMTAwMF9WMzpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3ducjEwMDBfdjMpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bnIxMDAwX3YzKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9XTlIzNTAwTDpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3ducjM1MDBsdjEpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bnIzNTAwbHYxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9XTlIzNTAwTF9WMjpcbi1cdFx0ZXJyID0gYmNtNDd4eF9jb3B5X2JkYXRhKGJjbTQ3eHhfYnV0dG9uc19uZXRnZWFyX3ducjM1MDBsdjIpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bnIzNTAwbHYyKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJDTTQ3WFhfQk9BUkRfTkVUR0VBUl9XTlI4MzRCVjI6XG4tXHRcdGVyciA9IGJjbTQ3eHhfY29weV9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bnI4MzRidjIpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfbmV0Z2Vhcl93bnI4MzRidjIpO1xuIFx0XHRicmVhaztcbiBcbiBcdGNhc2UgQkNNNDdYWF9CT0FSRF9TSU1QTEVURUNIX1NJTVBMRVNIQVJFOlxuLVx0XHRlcnIgPSBiY200N3h4X2NvcHlfYmRhdGEoYmNtNDd4eF9idXR0b25zX3NpbXBsZXRlY2hfc2ltcGxlc2hhcmUpO1xuK1x0XHRlcnIgPSBiY200N3h4X2FkZF9iZGF0YShiY200N3h4X2J1dHRvbnNfc2ltcGxldGVjaF9zaW1wbGVzaGFyZSk7XG4gXHRcdGJyZWFrO1xuIFxuIFx0ZGVmYXVsdDpcbkBAIC03NjksMTMgKzg0Myw3IEBAIGludCBfX2luaXQgYmNtNDd4eF9idXR0b25zX3JlZ2lzdGVyKHZvaWQpXG4gXHR9XG4gXG4gXHRpZiAoZXJyKVxuLVx0XHRyZXR1cm4gLUVOT01FTTtcbi1cbi1cdGVyciA9IHBsYXRmb3JtX2RldmljZV9yZWdpc3RlcihcdTAwMjZiY200N3h4X2J1dHRvbnNfZ3Bpb19rZXlzKTtcbi1cdGlmIChlcnIpIHtcbi1cdFx0cHJfZXJyKFwiRmFpbGVkIHRvIHJlZ2lzdGVyIHBsYXRmb3JtIGRldmljZTogJWRcXG5cIiwgZXJyKTtcbiBcdFx0cmV0dXJuIGVycjtcbi1cdH1cbiBcbiBcdHJldHVybiAwO1xuIH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYyBiL2RyaXZlcnMvYmNtYS9kcml2ZXJfZ3Bpby5jXG5pbmRleCA2NThjN2UyYWM4YmY2MS4uZWE0NTIyMmYyZmEwZmMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uY1xuKysrIGIvZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmNcbkBAIC0xOSw2ICsxOSwxMSBAQFxuIFxuICNkZWZpbmUgQkNNQV9HUElPX01BWF9QSU5TXHQzMlxuIFxuK2NvbnN0IHN0cnVjdCBzb2Z0d2FyZV9ub2RlIGJjbWFfZ3Bpb19zd25vZGUgPSB7XG4rXHQubmFtZSA9IFwiYmNtYS1ncGlvXCIsXG4rfTtcbitFWFBPUlRfU1lNQk9MX0dQTChiY21hX2dwaW9fc3dub2RlKTtcbitcbiBzdGF0aWMgaW50IGJjbWFfZ3Bpb19nZXRfdmFsdWUoc3RydWN0IGdwaW9fY2hpcCAqY2hpcCwgdW5zaWduZWQgZ3BpbylcbiB7XG4gXHRzdHJ1Y3QgYmNtYV9kcnZfY2MgKmNjID0gZ3Bpb2NoaXBfZ2V0X2RhdGEoY2hpcCk7XG5AQCAtMTkwLDcgKzE5NSwyMCBAQCBpbnQgYmNtYV9ncGlvX2luaXQoc3RydWN0IGJjbWFfZHJ2X2NjICpjYylcbiBcdGNoaXAtXHUwMDNlZGlyZWN0aW9uX2lucHV0XHQ9IGJjbWFfZ3Bpb19kaXJlY3Rpb25faW5wdXQ7XG4gXHRjaGlwLVx1MDAzZWRpcmVjdGlvbl9vdXRwdXRcdD0gYmNtYV9ncGlvX2RpcmVjdGlvbl9vdXRwdXQ7XG4gXHRjaGlwLVx1MDAzZXBhcmVudFx0XHQ9IGJ1cy1cdTAwM2VkZXY7XG4tXHRjaGlwLVx1MDAzZWZ3bm9kZVx0XHQ9IGRldl9md25vZGUoXHUwMDI2Y2MtXHUwMDNlY29yZS1cdTAwM2VkZXYpO1xuK1xuK1x0LypcbitcdCAqIFJlZ2lzdGVyIHNvZnR3YXJlIG5vZGUgb25seSBmb3IgdGhlIGhvc3QgU29DIGJ1cywgdW5sZXNzIHRoZXJlIGlzXG4rXHQgKiBhbHJlYWR5IGEgZmlybXdhcmUgbm9kZSBhc3NpZ25lZC4gVGhlcmUgaXMgb25seSBvbmUgU29DIGluc3RhbmNlXG4rXHQgKiBpbiB0aGUgc3lzdGVtLCBzbyB0aGVyZSBhcmUgbm8gY29uY2VybnMgd2l0aCByZWdpc3RyYXRpb24gY29uZmxpY3RzLlxuK1x0ICovXG4rXHRpZiAoYnVzLVx1MDAzZWhvc3R0eXBlID09IEJDTUFfSE9TVFRZUEVfU09DIFx1MDAyNlx1MDAyNiAhZGV2X2Z3bm9kZShcdTAwMjZjYy1cdTAwM2Vjb3JlLVx1MDAzZWRldikpIHtcbitcdFx0ZXJyID0gc29mdHdhcmVfbm9kZV9yZWdpc3RlcihcdTAwMjZiY21hX2dwaW9fc3dub2RlKTtcbitcdFx0aWYgKGVycilcbitcdFx0XHRyZXR1cm4gZXJyO1xuK1x0XHRjaGlwLVx1MDAzZWZ3bm9kZSA9IHNvZnR3YXJlX25vZGVfZndub2RlKFx1MDAyNmJjbWFfZ3Bpb19zd25vZGUpO1xuK1x0fSBlbHNlIHtcbitcdFx0Y2hpcC1cdTAwM2Vmd25vZGUgPSBkZXZfZndub2RlKFx1MDAyNmNjLVx1MDAzZWNvcmUtXHUwMDNlZGV2KTtcbitcdH1cbiBcbiBcdHN3aXRjaCAoYnVzLVx1MDAzZWNoaXBpbmZvLmlkKSB7XG4gXHRjYXNlIEJDTUFfQ0hJUF9JRF9CQ000NzA3OlxuQEAgLTIxOSwyMCArMjM3LDMzIEBAIGludCBiY21hX2dwaW9faW5pdChzdHJ1Y3QgYmNtYV9kcnZfY2MgKmNjKVxuIFxuIFx0ZXJyID0gYmNtYV9ncGlvX2lycV9pbml0KGNjKTtcbiBcdGlmIChlcnIpXG4tXHRcdHJldHVybiBlcnI7XG4rXHRcdGdvdG8gZXJyX3VucmVnaXN0ZXJfc3dub2RlO1xuIFxuIFx0ZXJyID0gZ3Bpb2NoaXBfYWRkX2RhdGEoY2hpcCwgY2MpO1xuLVx0aWYgKGVycikge1xuLVx0XHRiY21hX2dwaW9faXJxX2V4aXQoY2MpO1xuLVx0XHRyZXR1cm4gZXJyO1xuLVx0fVxuK1x0aWYgKGVycilcbitcdFx0Z290byBlcnJfaXJxX2V4aXQ7XG4gXG4gXHRyZXR1cm4gMDtcbitcbitlcnJfaXJxX2V4aXQ6XG4rXHRiY21hX2dwaW9faXJxX2V4aXQoY2MpO1xuK2Vycl91bnJlZ2lzdGVyX3N3bm9kZTpcbitcdGlmIChidXMtXHUwMDNlaG9zdHR5cGUgPT0gQkNNQV9IT1NUVFlQRV9TT0MgXHUwMDI2XHUwMDI2XG4rXHQgICAgY2hpcC1cdTAwM2Vmd25vZGUgXHUwMDI2XHUwMDI2IGlzX3NvZnR3YXJlX25vZGUoY2hpcC1cdTAwM2Vmd25vZGUpKSB7XG4rXHRcdHNvZnR3YXJlX25vZGVfdW5yZWdpc3RlcihcdTAwMjZiY21hX2dwaW9fc3dub2RlKTtcbitcdFx0Y2hpcC1cdTAwM2Vmd25vZGUgPSBOVUxMO1xuK1x0fVxuK1x0cmV0dXJuIGVycjtcbiB9XG4gXG4gaW50IGJjbWFfZ3Bpb191bnJlZ2lzdGVyKHN0cnVjdCBiY21hX2Rydl9jYyAqY2MpXG4ge1xuIFx0YmNtYV9ncGlvX2lycV9leGl0KGNjKTtcbiBcdGdwaW9jaGlwX3JlbW92ZShcdTAwMjZjYy1cdTAwM2VncGlvKTtcbitcdGlmIChjYy1cdTAwM2Vjb3JlLVx1MDAzZWJ1cy1cdTAwM2Vob3N0dHlwZSA9PSBCQ01BX0hPU1RUWVBFX1NPQyBcdTAwMjZcdTAwMjZcbitcdCAgICBjYy1cdTAwM2VncGlvLmZ3bm9kZSBcdTAwMjZcdTAwMjYgaXNfc29mdHdhcmVfbm9kZShjYy1cdTAwM2VncGlvLmZ3bm9kZSkpIHtcbitcdFx0c29mdHdhcmVfbm9kZV91bnJlZ2lzdGVyKFx1MDAyNmJjbWFfZ3Bpb19zd25vZGUpO1xuK1x0XHRjYy1cdTAwM2VncGlvLmZ3bm9kZSA9IE5VTEw7XG4rXHR9XG4gXHRyZXR1cm4gMDtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYyBiL2RyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmNcbmluZGV4IDkwNTY1N2M5MjViY2ViLi44NzkyMjQ3OTk0NmNiNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmNcbisrKyBiL2RyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmNcbkBAIC0xNSw4ICsxNSwxNCBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2ludGVycnVwdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaXJxZG9tYWluLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9leHBvcnQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zc2Ivc3NiLmhcdTAwM2VcbiBcbitjb25zdCBzdHJ1Y3Qgc29mdHdhcmVfbm9kZSBzc2JfZ3Bpb19zd25vZGUgPSB7XG4rXHQubmFtZSA9IFwic3NiLWdwaW9cIixcbit9O1xuK0VYUE9SVF9TWU1CT0xfR1BMKHNzYl9ncGlvX3N3bm9kZSk7XG4rXG4gXG4gLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICogU2hhcmVkXG5AQCAtMjMyLDYgKzIzOCw4IEBAIHN0YXRpYyBpbnQgc3NiX2dwaW9fY2hpcGNvX2luaXQoc3RydWN0IHNzYl9idXMgKmJ1cylcbiBcdGNoaXAtXHUwMDNldG9faXJxXHRcdD0gc3NiX2dwaW9fdG9faXJxO1xuICNlbmRpZlxuIFx0Y2hpcC1cdTAwM2VuZ3Bpb1x0XHQ9IDE2O1xuK1x0aWYgKGJ1cy1cdTAwM2VidXN0eXBlID09IFNTQl9CVVNUWVBFX1NTQilcbitcdFx0Y2hpcC1cdTAwM2Vmd25vZGVcdD0gc29mdHdhcmVfbm9kZV9md25vZGUoXHUwMDI2c3NiX2dwaW9fc3dub2RlKTtcbiBcdC8qIFRoZXJlIGlzIGp1c3Qgb25lIFNvQyBpbiBvbmUgZGV2aWNlIGFuZCBpdHMgR1BJTyBhZGRyZXNzZXMgc2hvdWxkIGJlXG4gXHQgKiBkZXRlcm1pbmlzdGljIHRvIGFkZHJlc3MgdGhlbSBtb3JlIGVhc2lseS4gVGhlIG90aGVyIGJ1c2VzIGNvdWxkIGdldFxuIFx0ICogYSByYW5kb20gYmFzZSBudW1iZXIuXG5AQCAtNDMzLDEwICs0NDEsMTIgQEAgc3RhdGljIGludCBzc2JfZ3Bpb19leHRpZl9pbml0KHN0cnVjdCBzc2JfYnVzICpidXMpXG4gXHQgKiBkZXRlcm1pbmlzdGljIHRvIGFkZHJlc3MgdGhlbSBtb3JlIGVhc2lseS4gVGhlIG90aGVyIGJ1c2VzIGNvdWxkIGdldFxuIFx0ICogYSByYW5kb20gYmFzZSBudW1iZXIuXG4gXHQgKi9cbi1cdGlmIChidXMtXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpXG4tXHRcdGNoaXAtXHUwMDNlYmFzZVx0XHQ9IDA7XG4tXHRlbHNlXG4tXHRcdGNoaXAtXHUwMDNlYmFzZVx0XHQ9IC0xO1xuK1x0aWYgKGJ1cy1cdTAwM2VidXN0eXBlID09IFNTQl9CVVNUWVBFX1NTQikge1xuK1x0XHRjaGlwLVx1MDAzZWJhc2VcdD0gMDtcbitcdFx0Y2hpcC1cdTAwM2Vmd25vZGVcdD0gc29mdHdhcmVfbm9kZV9md25vZGUoXHUwMDI2c3NiX2dwaW9fc3dub2RlKTtcbitcdH0gZWxzZSB7XG4rXHRcdGNoaXAtXHUwMDNlYmFzZVx0PSAtMTtcbitcdH1cbiBcbiBcdGVyciA9IHNzYl9ncGlvX2lycV9leHRpZl9kb21haW5faW5pdChidXMpO1xuIFx0aWYgKGVycilcbkBAIC00NjQsMTEgKzQ3NCwzMyBAQCBzdGF0aWMgaW50IHNzYl9ncGlvX2V4dGlmX2luaXQoc3RydWN0IHNzYl9idXMgKmJ1cylcbiBcbiBpbnQgc3NiX2dwaW9faW5pdChzdHJ1Y3Qgc3NiX2J1cyAqYnVzKVxuIHtcbitcdGludCBlcnIgPSAwO1xuK1xuK1x0LypcbitcdCAqIFJlZ2lzdGVyIHNvZnR3YXJlIG5vZGUgb25seSBmb3IgdGhlIGhvc3QgU29DIGJ1cy4gVGhlcmUgaXMgb25seVxuK1x0ICogb25lIFNvQyBpbnN0YW5jZSBpbiB0aGUgc3lzdGVtLCBzbyB0aGVyZSBhcmUgbm8gY29uY2VybnMgd2l0aFxuK1x0ICogcmVnaXN0cmF0aW9uIGNvbmZsaWN0cy5cbitcdCAqL1xuK1x0aWYgKGJ1cy1cdTAwM2VidXN0eXBlID09IFNTQl9CVVNUWVBFX1NTQikge1xuK1x0XHRlcnIgPSBzb2Z0d2FyZV9ub2RlX3JlZ2lzdGVyKFx1MDAyNnNzYl9ncGlvX3N3bm9kZSk7XG4rXHRcdGlmIChlcnIpXG4rXHRcdFx0cmV0dXJuIGVycjtcbitcdH1cbitcbiBcdGlmIChzc2JfY2hpcGNvX2F2YWlsYWJsZShcdTAwMjZidXMtXHUwMDNlY2hpcGNvKSlcbi1cdFx0cmV0dXJuIHNzYl9ncGlvX2NoaXBjb19pbml0KGJ1cyk7XG4rXHRcdGVyciA9IHNzYl9ncGlvX2NoaXBjb19pbml0KGJ1cyk7XG4gXHRlbHNlIGlmIChzc2JfZXh0aWZfYXZhaWxhYmxlKFx1MDAyNmJ1cy1cdTAwM2VleHRpZikpXG4tXHRcdHJldHVybiBzc2JfZ3Bpb19leHRpZl9pbml0KGJ1cyk7XG4tXHRyZXR1cm4gLTE7XG4rXHRcdGVyciA9IHNzYl9ncGlvX2V4dGlmX2luaXQoYnVzKTtcbitcdGVsc2VcbitcdFx0ZXJyID0gLUVOT0RFVjtcbitcbitcdGlmIChlcnIpIHtcbitcdFx0aWYgKGJ1cy1cdTAwM2VidXN0eXBlID09IFNTQl9CVVNUWVBFX1NTQilcbitcdFx0XHRzb2Z0d2FyZV9ub2RlX3VucmVnaXN0ZXIoXHUwMDI2c3NiX2dwaW9fc3dub2RlKTtcbitcdFx0cmV0dXJuIGVycjtcbitcdH1cbitcbitcdHJldHVybiAwO1xuIH1cbiBcbiBpbnQgc3NiX2dwaW9fdW5yZWdpc3RlcihzdHJ1Y3Qgc3NiX2J1cyAqYnVzKVxuQEAgLTQ3Niw2ICs1MDgsOCBAQCBpbnQgc3NiX2dwaW9fdW5yZWdpc3RlcihzdHJ1Y3Qgc3NiX2J1cyAqYnVzKVxuIFx0aWYgKHNzYl9jaGlwY29fYXZhaWxhYmxlKFx1MDAyNmJ1cy1cdTAwM2VjaGlwY28pIHx8XG4gXHQgICAgc3NiX2V4dGlmX2F2YWlsYWJsZShcdTAwMjZidXMtXHUwMDNlZXh0aWYpKSB7XG4gXHRcdGdwaW9jaGlwX3JlbW92ZShcdTAwMjZidXMtXHUwMDNlZ3Bpbyk7XG4rXHRcdGlmIChidXMtXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpXG4rXHRcdFx0c29mdHdhcmVfbm9kZV91bnJlZ2lzdGVyKFx1MDAyNnNzYl9ncGlvX3N3bm9kZSk7XG4gXHRcdHJldHVybiAwO1xuIFx0fVxuIFx0cmV0dXJuIC0xO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYmNtYS9iY21hLmggYi9pbmNsdWRlL2xpbnV4L2JjbWEvYmNtYS5oXG5pbmRleCBmMDJjYjM5MDkzNzVlMC4uMTdmYzUwMTkwMDE0ZTkgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2JjbWEvYmNtYS5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L2JjbWEvYmNtYS5oXG5AQCAtNDg2LDQgKzQ4Niw2IEBAIGV4dGVybiB1MzIgYmNtYV9jb3JlX2RtYV90cmFuc2xhdGlvbihzdHJ1Y3QgYmNtYV9kZXZpY2UgKmNvcmUpO1xuIFxuIGV4dGVybiB1bnNpZ25lZCBpbnQgYmNtYV9jb3JlX2lycShzdHJ1Y3QgYmNtYV9kZXZpY2UgKmNvcmUsIGludCBudW0pO1xuIFxuK2V4dGVybiBjb25zdCBzdHJ1Y3Qgc29mdHdhcmVfbm9kZSBiY21hX2dwaW9fc3dub2RlO1xuK1xuICNlbmRpZiAvKiBMSU5VWF9CQ01BX0hfICovXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zc2Ivc3NiLmggYi9pbmNsdWRlL2xpbnV4L3NzYi9zc2IuaFxuaW5kZXggN2ZlZTlhZmE5NDU4OGIuLjY3Y2I2NmY2ZjVlZDZkIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9zc2Ivc3NiLmhcbisrKyBiL2luY2x1ZGUvbGludXgvc3NiL3NzYi5oXG5AQCAtNjcxLDQgKzY3MSw2IEBAIGludCBzc2JfcGNpYmlvc19wbGF0X2Rldl9pbml0KHN0cnVjdCBwY2lfZGV2ICpkZXYpO1xuIGludCBzc2JfcGNpYmlvc19tYXBfaXJxKGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpkZXYsIHU4IHNsb3QsIHU4IHBpbik7XG4gI2VuZGlmIC8qIENPTkZJR19TU0JfRU1CRURERUQgKi9cbiBcbitleHRlcm4gY29uc3Qgc3RydWN0IHNvZnR3YXJlX25vZGUgc3NiX2dwaW9fc3dub2RlO1xuK1xuICNlbmRpZiAvKiBMSU5VWF9TU0JfSF8gKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAyOjU1OjExLjM2MzczOTk4M1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExODg0OTAzMjc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVucmVhY2hhYmxlIENvZGUgUGF0aHMgaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBzZXJpZXMgdGhhdCByZWZhY3RvcnMgdGhlIEJDTTQ3eHggYnV0dG9ucyBkcml2ZXIsIG1vdmluZyBpdCB0byB1c2Ugc29mdHdhcmUgbm9kZXMgaW5zdGVhZCBvZiBgZ3Bpb19rZXlzX3BsYXRmb3JtX2RhdGFgLiBUaGUgcGF0Y2ggdG91Y2hlcyBgYXJjaC9taXBzL2JjbTQ3eHgvYnV0dG9ucy5jYCwgYW5kIGFsc28gYGRyaXZlcnMvYmNtYS9kcml2ZXJfZ3Bpby5jYCwgYW5kIGBkcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jYCwgYWxvbmcgd2l0aCBhc3NvY2lhdGVkIGhlYWRlciBmaWxlcy4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpbnZvbHZlcyByZWdpc3RlcmluZyBgYmNtYV9ncGlvX3N3bm9kZWAgYW5kIGBzc2JfZ3Bpb19zd25vZGVgIHdpdGhpbiB0aGUgcmVzcGVjdGl2ZSBHUElPIGRyaXZlcnMuXG5cbk15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHJlYWNoYWJpbGl0eSwgcGFydGljdWxhcmx5IGluIG91ciB0eXBpY2FsIHZpcnR1YWxpemVkIGZ1enppbmcgc2V0dXBzLiBUaGUgQkNNNDd4eCBpcyBNSVBTLCBhbmQgd2hpbGUgUUVNVSAqY2FuKiBydW4gTUlQUywgb3VyIHByaW1hcnkgZm9jdXMgaW4gc3l6a2FsbGVyIGlzIHVzdWFsbHkgb24geDg2XzY0LCBhcm02NCwgcmlzY3Y2NCwgYW5kIHMzOTB4LiBXZSBkb24ndCB0eXBpY2FsbHkgdGFyZ2V0IEJDTTQ3eHggc3BlY2lmaWNhbGx5LiBUaGUgaW5zdHJ1Y3Rpb25zIG1lbnRpb24gdGhhdCB3ZSBzaG91bGQgYmUgY29uY2VybmVkIGFib3V0IGNvZGUgdGhhdCdzIGltcG9zc2libGUgdG8gaGl0IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cblxuU28sIHRoZSBrZXkgcXVlc3Rpb25zIGFyZTogYXJlIHRoZXNlIEJDTUEgYW5kIFNTQiBidXMgcGF0aHMgcmVhY2hhYmxlIGluIG91ciBzdGFuZGFyZCB0ZXN0IHNldHVwcz8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhlc2UgYGJjbWFfZ3Bpb19zd25vZGVgIGFuZCBgc3NiX2dwaW9fc3dub2RlYCByZWdpc3RyYXRpb25zIGFjdHVhbGx5IGhhcHBlbi4gSSBuZWVkIHRvIHRyYWNlIHRoaXMuXG5cbmBiY200N3h4X2J1dHRvbnNfYWRkYCBpcyB0aGUga2V5LCBhbmQgaXQncyBpbiBgYXJjaC9taXBzL2JjbTQ3eHgvYnV0dG9ucy5jYCB3aGljaCBpcyBndWFyZGVkIGJ5IGBDT05GSUdfQkNNNDdYWGAuIFRoYXQgY29uZmlybXMgaXQncyBNSVBTIEJDTTQ3eHgtc3BlY2lmaWMuIFRoaXMgaXMgYSB2ZXJ5IHRhcmdldGVkIGFyY2hpdGVjdHVyZS5cblxuTGV0J3MgbG9vayBhdCBgZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmNgIGFuZCBgZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uY2AuIFRoZXkncmUgZ3VhcmRlZCBieSBgQ09ORklHX0JDTUFfRFJJVkVSX0dQSU9gIGFuZCBgQ09ORklHX1NTQl9EUklWRVJfR1BJT2AuIEJ1dCwgdW5kZXIgd2hhdCAqY29uZGl0aW9ucyogYXJlIGBiY21hX2dwaW9fc3dub2RlYCBhbmQgYHNzYl9ncGlvX3N3bm9kZWAgYWN0dWFsbHkgcmVnaXN0ZXJlZD9cblxuRGlnZ2luZyBpbnRvIGBkcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uY2AsIGBiY21hX2dwaW9faW5pdGAgaXMgY2FsbGVkIGZyb20gYGJjbWFfY29yZV9ncGlvX2luaXRgLiBMb29raW5nIGF0IHRoaXMsIHRoZSBzb2Z0d2FyZSBub2RlIHJlZ2lzdHJhdGlvbiBvbmx5IGhhcHBlbnMgd2hlbiBgYnVzLVx1MDAzZWhvc3R0eXBlID09IEJDTUFfSE9TVFRZUEVfU09DYCBhbmQgd2UgYXJlIG5vdCB1c2luZyBkZXZpY2UgZmlybXdhcmUgbm9kZSAobm90IHN1cHBvcnRlZCBmb3IgQkNNNDd4eCkuIGBCQ01BX0hPU1RUWVBFX1NPQ2AgaXMgKnNwZWNpZmljYWxseSogZm9yIFNvQyBjb25maWd1cmF0aW9ucyBsaWtlIHRoZSBCQ000N3h4LiBGb3IgUENJIGRldmljZXMsIHRoZSBgaG9zdHR5cGVgIGlzIGBCQ01BX0hPU1RUWVBFX1BDSWAuIFRoaXMgaXMgcmVhbGx5IHRhcmdldGVkIGF0IHRoZSBTb0MuXG5cblNpbWlsYXJseSwgaW4gYGRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmNgLCB0aGUgc29mdHdhcmUgbm9kZSByZWdpc3RyYXRpb24gb2NjdXJzIG9ubHkgaWYgYGJ1cy1cdTAwM2VidXN0eXBlID09IFNTQl9CVVNUWVBFX1NTQmAsIHdoaWNoIGlzIGFsc28gU29DIHNwZWNpZmljLiBQQ0kgdXNlcyBgU1NCX0JVU1RZUEVfUENJYC5cblxuVGhlcmVmb3JlLCB0aGlzIG5ldyBjb2RlIC0gdGhlIHNvZnR3YXJlIG5vZGUgcmVnaXN0cmF0aW9uIC0gaXMgb25seSBleGVjdXRlZCB3aGVuIHRoZSBkcml2ZXIgaXMgcnVubmluZyBvbiBhbiBTb0MsIGkuZS4sIE1JUFMgQkNNNDd4eC5cblxuU2luY2Ugd2UgZG9uJ3QgZnV6eiBNSVBTIEJDTTQ3eHggaW4gb3VyIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgYW5kIGV2ZW4gKmlmKiB3ZSBkaWQsIHRoZSBlbXVsYXRpb24gb2YgdGhlICpzcGVjaWZpYyogU29DIHdvdWxkIGJlIHJlcXVpcmVkLCB3aGljaCBzeXprYWxsZXIgZG9lc24ndCBzdXBwb3J0IGZvciBCQ000N3h4LCBpdCdzIHByZXR0eSBjbGVhciB0aGF0IHRoZXNlIG5ldyBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBpbiBvdXIgY3VycmVudCBmdXp6aW5nIHNldHVwLiBJIHRoaW5rIEknbSBnb2luZyB0byBkb3VibGUgY2hlY2sgdGhlIHVzZSBvZiBgQkNNQV9IT1NUVFlQRV9TT0NgIHRvIGJlIGNlcnRhaW4uIEJ1dCBJIHRoaW5rIHRoaXMgaXMgcHJldHR5IHNvbGlkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDkzNSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkzMSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAyOjU1OjIzLjI0ODY0NDk0MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzkzMDIwMjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkJDTUFfSE9TVFRZUEVfU09DXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmNtYS9jb3JlLmM9MTQwPXUzMiBiY21hX2NvcmVfZG1hX3RyYW5zbGF0aW9uKHN0cnVjdCBiY21hX2RldmljZSAqY29yZSlcXG4tLVxcbmRyaXZlcnMvYmNtYS9jb3JlLmMtMTQyLVxcdHN3aXRjaCAoY29yZS1cXHUwMDNlYnVzLVxcdTAwM2Vob3N0dHlwZSkge1xcbmRyaXZlcnMvYmNtYS9jb3JlLmM6MTQzOlxcdGNhc2UgQkNNQV9IT1NUVFlQRV9TT0M6XFxuZHJpdmVycy9iY21hL2NvcmUuYy0xNDQtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2NoaXBjb21tb24uYz0xNjk9dm9pZCBiY21hX2NvcmVfY2hpcGNvbW1vbl9lYXJseV9pbml0KHN0cnVjdCBiY21hX2Rydl9jYyAqY2MpXFxuLS1cXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2NoaXBjb21tb24uYy0xODYtXFxuZHJpdmVycy9iY21hL2RyaXZlcl9jaGlwY29tbW9uLmM6MTg3OlxcdGlmIChidXMtXFx1MDAzZWhvc3R0eXBlID09IEJDTUFfSE9TVFRZUEVfU09DKVxcbmRyaXZlcnMvYmNtYS9kcml2ZXJfY2hpcGNvbW1vbi5jLTE4OC1cXHRcXHRiY21hX2NvcmVfY2hpcGNvbW1vbl9mbGFzaF9kZXRlY3QoY2MpO1xcbi0tXFxuZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmM9MTM1PXN0YXRpYyBpbnQgYmNtYV9ncGlvX2lycV9pbml0KHN0cnVjdCBiY21hX2Rydl9jYyAqY2MpXFxuLS1cXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYy0xNDAtXFxuZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmM6MTQxOlxcdGlmIChjYy1cXHUwMDNlY29yZS1cXHUwMDNlYnVzLVxcdTAwM2Vob3N0dHlwZSAhPSBCQ01BX0hPU1RUWVBFX1NPQylcXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYy0xNDItXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYz0xNjQ9c3RhdGljIHZvaWQgYmNtYV9ncGlvX2lycV9leGl0KHN0cnVjdCBiY21hX2Rydl9jYyAqY2MpXFxuZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmMtMTY1LXtcXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYzoxNjY6XFx0aWYgKGNjLVxcdTAwM2Vjb3JlLVxcdTAwM2VidXMtXFx1MDAzZWhvc3R0eXBlICE9IEJDTUFfSE9TVFRZUEVfU09DKVxcbmRyaXZlcnMvYmNtYS9kcml2ZXJfZ3Bpby5jLTE2Ny1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYz0xODM9aW50IGJjbWFfZ3Bpb19pbml0KHN0cnVjdCBiY21hX2Rydl9jYyAqY2MpXFxuLS1cXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYy0yMDMtXFx0ICovXFxuZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmM6MjA0OlxcdGlmIChidXMtXFx1MDAzZWhvc3R0eXBlID09IEJDTUFfSE9TVFRZUEVfU09DIFxcdTAwMjZcXHUwMDI2ICFkZXZfZndub2RlKFxcdTAwMjZjYy1cXHUwMDNlY29yZS1cXHUwMDNlZGV2KSkge1xcbmRyaXZlcnMvYmNtYS9kcml2ZXJfZ3Bpby5jLTIwNS1cXHRcXHRlcnIgPSBzb2Z0d2FyZV9ub2RlX3JlZ2lzdGVyKFxcdTAwMjZiY21hX2dwaW9fc3dub2RlKTtcXG4tLVxcbmRyaXZlcnMvYmNtYS9kcml2ZXJfZ3Bpby5jLTIzMi1cXHRpZiAoSVNfQlVJTFRJTihDT05GSUdfQkNNNDdYWCkgfHxcXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYzoyMzM6XFx0ICAgIGNjLVxcdTAwM2Vjb3JlLVxcdTAwM2VidXMtXFx1MDAzZWhvc3R0eXBlID09IEJDTUFfSE9TVFRZUEVfU09DKVxcbmRyaXZlcnMvYmNtYS9kcml2ZXJfZ3Bpby5jLTIzNC1cXHRcXHRjaGlwLVxcdTAwM2ViYXNlXFx0XFx0PSBidXMtXFx1MDAzZW51bSAqIEJDTUFfR1BJT19NQVhfUElOUztcXG4tLVxcbmRyaXZlcnMvYmNtYS9kcml2ZXJfZ3Bpby5jLTI1MC1lcnJfdW5yZWdpc3Rlcl9zd25vZGU6XFxuZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmM6MjUxOlxcdGlmIChidXMtXFx1MDAzZWhvc3R0eXBlID09IEJDTUFfSE9TVFRZUEVfU09DIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmMtMjUyLVxcdCAgICBjaGlwLVxcdTAwM2Vmd25vZGUgXFx1MDAyNlxcdTAwMjYgaXNfc29mdHdhcmVfbm9kZShjaGlwLVxcdTAwM2Vmd25vZGUpKSB7XFxuLS1cXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYz0yNTk9aW50IGJjbWFfZ3Bpb191bnJlZ2lzdGVyKHN0cnVjdCBiY21hX2Rydl9jYyAqY2MpXFxuLS1cXG5kcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uYy0yNjItXFx0Z3Bpb2NoaXBfcmVtb3ZlKFxcdTAwMjZjYy1cXHUwMDNlZ3Bpbyk7XFxuZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmM6MjYzOlxcdGlmIChjYy1cXHUwMDNlY29yZS1cXHUwMDNlYnVzLVxcdTAwM2Vob3N0dHlwZSA9PSBCQ01BX0hPU1RUWVBFX1NPQyBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvYmNtYS9kcml2ZXJfZ3Bpby5jLTI2NC1cXHQgICAgY2MtXFx1MDAzZWdwaW8uZndub2RlIFxcdTAwMjZcXHUwMDI2IGlzX3NvZnR3YXJlX25vZGUoY2MtXFx1MDAzZWdwaW8uZndub2RlKSkge1xcbi0tXFxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmM9MTY4PWludCBfX2luaXQgYmNtYV9ob3N0X3NvY19yZWdpc3RlcihzdHJ1Y3QgYmNtYV9zb2MgKnNvYylcXG4tLVxcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jLTE3OS1cXHQvKiBIb3N0IHNwZWNpZmljICovXFxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmM6MTgwOlxcdGJ1cy1cXHUwMDNlaG9zdHR5cGUgPSBCQ01BX0hPU1RUWVBFX1NPQztcXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYy0xODEtXFx0YnVzLVxcdTAwM2VvcHMgPSBcXHUwMDI2YmNtYV9ob3N0X3NvY19vcHM7XFxuLS1cXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYz0yMDM9c3RhdGljIGludCBiY21hX2hvc3Rfc29jX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYy0yMjItXFx0LyogSG9zdCBzcGVjaWZpYyAqL1xcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jOjIyMzpcXHRidXMtXFx1MDAzZWhvc3R0eXBlID0gQkNNQV9IT1NUVFlQRV9TT0M7XFxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmMtMjI0LVxcdGJ1cy1cXHUwMDNlb3BzID0gXFx1MDAyNmJjbWFfaG9zdF9zb2Nfb3BzO1xcbi0tXFxuZHJpdmVycy9iY21hL21haW4uYz0yMTQ9dW5zaWduZWQgaW50IGJjbWFfY29yZV9pcnEoc3RydWN0IGJjbWFfZGV2aWNlICpjb3JlLCBpbnQgbnVtKVxcbi0tXFxuZHJpdmVycy9iY21hL21haW4uYy0yMjEtXFx0XFx0cmV0dXJuIGJ1cy1cXHUwMDNlaG9zdF9wY2ktXFx1MDAzZWlycTtcXG5kcml2ZXJzL2JjbWEvbWFpbi5jOjIyMjpcXHRjYXNlIEJDTUFfSE9TVFRZUEVfU09DOlxcbmRyaXZlcnMvYmNtYS9tYWluLmMtMjIzLVxcdFxcdGlmIChidXMtXFx1MDAzZWRydl9taXBzLmNvcmUgXFx1MDAyNlxcdTAwMjYgbnVtID09IDApIHtcXG4tLVxcbmRyaXZlcnMvYmNtYS9tYWluLmM9MjM4PXZvaWQgYmNtYV9wcmVwYXJlX2NvcmUoc3RydWN0IGJjbWFfYnVzICpidXMsIHN0cnVjdCBiY21hX2RldmljZSAqY29yZSlcXG4tLVxcbmRyaXZlcnMvYmNtYS9tYWluLmMtMjUyLVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvYmNtYS9tYWluLmM6MjUzOlxcdGNhc2UgQkNNQV9IT1NUVFlQRV9TT0M6XFxuZHJpdmVycy9iY21hL21haW4uYy0yNTQtXFx0XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX09GKSBcXHUwMDI2XFx1MDAyNiBidXMtXFx1MDAzZWRldikge1xcbi0tXFxuZHJpdmVycy9iY21hL21haW4uYz0yOTE9c3RhdGljIGludCBiY21hX3JlZ2lzdGVyX2RldmljZXMoc3RydWN0IGJjbWFfYnVzICpidXMpXFxuLS1cXG5kcml2ZXJzL2JjbWEvbWFpbi5jLTM1OC1cXG5kcml2ZXJzL2JjbWEvbWFpbi5jOjM1OTpcXHRpZiAoYnVzLVxcdTAwM2Vob3N0dHlwZSA9PSBCQ01BX0hPU1RUWVBFX1NPQykge1xcbmRyaXZlcnMvYmNtYS9tYWluLmMtMzYwLVxcdFxcdGVyciA9IGJjbWFfY2hpcGNvX3dhdGNoZG9nX3JlZ2lzdGVyKFxcdTAwMjZidXMtXFx1MDAzZWRydl9jYyk7XFxuLS1cXG5kcml2ZXJzL2JjbWEvbWFpbi5jPTM2OD12b2lkIGJjbWFfdW5yZWdpc3Rlcl9jb3JlcyhzdHJ1Y3QgYmNtYV9idXMgKmJ1cylcXG4tLVxcbmRyaXZlcnMvYmNtYS9tYWluLmMtMzc3LVxcdH1cXG5kcml2ZXJzL2JjbWEvbWFpbi5jOjM3ODpcXHRpZiAoYnVzLVxcdTAwM2Vob3N0dHlwZSA9PSBCQ01BX0hPU1RUWVBFX1NPQylcXG5kcml2ZXJzL2JjbWEvbWFpbi5jLTM3OS1cXHRcXHRwbGF0Zm9ybV9kZXZpY2VfdW5yZWdpc3RlcihidXMtXFx1MDAzZWRydl9jYy53YXRjaGRvZyk7XFxuLS1cXG5kcml2ZXJzL2JjbWEvc2Nhbi5jPTI3MT1zdGF0aWMgaW50IGJjbWFfZ2V0X25leHRfY29yZShzdHJ1Y3QgYmNtYV9idXMgKmJ1cywgdTMyIF9faW9tZW0gKiplcm9tcHRyLFxcbi0tXFxuZHJpdmVycy9iY21hL3NjYW4uYy00MjAtXFx0fVxcbmRyaXZlcnMvYmNtYS9zY2FuLmM6NDIxOlxcdGlmIChidXMtXFx1MDAzZWhvc3R0eXBlID09IEJDTUFfSE9TVFRZUEVfU09DKSB7XFxuZHJpdmVycy9iY21hL3NjYW4uYy00MjItXFx0XFx0Y29yZS1cXHUwMDNlaW9fYWRkciA9IGlvcmVtYXAoY29yZS1cXHUwMDNlYWRkciwgQkNNQV9DT1JFX1NJWkUpO1xcbi0tXFxuZHJpdmVycy9iY21hL3NjYW4uYz00NTY9aW50IGJjbWFfYnVzX3NjYW4oc3RydWN0IGJjbWFfYnVzICpidXMpXFxuLS1cXG5kcml2ZXJzL2JjbWEvc2Nhbi5jLTQ2Ny1cXHRlcm9tYmFzZSA9IGJjbWFfc2Nhbl9yZWFkMzIoYnVzLCBCQ01BX0NDX0VST00pO1xcbmRyaXZlcnMvYmNtYS9zY2FuLmM6NDY4OlxcdGlmIChidXMtXFx1MDAzZWhvc3R0eXBlID09IEJDTUFfSE9TVFRZUEVfU09DKSB7XFxuZHJpdmVycy9iY21hL3NjYW4uYy00NjktXFx0XFx0ZXJvbXB0ciA9IGlvcmVtYXAoZXJvbWJhc2UsIEJDTUFfQ09SRV9TSVpFKTtcXG4tLVxcbmRyaXZlcnMvYmNtYS9zY2FuLmMtNTE5LW91dDpcXG5kcml2ZXJzL2JjbWEvc2Nhbi5jOjUyMDpcXHRpZiAoYnVzLVxcdTAwM2Vob3N0dHlwZSA9PSBCQ01BX0hPU1RUWVBFX1NPQylcXG5kcml2ZXJzL2JjbWEvc2Nhbi5jLTUyMS1cXHRcXHRpb3VubWFwKGVyb21wdHIpO1xcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9icm9hZGNvbS9iY200N3h4X3Nwcm9tLmM9NjUwPXN0YXRpYyBpbnQgYmNtNDd4eF9nZXRfc3Byb21fYmNtYShzdHJ1Y3QgYmNtYV9idXMgKmJ1cywgc3RydWN0IHNzYl9zcHJvbSAqb3V0KVxcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9icm9hZGNvbS9iY200N3h4X3Nwcm9tLmMtNjcyLVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vYmNtNDd4eF9zcHJvbS5jOjY3MzpcXHRjYXNlIEJDTUFfSE9TVFRZUEVfU09DOlxcbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vYmNtNDd4eF9zcHJvbS5jLTY3NC1cXHRcXHRtZW1zZXQob3V0LCAwLCBzaXplb2Yoc3RydWN0IHNzYl9zcHJvbSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYz01NTg2PWJvb2wgYnJjbXNfY19jaGlwbWF0Y2goc3RydWN0IGJjbWFfZGV2aWNlICpjb3JlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYy01NTkwLVxcdFxcdHJldHVybiBicmNtc19jX2NoaXBtYXRjaF9wY2koY29yZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYzo1NTkxOlxcdGNhc2UgQkNNQV9IT1NUVFlQRV9TT0M6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYy01NTkyLVxcdFxcdHJldHVybiBicmNtc19jX2NoaXBtYXRjaF9zb2MoY29yZSk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JjbWEvYmNtYS5oPTIxPWVudW0gYmNtYV9ob3N0dHlwZSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JjbWEvYmNtYS5oLTIzLVxcdEJDTUFfSE9TVFRZUEVfU0RJTyxcXG5pbmNsdWRlL2xpbnV4L2JjbWEvYmNtYS5oOjI0OlxcdEJDTUFfSE9TVFRZUEVfU09DLFxcbmluY2x1ZGUvbGludXgvYmNtYS9iY21hLmgtMjUtfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDI6NTU6MjUuMDQxNjcwOTQ2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE1OTUxMDkxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIEJDTUEgSG9zdCBUeXBlIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyBgQkNNQV9IT1NUVFlQRV9TT0NgIGlzIGRlZmluZWQgd2l0aGluIGBkcml2ZXJzL2JjbWEvaG9zdF9zb2MuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkNhbiB0aGlzIHBhcnRpY3VsYXIgc2V0dGluZywgb3IgdGhlIGNvZGUgcGF0aCB0aGF0IGxlYWRzIHRvIGl0LCBiZSByZWFjaGVkIHdoZW4gd2UncmUgcnVubmluZyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50P1wiIEl0J3MgYSBrZXkgcXVlc3Rpb24sIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyBsaWtlIEJDTUEuIEknbGwgbmVlZCB0byBkaXZlIGludG8gYGRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jYCBkaXJlY3RseS4gTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGNvZGUgaW4gdGhhdCBmaWxlLCBmb2N1c2luZyBvbiBob3cgdGhlIGBCQ01BX0hPU1RUWVBFX1NPQ2AgZmxhZyBpcyBzZXQgYW5kIHVuZGVyIHdoYXQgY29uZGl0aW9ucy4gU3BlY2lmaWNhbGx5LCBJJ2xsIGJlIGxvb2tpbmcgZm9yIGFueSBpbmRpY2F0aW9ucyBvciBjaGVja3MgdGhhdCBtaWdodCBpbmZsdWVuY2Ugd2hldGhlciB0aGUgU09DLXNwZWNpZmljIGNvZGUgaXMgYWN0aXZlIHdoZW4gcnVubmluZyBvbiBhIHZpcnR1YWwgaG9zdC4gVGhpcyB3aWxsIHJlcXVpcmUgc29tZSBjYXJlZnVsIGFuYWx5c2lzIG9mIHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiwgYW55IGhhcmR3YXJlIGRldGVjdGlvbiByb3V0aW5lcywgYW5kIGFueSBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgdW5kZXJseWluZyBoeXBlcnZpc29yLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTExOCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAyOjU1OjI4LjIwMTE4MzYzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MjM3NTMxNDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYmNtYV9ob3N0X3NvY19yZWdpc3RlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL21pcHMvYmNtNDd4eC9zZXR1cC5jPTE0MD1zdGF0aWMgdm9pZCBfX2luaXQgYmNtNDd4eF9yZWdpc3Rlcl9iY21hKHZvaWQpXFxuLS1cXG5hcmNoL21pcHMvYmNtNDd4eC9zZXR1cC5jLTE0My1cXG5hcmNoL21pcHMvYmNtNDd4eC9zZXR1cC5jOjE0NDpcXHRlcnIgPSBiY21hX2hvc3Rfc29jX3JlZ2lzdGVyKFxcdTAwMjZiY200N3h4X2J1cy5iY21hKTtcXG5hcmNoL21pcHMvYmNtNDd4eC9zZXR1cC5jLTE0NS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9iY21hL2JjbWFfcHJpdmF0ZS5oPTEwND1leHRlcm4gdm9pZCBfX2V4aXQgYmNtYV9ob3N0X3BjaV9leGl0KHZvaWQpO1xcbi0tXFxuZHJpdmVycy9iY21hL2JjbWFfcHJpdmF0ZS5oLTEwOC0jaWYgZGVmaW5lZChDT05GSUdfQkNNQV9IT1NUX1NPQykgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfT0YpXFxuZHJpdmVycy9iY21hL2JjbWFfcHJpdmF0ZS5oOjEwOTpleHRlcm4gaW50IF9faW5pdCBiY21hX2hvc3Rfc29jX3JlZ2lzdGVyX2RyaXZlcih2b2lkKTtcXG5kcml2ZXJzL2JjbWEvYmNtYV9wcml2YXRlLmgtMTEwLWV4dGVybiB2b2lkIF9fZXhpdCBiY21hX2hvc3Rfc29jX3VucmVnaXN0ZXJfZHJpdmVyKHZvaWQpO1xcbmRyaXZlcnMvYmNtYS9iY21hX3ByaXZhdGUuaC0xMTEtI2Vsc2VcXG5kcml2ZXJzL2JjbWEvYmNtYV9wcml2YXRlLmg6MTEyOnN0YXRpYyBpbmxpbmUgaW50IF9faW5pdCBiY21hX2hvc3Rfc29jX3JlZ2lzdGVyX2RyaXZlcih2b2lkKVxcbmRyaXZlcnMvYmNtYS9iY21hX3ByaXZhdGUuaC0xMTMte1xcbi0tXFxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmM9MTUzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtYV9ob3N0X29wcyBiY21hX2hvc3Rfc29jX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jLTE2Ny1cXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYzoxNjg6aW50IF9faW5pdCBiY21hX2hvc3Rfc29jX3JlZ2lzdGVyKHN0cnVjdCBiY21hX3NvYyAqc29jKVxcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jLTE2OS17XFxuLS1cXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYz0yNTg9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYmNtYV9ob3N0X3NvY19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYy0yNjYtXFxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmM6MjY3OmludCBfX2luaXQgYmNtYV9ob3N0X3NvY19yZWdpc3Rlcl9kcml2ZXIodm9pZClcXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYy0yNjgte1xcbi0tXFxuZHJpdmVycy9iY21hL21haW4uYz02NzI9c3RhdGljIGludCBfX2luaXQgYmNtYV9tb2Rpbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL2JjbWEvbWFpbi5jLTY3OS1cXG5kcml2ZXJzL2JjbWEvbWFpbi5jOjY4MDpcXHRlcnIgPSBiY21hX2hvc3Rfc29jX3JlZ2lzdGVyX2RyaXZlcigpO1xcbmRyaXZlcnMvYmNtYS9tYWluLmMtNjgxLVxcdGlmIChlcnIpIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvYmNtYS9iY21hX3NvYy5oPTc9c3RydWN0IGJjbWFfc29jIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvYmNtYS9iY21hX3NvYy5oLTExLVxcbmluY2x1ZGUvbGludXgvYmNtYS9iY21hX3NvYy5oOjEyOmludCBfX2luaXQgYmNtYV9ob3N0X3NvY19yZWdpc3RlcihzdHJ1Y3QgYmNtYV9zb2MgKnNvYyk7XFxuaW5jbHVkZS9saW51eC9iY21hL2JjbWFfc29jLmgtMTMtaW50IF9faW5pdCBiY21hX2hvc3Rfc29jX2luaXQoc3RydWN0IGJjbWFfc29jICpzb2MpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMjo1NTozMC4wMjQ5NDcwMDRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzIzODA1NzQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUgd2hhdCdzIGdvaW5nIG9uIGhlcmUuXG5cbioqRGVjb25zdHJ1Y3RpbmcgdGhlIEJDTUEgSG9zdC9Tb0MgRHJpdmVyIFJlZ2lzdHJhdGlvbioqXG5cblJpZ2h0LCBzbyBgYmNtYV9ob3N0X3NvY19yZWdpc3Rlcl9kcml2ZXJgIGlzIGdldHRpbmcgY2FsbGVkIGZyb20gYGJjbWFfbW9kaW5pdGAuIFRoYXQgbWFrZXMgc2Vuc2UsIGJ1dCBpdCBhbHNvIG1lYW5zIHRoYXQgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gaGFzIHRvIGluY2x1ZGUgYm90aCBgQ09ORklHX0JDTUFfSE9TVF9TT0NgIGFuZCBgQ09ORklHX09GYC4gSSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQuIEl0J3MgYSBwcmV0dHkgc3RhbmRhcmQgcGF0dGVybiBmb3IgbW9kdWxlIGluaXRpYWxpemF0aW9uLCBvYnZpb3VzbHkgdHJpZ2dlcmVkIHdoZW4gdGhlIGRyaXZlciBpcyBsb2FkZWQgb3IgYXQgc3lzdGVtIHN0YXJ0dXAuIE5vdywgdGhlIHJlYWwgcXVlc3Rpb24gaXMsICp3aGF0KiBpcyBgYmNtYV9ob3N0X3NvY19yZWdpc3Rlcl9kcml2ZXJgIGFjdHVhbGx5ICpkb2luZyo/IEkgbmVlZCB0byBkaWcgaW50byBpdHMgaW1wbGVtZW50YXRpb24uIFByZXN1bWFibHksIHRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgZGV2aWNlIGRyaXZlciBnZXRzIGF0dGFjaGVkIHRvIHRoZSBidXMgYW5kIHRoZSBib2FyZC1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiBiZWdpbnMgaWYgaXQncyBiYXNlZCBvbiBhbiBTb0MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MTY1LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDI6NTU6MzMuNzQ4NzU0ODZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk5NTMwMjk5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJiY21hX2hvc3Rfc29jX3JlZ2lzdGVyX2RyaXZlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2JjbWEvYmNtYV9wcml2YXRlLmg9MTA0PWV4dGVybiB2b2lkIF9fZXhpdCBiY21hX2hvc3RfcGNpX2V4aXQodm9pZCk7XFxuLS1cXG5kcml2ZXJzL2JjbWEvYmNtYV9wcml2YXRlLmgtMTA4LSNpZiBkZWZpbmVkKENPTkZJR19CQ01BX0hPU1RfU09DKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19PRilcXG5kcml2ZXJzL2JjbWEvYmNtYV9wcml2YXRlLmg6MTA5OmV4dGVybiBpbnQgX19pbml0IGJjbWFfaG9zdF9zb2NfcmVnaXN0ZXJfZHJpdmVyKHZvaWQpO1xcbmRyaXZlcnMvYmNtYS9iY21hX3ByaXZhdGUuaC0xMTAtZXh0ZXJuIHZvaWQgX19leGl0IGJjbWFfaG9zdF9zb2NfdW5yZWdpc3Rlcl9kcml2ZXIodm9pZCk7XFxuZHJpdmVycy9iY21hL2JjbWFfcHJpdmF0ZS5oLTExMS0jZWxzZVxcbmRyaXZlcnMvYmNtYS9iY21hX3ByaXZhdGUuaDoxMTI6c3RhdGljIGlubGluZSBpbnQgX19pbml0IGJjbWFfaG9zdF9zb2NfcmVnaXN0ZXJfZHJpdmVyKHZvaWQpXFxuZHJpdmVycy9iY21hL2JjbWFfcHJpdmF0ZS5oLTExMy17XFxuLS1cXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYz0yNTg9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYmNtYV9ob3N0X3NvY19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYy0yNjYtXFxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmM6MjY3OmludCBfX2luaXQgYmNtYV9ob3N0X3NvY19yZWdpc3Rlcl9kcml2ZXIodm9pZClcXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYy0yNjgte1xcbi0tXFxuZHJpdmVycy9iY21hL21haW4uYz02NzI9c3RhdGljIGludCBfX2luaXQgYmNtYV9tb2Rpbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL2JjbWEvbWFpbi5jLTY3OS1cXG5kcml2ZXJzL2JjbWEvbWFpbi5jOjY4MDpcXHRlcnIgPSBiY21hX2hvc3Rfc29jX3JlZ2lzdGVyX2RyaXZlcigpO1xcbmRyaXZlcnMvYmNtYS9tYWluLmMtNjgxLVxcdGlmIChlcnIpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDI6NTU6MzUuNzQ0MDYzMDUxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUxNjc0NDQxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBCQ01BIEhvc3QgU09DIERyaXZlciBSZWdpc3RyYXRpb24qKlxuXG5SaWdodCwgYGJjbWFfaG9zdF9zb2NfcmVnaXN0ZXJfZHJpdmVyYCBpcyBiZWluZyBjYWxsZWQsIHdoaWNoIGlzIHN0YW5kYXJkIHByb2NlZHVyZS4gSXQncyBlc3NlbnRpYWxseSB0ZWxsaW5nIHRoZSBrZXJuZWwsIFwiSGV5LCB0aGVyZSdzIGEgbmV3IGRyaXZlciwgYGJjbWFfaG9zdF9zb2NfZHJpdmVyYCwgYXZhaWxhYmxlOyBiZSBvbiB0aGUgbG9va291dCBmb3IgaGFyZHdhcmUgdGhhdCBpdCBjYW4gaGFuZGxlLlwiIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIk9rYXksIGdvb2QuIE5vdywgd2hhdCBwbGF0Zm9ybSBJRHMgb3IgZGV2aWNlIHByb3BlcnRpZXMgaXMgdGhpcyBkcml2ZXIgZXhwZWN0aW5nPyBXaGF0IGNyaXRlcmlhIGRvZXMgaXQgdXNlIHRvIGRldGVybWluZSBpZiBpdCBzaG91bGQgdGFrZSByZXNwb25zaWJpbGl0eSBmb3IgYSBwaWVjZSBvZiBoYXJkd2FyZT9cIiBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIHByb2JlIG1hdGNoZXMuIEkgd2FudCB0byBzZWUgaG93IHRoZSBgYmNtYV9ob3N0X3NvY19kcml2ZXJgIGlzIGRlc2lnbmVkIHRvIGlkZW50aWZ5IGFuZCB3b3JrIHdpdGggcGFydGljdWxhciBoYXJkd2FyZSBjb25maWd1cmF0aW9ucy4gVGhpcyBoZWxwcyBtZSB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGUgZHJpdmVyIGFuZCBpdHMgaW50ZXJhY3Rpb24gd2l0aCB0aGUgdW5kZXJseWluZyBTT0MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaXQncyAqbG9va2luZyogZm9yIGluIG9yZGVyIHRvIGtub3cgKndoZXJlKiBpdCB3aWxsIGJlIGVmZmVjdGl2ZS4gTGV0J3Mgc2VlIHdoYXQgdGhhdCBkcml2ZXIgKmFjdHVhbGx5KiBtYXRjaGVzIGFnYWluc3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2ODQ3LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDI6NTU6MzkuMjYwODA5NTZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2OTYwNDcwNzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYmNtYV9ob3N0X3NvY19kcml2ZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9iY21hL2hvc3Rfc29jLmM9MjU2PU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGJjbWFfaG9zdF9zb2Nfb2ZfbWF0Y2gpO1xcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jLTI1Ny1cXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYzoyNTg6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYmNtYV9ob3N0X3NvY19kcml2ZXIgPSB7XFxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmMtMjU5LVxcdC5kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYz0yNjc9aW50IF9faW5pdCBiY21hX2hvc3Rfc29jX3JlZ2lzdGVyX2RyaXZlcih2b2lkKVxcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jLTI2OC17XFxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmM6MjY5OlxcdHJldHVybiBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXIoXFx1MDAyNmJjbWFfaG9zdF9zb2NfZHJpdmVyKTtcXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYy0yNzAtfVxcbi0tXFxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmM9MjcyPXZvaWQgX19leGl0IGJjbWFfaG9zdF9zb2NfdW5yZWdpc3Rlcl9kcml2ZXIodm9pZClcXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYy0yNzMte1xcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jOjI3NDpcXHRwbGF0Zm9ybV9kcml2ZXJfdW5yZWdpc3RlcihcXHUwMDI2YmNtYV9ob3N0X3NvY19kcml2ZXIpO1xcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jLTI3NS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAyOjU1OjQwLjk1Njg2MTgyNloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODAzMTU5NDU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdDpcblxuKipBbmFseXppbmcgdGhlIGBiY21hX2hvc3Rfc29jX29mX21hdGNoYCBGdW5jdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzIGBiY21hX2hvc3Rfc29jX29mX21hdGNoYCBmdW5jdGlvbi4gSW1tZWRpYXRlbHksIG15IGV4cGVydCBicmFpbiBraWNrcyBpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHB1cnBvc2Ugd2l0aGluIHRoZSBicm9hZGVyIGNvbnRleHQuIFwiYmNtYVwiIHN1Z2dlc3RzIEJyb2FkY29tLCBpbmRpY2F0aW5nIHRoaXMgaXMgcHJvYmFibHkgcmVsYXRlZCB0byB0aGVpciBDb21tdW5pY2F0aW9uIEFyY2hpdGVjdHVyZS4gXCJob3N0XCIgaW1wbGllcyBpdCdzIGRlYWxpbmcgd2l0aCB0aGUgaG9zdCBpbnRlcmZhY2UsIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gYSBzeXN0ZW0tb24tYS1jaGlwIChTb0MpIGFuZCB0aGUgaG9zdCBDUFUgb3Igb3RoZXIgY29tcG9uZW50cy4gXCJvZlwiIGFuZCBcIm1hdGNoXCIgaGludHMgYXQgYW4gYWRkcmVzcyB0YWJsZSBvciBsb29rdXAgcHJvY2Vzcy5cblxuVGhlcmVmb3JlLCBteSBpbml0aWFsIGh5cG90aGVzaXMgaXMgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGRlc2lnbmVkIHRvICoqZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgcGllY2Ugb2YgaGFyZHdhcmUgKGxpa2VseSBhIEJyb2FkY29tIFNvQykgaXMgY29tcGF0aWJsZSB3aXRoIGEgcGFydGljdWxhciBob3N0IGludGVyZmFjZSBiYXNlZCBvbiBhIERldmljZSBUcmVlIChEVCkgZW50cnkuKiogSXTigJlzIHByb2JhYmx5IGNoZWNraW5nIHByb3BlcnRpZXMgd2l0aGluIHRoZSBEVCB0byBzZWUgaWYgdGhleSBhbGlnbiB3aXRoIHRoZSBleHBlY3RlZCByZXF1aXJlbWVudHMgZm9yIHRoYXQgc3BlY2lmaWMgU29DLiBUaGlzIG1hdGNoaW5nIHByb2Nlc3MgaXMgY3J1Y2lhbC4gSXTigJlzIHRoZSBnYXRld2F5LCBkZXRlcm1pbmluZyBpZiB0aGUgZHJpdmVyIGlzIGxvYWRlZCBhbmQgdGhlIGhhcmR3YXJlIGlzIGNvcnJlY3RseSBpbml0aWFsaXplZC4gVGhlIGNvZGUgaGVyZSBpcyB0aGUgZ2F0ZWtlZXBlci5cblxuSSdtIGV4cGVjdGluZyB0aGlzIGZ1bmN0aW9uIHRvIGNvbXBhcmUgc29tZSBJRCBmaWVsZHMsIGxpa2UgYSBib2FyZCBpZGVudGlmaWVyLCBjaGlwc2V0IHZlcnNpb24sIG9yIHNwZWNpZmljIGRldmljZSBpZGVudGlmaWVycyBhZ2FpbnN0IHRoZSBEZXZpY2UgVHJlZSBkYXRhLiBQb3RlbnRpYWxseSwgaXQgY291bGQgZXhhbWluZSB0aGUgRFQgcHJvcGVydGllcyB0byBzZWUgaWYgdGhleSdyZSBhIFwicGVyZmVjdFwiIG1hdGNoLCBvciBpZiBzb21lIHRvbGVyYW5jZXMgb3Igd2lsZGNhcmRpbmcgYXJlIGludm9sdmVkIHRvIHN1cHBvcnQgYSByYW5nZSBvZiBCcm9hZGNvbSBTb0NzLiBJIGJldCB0aGVyZSBpcyBhbiBpbnRlcnJ1cHQgY29uZmlndXJhdGlvbiBoZXJlLCB0b28uIFRoZSBgb2ZgIHByZWZpeCBzdWdnZXN0cyBEZXZpY2UgVHJlZSBiaW5kaW5ncywgc28gaXTigJlzIGxpa2VseSB1c2luZyBEVCBwcm9wZXJ0aWVzIHRvIGNvbmZpZ3VyZSB0aGUgaGFyZHdhcmUsIGFuZCB0aGUgbWF0Y2ggaXMgcGFydCBvZiB2YWxpZGF0aW5nIHRoZSBjb3JyZWN0IGNvbmZpZ3VyYXRpb24gYW5kIGRyaXZlci4gTGV0J3Mgc2VlIGlmIG15IGRlZHVjdGlvbnMgYXJlIGNvcnJlY3QuIEkgbmVlZCB0byBzZWUgdGhlIGNvZGUgbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzQ1NSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAyOjU1OjQ0Ljc2MDAyNTIwMVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY5Mjk0NDU3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJiY21hX2hvc3Rfc29jX29mX21hdGNoXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jPTI0Mz1zdGF0aWMgdm9pZCBiY21hX2hvc3Rfc29jX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmMtMjUxLVxcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jOjI1MjpzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBiY21hX2hvc3Rfc29jX29mX21hdGNoW10gPSB7XFxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmMtMjUzLVxcdHsgLmNvbXBhdGlibGUgPSBcXFwiYnJjbSxidXMtYXhpXFxcIiwgfSxcXG4tLVxcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jLTI1NS19O1xcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jOjI1NjpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBiY21hX2hvc3Rfc29jX29mX21hdGNoKTtcXG5kcml2ZXJzL2JjbWEvaG9zdF9zb2MuYy0yNTctXFxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmM9MjU4PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGJjbWFfaG9zdF9zb2NfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9iY21hL2hvc3Rfc29jLmMtMjYwLVxcdFxcdC5uYW1lID0gXFxcImJjbWEtaG9zdC1zb2NcXFwiLFxcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jOjI2MTpcXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBiY21hX2hvc3Rfc29jX29mX21hdGNoLFxcbmRyaXZlcnMvYmNtYS9ob3N0X3NvYy5jLTI2Mi1cXHR9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMjo1NTo0Ni40NTI5NzcxMTdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODE1MzM3Mjk2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJDTUEgR1BJTyBJbml0aWFsaXphdGlvbiBQYXRoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXM6IGlmIHRoZSBkZXZpY2UgdHJlZSBpbmNsdWRlcyBcImJyY20sYnVzLWF4aSxcIiB0aGVuIGBiY21hX2hvc3Rfc29jX3Byb2JlYCB3aWxsIGJlIHRyaWdnZXJlZC4gVGhhdCdzIGNydWNpYWwgYmVjYXVzZSBgYmNtYV9ob3N0X3NvY19wcm9iZWAgc2V0cyBgYnVzLVx1MDAzZWhvc3R0eXBlYCB0byBgQkNNQV9IT1NUVFlQRV9TT0NgLCB3aGljaCBpcyB0aGVuIGVzc2VudGlhbCBmb3IgYGJjbWFfYnVzX3JlZ2lzdGVyYC4gSWYgdGhhdCBoYXBwZW5zLCB0aGUgYnVzIHdpbGwgYmUgc2Nhbm5lZCwgYW5kIGlmIGEgR1BJTyBjb250cm9sbGVyIGlzIGZvdW5kLCBgYmNtYV9ncGlvX2luaXRgIGdldHMgY2FsbGVkLlxuXG5UaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgd2UgY2FuIGluamVjdCBhIFwiYnJjbSxidXMtYXhpXCIgbm9kZSB2aWEgc3l6a2FsbGVyLiAgU3l6a2FsbGVyIGRvZXNuJ3QgdHlwaWNhbGx5IGp1c3QgKmluamVjdCogYXJiaXRyYXJ5IGRldmljZSB0cmVlIG5vZGVzIHVubGVzcyBpdCdzIGV4cGxpY2l0bHkgY29uZmlndXJlZCwgYW5kIEkgZG9uJ3QgdGhpbmsgd2UncmUgdXNpbmcgdGhvc2Ugc29ydHMgb2YgbWVjaGFuaXNtcyBieSBkZWZhdWx0LiBTbyB0aGF0J3MgcHJvYmFibHkgYSBuby1nby5cblxuTm93LCB3YWl0IGEgbWludXRlLi4uIHdoYXQgYWJvdXQgYGJjbTQ3eHhfYnV0dG9uc19hZGRgPyBUaGF0J3MgaW4gYGFyY2gvbWlwcy9iY200N3h4L2J1dHRvbnMuY2AuICBUaGF0J3MgZGVmaW5pdGVseSBNSVBTLXNwZWNpZmljLCBzbyBub3QgcmVsZXZhbnQgZm9yIG91ciB4ODYgb3IgQVJNNjQgc3l6a2FsbGVyIGluc3RhbmNlcy5cblxuT2theSwgbGV0J3Mgc3RlcCBiYWNrIGFuZCBjb25zaWRlciBgZHJpdmVycy9iY21hL2RyaXZlcl9ncGlvLmNgIGlzIGNvbXBpbGVkIGZvciB4ODYgYW5kIEFSTSBpZiBgQ09ORklHX0JDTUFfRFJJVkVSX0dQSU9gIGlzIGVuYWJsZWQsIGV2ZW4gaWYgdGhhdCBtZWFucyB3ZSBuZWVkIGBDT05GSUdfQkNNQWAgdG8gYmUgZW5hYmxlZC5cblxuQnV0IGhlcmUncyB0aGUga2lja2VyOiBgYmNtYV9ncGlvX2luaXRgICpvbmx5KiByZWdpc3RlcnMgdGhlIHNvZnR3YXJlIG5vZGUgaWYgYGJ1cy1cdTAwM2Vob3N0dHlwZWAgaXMgYEJDTUFfSE9TVFRZUEVfU09DYC4gQW5kIHRoYXQgYEJDTUFfSE9TVFRZUEVfU09DYCBvbmx5IGdldHMgc2V0IGlmIGVpdGhlciBgYmNtYV9ob3N0X3NvY19wcm9iZWAgaXMgY2FsbGVkICh3aGljaCB3ZSBhbHJlYWR5IGtub3cgZGVwZW5kcyBvbiB0aGUgXCJicmNtLGJ1cy1heGlcIiBEVCBub2RlKSBvciBgYmNtYV9ob3N0X3NvY19yZWdpc3RlcmAgZ2V0cyBjYWxsZWQgZnJvbSB0aGUgTUlQUyBgYmNtNDd4eF9yZWdpc3Rlcl9iY21hYCByb3V0aW5lLlxuXG5Tbywgb24geDg2LCB3ZSdkIG5lZWQgdGhhdCBcImJyY20sYnVzLWF4aVwiIGluIHRoZSBEVC4gSG93ZXZlciwgc3l6a2FsbGVyIG9uIHg4NiBkb2Vzbid0IHVzZSBhIGRldmljZSB0cmVlLlxuXG5UaGVuLCB3aGF0IGFib3V0IEFSTS9BUk02ND8gIFN5emthbGxlciAqb24qIEFSTTY0IG1pZ2h0IHVzZSBhIERULCBidXQgdHlwaWNhbGx5IGEgZml4ZWQgb25lIHByb3ZpZGVkIGJ5IFFFTVUgKGUuZy4sIHRoZSBgdmlydGAgbWFjaGluZSkuIEFuZCAqdGhhdCogRFQgd29uJ3QgaGF2ZSBcImJyY20sYnVzLWF4aVwiIGluIGl0LlxuXG5UaGUgY29uY2x1c2lvbiBpcyB0aGF0IGBiY21hX2dwaW9faW5pdGAgd2lsbCAqbmV2ZXIqIHNlZSBgQkNNQV9IT1NUVFlQRV9TT0NgIGluIG91ciBzeXprYWxsZXIgaW5zdGFuY2VzIG9uIHg4NiBvciBBUk02NC5cblxuT2theSwgd2hhdCBhYm91dCBgc3NiX2dwaW9faW5pdGA/IFRoYXQgZGVwZW5kcyBvbiBgYnVzLVx1MDAzZWJ1c3R5cGUgPT0gU1NCX0JVU1RZUEVfU1NCYCB3aGljaCBpc24ndCB0aGUgY3VycmVudCBwYXRoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODE4OSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMjo1NTo1NC42MDYzNTI3MDlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MTkxNjEzMTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiU1NCX0JVU1RZUEVfU1NCXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vYmNtNDd4eF9zcHJvbS5jPTU5NT1zdGF0aWMgaW50IGJjbTQ3eHhfZ2V0X3Nwcm9tX3NzYihzdHJ1Y3Qgc3NiX2J1cyAqYnVzLCBzdHJ1Y3Qgc3NiX3Nwcm9tICpvdXQpXFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2Jyb2FkY29tL2JjbTQ3eHhfc3Byb20uYy01OTktXFx0c3dpdGNoIChidXMtXFx1MDAzZWJ1c3R5cGUpIHtcXG5kcml2ZXJzL2Zpcm13YXJlL2Jyb2FkY29tL2JjbTQ3eHhfc3Byb20uYzo2MDA6XFx0Y2FzZSBTU0JfQlVTVFlQRV9TU0I6XFxuZHJpdmVycy9maXJtd2FyZS9icm9hZGNvbS9iY200N3h4X3Nwcm9tLmMtNjAxLVxcdFxcdGJjbTQ3eHhfZmlsbF9zcHJvbShvdXQsIE5VTEwsIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jPTEyNTY9c3RhdGljIHZvaWQgYjQ0X2NoaXBfcmVzZXQoc3RydWN0IGI0NCAqYnAsIGludCByZXNldF9raW5kKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMTI4OS1cXHRzd2l0Y2ggKHNkZXYtXFx1MDAzZWJ1cy1cXHUwMDNlYnVzdHlwZSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jOjEyOTA6XFx0Y2FzZSBTU0JfQlVTVFlQRV9TU0I6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMTI5MS1cXHRcXHRidzMyKGJwLCBCNDRfTURJT19DVFJMLCAoTURJT19DVFJMX1BSRUFNQkxFIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jPTE1Nzg9c3RhdGljIHZvaWQgYjQ0X3NldHVwX3dvbF9wY2koc3RydWN0IGI0NCAqYnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYy0xNTgxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jOjE1ODI6XFx0aWYgKGJwLVxcdTAwM2VzZGV2LVxcdTAwM2VidXMtXFx1MDAzZWJ1c3R5cGUgIT0gU1NCX0JVU1RZUEVfU1NCKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMTU4My1cXHRcXHRidzMyKGJwLCBTU0JfVE1TTE9XLCBicjMyKGJwLCBTU0JfVE1TTE9XKSB8IFNTQl9UTVNMT1dfUEUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM9MTc2Nz1zdGF0aWMgdm9pZCBiNDRfZ2V0X2RydmluZm8gKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBldGh0b29sX2RydmluZm8gKmluZm8pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYy0xNzc2LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jOjE3Nzc6XFx0Y2FzZSBTU0JfQlVTVFlQRV9TU0I6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMTc3OC1cXHRcXHRzdHJzY3B5KGluZm8tXFx1MDAzZWJ1c19pbmZvLCBcXFwiU1NCXFxcIiwgc2l6ZW9mKGluZm8tXFx1MDAzZWJ1c19pbmZvKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYz0yMTQxPXN0YXRpYyBpbnQgYjQ0X2dldF9pbnZhcmlhbnRzKHN0cnVjdCBiNDQgKmJwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjE0OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYzoyMTQ5OlxcdGlmIChzZGV2LVxcdTAwM2VidXMtXFx1MDAzZWJ1c3R5cGUgPT0gU1NCX0JVU1RZUEVfU1NCIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjE1MC1cXHQgICAgaW5zdGFuY2UgXFx1MDAzZSAxKSB7XFxuLS1cXG5kcml2ZXJzL3NzYi9kcml2ZXJfY2hpcGNvbW1vbi5jPTExOT1zdGF0aWMgZW51bSBzc2JfY2xrc3JjIGNoaXBjb19wY3RsX2dldF9zbG93Y2xrc3JjKHN0cnVjdCBzc2JfY2hpcGNvbW1vbiAqY2MpXFxuLS1cXG5kcml2ZXJzL3NzYi9kcml2ZXJfY2hpcGNvbW1vbi5jLTEyNC1cXHRpZiAoY2MtXFx1MDAzZWRldi1cXHUwMDNlaWQucmV2aXNpb24gXFx1MDAzYyA2KSB7XFxuZHJpdmVycy9zc2IvZHJpdmVyX2NoaXBjb21tb24uYzoxMjU6XFx0XFx0aWYgKGJ1cy1cXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IgfHxcXG5kcml2ZXJzL3NzYi9kcml2ZXJfY2hpcGNvbW1vbi5jLTEyNi1cXHRcXHQgICAgYnVzLVxcdTAwM2VidXN0eXBlID09IFNTQl9CVVNUWVBFX1BDTUNJQSlcXG4tLVxcbmRyaXZlcnMvc3NiL2RyaXZlcl9jaGlwY29tbW9uLmM9MzExPXUzMiBzc2JfY2hpcGNvX3dhdGNoZG9nX3RpbWVyX3NldF93ZHQoc3RydWN0IGJjbTQ3eHhfd2R0ICp3ZHQsIHUzMiB0aWNrcylcXG4tLVxcbmRyaXZlcnMvc3NiL2RyaXZlcl9jaGlwY29tbW9uLmMtMzE0LVxcbmRyaXZlcnMvc3NiL2RyaXZlcl9jaGlwY29tbW9uLmM6MzE1OlxcdGlmIChjYy1cXHUwMDNlZGV2LVxcdTAwM2VidXMtXFx1MDAzZWJ1c3R5cGUgIT0gU1NCX0JVU1RZUEVfU1NCKVxcbmRyaXZlcnMvc3NiL2RyaXZlcl9jaGlwY29tbW9uLmMtMzE2LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9zc2IvZHJpdmVyX2NoaXBjb21tb24uYz0zMjE9dTMyIHNzYl9jaGlwY29fd2F0Y2hkb2dfdGltZXJfc2V0X21zKHN0cnVjdCBiY200N3h4X3dkdCAqd2R0LCB1MzIgbXMpXFxuLS1cXG5kcml2ZXJzL3NzYi9kcml2ZXJfY2hpcGNvbW1vbi5jLTMyNS1cXG5kcml2ZXJzL3NzYi9kcml2ZXJfY2hpcGNvbW1vbi5jOjMyNjpcXHRpZiAoY2MtXFx1MDAzZWRldi1cXHUwMDNlYnVzLVxcdTAwM2VidXN0eXBlICE9IFNTQl9CVVNUWVBFX1NTQilcXG5kcml2ZXJzL3NzYi9kcml2ZXJfY2hpcGNvbW1vbi5jLTMyNy1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvc3NiL2RyaXZlcl9jaGlwY29tbW9uLmM9MzQ4PXZvaWQgc3NiX2NoaXBjb21tb25faW5pdChzdHJ1Y3Qgc3NiX2NoaXBjb21tb24gKmNjKVxcbi0tXFxuZHJpdmVycy9zc2IvZHJpdmVyX2NoaXBjb21tb24uYy0zNjgtXFxuZHJpdmVycy9zc2IvZHJpdmVyX2NoaXBjb21tb24uYzozNjk6XFx0aWYgKGNjLVxcdTAwM2VkZXYtXFx1MDAzZWJ1cy1cXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpIHtcXG5kcml2ZXJzL3NzYi9kcml2ZXJfY2hpcGNvbW1vbi5jLTM3MC1cXHRcXHRjYy1cXHUwMDNldGlja3NfcGVyX21zID0gc3NiX2NoaXBjb193YXRjaGRvZ190aWNrc19wZXJfbXMoY2MpO1xcbi0tXFxuZHJpdmVycy9zc2IvZHJpdmVyX2NoaXBjb21tb25fcG11LmM9MzE3PXN0YXRpYyB2b2lkIHNzYl9wbXVfcGxsX2luaXQoc3RydWN0IHNzYl9jaGlwY29tbW9uICpjYylcXG4tLVxcbmRyaXZlcnMvc3NiL2RyaXZlcl9jaGlwY29tbW9uX3BtdS5jLTMyMS1cXG5kcml2ZXJzL3NzYi9kcml2ZXJfY2hpcGNvbW1vbl9wbXUuYzozMjI6XFx0aWYgKGJ1cy1cXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpIHtcXG5kcml2ZXJzL3NzYi9kcml2ZXJfY2hpcGNvbW1vbl9wbXUuYy0zMjMtI2lmZGVmIENPTkZJR19CQ000N1hYXFxuLS1cXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jPTMyPXN0YXRpYyBpbnQgc3NiX2dwaW9fdG9faXJxKHN0cnVjdCBncGlvX2NoaXAgKmNoaXAsIHVuc2lnbmVkIGludCBncGlvKVxcbi0tXFxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYy0zNS1cXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jOjM2OlxcdGlmIChidXMtXFx1MDAzZWJ1c3R5cGUgPT0gU1NCX0JVU1RZUEVfU1NCKVxcbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmMtMzctXFx0XFx0cmV0dXJuIGlycV9maW5kX21hcHBpbmcoYnVzLVxcdTAwM2VpcnFfZG9tYWluLCBncGlvKTtcXG4tLVxcbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmM9MTUwPXN0YXRpYyBpbnQgc3NiX2dwaW9faXJxX2NoaXBjb19kb21haW5faW5pdChzdHJ1Y3Qgc3NiX2J1cyAqYnVzKVxcbi0tXFxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYy0xNTUtXFxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYzoxNTY6XFx0aWYgKGJ1cy1cXHUwMDNlYnVzdHlwZSAhPSBTU0JfQlVTVFlQRV9TU0IpXFxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYy0xNTctXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jPTE5NT1zdGF0aWMgdm9pZCBzc2JfZ3Bpb19pcnFfY2hpcGNvX2RvbWFpbl9leGl0KHN0cnVjdCBzc2JfYnVzICpidXMpXFxuLS1cXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jLTIwMC1cXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jOjIwMTpcXHRpZiAoYnVzLVxcdTAwM2VidXN0eXBlICE9IFNTQl9CVVNUWVBFX1NTQilcXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jLTIwMi1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jPTIyND1zdGF0aWMgaW50IHNzYl9ncGlvX2NoaXBjb19pbml0KHN0cnVjdCBzc2JfYnVzICpidXMpXFxuLS1cXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jLTI0MC1cXHRjaGlwLVxcdTAwM2VuZ3Bpb1xcdFxcdD0gMTY7XFxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYzoyNDE6XFx0aWYgKGJ1cy1cXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpXFxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYy0yNDItXFx0XFx0Y2hpcC1cXHUwMDNlZndub2RlXFx0PSBzb2Z0d2FyZV9ub2RlX2Z3bm9kZShcXHUwMDI2c3NiX2dwaW9fc3dub2RlKTtcXG4tLVxcbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmMtMjQ2LVxcdCAqL1xcbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmM6MjQ3OlxcdGlmIChidXMtXFx1MDAzZWJ1c3R5cGUgPT0gU1NCX0JVU1RZUEVfU1NCKVxcbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmMtMjQ4LVxcdFxcdGNoaXAtXFx1MDAzZWJhc2VcXHRcXHQ9IDA7XFxuLS1cXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jPTM1Mz1zdGF0aWMgaW50IHNzYl9ncGlvX2lycV9leHRpZl9kb21haW5faW5pdChzdHJ1Y3Qgc3NiX2J1cyAqYnVzKVxcbi0tXFxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYy0zNTgtXFxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYzozNTk6XFx0aWYgKGJ1cy1cXHUwMDNlYnVzdHlwZSAhPSBTU0JfQlVTVFlQRV9TU0IpXFxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYy0zNjAtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jPTM5Nz1zdGF0aWMgdm9pZCBzc2JfZ3Bpb19pcnFfZXh0aWZfZG9tYWluX2V4aXQoc3RydWN0IHNzYl9idXMgKmJ1cylcXG4tLVxcbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmMtNDAyLVxcbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmM6NDAzOlxcdGlmIChidXMtXFx1MDAzZWJ1c3R5cGUgIT0gU1NCX0JVU1RZUEVfU1NCKVxcbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmMtNDA0LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmM9NDI1PXN0YXRpYyBpbnQgc3NiX2dwaW9fZXh0aWZfaW5pdChzdHJ1Y3Qgc3NiX2J1cyAqYnVzKVxcbi0tXFxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYy00NDMtXFx0ICovXFxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYzo0NDQ6XFx0aWYgKGJ1cy1cXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpIHtcXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jLTQ0NS1cXHRcXHRjaGlwLVxcdTAwM2ViYXNlXFx0PSAwO1xcbi0tXFxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYz00NzU9aW50IHNzYl9ncGlvX2luaXQoc3RydWN0IHNzYl9idXMgKmJ1cylcXG4tLVxcbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmMtNDgzLVxcdCAqL1xcbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmM6NDg0OlxcdGlmIChidXMtXFx1MDAzZWJ1c3R5cGUgPT0gU1NCX0JVU1RZUEVfU1NCKSB7XFxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYy00ODUtXFx0XFx0ZXJyID0gc29mdHdhcmVfbm9kZV9yZWdpc3RlcihcXHUwMDI2c3NiX2dwaW9fc3dub2RlKTtcXG4tLVxcbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmMtNDk3LVxcdGlmIChlcnIpIHtcXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jOjQ5ODpcXHRcXHRpZiAoYnVzLVxcdTAwM2VidXN0eXBlID09IFNTQl9CVVNUWVBFX1NTQilcXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jLTQ5OS1cXHRcXHRcXHRzb2Z0d2FyZV9ub2RlX3VucmVnaXN0ZXIoXFx1MDAyNnNzYl9ncGlvX3N3bm9kZSk7XFxuLS1cXG5kcml2ZXJzL3NzYi9kcml2ZXJfZ3Bpby5jPTUwNj1pbnQgc3NiX2dwaW9fdW5yZWdpc3RlcihzdHJ1Y3Qgc3NiX2J1cyAqYnVzKVxcbi0tXFxuZHJpdmVycy9zc2IvZHJpdmVyX2dwaW8uYy01MTAtXFx0XFx0Z3Bpb2NoaXBfcmVtb3ZlKFxcdTAwMjZidXMtXFx1MDAzZWdwaW8pO1xcbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmM6NTExOlxcdFxcdGlmIChidXMtXFx1MDAzZWJ1c3R5cGUgPT0gU1NCX0JVU1RZUEVfU1NCKVxcbmRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmMtNTEyLVxcdFxcdFxcdHNvZnR3YXJlX25vZGVfdW5yZWdpc3RlcihcXHUwMDI2c3NiX2dwaW9fc3dub2RlKTtcXG4tLVxcbmRyaXZlcnMvc3NiL21haW4uYz00MTU9c3RhdGljIHZvaWQgc3NiX2RldmljZXNfdW5yZWdpc3RlcihzdHJ1Y3Qgc3NiX2J1cyAqYnVzKVxcbi0tXFxuZHJpdmVycy9zc2IvbWFpbi5jLTQyNi0jaWZkZWYgQ09ORklHX1NTQl9FTUJFRERFRFxcbmRyaXZlcnMvc3NiL21haW4uYzo0Mjc6XFx0aWYgKGJ1cy1cXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpXFxuZHJpdmVycy9zc2IvbWFpbi5jLTQyOC1cXHRcXHRwbGF0Zm9ybV9kZXZpY2VfdW5yZWdpc3RlcihidXMtXFx1MDAzZXdhdGNoZG9nKTtcXG4tLVxcbmRyaXZlcnMvc3NiL21haW4uYz00NTk9c3RhdGljIGludCBzc2JfZGV2aWNlc19yZWdpc3RlcihzdHJ1Y3Qgc3NiX2J1cyAqYnVzKVxcbi0tXFxuZHJpdmVycy9zc2IvbWFpbi5jLTUxNC1cXHRcXHRcXHRicmVhaztcXG5kcml2ZXJzL3NzYi9tYWluLmM6NTE1OlxcdFxcdGNhc2UgU1NCX0JVU1RZUEVfU1NCOlxcbmRyaXZlcnMvc3NiL21haW4uYy01MTYtXFx0XFx0XFx0ZGV2LVxcdTAwM2VkbWFfbWFzayA9IFxcdTAwMjZkZXYtXFx1MDAzZWNvaGVyZW50X2RtYV9tYXNrO1xcbi0tXFxuZHJpdmVycy9zc2IvbWFpbi5jPTU1OT1zdGF0aWMgaW50IHNzYl9hdHRhY2hfcXVldWVkX2J1c2VzKHZvaWQpXFxuLS1cXG5kcml2ZXJzL3NzYi9tYWluLmMtNTc3LVxcdFxcdHNzYl9wY2ljb3JlX2luaXQoXFx1MDAyNmJ1cy1cXHUwMDNlcGNpY29yZSk7XFxuZHJpdmVycy9zc2IvbWFpbi5jOjU3ODpcXHRcXHRpZiAoYnVzLVxcdTAwM2VidXN0eXBlID09IFNTQl9CVVNUWVBFX1NTQilcXG5kcml2ZXJzL3NzYi9tYWluLmMtNTc5LVxcdFxcdFxcdHNzYl93YXRjaGRvZ19yZWdpc3RlcihidXMpO1xcbi0tXFxuZHJpdmVycy9zc2IvbWFpbi5jPTc3ND1pbnQgc3NiX2J1c19ob3N0X3NvY19yZWdpc3RlcihzdHJ1Y3Qgc3NiX2J1cyAqYnVzLCB1bnNpZ25lZCBsb25nIGJhc2VhZGRyKVxcbi0tXFxuZHJpdmVycy9zc2IvbWFpbi5jLTc3Ny1cXG5kcml2ZXJzL3NzYi9tYWluLmM6Nzc4OlxcdGJ1cy1cXHUwMDNlYnVzdHlwZSA9IFNTQl9CVVNUWVBFX1NTQjtcXG5kcml2ZXJzL3NzYi9tYWluLmMtNzc5LVxcdGJ1cy1cXHUwMDNlb3BzID0gXFx1MDAyNnNzYl9ob3N0X3NvY19vcHM7XFxuLS1cXG5kcml2ZXJzL3NzYi9tYWluLmM9MTEzMz11MzIgc3NiX2RtYV90cmFuc2xhdGlvbihzdHJ1Y3Qgc3NiX2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9zc2IvbWFpbi5jLTExMzUtXFx0c3dpdGNoIChkZXYtXFx1MDAzZWJ1cy1cXHUwMDNlYnVzdHlwZSkge1xcbmRyaXZlcnMvc3NiL21haW4uYzoxMTM2OlxcdGNhc2UgU1NCX0JVU1RZUEVfU1NCOlxcbmRyaXZlcnMvc3NiL21haW4uYy0xMTM3LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9zc2IvbWFpbi5jPTExNTU9aW50IHNzYl9idXNfbWF5X3Bvd2VyZG93bihzdHJ1Y3Qgc3NiX2J1cyAqYnVzKVxcbi0tXFxuZHJpdmVycy9zc2IvbWFpbi5jLTExNjMtXFx0ICovXFxuZHJpdmVycy9zc2IvbWFpbi5jOjExNjQ6XFx0aWYgKGJ1cy1cXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpXFxuZHJpdmVycy9zc2IvbWFpbi5jLTExNjUtXFx0XFx0Z290byBvdXQ7XFxuLS1cXG5kcml2ZXJzL3NzYi9zY2FuLmM9MTYwPXN0YXRpYyB1MzIgc2Nhbl9yZWFkMzIoc3RydWN0IHNzYl9idXMgKmJ1cywgdTggY3VycmVudF9jb3JlaWR4LFxcbi0tXFxuZHJpdmVycy9zc2Ivc2Nhbi5jLTE2NS1cXHRzd2l0Y2ggKGJ1cy1cXHUwMDNlYnVzdHlwZSkge1xcbmRyaXZlcnMvc3NiL3NjYW4uYzoxNjY6XFx0Y2FzZSBTU0JfQlVTVFlQRV9TU0I6XFxuZHJpdmVycy9zc2Ivc2Nhbi5jLTE2Ny1cXHRcXHRvZmZzZXQgKz0gY3VycmVudF9jb3JlaWR4ICogU1NCX0NPUkVfU0laRTtcXG4tLVxcbmRyaXZlcnMvc3NiL3NjYW4uYz0xODc9c3RhdGljIGludCBzY2FuX3N3aXRjaGNvcmUoc3RydWN0IHNzYl9idXMgKmJ1cywgdTggY29yZWlkeClcXG4tLVxcbmRyaXZlcnMvc3NiL3NjYW4uYy0xODktXFx0c3dpdGNoIChidXMtXFx1MDAzZWJ1c3R5cGUpIHtcXG5kcml2ZXJzL3NzYi9zY2FuLmM6MTkwOlxcdGNhc2UgU1NCX0JVU1RZUEVfU1NCOlxcbmRyaXZlcnMvc3NiL3NjYW4uYy0xOTEtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL3NzYi9zY2FuLmM9MjAyPXZvaWQgc3NiX2lvdW5tYXAoc3RydWN0IHNzYl9idXMgKmJ1cylcXG4tLVxcbmRyaXZlcnMvc3NiL3NjYW4uYy0yMDQtXFx0c3dpdGNoIChidXMtXFx1MDAzZWJ1c3R5cGUpIHtcXG5kcml2ZXJzL3NzYi9zY2FuLmM6MjA1OlxcdGNhc2UgU1NCX0JVU1RZUEVfU1NCOlxcbmRyaXZlcnMvc3NiL3NjYW4uYy0yMDYtXFx0Y2FzZSBTU0JfQlVTVFlQRV9QQ01DSUE6XFxuLS1cXG5kcml2ZXJzL3NzYi9zY2FuLmM9MjIzPXN0YXRpYyB2b2lkIF9faW9tZW0gKnNzYl9pb3JlbWFwKHN0cnVjdCBzc2JfYnVzICpidXMsXFxuLS1cXG5kcml2ZXJzL3NzYi9zY2FuLmMtMjI4LVxcdHN3aXRjaCAoYnVzLVxcdTAwM2VidXN0eXBlKSB7XFxuZHJpdmVycy9zc2Ivc2Nhbi5jOjIyOTpcXHRjYXNlIFNTQl9CVVNUWVBFX1NTQjpcXG5kcml2ZXJzL3NzYi9zY2FuLmMtMjMwLVxcdFxcdC8qIE9ubHkgbWFwIHRoZSBmaXJzdCBjb3JlIGZvciBub3cuICovXFxuLS1cXG5kcml2ZXJzL3NzYi9zY2FuLmM9MjcxPWludCBzc2JfYnVzX3NjYW4oc3RydWN0IHNzYl9idXMgKmJ1cyxcXG4tLVxcbmRyaXZlcnMvc3NiL3NjYW4uYy0zMzAtXFx0fVxcbmRyaXZlcnMvc3NiL3NjYW4uYzozMzE6XFx0aWYgKGJ1cy1cXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0IpIHtcXG5kcml2ZXJzL3NzYi9zY2FuLmMtMzMyLVxcdFxcdC8qIE5vdyB0aGF0IHdlIGtub3cgdGhlIG51bWJlciBvZiBjb3JlcyxcXG4tLVxcbmluY2x1ZGUvbGludXgvc3NiL3NzYi5oPTMzOT1lbnVtIHNzYl9idXN0eXBlIHtcXG5pbmNsdWRlL2xpbnV4L3NzYi9zc2IuaDozNDA6XFx0U1NCX0JVU1RZUEVfU1NCLFxcdC8qIFRoaXMgU1NCIGJ1cyBpcyB0aGUgc3lzdGVtIGJ1cyAqL1xcbmluY2x1ZGUvbGludXgvc3NiL3NzYi5oLTM0MS1cXHRTU0JfQlVTVFlQRV9QQ0ksXFx0LyogU1NCIGlzIGNvbm5lY3RlZCB0byBQQ0kgYnVzICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAyOjU1OjU2LjMyNTUxOTMzNFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODY2OTU4ODU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIFNTQl9CVVNUWVBFX1NTQiBSZWdpc3RyYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyBgU1NCX0JVU1RZUEVfU1NCYCBpcyBiZWluZyBpbml0aWFsaXplZCB3aXRoaW4gYHNzYl9idXNfaG9zdF9zb2NfcmVnaXN0ZXJgLiBUaGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6ICp3aGVyZSogYW5kICp3aHkqIGlzIGBzc2JfYnVzX2hvc3Rfc29jX3JlZ2lzdGVyYCBiZWluZyBjYWxsZWQ/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc2l0ZXMgaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgb2YgdGhpcyBidXMgdHlwZSByZWdpc3RyYXRpb24uIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhhdCBmdW5jdGlvbiBhbmQgc2VlIHdoYXQncyBzZXR0aW5nIGl0IHVwLiBLbm93aW5nIHRoZSBicm9hZGVyIGNhbGwgc3RhY2sgYXJvdW5kIGBzc2JfYnVzX2hvc3Rfc29jX3JlZ2lzdGVyYCB3aWxsIGlsbHVtaW5hdGUgaXRzIHB1cnBvc2Ugd2l0aGluIHRoZSBzeXN0ZW0sIHJldmVhbGluZyB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgYW5kIGRlcGVuZGVuY2llcy4gTGV0J3MgZGlnIGluIGFuZCBmaWd1cmUgb3V0IHRoZSB1cHN0cmVhbSBsb2dpYy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMzOTYsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMjo1NTo1OS4xOTI0ODA2OTNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NzA1NTcwOTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3NiX2J1c19ob3N0X3NvY19yZWdpc3RlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL21pcHMvYmNtNDd4eC9zZXR1cC5jPTExMz1zdGF0aWMgdm9pZCBfX2luaXQgYmNtNDd4eF9yZWdpc3Rlcl9zc2Iodm9pZClcXG4tLVxcbmFyY2gvbWlwcy9iY200N3h4L3NldHVwLmMtMTE4LVxcbmFyY2gvbWlwcy9iY200N3h4L3NldHVwLmM6MTE5OlxcdGVyciA9IHNzYl9idXNfaG9zdF9zb2NfcmVnaXN0ZXIoXFx1MDAyNmJjbTQ3eHhfYnVzLnNzYiwgU1NCX0VOVU1fQkFTRSk7XFxuYXJjaC9taXBzL2JjbTQ3eHgvc2V0dXAuYy0xMjAtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvc3NiL21haW4uYz03NzA9RVhQT1JUX1NZTUJPTChzc2JfYnVzX3NkaW9idXNfcmVnaXN0ZXIpO1xcbi0tXFxuZHJpdmVycy9zc2IvbWFpbi5jLTc3My0jaWZkZWYgQ09ORklHX1NTQl9IT1NUX1NPQ1xcbmRyaXZlcnMvc3NiL21haW4uYzo3NzQ6aW50IHNzYl9idXNfaG9zdF9zb2NfcmVnaXN0ZXIoc3RydWN0IHNzYl9idXMgKmJ1cywgdW5zaWduZWQgbG9uZyBiYXNlYWRkcilcXG5kcml2ZXJzL3NzYi9tYWluLmMtNzc1LXtcXG4tLVxcbmluY2x1ZGUvbGludXgvc3NiL3NzYi5oPTUyMz10eXBlZGVmIGludCAoKnNzYl9pbnZhcmlhbnRzX2Z1bmNfdCkoc3RydWN0IHNzYl9idXMgKmJ1cyxcXG4tLVxcbmluY2x1ZGUvbGludXgvc3NiL3NzYi5oLTUyNi0vKiBSZWdpc3RlciBTb0MgYnVzLiAqL1xcbmluY2x1ZGUvbGludXgvc3NiL3NzYi5oOjUyNzpleHRlcm4gaW50IHNzYl9idXNfaG9zdF9zb2NfcmVnaXN0ZXIoc3RydWN0IHNzYl9idXMgKmJ1cyxcXG5pbmNsdWRlL2xpbnV4L3NzYi9zc2IuaC01MjgtXFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBsb25nIGJhc2VhZGRyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDI6NTY6MDEuMDYzMDQ0OTQ2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxMDY0OTIxODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nPUZhbHNlOiBBIE1JUFMtU3BlY2lmaWMgRGVhZCBFbmQqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoaXMgY29kZSBwYXRoLCB0aGUgb25lIHRoZSBwYXRjaCB0b3VjaGVzLCBpcyBleGNsdXNpdmVseSBjYWxsZWQgZnJvbSBgYXJjaC9taXBzL2JjbTQ3eHgvc2V0dXAuY2AuIFRoYXQgbWVhbnMgdGhlIGBTU0JfQlVTVFlQRV9TU0JgIGRlc2lnbmF0aW9uLCB3aGljaCBpcyBrZXkgaGVyZSwgaXMgKm9ubHkqIHNldCBvbiBNSVBTIEJDTTQ3eHggc3lzdGVtcy4gTm93LCB0aGUga2lja2VyIGlzIHRoYXQgc3l6a2FsbGVyLCBvdXIgcHJpbWFyeSBmdXp6aW5nIHRvb2wsIGRvZXNuJ3QgZXZlbiB0b3VjaCBNSVBTIEJDTTQ3eHggYXJjaGl0ZWN0dXJlcy4gU28sIGluaGVyZW50bHksIHRoaXMgc3BlY2lmaWMgY29kZSBpcyBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIHdpdGhpbiBvdXIgdmlydHVhbGl6ZWQgdGVzdGluZyBlbnZpcm9ubWVudHMuXG5cblRoZSBwYXRjaCBpdHNlbGYgaXMgYWJvdXQgcmVmYWN0b3JpbmcgdGhlIEJDTTQ3eHggYnV0dG9ucyBkcml2ZXIgdG8gdXRpbGl6ZSBzb2Z0d2FyZSBub2RlcyBpbnN0ZWFkIG9mIGBncGlvX2tleXNfcGxhdGZvcm1fZGF0YWAuIEhvd2V2ZXIsIHRoZSBzY29wZSBvZiB0aGVzZSBjaGFuZ2VzIGlzIHN0cmljdGx5IGxpbWl0ZWQuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgbW9kaWZpY2F0aW9ucyB3aXRoaW46XG5cbiogICBgYXJjaC9taXBzL2JjbTQ3eHgvYnV0dG9ucy5jYFxuKiAgIGBkcml2ZXJzL2JjbWEvZHJpdmVyX2dwaW8uY2AgKGJ1dCBvbmx5IHdoZW4gYGJ1cy1cdTAwM2Vob3N0dHlwZSA9PSBCQ01BX0hPU1RUWVBFX1NPQ2ApXG4qICAgYGRyaXZlcnMvc3NiL2RyaXZlcl9ncGlvLmNgIChleGNsdXNpdmVseSB3aGVuIGBidXMtXHUwMDNlYnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9TU0JgKVxuKiAgIGBpbmNsdWRlL2xpbnV4L2JjbWEvYmNtYS5oYFxuKiAgIGBpbmNsdWRlL2xpbnV4L3NzYi9zc2IuaGBcblxuQWxsIG9mIHRoZXNlIGFyZWFzIGFyZSBlaXRoZXIgaW5oZXJlbnRseSBNSVBTLXNwZWNpZmljIG9yIGFyZSBjb250aW5nZW50IG9uIHRoYXQgdmVyeSBzcGVjaWZpYyBCQ000N3h4IFNvQy4gQ29uc2lkZXJpbmcgb3VyIHRlc3RpbmcgaW5mcmFzdHJ1Y3R1cmUgcmV2b2x2ZXMgYXJvdW5kIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCB0aGUgY29kZSBwYXRocyB0b3VjaGVkIGJ5IHRoaXMgcGF0Y2ggYXJlIGZ1bmRhbWVudGFsbHkgdW5yZWFjaGFibGUuIFRoZXJlZm9yZSwgYmFzZWQgb24gdGhpcyBhbmFseXNpcywgSSdtIGNvbWZvcnRhYmxlIHJldHVybmluZyBXb3J0aEZ1enppbmc9ZmFsc2UuIFRoZXJlJ3Mgbm8gdmFsdWUgaW4gZXhwZW5kaW5nIHJlc291cmNlcyB0byBhbmFseXplIHRoaXM7IGl0J3MgYSBkZWFkIGVuZCBhcyBmYXIgYXMgb3VyIGN1cnJlbnQgdGVzdGluZyBjYXBhYmlsaXRpZXMgZ28uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MDI2LCJPdXRwdXRUb2tlbnMiOjEyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMjo1NjowNy4xNjk1NDAyNjhaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQkNNNDd4eCBidXR0b25zIGRyaXZlciBhbmQgYXNzb2NpYXRlZCBCQ01BL1NTQiBHUElPIGRyaXZlcnMgdG8gdXNlIHNvZnR3YXJlIG5vZGVzIGluc3RlYWQgb2YgcGxhdGZvcm0gZGF0YS4gVGhlc2UgY2hhbmdlcyBhcmUgc3BlY2lmaWMgdG8gdGhlIE1JUFMgQkNNNDd4eCBhcmNoaXRlY3R1cmUgYW5kIGl0cyBTb0MgYnVzZXMgKEJDTUFfSE9TVFRZUEVfU09DIGFuZCBTU0JfQlVTVFlQRV9TU0IpLiBTaW5jZSBzeXprYWxsZXIgZG9lcyBub3QgZnV6eiBNSVBTIEJDTTQ3eHggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCQ000N3h4IGJ1dHRvbnMgZHJpdmVyIGFuZCBhc3NvY2lhdGVkIEJDTUEvU1NCIEdQSU8gZHJpdmVycyB0byB1c2Ugc29mdHdhcmUgbm9kZXMgaW5zdGVhZCBvZiBwbGF0Zm9ybSBkYXRhLiBUaGVzZSBjaGFuZ2VzIGFyZSBzcGVjaWZpYyB0byB0aGUgTUlQUyBCQ000N3h4IGFyY2hpdGVjdHVyZSBhbmQgaXRzIFNvQyBidXNlcyAoQkNNQV9IT1NUVFlQRV9TT0MgYW5kIFNTQl9CVVNUWVBFX1NTQikuIFNpbmNlIHN5emthbGxlciBkb2VzIG5vdCBmdXp6IE1JUFMgQkNNNDd4eCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowgphbc[1] Phase: Running StartedAt: 2026-07-14 02:57:03 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgphbc[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-14 02:57:03 +0000 UTC FinishedAt: 2026-07-14 02:57:08 +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,}