Name: series-workflowgtkp9 Phase: Failed StartedAt: 2026-09-11 21:46:38 +0000 UTC FinishedAt: 2026-09-11 22:21:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgtkp9[0] Phase: Succeeded StartedAt: 2026-09-11 21:46:38 +0000 UTC FinishedAt: 2026-09-11 22:21:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgtkp9[0].run-triage Phase: Succeeded StartedAt: 2026-09-11 21:46:38 +0000 UTC FinishedAt: 2026-09-11 22:21:16 +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+CgkJCTx0ZD4yMDI2LzA5LzExIDIyOjIwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgTUlQUyBtaWNyby1hc3NlbWJsZXIgcm91dGluZXMgYW5kIE1JUFMgQlBGIEpJVCBjb21waWxlciBpbXBsZW1lbnRhdGlvbnMgKHVuZGVyIGFyY2gvbWlwcy8pLiBCZWNhdXNlIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCB0aGVzZSBjb2RlIHBhdGhzIGFyZSBleGNsdXNpdmUgdG8gTUlQUyBhbmQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nIG9uIGFtZDY0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAyMjoyMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGNmNmQ3NDNmYmQ2NWIyY2NkYWViMjMyM2ExOWY2MDdlMTlkODg2ZGNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIFNlcCAxMSAyMjoyMDo0MyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3Vhc20uaFxuaW5kZXggYjQzYmZkNDQ1MjUyMS4uYWRlYTM1ZGYwZjhkYyAxMDA2NDRcbi0tLSBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS91YXNtLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS91YXNtLmhcbkBAIC04NSwxNSAmIzQzOzg1LDIwIEBAIElwX3UxdTIoX2N0YzEpO1xuIElwX3UydTEoX2N0Y21zYSk7XG4gSXBfdTJ1MXMzKF9kYWRkaXUpO1xuIElwX3UzdTF1MihfZGFkZHUpO1xuJiM0MztJcF91MXUyKF9kZGl2KTtcbiYjNDM7SXBfdTN1MXUyKF9kZGl2X3I2KTtcbiBJcF91MXUyKF9kZGl2dSk7XG4gSXBfdTN1MXUyKF9kZGl2dV9yNik7XG4gSXBfdTEoX2RpKTtcbiBJcF91MnUxbXNidTMoX2RpbnMpO1xuIElwX3UydTFtc2J1MyhfZGluc20pO1xuIElwX3UydTFtc2J1MyhfZGluc3UpO1xuJiM0MztJcF91MXUyKF9kaXYpO1xuJiM0MztJcF91M3UxdTIoX2Rpdl9yNik7XG4gSXBfdTF1MihfZGl2dSk7XG4gSXBfdTN1MXUyKF9kaXZ1X3I2KTtcbiBJcF91MXUydTMoX2RtZmMwKTtcbiYjNDM7SXBfdTN1MXUyKF9kbW9kKTtcbiBJcF91M3UxdTIoX2Rtb2R1KTtcbiBJcF91MXUydTMoX2RtdGMwKTtcbiBJcF91MXUyKF9kbXVsdHUpO1xuQEAgLTEzNSw2ICYjNDM7MTQwLDcgQEAgSXBfdTF1MnUzKF9tZmMwKTtcbiBJcF91MXUydTMoX21maGMwKTtcbiBJcF91MShfbWZoaSk7XG4gSXBfdTEoX21mbG8pO1xuJiM0MztJcF91M3UxdTIoX21vZCk7XG4gSXBfdTN1MXUyKF9tb2R1KTtcbiBJcF91M3UxdTIoX21vdm4pO1xuIElwX3UzdTF1MihfbW92eik7XG5AQCAtMTU2LDYgJiM0MzsxNjIsOCBAQCBJcF91MnMzdTEoX3NiKTtcbiBJcF91MnMzdTEoX3NjKTtcbiBJcF91MnMzdTEoX3NjZCk7XG4gSXBfdTJzM3UxKF9zZCk7XG4mIzQzO0lwX3UydTEoX3NlYik7XG4mIzQzO0lwX3UydTEoX3NlaCk7XG4gSXBfdTN1MXUyKF9zZWxlcXopO1xuIElwX3UzdTF1Mihfc2VsbmV6KTtcbiBJcF91MnMzdTEoX3NoKTtcbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbW0vdWFzbS1taXBzLmMgYi9hcmNoL21pcHMvbW0vdWFzbS1taXBzLmNcbmluZGV4IGUxNWM2NzAwY2QwODguLjJkMTY2OGI1OGRkZGUgMTAwNjQ0XG4tLS0gYS9hcmNoL21pcHMvbW0vdWFzbS1taXBzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbWlwcy9tbS91YXNtLW1pcHMuY1xuQEAgLTc1LDYgJiM0Mzs3NSw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW5zbiBpbnNuX3RhYmxlW2luc25faW52YWxpZF0gPSB7XG4gXHRbaW5zbl9jdGNtc2FdXHQ9IHtNKG1zYV9vcCwgMCwgbXNhX2N0Y19vcCwgMCwgMCwgbXNhX2VsbV9vcCksIFJEIHwgUkV9LFxuIFx0W2luc25fZGFkZGl1XVx0PSB7TShkYWRkaXVfb3AsIDAsIDAsIDAsIDAsIDApLCBSUyB8IFJUIHwgU0lNTX0sXG4gXHRbaW5zbl9kYWRkdV1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgZGFkZHVfb3ApLCBSUyB8IFJUIHwgUkR9LFxuJiM0MztcdFtpbnNuX2RkaXZdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRkaXZfb3ApLCBSUyB8IFJUfSxcbiYjNDM7XHRbaW5zbl9kZGl2X3I2XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkZGl2X2RkaXY2X29wLCBkZGl2X29wKSxcbiYjNDM7XHRcdFx0XHRSUyB8IFJUIHwgUkR9LFxuIFx0W2luc25fZGRpdnVdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRkaXZ1X29wKSwgUlMgfCBSVH0sXG4gXHRbaW5zbl9kZGl2dV9yNl1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGRpdnVfZGRpdnU2X29wLCBkZGl2dV9vcCksXG4gXHRcdFx0XHRSUyB8IFJUIHwgUkR9LFxuQEAgLTgyLDEwICYjNDM7ODUsMTUgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnNuIGluc25fdGFibGVbaW5zbl9pbnZhbGlkXSA9IHtcbiBcdFtpbnNuX2RpbnNdXHQ9IHtNKHNwZWMzX29wLCAwLCAwLCAwLCAwLCBkaW5zX29wKSwgUlMgfCBSVCB8IFJEIHwgUkV9LFxuIFx0W2luc25fZGluc21dXHQ9IHtNKHNwZWMzX29wLCAwLCAwLCAwLCAwLCBkaW5zbV9vcCksIFJTIHwgUlQgfCBSRCB8IFJFfSxcbiBcdFtpbnNuX2RpbnN1XVx0PSB7TShzcGVjM19vcCwgMCwgMCwgMCwgMCwgZGluc3Vfb3ApLCBSUyB8IFJUIHwgUkQgfCBSRX0sXG4mIzQzO1x0W2luc25fZGl2XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkaXZfb3ApLCBSUyB8IFJUfSxcbiYjNDM7XHRbaW5zbl9kaXZfcjZdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRpdl9kaXY2X29wLCBkaXZfb3ApLFxuJiM0MztcdFx0XHRcdFJTIHwgUlQgfCBSRH0sXG4gXHRbaW5zbl9kaXZ1XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkaXZ1X29wKSwgUlMgfCBSVH0sXG4gXHRbaW5zbl9kaXZ1X3I2XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkaXZ1X2RpdnU2X29wLCBkaXZ1X29wKSxcbiBcdFx0XHRcdFJTIHwgUlQgfCBSRH0sXG4gXHRbaW5zbl9kbWZjMF1cdD0ge00oY29wMF9vcCwgZG1mY19vcCwgMCwgMCwgMCwgMCksIFJUIHwgUkQgfCBTRVR9LFxuJiM0MztcdFtpbnNuX2Rtb2RdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRkaXZfZG1vZF9vcCwgZGRpdl9vcCksXG4mIzQzO1x0XHRcdFx0UlMgfCBSVCB8IFJEfSxcbiBcdFtpbnNuX2Rtb2R1XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkZGl2dV9kbW9kdV9vcCwgZGRpdnVfb3ApLFxuIFx0XHRcdFx0UlMgfCBSVCB8IFJEfSxcbiBcdFtpbnNuX2RtdGMwXVx0PSB7TShjb3AwX29wLCBkbXRjX29wLCAwLCAwLCAwLCAwKSwgUlQgfCBSRCB8IFNFVH0sXG5AQCAtMTQwLDYgJiM0MzsxNDgsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGluc24gaW5zbl90YWJsZVtpbnNuX2ludmFsaWRdID0ge1xuIFx0W2luc25fbWZoYzBdXHQ9IHtNKGNvcDBfb3AsIG1maGMwX29wLCAwLCAwLCAwLCAwKSwgIFJUIHwgUkQgfCBTRVR9LFxuIFx0W2luc25fbWZoaV1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgbWZoaV9vcCksIFJEfSxcbiBcdFtpbnNuX21mbG9dXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIG1mbG9fb3ApLCBSRH0sXG4mIzQzO1x0W2luc25fbW9kXVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkaXZfbW9kX29wLCBkaXZfb3ApLFxuJiM0MztcdFx0XHRcdFJTIHwgUlQgfCBSRH0sXG4gXHRbaW5zbl9tb2R1XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkaXZ1X21vZHVfb3AsIGRpdnVfb3ApLFxuIFx0XHRcdFx0UlMgfCBSVCB8IFJEfSxcbiBcdFtpbnNuX21vdm5dXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIG1vdm5fb3ApLCBSUyB8IFJUIHwgUkR9LFxuQEAgLTE3Nyw2ICYjNDM7MTg3LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnNuIGluc25fdGFibGVbaW5zbl9pbnZhbGlkXSA9IHtcbiBcdFtpbnNuX3NjZF1cdD0ge002KHNwZWMzX29wLCAwLCAwLCAwLCBzY2Q2X29wKSwgIFJTIHwgUlQgfCBTSU1NOX0sXG4gI2VuZGlmXG4gXHRbaW5zbl9zZF1cdD0ge00oc2Rfb3AsIDAsIDAsIDAsIDAsIDApLCAgUlMgfCBSVCB8IFNJTU19LFxuJiM0MztcdFtpbnNuX3NlYl1cdD0ge00oc3BlYzNfb3AsIDAsIDAsIDAsIHNlYl9vcCwgYnNoZmxfb3ApLCBSVCB8IFJEfSxcbiYjNDM7XHRbaW5zbl9zZWhdXHQ9IHtNKHNwZWMzX29wLCAwLCAwLCAwLCBzZWhfb3AsIGJzaGZsX29wKSwgUlQgfCBSRH0sXG4gXHRbaW5zbl9zZWxlcXpdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIHNlbGVxel9vcCksIFJTIHwgUlQgfCBSRH0sXG4gXHRbaW5zbl9zZWxuZXpdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIHNlbG5lel9vcCksIFJTIHwgUlQgfCBSRH0sXG4gXHRbaW5zbl9zaF1cdD0ge00oc2hfb3AsIDAsIDAsIDAsIDAsIDApLCAgUlMgfCBSVCB8IFNJTU19LFxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9tbS91YXNtLmMgYi9hcmNoL21pcHMvbW0vdWFzbS5jXG5pbmRleCAxMjUxNDA5NzlkNjJjLi4xMzlhZmIwZTE0Y2RmIDEwMDY0NFxuLS0tIGEvYXJjaC9taXBzL21tL3Vhc20uY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9taXBzL21tL3Vhc20uY1xuQEAgLTQ5LDE5ICYjNDM7NDksMjEgQEAgZW51bSBvcGNvZGUge1xuIFx0aW5zbl9hZGRpdSwgaW5zbl9hZGR1LCBpbnNuX2FuZCwgaW5zbl9hbmRpLCBpbnNuX2JiaXQwLCBpbnNuX2JiaXQxLFxuIFx0aW5zbl9iZXEsIGluc25fYmVxbCwgaW5zbl9iZ2V6LCBpbnNuX2JnZXpsLCBpbnNuX2JndHosIGluc25fYmxleixcbiBcdGluc25fYmx0eiwgaW5zbl9ibHR6bCwgaW5zbl9ibmUsIGluc25fYnJlYWssIGluc25fY2FjaGUsIGluc25fY2ZjMSxcbi1cdGluc25fY2ZjbXNhLCBpbnNuX2N0YzEsIGluc25fY3RjbXNhLCBpbnNuX2RhZGRpdSwgaW5zbl9kYWRkdSwgaW5zbl9kZGl2dSxcbi1cdGluc25fZGRpdnVfcjYsIGluc25fZGksIGluc25fZGlucywgaW5zbl9kaW5zbSwgaW5zbl9kaW5zdSwgaW5zbl9kaXZ1LFxuLVx0aW5zbl9kaXZ1X3I2LCBpbnNuX2RtZmMwLCBpbnNuX2Rtb2R1LCBpbnNuX2RtdGMwLCBpbnNuX2RtdWx0dSxcbiYjNDM7XHRpbnNuX2NmY21zYSwgaW5zbl9jdGMxLCBpbnNuX2N0Y21zYSwgaW5zbl9kYWRkaXUsIGluc25fZGFkZHUsIGluc25fZGRpdixcbiYjNDM7XHRpbnNuX2RkaXZfcjYsIGluc25fZGRpdnUsIGluc25fZGRpdnVfcjYsIGluc25fZGksIGluc25fZGlucywgaW5zbl9kaW5zbSxcbiYjNDM7XHRpbnNuX2RpbnN1LCBpbnNuX2RpdiwgaW5zbl9kaXZfcjYsIGluc25fZGl2dSwgaW5zbl9kaXZ1X3I2LCBpbnNuX2RtZmMwLFxuJiM0MztcdGluc25fZG1vZCwgaW5zbl9kbW9kdSwgaW5zbl9kbXRjMCwgaW5zbl9kbXVsdHUsXG4gXHRpbnNuX2RtdWx1LCBpbnNuX2Ryb3RyLCBpbnNuX2Ryb3RyMzIsIGluc25fZHNiaCwgaW5zbl9kc2hkLCBpbnNuX2RzbGwsXG4gXHRpbnNuX2RzbGwzMiwgaW5zbl9kc2xsdiwgaW5zbl9kc3JhLCBpbnNuX2RzcmEzMiwgaW5zbl9kc3JhdiwgaW5zbl9kc3JsLFxuIFx0aW5zbl9kc3JsMzIsIGluc25fZHNybHYsIGluc25fZHN1YnUsIGluc25fZXJldCwgaW5zbl9leHQsIGluc25faW5zLFxuIFx0aW5zbl9qLCBpbnNuX2phbCwgaW5zbl9qYWxyLCBpbnNuX2pyLCBpbnNuX2xiLCBpbnNuX2xidSwgaW5zbl9sZCxcbiBcdGluc25fbGRkaXIsIGluc25fbGRwdGUsIGluc25fbGR4LCBpbnNuX2xoLCBpbnNuX2xodSwgaW5zbl9sbCwgaW5zbl9sbGQsXG4gXHRpbnNuX2x1aSwgaW5zbl9sdywgaW5zbl9sd3UsIGluc25fbHd4LCBpbnNuX21mYzAsIGluc25fbWZoYzAsIGluc25fbWZoaSxcbi1cdGluc25fbWZsbywgaW5zbl9tb2R1LCBpbnNuX21vdm4sIGluc25fbW92eiwgaW5zbl9tdGMwLCBpbnNuX210aGMwLFxuLVx0aW5zbl9tdGhpLCBpbnNuX210bG8sIGluc25fbXVsLCBpbnNuX211bHR1LCBpbnNuX211bHUsIGluc25fbXVodSwgaW5zbl9ub3IsXG4tXHRpbnNuX29yLCBpbnNuX29yaSwgaW5zbl9wcmVmLCBpbnNuX3JmZSwgaW5zbl9yb3RyLCBpbnNuX3NiLCBpbnNuX3NjLFxuLVx0aW5zbl9zY2QsIGluc25fc2VsZXF6LCBpbnNuX3NlbG5leiwgaW5zbl9zZCwgaW5zbl9zaCwgaW5zbl9zbGwsXG4mIzQzO1x0aW5zbl9tZmxvLCBpbnNuX21vZCwgaW5zbl9tb2R1LCBpbnNuX21vdm4sIGluc25fbW92eiwgaW5zbl9tdGMwLFxuJiM0MztcdGluc25fbXRoYzAsIGluc25fbXRoaSwgaW5zbl9tdGxvLCBpbnNuX211bCwgaW5zbl9tdWx0dSwgaW5zbl9tdWx1LFxuJiM0MztcdGluc25fbXVodSwgaW5zbl9ub3IsIGluc25fb3IsIGluc25fb3JpLCBpbnNuX3ByZWYsIGluc25fcmZlLCBpbnNuX3JvdHIsXG4mIzQzO1x0aW5zbl9zYiwgaW5zbl9zYywgaW5zbl9zY2QsIGluc25fc2ViLCBpbnNuX3NlaCxcbiYjNDM7XHRpbnNuX3NlbGVxeiwgaW5zbl9zZWxuZXosIGluc25fc2QsIGluc25fc2gsIGluc25fc2xsLFxuIFx0aW5zbl9zbGx2LCBpbnNuX3NsdCwgaW5zbl9zbHRpLCBpbnNuX3NsdGl1LCBpbnNuX3NsdHUsIGluc25fc3JhLFxuIFx0aW5zbl9zcmF2LCBpbnNuX3NybCwgaW5zbl9zcmx2LCBpbnNuX3N1YnUsIGluc25fc3csIGluc25fc3luYyxcbiBcdGluc25fc3lzY2FsbCwgaW5zbl90bGJwLCBpbnNuX3RsYnIsIGluc25fdGxid2ksIGluc25fdGxid3IsIGluc25fd2FpdCxcbkBAIC0yODcsOSAmIzQzOzI4OSwxMiBAQCBJX3UxdTIoX2NmYzEpXG4gSV91MnUxKF9jZmNtc2EpXG4gSV91MXUyKF9jdGMxKVxuIElfdTJ1MShfY3RjbXNhKVxuJiM0MztJX3UxdTIoX2RkaXYpXG4mIzQzO0lfdTN1MXUyKF9kZGl2X3I2KVxuIElfdTF1MihfZGRpdnUpXG4gSV91M3UxdTIoX2RkaXZ1X3I2KVxuIElfdTF1MnUzKF9kbWZjMClcbiYjNDM7SV91M3UxdTIoX2Rtb2QpXG4gSV91M3UxdTIoX2Rtb2R1KVxuIElfdTF1MnUzKF9kbXRjMClcbiBJX3UxdTIoX2RtdWx0dSlcbkBAIC0yOTcsNiAmIzQzOzMwMiw4IEBAIElfdTN1MXUyKF9kbXVsdSlcbiBJX3UydTFzMyhfZGFkZGl1KVxuIElfdTN1MXUyKF9kYWRkdSlcbiBJX3UxKF9kaSk7XG4mIzQzO0lfdTF1MihfZGl2KVxuJiM0MztJX3UzdTF1MihfZGl2X3I2KVxuIElfdTF1MihfZGl2dSlcbiBJX3UzdTF1MihfZGl2dV9yNilcbiBJX3UydTEoX2RzYmgpO1xuQEAgLTMzMiw2ICYjNDM7MzM5LDcgQEAgSV91MnMzdTEoX2x3KVxuIElfdTJzM3UxKF9sd3UpXG4gSV91MXUydTMoX21mYzApXG4gSV91MXUydTMoX21maGMwKVxuJiM0MztJX3UzdTF1MihfbW9kKVxuIElfdTN1MXUyKF9tb2R1KVxuIElfdTN1MXUyKF9tb3ZuKVxuIElfdTN1MXUyKF9tb3Z6KVxuQEAgLTM1Myw2ICYjNDM7MzYxLDggQEAgSV91MnMzdTEoX3NiKVxuIElfdTJzM3UxKF9zYylcbiBJX3UyczN1MShfc2NkKVxuIElfdTJzM3UxKF9zZClcbiYjNDM7SV91MnUxKF9zZWIpXG4mIzQzO0lfdTJ1MShfc2VoKVxuIElfdTN1MXUyKF9zZWxlcXopXG4gSV91M3UxdTIoX3NlbG5leilcbiBJX3UyczN1MShfc2gpXG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmNcbmluZGV4IDZlZTRhYmU2YTFmNzAuLmYxNGRlNmQ3MzEyMjEgMTAwNjQ0XG4tLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jXG5AQCAtMjA4LDcgJiM0MzsyMDgsNyBAQCB2b2lkIGVtaXRfbW92X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjKVxuIH1cbiBcbiAvKiBWYWxpZGF0ZSBBTFUgaW1tZWRpYXRlIHJhbmdlICovXG4tYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSlcbiYjNDM7Ym9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSwgczE2IG9mZilcbiB7XG4gXHRzd2l0Y2ggKEJQRl9PUChvcCkpIHtcbiBcdGNhc2UgQlBGX05FRzpcbkBAIC0yMzcsNiAmIzQzOzIzNyw5IEBAIGJvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0pXG4gXHRcdHJldHVybiBpbW0gPT0gMCB8fCAoaW1tIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiBpc19wb3dlcl9vZl8yKGltbSkpO1xuIFx0Y2FzZSBCUEZfRElWOlxuIFx0Y2FzZSBCUEZfTU9EOlxuJiM0MztcdFx0LyogRG8gbm90IHVzZSB1bnNpZ25lZCBzaGlmdC9tYXNrIHJld3JpdGVzIGZvciBzaWduZWQgZGl2L21vZC4gKi9cbiYjNDM7XHRcdGlmIChvZmYgPT0gMSlcbiYjNDM7XHRcdFx0cmV0dXJuIGZhbHNlO1xuIFx0XHQvKiBpbW0gbXVzdCBiZSBhbiAxNy1iaXQgcG93ZXIgb2YgdHdvICovXG4gXHRcdHJldHVybiAodTMyKWltbSBcdTAwM2M9IDB4MTAwMDAgXHUwMDI2XHUwMDI2IGlzX3Bvd2VyX29mXzIoKHUzMilpbW0pO1xuIFx0fVxuQEAgLTMzOCw4ICYjNDM7MzQxLDQyIEBAIHZvaWQgZW1pdF9hbHVfaShzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCBzMzIgaW1tLCB1OCBvcClcbiBcdGNsb2JiZXJfcmVnKGN0eCwgZHN0KTtcbiB9XG4gXG4mIzQzOy8qIEFMVSBkaXZpc2lvbiBvcGVyYXRpb24gKDMyLWJpdCkgKi9cbiYjNDM7c3RhdGljIHZvaWQgZW1pdF9kaXYoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCBzMTYgb2ZmKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKGNwdV9oYXNfbWlwczMycjYpIHtcbiYjNDM7XHRcdGlmIChvZmYgPT0gMSlcbiYjNDM7XHRcdFx0ZW1pdChjdHgsIGRpdl9yNiwgZHN0LCBkc3QsIHNyYyk7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdGVtaXQoY3R4LCBkaXZ1X3I2LCBkc3QsIGRzdCwgc3JjKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0aWYgKG9mZiA9PSAxKVxuJiM0MztcdFx0XHRlbWl0KGN0eCwgZGl2LCBkc3QsIHNyYyk7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdGVtaXQoY3R4LCBkaXZ1LCBkc3QsIHNyYyk7XG4mIzQzO1x0XHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qIEFMVSBtb2R1bG8gb3BlcmF0aW9uICgzMi1iaXQpICovXG4mIzQzO3N0YXRpYyB2b2lkIGVtaXRfbW9kKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZilcbiYjNDM7e1xuJiM0MztcdGlmIChjcHVfaGFzX21pcHMzMnI2KSB7XG4mIzQzO1x0XHRpZiAob2ZmID09IDEpXG4mIzQzO1x0XHRcdGVtaXQoY3R4LCBtb2QsIGRzdCwgZHN0LCBzcmMpO1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRlbWl0KGN0eCwgbW9kdSwgZHN0LCBkc3QsIHNyYyk7XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdGlmIChvZmYgPT0gMSlcbiYjNDM7XHRcdFx0ZW1pdChjdHgsIGRpdiwgZHN0LCBzcmMpO1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRlbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpO1xuJiM0MztcdFx0ZW1pdChjdHgsIG1maGksIGRzdCk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuIC8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDMyLWJpdCkgKi9cbi12b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcClcbiYjNDM7dm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3AsIHMxNiBvZmYpXG4ge1xuIFx0c3dpdGNoIChCUEZfT1Aob3ApKSB7XG4gXHQvKiBkc3QgPSBkc3QgXHUwMDI2IHNyYyAqL1xuQEAgLTM4NSwyMSAmIzQzOzQyMiwxMSBAQCB2b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcClcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBkc3QgLyBzcmMgKi9cbiBcdGNhc2UgQlBGX0RJVjpcbi1cdFx0aWYgKGNwdV9oYXNfbWlwczMycjYpIHtcbi1cdFx0XHRlbWl0KGN0eCwgZGl2dV9yNiwgZHN0LCBkc3QsIHNyYyk7XG4tXHRcdH0gZWxzZSB7XG4tXHRcdFx0ZW1pdChjdHgsIGRpdnUsIGRzdCwgc3JjKTtcbi1cdFx0XHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcbi1cdFx0fVxuJiM0MztcdFx0ZW1pdF9kaXYoY3R4LCBkc3QsIHNyYywgb2ZmKTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBkc3QgJSBzcmMgKi9cbiBcdGNhc2UgQlBGX01PRDpcbi1cdFx0aWYgKGNwdV9oYXNfbWlwczMycjYpIHtcbi1cdFx0XHRlbWl0KGN0eCwgbW9kdSwgZHN0LCBkc3QsIHNyYyk7XG4tXHRcdH0gZWxzZSB7XG4tXHRcdFx0ZW1pdChjdHgsIGRpdnUsIGRzdCwgc3JjKTtcbi1cdFx0XHRlbWl0KGN0eCwgbWZoaSwgZHN0KTtcbi1cdFx0fVxuJiM0MztcdFx0ZW1pdF9tb2QoY3R4LCBkc3QsIHNyYywgb2ZmKTtcbiBcdFx0YnJlYWs7XG4gXHR9XG4gXHRjbG9iYmVyX3JlZyhjdHgsIGRzdCk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaCBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmhcbmluZGV4IGEzN2ZlMjA4MThlYjkuLjBkZGVkYjczM2RkMTkgMTAwNjQ0XG4tLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oXG5AQCAtMTYzLDcgJiM0MzsxNjMsNyBAQCB2b2lkIGVtaXRfbW92X2koc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSk7XG4gdm9pZCBlbWl0X21vdl9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYyk7XG4gXG4gLyogVmFsaWRhdGUgQUxVL0FMVTY0IGltbWVkaWF0ZSByYW5nZSAqL1xuLWJvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0pO1xuJiM0Mztib29sIHZhbGlkX2FsdV9pKHU4IG9wLCBzMzIgaW1tLCBzMTYgb2ZmKTtcbiBcbiAvKiBSZXdyaXRlIEFMVS9BTFU2NCBpbW1lZGlhdGUgb3BlcmF0aW9uICovXG4gYm9vbCByZXdyaXRlX2FsdV9pKHU4IG9wLCBzMzIgaW1tLCB1OCAqYWx1LCBzMzIgKnZhbCk7XG5AQCAtMTcyLDcgJiM0MzsxNzIsNyBAQCBib29sIHJld3JpdGVfYWx1X2kodTggb3AsIHMzMiBpbW0sIHU4ICphbHUsIHMzMiAqdmFsKTtcbiB2b2lkIGVtaXRfYWx1X2koc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApO1xuIFxuIC8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDMyLWJpdCkgKi9cbi12b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcCk7XG4mIzQzO3ZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLCBzMTYgb2ZmKTtcbiBcbiAvKiBBdG9taWMgcmVhZC1tb2RpZnktd3JpdGUgKDMyLWJpdCkgKi9cbiB2b2lkIGVtaXRfYXRvbWljX3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCBzMTYgb2ZmLCB1OCBjb2RlKTtcbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNcbmluZGV4IDQwYTg3OGI2NzJmNWQuLjY2MTkxODJiNWVmMzMgMTAwNjQ0XG4tLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY1xuQEAgLTUxMiw3ICYjNDM7NTEyLDcgQEAgc3RhdGljIHZvaWQgZW1pdF9tdWxfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LFxuIFx0Y2xvYmJlcl9yZWc2NChjdHgsIGRzdCk7XG4gfVxuIFxuLS8qIEhlbHBlciBmdW5jdGlvbiBmb3IgNjQtYml0IG1vZHVsbyAqL1xuJiM0MzsvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHVuc2lnbmVkIDY0LWJpdCBtb2R1bG8gKi9cbiBzdGF0aWMgdTY0IGppdF9tb2Q2NCh1NjQgYSwgdTY0IGIpXG4ge1xuIFx0dTY0IHJlbTtcbkBAIC01MjEsMTMgJiM0Mzs1MjEsMjIgQEAgc3RhdGljIHU2NCBqaXRfbW9kNjQodTY0IGEsIHU2NCBiKVxuIFx0cmV0dXJuIHJlbTtcbiB9XG4gXG4mIzQzOy8qIEhlbHBlciBmdW5jdGlvbiBmb3Igc2lnbmVkIDY0LWJpdCBtb2R1bG8gKi9cbiYjNDM7c3RhdGljIHM2NCBqaXRfc21vZDY0KHM2NCBhLCBzNjQgYilcbiYjNDM7e1xuJiM0MztcdHM2NCBxdW90ID0gZGl2NjRfczY0KGEsIGIpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gYSAtIHF1b3QgKiBiO1xuJiM0Mzt9XG4mIzQzO1xuIC8qIEFMVSBkaXYvbW9kIHJlZ2lzdGVyICg2NC1iaXQpICovXG4tc3RhdGljIHZvaWQgZW1pdF9kaXZtb2RfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LFxuLVx0XHRcdCAgICBjb25zdCB1OCBkc3RbXSwgY29uc3QgdTggc3JjW10sIHU4IG9wKVxuJiM0MztzdGF0aWMgdm9pZCBlbWl0X2Rpdm1vZF9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IGRzdFtdLFxuJiM0MztcdFx0XHQgICAgY29uc3QgdTggc3JjW10sIHU4IG9wLCBzMTYgb2ZmKVxuIHtcbiBcdGNvbnN0IHU4ICpyMCA9IGJwZjJtaXBzMzJbQlBGX1JFR18wXTsgLyogTWFwcGVkIHRvIHYwLXYxICovXG4gXHRjb25zdCB1OCAqcjEgPSBicGYybWlwczMyW0JQRl9SRUdfMV07IC8qIE1hcHBlZCB0byBhMC1hMSAqL1xuIFx0Y29uc3QgdTggKnIyID0gYnBmMm1pcHMzMltCUEZfUkVHXzJdOyAvKiBNYXBwZWQgdG8gYTItYTMgKi9cbiYjNDM7XHRib29sIGlzX3NpZ25lZCA9IG9mZiA9PSAxO1xuIFx0aW50IGV4Y2x1ZGUsIGs7XG4gXHR1MzIgYWRkciA9IDA7XG4gXG5AQCAtNTQ2LDExICYjNDM7NTU1LDExIEBAIHN0YXRpYyB2b2lkIGVtaXRfZGl2bW9kX3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCxcbiBcdHN3aXRjaCAoQlBGX09QKG9wKSkge1xuIFx0LyogZHN0ID0gZHN0IC8gc3JjICovXG4gXHRjYXNlIEJQRl9ESVY6XG4tXHRcdGFkZHIgPSAodTMyKVx1MDAyNmRpdjY0X3U2NDtcbiYjNDM7XHRcdGFkZHIgPSBpc19zaWduZWQgPyAodTMyKVx1MDAyNmRpdjY0X3M2NCA6ICh1MzIpXHUwMDI2ZGl2NjRfdTY0O1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGRzdCAlIHNyYyAqL1xuIFx0Y2FzZSBCUEZfTU9EOlxuLVx0XHRhZGRyID0gKHUzMilcdTAwMjZqaXRfbW9kNjQ7XG4mIzQzO1x0XHRhZGRyID0gaXNfc2lnbmVkID8gKHUzMilcdTAwMjZqaXRfc21vZDY0IDogKHUzMilcdTAwMjZqaXRfbW9kNjQ7XG4gXHRcdGJyZWFrO1xuIFx0fVxuIFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UOSwgYWRkcik7XG5AQCAtMTUxNiw5ICYjNDM7MTUyNSw5IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTVVMIHwgQlBGX0s6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfRElWIHwgQlBGX0s6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX0s6XG4tXHRcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0pKSB7XG4mIzQzO1x0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBvZmYpKSB7XG4gXHRcdFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNiwgaW1tKTtcbi1cdFx0XHRlbWl0X2FsdV9yKGN0eCwgbG8oZHN0KSwgTUlQU19SX1Q2LCBCUEZfT1AoY29kZSkpO1xuJiM0MztcdFx0XHRlbWl0X2FsdV9yKGN0eCwgbG8oZHN0KSwgTUlQU19SX1Q2LCBCUEZfT1AoY29kZSksIG9mZik7XG4gXHRcdH0gZWxzZSBpZiAocmV3cml0ZV9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgXHUwMDI2YWx1LCBcdTAwMjZ2YWwpKSB7XG4gXHRcdFx0ZW1pdF9hbHVfaShjdHgsIGxvKGRzdCksIHZhbCwgYWx1KTtcbiBcdFx0fVxuQEAgLTE1NDYsNyAmIzQzOzE1NTUsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01VTCB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0RJViB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01PRCB8IEJQRl9YOlxuLVx0XHRlbWl0X2FsdV9yKGN0eCwgbG8oZHN0KSwgbG8oc3JjKSwgQlBGX09QKGNvZGUpKTtcbiYjNDM7XHRcdGVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpLCBCUEZfT1AoY29kZSksIG9mZik7XG4gXHRcdGVtaXRfemV4dF92ZXIoY3R4LCBkc3QpO1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGltbSAoNjQtYml0KSAqL1xuQEAgLTE1OTksNyAmIzQzOzE2MDgsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0XHQgKiBhbmQgdGhlbiBkbyB0aGUgb3BlcmF0aW9uIG9uIHRoaXMgcmVnaXN0ZXIuXG4gXHRcdCAqL1xuIFx0XHRlbWl0X21vdl9zZV9pNjQoY3R4LCB0bXAsIGltbSk7XG4tXHRcdGVtaXRfZGl2bW9kX3I2NChjdHgsIGRzdCwgdG1wLCBCUEZfT1AoY29kZSkpO1xuJiM0MztcdFx0ZW1pdF9kaXZtb2RfcjY0KGN0eCwgZHN0LCB0bXAsIEJQRl9PUChjb2RlKSwgb2ZmKTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBkc3QgXHUwMDI2IHNyYyAoNjQtYml0KSAqL1xuIFx0LyogZHN0ID0gZHN0IHwgc3JjICg2NC1iaXQpICovXG5AQCAtMTYyOSw3ICYjNDM7MTYzOCw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHQvKiBkc3QgPSBkc3QgJSBzcmMgKDY0LWJpdCkgKi9cbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX0RJViB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTU9EIHwgQlBGX1g6XG4tXHRcdGVtaXRfZGl2bW9kX3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSkpO1xuJiM0MztcdFx0ZW1pdF9kaXZtb2RfcjY0KGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSwgb2ZmKTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBodG9sZShkc3QpICovXG4gXHQvKiBkc3QgPSBodG9iZShkc3QpICovXG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jXG5pbmRleCBmYTdlOWFhMzdmNDk4Li5kYjAyN2MyZDkyMjEyIDEwMDY0NFxuLS0tIGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNcbkBAIC0xOTcsOCAmIzQzOzE5Nyw0MyBAQCBzdGF0aWMgdm9pZCBlbWl0X2FsdV9pNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApXG4gXHRjbG9iYmVyX3JlZyhjdHgsIGRzdCk7XG4gfVxuIFxuJiM0MzsvKiBBTFUgZGl2aXNpb24gb3BlcmF0aW9uICg2NC1iaXQpICovXG4mIzQzO3N0YXRpYyB2b2lkIGVtaXRfZGl2NjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCBzMTYgb2ZmKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKGNwdV9oYXNfbWlwczY0cjYpIHtcbiYjNDM7XHRcdGlmIChvZmYgPT0gMSlcbiYjNDM7XHRcdFx0ZW1pdChjdHgsIGRkaXZfcjYsIGRzdCwgZHN0LCBzcmMpO1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRlbWl0KGN0eCwgZGRpdnVfcjYsIGRzdCwgZHN0LCBzcmMpO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRpZiAob2ZmID09IDEpXG4mIzQzO1x0XHRcdGVtaXQoY3R4LCBkZGl2LCBkc3QsIHNyYyk7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdGVtaXQoY3R4LCBkZGl2dSwgZHN0LCBzcmMpO1xuJiM0MztcdFx0ZW1pdChjdHgsIG1mbG8sIGRzdCk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKiBBTFUgbW9kdWxvIG9wZXJhdGlvbiAoNjQtYml0KSAqL1xuJiM0MztzdGF0aWMgdm9pZCBlbWl0X21vZDY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZilcbiYjNDM7e1xuJiM0MztcdGlmIChjcHVfaGFzX21pcHM2NHI2KSB7XG4mIzQzO1x0XHRpZiAob2ZmID09IDEpXG4mIzQzO1x0XHRcdGVtaXQoY3R4LCBkbW9kLCBkc3QsIGRzdCwgc3JjKTtcbiYjNDM7XHRcdGVsc2VcbiYjNDM7XHRcdFx0ZW1pdChjdHgsIGRtb2R1LCBkc3QsIGRzdCwgc3JjKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0aWYgKG9mZiA9PSAxKVxuJiM0MztcdFx0XHRlbWl0KGN0eCwgZGRpdiwgZHN0LCBzcmMpO1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRlbWl0KGN0eCwgZGRpdnUsIGRzdCwgc3JjKTtcbiYjNDM7XHRcdGVtaXQoY3R4LCBtZmhpLCBkc3QpO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiAvKiBBTFUgcmVnaXN0ZXIgb3BlcmF0aW9uICg2NC1iaXQpICovXG4tc3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApXG4mIzQzO3N0YXRpYyB2b2lkIGVtaXRfYWx1X3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLFxuJiM0MztcdFx0XHQgczE2IG9mZilcbiB7XG4gXHRzd2l0Y2ggKEJQRl9PUChvcCkpIHtcbiBcdC8qIGRzdCA9IGRzdCBcdTAwM2NcdTAwM2Mgc3JjICovXG5AQCAtMjM1LDI1ICYjNDM7MjcwLDE1IEBAIHN0YXRpYyB2b2lkIGVtaXRfYWx1X3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wKVxuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGRzdCAvIHNyYyAqL1xuIFx0Y2FzZSBCUEZfRElWOlxuLVx0XHRpZiAoY3B1X2hhc19taXBzNjRyNikge1xuLVx0XHRcdGVtaXQoY3R4LCBkZGl2dV9yNiwgZHN0LCBkc3QsIHNyYyk7XG4tXHRcdH0gZWxzZSB7XG4tXHRcdFx0ZW1pdChjdHgsIGRkaXZ1LCBkc3QsIHNyYyk7XG4tXHRcdFx0ZW1pdChjdHgsIG1mbG8sIGRzdCk7XG4tXHRcdH1cbiYjNDM7XHRcdGVtaXRfZGl2NjQoY3R4LCBkc3QsIHNyYywgb2ZmKTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBkc3QgJSBzcmMgKi9cbiBcdGNhc2UgQlBGX01PRDpcbi1cdFx0aWYgKGNwdV9oYXNfbWlwczY0cjYpIHtcbi1cdFx0XHRlbWl0KGN0eCwgZG1vZHUsIGRzdCwgZHN0LCBzcmMpO1xuLVx0XHR9IGVsc2Uge1xuLVx0XHRcdGVtaXQoY3R4LCBkZGl2dSwgZHN0LCBzcmMpO1xuLVx0XHRcdGVtaXQoY3R4LCBtZmhpLCBkc3QpO1xuLVx0XHR9XG4mIzQzO1x0XHRlbWl0X21vZDY0KGN0eCwgZHN0LCBzcmMsIG9mZik7XG4gXHRcdGJyZWFrO1xuIFx0ZGVmYXVsdDpcbiBcdFx0LyogV2lkdGgtZ2VuZXJpYyBvcGVyYXRpb25zICovXG4tXHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIHNyYywgb3ApO1xuJiM0MztcdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgc3JjLCBvcCwgb2ZmKTtcbiBcdH1cbiBcdGNsb2JiZXJfcmVnKGN0eCwgZHN0KTtcbiB9XG5AQCAtNjc0LDkgJiM0Mzs2OTksOSBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0FORCB8IEJQRl9LOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX1hPUiB8IEJQRl9LOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0xTSCB8IEJQRl9LOlxuLVx0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkge1xuJiM0MztcdFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgb2ZmKSkge1xuIFx0XHRcdGVtaXRfbW92X2koY3R4LCBNSVBTX1JfVDQsIGltbSk7XG4tXHRcdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSkpO1xuJiM0MztcdFx0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSwgb2ZmKTtcbiBcdFx0fSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBcdTAwMjZhbHUsIFx1MDAyNnZhbCkpIHtcbiBcdFx0XHRlbWl0X2FsdV9pKGN0eCwgZHN0LCB2YWwsIGFsdSk7XG4gXHRcdH1cbkBAIC02OTYsMTAgJiM0Mzs3MjEsMTAgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9NVUwgfCBCUEZfSzpcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9ESVYgfCBCUEZfSzpcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfSzpcbi1cdFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSkpIHtcbiYjNDM7XHRcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIG9mZikpIHtcbiBcdFx0XHRlbWl0X3NleHQoY3R4LCBkc3QsIGRzdCk7XG4gXHRcdFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTtcbi1cdFx0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSk7XG4mIzQzO1x0XHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBvZmYpO1xuIFx0XHR9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIFx1MDAyNmFsdSwgXHUwMDI2dmFsKSkge1xuIFx0XHRcdGVtaXRfc2V4dChjdHgsIGRzdCwgZHN0KTtcbiBcdFx0XHRlbWl0X2FsdV9pKGN0eCwgZHN0LCB2YWwsIGFsdSk7XG5AQCAtNzE0LDcgJiM0Mzs3MzksNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX09SIHwgQlBGX1g6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfWE9SIHwgQlBGX1g6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTFNIIHwgQlBGX1g6XG4tXHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpKTtcbiYjNDM7XHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpLCBvZmYpO1xuIFx0XHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBkc3QgXHUwMDNlXHUwMDNlIHNyYyAqL1xuQEAgLTczMyw3ICYjNDM7NzU4LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfWDpcbiBcdFx0ZW1pdF9zZXh0KGN0eCwgZHN0LCBkc3QpO1xuIFx0XHRlbWl0X3NleHQoY3R4LCBNSVBTX1JfVDQsIHNyYyk7XG4tXHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTtcbiYjNDM7XHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBvZmYpO1xuIFx0XHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBpbW0gKDY0LWJpdCkgKi9cbkBAIC03NzAsOSAmIzQzOzc5NSw5IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NVUwgfCBCUEZfSzpcbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX0RJViB8IEJQRl9LOlxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTU9EIHwgQlBGX0s6XG4tXHRcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0pKSB7XG4mIzQzO1x0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBvZmYpKSB7XG4gXHRcdFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTtcbi1cdFx0XHRlbWl0X2FsdV9yNjQoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTtcbiYjNDM7XHRcdFx0ZW1pdF9hbHVfcjY0KGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSwgb2ZmKTtcbiBcdFx0fSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBcdTAwMjZhbHUsIFx1MDAyNnZhbCkpIHtcbiBcdFx0XHRlbWl0X2FsdV9pNjQoY3R4LCBkc3QsIHZhbCwgYWx1KTtcbiBcdFx0fVxuQEAgLTc5OSw3ICYjNDM7ODI0LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01VTCB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfRElWIHwgQlBGX1g6XG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NT0QgfCBCUEZfWDpcbi1cdFx0ZW1pdF9hbHVfcjY0KGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSk7XG4mIzQzO1x0XHRlbWl0X2FsdV9yNjQoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpLCBvZmYpO1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGh0b2xlKGRzdCkgKi9cbiBcdC8qIGRzdCA9IGh0b2JlKGRzdCkgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAyMjoyMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBNSVBTIG1pY3JvLWFzc2VtYmxlciByb3V0aW5lcyBhbmQgTUlQUyBCUEYgSklUIGNvbXBpbGVyIGltcGxlbWVudGF0aW9ucyAodW5kZXIgYXJjaC9taXBzLykuIEJlY2F1c2UgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgYW1kNjQsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIGV4Y2x1c2l2ZSB0byBNSVBTIGFuZCBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcgb24gYW1kNjQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgY2Y2ZDc0M2ZiZDY1YjJjY2RhZWIyMzIzYTE5ZjYwN2UxOWQ4ODZkYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgU2VwIDExIDIyOjIwOjQzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3Vhc20uaCBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS91YXNtLmgKaW5kZXggYjQzYmZkNDQ1MjUyMS4uYWRlYTM1ZGYwZjhkYyAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3Vhc20uaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oCkBAIC04NSwxNSAmIzQzOzg1LDIwIEBAIElwX3UxdTIoX2N0YzEpOwogSXBfdTJ1MShfY3RjbXNhKTsKIElwX3UydTFzMyhfZGFkZGl1KTsKIElwX3UzdTF1MihfZGFkZHUpOwomIzQzO0lwX3UxdTIoX2RkaXYpOwomIzQzO0lwX3UzdTF1MihfZGRpdl9yNik7CiBJcF91MXUyKF9kZGl2dSk7CiBJcF91M3UxdTIoX2RkaXZ1X3I2KTsKIElwX3UxKF9kaSk7CiBJcF91MnUxbXNidTMoX2RpbnMpOwogSXBfdTJ1MW1zYnUzKF9kaW5zbSk7CiBJcF91MnUxbXNidTMoX2RpbnN1KTsKJiM0MztJcF91MXUyKF9kaXYpOwomIzQzO0lwX3UzdTF1MihfZGl2X3I2KTsKIElwX3UxdTIoX2RpdnUpOwogSXBfdTN1MXUyKF9kaXZ1X3I2KTsKIElwX3UxdTJ1MyhfZG1mYzApOwomIzQzO0lwX3UzdTF1MihfZG1vZCk7CiBJcF91M3UxdTIoX2Rtb2R1KTsKIElwX3UxdTJ1MyhfZG10YzApOwogSXBfdTF1MihfZG11bHR1KTsKQEAgLTEzNSw2ICYjNDM7MTQwLDcgQEAgSXBfdTF1MnUzKF9tZmMwKTsKIElwX3UxdTJ1MyhfbWZoYzApOwogSXBfdTEoX21maGkpOwogSXBfdTEoX21mbG8pOwomIzQzO0lwX3UzdTF1MihfbW9kKTsKIElwX3UzdTF1MihfbW9kdSk7CiBJcF91M3UxdTIoX21vdm4pOwogSXBfdTN1MXUyKF9tb3Z6KTsKQEAgLTE1Niw2ICYjNDM7MTYyLDggQEAgSXBfdTJzM3UxKF9zYik7CiBJcF91MnMzdTEoX3NjKTsKIElwX3UyczN1MShfc2NkKTsKIElwX3UyczN1MShfc2QpOwomIzQzO0lwX3UydTEoX3NlYik7CiYjNDM7SXBfdTJ1MShfc2VoKTsKIElwX3UzdTF1Mihfc2VsZXF6KTsKIElwX3UzdTF1Mihfc2VsbmV6KTsKIElwX3UyczN1MShfc2gpOwpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL21tL3Vhc20tbWlwcy5jIGIvYXJjaC9taXBzL21tL3Vhc20tbWlwcy5jCmluZGV4IGUxNWM2NzAwY2QwODguLjJkMTY2OGI1OGRkZGUgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9tbS91YXNtLW1pcHMuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL21pcHMvbW0vdWFzbS1taXBzLmMKQEAgLTc1LDYgJiM0Mzs3NSw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW5zbiBpbnNuX3RhYmxlW2luc25faW52YWxpZF0gPSB7CiAJW2luc25fY3RjbXNhXQk9IHtNKG1zYV9vcCwgMCwgbXNhX2N0Y19vcCwgMCwgMCwgbXNhX2VsbV9vcCksIFJEIHwgUkV9LAogCVtpbnNuX2RhZGRpdV0JPSB7TShkYWRkaXVfb3AsIDAsIDAsIDAsIDAsIDApLCBSUyB8IFJUIHwgU0lNTX0sCiAJW2luc25fZGFkZHVdCT0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgZGFkZHVfb3ApLCBSUyB8IFJUIHwgUkR9LAomIzQzOwlbaW5zbl9kZGl2XQk9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRkaXZfb3ApLCBSUyB8IFJUfSwKJiM0MzsJW2luc25fZGRpdl9yNl0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCBkZGl2X2RkaXY2X29wLCBkZGl2X29wKSwKJiM0MzsJCQkJUlMgfCBSVCB8IFJEfSwKIAlbaW5zbl9kZGl2dV0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkZGl2dV9vcCksIFJTIHwgUlR9LAogCVtpbnNuX2RkaXZ1X3I2XQk9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRkaXZ1X2RkaXZ1Nl9vcCwgZGRpdnVfb3ApLAogCQkJCVJTIHwgUlQgfCBSRH0sCkBAIC04MiwxMCAmIzQzOzg1LDE1IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW5zbiBpbnNuX3RhYmxlW2luc25faW52YWxpZF0gPSB7CiAJW2luc25fZGluc10JPSB7TShzcGVjM19vcCwgMCwgMCwgMCwgMCwgZGluc19vcCksIFJTIHwgUlQgfCBSRCB8IFJFfSwKIAlbaW5zbl9kaW5zbV0JPSB7TShzcGVjM19vcCwgMCwgMCwgMCwgMCwgZGluc21fb3ApLCBSUyB8IFJUIHwgUkQgfCBSRX0sCiAJW2luc25fZGluc3VdCT0ge00oc3BlYzNfb3AsIDAsIDAsIDAsIDAsIGRpbnN1X29wKSwgUlMgfCBSVCB8IFJEIHwgUkV9LAomIzQzOwlbaW5zbl9kaXZdCT0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgZGl2X29wKSwgUlMgfCBSVH0sCiYjNDM7CVtpbnNuX2Rpdl9yNl0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCBkaXZfZGl2Nl9vcCwgZGl2X29wKSwKJiM0MzsJCQkJUlMgfCBSVCB8IFJEfSwKIAlbaW5zbl9kaXZ1XQk9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRpdnVfb3ApLCBSUyB8IFJUfSwKIAlbaW5zbl9kaXZ1X3I2XQk9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRpdnVfZGl2dTZfb3AsIGRpdnVfb3ApLAogCQkJCVJTIHwgUlQgfCBSRH0sCiAJW2luc25fZG1mYzBdCT0ge00oY29wMF9vcCwgZG1mY19vcCwgMCwgMCwgMCwgMCksIFJUIHwgUkQgfCBTRVR9LAomIzQzOwlbaW5zbl9kbW9kXQk9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRkaXZfZG1vZF9vcCwgZGRpdl9vcCksCiYjNDM7CQkJCVJTIHwgUlQgfCBSRH0sCiAJW2luc25fZG1vZHVdCT0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGRpdnVfZG1vZHVfb3AsIGRkaXZ1X29wKSwKIAkJCQlSUyB8IFJUIHwgUkR9LAogCVtpbnNuX2RtdGMwXQk9IHtNKGNvcDBfb3AsIGRtdGNfb3AsIDAsIDAsIDAsIDApLCBSVCB8IFJEIHwgU0VUfSwKQEAgLTE0MCw2ICYjNDM7MTQ4LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnNuIGluc25fdGFibGVbaW5zbl9pbnZhbGlkXSA9IHsKIAlbaW5zbl9tZmhjMF0JPSB7TShjb3AwX29wLCBtZmhjMF9vcCwgMCwgMCwgMCwgMCksICBSVCB8IFJEIHwgU0VUfSwKIAlbaW5zbl9tZmhpXQk9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIG1maGlfb3ApLCBSRH0sCiAJW2luc25fbWZsb10JPSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBtZmxvX29wKSwgUkR9LAomIzQzOwlbaW5zbl9tb2RdCT0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGl2X21vZF9vcCwgZGl2X29wKSwKJiM0MzsJCQkJUlMgfCBSVCB8IFJEfSwKIAlbaW5zbl9tb2R1XQk9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRpdnVfbW9kdV9vcCwgZGl2dV9vcCksCiAJCQkJUlMgfCBSVCB8IFJEfSwKIAlbaW5zbl9tb3ZuXQk9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIG1vdm5fb3ApLCBSUyB8IFJUIHwgUkR9LApAQCAtMTc3LDYgJiM0MzsxODcsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGluc24gaW5zbl90YWJsZVtpbnNuX2ludmFsaWRdID0gewogCVtpbnNuX3NjZF0JPSB7TTYoc3BlYzNfb3AsIDAsIDAsIDAsIHNjZDZfb3ApLCAgUlMgfCBSVCB8IFNJTU05fSwKICNlbmRpZgogCVtpbnNuX3NkXQk9IHtNKHNkX29wLCAwLCAwLCAwLCAwLCAwKSwgIFJTIHwgUlQgfCBTSU1NfSwKJiM0MzsJW2luc25fc2ViXQk9IHtNKHNwZWMzX29wLCAwLCAwLCAwLCBzZWJfb3AsIGJzaGZsX29wKSwgUlQgfCBSRH0sCiYjNDM7CVtpbnNuX3NlaF0JPSB7TShzcGVjM19vcCwgMCwgMCwgMCwgc2VoX29wLCBic2hmbF9vcCksIFJUIHwgUkR9LAogCVtpbnNuX3NlbGVxel0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBzZWxlcXpfb3ApLCBSUyB8IFJUIHwgUkR9LAogCVtpbnNuX3NlbG5lel0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBzZWxuZXpfb3ApLCBSUyB8IFJUIHwgUkR9LAogCVtpbnNuX3NoXQk9IHtNKHNoX29wLCAwLCAwLCAwLCAwLCAwKSwgIFJTIHwgUlQgfCBTSU1NfSwKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9tbS91YXNtLmMgYi9hcmNoL21pcHMvbW0vdWFzbS5jCmluZGV4IDEyNTE0MDk3OWQ2MmMuLjEzOWFmYjBlMTRjZGYgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9tbS91YXNtLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9taXBzL21tL3Vhc20uYwpAQCAtNDksMTkgJiM0Mzs0OSwyMSBAQCBlbnVtIG9wY29kZSB7CiAJaW5zbl9hZGRpdSwgaW5zbl9hZGR1LCBpbnNuX2FuZCwgaW5zbl9hbmRpLCBpbnNuX2JiaXQwLCBpbnNuX2JiaXQxLAogCWluc25fYmVxLCBpbnNuX2JlcWwsIGluc25fYmdleiwgaW5zbl9iZ2V6bCwgaW5zbl9iZ3R6LCBpbnNuX2JsZXosCiAJaW5zbl9ibHR6LCBpbnNuX2JsdHpsLCBpbnNuX2JuZSwgaW5zbl9icmVhaywgaW5zbl9jYWNoZSwgaW5zbl9jZmMxLAotCWluc25fY2ZjbXNhLCBpbnNuX2N0YzEsIGluc25fY3RjbXNhLCBpbnNuX2RhZGRpdSwgaW5zbl9kYWRkdSwgaW5zbl9kZGl2dSwKLQlpbnNuX2RkaXZ1X3I2LCBpbnNuX2RpLCBpbnNuX2RpbnMsIGluc25fZGluc20sIGluc25fZGluc3UsIGluc25fZGl2dSwKLQlpbnNuX2RpdnVfcjYsIGluc25fZG1mYzAsIGluc25fZG1vZHUsIGluc25fZG10YzAsIGluc25fZG11bHR1LAomIzQzOwlpbnNuX2NmY21zYSwgaW5zbl9jdGMxLCBpbnNuX2N0Y21zYSwgaW5zbl9kYWRkaXUsIGluc25fZGFkZHUsIGluc25fZGRpdiwKJiM0MzsJaW5zbl9kZGl2X3I2LCBpbnNuX2RkaXZ1LCBpbnNuX2RkaXZ1X3I2LCBpbnNuX2RpLCBpbnNuX2RpbnMsIGluc25fZGluc20sCiYjNDM7CWluc25fZGluc3UsIGluc25fZGl2LCBpbnNuX2Rpdl9yNiwgaW5zbl9kaXZ1LCBpbnNuX2RpdnVfcjYsIGluc25fZG1mYzAsCiYjNDM7CWluc25fZG1vZCwgaW5zbl9kbW9kdSwgaW5zbl9kbXRjMCwgaW5zbl9kbXVsdHUsCiAJaW5zbl9kbXVsdSwgaW5zbl9kcm90ciwgaW5zbl9kcm90cjMyLCBpbnNuX2RzYmgsIGluc25fZHNoZCwgaW5zbl9kc2xsLAogCWluc25fZHNsbDMyLCBpbnNuX2RzbGx2LCBpbnNuX2RzcmEsIGluc25fZHNyYTMyLCBpbnNuX2RzcmF2LCBpbnNuX2RzcmwsCiAJaW5zbl9kc3JsMzIsIGluc25fZHNybHYsIGluc25fZHN1YnUsIGluc25fZXJldCwgaW5zbl9leHQsIGluc25faW5zLAogCWluc25faiwgaW5zbl9qYWwsIGluc25famFsciwgaW5zbl9qciwgaW5zbl9sYiwgaW5zbl9sYnUsIGluc25fbGQsCiAJaW5zbl9sZGRpciwgaW5zbl9sZHB0ZSwgaW5zbl9sZHgsIGluc25fbGgsIGluc25fbGh1LCBpbnNuX2xsLCBpbnNuX2xsZCwKIAlpbnNuX2x1aSwgaW5zbl9sdywgaW5zbl9sd3UsIGluc25fbHd4LCBpbnNuX21mYzAsIGluc25fbWZoYzAsIGluc25fbWZoaSwKLQlpbnNuX21mbG8sIGluc25fbW9kdSwgaW5zbl9tb3ZuLCBpbnNuX21vdnosIGluc25fbXRjMCwgaW5zbl9tdGhjMCwKLQlpbnNuX210aGksIGluc25fbXRsbywgaW5zbl9tdWwsIGluc25fbXVsdHUsIGluc25fbXVsdSwgaW5zbl9tdWh1LCBpbnNuX25vciwKLQlpbnNuX29yLCBpbnNuX29yaSwgaW5zbl9wcmVmLCBpbnNuX3JmZSwgaW5zbl9yb3RyLCBpbnNuX3NiLCBpbnNuX3NjLAotCWluc25fc2NkLCBpbnNuX3NlbGVxeiwgaW5zbl9zZWxuZXosIGluc25fc2QsIGluc25fc2gsIGluc25fc2xsLAomIzQzOwlpbnNuX21mbG8sIGluc25fbW9kLCBpbnNuX21vZHUsIGluc25fbW92biwgaW5zbl9tb3Z6LCBpbnNuX210YzAsCiYjNDM7CWluc25fbXRoYzAsIGluc25fbXRoaSwgaW5zbl9tdGxvLCBpbnNuX211bCwgaW5zbl9tdWx0dSwgaW5zbl9tdWx1LAomIzQzOwlpbnNuX211aHUsIGluc25fbm9yLCBpbnNuX29yLCBpbnNuX29yaSwgaW5zbl9wcmVmLCBpbnNuX3JmZSwgaW5zbl9yb3RyLAomIzQzOwlpbnNuX3NiLCBpbnNuX3NjLCBpbnNuX3NjZCwgaW5zbl9zZWIsIGluc25fc2VoLAomIzQzOwlpbnNuX3NlbGVxeiwgaW5zbl9zZWxuZXosIGluc25fc2QsIGluc25fc2gsIGluc25fc2xsLAogCWluc25fc2xsdiwgaW5zbl9zbHQsIGluc25fc2x0aSwgaW5zbl9zbHRpdSwgaW5zbl9zbHR1LCBpbnNuX3NyYSwKIAlpbnNuX3NyYXYsIGluc25fc3JsLCBpbnNuX3NybHYsIGluc25fc3VidSwgaW5zbl9zdywgaW5zbl9zeW5jLAogCWluc25fc3lzY2FsbCwgaW5zbl90bGJwLCBpbnNuX3RsYnIsIGluc25fdGxid2ksIGluc25fdGxid3IsIGluc25fd2FpdCwKQEAgLTI4Nyw5ICYjNDM7Mjg5LDEyIEBAIElfdTF1MihfY2ZjMSkKIElfdTJ1MShfY2ZjbXNhKQogSV91MXUyKF9jdGMxKQogSV91MnUxKF9jdGNtc2EpCiYjNDM7SV91MXUyKF9kZGl2KQomIzQzO0lfdTN1MXUyKF9kZGl2X3I2KQogSV91MXUyKF9kZGl2dSkKIElfdTN1MXUyKF9kZGl2dV9yNikKIElfdTF1MnUzKF9kbWZjMCkKJiM0MztJX3UzdTF1MihfZG1vZCkKIElfdTN1MXUyKF9kbW9kdSkKIElfdTF1MnUzKF9kbXRjMCkKIElfdTF1MihfZG11bHR1KQpAQCAtMjk3LDYgJiM0MzszMDIsOCBAQCBJX3UzdTF1MihfZG11bHUpCiBJX3UydTFzMyhfZGFkZGl1KQogSV91M3UxdTIoX2RhZGR1KQogSV91MShfZGkpOwomIzQzO0lfdTF1MihfZGl2KQomIzQzO0lfdTN1MXUyKF9kaXZfcjYpCiBJX3UxdTIoX2RpdnUpCiBJX3UzdTF1MihfZGl2dV9yNikKIElfdTJ1MShfZHNiaCk7CkBAIC0zMzIsNiAmIzQzOzMzOSw3IEBAIElfdTJzM3UxKF9sdykKIElfdTJzM3UxKF9sd3UpCiBJX3UxdTJ1MyhfbWZjMCkKIElfdTF1MnUzKF9tZmhjMCkKJiM0MztJX3UzdTF1MihfbW9kKQogSV91M3UxdTIoX21vZHUpCiBJX3UzdTF1MihfbW92bikKIElfdTN1MXUyKF9tb3Z6KQpAQCAtMzUzLDYgJiM0MzszNjEsOCBAQCBJX3UyczN1MShfc2IpCiBJX3UyczN1MShfc2MpCiBJX3UyczN1MShfc2NkKQogSV91MnMzdTEoX3NkKQomIzQzO0lfdTJ1MShfc2ViKQomIzQzO0lfdTJ1MShfc2VoKQogSV91M3UxdTIoX3NlbGVxeikKIElfdTN1MXUyKF9zZWxuZXopCiBJX3UyczN1MShfc2gpCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYwppbmRleCA2ZWU0YWJlNmExZjcwLi5mMTRkZTZkNzMxMjIxIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmMKQEAgLTIwOCw3ICYjNDM7MjA4LDcgQEAgdm9pZCBlbWl0X21vdl9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYykKIH0KIAogLyogVmFsaWRhdGUgQUxVIGltbWVkaWF0ZSByYW5nZSAqLwotYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSkKJiM0Mztib29sIHZhbGlkX2FsdV9pKHU4IG9wLCBzMzIgaW1tLCBzMTYgb2ZmKQogewogCXN3aXRjaCAoQlBGX09QKG9wKSkgewogCWNhc2UgQlBGX05FRzoKQEAgLTIzNyw2ICYjNDM7MjM3LDkgQEAgYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSkKIAkJcmV0dXJuIGltbSA9PSAwIHx8IChpbW0gJmd0OyAwICZhbXA7JmFtcDsgaXNfcG93ZXJfb2ZfMihpbW0pKTsKIAljYXNlIEJQRl9ESVY6CiAJY2FzZSBCUEZfTU9EOgomIzQzOwkJLyogRG8gbm90IHVzZSB1bnNpZ25lZCBzaGlmdC9tYXNrIHJld3JpdGVzIGZvciBzaWduZWQgZGl2L21vZC4gKi8KJiM0MzsJCWlmIChvZmYgPT0gMSkKJiM0MzsJCQlyZXR1cm4gZmFsc2U7CiAJCS8qIGltbSBtdXN0IGJlIGFuIDE3LWJpdCBwb3dlciBvZiB0d28gKi8KIAkJcmV0dXJuICh1MzIpaW1tICZsdDs9IDB4MTAwMDAgJmFtcDsmYW1wOyBpc19wb3dlcl9vZl8yKCh1MzIpaW1tKTsKIAl9CkBAIC0zMzgsOCAmIzQzOzM0MSw0MiBAQCB2b2lkIGVtaXRfYWx1X2koc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApCiAJY2xvYmJlcl9yZWcoY3R4LCBkc3QpOwogfQogCiYjNDM7LyogQUxVIGRpdmlzaW9uIG9wZXJhdGlvbiAoMzItYml0KSAqLwomIzQzO3N0YXRpYyB2b2lkIGVtaXRfZGl2KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZikKJiM0Mzt7CiYjNDM7CWlmIChjcHVfaGFzX21pcHMzMnI2KSB7CiYjNDM7CQlpZiAob2ZmID09IDEpCiYjNDM7CQkJZW1pdChjdHgsIGRpdl9yNiwgZHN0LCBkc3QsIHNyYyk7CiYjNDM7CQllbHNlCiYjNDM7CQkJZW1pdChjdHgsIGRpdnVfcjYsIGRzdCwgZHN0LCBzcmMpOwomIzQzOwl9IGVsc2UgewomIzQzOwkJaWYgKG9mZiA9PSAxKQomIzQzOwkJCWVtaXQoY3R4LCBkaXYsIGRzdCwgc3JjKTsKJiM0MzsJCWVsc2UKJiM0MzsJCQllbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpOwomIzQzOwkJZW1pdChjdHgsIG1mbG8sIGRzdCk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7LyogQUxVIG1vZHVsbyBvcGVyYXRpb24gKDMyLWJpdCkgKi8KJiM0MztzdGF0aWMgdm9pZCBlbWl0X21vZChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHMxNiBvZmYpCiYjNDM7ewomIzQzOwlpZiAoY3B1X2hhc19taXBzMzJyNikgewomIzQzOwkJaWYgKG9mZiA9PSAxKQomIzQzOwkJCWVtaXQoY3R4LCBtb2QsIGRzdCwgZHN0LCBzcmMpOwomIzQzOwkJZWxzZQomIzQzOwkJCWVtaXQoY3R4LCBtb2R1LCBkc3QsIGRzdCwgc3JjKTsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWlmIChvZmYgPT0gMSkKJiM0MzsJCQllbWl0KGN0eCwgZGl2LCBkc3QsIHNyYyk7CiYjNDM7CQllbHNlCiYjNDM7CQkJZW1pdChjdHgsIGRpdnUsIGRzdCwgc3JjKTsKJiM0MzsJCWVtaXQoY3R4LCBtZmhpLCBkc3QpOwomIzQzOwl9CiYjNDM7fQomIzQzOwogLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoMzItYml0KSAqLwotdm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApCiYjNDM7dm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3AsIHMxNiBvZmYpCiB7CiAJc3dpdGNoIChCUEZfT1Aob3ApKSB7CiAJLyogZHN0ID0gZHN0ICZhbXA7IHNyYyAqLwpAQCAtMzg1LDIxICYjNDM7NDIyLDExIEBAIHZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wKQogCQlicmVhazsKIAkvKiBkc3QgPSBkc3QgLyBzcmMgKi8KIAljYXNlIEJQRl9ESVY6Ci0JCWlmIChjcHVfaGFzX21pcHMzMnI2KSB7Ci0JCQllbWl0KGN0eCwgZGl2dV9yNiwgZHN0LCBkc3QsIHNyYyk7Ci0JCX0gZWxzZSB7Ci0JCQllbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpOwotCQkJZW1pdChjdHgsIG1mbG8sIGRzdCk7Ci0JCX0KJiM0MzsJCWVtaXRfZGl2KGN0eCwgZHN0LCBzcmMsIG9mZik7CiAJCWJyZWFrOwogCS8qIGRzdCA9IGRzdCAlIHNyYyAqLwogCWNhc2UgQlBGX01PRDoKLQkJaWYgKGNwdV9oYXNfbWlwczMycjYpIHsKLQkJCWVtaXQoY3R4LCBtb2R1LCBkc3QsIGRzdCwgc3JjKTsKLQkJfSBlbHNlIHsKLQkJCWVtaXQoY3R4LCBkaXZ1LCBkc3QsIHNyYyk7Ci0JCQllbWl0KGN0eCwgbWZoaSwgZHN0KTsKLQkJfQomIzQzOwkJZW1pdF9tb2QoY3R4LCBkc3QsIHNyYywgb2ZmKTsKIAkJYnJlYWs7CiAJfQogCWNsb2JiZXJfcmVnKGN0eCwgZHN0KTsKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmggYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oCmluZGV4IGEzN2ZlMjA4MThlYjkuLjBkZGVkYjczM2RkMTkgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaApAQCAtMTYzLDcgJiM0MzsxNjMsNyBAQCB2b2lkIGVtaXRfbW92X2koc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSk7CiB2b2lkIGVtaXRfbW92X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjKTsKIAogLyogVmFsaWRhdGUgQUxVL0FMVTY0IGltbWVkaWF0ZSByYW5nZSAqLwotYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSk7CiYjNDM7Ym9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSwgczE2IG9mZik7CiAKIC8qIFJld3JpdGUgQUxVL0FMVTY0IGltbWVkaWF0ZSBvcGVyYXRpb24gKi8KIGJvb2wgcmV3cml0ZV9hbHVfaSh1OCBvcCwgczMyIGltbSwgdTggKmFsdSwgczMyICp2YWwpOwpAQCAtMTcyLDcgJiM0MzsxNzIsNyBAQCBib29sIHJld3JpdGVfYWx1X2kodTggb3AsIHMzMiBpbW0sIHU4ICphbHUsIHMzMiAqdmFsKTsKIHZvaWQgZW1pdF9hbHVfaShzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCBzMzIgaW1tLCB1OCBvcCk7CiAKIC8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDMyLWJpdCkgKi8KLXZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wKTsKJiM0Mzt2b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcCwgczE2IG9mZik7CiAKIC8qIEF0b21pYyByZWFkLW1vZGlmeS13cml0ZSAoMzItYml0KSAqLwogdm9pZCBlbWl0X2F0b21pY19yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZiwgdTggY29kZSk7CmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMKaW5kZXggNDBhODc4YjY3MmY1ZC4uNjYxOTE4MmI1ZWYzMyAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYwpAQCAtNTEyLDcgJiM0Mzs1MTIsNyBAQCBzdGF0aWMgdm9pZCBlbWl0X211bF9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsCiAJY2xvYmJlcl9yZWc2NChjdHgsIGRzdCk7CiB9CiAKLS8qIEhlbHBlciBmdW5jdGlvbiBmb3IgNjQtYml0IG1vZHVsbyAqLwomIzQzOy8qIEhlbHBlciBmdW5jdGlvbiBmb3IgdW5zaWduZWQgNjQtYml0IG1vZHVsbyAqLwogc3RhdGljIHU2NCBqaXRfbW9kNjQodTY0IGEsIHU2NCBiKQogewogCXU2NCByZW07CkBAIC01MjEsMTMgJiM0Mzs1MjEsMjIgQEAgc3RhdGljIHU2NCBqaXRfbW9kNjQodTY0IGEsIHU2NCBiKQogCXJldHVybiByZW07CiB9CiAKJiM0MzsvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHNpZ25lZCA2NC1iaXQgbW9kdWxvICovCiYjNDM7c3RhdGljIHM2NCBqaXRfc21vZDY0KHM2NCBhLCBzNjQgYikKJiM0Mzt7CiYjNDM7CXM2NCBxdW90ID0gZGl2NjRfczY0KGEsIGIpOwomIzQzOwomIzQzOwlyZXR1cm4gYSAtIHF1b3QgKiBiOwomIzQzO30KJiM0MzsKIC8qIEFMVSBkaXYvbW9kIHJlZ2lzdGVyICg2NC1iaXQpICovCi1zdGF0aWMgdm9pZCBlbWl0X2Rpdm1vZF9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsCi0JCQkgICAgY29uc3QgdTggZHN0W10sIGNvbnN0IHU4IHNyY1tdLCB1OCBvcCkKJiM0MztzdGF0aWMgdm9pZCBlbWl0X2Rpdm1vZF9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IGRzdFtdLAomIzQzOwkJCSAgICBjb25zdCB1OCBzcmNbXSwgdTggb3AsIHMxNiBvZmYpCiB7CiAJY29uc3QgdTggKnIwID0gYnBmMm1pcHMzMltCUEZfUkVHXzBdOyAvKiBNYXBwZWQgdG8gdjAtdjEgKi8KIAljb25zdCB1OCAqcjEgPSBicGYybWlwczMyW0JQRl9SRUdfMV07IC8qIE1hcHBlZCB0byBhMC1hMSAqLwogCWNvbnN0IHU4ICpyMiA9IGJwZjJtaXBzMzJbQlBGX1JFR18yXTsgLyogTWFwcGVkIHRvIGEyLWEzICovCiYjNDM7CWJvb2wgaXNfc2lnbmVkID0gb2ZmID09IDE7CiAJaW50IGV4Y2x1ZGUsIGs7CiAJdTMyIGFkZHIgPSAwOwogCkBAIC01NDYsMTEgJiM0Mzs1NTUsMTEgQEAgc3RhdGljIHZvaWQgZW1pdF9kaXZtb2RfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LAogCXN3aXRjaCAoQlBGX09QKG9wKSkgewogCS8qIGRzdCA9IGRzdCAvIHNyYyAqLwogCWNhc2UgQlBGX0RJVjoKLQkJYWRkciA9ICh1MzIpJmFtcDtkaXY2NF91NjQ7CiYjNDM7CQlhZGRyID0gaXNfc2lnbmVkID8gKHUzMikmYW1wO2RpdjY0X3M2NCA6ICh1MzIpJmFtcDtkaXY2NF91NjQ7CiAJCWJyZWFrOwogCS8qIGRzdCA9IGRzdCAlIHNyYyAqLwogCWNhc2UgQlBGX01PRDoKLQkJYWRkciA9ICh1MzIpJmFtcDtqaXRfbW9kNjQ7CiYjNDM7CQlhZGRyID0gaXNfc2lnbmVkID8gKHUzMikmYW1wO2ppdF9zbW9kNjQgOiAodTMyKSZhbXA7aml0X21vZDY0OwogCQlicmVhazsKIAl9CiAJZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UOSwgYWRkcik7CkBAIC0xNTE2LDkgJiM0MzsxNTI1LDkgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCkKIAljYXNlIEJQRl9BTFUgfCBCUEZfTVVMIHwgQlBGX0s6CiAJY2FzZSBCUEZfQUxVIHwgQlBGX0RJViB8IEJQRl9LOgogCWNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfSzoKLQkJaWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSkpIHsKJiM0MzsJCWlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIG9mZikpIHsKIAkJCWVtaXRfbW92X2koY3R4LCBNSVBTX1JfVDYsIGltbSk7Ci0JCQllbWl0X2FsdV9yKGN0eCwgbG8oZHN0KSwgTUlQU19SX1Q2LCBCUEZfT1AoY29kZSkpOwomIzQzOwkJCWVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBNSVBTX1JfVDYsIEJQRl9PUChjb2RlKSwgb2ZmKTsKIAkJfSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCAmYW1wO2FsdSwgJmFtcDt2YWwpKSB7CiAJCQllbWl0X2FsdV9pKGN0eCwgbG8oZHN0KSwgdmFsLCBhbHUpOwogCQl9CkBAIC0xNTQ2LDcgJiM0MzsxNTU1LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCkKIAljYXNlIEJQRl9BTFUgfCBCUEZfTVVMIHwgQlBGX1g6CiAJY2FzZSBCUEZfQUxVIHwgQlBGX0RJViB8IEJQRl9YOgogCWNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfWDoKLQkJZW1pdF9hbHVfcihjdHgsIGxvKGRzdCksIGxvKHNyYyksIEJQRl9PUChjb2RlKSk7CiYjNDM7CQllbWl0X2FsdV9yKGN0eCwgbG8oZHN0KSwgbG8oc3JjKSwgQlBGX09QKGNvZGUpLCBvZmYpOwogCQllbWl0X3pleHRfdmVyKGN0eCwgZHN0KTsKIAkJYnJlYWs7CiAJLyogZHN0ID0gaW1tICg2NC1iaXQpICovCkBAIC0xNTk5LDcgJiM0MzsxNjA4LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCkKIAkJICogYW5kIHRoZW4gZG8gdGhlIG9wZXJhdGlvbiBvbiB0aGlzIHJlZ2lzdGVyLgogCQkgKi8KIAkJZW1pdF9tb3Zfc2VfaTY0KGN0eCwgdG1wLCBpbW0pOwotCQllbWl0X2Rpdm1vZF9yNjQoY3R4LCBkc3QsIHRtcCwgQlBGX09QKGNvZGUpKTsKJiM0MzsJCWVtaXRfZGl2bW9kX3I2NChjdHgsIGRzdCwgdG1wLCBCUEZfT1AoY29kZSksIG9mZik7CiAJCWJyZWFrOwogCS8qIGRzdCA9IGRzdCAmYW1wOyBzcmMgKDY0LWJpdCkgKi8KIAkvKiBkc3QgPSBkc3QgfCBzcmMgKDY0LWJpdCkgKi8KQEAgLTE2MjksNyAmIzQzOzE2MzgsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KQogCS8qIGRzdCA9IGRzdCAlIHNyYyAoNjQtYml0KSAqLwogCWNhc2UgQlBGX0FMVTY0IHwgQlBGX0RJViB8IEJQRl9YOgogCWNhc2UgQlBGX0FMVTY0IHwgQlBGX01PRCB8IEJQRl9YOgotCQllbWl0X2Rpdm1vZF9yNjQoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpKTsKJiM0MzsJCWVtaXRfZGl2bW9kX3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSksIG9mZik7CiAJCWJyZWFrOwogCS8qIGRzdCA9IGh0b2xlKGRzdCkgKi8KIAkvKiBkc3QgPSBodG9iZShkc3QpICovCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMKaW5kZXggZmE3ZTlhYTM3ZjQ5OC4uZGIwMjdjMmQ5MjIxMiAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYwpAQCAtMTk3LDggJiM0MzsxOTcsNDMgQEAgc3RhdGljIHZvaWQgZW1pdF9hbHVfaTY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHMzMiBpbW0sIHU4IG9wKQogCWNsb2JiZXJfcmVnKGN0eCwgZHN0KTsKIH0KIAomIzQzOy8qIEFMVSBkaXZpc2lvbiBvcGVyYXRpb24gKDY0LWJpdCkgKi8KJiM0MztzdGF0aWMgdm9pZCBlbWl0X2RpdjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZikKJiM0Mzt7CiYjNDM7CWlmIChjcHVfaGFzX21pcHM2NHI2KSB7CiYjNDM7CQlpZiAob2ZmID09IDEpCiYjNDM7CQkJZW1pdChjdHgsIGRkaXZfcjYsIGRzdCwgZHN0LCBzcmMpOwomIzQzOwkJZWxzZQomIzQzOwkJCWVtaXQoY3R4LCBkZGl2dV9yNiwgZHN0LCBkc3QsIHNyYyk7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQlpZiAob2ZmID09IDEpCiYjNDM7CQkJZW1pdChjdHgsIGRkaXYsIGRzdCwgc3JjKTsKJiM0MzsJCWVsc2UKJiM0MzsJCQllbWl0KGN0eCwgZGRpdnUsIGRzdCwgc3JjKTsKJiM0MzsJCWVtaXQoY3R4LCBtZmxvLCBkc3QpOwomIzQzOwl9CiYjNDM7fQomIzQzOwomIzQzOy8qIEFMVSBtb2R1bG8gb3BlcmF0aW9uICg2NC1iaXQpICovCiYjNDM7c3RhdGljIHZvaWQgZW1pdF9tb2Q2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHMxNiBvZmYpCiYjNDM7ewomIzQzOwlpZiAoY3B1X2hhc19taXBzNjRyNikgewomIzQzOwkJaWYgKG9mZiA9PSAxKQomIzQzOwkJCWVtaXQoY3R4LCBkbW9kLCBkc3QsIGRzdCwgc3JjKTsKJiM0MzsJCWVsc2UKJiM0MzsJCQllbWl0KGN0eCwgZG1vZHUsIGRzdCwgZHN0LCBzcmMpOwomIzQzOwl9IGVsc2UgewomIzQzOwkJaWYgKG9mZiA9PSAxKQomIzQzOwkJCWVtaXQoY3R4LCBkZGl2LCBkc3QsIHNyYyk7CiYjNDM7CQllbHNlCiYjNDM7CQkJZW1pdChjdHgsIGRkaXZ1LCBkc3QsIHNyYyk7CiYjNDM7CQllbWl0KGN0eCwgbWZoaSwgZHN0KTsKJiM0MzsJfQomIzQzO30KJiM0MzsKIC8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDY0LWJpdCkgKi8KLXN0YXRpYyB2b2lkIGVtaXRfYWx1X3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wKQomIzQzO3N0YXRpYyB2b2lkIGVtaXRfYWx1X3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLAomIzQzOwkJCSBzMTYgb2ZmKQogewogCXN3aXRjaCAoQlBGX09QKG9wKSkgewogCS8qIGRzdCA9IGRzdCAmbHQ7Jmx0OyBzcmMgKi8KQEAgLTIzNSwyNSAmIzQzOzI3MCwxNSBAQCBzdGF0aWMgdm9pZCBlbWl0X2FsdV9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcCkKIAkJYnJlYWs7CiAJLyogZHN0ID0gZHN0IC8gc3JjICovCiAJY2FzZSBCUEZfRElWOgotCQlpZiAoY3B1X2hhc19taXBzNjRyNikgewotCQkJZW1pdChjdHgsIGRkaXZ1X3I2LCBkc3QsIGRzdCwgc3JjKTsKLQkJfSBlbHNlIHsKLQkJCWVtaXQoY3R4LCBkZGl2dSwgZHN0LCBzcmMpOwotCQkJZW1pdChjdHgsIG1mbG8sIGRzdCk7Ci0JCX0KJiM0MzsJCWVtaXRfZGl2NjQoY3R4LCBkc3QsIHNyYywgb2ZmKTsKIAkJYnJlYWs7CiAJLyogZHN0ID0gZHN0ICUgc3JjICovCiAJY2FzZSBCUEZfTU9EOgotCQlpZiAoY3B1X2hhc19taXBzNjRyNikgewotCQkJZW1pdChjdHgsIGRtb2R1LCBkc3QsIGRzdCwgc3JjKTsKLQkJfSBlbHNlIHsKLQkJCWVtaXQoY3R4LCBkZGl2dSwgZHN0LCBzcmMpOwotCQkJZW1pdChjdHgsIG1maGksIGRzdCk7Ci0JCX0KJiM0MzsJCWVtaXRfbW9kNjQoY3R4LCBkc3QsIHNyYywgb2ZmKTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJLyogV2lkdGgtZ2VuZXJpYyBvcGVyYXRpb25zICovCi0JCWVtaXRfYWx1X3IoY3R4LCBkc3QsIHNyYywgb3ApOwomIzQzOwkJZW1pdF9hbHVfcihjdHgsIGRzdCwgc3JjLCBvcCwgb2ZmKTsKIAl9CiAJY2xvYmJlcl9yZWcoY3R4LCBkc3QpOwogfQpAQCAtNjc0LDkgJiM0Mzs2OTksOSBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KQogCWNhc2UgQlBGX0FMVSB8IEJQRl9BTkQgfCBCUEZfSzoKIAljYXNlIEJQRl9BTFUgfCBCUEZfWE9SIHwgQlBGX0s6CiAJY2FzZSBCUEZfQUxVIHwgQlBGX0xTSCB8IEJQRl9LOgotCQlpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkgewomIzQzOwkJaWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgb2ZmKSkgewogCQkJZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTsKLQkJCWVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTsKJiM0MzsJCQllbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSwgb2ZmKTsKIAkJfSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCAmYW1wO2FsdSwgJmFtcDt2YWwpKSB7CiAJCQllbWl0X2FsdV9pKGN0eCwgZHN0LCB2YWwsIGFsdSk7CiAJCX0KQEAgLTY5NiwxMCAmIzQzOzcyMSwxMCBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KQogCWNhc2UgQlBGX0FMVSB8IEJQRl9NVUwgfCBCUEZfSzoKIAljYXNlIEJQRl9BTFUgfCBCUEZfRElWIHwgQlBGX0s6CiAJY2FzZSBCUEZfQUxVIHwgQlBGX01PRCB8IEJQRl9LOgotCQlpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkgewomIzQzOwkJaWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgb2ZmKSkgewogCQkJZW1pdF9zZXh0KGN0eCwgZHN0LCBkc3QpOwogCQkJZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTsKLQkJCWVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTsKJiM0MzsJCQllbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSwgb2ZmKTsKIAkJfSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCAmYW1wO2FsdSwgJmFtcDt2YWwpKSB7CiAJCQllbWl0X3NleHQoY3R4LCBkc3QsIGRzdCk7CiAJCQllbWl0X2FsdV9pKGN0eCwgZHN0LCB2YWwsIGFsdSk7CkBAIC03MTQsNyAmIzQzOzczOSw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpCiAJY2FzZSBCUEZfQUxVIHwgQlBGX09SIHwgQlBGX1g6CiAJY2FzZSBCUEZfQUxVIHwgQlBGX1hPUiB8IEJQRl9YOgogCWNhc2UgQlBGX0FMVSB8IEJQRl9MU0ggfCBCUEZfWDoKLQkJZW1pdF9hbHVfcihjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSkpOwomIzQzOwkJZW1pdF9hbHVfcihjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSksIG9mZik7CiAJCWVtaXRfemV4dF92ZXIoY3R4LCBkc3QpOwogCQlicmVhazsKIAkvKiBkc3QgPSBkc3QgJmd0OyZndDsgc3JjICovCkBAIC03MzMsNyAmIzQzOzc1OCw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpCiAJY2FzZSBCUEZfQUxVIHwgQlBGX01PRCB8IEJQRl9YOgogCQllbWl0X3NleHQoY3R4LCBkc3QsIGRzdCk7CiAJCWVtaXRfc2V4dChjdHgsIE1JUFNfUl9UNCwgc3JjKTsKLQkJZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSkpOwomIzQzOwkJZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksIG9mZik7CiAJCWVtaXRfemV4dF92ZXIoY3R4LCBkc3QpOwogCQlicmVhazsKIAkvKiBkc3QgPSBpbW0gKDY0LWJpdCkgKi8KQEAgLTc3MCw5ICYjNDM7Nzk1LDkgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCkKIAljYXNlIEJQRl9BTFU2NCB8IEJQRl9NVUwgfCBCUEZfSzoKIAljYXNlIEJQRl9BTFU2NCB8IEJQRl9ESVYgfCBCUEZfSzoKIAljYXNlIEJQRl9BTFU2NCB8IEJQRl9NT0QgfCBCUEZfSzoKLQkJaWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSkpIHsKJiM0MzsJCWlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIG9mZikpIHsKIAkJCWVtaXRfbW92X2koY3R4LCBNSVBTX1JfVDQsIGltbSk7Ci0JCQllbWl0X2FsdV9yNjQoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTsKJiM0MzsJCQllbWl0X2FsdV9yNjQoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBvZmYpOwogCQl9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sICZhbXA7YWx1LCAmYW1wO3ZhbCkpIHsKIAkJCWVtaXRfYWx1X2k2NChjdHgsIGRzdCwgdmFsLCBhbHUpOwogCQl9CkBAIC03OTksNyAmIzQzOzgyNCw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpCiAJY2FzZSBCUEZfQUxVNjQgfCBCUEZfTVVMIHwgQlBGX1g6CiAJY2FzZSBCUEZfQUxVNjQgfCBCUEZfRElWIHwgQlBGX1g6CiAJY2FzZSBCUEZfQUxVNjQgfCBCUEZfTU9EIHwgQlBGX1g6Ci0JCWVtaXRfYWx1X3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSkpOwomIzQzOwkJZW1pdF9hbHVfcjY0KGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSwgb2ZmKTsKIAkJYnJlYWs7CiAJLyogZHN0ID0gaHRvbGUoZHN0KSAqLwogCS8qIGRzdCA9IGh0b2JlKGRzdCkgKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjI6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIzNzQKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA5OTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBFdmFsdWF0aW9uOiBBIFN0cmFpZ2h0Zm9yd2FyZCBOZWdhdGl2ZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXZSYjMzk7dmUgZ290IGEgcGF0Y2ggc2VyaWVzLCBhbmQgdGhlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgaXQganVzdGlmaWVzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIsIGdpdmVuIHRoYXQgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgYW1kNjQuIFRoaXMgaXMgYSBwcmV0dHkgc3RhbmRhcmQga2VybmVsIHJldmlldywgYSBxdWljayB0cmlhZ2UgdG8gc2VlIGlmIHRoZSBjaGFuZ2VzIHdhcnJhbnQgZnVydGhlciBhdHRlbnRpb24uIFRoZSBjaGFuZ2VzIGFyZSBiZW5pZ24gaW4gdGVybXMgb2Ygc2V2ZXJpdHksIHRoYW5rZnVsbHkuCgpGaXJzdCwgSSBuZWVkIHRvIHNlZSB3aGF0JiMzOTtzIGJlaW5nIG1vZGlmaWVkLiBUaGUgZGlmZiB0YXJnZXRzIGZpbGVzIGV4Y2x1c2l2ZWx5IHdpdGhpbiBgYXJjaC9taXBzL2AuIFNwZWNpZmljYWxseSwgd2UgYXJlIGxvb2tpbmcgYXQgY2hhbmdlcyByZWxhdGVkIHRvIHRoZSBNSVBTIEJQRiBKSVQgYW5kIHVhc20uCgpOb3csIGxldCYjMzk7cyBjb25zdWx0IHRoZSBjcml0ZXJpYS4gU2VjdGlvbiAyIG9mIHRoZSBndWlkZWxpbmVzIGdpdmVzIHVzIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYSDigJMgY29uZGl0aW9ucyB0aGF0ICpleGNsdWRlKiB0aGUgbmVlZCBmb3IgZnV6emluZy4gT25lIG9mIHRoZSBrZXkgZXhjbHVzaW9ucyBpcywgYW5kIHRoaXMganVtcHMgb3V0IGltbWVkaWF0ZWx5OiAmIzM0O0NvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4mIzM0OwoKQmluZ28uIEV2ZXJ5dGhpbmcgbW9kaWZpZWQgaXMgbmVzdGxlZCB1bmRlciBgYXJjaC9taXBzL2AuIE1JUFMgY29kZSBpcyBpbmhlcmVudGx5IGFyY2hpdGVjdHVyZS1zcGVjaWZpYy4gU2luY2UgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgYW1kNjQsIHRoaXMgY29kZSB3aWxsIGJlIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgaW4gdGhlIHRhcmdldCBlbnZpcm9ubWVudC4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJiMzOTtsbCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgaW5kZWVkIHRoZSBjYXNlLiBUaGUgcHJvdmlkZWQgZGlmZiBjb25maXJtcyB0aGlzLiBFdmVyeXRoaW5nIGlzIHdpdGhpbiB0aGUgYGFyY2gvbWlwcy9gIGRpcmVjdG9yeS4gTm8gY3Jvc3MtYXJjaGl0ZWN0dXJlIG1vZGlmaWNhdGlvbnMgaGVyZS4KClRvIGJlIGV4dHJhIHRob3JvdWdoLCBJJiMzOTtsbCBydW4gYSBxdWljayBgZ3JlcHBlcmAgc2NhbiAob3IgZXF1aXZhbGVudCkganVzdCB0byBtYWtlIGFic29sdXRlbHkgY2VydGFpbiwgZXZlbiB0aG91Z2ggdGhlIGRpZmYgc3Ryb25nbHkgc3VnZ2VzdHMgdGhpcyBpcyB0aGUgY2FzZS4gRXZlbiBhIHF1aWNrIHNlYXJjaCBvbiBzb21lIGtleXdvcmRzIGNvbmZpcm1zIHRoaXMuCgpUaGVyZWZvcmUsIGFwcGx5aW5nIFNlY3Rpb24gMjogJiMzNDtDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuJiMzNDsgV2UgYXJlIGxvb2tpbmcgYXQgYSBjbGVhci1jdXQgY2FzZSBvZiBgV29ydGhGdXp6aW5nID0gZmFsc2VgLiBObyBmdXp6aW5nIGlzIHdhcnJhbnRlZCBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDIyOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2VtaXRfZGl2NjQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jPTE1OD1zdGF0aWMgdm9pZCBlbWl0X2FsdV9pNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApXG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTIwMC0vKiBBTFUgZGl2aXNpb24gb3BlcmF0aW9uICg2NC1iaXQpICovXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmM6MjAxOnN0YXRpYyB2b2lkIGVtaXRfZGl2NjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCBzMTYgb2ZmKVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTIwMi17XG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jPTIzNT1zdGF0aWMgdm9pZCBlbWl0X2FsdV9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcCxcbi0tXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtMjcyLVx0Y2FzZSBCUEZfRElWOlxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jOjI3MzpcdFx0ZW1pdF9kaXY2NChjdHgsIGRzdCwgc3JjLCBvZmYpO1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTI3NC1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjI6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQwODEKCQkJCQkJCW91dHB1dDogODUKCQkJCQkJCXRob3VnaHRzOiAyNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgVHJpYWdlIEFzc2Vzc21lbnQ6IE1JUFMtU3BlY2lmaWMgQ29kZSBvbiBhbiBBTUQ2NCBUYXJnZXQqKgoKT2theSwgaGVyZSYjMzk7cyB0aGUgZGVhbC4gVGhpcyBwYXRjaCBJJiMzOTttIGxvb2tpbmcgYXQgaXMgc3RyaWN0bHkgY29uZmluZWQgdG8gdGhlIGBhcmNoL21pcHMvYCBkaXJlY3RvcnkuIFRoYXQmIzM5O3MgaW1tZWRpYXRlbHkgYSByZWQgZmxhZyBnaXZlbiB0aGF0IHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGZvciB0aGlzIGZ1enppbmcgZWZmb3J0IGlzIEFNRDY0LiBUaW1lIHRvIGFwcGx5IHRoZSB0cmlhZ2UgcGhpbG9zb3BoeS4gU3BlY2lmaWNhbGx5LCBTZWN0aW9uIDIgaXMgd2hhdCYjMzk7cyByZWxldmFudCBoZXJlLiBJdCYjMzk7cyBwcmV0dHkgY2xlYXIgY3V0OiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIGludG8gYSBzcGVjaWZpYyBzZXQgb2YgY2F0ZWdvcmllcywgYW5kIGlmIHNvLCBXb3J0aEZ1enppbmcgZ2V0cyBhIGZpcm0gJiMzNDtmYWxzZS4mIzM0OwoKVGhlIHNlY3Rpb24gcG9pbnRzIG91dCB0aGF0IHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgYXJlIGEgdmFsaWQgcmVhc29uIHRvIHNldCAmIzM0O1dvcnRoRnV6emluZyYjMzQ7IHRvIGZhbHNlLiBJIGltbWVkaWF0ZWx5IGxvb2sgZm9yIGNvZGUgcGF0aHMgdGhhdCBhcmUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljLCBhbmQgdGhhdCBpcyB3aGF0IEkgc2VlLiBUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1JUFMgbWljcm8tYXNzZW1ibGVyIChgYXJjaC9taXBzL21tL3Vhc20qYCwgYGFyY2gvbWlwcy9pbmNsdWRlL2FzbS91YXNtLmhgKSBhbmQgTUlQUyBCUEYgSklUIGNvbXBpbGVyIChgYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAqYCkgY29kZS4gU2luY2UgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gaXMgdGFyZ2V0aW5nIGFtZDY0IGFuZCBubyBjcm9zcy1jb21waWxhdGlvbiBpcyBwcmVzZW50LCB0aGVzZSBjb2RlIHBhdGhzIGFyZSwgYnkgZGVmaW5pdGlvbiwgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIGFtZDY0LiBUaGVyZSYjMzk7cyBubyB3YXkgdGhleSYjMzk7bGwgYmUgZXhlY3V0ZWQuCgpHaXZlbiB0aGlzLCBJIGhhdmUgdG8gY29uY2x1ZGU6CiogICBXb3J0aEZ1enppbmc6IGBmYWxzZWAKKiAgIEZvY3VzU3ltYm9sczogYFtdYAoqICAgRW5hYmxlQ29uZmlnczogYFtdYAoqICAgUmVhc29uaW5nOiBNSVBTLXNwZWNpZmljIGNvZGUgb24gYW4gQU1ENjQgdGFyZ2V0IG1lYW5zIGl0JiMzOTtzIHVucmVhY2hhYmxlLgoKT2theSwgdGhhdCYjMzk7cyBteSBjYWxsLiBOb3csIGxldCYjMzk7cyBnbyBhaGVhZCBhbmQgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAyMjoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIE1JUFMgbWljcm8tYXNzZW1ibGVyIHJvdXRpbmVzIGFuZCBNSVBTIEJQRiBKSVQgY29tcGlsZXIgaW1wbGVtZW50YXRpb25zICh1bmRlciBhcmNoL21pcHMvKS4gQmVjYXVzZSB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NCwgdGhlc2UgY29kZSBwYXRocyBhcmUgZXhjbHVzaXZlIHRvIE1JUFMgYW5kIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZyBvbiBhbWQ2NC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIE1JUFMgbWljcm8tYXNzZW1ibGVyIHJvdXRpbmVzIGFuZCBNSVBTIEJQRiBKSVQgY29tcGlsZXIgaW1wbGVtZW50YXRpb25zICh1bmRlciBhcmNoL21pcHMvKS4gQmVjYXVzZSB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NCwgdGhlc2UgY29kZSBwYXRocyBhcmUgZXhjbHVzaXZlIHRvIE1JUFMgYW5kIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZyBvbiBhbWQ2NC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjI6MjE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDIyOjIwOjQzLjk5OTM4Mzk1N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMjk2OTMzMTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgTUlQUyBtaWNyby1hc3NlbWJsZXIgcm91dGluZXMgYW5kIE1JUFMgQlBGIEpJVCBjb21waWxlciBpbXBsZW1lbnRhdGlvbnMgKHVuZGVyIGFyY2gvbWlwcy8pLiBCZWNhdXNlIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCB0aGVzZSBjb2RlIHBhdGhzIGFyZSBleGNsdXNpdmUgdG8gTUlQUyBhbmQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nIG9uIGFtZDY0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMjI6MjA6NDMuOTk5Mzk3MTc3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTg2MjkyMTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjZjZkNzQzZmJkNjViMmNjZGFlYjIzMjNhMTlmNjA3ZTE5ZDg4NmRjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgU2VwIDExIDIyOjIwOjQzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS91YXNtLmggYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oXFxuaW5kZXggYjQzYmZkNDQ1MjUyMS4uYWRlYTM1ZGYwZjhkYyAxMDA2NDRcXG4tLS0gYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oXFxuKysrIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3Vhc20uaFxcbkBAIC04NSwxNSArODUsMjAgQEAgSXBfdTF1MihfY3RjMSk7XFxuIElwX3UydTEoX2N0Y21zYSk7XFxuIElwX3UydTFzMyhfZGFkZGl1KTtcXG4gSXBfdTN1MXUyKF9kYWRkdSk7XFxuK0lwX3UxdTIoX2RkaXYpO1xcbitJcF91M3UxdTIoX2RkaXZfcjYpO1xcbiBJcF91MXUyKF9kZGl2dSk7XFxuIElwX3UzdTF1MihfZGRpdnVfcjYpO1xcbiBJcF91MShfZGkpO1xcbiBJcF91MnUxbXNidTMoX2RpbnMpO1xcbiBJcF91MnUxbXNidTMoX2RpbnNtKTtcXG4gSXBfdTJ1MW1zYnUzKF9kaW5zdSk7XFxuK0lwX3UxdTIoX2Rpdik7XFxuK0lwX3UzdTF1MihfZGl2X3I2KTtcXG4gSXBfdTF1MihfZGl2dSk7XFxuIElwX3UzdTF1MihfZGl2dV9yNik7XFxuIElwX3UxdTJ1MyhfZG1mYzApO1xcbitJcF91M3UxdTIoX2Rtb2QpO1xcbiBJcF91M3UxdTIoX2Rtb2R1KTtcXG4gSXBfdTF1MnUzKF9kbXRjMCk7XFxuIElwX3UxdTIoX2RtdWx0dSk7XFxuQEAgLTEzNSw2ICsxNDAsNyBAQCBJcF91MXUydTMoX21mYzApO1xcbiBJcF91MXUydTMoX21maGMwKTtcXG4gSXBfdTEoX21maGkpO1xcbiBJcF91MShfbWZsbyk7XFxuK0lwX3UzdTF1MihfbW9kKTtcXG4gSXBfdTN1MXUyKF9tb2R1KTtcXG4gSXBfdTN1MXUyKF9tb3ZuKTtcXG4gSXBfdTN1MXUyKF9tb3Z6KTtcXG5AQCAtMTU2LDYgKzE2Miw4IEBAIElwX3UyczN1MShfc2IpO1xcbiBJcF91MnMzdTEoX3NjKTtcXG4gSXBfdTJzM3UxKF9zY2QpO1xcbiBJcF91MnMzdTEoX3NkKTtcXG4rSXBfdTJ1MShfc2ViKTtcXG4rSXBfdTJ1MShfc2VoKTtcXG4gSXBfdTN1MXUyKF9zZWxlcXopO1xcbiBJcF91M3UxdTIoX3NlbG5leik7XFxuIElwX3UyczN1MShfc2gpO1xcbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbW0vdWFzbS1taXBzLmMgYi9hcmNoL21pcHMvbW0vdWFzbS1taXBzLmNcXG5pbmRleCBlMTVjNjcwMGNkMDg4Li4yZDE2NjhiNThkZGRlIDEwMDY0NFxcbi0tLSBhL2FyY2gvbWlwcy9tbS91YXNtLW1pcHMuY1xcbisrKyBiL2FyY2gvbWlwcy9tbS91YXNtLW1pcHMuY1xcbkBAIC03NSw2ICs3NSw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW5zbiBpbnNuX3RhYmxlW2luc25faW52YWxpZF0gPSB7XFxuIFxcdFtpbnNuX2N0Y21zYV1cXHQ9IHtNKG1zYV9vcCwgMCwgbXNhX2N0Y19vcCwgMCwgMCwgbXNhX2VsbV9vcCksIFJEIHwgUkV9LFxcbiBcXHRbaW5zbl9kYWRkaXVdXFx0PSB7TShkYWRkaXVfb3AsIDAsIDAsIDAsIDAsIDApLCBSUyB8IFJUIHwgU0lNTX0sXFxuIFxcdFtpbnNuX2RhZGR1XVxcdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgZGFkZHVfb3ApLCBSUyB8IFJUIHwgUkR9LFxcbitcXHRbaW5zbl9kZGl2XVxcdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgZGRpdl9vcCksIFJTIHwgUlR9LFxcbitcXHRbaW5zbl9kZGl2X3I2XVxcdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGRpdl9kZGl2Nl9vcCwgZGRpdl9vcCksXFxuK1xcdFxcdFxcdFxcdFJTIHwgUlQgfCBSRH0sXFxuIFxcdFtpbnNuX2RkaXZ1XVxcdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgZGRpdnVfb3ApLCBSUyB8IFJUfSxcXG4gXFx0W2luc25fZGRpdnVfcjZdXFx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkZGl2dV9kZGl2dTZfb3AsIGRkaXZ1X29wKSxcXG4gXFx0XFx0XFx0XFx0UlMgfCBSVCB8IFJEfSxcXG5AQCAtODIsMTAgKzg1LDE1IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW5zbiBpbnNuX3RhYmxlW2luc25faW52YWxpZF0gPSB7XFxuIFxcdFtpbnNuX2RpbnNdXFx0PSB7TShzcGVjM19vcCwgMCwgMCwgMCwgMCwgZGluc19vcCksIFJTIHwgUlQgfCBSRCB8IFJFfSxcXG4gXFx0W2luc25fZGluc21dXFx0PSB7TShzcGVjM19vcCwgMCwgMCwgMCwgMCwgZGluc21fb3ApLCBSUyB8IFJUIHwgUkQgfCBSRX0sXFxuIFxcdFtpbnNuX2RpbnN1XVxcdD0ge00oc3BlYzNfb3AsIDAsIDAsIDAsIDAsIGRpbnN1X29wKSwgUlMgfCBSVCB8IFJEIHwgUkV9LFxcbitcXHRbaW5zbl9kaXZdXFx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkaXZfb3ApLCBSUyB8IFJUfSxcXG4rXFx0W2luc25fZGl2X3I2XVxcdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGl2X2RpdjZfb3AsIGRpdl9vcCksXFxuK1xcdFxcdFxcdFxcdFJTIHwgUlQgfCBSRH0sXFxuIFxcdFtpbnNuX2RpdnVdXFx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkaXZ1X29wKSwgUlMgfCBSVH0sXFxuIFxcdFtpbnNuX2RpdnVfcjZdXFx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkaXZ1X2RpdnU2X29wLCBkaXZ1X29wKSxcXG4gXFx0XFx0XFx0XFx0UlMgfCBSVCB8IFJEfSxcXG4gXFx0W2luc25fZG1mYzBdXFx0PSB7TShjb3AwX29wLCBkbWZjX29wLCAwLCAwLCAwLCAwKSwgUlQgfCBSRCB8IFNFVH0sXFxuK1xcdFtpbnNuX2Rtb2RdXFx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkZGl2X2Rtb2Rfb3AsIGRkaXZfb3ApLFxcbitcXHRcXHRcXHRcXHRSUyB8IFJUIHwgUkR9LFxcbiBcXHRbaW5zbl9kbW9kdV1cXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRkaXZ1X2Rtb2R1X29wLCBkZGl2dV9vcCksXFxuIFxcdFxcdFxcdFxcdFJTIHwgUlQgfCBSRH0sXFxuIFxcdFtpbnNuX2RtdGMwXVxcdD0ge00oY29wMF9vcCwgZG10Y19vcCwgMCwgMCwgMCwgMCksIFJUIHwgUkQgfCBTRVR9LFxcbkBAIC0xNDAsNiArMTQ4LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnNuIGluc25fdGFibGVbaW5zbl9pbnZhbGlkXSA9IHtcXG4gXFx0W2luc25fbWZoYzBdXFx0PSB7TShjb3AwX29wLCBtZmhjMF9vcCwgMCwgMCwgMCwgMCksICBSVCB8IFJEIHwgU0VUfSxcXG4gXFx0W2luc25fbWZoaV1cXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIG1maGlfb3ApLCBSRH0sXFxuIFxcdFtpbnNuX21mbG9dXFx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBtZmxvX29wKSwgUkR9LFxcbitcXHRbaW5zbl9tb2RdXFx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkaXZfbW9kX29wLCBkaXZfb3ApLFxcbitcXHRcXHRcXHRcXHRSUyB8IFJUIHwgUkR9LFxcbiBcXHRbaW5zbl9tb2R1XVxcdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGl2dV9tb2R1X29wLCBkaXZ1X29wKSxcXG4gXFx0XFx0XFx0XFx0UlMgfCBSVCB8IFJEfSxcXG4gXFx0W2luc25fbW92bl1cXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIG1vdm5fb3ApLCBSUyB8IFJUIHwgUkR9LFxcbkBAIC0xNzcsNiArMTg3LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnNuIGluc25fdGFibGVbaW5zbl9pbnZhbGlkXSA9IHtcXG4gXFx0W2luc25fc2NkXVxcdD0ge002KHNwZWMzX29wLCAwLCAwLCAwLCBzY2Q2X29wKSwgIFJTIHwgUlQgfCBTSU1NOX0sXFxuICNlbmRpZlxcbiBcXHRbaW5zbl9zZF1cXHQ9IHtNKHNkX29wLCAwLCAwLCAwLCAwLCAwKSwgIFJTIHwgUlQgfCBTSU1NfSxcXG4rXFx0W2luc25fc2ViXVxcdD0ge00oc3BlYzNfb3AsIDAsIDAsIDAsIHNlYl9vcCwgYnNoZmxfb3ApLCBSVCB8IFJEfSxcXG4rXFx0W2luc25fc2VoXVxcdD0ge00oc3BlYzNfb3AsIDAsIDAsIDAsIHNlaF9vcCwgYnNoZmxfb3ApLCBSVCB8IFJEfSxcXG4gXFx0W2luc25fc2VsZXF6XVxcdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgc2VsZXF6X29wKSwgUlMgfCBSVCB8IFJEfSxcXG4gXFx0W2luc25fc2VsbmV6XVxcdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgc2VsbmV6X29wKSwgUlMgfCBSVCB8IFJEfSxcXG4gXFx0W2luc25fc2hdXFx0PSB7TShzaF9vcCwgMCwgMCwgMCwgMCwgMCksICBSUyB8IFJUIHwgU0lNTX0sXFxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9tbS91YXNtLmMgYi9hcmNoL21pcHMvbW0vdWFzbS5jXFxuaW5kZXggMTI1MTQwOTc5ZDYyYy4uMTM5YWZiMGUxNGNkZiAxMDA2NDRcXG4tLS0gYS9hcmNoL21pcHMvbW0vdWFzbS5jXFxuKysrIGIvYXJjaC9taXBzL21tL3Vhc20uY1xcbkBAIC00OSwxOSArNDksMjEgQEAgZW51bSBvcGNvZGUge1xcbiBcXHRpbnNuX2FkZGl1LCBpbnNuX2FkZHUsIGluc25fYW5kLCBpbnNuX2FuZGksIGluc25fYmJpdDAsIGluc25fYmJpdDEsXFxuIFxcdGluc25fYmVxLCBpbnNuX2JlcWwsIGluc25fYmdleiwgaW5zbl9iZ2V6bCwgaW5zbl9iZ3R6LCBpbnNuX2JsZXosXFxuIFxcdGluc25fYmx0eiwgaW5zbl9ibHR6bCwgaW5zbl9ibmUsIGluc25fYnJlYWssIGluc25fY2FjaGUsIGluc25fY2ZjMSxcXG4tXFx0aW5zbl9jZmNtc2EsIGluc25fY3RjMSwgaW5zbl9jdGNtc2EsIGluc25fZGFkZGl1LCBpbnNuX2RhZGR1LCBpbnNuX2RkaXZ1LFxcbi1cXHRpbnNuX2RkaXZ1X3I2LCBpbnNuX2RpLCBpbnNuX2RpbnMsIGluc25fZGluc20sIGluc25fZGluc3UsIGluc25fZGl2dSxcXG4tXFx0aW5zbl9kaXZ1X3I2LCBpbnNuX2RtZmMwLCBpbnNuX2Rtb2R1LCBpbnNuX2RtdGMwLCBpbnNuX2RtdWx0dSxcXG4rXFx0aW5zbl9jZmNtc2EsIGluc25fY3RjMSwgaW5zbl9jdGNtc2EsIGluc25fZGFkZGl1LCBpbnNuX2RhZGR1LCBpbnNuX2RkaXYsXFxuK1xcdGluc25fZGRpdl9yNiwgaW5zbl9kZGl2dSwgaW5zbl9kZGl2dV9yNiwgaW5zbl9kaSwgaW5zbl9kaW5zLCBpbnNuX2RpbnNtLFxcbitcXHRpbnNuX2RpbnN1LCBpbnNuX2RpdiwgaW5zbl9kaXZfcjYsIGluc25fZGl2dSwgaW5zbl9kaXZ1X3I2LCBpbnNuX2RtZmMwLFxcbitcXHRpbnNuX2Rtb2QsIGluc25fZG1vZHUsIGluc25fZG10YzAsIGluc25fZG11bHR1LFxcbiBcXHRpbnNuX2RtdWx1LCBpbnNuX2Ryb3RyLCBpbnNuX2Ryb3RyMzIsIGluc25fZHNiaCwgaW5zbl9kc2hkLCBpbnNuX2RzbGwsXFxuIFxcdGluc25fZHNsbDMyLCBpbnNuX2RzbGx2LCBpbnNuX2RzcmEsIGluc25fZHNyYTMyLCBpbnNuX2RzcmF2LCBpbnNuX2RzcmwsXFxuIFxcdGluc25fZHNybDMyLCBpbnNuX2Rzcmx2LCBpbnNuX2RzdWJ1LCBpbnNuX2VyZXQsIGluc25fZXh0LCBpbnNuX2lucyxcXG4gXFx0aW5zbl9qLCBpbnNuX2phbCwgaW5zbl9qYWxyLCBpbnNuX2pyLCBpbnNuX2xiLCBpbnNuX2xidSwgaW5zbl9sZCxcXG4gXFx0aW5zbl9sZGRpciwgaW5zbl9sZHB0ZSwgaW5zbl9sZHgsIGluc25fbGgsIGluc25fbGh1LCBpbnNuX2xsLCBpbnNuX2xsZCxcXG4gXFx0aW5zbl9sdWksIGluc25fbHcsIGluc25fbHd1LCBpbnNuX2x3eCwgaW5zbl9tZmMwLCBpbnNuX21maGMwLCBpbnNuX21maGksXFxuLVxcdGluc25fbWZsbywgaW5zbl9tb2R1LCBpbnNuX21vdm4sIGluc25fbW92eiwgaW5zbl9tdGMwLCBpbnNuX210aGMwLFxcbi1cXHRpbnNuX210aGksIGluc25fbXRsbywgaW5zbl9tdWwsIGluc25fbXVsdHUsIGluc25fbXVsdSwgaW5zbl9tdWh1LCBpbnNuX25vcixcXG4tXFx0aW5zbl9vciwgaW5zbl9vcmksIGluc25fcHJlZiwgaW5zbl9yZmUsIGluc25fcm90ciwgaW5zbl9zYiwgaW5zbl9zYyxcXG4tXFx0aW5zbl9zY2QsIGluc25fc2VsZXF6LCBpbnNuX3NlbG5leiwgaW5zbl9zZCwgaW5zbl9zaCwgaW5zbl9zbGwsXFxuK1xcdGluc25fbWZsbywgaW5zbl9tb2QsIGluc25fbW9kdSwgaW5zbl9tb3ZuLCBpbnNuX21vdnosIGluc25fbXRjMCxcXG4rXFx0aW5zbl9tdGhjMCwgaW5zbl9tdGhpLCBpbnNuX210bG8sIGluc25fbXVsLCBpbnNuX211bHR1LCBpbnNuX211bHUsXFxuK1xcdGluc25fbXVodSwgaW5zbl9ub3IsIGluc25fb3IsIGluc25fb3JpLCBpbnNuX3ByZWYsIGluc25fcmZlLCBpbnNuX3JvdHIsXFxuK1xcdGluc25fc2IsIGluc25fc2MsIGluc25fc2NkLCBpbnNuX3NlYiwgaW5zbl9zZWgsXFxuK1xcdGluc25fc2VsZXF6LCBpbnNuX3NlbG5leiwgaW5zbl9zZCwgaW5zbl9zaCwgaW5zbl9zbGwsXFxuIFxcdGluc25fc2xsdiwgaW5zbl9zbHQsIGluc25fc2x0aSwgaW5zbl9zbHRpdSwgaW5zbl9zbHR1LCBpbnNuX3NyYSxcXG4gXFx0aW5zbl9zcmF2LCBpbnNuX3NybCwgaW5zbl9zcmx2LCBpbnNuX3N1YnUsIGluc25fc3csIGluc25fc3luYyxcXG4gXFx0aW5zbl9zeXNjYWxsLCBpbnNuX3RsYnAsIGluc25fdGxiciwgaW5zbl90bGJ3aSwgaW5zbl90bGJ3ciwgaW5zbl93YWl0LFxcbkBAIC0yODcsOSArMjg5LDEyIEBAIElfdTF1MihfY2ZjMSlcXG4gSV91MnUxKF9jZmNtc2EpXFxuIElfdTF1MihfY3RjMSlcXG4gSV91MnUxKF9jdGNtc2EpXFxuK0lfdTF1MihfZGRpdilcXG4rSV91M3UxdTIoX2RkaXZfcjYpXFxuIElfdTF1MihfZGRpdnUpXFxuIElfdTN1MXUyKF9kZGl2dV9yNilcXG4gSV91MXUydTMoX2RtZmMwKVxcbitJX3UzdTF1MihfZG1vZClcXG4gSV91M3UxdTIoX2Rtb2R1KVxcbiBJX3UxdTJ1MyhfZG10YzApXFxuIElfdTF1MihfZG11bHR1KVxcbkBAIC0yOTcsNiArMzAyLDggQEAgSV91M3UxdTIoX2RtdWx1KVxcbiBJX3UydTFzMyhfZGFkZGl1KVxcbiBJX3UzdTF1MihfZGFkZHUpXFxuIElfdTEoX2RpKTtcXG4rSV91MXUyKF9kaXYpXFxuK0lfdTN1MXUyKF9kaXZfcjYpXFxuIElfdTF1MihfZGl2dSlcXG4gSV91M3UxdTIoX2RpdnVfcjYpXFxuIElfdTJ1MShfZHNiaCk7XFxuQEAgLTMzMiw2ICszMzksNyBAQCBJX3UyczN1MShfbHcpXFxuIElfdTJzM3UxKF9sd3UpXFxuIElfdTF1MnUzKF9tZmMwKVxcbiBJX3UxdTJ1MyhfbWZoYzApXFxuK0lfdTN1MXUyKF9tb2QpXFxuIElfdTN1MXUyKF9tb2R1KVxcbiBJX3UzdTF1MihfbW92bilcXG4gSV91M3UxdTIoX21vdnopXFxuQEAgLTM1Myw2ICszNjEsOCBAQCBJX3UyczN1MShfc2IpXFxuIElfdTJzM3UxKF9zYylcXG4gSV91MnMzdTEoX3NjZClcXG4gSV91MnMzdTEoX3NkKVxcbitJX3UydTEoX3NlYilcXG4rSV91MnUxKF9zZWgpXFxuIElfdTN1MXUyKF9zZWxlcXopXFxuIElfdTN1MXUyKF9zZWxuZXopXFxuIElfdTJzM3UxKF9zaClcXG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmNcXG5pbmRleCA2ZWU0YWJlNmExZjcwLi5mMTRkZTZkNzMxMjIxIDEwMDY0NFxcbi0tLSBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmNcXG4rKysgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jXFxuQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIGVtaXRfbW92X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjKVxcbiB9XFxuIFxcbiAvKiBWYWxpZGF0ZSBBTFUgaW1tZWRpYXRlIHJhbmdlICovXFxuLWJvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0pXFxuK2Jvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0sIHMxNiBvZmYpXFxuIHtcXG4gXFx0c3dpdGNoIChCUEZfT1Aob3ApKSB7XFxuIFxcdGNhc2UgQlBGX05FRzpcXG5AQCAtMjM3LDYgKzIzNyw5IEBAIGJvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0pXFxuIFxcdFxcdHJldHVybiBpbW0gPT0gMCB8fCAoaW1tIFxcdTAwM2UgMCBcXHUwMDI2XFx1MDAyNiBpc19wb3dlcl9vZl8yKGltbSkpO1xcbiBcXHRjYXNlIEJQRl9ESVY6XFxuIFxcdGNhc2UgQlBGX01PRDpcXG4rXFx0XFx0LyogRG8gbm90IHVzZSB1bnNpZ25lZCBzaGlmdC9tYXNrIHJld3JpdGVzIGZvciBzaWduZWQgZGl2L21vZC4gKi9cXG4rXFx0XFx0aWYgKG9mZiA9PSAxKVxcbitcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcdFxcdC8qIGltbSBtdXN0IGJlIGFuIDE3LWJpdCBwb3dlciBvZiB0d28gKi9cXG4gXFx0XFx0cmV0dXJuICh1MzIpaW1tIFxcdTAwM2M9IDB4MTAwMDAgXFx1MDAyNlxcdTAwMjYgaXNfcG93ZXJfb2ZfMigodTMyKWltbSk7XFxuIFxcdH1cXG5AQCAtMzM4LDggKzM0MSw0MiBAQCB2b2lkIGVtaXRfYWx1X2koc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApXFxuIFxcdGNsb2JiZXJfcmVnKGN0eCwgZHN0KTtcXG4gfVxcbiBcXG4rLyogQUxVIGRpdmlzaW9uIG9wZXJhdGlvbiAoMzItYml0KSAqL1xcbitzdGF0aWMgdm9pZCBlbWl0X2RpdihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHMxNiBvZmYpXFxuK3tcXG4rXFx0aWYgKGNwdV9oYXNfbWlwczMycjYpIHtcXG4rXFx0XFx0aWYgKG9mZiA9PSAxKVxcbitcXHRcXHRcXHRlbWl0KGN0eCwgZGl2X3I2LCBkc3QsIGRzdCwgc3JjKTtcXG4rXFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRlbWl0KGN0eCwgZGl2dV9yNiwgZHN0LCBkc3QsIHNyYyk7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdGlmIChvZmYgPT0gMSlcXG4rXFx0XFx0XFx0ZW1pdChjdHgsIGRpdiwgZHN0LCBzcmMpO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdGVtaXQoY3R4LCBkaXZ1LCBkc3QsIHNyYyk7XFxuK1xcdFxcdGVtaXQoY3R4LCBtZmxvLCBkc3QpO1xcbitcXHR9XFxuK31cXG4rXFxuKy8qIEFMVSBtb2R1bG8gb3BlcmF0aW9uICgzMi1iaXQpICovXFxuK3N0YXRpYyB2b2lkIGVtaXRfbW9kKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZilcXG4re1xcbitcXHRpZiAoY3B1X2hhc19taXBzMzJyNikge1xcbitcXHRcXHRpZiAob2ZmID09IDEpXFxuK1xcdFxcdFxcdGVtaXQoY3R4LCBtb2QsIGRzdCwgZHN0LCBzcmMpO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdGVtaXQoY3R4LCBtb2R1LCBkc3QsIGRzdCwgc3JjKTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0aWYgKG9mZiA9PSAxKVxcbitcXHRcXHRcXHRlbWl0KGN0eCwgZGl2LCBkc3QsIHNyYyk7XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0ZW1pdChjdHgsIGRpdnUsIGRzdCwgc3JjKTtcXG4rXFx0XFx0ZW1pdChjdHgsIG1maGksIGRzdCk7XFxuK1xcdH1cXG4rfVxcbitcXG4gLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoMzItYml0KSAqL1xcbi12b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcClcXG4rdm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3AsIHMxNiBvZmYpXFxuIHtcXG4gXFx0c3dpdGNoIChCUEZfT1Aob3ApKSB7XFxuIFxcdC8qIGRzdCA9IGRzdCBcXHUwMDI2IHNyYyAqL1xcbkBAIC0zODUsMjEgKzQyMiwxMSBAQCB2b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcClcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdC8qIGRzdCA9IGRzdCAvIHNyYyAqL1xcbiBcXHRjYXNlIEJQRl9ESVY6XFxuLVxcdFxcdGlmIChjcHVfaGFzX21pcHMzMnI2KSB7XFxuLVxcdFxcdFxcdGVtaXQoY3R4LCBkaXZ1X3I2LCBkc3QsIGRzdCwgc3JjKTtcXG4tXFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0ZW1pdChjdHgsIGRpdnUsIGRzdCwgc3JjKTtcXG4tXFx0XFx0XFx0ZW1pdChjdHgsIG1mbG8sIGRzdCk7XFxuLVxcdFxcdH1cXG4rXFx0XFx0ZW1pdF9kaXYoY3R4LCBkc3QsIHNyYywgb2ZmKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdC8qIGRzdCA9IGRzdCAlIHNyYyAqL1xcbiBcXHRjYXNlIEJQRl9NT0Q6XFxuLVxcdFxcdGlmIChjcHVfaGFzX21pcHMzMnI2KSB7XFxuLVxcdFxcdFxcdGVtaXQoY3R4LCBtb2R1LCBkc3QsIGRzdCwgc3JjKTtcXG4tXFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0ZW1pdChjdHgsIGRpdnUsIGRzdCwgc3JjKTtcXG4tXFx0XFx0XFx0ZW1pdChjdHgsIG1maGksIGRzdCk7XFxuLVxcdFxcdH1cXG4rXFx0XFx0ZW1pdF9tb2QoY3R4LCBkc3QsIHNyYywgb2ZmKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdH1cXG4gXFx0Y2xvYmJlcl9yZWcoY3R4LCBkc3QpO1xcbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaFxcbmluZGV4IGEzN2ZlMjA4MThlYjkuLjBkZGVkYjczM2RkMTkgMTAwNjQ0XFxuLS0tIGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaFxcbisrKyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmhcXG5AQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgZW1pdF9tb3ZfaShzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCBzMzIgaW1tKTtcXG4gdm9pZCBlbWl0X21vdl9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYyk7XFxuIFxcbiAvKiBWYWxpZGF0ZSBBTFUvQUxVNjQgaW1tZWRpYXRlIHJhbmdlICovXFxuLWJvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0pO1xcbitib29sIHZhbGlkX2FsdV9pKHU4IG9wLCBzMzIgaW1tLCBzMTYgb2ZmKTtcXG4gXFxuIC8qIFJld3JpdGUgQUxVL0FMVTY0IGltbWVkaWF0ZSBvcGVyYXRpb24gKi9cXG4gYm9vbCByZXdyaXRlX2FsdV9pKHU4IG9wLCBzMzIgaW1tLCB1OCAqYWx1LCBzMzIgKnZhbCk7XFxuQEAgLTE3Miw3ICsxNzIsNyBAQCBib29sIHJld3JpdGVfYWx1X2kodTggb3AsIHMzMiBpbW0sIHU4ICphbHUsIHMzMiAqdmFsKTtcXG4gdm9pZCBlbWl0X2FsdV9pKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHMzMiBpbW0sIHU4IG9wKTtcXG4gXFxuIC8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDMyLWJpdCkgKi9cXG4tdm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApO1xcbit2b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcCwgczE2IG9mZik7XFxuIFxcbiAvKiBBdG9taWMgcmVhZC1tb2RpZnktd3JpdGUgKDMyLWJpdCkgKi9cXG4gdm9pZCBlbWl0X2F0b21pY19yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZiwgdTggY29kZSk7XFxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY1xcbmluZGV4IDQwYTg3OGI2NzJmNWQuLjY2MTkxODJiNWVmMzMgMTAwNjQ0XFxuLS0tIGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jXFxuKysrIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jXFxuQEAgLTUxMiw3ICs1MTIsNyBAQCBzdGF0aWMgdm9pZCBlbWl0X211bF9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsXFxuIFxcdGNsb2JiZXJfcmVnNjQoY3R4LCBkc3QpO1xcbiB9XFxuIFxcbi0vKiBIZWxwZXIgZnVuY3Rpb24gZm9yIDY0LWJpdCBtb2R1bG8gKi9cXG4rLyogSGVscGVyIGZ1bmN0aW9uIGZvciB1bnNpZ25lZCA2NC1iaXQgbW9kdWxvICovXFxuIHN0YXRpYyB1NjQgaml0X21vZDY0KHU2NCBhLCB1NjQgYilcXG4ge1xcbiBcXHR1NjQgcmVtO1xcbkBAIC01MjEsMTMgKzUyMSwyMiBAQCBzdGF0aWMgdTY0IGppdF9tb2Q2NCh1NjQgYSwgdTY0IGIpXFxuIFxcdHJldHVybiByZW07XFxuIH1cXG4gXFxuKy8qIEhlbHBlciBmdW5jdGlvbiBmb3Igc2lnbmVkIDY0LWJpdCBtb2R1bG8gKi9cXG4rc3RhdGljIHM2NCBqaXRfc21vZDY0KHM2NCBhLCBzNjQgYilcXG4re1xcbitcXHRzNjQgcXVvdCA9IGRpdjY0X3M2NChhLCBiKTtcXG4rXFxuK1xcdHJldHVybiBhIC0gcXVvdCAqIGI7XFxuK31cXG4rXFxuIC8qIEFMVSBkaXYvbW9kIHJlZ2lzdGVyICg2NC1iaXQpICovXFxuLXN0YXRpYyB2b2lkIGVtaXRfZGl2bW9kX3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCxcXG4tXFx0XFx0XFx0ICAgIGNvbnN0IHU4IGRzdFtdLCBjb25zdCB1OCBzcmNbXSwgdTggb3ApXFxuK3N0YXRpYyB2b2lkIGVtaXRfZGl2bW9kX3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgY29uc3QgdTggZHN0W10sXFxuK1xcdFxcdFxcdCAgICBjb25zdCB1OCBzcmNbXSwgdTggb3AsIHMxNiBvZmYpXFxuIHtcXG4gXFx0Y29uc3QgdTggKnIwID0gYnBmMm1pcHMzMltCUEZfUkVHXzBdOyAvKiBNYXBwZWQgdG8gdjAtdjEgKi9cXG4gXFx0Y29uc3QgdTggKnIxID0gYnBmMm1pcHMzMltCUEZfUkVHXzFdOyAvKiBNYXBwZWQgdG8gYTAtYTEgKi9cXG4gXFx0Y29uc3QgdTggKnIyID0gYnBmMm1pcHMzMltCUEZfUkVHXzJdOyAvKiBNYXBwZWQgdG8gYTItYTMgKi9cXG4rXFx0Ym9vbCBpc19zaWduZWQgPSBvZmYgPT0gMTtcXG4gXFx0aW50IGV4Y2x1ZGUsIGs7XFxuIFxcdHUzMiBhZGRyID0gMDtcXG4gXFxuQEAgLTU0NiwxMSArNTU1LDExIEBAIHN0YXRpYyB2b2lkIGVtaXRfZGl2bW9kX3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCxcXG4gXFx0c3dpdGNoIChCUEZfT1Aob3ApKSB7XFxuIFxcdC8qIGRzdCA9IGRzdCAvIHNyYyAqL1xcbiBcXHRjYXNlIEJQRl9ESVY6XFxuLVxcdFxcdGFkZHIgPSAodTMyKVxcdTAwMjZkaXY2NF91NjQ7XFxuK1xcdFxcdGFkZHIgPSBpc19zaWduZWQgPyAodTMyKVxcdTAwMjZkaXY2NF9zNjQgOiAodTMyKVxcdTAwMjZkaXY2NF91NjQ7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHQvKiBkc3QgPSBkc3QgJSBzcmMgKi9cXG4gXFx0Y2FzZSBCUEZfTU9EOlxcbi1cXHRcXHRhZGRyID0gKHUzMilcXHUwMDI2aml0X21vZDY0O1xcbitcXHRcXHRhZGRyID0gaXNfc2lnbmVkID8gKHUzMilcXHUwMDI2aml0X3Ntb2Q2NCA6ICh1MzIpXFx1MDAyNmppdF9tb2Q2NDtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdH1cXG4gXFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UOSwgYWRkcik7XFxuQEAgLTE1MTYsOSArMTUyNSw5IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXFxuIFxcdGNhc2UgQlBGX0FMVSB8IEJQRl9NVUwgfCBCUEZfSzpcXG4gXFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0RJViB8IEJQRl9LOlxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX0s6XFxuLVxcdFxcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0pKSB7XFxuK1xcdFxcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIG9mZikpIHtcXG4gXFx0XFx0XFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNiwgaW1tKTtcXG4tXFx0XFx0XFx0ZW1pdF9hbHVfcihjdHgsIGxvKGRzdCksIE1JUFNfUl9UNiwgQlBGX09QKGNvZGUpKTtcXG4rXFx0XFx0XFx0ZW1pdF9hbHVfcihjdHgsIGxvKGRzdCksIE1JUFNfUl9UNiwgQlBGX09QKGNvZGUpLCBvZmYpO1xcbiBcXHRcXHR9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIFxcdTAwMjZhbHUsIFxcdTAwMjZ2YWwpKSB7XFxuIFxcdFxcdFxcdGVtaXRfYWx1X2koY3R4LCBsbyhkc3QpLCB2YWwsIGFsdSk7XFxuIFxcdFxcdH1cXG5AQCAtMTU0Niw3ICsxNTU1LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcXG4gXFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01VTCB8IEJQRl9YOlxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfRElWIHwgQlBGX1g6XFxuIFxcdGNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfWDpcXG4tXFx0XFx0ZW1pdF9hbHVfcihjdHgsIGxvKGRzdCksIGxvKHNyYyksIEJQRl9PUChjb2RlKSk7XFxuK1xcdFxcdGVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpLCBCUEZfT1AoY29kZSksIG9mZik7XFxuIFxcdFxcdGVtaXRfemV4dF92ZXIoY3R4LCBkc3QpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0LyogZHN0ID0gaW1tICg2NC1iaXQpICovXFxuQEAgLTE1OTksNyArMTYwOCw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXFxuIFxcdFxcdCAqIGFuZCB0aGVuIGRvIHRoZSBvcGVyYXRpb24gb24gdGhpcyByZWdpc3Rlci5cXG4gXFx0XFx0ICovXFxuIFxcdFxcdGVtaXRfbW92X3NlX2k2NChjdHgsIHRtcCwgaW1tKTtcXG4tXFx0XFx0ZW1pdF9kaXZtb2RfcjY0KGN0eCwgZHN0LCB0bXAsIEJQRl9PUChjb2RlKSk7XFxuK1xcdFxcdGVtaXRfZGl2bW9kX3I2NChjdHgsIGRzdCwgdG1wLCBCUEZfT1AoY29kZSksIG9mZik7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHQvKiBkc3QgPSBkc3QgXFx1MDAyNiBzcmMgKDY0LWJpdCkgKi9cXG4gXFx0LyogZHN0ID0gZHN0IHwgc3JjICg2NC1iaXQpICovXFxuQEAgLTE2MjksNyArMTYzOCw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXFxuIFxcdC8qIGRzdCA9IGRzdCAlIHNyYyAoNjQtYml0KSAqL1xcbiBcXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9ESVYgfCBCUEZfWDpcXG4gXFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTU9EIHwgQlBGX1g6XFxuLVxcdFxcdGVtaXRfZGl2bW9kX3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSkpO1xcbitcXHRcXHRlbWl0X2Rpdm1vZF9yNjQoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpLCBvZmYpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0LyogZHN0ID0gaHRvbGUoZHN0KSAqL1xcbiBcXHQvKiBkc3QgPSBodG9iZShkc3QpICovXFxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuY1xcbmluZGV4IGZhN2U5YWEzN2Y0OTguLmRiMDI3YzJkOTIyMTIgMTAwNjQ0XFxuLS0tIGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jXFxuKysrIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jXFxuQEAgLTE5Nyw4ICsxOTcsNDMgQEAgc3RhdGljIHZvaWQgZW1pdF9hbHVfaTY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHMzMiBpbW0sIHU4IG9wKVxcbiBcXHRjbG9iYmVyX3JlZyhjdHgsIGRzdCk7XFxuIH1cXG4gXFxuKy8qIEFMVSBkaXZpc2lvbiBvcGVyYXRpb24gKDY0LWJpdCkgKi9cXG4rc3RhdGljIHZvaWQgZW1pdF9kaXY2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHMxNiBvZmYpXFxuK3tcXG4rXFx0aWYgKGNwdV9oYXNfbWlwczY0cjYpIHtcXG4rXFx0XFx0aWYgKG9mZiA9PSAxKVxcbitcXHRcXHRcXHRlbWl0KGN0eCwgZGRpdl9yNiwgZHN0LCBkc3QsIHNyYyk7XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0ZW1pdChjdHgsIGRkaXZ1X3I2LCBkc3QsIGRzdCwgc3JjKTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0aWYgKG9mZiA9PSAxKVxcbitcXHRcXHRcXHRlbWl0KGN0eCwgZGRpdiwgZHN0LCBzcmMpO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdGVtaXQoY3R4LCBkZGl2dSwgZHN0LCBzcmMpO1xcbitcXHRcXHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcXG4rXFx0fVxcbit9XFxuK1xcbisvKiBBTFUgbW9kdWxvIG9wZXJhdGlvbiAoNjQtYml0KSAqL1xcbitzdGF0aWMgdm9pZCBlbWl0X21vZDY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZilcXG4re1xcbitcXHRpZiAoY3B1X2hhc19taXBzNjRyNikge1xcbitcXHRcXHRpZiAob2ZmID09IDEpXFxuK1xcdFxcdFxcdGVtaXQoY3R4LCBkbW9kLCBkc3QsIGRzdCwgc3JjKTtcXG4rXFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRlbWl0KGN0eCwgZG1vZHUsIGRzdCwgZHN0LCBzcmMpO1xcbitcXHR9IGVsc2Uge1xcbitcXHRcXHRpZiAob2ZmID09IDEpXFxuK1xcdFxcdFxcdGVtaXQoY3R4LCBkZGl2LCBkc3QsIHNyYyk7XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0ZW1pdChjdHgsIGRkaXZ1LCBkc3QsIHNyYyk7XFxuK1xcdFxcdGVtaXQoY3R4LCBtZmhpLCBkc3QpO1xcbitcXHR9XFxuK31cXG4rXFxuIC8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDY0LWJpdCkgKi9cXG4tc3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApXFxuK3N0YXRpYyB2b2lkIGVtaXRfYWx1X3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLFxcbitcXHRcXHRcXHQgczE2IG9mZilcXG4ge1xcbiBcXHRzd2l0Y2ggKEJQRl9PUChvcCkpIHtcXG4gXFx0LyogZHN0ID0gZHN0IFxcdTAwM2NcXHUwMDNjIHNyYyAqL1xcbkBAIC0yMzUsMjUgKzI3MCwxNSBAQCBzdGF0aWMgdm9pZCBlbWl0X2FsdV9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcClcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdC8qIGRzdCA9IGRzdCAvIHNyYyAqL1xcbiBcXHRjYXNlIEJQRl9ESVY6XFxuLVxcdFxcdGlmIChjcHVfaGFzX21pcHM2NHI2KSB7XFxuLVxcdFxcdFxcdGVtaXQoY3R4LCBkZGl2dV9yNiwgZHN0LCBkc3QsIHNyYyk7XFxuLVxcdFxcdH0gZWxzZSB7XFxuLVxcdFxcdFxcdGVtaXQoY3R4LCBkZGl2dSwgZHN0LCBzcmMpO1xcbi1cXHRcXHRcXHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcXG4tXFx0XFx0fVxcbitcXHRcXHRlbWl0X2RpdjY0KGN0eCwgZHN0LCBzcmMsIG9mZik7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHQvKiBkc3QgPSBkc3QgJSBzcmMgKi9cXG4gXFx0Y2FzZSBCUEZfTU9EOlxcbi1cXHRcXHRpZiAoY3B1X2hhc19taXBzNjRyNikge1xcbi1cXHRcXHRcXHRlbWl0KGN0eCwgZG1vZHUsIGRzdCwgZHN0LCBzcmMpO1xcbi1cXHRcXHR9IGVsc2Uge1xcbi1cXHRcXHRcXHRlbWl0KGN0eCwgZGRpdnUsIGRzdCwgc3JjKTtcXG4tXFx0XFx0XFx0ZW1pdChjdHgsIG1maGksIGRzdCk7XFxuLVxcdFxcdH1cXG4rXFx0XFx0ZW1pdF9tb2Q2NChjdHgsIGRzdCwgc3JjLCBvZmYpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0ZGVmYXVsdDpcXG4gXFx0XFx0LyogV2lkdGgtZ2VuZXJpYyBvcGVyYXRpb25zICovXFxuLVxcdFxcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIHNyYywgb3ApO1xcbitcXHRcXHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIG9wLCBvZmYpO1xcbiBcXHR9XFxuIFxcdGNsb2JiZXJfcmVnKGN0eCwgZHN0KTtcXG4gfVxcbkBAIC02NzQsOSArNjk5LDkgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcXG4gXFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0FORCB8IEJQRl9LOlxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfWE9SIHwgQlBGX0s6XFxuIFxcdGNhc2UgQlBGX0FMVSB8IEJQRl9MU0ggfCBCUEZfSzpcXG4tXFx0XFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSkpIHtcXG4rXFx0XFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgb2ZmKSkge1xcbiBcXHRcXHRcXHRlbWl0X21vdl9pKGN0eCwgTUlQU19SX1Q0LCBpbW0pO1xcbi1cXHRcXHRcXHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSk7XFxuK1xcdFxcdFxcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBvZmYpO1xcbiBcXHRcXHR9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIFxcdTAwMjZhbHUsIFxcdTAwMjZ2YWwpKSB7XFxuIFxcdFxcdFxcdGVtaXRfYWx1X2koY3R4LCBkc3QsIHZhbCwgYWx1KTtcXG4gXFx0XFx0fVxcbkBAIC02OTYsMTAgKzcyMSwxMCBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfTVVMIHwgQlBGX0s6XFxuIFxcdGNhc2UgQlBGX0FMVSB8IEJQRl9ESVYgfCBCUEZfSzpcXG4gXFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01PRCB8IEJQRl9LOlxcbi1cXHRcXHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkge1xcbitcXHRcXHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBvZmYpKSB7XFxuIFxcdFxcdFxcdGVtaXRfc2V4dChjdHgsIGRzdCwgZHN0KTtcXG4gXFx0XFx0XFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTtcXG4tXFx0XFx0XFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSkpO1xcbitcXHRcXHRcXHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSwgb2ZmKTtcXG4gXFx0XFx0fSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBcXHUwMDI2YWx1LCBcXHUwMDI2dmFsKSkge1xcbiBcXHRcXHRcXHRlbWl0X3NleHQoY3R4LCBkc3QsIGRzdCk7XFxuIFxcdFxcdFxcdGVtaXRfYWx1X2koY3R4LCBkc3QsIHZhbCwgYWx1KTtcXG5AQCAtNzE0LDcgKzczOSw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXFxuIFxcdGNhc2UgQlBGX0FMVSB8IEJQRl9PUiB8IEJQRl9YOlxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfWE9SIHwgQlBGX1g6XFxuIFxcdGNhc2UgQlBGX0FMVSB8IEJQRl9MU0ggfCBCUEZfWDpcXG4tXFx0XFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSkpO1xcbitcXHRcXHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSwgb2ZmKTtcXG4gXFx0XFx0ZW1pdF96ZXh0X3ZlcihjdHgsIGRzdCk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHQvKiBkc3QgPSBkc3QgXFx1MDAzZVxcdTAwM2Ugc3JjICovXFxuQEAgLTczMyw3ICs3NTgsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX1g6XFxuIFxcdFxcdGVtaXRfc2V4dChjdHgsIGRzdCwgZHN0KTtcXG4gXFx0XFx0ZW1pdF9zZXh0KGN0eCwgTUlQU19SX1Q0LCBzcmMpO1xcbi1cXHRcXHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSk7XFxuK1xcdFxcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBvZmYpO1xcbiBcXHRcXHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdC8qIGRzdCA9IGltbSAoNjQtYml0KSAqL1xcbkBAIC03NzAsOSArNzk1LDkgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcXG4gXFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTVVMIHwgQlBGX0s6XFxuIFxcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX0RJViB8IEJQRl9LOlxcbiBcXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NT0QgfCBCUEZfSzpcXG4tXFx0XFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSkpIHtcXG4rXFx0XFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgb2ZmKSkge1xcbiBcXHRcXHRcXHRlbWl0X21vdl9pKGN0eCwgTUlQU19SX1Q0LCBpbW0pO1xcbi1cXHRcXHRcXHRlbWl0X2FsdV9yNjQoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTtcXG4rXFx0XFx0XFx0ZW1pdF9hbHVfcjY0KGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSwgb2ZmKTtcXG4gXFx0XFx0fSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBcXHUwMDI2YWx1LCBcXHUwMDI2dmFsKSkge1xcbiBcXHRcXHRcXHRlbWl0X2FsdV9pNjQoY3R4LCBkc3QsIHZhbCwgYWx1KTtcXG4gXFx0XFx0fVxcbkBAIC03OTksNyArODI0LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcXG4gXFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTVVMIHwgQlBGX1g6XFxuIFxcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX0RJViB8IEJQRl9YOlxcbiBcXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NT0QgfCBCUEZfWDpcXG4tXFx0XFx0ZW1pdF9hbHVfcjY0KGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSk7XFxuK1xcdFxcdGVtaXRfYWx1X3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSksIG9mZik7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHQvKiBkc3QgPSBodG9sZShkc3QpICovXFxuIFxcdC8qIGRzdCA9IGh0b2JlKGRzdCkgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMjI6MjA6NDQuNTE4OTg0MjczWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoyMDc3NzMxOTYxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgTUlQUyBtaWNyby1hc3NlbWJsZXIgcm91dGluZXMgYW5kIE1JUFMgQlBGIEpJVCBjb21waWxlciBpbXBsZW1lbnRhdGlvbnMgKHVuZGVyIGFyY2gvbWlwcy8pLiBCZWNhdXNlIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCB0aGVzZSBjb2RlIHBhdGhzIGFyZSBleGNsdXNpdmUgdG8gTUlQUyBhbmQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nIG9uIGFtZDY0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjZjZkNzQzZmJkNjViMmNjZGFlYjIzMjNhMTlmNjA3ZTE5ZDg4NmRjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgMTEgMjI6MjA6NDMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3Vhc20uaFxuaW5kZXggYjQzYmZkNDQ1MjUyMS4uYWRlYTM1ZGYwZjhkYyAxMDA2NDRcbi0tLSBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS91YXNtLmhcbisrKyBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS91YXNtLmhcbkBAIC04NSwxNSArODUsMjAgQEAgSXBfdTF1MihfY3RjMSk7XG4gSXBfdTJ1MShfY3RjbXNhKTtcbiBJcF91MnUxczMoX2RhZGRpdSk7XG4gSXBfdTN1MXUyKF9kYWRkdSk7XG4rSXBfdTF1MihfZGRpdik7XG4rSXBfdTN1MXUyKF9kZGl2X3I2KTtcbiBJcF91MXUyKF9kZGl2dSk7XG4gSXBfdTN1MXUyKF9kZGl2dV9yNik7XG4gSXBfdTEoX2RpKTtcbiBJcF91MnUxbXNidTMoX2RpbnMpO1xuIElwX3UydTFtc2J1MyhfZGluc20pO1xuIElwX3UydTFtc2J1MyhfZGluc3UpO1xuK0lwX3UxdTIoX2Rpdik7XG4rSXBfdTN1MXUyKF9kaXZfcjYpO1xuIElwX3UxdTIoX2RpdnUpO1xuIElwX3UzdTF1MihfZGl2dV9yNik7XG4gSXBfdTF1MnUzKF9kbWZjMCk7XG4rSXBfdTN1MXUyKF9kbW9kKTtcbiBJcF91M3UxdTIoX2Rtb2R1KTtcbiBJcF91MXUydTMoX2RtdGMwKTtcbiBJcF91MXUyKF9kbXVsdHUpO1xuQEAgLTEzNSw2ICsxNDAsNyBAQCBJcF91MXUydTMoX21mYzApO1xuIElwX3UxdTJ1MyhfbWZoYzApO1xuIElwX3UxKF9tZmhpKTtcbiBJcF91MShfbWZsbyk7XG4rSXBfdTN1MXUyKF9tb2QpO1xuIElwX3UzdTF1MihfbW9kdSk7XG4gSXBfdTN1MXUyKF9tb3ZuKTtcbiBJcF91M3UxdTIoX21vdnopO1xuQEAgLTE1Niw2ICsxNjIsOCBAQCBJcF91MnMzdTEoX3NiKTtcbiBJcF91MnMzdTEoX3NjKTtcbiBJcF91MnMzdTEoX3NjZCk7XG4gSXBfdTJzM3UxKF9zZCk7XG4rSXBfdTJ1MShfc2ViKTtcbitJcF91MnUxKF9zZWgpO1xuIElwX3UzdTF1Mihfc2VsZXF6KTtcbiBJcF91M3UxdTIoX3NlbG5leik7XG4gSXBfdTJzM3UxKF9zaCk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL21tL3Vhc20tbWlwcy5jIGIvYXJjaC9taXBzL21tL3Vhc20tbWlwcy5jXG5pbmRleCBlMTVjNjcwMGNkMDg4Li4yZDE2NjhiNThkZGRlIDEwMDY0NFxuLS0tIGEvYXJjaC9taXBzL21tL3Vhc20tbWlwcy5jXG4rKysgYi9hcmNoL21pcHMvbW0vdWFzbS1taXBzLmNcbkBAIC03NSw2ICs3NSw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW5zbiBpbnNuX3RhYmxlW2luc25faW52YWxpZF0gPSB7XG4gXHRbaW5zbl9jdGNtc2FdXHQ9IHtNKG1zYV9vcCwgMCwgbXNhX2N0Y19vcCwgMCwgMCwgbXNhX2VsbV9vcCksIFJEIHwgUkV9LFxuIFx0W2luc25fZGFkZGl1XVx0PSB7TShkYWRkaXVfb3AsIDAsIDAsIDAsIDAsIDApLCBSUyB8IFJUIHwgU0lNTX0sXG4gXHRbaW5zbl9kYWRkdV1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgZGFkZHVfb3ApLCBSUyB8IFJUIHwgUkR9LFxuK1x0W2luc25fZGRpdl1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgZGRpdl9vcCksIFJTIHwgUlR9LFxuK1x0W2luc25fZGRpdl9yNl1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGRpdl9kZGl2Nl9vcCwgZGRpdl9vcCksXG4rXHRcdFx0XHRSUyB8IFJUIHwgUkR9LFxuIFx0W2luc25fZGRpdnVdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRkaXZ1X29wKSwgUlMgfCBSVH0sXG4gXHRbaW5zbl9kZGl2dV9yNl1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGRpdnVfZGRpdnU2X29wLCBkZGl2dV9vcCksXG4gXHRcdFx0XHRSUyB8IFJUIHwgUkR9LFxuQEAgLTgyLDEwICs4NSwxNSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGluc24gaW5zbl90YWJsZVtpbnNuX2ludmFsaWRdID0ge1xuIFx0W2luc25fZGluc11cdD0ge00oc3BlYzNfb3AsIDAsIDAsIDAsIDAsIGRpbnNfb3ApLCBSUyB8IFJUIHwgUkQgfCBSRX0sXG4gXHRbaW5zbl9kaW5zbV1cdD0ge00oc3BlYzNfb3AsIDAsIDAsIDAsIDAsIGRpbnNtX29wKSwgUlMgfCBSVCB8IFJEIHwgUkV9LFxuIFx0W2luc25fZGluc3VdXHQ9IHtNKHNwZWMzX29wLCAwLCAwLCAwLCAwLCBkaW5zdV9vcCksIFJTIHwgUlQgfCBSRCB8IFJFfSxcbitcdFtpbnNuX2Rpdl1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgZGl2X29wKSwgUlMgfCBSVH0sXG4rXHRbaW5zbl9kaXZfcjZdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRpdl9kaXY2X29wLCBkaXZfb3ApLFxuK1x0XHRcdFx0UlMgfCBSVCB8IFJEfSxcbiBcdFtpbnNuX2RpdnVdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRpdnVfb3ApLCBSUyB8IFJUfSxcbiBcdFtpbnNuX2RpdnVfcjZdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRpdnVfZGl2dTZfb3AsIGRpdnVfb3ApLFxuIFx0XHRcdFx0UlMgfCBSVCB8IFJEfSxcbiBcdFtpbnNuX2RtZmMwXVx0PSB7TShjb3AwX29wLCBkbWZjX29wLCAwLCAwLCAwLCAwKSwgUlQgfCBSRCB8IFNFVH0sXG4rXHRbaW5zbl9kbW9kXVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkZGl2X2Rtb2Rfb3AsIGRkaXZfb3ApLFxuK1x0XHRcdFx0UlMgfCBSVCB8IFJEfSxcbiBcdFtpbnNuX2Rtb2R1XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkZGl2dV9kbW9kdV9vcCwgZGRpdnVfb3ApLFxuIFx0XHRcdFx0UlMgfCBSVCB8IFJEfSxcbiBcdFtpbnNuX2RtdGMwXVx0PSB7TShjb3AwX29wLCBkbXRjX29wLCAwLCAwLCAwLCAwKSwgUlQgfCBSRCB8IFNFVH0sXG5AQCAtMTQwLDYgKzE0OCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW5zbiBpbnNuX3RhYmxlW2luc25faW52YWxpZF0gPSB7XG4gXHRbaW5zbl9tZmhjMF1cdD0ge00oY29wMF9vcCwgbWZoYzBfb3AsIDAsIDAsIDAsIDApLCAgUlQgfCBSRCB8IFNFVH0sXG4gXHRbaW5zbl9tZmhpXVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBtZmhpX29wKSwgUkR9LFxuIFx0W2luc25fbWZsb11cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgbWZsb19vcCksIFJEfSxcbitcdFtpbnNuX21vZF1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGl2X21vZF9vcCwgZGl2X29wKSxcbitcdFx0XHRcdFJTIHwgUlQgfCBSRH0sXG4gXHRbaW5zbl9tb2R1XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkaXZ1X21vZHVfb3AsIGRpdnVfb3ApLFxuIFx0XHRcdFx0UlMgfCBSVCB8IFJEfSxcbiBcdFtpbnNuX21vdm5dXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIG1vdm5fb3ApLCBSUyB8IFJUIHwgUkR9LFxuQEAgLTE3Nyw2ICsxODcsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGluc24gaW5zbl90YWJsZVtpbnNuX2ludmFsaWRdID0ge1xuIFx0W2luc25fc2NkXVx0PSB7TTYoc3BlYzNfb3AsIDAsIDAsIDAsIHNjZDZfb3ApLCAgUlMgfCBSVCB8IFNJTU05fSxcbiAjZW5kaWZcbiBcdFtpbnNuX3NkXVx0PSB7TShzZF9vcCwgMCwgMCwgMCwgMCwgMCksICBSUyB8IFJUIHwgU0lNTX0sXG4rXHRbaW5zbl9zZWJdXHQ9IHtNKHNwZWMzX29wLCAwLCAwLCAwLCBzZWJfb3AsIGJzaGZsX29wKSwgUlQgfCBSRH0sXG4rXHRbaW5zbl9zZWhdXHQ9IHtNKHNwZWMzX29wLCAwLCAwLCAwLCBzZWhfb3AsIGJzaGZsX29wKSwgUlQgfCBSRH0sXG4gXHRbaW5zbl9zZWxlcXpdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIHNlbGVxel9vcCksIFJTIHwgUlQgfCBSRH0sXG4gXHRbaW5zbl9zZWxuZXpdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIHNlbG5lel9vcCksIFJTIHwgUlQgfCBSRH0sXG4gXHRbaW5zbl9zaF1cdD0ge00oc2hfb3AsIDAsIDAsIDAsIDAsIDApLCAgUlMgfCBSVCB8IFNJTU19LFxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9tbS91YXNtLmMgYi9hcmNoL21pcHMvbW0vdWFzbS5jXG5pbmRleCAxMjUxNDA5NzlkNjJjLi4xMzlhZmIwZTE0Y2RmIDEwMDY0NFxuLS0tIGEvYXJjaC9taXBzL21tL3Vhc20uY1xuKysrIGIvYXJjaC9taXBzL21tL3Vhc20uY1xuQEAgLTQ5LDE5ICs0OSwyMSBAQCBlbnVtIG9wY29kZSB7XG4gXHRpbnNuX2FkZGl1LCBpbnNuX2FkZHUsIGluc25fYW5kLCBpbnNuX2FuZGksIGluc25fYmJpdDAsIGluc25fYmJpdDEsXG4gXHRpbnNuX2JlcSwgaW5zbl9iZXFsLCBpbnNuX2JnZXosIGluc25fYmdlemwsIGluc25fYmd0eiwgaW5zbl9ibGV6LFxuIFx0aW5zbl9ibHR6LCBpbnNuX2JsdHpsLCBpbnNuX2JuZSwgaW5zbl9icmVhaywgaW5zbl9jYWNoZSwgaW5zbl9jZmMxLFxuLVx0aW5zbl9jZmNtc2EsIGluc25fY3RjMSwgaW5zbl9jdGNtc2EsIGluc25fZGFkZGl1LCBpbnNuX2RhZGR1LCBpbnNuX2RkaXZ1LFxuLVx0aW5zbl9kZGl2dV9yNiwgaW5zbl9kaSwgaW5zbl9kaW5zLCBpbnNuX2RpbnNtLCBpbnNuX2RpbnN1LCBpbnNuX2RpdnUsXG4tXHRpbnNuX2RpdnVfcjYsIGluc25fZG1mYzAsIGluc25fZG1vZHUsIGluc25fZG10YzAsIGluc25fZG11bHR1LFxuK1x0aW5zbl9jZmNtc2EsIGluc25fY3RjMSwgaW5zbl9jdGNtc2EsIGluc25fZGFkZGl1LCBpbnNuX2RhZGR1LCBpbnNuX2RkaXYsXG4rXHRpbnNuX2RkaXZfcjYsIGluc25fZGRpdnUsIGluc25fZGRpdnVfcjYsIGluc25fZGksIGluc25fZGlucywgaW5zbl9kaW5zbSxcbitcdGluc25fZGluc3UsIGluc25fZGl2LCBpbnNuX2Rpdl9yNiwgaW5zbl9kaXZ1LCBpbnNuX2RpdnVfcjYsIGluc25fZG1mYzAsXG4rXHRpbnNuX2Rtb2QsIGluc25fZG1vZHUsIGluc25fZG10YzAsIGluc25fZG11bHR1LFxuIFx0aW5zbl9kbXVsdSwgaW5zbl9kcm90ciwgaW5zbl9kcm90cjMyLCBpbnNuX2RzYmgsIGluc25fZHNoZCwgaW5zbl9kc2xsLFxuIFx0aW5zbl9kc2xsMzIsIGluc25fZHNsbHYsIGluc25fZHNyYSwgaW5zbl9kc3JhMzIsIGluc25fZHNyYXYsIGluc25fZHNybCxcbiBcdGluc25fZHNybDMyLCBpbnNuX2Rzcmx2LCBpbnNuX2RzdWJ1LCBpbnNuX2VyZXQsIGluc25fZXh0LCBpbnNuX2lucyxcbiBcdGluc25faiwgaW5zbl9qYWwsIGluc25famFsciwgaW5zbl9qciwgaW5zbl9sYiwgaW5zbl9sYnUsIGluc25fbGQsXG4gXHRpbnNuX2xkZGlyLCBpbnNuX2xkcHRlLCBpbnNuX2xkeCwgaW5zbl9saCwgaW5zbl9saHUsIGluc25fbGwsIGluc25fbGxkLFxuIFx0aW5zbl9sdWksIGluc25fbHcsIGluc25fbHd1LCBpbnNuX2x3eCwgaW5zbl9tZmMwLCBpbnNuX21maGMwLCBpbnNuX21maGksXG4tXHRpbnNuX21mbG8sIGluc25fbW9kdSwgaW5zbl9tb3ZuLCBpbnNuX21vdnosIGluc25fbXRjMCwgaW5zbl9tdGhjMCxcbi1cdGluc25fbXRoaSwgaW5zbl9tdGxvLCBpbnNuX211bCwgaW5zbl9tdWx0dSwgaW5zbl9tdWx1LCBpbnNuX211aHUsIGluc25fbm9yLFxuLVx0aW5zbl9vciwgaW5zbl9vcmksIGluc25fcHJlZiwgaW5zbl9yZmUsIGluc25fcm90ciwgaW5zbl9zYiwgaW5zbl9zYyxcbi1cdGluc25fc2NkLCBpbnNuX3NlbGVxeiwgaW5zbl9zZWxuZXosIGluc25fc2QsIGluc25fc2gsIGluc25fc2xsLFxuK1x0aW5zbl9tZmxvLCBpbnNuX21vZCwgaW5zbl9tb2R1LCBpbnNuX21vdm4sIGluc25fbW92eiwgaW5zbl9tdGMwLFxuK1x0aW5zbl9tdGhjMCwgaW5zbl9tdGhpLCBpbnNuX210bG8sIGluc25fbXVsLCBpbnNuX211bHR1LCBpbnNuX211bHUsXG4rXHRpbnNuX211aHUsIGluc25fbm9yLCBpbnNuX29yLCBpbnNuX29yaSwgaW5zbl9wcmVmLCBpbnNuX3JmZSwgaW5zbl9yb3RyLFxuK1x0aW5zbl9zYiwgaW5zbl9zYywgaW5zbl9zY2QsIGluc25fc2ViLCBpbnNuX3NlaCxcbitcdGluc25fc2VsZXF6LCBpbnNuX3NlbG5leiwgaW5zbl9zZCwgaW5zbl9zaCwgaW5zbl9zbGwsXG4gXHRpbnNuX3NsbHYsIGluc25fc2x0LCBpbnNuX3NsdGksIGluc25fc2x0aXUsIGluc25fc2x0dSwgaW5zbl9zcmEsXG4gXHRpbnNuX3NyYXYsIGluc25fc3JsLCBpbnNuX3NybHYsIGluc25fc3VidSwgaW5zbl9zdywgaW5zbl9zeW5jLFxuIFx0aW5zbl9zeXNjYWxsLCBpbnNuX3RsYnAsIGluc25fdGxiciwgaW5zbl90bGJ3aSwgaW5zbl90bGJ3ciwgaW5zbl93YWl0LFxuQEAgLTI4Nyw5ICsyODksMTIgQEAgSV91MXUyKF9jZmMxKVxuIElfdTJ1MShfY2ZjbXNhKVxuIElfdTF1MihfY3RjMSlcbiBJX3UydTEoX2N0Y21zYSlcbitJX3UxdTIoX2RkaXYpXG4rSV91M3UxdTIoX2RkaXZfcjYpXG4gSV91MXUyKF9kZGl2dSlcbiBJX3UzdTF1MihfZGRpdnVfcjYpXG4gSV91MXUydTMoX2RtZmMwKVxuK0lfdTN1MXUyKF9kbW9kKVxuIElfdTN1MXUyKF9kbW9kdSlcbiBJX3UxdTJ1MyhfZG10YzApXG4gSV91MXUyKF9kbXVsdHUpXG5AQCAtMjk3LDYgKzMwMiw4IEBAIElfdTN1MXUyKF9kbXVsdSlcbiBJX3UydTFzMyhfZGFkZGl1KVxuIElfdTN1MXUyKF9kYWRkdSlcbiBJX3UxKF9kaSk7XG4rSV91MXUyKF9kaXYpXG4rSV91M3UxdTIoX2Rpdl9yNilcbiBJX3UxdTIoX2RpdnUpXG4gSV91M3UxdTIoX2RpdnVfcjYpXG4gSV91MnUxKF9kc2JoKTtcbkBAIC0zMzIsNiArMzM5LDcgQEAgSV91MnMzdTEoX2x3KVxuIElfdTJzM3UxKF9sd3UpXG4gSV91MXUydTMoX21mYzApXG4gSV91MXUydTMoX21maGMwKVxuK0lfdTN1MXUyKF9tb2QpXG4gSV91M3UxdTIoX21vZHUpXG4gSV91M3UxdTIoX21vdm4pXG4gSV91M3UxdTIoX21vdnopXG5AQCAtMzUzLDYgKzM2MSw4IEBAIElfdTJzM3UxKF9zYilcbiBJX3UyczN1MShfc2MpXG4gSV91MnMzdTEoX3NjZClcbiBJX3UyczN1MShfc2QpXG4rSV91MnUxKF9zZWIpXG4rSV91MnUxKF9zZWgpXG4gSV91M3UxdTIoX3NlbGVxeilcbiBJX3UzdTF1Mihfc2VsbmV6KVxuIElfdTJzM3UxKF9zaClcbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuY1xuaW5kZXggNmVlNGFiZTZhMWY3MC4uZjE0ZGU2ZDczMTIyMSAxMDA2NDRcbi0tLSBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmNcbisrKyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmNcbkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBlbWl0X21vdl9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYylcbiB9XG4gXG4gLyogVmFsaWRhdGUgQUxVIGltbWVkaWF0ZSByYW5nZSAqL1xuLWJvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0pXG4rYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSwgczE2IG9mZilcbiB7XG4gXHRzd2l0Y2ggKEJQRl9PUChvcCkpIHtcbiBcdGNhc2UgQlBGX05FRzpcbkBAIC0yMzcsNiArMjM3LDkgQEAgYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSlcbiBcdFx0cmV0dXJuIGltbSA9PSAwIHx8IChpbW0gXHUwMDNlIDAgXHUwMDI2XHUwMDI2IGlzX3Bvd2VyX29mXzIoaW1tKSk7XG4gXHRjYXNlIEJQRl9ESVY6XG4gXHRjYXNlIEJQRl9NT0Q6XG4rXHRcdC8qIERvIG5vdCB1c2UgdW5zaWduZWQgc2hpZnQvbWFzayByZXdyaXRlcyBmb3Igc2lnbmVkIGRpdi9tb2QuICovXG4rXHRcdGlmIChvZmYgPT0gMSlcbitcdFx0XHRyZXR1cm4gZmFsc2U7XG4gXHRcdC8qIGltbSBtdXN0IGJlIGFuIDE3LWJpdCBwb3dlciBvZiB0d28gKi9cbiBcdFx0cmV0dXJuICh1MzIpaW1tIFx1MDAzYz0gMHgxMDAwMCBcdTAwMjZcdTAwMjYgaXNfcG93ZXJfb2ZfMigodTMyKWltbSk7XG4gXHR9XG5AQCAtMzM4LDggKzM0MSw0MiBAQCB2b2lkIGVtaXRfYWx1X2koc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApXG4gXHRjbG9iYmVyX3JlZyhjdHgsIGRzdCk7XG4gfVxuIFxuKy8qIEFMVSBkaXZpc2lvbiBvcGVyYXRpb24gKDMyLWJpdCkgKi9cbitzdGF0aWMgdm9pZCBlbWl0X2RpdihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHMxNiBvZmYpXG4re1xuK1x0aWYgKGNwdV9oYXNfbWlwczMycjYpIHtcbitcdFx0aWYgKG9mZiA9PSAxKVxuK1x0XHRcdGVtaXQoY3R4LCBkaXZfcjYsIGRzdCwgZHN0LCBzcmMpO1xuK1x0XHRlbHNlXG4rXHRcdFx0ZW1pdChjdHgsIGRpdnVfcjYsIGRzdCwgZHN0LCBzcmMpO1xuK1x0fSBlbHNlIHtcbitcdFx0aWYgKG9mZiA9PSAxKVxuK1x0XHRcdGVtaXQoY3R4LCBkaXYsIGRzdCwgc3JjKTtcbitcdFx0ZWxzZVxuK1x0XHRcdGVtaXQoY3R4LCBkaXZ1LCBkc3QsIHNyYyk7XG4rXHRcdGVtaXQoY3R4LCBtZmxvLCBkc3QpO1xuK1x0fVxuK31cbitcbisvKiBBTFUgbW9kdWxvIG9wZXJhdGlvbiAoMzItYml0KSAqL1xuK3N0YXRpYyB2b2lkIGVtaXRfbW9kKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZilcbit7XG4rXHRpZiAoY3B1X2hhc19taXBzMzJyNikge1xuK1x0XHRpZiAob2ZmID09IDEpXG4rXHRcdFx0ZW1pdChjdHgsIG1vZCwgZHN0LCBkc3QsIHNyYyk7XG4rXHRcdGVsc2VcbitcdFx0XHRlbWl0KGN0eCwgbW9kdSwgZHN0LCBkc3QsIHNyYyk7XG4rXHR9IGVsc2Uge1xuK1x0XHRpZiAob2ZmID09IDEpXG4rXHRcdFx0ZW1pdChjdHgsIGRpdiwgZHN0LCBzcmMpO1xuK1x0XHRlbHNlXG4rXHRcdFx0ZW1pdChjdHgsIGRpdnUsIGRzdCwgc3JjKTtcbitcdFx0ZW1pdChjdHgsIG1maGksIGRzdCk7XG4rXHR9XG4rfVxuK1xuIC8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDMyLWJpdCkgKi9cbi12b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcClcbit2b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcCwgczE2IG9mZilcbiB7XG4gXHRzd2l0Y2ggKEJQRl9PUChvcCkpIHtcbiBcdC8qIGRzdCA9IGRzdCBcdTAwMjYgc3JjICovXG5AQCAtMzg1LDIxICs0MjIsMTEgQEAgdm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApXG4gXHRcdGJyZWFrO1xuIFx0LyogZHN0ID0gZHN0IC8gc3JjICovXG4gXHRjYXNlIEJQRl9ESVY6XG4tXHRcdGlmIChjcHVfaGFzX21pcHMzMnI2KSB7XG4tXHRcdFx0ZW1pdChjdHgsIGRpdnVfcjYsIGRzdCwgZHN0LCBzcmMpO1xuLVx0XHR9IGVsc2Uge1xuLVx0XHRcdGVtaXQoY3R4LCBkaXZ1LCBkc3QsIHNyYyk7XG4tXHRcdFx0ZW1pdChjdHgsIG1mbG8sIGRzdCk7XG4tXHRcdH1cbitcdFx0ZW1pdF9kaXYoY3R4LCBkc3QsIHNyYywgb2ZmKTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBkc3QgJSBzcmMgKi9cbiBcdGNhc2UgQlBGX01PRDpcbi1cdFx0aWYgKGNwdV9oYXNfbWlwczMycjYpIHtcbi1cdFx0XHRlbWl0KGN0eCwgbW9kdSwgZHN0LCBkc3QsIHNyYyk7XG4tXHRcdH0gZWxzZSB7XG4tXHRcdFx0ZW1pdChjdHgsIGRpdnUsIGRzdCwgc3JjKTtcbi1cdFx0XHRlbWl0KGN0eCwgbWZoaSwgZHN0KTtcbi1cdFx0fVxuK1x0XHRlbWl0X21vZChjdHgsIGRzdCwgc3JjLCBvZmYpO1xuIFx0XHRicmVhaztcbiBcdH1cbiBcdGNsb2JiZXJfcmVnKGN0eCwgZHN0KTtcbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaFxuaW5kZXggYTM3ZmUyMDgxOGViOS4uMGRkZWRiNzMzZGQxOSAxMDA2NDRcbi0tLSBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmhcbisrKyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmhcbkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBlbWl0X21vdl9pKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHMzMiBpbW0pO1xuIHZvaWQgZW1pdF9tb3ZfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMpO1xuIFxuIC8qIFZhbGlkYXRlIEFMVS9BTFU2NCBpbW1lZGlhdGUgcmFuZ2UgKi9cbi1ib29sIHZhbGlkX2FsdV9pKHU4IG9wLCBzMzIgaW1tKTtcbitib29sIHZhbGlkX2FsdV9pKHU4IG9wLCBzMzIgaW1tLCBzMTYgb2ZmKTtcbiBcbiAvKiBSZXdyaXRlIEFMVS9BTFU2NCBpbW1lZGlhdGUgb3BlcmF0aW9uICovXG4gYm9vbCByZXdyaXRlX2FsdV9pKHU4IG9wLCBzMzIgaW1tLCB1OCAqYWx1LCBzMzIgKnZhbCk7XG5AQCAtMTcyLDcgKzE3Miw3IEBAIGJvb2wgcmV3cml0ZV9hbHVfaSh1OCBvcCwgczMyIGltbSwgdTggKmFsdSwgczMyICp2YWwpO1xuIHZvaWQgZW1pdF9hbHVfaShzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCBzMzIgaW1tLCB1OCBvcCk7XG4gXG4gLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoMzItYml0KSAqL1xuLXZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wKTtcbit2b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcCwgczE2IG9mZik7XG4gXG4gLyogQXRvbWljIHJlYWQtbW9kaWZ5LXdyaXRlICgzMi1iaXQpICovXG4gdm9pZCBlbWl0X2F0b21pY19yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZiwgdTggY29kZSk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jXG5pbmRleCA0MGE4NzhiNjcyZjVkLi42NjE5MTgyYjVlZjMzIDEwMDY0NFxuLS0tIGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jXG4rKysgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNcbkBAIC01MTIsNyArNTEyLDcgQEAgc3RhdGljIHZvaWQgZW1pdF9tdWxfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LFxuIFx0Y2xvYmJlcl9yZWc2NChjdHgsIGRzdCk7XG4gfVxuIFxuLS8qIEhlbHBlciBmdW5jdGlvbiBmb3IgNjQtYml0IG1vZHVsbyAqL1xuKy8qIEhlbHBlciBmdW5jdGlvbiBmb3IgdW5zaWduZWQgNjQtYml0IG1vZHVsbyAqL1xuIHN0YXRpYyB1NjQgaml0X21vZDY0KHU2NCBhLCB1NjQgYilcbiB7XG4gXHR1NjQgcmVtO1xuQEAgLTUyMSwxMyArNTIxLDIyIEBAIHN0YXRpYyB1NjQgaml0X21vZDY0KHU2NCBhLCB1NjQgYilcbiBcdHJldHVybiByZW07XG4gfVxuIFxuKy8qIEhlbHBlciBmdW5jdGlvbiBmb3Igc2lnbmVkIDY0LWJpdCBtb2R1bG8gKi9cbitzdGF0aWMgczY0IGppdF9zbW9kNjQoczY0IGEsIHM2NCBiKVxuK3tcbitcdHM2NCBxdW90ID0gZGl2NjRfczY0KGEsIGIpO1xuK1xuK1x0cmV0dXJuIGEgLSBxdW90ICogYjtcbit9XG4rXG4gLyogQUxVIGRpdi9tb2QgcmVnaXN0ZXIgKDY0LWJpdCkgKi9cbi1zdGF0aWMgdm9pZCBlbWl0X2Rpdm1vZF9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsXG4tXHRcdFx0ICAgIGNvbnN0IHU4IGRzdFtdLCBjb25zdCB1OCBzcmNbXSwgdTggb3ApXG4rc3RhdGljIHZvaWQgZW1pdF9kaXZtb2RfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCBjb25zdCB1OCBkc3RbXSxcbitcdFx0XHQgICAgY29uc3QgdTggc3JjW10sIHU4IG9wLCBzMTYgb2ZmKVxuIHtcbiBcdGNvbnN0IHU4ICpyMCA9IGJwZjJtaXBzMzJbQlBGX1JFR18wXTsgLyogTWFwcGVkIHRvIHYwLXYxICovXG4gXHRjb25zdCB1OCAqcjEgPSBicGYybWlwczMyW0JQRl9SRUdfMV07IC8qIE1hcHBlZCB0byBhMC1hMSAqL1xuIFx0Y29uc3QgdTggKnIyID0gYnBmMm1pcHMzMltCUEZfUkVHXzJdOyAvKiBNYXBwZWQgdG8gYTItYTMgKi9cbitcdGJvb2wgaXNfc2lnbmVkID0gb2ZmID09IDE7XG4gXHRpbnQgZXhjbHVkZSwgaztcbiBcdHUzMiBhZGRyID0gMDtcbiBcbkBAIC01NDYsMTEgKzU1NSwxMSBAQCBzdGF0aWMgdm9pZCBlbWl0X2Rpdm1vZF9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsXG4gXHRzd2l0Y2ggKEJQRl9PUChvcCkpIHtcbiBcdC8qIGRzdCA9IGRzdCAvIHNyYyAqL1xuIFx0Y2FzZSBCUEZfRElWOlxuLVx0XHRhZGRyID0gKHUzMilcdTAwMjZkaXY2NF91NjQ7XG4rXHRcdGFkZHIgPSBpc19zaWduZWQgPyAodTMyKVx1MDAyNmRpdjY0X3M2NCA6ICh1MzIpXHUwMDI2ZGl2NjRfdTY0O1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGRzdCAlIHNyYyAqL1xuIFx0Y2FzZSBCUEZfTU9EOlxuLVx0XHRhZGRyID0gKHUzMilcdTAwMjZqaXRfbW9kNjQ7XG4rXHRcdGFkZHIgPSBpc19zaWduZWQgPyAodTMyKVx1MDAyNmppdF9zbW9kNjQgOiAodTMyKVx1MDAyNmppdF9tb2Q2NDtcbiBcdFx0YnJlYWs7XG4gXHR9XG4gXHRlbWl0X21vdl9pKGN0eCwgTUlQU19SX1Q5LCBhZGRyKTtcbkBAIC0xNTE2LDkgKzE1MjUsOSBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01VTCB8IEJQRl9LOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0RJViB8IEJQRl9LOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01PRCB8IEJQRl9LOlxuLVx0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkge1xuK1x0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBvZmYpKSB7XG4gXHRcdFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNiwgaW1tKTtcbi1cdFx0XHRlbWl0X2FsdV9yKGN0eCwgbG8oZHN0KSwgTUlQU19SX1Q2LCBCUEZfT1AoY29kZSkpO1xuK1x0XHRcdGVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBNSVBTX1JfVDYsIEJQRl9PUChjb2RlKSwgb2ZmKTtcbiBcdFx0fSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBcdTAwMjZhbHUsIFx1MDAyNnZhbCkpIHtcbiBcdFx0XHRlbWl0X2FsdV9pKGN0eCwgbG8oZHN0KSwgdmFsLCBhbHUpO1xuIFx0XHR9XG5AQCAtMTU0Niw3ICsxNTU1LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9NVUwgfCBCUEZfWDpcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9ESVYgfCBCUEZfWDpcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfWDpcbi1cdFx0ZW1pdF9hbHVfcihjdHgsIGxvKGRzdCksIGxvKHNyYyksIEJQRl9PUChjb2RlKSk7XG4rXHRcdGVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpLCBCUEZfT1AoY29kZSksIG9mZik7XG4gXHRcdGVtaXRfemV4dF92ZXIoY3R4LCBkc3QpO1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGltbSAoNjQtYml0KSAqL1xuQEAgLTE1OTksNyArMTYwOCw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRcdCAqIGFuZCB0aGVuIGRvIHRoZSBvcGVyYXRpb24gb24gdGhpcyByZWdpc3Rlci5cbiBcdFx0ICovXG4gXHRcdGVtaXRfbW92X3NlX2k2NChjdHgsIHRtcCwgaW1tKTtcbi1cdFx0ZW1pdF9kaXZtb2RfcjY0KGN0eCwgZHN0LCB0bXAsIEJQRl9PUChjb2RlKSk7XG4rXHRcdGVtaXRfZGl2bW9kX3I2NChjdHgsIGRzdCwgdG1wLCBCUEZfT1AoY29kZSksIG9mZik7XG4gXHRcdGJyZWFrO1xuIFx0LyogZHN0ID0gZHN0IFx1MDAyNiBzcmMgKDY0LWJpdCkgKi9cbiBcdC8qIGRzdCA9IGRzdCB8IHNyYyAoNjQtYml0KSAqL1xuQEAgLTE2MjksNyArMTYzOCw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHQvKiBkc3QgPSBkc3QgJSBzcmMgKDY0LWJpdCkgKi9cbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX0RJViB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTU9EIHwgQlBGX1g6XG4tXHRcdGVtaXRfZGl2bW9kX3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSkpO1xuK1x0XHRlbWl0X2Rpdm1vZF9yNjQoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpLCBvZmYpO1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGh0b2xlKGRzdCkgKi9cbiBcdC8qIGRzdCA9IGh0b2JlKGRzdCkgKi9cbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNcbmluZGV4IGZhN2U5YWEzN2Y0OTguLmRiMDI3YzJkOTIyMTIgMTAwNjQ0XG4tLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNcbisrKyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuY1xuQEAgLTE5Nyw4ICsxOTcsNDMgQEAgc3RhdGljIHZvaWQgZW1pdF9hbHVfaTY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHMzMiBpbW0sIHU4IG9wKVxuIFx0Y2xvYmJlcl9yZWcoY3R4LCBkc3QpO1xuIH1cbiBcbisvKiBBTFUgZGl2aXNpb24gb3BlcmF0aW9uICg2NC1iaXQpICovXG4rc3RhdGljIHZvaWQgZW1pdF9kaXY2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHMxNiBvZmYpXG4re1xuK1x0aWYgKGNwdV9oYXNfbWlwczY0cjYpIHtcbitcdFx0aWYgKG9mZiA9PSAxKVxuK1x0XHRcdGVtaXQoY3R4LCBkZGl2X3I2LCBkc3QsIGRzdCwgc3JjKTtcbitcdFx0ZWxzZVxuK1x0XHRcdGVtaXQoY3R4LCBkZGl2dV9yNiwgZHN0LCBkc3QsIHNyYyk7XG4rXHR9IGVsc2Uge1xuK1x0XHRpZiAob2ZmID09IDEpXG4rXHRcdFx0ZW1pdChjdHgsIGRkaXYsIGRzdCwgc3JjKTtcbitcdFx0ZWxzZVxuK1x0XHRcdGVtaXQoY3R4LCBkZGl2dSwgZHN0LCBzcmMpO1xuK1x0XHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcbitcdH1cbit9XG4rXG4rLyogQUxVIG1vZHVsbyBvcGVyYXRpb24gKDY0LWJpdCkgKi9cbitzdGF0aWMgdm9pZCBlbWl0X21vZDY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZilcbit7XG4rXHRpZiAoY3B1X2hhc19taXBzNjRyNikge1xuK1x0XHRpZiAob2ZmID09IDEpXG4rXHRcdFx0ZW1pdChjdHgsIGRtb2QsIGRzdCwgZHN0LCBzcmMpO1xuK1x0XHRlbHNlXG4rXHRcdFx0ZW1pdChjdHgsIGRtb2R1LCBkc3QsIGRzdCwgc3JjKTtcbitcdH0gZWxzZSB7XG4rXHRcdGlmIChvZmYgPT0gMSlcbitcdFx0XHRlbWl0KGN0eCwgZGRpdiwgZHN0LCBzcmMpO1xuK1x0XHRlbHNlXG4rXHRcdFx0ZW1pdChjdHgsIGRkaXZ1LCBkc3QsIHNyYyk7XG4rXHRcdGVtaXQoY3R4LCBtZmhpLCBkc3QpO1xuK1x0fVxuK31cbitcbiAvKiBBTFUgcmVnaXN0ZXIgb3BlcmF0aW9uICg2NC1iaXQpICovXG4tc3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApXG4rc3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3AsXG4rXHRcdFx0IHMxNiBvZmYpXG4ge1xuIFx0c3dpdGNoIChCUEZfT1Aob3ApKSB7XG4gXHQvKiBkc3QgPSBkc3QgXHUwMDNjXHUwMDNjIHNyYyAqL1xuQEAgLTIzNSwyNSArMjcwLDE1IEBAIHN0YXRpYyB2b2lkIGVtaXRfYWx1X3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wKVxuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGRzdCAvIHNyYyAqL1xuIFx0Y2FzZSBCUEZfRElWOlxuLVx0XHRpZiAoY3B1X2hhc19taXBzNjRyNikge1xuLVx0XHRcdGVtaXQoY3R4LCBkZGl2dV9yNiwgZHN0LCBkc3QsIHNyYyk7XG4tXHRcdH0gZWxzZSB7XG4tXHRcdFx0ZW1pdChjdHgsIGRkaXZ1LCBkc3QsIHNyYyk7XG4tXHRcdFx0ZW1pdChjdHgsIG1mbG8sIGRzdCk7XG4tXHRcdH1cbitcdFx0ZW1pdF9kaXY2NChjdHgsIGRzdCwgc3JjLCBvZmYpO1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGRzdCAlIHNyYyAqL1xuIFx0Y2FzZSBCUEZfTU9EOlxuLVx0XHRpZiAoY3B1X2hhc19taXBzNjRyNikge1xuLVx0XHRcdGVtaXQoY3R4LCBkbW9kdSwgZHN0LCBkc3QsIHNyYyk7XG4tXHRcdH0gZWxzZSB7XG4tXHRcdFx0ZW1pdChjdHgsIGRkaXZ1LCBkc3QsIHNyYyk7XG4tXHRcdFx0ZW1pdChjdHgsIG1maGksIGRzdCk7XG4tXHRcdH1cbitcdFx0ZW1pdF9tb2Q2NChjdHgsIGRzdCwgc3JjLCBvZmYpO1xuIFx0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG4gXHRcdC8qIFdpZHRoLWdlbmVyaWMgb3BlcmF0aW9ucyAqL1xuLVx0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIG9wKTtcbitcdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgc3JjLCBvcCwgb2ZmKTtcbiBcdH1cbiBcdGNsb2JiZXJfcmVnKGN0eCwgZHN0KTtcbiB9XG5AQCAtNjc0LDkgKzY5OSw5IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfQU5EIHwgQlBGX0s6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfWE9SIHwgQlBGX0s6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTFNIIHwgQlBGX0s6XG4tXHRcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0pKSB7XG4rXHRcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIG9mZikpIHtcbiBcdFx0XHRlbWl0X21vdl9pKGN0eCwgTUlQU19SX1Q0LCBpbW0pO1xuLVx0XHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTtcbitcdFx0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSwgb2ZmKTtcbiBcdFx0fSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBcdTAwMjZhbHUsIFx1MDAyNnZhbCkpIHtcbiBcdFx0XHRlbWl0X2FsdV9pKGN0eCwgZHN0LCB2YWwsIGFsdSk7XG4gXHRcdH1cbkBAIC02OTYsMTAgKzcyMSwxMCBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01VTCB8IEJQRl9LOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0RJViB8IEJQRl9LOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01PRCB8IEJQRl9LOlxuLVx0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkge1xuK1x0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBvZmYpKSB7XG4gXHRcdFx0ZW1pdF9zZXh0KGN0eCwgZHN0LCBkc3QpO1xuIFx0XHRcdGVtaXRfbW92X2koY3R4LCBNSVBTX1JfVDQsIGltbSk7XG4tXHRcdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSkpO1xuK1x0XHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBvZmYpO1xuIFx0XHR9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIFx1MDAyNmFsdSwgXHUwMDI2dmFsKSkge1xuIFx0XHRcdGVtaXRfc2V4dChjdHgsIGRzdCwgZHN0KTtcbiBcdFx0XHRlbWl0X2FsdV9pKGN0eCwgZHN0LCB2YWwsIGFsdSk7XG5AQCAtNzE0LDcgKzczOSw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfT1IgfCBCUEZfWDpcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9YT1IgfCBCUEZfWDpcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9MU0ggfCBCUEZfWDpcbi1cdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSkpO1xuK1x0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSwgb2ZmKTtcbiBcdFx0ZW1pdF96ZXh0X3ZlcihjdHgsIGRzdCk7XG4gXHRcdGJyZWFrO1xuIFx0LyogZHN0ID0gZHN0IFx1MDAzZVx1MDAzZSBzcmMgKi9cbkBAIC03MzMsNyArNzU4LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfWDpcbiBcdFx0ZW1pdF9zZXh0KGN0eCwgZHN0LCBkc3QpO1xuIFx0XHRlbWl0X3NleHQoY3R4LCBNSVBTX1JfVDQsIHNyYyk7XG4tXHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTtcbitcdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksIG9mZik7XG4gXHRcdGVtaXRfemV4dF92ZXIoY3R4LCBkc3QpO1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGltbSAoNjQtYml0KSAqL1xuQEAgLTc3MCw5ICs3OTUsOSBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTVVMIHwgQlBGX0s6XG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9ESVYgfCBCUEZfSzpcbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01PRCB8IEJQRl9LOlxuLVx0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkge1xuK1x0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBvZmYpKSB7XG4gXHRcdFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTtcbi1cdFx0XHRlbWl0X2FsdV9yNjQoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTtcbitcdFx0XHRlbWl0X2FsdV9yNjQoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBvZmYpO1xuIFx0XHR9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIFx1MDAyNmFsdSwgXHUwMDI2dmFsKSkge1xuIFx0XHRcdGVtaXRfYWx1X2k2NChjdHgsIGRzdCwgdmFsLCBhbHUpO1xuIFx0XHR9XG5AQCAtNzk5LDcgKzgyNCw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NVUwgfCBCUEZfWDpcbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX0RJViB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTU9EIHwgQlBGX1g6XG4tXHRcdGVtaXRfYWx1X3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSkpO1xuK1x0XHRlbWl0X2FsdV9yNjQoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpLCBvZmYpO1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGh0b2xlKGRzdCkgKi9cbiBcdC8qIGRzdCA9IGh0b2JlKGRzdCkgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDIyOjIwOjQ0LjUxODk4NzQ2M1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjE1MzU0NTM3MDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgRXZhbHVhdGlvbjogQSBTdHJhaWdodGZvcndhcmQgTmVnYXRpdmUqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFdlJ3ZlIGdvdCBhIHBhdGNoIHNlcmllcywgYW5kIHRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIGl0IGp1c3RpZmllcyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLCBnaXZlbiB0aGF0IHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LiBUaGlzIGlzIGEgcHJldHR5IHN0YW5kYXJkIGtlcm5lbCByZXZpZXcsIGEgcXVpY2sgdHJpYWdlIHRvIHNlZSBpZiB0aGUgY2hhbmdlcyB3YXJyYW50IGZ1cnRoZXIgYXR0ZW50aW9uLiBUaGUgY2hhbmdlcyBhcmUgYmVuaWduIGluIHRlcm1zIG9mIHNldmVyaXR5LCB0aGFua2Z1bGx5LlxuXG5GaXJzdCwgSSBuZWVkIHRvIHNlZSB3aGF0J3MgYmVpbmcgbW9kaWZpZWQuIFRoZSBkaWZmIHRhcmdldHMgZmlsZXMgZXhjbHVzaXZlbHkgd2l0aGluIGBhcmNoL21pcHMvYC4gU3BlY2lmaWNhbGx5LCB3ZSBhcmUgbG9va2luZyBhdCBjaGFuZ2VzIHJlbGF0ZWQgdG8gdGhlIE1JUFMgQlBGIEpJVCBhbmQgdWFzbS5cblxuTm93LCBsZXQncyBjb25zdWx0IHRoZSBjcml0ZXJpYS4gU2VjdGlvbiAyIG9mIHRoZSBndWlkZWxpbmVzIGdpdmVzIHVzIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYSDigJMgY29uZGl0aW9ucyB0aGF0ICpleGNsdWRlKiB0aGUgbmVlZCBmb3IgZnV6emluZy4gT25lIG9mIHRoZSBrZXkgZXhjbHVzaW9ucyBpcywgYW5kIHRoaXMganVtcHMgb3V0IGltbWVkaWF0ZWx5OiBcIkNvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cIlxuXG5CaW5nby4gRXZlcnl0aGluZyBtb2RpZmllZCBpcyBuZXN0bGVkIHVuZGVyIGBhcmNoL21pcHMvYC4gTUlQUyBjb2RlIGlzIGluaGVyZW50bHkgYXJjaGl0ZWN0dXJlLXNwZWNpZmljLiBTaW5jZSB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NCwgdGhpcyBjb2RlIHdpbGwgYmUgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpbiB0aGUgdGFyZ2V0IGVudmlyb25tZW50LlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgaW5kZWVkIHRoZSBjYXNlLiBUaGUgcHJvdmlkZWQgZGlmZiBjb25maXJtcyB0aGlzLiBFdmVyeXRoaW5nIGlzIHdpdGhpbiB0aGUgYGFyY2gvbWlwcy9gIGRpcmVjdG9yeS4gTm8gY3Jvc3MtYXJjaGl0ZWN0dXJlIG1vZGlmaWNhdGlvbnMgaGVyZS5cblxuVG8gYmUgZXh0cmEgdGhvcm91Z2gsIEknbGwgcnVuIGEgcXVpY2sgYGdyZXBwZXJgIHNjYW4gKG9yIGVxdWl2YWxlbnQpIGp1c3QgdG8gbWFrZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIGV2ZW4gdGhvdWdoIHRoZSBkaWZmIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoaXMgaXMgdGhlIGNhc2UuIEV2ZW4gYSBxdWljayBzZWFyY2ggb24gc29tZSBrZXl3b3JkcyBjb25maXJtcyB0aGlzLlxuXG5UaGVyZWZvcmUsIGFwcGx5aW5nIFNlY3Rpb24gMjogXCJDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXCIgV2UgYXJlIGxvb2tpbmcgYXQgYSBjbGVhci1jdXQgY2FzZSBvZiBgV29ydGhGdXp6aW5nID0gZmFsc2VgLiBObyBmdXp6aW5nIGlzIHdhcnJhbnRlZCBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjM3NCwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk5MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDIyOjIwOjU5Ljg3MzUyNzc1OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTU3ODQ1MDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVtaXRfZGl2NjRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jPTE1OD1zdGF0aWMgdm9pZCBlbWl0X2FsdV9pNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApXFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtMjAwLS8qIEFMVSBkaXZpc2lvbiBvcGVyYXRpb24gKDY0LWJpdCkgKi9cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmM6MjAxOnN0YXRpYyB2b2lkIGVtaXRfZGl2NjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCBzMTYgb2ZmKVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy0yMDIte1xcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jPTIzNT1zdGF0aWMgdm9pZCBlbWl0X2FsdV9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcCxcXG4tLVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy0yNzItXFx0Y2FzZSBCUEZfRElWOlxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYzoyNzM6XFx0XFx0ZW1pdF9kaXY2NChjdHgsIGRzdCwgc3JjLCBvZmYpO1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy0yNzQtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDIyOjIxOjAxLjgzMTM3OTEyOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjM0NjQ5MDAwNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgVHJpYWdlIEFzc2Vzc21lbnQ6IE1JUFMtU3BlY2lmaWMgQ29kZSBvbiBhbiBBTUQ2NCBUYXJnZXQqKlxuXG5Pa2F5LCBoZXJlJ3MgdGhlIGRlYWwuIFRoaXMgcGF0Y2ggSSdtIGxvb2tpbmcgYXQgaXMgc3RyaWN0bHkgY29uZmluZWQgdG8gdGhlIGBhcmNoL21pcHMvYCBkaXJlY3RvcnkuIFRoYXQncyBpbW1lZGlhdGVseSBhIHJlZCBmbGFnIGdpdmVuIHRoYXQgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgZm9yIHRoaXMgZnV6emluZyBlZmZvcnQgaXMgQU1ENjQuIFRpbWUgdG8gYXBwbHkgdGhlIHRyaWFnZSBwaGlsb3NvcGh5LiBTcGVjaWZpY2FsbHksIFNlY3Rpb24gMiBpcyB3aGF0J3MgcmVsZXZhbnQgaGVyZS4gSXQncyBwcmV0dHkgY2xlYXIgY3V0OiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIGludG8gYSBzcGVjaWZpYyBzZXQgb2YgY2F0ZWdvcmllcywgYW5kIGlmIHNvLCBXb3J0aEZ1enppbmcgZ2V0cyBhIGZpcm0gXCJmYWxzZS5cIlxuXG5UaGUgc2VjdGlvbiBwb2ludHMgb3V0IHRoYXQgdW5yZWFjaGFibGUgY29kZSBwYXRocyBhcmUgYSB2YWxpZCByZWFzb24gdG8gc2V0IFwiV29ydGhGdXp6aW5nXCIgdG8gZmFsc2UuIEkgaW1tZWRpYXRlbHkgbG9vayBmb3IgY29kZSBwYXRocyB0aGF0IGFyZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMsIGFuZCB0aGF0IGlzIHdoYXQgSSBzZWUuIFRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTUlQUyBtaWNyby1hc3NlbWJsZXIgKGBhcmNoL21pcHMvbW0vdWFzbSpgLCBgYXJjaC9taXBzL2luY2x1ZGUvYXNtL3Vhc20uaGApIGFuZCBNSVBTIEJQRiBKSVQgY29tcGlsZXIgKGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcCpgKSBjb2RlLiBTaW5jZSB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBpcyB0YXJnZXRpbmcgYW1kNjQgYW5kIG5vIGNyb3NzLWNvbXBpbGF0aW9uIGlzIHByZXNlbnQsIHRoZXNlIGNvZGUgcGF0aHMgYXJlLCBieSBkZWZpbml0aW9uLCBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gYW1kNjQuIFRoZXJlJ3Mgbm8gd2F5IHRoZXknbGwgYmUgZXhlY3V0ZWQuXG5cbkdpdmVuIHRoaXMsIEkgaGF2ZSB0byBjb25jbHVkZTpcbiogICBXb3J0aEZ1enppbmc6IGBmYWxzZWBcbiogICBGb2N1c1N5bWJvbHM6IGBbXWBcbiogICBFbmFibGVDb25maWdzOiBgW11gXG4qICAgUmVhc29uaW5nOiBNSVBTLXNwZWNpZmljIGNvZGUgb24gYW4gQU1ENjQgdGFyZ2V0IG1lYW5zIGl0J3MgdW5yZWFjaGFibGUuXG5cbk9rYXksIHRoYXQncyBteSBjYWxsLiBOb3csIGxldCdzIGdvIGFoZWFkIGFuZCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDA4MSwiT3V0cHV0VG9rZW5zIjo4NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQyMjoyMTowNS4yOTYyODE1NzVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIE1JUFMgbWljcm8tYXNzZW1ibGVyIHJvdXRpbmVzIGFuZCBNSVBTIEJQRiBKSVQgY29tcGlsZXIgaW1wbGVtZW50YXRpb25zICh1bmRlciBhcmNoL21pcHMvKS4gQmVjYXVzZSB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NCwgdGhlc2UgY29kZSBwYXRocyBhcmUgZXhjbHVzaXZlIHRvIE1JUFMgYW5kIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZyBvbiBhbWQ2NC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIE1JUFMgbWljcm8tYXNzZW1ibGVyIHJvdXRpbmVzIGFuZCBNSVBTIEJQRiBKSVQgY29tcGlsZXIgaW1wbGVtZW50YXRpb25zICh1bmRlciBhcmNoL21pcHMvKS4gQmVjYXVzZSB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NCwgdGhlc2UgY29kZSBwYXRocyBhcmUgZXhjbHVzaXZlIHRvIE1JUFMgYW5kIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZyBvbiBhbWQ2NC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDIyOjIxOjA1LjI5NjMwNTY5NloiLCJTZXEiOjcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowgtkp9[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-11 21:46:38 +0000 UTC FinishedAt: 2026-09-11 22:21:06 +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+CgkJCTx0ZD4yMDI2LzA5LzExIDIyOjIwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgTUlQUyBtaWNyby1hc3NlbWJsZXIgcm91dGluZXMgYW5kIE1JUFMgQlBGIEpJVCBjb21waWxlciBpbXBsZW1lbnRhdGlvbnMgKHVuZGVyIGFyY2gvbWlwcy8pLiBCZWNhdXNlIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCB0aGVzZSBjb2RlIHBhdGhzIGFyZSBleGNsdXNpdmUgdG8gTUlQUyBhbmQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nIG9uIGFtZDY0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAyMjoyMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGNmNmQ3NDNmYmQ2NWIyY2NkYWViMjMyM2ExOWY2MDdlMTlkODg2ZGNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIFNlcCAxMSAyMjoyMDo0MyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3Vhc20uaFxuaW5kZXggYjQzYmZkNDQ1MjUyMS4uYWRlYTM1ZGYwZjhkYyAxMDA2NDRcbi0tLSBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS91YXNtLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS91YXNtLmhcbkBAIC04NSwxNSAmIzQzOzg1LDIwIEBAIElwX3UxdTIoX2N0YzEpO1xuIElwX3UydTEoX2N0Y21zYSk7XG4gSXBfdTJ1MXMzKF9kYWRkaXUpO1xuIElwX3UzdTF1MihfZGFkZHUpO1xuJiM0MztJcF91MXUyKF9kZGl2KTtcbiYjNDM7SXBfdTN1MXUyKF9kZGl2X3I2KTtcbiBJcF91MXUyKF9kZGl2dSk7XG4gSXBfdTN1MXUyKF9kZGl2dV9yNik7XG4gSXBfdTEoX2RpKTtcbiBJcF91MnUxbXNidTMoX2RpbnMpO1xuIElwX3UydTFtc2J1MyhfZGluc20pO1xuIElwX3UydTFtc2J1MyhfZGluc3UpO1xuJiM0MztJcF91MXUyKF9kaXYpO1xuJiM0MztJcF91M3UxdTIoX2Rpdl9yNik7XG4gSXBfdTF1MihfZGl2dSk7XG4gSXBfdTN1MXUyKF9kaXZ1X3I2KTtcbiBJcF91MXUydTMoX2RtZmMwKTtcbiYjNDM7SXBfdTN1MXUyKF9kbW9kKTtcbiBJcF91M3UxdTIoX2Rtb2R1KTtcbiBJcF91MXUydTMoX2RtdGMwKTtcbiBJcF91MXUyKF9kbXVsdHUpO1xuQEAgLTEzNSw2ICYjNDM7MTQwLDcgQEAgSXBfdTF1MnUzKF9tZmMwKTtcbiBJcF91MXUydTMoX21maGMwKTtcbiBJcF91MShfbWZoaSk7XG4gSXBfdTEoX21mbG8pO1xuJiM0MztJcF91M3UxdTIoX21vZCk7XG4gSXBfdTN1MXUyKF9tb2R1KTtcbiBJcF91M3UxdTIoX21vdm4pO1xuIElwX3UzdTF1MihfbW92eik7XG5AQCAtMTU2LDYgJiM0MzsxNjIsOCBAQCBJcF91MnMzdTEoX3NiKTtcbiBJcF91MnMzdTEoX3NjKTtcbiBJcF91MnMzdTEoX3NjZCk7XG4gSXBfdTJzM3UxKF9zZCk7XG4mIzQzO0lwX3UydTEoX3NlYik7XG4mIzQzO0lwX3UydTEoX3NlaCk7XG4gSXBfdTN1MXUyKF9zZWxlcXopO1xuIElwX3UzdTF1Mihfc2VsbmV6KTtcbiBJcF91MnMzdTEoX3NoKTtcbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbW0vdWFzbS1taXBzLmMgYi9hcmNoL21pcHMvbW0vdWFzbS1taXBzLmNcbmluZGV4IGUxNWM2NzAwY2QwODguLjJkMTY2OGI1OGRkZGUgMTAwNjQ0XG4tLS0gYS9hcmNoL21pcHMvbW0vdWFzbS1taXBzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbWlwcy9tbS91YXNtLW1pcHMuY1xuQEAgLTc1LDYgJiM0Mzs3NSw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW5zbiBpbnNuX3RhYmxlW2luc25faW52YWxpZF0gPSB7XG4gXHRbaW5zbl9jdGNtc2FdXHQ9IHtNKG1zYV9vcCwgMCwgbXNhX2N0Y19vcCwgMCwgMCwgbXNhX2VsbV9vcCksIFJEIHwgUkV9LFxuIFx0W2luc25fZGFkZGl1XVx0PSB7TShkYWRkaXVfb3AsIDAsIDAsIDAsIDAsIDApLCBSUyB8IFJUIHwgU0lNTX0sXG4gXHRbaW5zbl9kYWRkdV1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgZGFkZHVfb3ApLCBSUyB8IFJUIHwgUkR9LFxuJiM0MztcdFtpbnNuX2RkaXZdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRkaXZfb3ApLCBSUyB8IFJUfSxcbiYjNDM7XHRbaW5zbl9kZGl2X3I2XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkZGl2X2RkaXY2X29wLCBkZGl2X29wKSxcbiYjNDM7XHRcdFx0XHRSUyB8IFJUIHwgUkR9LFxuIFx0W2luc25fZGRpdnVdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRkaXZ1X29wKSwgUlMgfCBSVH0sXG4gXHRbaW5zbl9kZGl2dV9yNl1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGRpdnVfZGRpdnU2X29wLCBkZGl2dV9vcCksXG4gXHRcdFx0XHRSUyB8IFJUIHwgUkR9LFxuQEAgLTgyLDEwICYjNDM7ODUsMTUgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnNuIGluc25fdGFibGVbaW5zbl9pbnZhbGlkXSA9IHtcbiBcdFtpbnNuX2RpbnNdXHQ9IHtNKHNwZWMzX29wLCAwLCAwLCAwLCAwLCBkaW5zX29wKSwgUlMgfCBSVCB8IFJEIHwgUkV9LFxuIFx0W2luc25fZGluc21dXHQ9IHtNKHNwZWMzX29wLCAwLCAwLCAwLCAwLCBkaW5zbV9vcCksIFJTIHwgUlQgfCBSRCB8IFJFfSxcbiBcdFtpbnNuX2RpbnN1XVx0PSB7TShzcGVjM19vcCwgMCwgMCwgMCwgMCwgZGluc3Vfb3ApLCBSUyB8IFJUIHwgUkQgfCBSRX0sXG4mIzQzO1x0W2luc25fZGl2XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkaXZfb3ApLCBSUyB8IFJUfSxcbiYjNDM7XHRbaW5zbl9kaXZfcjZdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRpdl9kaXY2X29wLCBkaXZfb3ApLFxuJiM0MztcdFx0XHRcdFJTIHwgUlQgfCBSRH0sXG4gXHRbaW5zbl9kaXZ1XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkaXZ1X29wKSwgUlMgfCBSVH0sXG4gXHRbaW5zbl9kaXZ1X3I2XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkaXZ1X2RpdnU2X29wLCBkaXZ1X29wKSxcbiBcdFx0XHRcdFJTIHwgUlQgfCBSRH0sXG4gXHRbaW5zbl9kbWZjMF1cdD0ge00oY29wMF9vcCwgZG1mY19vcCwgMCwgMCwgMCwgMCksIFJUIHwgUkQgfCBTRVR9LFxuJiM0MztcdFtpbnNuX2Rtb2RdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRkaXZfZG1vZF9vcCwgZGRpdl9vcCksXG4mIzQzO1x0XHRcdFx0UlMgfCBSVCB8IFJEfSxcbiBcdFtpbnNuX2Rtb2R1XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkZGl2dV9kbW9kdV9vcCwgZGRpdnVfb3ApLFxuIFx0XHRcdFx0UlMgfCBSVCB8IFJEfSxcbiBcdFtpbnNuX2RtdGMwXVx0PSB7TShjb3AwX29wLCBkbXRjX29wLCAwLCAwLCAwLCAwKSwgUlQgfCBSRCB8IFNFVH0sXG5AQCAtMTQwLDYgJiM0MzsxNDgsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGluc24gaW5zbl90YWJsZVtpbnNuX2ludmFsaWRdID0ge1xuIFx0W2luc25fbWZoYzBdXHQ9IHtNKGNvcDBfb3AsIG1maGMwX29wLCAwLCAwLCAwLCAwKSwgIFJUIHwgUkQgfCBTRVR9LFxuIFx0W2luc25fbWZoaV1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgbWZoaV9vcCksIFJEfSxcbiBcdFtpbnNuX21mbG9dXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIG1mbG9fb3ApLCBSRH0sXG4mIzQzO1x0W2luc25fbW9kXVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkaXZfbW9kX29wLCBkaXZfb3ApLFxuJiM0MztcdFx0XHRcdFJTIHwgUlQgfCBSRH0sXG4gXHRbaW5zbl9tb2R1XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkaXZ1X21vZHVfb3AsIGRpdnVfb3ApLFxuIFx0XHRcdFx0UlMgfCBSVCB8IFJEfSxcbiBcdFtpbnNuX21vdm5dXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIG1vdm5fb3ApLCBSUyB8IFJUIHwgUkR9LFxuQEAgLTE3Nyw2ICYjNDM7MTg3LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnNuIGluc25fdGFibGVbaW5zbl9pbnZhbGlkXSA9IHtcbiBcdFtpbnNuX3NjZF1cdD0ge002KHNwZWMzX29wLCAwLCAwLCAwLCBzY2Q2X29wKSwgIFJTIHwgUlQgfCBTSU1NOX0sXG4gI2VuZGlmXG4gXHRbaW5zbl9zZF1cdD0ge00oc2Rfb3AsIDAsIDAsIDAsIDAsIDApLCAgUlMgfCBSVCB8IFNJTU19LFxuJiM0MztcdFtpbnNuX3NlYl1cdD0ge00oc3BlYzNfb3AsIDAsIDAsIDAsIHNlYl9vcCwgYnNoZmxfb3ApLCBSVCB8IFJEfSxcbiYjNDM7XHRbaW5zbl9zZWhdXHQ9IHtNKHNwZWMzX29wLCAwLCAwLCAwLCBzZWhfb3AsIGJzaGZsX29wKSwgUlQgfCBSRH0sXG4gXHRbaW5zbl9zZWxlcXpdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIHNlbGVxel9vcCksIFJTIHwgUlQgfCBSRH0sXG4gXHRbaW5zbl9zZWxuZXpdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIHNlbG5lel9vcCksIFJTIHwgUlQgfCBSRH0sXG4gXHRbaW5zbl9zaF1cdD0ge00oc2hfb3AsIDAsIDAsIDAsIDAsIDApLCAgUlMgfCBSVCB8IFNJTU19LFxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9tbS91YXNtLmMgYi9hcmNoL21pcHMvbW0vdWFzbS5jXG5pbmRleCAxMjUxNDA5NzlkNjJjLi4xMzlhZmIwZTE0Y2RmIDEwMDY0NFxuLS0tIGEvYXJjaC9taXBzL21tL3Vhc20uY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9taXBzL21tL3Vhc20uY1xuQEAgLTQ5LDE5ICYjNDM7NDksMjEgQEAgZW51bSBvcGNvZGUge1xuIFx0aW5zbl9hZGRpdSwgaW5zbl9hZGR1LCBpbnNuX2FuZCwgaW5zbl9hbmRpLCBpbnNuX2JiaXQwLCBpbnNuX2JiaXQxLFxuIFx0aW5zbl9iZXEsIGluc25fYmVxbCwgaW5zbl9iZ2V6LCBpbnNuX2JnZXpsLCBpbnNuX2JndHosIGluc25fYmxleixcbiBcdGluc25fYmx0eiwgaW5zbl9ibHR6bCwgaW5zbl9ibmUsIGluc25fYnJlYWssIGluc25fY2FjaGUsIGluc25fY2ZjMSxcbi1cdGluc25fY2ZjbXNhLCBpbnNuX2N0YzEsIGluc25fY3RjbXNhLCBpbnNuX2RhZGRpdSwgaW5zbl9kYWRkdSwgaW5zbl9kZGl2dSxcbi1cdGluc25fZGRpdnVfcjYsIGluc25fZGksIGluc25fZGlucywgaW5zbl9kaW5zbSwgaW5zbl9kaW5zdSwgaW5zbl9kaXZ1LFxuLVx0aW5zbl9kaXZ1X3I2LCBpbnNuX2RtZmMwLCBpbnNuX2Rtb2R1LCBpbnNuX2RtdGMwLCBpbnNuX2RtdWx0dSxcbiYjNDM7XHRpbnNuX2NmY21zYSwgaW5zbl9jdGMxLCBpbnNuX2N0Y21zYSwgaW5zbl9kYWRkaXUsIGluc25fZGFkZHUsIGluc25fZGRpdixcbiYjNDM7XHRpbnNuX2RkaXZfcjYsIGluc25fZGRpdnUsIGluc25fZGRpdnVfcjYsIGluc25fZGksIGluc25fZGlucywgaW5zbl9kaW5zbSxcbiYjNDM7XHRpbnNuX2RpbnN1LCBpbnNuX2RpdiwgaW5zbl9kaXZfcjYsIGluc25fZGl2dSwgaW5zbl9kaXZ1X3I2LCBpbnNuX2RtZmMwLFxuJiM0MztcdGluc25fZG1vZCwgaW5zbl9kbW9kdSwgaW5zbl9kbXRjMCwgaW5zbl9kbXVsdHUsXG4gXHRpbnNuX2RtdWx1LCBpbnNuX2Ryb3RyLCBpbnNuX2Ryb3RyMzIsIGluc25fZHNiaCwgaW5zbl9kc2hkLCBpbnNuX2RzbGwsXG4gXHRpbnNuX2RzbGwzMiwgaW5zbl9kc2xsdiwgaW5zbl9kc3JhLCBpbnNuX2RzcmEzMiwgaW5zbl9kc3JhdiwgaW5zbl9kc3JsLFxuIFx0aW5zbl9kc3JsMzIsIGluc25fZHNybHYsIGluc25fZHN1YnUsIGluc25fZXJldCwgaW5zbl9leHQsIGluc25faW5zLFxuIFx0aW5zbl9qLCBpbnNuX2phbCwgaW5zbl9qYWxyLCBpbnNuX2pyLCBpbnNuX2xiLCBpbnNuX2xidSwgaW5zbl9sZCxcbiBcdGluc25fbGRkaXIsIGluc25fbGRwdGUsIGluc25fbGR4LCBpbnNuX2xoLCBpbnNuX2xodSwgaW5zbl9sbCwgaW5zbl9sbGQsXG4gXHRpbnNuX2x1aSwgaW5zbl9sdywgaW5zbl9sd3UsIGluc25fbHd4LCBpbnNuX21mYzAsIGluc25fbWZoYzAsIGluc25fbWZoaSxcbi1cdGluc25fbWZsbywgaW5zbl9tb2R1LCBpbnNuX21vdm4sIGluc25fbW92eiwgaW5zbl9tdGMwLCBpbnNuX210aGMwLFxuLVx0aW5zbl9tdGhpLCBpbnNuX210bG8sIGluc25fbXVsLCBpbnNuX211bHR1LCBpbnNuX211bHUsIGluc25fbXVodSwgaW5zbl9ub3IsXG4tXHRpbnNuX29yLCBpbnNuX29yaSwgaW5zbl9wcmVmLCBpbnNuX3JmZSwgaW5zbl9yb3RyLCBpbnNuX3NiLCBpbnNuX3NjLFxuLVx0aW5zbl9zY2QsIGluc25fc2VsZXF6LCBpbnNuX3NlbG5leiwgaW5zbl9zZCwgaW5zbl9zaCwgaW5zbl9zbGwsXG4mIzQzO1x0aW5zbl9tZmxvLCBpbnNuX21vZCwgaW5zbl9tb2R1LCBpbnNuX21vdm4sIGluc25fbW92eiwgaW5zbl9tdGMwLFxuJiM0MztcdGluc25fbXRoYzAsIGluc25fbXRoaSwgaW5zbl9tdGxvLCBpbnNuX211bCwgaW5zbl9tdWx0dSwgaW5zbl9tdWx1LFxuJiM0MztcdGluc25fbXVodSwgaW5zbl9ub3IsIGluc25fb3IsIGluc25fb3JpLCBpbnNuX3ByZWYsIGluc25fcmZlLCBpbnNuX3JvdHIsXG4mIzQzO1x0aW5zbl9zYiwgaW5zbl9zYywgaW5zbl9zY2QsIGluc25fc2ViLCBpbnNuX3NlaCxcbiYjNDM7XHRpbnNuX3NlbGVxeiwgaW5zbl9zZWxuZXosIGluc25fc2QsIGluc25fc2gsIGluc25fc2xsLFxuIFx0aW5zbl9zbGx2LCBpbnNuX3NsdCwgaW5zbl9zbHRpLCBpbnNuX3NsdGl1LCBpbnNuX3NsdHUsIGluc25fc3JhLFxuIFx0aW5zbl9zcmF2LCBpbnNuX3NybCwgaW5zbl9zcmx2LCBpbnNuX3N1YnUsIGluc25fc3csIGluc25fc3luYyxcbiBcdGluc25fc3lzY2FsbCwgaW5zbl90bGJwLCBpbnNuX3RsYnIsIGluc25fdGxid2ksIGluc25fdGxid3IsIGluc25fd2FpdCxcbkBAIC0yODcsOSAmIzQzOzI4OSwxMiBAQCBJX3UxdTIoX2NmYzEpXG4gSV91MnUxKF9jZmNtc2EpXG4gSV91MXUyKF9jdGMxKVxuIElfdTJ1MShfY3RjbXNhKVxuJiM0MztJX3UxdTIoX2RkaXYpXG4mIzQzO0lfdTN1MXUyKF9kZGl2X3I2KVxuIElfdTF1MihfZGRpdnUpXG4gSV91M3UxdTIoX2RkaXZ1X3I2KVxuIElfdTF1MnUzKF9kbWZjMClcbiYjNDM7SV91M3UxdTIoX2Rtb2QpXG4gSV91M3UxdTIoX2Rtb2R1KVxuIElfdTF1MnUzKF9kbXRjMClcbiBJX3UxdTIoX2RtdWx0dSlcbkBAIC0yOTcsNiAmIzQzOzMwMiw4IEBAIElfdTN1MXUyKF9kbXVsdSlcbiBJX3UydTFzMyhfZGFkZGl1KVxuIElfdTN1MXUyKF9kYWRkdSlcbiBJX3UxKF9kaSk7XG4mIzQzO0lfdTF1MihfZGl2KVxuJiM0MztJX3UzdTF1MihfZGl2X3I2KVxuIElfdTF1MihfZGl2dSlcbiBJX3UzdTF1MihfZGl2dV9yNilcbiBJX3UydTEoX2RzYmgpO1xuQEAgLTMzMiw2ICYjNDM7MzM5LDcgQEAgSV91MnMzdTEoX2x3KVxuIElfdTJzM3UxKF9sd3UpXG4gSV91MXUydTMoX21mYzApXG4gSV91MXUydTMoX21maGMwKVxuJiM0MztJX3UzdTF1MihfbW9kKVxuIElfdTN1MXUyKF9tb2R1KVxuIElfdTN1MXUyKF9tb3ZuKVxuIElfdTN1MXUyKF9tb3Z6KVxuQEAgLTM1Myw2ICYjNDM7MzYxLDggQEAgSV91MnMzdTEoX3NiKVxuIElfdTJzM3UxKF9zYylcbiBJX3UyczN1MShfc2NkKVxuIElfdTJzM3UxKF9zZClcbiYjNDM7SV91MnUxKF9zZWIpXG4mIzQzO0lfdTJ1MShfc2VoKVxuIElfdTN1MXUyKF9zZWxlcXopXG4gSV91M3UxdTIoX3NlbG5leilcbiBJX3UyczN1MShfc2gpXG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmNcbmluZGV4IDZlZTRhYmU2YTFmNzAuLmYxNGRlNmQ3MzEyMjEgMTAwNjQ0XG4tLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jXG5AQCAtMjA4LDcgJiM0MzsyMDgsNyBAQCB2b2lkIGVtaXRfbW92X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjKVxuIH1cbiBcbiAvKiBWYWxpZGF0ZSBBTFUgaW1tZWRpYXRlIHJhbmdlICovXG4tYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSlcbiYjNDM7Ym9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSwgczE2IG9mZilcbiB7XG4gXHRzd2l0Y2ggKEJQRl9PUChvcCkpIHtcbiBcdGNhc2UgQlBGX05FRzpcbkBAIC0yMzcsNiAmIzQzOzIzNyw5IEBAIGJvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0pXG4gXHRcdHJldHVybiBpbW0gPT0gMCB8fCAoaW1tIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiBpc19wb3dlcl9vZl8yKGltbSkpO1xuIFx0Y2FzZSBCUEZfRElWOlxuIFx0Y2FzZSBCUEZfTU9EOlxuJiM0MztcdFx0LyogRG8gbm90IHVzZSB1bnNpZ25lZCBzaGlmdC9tYXNrIHJld3JpdGVzIGZvciBzaWduZWQgZGl2L21vZC4gKi9cbiYjNDM7XHRcdGlmIChvZmYgPT0gMSlcbiYjNDM7XHRcdFx0cmV0dXJuIGZhbHNlO1xuIFx0XHQvKiBpbW0gbXVzdCBiZSBhbiAxNy1iaXQgcG93ZXIgb2YgdHdvICovXG4gXHRcdHJldHVybiAodTMyKWltbSBcdTAwM2M9IDB4MTAwMDAgXHUwMDI2XHUwMDI2IGlzX3Bvd2VyX29mXzIoKHUzMilpbW0pO1xuIFx0fVxuQEAgLTMzOCw4ICYjNDM7MzQxLDQyIEBAIHZvaWQgZW1pdF9hbHVfaShzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCBzMzIgaW1tLCB1OCBvcClcbiBcdGNsb2JiZXJfcmVnKGN0eCwgZHN0KTtcbiB9XG4gXG4mIzQzOy8qIEFMVSBkaXZpc2lvbiBvcGVyYXRpb24gKDMyLWJpdCkgKi9cbiYjNDM7c3RhdGljIHZvaWQgZW1pdF9kaXYoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCBzMTYgb2ZmKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKGNwdV9oYXNfbWlwczMycjYpIHtcbiYjNDM7XHRcdGlmIChvZmYgPT0gMSlcbiYjNDM7XHRcdFx0ZW1pdChjdHgsIGRpdl9yNiwgZHN0LCBkc3QsIHNyYyk7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdGVtaXQoY3R4LCBkaXZ1X3I2LCBkc3QsIGRzdCwgc3JjKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0aWYgKG9mZiA9PSAxKVxuJiM0MztcdFx0XHRlbWl0KGN0eCwgZGl2LCBkc3QsIHNyYyk7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdGVtaXQoY3R4LCBkaXZ1LCBkc3QsIHNyYyk7XG4mIzQzO1x0XHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qIEFMVSBtb2R1bG8gb3BlcmF0aW9uICgzMi1iaXQpICovXG4mIzQzO3N0YXRpYyB2b2lkIGVtaXRfbW9kKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZilcbiYjNDM7e1xuJiM0MztcdGlmIChjcHVfaGFzX21pcHMzMnI2KSB7XG4mIzQzO1x0XHRpZiAob2ZmID09IDEpXG4mIzQzO1x0XHRcdGVtaXQoY3R4LCBtb2QsIGRzdCwgZHN0LCBzcmMpO1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRlbWl0KGN0eCwgbW9kdSwgZHN0LCBkc3QsIHNyYyk7XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdGlmIChvZmYgPT0gMSlcbiYjNDM7XHRcdFx0ZW1pdChjdHgsIGRpdiwgZHN0LCBzcmMpO1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRlbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpO1xuJiM0MztcdFx0ZW1pdChjdHgsIG1maGksIGRzdCk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuIC8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDMyLWJpdCkgKi9cbi12b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcClcbiYjNDM7dm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3AsIHMxNiBvZmYpXG4ge1xuIFx0c3dpdGNoIChCUEZfT1Aob3ApKSB7XG4gXHQvKiBkc3QgPSBkc3QgXHUwMDI2IHNyYyAqL1xuQEAgLTM4NSwyMSAmIzQzOzQyMiwxMSBAQCB2b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcClcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBkc3QgLyBzcmMgKi9cbiBcdGNhc2UgQlBGX0RJVjpcbi1cdFx0aWYgKGNwdV9oYXNfbWlwczMycjYpIHtcbi1cdFx0XHRlbWl0KGN0eCwgZGl2dV9yNiwgZHN0LCBkc3QsIHNyYyk7XG4tXHRcdH0gZWxzZSB7XG4tXHRcdFx0ZW1pdChjdHgsIGRpdnUsIGRzdCwgc3JjKTtcbi1cdFx0XHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcbi1cdFx0fVxuJiM0MztcdFx0ZW1pdF9kaXYoY3R4LCBkc3QsIHNyYywgb2ZmKTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBkc3QgJSBzcmMgKi9cbiBcdGNhc2UgQlBGX01PRDpcbi1cdFx0aWYgKGNwdV9oYXNfbWlwczMycjYpIHtcbi1cdFx0XHRlbWl0KGN0eCwgbW9kdSwgZHN0LCBkc3QsIHNyYyk7XG4tXHRcdH0gZWxzZSB7XG4tXHRcdFx0ZW1pdChjdHgsIGRpdnUsIGRzdCwgc3JjKTtcbi1cdFx0XHRlbWl0KGN0eCwgbWZoaSwgZHN0KTtcbi1cdFx0fVxuJiM0MztcdFx0ZW1pdF9tb2QoY3R4LCBkc3QsIHNyYywgb2ZmKTtcbiBcdFx0YnJlYWs7XG4gXHR9XG4gXHRjbG9iYmVyX3JlZyhjdHgsIGRzdCk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaCBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmhcbmluZGV4IGEzN2ZlMjA4MThlYjkuLjBkZGVkYjczM2RkMTkgMTAwNjQ0XG4tLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oXG5AQCAtMTYzLDcgJiM0MzsxNjMsNyBAQCB2b2lkIGVtaXRfbW92X2koc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSk7XG4gdm9pZCBlbWl0X21vdl9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYyk7XG4gXG4gLyogVmFsaWRhdGUgQUxVL0FMVTY0IGltbWVkaWF0ZSByYW5nZSAqL1xuLWJvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0pO1xuJiM0Mztib29sIHZhbGlkX2FsdV9pKHU4IG9wLCBzMzIgaW1tLCBzMTYgb2ZmKTtcbiBcbiAvKiBSZXdyaXRlIEFMVS9BTFU2NCBpbW1lZGlhdGUgb3BlcmF0aW9uICovXG4gYm9vbCByZXdyaXRlX2FsdV9pKHU4IG9wLCBzMzIgaW1tLCB1OCAqYWx1LCBzMzIgKnZhbCk7XG5AQCAtMTcyLDcgJiM0MzsxNzIsNyBAQCBib29sIHJld3JpdGVfYWx1X2kodTggb3AsIHMzMiBpbW0sIHU4ICphbHUsIHMzMiAqdmFsKTtcbiB2b2lkIGVtaXRfYWx1X2koc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApO1xuIFxuIC8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDMyLWJpdCkgKi9cbi12b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcCk7XG4mIzQzO3ZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLCBzMTYgb2ZmKTtcbiBcbiAvKiBBdG9taWMgcmVhZC1tb2RpZnktd3JpdGUgKDMyLWJpdCkgKi9cbiB2b2lkIGVtaXRfYXRvbWljX3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCBzMTYgb2ZmLCB1OCBjb2RlKTtcbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNcbmluZGV4IDQwYTg3OGI2NzJmNWQuLjY2MTkxODJiNWVmMzMgMTAwNjQ0XG4tLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY1xuQEAgLTUxMiw3ICYjNDM7NTEyLDcgQEAgc3RhdGljIHZvaWQgZW1pdF9tdWxfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LFxuIFx0Y2xvYmJlcl9yZWc2NChjdHgsIGRzdCk7XG4gfVxuIFxuLS8qIEhlbHBlciBmdW5jdGlvbiBmb3IgNjQtYml0IG1vZHVsbyAqL1xuJiM0MzsvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHVuc2lnbmVkIDY0LWJpdCBtb2R1bG8gKi9cbiBzdGF0aWMgdTY0IGppdF9tb2Q2NCh1NjQgYSwgdTY0IGIpXG4ge1xuIFx0dTY0IHJlbTtcbkBAIC01MjEsMTMgJiM0Mzs1MjEsMjIgQEAgc3RhdGljIHU2NCBqaXRfbW9kNjQodTY0IGEsIHU2NCBiKVxuIFx0cmV0dXJuIHJlbTtcbiB9XG4gXG4mIzQzOy8qIEhlbHBlciBmdW5jdGlvbiBmb3Igc2lnbmVkIDY0LWJpdCBtb2R1bG8gKi9cbiYjNDM7c3RhdGljIHM2NCBqaXRfc21vZDY0KHM2NCBhLCBzNjQgYilcbiYjNDM7e1xuJiM0MztcdHM2NCBxdW90ID0gZGl2NjRfczY0KGEsIGIpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gYSAtIHF1b3QgKiBiO1xuJiM0Mzt9XG4mIzQzO1xuIC8qIEFMVSBkaXYvbW9kIHJlZ2lzdGVyICg2NC1iaXQpICovXG4tc3RhdGljIHZvaWQgZW1pdF9kaXZtb2RfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LFxuLVx0XHRcdCAgICBjb25zdCB1OCBkc3RbXSwgY29uc3QgdTggc3JjW10sIHU4IG9wKVxuJiM0MztzdGF0aWMgdm9pZCBlbWl0X2Rpdm1vZF9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IGRzdFtdLFxuJiM0MztcdFx0XHQgICAgY29uc3QgdTggc3JjW10sIHU4IG9wLCBzMTYgb2ZmKVxuIHtcbiBcdGNvbnN0IHU4ICpyMCA9IGJwZjJtaXBzMzJbQlBGX1JFR18wXTsgLyogTWFwcGVkIHRvIHYwLXYxICovXG4gXHRjb25zdCB1OCAqcjEgPSBicGYybWlwczMyW0JQRl9SRUdfMV07IC8qIE1hcHBlZCB0byBhMC1hMSAqL1xuIFx0Y29uc3QgdTggKnIyID0gYnBmMm1pcHMzMltCUEZfUkVHXzJdOyAvKiBNYXBwZWQgdG8gYTItYTMgKi9cbiYjNDM7XHRib29sIGlzX3NpZ25lZCA9IG9mZiA9PSAxO1xuIFx0aW50IGV4Y2x1ZGUsIGs7XG4gXHR1MzIgYWRkciA9IDA7XG4gXG5AQCAtNTQ2LDExICYjNDM7NTU1LDExIEBAIHN0YXRpYyB2b2lkIGVtaXRfZGl2bW9kX3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCxcbiBcdHN3aXRjaCAoQlBGX09QKG9wKSkge1xuIFx0LyogZHN0ID0gZHN0IC8gc3JjICovXG4gXHRjYXNlIEJQRl9ESVY6XG4tXHRcdGFkZHIgPSAodTMyKVx1MDAyNmRpdjY0X3U2NDtcbiYjNDM7XHRcdGFkZHIgPSBpc19zaWduZWQgPyAodTMyKVx1MDAyNmRpdjY0X3M2NCA6ICh1MzIpXHUwMDI2ZGl2NjRfdTY0O1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGRzdCAlIHNyYyAqL1xuIFx0Y2FzZSBCUEZfTU9EOlxuLVx0XHRhZGRyID0gKHUzMilcdTAwMjZqaXRfbW9kNjQ7XG4mIzQzO1x0XHRhZGRyID0gaXNfc2lnbmVkID8gKHUzMilcdTAwMjZqaXRfc21vZDY0IDogKHUzMilcdTAwMjZqaXRfbW9kNjQ7XG4gXHRcdGJyZWFrO1xuIFx0fVxuIFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UOSwgYWRkcik7XG5AQCAtMTUxNiw5ICYjNDM7MTUyNSw5IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTVVMIHwgQlBGX0s6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfRElWIHwgQlBGX0s6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX0s6XG4tXHRcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0pKSB7XG4mIzQzO1x0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBvZmYpKSB7XG4gXHRcdFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNiwgaW1tKTtcbi1cdFx0XHRlbWl0X2FsdV9yKGN0eCwgbG8oZHN0KSwgTUlQU19SX1Q2LCBCUEZfT1AoY29kZSkpO1xuJiM0MztcdFx0XHRlbWl0X2FsdV9yKGN0eCwgbG8oZHN0KSwgTUlQU19SX1Q2LCBCUEZfT1AoY29kZSksIG9mZik7XG4gXHRcdH0gZWxzZSBpZiAocmV3cml0ZV9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgXHUwMDI2YWx1LCBcdTAwMjZ2YWwpKSB7XG4gXHRcdFx0ZW1pdF9hbHVfaShjdHgsIGxvKGRzdCksIHZhbCwgYWx1KTtcbiBcdFx0fVxuQEAgLTE1NDYsNyAmIzQzOzE1NTUsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01VTCB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0RJViB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01PRCB8IEJQRl9YOlxuLVx0XHRlbWl0X2FsdV9yKGN0eCwgbG8oZHN0KSwgbG8oc3JjKSwgQlBGX09QKGNvZGUpKTtcbiYjNDM7XHRcdGVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpLCBCUEZfT1AoY29kZSksIG9mZik7XG4gXHRcdGVtaXRfemV4dF92ZXIoY3R4LCBkc3QpO1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGltbSAoNjQtYml0KSAqL1xuQEAgLTE1OTksNyAmIzQzOzE2MDgsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0XHQgKiBhbmQgdGhlbiBkbyB0aGUgb3BlcmF0aW9uIG9uIHRoaXMgcmVnaXN0ZXIuXG4gXHRcdCAqL1xuIFx0XHRlbWl0X21vdl9zZV9pNjQoY3R4LCB0bXAsIGltbSk7XG4tXHRcdGVtaXRfZGl2bW9kX3I2NChjdHgsIGRzdCwgdG1wLCBCUEZfT1AoY29kZSkpO1xuJiM0MztcdFx0ZW1pdF9kaXZtb2RfcjY0KGN0eCwgZHN0LCB0bXAsIEJQRl9PUChjb2RlKSwgb2ZmKTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBkc3QgXHUwMDI2IHNyYyAoNjQtYml0KSAqL1xuIFx0LyogZHN0ID0gZHN0IHwgc3JjICg2NC1iaXQpICovXG5AQCAtMTYyOSw3ICYjNDM7MTYzOCw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHQvKiBkc3QgPSBkc3QgJSBzcmMgKDY0LWJpdCkgKi9cbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX0RJViB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTU9EIHwgQlBGX1g6XG4tXHRcdGVtaXRfZGl2bW9kX3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSkpO1xuJiM0MztcdFx0ZW1pdF9kaXZtb2RfcjY0KGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSwgb2ZmKTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBodG9sZShkc3QpICovXG4gXHQvKiBkc3QgPSBodG9iZShkc3QpICovXG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jXG5pbmRleCBmYTdlOWFhMzdmNDk4Li5kYjAyN2MyZDkyMjEyIDEwMDY0NFxuLS0tIGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNcbkBAIC0xOTcsOCAmIzQzOzE5Nyw0MyBAQCBzdGF0aWMgdm9pZCBlbWl0X2FsdV9pNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApXG4gXHRjbG9iYmVyX3JlZyhjdHgsIGRzdCk7XG4gfVxuIFxuJiM0MzsvKiBBTFUgZGl2aXNpb24gb3BlcmF0aW9uICg2NC1iaXQpICovXG4mIzQzO3N0YXRpYyB2b2lkIGVtaXRfZGl2NjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCBzMTYgb2ZmKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKGNwdV9oYXNfbWlwczY0cjYpIHtcbiYjNDM7XHRcdGlmIChvZmYgPT0gMSlcbiYjNDM7XHRcdFx0ZW1pdChjdHgsIGRkaXZfcjYsIGRzdCwgZHN0LCBzcmMpO1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRlbWl0KGN0eCwgZGRpdnVfcjYsIGRzdCwgZHN0LCBzcmMpO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRpZiAob2ZmID09IDEpXG4mIzQzO1x0XHRcdGVtaXQoY3R4LCBkZGl2LCBkc3QsIHNyYyk7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdGVtaXQoY3R4LCBkZGl2dSwgZHN0LCBzcmMpO1xuJiM0MztcdFx0ZW1pdChjdHgsIG1mbG8sIGRzdCk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKiBBTFUgbW9kdWxvIG9wZXJhdGlvbiAoNjQtYml0KSAqL1xuJiM0MztzdGF0aWMgdm9pZCBlbWl0X21vZDY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZilcbiYjNDM7e1xuJiM0MztcdGlmIChjcHVfaGFzX21pcHM2NHI2KSB7XG4mIzQzO1x0XHRpZiAob2ZmID09IDEpXG4mIzQzO1x0XHRcdGVtaXQoY3R4LCBkbW9kLCBkc3QsIGRzdCwgc3JjKTtcbiYjNDM7XHRcdGVsc2VcbiYjNDM7XHRcdFx0ZW1pdChjdHgsIGRtb2R1LCBkc3QsIGRzdCwgc3JjKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0aWYgKG9mZiA9PSAxKVxuJiM0MztcdFx0XHRlbWl0KGN0eCwgZGRpdiwgZHN0LCBzcmMpO1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRlbWl0KGN0eCwgZGRpdnUsIGRzdCwgc3JjKTtcbiYjNDM7XHRcdGVtaXQoY3R4LCBtZmhpLCBkc3QpO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiAvKiBBTFUgcmVnaXN0ZXIgb3BlcmF0aW9uICg2NC1iaXQpICovXG4tc3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApXG4mIzQzO3N0YXRpYyB2b2lkIGVtaXRfYWx1X3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLFxuJiM0MztcdFx0XHQgczE2IG9mZilcbiB7XG4gXHRzd2l0Y2ggKEJQRl9PUChvcCkpIHtcbiBcdC8qIGRzdCA9IGRzdCBcdTAwM2NcdTAwM2Mgc3JjICovXG5AQCAtMjM1LDI1ICYjNDM7MjcwLDE1IEBAIHN0YXRpYyB2b2lkIGVtaXRfYWx1X3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wKVxuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGRzdCAvIHNyYyAqL1xuIFx0Y2FzZSBCUEZfRElWOlxuLVx0XHRpZiAoY3B1X2hhc19taXBzNjRyNikge1xuLVx0XHRcdGVtaXQoY3R4LCBkZGl2dV9yNiwgZHN0LCBkc3QsIHNyYyk7XG4tXHRcdH0gZWxzZSB7XG4tXHRcdFx0ZW1pdChjdHgsIGRkaXZ1LCBkc3QsIHNyYyk7XG4tXHRcdFx0ZW1pdChjdHgsIG1mbG8sIGRzdCk7XG4tXHRcdH1cbiYjNDM7XHRcdGVtaXRfZGl2NjQoY3R4LCBkc3QsIHNyYywgb2ZmKTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBkc3QgJSBzcmMgKi9cbiBcdGNhc2UgQlBGX01PRDpcbi1cdFx0aWYgKGNwdV9oYXNfbWlwczY0cjYpIHtcbi1cdFx0XHRlbWl0KGN0eCwgZG1vZHUsIGRzdCwgZHN0LCBzcmMpO1xuLVx0XHR9IGVsc2Uge1xuLVx0XHRcdGVtaXQoY3R4LCBkZGl2dSwgZHN0LCBzcmMpO1xuLVx0XHRcdGVtaXQoY3R4LCBtZmhpLCBkc3QpO1xuLVx0XHR9XG4mIzQzO1x0XHRlbWl0X21vZDY0KGN0eCwgZHN0LCBzcmMsIG9mZik7XG4gXHRcdGJyZWFrO1xuIFx0ZGVmYXVsdDpcbiBcdFx0LyogV2lkdGgtZ2VuZXJpYyBvcGVyYXRpb25zICovXG4tXHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIHNyYywgb3ApO1xuJiM0MztcdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgc3JjLCBvcCwgb2ZmKTtcbiBcdH1cbiBcdGNsb2JiZXJfcmVnKGN0eCwgZHN0KTtcbiB9XG5AQCAtNjc0LDkgJiM0Mzs2OTksOSBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0FORCB8IEJQRl9LOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX1hPUiB8IEJQRl9LOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0xTSCB8IEJQRl9LOlxuLVx0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkge1xuJiM0MztcdFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgb2ZmKSkge1xuIFx0XHRcdGVtaXRfbW92X2koY3R4LCBNSVBTX1JfVDQsIGltbSk7XG4tXHRcdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSkpO1xuJiM0MztcdFx0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSwgb2ZmKTtcbiBcdFx0fSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBcdTAwMjZhbHUsIFx1MDAyNnZhbCkpIHtcbiBcdFx0XHRlbWl0X2FsdV9pKGN0eCwgZHN0LCB2YWwsIGFsdSk7XG4gXHRcdH1cbkBAIC02OTYsMTAgJiM0Mzs3MjEsMTAgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9NVUwgfCBCUEZfSzpcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9ESVYgfCBCUEZfSzpcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfSzpcbi1cdFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSkpIHtcbiYjNDM7XHRcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIG9mZikpIHtcbiBcdFx0XHRlbWl0X3NleHQoY3R4LCBkc3QsIGRzdCk7XG4gXHRcdFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTtcbi1cdFx0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSk7XG4mIzQzO1x0XHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBvZmYpO1xuIFx0XHR9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIFx1MDAyNmFsdSwgXHUwMDI2dmFsKSkge1xuIFx0XHRcdGVtaXRfc2V4dChjdHgsIGRzdCwgZHN0KTtcbiBcdFx0XHRlbWl0X2FsdV9pKGN0eCwgZHN0LCB2YWwsIGFsdSk7XG5AQCAtNzE0LDcgJiM0Mzs3MzksNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX09SIHwgQlBGX1g6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfWE9SIHwgQlBGX1g6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTFNIIHwgQlBGX1g6XG4tXHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpKTtcbiYjNDM7XHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpLCBvZmYpO1xuIFx0XHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBkc3QgXHUwMDNlXHUwMDNlIHNyYyAqL1xuQEAgLTczMyw3ICYjNDM7NzU4LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfWDpcbiBcdFx0ZW1pdF9zZXh0KGN0eCwgZHN0LCBkc3QpO1xuIFx0XHRlbWl0X3NleHQoY3R4LCBNSVBTX1JfVDQsIHNyYyk7XG4tXHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTtcbiYjNDM7XHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBvZmYpO1xuIFx0XHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBpbW0gKDY0LWJpdCkgKi9cbkBAIC03NzAsOSAmIzQzOzc5NSw5IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NVUwgfCBCUEZfSzpcbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX0RJViB8IEJQRl9LOlxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTU9EIHwgQlBGX0s6XG4tXHRcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0pKSB7XG4mIzQzO1x0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBvZmYpKSB7XG4gXHRcdFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTtcbi1cdFx0XHRlbWl0X2FsdV9yNjQoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTtcbiYjNDM7XHRcdFx0ZW1pdF9hbHVfcjY0KGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSwgb2ZmKTtcbiBcdFx0fSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBcdTAwMjZhbHUsIFx1MDAyNnZhbCkpIHtcbiBcdFx0XHRlbWl0X2FsdV9pNjQoY3R4LCBkc3QsIHZhbCwgYWx1KTtcbiBcdFx0fVxuQEAgLTc5OSw3ICYjNDM7ODI0LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01VTCB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfRElWIHwgQlBGX1g6XG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NT0QgfCBCUEZfWDpcbi1cdFx0ZW1pdF9hbHVfcjY0KGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSk7XG4mIzQzO1x0XHRlbWl0X2FsdV9yNjQoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpLCBvZmYpO1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGh0b2xlKGRzdCkgKi9cbiBcdC8qIGRzdCA9IGh0b2JlKGRzdCkgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAyMjoyMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBNSVBTIG1pY3JvLWFzc2VtYmxlciByb3V0aW5lcyBhbmQgTUlQUyBCUEYgSklUIGNvbXBpbGVyIGltcGxlbWVudGF0aW9ucyAodW5kZXIgYXJjaC9taXBzLykuIEJlY2F1c2UgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgYW1kNjQsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIGV4Y2x1c2l2ZSB0byBNSVBTIGFuZCBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcgb24gYW1kNjQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgY2Y2ZDc0M2ZiZDY1YjJjY2RhZWIyMzIzYTE5ZjYwN2UxOWQ4ODZkYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgU2VwIDExIDIyOjIwOjQzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3Vhc20uaCBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS91YXNtLmgKaW5kZXggYjQzYmZkNDQ1MjUyMS4uYWRlYTM1ZGYwZjhkYyAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3Vhc20uaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oCkBAIC04NSwxNSAmIzQzOzg1LDIwIEBAIElwX3UxdTIoX2N0YzEpOwogSXBfdTJ1MShfY3RjbXNhKTsKIElwX3UydTFzMyhfZGFkZGl1KTsKIElwX3UzdTF1MihfZGFkZHUpOwomIzQzO0lwX3UxdTIoX2RkaXYpOwomIzQzO0lwX3UzdTF1MihfZGRpdl9yNik7CiBJcF91MXUyKF9kZGl2dSk7CiBJcF91M3UxdTIoX2RkaXZ1X3I2KTsKIElwX3UxKF9kaSk7CiBJcF91MnUxbXNidTMoX2RpbnMpOwogSXBfdTJ1MW1zYnUzKF9kaW5zbSk7CiBJcF91MnUxbXNidTMoX2RpbnN1KTsKJiM0MztJcF91MXUyKF9kaXYpOwomIzQzO0lwX3UzdTF1MihfZGl2X3I2KTsKIElwX3UxdTIoX2RpdnUpOwogSXBfdTN1MXUyKF9kaXZ1X3I2KTsKIElwX3UxdTJ1MyhfZG1mYzApOwomIzQzO0lwX3UzdTF1MihfZG1vZCk7CiBJcF91M3UxdTIoX2Rtb2R1KTsKIElwX3UxdTJ1MyhfZG10YzApOwogSXBfdTF1MihfZG11bHR1KTsKQEAgLTEzNSw2ICYjNDM7MTQwLDcgQEAgSXBfdTF1MnUzKF9tZmMwKTsKIElwX3UxdTJ1MyhfbWZoYzApOwogSXBfdTEoX21maGkpOwogSXBfdTEoX21mbG8pOwomIzQzO0lwX3UzdTF1MihfbW9kKTsKIElwX3UzdTF1MihfbW9kdSk7CiBJcF91M3UxdTIoX21vdm4pOwogSXBfdTN1MXUyKF9tb3Z6KTsKQEAgLTE1Niw2ICYjNDM7MTYyLDggQEAgSXBfdTJzM3UxKF9zYik7CiBJcF91MnMzdTEoX3NjKTsKIElwX3UyczN1MShfc2NkKTsKIElwX3UyczN1MShfc2QpOwomIzQzO0lwX3UydTEoX3NlYik7CiYjNDM7SXBfdTJ1MShfc2VoKTsKIElwX3UzdTF1Mihfc2VsZXF6KTsKIElwX3UzdTF1Mihfc2VsbmV6KTsKIElwX3UyczN1MShfc2gpOwpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL21tL3Vhc20tbWlwcy5jIGIvYXJjaC9taXBzL21tL3Vhc20tbWlwcy5jCmluZGV4IGUxNWM2NzAwY2QwODguLjJkMTY2OGI1OGRkZGUgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9tbS91YXNtLW1pcHMuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL21pcHMvbW0vdWFzbS1taXBzLmMKQEAgLTc1LDYgJiM0Mzs3NSw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW5zbiBpbnNuX3RhYmxlW2luc25faW52YWxpZF0gPSB7CiAJW2luc25fY3RjbXNhXQk9IHtNKG1zYV9vcCwgMCwgbXNhX2N0Y19vcCwgMCwgMCwgbXNhX2VsbV9vcCksIFJEIHwgUkV9LAogCVtpbnNuX2RhZGRpdV0JPSB7TShkYWRkaXVfb3AsIDAsIDAsIDAsIDAsIDApLCBSUyB8IFJUIHwgU0lNTX0sCiAJW2luc25fZGFkZHVdCT0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgZGFkZHVfb3ApLCBSUyB8IFJUIHwgUkR9LAomIzQzOwlbaW5zbl9kZGl2XQk9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRkaXZfb3ApLCBSUyB8IFJUfSwKJiM0MzsJW2luc25fZGRpdl9yNl0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCBkZGl2X2RkaXY2X29wLCBkZGl2X29wKSwKJiM0MzsJCQkJUlMgfCBSVCB8IFJEfSwKIAlbaW5zbl9kZGl2dV0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkZGl2dV9vcCksIFJTIHwgUlR9LAogCVtpbnNuX2RkaXZ1X3I2XQk9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRkaXZ1X2RkaXZ1Nl9vcCwgZGRpdnVfb3ApLAogCQkJCVJTIHwgUlQgfCBSRH0sCkBAIC04MiwxMCAmIzQzOzg1LDE1IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW5zbiBpbnNuX3RhYmxlW2luc25faW52YWxpZF0gPSB7CiAJW2luc25fZGluc10JPSB7TShzcGVjM19vcCwgMCwgMCwgMCwgMCwgZGluc19vcCksIFJTIHwgUlQgfCBSRCB8IFJFfSwKIAlbaW5zbl9kaW5zbV0JPSB7TShzcGVjM19vcCwgMCwgMCwgMCwgMCwgZGluc21fb3ApLCBSUyB8IFJUIHwgUkQgfCBSRX0sCiAJW2luc25fZGluc3VdCT0ge00oc3BlYzNfb3AsIDAsIDAsIDAsIDAsIGRpbnN1X29wKSwgUlMgfCBSVCB8IFJEIHwgUkV9LAomIzQzOwlbaW5zbl9kaXZdCT0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgZGl2X29wKSwgUlMgfCBSVH0sCiYjNDM7CVtpbnNuX2Rpdl9yNl0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCBkaXZfZGl2Nl9vcCwgZGl2X29wKSwKJiM0MzsJCQkJUlMgfCBSVCB8IFJEfSwKIAlbaW5zbl9kaXZ1XQk9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRpdnVfb3ApLCBSUyB8IFJUfSwKIAlbaW5zbl9kaXZ1X3I2XQk9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRpdnVfZGl2dTZfb3AsIGRpdnVfb3ApLAogCQkJCVJTIHwgUlQgfCBSRH0sCiAJW2luc25fZG1mYzBdCT0ge00oY29wMF9vcCwgZG1mY19vcCwgMCwgMCwgMCwgMCksIFJUIHwgUkQgfCBTRVR9LAomIzQzOwlbaW5zbl9kbW9kXQk9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRkaXZfZG1vZF9vcCwgZGRpdl9vcCksCiYjNDM7CQkJCVJTIHwgUlQgfCBSRH0sCiAJW2luc25fZG1vZHVdCT0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGRpdnVfZG1vZHVfb3AsIGRkaXZ1X29wKSwKIAkJCQlSUyB8IFJUIHwgUkR9LAogCVtpbnNuX2RtdGMwXQk9IHtNKGNvcDBfb3AsIGRtdGNfb3AsIDAsIDAsIDAsIDApLCBSVCB8IFJEIHwgU0VUfSwKQEAgLTE0MCw2ICYjNDM7MTQ4LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnNuIGluc25fdGFibGVbaW5zbl9pbnZhbGlkXSA9IHsKIAlbaW5zbl9tZmhjMF0JPSB7TShjb3AwX29wLCBtZmhjMF9vcCwgMCwgMCwgMCwgMCksICBSVCB8IFJEIHwgU0VUfSwKIAlbaW5zbl9tZmhpXQk9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIG1maGlfb3ApLCBSRH0sCiAJW2luc25fbWZsb10JPSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBtZmxvX29wKSwgUkR9LAomIzQzOwlbaW5zbl9tb2RdCT0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGl2X21vZF9vcCwgZGl2X29wKSwKJiM0MzsJCQkJUlMgfCBSVCB8IFJEfSwKIAlbaW5zbl9tb2R1XQk9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRpdnVfbW9kdV9vcCwgZGl2dV9vcCksCiAJCQkJUlMgfCBSVCB8IFJEfSwKIAlbaW5zbl9tb3ZuXQk9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIG1vdm5fb3ApLCBSUyB8IFJUIHwgUkR9LApAQCAtMTc3LDYgJiM0MzsxODcsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGluc24gaW5zbl90YWJsZVtpbnNuX2ludmFsaWRdID0gewogCVtpbnNuX3NjZF0JPSB7TTYoc3BlYzNfb3AsIDAsIDAsIDAsIHNjZDZfb3ApLCAgUlMgfCBSVCB8IFNJTU05fSwKICNlbmRpZgogCVtpbnNuX3NkXQk9IHtNKHNkX29wLCAwLCAwLCAwLCAwLCAwKSwgIFJTIHwgUlQgfCBTSU1NfSwKJiM0MzsJW2luc25fc2ViXQk9IHtNKHNwZWMzX29wLCAwLCAwLCAwLCBzZWJfb3AsIGJzaGZsX29wKSwgUlQgfCBSRH0sCiYjNDM7CVtpbnNuX3NlaF0JPSB7TShzcGVjM19vcCwgMCwgMCwgMCwgc2VoX29wLCBic2hmbF9vcCksIFJUIHwgUkR9LAogCVtpbnNuX3NlbGVxel0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBzZWxlcXpfb3ApLCBSUyB8IFJUIHwgUkR9LAogCVtpbnNuX3NlbG5lel0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBzZWxuZXpfb3ApLCBSUyB8IFJUIHwgUkR9LAogCVtpbnNuX3NoXQk9IHtNKHNoX29wLCAwLCAwLCAwLCAwLCAwKSwgIFJTIHwgUlQgfCBTSU1NfSwKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9tbS91YXNtLmMgYi9hcmNoL21pcHMvbW0vdWFzbS5jCmluZGV4IDEyNTE0MDk3OWQ2MmMuLjEzOWFmYjBlMTRjZGYgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9tbS91YXNtLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9taXBzL21tL3Vhc20uYwpAQCAtNDksMTkgJiM0Mzs0OSwyMSBAQCBlbnVtIG9wY29kZSB7CiAJaW5zbl9hZGRpdSwgaW5zbl9hZGR1LCBpbnNuX2FuZCwgaW5zbl9hbmRpLCBpbnNuX2JiaXQwLCBpbnNuX2JiaXQxLAogCWluc25fYmVxLCBpbnNuX2JlcWwsIGluc25fYmdleiwgaW5zbl9iZ2V6bCwgaW5zbl9iZ3R6LCBpbnNuX2JsZXosCiAJaW5zbl9ibHR6LCBpbnNuX2JsdHpsLCBpbnNuX2JuZSwgaW5zbl9icmVhaywgaW5zbl9jYWNoZSwgaW5zbl9jZmMxLAotCWluc25fY2ZjbXNhLCBpbnNuX2N0YzEsIGluc25fY3RjbXNhLCBpbnNuX2RhZGRpdSwgaW5zbl9kYWRkdSwgaW5zbl9kZGl2dSwKLQlpbnNuX2RkaXZ1X3I2LCBpbnNuX2RpLCBpbnNuX2RpbnMsIGluc25fZGluc20sIGluc25fZGluc3UsIGluc25fZGl2dSwKLQlpbnNuX2RpdnVfcjYsIGluc25fZG1mYzAsIGluc25fZG1vZHUsIGluc25fZG10YzAsIGluc25fZG11bHR1LAomIzQzOwlpbnNuX2NmY21zYSwgaW5zbl9jdGMxLCBpbnNuX2N0Y21zYSwgaW5zbl9kYWRkaXUsIGluc25fZGFkZHUsIGluc25fZGRpdiwKJiM0MzsJaW5zbl9kZGl2X3I2LCBpbnNuX2RkaXZ1LCBpbnNuX2RkaXZ1X3I2LCBpbnNuX2RpLCBpbnNuX2RpbnMsIGluc25fZGluc20sCiYjNDM7CWluc25fZGluc3UsIGluc25fZGl2LCBpbnNuX2Rpdl9yNiwgaW5zbl9kaXZ1LCBpbnNuX2RpdnVfcjYsIGluc25fZG1mYzAsCiYjNDM7CWluc25fZG1vZCwgaW5zbl9kbW9kdSwgaW5zbl9kbXRjMCwgaW5zbl9kbXVsdHUsCiAJaW5zbl9kbXVsdSwgaW5zbl9kcm90ciwgaW5zbl9kcm90cjMyLCBpbnNuX2RzYmgsIGluc25fZHNoZCwgaW5zbl9kc2xsLAogCWluc25fZHNsbDMyLCBpbnNuX2RzbGx2LCBpbnNuX2RzcmEsIGluc25fZHNyYTMyLCBpbnNuX2RzcmF2LCBpbnNuX2RzcmwsCiAJaW5zbl9kc3JsMzIsIGluc25fZHNybHYsIGluc25fZHN1YnUsIGluc25fZXJldCwgaW5zbl9leHQsIGluc25faW5zLAogCWluc25faiwgaW5zbl9qYWwsIGluc25famFsciwgaW5zbl9qciwgaW5zbl9sYiwgaW5zbl9sYnUsIGluc25fbGQsCiAJaW5zbl9sZGRpciwgaW5zbl9sZHB0ZSwgaW5zbl9sZHgsIGluc25fbGgsIGluc25fbGh1LCBpbnNuX2xsLCBpbnNuX2xsZCwKIAlpbnNuX2x1aSwgaW5zbl9sdywgaW5zbl9sd3UsIGluc25fbHd4LCBpbnNuX21mYzAsIGluc25fbWZoYzAsIGluc25fbWZoaSwKLQlpbnNuX21mbG8sIGluc25fbW9kdSwgaW5zbl9tb3ZuLCBpbnNuX21vdnosIGluc25fbXRjMCwgaW5zbl9tdGhjMCwKLQlpbnNuX210aGksIGluc25fbXRsbywgaW5zbl9tdWwsIGluc25fbXVsdHUsIGluc25fbXVsdSwgaW5zbl9tdWh1LCBpbnNuX25vciwKLQlpbnNuX29yLCBpbnNuX29yaSwgaW5zbl9wcmVmLCBpbnNuX3JmZSwgaW5zbl9yb3RyLCBpbnNuX3NiLCBpbnNuX3NjLAotCWluc25fc2NkLCBpbnNuX3NlbGVxeiwgaW5zbl9zZWxuZXosIGluc25fc2QsIGluc25fc2gsIGluc25fc2xsLAomIzQzOwlpbnNuX21mbG8sIGluc25fbW9kLCBpbnNuX21vZHUsIGluc25fbW92biwgaW5zbl9tb3Z6LCBpbnNuX210YzAsCiYjNDM7CWluc25fbXRoYzAsIGluc25fbXRoaSwgaW5zbl9tdGxvLCBpbnNuX211bCwgaW5zbl9tdWx0dSwgaW5zbl9tdWx1LAomIzQzOwlpbnNuX211aHUsIGluc25fbm9yLCBpbnNuX29yLCBpbnNuX29yaSwgaW5zbl9wcmVmLCBpbnNuX3JmZSwgaW5zbl9yb3RyLAomIzQzOwlpbnNuX3NiLCBpbnNuX3NjLCBpbnNuX3NjZCwgaW5zbl9zZWIsIGluc25fc2VoLAomIzQzOwlpbnNuX3NlbGVxeiwgaW5zbl9zZWxuZXosIGluc25fc2QsIGluc25fc2gsIGluc25fc2xsLAogCWluc25fc2xsdiwgaW5zbl9zbHQsIGluc25fc2x0aSwgaW5zbl9zbHRpdSwgaW5zbl9zbHR1LCBpbnNuX3NyYSwKIAlpbnNuX3NyYXYsIGluc25fc3JsLCBpbnNuX3NybHYsIGluc25fc3VidSwgaW5zbl9zdywgaW5zbl9zeW5jLAogCWluc25fc3lzY2FsbCwgaW5zbl90bGJwLCBpbnNuX3RsYnIsIGluc25fdGxid2ksIGluc25fdGxid3IsIGluc25fd2FpdCwKQEAgLTI4Nyw5ICYjNDM7Mjg5LDEyIEBAIElfdTF1MihfY2ZjMSkKIElfdTJ1MShfY2ZjbXNhKQogSV91MXUyKF9jdGMxKQogSV91MnUxKF9jdGNtc2EpCiYjNDM7SV91MXUyKF9kZGl2KQomIzQzO0lfdTN1MXUyKF9kZGl2X3I2KQogSV91MXUyKF9kZGl2dSkKIElfdTN1MXUyKF9kZGl2dV9yNikKIElfdTF1MnUzKF9kbWZjMCkKJiM0MztJX3UzdTF1MihfZG1vZCkKIElfdTN1MXUyKF9kbW9kdSkKIElfdTF1MnUzKF9kbXRjMCkKIElfdTF1MihfZG11bHR1KQpAQCAtMjk3LDYgJiM0MzszMDIsOCBAQCBJX3UzdTF1MihfZG11bHUpCiBJX3UydTFzMyhfZGFkZGl1KQogSV91M3UxdTIoX2RhZGR1KQogSV91MShfZGkpOwomIzQzO0lfdTF1MihfZGl2KQomIzQzO0lfdTN1MXUyKF9kaXZfcjYpCiBJX3UxdTIoX2RpdnUpCiBJX3UzdTF1MihfZGl2dV9yNikKIElfdTJ1MShfZHNiaCk7CkBAIC0zMzIsNiAmIzQzOzMzOSw3IEBAIElfdTJzM3UxKF9sdykKIElfdTJzM3UxKF9sd3UpCiBJX3UxdTJ1MyhfbWZjMCkKIElfdTF1MnUzKF9tZmhjMCkKJiM0MztJX3UzdTF1MihfbW9kKQogSV91M3UxdTIoX21vZHUpCiBJX3UzdTF1MihfbW92bikKIElfdTN1MXUyKF9tb3Z6KQpAQCAtMzUzLDYgJiM0MzszNjEsOCBAQCBJX3UyczN1MShfc2IpCiBJX3UyczN1MShfc2MpCiBJX3UyczN1MShfc2NkKQogSV91MnMzdTEoX3NkKQomIzQzO0lfdTJ1MShfc2ViKQomIzQzO0lfdTJ1MShfc2VoKQogSV91M3UxdTIoX3NlbGVxeikKIElfdTN1MXUyKF9zZWxuZXopCiBJX3UyczN1MShfc2gpCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYwppbmRleCA2ZWU0YWJlNmExZjcwLi5mMTRkZTZkNzMxMjIxIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmMKQEAgLTIwOCw3ICYjNDM7MjA4LDcgQEAgdm9pZCBlbWl0X21vdl9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYykKIH0KIAogLyogVmFsaWRhdGUgQUxVIGltbWVkaWF0ZSByYW5nZSAqLwotYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSkKJiM0Mztib29sIHZhbGlkX2FsdV9pKHU4IG9wLCBzMzIgaW1tLCBzMTYgb2ZmKQogewogCXN3aXRjaCAoQlBGX09QKG9wKSkgewogCWNhc2UgQlBGX05FRzoKQEAgLTIzNyw2ICYjNDM7MjM3LDkgQEAgYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSkKIAkJcmV0dXJuIGltbSA9PSAwIHx8IChpbW0gJmd0OyAwICZhbXA7JmFtcDsgaXNfcG93ZXJfb2ZfMihpbW0pKTsKIAljYXNlIEJQRl9ESVY6CiAJY2FzZSBCUEZfTU9EOgomIzQzOwkJLyogRG8gbm90IHVzZSB1bnNpZ25lZCBzaGlmdC9tYXNrIHJld3JpdGVzIGZvciBzaWduZWQgZGl2L21vZC4gKi8KJiM0MzsJCWlmIChvZmYgPT0gMSkKJiM0MzsJCQlyZXR1cm4gZmFsc2U7CiAJCS8qIGltbSBtdXN0IGJlIGFuIDE3LWJpdCBwb3dlciBvZiB0d28gKi8KIAkJcmV0dXJuICh1MzIpaW1tICZsdDs9IDB4MTAwMDAgJmFtcDsmYW1wOyBpc19wb3dlcl9vZl8yKCh1MzIpaW1tKTsKIAl9CkBAIC0zMzgsOCAmIzQzOzM0MSw0MiBAQCB2b2lkIGVtaXRfYWx1X2koc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApCiAJY2xvYmJlcl9yZWcoY3R4LCBkc3QpOwogfQogCiYjNDM7LyogQUxVIGRpdmlzaW9uIG9wZXJhdGlvbiAoMzItYml0KSAqLwomIzQzO3N0YXRpYyB2b2lkIGVtaXRfZGl2KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZikKJiM0Mzt7CiYjNDM7CWlmIChjcHVfaGFzX21pcHMzMnI2KSB7CiYjNDM7CQlpZiAob2ZmID09IDEpCiYjNDM7CQkJZW1pdChjdHgsIGRpdl9yNiwgZHN0LCBkc3QsIHNyYyk7CiYjNDM7CQllbHNlCiYjNDM7CQkJZW1pdChjdHgsIGRpdnVfcjYsIGRzdCwgZHN0LCBzcmMpOwomIzQzOwl9IGVsc2UgewomIzQzOwkJaWYgKG9mZiA9PSAxKQomIzQzOwkJCWVtaXQoY3R4LCBkaXYsIGRzdCwgc3JjKTsKJiM0MzsJCWVsc2UKJiM0MzsJCQllbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpOwomIzQzOwkJZW1pdChjdHgsIG1mbG8sIGRzdCk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7LyogQUxVIG1vZHVsbyBvcGVyYXRpb24gKDMyLWJpdCkgKi8KJiM0MztzdGF0aWMgdm9pZCBlbWl0X21vZChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHMxNiBvZmYpCiYjNDM7ewomIzQzOwlpZiAoY3B1X2hhc19taXBzMzJyNikgewomIzQzOwkJaWYgKG9mZiA9PSAxKQomIzQzOwkJCWVtaXQoY3R4LCBtb2QsIGRzdCwgZHN0LCBzcmMpOwomIzQzOwkJZWxzZQomIzQzOwkJCWVtaXQoY3R4LCBtb2R1LCBkc3QsIGRzdCwgc3JjKTsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWlmIChvZmYgPT0gMSkKJiM0MzsJCQllbWl0KGN0eCwgZGl2LCBkc3QsIHNyYyk7CiYjNDM7CQllbHNlCiYjNDM7CQkJZW1pdChjdHgsIGRpdnUsIGRzdCwgc3JjKTsKJiM0MzsJCWVtaXQoY3R4LCBtZmhpLCBkc3QpOwomIzQzOwl9CiYjNDM7fQomIzQzOwogLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoMzItYml0KSAqLwotdm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApCiYjNDM7dm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3AsIHMxNiBvZmYpCiB7CiAJc3dpdGNoIChCUEZfT1Aob3ApKSB7CiAJLyogZHN0ID0gZHN0ICZhbXA7IHNyYyAqLwpAQCAtMzg1LDIxICYjNDM7NDIyLDExIEBAIHZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wKQogCQlicmVhazsKIAkvKiBkc3QgPSBkc3QgLyBzcmMgKi8KIAljYXNlIEJQRl9ESVY6Ci0JCWlmIChjcHVfaGFzX21pcHMzMnI2KSB7Ci0JCQllbWl0KGN0eCwgZGl2dV9yNiwgZHN0LCBkc3QsIHNyYyk7Ci0JCX0gZWxzZSB7Ci0JCQllbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpOwotCQkJZW1pdChjdHgsIG1mbG8sIGRzdCk7Ci0JCX0KJiM0MzsJCWVtaXRfZGl2KGN0eCwgZHN0LCBzcmMsIG9mZik7CiAJCWJyZWFrOwogCS8qIGRzdCA9IGRzdCAlIHNyYyAqLwogCWNhc2UgQlBGX01PRDoKLQkJaWYgKGNwdV9oYXNfbWlwczMycjYpIHsKLQkJCWVtaXQoY3R4LCBtb2R1LCBkc3QsIGRzdCwgc3JjKTsKLQkJfSBlbHNlIHsKLQkJCWVtaXQoY3R4LCBkaXZ1LCBkc3QsIHNyYyk7Ci0JCQllbWl0KGN0eCwgbWZoaSwgZHN0KTsKLQkJfQomIzQzOwkJZW1pdF9tb2QoY3R4LCBkc3QsIHNyYywgb2ZmKTsKIAkJYnJlYWs7CiAJfQogCWNsb2JiZXJfcmVnKGN0eCwgZHN0KTsKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmggYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oCmluZGV4IGEzN2ZlMjA4MThlYjkuLjBkZGVkYjczM2RkMTkgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaApAQCAtMTYzLDcgJiM0MzsxNjMsNyBAQCB2b2lkIGVtaXRfbW92X2koc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSk7CiB2b2lkIGVtaXRfbW92X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjKTsKIAogLyogVmFsaWRhdGUgQUxVL0FMVTY0IGltbWVkaWF0ZSByYW5nZSAqLwotYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSk7CiYjNDM7Ym9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSwgczE2IG9mZik7CiAKIC8qIFJld3JpdGUgQUxVL0FMVTY0IGltbWVkaWF0ZSBvcGVyYXRpb24gKi8KIGJvb2wgcmV3cml0ZV9hbHVfaSh1OCBvcCwgczMyIGltbSwgdTggKmFsdSwgczMyICp2YWwpOwpAQCAtMTcyLDcgJiM0MzsxNzIsNyBAQCBib29sIHJld3JpdGVfYWx1X2kodTggb3AsIHMzMiBpbW0sIHU4ICphbHUsIHMzMiAqdmFsKTsKIHZvaWQgZW1pdF9hbHVfaShzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCBzMzIgaW1tLCB1OCBvcCk7CiAKIC8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDMyLWJpdCkgKi8KLXZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wKTsKJiM0Mzt2b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcCwgczE2IG9mZik7CiAKIC8qIEF0b21pYyByZWFkLW1vZGlmeS13cml0ZSAoMzItYml0KSAqLwogdm9pZCBlbWl0X2F0b21pY19yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZiwgdTggY29kZSk7CmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMKaW5kZXggNDBhODc4YjY3MmY1ZC4uNjYxOTE4MmI1ZWYzMyAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYwpAQCAtNTEyLDcgJiM0Mzs1MTIsNyBAQCBzdGF0aWMgdm9pZCBlbWl0X211bF9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsCiAJY2xvYmJlcl9yZWc2NChjdHgsIGRzdCk7CiB9CiAKLS8qIEhlbHBlciBmdW5jdGlvbiBmb3IgNjQtYml0IG1vZHVsbyAqLwomIzQzOy8qIEhlbHBlciBmdW5jdGlvbiBmb3IgdW5zaWduZWQgNjQtYml0IG1vZHVsbyAqLwogc3RhdGljIHU2NCBqaXRfbW9kNjQodTY0IGEsIHU2NCBiKQogewogCXU2NCByZW07CkBAIC01MjEsMTMgJiM0Mzs1MjEsMjIgQEAgc3RhdGljIHU2NCBqaXRfbW9kNjQodTY0IGEsIHU2NCBiKQogCXJldHVybiByZW07CiB9CiAKJiM0MzsvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHNpZ25lZCA2NC1iaXQgbW9kdWxvICovCiYjNDM7c3RhdGljIHM2NCBqaXRfc21vZDY0KHM2NCBhLCBzNjQgYikKJiM0Mzt7CiYjNDM7CXM2NCBxdW90ID0gZGl2NjRfczY0KGEsIGIpOwomIzQzOwomIzQzOwlyZXR1cm4gYSAtIHF1b3QgKiBiOwomIzQzO30KJiM0MzsKIC8qIEFMVSBkaXYvbW9kIHJlZ2lzdGVyICg2NC1iaXQpICovCi1zdGF0aWMgdm9pZCBlbWl0X2Rpdm1vZF9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsCi0JCQkgICAgY29uc3QgdTggZHN0W10sIGNvbnN0IHU4IHNyY1tdLCB1OCBvcCkKJiM0MztzdGF0aWMgdm9pZCBlbWl0X2Rpdm1vZF9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IGRzdFtdLAomIzQzOwkJCSAgICBjb25zdCB1OCBzcmNbXSwgdTggb3AsIHMxNiBvZmYpCiB7CiAJY29uc3QgdTggKnIwID0gYnBmMm1pcHMzMltCUEZfUkVHXzBdOyAvKiBNYXBwZWQgdG8gdjAtdjEgKi8KIAljb25zdCB1OCAqcjEgPSBicGYybWlwczMyW0JQRl9SRUdfMV07IC8qIE1hcHBlZCB0byBhMC1hMSAqLwogCWNvbnN0IHU4ICpyMiA9IGJwZjJtaXBzMzJbQlBGX1JFR18yXTsgLyogTWFwcGVkIHRvIGEyLWEzICovCiYjNDM7CWJvb2wgaXNfc2lnbmVkID0gb2ZmID09IDE7CiAJaW50IGV4Y2x1ZGUsIGs7CiAJdTMyIGFkZHIgPSAwOwogCkBAIC01NDYsMTEgJiM0Mzs1NTUsMTEgQEAgc3RhdGljIHZvaWQgZW1pdF9kaXZtb2RfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LAogCXN3aXRjaCAoQlBGX09QKG9wKSkgewogCS8qIGRzdCA9IGRzdCAvIHNyYyAqLwogCWNhc2UgQlBGX0RJVjoKLQkJYWRkciA9ICh1MzIpJmFtcDtkaXY2NF91NjQ7CiYjNDM7CQlhZGRyID0gaXNfc2lnbmVkID8gKHUzMikmYW1wO2RpdjY0X3M2NCA6ICh1MzIpJmFtcDtkaXY2NF91NjQ7CiAJCWJyZWFrOwogCS8qIGRzdCA9IGRzdCAlIHNyYyAqLwogCWNhc2UgQlBGX01PRDoKLQkJYWRkciA9ICh1MzIpJmFtcDtqaXRfbW9kNjQ7CiYjNDM7CQlhZGRyID0gaXNfc2lnbmVkID8gKHUzMikmYW1wO2ppdF9zbW9kNjQgOiAodTMyKSZhbXA7aml0X21vZDY0OwogCQlicmVhazsKIAl9CiAJZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UOSwgYWRkcik7CkBAIC0xNTE2LDkgJiM0MzsxNTI1LDkgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCkKIAljYXNlIEJQRl9BTFUgfCBCUEZfTVVMIHwgQlBGX0s6CiAJY2FzZSBCUEZfQUxVIHwgQlBGX0RJViB8IEJQRl9LOgogCWNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfSzoKLQkJaWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSkpIHsKJiM0MzsJCWlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIG9mZikpIHsKIAkJCWVtaXRfbW92X2koY3R4LCBNSVBTX1JfVDYsIGltbSk7Ci0JCQllbWl0X2FsdV9yKGN0eCwgbG8oZHN0KSwgTUlQU19SX1Q2LCBCUEZfT1AoY29kZSkpOwomIzQzOwkJCWVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBNSVBTX1JfVDYsIEJQRl9PUChjb2RlKSwgb2ZmKTsKIAkJfSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCAmYW1wO2FsdSwgJmFtcDt2YWwpKSB7CiAJCQllbWl0X2FsdV9pKGN0eCwgbG8oZHN0KSwgdmFsLCBhbHUpOwogCQl9CkBAIC0xNTQ2LDcgJiM0MzsxNTU1LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCkKIAljYXNlIEJQRl9BTFUgfCBCUEZfTVVMIHwgQlBGX1g6CiAJY2FzZSBCUEZfQUxVIHwgQlBGX0RJViB8IEJQRl9YOgogCWNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfWDoKLQkJZW1pdF9hbHVfcihjdHgsIGxvKGRzdCksIGxvKHNyYyksIEJQRl9PUChjb2RlKSk7CiYjNDM7CQllbWl0X2FsdV9yKGN0eCwgbG8oZHN0KSwgbG8oc3JjKSwgQlBGX09QKGNvZGUpLCBvZmYpOwogCQllbWl0X3pleHRfdmVyKGN0eCwgZHN0KTsKIAkJYnJlYWs7CiAJLyogZHN0ID0gaW1tICg2NC1iaXQpICovCkBAIC0xNTk5LDcgJiM0MzsxNjA4LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCkKIAkJICogYW5kIHRoZW4gZG8gdGhlIG9wZXJhdGlvbiBvbiB0aGlzIHJlZ2lzdGVyLgogCQkgKi8KIAkJZW1pdF9tb3Zfc2VfaTY0KGN0eCwgdG1wLCBpbW0pOwotCQllbWl0X2Rpdm1vZF9yNjQoY3R4LCBkc3QsIHRtcCwgQlBGX09QKGNvZGUpKTsKJiM0MzsJCWVtaXRfZGl2bW9kX3I2NChjdHgsIGRzdCwgdG1wLCBCUEZfT1AoY29kZSksIG9mZik7CiAJCWJyZWFrOwogCS8qIGRzdCA9IGRzdCAmYW1wOyBzcmMgKDY0LWJpdCkgKi8KIAkvKiBkc3QgPSBkc3QgfCBzcmMgKDY0LWJpdCkgKi8KQEAgLTE2MjksNyAmIzQzOzE2MzgsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KQogCS8qIGRzdCA9IGRzdCAlIHNyYyAoNjQtYml0KSAqLwogCWNhc2UgQlBGX0FMVTY0IHwgQlBGX0RJViB8IEJQRl9YOgogCWNhc2UgQlBGX0FMVTY0IHwgQlBGX01PRCB8IEJQRl9YOgotCQllbWl0X2Rpdm1vZF9yNjQoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpKTsKJiM0MzsJCWVtaXRfZGl2bW9kX3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSksIG9mZik7CiAJCWJyZWFrOwogCS8qIGRzdCA9IGh0b2xlKGRzdCkgKi8KIAkvKiBkc3QgPSBodG9iZShkc3QpICovCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMKaW5kZXggZmE3ZTlhYTM3ZjQ5OC4uZGIwMjdjMmQ5MjIxMiAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYwpAQCAtMTk3LDggJiM0MzsxOTcsNDMgQEAgc3RhdGljIHZvaWQgZW1pdF9hbHVfaTY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHMzMiBpbW0sIHU4IG9wKQogCWNsb2JiZXJfcmVnKGN0eCwgZHN0KTsKIH0KIAomIzQzOy8qIEFMVSBkaXZpc2lvbiBvcGVyYXRpb24gKDY0LWJpdCkgKi8KJiM0MztzdGF0aWMgdm9pZCBlbWl0X2RpdjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZikKJiM0Mzt7CiYjNDM7CWlmIChjcHVfaGFzX21pcHM2NHI2KSB7CiYjNDM7CQlpZiAob2ZmID09IDEpCiYjNDM7CQkJZW1pdChjdHgsIGRkaXZfcjYsIGRzdCwgZHN0LCBzcmMpOwomIzQzOwkJZWxzZQomIzQzOwkJCWVtaXQoY3R4LCBkZGl2dV9yNiwgZHN0LCBkc3QsIHNyYyk7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQlpZiAob2ZmID09IDEpCiYjNDM7CQkJZW1pdChjdHgsIGRkaXYsIGRzdCwgc3JjKTsKJiM0MzsJCWVsc2UKJiM0MzsJCQllbWl0KGN0eCwgZGRpdnUsIGRzdCwgc3JjKTsKJiM0MzsJCWVtaXQoY3R4LCBtZmxvLCBkc3QpOwomIzQzOwl9CiYjNDM7fQomIzQzOwomIzQzOy8qIEFMVSBtb2R1bG8gb3BlcmF0aW9uICg2NC1iaXQpICovCiYjNDM7c3RhdGljIHZvaWQgZW1pdF9tb2Q2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHMxNiBvZmYpCiYjNDM7ewomIzQzOwlpZiAoY3B1X2hhc19taXBzNjRyNikgewomIzQzOwkJaWYgKG9mZiA9PSAxKQomIzQzOwkJCWVtaXQoY3R4LCBkbW9kLCBkc3QsIGRzdCwgc3JjKTsKJiM0MzsJCWVsc2UKJiM0MzsJCQllbWl0KGN0eCwgZG1vZHUsIGRzdCwgZHN0LCBzcmMpOwomIzQzOwl9IGVsc2UgewomIzQzOwkJaWYgKG9mZiA9PSAxKQomIzQzOwkJCWVtaXQoY3R4LCBkZGl2LCBkc3QsIHNyYyk7CiYjNDM7CQllbHNlCiYjNDM7CQkJZW1pdChjdHgsIGRkaXZ1LCBkc3QsIHNyYyk7CiYjNDM7CQllbWl0KGN0eCwgbWZoaSwgZHN0KTsKJiM0MzsJfQomIzQzO30KJiM0MzsKIC8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDY0LWJpdCkgKi8KLXN0YXRpYyB2b2lkIGVtaXRfYWx1X3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wKQomIzQzO3N0YXRpYyB2b2lkIGVtaXRfYWx1X3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLAomIzQzOwkJCSBzMTYgb2ZmKQogewogCXN3aXRjaCAoQlBGX09QKG9wKSkgewogCS8qIGRzdCA9IGRzdCAmbHQ7Jmx0OyBzcmMgKi8KQEAgLTIzNSwyNSAmIzQzOzI3MCwxNSBAQCBzdGF0aWMgdm9pZCBlbWl0X2FsdV9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcCkKIAkJYnJlYWs7CiAJLyogZHN0ID0gZHN0IC8gc3JjICovCiAJY2FzZSBCUEZfRElWOgotCQlpZiAoY3B1X2hhc19taXBzNjRyNikgewotCQkJZW1pdChjdHgsIGRkaXZ1X3I2LCBkc3QsIGRzdCwgc3JjKTsKLQkJfSBlbHNlIHsKLQkJCWVtaXQoY3R4LCBkZGl2dSwgZHN0LCBzcmMpOwotCQkJZW1pdChjdHgsIG1mbG8sIGRzdCk7Ci0JCX0KJiM0MzsJCWVtaXRfZGl2NjQoY3R4LCBkc3QsIHNyYywgb2ZmKTsKIAkJYnJlYWs7CiAJLyogZHN0ID0gZHN0ICUgc3JjICovCiAJY2FzZSBCUEZfTU9EOgotCQlpZiAoY3B1X2hhc19taXBzNjRyNikgewotCQkJZW1pdChjdHgsIGRtb2R1LCBkc3QsIGRzdCwgc3JjKTsKLQkJfSBlbHNlIHsKLQkJCWVtaXQoY3R4LCBkZGl2dSwgZHN0LCBzcmMpOwotCQkJZW1pdChjdHgsIG1maGksIGRzdCk7Ci0JCX0KJiM0MzsJCWVtaXRfbW9kNjQoY3R4LCBkc3QsIHNyYywgb2ZmKTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJLyogV2lkdGgtZ2VuZXJpYyBvcGVyYXRpb25zICovCi0JCWVtaXRfYWx1X3IoY3R4LCBkc3QsIHNyYywgb3ApOwomIzQzOwkJZW1pdF9hbHVfcihjdHgsIGRzdCwgc3JjLCBvcCwgb2ZmKTsKIAl9CiAJY2xvYmJlcl9yZWcoY3R4LCBkc3QpOwogfQpAQCAtNjc0LDkgJiM0Mzs2OTksOSBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KQogCWNhc2UgQlBGX0FMVSB8IEJQRl9BTkQgfCBCUEZfSzoKIAljYXNlIEJQRl9BTFUgfCBCUEZfWE9SIHwgQlBGX0s6CiAJY2FzZSBCUEZfQUxVIHwgQlBGX0xTSCB8IEJQRl9LOgotCQlpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkgewomIzQzOwkJaWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgb2ZmKSkgewogCQkJZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTsKLQkJCWVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTsKJiM0MzsJCQllbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSwgb2ZmKTsKIAkJfSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCAmYW1wO2FsdSwgJmFtcDt2YWwpKSB7CiAJCQllbWl0X2FsdV9pKGN0eCwgZHN0LCB2YWwsIGFsdSk7CiAJCX0KQEAgLTY5NiwxMCAmIzQzOzcyMSwxMCBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KQogCWNhc2UgQlBGX0FMVSB8IEJQRl9NVUwgfCBCUEZfSzoKIAljYXNlIEJQRl9BTFUgfCBCUEZfRElWIHwgQlBGX0s6CiAJY2FzZSBCUEZfQUxVIHwgQlBGX01PRCB8IEJQRl9LOgotCQlpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkgewomIzQzOwkJaWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgb2ZmKSkgewogCQkJZW1pdF9zZXh0KGN0eCwgZHN0LCBkc3QpOwogCQkJZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTsKLQkJCWVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTsKJiM0MzsJCQllbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSwgb2ZmKTsKIAkJfSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCAmYW1wO2FsdSwgJmFtcDt2YWwpKSB7CiAJCQllbWl0X3NleHQoY3R4LCBkc3QsIGRzdCk7CiAJCQllbWl0X2FsdV9pKGN0eCwgZHN0LCB2YWwsIGFsdSk7CkBAIC03MTQsNyAmIzQzOzczOSw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpCiAJY2FzZSBCUEZfQUxVIHwgQlBGX09SIHwgQlBGX1g6CiAJY2FzZSBCUEZfQUxVIHwgQlBGX1hPUiB8IEJQRl9YOgogCWNhc2UgQlBGX0FMVSB8IEJQRl9MU0ggfCBCUEZfWDoKLQkJZW1pdF9hbHVfcihjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSkpOwomIzQzOwkJZW1pdF9hbHVfcihjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSksIG9mZik7CiAJCWVtaXRfemV4dF92ZXIoY3R4LCBkc3QpOwogCQlicmVhazsKIAkvKiBkc3QgPSBkc3QgJmd0OyZndDsgc3JjICovCkBAIC03MzMsNyAmIzQzOzc1OCw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpCiAJY2FzZSBCUEZfQUxVIHwgQlBGX01PRCB8IEJQRl9YOgogCQllbWl0X3NleHQoY3R4LCBkc3QsIGRzdCk7CiAJCWVtaXRfc2V4dChjdHgsIE1JUFNfUl9UNCwgc3JjKTsKLQkJZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSkpOwomIzQzOwkJZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksIG9mZik7CiAJCWVtaXRfemV4dF92ZXIoY3R4LCBkc3QpOwogCQlicmVhazsKIAkvKiBkc3QgPSBpbW0gKDY0LWJpdCkgKi8KQEAgLTc3MCw5ICYjNDM7Nzk1LDkgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCkKIAljYXNlIEJQRl9BTFU2NCB8IEJQRl9NVUwgfCBCUEZfSzoKIAljYXNlIEJQRl9BTFU2NCB8IEJQRl9ESVYgfCBCUEZfSzoKIAljYXNlIEJQRl9BTFU2NCB8IEJQRl9NT0QgfCBCUEZfSzoKLQkJaWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSkpIHsKJiM0MzsJCWlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIG9mZikpIHsKIAkJCWVtaXRfbW92X2koY3R4LCBNSVBTX1JfVDQsIGltbSk7Ci0JCQllbWl0X2FsdV9yNjQoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTsKJiM0MzsJCQllbWl0X2FsdV9yNjQoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBvZmYpOwogCQl9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sICZhbXA7YWx1LCAmYW1wO3ZhbCkpIHsKIAkJCWVtaXRfYWx1X2k2NChjdHgsIGRzdCwgdmFsLCBhbHUpOwogCQl9CkBAIC03OTksNyAmIzQzOzgyNCw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpCiAJY2FzZSBCUEZfQUxVNjQgfCBCUEZfTVVMIHwgQlBGX1g6CiAJY2FzZSBCUEZfQUxVNjQgfCBCUEZfRElWIHwgQlBGX1g6CiAJY2FzZSBCUEZfQUxVNjQgfCBCUEZfTU9EIHwgQlBGX1g6Ci0JCWVtaXRfYWx1X3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSkpOwomIzQzOwkJZW1pdF9hbHVfcjY0KGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSwgb2ZmKTsKIAkJYnJlYWs7CiAJLyogZHN0ID0gaHRvbGUoZHN0KSAqLwogCS8qIGRzdCA9IGh0b2JlKGRzdCkgKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjI6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIzNzQKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA5OTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBFdmFsdWF0aW9uOiBBIFN0cmFpZ2h0Zm9yd2FyZCBOZWdhdGl2ZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXZSYjMzk7dmUgZ290IGEgcGF0Y2ggc2VyaWVzLCBhbmQgdGhlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgaXQganVzdGlmaWVzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIsIGdpdmVuIHRoYXQgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgYW1kNjQuIFRoaXMgaXMgYSBwcmV0dHkgc3RhbmRhcmQga2VybmVsIHJldmlldywgYSBxdWljayB0cmlhZ2UgdG8gc2VlIGlmIHRoZSBjaGFuZ2VzIHdhcnJhbnQgZnVydGhlciBhdHRlbnRpb24uIFRoZSBjaGFuZ2VzIGFyZSBiZW5pZ24gaW4gdGVybXMgb2Ygc2V2ZXJpdHksIHRoYW5rZnVsbHkuCgpGaXJzdCwgSSBuZWVkIHRvIHNlZSB3aGF0JiMzOTtzIGJlaW5nIG1vZGlmaWVkLiBUaGUgZGlmZiB0YXJnZXRzIGZpbGVzIGV4Y2x1c2l2ZWx5IHdpdGhpbiBgYXJjaC9taXBzL2AuIFNwZWNpZmljYWxseSwgd2UgYXJlIGxvb2tpbmcgYXQgY2hhbmdlcyByZWxhdGVkIHRvIHRoZSBNSVBTIEJQRiBKSVQgYW5kIHVhc20uCgpOb3csIGxldCYjMzk7cyBjb25zdWx0IHRoZSBjcml0ZXJpYS4gU2VjdGlvbiAyIG9mIHRoZSBndWlkZWxpbmVzIGdpdmVzIHVzIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYSDigJMgY29uZGl0aW9ucyB0aGF0ICpleGNsdWRlKiB0aGUgbmVlZCBmb3IgZnV6emluZy4gT25lIG9mIHRoZSBrZXkgZXhjbHVzaW9ucyBpcywgYW5kIHRoaXMganVtcHMgb3V0IGltbWVkaWF0ZWx5OiAmIzM0O0NvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4mIzM0OwoKQmluZ28uIEV2ZXJ5dGhpbmcgbW9kaWZpZWQgaXMgbmVzdGxlZCB1bmRlciBgYXJjaC9taXBzL2AuIE1JUFMgY29kZSBpcyBpbmhlcmVudGx5IGFyY2hpdGVjdHVyZS1zcGVjaWZpYy4gU2luY2UgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgYW1kNjQsIHRoaXMgY29kZSB3aWxsIGJlIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgaW4gdGhlIHRhcmdldCBlbnZpcm9ubWVudC4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJiMzOTtsbCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgaW5kZWVkIHRoZSBjYXNlLiBUaGUgcHJvdmlkZWQgZGlmZiBjb25maXJtcyB0aGlzLiBFdmVyeXRoaW5nIGlzIHdpdGhpbiB0aGUgYGFyY2gvbWlwcy9gIGRpcmVjdG9yeS4gTm8gY3Jvc3MtYXJjaGl0ZWN0dXJlIG1vZGlmaWNhdGlvbnMgaGVyZS4KClRvIGJlIGV4dHJhIHRob3JvdWdoLCBJJiMzOTtsbCBydW4gYSBxdWljayBgZ3JlcHBlcmAgc2NhbiAob3IgZXF1aXZhbGVudCkganVzdCB0byBtYWtlIGFic29sdXRlbHkgY2VydGFpbiwgZXZlbiB0aG91Z2ggdGhlIGRpZmYgc3Ryb25nbHkgc3VnZ2VzdHMgdGhpcyBpcyB0aGUgY2FzZS4gRXZlbiBhIHF1aWNrIHNlYXJjaCBvbiBzb21lIGtleXdvcmRzIGNvbmZpcm1zIHRoaXMuCgpUaGVyZWZvcmUsIGFwcGx5aW5nIFNlY3Rpb24gMjogJiMzNDtDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuJiMzNDsgV2UgYXJlIGxvb2tpbmcgYXQgYSBjbGVhci1jdXQgY2FzZSBvZiBgV29ydGhGdXp6aW5nID0gZmFsc2VgLiBObyBmdXp6aW5nIGlzIHdhcnJhbnRlZCBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDIyOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2VtaXRfZGl2NjQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jPTE1OD1zdGF0aWMgdm9pZCBlbWl0X2FsdV9pNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApXG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTIwMC0vKiBBTFUgZGl2aXNpb24gb3BlcmF0aW9uICg2NC1iaXQpICovXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmM6MjAxOnN0YXRpYyB2b2lkIGVtaXRfZGl2NjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCBzMTYgb2ZmKVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTIwMi17XG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jPTIzNT1zdGF0aWMgdm9pZCBlbWl0X2FsdV9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcCxcbi0tXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtMjcyLVx0Y2FzZSBCUEZfRElWOlxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jOjI3MzpcdFx0ZW1pdF9kaXY2NChjdHgsIGRzdCwgc3JjLCBvZmYpO1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTI3NC1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjI6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQwODEKCQkJCQkJCW91dHB1dDogODUKCQkJCQkJCXRob3VnaHRzOiAyNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgVHJpYWdlIEFzc2Vzc21lbnQ6IE1JUFMtU3BlY2lmaWMgQ29kZSBvbiBhbiBBTUQ2NCBUYXJnZXQqKgoKT2theSwgaGVyZSYjMzk7cyB0aGUgZGVhbC4gVGhpcyBwYXRjaCBJJiMzOTttIGxvb2tpbmcgYXQgaXMgc3RyaWN0bHkgY29uZmluZWQgdG8gdGhlIGBhcmNoL21pcHMvYCBkaXJlY3RvcnkuIFRoYXQmIzM5O3MgaW1tZWRpYXRlbHkgYSByZWQgZmxhZyBnaXZlbiB0aGF0IHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGZvciB0aGlzIGZ1enppbmcgZWZmb3J0IGlzIEFNRDY0LiBUaW1lIHRvIGFwcGx5IHRoZSB0cmlhZ2UgcGhpbG9zb3BoeS4gU3BlY2lmaWNhbGx5LCBTZWN0aW9uIDIgaXMgd2hhdCYjMzk7cyByZWxldmFudCBoZXJlLiBJdCYjMzk7cyBwcmV0dHkgY2xlYXIgY3V0OiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIGludG8gYSBzcGVjaWZpYyBzZXQgb2YgY2F0ZWdvcmllcywgYW5kIGlmIHNvLCBXb3J0aEZ1enppbmcgZ2V0cyBhIGZpcm0gJiMzNDtmYWxzZS4mIzM0OwoKVGhlIHNlY3Rpb24gcG9pbnRzIG91dCB0aGF0IHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgYXJlIGEgdmFsaWQgcmVhc29uIHRvIHNldCAmIzM0O1dvcnRoRnV6emluZyYjMzQ7IHRvIGZhbHNlLiBJIGltbWVkaWF0ZWx5IGxvb2sgZm9yIGNvZGUgcGF0aHMgdGhhdCBhcmUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljLCBhbmQgdGhhdCBpcyB3aGF0IEkgc2VlLiBUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1JUFMgbWljcm8tYXNzZW1ibGVyIChgYXJjaC9taXBzL21tL3Vhc20qYCwgYGFyY2gvbWlwcy9pbmNsdWRlL2FzbS91YXNtLmhgKSBhbmQgTUlQUyBCUEYgSklUIGNvbXBpbGVyIChgYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAqYCkgY29kZS4gU2luY2UgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gaXMgdGFyZ2V0aW5nIGFtZDY0IGFuZCBubyBjcm9zcy1jb21waWxhdGlvbiBpcyBwcmVzZW50LCB0aGVzZSBjb2RlIHBhdGhzIGFyZSwgYnkgZGVmaW5pdGlvbiwgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIGFtZDY0LiBUaGVyZSYjMzk7cyBubyB3YXkgdGhleSYjMzk7bGwgYmUgZXhlY3V0ZWQuCgpHaXZlbiB0aGlzLCBJIGhhdmUgdG8gY29uY2x1ZGU6CiogICBXb3J0aEZ1enppbmc6IGBmYWxzZWAKKiAgIEZvY3VzU3ltYm9sczogYFtdYAoqICAgRW5hYmxlQ29uZmlnczogYFtdYAoqICAgUmVhc29uaW5nOiBNSVBTLXNwZWNpZmljIGNvZGUgb24gYW4gQU1ENjQgdGFyZ2V0IG1lYW5zIGl0JiMzOTtzIHVucmVhY2hhYmxlLgoKT2theSwgdGhhdCYjMzk7cyBteSBjYWxsLiBOb3csIGxldCYjMzk7cyBnbyBhaGVhZCBhbmQgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAyMjoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIE1JUFMgbWljcm8tYXNzZW1ibGVyIHJvdXRpbmVzIGFuZCBNSVBTIEJQRiBKSVQgY29tcGlsZXIgaW1wbGVtZW50YXRpb25zICh1bmRlciBhcmNoL21pcHMvKS4gQmVjYXVzZSB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NCwgdGhlc2UgY29kZSBwYXRocyBhcmUgZXhjbHVzaXZlIHRvIE1JUFMgYW5kIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZyBvbiBhbWQ2NC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIE1JUFMgbWljcm8tYXNzZW1ibGVyIHJvdXRpbmVzIGFuZCBNSVBTIEJQRiBKSVQgY29tcGlsZXIgaW1wbGVtZW50YXRpb25zICh1bmRlciBhcmNoL21pcHMvKS4gQmVjYXVzZSB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NCwgdGhlc2UgY29kZSBwYXRocyBhcmUgZXhjbHVzaXZlIHRvIE1JUFMgYW5kIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZyBvbiBhbWQ2NC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjI6MjE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDIyOjIwOjQzLjk5OTM4Mzk1N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMjk2OTMzMTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgTUlQUyBtaWNyby1hc3NlbWJsZXIgcm91dGluZXMgYW5kIE1JUFMgQlBGIEpJVCBjb21waWxlciBpbXBsZW1lbnRhdGlvbnMgKHVuZGVyIGFyY2gvbWlwcy8pLiBCZWNhdXNlIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCB0aGVzZSBjb2RlIHBhdGhzIGFyZSBleGNsdXNpdmUgdG8gTUlQUyBhbmQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nIG9uIGFtZDY0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMjI6MjA6NDMuOTk5Mzk3MTc3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTg2MjkyMTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjZjZkNzQzZmJkNjViMmNjZGFlYjIzMjNhMTlmNjA3ZTE5ZDg4NmRjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgU2VwIDExIDIyOjIwOjQzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS91YXNtLmggYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oXFxuaW5kZXggYjQzYmZkNDQ1MjUyMS4uYWRlYTM1ZGYwZjhkYyAxMDA2NDRcXG4tLS0gYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oXFxuKysrIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3Vhc20uaFxcbkBAIC04NSwxNSArODUsMjAgQEAgSXBfdTF1MihfY3RjMSk7XFxuIElwX3UydTEoX2N0Y21zYSk7XFxuIElwX3UydTFzMyhfZGFkZGl1KTtcXG4gSXBfdTN1MXUyKF9kYWRkdSk7XFxuK0lwX3UxdTIoX2RkaXYpO1xcbitJcF91M3UxdTIoX2RkaXZfcjYpO1xcbiBJcF91MXUyKF9kZGl2dSk7XFxuIElwX3UzdTF1MihfZGRpdnVfcjYpO1xcbiBJcF91MShfZGkpO1xcbiBJcF91MnUxbXNidTMoX2RpbnMpO1xcbiBJcF91MnUxbXNidTMoX2RpbnNtKTtcXG4gSXBfdTJ1MW1zYnUzKF9kaW5zdSk7XFxuK0lwX3UxdTIoX2Rpdik7XFxuK0lwX3UzdTF1MihfZGl2X3I2KTtcXG4gSXBfdTF1MihfZGl2dSk7XFxuIElwX3UzdTF1MihfZGl2dV9yNik7XFxuIElwX3UxdTJ1MyhfZG1mYzApO1xcbitJcF91M3UxdTIoX2Rtb2QpO1xcbiBJcF91M3UxdTIoX2Rtb2R1KTtcXG4gSXBfdTF1MnUzKF9kbXRjMCk7XFxuIElwX3UxdTIoX2RtdWx0dSk7XFxuQEAgLTEzNSw2ICsxNDAsNyBAQCBJcF91MXUydTMoX21mYzApO1xcbiBJcF91MXUydTMoX21maGMwKTtcXG4gSXBfdTEoX21maGkpO1xcbiBJcF91MShfbWZsbyk7XFxuK0lwX3UzdTF1MihfbW9kKTtcXG4gSXBfdTN1MXUyKF9tb2R1KTtcXG4gSXBfdTN1MXUyKF9tb3ZuKTtcXG4gSXBfdTN1MXUyKF9tb3Z6KTtcXG5AQCAtMTU2LDYgKzE2Miw4IEBAIElwX3UyczN1MShfc2IpO1xcbiBJcF91MnMzdTEoX3NjKTtcXG4gSXBfdTJzM3UxKF9zY2QpO1xcbiBJcF91MnMzdTEoX3NkKTtcXG4rSXBfdTJ1MShfc2ViKTtcXG4rSXBfdTJ1MShfc2VoKTtcXG4gSXBfdTN1MXUyKF9zZWxlcXopO1xcbiBJcF91M3UxdTIoX3NlbG5leik7XFxuIElwX3UyczN1MShfc2gpO1xcbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbW0vdWFzbS1taXBzLmMgYi9hcmNoL21pcHMvbW0vdWFzbS1taXBzLmNcXG5pbmRleCBlMTVjNjcwMGNkMDg4Li4yZDE2NjhiNThkZGRlIDEwMDY0NFxcbi0tLSBhL2FyY2gvbWlwcy9tbS91YXNtLW1pcHMuY1xcbisrKyBiL2FyY2gvbWlwcy9tbS91YXNtLW1pcHMuY1xcbkBAIC03NSw2ICs3NSw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW5zbiBpbnNuX3RhYmxlW2luc25faW52YWxpZF0gPSB7XFxuIFxcdFtpbnNuX2N0Y21zYV1cXHQ9IHtNKG1zYV9vcCwgMCwgbXNhX2N0Y19vcCwgMCwgMCwgbXNhX2VsbV9vcCksIFJEIHwgUkV9LFxcbiBcXHRbaW5zbl9kYWRkaXVdXFx0PSB7TShkYWRkaXVfb3AsIDAsIDAsIDAsIDAsIDApLCBSUyB8IFJUIHwgU0lNTX0sXFxuIFxcdFtpbnNuX2RhZGR1XVxcdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgZGFkZHVfb3ApLCBSUyB8IFJUIHwgUkR9LFxcbitcXHRbaW5zbl9kZGl2XVxcdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgZGRpdl9vcCksIFJTIHwgUlR9LFxcbitcXHRbaW5zbl9kZGl2X3I2XVxcdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGRpdl9kZGl2Nl9vcCwgZGRpdl9vcCksXFxuK1xcdFxcdFxcdFxcdFJTIHwgUlQgfCBSRH0sXFxuIFxcdFtpbnNuX2RkaXZ1XVxcdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgZGRpdnVfb3ApLCBSUyB8IFJUfSxcXG4gXFx0W2luc25fZGRpdnVfcjZdXFx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkZGl2dV9kZGl2dTZfb3AsIGRkaXZ1X29wKSxcXG4gXFx0XFx0XFx0XFx0UlMgfCBSVCB8IFJEfSxcXG5AQCAtODIsMTAgKzg1LDE1IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW5zbiBpbnNuX3RhYmxlW2luc25faW52YWxpZF0gPSB7XFxuIFxcdFtpbnNuX2RpbnNdXFx0PSB7TShzcGVjM19vcCwgMCwgMCwgMCwgMCwgZGluc19vcCksIFJTIHwgUlQgfCBSRCB8IFJFfSxcXG4gXFx0W2luc25fZGluc21dXFx0PSB7TShzcGVjM19vcCwgMCwgMCwgMCwgMCwgZGluc21fb3ApLCBSUyB8IFJUIHwgUkQgfCBSRX0sXFxuIFxcdFtpbnNuX2RpbnN1XVxcdD0ge00oc3BlYzNfb3AsIDAsIDAsIDAsIDAsIGRpbnN1X29wKSwgUlMgfCBSVCB8IFJEIHwgUkV9LFxcbitcXHRbaW5zbl9kaXZdXFx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkaXZfb3ApLCBSUyB8IFJUfSxcXG4rXFx0W2luc25fZGl2X3I2XVxcdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGl2X2RpdjZfb3AsIGRpdl9vcCksXFxuK1xcdFxcdFxcdFxcdFJTIHwgUlQgfCBSRH0sXFxuIFxcdFtpbnNuX2RpdnVdXFx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkaXZ1X29wKSwgUlMgfCBSVH0sXFxuIFxcdFtpbnNuX2RpdnVfcjZdXFx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkaXZ1X2RpdnU2X29wLCBkaXZ1X29wKSxcXG4gXFx0XFx0XFx0XFx0UlMgfCBSVCB8IFJEfSxcXG4gXFx0W2luc25fZG1mYzBdXFx0PSB7TShjb3AwX29wLCBkbWZjX29wLCAwLCAwLCAwLCAwKSwgUlQgfCBSRCB8IFNFVH0sXFxuK1xcdFtpbnNuX2Rtb2RdXFx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkZGl2X2Rtb2Rfb3AsIGRkaXZfb3ApLFxcbitcXHRcXHRcXHRcXHRSUyB8IFJUIHwgUkR9LFxcbiBcXHRbaW5zbl9kbW9kdV1cXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRkaXZ1X2Rtb2R1X29wLCBkZGl2dV9vcCksXFxuIFxcdFxcdFxcdFxcdFJTIHwgUlQgfCBSRH0sXFxuIFxcdFtpbnNuX2RtdGMwXVxcdD0ge00oY29wMF9vcCwgZG10Y19vcCwgMCwgMCwgMCwgMCksIFJUIHwgUkQgfCBTRVR9LFxcbkBAIC0xNDAsNiArMTQ4LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnNuIGluc25fdGFibGVbaW5zbl9pbnZhbGlkXSA9IHtcXG4gXFx0W2luc25fbWZoYzBdXFx0PSB7TShjb3AwX29wLCBtZmhjMF9vcCwgMCwgMCwgMCwgMCksICBSVCB8IFJEIHwgU0VUfSxcXG4gXFx0W2luc25fbWZoaV1cXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIG1maGlfb3ApLCBSRH0sXFxuIFxcdFtpbnNuX21mbG9dXFx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBtZmxvX29wKSwgUkR9LFxcbitcXHRbaW5zbl9tb2RdXFx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkaXZfbW9kX29wLCBkaXZfb3ApLFxcbitcXHRcXHRcXHRcXHRSUyB8IFJUIHwgUkR9LFxcbiBcXHRbaW5zbl9tb2R1XVxcdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGl2dV9tb2R1X29wLCBkaXZ1X29wKSxcXG4gXFx0XFx0XFx0XFx0UlMgfCBSVCB8IFJEfSxcXG4gXFx0W2luc25fbW92bl1cXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIG1vdm5fb3ApLCBSUyB8IFJUIHwgUkR9LFxcbkBAIC0xNzcsNiArMTg3LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnNuIGluc25fdGFibGVbaW5zbl9pbnZhbGlkXSA9IHtcXG4gXFx0W2luc25fc2NkXVxcdD0ge002KHNwZWMzX29wLCAwLCAwLCAwLCBzY2Q2X29wKSwgIFJTIHwgUlQgfCBTSU1NOX0sXFxuICNlbmRpZlxcbiBcXHRbaW5zbl9zZF1cXHQ9IHtNKHNkX29wLCAwLCAwLCAwLCAwLCAwKSwgIFJTIHwgUlQgfCBTSU1NfSxcXG4rXFx0W2luc25fc2ViXVxcdD0ge00oc3BlYzNfb3AsIDAsIDAsIDAsIHNlYl9vcCwgYnNoZmxfb3ApLCBSVCB8IFJEfSxcXG4rXFx0W2luc25fc2VoXVxcdD0ge00oc3BlYzNfb3AsIDAsIDAsIDAsIHNlaF9vcCwgYnNoZmxfb3ApLCBSVCB8IFJEfSxcXG4gXFx0W2luc25fc2VsZXF6XVxcdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgc2VsZXF6X29wKSwgUlMgfCBSVCB8IFJEfSxcXG4gXFx0W2luc25fc2VsbmV6XVxcdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgc2VsbmV6X29wKSwgUlMgfCBSVCB8IFJEfSxcXG4gXFx0W2luc25fc2hdXFx0PSB7TShzaF9vcCwgMCwgMCwgMCwgMCwgMCksICBSUyB8IFJUIHwgU0lNTX0sXFxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9tbS91YXNtLmMgYi9hcmNoL21pcHMvbW0vdWFzbS5jXFxuaW5kZXggMTI1MTQwOTc5ZDYyYy4uMTM5YWZiMGUxNGNkZiAxMDA2NDRcXG4tLS0gYS9hcmNoL21pcHMvbW0vdWFzbS5jXFxuKysrIGIvYXJjaC9taXBzL21tL3Vhc20uY1xcbkBAIC00OSwxOSArNDksMjEgQEAgZW51bSBvcGNvZGUge1xcbiBcXHRpbnNuX2FkZGl1LCBpbnNuX2FkZHUsIGluc25fYW5kLCBpbnNuX2FuZGksIGluc25fYmJpdDAsIGluc25fYmJpdDEsXFxuIFxcdGluc25fYmVxLCBpbnNuX2JlcWwsIGluc25fYmdleiwgaW5zbl9iZ2V6bCwgaW5zbl9iZ3R6LCBpbnNuX2JsZXosXFxuIFxcdGluc25fYmx0eiwgaW5zbl9ibHR6bCwgaW5zbl9ibmUsIGluc25fYnJlYWssIGluc25fY2FjaGUsIGluc25fY2ZjMSxcXG4tXFx0aW5zbl9jZmNtc2EsIGluc25fY3RjMSwgaW5zbl9jdGNtc2EsIGluc25fZGFkZGl1LCBpbnNuX2RhZGR1LCBpbnNuX2RkaXZ1LFxcbi1cXHRpbnNuX2RkaXZ1X3I2LCBpbnNuX2RpLCBpbnNuX2RpbnMsIGluc25fZGluc20sIGluc25fZGluc3UsIGluc25fZGl2dSxcXG4tXFx0aW5zbl9kaXZ1X3I2LCBpbnNuX2RtZmMwLCBpbnNuX2Rtb2R1LCBpbnNuX2RtdGMwLCBpbnNuX2RtdWx0dSxcXG4rXFx0aW5zbl9jZmNtc2EsIGluc25fY3RjMSwgaW5zbl9jdGNtc2EsIGluc25fZGFkZGl1LCBpbnNuX2RhZGR1LCBpbnNuX2RkaXYsXFxuK1xcdGluc25fZGRpdl9yNiwgaW5zbl9kZGl2dSwgaW5zbl9kZGl2dV9yNiwgaW5zbl9kaSwgaW5zbl9kaW5zLCBpbnNuX2RpbnNtLFxcbitcXHRpbnNuX2RpbnN1LCBpbnNuX2RpdiwgaW5zbl9kaXZfcjYsIGluc25fZGl2dSwgaW5zbl9kaXZ1X3I2LCBpbnNuX2RtZmMwLFxcbitcXHRpbnNuX2Rtb2QsIGluc25fZG1vZHUsIGluc25fZG10YzAsIGluc25fZG11bHR1LFxcbiBcXHRpbnNuX2RtdWx1LCBpbnNuX2Ryb3RyLCBpbnNuX2Ryb3RyMzIsIGluc25fZHNiaCwgaW5zbl9kc2hkLCBpbnNuX2RzbGwsXFxuIFxcdGluc25fZHNsbDMyLCBpbnNuX2RzbGx2LCBpbnNuX2RzcmEsIGluc25fZHNyYTMyLCBpbnNuX2RzcmF2LCBpbnNuX2RzcmwsXFxuIFxcdGluc25fZHNybDMyLCBpbnNuX2Rzcmx2LCBpbnNuX2RzdWJ1LCBpbnNuX2VyZXQsIGluc25fZXh0LCBpbnNuX2lucyxcXG4gXFx0aW5zbl9qLCBpbnNuX2phbCwgaW5zbl9qYWxyLCBpbnNuX2pyLCBpbnNuX2xiLCBpbnNuX2xidSwgaW5zbl9sZCxcXG4gXFx0aW5zbl9sZGRpciwgaW5zbl9sZHB0ZSwgaW5zbl9sZHgsIGluc25fbGgsIGluc25fbGh1LCBpbnNuX2xsLCBpbnNuX2xsZCxcXG4gXFx0aW5zbl9sdWksIGluc25fbHcsIGluc25fbHd1LCBpbnNuX2x3eCwgaW5zbl9tZmMwLCBpbnNuX21maGMwLCBpbnNuX21maGksXFxuLVxcdGluc25fbWZsbywgaW5zbl9tb2R1LCBpbnNuX21vdm4sIGluc25fbW92eiwgaW5zbl9tdGMwLCBpbnNuX210aGMwLFxcbi1cXHRpbnNuX210aGksIGluc25fbXRsbywgaW5zbl9tdWwsIGluc25fbXVsdHUsIGluc25fbXVsdSwgaW5zbl9tdWh1LCBpbnNuX25vcixcXG4tXFx0aW5zbl9vciwgaW5zbl9vcmksIGluc25fcHJlZiwgaW5zbl9yZmUsIGluc25fcm90ciwgaW5zbl9zYiwgaW5zbl9zYyxcXG4tXFx0aW5zbl9zY2QsIGluc25fc2VsZXF6LCBpbnNuX3NlbG5leiwgaW5zbl9zZCwgaW5zbl9zaCwgaW5zbl9zbGwsXFxuK1xcdGluc25fbWZsbywgaW5zbl9tb2QsIGluc25fbW9kdSwgaW5zbl9tb3ZuLCBpbnNuX21vdnosIGluc25fbXRjMCxcXG4rXFx0aW5zbl9tdGhjMCwgaW5zbl9tdGhpLCBpbnNuX210bG8sIGluc25fbXVsLCBpbnNuX211bHR1LCBpbnNuX211bHUsXFxuK1xcdGluc25fbXVodSwgaW5zbl9ub3IsIGluc25fb3IsIGluc25fb3JpLCBpbnNuX3ByZWYsIGluc25fcmZlLCBpbnNuX3JvdHIsXFxuK1xcdGluc25fc2IsIGluc25fc2MsIGluc25fc2NkLCBpbnNuX3NlYiwgaW5zbl9zZWgsXFxuK1xcdGluc25fc2VsZXF6LCBpbnNuX3NlbG5leiwgaW5zbl9zZCwgaW5zbl9zaCwgaW5zbl9zbGwsXFxuIFxcdGluc25fc2xsdiwgaW5zbl9zbHQsIGluc25fc2x0aSwgaW5zbl9zbHRpdSwgaW5zbl9zbHR1LCBpbnNuX3NyYSxcXG4gXFx0aW5zbl9zcmF2LCBpbnNuX3NybCwgaW5zbl9zcmx2LCBpbnNuX3N1YnUsIGluc25fc3csIGluc25fc3luYyxcXG4gXFx0aW5zbl9zeXNjYWxsLCBpbnNuX3RsYnAsIGluc25fdGxiciwgaW5zbl90bGJ3aSwgaW5zbl90bGJ3ciwgaW5zbl93YWl0LFxcbkBAIC0yODcsOSArMjg5LDEyIEBAIElfdTF1MihfY2ZjMSlcXG4gSV91MnUxKF9jZmNtc2EpXFxuIElfdTF1MihfY3RjMSlcXG4gSV91MnUxKF9jdGNtc2EpXFxuK0lfdTF1MihfZGRpdilcXG4rSV91M3UxdTIoX2RkaXZfcjYpXFxuIElfdTF1MihfZGRpdnUpXFxuIElfdTN1MXUyKF9kZGl2dV9yNilcXG4gSV91MXUydTMoX2RtZmMwKVxcbitJX3UzdTF1MihfZG1vZClcXG4gSV91M3UxdTIoX2Rtb2R1KVxcbiBJX3UxdTJ1MyhfZG10YzApXFxuIElfdTF1MihfZG11bHR1KVxcbkBAIC0yOTcsNiArMzAyLDggQEAgSV91M3UxdTIoX2RtdWx1KVxcbiBJX3UydTFzMyhfZGFkZGl1KVxcbiBJX3UzdTF1MihfZGFkZHUpXFxuIElfdTEoX2RpKTtcXG4rSV91MXUyKF9kaXYpXFxuK0lfdTN1MXUyKF9kaXZfcjYpXFxuIElfdTF1MihfZGl2dSlcXG4gSV91M3UxdTIoX2RpdnVfcjYpXFxuIElfdTJ1MShfZHNiaCk7XFxuQEAgLTMzMiw2ICszMzksNyBAQCBJX3UyczN1MShfbHcpXFxuIElfdTJzM3UxKF9sd3UpXFxuIElfdTF1MnUzKF9tZmMwKVxcbiBJX3UxdTJ1MyhfbWZoYzApXFxuK0lfdTN1MXUyKF9tb2QpXFxuIElfdTN1MXUyKF9tb2R1KVxcbiBJX3UzdTF1MihfbW92bilcXG4gSV91M3UxdTIoX21vdnopXFxuQEAgLTM1Myw2ICszNjEsOCBAQCBJX3UyczN1MShfc2IpXFxuIElfdTJzM3UxKF9zYylcXG4gSV91MnMzdTEoX3NjZClcXG4gSV91MnMzdTEoX3NkKVxcbitJX3UydTEoX3NlYilcXG4rSV91MnUxKF9zZWgpXFxuIElfdTN1MXUyKF9zZWxlcXopXFxuIElfdTN1MXUyKF9zZWxuZXopXFxuIElfdTJzM3UxKF9zaClcXG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmNcXG5pbmRleCA2ZWU0YWJlNmExZjcwLi5mMTRkZTZkNzMxMjIxIDEwMDY0NFxcbi0tLSBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmNcXG4rKysgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jXFxuQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIGVtaXRfbW92X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjKVxcbiB9XFxuIFxcbiAvKiBWYWxpZGF0ZSBBTFUgaW1tZWRpYXRlIHJhbmdlICovXFxuLWJvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0pXFxuK2Jvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0sIHMxNiBvZmYpXFxuIHtcXG4gXFx0c3dpdGNoIChCUEZfT1Aob3ApKSB7XFxuIFxcdGNhc2UgQlBGX05FRzpcXG5AQCAtMjM3LDYgKzIzNyw5IEBAIGJvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0pXFxuIFxcdFxcdHJldHVybiBpbW0gPT0gMCB8fCAoaW1tIFxcdTAwM2UgMCBcXHUwMDI2XFx1MDAyNiBpc19wb3dlcl9vZl8yKGltbSkpO1xcbiBcXHRjYXNlIEJQRl9ESVY6XFxuIFxcdGNhc2UgQlBGX01PRDpcXG4rXFx0XFx0LyogRG8gbm90IHVzZSB1bnNpZ25lZCBzaGlmdC9tYXNrIHJld3JpdGVzIGZvciBzaWduZWQgZGl2L21vZC4gKi9cXG4rXFx0XFx0aWYgKG9mZiA9PSAxKVxcbitcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcdFxcdC8qIGltbSBtdXN0IGJlIGFuIDE3LWJpdCBwb3dlciBvZiB0d28gKi9cXG4gXFx0XFx0cmV0dXJuICh1MzIpaW1tIFxcdTAwM2M9IDB4MTAwMDAgXFx1MDAyNlxcdTAwMjYgaXNfcG93ZXJfb2ZfMigodTMyKWltbSk7XFxuIFxcdH1cXG5AQCAtMzM4LDggKzM0MSw0MiBAQCB2b2lkIGVtaXRfYWx1X2koc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApXFxuIFxcdGNsb2JiZXJfcmVnKGN0eCwgZHN0KTtcXG4gfVxcbiBcXG4rLyogQUxVIGRpdmlzaW9uIG9wZXJhdGlvbiAoMzItYml0KSAqL1xcbitzdGF0aWMgdm9pZCBlbWl0X2RpdihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHMxNiBvZmYpXFxuK3tcXG4rXFx0aWYgKGNwdV9oYXNfbWlwczMycjYpIHtcXG4rXFx0XFx0aWYgKG9mZiA9PSAxKVxcbitcXHRcXHRcXHRlbWl0KGN0eCwgZGl2X3I2LCBkc3QsIGRzdCwgc3JjKTtcXG4rXFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRlbWl0KGN0eCwgZGl2dV9yNiwgZHN0LCBkc3QsIHNyYyk7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdGlmIChvZmYgPT0gMSlcXG4rXFx0XFx0XFx0ZW1pdChjdHgsIGRpdiwgZHN0LCBzcmMpO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdGVtaXQoY3R4LCBkaXZ1LCBkc3QsIHNyYyk7XFxuK1xcdFxcdGVtaXQoY3R4LCBtZmxvLCBkc3QpO1xcbitcXHR9XFxuK31cXG4rXFxuKy8qIEFMVSBtb2R1bG8gb3BlcmF0aW9uICgzMi1iaXQpICovXFxuK3N0YXRpYyB2b2lkIGVtaXRfbW9kKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZilcXG4re1xcbitcXHRpZiAoY3B1X2hhc19taXBzMzJyNikge1xcbitcXHRcXHRpZiAob2ZmID09IDEpXFxuK1xcdFxcdFxcdGVtaXQoY3R4LCBtb2QsIGRzdCwgZHN0LCBzcmMpO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdGVtaXQoY3R4LCBtb2R1LCBkc3QsIGRzdCwgc3JjKTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0aWYgKG9mZiA9PSAxKVxcbitcXHRcXHRcXHRlbWl0KGN0eCwgZGl2LCBkc3QsIHNyYyk7XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0ZW1pdChjdHgsIGRpdnUsIGRzdCwgc3JjKTtcXG4rXFx0XFx0ZW1pdChjdHgsIG1maGksIGRzdCk7XFxuK1xcdH1cXG4rfVxcbitcXG4gLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoMzItYml0KSAqL1xcbi12b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcClcXG4rdm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3AsIHMxNiBvZmYpXFxuIHtcXG4gXFx0c3dpdGNoIChCUEZfT1Aob3ApKSB7XFxuIFxcdC8qIGRzdCA9IGRzdCBcXHUwMDI2IHNyYyAqL1xcbkBAIC0zODUsMjEgKzQyMiwxMSBAQCB2b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcClcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdC8qIGRzdCA9IGRzdCAvIHNyYyAqL1xcbiBcXHRjYXNlIEJQRl9ESVY6XFxuLVxcdFxcdGlmIChjcHVfaGFzX21pcHMzMnI2KSB7XFxuLVxcdFxcdFxcdGVtaXQoY3R4LCBkaXZ1X3I2LCBkc3QsIGRzdCwgc3JjKTtcXG4tXFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0ZW1pdChjdHgsIGRpdnUsIGRzdCwgc3JjKTtcXG4tXFx0XFx0XFx0ZW1pdChjdHgsIG1mbG8sIGRzdCk7XFxuLVxcdFxcdH1cXG4rXFx0XFx0ZW1pdF9kaXYoY3R4LCBkc3QsIHNyYywgb2ZmKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdC8qIGRzdCA9IGRzdCAlIHNyYyAqL1xcbiBcXHRjYXNlIEJQRl9NT0Q6XFxuLVxcdFxcdGlmIChjcHVfaGFzX21pcHMzMnI2KSB7XFxuLVxcdFxcdFxcdGVtaXQoY3R4LCBtb2R1LCBkc3QsIGRzdCwgc3JjKTtcXG4tXFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0ZW1pdChjdHgsIGRpdnUsIGRzdCwgc3JjKTtcXG4tXFx0XFx0XFx0ZW1pdChjdHgsIG1maGksIGRzdCk7XFxuLVxcdFxcdH1cXG4rXFx0XFx0ZW1pdF9tb2QoY3R4LCBkc3QsIHNyYywgb2ZmKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdH1cXG4gXFx0Y2xvYmJlcl9yZWcoY3R4LCBkc3QpO1xcbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaFxcbmluZGV4IGEzN2ZlMjA4MThlYjkuLjBkZGVkYjczM2RkMTkgMTAwNjQ0XFxuLS0tIGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaFxcbisrKyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmhcXG5AQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgZW1pdF9tb3ZfaShzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCBzMzIgaW1tKTtcXG4gdm9pZCBlbWl0X21vdl9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYyk7XFxuIFxcbiAvKiBWYWxpZGF0ZSBBTFUvQUxVNjQgaW1tZWRpYXRlIHJhbmdlICovXFxuLWJvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0pO1xcbitib29sIHZhbGlkX2FsdV9pKHU4IG9wLCBzMzIgaW1tLCBzMTYgb2ZmKTtcXG4gXFxuIC8qIFJld3JpdGUgQUxVL0FMVTY0IGltbWVkaWF0ZSBvcGVyYXRpb24gKi9cXG4gYm9vbCByZXdyaXRlX2FsdV9pKHU4IG9wLCBzMzIgaW1tLCB1OCAqYWx1LCBzMzIgKnZhbCk7XFxuQEAgLTE3Miw3ICsxNzIsNyBAQCBib29sIHJld3JpdGVfYWx1X2kodTggb3AsIHMzMiBpbW0sIHU4ICphbHUsIHMzMiAqdmFsKTtcXG4gdm9pZCBlbWl0X2FsdV9pKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHMzMiBpbW0sIHU4IG9wKTtcXG4gXFxuIC8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDMyLWJpdCkgKi9cXG4tdm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApO1xcbit2b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcCwgczE2IG9mZik7XFxuIFxcbiAvKiBBdG9taWMgcmVhZC1tb2RpZnktd3JpdGUgKDMyLWJpdCkgKi9cXG4gdm9pZCBlbWl0X2F0b21pY19yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZiwgdTggY29kZSk7XFxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY1xcbmluZGV4IDQwYTg3OGI2NzJmNWQuLjY2MTkxODJiNWVmMzMgMTAwNjQ0XFxuLS0tIGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jXFxuKysrIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jXFxuQEAgLTUxMiw3ICs1MTIsNyBAQCBzdGF0aWMgdm9pZCBlbWl0X211bF9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsXFxuIFxcdGNsb2JiZXJfcmVnNjQoY3R4LCBkc3QpO1xcbiB9XFxuIFxcbi0vKiBIZWxwZXIgZnVuY3Rpb24gZm9yIDY0LWJpdCBtb2R1bG8gKi9cXG4rLyogSGVscGVyIGZ1bmN0aW9uIGZvciB1bnNpZ25lZCA2NC1iaXQgbW9kdWxvICovXFxuIHN0YXRpYyB1NjQgaml0X21vZDY0KHU2NCBhLCB1NjQgYilcXG4ge1xcbiBcXHR1NjQgcmVtO1xcbkBAIC01MjEsMTMgKzUyMSwyMiBAQCBzdGF0aWMgdTY0IGppdF9tb2Q2NCh1NjQgYSwgdTY0IGIpXFxuIFxcdHJldHVybiByZW07XFxuIH1cXG4gXFxuKy8qIEhlbHBlciBmdW5jdGlvbiBmb3Igc2lnbmVkIDY0LWJpdCBtb2R1bG8gKi9cXG4rc3RhdGljIHM2NCBqaXRfc21vZDY0KHM2NCBhLCBzNjQgYilcXG4re1xcbitcXHRzNjQgcXVvdCA9IGRpdjY0X3M2NChhLCBiKTtcXG4rXFxuK1xcdHJldHVybiBhIC0gcXVvdCAqIGI7XFxuK31cXG4rXFxuIC8qIEFMVSBkaXYvbW9kIHJlZ2lzdGVyICg2NC1iaXQpICovXFxuLXN0YXRpYyB2b2lkIGVtaXRfZGl2bW9kX3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCxcXG4tXFx0XFx0XFx0ICAgIGNvbnN0IHU4IGRzdFtdLCBjb25zdCB1OCBzcmNbXSwgdTggb3ApXFxuK3N0YXRpYyB2b2lkIGVtaXRfZGl2bW9kX3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgY29uc3QgdTggZHN0W10sXFxuK1xcdFxcdFxcdCAgICBjb25zdCB1OCBzcmNbXSwgdTggb3AsIHMxNiBvZmYpXFxuIHtcXG4gXFx0Y29uc3QgdTggKnIwID0gYnBmMm1pcHMzMltCUEZfUkVHXzBdOyAvKiBNYXBwZWQgdG8gdjAtdjEgKi9cXG4gXFx0Y29uc3QgdTggKnIxID0gYnBmMm1pcHMzMltCUEZfUkVHXzFdOyAvKiBNYXBwZWQgdG8gYTAtYTEgKi9cXG4gXFx0Y29uc3QgdTggKnIyID0gYnBmMm1pcHMzMltCUEZfUkVHXzJdOyAvKiBNYXBwZWQgdG8gYTItYTMgKi9cXG4rXFx0Ym9vbCBpc19zaWduZWQgPSBvZmYgPT0gMTtcXG4gXFx0aW50IGV4Y2x1ZGUsIGs7XFxuIFxcdHUzMiBhZGRyID0gMDtcXG4gXFxuQEAgLTU0NiwxMSArNTU1LDExIEBAIHN0YXRpYyB2b2lkIGVtaXRfZGl2bW9kX3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCxcXG4gXFx0c3dpdGNoIChCUEZfT1Aob3ApKSB7XFxuIFxcdC8qIGRzdCA9IGRzdCAvIHNyYyAqL1xcbiBcXHRjYXNlIEJQRl9ESVY6XFxuLVxcdFxcdGFkZHIgPSAodTMyKVxcdTAwMjZkaXY2NF91NjQ7XFxuK1xcdFxcdGFkZHIgPSBpc19zaWduZWQgPyAodTMyKVxcdTAwMjZkaXY2NF9zNjQgOiAodTMyKVxcdTAwMjZkaXY2NF91NjQ7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHQvKiBkc3QgPSBkc3QgJSBzcmMgKi9cXG4gXFx0Y2FzZSBCUEZfTU9EOlxcbi1cXHRcXHRhZGRyID0gKHUzMilcXHUwMDI2aml0X21vZDY0O1xcbitcXHRcXHRhZGRyID0gaXNfc2lnbmVkID8gKHUzMilcXHUwMDI2aml0X3Ntb2Q2NCA6ICh1MzIpXFx1MDAyNmppdF9tb2Q2NDtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdH1cXG4gXFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UOSwgYWRkcik7XFxuQEAgLTE1MTYsOSArMTUyNSw5IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXFxuIFxcdGNhc2UgQlBGX0FMVSB8IEJQRl9NVUwgfCBCUEZfSzpcXG4gXFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0RJViB8IEJQRl9LOlxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX0s6XFxuLVxcdFxcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0pKSB7XFxuK1xcdFxcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIG9mZikpIHtcXG4gXFx0XFx0XFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNiwgaW1tKTtcXG4tXFx0XFx0XFx0ZW1pdF9hbHVfcihjdHgsIGxvKGRzdCksIE1JUFNfUl9UNiwgQlBGX09QKGNvZGUpKTtcXG4rXFx0XFx0XFx0ZW1pdF9hbHVfcihjdHgsIGxvKGRzdCksIE1JUFNfUl9UNiwgQlBGX09QKGNvZGUpLCBvZmYpO1xcbiBcXHRcXHR9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIFxcdTAwMjZhbHUsIFxcdTAwMjZ2YWwpKSB7XFxuIFxcdFxcdFxcdGVtaXRfYWx1X2koY3R4LCBsbyhkc3QpLCB2YWwsIGFsdSk7XFxuIFxcdFxcdH1cXG5AQCAtMTU0Niw3ICsxNTU1LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcXG4gXFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01VTCB8IEJQRl9YOlxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfRElWIHwgQlBGX1g6XFxuIFxcdGNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfWDpcXG4tXFx0XFx0ZW1pdF9hbHVfcihjdHgsIGxvKGRzdCksIGxvKHNyYyksIEJQRl9PUChjb2RlKSk7XFxuK1xcdFxcdGVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpLCBCUEZfT1AoY29kZSksIG9mZik7XFxuIFxcdFxcdGVtaXRfemV4dF92ZXIoY3R4LCBkc3QpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0LyogZHN0ID0gaW1tICg2NC1iaXQpICovXFxuQEAgLTE1OTksNyArMTYwOCw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXFxuIFxcdFxcdCAqIGFuZCB0aGVuIGRvIHRoZSBvcGVyYXRpb24gb24gdGhpcyByZWdpc3Rlci5cXG4gXFx0XFx0ICovXFxuIFxcdFxcdGVtaXRfbW92X3NlX2k2NChjdHgsIHRtcCwgaW1tKTtcXG4tXFx0XFx0ZW1pdF9kaXZtb2RfcjY0KGN0eCwgZHN0LCB0bXAsIEJQRl9PUChjb2RlKSk7XFxuK1xcdFxcdGVtaXRfZGl2bW9kX3I2NChjdHgsIGRzdCwgdG1wLCBCUEZfT1AoY29kZSksIG9mZik7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHQvKiBkc3QgPSBkc3QgXFx1MDAyNiBzcmMgKDY0LWJpdCkgKi9cXG4gXFx0LyogZHN0ID0gZHN0IHwgc3JjICg2NC1iaXQpICovXFxuQEAgLTE2MjksNyArMTYzOCw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXFxuIFxcdC8qIGRzdCA9IGRzdCAlIHNyYyAoNjQtYml0KSAqL1xcbiBcXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9ESVYgfCBCUEZfWDpcXG4gXFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTU9EIHwgQlBGX1g6XFxuLVxcdFxcdGVtaXRfZGl2bW9kX3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSkpO1xcbitcXHRcXHRlbWl0X2Rpdm1vZF9yNjQoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpLCBvZmYpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0LyogZHN0ID0gaHRvbGUoZHN0KSAqL1xcbiBcXHQvKiBkc3QgPSBodG9iZShkc3QpICovXFxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuY1xcbmluZGV4IGZhN2U5YWEzN2Y0OTguLmRiMDI3YzJkOTIyMTIgMTAwNjQ0XFxuLS0tIGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jXFxuKysrIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jXFxuQEAgLTE5Nyw4ICsxOTcsNDMgQEAgc3RhdGljIHZvaWQgZW1pdF9hbHVfaTY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHMzMiBpbW0sIHU4IG9wKVxcbiBcXHRjbG9iYmVyX3JlZyhjdHgsIGRzdCk7XFxuIH1cXG4gXFxuKy8qIEFMVSBkaXZpc2lvbiBvcGVyYXRpb24gKDY0LWJpdCkgKi9cXG4rc3RhdGljIHZvaWQgZW1pdF9kaXY2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHMxNiBvZmYpXFxuK3tcXG4rXFx0aWYgKGNwdV9oYXNfbWlwczY0cjYpIHtcXG4rXFx0XFx0aWYgKG9mZiA9PSAxKVxcbitcXHRcXHRcXHRlbWl0KGN0eCwgZGRpdl9yNiwgZHN0LCBkc3QsIHNyYyk7XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0ZW1pdChjdHgsIGRkaXZ1X3I2LCBkc3QsIGRzdCwgc3JjKTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0aWYgKG9mZiA9PSAxKVxcbitcXHRcXHRcXHRlbWl0KGN0eCwgZGRpdiwgZHN0LCBzcmMpO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdGVtaXQoY3R4LCBkZGl2dSwgZHN0LCBzcmMpO1xcbitcXHRcXHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcXG4rXFx0fVxcbit9XFxuK1xcbisvKiBBTFUgbW9kdWxvIG9wZXJhdGlvbiAoNjQtYml0KSAqL1xcbitzdGF0aWMgdm9pZCBlbWl0X21vZDY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZilcXG4re1xcbitcXHRpZiAoY3B1X2hhc19taXBzNjRyNikge1xcbitcXHRcXHRpZiAob2ZmID09IDEpXFxuK1xcdFxcdFxcdGVtaXQoY3R4LCBkbW9kLCBkc3QsIGRzdCwgc3JjKTtcXG4rXFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRlbWl0KGN0eCwgZG1vZHUsIGRzdCwgZHN0LCBzcmMpO1xcbitcXHR9IGVsc2Uge1xcbitcXHRcXHRpZiAob2ZmID09IDEpXFxuK1xcdFxcdFxcdGVtaXQoY3R4LCBkZGl2LCBkc3QsIHNyYyk7XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0ZW1pdChjdHgsIGRkaXZ1LCBkc3QsIHNyYyk7XFxuK1xcdFxcdGVtaXQoY3R4LCBtZmhpLCBkc3QpO1xcbitcXHR9XFxuK31cXG4rXFxuIC8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDY0LWJpdCkgKi9cXG4tc3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApXFxuK3N0YXRpYyB2b2lkIGVtaXRfYWx1X3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLFxcbitcXHRcXHRcXHQgczE2IG9mZilcXG4ge1xcbiBcXHRzd2l0Y2ggKEJQRl9PUChvcCkpIHtcXG4gXFx0LyogZHN0ID0gZHN0IFxcdTAwM2NcXHUwMDNjIHNyYyAqL1xcbkBAIC0yMzUsMjUgKzI3MCwxNSBAQCBzdGF0aWMgdm9pZCBlbWl0X2FsdV9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcClcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdC8qIGRzdCA9IGRzdCAvIHNyYyAqL1xcbiBcXHRjYXNlIEJQRl9ESVY6XFxuLVxcdFxcdGlmIChjcHVfaGFzX21pcHM2NHI2KSB7XFxuLVxcdFxcdFxcdGVtaXQoY3R4LCBkZGl2dV9yNiwgZHN0LCBkc3QsIHNyYyk7XFxuLVxcdFxcdH0gZWxzZSB7XFxuLVxcdFxcdFxcdGVtaXQoY3R4LCBkZGl2dSwgZHN0LCBzcmMpO1xcbi1cXHRcXHRcXHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcXG4tXFx0XFx0fVxcbitcXHRcXHRlbWl0X2RpdjY0KGN0eCwgZHN0LCBzcmMsIG9mZik7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHQvKiBkc3QgPSBkc3QgJSBzcmMgKi9cXG4gXFx0Y2FzZSBCUEZfTU9EOlxcbi1cXHRcXHRpZiAoY3B1X2hhc19taXBzNjRyNikge1xcbi1cXHRcXHRcXHRlbWl0KGN0eCwgZG1vZHUsIGRzdCwgZHN0LCBzcmMpO1xcbi1cXHRcXHR9IGVsc2Uge1xcbi1cXHRcXHRcXHRlbWl0KGN0eCwgZGRpdnUsIGRzdCwgc3JjKTtcXG4tXFx0XFx0XFx0ZW1pdChjdHgsIG1maGksIGRzdCk7XFxuLVxcdFxcdH1cXG4rXFx0XFx0ZW1pdF9tb2Q2NChjdHgsIGRzdCwgc3JjLCBvZmYpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0ZGVmYXVsdDpcXG4gXFx0XFx0LyogV2lkdGgtZ2VuZXJpYyBvcGVyYXRpb25zICovXFxuLVxcdFxcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIHNyYywgb3ApO1xcbitcXHRcXHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIG9wLCBvZmYpO1xcbiBcXHR9XFxuIFxcdGNsb2JiZXJfcmVnKGN0eCwgZHN0KTtcXG4gfVxcbkBAIC02NzQsOSArNjk5LDkgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcXG4gXFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0FORCB8IEJQRl9LOlxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfWE9SIHwgQlBGX0s6XFxuIFxcdGNhc2UgQlBGX0FMVSB8IEJQRl9MU0ggfCBCUEZfSzpcXG4tXFx0XFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSkpIHtcXG4rXFx0XFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgb2ZmKSkge1xcbiBcXHRcXHRcXHRlbWl0X21vdl9pKGN0eCwgTUlQU19SX1Q0LCBpbW0pO1xcbi1cXHRcXHRcXHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSk7XFxuK1xcdFxcdFxcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBvZmYpO1xcbiBcXHRcXHR9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIFxcdTAwMjZhbHUsIFxcdTAwMjZ2YWwpKSB7XFxuIFxcdFxcdFxcdGVtaXRfYWx1X2koY3R4LCBkc3QsIHZhbCwgYWx1KTtcXG4gXFx0XFx0fVxcbkBAIC02OTYsMTAgKzcyMSwxMCBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfTVVMIHwgQlBGX0s6XFxuIFxcdGNhc2UgQlBGX0FMVSB8IEJQRl9ESVYgfCBCUEZfSzpcXG4gXFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01PRCB8IEJQRl9LOlxcbi1cXHRcXHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkge1xcbitcXHRcXHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBvZmYpKSB7XFxuIFxcdFxcdFxcdGVtaXRfc2V4dChjdHgsIGRzdCwgZHN0KTtcXG4gXFx0XFx0XFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTtcXG4tXFx0XFx0XFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSkpO1xcbitcXHRcXHRcXHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSwgb2ZmKTtcXG4gXFx0XFx0fSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBcXHUwMDI2YWx1LCBcXHUwMDI2dmFsKSkge1xcbiBcXHRcXHRcXHRlbWl0X3NleHQoY3R4LCBkc3QsIGRzdCk7XFxuIFxcdFxcdFxcdGVtaXRfYWx1X2koY3R4LCBkc3QsIHZhbCwgYWx1KTtcXG5AQCAtNzE0LDcgKzczOSw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXFxuIFxcdGNhc2UgQlBGX0FMVSB8IEJQRl9PUiB8IEJQRl9YOlxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfWE9SIHwgQlBGX1g6XFxuIFxcdGNhc2UgQlBGX0FMVSB8IEJQRl9MU0ggfCBCUEZfWDpcXG4tXFx0XFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSkpO1xcbitcXHRcXHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSwgb2ZmKTtcXG4gXFx0XFx0ZW1pdF96ZXh0X3ZlcihjdHgsIGRzdCk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHQvKiBkc3QgPSBkc3QgXFx1MDAzZVxcdTAwM2Ugc3JjICovXFxuQEAgLTczMyw3ICs3NTgsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX1g6XFxuIFxcdFxcdGVtaXRfc2V4dChjdHgsIGRzdCwgZHN0KTtcXG4gXFx0XFx0ZW1pdF9zZXh0KGN0eCwgTUlQU19SX1Q0LCBzcmMpO1xcbi1cXHRcXHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSk7XFxuK1xcdFxcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBvZmYpO1xcbiBcXHRcXHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdC8qIGRzdCA9IGltbSAoNjQtYml0KSAqL1xcbkBAIC03NzAsOSArNzk1LDkgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcXG4gXFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTVVMIHwgQlBGX0s6XFxuIFxcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX0RJViB8IEJQRl9LOlxcbiBcXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NT0QgfCBCUEZfSzpcXG4tXFx0XFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSkpIHtcXG4rXFx0XFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgb2ZmKSkge1xcbiBcXHRcXHRcXHRlbWl0X21vdl9pKGN0eCwgTUlQU19SX1Q0LCBpbW0pO1xcbi1cXHRcXHRcXHRlbWl0X2FsdV9yNjQoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTtcXG4rXFx0XFx0XFx0ZW1pdF9hbHVfcjY0KGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSwgb2ZmKTtcXG4gXFx0XFx0fSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBcXHUwMDI2YWx1LCBcXHUwMDI2dmFsKSkge1xcbiBcXHRcXHRcXHRlbWl0X2FsdV9pNjQoY3R4LCBkc3QsIHZhbCwgYWx1KTtcXG4gXFx0XFx0fVxcbkBAIC03OTksNyArODI0LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcXG4gXFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTVVMIHwgQlBGX1g6XFxuIFxcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX0RJViB8IEJQRl9YOlxcbiBcXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NT0QgfCBCUEZfWDpcXG4tXFx0XFx0ZW1pdF9hbHVfcjY0KGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSk7XFxuK1xcdFxcdGVtaXRfYWx1X3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSksIG9mZik7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHQvKiBkc3QgPSBodG9sZShkc3QpICovXFxuIFxcdC8qIGRzdCA9IGh0b2JlKGRzdCkgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMjI6MjA6NDQuNTE4OTg0MjczWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoyMDc3NzMxOTYxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgTUlQUyBtaWNyby1hc3NlbWJsZXIgcm91dGluZXMgYW5kIE1JUFMgQlBGIEpJVCBjb21waWxlciBpbXBsZW1lbnRhdGlvbnMgKHVuZGVyIGFyY2gvbWlwcy8pLiBCZWNhdXNlIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCB0aGVzZSBjb2RlIHBhdGhzIGFyZSBleGNsdXNpdmUgdG8gTUlQUyBhbmQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nIG9uIGFtZDY0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjZjZkNzQzZmJkNjViMmNjZGFlYjIzMjNhMTlmNjA3ZTE5ZDg4NmRjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgMTEgMjI6MjA6NDMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3Vhc20uaFxuaW5kZXggYjQzYmZkNDQ1MjUyMS4uYWRlYTM1ZGYwZjhkYyAxMDA2NDRcbi0tLSBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS91YXNtLmhcbisrKyBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS91YXNtLmhcbkBAIC04NSwxNSArODUsMjAgQEAgSXBfdTF1MihfY3RjMSk7XG4gSXBfdTJ1MShfY3RjbXNhKTtcbiBJcF91MnUxczMoX2RhZGRpdSk7XG4gSXBfdTN1MXUyKF9kYWRkdSk7XG4rSXBfdTF1MihfZGRpdik7XG4rSXBfdTN1MXUyKF9kZGl2X3I2KTtcbiBJcF91MXUyKF9kZGl2dSk7XG4gSXBfdTN1MXUyKF9kZGl2dV9yNik7XG4gSXBfdTEoX2RpKTtcbiBJcF91MnUxbXNidTMoX2RpbnMpO1xuIElwX3UydTFtc2J1MyhfZGluc20pO1xuIElwX3UydTFtc2J1MyhfZGluc3UpO1xuK0lwX3UxdTIoX2Rpdik7XG4rSXBfdTN1MXUyKF9kaXZfcjYpO1xuIElwX3UxdTIoX2RpdnUpO1xuIElwX3UzdTF1MihfZGl2dV9yNik7XG4gSXBfdTF1MnUzKF9kbWZjMCk7XG4rSXBfdTN1MXUyKF9kbW9kKTtcbiBJcF91M3UxdTIoX2Rtb2R1KTtcbiBJcF91MXUydTMoX2RtdGMwKTtcbiBJcF91MXUyKF9kbXVsdHUpO1xuQEAgLTEzNSw2ICsxNDAsNyBAQCBJcF91MXUydTMoX21mYzApO1xuIElwX3UxdTJ1MyhfbWZoYzApO1xuIElwX3UxKF9tZmhpKTtcbiBJcF91MShfbWZsbyk7XG4rSXBfdTN1MXUyKF9tb2QpO1xuIElwX3UzdTF1MihfbW9kdSk7XG4gSXBfdTN1MXUyKF9tb3ZuKTtcbiBJcF91M3UxdTIoX21vdnopO1xuQEAgLTE1Niw2ICsxNjIsOCBAQCBJcF91MnMzdTEoX3NiKTtcbiBJcF91MnMzdTEoX3NjKTtcbiBJcF91MnMzdTEoX3NjZCk7XG4gSXBfdTJzM3UxKF9zZCk7XG4rSXBfdTJ1MShfc2ViKTtcbitJcF91MnUxKF9zZWgpO1xuIElwX3UzdTF1Mihfc2VsZXF6KTtcbiBJcF91M3UxdTIoX3NlbG5leik7XG4gSXBfdTJzM3UxKF9zaCk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL21tL3Vhc20tbWlwcy5jIGIvYXJjaC9taXBzL21tL3Vhc20tbWlwcy5jXG5pbmRleCBlMTVjNjcwMGNkMDg4Li4yZDE2NjhiNThkZGRlIDEwMDY0NFxuLS0tIGEvYXJjaC9taXBzL21tL3Vhc20tbWlwcy5jXG4rKysgYi9hcmNoL21pcHMvbW0vdWFzbS1taXBzLmNcbkBAIC03NSw2ICs3NSw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW5zbiBpbnNuX3RhYmxlW2luc25faW52YWxpZF0gPSB7XG4gXHRbaW5zbl9jdGNtc2FdXHQ9IHtNKG1zYV9vcCwgMCwgbXNhX2N0Y19vcCwgMCwgMCwgbXNhX2VsbV9vcCksIFJEIHwgUkV9LFxuIFx0W2luc25fZGFkZGl1XVx0PSB7TShkYWRkaXVfb3AsIDAsIDAsIDAsIDAsIDApLCBSUyB8IFJUIHwgU0lNTX0sXG4gXHRbaW5zbl9kYWRkdV1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgZGFkZHVfb3ApLCBSUyB8IFJUIHwgUkR9LFxuK1x0W2luc25fZGRpdl1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgZGRpdl9vcCksIFJTIHwgUlR9LFxuK1x0W2luc25fZGRpdl9yNl1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGRpdl9kZGl2Nl9vcCwgZGRpdl9vcCksXG4rXHRcdFx0XHRSUyB8IFJUIHwgUkR9LFxuIFx0W2luc25fZGRpdnVdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRkaXZ1X29wKSwgUlMgfCBSVH0sXG4gXHRbaW5zbl9kZGl2dV9yNl1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGRpdnVfZGRpdnU2X29wLCBkZGl2dV9vcCksXG4gXHRcdFx0XHRSUyB8IFJUIHwgUkR9LFxuQEAgLTgyLDEwICs4NSwxNSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGluc24gaW5zbl90YWJsZVtpbnNuX2ludmFsaWRdID0ge1xuIFx0W2luc25fZGluc11cdD0ge00oc3BlYzNfb3AsIDAsIDAsIDAsIDAsIGRpbnNfb3ApLCBSUyB8IFJUIHwgUkQgfCBSRX0sXG4gXHRbaW5zbl9kaW5zbV1cdD0ge00oc3BlYzNfb3AsIDAsIDAsIDAsIDAsIGRpbnNtX29wKSwgUlMgfCBSVCB8IFJEIHwgUkV9LFxuIFx0W2luc25fZGluc3VdXHQ9IHtNKHNwZWMzX29wLCAwLCAwLCAwLCAwLCBkaW5zdV9vcCksIFJTIHwgUlQgfCBSRCB8IFJFfSxcbitcdFtpbnNuX2Rpdl1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgZGl2X29wKSwgUlMgfCBSVH0sXG4rXHRbaW5zbl9kaXZfcjZdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRpdl9kaXY2X29wLCBkaXZfb3ApLFxuK1x0XHRcdFx0UlMgfCBSVCB8IFJEfSxcbiBcdFtpbnNuX2RpdnVdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRpdnVfb3ApLCBSUyB8IFJUfSxcbiBcdFtpbnNuX2RpdnVfcjZdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRpdnVfZGl2dTZfb3AsIGRpdnVfb3ApLFxuIFx0XHRcdFx0UlMgfCBSVCB8IFJEfSxcbiBcdFtpbnNuX2RtZmMwXVx0PSB7TShjb3AwX29wLCBkbWZjX29wLCAwLCAwLCAwLCAwKSwgUlQgfCBSRCB8IFNFVH0sXG4rXHRbaW5zbl9kbW9kXVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkZGl2X2Rtb2Rfb3AsIGRkaXZfb3ApLFxuK1x0XHRcdFx0UlMgfCBSVCB8IFJEfSxcbiBcdFtpbnNuX2Rtb2R1XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkZGl2dV9kbW9kdV9vcCwgZGRpdnVfb3ApLFxuIFx0XHRcdFx0UlMgfCBSVCB8IFJEfSxcbiBcdFtpbnNuX2RtdGMwXVx0PSB7TShjb3AwX29wLCBkbXRjX29wLCAwLCAwLCAwLCAwKSwgUlQgfCBSRCB8IFNFVH0sXG5AQCAtMTQwLDYgKzE0OCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW5zbiBpbnNuX3RhYmxlW2luc25faW52YWxpZF0gPSB7XG4gXHRbaW5zbl9tZmhjMF1cdD0ge00oY29wMF9vcCwgbWZoYzBfb3AsIDAsIDAsIDAsIDApLCAgUlQgfCBSRCB8IFNFVH0sXG4gXHRbaW5zbl9tZmhpXVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBtZmhpX29wKSwgUkR9LFxuIFx0W2luc25fbWZsb11cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgbWZsb19vcCksIFJEfSxcbitcdFtpbnNuX21vZF1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGl2X21vZF9vcCwgZGl2X29wKSxcbitcdFx0XHRcdFJTIHwgUlQgfCBSRH0sXG4gXHRbaW5zbl9tb2R1XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkaXZ1X21vZHVfb3AsIGRpdnVfb3ApLFxuIFx0XHRcdFx0UlMgfCBSVCB8IFJEfSxcbiBcdFtpbnNuX21vdm5dXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIG1vdm5fb3ApLCBSUyB8IFJUIHwgUkR9LFxuQEAgLTE3Nyw2ICsxODcsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGluc24gaW5zbl90YWJsZVtpbnNuX2ludmFsaWRdID0ge1xuIFx0W2luc25fc2NkXVx0PSB7TTYoc3BlYzNfb3AsIDAsIDAsIDAsIHNjZDZfb3ApLCAgUlMgfCBSVCB8IFNJTU05fSxcbiAjZW5kaWZcbiBcdFtpbnNuX3NkXVx0PSB7TShzZF9vcCwgMCwgMCwgMCwgMCwgMCksICBSUyB8IFJUIHwgU0lNTX0sXG4rXHRbaW5zbl9zZWJdXHQ9IHtNKHNwZWMzX29wLCAwLCAwLCAwLCBzZWJfb3AsIGJzaGZsX29wKSwgUlQgfCBSRH0sXG4rXHRbaW5zbl9zZWhdXHQ9IHtNKHNwZWMzX29wLCAwLCAwLCAwLCBzZWhfb3AsIGJzaGZsX29wKSwgUlQgfCBSRH0sXG4gXHRbaW5zbl9zZWxlcXpdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIHNlbGVxel9vcCksIFJTIHwgUlQgfCBSRH0sXG4gXHRbaW5zbl9zZWxuZXpdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIHNlbG5lel9vcCksIFJTIHwgUlQgfCBSRH0sXG4gXHRbaW5zbl9zaF1cdD0ge00oc2hfb3AsIDAsIDAsIDAsIDAsIDApLCAgUlMgfCBSVCB8IFNJTU19LFxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9tbS91YXNtLmMgYi9hcmNoL21pcHMvbW0vdWFzbS5jXG5pbmRleCAxMjUxNDA5NzlkNjJjLi4xMzlhZmIwZTE0Y2RmIDEwMDY0NFxuLS0tIGEvYXJjaC9taXBzL21tL3Vhc20uY1xuKysrIGIvYXJjaC9taXBzL21tL3Vhc20uY1xuQEAgLTQ5LDE5ICs0OSwyMSBAQCBlbnVtIG9wY29kZSB7XG4gXHRpbnNuX2FkZGl1LCBpbnNuX2FkZHUsIGluc25fYW5kLCBpbnNuX2FuZGksIGluc25fYmJpdDAsIGluc25fYmJpdDEsXG4gXHRpbnNuX2JlcSwgaW5zbl9iZXFsLCBpbnNuX2JnZXosIGluc25fYmdlemwsIGluc25fYmd0eiwgaW5zbl9ibGV6LFxuIFx0aW5zbl9ibHR6LCBpbnNuX2JsdHpsLCBpbnNuX2JuZSwgaW5zbl9icmVhaywgaW5zbl9jYWNoZSwgaW5zbl9jZmMxLFxuLVx0aW5zbl9jZmNtc2EsIGluc25fY3RjMSwgaW5zbl9jdGNtc2EsIGluc25fZGFkZGl1LCBpbnNuX2RhZGR1LCBpbnNuX2RkaXZ1LFxuLVx0aW5zbl9kZGl2dV9yNiwgaW5zbl9kaSwgaW5zbl9kaW5zLCBpbnNuX2RpbnNtLCBpbnNuX2RpbnN1LCBpbnNuX2RpdnUsXG4tXHRpbnNuX2RpdnVfcjYsIGluc25fZG1mYzAsIGluc25fZG1vZHUsIGluc25fZG10YzAsIGluc25fZG11bHR1LFxuK1x0aW5zbl9jZmNtc2EsIGluc25fY3RjMSwgaW5zbl9jdGNtc2EsIGluc25fZGFkZGl1LCBpbnNuX2RhZGR1LCBpbnNuX2RkaXYsXG4rXHRpbnNuX2RkaXZfcjYsIGluc25fZGRpdnUsIGluc25fZGRpdnVfcjYsIGluc25fZGksIGluc25fZGlucywgaW5zbl9kaW5zbSxcbitcdGluc25fZGluc3UsIGluc25fZGl2LCBpbnNuX2Rpdl9yNiwgaW5zbl9kaXZ1LCBpbnNuX2RpdnVfcjYsIGluc25fZG1mYzAsXG4rXHRpbnNuX2Rtb2QsIGluc25fZG1vZHUsIGluc25fZG10YzAsIGluc25fZG11bHR1LFxuIFx0aW5zbl9kbXVsdSwgaW5zbl9kcm90ciwgaW5zbl9kcm90cjMyLCBpbnNuX2RzYmgsIGluc25fZHNoZCwgaW5zbl9kc2xsLFxuIFx0aW5zbl9kc2xsMzIsIGluc25fZHNsbHYsIGluc25fZHNyYSwgaW5zbl9kc3JhMzIsIGluc25fZHNyYXYsIGluc25fZHNybCxcbiBcdGluc25fZHNybDMyLCBpbnNuX2Rzcmx2LCBpbnNuX2RzdWJ1LCBpbnNuX2VyZXQsIGluc25fZXh0LCBpbnNuX2lucyxcbiBcdGluc25faiwgaW5zbl9qYWwsIGluc25famFsciwgaW5zbl9qciwgaW5zbl9sYiwgaW5zbl9sYnUsIGluc25fbGQsXG4gXHRpbnNuX2xkZGlyLCBpbnNuX2xkcHRlLCBpbnNuX2xkeCwgaW5zbl9saCwgaW5zbl9saHUsIGluc25fbGwsIGluc25fbGxkLFxuIFx0aW5zbl9sdWksIGluc25fbHcsIGluc25fbHd1LCBpbnNuX2x3eCwgaW5zbl9tZmMwLCBpbnNuX21maGMwLCBpbnNuX21maGksXG4tXHRpbnNuX21mbG8sIGluc25fbW9kdSwgaW5zbl9tb3ZuLCBpbnNuX21vdnosIGluc25fbXRjMCwgaW5zbl9tdGhjMCxcbi1cdGluc25fbXRoaSwgaW5zbl9tdGxvLCBpbnNuX211bCwgaW5zbl9tdWx0dSwgaW5zbl9tdWx1LCBpbnNuX211aHUsIGluc25fbm9yLFxuLVx0aW5zbl9vciwgaW5zbl9vcmksIGluc25fcHJlZiwgaW5zbl9yZmUsIGluc25fcm90ciwgaW5zbl9zYiwgaW5zbl9zYyxcbi1cdGluc25fc2NkLCBpbnNuX3NlbGVxeiwgaW5zbl9zZWxuZXosIGluc25fc2QsIGluc25fc2gsIGluc25fc2xsLFxuK1x0aW5zbl9tZmxvLCBpbnNuX21vZCwgaW5zbl9tb2R1LCBpbnNuX21vdm4sIGluc25fbW92eiwgaW5zbl9tdGMwLFxuK1x0aW5zbl9tdGhjMCwgaW5zbl9tdGhpLCBpbnNuX210bG8sIGluc25fbXVsLCBpbnNuX211bHR1LCBpbnNuX211bHUsXG4rXHRpbnNuX211aHUsIGluc25fbm9yLCBpbnNuX29yLCBpbnNuX29yaSwgaW5zbl9wcmVmLCBpbnNuX3JmZSwgaW5zbl9yb3RyLFxuK1x0aW5zbl9zYiwgaW5zbl9zYywgaW5zbl9zY2QsIGluc25fc2ViLCBpbnNuX3NlaCxcbitcdGluc25fc2VsZXF6LCBpbnNuX3NlbG5leiwgaW5zbl9zZCwgaW5zbl9zaCwgaW5zbl9zbGwsXG4gXHRpbnNuX3NsbHYsIGluc25fc2x0LCBpbnNuX3NsdGksIGluc25fc2x0aXUsIGluc25fc2x0dSwgaW5zbl9zcmEsXG4gXHRpbnNuX3NyYXYsIGluc25fc3JsLCBpbnNuX3NybHYsIGluc25fc3VidSwgaW5zbl9zdywgaW5zbl9zeW5jLFxuIFx0aW5zbl9zeXNjYWxsLCBpbnNuX3RsYnAsIGluc25fdGxiciwgaW5zbl90bGJ3aSwgaW5zbl90bGJ3ciwgaW5zbl93YWl0LFxuQEAgLTI4Nyw5ICsyODksMTIgQEAgSV91MXUyKF9jZmMxKVxuIElfdTJ1MShfY2ZjbXNhKVxuIElfdTF1MihfY3RjMSlcbiBJX3UydTEoX2N0Y21zYSlcbitJX3UxdTIoX2RkaXYpXG4rSV91M3UxdTIoX2RkaXZfcjYpXG4gSV91MXUyKF9kZGl2dSlcbiBJX3UzdTF1MihfZGRpdnVfcjYpXG4gSV91MXUydTMoX2RtZmMwKVxuK0lfdTN1MXUyKF9kbW9kKVxuIElfdTN1MXUyKF9kbW9kdSlcbiBJX3UxdTJ1MyhfZG10YzApXG4gSV91MXUyKF9kbXVsdHUpXG5AQCAtMjk3LDYgKzMwMiw4IEBAIElfdTN1MXUyKF9kbXVsdSlcbiBJX3UydTFzMyhfZGFkZGl1KVxuIElfdTN1MXUyKF9kYWRkdSlcbiBJX3UxKF9kaSk7XG4rSV91MXUyKF9kaXYpXG4rSV91M3UxdTIoX2Rpdl9yNilcbiBJX3UxdTIoX2RpdnUpXG4gSV91M3UxdTIoX2RpdnVfcjYpXG4gSV91MnUxKF9kc2JoKTtcbkBAIC0zMzIsNiArMzM5LDcgQEAgSV91MnMzdTEoX2x3KVxuIElfdTJzM3UxKF9sd3UpXG4gSV91MXUydTMoX21mYzApXG4gSV91MXUydTMoX21maGMwKVxuK0lfdTN1MXUyKF9tb2QpXG4gSV91M3UxdTIoX21vZHUpXG4gSV91M3UxdTIoX21vdm4pXG4gSV91M3UxdTIoX21vdnopXG5AQCAtMzUzLDYgKzM2MSw4IEBAIElfdTJzM3UxKF9zYilcbiBJX3UyczN1MShfc2MpXG4gSV91MnMzdTEoX3NjZClcbiBJX3UyczN1MShfc2QpXG4rSV91MnUxKF9zZWIpXG4rSV91MnUxKF9zZWgpXG4gSV91M3UxdTIoX3NlbGVxeilcbiBJX3UzdTF1Mihfc2VsbmV6KVxuIElfdTJzM3UxKF9zaClcbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuY1xuaW5kZXggNmVlNGFiZTZhMWY3MC4uZjE0ZGU2ZDczMTIyMSAxMDA2NDRcbi0tLSBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmNcbisrKyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmNcbkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBlbWl0X21vdl9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYylcbiB9XG4gXG4gLyogVmFsaWRhdGUgQUxVIGltbWVkaWF0ZSByYW5nZSAqL1xuLWJvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0pXG4rYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSwgczE2IG9mZilcbiB7XG4gXHRzd2l0Y2ggKEJQRl9PUChvcCkpIHtcbiBcdGNhc2UgQlBGX05FRzpcbkBAIC0yMzcsNiArMjM3LDkgQEAgYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSlcbiBcdFx0cmV0dXJuIGltbSA9PSAwIHx8IChpbW0gXHUwMDNlIDAgXHUwMDI2XHUwMDI2IGlzX3Bvd2VyX29mXzIoaW1tKSk7XG4gXHRjYXNlIEJQRl9ESVY6XG4gXHRjYXNlIEJQRl9NT0Q6XG4rXHRcdC8qIERvIG5vdCB1c2UgdW5zaWduZWQgc2hpZnQvbWFzayByZXdyaXRlcyBmb3Igc2lnbmVkIGRpdi9tb2QuICovXG4rXHRcdGlmIChvZmYgPT0gMSlcbitcdFx0XHRyZXR1cm4gZmFsc2U7XG4gXHRcdC8qIGltbSBtdXN0IGJlIGFuIDE3LWJpdCBwb3dlciBvZiB0d28gKi9cbiBcdFx0cmV0dXJuICh1MzIpaW1tIFx1MDAzYz0gMHgxMDAwMCBcdTAwMjZcdTAwMjYgaXNfcG93ZXJfb2ZfMigodTMyKWltbSk7XG4gXHR9XG5AQCAtMzM4LDggKzM0MSw0MiBAQCB2b2lkIGVtaXRfYWx1X2koc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApXG4gXHRjbG9iYmVyX3JlZyhjdHgsIGRzdCk7XG4gfVxuIFxuKy8qIEFMVSBkaXZpc2lvbiBvcGVyYXRpb24gKDMyLWJpdCkgKi9cbitzdGF0aWMgdm9pZCBlbWl0X2RpdihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHMxNiBvZmYpXG4re1xuK1x0aWYgKGNwdV9oYXNfbWlwczMycjYpIHtcbitcdFx0aWYgKG9mZiA9PSAxKVxuK1x0XHRcdGVtaXQoY3R4LCBkaXZfcjYsIGRzdCwgZHN0LCBzcmMpO1xuK1x0XHRlbHNlXG4rXHRcdFx0ZW1pdChjdHgsIGRpdnVfcjYsIGRzdCwgZHN0LCBzcmMpO1xuK1x0fSBlbHNlIHtcbitcdFx0aWYgKG9mZiA9PSAxKVxuK1x0XHRcdGVtaXQoY3R4LCBkaXYsIGRzdCwgc3JjKTtcbitcdFx0ZWxzZVxuK1x0XHRcdGVtaXQoY3R4LCBkaXZ1LCBkc3QsIHNyYyk7XG4rXHRcdGVtaXQoY3R4LCBtZmxvLCBkc3QpO1xuK1x0fVxuK31cbitcbisvKiBBTFUgbW9kdWxvIG9wZXJhdGlvbiAoMzItYml0KSAqL1xuK3N0YXRpYyB2b2lkIGVtaXRfbW9kKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZilcbit7XG4rXHRpZiAoY3B1X2hhc19taXBzMzJyNikge1xuK1x0XHRpZiAob2ZmID09IDEpXG4rXHRcdFx0ZW1pdChjdHgsIG1vZCwgZHN0LCBkc3QsIHNyYyk7XG4rXHRcdGVsc2VcbitcdFx0XHRlbWl0KGN0eCwgbW9kdSwgZHN0LCBkc3QsIHNyYyk7XG4rXHR9IGVsc2Uge1xuK1x0XHRpZiAob2ZmID09IDEpXG4rXHRcdFx0ZW1pdChjdHgsIGRpdiwgZHN0LCBzcmMpO1xuK1x0XHRlbHNlXG4rXHRcdFx0ZW1pdChjdHgsIGRpdnUsIGRzdCwgc3JjKTtcbitcdFx0ZW1pdChjdHgsIG1maGksIGRzdCk7XG4rXHR9XG4rfVxuK1xuIC8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDMyLWJpdCkgKi9cbi12b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcClcbit2b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcCwgczE2IG9mZilcbiB7XG4gXHRzd2l0Y2ggKEJQRl9PUChvcCkpIHtcbiBcdC8qIGRzdCA9IGRzdCBcdTAwMjYgc3JjICovXG5AQCAtMzg1LDIxICs0MjIsMTEgQEAgdm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApXG4gXHRcdGJyZWFrO1xuIFx0LyogZHN0ID0gZHN0IC8gc3JjICovXG4gXHRjYXNlIEJQRl9ESVY6XG4tXHRcdGlmIChjcHVfaGFzX21pcHMzMnI2KSB7XG4tXHRcdFx0ZW1pdChjdHgsIGRpdnVfcjYsIGRzdCwgZHN0LCBzcmMpO1xuLVx0XHR9IGVsc2Uge1xuLVx0XHRcdGVtaXQoY3R4LCBkaXZ1LCBkc3QsIHNyYyk7XG4tXHRcdFx0ZW1pdChjdHgsIG1mbG8sIGRzdCk7XG4tXHRcdH1cbitcdFx0ZW1pdF9kaXYoY3R4LCBkc3QsIHNyYywgb2ZmKTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBkc3QgJSBzcmMgKi9cbiBcdGNhc2UgQlBGX01PRDpcbi1cdFx0aWYgKGNwdV9oYXNfbWlwczMycjYpIHtcbi1cdFx0XHRlbWl0KGN0eCwgbW9kdSwgZHN0LCBkc3QsIHNyYyk7XG4tXHRcdH0gZWxzZSB7XG4tXHRcdFx0ZW1pdChjdHgsIGRpdnUsIGRzdCwgc3JjKTtcbi1cdFx0XHRlbWl0KGN0eCwgbWZoaSwgZHN0KTtcbi1cdFx0fVxuK1x0XHRlbWl0X21vZChjdHgsIGRzdCwgc3JjLCBvZmYpO1xuIFx0XHRicmVhaztcbiBcdH1cbiBcdGNsb2JiZXJfcmVnKGN0eCwgZHN0KTtcbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaFxuaW5kZXggYTM3ZmUyMDgxOGViOS4uMGRkZWRiNzMzZGQxOSAxMDA2NDRcbi0tLSBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmhcbisrKyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmhcbkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBlbWl0X21vdl9pKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHMzMiBpbW0pO1xuIHZvaWQgZW1pdF9tb3ZfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMpO1xuIFxuIC8qIFZhbGlkYXRlIEFMVS9BTFU2NCBpbW1lZGlhdGUgcmFuZ2UgKi9cbi1ib29sIHZhbGlkX2FsdV9pKHU4IG9wLCBzMzIgaW1tKTtcbitib29sIHZhbGlkX2FsdV9pKHU4IG9wLCBzMzIgaW1tLCBzMTYgb2ZmKTtcbiBcbiAvKiBSZXdyaXRlIEFMVS9BTFU2NCBpbW1lZGlhdGUgb3BlcmF0aW9uICovXG4gYm9vbCByZXdyaXRlX2FsdV9pKHU4IG9wLCBzMzIgaW1tLCB1OCAqYWx1LCBzMzIgKnZhbCk7XG5AQCAtMTcyLDcgKzE3Miw3IEBAIGJvb2wgcmV3cml0ZV9hbHVfaSh1OCBvcCwgczMyIGltbSwgdTggKmFsdSwgczMyICp2YWwpO1xuIHZvaWQgZW1pdF9hbHVfaShzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCBzMzIgaW1tLCB1OCBvcCk7XG4gXG4gLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoMzItYml0KSAqL1xuLXZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wKTtcbit2b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcCwgczE2IG9mZik7XG4gXG4gLyogQXRvbWljIHJlYWQtbW9kaWZ5LXdyaXRlICgzMi1iaXQpICovXG4gdm9pZCBlbWl0X2F0b21pY19yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZiwgdTggY29kZSk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jXG5pbmRleCA0MGE4NzhiNjcyZjVkLi42NjE5MTgyYjVlZjMzIDEwMDY0NFxuLS0tIGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jXG4rKysgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNcbkBAIC01MTIsNyArNTEyLDcgQEAgc3RhdGljIHZvaWQgZW1pdF9tdWxfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LFxuIFx0Y2xvYmJlcl9yZWc2NChjdHgsIGRzdCk7XG4gfVxuIFxuLS8qIEhlbHBlciBmdW5jdGlvbiBmb3IgNjQtYml0IG1vZHVsbyAqL1xuKy8qIEhlbHBlciBmdW5jdGlvbiBmb3IgdW5zaWduZWQgNjQtYml0IG1vZHVsbyAqL1xuIHN0YXRpYyB1NjQgaml0X21vZDY0KHU2NCBhLCB1NjQgYilcbiB7XG4gXHR1NjQgcmVtO1xuQEAgLTUyMSwxMyArNTIxLDIyIEBAIHN0YXRpYyB1NjQgaml0X21vZDY0KHU2NCBhLCB1NjQgYilcbiBcdHJldHVybiByZW07XG4gfVxuIFxuKy8qIEhlbHBlciBmdW5jdGlvbiBmb3Igc2lnbmVkIDY0LWJpdCBtb2R1bG8gKi9cbitzdGF0aWMgczY0IGppdF9zbW9kNjQoczY0IGEsIHM2NCBiKVxuK3tcbitcdHM2NCBxdW90ID0gZGl2NjRfczY0KGEsIGIpO1xuK1xuK1x0cmV0dXJuIGEgLSBxdW90ICogYjtcbit9XG4rXG4gLyogQUxVIGRpdi9tb2QgcmVnaXN0ZXIgKDY0LWJpdCkgKi9cbi1zdGF0aWMgdm9pZCBlbWl0X2Rpdm1vZF9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsXG4tXHRcdFx0ICAgIGNvbnN0IHU4IGRzdFtdLCBjb25zdCB1OCBzcmNbXSwgdTggb3ApXG4rc3RhdGljIHZvaWQgZW1pdF9kaXZtb2RfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCBjb25zdCB1OCBkc3RbXSxcbitcdFx0XHQgICAgY29uc3QgdTggc3JjW10sIHU4IG9wLCBzMTYgb2ZmKVxuIHtcbiBcdGNvbnN0IHU4ICpyMCA9IGJwZjJtaXBzMzJbQlBGX1JFR18wXTsgLyogTWFwcGVkIHRvIHYwLXYxICovXG4gXHRjb25zdCB1OCAqcjEgPSBicGYybWlwczMyW0JQRl9SRUdfMV07IC8qIE1hcHBlZCB0byBhMC1hMSAqL1xuIFx0Y29uc3QgdTggKnIyID0gYnBmMm1pcHMzMltCUEZfUkVHXzJdOyAvKiBNYXBwZWQgdG8gYTItYTMgKi9cbitcdGJvb2wgaXNfc2lnbmVkID0gb2ZmID09IDE7XG4gXHRpbnQgZXhjbHVkZSwgaztcbiBcdHUzMiBhZGRyID0gMDtcbiBcbkBAIC01NDYsMTEgKzU1NSwxMSBAQCBzdGF0aWMgdm9pZCBlbWl0X2Rpdm1vZF9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsXG4gXHRzd2l0Y2ggKEJQRl9PUChvcCkpIHtcbiBcdC8qIGRzdCA9IGRzdCAvIHNyYyAqL1xuIFx0Y2FzZSBCUEZfRElWOlxuLVx0XHRhZGRyID0gKHUzMilcdTAwMjZkaXY2NF91NjQ7XG4rXHRcdGFkZHIgPSBpc19zaWduZWQgPyAodTMyKVx1MDAyNmRpdjY0X3M2NCA6ICh1MzIpXHUwMDI2ZGl2NjRfdTY0O1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGRzdCAlIHNyYyAqL1xuIFx0Y2FzZSBCUEZfTU9EOlxuLVx0XHRhZGRyID0gKHUzMilcdTAwMjZqaXRfbW9kNjQ7XG4rXHRcdGFkZHIgPSBpc19zaWduZWQgPyAodTMyKVx1MDAyNmppdF9zbW9kNjQgOiAodTMyKVx1MDAyNmppdF9tb2Q2NDtcbiBcdFx0YnJlYWs7XG4gXHR9XG4gXHRlbWl0X21vdl9pKGN0eCwgTUlQU19SX1Q5LCBhZGRyKTtcbkBAIC0xNTE2LDkgKzE1MjUsOSBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01VTCB8IEJQRl9LOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0RJViB8IEJQRl9LOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01PRCB8IEJQRl9LOlxuLVx0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkge1xuK1x0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBvZmYpKSB7XG4gXHRcdFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNiwgaW1tKTtcbi1cdFx0XHRlbWl0X2FsdV9yKGN0eCwgbG8oZHN0KSwgTUlQU19SX1Q2LCBCUEZfT1AoY29kZSkpO1xuK1x0XHRcdGVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBNSVBTX1JfVDYsIEJQRl9PUChjb2RlKSwgb2ZmKTtcbiBcdFx0fSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBcdTAwMjZhbHUsIFx1MDAyNnZhbCkpIHtcbiBcdFx0XHRlbWl0X2FsdV9pKGN0eCwgbG8oZHN0KSwgdmFsLCBhbHUpO1xuIFx0XHR9XG5AQCAtMTU0Niw3ICsxNTU1LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9NVUwgfCBCUEZfWDpcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9ESVYgfCBCUEZfWDpcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfWDpcbi1cdFx0ZW1pdF9hbHVfcihjdHgsIGxvKGRzdCksIGxvKHNyYyksIEJQRl9PUChjb2RlKSk7XG4rXHRcdGVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpLCBCUEZfT1AoY29kZSksIG9mZik7XG4gXHRcdGVtaXRfemV4dF92ZXIoY3R4LCBkc3QpO1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGltbSAoNjQtYml0KSAqL1xuQEAgLTE1OTksNyArMTYwOCw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRcdCAqIGFuZCB0aGVuIGRvIHRoZSBvcGVyYXRpb24gb24gdGhpcyByZWdpc3Rlci5cbiBcdFx0ICovXG4gXHRcdGVtaXRfbW92X3NlX2k2NChjdHgsIHRtcCwgaW1tKTtcbi1cdFx0ZW1pdF9kaXZtb2RfcjY0KGN0eCwgZHN0LCB0bXAsIEJQRl9PUChjb2RlKSk7XG4rXHRcdGVtaXRfZGl2bW9kX3I2NChjdHgsIGRzdCwgdG1wLCBCUEZfT1AoY29kZSksIG9mZik7XG4gXHRcdGJyZWFrO1xuIFx0LyogZHN0ID0gZHN0IFx1MDAyNiBzcmMgKDY0LWJpdCkgKi9cbiBcdC8qIGRzdCA9IGRzdCB8IHNyYyAoNjQtYml0KSAqL1xuQEAgLTE2MjksNyArMTYzOCw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHQvKiBkc3QgPSBkc3QgJSBzcmMgKDY0LWJpdCkgKi9cbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX0RJViB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTU9EIHwgQlBGX1g6XG4tXHRcdGVtaXRfZGl2bW9kX3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSkpO1xuK1x0XHRlbWl0X2Rpdm1vZF9yNjQoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpLCBvZmYpO1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGh0b2xlKGRzdCkgKi9cbiBcdC8qIGRzdCA9IGh0b2JlKGRzdCkgKi9cbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNcbmluZGV4IGZhN2U5YWEzN2Y0OTguLmRiMDI3YzJkOTIyMTIgMTAwNjQ0XG4tLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNcbisrKyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuY1xuQEAgLTE5Nyw4ICsxOTcsNDMgQEAgc3RhdGljIHZvaWQgZW1pdF9hbHVfaTY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHMzMiBpbW0sIHU4IG9wKVxuIFx0Y2xvYmJlcl9yZWcoY3R4LCBkc3QpO1xuIH1cbiBcbisvKiBBTFUgZGl2aXNpb24gb3BlcmF0aW9uICg2NC1iaXQpICovXG4rc3RhdGljIHZvaWQgZW1pdF9kaXY2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHMxNiBvZmYpXG4re1xuK1x0aWYgKGNwdV9oYXNfbWlwczY0cjYpIHtcbitcdFx0aWYgKG9mZiA9PSAxKVxuK1x0XHRcdGVtaXQoY3R4LCBkZGl2X3I2LCBkc3QsIGRzdCwgc3JjKTtcbitcdFx0ZWxzZVxuK1x0XHRcdGVtaXQoY3R4LCBkZGl2dV9yNiwgZHN0LCBkc3QsIHNyYyk7XG4rXHR9IGVsc2Uge1xuK1x0XHRpZiAob2ZmID09IDEpXG4rXHRcdFx0ZW1pdChjdHgsIGRkaXYsIGRzdCwgc3JjKTtcbitcdFx0ZWxzZVxuK1x0XHRcdGVtaXQoY3R4LCBkZGl2dSwgZHN0LCBzcmMpO1xuK1x0XHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcbitcdH1cbit9XG4rXG4rLyogQUxVIG1vZHVsbyBvcGVyYXRpb24gKDY0LWJpdCkgKi9cbitzdGF0aWMgdm9pZCBlbWl0X21vZDY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZilcbit7XG4rXHRpZiAoY3B1X2hhc19taXBzNjRyNikge1xuK1x0XHRpZiAob2ZmID09IDEpXG4rXHRcdFx0ZW1pdChjdHgsIGRtb2QsIGRzdCwgZHN0LCBzcmMpO1xuK1x0XHRlbHNlXG4rXHRcdFx0ZW1pdChjdHgsIGRtb2R1LCBkc3QsIGRzdCwgc3JjKTtcbitcdH0gZWxzZSB7XG4rXHRcdGlmIChvZmYgPT0gMSlcbitcdFx0XHRlbWl0KGN0eCwgZGRpdiwgZHN0LCBzcmMpO1xuK1x0XHRlbHNlXG4rXHRcdFx0ZW1pdChjdHgsIGRkaXZ1LCBkc3QsIHNyYyk7XG4rXHRcdGVtaXQoY3R4LCBtZmhpLCBkc3QpO1xuK1x0fVxuK31cbitcbiAvKiBBTFUgcmVnaXN0ZXIgb3BlcmF0aW9uICg2NC1iaXQpICovXG4tc3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApXG4rc3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3AsXG4rXHRcdFx0IHMxNiBvZmYpXG4ge1xuIFx0c3dpdGNoIChCUEZfT1Aob3ApKSB7XG4gXHQvKiBkc3QgPSBkc3QgXHUwMDNjXHUwMDNjIHNyYyAqL1xuQEAgLTIzNSwyNSArMjcwLDE1IEBAIHN0YXRpYyB2b2lkIGVtaXRfYWx1X3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wKVxuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGRzdCAvIHNyYyAqL1xuIFx0Y2FzZSBCUEZfRElWOlxuLVx0XHRpZiAoY3B1X2hhc19taXBzNjRyNikge1xuLVx0XHRcdGVtaXQoY3R4LCBkZGl2dV9yNiwgZHN0LCBkc3QsIHNyYyk7XG4tXHRcdH0gZWxzZSB7XG4tXHRcdFx0ZW1pdChjdHgsIGRkaXZ1LCBkc3QsIHNyYyk7XG4tXHRcdFx0ZW1pdChjdHgsIG1mbG8sIGRzdCk7XG4tXHRcdH1cbitcdFx0ZW1pdF9kaXY2NChjdHgsIGRzdCwgc3JjLCBvZmYpO1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGRzdCAlIHNyYyAqL1xuIFx0Y2FzZSBCUEZfTU9EOlxuLVx0XHRpZiAoY3B1X2hhc19taXBzNjRyNikge1xuLVx0XHRcdGVtaXQoY3R4LCBkbW9kdSwgZHN0LCBkc3QsIHNyYyk7XG4tXHRcdH0gZWxzZSB7XG4tXHRcdFx0ZW1pdChjdHgsIGRkaXZ1LCBkc3QsIHNyYyk7XG4tXHRcdFx0ZW1pdChjdHgsIG1maGksIGRzdCk7XG4tXHRcdH1cbitcdFx0ZW1pdF9tb2Q2NChjdHgsIGRzdCwgc3JjLCBvZmYpO1xuIFx0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG4gXHRcdC8qIFdpZHRoLWdlbmVyaWMgb3BlcmF0aW9ucyAqL1xuLVx0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIG9wKTtcbitcdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgc3JjLCBvcCwgb2ZmKTtcbiBcdH1cbiBcdGNsb2JiZXJfcmVnKGN0eCwgZHN0KTtcbiB9XG5AQCAtNjc0LDkgKzY5OSw5IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfQU5EIHwgQlBGX0s6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfWE9SIHwgQlBGX0s6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTFNIIHwgQlBGX0s6XG4tXHRcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0pKSB7XG4rXHRcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIG9mZikpIHtcbiBcdFx0XHRlbWl0X21vdl9pKGN0eCwgTUlQU19SX1Q0LCBpbW0pO1xuLVx0XHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTtcbitcdFx0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSwgb2ZmKTtcbiBcdFx0fSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBcdTAwMjZhbHUsIFx1MDAyNnZhbCkpIHtcbiBcdFx0XHRlbWl0X2FsdV9pKGN0eCwgZHN0LCB2YWwsIGFsdSk7XG4gXHRcdH1cbkBAIC02OTYsMTAgKzcyMSwxMCBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01VTCB8IEJQRl9LOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0RJViB8IEJQRl9LOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01PRCB8IEJQRl9LOlxuLVx0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkge1xuK1x0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBvZmYpKSB7XG4gXHRcdFx0ZW1pdF9zZXh0KGN0eCwgZHN0LCBkc3QpO1xuIFx0XHRcdGVtaXRfbW92X2koY3R4LCBNSVBTX1JfVDQsIGltbSk7XG4tXHRcdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSkpO1xuK1x0XHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBvZmYpO1xuIFx0XHR9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIFx1MDAyNmFsdSwgXHUwMDI2dmFsKSkge1xuIFx0XHRcdGVtaXRfc2V4dChjdHgsIGRzdCwgZHN0KTtcbiBcdFx0XHRlbWl0X2FsdV9pKGN0eCwgZHN0LCB2YWwsIGFsdSk7XG5AQCAtNzE0LDcgKzczOSw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfT1IgfCBCUEZfWDpcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9YT1IgfCBCUEZfWDpcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9MU0ggfCBCUEZfWDpcbi1cdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSkpO1xuK1x0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSwgb2ZmKTtcbiBcdFx0ZW1pdF96ZXh0X3ZlcihjdHgsIGRzdCk7XG4gXHRcdGJyZWFrO1xuIFx0LyogZHN0ID0gZHN0IFx1MDAzZVx1MDAzZSBzcmMgKi9cbkBAIC03MzMsNyArNzU4LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfWDpcbiBcdFx0ZW1pdF9zZXh0KGN0eCwgZHN0LCBkc3QpO1xuIFx0XHRlbWl0X3NleHQoY3R4LCBNSVBTX1JfVDQsIHNyYyk7XG4tXHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTtcbitcdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksIG9mZik7XG4gXHRcdGVtaXRfemV4dF92ZXIoY3R4LCBkc3QpO1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGltbSAoNjQtYml0KSAqL1xuQEAgLTc3MCw5ICs3OTUsOSBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTVVMIHwgQlBGX0s6XG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9ESVYgfCBCUEZfSzpcbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01PRCB8IEJQRl9LOlxuLVx0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkge1xuK1x0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBvZmYpKSB7XG4gXHRcdFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTtcbi1cdFx0XHRlbWl0X2FsdV9yNjQoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTtcbitcdFx0XHRlbWl0X2FsdV9yNjQoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBvZmYpO1xuIFx0XHR9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIFx1MDAyNmFsdSwgXHUwMDI2dmFsKSkge1xuIFx0XHRcdGVtaXRfYWx1X2k2NChjdHgsIGRzdCwgdmFsLCBhbHUpO1xuIFx0XHR9XG5AQCAtNzk5LDcgKzgyNCw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NVUwgfCBCUEZfWDpcbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX0RJViB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTU9EIHwgQlBGX1g6XG4tXHRcdGVtaXRfYWx1X3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSkpO1xuK1x0XHRlbWl0X2FsdV9yNjQoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpLCBvZmYpO1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGh0b2xlKGRzdCkgKi9cbiBcdC8qIGRzdCA9IGh0b2JlKGRzdCkgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDIyOjIwOjQ0LjUxODk4NzQ2M1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjE1MzU0NTM3MDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgRXZhbHVhdGlvbjogQSBTdHJhaWdodGZvcndhcmQgTmVnYXRpdmUqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFdlJ3ZlIGdvdCBhIHBhdGNoIHNlcmllcywgYW5kIHRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIGl0IGp1c3RpZmllcyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLCBnaXZlbiB0aGF0IHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LiBUaGlzIGlzIGEgcHJldHR5IHN0YW5kYXJkIGtlcm5lbCByZXZpZXcsIGEgcXVpY2sgdHJpYWdlIHRvIHNlZSBpZiB0aGUgY2hhbmdlcyB3YXJyYW50IGZ1cnRoZXIgYXR0ZW50aW9uLiBUaGUgY2hhbmdlcyBhcmUgYmVuaWduIGluIHRlcm1zIG9mIHNldmVyaXR5LCB0aGFua2Z1bGx5LlxuXG5GaXJzdCwgSSBuZWVkIHRvIHNlZSB3aGF0J3MgYmVpbmcgbW9kaWZpZWQuIFRoZSBkaWZmIHRhcmdldHMgZmlsZXMgZXhjbHVzaXZlbHkgd2l0aGluIGBhcmNoL21pcHMvYC4gU3BlY2lmaWNhbGx5LCB3ZSBhcmUgbG9va2luZyBhdCBjaGFuZ2VzIHJlbGF0ZWQgdG8gdGhlIE1JUFMgQlBGIEpJVCBhbmQgdWFzbS5cblxuTm93LCBsZXQncyBjb25zdWx0IHRoZSBjcml0ZXJpYS4gU2VjdGlvbiAyIG9mIHRoZSBndWlkZWxpbmVzIGdpdmVzIHVzIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYSDigJMgY29uZGl0aW9ucyB0aGF0ICpleGNsdWRlKiB0aGUgbmVlZCBmb3IgZnV6emluZy4gT25lIG9mIHRoZSBrZXkgZXhjbHVzaW9ucyBpcywgYW5kIHRoaXMganVtcHMgb3V0IGltbWVkaWF0ZWx5OiBcIkNvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cIlxuXG5CaW5nby4gRXZlcnl0aGluZyBtb2RpZmllZCBpcyBuZXN0bGVkIHVuZGVyIGBhcmNoL21pcHMvYC4gTUlQUyBjb2RlIGlzIGluaGVyZW50bHkgYXJjaGl0ZWN0dXJlLXNwZWNpZmljLiBTaW5jZSB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NCwgdGhpcyBjb2RlIHdpbGwgYmUgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpbiB0aGUgdGFyZ2V0IGVudmlyb25tZW50LlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgaW5kZWVkIHRoZSBjYXNlLiBUaGUgcHJvdmlkZWQgZGlmZiBjb25maXJtcyB0aGlzLiBFdmVyeXRoaW5nIGlzIHdpdGhpbiB0aGUgYGFyY2gvbWlwcy9gIGRpcmVjdG9yeS4gTm8gY3Jvc3MtYXJjaGl0ZWN0dXJlIG1vZGlmaWNhdGlvbnMgaGVyZS5cblxuVG8gYmUgZXh0cmEgdGhvcm91Z2gsIEknbGwgcnVuIGEgcXVpY2sgYGdyZXBwZXJgIHNjYW4gKG9yIGVxdWl2YWxlbnQpIGp1c3QgdG8gbWFrZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIGV2ZW4gdGhvdWdoIHRoZSBkaWZmIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoaXMgaXMgdGhlIGNhc2UuIEV2ZW4gYSBxdWljayBzZWFyY2ggb24gc29tZSBrZXl3b3JkcyBjb25maXJtcyB0aGlzLlxuXG5UaGVyZWZvcmUsIGFwcGx5aW5nIFNlY3Rpb24gMjogXCJDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXCIgV2UgYXJlIGxvb2tpbmcgYXQgYSBjbGVhci1jdXQgY2FzZSBvZiBgV29ydGhGdXp6aW5nID0gZmFsc2VgLiBObyBmdXp6aW5nIGlzIHdhcnJhbnRlZCBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjM3NCwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk5MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDIyOjIwOjU5Ljg3MzUyNzc1OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTU3ODQ1MDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVtaXRfZGl2NjRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jPTE1OD1zdGF0aWMgdm9pZCBlbWl0X2FsdV9pNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApXFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtMjAwLS8qIEFMVSBkaXZpc2lvbiBvcGVyYXRpb24gKDY0LWJpdCkgKi9cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmM6MjAxOnN0YXRpYyB2b2lkIGVtaXRfZGl2NjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCBzMTYgb2ZmKVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy0yMDIte1xcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jPTIzNT1zdGF0aWMgdm9pZCBlbWl0X2FsdV9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcCxcXG4tLVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy0yNzItXFx0Y2FzZSBCUEZfRElWOlxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYzoyNzM6XFx0XFx0ZW1pdF9kaXY2NChjdHgsIGRzdCwgc3JjLCBvZmYpO1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy0yNzQtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDIyOjIxOjAxLjgzMTM3OTEyOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjM0NjQ5MDAwNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgVHJpYWdlIEFzc2Vzc21lbnQ6IE1JUFMtU3BlY2lmaWMgQ29kZSBvbiBhbiBBTUQ2NCBUYXJnZXQqKlxuXG5Pa2F5LCBoZXJlJ3MgdGhlIGRlYWwuIFRoaXMgcGF0Y2ggSSdtIGxvb2tpbmcgYXQgaXMgc3RyaWN0bHkgY29uZmluZWQgdG8gdGhlIGBhcmNoL21pcHMvYCBkaXJlY3RvcnkuIFRoYXQncyBpbW1lZGlhdGVseSBhIHJlZCBmbGFnIGdpdmVuIHRoYXQgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgZm9yIHRoaXMgZnV6emluZyBlZmZvcnQgaXMgQU1ENjQuIFRpbWUgdG8gYXBwbHkgdGhlIHRyaWFnZSBwaGlsb3NvcGh5LiBTcGVjaWZpY2FsbHksIFNlY3Rpb24gMiBpcyB3aGF0J3MgcmVsZXZhbnQgaGVyZS4gSXQncyBwcmV0dHkgY2xlYXIgY3V0OiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIGludG8gYSBzcGVjaWZpYyBzZXQgb2YgY2F0ZWdvcmllcywgYW5kIGlmIHNvLCBXb3J0aEZ1enppbmcgZ2V0cyBhIGZpcm0gXCJmYWxzZS5cIlxuXG5UaGUgc2VjdGlvbiBwb2ludHMgb3V0IHRoYXQgdW5yZWFjaGFibGUgY29kZSBwYXRocyBhcmUgYSB2YWxpZCByZWFzb24gdG8gc2V0IFwiV29ydGhGdXp6aW5nXCIgdG8gZmFsc2UuIEkgaW1tZWRpYXRlbHkgbG9vayBmb3IgY29kZSBwYXRocyB0aGF0IGFyZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMsIGFuZCB0aGF0IGlzIHdoYXQgSSBzZWUuIFRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTUlQUyBtaWNyby1hc3NlbWJsZXIgKGBhcmNoL21pcHMvbW0vdWFzbSpgLCBgYXJjaC9taXBzL2luY2x1ZGUvYXNtL3Vhc20uaGApIGFuZCBNSVBTIEJQRiBKSVQgY29tcGlsZXIgKGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcCpgKSBjb2RlLiBTaW5jZSB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBpcyB0YXJnZXRpbmcgYW1kNjQgYW5kIG5vIGNyb3NzLWNvbXBpbGF0aW9uIGlzIHByZXNlbnQsIHRoZXNlIGNvZGUgcGF0aHMgYXJlLCBieSBkZWZpbml0aW9uLCBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gYW1kNjQuIFRoZXJlJ3Mgbm8gd2F5IHRoZXknbGwgYmUgZXhlY3V0ZWQuXG5cbkdpdmVuIHRoaXMsIEkgaGF2ZSB0byBjb25jbHVkZTpcbiogICBXb3J0aEZ1enppbmc6IGBmYWxzZWBcbiogICBGb2N1c1N5bWJvbHM6IGBbXWBcbiogICBFbmFibGVDb25maWdzOiBgW11gXG4qICAgUmVhc29uaW5nOiBNSVBTLXNwZWNpZmljIGNvZGUgb24gYW4gQU1ENjQgdGFyZ2V0IG1lYW5zIGl0J3MgdW5yZWFjaGFibGUuXG5cbk9rYXksIHRoYXQncyBteSBjYWxsLiBOb3csIGxldCdzIGdvIGFoZWFkIGFuZCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDA4MSwiT3V0cHV0VG9rZW5zIjo4NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQyMjoyMTowNS4yOTYyODE1NzVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIE1JUFMgbWljcm8tYXNzZW1ibGVyIHJvdXRpbmVzIGFuZCBNSVBTIEJQRiBKSVQgY29tcGlsZXIgaW1wbGVtZW50YXRpb25zICh1bmRlciBhcmNoL21pcHMvKS4gQmVjYXVzZSB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NCwgdGhlc2UgY29kZSBwYXRocyBhcmUgZXhjbHVzaXZlIHRvIE1JUFMgYW5kIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZyBvbiBhbWQ2NC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIE1JUFMgbWljcm8tYXNzZW1ibGVyIHJvdXRpbmVzIGFuZCBNSVBTIEJQRiBKSVQgY29tcGlsZXIgaW1wbGVtZW50YXRpb25zICh1bmRlciBhcmNoL21pcHMvKS4gQmVjYXVzZSB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NCwgdGhlc2UgY29kZSBwYXRocyBhcmUgZXhjbHVzaXZlIHRvIE1JUFMgYW5kIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZyBvbiBhbWQ2NC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDIyOjIxOjA1LjI5NjMwNTY5NloiLCJTZXEiOjcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowgtkp9[1] Phase: Running StartedAt: 2026-09-11 22:21:16 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgtkp9[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-11 22:21:16 +0000 UTC FinishedAt: 2026-09-11 22:21:21 +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,}