Name: series-workflow6d72k Phase: Failed StartedAt: 2026-07-02 17:28:53 +0000 UTC FinishedAt: 2026-07-02 18:06:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6d72k[0] Phase: Succeeded StartedAt: 2026-07-02 17:28:53 +0000 UTC FinishedAt: 2026-07-02 17:59:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6d72k[0].run-triage Phase: Succeeded StartedAt: 2026-07-02 17:28:53 +0000 UTC FinishedAt: 2026-07-02 17:59:05 +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+CgkJCTx0ZD4yMDI2LzA3LzAyIDE3OjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGlzIGEgcHVyZSByZWZhY3RvcmluZyB0aGF0IG1vdmVzIENEQy1yZWxhdGVkIGZ1bmN0aW9ucyBmcm9tIGNkY19ldGhlci5jIHRvIHRoZSBjb3JlIHVzYm5ldC5jIG1vZHVsZSBhbmQgcmVwbGFjZXMgdGhlIHVzZSBvZiB0aGUgZ2VuZXJpYyBkYXRhIGFycmF5IHdpdGggYSBkZWRpY2F0ZWQgY2RjX3N0YXRlIHN0cnVjdCBpbiB1c2JuZXQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgbG9naWMgb3IgZml4IGFueSBidWdzIHJlbGF0ZWQgdG8gZGF0YSBhbGlhc2luZywgYXMgbm8gZHJpdmVycyB3ZXJlIGNvbmN1cnJlbnRseSB1c2luZyBib3RoIHRoZSBnZW5lcmljIGRhdGEgYXJyYXkgYW5kIHRoZSBDREMgc3RhdGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE3OjUzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjlmMjg3YThiMjMwZDk0ZDU0OWM0MWQ4YjYyZDIyMzcyNTQxNzhhZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDIgMTc6NTM6NDkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jIGIvZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jXG5pbmRleCBhMGE1NzQwNTkwYjk0NS4uNzZhZDRmZmE5NTBhYjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuY1xuQEAgLTYzLDM1ICYjNDM7NjMsNiBAQCBzdGF0aWMgY29uc3QgdTggbWJtX2d1aWRbMTZdID0ge1xuIFx0MHhhNiwgMHgwNywgMHhjMCwgMHhmZiwgMHhjYiwgMHg3ZSwgMHgzOSwgMHgyYSxcbiB9O1xuIFxuLXZvaWQgdXNibmV0X2NkY191cGRhdGVfZmlsdGVyKHN0cnVjdCB1c2JuZXQgKmRldilcbi17XG4tXHRzdHJ1Y3QgbmV0X2RldmljZVx0Km5ldCA9IGRldi1cdTAwM2VuZXQ7XG4tXG4tXHR1MTYgY2RjX2ZpbHRlciA9IFVTQl9DRENfUEFDS0VUX1RZUEVfRElSRUNURURcbi1cdFx0XHR8IFVTQl9DRENfUEFDS0VUX1RZUEVfQlJPQURDQVNUO1xuLVxuLVx0LyogZmlsdGVyaW5nIG9uIHRoZSBkZXZpY2UgaXMgYW4gb3B0aW9uYWwgZmVhdHVyZSBhbmQgbm90IHdvcnRoXG4tXHQgKiB0aGUgaGFzc2xlIHNvIHdlIGp1c3Qgcm91Z2hseSBjYXJlIGFib3V0IHNub29waW5nIGFuZCBpZiBhbnlcbi1cdCAqIG11bHRpY2FzdCBpcyByZXF1ZXN0ZWQsIHdlIHRha2UgZXZlcnkgbXVsdGljYXN0XG4tXHQgKi9cbi1cdGlmIChuZXQtXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9QUk9NSVNDKVxuLVx0XHRjZGNfZmlsdGVyIHw9IFVTQl9DRENfUEFDS0VUX1RZUEVfUFJPTUlTQ1VPVVM7XG4tXHRpZiAoIW5ldGRldl9tY19lbXB0eShuZXQpIHx8IChuZXQtXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9BTExNVUxUSSkpXG4tXHRcdGNkY19maWx0ZXIgfD0gVVNCX0NEQ19QQUNLRVRfVFlQRV9BTExfTVVMVElDQVNUO1xuLVxuLVx0dXNiX2NvbnRyb2xfbXNnKGRldi1cdTAwM2V1ZGV2LFxuLVx0XHRcdHVzYl9zbmRjdHJscGlwZShkZXYtXHUwMDNldWRldiwgMCksXG4tXHRcdFx0VVNCX0NEQ19TRVRfRVRIRVJORVRfUEFDS0VUX0ZJTFRFUixcbi1cdFx0XHRVU0JfVFlQRV9DTEFTUyB8IFVTQl9SRUNJUF9JTlRFUkZBQ0UsXG4tXHRcdFx0Y2RjX2ZpbHRlcixcbi1cdFx0XHRkZXYtXHUwMDNlaW50Zi1cdTAwM2VjdXJfYWx0c2V0dGluZy1cdTAwM2VkZXNjLmJJbnRlcmZhY2VOdW1iZXIsXG4tXHRcdFx0TlVMTCxcbi1cdFx0XHQwLFxuLVx0XHRcdFVTQl9DVFJMX1NFVF9USU1FT1VUXG4tXHRcdCk7XG4tfVxuLUVYUE9SVF9TWU1CT0xfR1BMKHVzYm5ldF9jZGNfdXBkYXRlX2ZpbHRlcik7XG4tXG4gLyogV2UgbmVlZCB0byBvdmVycmlkZSB1c2JuZXRfKl9saW5rX2tzZXR0aW5ncyBpbiBiaW5kKCkgKi9cbiBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGNkY19ldGhlcl9ldGh0b29sX29wcyA9IHtcbiBcdC5nZXRfbGlua1x0XHQ9IHVzYm5ldF9nZXRfbGluayxcbkBAIC0xMTQsNyAmIzQzOzg1LDcgQEAgaW50IHVzYm5ldF9nZW5lcmljX2NkY19iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4gXHR1OFx0XHRcdFx0KmJ1ZiA9IGludGYtXHUwMDNlY3VyX2FsdHNldHRpbmctXHUwMDNlZXh0cmE7XG4gXHRpbnRcdFx0XHRcdGxlbiA9IGludGYtXHUwMDNlY3VyX2FsdHNldHRpbmctXHUwMDNlZXh0cmFsZW47XG4gXHRzdHJ1Y3QgdXNiX2ludGVyZmFjZV9kZXNjcmlwdG9yXHQqZDtcbi1cdHN0cnVjdCBjZGNfc3RhdGVcdFx0KmluZm8gPSAodm9pZCAqKSBcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbiYjNDM7XHRzdHJ1Y3QgY2RjX3N0YXRlXHRcdCppbmZvID0gXHUwMDI2ZGV2LVx1MDAzZWNkYztcbiBcdGludFx0XHRcdFx0c3RhdHVzID0gLUVOT0RFVjtcbiBcdGludFx0XHRcdFx0cm5kaXM7XG4gXHRib29sXHRcdFx0XHRhbmRyb2lkX3JuZGlzX3F1aXJrID0gZmFsc2U7XG5AQCAtMzY1LDcgJiM0MzszMzYsNyBAQCBFWFBPUlRfU1lNQk9MX0dQTCh1c2JuZXRfZXRoZXJfY2RjX2JpbmQpO1xuIFxuIHZvaWQgdXNibmV0X2NkY191bmJpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbiB7XG4tXHRzdHJ1Y3QgY2RjX3N0YXRlXHRcdCppbmZvID0gKHZvaWQgKikgXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG4mIzQzO1x0c3RydWN0IGNkY19zdGF0ZVx0XHQqaW5mbyA9IFx1MDAyNmRldi1cdTAwM2VjZGM7XG4gXHRzdHJ1Y3QgdXNiX2RyaXZlclx0XHQqZHJpdmVyID0gZHJpdmVyX29mKGludGYpO1xuIFxuIFx0LyogY29tYmluZWQgaW50ZXJmYWNlIC0gbm90aGluZyAgdG8gZG8gKi9cbkBAIC00MDAsNTkgJiM0MzszNzEsMTAgQEAgRVhQT1JUX1NZTUJPTF9HUEwodXNibmV0X2NkY191bmJpbmQpO1xuICAqIChieSBCcmFkIEhhcmRzKSB0YWxrZWQgd2l0aCwgd2l0aCBtb3JlIGZ1bmN0aW9uYWxpdHkuXG4gICovXG4gXG4tc3RhdGljIHZvaWQgc3BlZWRfY2hhbmdlKHN0cnVjdCB1c2JuZXQgKmRldiwgX19sZTMyICpzcGVlZHMpXG4te1xuLVx0ZGV2LVx1MDAzZXR4X3NwZWVkID0gX19sZTMyX3RvX2NwdShzcGVlZHNbMF0pO1xuLVx0ZGV2LVx1MDAzZXJ4X3NwZWVkID0gX19sZTMyX3RvX2NwdShzcGVlZHNbMV0pO1xuLX1cbi1cbi12b2lkIHVzYm5ldF9jZGNfc3RhdHVzKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVyYiAqdXJiKVxuLXtcbi1cdHN0cnVjdCB1c2JfY2RjX25vdGlmaWNhdGlvblx0KmV2ZW50O1xuLVxuLVx0aWYgKHVyYi1cdTAwM2VhY3R1YWxfbGVuZ3RoIFx1MDAzYyBzaXplb2YoKmV2ZW50KSlcbi1cdFx0cmV0dXJuO1xuLVxuLVx0LyogU1BFRURfQ0hBTkdFIGNhbiBnZXQgc3BsaXQgaW50byB0d28gOC1ieXRlIHBhY2tldHMgKi9cbi1cdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoRVZFTlRfU1RTX1NQTElULCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpKSB7XG4tXHRcdHNwZWVkX2NoYW5nZShkZXYsIChfX2xlMzIgKikgdXJiLVx1MDAzZXRyYW5zZmVyX2J1ZmZlcik7XG4tXHRcdHJldHVybjtcbi1cdH1cbi1cbi1cdGV2ZW50ID0gdXJiLVx1MDAzZXRyYW5zZmVyX2J1ZmZlcjtcbi1cdHN3aXRjaCAoZXZlbnQtXHUwMDNlYk5vdGlmaWNhdGlvblR5cGUpIHtcbi1cdGNhc2UgVVNCX0NEQ19OT1RJRllfTkVUV09SS19DT05ORUNUSU9OOlxuLVx0XHRuZXRpZl9kYmcoZGV2LCB0aW1lciwgZGV2LVx1MDAzZW5ldCwgXCYjMzQ7Q0RDOiBjYXJyaWVyICVzXFxuXCYjMzQ7LFxuLVx0XHRcdCAgZXZlbnQtXHUwMDNld1ZhbHVlID8gXCYjMzQ7b25cJiMzNDsgOiBcJiMzNDtvZmZcJiMzNDspO1xuLVx0XHRpZiAobmV0aWZfY2Fycmllcl9vayhkZXYtXHUwMDNlbmV0KSAhPSAhIWV2ZW50LVx1MDAzZXdWYWx1ZSlcbi1cdFx0XHR1c2JuZXRfbGlua19jaGFuZ2UoZGV2LCAhIWV2ZW50LVx1MDAzZXdWYWx1ZSwgMCk7XG4tXHRcdGJyZWFrO1xuLVx0Y2FzZSBVU0JfQ0RDX05PVElGWV9TUEVFRF9DSEFOR0U6XHQvKiB0eC9yeCByYXRlcyAqL1xuLVx0XHRuZXRpZl9kYmcoZGV2LCB0aW1lciwgZGV2LVx1MDAzZW5ldCwgXCYjMzQ7Q0RDOiBzcGVlZCBjaGFuZ2UgKGxlbiAlZClcXG5cJiMzNDssXG4tXHRcdFx0ICB1cmItXHUwMDNlYWN0dWFsX2xlbmd0aCk7XG4tXHRcdGlmICh1cmItXHUwMDNlYWN0dWFsX2xlbmd0aCAhPSAoc2l6ZW9mKCpldmVudCkgJiM0MzsgOCkpXG4tXHRcdFx0c2V0X2JpdChFVkVOVF9TVFNfU1BMSVQsIFx1MDAyNmRldi1cdTAwM2VmbGFncyk7XG4tXHRcdGVsc2Vcbi1cdFx0XHRzcGVlZF9jaGFuZ2UoZGV2LCAoX19sZTMyICopIFx1MDAyNmV2ZW50WzFdKTtcbi1cdFx0YnJlYWs7XG4tXHQvKiBVU0JfQ0RDX05PVElGWV9SRVNQT05TRV9BVkFJTEFCTEUgY2FuIGhhcHBlbiB0b28gKGUuZy4gUk5ESVMpLFxuLVx0ICogYnV0IHRoZXJlIGFyZSBubyBzdGFuZGFyZCBmb3JtYXRzIGZvciB0aGUgcmVzcG9uc2UgZGF0YS5cbi1cdCAqL1xuLVx0ZGVmYXVsdDpcbi1cdFx0bmV0ZGV2X2VycihkZXYtXHUwMDNlbmV0LCBcJiMzNDtDREM6IHVuZXhwZWN0ZWQgbm90aWZpY2F0aW9uICUwMnghXFxuXCYjMzQ7LFxuLVx0XHRcdCAgIGV2ZW50LVx1MDAzZWJOb3RpZmljYXRpb25UeXBlKTtcbi1cdFx0YnJlYWs7XG4tXHR9XG4tfVxuLUVYUE9SVF9TWU1CT0xfR1BMKHVzYm5ldF9jZGNfc3RhdHVzKTtcbi1cbiBpbnQgdXNibmV0X2NkY19iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4ge1xuIFx0aW50XHRcdFx0XHRzdGF0dXM7XG4tXHRzdHJ1Y3QgY2RjX3N0YXRlXHRcdCppbmZvID0gKHZvaWQgKikgXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG4tXG4tXHRCVUlMRF9CVUdfT04oKHNpemVvZigoKHN0cnVjdCB1c2JuZXQgKikwKS1cdTAwM2VkYXRhKVxuLVx0XHRcdFx1MDAzYyBzaXplb2Yoc3RydWN0IGNkY19zdGF0ZSkpKTtcbiYjNDM7XHRzdHJ1Y3QgY2RjX3N0YXRlXHRcdCppbmZvID0gXHUwMDI2ZGV2LVx1MDAzZWNkYztcbiBcbiBcdHN0YXR1cyA9IHVzYm5ldF9ldGhlcl9jZGNfYmluZChkZXYsIGludGYpO1xuIFx0aWYgKHN0YXR1cyBcdTAwM2MgMClcbkBAIC00NzksMjUgJiM0Mzs0MDEsNiBAQCBzdGF0aWMgaW50IHVzYm5ldF9jZGNfenRlX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbiBcdHJldHVybiBzdGF0dXM7XG4gfVxuIFxuLS8qIE1ha2Ugc3VyZSBwYWNrZXRzIGhhdmUgY29ycmVjdCBkZXN0aW5hdGlvbiBNQUMgYWRkcmVzc1xuLSAqXG4tICogQSBmaXJtd2FyZSBidWcgb2JzZXJ2ZWQgb24gc29tZSBkZXZpY2VzIChaVEUgTUY4MjMvODMxLzkxMCkgaXMgdGhhdCB0aGVcbi0gKiBkZXZpY2Ugc2VuZHMgcGFja2V0cyB3aXRoIGEgc3RhdGljLCBib2d1cywgcmFuZG9tIE1BQyBhZGRyZXNzIChldmVudCBpZlxuLSAqIGRldmljZSBNQUMgYWRkcmVzcyBoYXMgYmVlbiB1cGRhdGVkKS4gQWx3YXlzIHNldCBNQUMgYWRkcmVzcyB0byB0aGF0IG9mIHRoZVxuLSAqIGRldmljZS5cbi0gKi9cbi1pbnQgdXNibmV0X2NkY196dGVfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLXtcbi1cdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyBFVEhfSExFTiB8fCAhKHNrYi1cdTAwM2VkYXRhWzBdIFx1MDAyNiAweDAyKSlcbi1cdFx0cmV0dXJuIDE7XG4tXG4tXHRza2JfcmVzZXRfbWFjX2hlYWRlcihza2IpO1xuLVx0ZXRoZXJfYWRkcl9jb3B5KGV0aF9oZHIoc2tiKS1cdTAwM2VoX2Rlc3QsIGRldi1cdTAwM2VuZXQtXHUwMDNlZGV2X2FkZHIpO1xuLVxuLVx0cmV0dXJuIDE7XG4tfVxuLUVYUE9SVF9TWU1CT0xfR1BMKHVzYm5ldF9jZGNfenRlX3J4X2ZpeHVwKTtcbi1cbiAvKiBFbnN1cmUgY29ycmVjdCBsaW5rIHN0YXRlXG4gICpcbiAgKiBTb21lIGRldmljZXMgKFpURSBNRjgyMy84MzEvOTEwKSBleHBvcnQgdHdvIGNhcnJpZXIgb24gbm90aWZpY2F0aW9ucyB3aGVuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL3JuZGlzX2hvc3QuYyBiL2RyaXZlcnMvbmV0L3VzYi9ybmRpc19ob3N0LmNcbmluZGV4IDVlMzlkMDVhMmQ3YjZkLi5kNTM5NjU0Njg3YzMwNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3VzYi9ybmRpc19ob3N0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3VzYi9ybmRpc19ob3N0LmNcbkBAIC01Nyw3ICYjNDM7NTcsNyBAQCBFWFBPUlRfU1lNQk9MX0dQTChybmRpc19zdGF0dXMpO1xuIHN0YXRpYyB2b2lkIHJuZGlzX21zZ19pbmRpY2F0ZShzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBybmRpc19pbmRpY2F0ZSAqbXNnLFxuIFx0XHRcdFx0aW50IGJ1ZmxlbilcbiB7XG4tXHRzdHJ1Y3QgY2RjX3N0YXRlICppbmZvID0gKHZvaWQgKilcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbiYjNDM7XHRzdHJ1Y3QgY2RjX3N0YXRlICppbmZvID0gXHUwMDI2ZGV2LVx1MDAzZWNkYztcbiBcdHN0cnVjdCBkZXZpY2UgKnVkZXYgPSBcdTAwMjZpbmZvLVx1MDAzZWNvbnRyb2wtXHUwMDNlZGV2O1xuIFxuIFx0aWYgKGRldi1cdTAwM2Vkcml2ZXJfaW5mby1cdTAwM2VpbmRpY2F0aW9uKSB7XG5AQCAtOTAsNyAmIzQzOzkwLDcgQEAgc3RhdGljIHZvaWQgcm5kaXNfbXNnX2luZGljYXRlKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHJuZGlzX2luZGljYXRlICptc2csXG4gICovXG4gaW50IHJuZGlzX2NvbW1hbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgcm5kaXNfbXNnX2hkciAqYnVmLCBpbnQgYnVmbGVuKVxuIHtcbi1cdHN0cnVjdCBjZGNfc3RhdGVcdCppbmZvID0gKHZvaWQgKikgXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG4mIzQzO1x0c3RydWN0IGNkY19zdGF0ZVx0KmluZm8gPSBcdTAwMjZkZXYtXHUwMDNlY2RjO1xuIFx0c3RydWN0IHVzYl9jZGNfbm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbjtcbiBcdGludFx0XHRcdG1hc3Rlcl9pZm51bTtcbiBcdGludFx0XHRcdHJldHZhbDtcbkBAIC0yOTAsNyAmIzQzOzI5MCw3IEBAIGdlbmVyaWNfcm5kaXNfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBpbnQgZmxhZ3MpXG4ge1xuIFx0aW50XHRcdFx0cmV0dmFsO1xuIFx0c3RydWN0IG5ldF9kZXZpY2VcdCpuZXQgPSBkZXYtXHUwMDNlbmV0O1xuLVx0c3RydWN0IGNkY19zdGF0ZVx0KmluZm8gPSAodm9pZCAqKSBcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbiYjNDM7XHRzdHJ1Y3QgY2RjX3N0YXRlXHQqaW5mbyA9IFx1MDAyNmRldi1cdTAwM2VjZGM7XG4gXHR1bmlvbiB7XG4gXHRcdHZvaWRcdFx0XHQqYnVmO1xuIFx0XHRzdHJ1Y3Qgcm5kaXNfbXNnX2hkclx0KmhlYWRlcjtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC91c2IvdXNibmV0LmMgYi9kcml2ZXJzL25ldC91c2IvdXNibmV0LmNcbmluZGV4IDI1NTE4NjM1YjdiNzJkLi43YmVlYTZkMGU3MzFjYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3VzYi91c2JuZXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jXG5AQCAtMjIsNiAmIzQzOzIyLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pbml0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXRkZXZpY2UuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2V0aGVyZGV2aWNlLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvdXNiL2NkYy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvY3R5cGUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2V0aHRvb2wuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3dvcmtxdWV1ZS5oXHUwMDNlXG5AQCAtMjI3MSw2ICYjNDM7MjI3MiwxMDAgQEAgaW50IHVzYm5ldF93cml0ZV9jbWRfYXN5bmMoc3RydWN0IHVzYm5ldCAqZGV2LCB1OCBjbWQsIHU4IHJlcXR5cGUsXG4gXG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHVzYm5ldF93cml0ZV9jbWRfYXN5bmMpO1xuJiM0MztcbiYjNDM7dm9pZCB1c2JuZXRfY2RjX3VwZGF0ZV9maWx0ZXIoc3RydWN0IHVzYm5ldCAqZGV2KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG5ldF9kZXZpY2VcdCpuZXQgPSBkZXYtXHUwMDNlbmV0O1xuJiM0MztcbiYjNDM7XHR1MTYgY2RjX2ZpbHRlciA9IFVTQl9DRENfUEFDS0VUX1RZUEVfRElSRUNURURcbiYjNDM7XHRcdFx0fCBVU0JfQ0RDX1BBQ0tFVF9UWVBFX0JST0FEQ0FTVDtcbiYjNDM7XG4mIzQzO1x0LyogZmlsdGVyaW5nIG9uIHRoZSBkZXZpY2UgaXMgYW4gb3B0aW9uYWwgZmVhdHVyZSBhbmQgbm90IHdvcnRoXG4mIzQzO1x0ICogdGhlIGhhc3NsZSBzbyB3ZSBqdXN0IHJvdWdobHkgY2FyZSBhYm91dCBzbm9vcGluZyBhbmQgaWYgYW55XG4mIzQzO1x0ICogbXVsdGljYXN0IGlzIHJlcXVlc3RlZCwgd2UgdGFrZSBldmVyeSBtdWx0aWNhc3RcbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAobmV0LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfUFJPTUlTQylcbiYjNDM7XHRcdGNkY19maWx0ZXIgfD0gVVNCX0NEQ19QQUNLRVRfVFlQRV9QUk9NSVNDVU9VUztcbiYjNDM7XHRpZiAoIW5ldGRldl9tY19lbXB0eShuZXQpIHx8IChuZXQtXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9BTExNVUxUSSkpXG4mIzQzO1x0XHRjZGNfZmlsdGVyIHw9IFVTQl9DRENfUEFDS0VUX1RZUEVfQUxMX01VTFRJQ0FTVDtcbiYjNDM7XG4mIzQzO1x0dXNiX2NvbnRyb2xfbXNnKGRldi1cdTAwM2V1ZGV2LFxuJiM0MztcdFx0XHR1c2Jfc25kY3RybHBpcGUoZGV2LVx1MDAzZXVkZXYsIDApLFxuJiM0MztcdFx0XHRVU0JfQ0RDX1NFVF9FVEhFUk5FVF9QQUNLRVRfRklMVEVSLFxuJiM0MztcdFx0XHRVU0JfVFlQRV9DTEFTUyB8IFVTQl9SRUNJUF9JTlRFUkZBQ0UsXG4mIzQzO1x0XHRcdGNkY19maWx0ZXIsXG4mIzQzO1x0XHRcdGRldi1cdTAwM2VpbnRmLVx1MDAzZWN1cl9hbHRzZXR0aW5nLVx1MDAzZWRlc2MuYkludGVyZmFjZU51bWJlcixcbiYjNDM7XHRcdFx0TlVMTCxcbiYjNDM7XHRcdFx0MCxcbiYjNDM7XHRcdFx0VVNCX0NUUkxfU0VUX1RJTUVPVVRcbiYjNDM7XHRcdCk7XG4mIzQzO31cbiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwodXNibmV0X2NkY191cGRhdGVfZmlsdGVyKTtcbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHNwZWVkX2NoYW5nZShzdHJ1Y3QgdXNibmV0ICpkZXYsIF9fbGUzMiAqc3BlZWRzKVxuJiM0Mzt7XG4mIzQzO1x0ZGV2LVx1MDAzZXR4X3NwZWVkID0gX19sZTMyX3RvX2NwdShzcGVlZHNbMF0pO1xuJiM0MztcdGRldi1cdTAwM2VyeF9zcGVlZCA9IF9fbGUzMl90b19jcHUoc3BlZWRzWzFdKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7dm9pZCB1c2JuZXRfY2RjX3N0YXR1cyhzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1cmIgKnVyYilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCB1c2JfY2RjX25vdGlmaWNhdGlvblx0KmV2ZW50O1xuJiM0MztcbiYjNDM7XHRpZiAodXJiLVx1MDAzZWFjdHVhbF9sZW5ndGggXHUwMDNjIHNpemVvZigqZXZlbnQpKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHQvKiBTUEVFRF9DSEFOR0UgY2FuIGdldCBzcGxpdCBpbnRvIHR3byA4LWJ5dGUgcGFja2V0cyAqL1xuJiM0MztcdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoRVZFTlRfU1RTX1NQTElULCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpKSB7XG4mIzQzO1x0XHRzcGVlZF9jaGFuZ2UoZGV2LCAoX19sZTMyICopdXJiLVx1MDAzZXRyYW5zZmVyX2J1ZmZlcik7XG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRldmVudCA9IHVyYi1cdTAwM2V0cmFuc2Zlcl9idWZmZXI7XG4mIzQzO1x0c3dpdGNoIChldmVudC1cdTAwM2ViTm90aWZpY2F0aW9uVHlwZSkge1xuJiM0MztcdGNhc2UgVVNCX0NEQ19OT1RJRllfTkVUV09SS19DT05ORUNUSU9OOlxuJiM0MztcdFx0bmV0aWZfZGJnKGRldiwgdGltZXIsIGRldi1cdTAwM2VuZXQsIFwmIzM0O0NEQzogY2FycmllciAlc1xcblwmIzM0OyxcbiYjNDM7XHRcdFx0ICBldmVudC1cdTAwM2V3VmFsdWUgPyBcJiMzNDtvblwmIzM0OyA6IFwmIzM0O29mZlwmIzM0Oyk7XG4mIzQzO1x0XHRpZiAobmV0aWZfY2Fycmllcl9vayhkZXYtXHUwMDNlbmV0KSAhPSAhIWV2ZW50LVx1MDAzZXdWYWx1ZSlcbiYjNDM7XHRcdFx0dXNibmV0X2xpbmtfY2hhbmdlKGRldiwgISFldmVudC1cdTAwM2V3VmFsdWUsIDApO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSBVU0JfQ0RDX05PVElGWV9TUEVFRF9DSEFOR0U6XHQvKiB0eC9yeCByYXRlcyAqL1xuJiM0MztcdFx0bmV0aWZfZGJnKGRldiwgdGltZXIsIGRldi1cdTAwM2VuZXQsIFwmIzM0O0NEQzogc3BlZWQgY2hhbmdlIChsZW4gJWQpXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgIHVyYi1cdTAwM2VhY3R1YWxfbGVuZ3RoKTtcbiYjNDM7XHRcdGlmICh1cmItXHUwMDNlYWN0dWFsX2xlbmd0aCAhPSAoc2l6ZW9mKCpldmVudCkgJiM0MzsgOCkpXG4mIzQzO1x0XHRcdHNldF9iaXQoRVZFTlRfU1RTX1NQTElULCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpO1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRzcGVlZF9jaGFuZ2UoZGV2LCAoX19sZTMyICopXHUwMDI2ZXZlbnRbMV0pO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0LyogVVNCX0NEQ19OT1RJRllfUkVTUE9OU0VfQVZBSUxBQkxFIGNhbiBoYXBwZW4gdG9vIChlLmcuIFJORElTKSxcbiYjNDM7XHQgKiBidXQgdGhlcmUgYXJlIG5vIHN0YW5kYXJkIGZvcm1hdHMgZm9yIHRoZSByZXNwb25zZSBkYXRhLlxuJiM0MztcdCAqL1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRuZXRkZXZfZXJyKGRldi1cdTAwM2VuZXQsIFwmIzM0O0NEQzogdW5leHBlY3RlZCBub3RpZmljYXRpb24gJTAyeCFcXG5cJiMzNDssXG4mIzQzO1x0XHRcdCAgIGV2ZW50LVx1MDAzZWJOb3RpZmljYXRpb25UeXBlKTtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztFWFBPUlRfU1lNQk9MX0dQTCh1c2JuZXRfY2RjX3N0YXR1cyk7XG4mIzQzO1xuJiM0MzsvKiBNYWtlIHN1cmUgcGFja2V0cyBoYXZlIGNvcnJlY3QgZGVzdGluYXRpb24gTUFDIGFkZHJlc3NcbiYjNDM7ICpcbiYjNDM7ICogQSBmaXJtd2FyZSBidWcgb2JzZXJ2ZWQgb24gc29tZSBkZXZpY2VzIChaVEUgTUY4MjMvODMxLzkxMCkgaXMgdGhhdCB0aGVcbiYjNDM7ICogZGV2aWNlIHNlbmRzIHBhY2tldHMgd2l0aCBhIHN0YXRpYywgYm9ndXMsIHJhbmRvbSBNQUMgYWRkcmVzcyAoZXZlbnQgaWZcbiYjNDM7ICogZGV2aWNlIE1BQyBhZGRyZXNzIGhhcyBiZWVuIHVwZGF0ZWQpLiBBbHdheXMgc2V0IE1BQyBhZGRyZXNzIHRvIHRoYXQgb2YgdGhlXG4mIzQzOyAqIGRldmljZS5cbiYjNDM7ICovXG4mIzQzO2ludCB1c2JuZXRfY2RjX3p0ZV9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4mIzQzO3tcbiYjNDM7XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2MgRVRIX0hMRU4gfHwgIShza2ItXHUwMDNlZGF0YVswXSBcdTAwMjYgMHgwMikpXG4mIzQzO1x0XHRyZXR1cm4gMTtcbiYjNDM7XG4mIzQzO1x0c2tiX3Jlc2V0X21hY19oZWFkZXIoc2tiKTtcbiYjNDM7XHRldGhlcl9hZGRyX2NvcHkoZXRoX2hkcihza2IpLVx1MDAzZWhfZGVzdCwgZGV2LVx1MDAzZW5ldC1cdTAwM2VkZXZfYWRkcik7XG4mIzQzO1xuJiM0MztcdHJldHVybiAxO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHVzYm5ldF9jZGNfenRlX3J4X2ZpeHVwKTtcbiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuIFxuIHN0YXRpYyBpbnQgX19pbml0IHVzYm5ldF9pbml0KHZvaWQpXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC91c2IvdXNibmV0LmggYi9pbmNsdWRlL2xpbnV4L3VzYi91c2JuZXQuaFxuaW5kZXggYmJmNzk5Y2NmM2IzMGUuLjc5ZjQ4ZWIzODhlZTZjIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC91c2IvdXNibmV0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvdXNiL3VzYm5ldC5oXG5AQCAtMTYsNiAmIzQzOzE2LDE0IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdXNiLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zcGlubG9jay5oXHUwMDNlXG4gXG4mIzQzO3N0cnVjdCBjZGNfc3RhdGUge1xuJiM0MztcdHN0cnVjdCB1c2JfY2RjX2hlYWRlcl9kZXNjICAgICAgKmhlYWRlcjtcbiYjNDM7XHRzdHJ1Y3QgdXNiX2NkY191bmlvbl9kZXNjICAgICAgICp1O1xuJiM0MztcdHN0cnVjdCB1c2JfY2RjX2V0aGVyX2Rlc2MgICAgICAgKmV0aGVyO1xuJiM0MztcdHN0cnVjdCB1c2JfaW50ZXJmYWNlICAgICAgICAgICAgKmNvbnRyb2w7XG4mIzQzO1x0c3RydWN0IHVzYl9pbnRlcmZhY2UgICAgICAgICAgICAqZGF0YTtcbiYjNDM7fTtcbiYjNDM7XG4gLyogaW50ZXJmYWNlIGZyb20gdXNibmV0IGNvcmUgdG8gZWFjaCBVU0IgbmV0d29ya2luZyBsaW5rIHdlIGhhbmRsZSAqL1xuIHN0cnVjdCB1c2JuZXQge1xuIFx0LyogaG91c2VrZWVwaW5nICovXG5AQCAtNDEsNiAmIzQzOzQ5LDcgQEAgc3RydWN0IHVzYm5ldCB7XG4gXHQvKiBwcm90b2NvbC9pbnRlcmZhY2Ugc3RhdGUgKi9cbiBcdHN0cnVjdCBuZXRfZGV2aWNlXHQqbmV0O1xuIFx0aW50XHRcdFx0bXNnX2VuYWJsZTtcbiYjNDM7XHRzdHJ1Y3QgY2RjX3N0YXRlXHRjZGM7XHRcdC8qIHRvbyBjb21tb24gdG8gbGVhdmUgb3V0Ki9cbiBcdHVuc2lnbmVkIGxvbmdcdFx0ZGF0YVs1XTtcbiBcdHUzMlx0XHRcdHhpZDtcbiBcdHUzMlx0XHRcdGhhcmRfbXR1O1x0LyogY291bnQgYW55IGV4dHJhIGZyYW1pbmcgKi9cbkBAIC0yMTEsMTMgJiM0MzsyMjAsNiBAQCBleHRlcm4gaW50IHVzYm5ldF93cml0ZV9jbWRfYXN5bmMoc3RydWN0IHVzYm5ldCAqZGV2LCB1OCBjbWQsIHU4IHJlcXR5cGUsXG4gICogKG5vdGFibHksIHVzaW5nIG11bHRpcGxlIGludGVyZmFjZXMgYWNjb3JkaW5nIHRvIHRoZSBDRENcbiAgKiB1bmlvbiBkZXNjcmlwdG9yKSBnZXQgc29tZSBoZWxwZXIgY29kZS5cbiAgKi9cbi1zdHJ1Y3QgY2RjX3N0YXRlIHtcbi1cdHN0cnVjdCB1c2JfY2RjX2hlYWRlcl9kZXNjXHQqaGVhZGVyO1xuLVx0c3RydWN0IHVzYl9jZGNfdW5pb25fZGVzY1x0KnU7XG4tXHRzdHJ1Y3QgdXNiX2NkY19ldGhlcl9kZXNjXHQqZXRoZXI7XG4tXHRzdHJ1Y3QgdXNiX2ludGVyZmFjZVx0XHQqY29udHJvbDtcbi1cdHN0cnVjdCB1c2JfaW50ZXJmYWNlXHRcdCpkYXRhO1xuLX07XG4gXG4gZXh0ZXJuIHZvaWQgdXNibmV0X2NkY191cGRhdGVfZmlsdGVyKHN0cnVjdCB1c2JuZXQgKmRldik7XG4gZXh0ZXJuIGludCB1c2JuZXRfZ2VuZXJpY19jZGNfYmluZChzdHJ1Y3QgdXNibmV0ICosIHN0cnVjdCB1c2JfaW50ZXJmYWNlICopO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE3OjUzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGlzIGEgcHVyZSByZWZhY3RvcmluZyB0aGF0IG1vdmVzIENEQy1yZWxhdGVkIGZ1bmN0aW9ucyBmcm9tIGNkY19ldGhlci5jIHRvIHRoZSBjb3JlIHVzYm5ldC5jIG1vZHVsZSBhbmQgcmVwbGFjZXMgdGhlIHVzZSBvZiB0aGUgZ2VuZXJpYyBkYXRhIGFycmF5IHdpdGggYSBkZWRpY2F0ZWQgY2RjX3N0YXRlIHN0cnVjdCBpbiB1c2JuZXQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgbG9naWMgb3IgZml4IGFueSBidWdzIHJlbGF0ZWQgdG8gZGF0YSBhbGlhc2luZywgYXMgbm8gZHJpdmVycyB3ZXJlIGNvbmN1cnJlbnRseSB1c2luZyBib3RoIHRoZSBnZW5lcmljIGRhdGEgYXJyYXkgYW5kIHRoZSBDREMgc3RhdGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiOWYyODdhOGIyMzBkOTRkNTQ5YzQxZDhiNjJkMjIzNzI1NDE3OGFmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMiAxNzo1Mzo0OSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYyBiL2RyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYwppbmRleCBhMGE1NzQwNTkwYjk0NS4uNzZhZDRmZmE5NTBhYjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmMKQEAgLTYzLDM1ICYjNDM7NjMsNiBAQCBzdGF0aWMgY29uc3QgdTggbWJtX2d1aWRbMTZdID0gewogCTB4YTYsIDB4MDcsIDB4YzAsIDB4ZmYsIDB4Y2IsIDB4N2UsIDB4MzksIDB4MmEsCiB9OwogCi12b2lkIHVzYm5ldF9jZGNfdXBkYXRlX2ZpbHRlcihzdHJ1Y3QgdXNibmV0ICpkZXYpCi17Ci0Jc3RydWN0IG5ldF9kZXZpY2UJKm5ldCA9IGRldi0mZ3Q7bmV0OwotCi0JdTE2IGNkY19maWx0ZXIgPSBVU0JfQ0RDX1BBQ0tFVF9UWVBFX0RJUkVDVEVECi0JCQl8IFVTQl9DRENfUEFDS0VUX1RZUEVfQlJPQURDQVNUOwotCi0JLyogZmlsdGVyaW5nIG9uIHRoZSBkZXZpY2UgaXMgYW4gb3B0aW9uYWwgZmVhdHVyZSBhbmQgbm90IHdvcnRoCi0JICogdGhlIGhhc3NsZSBzbyB3ZSBqdXN0IHJvdWdobHkgY2FyZSBhYm91dCBzbm9vcGluZyBhbmQgaWYgYW55Ci0JICogbXVsdGljYXN0IGlzIHJlcXVlc3RlZCwgd2UgdGFrZSBldmVyeSBtdWx0aWNhc3QKLQkgKi8KLQlpZiAobmV0LSZndDtmbGFncyAmYW1wOyBJRkZfUFJPTUlTQykKLQkJY2RjX2ZpbHRlciB8PSBVU0JfQ0RDX1BBQ0tFVF9UWVBFX1BST01JU0NVT1VTOwotCWlmICghbmV0ZGV2X21jX2VtcHR5KG5ldCkgfHwgKG5ldC0mZ3Q7ZmxhZ3MgJmFtcDsgSUZGX0FMTE1VTFRJKSkKLQkJY2RjX2ZpbHRlciB8PSBVU0JfQ0RDX1BBQ0tFVF9UWVBFX0FMTF9NVUxUSUNBU1Q7Ci0KLQl1c2JfY29udHJvbF9tc2coZGV2LSZndDt1ZGV2LAotCQkJdXNiX3NuZGN0cmxwaXBlKGRldi0mZ3Q7dWRldiwgMCksCi0JCQlVU0JfQ0RDX1NFVF9FVEhFUk5FVF9QQUNLRVRfRklMVEVSLAotCQkJVVNCX1RZUEVfQ0xBU1MgfCBVU0JfUkVDSVBfSU5URVJGQUNFLAotCQkJY2RjX2ZpbHRlciwKLQkJCWRldi0mZ3Q7aW50Zi0mZ3Q7Y3VyX2FsdHNldHRpbmctJmd0O2Rlc2MuYkludGVyZmFjZU51bWJlciwKLQkJCU5VTEwsCi0JCQkwLAotCQkJVVNCX0NUUkxfU0VUX1RJTUVPVVQKLQkJKTsKLX0KLUVYUE9SVF9TWU1CT0xfR1BMKHVzYm5ldF9jZGNfdXBkYXRlX2ZpbHRlcik7Ci0KIC8qIFdlIG5lZWQgdG8gb3ZlcnJpZGUgdXNibmV0XypfbGlua19rc2V0dGluZ3MgaW4gYmluZCgpICovCiBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGNkY19ldGhlcl9ldGh0b29sX29wcyA9IHsKIAkuZ2V0X2xpbmsJCT0gdXNibmV0X2dldF9saW5rLApAQCAtMTE0LDcgJiM0Mzs4NSw3IEBAIGludCB1c2JuZXRfZ2VuZXJpY19jZGNfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKQogCXU4CQkJCSpidWYgPSBpbnRmLSZndDtjdXJfYWx0c2V0dGluZy0mZ3Q7ZXh0cmE7CiAJaW50CQkJCWxlbiA9IGludGYtJmd0O2N1cl9hbHRzZXR0aW5nLSZndDtleHRyYWxlbjsKIAlzdHJ1Y3QgdXNiX2ludGVyZmFjZV9kZXNjcmlwdG9yCSpkOwotCXN0cnVjdCBjZGNfc3RhdGUJCSppbmZvID0gKHZvaWQgKikgJmFtcDtkZXYtJmd0O2RhdGE7CiYjNDM7CXN0cnVjdCBjZGNfc3RhdGUJCSppbmZvID0gJmFtcDtkZXYtJmd0O2NkYzsKIAlpbnQJCQkJc3RhdHVzID0gLUVOT0RFVjsKIAlpbnQJCQkJcm5kaXM7CiAJYm9vbAkJCQlhbmRyb2lkX3JuZGlzX3F1aXJrID0gZmFsc2U7CkBAIC0zNjUsNyAmIzQzOzMzNiw3IEBAIEVYUE9SVF9TWU1CT0xfR1BMKHVzYm5ldF9ldGhlcl9jZGNfYmluZCk7CiAKIHZvaWQgdXNibmV0X2NkY191bmJpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZikKIHsKLQlzdHJ1Y3QgY2RjX3N0YXRlCQkqaW5mbyA9ICh2b2lkICopICZhbXA7ZGV2LSZndDtkYXRhOwomIzQzOwlzdHJ1Y3QgY2RjX3N0YXRlCQkqaW5mbyA9ICZhbXA7ZGV2LSZndDtjZGM7CiAJc3RydWN0IHVzYl9kcml2ZXIJCSpkcml2ZXIgPSBkcml2ZXJfb2YoaW50Zik7CiAKIAkvKiBjb21iaW5lZCBpbnRlcmZhY2UgLSBub3RoaW5nICB0byBkbyAqLwpAQCAtNDAwLDU5ICYjNDM7MzcxLDEwIEBAIEVYUE9SVF9TWU1CT0xfR1BMKHVzYm5ldF9jZGNfdW5iaW5kKTsKICAqIChieSBCcmFkIEhhcmRzKSB0YWxrZWQgd2l0aCwgd2l0aCBtb3JlIGZ1bmN0aW9uYWxpdHkuCiAgKi8KIAotc3RhdGljIHZvaWQgc3BlZWRfY2hhbmdlKHN0cnVjdCB1c2JuZXQgKmRldiwgX19sZTMyICpzcGVlZHMpCi17Ci0JZGV2LSZndDt0eF9zcGVlZCA9IF9fbGUzMl90b19jcHUoc3BlZWRzWzBdKTsKLQlkZXYtJmd0O3J4X3NwZWVkID0gX19sZTMyX3RvX2NwdShzcGVlZHNbMV0pOwotfQotCi12b2lkIHVzYm5ldF9jZGNfc3RhdHVzKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVyYiAqdXJiKQotewotCXN0cnVjdCB1c2JfY2RjX25vdGlmaWNhdGlvbgkqZXZlbnQ7Ci0KLQlpZiAodXJiLSZndDthY3R1YWxfbGVuZ3RoICZsdDsgc2l6ZW9mKCpldmVudCkpCi0JCXJldHVybjsKLQotCS8qIFNQRUVEX0NIQU5HRSBjYW4gZ2V0IHNwbGl0IGludG8gdHdvIDgtYnl0ZSBwYWNrZXRzICovCi0JaWYgKHRlc3RfYW5kX2NsZWFyX2JpdChFVkVOVF9TVFNfU1BMSVQsICZhbXA7ZGV2LSZndDtmbGFncykpIHsKLQkJc3BlZWRfY2hhbmdlKGRldiwgKF9fbGUzMiAqKSB1cmItJmd0O3RyYW5zZmVyX2J1ZmZlcik7Ci0JCXJldHVybjsKLQl9Ci0KLQlldmVudCA9IHVyYi0mZ3Q7dHJhbnNmZXJfYnVmZmVyOwotCXN3aXRjaCAoZXZlbnQtJmd0O2JOb3RpZmljYXRpb25UeXBlKSB7Ci0JY2FzZSBVU0JfQ0RDX05PVElGWV9ORVRXT1JLX0NPTk5FQ1RJT046Ci0JCW5ldGlmX2RiZyhkZXYsIHRpbWVyLCBkZXYtJmd0O25ldCwgJiMzNDtDREM6IGNhcnJpZXIgJXNcbiYjMzQ7LAotCQkJICBldmVudC0mZ3Q7d1ZhbHVlID8gJiMzNDtvbiYjMzQ7IDogJiMzNDtvZmYmIzM0Oyk7Ci0JCWlmIChuZXRpZl9jYXJyaWVyX29rKGRldi0mZ3Q7bmV0KSAhPSAhIWV2ZW50LSZndDt3VmFsdWUpCi0JCQl1c2JuZXRfbGlua19jaGFuZ2UoZGV2LCAhIWV2ZW50LSZndDt3VmFsdWUsIDApOwotCQlicmVhazsKLQljYXNlIFVTQl9DRENfTk9USUZZX1NQRUVEX0NIQU5HRToJLyogdHgvcnggcmF0ZXMgKi8KLQkJbmV0aWZfZGJnKGRldiwgdGltZXIsIGRldi0mZ3Q7bmV0LCAmIzM0O0NEQzogc3BlZWQgY2hhbmdlIChsZW4gJWQpXG4mIzM0OywKLQkJCSAgdXJiLSZndDthY3R1YWxfbGVuZ3RoKTsKLQkJaWYgKHVyYi0mZ3Q7YWN0dWFsX2xlbmd0aCAhPSAoc2l6ZW9mKCpldmVudCkgJiM0MzsgOCkpCi0JCQlzZXRfYml0KEVWRU5UX1NUU19TUExJVCwgJmFtcDtkZXYtJmd0O2ZsYWdzKTsKLQkJZWxzZQotCQkJc3BlZWRfY2hhbmdlKGRldiwgKF9fbGUzMiAqKSAmYW1wO2V2ZW50WzFdKTsKLQkJYnJlYWs7Ci0JLyogVVNCX0NEQ19OT1RJRllfUkVTUE9OU0VfQVZBSUxBQkxFIGNhbiBoYXBwZW4gdG9vIChlLmcuIFJORElTKSwKLQkgKiBidXQgdGhlcmUgYXJlIG5vIHN0YW5kYXJkIGZvcm1hdHMgZm9yIHRoZSByZXNwb25zZSBkYXRhLgotCSAqLwotCWRlZmF1bHQ6Ci0JCW5ldGRldl9lcnIoZGV2LSZndDtuZXQsICYjMzQ7Q0RDOiB1bmV4cGVjdGVkIG5vdGlmaWNhdGlvbiAlMDJ4IVxuJiMzNDssCi0JCQkgICBldmVudC0mZ3Q7Yk5vdGlmaWNhdGlvblR5cGUpOwotCQlicmVhazsKLQl9Ci19Ci1FWFBPUlRfU1lNQk9MX0dQTCh1c2JuZXRfY2RjX3N0YXR1cyk7Ci0KIGludCB1c2JuZXRfY2RjX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZikKIHsKIAlpbnQJCQkJc3RhdHVzOwotCXN0cnVjdCBjZGNfc3RhdGUJCSppbmZvID0gKHZvaWQgKikgJmFtcDtkZXYtJmd0O2RhdGE7Ci0KLQlCVUlMRF9CVUdfT04oKHNpemVvZigoKHN0cnVjdCB1c2JuZXQgKikwKS0mZ3Q7ZGF0YSkKLQkJCSZsdDsgc2l6ZW9mKHN0cnVjdCBjZGNfc3RhdGUpKSk7CiYjNDM7CXN0cnVjdCBjZGNfc3RhdGUJCSppbmZvID0gJmFtcDtkZXYtJmd0O2NkYzsKIAogCXN0YXR1cyA9IHVzYm5ldF9ldGhlcl9jZGNfYmluZChkZXYsIGludGYpOwogCWlmIChzdGF0dXMgJmx0OyAwKQpAQCAtNDc5LDI1ICYjNDM7NDAxLDYgQEAgc3RhdGljIGludCB1c2JuZXRfY2RjX3p0ZV9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpCiAJcmV0dXJuIHN0YXR1czsKIH0KIAotLyogTWFrZSBzdXJlIHBhY2tldHMgaGF2ZSBjb3JyZWN0IGRlc3RpbmF0aW9uIE1BQyBhZGRyZXNzCi0gKgotICogQSBmaXJtd2FyZSBidWcgb2JzZXJ2ZWQgb24gc29tZSBkZXZpY2VzIChaVEUgTUY4MjMvODMxLzkxMCkgaXMgdGhhdCB0aGUKLSAqIGRldmljZSBzZW5kcyBwYWNrZXRzIHdpdGggYSBzdGF0aWMsIGJvZ3VzLCByYW5kb20gTUFDIGFkZHJlc3MgKGV2ZW50IGlmCi0gKiBkZXZpY2UgTUFDIGFkZHJlc3MgaGFzIGJlZW4gdXBkYXRlZCkuIEFsd2F5cyBzZXQgTUFDIGFkZHJlc3MgdG8gdGhhdCBvZiB0aGUKLSAqIGRldmljZS4KLSAqLwotaW50IHVzYm5ldF9jZGNfenRlX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYikKLXsKLQlpZiAoc2tiLSZndDtsZW4gJmx0OyBFVEhfSExFTiB8fCAhKHNrYi0mZ3Q7ZGF0YVswXSAmYW1wOyAweDAyKSkKLQkJcmV0dXJuIDE7Ci0KLQlza2JfcmVzZXRfbWFjX2hlYWRlcihza2IpOwotCWV0aGVyX2FkZHJfY29weShldGhfaGRyKHNrYiktJmd0O2hfZGVzdCwgZGV2LSZndDtuZXQtJmd0O2Rldl9hZGRyKTsKLQotCXJldHVybiAxOwotfQotRVhQT1JUX1NZTUJPTF9HUEwodXNibmV0X2NkY196dGVfcnhfZml4dXApOwotCiAvKiBFbnN1cmUgY29ycmVjdCBsaW5rIHN0YXRlCiAgKgogICogU29tZSBkZXZpY2VzIChaVEUgTUY4MjMvODMxLzkxMCkgZXhwb3J0IHR3byBjYXJyaWVyIG9uIG5vdGlmaWNhdGlvbnMgd2hlbgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL3JuZGlzX2hvc3QuYyBiL2RyaXZlcnMvbmV0L3VzYi9ybmRpc19ob3N0LmMKaW5kZXggNWUzOWQwNWEyZDdiNmQuLmQ1Mzk2NTQ2ODdjMzA1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC91c2Ivcm5kaXNfaG9zdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3VzYi9ybmRpc19ob3N0LmMKQEAgLTU3LDcgJiM0Mzs1Nyw3IEBAIEVYUE9SVF9TWU1CT0xfR1BMKHJuZGlzX3N0YXR1cyk7CiBzdGF0aWMgdm9pZCBybmRpc19tc2dfaW5kaWNhdGUoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgcm5kaXNfaW5kaWNhdGUgKm1zZywKIAkJCQlpbnQgYnVmbGVuKQogewotCXN0cnVjdCBjZGNfc3RhdGUgKmluZm8gPSAodm9pZCAqKSZhbXA7ZGV2LSZndDtkYXRhOwomIzQzOwlzdHJ1Y3QgY2RjX3N0YXRlICppbmZvID0gJmFtcDtkZXYtJmd0O2NkYzsKIAlzdHJ1Y3QgZGV2aWNlICp1ZGV2ID0gJmFtcDtpbmZvLSZndDtjb250cm9sLSZndDtkZXY7CiAKIAlpZiAoZGV2LSZndDtkcml2ZXJfaW5mby0mZ3Q7aW5kaWNhdGlvbikgewpAQCAtOTAsNyAmIzQzOzkwLDcgQEAgc3RhdGljIHZvaWQgcm5kaXNfbXNnX2luZGljYXRlKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHJuZGlzX2luZGljYXRlICptc2csCiAgKi8KIGludCBybmRpc19jb21tYW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHJuZGlzX21zZ19oZHIgKmJ1ZiwgaW50IGJ1ZmxlbikKIHsKLQlzdHJ1Y3QgY2RjX3N0YXRlCSppbmZvID0gKHZvaWQgKikgJmFtcDtkZXYtJmd0O2RhdGE7CiYjNDM7CXN0cnVjdCBjZGNfc3RhdGUJKmluZm8gPSAmYW1wO2Rldi0mZ3Q7Y2RjOwogCXN0cnVjdCB1c2JfY2RjX25vdGlmaWNhdGlvbiBub3RpZmljYXRpb247CiAJaW50CQkJbWFzdGVyX2lmbnVtOwogCWludAkJCXJldHZhbDsKQEAgLTI5MCw3ICYjNDM7MjkwLDcgQEAgZ2VuZXJpY19ybmRpc19iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGludCBmbGFncykKIHsKIAlpbnQJCQlyZXR2YWw7CiAJc3RydWN0IG5ldF9kZXZpY2UJKm5ldCA9IGRldi0mZ3Q7bmV0OwotCXN0cnVjdCBjZGNfc3RhdGUJKmluZm8gPSAodm9pZCAqKSAmYW1wO2Rldi0mZ3Q7ZGF0YTsKJiM0MzsJc3RydWN0IGNkY19zdGF0ZQkqaW5mbyA9ICZhbXA7ZGV2LSZndDtjZGM7CiAJdW5pb24gewogCQl2b2lkCQkJKmJ1ZjsKIAkJc3RydWN0IHJuZGlzX21zZ19oZHIJKmhlYWRlcjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi91c2JuZXQuYyBiL2RyaXZlcnMvbmV0L3VzYi91c2JuZXQuYwppbmRleCAyNTUxODYzNWI3YjcyZC4uN2JlZWE2ZDBlNzMxY2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3VzYi91c2JuZXQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC91c2IvdXNibmV0LmMKQEAgLTIyLDYgJiM0MzsyMiw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvaW5pdC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L25ldGRldmljZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2V0aGVyZGV2aWNlLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3VzYi9jZGMuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9jdHlwZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2V0aHRvb2wuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC93b3JrcXVldWUuaCZndDsKQEAgLTIyNzEsNiAmIzQzOzIyNzIsMTAwIEBAIGludCB1c2JuZXRfd3JpdGVfY21kX2FzeW5jKHN0cnVjdCB1c2JuZXQgKmRldiwgdTggY21kLCB1OCByZXF0eXBlLAogCiB9CiBFWFBPUlRfU1lNQk9MX0dQTCh1c2JuZXRfd3JpdGVfY21kX2FzeW5jKTsKJiM0MzsKJiM0Mzt2b2lkIHVzYm5ldF9jZGNfdXBkYXRlX2ZpbHRlcihzdHJ1Y3QgdXNibmV0ICpkZXYpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgbmV0X2RldmljZQkqbmV0ID0gZGV2LSZndDtuZXQ7CiYjNDM7CiYjNDM7CXUxNiBjZGNfZmlsdGVyID0gVVNCX0NEQ19QQUNLRVRfVFlQRV9ESVJFQ1RFRAomIzQzOwkJCXwgVVNCX0NEQ19QQUNLRVRfVFlQRV9CUk9BRENBU1Q7CiYjNDM7CiYjNDM7CS8qIGZpbHRlcmluZyBvbiB0aGUgZGV2aWNlIGlzIGFuIG9wdGlvbmFsIGZlYXR1cmUgYW5kIG5vdCB3b3J0aAomIzQzOwkgKiB0aGUgaGFzc2xlIHNvIHdlIGp1c3Qgcm91Z2hseSBjYXJlIGFib3V0IHNub29waW5nIGFuZCBpZiBhbnkKJiM0MzsJICogbXVsdGljYXN0IGlzIHJlcXVlc3RlZCwgd2UgdGFrZSBldmVyeSBtdWx0aWNhc3QKJiM0MzsJICovCiYjNDM7CWlmIChuZXQtJmd0O2ZsYWdzICZhbXA7IElGRl9QUk9NSVNDKQomIzQzOwkJY2RjX2ZpbHRlciB8PSBVU0JfQ0RDX1BBQ0tFVF9UWVBFX1BST01JU0NVT1VTOwomIzQzOwlpZiAoIW5ldGRldl9tY19lbXB0eShuZXQpIHx8IChuZXQtJmd0O2ZsYWdzICZhbXA7IElGRl9BTExNVUxUSSkpCiYjNDM7CQljZGNfZmlsdGVyIHw9IFVTQl9DRENfUEFDS0VUX1RZUEVfQUxMX01VTFRJQ0FTVDsKJiM0MzsKJiM0MzsJdXNiX2NvbnRyb2xfbXNnKGRldi0mZ3Q7dWRldiwKJiM0MzsJCQl1c2Jfc25kY3RybHBpcGUoZGV2LSZndDt1ZGV2LCAwKSwKJiM0MzsJCQlVU0JfQ0RDX1NFVF9FVEhFUk5FVF9QQUNLRVRfRklMVEVSLAomIzQzOwkJCVVTQl9UWVBFX0NMQVNTIHwgVVNCX1JFQ0lQX0lOVEVSRkFDRSwKJiM0MzsJCQljZGNfZmlsdGVyLAomIzQzOwkJCWRldi0mZ3Q7aW50Zi0mZ3Q7Y3VyX2FsdHNldHRpbmctJmd0O2Rlc2MuYkludGVyZmFjZU51bWJlciwKJiM0MzsJCQlOVUxMLAomIzQzOwkJCTAsCiYjNDM7CQkJVVNCX0NUUkxfU0VUX1RJTUVPVVQKJiM0MzsJCSk7CiYjNDM7fQomIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHVzYm5ldF9jZGNfdXBkYXRlX2ZpbHRlcik7CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgc3BlZWRfY2hhbmdlKHN0cnVjdCB1c2JuZXQgKmRldiwgX19sZTMyICpzcGVlZHMpCiYjNDM7ewomIzQzOwlkZXYtJmd0O3R4X3NwZWVkID0gX19sZTMyX3RvX2NwdShzcGVlZHNbMF0pOwomIzQzOwlkZXYtJmd0O3J4X3NwZWVkID0gX19sZTMyX3RvX2NwdShzcGVlZHNbMV0pOwomIzQzO30KJiM0MzsKJiM0Mzt2b2lkIHVzYm5ldF9jZGNfc3RhdHVzKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVyYiAqdXJiKQomIzQzO3sKJiM0MzsJc3RydWN0IHVzYl9jZGNfbm90aWZpY2F0aW9uCSpldmVudDsKJiM0MzsKJiM0MzsJaWYgKHVyYi0mZ3Q7YWN0dWFsX2xlbmd0aCAmbHQ7IHNpemVvZigqZXZlbnQpKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwkvKiBTUEVFRF9DSEFOR0UgY2FuIGdldCBzcGxpdCBpbnRvIHR3byA4LWJ5dGUgcGFja2V0cyAqLwomIzQzOwlpZiAodGVzdF9hbmRfY2xlYXJfYml0KEVWRU5UX1NUU19TUExJVCwgJmFtcDtkZXYtJmd0O2ZsYWdzKSkgewomIzQzOwkJc3BlZWRfY2hhbmdlKGRldiwgKF9fbGUzMiAqKXVyYi0mZ3Q7dHJhbnNmZXJfYnVmZmVyKTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwomIzQzOwlldmVudCA9IHVyYi0mZ3Q7dHJhbnNmZXJfYnVmZmVyOwomIzQzOwlzd2l0Y2ggKGV2ZW50LSZndDtiTm90aWZpY2F0aW9uVHlwZSkgewomIzQzOwljYXNlIFVTQl9DRENfTk9USUZZX05FVFdPUktfQ09OTkVDVElPTjoKJiM0MzsJCW5ldGlmX2RiZyhkZXYsIHRpbWVyLCBkZXYtJmd0O25ldCwgJiMzNDtDREM6IGNhcnJpZXIgJXNcbiYjMzQ7LAomIzQzOwkJCSAgZXZlbnQtJmd0O3dWYWx1ZSA/ICYjMzQ7b24mIzM0OyA6ICYjMzQ7b2ZmJiMzNDspOwomIzQzOwkJaWYgKG5ldGlmX2NhcnJpZXJfb2soZGV2LSZndDtuZXQpICE9ICEhZXZlbnQtJmd0O3dWYWx1ZSkKJiM0MzsJCQl1c2JuZXRfbGlua19jaGFuZ2UoZGV2LCAhIWV2ZW50LSZndDt3VmFsdWUsIDApOwomIzQzOwkJYnJlYWs7CiYjNDM7CWNhc2UgVVNCX0NEQ19OT1RJRllfU1BFRURfQ0hBTkdFOgkvKiB0eC9yeCByYXRlcyAqLwomIzQzOwkJbmV0aWZfZGJnKGRldiwgdGltZXIsIGRldi0mZ3Q7bmV0LCAmIzM0O0NEQzogc3BlZWQgY2hhbmdlIChsZW4gJWQpXG4mIzM0OywKJiM0MzsJCQkgIHVyYi0mZ3Q7YWN0dWFsX2xlbmd0aCk7CiYjNDM7CQlpZiAodXJiLSZndDthY3R1YWxfbGVuZ3RoICE9IChzaXplb2YoKmV2ZW50KSAmIzQzOyA4KSkKJiM0MzsJCQlzZXRfYml0KEVWRU5UX1NUU19TUExJVCwgJmFtcDtkZXYtJmd0O2ZsYWdzKTsKJiM0MzsJCWVsc2UKJiM0MzsJCQlzcGVlZF9jaGFuZ2UoZGV2LCAoX19sZTMyICopJmFtcDtldmVudFsxXSk7CiYjNDM7CQlicmVhazsKJiM0MzsJLyogVVNCX0NEQ19OT1RJRllfUkVTUE9OU0VfQVZBSUxBQkxFIGNhbiBoYXBwZW4gdG9vIChlLmcuIFJORElTKSwKJiM0MzsJICogYnV0IHRoZXJlIGFyZSBubyBzdGFuZGFyZCBmb3JtYXRzIGZvciB0aGUgcmVzcG9uc2UgZGF0YS4KJiM0MzsJICovCiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQluZXRkZXZfZXJyKGRldi0mZ3Q7bmV0LCAmIzM0O0NEQzogdW5leHBlY3RlZCBub3RpZmljYXRpb24gJTAyeCFcbiYjMzQ7LAomIzQzOwkJCSAgIGV2ZW50LSZndDtiTm90aWZpY2F0aW9uVHlwZSk7CiYjNDM7CQlicmVhazsKJiM0MzsJfQomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MX0dQTCh1c2JuZXRfY2RjX3N0YXR1cyk7CiYjNDM7CiYjNDM7LyogTWFrZSBzdXJlIHBhY2tldHMgaGF2ZSBjb3JyZWN0IGRlc3RpbmF0aW9uIE1BQyBhZGRyZXNzCiYjNDM7ICoKJiM0MzsgKiBBIGZpcm13YXJlIGJ1ZyBvYnNlcnZlZCBvbiBzb21lIGRldmljZXMgKFpURSBNRjgyMy84MzEvOTEwKSBpcyB0aGF0IHRoZQomIzQzOyAqIGRldmljZSBzZW5kcyBwYWNrZXRzIHdpdGggYSBzdGF0aWMsIGJvZ3VzLCByYW5kb20gTUFDIGFkZHJlc3MgKGV2ZW50IGlmCiYjNDM7ICogZGV2aWNlIE1BQyBhZGRyZXNzIGhhcyBiZWVuIHVwZGF0ZWQpLiBBbHdheXMgc2V0IE1BQyBhZGRyZXNzIHRvIHRoYXQgb2YgdGhlCiYjNDM7ICogZGV2aWNlLgomIzQzOyAqLwomIzQzO2ludCB1c2JuZXRfY2RjX3p0ZV9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpCiYjNDM7ewomIzQzOwlpZiAoc2tiLSZndDtsZW4gJmx0OyBFVEhfSExFTiB8fCAhKHNrYi0mZ3Q7ZGF0YVswXSAmYW1wOyAweDAyKSkKJiM0MzsJCXJldHVybiAxOwomIzQzOwomIzQzOwlza2JfcmVzZXRfbWFjX2hlYWRlcihza2IpOwomIzQzOwlldGhlcl9hZGRyX2NvcHkoZXRoX2hkcihza2IpLSZndDtoX2Rlc3QsIGRldi0mZ3Q7bmV0LSZndDtkZXZfYWRkcik7CiYjNDM7CiYjNDM7CXJldHVybiAxOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MX0dQTCh1c2JuZXRfY2RjX3p0ZV9yeF9maXh1cCk7CiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCiBzdGF0aWMgaW50IF9faW5pdCB1c2JuZXRfaW5pdCh2b2lkKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC91c2IvdXNibmV0LmggYi9pbmNsdWRlL2xpbnV4L3VzYi91c2JuZXQuaAppbmRleCBiYmY3OTljY2YzYjMwZS4uNzlmNDhlYjM4OGVlNmMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvdXNiL3VzYm5ldC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvdXNiL3VzYm5ldC5oCkBAIC0xNiw2ICYjNDM7MTYsMTQgQEAKICNpbmNsdWRlICZsdDtsaW51eC91c2IuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9zcGlubG9jay5oJmd0OwogCiYjNDM7c3RydWN0IGNkY19zdGF0ZSB7CiYjNDM7CXN0cnVjdCB1c2JfY2RjX2hlYWRlcl9kZXNjICAgICAgKmhlYWRlcjsKJiM0MzsJc3RydWN0IHVzYl9jZGNfdW5pb25fZGVzYyAgICAgICAqdTsKJiM0MzsJc3RydWN0IHVzYl9jZGNfZXRoZXJfZGVzYyAgICAgICAqZXRoZXI7CiYjNDM7CXN0cnVjdCB1c2JfaW50ZXJmYWNlICAgICAgICAgICAgKmNvbnRyb2w7CiYjNDM7CXN0cnVjdCB1c2JfaW50ZXJmYWNlICAgICAgICAgICAgKmRhdGE7CiYjNDM7fTsKJiM0MzsKIC8qIGludGVyZmFjZSBmcm9tIHVzYm5ldCBjb3JlIHRvIGVhY2ggVVNCIG5ldHdvcmtpbmcgbGluayB3ZSBoYW5kbGUgKi8KIHN0cnVjdCB1c2JuZXQgewogCS8qIGhvdXNla2VlcGluZyAqLwpAQCAtNDEsNiAmIzQzOzQ5LDcgQEAgc3RydWN0IHVzYm5ldCB7CiAJLyogcHJvdG9jb2wvaW50ZXJmYWNlIHN0YXRlICovCiAJc3RydWN0IG5ldF9kZXZpY2UJKm5ldDsKIAlpbnQJCQltc2dfZW5hYmxlOwomIzQzOwlzdHJ1Y3QgY2RjX3N0YXRlCWNkYzsJCS8qIHRvbyBjb21tb24gdG8gbGVhdmUgb3V0Ki8KIAl1bnNpZ25lZCBsb25nCQlkYXRhWzVdOwogCXUzMgkJCXhpZDsKIAl1MzIJCQloYXJkX210dTsJLyogY291bnQgYW55IGV4dHJhIGZyYW1pbmcgKi8KQEAgLTIxMSwxMyAmIzQzOzIyMCw2IEBAIGV4dGVybiBpbnQgdXNibmV0X3dyaXRlX2NtZF9hc3luYyhzdHJ1Y3QgdXNibmV0ICpkZXYsIHU4IGNtZCwgdTggcmVxdHlwZSwKICAqIChub3RhYmx5LCB1c2luZyBtdWx0aXBsZSBpbnRlcmZhY2VzIGFjY29yZGluZyB0byB0aGUgQ0RDCiAgKiB1bmlvbiBkZXNjcmlwdG9yKSBnZXQgc29tZSBoZWxwZXIgY29kZS4KICAqLwotc3RydWN0IGNkY19zdGF0ZSB7Ci0Jc3RydWN0IHVzYl9jZGNfaGVhZGVyX2Rlc2MJKmhlYWRlcjsKLQlzdHJ1Y3QgdXNiX2NkY191bmlvbl9kZXNjCSp1OwotCXN0cnVjdCB1c2JfY2RjX2V0aGVyX2Rlc2MJKmV0aGVyOwotCXN0cnVjdCB1c2JfaW50ZXJmYWNlCQkqY29udHJvbDsKLQlzdHJ1Y3QgdXNiX2ludGVyZmFjZQkJKmRhdGE7Ci19OwogCiBleHRlcm4gdm9pZCB1c2JuZXRfY2RjX3VwZGF0ZV9maWx0ZXIoc3RydWN0IHVzYm5ldCAqZGV2KTsKIGV4dGVybiBpbnQgdXNibmV0X2dlbmVyaWNfY2RjX2JpbmQoc3RydWN0IHVzYm5ldCAqLCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTc6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjAwNQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDIwNzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIFVTQiBDREMgRXRoZXJuZXQgUmVmYWN0b3JpbmcgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCYjMzk7cyBzaHVmZmxpbmcgc29tZSBjb2RlIGFyb3VuZCBpbiB0aGUgVVNCIG5ldHdvcmtpbmcgc3RhY2suIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgbW92aW5nIGEgZmV3IGZ1bmN0aW9ucywgYHVzYm5ldF9jZGNfdXBkYXRlX2ZpbHRlcmAsIGB1c2JuZXRfY2RjX3N0YXR1c2AsIGFuZCBgdXNibmV0X2NkY196dGVfcnhfZml4dXBgLCBmcm9tIGBjZGNfZXRoZXIuY2AgaW50byB0aGUgbW9yZSBnZW5lcmFsIGB1c2JuZXQuY2AuIEl0JiMzOTtzIGFsc28gbW9kaWZ5aW5nIHRoZSBgc3RydWN0IHVzYm5ldGAgaW4gYHVzYm5ldC5oYC4gQmVmb3JlLCB0aGUgYGNkY19zdGF0ZWAgZGF0YSB3YXMgcGxhY2VkIG9uIHRvcCBvZiB0aGUgZ2VuZXJpYyBgZGF0YWAgYXJyYXk7IG5vdywgaXQmIzM5O3MgZ2V0dGluZyBpdHMgb3duIGRlZGljYXRlZCBgY2RjYCBtZW1iZXIuIEJhc2ljYWxseSwgaXTigJlzIGFsbG9jYXRpbmcgc3BhY2UgZm9yIGEgYHN0cnVjdCBjZGNfc3RhdGVgIGRpcmVjdGx5IHdpdGhpbiBgc3RydWN0IHVzYm5ldGAuIEFsc28gaXQgY2hhbmdlcyBgc3RydWN0IGNkY19zdGF0ZSAqaW5mbyA9ICh2b2lkICopICZhbXA7ZGV2LSZndDtkYXRhO2AgdG8gYHN0cnVjdCBjZGNfc3RhdGUgKmluZm8gPSAmYW1wO2Rldi0mZ3Q7Y2RjO2AgaW4gYSBmZXcgcGxhY2VzLgoKTXkgZmlyc3QgdGhvdWdodCBpcywgaXMgdGhpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlPyBUaGUgY29kZSYjMzk7cyBtb3ZpbmcsIHRoZSBzdHJ1Y3R1cmUgaXMgZGlmZmVyZW50LCBzbyBob3cgZG9lcyBpdCBhZmZlY3QgdGhpbmdzPyBJdCBsb29rcyBsaWtlIHRoZSBtYWluIGdvYWwgaXMgdG8gYXZvaWQgYWxpYXNpbmcgaXNzdWVzIGFuZCBpbXByb3ZlIGNsYXJpdHkuIEl0JiMzOTtzIG1ha2luZyB0aGUgc3RydWN0IGxheW91dCBtb3JlIGV4cGxpY2l0LgoKVGhlIGNvZGUgY2hhbmdlcyBhcHBlYXIgdG8gYmUgbWFpbmx5IHJlZmFjdG9yaW5nLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZS4gSSYjMzk7bSBmb2N1c2luZyBvbiB3aGV0aGVyIHRoaXMgYWZmZWN0cyBleGlzdGluZyBkcml2ZXJzIG9yIGFkZHMgbmV3IGxvZ2ljLiBJIHF1aWNrbHkgY2hlY2sgdGhlIGZ1bmN0aW9ucyBiZWluZyBtb3ZlZC4gTm9wZSwgdGhleSBhcmUgaWRlbnRpY2FsLiBUaGV5IHNlZW0gdG8gYmUgbW92ZWQgZnJvbSBhIHNwZWNpZmljIGRyaXZlciAoYGNkY19ldGhlcmApIHRvIHRoZSBjb3JlIG1vZHVsZSAoYHVzYm5ldGApLiBUaGlzIGNoYW5nZSBtaWdodCBiZSB0byBhbGxvdyBvdGhlciBkcml2ZXJzIHRvIHVzZSB0aGVtIHdpdGhvdXQgZGVwZW5kaW5nIG9uIGBjZGNfZXRoZXJgLgoKSSBjaGVjayB0aGUgc3RydWN0IGNoYW5nZSBtb3JlIGNsb3NlbHkuIFRoZSBzaXplIG9mIGBzdHJ1Y3QgdXNibmV0YCBpcyBpbmNyZWFzaW5nLCBidXQgYGRhdGFbNV1gIGlzIHN0aWxsIHRoZXJlLCBzbyB0aGUgbmV3IGBjZGNgIGZpZWxkIGlzIG5vdCBvdmVybGF5aW5nIGFueXRoaW5nLiBQcmV2aW91c2x5LCB0aGVyZSB3YXMgYW4gb3ZlcmxhcCBhbmQgbm93IGl04oCZcyBhbGwgZGVkaWNhdGVkLiBUaGlzIG1lYW5zIHRoZSBgZGF0YWAgYXJyYXkgaXMgbm8gbG9uZ2VyIHVzZWQgZm9yIHRoZSBgY2RjX3N0YXRlYC4gSXQmIzM5O3MgYSBjbGVhbiByZWZhY3RvcmluZy4KClNvLCBkb2VzIGl0IHdhcnJhbnQgZnV6emluZz8gVHlwaWNhbGx5LCBqdXN0IG1vdmluZyBjb2RlIGFuZCBjaGFuZ2luZyBzdHJ1Y3QgbGF5b3V0cyAqd2l0aG91dCogaW50cm9kdWNpbmcgbmV3IGxvZ2ljIGRvZXNuJiMzOTt0IG5lY2Vzc2l0YXRlIGZvY3VzZWQgZnV6emluZywgYnV0IGl0IGNhbiBiZSBhIGdvb2QgdGVzdCB0byBjaGVjayBpdCBkaWRuJiMzOTt0IGJyZWFrIGFueXRoaW5nLiBBbmQgc2luY2UgdGhlIHByb21wdCYjMzk7cyBpbnN0cnVjdGlvbnMgYXJlIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggY29udGFpbnMgJiMzNDtQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLi4uJiMzNDsgSSBuZWVkIHRvIGJlIHN1cmUuCgpCdXQgdGhlbiBJIHRoaW5rLi4uIGlzIHRoZXJlIGEgc3VidGxlIGZ1bmN0aW9uYWwgY2hhbmdlPyBTZXBhcmF0aW5nIGBjZGNgIGFuZCBgZGF0YWAgbWlnaHQgZml4IGEgYnVnIHdoZXJlIGBkYXRhYCB3YXMgb3ZlcndyaXR0ZW4sIGJ1dCBvbmx5IGlmIGFub3RoZXIgZHJpdmVyIHdhcyB1c2luZyBib3RoIHRoZSBnZW5lcmljIGRhdGEgYXJyYXkgYW5kIHRoZSBDREMgc3RhdGUgdGhyb3VnaCB0aGUgYXJyYXkuIFRoaXMgaXMgcHJvYmFibHkgYSBidWcgZml4LiBCdXQgaW4gb3VyIGNhc2UgdGhlIGBjZGNfZXRoZXJgIGFuZCBgcm5kaXNfaG9zdGAgdXNlIGl0IHRoZSBvbGQgd2F5LiBJIHNob3VsZCBjaGVjayB0aGUgY29tbWl0IG1lc3NhZ2UsIGJ1dCBJIGRvbiYjMzk7dCBoYXZlIGl0LgoKVGhlIGRpZmYgZG9lcyBub3Qgc2hvdyBuZXcgY29kZSwgb25seSBtb3ZpbmcsIGFuZCBzdHJ1Y3QgY2hhbmdlcy4gVGhlIHBhdGNoIGlzIGRlZmluaXRlbHkgcmVmYWN0b3JpbmcuIEl0IG1vdmVzIGZ1bmN0aW9ucyBhbmQgY2hhbmdlcyBzdHJ1Y3QgbGF5b3V0LgoKU28sIGFtIEkgYXQgYFdvcnRoRnV6emluZz1mYWxzZWAgb3IgYFdvcnRoRnV6emluZz10cnVlYD8gVGhlIHByb21wdCBkb2VzbuKAmXQgZXhwbGljaXRseSBzYXkgcmVmYWN0b3JpbmcgaXMgYFdvcnRoRnV6emluZz1mYWxzZWAuIEJ1dCwgaXQgKmRvZXMqIHNheSBpZiBpdCBtb2RpZmllcyByZWFjaGFibGUga2VybmVsIGxvZ2ljLCBJIG5lZWQgdG8gZG8gZnVydGhlciBjaGVja3MgYW5kIHJldHVybiBgV29ydGhGdXp6aW5nPXRydWVgLiBSZWZhY3RvcmluZyAqZG9lcyogbW9kaWZ5IHJlYWNoYWJsZSBkcml2ZXJzLiBBbmQgdGhhdCBsb2dpYyAqaXMqIGFjY2Vzc2libGUgYnkgZHJpdmVycywgZXNwZWNpYWxseSB0aHJvdWdoIENEQyBFdGhlcm5ldC4gVGhlcmVmb3JlLCBpZiBJIHNheSBgV29ydGhGdXp6aW5nPXRydWVgLCB0aGUgZm9jdXMgc3ltYm9scyB3b3VsZCBiZSBgdXNibmV0X2NkY19zdGF0dXNgLCBgdXNibmV0X2NkY191cGRhdGVfZmlsdGVyYCwgYW5kIGB1c2JuZXRfY2RjX3p0ZV9yeF9maXh1cGAuIFRoZXkmIzM5O3JlIHRoZSBjcml0aWNhbCBwaWVjZXMgb2YgdGhpcyBzaHVmZmxlLiBUaGVzZSBmdW5jdGlvbnMgKmFyZSogcmVhY2hhYmxlLgoKQWZ0ZXIgY29uc2lkZXJhdGlvbiwgSSB3aWxsIG1hcmsgaXQgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoaXMgaXMgYmVjYXVzZSB0aGUgZnVuY3Rpb25zIGFuZCBzdHJ1Y3QgbGF5b3V0IGFyZSByZWZhY3RvcmVkLCBidXQgbm8gbmV3IGZlYXR1cmVzIG9yIGZ1bmN0aW9uYWwgbG9naWMgaXMgaW50cm9kdWNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1c2JuZXRfY2RjX3N0YXR1cyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmM9NDEwPXN0YXRpYyB2b2lkIHVzYm5ldF9jZGNfenRlX3N0YXR1cyhzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1cmIgKnVyYilcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmMtNDE5LVx0aWYgKGV2ZW50LVx1MDAzZWJOb3RpZmljYXRpb25UeXBlICE9IFVTQl9DRENfTk9USUZZX05FVFdPUktfQ09OTkVDVElPTikge1xuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jOjQyMDpcdFx0dXNibmV0X2NkY19zdGF0dXMoZGV2LCB1cmIpO1xuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jLTQyMS1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYz00MzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mb1x0Y2RjX2luZm8gPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jLTQzOC1cdC51bmJpbmQgPVx0dXNibmV0X2NkY191bmJpbmQsXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmM6NDM5Olx0LnN0YXR1cyA9XHR1c2JuZXRfY2RjX3N0YXR1cyxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYy00NDAtXHQuc2V0X3J4X21vZGUgPVx0dXNibmV0X2NkY191cGRhdGVfZmlsdGVyLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYz00NTU9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyB3d2FuX2luZm8gPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jLTQ1OS1cdC51bmJpbmQgPVx0dXNibmV0X2NkY191bmJpbmQsXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmM6NDYwOlx0LnN0YXR1cyA9XHR1c2JuZXRfY2RjX3N0YXR1cyxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYy00NjEtXHQuc2V0X3J4X21vZGUgPVx0dXNibmV0X2NkY191cGRhdGVfZmlsdGVyLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sZy12bDYwMC5jPTMwMT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvXHR2bDYwMF9pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9sZy12bDYwMC5jLTMwNS1cdC51bmJpbmRcdFx0PSB2bDYwMF91bmJpbmQsXG5kcml2ZXJzL25ldC91c2IvbGctdmw2MDAuYzozMDY6XHQuc3RhdHVzXHRcdD0gdXNibmV0X2NkY19zdGF0dXMsXG5kcml2ZXJzL25ldC91c2IvbGctdmw2MDAuYy0zMDctXHQucnhfZml4dXBcdD0gdmw2MDBfcnhfZml4dXAsXG4tLVxuZHJpdmVycy9uZXQvdXNiL3I4MTUzX2VjbS5jPTExNT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIHI4MTUzX2luZm8gPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL3I4MTUzX2VjbS5jLTExOS1cdC51bmJpbmQgPVx0dXNibmV0X2NkY191bmJpbmQsXG5kcml2ZXJzL25ldC91c2IvcjgxNTNfZWNtLmM6MTIwOlx0LnN0YXR1cyA9XHR1c2JuZXRfY2RjX3N0YXR1cyxcbmRyaXZlcnMvbmV0L3VzYi9yODE1M19lY20uYy0xMjEtXHQubWFuYWdlX3Bvd2VyID1cdHVzYm5ldF9tYW5hZ2VfcG93ZXIsXG4tLVxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jPTIzMDU9c3RhdGljIHZvaWQgc3BlZWRfY2hhbmdlKHN0cnVjdCB1c2JuZXQgKmRldiwgX19sZTMyICpzcGVlZHMpXG4tLVxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTIzMTAtXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmM6MjMxMTp2b2lkIHVzYm5ldF9jZGNfc3RhdHVzKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVyYiAqdXJiKVxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTIzMTIte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYy0yMzQ4LX1cbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYzoyMzQ5OkVYUE9SVF9TWU1CT0xfR1BMKHVzYm5ldF9jZGNfc3RhdHVzKTtcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYy0yMzUwLVxuLS1cbmluY2x1ZGUvbGludXgvdXNiL3VzYm5ldC5oPTIyOD1leHRlcm4gdm9pZCB1c2JuZXRfY2RjX3VuYmluZChzdHJ1Y3QgdXNibmV0ICosIHN0cnVjdCB1c2JfaW50ZXJmYWNlICopO1xuaW5jbHVkZS9saW51eC91c2IvdXNibmV0Lmg6MjI5OmV4dGVybiB2b2lkIHVzYm5ldF9jZGNfc3RhdHVzKHN0cnVjdCB1c2JuZXQgKiwgc3RydWN0IHVyYiAqKTtcbmluY2x1ZGUvbGludXgvdXNiL3VzYm5ldC5oLTIzMC1leHRlcm4gaW50IHVzYm5ldF9jZGNfenRlX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTc6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTkyNQoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDIyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWZhY3RvcmluZyBBbmFseXNpczogdXNibmV0X2NkY19zdGF0dXMgTW92ZSoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIG1vdmluZyBgdXNibmV0X2NkY19zdGF0dXNgIGFuZCBhIGZldyBvdGhlciB0aGluZ3MgaW50byBgdXNibmV0LmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGlzIHRoZXJlIGFueSByZWFsIG5lZWQgdG8gZnV6eiB0aGlzPyBJZiBpdCYjMzk7cyBhIHN0cmFpZ2h0Zm9yd2FyZCByZWZhY3RvcmluZywgdGhlIHVuZGVybHlpbmcgbG9naWMgaXMgaWRlbnRpY2FsLCBzbyBpdCBzZWVtcyBsaWtlIGEgbG93LXlpZWxkIHRhcmdldCBmb3IgZnV6emluZy4KCkJ1dCB3YWl0LCBob2xkIG9uLiBMZXQmIzM5O3MgZGlnIGRlZXBlciBpbnRvIHRoYXQgYGNkY19zdGF0ZWAgY2hhbmdlLiBUaGUgb3JpZ2luYWwgY29kZSBoYWQgYHN0cnVjdCBjZGNfc3RhdGUgKmluZm8gPSAodm9pZCAqKSAmYW1wO2Rldi0mZ3Q7ZGF0YTtgIGFuZCBub3cgaXQmIzM5O3MgYHN0cnVjdCBjZGNfc3RhdGUgKmluZm8gPSAmYW1wO2Rldi0mZ3Q7Y2RjO2AuIFRoYXQmIzM5O3Mgc2lnbmlmaWNhbnQuIEl0IG1lYW5zIGBjZGNfc3RhdGVgIGlzIG5vIGxvbmdlciBhbGlhc2VkIHdpdGggYGRhdGFgLiBJIGJldCB0aGlzIGlzIGFpbWVkIGF0IGZpeGluZyBhIHBvdGVudGlhbCBjb25jdXJyZW5jeSBpc3N1ZSwgd2hlcmUgYSBkcml2ZXIgd2FzIHBvdGVudGlhbGx5IHVzaW5nIGJvdGggYGNkY19zdGF0ZWAgYW5kIGBkYXRhYCBzaW11bHRhbmVvdXNseS4KCkkgbmVlZCB0byBjb25maXJtIHRoYXQgc3VzcGljaW9uLiBMZXQgbWUgY2hlY2sgaWYgYW55IGRyaXZlcnMgd2VyZSwgaW4gZmFjdCwgZG9pbmcgdGhhdC4gSSByZWNhbGwgYGRldi0mZ3Q7ZGF0YWAgaXMgYW4gYXJyYXkgb2YgZml2ZSBgdW5zaWduZWQgbG9uZ2BzLCBhbmQgYGNkY19zdGF0ZWAgaXMgZml2ZSBwb2ludGVycy4gSWYgYSBkcml2ZXIgZGVjaWRlZCB0byB1c2UgYGRldi0mZ3Q7ZGF0YWAgZm9yIGl0cyBvd24gc3RhdGUsIGJ1dCBhbHNvIHV0aWxpemVkIGFueSBDREMgZnVuY3Rpb25zLCB0aGF0IHdvdWxkIGluZXZpdGFibHkgY29ycnVwdCB0aGUgYGNkY19zdGF0ZWAgZGF0YS4gVGhpcyBpcyB3aGVyZSBJIGNhbiBhcHBseSBteSBleHBlcnRpc2UuIEkgc2hvdWxkIGJlIGFibGUgdG8gaWRlbnRpZnkgYW55IGRyaXZlcnMgdGhhdCBtaWdodCBoYXZlIGZhbGxlbiBpbnRvIHRoaXMgdHJhcCBhbmQgd2VyZSByZWx5aW5nIG9uIHNoYXJlZCBtZW1vcnkgdGhhdCB3YXMsIGVmZmVjdGl2ZWx5LCBhIHRpbWUtYm9tYi4gSSBuZWVkIHRvIGtub3cgaWYgYW55IGRyaXZlcnMgdXNlZCBgZGV2LSZndDtkYXRhYCB3aGlsZSBzaW11bHRhbmVvdXNseSBjYWxsaW5nIENEQyBmdW5jdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTc6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGV2LVx1MDAzZWRhdGEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDI4MzkgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmJsb2NrL3NlZC1vcGFsLmM9NDYwPXN0YXRpYyBpbnQgb3BhbF9zZW5kX2NtZChzdHJ1Y3Qgb3BhbF9kZXYgKmRldilcbmJsb2NrL3NlZC1vcGFsLmMtNDYxLXtcbmJsb2NrL3NlZC1vcGFsLmM6NDYyOlx0cmV0dXJuIGRldi1cdTAwM2VzZW5kX3JlY3YoZGV2LVx1MDAzZWRhdGEsIGRldi1cdTAwM2Vjb21pZCwgVENHX1NFQ1BfMDEsXG5ibG9jay9zZWQtb3BhbC5jLTQ2My1cdFx0XHQgICAgICBkZXYtXHUwMDNlY21kLCBJT19CVUZGRVJfTEVOR1RILFxuLS1cbmJsb2NrL3NlZC1vcGFsLmM9NDY3PXN0YXRpYyBpbnQgb3BhbF9yZWN2X2NtZChzdHJ1Y3Qgb3BhbF9kZXYgKmRldilcbmJsb2NrL3NlZC1vcGFsLmMtNDY4LXtcbmJsb2NrL3NlZC1vcGFsLmM6NDY5Olx0cmV0dXJuIGRldi1cdTAwM2VzZW5kX3JlY3YoZGV2LVx1MDAzZWRhdGEsIGRldi1cdTAwM2Vjb21pZCwgVENHX1NFQ1BfMDEsXG5ibG9jay9zZWQtb3BhbC5jLTQ3MC1cdFx0XHQgICAgICBkZXYtXHUwMDNlcmVzcCwgSU9fQlVGRkVSX0xFTkdUSCxcbi0tXG5ibG9jay9zZWQtb3BhbC5jPTI1OTg9c3RydWN0IG9wYWxfZGV2ICppbml0X29wYWxfZGV2KHZvaWQgKmRhdGEsIHNlY19zZW5kX3JlY3YgKnNlbmRfcmVjdilcbi0tXG5ibG9jay9zZWQtb3BhbC5jLTI2MjAtXHRkZXYtXHUwMDNlZmxhZ3MgPSAwO1xuYmxvY2svc2VkLW9wYWwuYzoyNjIxOlx0ZGV2LVx1MDAzZWRhdGEgPSBkYXRhO1xuYmxvY2svc2VkLW9wYWwuYy0yNjIyLVx0ZGV2LVx1MDAzZXNlbmRfcmVjdiA9IHNlbmRfcmVjdjtcbi0tXG5ibG9jay9zZWQtb3BhbC5jPTM1NDg9c3RhdGljIGludCBvcGFsX3N0YWNrX3Jlc2V0KHN0cnVjdCBvcGFsX2RldiAqZGV2KVxuLS1cbmJsb2NrL3NlZC1vcGFsLmMtMzU2MS1cbmJsb2NrL3NlZC1vcGFsLmM6MzU2MjpcdHJldCA9IGRldi1cdTAwM2VzZW5kX3JlY3YoZGV2LVx1MDAzZWRhdGEsIGRldi1cdTAwM2Vjb21pZCwgVENHX1NFQ1BfMDIsXG5ibG9jay9zZWQtb3BhbC5jLTM1NjMtXHRcdFx0ICAgICBkZXYtXHUwMDNlY21kLCBJT19CVUZGRVJfTEVOR1RILCB0cnVlKTtcbi0tXG5ibG9jay9zZWQtb3BhbC5jLTM1NjktXHRtZW1zZXQoZGV2LVx1MDAzZXJlc3AsIDAsIElPX0JVRkZFUl9MRU5HVEgpO1xuYmxvY2svc2VkLW9wYWwuYzozNTcwOlx0cmV0ID0gZGV2LVx1MDAzZXNlbmRfcmVjdihkZXYtXHUwMDNlZGF0YSwgZGV2LVx1MDAzZWNvbWlkLCBUQ0dfU0VDUF8wMixcbmJsb2NrL3NlZC1vcGFsLmMtMzU3MS1cdFx0XHQgICAgIGRldi1cdTAwM2VyZXNwLCBJT19CVUZGRVJfTEVOR1RILCBmYWxzZSk7XG4tLVxuZHJpdmVycy9hY3BpL2J1cy5jPTkwMT1ib29sIGFjcGlfb2ZfbWF0Y2hfZGV2aWNlKGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZSAqYWRldixcbi0tXG5kcml2ZXJzL2FjcGkvYnVzLmMtOTEwLVxuZHJpdmVycy9hY3BpL2J1cy5jOjkxMTpcdG9mX2NvbXBhdGlibGUgPSBhZGV2LVx1MDAzZWRhdGEub2ZfY29tcGF0aWJsZTtcbmRyaXZlcnMvYWNwaS9idXMuYy05MTItXHRpZiAoIW9mX21hdGNoX3RhYmxlIHx8ICFvZl9jb21wYXRpYmxlKVxuLS1cbmRyaXZlcnMvYWNwaS9idXMuYz05Mzc9c3RhdGljIGJvb2wgYWNwaV9vZl9tb2RhbGlhcyhzdHJ1Y3QgYWNwaV9kZXZpY2UgKmFkZXYsXG4tLVxuZHJpdmVycy9hY3BpL2J1cy5jLTk0My1cbmRyaXZlcnMvYWNwaS9idXMuYzo5NDQ6XHRvZl9jb21wYXRpYmxlID0gYWRldi1cdTAwM2VkYXRhLm9mX2NvbXBhdGlibGU7XG5kcml2ZXJzL2FjcGkvYnVzLmMtOTQ1LVx0aWYgKCFvZl9jb21wYXRpYmxlKVxuLS1cbmRyaXZlcnMvYWNwaS9kZXZpY2Vfc3lzZnMuYz0xOTI9c3RhdGljIGludCBjcmVhdGVfb2ZfbW9kYWxpYXMoY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlICphY3BpX2RldiwgY2hhciAqbW9kYWxpYXMsXG4tLVxuZHJpdmVycy9hY3BpL2RldmljZV9zeXNmcy5jLTIxNy1cbmRyaXZlcnMvYWNwaS9kZXZpY2Vfc3lzZnMuYzoyMTg6XHRvZl9jb21wYXRpYmxlID0gYWNwaV9kZXYtXHUwMDNlZGF0YS5vZl9jb21wYXRpYmxlO1xuZHJpdmVycy9hY3BpL2RldmljZV9zeXNmcy5jLTIxOS1cdGlmIChvZl9jb21wYXRpYmxlLVx1MDAzZXR5cGUgPT0gQUNQSV9UWVBFX1BBQ0tBR0UpIHtcbi0tXG5kcml2ZXJzL2FjcGkvZGV2aWNlX3N5c2ZzLmM9MjQwPWludCBfX2FjcGlfZGV2aWNlX3VldmVudF9tb2RhbGlhcyhjb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2UgKmFkZXYsXG4tLVxuZHJpdmVycy9hY3BpL2RldmljZV9zeXNmcy5jLTI1My1cbmRyaXZlcnMvYWNwaS9kZXZpY2Vfc3lzZnMuYzoyNTQ6XHRpZiAoYWRldi1cdTAwM2VkYXRhLm9mX2NvbXBhdGlibGUpXG5kcml2ZXJzL2FjcGkvZGV2aWNlX3N5c2ZzLmMtMjU1LVx0XHRsZW4gPSBjcmVhdGVfb2ZfbW9kYWxpYXMoYWRldiwgXHUwMDI2ZW52LVx1MDAzZWJ1ZltlbnYtXHUwMDNlYnVmbGVuIC0gMV0sXG4tLVxuZHJpdmVycy9hY3BpL2RldmljZV9zeXNmcy5jPTI4ND1zdGF0aWMgaW50IF9fYWNwaV9kZXZpY2VfbW9kYWxpYXMoY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlICphZGV2LCBjaGFyICpidWYsIGludCBzaXplKVxuLS1cbmRyaXZlcnMvYWNwaS9kZXZpY2Vfc3lzZnMuYy0zMDAtXHR9XG5kcml2ZXJzL2FjcGkvZGV2aWNlX3N5c2ZzLmM6MzAxOlx0aWYgKCFhZGV2LVx1MDAzZWRhdGEub2ZfY29tcGF0aWJsZSlcbmRyaXZlcnMvYWNwaS9kZXZpY2Vfc3lzZnMuYy0zMDItXHRcdHJldHVybiBsZW47XG4tLVxuZHJpdmVycy9hY3BpL2RldmljZV9zeXNmcy5jPTYzOT12b2lkIGFjcGlfZGV2aWNlX3NldHVwX2ZpbGVzKHN0cnVjdCBhY3BpX2RldmljZSAqZGV2KVxuZHJpdmVycy9hY3BpL2RldmljZV9zeXNmcy5jLTY0MC17XG5kcml2ZXJzL2FjcGkvZGV2aWNlX3N5c2ZzLmM6NjQxOlx0YWNwaV9leHBvc2Vfbm9uZGV2X3N1Ym5vZGVzKFx1MDAyNmRldi1cdTAwM2VkZXYua29iaiwgXHUwMDI2ZGV2LVx1MDAzZWRhdGEpO1xuZHJpdmVycy9hY3BpL2RldmljZV9zeXNmcy5jLTY0Mi19XG4tLVxuZHJpdmVycy9hY3BpL2RldmljZV9zeXNmcy5jPTY0OD12b2lkIGFjcGlfZGV2aWNlX3JlbW92ZV9maWxlcyhzdHJ1Y3QgYWNwaV9kZXZpY2UgKmRldilcbmRyaXZlcnMvYWNwaS9kZXZpY2Vfc3lzZnMuYy02NDkte1xuZHJpdmVycy9hY3BpL2RldmljZV9zeXNmcy5jOjY1MDpcdGFjcGlfaGlkZV9ub25kZXZfc3Vibm9kZXMoXHUwMDI2ZGV2LVx1MDAzZWRhdGEpO1xuZHJpdmVycy9hY3BpL2RldmljZV9zeXNmcy5jLTY1MS19XG4tLVxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM9MzQyPXN0YXRpYyB2b2lkIGFjcGlfaW5pdF9vZl9jb21wYXRpYmxlKHN0cnVjdCBhY3BpX2RldmljZSAqYWRldilcbi0tXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYy0zNDYtXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYzozNDc6XHRyZXQgPSBhY3BpX2RhdGFfZ2V0X3Byb3BlcnR5X2FycmF5KFx1MDAyNmFkZXYtXHUwMDNlZGF0YSwgXCYjMzQ7Y29tcGF0aWJsZVwmIzM0OyxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTM0OC1cdFx0XHRcdFx0ICAgQUNQSV9UWVBFX1NUUklORywgXHUwMDI2b2ZfY29tcGF0aWJsZSk7XG4tLVxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtMzYxLVx0fVxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM6MzYyOlx0YWRldi1cdTAwM2VkYXRhLm9mX2NvbXBhdGlibGUgPSBvZl9jb21wYXRpYmxlO1xuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtMzYzLVxuLS1cbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jPTU4NT12b2lkIGFjcGlfaW5pdF9wcm9wZXJ0aWVzKHN0cnVjdCBhY3BpX2RldmljZSAqYWRldilcbi0tXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYy01OTEtXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYzo1OTI6XHRJTklUX0xJU1RfSEVBRChcdTAwMjZhZGV2LVx1MDAzZWRhdGEucHJvcGVydGllcyk7XG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYzo1OTM6XHRJTklUX0xJU1RfSEVBRChcdTAwMjZhZGV2LVx1MDAzZWRhdGEuc3Vibm9kZXMpO1xuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtNTk0LVxuLS1cbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTYxMy1cbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjYxNDpcdGlmIChhY3BpX2V4dHJhY3RfcHJvcGVydGllcyhhZGV2LVx1MDAzZWhhbmRsZSwgYnVmLnBvaW50ZXIsIFx1MDAyNmFkZXYtXHUwMDNlZGF0YSkpIHtcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjYxNTpcdFx0YWRldi1cdTAwM2VkYXRhLnBvaW50ZXIgPSBidWYucG9pbnRlcjtcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTYxNi1cdFx0aWYgKGFjcGlfb2YpXG4tLVxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtNjE5LVx0aWYgKGFjcGlfZW51bWVyYXRlX25vbmRldl9zdWJub2RlcyhhZGV2LVx1MDAzZWhhbmRsZSwgYnVmLnBvaW50ZXIsXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYzo2MjA6XHRcdFx0XHRcdFx1MDAyNmFkZXYtXHUwMDNlZGF0YSwgYWNwaV9md25vZGVfaGFuZGxlKGFkZXYpKSlcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjYyMTpcdFx0YWRldi1cdTAwM2VkYXRhLnBvaW50ZXIgPSBidWYucG9pbnRlcjtcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTYyMi1cbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjYyMzpcdGlmICghYWRldi1cdTAwM2VkYXRhLnBvaW50ZXIpIHtcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTYyNC1cdFx0YWNwaV9oYW5kbGVfZGVidWcoYWRldi1cdTAwM2VoYW5kbGUsIFwmIzM0O0ludmFsaWQgX0RTRCBkYXRhLCBza2lwcGluZ1xcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtNjI2LVx0fSBlbHNlIHtcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjYyNzpcdFx0aWYgKCFhY3BpX3RpZV9ub25kZXZfc3Vibm9kZXMoXHUwMDI2YWRldi1cdTAwM2VkYXRhKSlcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjYyODpcdFx0XHRhY3BpX3VudGllX25vbmRldl9zdWJub2RlcyhcdTAwMjZhZGV2LVx1MDAzZWRhdGEpO1xuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtNjI5LVx0fVxuLS1cbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTYzNS1cbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjYzNjpcdGlmICghYWRldi1cdTAwM2VkYXRhLnBvaW50ZXIpXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYy02MzctXHRcdGFjcGlfZXh0cmFjdF9hcHBsZV9wcm9wZXJ0aWVzKGFkZXYpO1xuLS1cbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jPTY3Mz12b2lkIGFjcGlfZnJlZV9wcm9wZXJ0aWVzKHN0cnVjdCBhY3BpX2RldmljZSAqYWRldilcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTY3NC17XG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYzo2NzU6XHRhY3BpX3VudGllX25vbmRldl9zdWJub2RlcyhcdTAwMjZhZGV2LVx1MDAzZWRhdGEpO1xuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM6Njc2Olx0YWNwaV9kZXN0cm95X25vbmRldl9zdWJub2RlcyhcdTAwMjZhZGV2LVx1MDAzZWRhdGEuc3Vibm9kZXMpO1xuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM6Njc3Olx0QUNQSV9GUkVFKCh2b2lkICopYWRldi1cdTAwM2VkYXRhLnBvaW50ZXIpO1xuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM6Njc4Olx0YWRldi1cdTAwM2VkYXRhLm9mX2NvbXBhdGlibGUgPSBOVUxMO1xuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM6Njc5Olx0YWRldi1cdTAwM2VkYXRhLnBvaW50ZXIgPSBOVUxMO1xuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM6NjgwOlx0YWNwaV9mcmVlX2RldmljZV9wcm9wZXJ0aWVzKFx1MDAyNmFkZXYtXHUwMDNlZGF0YS5wcm9wZXJ0aWVzKTtcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTY4MS19XG4tLVxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM9NzQ4PWludCBhY3BpX2Rldl9nZXRfcHJvcGVydHkoY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlICphZGV2LCBjb25zdCBjaGFyICpuYW1lLFxuLS1cbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTc1MC17XG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYzo3NTE6XHRyZXR1cm4gYWRldiA/IGFjcGlfZGF0YV9nZXRfcHJvcGVydHkoXHUwMDI2YWRldi1cdTAwM2VkYXRhLCBuYW1lLCB0eXBlLCBvYmopIDogLUVJTlZBTDtcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTc1Mi19XG4tLVxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM9NzU2PWFjcGlfZGV2aWNlX2RhdGFfb2Zfbm9kZShjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlKVxuLS1cbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTc1OS1cdFx0Y29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlICphZGV2ID0gdG9fYWNwaV9kZXZpY2Vfbm9kZShmd25vZGUpO1xuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM6NzYwOlx0XHRyZXR1cm4gXHUwMDI2YWRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtNzYxLVx0fVxuLS1cbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jPTEzMzg9YWNwaV9nZXRfbmV4dF9zdWJub2RlKGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXG4tLVxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtMTM2Ny1cdFx0aWYgKGFkZXYpXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYzoxMzY4Olx0XHRcdGhlYWQgPSBcdTAwMjZhZGV2LVx1MDAzZWRhdGEuc3Vibm9kZXM7XG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYy0xMzY5LVx0XHRlbHNlIGlmIChkYXRhKVxuLS1cbmRyaXZlcnMvYWNwaS9zY2FuLmM9MjI5MT1zdGF0aWMgaW50IGFjcGlfZ2VuZXJpY19kZXZpY2VfYXR0YWNoKHN0cnVjdCBhY3BpX2RldmljZSAqYWRldixcbi0tXG5kcml2ZXJzL2FjcGkvc2Nhbi5jLTIyOTctXHQgKi9cbmRyaXZlcnMvYWNwaS9zY2FuLmM6MjI5ODpcdGlmIChhZGV2LVx1MDAzZWRhdGEub2ZfY29tcGF0aWJsZSlcbmRyaXZlcnMvYWNwaS9zY2FuLmMtMjI5OS1cdFx0YWNwaV9kZWZhdWx0X2VudW1lcmF0aW9uKGFkZXYpO1xuLS1cbmRyaXZlcnMvYWNwaS94ODYvYXBwbGUuYz0yOD12b2lkIGFjcGlfZXh0cmFjdF9hcHBsZV9wcm9wZXJ0aWVzKHN0cnVjdCBhY3BpX2RldmljZSAqYWRldilcbi0tXG5kcml2ZXJzL2FjcGkveDg2L2FwcGxlLmMtMTQxLVxuZHJpdmVycy9hY3BpL3g4Ni9hcHBsZS5jOjE0MjpcdGFkZXYtXHUwMDNlZGF0YS5wb2ludGVyID0gbmV3cHJvcHM7XG5kcml2ZXJzL2FjcGkveDg2L2FwcGxlLmM6MTQzOlx0YWNwaV9kYXRhX2FkZF9wcm9wcyhcdTAwMjZhZGV2LVx1MDAzZWRhdGEsIFx1MDAyNmFwcGxlX3BycF9ndWlkLCBuZXdwcm9wcyk7XG5kcml2ZXJzL2FjcGkveDg2L2FwcGxlLmMtMTQ0LVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTc3Nz1zdGF0aWMgc3RydWN0IG51bGxiX2RldmljZSAqbnVsbF9hbGxvY19kZXYodm9pZClcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy03OTAtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo3OTE6XHRJTklUX1JBRElYX1RSRUUoXHUwMDI2ZGV2LVx1MDAzZWRhdGEsIEdGUF9BVE9NSUMpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzkyLVx0SU5JVF9SQURJWF9UUkVFKFx1MDAyNmRldi1cdTAwM2VjYWNoZSwgR0ZQX0FUT01JQyk7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9OTAwPXN0YXRpYyB2b2lkIG51bGxfZnJlZV9zZWN0b3Ioc3RydWN0IG51bGxiICpudWxsYiwgc2VjdG9yX3Qgc2VjdG9yLFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTkwNy1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjkwODpcdHJvb3QgPSBpc19jYWNoZSA/IFx1MDAyNm51bGxiLVx1MDAzZWRldi1cdTAwM2VjYWNoZSA6IFx1MDAyNm51bGxiLVx1MDAzZWRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtOTA5LVx0aWR4ID0gc2VjdG9yIFx1MDAzZVx1MDAzZSBQQUdFX1NFQ1RPUlNfU0hJRlQ7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9OTI2PXN0YXRpYyBzdHJ1Y3QgbnVsbGJfcGFnZSAqbnVsbF9yYWRpeF90cmVlX2luc2VydChzdHJ1Y3QgbnVsbGIgKm51bGxiLCB1NjQgaWR4LFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTkzMC1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjkzMTpcdHJvb3QgPSBpc19jYWNoZSA/IFx1MDAyNm51bGxiLVx1MDAzZWRldi1cdTAwM2VjYWNoZSA6IFx1MDAyNm51bGxiLVx1MDAzZWRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtOTMyLVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTk0Mz1zdGF0aWMgdm9pZCBudWxsX2ZyZWVfZGV2aWNlX3N0b3JhZ2Uoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LCBib29sIGlzX2NhY2hlKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTk0OS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjk1MDpcdHJvb3QgPSBpc19jYWNoZSA/IFx1MDAyNmRldi1cdTAwM2VjYWNoZSA6IFx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtOTUxLVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTk3Mj1zdGF0aWMgc3RydWN0IG51bGxiX3BhZ2UgKl9fbnVsbF9sb29rdXBfcGFnZShzdHJ1Y3QgbnVsbGIgKm51bGxiLFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTk4Mi1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjk4MzpcdHJvb3QgPSBpc19jYWNoZSA/IFx1MDAyNm51bGxiLVx1MDAzZWRldi1cdTAwM2VjYWNoZSA6IFx1MDAyNm51bGxiLVx1MDAzZWRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtOTg0LVx0dF9wYWdlID0gcmFkaXhfdHJlZV9sb29rdXAocm9vdCwgaWR4KTtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0xMDQwPXN0YXRpYyBpbnQgbnVsbF9mbHVzaF9jYWNoZV9wYWdlKHN0cnVjdCBudWxsYiAqbnVsbGIsIHN0cnVjdCBudWxsYl9wYWdlICpjX3BhZ2UpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTA1NS1cdFx0aWYgKHRfcGFnZSBcdTAwMjZcdTAwMjYgbnVsbF9wYWdlX2VtcHR5KHRfcGFnZSkpIHtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjEwNTY6XHRcdFx0cmV0ID0gcmFkaXhfdHJlZV9kZWxldGVfaXRlbShcdTAwMjZudWxsYi1cdTAwM2VkZXYtXHUwMDNlZGF0YSxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEwNTctXHRcdFx0XHRpZHgsIHRfcGFnZSk7XG4tLVxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmM9MzI2PXN0YXRpYyBpbnQgYnRtdGtzZGlvX2Z3X3BtY3RybChzdHJ1Y3QgYnRtdGtzZGlvX2RldiAqYmRldilcbi0tXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYy0zMzItXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYzozMzM6XHRpZiAoYmRldi1cdTAwM2VkYXRhLVx1MDAzZWxwX21ib3hfc3VwcG9ydGVkIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmMtMzM0LVx0ICAgIHRlc3RfYml0KEJUTVRLU0RJT19QQVRDSF9FTkFCTEVELCBcdTAwMjZiZGV2LVx1MDAzZXR4X3N0YXRlKSkge1xuLS1cbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jPTM2Mz1zdGF0aWMgaW50IGJ0bXRrc2Rpb19kcnZfcG1jdHJsKHN0cnVjdCBidG10a3NkaW9fZGV2ICpiZGV2KVxuLS1cbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jLTM3Ny1cbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jOjM3ODpcdGlmICghZXJyIFx1MDAyNlx1MDAyNiBiZGV2LVx1MDAzZWRhdGEtXHUwMDNlbHBfbWJveF9zdXBwb3J0ZWQgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYy0zNzktXHQgICAgdGVzdF9iaXQoQlRNVEtTRElPX1BBVENIX0VOQUJMRUQsIFx1MDAyNmJkZXYtXHUwMDNldHhfc3RhdGUpKVxuLS1cbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jPTU1OD1zdGF0aWMgdm9pZCBidG10a3NkaW9fdHhyeF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYy01OTEtXHRcdGlmICgoaW50X3N0YXR1cyBcdTAwMjYgRldfTUFJTEJPWF9JTlQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmM6NTkyOlx0XHQgICAgYmRldi1cdTAwM2VkYXRhLVx1MDAzZWNoaXBpZCA9PSAweDc5MjEpIHtcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jLTU5My1cdFx0XHRzZGlvX3dyaXRlbChiZGV2LVx1MDAzZWZ1bmMsIFBIMkRTTTBSX0RSSVZFUl9PV04sXG4tLVxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmM9MTA5Mz1zdGF0aWMgaW50IGJ0bXRrc2Rpb19zZXR1cChzdHJ1Y3QgaGNpX2RldiAqaGRldilcbi0tXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYy0xMTA0LVxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmM6MTEwNTpcdHN3aXRjaCAoYmRldi1cdTAwM2VkYXRhLVx1MDAzZWNoaXBpZCkge1xuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmMtMTEwNi1cdGNhc2UgMHg3OTAyOlxuLS1cbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jLTExNzEtXHRjYXNlIDB4NzY2ODpcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jOjExNzI6XHRcdGVyciA9IG10NzZ4eF9zZXR1cChoZGV2LCBiZGV2LVx1MDAzZWRhdGEtXHUwMDNlZnduYW1lKTtcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jLTExNzMtXHRcdGlmIChlcnIgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmMtMTE4My1cbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jOjExODQ6XHRpZiAoYmRldi1cdTAwM2VkYXRhLVx1MDAzZXBtX3J1bnRpbWVfc3VwcG9ydGVkKSB7XG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYy0xMTg1LVx0XHRwbV9ydW50aW1lX3NldF9hdXRvc3VzcGVuZF9kZWxheShiZGV2LVx1MDAzZWRldixcbi0tXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYz0xMjcyPXN0YXRpYyB2b2lkIGJ0bXRrc2Rpb19yZXNldChzdHJ1Y3QgaGNpX2RldiAqaGRldilcbi0tXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYy0xMjc3LVxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmM6MTI3ODpcdGlmICghYmRldi1cdTAwM2VyZXNldCB8fCBiZGV2LVx1MDAzZWRhdGEtXHUwMDNlY2hpcGlkICE9IDB4NzkyMSlcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jLTEyNzktXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYz0xMzMyPXN0YXRpYyBib29sIGJ0bXRrc2Rpb19zZGlvX3dha2V1cChzdHJ1Y3QgaGNpX2RldiAqaGRldilcbi0tXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYy0xMzQzLVxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmM6MTM0NDpcdGlmIChtYXlfd2FrZXVwIFx1MDAyNlx1MDAyNiBiZGV2LVx1MDAzZWRhdGEtXHUwMDNlY2hpcGlkID09IDB4NzkyMSkge1xuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmMtMTM0NS1cdFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYz0xMzU4PXN0YXRpYyBpbnQgYnRtdGtzZGlvX3Byb2JlKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMsXG4tLVxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmMtMTM3MC1cbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jOjEzNzE6XHRiZGV2LVx1MDAzZWRhdGEgPSAodm9pZCAqKWlkLVx1MDAzZWRyaXZlcl9kYXRhO1xuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmM6MTM3MjpcdGlmICghYmRldi1cdTAwM2VkYXRhKVxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmMtMTM3My1cdFx0cmV0dXJuIC1FTk9ERVY7XG4tLVxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGt1YXJ0LmM9NTg5PXN0YXRpYyBpbnQgYnRtdGt1YXJ0X3NldHVwKHN0cnVjdCBoY2lfZGV2ICpoZGV2KVxuLS1cbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrdWFydC5jLTY0Mi1cdC8qIFNldHVwIGEgZmlybXdhcmUgd2hpY2ggdGhlIGRldmljZSBkZWZpbml0ZWx5IHJlcXVpcmVzICovXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3VhcnQuYzo2NDM6XHRlcnIgPSBidG10a19zZXR1cF9maXJtd2FyZShoZGV2LCBiZGV2LVx1MDAzZWRhdGEtXHUwMDNlZnduYW1lLCBtdGtfaGNpX3dtdF9zeW5jKTtcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrdWFydC5jLTY0NC1cdGlmIChlcnIgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGt1YXJ0LmM9ODI4PXN0YXRpYyBpbnQgYnRtdGt1YXJ0X3Byb2JlKHN0cnVjdCBzZXJkZXZfZGV2aWNlICpzZXJkZXYpXG4tLVxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGt1YXJ0LmMtODM3LVxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGt1YXJ0LmM6ODM4Olx0YmRldi1cdTAwM2VkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnNlcmRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9ibHVldG9vdGgvYnRtdGt1YXJ0LmM6ODM5Olx0aWYgKCFiZGV2LVx1MDAzZWRhdGEpXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3VhcnQuYy04NDAtXHRcdHJldHVybiAtRU5PREVWO1xuLS1cbmRyaXZlcnMvY3J5cHRvL2FzcGVlZC9hc3BlZWQtYWNyeS5jPTIxMD1zdGF0aWMgdm9pZCBhc3BlZWRfYWNyeV9yc2Ffc2dfY29weV90b19idWZmZXIoc3RydWN0IGFzcGVlZF9hY3J5X2RldiAqYWNyeV9kZXYsXG4tLVxuZHJpdmVycy9jcnlwdG8vYXNwZWVkL2FzcGVlZC1hY3J5LmMtMjIyLVx0Zm9yIChqID0gbmJ5dGVzIC0gMTsgaiBcdTAwM2U9IDA7IGotLSkge1xuZHJpdmVycy9jcnlwdG8vYXNwZWVkL2FzcGVlZC1hY3J5LmM6MjIzOlx0XHRkYXRhX2lkeCA9IGFjcnlfZGV2LVx1MDAzZWRhdGFfYnl0ZV9tYXBwaW5nW2ldO1xuZHJpdmVycy9jcnlwdG8vYXNwZWVkL2FzcGVlZC1hY3J5LmMtMjI0LVx0XHRidWZbZGF0YV9pZHhdID0gIGRyYW1fYnVmZmVyW2pdO1xuLS1cbmRyaXZlcnMvY3J5cHRvL2FzcGVlZC9hc3BlZWQtYWNyeS5jLTIyOC1cdGZvciAoOyBpIFx1MDAzYyBBU1BFRURfQUNSWV9TUkFNX01BWF9MRU47IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL2NyeXB0by9hc3BlZWQvYXNwZWVkLWFjcnkuYzoyMjk6XHRcdGRhdGFfaWR4ID0gYWNyeV9kZXYtXHUwMDNlZGF0YV9ieXRlX21hcHBpbmdbaV07XG5kcml2ZXJzL2NyeXB0by9hc3BlZWQvYXNwZWVkLWFjcnkuYy0yMzAtXHRcdGJ1ZltkYXRhX2lkeF0gPSAwO1xuLS1cbmRyaXZlcnMvY3J5cHRvL2FzcGVlZC9hc3BlZWQtYWNyeS5jPTI5OT1zdGF0aWMgaW50IGFzcGVlZF9hY3J5X3JzYV90cmFuc2ZlcihzdHJ1Y3QgYXNwZWVkX2FjcnlfZGV2ICphY3J5X2Rldilcbi0tXG5kcml2ZXJzL2NyeXB0by9hc3BlZWQvYXNwZWVkLWFjcnkuYy0zMTktXHRmb3IgKGogPSBBU1BFRURfQUNSWV9TUkFNX01BWF9MRU4gLSAxOyBqIFx1MDAzZT0gMDsgai0tKSB7XG5kcml2ZXJzL2NyeXB0by9hc3BlZWQvYXNwZWVkLWFjcnkuYzozMjA6XHRcdGRhdGFfaWR4ID0gYWNyeV9kZXYtXHUwMDNlZGF0YV9ieXRlX21hcHBpbmdbal07XG5kcml2ZXJzL2NyeXB0by9hc3BlZWQvYXNwZWVkLWFjcnkuYy0zMjEtXHRcdGlmIChyZWFkYihzcmFtX2J1ZmZlciAmIzQzOyBkYXRhX2lkeCkgPT0gMCBcdTAwMjZcdTAwMjYgbGVhZGluZ196ZXJvKSB7XG4tLVxuZHJpdmVycy9jcnlwdG8vYXNwZWVkL2FzcGVlZC1hY3J5LmM9Njc3PXN0YXRpYyB2b2lkIGFzcGVlZF9hY3J5X3NyYW1fbWFwcGluZyhzdHJ1Y3QgYXNwZWVkX2FjcnlfZGV2ICphY3J5X2Rldilcbi0tXG5kcml2ZXJzL2NyeXB0by9hc3BlZWQvYXNwZWVkLWFjcnkuYy02ODMtXHRcdGFjcnlfZGV2LVx1MDAzZW1vZF9kd19tYXBwaW5nW2ldID0gaiAmIzQzOyA0O1xuZHJpdmVycy9jcnlwdG8vYXNwZWVkL2FzcGVlZC1hY3J5LmM6Njg0Olx0XHRhY3J5X2Rldi1cdTAwM2VkYXRhX2J5dGVfbWFwcGluZ1soaSAqIDQpXSA9IChqICYjNDM7IDgpICogNDtcbmRyaXZlcnMvY3J5cHRvL2FzcGVlZC9hc3BlZWQtYWNyeS5jOjY4NTpcdFx0YWNyeV9kZXYtXHUwMDNlZGF0YV9ieXRlX21hcHBpbmdbKGkgKiA0KSAmIzQzOyAxXSA9IChqICYjNDM7IDgpICogNCAmIzQzOyAxO1xuZHJpdmVycy9jcnlwdG8vYXNwZWVkL2FzcGVlZC1hY3J5LmM6Njg2Olx0XHRhY3J5X2Rldi1cdTAwM2VkYXRhX2J5dGVfbWFwcGluZ1soaSAqIDQpICYjNDM7IDJdID0gKGogJiM0MzsgOCkgKiA0ICYjNDM7IDI7XG5kcml2ZXJzL2NyeXB0by9hc3BlZWQvYXNwZWVkLWFjcnkuYzo2ODc6XHRcdGFjcnlfZGV2LVx1MDAzZWRhdGFfYnl0ZV9tYXBwaW5nWyhpICogNCkgJiM0MzsgM10gPSAoaiAmIzQzOyA4KSAqIDQgJiM0MzsgMztcbmRyaXZlcnMvY3J5cHRvL2FzcGVlZC9hc3BlZWQtYWNyeS5jLTY4OC1cdFx0aiYjNDM7JiM0Mzs7XG4tLVxuZHJpdmVycy9lZGFjL2FsdGVyYV9lZGFjLmM9MTUwMj1zdGF0aWMgaW50IGFsdHJfcG9ydGJfc2V0dXAoc3RydWN0IGFsdHJfZWRhY19kZXZpY2VfZGV2ICpkZXZpY2UpXG4tLVxuZHJpdmVycy9lZGFjL2FsdGVyYV9lZGFjLmMtMTU0Mi1cdGFsdGRldi1cdTAwM2VlZGFjX2RldiA9IGRjaTtcbmRyaXZlcnMvZWRhYy9hbHRlcmFfZWRhYy5jOjE1NDM6XHRhbHRkZXYtXHUwMDNlZGF0YSA9IHBydjtcbmRyaXZlcnMvZWRhYy9hbHRlcmFfZWRhYy5jLTE1NDQtXHRkY2ktXHUwMDNlZGV2ID0gXHUwMDI2YWx0ZGV2LVx1MDAzZWRkZXY7XG4tLVxuZHJpdmVycy9lZGFjL2FsdGVyYV9lZGFjLmM9MTg4OT1zdGF0aWMgaW50IGFsdHJfZWRhY19hMTBfZGV2aWNlX2FkZChzdHJ1Y3QgYWx0cl9hcnJpYTEwX2VkYWMgKmVkYWMsXG4tLVxuZHJpdmVycy9lZGFjL2FsdGVyYV9lZGFjLmMtMTk0My1cdGFsdGRldi1cdTAwM2VlZGFjX2RldiA9IGRjaTtcbmRyaXZlcnMvZWRhYy9hbHRlcmFfZWRhYy5jOjE5NDQ6XHRhbHRkZXYtXHUwMDNlZGF0YSA9IHBydjtcbmRyaXZlcnMvZWRhYy9hbHRlcmFfZWRhYy5jLTE5NDUtXHRhbHRkZXYtXHUwMDNlZGRldiA9ICplZGFjLVx1MDAzZWRldjtcbi0tXG5kcml2ZXJzL2VkYWMvYWx0ZXJhX2VkYWMuYy0xOTU3LVx0LyogQ2hlY2sgc3BlY2lmaWMgZGVwZW5kZW5jaWVzIGZvciB0aGUgbW9kdWxlICovXG5kcml2ZXJzL2VkYWMvYWx0ZXJhX2VkYWMuYzoxOTU4Olx0aWYgKGFsdGRldi1cdTAwM2VkYXRhLVx1MDAzZXNldHVwKSB7XG5kcml2ZXJzL2VkYWMvYWx0ZXJhX2VkYWMuYzoxOTU5Olx0XHRyYyA9IGFsdGRldi1cdTAwM2VkYXRhLVx1MDAzZXNldHVwKGFsdGRldik7XG5kcml2ZXJzL2VkYWMvYWx0ZXJhX2VkYWMuYy0xOTYwLVx0XHRpZiAocmMpXG4tLVxuZHJpdmVycy9ncGlvL2dwaW8tcmRjMzIxeC5jPTExOT1zdGF0aWMgaW50IHJkYzMyMXhfZ3Bpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvZ3Bpby9ncGlvLXJkYzMyMXguYy0xNzItXHRcdFx0XHRcdHJkYzMyMXhfZ3Bpb19kZXYtXHUwMDNlcmVnMV9kYXRhX2Jhc2UsXG5kcml2ZXJzL2dwaW8vZ3Bpby1yZGMzMjF4LmM6MTczOlx0XHRcdFx0XHRcdTAwMjZyZGMzMjF4X2dwaW9fZGV2LVx1MDAzZWRhdGFfcmVnWzBdKTtcbmRyaXZlcnMvZ3Bpby9ncGlvLXJkYzMyMXguYy0xNzQtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvZ3Bpby9ncGlvLXJkYzMyMXguYy0xNzgtXHRcdFx0XHRcdHJkYzMyMXhfZ3Bpb19kZXYtXHUwMDNlcmVnMl9kYXRhX2Jhc2UsXG5kcml2ZXJzL2dwaW8vZ3Bpby1yZGMzMjF4LmM6MTc5Olx0XHRcdFx0XHRcdTAwMjZyZGMzMjF4X2dwaW9fZGV2LVx1MDAzZWRhdGFfcmVnWzFdKTtcbmRyaXZlcnMvZ3Bpby9ncGlvLXJkYzMyMXguYy0xODAtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvZ3Bpby9ncGlvbGliLmM9MTEwMT1zdGF0aWMgdm9pZCBncGlvY2hpcF9zZXRfZGF0YShzdHJ1Y3QgZ3Bpb19jaGlwICpnYywgdm9pZCAqZGF0YSlcbmRyaXZlcnMvZ3Bpby9ncGlvbGliLmMtMTEwMi17XG5kcml2ZXJzL2dwaW8vZ3Bpb2xpYi5jOjExMDM6XHRnYy1cdTAwM2VncGlvZGV2LVx1MDAzZWRhdGEgPSBkYXRhO1xuZHJpdmVycy9ncGlvL2dwaW9saWIuYy0xMTA0LX1cbi0tXG5kcml2ZXJzL2dwaW8vZ3Bpb2xpYi5jPTExMTM9dm9pZCAqZ3Bpb2NoaXBfZ2V0X2RhdGEoc3RydWN0IGdwaW9fY2hpcCAqZ2MpXG5kcml2ZXJzL2dwaW8vZ3Bpb2xpYi5jLTExMTQte1xuZHJpdmVycy9ncGlvL2dwaW9saWIuYzoxMTE1Olx0cmV0dXJuIGdjLVx1MDAzZWdwaW9kZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvZ3Bpby9ncGlvbGliLmMtMTExNi19XG4tLVxuZHJpdmVycy9od21vbi9ucGNtNzUwLXB3bS1mYW4uYz04MTE9bnBjbTd4eF9wd21fY3pfc2V0X2N1cl9zdGF0ZShzdHJ1Y3QgdGhlcm1hbF9jb29saW5nX2RldmljZSAqdGNkZXYsXG4tLVxuZHJpdmVycy9od21vbi9ucGNtNzUwLXB3bS1mYW4uYy04MjAtXHRjZGV2LVx1MDAzZWN1cl9zdGF0ZSA9IHN0YXRlO1xuZHJpdmVycy9od21vbi9ucGNtNzUwLXB3bS1mYW4uYzo4MjE6XHRyZXQgPSBucGNtN3h4X3B3bV9jb25maWdfc2V0KGNkZXYtXHUwMDNlZGF0YSwgY2Rldi1cdTAwM2Vwd21fcG9ydCxcbmRyaXZlcnMvaHdtb24vbnBjbTc1MC1wd20tZmFuLmMtODIyLVx0XHRcdFx0ICAgICBjZGV2LVx1MDAzZWNvb2xpbmdfbGV2ZWxzW2NkZXYtXHUwMDNlY3VyX3N0YXRlXSk7XG4tLVxuZHJpdmVycy9od21vbi9ucGNtNzUwLXB3bS1mYW4uYz04MzM9c3RhdGljIGludCBucGNtN3h4X2NyZWF0ZV9wd21fY29vbGluZyhzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9od21vbi9ucGNtNzUwLXB3bS1mYW4uYy04NjYtXG5kcml2ZXJzL2h3bW9uL25wY203NTAtcHdtLWZhbi5jOjg2NzpcdGNkZXYtXHUwMDNlZGF0YSA9IGRhdGE7XG5kcml2ZXJzL2h3bW9uL25wY203NTAtcHdtLWZhbi5jLTg2OC1cdGNkZXYtXHUwMDNlcHdtX3BvcnQgPSBwd21fcG9ydDtcbi0tXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWJyY21zdGIuYz0xODE9c3RhdGljIGlubGluZSBpbnQgYnJjbXN0Yl9pMmNfZ2V0X3hmZXJzeihzdHJ1Y3QgYnJjbXN0Yl9pMmNfZGV2ICpkZXYpXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWJyY21zdGIuYy0xODIte1xuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1icmNtc3RiLmM6MTgzOlx0cmV0dXJuIChOX0RBVEFfUkVHUyAqIGRldi1cdTAwM2VkYXRhX3JlZ3N6KTtcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtYnJjbXN0Yi5jLTE4NC19XG4tLVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1icmNtc3RiLmM9MTg2PXN0YXRpYyBpbmxpbmUgaW50IGJyY21zdGJfaTJjX2dldF9kYXRhX3JlZ3N6KHN0cnVjdCBicmNtc3RiX2kyY19kZXYgKmRldilcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtYnJjbXN0Yi5jLTE4Ny17XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWJyY21zdGIuYzoxODg6XHRyZXR1cm4gZGV2LVx1MDAzZWRhdGFfcmVnc3o7XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWJyY21zdGIuYy0xODktfVxuLS1cbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtYnJjbXN0Yi5jPTYxMj1zdGF0aWMgaW50IGJyY21zdGJfaTJjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1icmNtc3RiLmMtNjc3LVx0XHRcdFx0ICAgIFwmIzM0O2JyY20sYnJjbXBlci1pMmNcJiMzNDspKVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1icmNtc3RiLmM6Njc4Olx0XHRkZXYtXHUwMDNlZGF0YV9yZWdzeiA9IHNpemVvZih1OCk7XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWJyY21zdGIuYy02NzktXHRlbHNlXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWJyY21zdGIuYzo2ODA6XHRcdGRldi1cdTAwM2VkYXRhX3JlZ3N6ID0gc2l6ZW9mKHUzMik7XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWJyY21zdGIuYy02ODEtXG4tLVxuZHJpdmVycy9paW8vYWRjL3RpX2FtMzM1eF9hZGMuYz0xOTE9c3RhdGljIGlycXJldHVybl90IHRpYWRjX3dvcmtlcl9oKGludCBpcnEsIHZvaWQgKnByaXZhdGUpXG4tLVxuZHJpdmVycy9paW8vYWRjL3RpX2FtMzM1eF9hZGMuYy0xOTUtXHRpbnQgaSwgaywgZmlmbzFjb3VudCwgcmVhZDtcbmRyaXZlcnMvaWlvL2FkYy90aV9hbTMzNXhfYWRjLmM6MTk2Olx0dTE2ICpkYXRhID0gYWRjX2Rldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9paW8vYWRjL3RpX2FtMzM1eF9hZGMuYy0xOTctXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTQwMjI9c3RhdGljIGludCBtbHg1X2liX2RhdGFfZGlyZWN0X2luaXQoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTQwMzgtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6NDAzOTpcdElOSVRfTElTVF9IRUFEKFx1MDAyNmRldi1cdTAwM2VkYXRhX2RpcmVjdF9tcl9saXN0KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy00MDQwLVx0cmV0ID0gbWx4NV9kYXRhX2RpcmVjdF9pYl9yZWcoZGV2LCB2dWlkKTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9NDUwMT1zdGF0aWMgaW50IG1seDVfaWJfc3RhZ2VfaW5pdF9pbml0KHN0cnVjdCBtbHg1X2liX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy00NTQ1LVx0bXV0ZXhfaW5pdChcdTAwMjZkZXYtXHUwMDNlY2FwX21hc2tfbXV0ZXgpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjQ1NDY6XHRtdXRleF9pbml0KFx1MDAyNmRldi1cdTAwM2VkYXRhX2RpcmVjdF9sb2NrKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy00NTQ3LVx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2ZGV2LVx1MDAzZXFwX2xpc3QpO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz01MDgwPXZvaWQgbWx4NV9pYl9kYXRhX2RpcmVjdF9iaW5kKHN0cnVjdCBtbHg1X2liX2RldiAqaWJkZXYsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTUwODIte1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjUwODM6XHRtdXRleF9sb2NrKFx1MDAyNmliZGV2LVx1MDAzZWRhdGFfZGlyZWN0X2xvY2spO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjUwODQ6XHRpYmRldi1cdTAwM2VkYXRhX2RpcmVjdF9kZXYgPSBkZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6NTA4NTpcdG11dGV4X3VubG9jayhcdTAwMjZpYmRldi1cdTAwM2VkYXRhX2RpcmVjdF9sb2NrKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy01MDg2LX1cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9NTA4OD12b2lkIG1seDVfaWJfZGF0YV9kaXJlY3RfdW5iaW5kKHN0cnVjdCBtbHg1X2liX2RldiAqaWJkZXYpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNTA4OS17XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6NTA5MDpcdG11dGV4X2xvY2soXHUwMDI2aWJkZXYtXHUwMDNlZGF0YV9kaXJlY3RfbG9jayk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNTA5MS1cdG1seDVfaWJfcmV2b2tlX2RhdGFfZGlyZWN0X21ycyhpYmRldik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6NTA5MjpcdGliZGV2LVx1MDAzZWRhdGFfZGlyZWN0X2RldiA9IE5VTEw7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6NTA5MzpcdG11dGV4X3VubG9jayhcdTAwMjZpYmRldi1cdTAwM2VkYXRhX2RpcmVjdF9sb2NrKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy01MDk0LX1cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jPTk4NT1yZWdfdXNlcl9tcl9kbWFidWZfYnlfZGF0YV9kaXJlY3Qoc3RydWN0IGliX3BkICpwZCwgdTY0IG9mZnNldCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jLTk5OC1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmM6OTk5Olx0bXV0ZXhfbG9jayhcdTAwMjZkZXYtXHUwMDNlZGF0YV9kaXJlY3RfbG9jayk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jOjEwMDA6XHRkYXRhX2RpcmVjdF9kZXYgPSBkZXYtXHUwMDNlZGF0YV9kaXJlY3RfZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYy0xMDAxLVx0aWYgKCFkYXRhX2RpcmVjdF9kZXYpIHtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jLTEwMjktXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jOjEwMzA6XHRsaXN0X2FkZF90YWlsKFx1MDAyNnRvX21tcihjcm9zc2VkX21yKS1cdTAwM2VkZF9ub2RlLCBcdTAwMjZkZXYtXHUwMDNlZGF0YV9kaXJlY3RfbXJfbGlzdCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jLTEwMzEtXHR0b19tbXIoY3Jvc3NpbmdfbXIpLVx1MDAzZWRkX2Nyb3NzZWRfbXIgPSB0b19tbXIoY3Jvc3NlZF9tcik7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYy0xMDMzLWVuZDpcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmM6MTAzNDpcdG11dGV4X3VubG9jayhcdTAwMjZkZXYtXHUwMDNlZGF0YV9kaXJlY3RfbG9jayk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jLTEwMzUtXHRyZXR1cm4gcmV0ID8gRVJSX1BUUihyZXQpIDogY3Jvc3NpbmdfbXI7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYz0xMzM3PXN0YXRpYyBpbnQgbWx4NV9pYl9yZXZva2VfZGF0YV9kaXJlY3RfbXIoc3RydWN0IG1seDVfaWJfbXIgKm1yKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmMtMTM0Mi1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmM6MTM0MzpcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2ZGV2LVx1MDAzZWRhdGFfZGlyZWN0X2xvY2spO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYy0xMzQ0LVx0bXItXHUwMDNlcmV2b2tlZCA9IHRydWU7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYz0xMzUzPXZvaWQgbWx4NV9pYl9yZXZva2VfZGF0YV9kaXJlY3RfbXJzKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmMtMTM1Ni1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmM6MTM1NzpcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2ZGV2LVx1MDAzZWRhdGFfZGlyZWN0X2xvY2spO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYy0xMzU4LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYzoxMzU5Olx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG1yLCBuZXh0LCBcdTAwMjZkZXYtXHUwMDNlZGF0YV9kaXJlY3RfbXJfbGlzdCwgZGRfbm9kZSkge1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYy0xMzYwLVx0XHRsaXN0X2RlbChcdTAwMjZtci1cdTAwM2VkZF9ub2RlKTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jPTE1MDU9c3RhdGljIGludCBkZXJlZ19jcm9zc2luZ19kYXRhX2RpcmVjdF9tcihzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jLTE1MTQtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jOjE1MTU6XHRtdXRleF9sb2NrKFx1MDAyNmRldi1cdTAwM2VkYXRhX2RpcmVjdF9sb2NrKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmMtMTUxNi1cdGlmICghZGRfY3Jvc3NlZF9tci1cdTAwM2VyZXZva2VkKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmMtMTUxOS1cdHJldCA9IF9fbWx4NV9pYl9kZXJlZ19tcihcdTAwMjZkZF9jcm9zc2VkX21yLVx1MDAzZWlibXIpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYzoxNTIwOlx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRldi1cdTAwM2VkYXRhX2RpcmVjdF9sb2NrKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmMtMTUyMS1cdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvc3RkX3R5cGVzLmM9MTg5PXN0YXRpYyBpbnQgVVZFUkJTX0hBTkRMRVIoTUxYNV9JQl9NRVRIT0RfR0VUX0RBVEFfRElSRUNUX1NZU0ZTX1BBVEgpKFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3N0ZF90eXBlcy5jLTIwNC1cdGRldiA9IHRvX21kZXYoYy1cdTAwM2VpYnVjb250ZXh0LmRldmljZSk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9zdGRfdHlwZXMuYzoyMDU6XHRtdXRleF9sb2NrKFx1MDAyNmRldi1cdTAwM2VkYXRhX2RpcmVjdF9sb2NrKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3N0ZF90eXBlcy5jOjIwNjpcdGRhdGFfZGlyZWN0X2RldiA9IGRldi1cdTAwM2VkYXRhX2RpcmVjdF9kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9zdGRfdHlwZXMuYy0yMDctXHRpZiAoIWRhdGFfZGlyZWN0X2Rldikge1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3N0ZF90eXBlcy5jLTIyOC1cdGtmcmVlKGRldl9wYXRoKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3N0ZF90eXBlcy5jOjIyOTpcdG11dGV4X3VubG9jayhcdTAwMjZkZXYtXHUwMDNlZGF0YV9kaXJlY3RfbG9jayk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9zdGRfdHlwZXMuYy0yMzAtXHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvaW5wdXQva2V5Ym9hcmQvZ3Bpb19rZXlzX3BvbGxlZC5jPTg3PXN0YXRpYyB2b2lkIGdwaW9fa2V5c19wb2xsZWRfcG9sbChzdHJ1Y3QgaW5wdXRfZGV2ICppbnB1dClcbi0tXG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2dwaW9fa2V5c19wb2xsZWQuYy05Ni1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIHBkYXRhLVx1MDAzZW5idXR0b25zOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9pbnB1dC9rZXlib2FyZC9ncGlvX2tleXNfcG9sbGVkLmM6OTc6XHRcdHN0cnVjdCBncGlvX2tleXNfYnV0dG9uX2RhdGEgKmJkYXRhID0gXHUwMDI2YmRldi1cdTAwM2VkYXRhW2ldO1xuZHJpdmVycy9pbnB1dC9rZXlib2FyZC9ncGlvX2tleXNfcG9sbGVkLmMtOTgtXG4tLVxuZHJpdmVycy9pbnB1dC9rZXlib2FyZC9ncGlvX2tleXNfcG9sbGVkLmM9MjI2PXN0YXRpYyBpbnQgZ3Bpb19rZXlzX3BvbGxlZF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvaW5wdXQva2V5Ym9hcmQvZ3Bpb19rZXlzX3BvbGxlZC5jLTI3OC1cdFx0Y29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24gKmJ1dHRvbiA9IFx1MDAyNnBkYXRhLVx1MDAzZWJ1dHRvbnNbaV07XG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2dwaW9fa2V5c19wb2xsZWQuYzoyNzk6XHRcdHN0cnVjdCBncGlvX2tleXNfYnV0dG9uX2RhdGEgKmJkYXRhID0gXHUwMDI2YmRldi1cdTAwM2VkYXRhW2ldO1xuZHJpdmVycy9pbnB1dC9rZXlib2FyZC9ncGlvX2tleXNfcG9sbGVkLmMtMjgwLVx0XHR1bnNpZ25lZCBpbnQgdHlwZSA9IGJ1dHRvbi1cdTAwM2V0eXBlID86IEVWX0tFWTtcbi0tXG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2dwaW9fa2V5c19wb2xsZWQuYy0zNjEtXHRcdGdwaW9fa2V5c19wb2xsZWRfY2hlY2tfc3RhdGUoaW5wdXQsIFx1MDAyNnBkYXRhLVx1MDAzZWJ1dHRvbnNbaV0sXG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2dwaW9fa2V5c19wb2xsZWQuYzozNjI6XHRcdFx0XHRcdCAgICAgXHUwMDI2YmRldi1cdTAwM2VkYXRhW2ldKTtcbmRyaXZlcnMvaW5wdXQva2V5Ym9hcmQvZ3Bpb19rZXlzX3BvbGxlZC5jLTM2My1cbi0tXG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2hpbF9rYmQuYz0xMDI9c3RhdGljIHZvaWQgaGlsX2Rldl9oYW5kbGVfY29tbWFuZF9yZXNwb25zZShzdHJ1Y3QgaGlsX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvaW5wdXQva2V5Ym9hcmQvaGlsX2tiZC5jLTEwOC1cdGlkeCA9IGRldi1cdTAwM2VpZHg0IC8gNDtcbmRyaXZlcnMvaW5wdXQva2V5Ym9hcmQvaGlsX2tiZC5jOjEwOTpcdHAgPSBkZXYtXHUwMDNlZGF0YVtpZHggLSAxXTtcbmRyaXZlcnMvaW5wdXQva2V5Ym9hcmQvaGlsX2tiZC5jLTExMC1cbi0tXG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2hpbF9rYmQuYy0xMzgtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBpZHg7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9pbnB1dC9rZXlib2FyZC9oaWxfa2JkLmM6MTM5Olx0XHRidWZbaV0gPSBkZXYtXHUwMDNlZGF0YVtpXSBcdTAwMjYgSElMX1BLVF9EQVRBX01BU0s7XG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2hpbF9rYmQuYy0xNDAtXHRmb3IgKDsgaSBcdTAwM2MgSElMX1BBQ0tFVF9NQVhfTEVOR1RIOyBpJiM0MzsmIzQzOylcbi0tXG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2hpbF9rYmQuYz0yNzQ9c3RhdGljIGlycXJldHVybl90IGhpbF9kZXZfaW50ZXJydXB0KHN0cnVjdCBzZXJpbyAqc2VyaW8sXG4tLVxuZHJpdmVycy9pbnB1dC9rZXlib2FyZC9oaWxfa2JkLmMtMjkwLVx0aWYgKCEoZGV2LVx1MDAzZWlkeDQgJSA0KSlcbmRyaXZlcnMvaW5wdXQva2V5Ym9hcmQvaGlsX2tiZC5jOjI5MTpcdFx0ZGV2LVx1MDAzZWRhdGFbaWR4XSA9IDA7XG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2hpbF9rYmQuYzoyOTI6XHRwYWNrZXQgPSBkZXYtXHUwMDNlZGF0YVtpZHhdO1xuZHJpdmVycy9pbnB1dC9rZXlib2FyZC9oaWxfa2JkLmMtMjkzLVx0cGFja2V0IHw9ICgoaGlsX3BhY2tldClkYXRhKSBcdTAwM2NcdTAwM2MgKCgzIC0gKGRldi1cdTAwM2VpZHg0ICUgNCkpICogOCk7XG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2hpbF9rYmQuYzoyOTQ6XHRkZXYtXHUwMDNlZGF0YVtpZHhdID0gcGFja2V0O1xuZHJpdmVycy9pbnB1dC9rZXlib2FyZC9oaWxfa2JkLmMtMjk1LVxuLS1cbmRyaXZlcnMvaW5wdXQvbWlzYy9rZXlzcGFuX3JlbW90ZS5jPTE0MT1zdGF0aWMgaW50IGtleXNwYW5fbG9hZF90ZXN0ZXIoc3RydWN0IHVzYl9rZXlzcGFuKiBkZXYsIGludCBiaXRzX25lZWRlZClcbmRyaXZlcnMvaW5wdXQvbWlzYy9rZXlzcGFuX3JlbW90ZS5jLTE0Mi17XG5kcml2ZXJzL2lucHV0L21pc2Mva2V5c3Bhbl9yZW1vdGUuYzoxNDM6XHRpZiAoZGV2LVx1MDAzZWRhdGEuYml0c19sZWZ0IFx1MDAzZT0gYml0c19uZWVkZWQpXG5kcml2ZXJzL2lucHV0L21pc2Mva2V5c3Bhbl9yZW1vdGUuYy0xNDQtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvaW5wdXQvbWlzYy9rZXlzcGFuX3JlbW90ZS5jLTE0OS1cdCAqL1xuZHJpdmVycy9pbnB1dC9taXNjL2tleXNwYW5fcmVtb3RlLmM6MTUwOlx0aWYgKGRldi1cdTAwM2VkYXRhLnBvcyBcdTAwM2U9IGRldi1cdTAwM2VkYXRhLmxlbikge1xuZHJpdmVycy9pbnB1dC9taXNjL2tleXNwYW5fcmVtb3RlLmMtMTUxLVx0XHRkZXZfZGJnKFx1MDAyNmRldi1cdTAwM2VpbnRlcmZhY2UtXHUwMDNlZGV2LFxuZHJpdmVycy9pbnB1dC9taXNjL2tleXNwYW5fcmVtb3RlLmMtMTUyLVx0XHRcdFwmIzM0OyVzIC0gRXJyb3IgcmFuIG91dCBvZiBkYXRhLiBwb3M6ICVkLCBsZW46ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9pbnB1dC9taXNjL2tleXNwYW5fcmVtb3RlLmM6MTUzOlx0XHRcdF9fZnVuY19fLCBkZXYtXHUwMDNlZGF0YS5wb3MsIGRldi1cdTAwM2VkYXRhLmxlbik7XG5kcml2ZXJzL2lucHV0L21pc2Mva2V5c3Bhbl9yZW1vdGUuYy0xNTQtXHRcdHJldHVybiAtMTtcbi0tXG5kcml2ZXJzL2lucHV0L21pc2Mva2V5c3Bhbl9yZW1vdGUuYy0xNTctXHQvKiBMb2FkIGFzIG11Y2ggYXMgd2UgY2FuIGludG8gdGhlIHRlc3Rlci4gKi9cbmRyaXZlcnMvaW5wdXQvbWlzYy9rZXlzcGFuX3JlbW90ZS5jOjE1ODpcdHdoaWxlICgoZGV2LVx1MDAzZWRhdGEuYml0c19sZWZ0ICYjNDM7IDcgXHUwMDNjIChzaXplb2YoZGV2LVx1MDAzZWRhdGEudGVzdGVyKSAqIDgpKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvaW5wdXQvbWlzYy9rZXlzcGFuX3JlbW90ZS5jOjE1OTpcdCAgICAgICAoZGV2LVx1MDAzZWRhdGEucG9zIFx1MDAzYyBkZXYtXHUwMDNlZGF0YS5sZW4pKSB7XG5kcml2ZXJzL2lucHV0L21pc2Mva2V5c3Bhbl9yZW1vdGUuYzoxNjA6XHRcdGRldi1cdTAwM2VkYXRhLnRlc3RlciAmIzQzOz0gKGRldi1cdTAwM2VkYXRhLmJ1ZmZlcltkZXYtXHUwMDNlZGF0YS5wb3MmIzQzOyYjNDM7XSBcdTAwM2NcdTAwM2MgZGV2LVx1MDAzZWRhdGEuYml0c19sZWZ0KTtcbmRyaXZlcnMvaW5wdXQvbWlzYy9rZXlzcGFuX3JlbW90ZS5jOjE2MTpcdFx0ZGV2LVx1MDAzZWRhdGEuYml0c19sZWZ0ICYjNDM7PSA4O1xuZHJpdmVycy9pbnB1dC9taXNjL2tleXNwYW5fcmVtb3RlLmMtMTYyLVx0fVxuLS1cbmRyaXZlcnMvaW5wdXQvbW91c2UvYXBwbGV0b3VjaC5jPTQ0ND1zdGF0aWMgaW50IGF0cF9zdGF0dXNfY2hlY2soc3RydWN0IHVyYiAqdXJiKVxuLS1cbmRyaXZlcnMvaW5wdXQvbW91c2UvYXBwbGV0b3VjaC5jLTQ4MC1cdFx0XHRcJiMzNDsgKGZpcnN0IGJ5dGU6ICVkLCBsZW5ndGg6ICVkKS5cXG5cJiMzNDssXG5kcml2ZXJzL2lucHV0L21vdXNlL2FwcGxldG91Y2guYzo0ODE6XHRcdFx0ZGV2LVx1MDAzZWRhdGFbMF0sIGRldi1cdTAwM2V1cmItXHUwMDNlYWN0dWFsX2xlbmd0aCk7XG5kcml2ZXJzL2lucHV0L21vdXNlL2FwcGxldG91Y2guYy00ODItXHRcdHJldHVybiBBVFBfVVJCX1NUQVRVU19FUlJPUjtcbi0tXG5kcml2ZXJzL2lucHV0L21vdXNlL2FwcGxldG91Y2guYz01MTQ9c3RhdGljIHZvaWQgYXRwX2NvbXBsZXRlX2dleXNlcl8xXzIoc3RydWN0IHVyYiAqdXJiKVxuLS1cbmRyaXZlcnMvaW5wdXQvbW91c2UvYXBwbGV0b3VjaC5jLTUzOC1cdFx0Zm9yIChpID0gMCwgaiA9IDE5OyBpIFx1MDAzYyAyMDsgaSAmIzQzOz0gMiwgaiAmIzQzOz0gMykge1xuZHJpdmVycy9pbnB1dC9tb3VzZS9hcHBsZXRvdWNoLmM6NTM5Olx0XHRcdGRldi1cdTAwM2V4eV9jdXJbaV0gPSBkZXYtXHUwMDNlZGF0YVtqXTtcbmRyaXZlcnMvaW5wdXQvbW91c2UvYXBwbGV0b3VjaC5jOjU0MDpcdFx0XHRkZXYtXHUwMDNleHlfY3VyW2kgJiM0MzsgMV0gPSBkZXYtXHUwMDNlZGF0YVtqICYjNDM7IDFdO1xuZHJpdmVycy9pbnB1dC9tb3VzZS9hcHBsZXRvdWNoLmMtNTQxLVx0XHR9XG4tLVxuZHJpdmVycy9pbnB1dC9tb3VzZS9hcHBsZXRvdWNoLmMtNTQ0LVx0XHRmb3IgKGkgPSAwLCBqID0gMTsgaSBcdTAwM2MgOTsgaSAmIzQzOz0gMiwgaiAmIzQzOz0gMykge1xuZHJpdmVycy9pbnB1dC9tb3VzZS9hcHBsZXRvdWNoLmM6NTQ1Olx0XHRcdGRldi1cdTAwM2V4eV9jdXJbQVRQX1hTRU5TT1JTICYjNDM7IGldID0gZGV2LVx1MDAzZWRhdGFbal07XG5kcml2ZXJzL2lucHV0L21vdXNlL2FwcGxldG91Y2guYzo1NDY6XHRcdFx0ZGV2LVx1MDAzZXh5X2N1cltBVFBfWFNFTlNPUlMgJiM0MzsgaSAmIzQzOyAxXSA9IGRldi1cdTAwM2VkYXRhW2ogJiM0MzsgMV07XG5kcml2ZXJzL2lucHV0L21vdXNlL2FwcGxldG91Y2guYy01NDctXHRcdH1cbi0tXG5kcml2ZXJzL2lucHV0L21vdXNlL2FwcGxldG91Y2guYy01NTAtXHRcdFx0LyogWCB2YWx1ZXMgKi9cbmRyaXZlcnMvaW5wdXQvbW91c2UvYXBwbGV0b3VjaC5jOjU1MTpcdFx0XHRkZXYtXHUwMDNleHlfY3VyW2kgJiM0MzsgIDBdID0gZGV2LVx1MDAzZWRhdGFbNSAqIGkgJiM0MzsgIDJdO1xuZHJpdmVycy9pbnB1dC9tb3VzZS9hcHBsZXRvdWNoLmM6NTUyOlx0XHRcdGRldi1cdTAwM2V4eV9jdXJbaSAmIzQzOyAgOF0gPSBkZXYtXHUwMDNlZGF0YVs1ICogaSAmIzQzOyAgNF07XG5kcml2ZXJzL2lucHV0L21vdXNlL2FwcGxldG91Y2guYzo1NTM6XHRcdFx0ZGV2LVx1MDAzZXh5X2N1cltpICYjNDM7IDE2XSA9IGRldi1cdTAwM2VkYXRhWzUgKiBpICYjNDM7IDQyXTtcbmRyaXZlcnMvaW5wdXQvbW91c2UvYXBwbGV0b3VjaC5jLTU1NC1cdFx0XHRpZiAoaSBcdTAwM2MgMilcbmRyaXZlcnMvaW5wdXQvbW91c2UvYXBwbGV0b3VjaC5jOjU1NTpcdFx0XHRcdGRldi1cdTAwM2V4eV9jdXJbaSAmIzQzOyAyNF0gPSBkZXYtXHUwMDNlZGF0YVs1ICogaSAmIzQzOyA0NF07XG5kcml2ZXJzL2lucHV0L21vdXNlL2FwcGxldG91Y2guYy01NTYtXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNzo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjE2OAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS2VybmVsIFVTQiBOZXR3b3JrIERyaXZlciBDb2RlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIG91dHB1dCBhbmQgSSYjMzk7bSBzZWVpbmcgYSBsb3Qgb2YgZHJpdmVycyBhY2Nlc3NpbmcgYGRldi0mZ3Q7ZGF0YWAuIFRoYXQgaW1tZWRpYXRlbHkgcmFpc2VzIGEgZmxhZyBmb3IgbWUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYHN0cnVjdCB1c2JuZXQgKmRldmAgcmVwcmVzZW50cyBpbiB0aGlzIGNvbnRleHQuIExldCYjMzk7cyBkaWcgaW50byB0aGF0IHN0cnVjdHVyZSBhbmQgc2VlIGV4YWN0bHkgaG93IGl0JiMzOTtzIGRlZmluZWQgYW5kIGhvdyB0aGF0IGBkYXRhYCBmaWVsZCBpcyBiZWluZyB1c2VkLiBXaGVyZSBhcmUgdGhvc2UgZHJpdmVycyBhY2Nlc3NpbmcgYGRldi0mZ3Q7ZGF0YWA/CgpUaW1lIHRvIG5hcnJvdyBteSBzY29wZSwgSSYjMzk7bGwgcmVzdHJpY3QgbXkgc2VhcmNoIHRvIHRoZSByZWxldmFudCBkaXJlY3RvcnkgdHJlZSwgbGlrZWx5IGBkcml2ZXJzL25ldC91c2IvYC4gVGhhdCYjMzk7cyB3aGVyZSBJIHdvdWxkIGV4cGVjdCB0byBmaW5kIHRoZSBjb3JlIFVTQiBuZXR3b3JrIGRyaXZlciBsb2dpYyBhbmQgdGhlcmVmb3JlIHRoZSBtb3N0IG1lYW5pbmdmdWwgaW5zdGFuY2VzIG9mIGBkZXYtJmd0O2RhdGFgLiBJIHdhbnQgdG8gc2VlIHRoZSB0eXBpY2FsIHVzYWdlIHBhdHRlcm5zLCBwb3NzaWJsZSByYWNlIGNvbmRpdGlvbnMsIGFuZCBob3cgdGhvc2UgZHJpdmVycyBhcmUgaW50ZXJmYWNpbmcgd2l0aCB0aGF0IGRhdGEgZmllbGQuIFRoaXMgaXMgZ29pbmcgdG8gYmUgaW50ZXJlc3Rpbmc7IEkgYW50aWNpcGF0ZSBmaW5kaW5nIGNvbW1vbiB1c2FnZSBwcmFjdGljZXMsIGFuZCBob3BlZnVsbHkgbm8gY3JpdGljYWwgZXJyb3JzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE3OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Rldi1cdTAwM2VkYXRhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNjQzIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYz00NDE9dm9pZCBhc2l4X3NldF9tdWx0aWNhc3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldClcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy00NDMtXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSBuZXRkZXZfcHJpdihuZXQpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NDQ0Olx0c3RydWN0IGFzaXhfZGF0YSAqZGF0YSA9IChzdHJ1Y3QgYXNpeF9kYXRhICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy00NDUtXHR1MTYgcnhfY3RsID0gQVhfREVGQVVMVF9SWF9DVEw7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNDU0LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjQ1NTpcdFx0LyogV2UgdXNlIHRoZSAyMCBieXRlIGRldi1cdTAwM2VkYXRhXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy00NTYtXHRcdCAqIGZvciBvdXIgOCBieXRlIGZpbHRlciBidWZmZXJcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYz03MzQ9aW50IGFzaXhfc2V0X21hY19hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXQsIHZvaWQgKnApXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNzM2LVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYobmV0KTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjczNzpcdHN0cnVjdCBhc2l4X2RhdGEgKmRhdGEgPSAoc3RydWN0IGFzaXhfZGF0YSAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNzM4LVx0c3RydWN0IHNvY2thZGRyICphZGRyID0gcDtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy03NDYtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo3NDc6XHQvKiBXZSB1c2UgdGhlIDIwIGJ5dGUgZGV2LVx1MDAzZWRhdGFcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTc0OC1cdCAqIGZvciBvdXIgNiBieXRlIG1hYyBidWZmZXJcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTE4PXN0YXRpYyB2b2lkIGF4ODgxNzJfc2V0X211bHRpY2FzdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMjAtXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSBuZXRkZXZfcHJpdihuZXQpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEyMTpcdHN0cnVjdCBhc2l4X2RhdGEgKmRhdGEgPSAoc3RydWN0IGFzaXhfZGF0YSAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEyMi1cdHU4IHJ4X2N0bCA9IDB4OGM7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEzMS1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTMyOlx0XHQvKiBXZSB1c2UgdGhlIDIwIGJ5dGUgZGV2LVx1MDAzZWRhdGFcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMzMtXHRcdCAqIGZvciBvdXIgOCBieXRlIGZpbHRlciBidWZmZXJcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MzMyPXN0YXRpYyBpbnQgYXg4ODc3Ml9yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMzMzLXtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzozMzQ6XHRzdHJ1Y3QgYXNpeF9kYXRhICpkYXRhID0gKHN0cnVjdCBhc2l4X2RhdGEgKilcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0zMzUtXHRzdHJ1Y3QgYXNpeF9jb21tb25fcHJpdmF0ZSAqcHJpdiA9IGRldi1cdTAwM2Vkcml2ZXJfcHJpdjtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MzYyPXN0YXRpYyBpbnQgYXg4ODc3Ml9od19yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYsIGludCBpbl9wbSlcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0zNjMte1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjM2NDpcdHN0cnVjdCBhc2l4X2RhdGEgKmRhdGEgPSAoc3RydWN0IGFzaXhfZGF0YSAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTM2NS1cdHN0cnVjdCBhc2l4X2NvbW1vbl9wcml2YXRlICpwcml2ID0gZGV2LVx1MDAzZWRyaXZlcl9wcml2O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz00NTY9c3RhdGljIGludCBheDg4NzcyYV9od19yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYsIGludCBpbl9wbSlcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy00NTcte1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjQ1ODpcdHN0cnVjdCBhc2l4X2RhdGEgKmRhdGEgPSAoc3RydWN0IGFzaXhfZGF0YSAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQ1OS1cdHN0cnVjdCBhc2l4X2NvbW1vbl9wcml2YXRlICpwcml2ID0gZGV2LVx1MDAzZWRyaXZlcl9wcml2O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz05OTA9c3RhdGljIGludCBtYXJ2ZWxsX3BoeV9pbml0KHN0cnVjdCB1c2JuZXQgKmRldilcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05OTEte1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk5MjpcdHN0cnVjdCBhc2l4X2RhdGEgKmRhdGEgPSAoc3RydWN0IGFzaXhfZGF0YSAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk5My1cdHUxNiByZWc7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTEwMjE9c3RhdGljIGludCBydGw4MjExY2xfcGh5X2luaXQoc3RydWN0IHVzYm5ldCAqZGV2KVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMjIte1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMjM6XHRzdHJ1Y3QgYXNpeF9kYXRhICpkYXRhID0gKHN0cnVjdCBhc2l4X2RhdGEgKilcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDI0LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xMDY4PXN0YXRpYyBpbnQgYXg4ODE3OF9yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTA2OS17XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTA3MDpcdHN0cnVjdCBhc2l4X2RhdGEgKmRhdGEgPSAoc3RydWN0IGFzaXhfZGF0YSAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwNzEtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xMTY0PXN0YXRpYyBpbnQgYXg4ODE3OF9saW5rX3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTE2Ny1cdHN0cnVjdCBldGh0b29sX2NtZCBlY21kID0geyAuY21kID0gRVRIVE9PTF9HU0VUIH07XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTE2ODpcdHN0cnVjdCBhc2l4X2RhdGEgKmRhdGEgPSAoc3RydWN0IGFzaXhfZGF0YSAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTExNjktXHR1MzIgc3BlZWQ7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM9MjYxPXN0YXRpYyBpbnQgYXg4ODE3MmFfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2KVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMjYyLXtcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjI2MzpcdHN0cnVjdCBhc2l4X2RhdGEgKmRhdGEgPSAoc3RydWN0IGFzaXhfZGF0YSAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMjY0LVx0c3RydWN0IGF4ODgxNzJhX3ByaXZhdGUgKnByaXYgPSBkZXYtXHUwMDNlZHJpdmVyX3ByaXY7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jPTg2Nz1zdGF0aWMgdm9pZCBheDg4MTc5X3NldF9tdWx0aWNhc3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldClcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtODcwLVx0c3RydWN0IGF4ODgxNzlfZGF0YSAqZGF0YSA9IGRldi1cdTAwM2Vkcml2ZXJfcHJpdjtcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYzo4NzE6XHR1OCAqbV9maWx0ZXIgPSAoKHU4ICopZGV2LVx1MDAzZWRhdGEpO1xuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTg3Mi1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtODgyLVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYzo4ODM6XHRcdC8qIFdlIHVzZSBkZXYtXHUwMDNlZGF0YSBmb3Igb3VyIDggYnl0ZSBmaWx0ZXIgYnVmZmVyXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtODg0LVx0XHQgKiB0byBhdm9pZCBhbGxvY2F0aW5nIG1lbW9yeSB0aGF0IGlzIHRyaWNreSB0byBmcmVlIGxhdGVyXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jPTgzPWludCB1c2JuZXRfZ2VuZXJpY19jZGNfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYy05NC1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYzo5NTpcdGlmIChzaXplb2YoZGV2LVx1MDAzZWRhdGEpIFx1MDAzYyBzaXplb2YoKmluZm8pKVxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jLTk2LVx0XHRyZXR1cm4gLUVET007XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM9NDM9c3RhdGljIGludCBjZGNfbWJpbV9tYW5hZ2VfcG93ZXIoc3RydWN0IHVzYm5ldCAqZGV2LCBpbnQgb24pXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy00NC17XG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYzo0NTpcdHN0cnVjdCBjZGNfbWJpbV9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy00Ni1cdGludCBydiA9IDA7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM9NzE9c3RhdGljIGludCBjZGNfbWJpbV9yeF9hZGRfdmlkKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIF9fYmUxNiBwcm90bywgdTE2IHZpZClcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy03My1cdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYzo3NDpcdHN0cnVjdCBjZGNfbWJpbV9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy03NS1cbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYz04NT1zdGF0aWMgaW50IGNkY19tYmltX3J4X2tpbGxfdmlkKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIF9fYmUxNiBwcm90bywgdTE2IHZpZClcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy04Ny1cdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYzo4ODpcdHN0cnVjdCBjZGNfbWJpbV9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy04OS1cbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYz0xMzk9c3RhdGljIGludCBjZGNfbWJpbV9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtMTQ0LVx0dTggZGF0YV9hbHRzZXR0aW5nID0gMTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jOjE0NTpcdHN0cnVjdCBjZGNfbWJpbV9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy0xNDYtXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM9MTk1PXN0YXRpYyB2b2lkIGNkY19tYmltX3VuYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtMTk2LXtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jOjE5NzpcdHN0cnVjdCBjZGNfbWJpbV9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy0xOTgtXHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IGluZm8tXHUwMDNlY3R4O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jPTIyMD1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmNkY19tYmltX3R4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgZ2ZwX3QgZmxhZ3MpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtMjIyLVx0c3RydWN0IHNrX2J1ZmYgKnNrYl9vdXQ7XG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYzoyMjM6XHRzdHJ1Y3QgY2RjX21iaW1fc3RhdGUgKmluZm8gPSAodm9pZCAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtMjI0LVx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSBpbmZvLVx1MDAzZWN0eDtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYz00MTI9c3RhdGljIGludCBjZGNfbWJpbV9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2JfaW4pXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNDE0LVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jOjQxNTpcdHN0cnVjdCBjZGNfbWJpbV9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy00MTYtXHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IGluZm8tXHUwMDNlY3R4O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jPTUwNj1zdGF0aWMgaW50IGNkY19tYmltX3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBtZXNzYWdlKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTUwOS1cdHN0cnVjdCB1c2JuZXQgKmRldiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7XG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYzo1MTA6XHRzdHJ1Y3QgY2RjX21iaW1fc3RhdGUgKmluZm8gPSAodm9pZCAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNTExLVx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSBpbmZvLVx1MDAzZWN0eDtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYz01MzQ9c3RhdGljIGludCBjZGNfbWJpbV9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNTM3LVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jOjUzODpcdHN0cnVjdCBjZGNfbWJpbV9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy01MzktXHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IGluZm8tXHUwMDNlY3R4O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MTA1PXN0YXRpYyB2b2lkIGNkY19uY21fZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTEwOS1cdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjExMDpcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cdTAwM2VkYXRhWzBdO1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xMTEtXHRpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTE1MD1zdGF0aWMgdTMyIGNkY19uY21fY2hlY2tfcnhfbWF4KHN0cnVjdCB1c2JuZXQgKmRldiwgdTMyIG5ld19yeClcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTUxLXtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6MTUyOlx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSAoc3RydWN0IGNkY19uY21fY3R4ICopZGV2LVx1MDAzZWRhdGFbMF07XG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE1My1cdHUzMiB2YWwsIG1heCwgbWluO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MTczPXN0YXRpYyB1MzIgY2RjX25jbV9jaGVja190eF9tYXgoc3RydWN0IHVzYm5ldCAqZGV2LCB1MzIgbmV3X3R4KVxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xNzQte1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzoxNzU6XHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IChzdHJ1Y3QgY2RjX25jbV9jdHggKilkZXYtXHUwMDNlZGF0YVswXTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTc2LVx0dTMyIHZhbCwgbWF4LCBtaW47XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz0yMDE9c3RhdGljIHNzaXplX3QgbWluX3R4X3BrdF9zaG93KHN0cnVjdCBkZXZpY2UgKmQsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0yMDQtXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSBuZXRkZXZfcHJpdih0b19uZXRfZGV2KGQpKTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6MjA1Olx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSAoc3RydWN0IGNkY19uY21fY3R4ICopZGV2LVx1MDAzZWRhdGFbMF07XG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTIwNi1cbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTIxMD1zdGF0aWMgc3NpemVfdCByeF9tYXhfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMjEzLVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjIxNDpcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cdTAwM2VkYXRhWzBdO1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0yMTUtXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz0yMTk9c3RhdGljIHNzaXplX3QgdHhfbWF4X3Nob3coc3RydWN0IGRldmljZSAqZCxcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTIyMi1cdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoZCkpO1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzoyMjM6XHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IChzdHJ1Y3QgY2RjX25jbV9jdHggKilkZXYtXHUwMDNlZGF0YVswXTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMjI0LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MjI4PXN0YXRpYyBzc2l6ZV90IHR4X3RpbWVyX3VzZWNzX3Nob3coc3RydWN0IGRldmljZSAqZCxcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTIzMS1cdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoZCkpO1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzoyMzI6XHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IChzdHJ1Y3QgY2RjX25jbV9jdHggKilkZXYtXHUwMDNlZGF0YVswXTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMjMzLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MjM3PXN0YXRpYyBzc2l6ZV90IG1pbl90eF9wa3Rfc3RvcmUoc3RydWN0IGRldmljZSAqZCxcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTI0MS1cdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoZCkpO1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzoyNDI6XHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IChzdHJ1Y3QgY2RjX25jbV9jdHggKilkZXYtXHUwMDNlZGF0YVswXTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMjQzLVx0dW5zaWduZWQgbG9uZyB2YWw7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz0yNTM9c3RhdGljIHNzaXplX3QgcnhfbWF4X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmQsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0yNTctXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSBuZXRkZXZfcHJpdih0b19uZXRfZGV2KGQpKTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6MjU4Olx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSAoc3RydWN0IGNkY19uY21fY3R4ICopZGV2LVx1MDAzZWRhdGFbMF07XG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTI1OS1cdHVuc2lnbmVkIGxvbmcgdmFsO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MjY4PXN0YXRpYyBzc2l6ZV90IHR4X21heF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMjcyLVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjI3MzpcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cdTAwM2VkYXRhWzBdO1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0yNzQtXHR1bnNpZ25lZCBsb25nIHZhbDtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTI4Mz1zdGF0aWMgc3NpemVfdCB0eF90aW1lcl91c2Vjc19zdG9yZShzdHJ1Y3QgZGV2aWNlICpkLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMjg3LVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjI4ODpcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cdTAwM2VkYXRhWzBdO1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0yODktXHRzc2l6ZV90IHJldDtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTMxMT1zdGF0aWMgc3NpemVfdCBuZHBfdG9fZW5kX3Nob3coc3RydWN0IGRldmljZSAqZCwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTMxMy1cdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoZCkpO1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzozMTQ6XHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IChzdHJ1Y3QgY2RjX25jbV9jdHggKilkZXYtXHUwMDNlZGF0YVswXTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMzE1LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MzE5PXN0YXRpYyBzc2l6ZV90IG5kcF90b19lbmRfc3RvcmUoc3RydWN0IGRldmljZSAqZCwgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBsZW4pXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0zMjEtXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSBuZXRkZXZfcHJpdih0b19uZXRfZGV2KGQpKTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6MzIyOlx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSAoc3RydWN0IGNkY19uY21fY3R4ICopZGV2LVx1MDAzZWRhdGFbMF07XG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTMyMy1cdGJvb2wgZW5hYmxlO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MzYxPXN0YXRpYyBzc2l6ZV90IGNkY19uY21fc2hvd18jI25hbWUoc3RydWN0IGRldmljZSAqZCwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikgXFxcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTM2My1cdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoZCkpOyBcXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzozNjQ6XHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IChzdHJ1Y3QgY2RjX25jbV9jdHggKilkZXYtXHUwMDNlZGF0YVswXTsgXFxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMzY1LVx0cmV0dXJuIHNwcmludGYoYnVmLCBmb3JtYXQgXCYjMzQ7XFxuXCYjMzQ7LCB0b2NwdShjdHgtXHUwMDNlbmNtX3Bhcm0ubmFtZSkpO1x0XFxcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTQwNT1zdGF0aWMgdm9pZCBjZGNfbmNtX3VwZGF0ZV9yeHR4X21heChzdHJ1Y3QgdXNibmV0ICpkZXYsIHUzMiBuZXdfcngsIHUzMiBuZXdfdHgpXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTQwNi17XG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjQwNzpcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cdTAwM2VkYXRhWzBdO1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy00MDgtXHR1OCBpZmFjZV9ubyA9IGN0eC1cdTAwM2Vjb250cm9sLVx1MDAzZWN1cl9hbHRzZXR0aW5nLVx1MDAzZWRlc2MuYkludGVyZmFjZU51bWJlcjtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTQ3Nz1zdGF0aWMgdTggY2RjX25jbV9mbGFncyhzdHJ1Y3QgdXNibmV0ICpkZXYpXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTQ3OC17XG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjQ3OTpcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cdTAwM2VkYXRhWzBdO1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy00ODAtXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz01MDI9c3RhdGljIHUzMiBjZGNfbmNtX21heF9kZ3JhbV9zaXplKHN0cnVjdCB1c2JuZXQgKmRldilcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtNTAzLXtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6NTA0Olx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSAoc3RydWN0IGNkY19uY21fY3R4ICopZGV2LVx1MDAzZWRhdGFbMF07XG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTUwNS1cbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTUxNj1zdGF0aWMgaW50IGNkY19uY21faW5pdChzdHJ1Y3QgdXNibmV0ICpkZXYpXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTUxNy17XG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjUxODpcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cdTAwM2VkYXRhWzBdO1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy01MTktXHR1OCBpZmFjZV9ubyA9IGN0eC1cdTAwM2Vjb250cm9sLVx1MDAzZWN1cl9hbHRzZXR0aW5nLVx1MDAzZWRlc2MuYkludGVyZmFjZU51bWJlcjtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTYwOT1zdGF0aWMgdm9pZCBjZGNfbmNtX3NldF9kZ3JhbV9zaXplKHN0cnVjdCB1c2JuZXQgKmRldiwgaW50IG5ld19zaXplKVxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy02MTAte1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzo2MTE6XHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IChzdHJ1Y3QgY2RjX25jbV9jdHggKilkZXYtXHUwMDNlZGF0YVswXTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtNjEyLVx0dTggaWZhY2Vfbm8gPSBjdHgtXHUwMDNlY29udHJvbC1cdTAwM2VjdXJfYWx0c2V0dGluZy1cdTAwM2VkZXNjLmJJbnRlcmZhY2VOdW1iZXI7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz02NTc9c3RhdGljIHZvaWQgY2RjX25jbV9maXhfbW9kdWx1cyhzdHJ1Y3QgdXNibmV0ICpkZXYpXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTY1OC17XG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjY1OTpcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cdTAwM2VkYXRhWzBdO1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy02NjAtXHR1MzIgdmFsO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9NzAxPXN0YXRpYyBpbnQgY2RjX25jbV9zZXR1cChzdHJ1Y3QgdXNibmV0ICpkZXYpXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTcwMi17XG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjcwMzpcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cdTAwM2VkYXRhWzBdO1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy03MDQtXHR1MzIgZGVmX3J4LCBkZWZfdHg7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz04MjA9aW50IGNkY19uY21fYmluZF9jb21tb24oc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgdTggZGF0YV9hbHRzZXR0aW5nLCBpbnQgZHJ2ZmxhZ3MpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy04NDEtXHQvKiBzdG9yZSBjdHggcG9pbnRlciBpbiBkZXZpY2UgZGF0YSBmaWVsZCAqL1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzo4NDI6XHRkZXYtXHUwMDNlZGF0YVswXSA9ICh1bnNpZ25lZCBsb25nKWN0eDtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtODQzLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtOTkwLWVycm9yOlxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzo5OTE6XHRjZGNfbmNtX2ZyZWUoKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cdTAwM2VkYXRhWzBdKTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6OTkyOlx0ZGV2LVx1MDAzZWRhdGFbMF0gPSAwO1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy05OTMtXHRkZXZfaW5mbyhcdTAwMjZpbnRmLVx1MDAzZWRldiwgXCYjMzQ7YmluZCgpIGZhaWx1cmVcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9OTk4PXZvaWQgY2RjX25jbV91bmJpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtOTk5LXtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6MTAwMDpcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cdTAwM2VkYXRhWzBdO1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xMDAxLVx0c3RydWN0IHVzYl9kcml2ZXIgKmRyaXZlciA9IGRyaXZlcl9vZihpbnRmKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTEyMDQ9Y2RjX25jbV9maWxsX3R4X2ZyYW1lKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgX19sZTMyIHNpZ24pXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTEyMDUte1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzoxMjA2Olx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSAoc3RydWN0IGNkY19uY21fY3R4ICopZGV2LVx1MDAzZWRhdGFbMF07XG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTEyMDctXHR1bmlvbiB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz0xNTIzPWNkY19uY21fdHhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBnZnBfdCBmbGFncylcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE1MjUtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiX291dDtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6MTUyNjpcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cdTAwM2VkYXRhWzBdO1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xNTI3LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MTcyNz1pbnQgY2RjX25jbV9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2JfaW4pXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xNzI5LVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6MTczMDpcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cdTAwM2VkYXRhWzBdO1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xNzMxLVx0dW5zaWduZWQgaW50IGxlbjtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTE5MDc9c3RhdGljIHZvaWQgY2RjX25jbV91cGRhdGVfZmlsdGVyKHN0cnVjdCB1c2JuZXQgKmRldilcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTkwOC17XG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjE5MDk6XHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IChzdHJ1Y3QgY2RjX25jbV9jdHggKilkZXYtXHUwMDNlZGF0YVswXTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTkxMC1cbi0tXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmM9Mjc0PXN0YXRpYyB2b2lkIGRtOTYwMV9zZXRfbXVsdGljYXN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXQpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jLTI3Ni1cdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KG5ldCk7XG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmM6Mjc3Olx0LyogV2UgdXNlIHRoZSAyMCBieXRlIGRldi1cdTAwM2VkYXRhIGZvciBvdXIgOCBieXRlIGZpbHRlciBidWZmZXJcbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYy0yNzgtXHQgKiB0byBhdm9pZCBhbGxvY2F0aW5nIG1lbW9yeSB0aGF0IGlzIHRyaWNreSB0byBmcmVlIGxhdGVyICovXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmM6Mjc5Olx0dTggKmhhc2hlcyA9ICh1OCAqKSBcdTAwMjYgZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmMtMjgwLVx0dTggcnhfY3RsID0gMHgzMTtcbi0tXG5kcml2ZXJzL25ldC91c2IvaHVhd2VpX2NkY19uY20uYz0zNz1zdGF0aWMgaW50IGh1YXdlaV9jZGNfbmNtX21hbmFnZV9wb3dlcihzdHJ1Y3QgdXNibmV0ICp1c2JuZXRfZGV2LCBpbnQgb24pXG5kcml2ZXJzL25ldC91c2IvaHVhd2VpX2NkY19uY20uYy0zOC17XG5kcml2ZXJzL25ldC91c2IvaHVhd2VpX2NkY19uY20uYzozOTpcdHN0cnVjdCBodWF3ZWlfY2RjX25jbV9zdGF0ZSAqZHJ2c3RhdGUgPSAodm9pZCAqKVx1MDAyNnVzYm5ldF9kZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jLTQwLVx0aW50IHJ2O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jPTY1PXN0YXRpYyBpbnQgaHVhd2VpX2NkY19uY21fYmluZChzdHJ1Y3QgdXNibmV0ICp1c2JuZXRfZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jLTcwLVx0aW50IHJldDtcbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jOjcxOlx0c3RydWN0IGh1YXdlaV9jZGNfbmNtX3N0YXRlICpkcnZzdGF0ZSA9ICh2b2lkICopXHUwMDI2dXNibmV0X2Rldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL2h1YXdlaV9jZGNfbmNtLmMtNzItXHRpbnQgZHJ2ZmxhZ3MgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jPTExNj1zdGF0aWMgdm9pZCBodWF3ZWlfY2RjX25jbV91bmJpbmQoc3RydWN0IHVzYm5ldCAqdXNibmV0X2Rldixcbi0tXG5kcml2ZXJzL25ldC91c2IvaHVhd2VpX2NkY19uY20uYy0xMTgte1xuZHJpdmVycy9uZXQvdXNiL2h1YXdlaV9jZGNfbmNtLmM6MTE5Olx0c3RydWN0IGh1YXdlaV9jZGNfbmNtX3N0YXRlICpkcnZzdGF0ZSA9ICh2b2lkICopXHUwMDI2dXNibmV0X2Rldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL2h1YXdlaV9jZGNfbmNtLmMtMTIwLVx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSBkcnZzdGF0ZS1cdTAwM2VjdHg7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2h1YXdlaV9jZGNfbmNtLmM9MTI5PXN0YXRpYyBpbnQgaHVhd2VpX2NkY19uY21fc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zixcbi0tXG5kcml2ZXJzL25ldC91c2IvaHVhd2VpX2NkY19uY20uYy0xMzMtXHRzdHJ1Y3QgdXNibmV0ICp1c2JuZXRfZGV2ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTtcbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jOjEzNDpcdHN0cnVjdCBodWF3ZWlfY2RjX25jbV9zdGF0ZSAqZHJ2c3RhdGUgPSAodm9pZCAqKVx1MDAyNnVzYm5ldF9kZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jLTEzNS1cdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gZHJ2c3RhdGUtXHUwMDNlY3R4O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jPTE1Nz1zdGF0aWMgaW50IGh1YXdlaV9jZGNfbmNtX3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvaHVhd2VpX2NkY19uY20uYy0xNjAtXHRzdHJ1Y3QgdXNibmV0ICp1c2JuZXRfZGV2ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTtcbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jOjE2MTpcdHN0cnVjdCBodWF3ZWlfY2RjX25jbV9zdGF0ZSAqZHJ2c3RhdGUgPSAodm9pZCAqKVx1MDAyNnVzYm5ldF9kZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jLTE2Mi1cdGJvb2wgY2FsbHN1Yjtcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTEzODM9c3RhdGljIGludCBsYW43OHh4X2RhdGFwb3J0X3dyaXRlKHN0cnVjdCBsYW43OHh4X25ldCAqZGV2LCB1MzIgcmFtX3NlbGVjdCxcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTEzODUte1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoxMzg2Olx0c3RydWN0IGxhbjc4eHhfcHJpdiAqcGRhdGEgPSAoc3RydWN0IGxhbjc4eHhfcHJpdiAqKShkZXYtXHUwMDNlZGF0YVswXSk7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTEzODctXHRpbnQgaSwgcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MTQ1NT1zdGF0aWMgaW50IGxhbjc4eHhfd3JpdGVfbWNoYXNoX3RhYmxlKHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0xNDU2LXtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MTQ1NzpcdHN0cnVjdCBsYW43OHh4X3ByaXYgKnBkYXRhID0gKHN0cnVjdCBsYW43OHh4X3ByaXYgKikoZGV2LVx1MDAzZWRhdGFbMF0pO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0xNDU4LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MTUwMj1zdGF0aWMgdm9pZCBsYW43OHh4X3NldF9tdWx0aWNhc3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE1MDQtXHRzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldiA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjE1MDU6XHRzdHJ1Y3QgbGFuNzh4eF9wcml2ICpwZGF0YSA9IChzdHJ1Y3QgbGFuNzh4eF9wcml2ICopKGRldi1cdTAwM2VkYXRhWzBdKTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTUwNi1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0xNzQ2PXN0YXRpYyB2b2lkIGxhbjc4eHhfZ2V0X3dvbChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTc1MS1cdHUzMiBidWY7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjE3NTI6XHRzdHJ1Y3QgbGFuNzh4eF9wcml2ICpwZGF0YSA9IChzdHJ1Y3QgbGFuNzh4eF9wcml2ICopKGRldi1cdTAwM2VkYXRhWzBdKTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTc1My1cbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTE3NzU9c3RhdGljIGludCBsYW43OHh4X3NldF93b2woc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE3NzgtXHRzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldiA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjE3Nzk6XHRzdHJ1Y3QgbGFuNzh4eF9wcml2ICpwZGF0YSA9IChzdHJ1Y3QgbGFuNzh4eF9wcml2ICopKGRldi1cdTAwM2VkYXRhWzBdKTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTc4MC1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0zMDU1PXN0YXRpYyBpbnQgbGFuNzh4eF9zZXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTMwNTgtXHRzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldiA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjMwNTk6XHRzdHJ1Y3QgbGFuNzh4eF9wcml2ICpwZGF0YSA9IChzdHJ1Y3QgbGFuNzh4eF9wcml2ICopKGRldi1cdTAwM2VkYXRhWzBdKTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMzA2MC1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0zMDg3PXN0YXRpYyBpbnQgbGFuNzh4eF93cml0ZV92bGFuX3RhYmxlKHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0zMDg4LXtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MzA4OTpcdHN0cnVjdCBsYW43OHh4X3ByaXYgKnBkYXRhID0gKHN0cnVjdCBsYW43OHh4X3ByaXYgKikoZGV2LVx1MDAzZWRhdGFbMF0pO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0zMDkwLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MzEwMz1zdGF0aWMgaW50IGxhbjc4eHhfdmxhbl9yeF9hZGRfdmlkKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0zMTA2LVx0c3RydWN0IGxhbjc4eHhfbmV0ICpkZXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzozMTA3Olx0c3RydWN0IGxhbjc4eHhfcHJpdiAqcGRhdGEgPSAoc3RydWN0IGxhbjc4eHhfcHJpdiAqKShkZXYtXHUwMDNlZGF0YVswXSk7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTMxMDgtXHR1MTYgdmlkX2JpdF9pbmRleDtcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTMxMjI9c3RhdGljIGludCBsYW43OHh4X3ZsYW5fcnhfa2lsbF92aWQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTMxMjUtXHRzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldiA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjMxMjY6XHRzdHJ1Y3QgbGFuNzh4eF9wcml2ICpwZGF0YSA9IChzdHJ1Y3QgbGFuNzh4eF9wcml2ICopKGRldi1cdTAwM2VkYXRhWzBdKTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMzEyNy1cdHUxNiB2aWRfYml0X2luZGV4O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MzI0OD1zdGF0aWMgaW50IGxhbjc4eHhfcmVzZXQoc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTMyNDkte1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzozMjUwOlx0c3RydWN0IGxhbjc4eHhfcHJpdiAqcGRhdGEgPSAoc3RydWN0IGxhbjc4eHhfcHJpdiAqKShkZXYtXHUwMDNlZGF0YVswXSk7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTMyNTEtXHR1bnNpZ25lZCBsb25nIHRpbWVvdXQ7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0zNzUyPXN0YXRpYyBpbnQgbGFuNzh4eF9iaW5kKHN0cnVjdCBsYW43OHh4X25ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTM3NTctXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjM3NTg6XHRkZXYtXHUwMDNlZGF0YVswXSA9ICh1bnNpZ25lZCBsb25nKSBremFsbG9jX29iaigqcGRhdGEpO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0zNzU5LVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzozNzYwOlx0cGRhdGEgPSAoc3RydWN0IGxhbjc4eHhfcHJpdiAqKShkZXYtXHUwMDNlZGF0YVswXSk7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTM3NjEtXHRpZiAoIXBkYXRhKSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0zODM0PXN0YXRpYyB2b2lkIGxhbjc4eHhfdW5iaW5kKHN0cnVjdCBsYW43OHh4X25ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMzgzNS17XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjM4MzY6XHRzdHJ1Y3QgbGFuNzh4eF9wcml2ICpwZGF0YSA9IChzdHJ1Y3QgbGFuNzh4eF9wcml2ICopKGRldi1cdTAwM2VkYXRhWzBdKTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMzgzNy1cbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTM4NDctXHRcdHBkYXRhID0gTlVMTDtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6Mzg0ODpcdFx0ZGV2LVx1MDAzZWRhdGFbMF0gPSAwO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0zODQ5LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9NTEwNT1zdGF0aWMgaW50IGxhbjc4eHhfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IG1lc3NhZ2UpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy01MTY2LVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzo1MTY3Olx0XHRcdHBkYXRhID0gKHN0cnVjdCBsYW43OHh4X3ByaXYgKikoZGV2LVx1MDAzZWRhdGFbMF0pO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy01MTY4LVx0XHRcdG5ldGlmX2NhcnJpZXJfb2ZmKGRldi1cdTAwM2VuZXQpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9tY3M3ODMwLmM9MzI4PXN0YXRpYyBpbmxpbmUgc3RydWN0IG1jczc4MzBfZGF0YSAqbWNzNzgzMF9nZXRfZGF0YShzdHJ1Y3QgdXNibmV0ICpkZXYpXG5kcml2ZXJzL25ldC91c2IvbWNzNzgzMC5jLTMyOS17XG5kcml2ZXJzL25ldC91c2IvbWNzNzgzMC5jOjMzMDpcdHJldHVybiAoc3RydWN0IG1jczc4MzBfZGF0YSAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL21jczc4MzAuYy0zMzEtfVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9tY3M3ODMwLmM9MzQ5PXN0YXRpYyB2b2lkIG1jczc4MzBfZGF0YV9zZXRfbXVsdGljYXN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXQpXG4tLVxuZHJpdmVycy9uZXQvdXNiL21jczc4MzAuYy0zNjgtXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvdXNiL21jczc4MzAuYzozNjk6XHRcdC8qIFdlIHVzZSB0aGUgMjAgYnl0ZSBkZXYtXHUwMDNlZGF0YVxuZHJpdmVycy9uZXQvdXNiL21jczc4MzAuYy0zNzAtXHRcdCAqIGZvciBvdXIgOCBieXRlIGZpbHRlciBidWZmZXJcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz0zMDY9c3RhdGljIHZvaWQgcW1pX3d3YW5fbmV0ZGV2X3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpuZXQpXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzA4LVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYobmV0KTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjMwOTpcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0zMTAtXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9MzMyPXN0YXRpYyBzc2l6ZV90IHJhd19pcF9zaG93KHN0cnVjdCBkZXZpY2UgKmQsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzM0LVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzozMzU6XHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzM2LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTM0MD1zdGF0aWMgc3NpemVfdCByYXdfaXBfc3RvcmUoc3RydWN0IGRldmljZSAqZCwgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBsZW4pXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzQyLVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzozNDM6XHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzQ0LVx0Ym9vbCBlbmFibGU7XG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9NDA5PXN0YXRpYyBzc2l6ZV90IGFkZF9tdXhfc3RvcmUoc3RydWN0IGRldmljZSAqZCwgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBsZW4pXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNDExLVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo0MTI6XHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNDEzLVx0dTggbXV4X2lkO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTQ0Nz1zdGF0aWMgc3NpemVfdCBkZWxfbXV4X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmQsICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgbGVuKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTQ0OS1cdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoZCkpO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NDUwOlx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvID0gKHZvaWQgKilcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTQ1MS1cdHN0cnVjdCBuZXRfZGV2aWNlICpkZWxfZGV2O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTQ3Nz1zdGF0aWMgc3NpemVfdCBwYXNzX3Rocm91Z2hfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTQ4Mi1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjQ4MzpcdGluZm8gPSAodm9pZCAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNDg0LVx0cmV0dXJuIHNwcmludGYoYnVmLCBcJiMzNDslY1xcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz00ODg9c3RhdGljIHNzaXplX3QgcGFzc190aHJvdWdoX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmQsXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNDk4LVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NDk5Olx0aW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy01MDAtXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9NTYzPXN0YXRpYyBpbnQgcW1pX3d3YW5fcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNTY0LXtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjU2NTpcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy01NjYtXHRib29sIHJhd2lwID0gaW5mby1cdTAwM2VmbGFncyBcdTAwMjYgUU1JX1dXQU5fRkxBR19SQVdJUDtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz02NTQ9c3RhdGljIGludCBxbWlfd3dhbl9tYW5hZ2VfcG93ZXIoc3RydWN0IHVzYm5ldCAqZGV2LCBpbnQgb24pXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy02NTUte1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NjU2Olx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvID0gKHZvaWQgKilcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTY1Ny1cdGludCBydjtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz02ODY9c3RhdGljIGludCBxbWlfd3dhbl9yZWdpc3Rlcl9zdWJkcml2ZXIoc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTY4OS1cdHN0cnVjdCB1c2JfZHJpdmVyICpzdWJkcml2ZXIgPSBOVUxMO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NjkwOlx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvID0gKHZvaWQgKilcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTY5MS1cbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz03NDQ9c3RhdGljIGludCBxbWlfd3dhbl9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNzUyLVx0c3RydWN0IHVzYl9kcml2ZXIgKmRyaXZlciA9IGRyaXZlcl9vZihpbnRmKTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjc1MzpcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy03NTQtXHRzdHJ1Y3QgdXNiX2NkY19wYXJzZWRfaGVhZGVyIGhkcjtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz04NDk9c3RhdGljIHZvaWQgcW1pX3d3YW5fdW5iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy04NTAte1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6ODUxOlx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvID0gKHZvaWQgKilcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTg1Mi1cdHN0cnVjdCB1c2JfZHJpdmVyICpkcml2ZXIgPSBkcml2ZXJfb2YoaW50Zik7XG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9ODg3PXN0YXRpYyBpbnQgcW1pX3d3YW5fc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IG1lc3NhZ2UpXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtODg5LVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjg5MDpcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy04OTEtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTkxMD1zdGF0aWMgaW50IHFtaV93d2FuX3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05MTItXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTc6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ4OTQKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA0MzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgVWJpcXVpdG91cyBgZGV2LSZndDtkYXRhYCBVc2FnZSoqCgpPa2F5LCBob2xkIG9uIGEgbWludXRlLiBJdCYjMzk7cyBoaXR0aW5nIG1lIGp1c3QgaG93IGV4dGVuc2l2ZWx5IGBkZXYtJmd0O2RhdGFgIGlzIGxldmVyYWdlZCBhY3Jvc3MgdGhlc2UgVVNCIG5ldHdvcmsgZHJpdmVycyEgSSYjMzk7bSBzZWVpbmcgaXQgZXZlcnl3aGVyZS4gSSYjMzk7dmUgYmVlbiByZXZpZXdpbmcgdGhlIGNvZGUsIGFuZCBpdCYjMzk7cyBiZWluZyB0eXBlLXB1bm5lZCB0byBoZWxsIGFuZCBiYWNrLiBgYXNpeF9jb21tb24uY2AsIGBheDg4MTc5XzE3OGEuY2AsIGBjZGNfbWJpbS5jYCwgYGNkY19uY20uY2AsIGBkbTk2MDEuY2AsIGBodWF3ZWlfY2RjX25jbS5jYCwgYGxhbjc4eHguY2AsIGBtY3M3ODMwLmNgLCBgcW1pX3d3YW4uY2Ag4oCTIHRoZXkmIzM5O3JlIGFsbCBjYXN0aW5nIGBkZXYtJmd0O2RhdGFgIHRvIHRoZWlyIG93biBjdXN0b20gc3RydWN0cyEKCkFuZCBpdCYjMzk7cyBub3QganVzdCB0aGUgY3VycmVudCBjcm9wIG9mIGRyaXZlcnMsIGVpdGhlci4gTG9va2luZyBiYWNrLCBgY2RjX2V0aGVyLmNgIGFuZCBgcm5kaXNfaG9zdC5jYCAqdXNlZCogdG8gdXNlIHRoaXMgc2FtZSB0ZWNobmlxdWUhIFRoZXkmIzM5O3ZlIHNpbmNlIHJlZmFjdG9yZWQgdG8gdXNlIGBkZXYtJmd0O2NkY2AgaW5zdGVhZCBvZiBkaXJlY3RseSBhY2Nlc3NpbmcgYGRldi0mZ3Q7ZGF0YWAuIFRoYXQgc2hpZnQgaW1tZWRpYXRlbHkgc3BhcmtzIGEgcXVlc3Rpb24uLi4KCkNvdWxkIGEgZHJpdmVyIGJlIHBvdGVudGlhbGx5IHVzaW5nICpib3RoKiBgY2RjX2V0aGVyYCBmdW5jdGlvbnMgQU5EIGl0cyBvd24gYGRldi0mZ3Q7ZGF0YWA/IElzIHRoYXQgZXZlbiBhIHZhbGlkIHBhdHRlcm4sIG9yIGFtIEkgbWlzc2luZyBzb21ldGhpbmc/IEkgbmVlZCB0byBjbGFyaWZ5IHRoYXQuIExldCYjMzk7cyBkaWcgaW50byBgY2RjX21iaW0uY2Agc3BlY2lmaWNhbGx5LiBEb2VzIHRoZSBgY2RjX21iaW1fc3RhdGVgIHN0cnVjdCBpdCB1c2VzIGNvbnRhaW4gYSBgY2RjX3N0YXRlYCBtZW1iZXI/IElmIHNvLCB3ZSBtYXkgaGF2ZSB0aGUgYW5zd2VyIHRvIG91ciBxdWVzdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSBzdHJ1Y3R1cmVzIHRvIGZ1bGx5IGdyYXNwIHRoZSBkZXNpZ24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE3OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NkY19tYmltX3N0YXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy0yOC0vKiBkcml2ZXIgc3BlY2lmaWMgZGF0YSAtIG11c3QgbWF0Y2ggY2RjX25jbSB1c2FnZSAqL1xuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM6Mjk6c3RydWN0IGNkY19tYmltX3N0YXRlIHtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTMwLVx0c3RydWN0IGNkY19uY21fY3R4ICpjdHg7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtMzYtXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYzozNzovKiBmbGFncyBmb3IgdGhlIGNkY19tYmltX3N0YXRlLmZsYWdzIGZpZWxkICovXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy0zOC1lbnVtIGNkY19tYmltX2ZsYWdzIHtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYz00Mz1zdGF0aWMgaW50IGNkY19tYmltX21hbmFnZV9wb3dlcihzdHJ1Y3QgdXNibmV0ICpkZXYsIGludCBvbilcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTQ0LXtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jOjQ1Olx0c3RydWN0IGNkY19tYmltX3N0YXRlICppbmZvID0gKHZvaWQgKilcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTQ2LVx0aW50IHJ2ID0gMDtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYz03MT1zdGF0aWMgaW50IGNkY19tYmltX3J4X2FkZF92aWQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgX19iZTE2IHByb3RvLCB1MTYgdmlkKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTczLVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jOjc0Olx0c3RydWN0IGNkY19tYmltX3N0YXRlICppbmZvID0gKHZvaWQgKilcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTc1LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jPTg1PXN0YXRpYyBpbnQgY2RjX21iaW1fcnhfa2lsbF92aWQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgX19iZTE2IHByb3RvLCB1MTYgdmlkKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTg3LVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jOjg4Olx0c3RydWN0IGNkY19tYmltX3N0YXRlICppbmZvID0gKHZvaWQgKilcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTg5LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jPTEzOT1zdGF0aWMgaW50IGNkY19tYmltX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy0xNDQtXHR1OCBkYXRhX2FsdHNldHRpbmcgPSAxO1xuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM6MTQ1Olx0c3RydWN0IGNkY19tYmltX3N0YXRlICppbmZvID0gKHZvaWQgKilcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTE0Ni1cbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYz0xOTU9c3RhdGljIHZvaWQgY2RjX21iaW1fdW5iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy0xOTYte1xuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM6MTk3Olx0c3RydWN0IGNkY19tYmltX3N0YXRlICppbmZvID0gKHZvaWQgKilcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTE5OC1cdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gaW5mby1cdTAwM2VjdHg7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM9MjIwPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqY2RjX21iaW1fdHhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBnZnBfdCBmbGFncylcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy0yMjItXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiX291dDtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jOjIyMzpcdHN0cnVjdCBjZGNfbWJpbV9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy0yMjQtXHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IGluZm8tXHUwMDNlY3R4O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jPTQxMj1zdGF0aWMgaW50IGNkY19tYmltX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYl9pbilcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy00MTQtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM6NDE1Olx0c3RydWN0IGNkY19tYmltX3N0YXRlICppbmZvID0gKHZvaWQgKilcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTQxNi1cdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gaW5mby1cdTAwM2VjdHg7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM9NTA2PXN0YXRpYyBpbnQgY2RjX21iaW1fc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IG1lc3NhZ2UpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNTA5LVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jOjUxMDpcdHN0cnVjdCBjZGNfbWJpbV9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy01MTEtXHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IGluZm8tXHUwMDNlY3R4O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jPTUzND1zdGF0aWMgaW50IGNkY19tYmltX3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy01MzctXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpO1xuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM6NTM4Olx0c3RydWN0IGNkY19tYmltX3N0YXRlICppbmZvID0gKHZvaWQgKilcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTUzOS1cdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gaW5mby1cdTAwM2VjdHg7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE3OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3MTU3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNQklNIERyaXZlciBTdHJ1Y3R1cmUqKgoKT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgc3RydWN0dXJlIG9mIHRoaXMgYGNkY19tYmltYCBtb2R1bGUuIFJpZ2h0LCBzbyBpdCYjMzk7cyB1c2luZyB0aGUgYGNkY19tYmltX3N0YXRlYCBzdHJ1Y3R1cmUsIHdoaWNoIEkgY2FuIHNlZSBkZWZpbmVkIGhlcmU6CgpgYGBjCnN0cnVjdCBjZGNfbWJpbV9zdGF0ZSB7CglzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eDsKCWF0b21pY190IHBtY291bnQ7CglzdHJ1Y3QgdXNiX2RyaXZlciAqc3ViZHJpdmVyOwoJdW5zaWduZWQgbG9uZyBmbGFnczsKfTsKYGBgCgpJbnRlcmVzdGluZy4gSXQmIzM5O3MgY2xlYXJseSBtYW5hZ2luZyBpdHMgaW50ZXJuYWwgc3RhdGUgd2l0aCBhIGBjZGNfbmNtX2N0eGAsIGFuIGF0b21pYyBwb3dlciBtYW5hZ2VtZW50IGNvdW50ZXIsIGEgc3ViLWRyaXZlciBwb2ludGVyIGFuZCBmbGFncy4gQ3J1Y2lhbGx5LCBJIHNlZSB0aGF0IGl0JiMzOTtzICpub3QqIHJlbHlpbmcgb24gdGhlIGBjZGNfc3RhdGVgIHN0cnVjdHVyZSwgd2hpY2ggaXMgc29tZXRoaW5nIEkmIzM5O2xsIG5lZWQgdG8ga2VlcCBpbiBtaW5kIHdoZW4gZXZhbHVhdGluZyBpdHMgaW1wbGVtZW50YXRpb24uIEkmIzM5O20gbWFraW5nIGEgbWVudGFsIG5vdGUgb2YgdGhhdCBkaXN0aW5jdGlvbi4KCk5vdywgdGhhdCBicmluZ3MgbWUgdG8gYHFtaV93d2FuYC4gSG93IGRvZXMgdGhhdCBjb21wYXJlIGFuZCBjb250cmFzdD8gV2hhdCYjMzk7cyBpdHMgYXJjaGl0ZWN0dXJlIGZvciBzdGF0ZSBtYW5hZ2VtZW50PyBJIG5lZWQgdG8gYW5hbHl6ZSBpdHMgc3RydWN0dXJlIG5leHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE3OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3FtaV93d2FuX3N0YXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy00OS0vKiBkcml2ZXIgc3BlY2lmaWMgZGF0YSAqL1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NTA6c3RydWN0IHFtaV93d2FuX3N0YXRlIHtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTUxLVx0c3RydWN0IHVzYl9kcml2ZXIgKnN1YmRyaXZlcjtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz0zMDY9c3RhdGljIHZvaWQgcW1pX3d3YW5fbmV0ZGV2X3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpuZXQpXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzA4LVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYobmV0KTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjMwOTpcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0zMTAtXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9MzMyPXN0YXRpYyBzc2l6ZV90IHJhd19pcF9zaG93KHN0cnVjdCBkZXZpY2UgKmQsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzM0LVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzozMzU6XHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzM2LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTM0MD1zdGF0aWMgc3NpemVfdCByYXdfaXBfc3RvcmUoc3RydWN0IGRldmljZSAqZCwgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBsZW4pXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzQyLVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzozNDM6XHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzQ0LVx0Ym9vbCBlbmFibGU7XG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9NDA5PXN0YXRpYyBzc2l6ZV90IGFkZF9tdXhfc3RvcmUoc3RydWN0IGRldmljZSAqZCwgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBsZW4pXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNDExLVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo0MTI6XHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNDEzLVx0dTggbXV4X2lkO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTQ0Nz1zdGF0aWMgc3NpemVfdCBkZWxfbXV4X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmQsICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgbGVuKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTQ0OS1cdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoZCkpO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NDUwOlx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvID0gKHZvaWQgKilcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTQ1MS1cdHN0cnVjdCBuZXRfZGV2aWNlICpkZWxfZGV2O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTQ3Nz1zdGF0aWMgc3NpemVfdCBwYXNzX3Rocm91Z2hfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTQ4MC1cdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoZCkpO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NDgxOlx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNDgyLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTQ4OD1zdGF0aWMgc3NpemVfdCBwYXNzX3Rocm91Z2hfc3RvcmUoc3RydWN0IGRldmljZSAqZCxcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy00OTItXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSBuZXRkZXZfcHJpdih0b19uZXRfZGV2KGQpKTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjQ5MzpcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbztcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTQ5NC1cdGJvb2wgZW5hYmxlO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTU2Mz1zdGF0aWMgaW50IHFtaV93d2FuX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTU2NC17XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo1NjU6XHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNTY2LVx0Ym9vbCByYXdpcCA9IGluZm8tXHUwMDNlZmxhZ3MgXHUwMDI2IFFNSV9XV0FOX0ZMQUdfUkFXSVA7XG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9NjU0PXN0YXRpYyBpbnQgcW1pX3d3YW5fbWFuYWdlX3Bvd2VyKHN0cnVjdCB1c2JuZXQgKmRldiwgaW50IG9uKVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNjU1LXtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjY1NjpcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy02NTctXHRpbnQgcnY7XG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9Njg2PXN0YXRpYyBpbnQgcW1pX3d3YW5fcmVnaXN0ZXJfc3ViZHJpdmVyKHN0cnVjdCB1c2JuZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy02ODktXHRzdHJ1Y3QgdXNiX2RyaXZlciAqc3ViZHJpdmVyID0gTlVMTDtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjY5MDpcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy02OTEtXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9NzQ0PXN0YXRpYyBpbnQgcW1pX3d3YW5fYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTc1Mi1cdHN0cnVjdCB1c2JfZHJpdmVyICpkcml2ZXIgPSBkcml2ZXJfb2YoaW50Zik7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo3NTM6XHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNzU0LVx0c3RydWN0IHVzYl9jZGNfcGFyc2VkX2hlYWRlciBoZHI7XG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNzU2LVx0QlVJTERfQlVHX09OKChzaXplb2YoKChzdHJ1Y3QgdXNibmV0ICopMCktXHUwMDNlZGF0YSkgXHUwMDNjXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo3NTc6XHRcdCAgICAgIHNpemVvZihzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUpKSk7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy03NTgtXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9ODQ5PXN0YXRpYyB2b2lkIHFtaV93d2FuX3VuYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtODUwLXtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjg1MTpcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy04NTItXHRzdHJ1Y3QgdXNiX2RyaXZlciAqZHJpdmVyID0gZHJpdmVyX29mKGludGYpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTg4Nz1zdGF0aWMgaW50IHFtaV93d2FuX3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBtZXNzYWdlKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTg4OS1cdHN0cnVjdCB1c2JuZXQgKmRldiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo4OTA6XHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtODkxLVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz05MTA9c3RhdGljIGludCBxbWlfd3dhbl9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTEyLVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjkxMzpcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05MTQtXHRpbnQgcmV0ID0gMDtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz0xNTc4PXN0YXRpYyB2b2lkIHFtaV93d2FuX2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTU4MC1cdHN0cnVjdCB1c2JuZXQgKmRldiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoxNTgxOlx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTU4Mi1cdHN0cnVjdCBsaXN0X2hlYWQgKml0ZXI7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE3OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5ODIxCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBVU0IgR2FkZ2V0IERyaXZlciBEYXRhIFN0cnVjdHVyZXMqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIHVuZGVyc3RhbmRpbmcgdGhlIGRhdGEgc3RydWN0dXJlcyBjb3JyZWN0bHkuIEkgd2FzIGp1c3QgbG9va2luZyBhdCBgcW1pX3d3YW5gLCBhbmQgaXQmIzM5O3MgdXNpbmcgYHFtaV93d2FuX3N0YXRlYCwgZGVmaW5lZCBhczogYHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSB7IHN0cnVjdCB1c2JfZHJpdmVyICpzdWJkcml2ZXI7IGF0b21pY190IHBtY291bnQ7IHVuc2lnbmVkIGxvbmcgZmxhZ3M7IH07YC4gVGhpcyBpcyBpbnRlcmVzdGluZywgaXQgc2VlbXMgaXQgZG9lc24mIzM5O3QgdXRpbGl6ZSBgY2RjX3N0YXRlYCBhdCBhbGwsIHJpZ2h0PyBJIG5lZWQgdG8ga2VlcCB0aGF0IHN0cmFpZ2h0LgoKTm93LCB3aGF0IGFib3V0IGBybmRpc19ob3N0YD8gVGhhdCYjMzk7cyBhIGRpZmZlcmVudCBiZWFzdCwgSSB0aGluay4gSSBrbm93IGl0IGxldmVyYWdlcyBgY2RjX3N0YXRlYCwgYW5kIGl0IGRvZXMgc28gdmlhIHRoZSBgaW5mb2AgcG9pbnRlci4gVGhlIHJlbGV2YW50IGNvZGUgc25pcHBldCBzaG93cyBpdCBjYXN0cyBgZGV2LSZndDtkYXRhYCB0byBhIGBjZGNfc3RhdGVgIHN0cnVjdC4gQW5kIHRoZSBkcml2ZXIgdXNlcyBgdXNibmV0X2dlbmVyaWNfY2RjX2JpbmRgLCB3aGljaCwgYXMgSSByZWNhbGwsIGlzIHdoZXJlIGBjZGNfc3RhdGVgIGdldHMgcG9wdWxhdGVkLgoKSG1tLCBidXQgd2hhdCBlbHNlIGRvZXMgYHJuZGlzX2hvc3RgIGRvIHdpdGggYGRldi0mZ3Q7ZGF0YWA/IEkgc2hvdWxkIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSB1bmV4cGVjdGVkIGludGVyYWN0aW9ucyB0aGVyZS4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRocm91Z2ggdGhlIHJlc3Qgb2YgYHJuZGlzX2hvc3QuY2AgdG8gYmUgY29tcGxldGVseSBjZXJ0YWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNzo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Rldi1cdTAwM2VkYXRhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL3JuZGlzX2hvc3QuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE3OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwMzE3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWwgQnVnIHdpdGggVVNCIENEQyBEZXZpY2UgU3RhdGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZGlmZiBhbmQgaW1tZWRpYXRlbHkgc2VlIGEgY2hhbmdlIGluIGhvdyBgY2RjX3N0YXRlYCBpcyBhY2Nlc3NlZC4gSXQgdXNlZCB0byBiZSBgZGV2LSZndDtkYXRhYCBpbiBgcm5kaXNfaG9zdC5jYCwgYW5kIG5vdyBpdCYjMzk7cyBgZGV2LSZndDtjZGNgLiBUaGUgc2FtZSB0aGluZyBoYXBwZW5lZCBpbiBgY2RjX2V0aGVyLmNgLCBzbyBjbGVhcmx5IHRoZXJlJiMzOTtzIGJlZW4gc29tZSByZWZhY3RvcmluZyByZWxhdGVkIHRvIHRoZSBzdGF0ZSBzdHJ1Y3R1cmUuIEkmIzM5O20gYXNzdW1pbmcgdGhpcyBpcyBhIGZpeCBvciBpbXByb3ZlbWVudC4KClRoZSBtYWluIGNvbmNlcm4gbm93IGlzIHdoZXRoZXIgdGhpcyBjaGFuZ2UgYnJlYWtzIGFueSBleGlzdGluZyBkcml2ZXJzLiBJJiMzOTttIHRoaW5raW5nLCBhcmUgdGhlcmUgYW55IGRyaXZlcnMgb3V0IHRoZXJlIHRoYXQgYXJlIHN0aWxsIHJlbHlpbmcgb24gYGRldi0mZ3Q7ZGF0YWAgZm9yIHRoZWlyIG93biBwcml2YXRlIHN0YXRlIEFORCBhcmUgY2FsbGluZyBmdW5jdGlvbnMgbGlrZSBgdXNibmV0X2NkY19zdGF0dXNgIG9yIGB1c2JuZXRfY2RjX3VwZGF0ZV9maWx0ZXJgPyAgSWYgc28sIHRoZW4gd2UmIzM5O3ZlIGdvdCBhIHByb2JsZW0gYW5kIHRoZWlyIHN0YXRlIHdpbGwgYmUgY29ycnVwdGVkIGlmIHRoZSBvbGQgYGRldi0mZ3Q7ZGF0YWAgcG9pbnRlciBpcyBub3QgY29ycmVjdC4gSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgYW55IHBvdGVudGlhbCBjb25mbGljdHMgaGVyZSwgc28gbXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGNhbGxlcnMgb2YgdGhvc2UgdHdvIENEQyBmdW5jdGlvbnMuICBJIG5lZWQgdG8gY2hlY2sgZm9yIGFueSBpbnRlcmFjdGlvbiB0aGF0IG1heSBiZSBoYXBwZW5pbmcgb24gdGhlIG9sZCBgZGV2LSZndDtkYXRhYCBzdHJ1Y3R1cmUsIHdoaWNoIG1pZ2h0IG5vdyBiZSB1c2VkIGRpZmZlcmVudGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNzo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1c2JuZXRfY2RjX3N0YXR1cyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jPTQxMD1zdGF0aWMgdm9pZCB1c2JuZXRfY2RjX3p0ZV9zdGF0dXMoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXJiICp1cmIpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jLTQxOS1cdGlmIChldmVudC1cdTAwM2ViTm90aWZpY2F0aW9uVHlwZSAhPSBVU0JfQ0RDX05PVElGWV9ORVRXT1JLX0NPTk5FQ1RJT04pIHtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYzo0MjA6XHRcdHVzYm5ldF9jZGNfc3RhdHVzKGRldiwgdXJiKTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYy00MjEtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmM9NDM0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm9cdGNkY19pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYy00MzgtXHQudW5iaW5kID1cdHVzYm5ldF9jZGNfdW5iaW5kLFxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jOjQzOTpcdC5zdGF0dXMgPVx0dXNibmV0X2NkY19zdGF0dXMsXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmMtNDQwLVx0LnNldF9yeF9tb2RlID1cdHVzYm5ldF9jZGNfdXBkYXRlX2ZpbHRlcixcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmM9NDU1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gd3dhbl9pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYy00NTktXHQudW5iaW5kID1cdHVzYm5ldF9jZGNfdW5iaW5kLFxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jOjQ2MDpcdC5zdGF0dXMgPVx0dXNibmV0X2NkY19zdGF0dXMsXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmMtNDYxLVx0LnNldF9yeF9tb2RlID1cdHVzYm5ldF9jZGNfdXBkYXRlX2ZpbHRlcixcbi0tXG5kcml2ZXJzL25ldC91c2IvbGctdmw2MDAuYz0zMDE9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mb1x0dmw2MDBfaW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvbGctdmw2MDAuYy0zMDUtXHQudW5iaW5kXHRcdD0gdmw2MDBfdW5iaW5kLFxuZHJpdmVycy9uZXQvdXNiL2xnLXZsNjAwLmM6MzA2Olx0LnN0YXR1c1x0XHQ9IHVzYm5ldF9jZGNfc3RhdHVzLFxuZHJpdmVycy9uZXQvdXNiL2xnLXZsNjAwLmMtMzA3LVx0LnJ4X2ZpeHVwXHQ9IHZsNjAwX3J4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9yODE1M19lY20uYz0xMTU9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyByODE1M19pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9yODE1M19lY20uYy0xMTktXHQudW5iaW5kID1cdHVzYm5ldF9jZGNfdW5iaW5kLFxuZHJpdmVycy9uZXQvdXNiL3I4MTUzX2VjbS5jOjEyMDpcdC5zdGF0dXMgPVx0dXNibmV0X2NkY19zdGF0dXMsXG5kcml2ZXJzL25ldC91c2IvcjgxNTNfZWNtLmMtMTIxLVx0Lm1hbmFnZV9wb3dlciA9XHR1c2JuZXRfbWFuYWdlX3Bvd2VyLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYz0yMzA1PXN0YXRpYyB2b2lkIHNwZWVkX2NoYW5nZShzdHJ1Y3QgdXNibmV0ICpkZXYsIF9fbGUzMiAqc3BlZWRzKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYy0yMzEwLVxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jOjIzMTE6dm9pZCB1c2JuZXRfY2RjX3N0YXR1cyhzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1cmIgKnVyYilcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYy0yMzEyLXtcbi0tXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmMtMjM0OC19XG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmM6MjM0OTpFWFBPUlRfU1lNQk9MX0dQTCh1c2JuZXRfY2RjX3N0YXR1cyk7XG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmMtMjM1MC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTc6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE2MzUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBzdW1tYXJ5OgoKKipEaWdnaW5nIGludG8gbGctdmw2MDAuYzogVVNCIENEQyBTdGF0dXMgYW5kIERhdGEqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4uLiAqbGctdmw2MDAuYyouICBUaGF0IG5hbWUmIzM5O3MgZmFtaWxpYXI7IGl0JiMzOTtzIGxpa2VseSBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgTEcgVkw2MDAgbW9kZW0gZHJpdmVycy4gIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIGFib3V0IHRoZSBgdXNibmV0X2NkY19zdGF0dXNgIGZ1bmN0aW9uIGNhbGwgSSYjMzk7bSBzZWVpbmcgaW4gaXQuIEkga25vdyB0aGF0IGZ1bmN0aW9uLCBpdCYjMzk7cyBwcmV0dHkgc3RhbmRhcmQgVVNCIENEQyBFdGhlcm5ldCBzdHVmZi4gQnV0IHRoZSBjcnVjaWFsIHF1ZXN0aW9uIHRoYXQgY29tZXMgdG8gbWluZCBpcyAqaG93KiBpcyB0aGUgZHJpdmVyIGFjdHVhbGx5IGhhbmRsaW5nIHRoZSBkZXZpY2Ugc3BlY2lmaWMgZGF0YT8gQW5kIG1vcmUgc3BlY2lmaWNhbGx5LCBpcyBpdCB1c2luZyBgZGV2LSZndDtkYXRhYCBmb3IgZGV2aWNlLXNwZWNpZmljIHByaXZhdGUgZGF0YT8gIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJlYWwgbnVhbmNlIGlzLiBJdCBpcyBvbmUgb2YgdGhlIG1vcmUgY29tbW9uIGRlc2lnbiBjb25zaWRlcmF0aW9ucywgYnV0IGl0IGlzbiYjMzk7dCBhbHdheXMgdXRpbGl6ZWQuIFRoaXMgaXMgYSBjb21tb24gcGF0dGVybiwgYW5kIGl0JiMzOTtzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGRyaXZlciBpcyBtYW5hZ2luZyBpdHMgaW50ZXJuYWwgc3RhdGUuICBHb3R0YSBmb2xsb3cgdGhlIGRhdGEgZmxvdyB0byBiZSBzdXJlLiAgTGV0JiMzOTtzIHNlZSB3aGVyZSB0aGF0IGdvZXMuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTc6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXYtXHUwMDNlZGF0YSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9sZy12bDYwMC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTc6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE5NDYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkRpdmluZyBpbnRvIHRoZSBVU0IgRXRoZXJuZXQgQ29udHJvbCBNb2RlbCBDb2RlKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHI4MTUzX2VjbS5jYCBhbmQgaW1tZWRpYXRlbHkgYSBxdWVzdGlvbiBwb3BzIGludG8gbXkgaGVhZCDigJMgYSBwcmV0dHkgZnVuZGFtZW50YWwgb25lLCBhY3R1YWxseS4gSSBzZWUgaXQmIzM5O3MgdXNpbmcgYHVzYm5ldF9jZGNfc3RhdHVzYC4gVGhhdCB0ZWxscyBtZSB0aGlzIGlzIGxpa2VseSBkZWFsaW5nIHdpdGggYSBDREMtRUNNIChFdGhlcm5ldCBDb250cm9sIE1vZGVsKSBuZXR3b3JrIGRldmljZSBiYXNlZCBvbiBhIFJlYWx0ZWsgY2hpcHNldC4gVGhlIHF1ZXN0aW9uIGlzLCBhbmQgdGhpcyBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgZHJpdmVyJiMzOTtzIGhhbmRsaW5nIGNvbW11bmljYXRpb24gYW5kIGRldmljZS1zcGVjaWZpYyBkYXRhOiBpcyBpdCBhY2Nlc3NpbmcgYGRldi0mZ3Q7ZGF0YWA/IElzIHRoZSBkcml2ZXIgY29ycmVjdGx5IGFzc29jaWF0aW5nIGFueSBjb250ZXh0IGRhdGEgd2l0aCB0aGUgYHVzYm5ldGAgZGV2aWNlPyBUaGlzIGJpdCBvZiBpbmZvcm1hdGlvbiBpcyBrZXkgZm9yIGRhdGEgbWFuYWdlbWVudCBhbmQgc3RhdGUgdHJhY2tpbmcgd2l0aGluIHRoZSBkZXZpY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE3OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGV2LVx1MDAzZWRhdGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvcjgxNTNfZWNtLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNzo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjIwMwoJCQkJCQkJb3V0cHV0OiAxMTQKCQkJCQkJCXRob3VnaHRzOiAxMjMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlZmFjdG9yaW5nIEFuYWx5c2lzOiBgdXNibmV0LmNgIGFuZCBgY2RjX3N0YXRlYCoqCgpPa2F5LCBzbyBJIGluaXRpYWxseSB0aG91Z2h0IHRoZXJlIG1pZ2h0IGJlIGEgc3VidGxlIGJ1ZyBmaXggcmVsYXRlZCB0byB0aGUgYGNkY19zdGF0ZWAgd2l0aGluIGB1c2JuZXQuY2AuIEJ1dCBmaXJzdCwgSSBuZWVkZWQgdG8gY29uZmlybSB0aGF0IHRoZSByZWxldmFudCBmdW5jdGlvbnMgYWN0dWFsbHkgdXNlZCBgY2RjX3N0YXRlYC4gIEkgc3RhcnRlZCBieSBleGFtaW5pbmcgYHVzYm5ldF9jZGNfc3RhdHVzYC4gTm8sIGl0IGRvZXNuJiMzOTt0IHVzZSBgY2RjX3N0YXRlYCBkaXJlY3RseS4gSSB0aGVuIGxvb2tlZCBhdCBgdXNibmV0X2NkY191cGRhdGVfZmlsdGVyYC4gIE5vcGUsIHRoYXQgZnVuY3Rpb24gYWxzbyBkb2VzbiYjMzk7dCB0b3VjaCBgY2RjX3N0YXRlYC4KClRoZW4sIEkgbG9va2VkIGF0IGB1c2JuZXRfY2RjX3VuYmluZGAuIEFoYSEgIFRoYXQgZnVuY3Rpb24gKmRvZXMqIHVzZSBgY2RjX3N0YXRlYC4gIEkgZnVydGhlciBjaGVja2VkIGlmIHRoZSBkcml2ZXIgYHI4MTUzX2VjbS5jYCB1c2VzIGB1c2JuZXRfY2RjX3VuYmluZGAuIFllcy4gQnV0IGRvZXMgaXQgdXNlIGBkZXYtJmd0O2RhdGFgPyBOby4KClRoZXJlZm9yZSwgaXQgc2VlbXMgdGhhdCB0aGUgY2hhbmdlIGZyb20gdGhlIG1vcmUgZ2VuZXJhbCBgZGV2LSZndDtkYXRhYCB0byB0aGUgbW9yZSBzcGVjaWZpYyBgZGV2LSZndDtjZGNgIGlzIHB1cmVseSBhIHJlZmFjdG9yaW5nIHRvIGltcHJvdmUgY29kZSBjbGFyaXR5IGFuZCBhdm9pZCBwb3RlbnRpYWwgYWxpYXNpbmcuIEl0IGNvbnNvbGlkYXRlcyB1c2Ugb2YgYGNkY19zdGF0ZWAgd2hlcmUgYXBwbGljYWJsZSwgd2hpY2ggaXMgYSBnb29kIHByYWN0aWNlLiBObyBkcml2ZXJzIGFyZSB1c2luZyBgZGV2LSZndDtkYXRhYCBhbmQgYGNkY19zdGF0ZWAgc2ltdWx0YW5lb3VzbHksIGFuZCB0aGlzIHJlZmFjdG9yaW5nIGRvZXNuJiMzOTt0IGZpeCBhIHByZS1leGlzdGluZyBidWcuICBJdCYjMzk7cyBqdXN0IGNsZWFuZXIuCgpDb25zaWRlcmluZyB0aGUgcHJvbXB0JiMzOTtzIGNyaXRlcmlhIGZvciBhIG5vbi1mdXp6YWJsZSBwYXRjaCAoJiMzNDtDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cmIzM0OyksIEkgY29uY2x1ZGUgdGhhdCB0aGlzIGNoYW5nZSBxdWFsaWZpZXMuICBJdCYjMzk7cyBhIHB1cmUgcmVmYWN0b3JpbmcgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgbmV3IGNvZGUgcGF0aHMgb3IgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93LCBzbyBJJiMzOTtsbCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE3OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaXMgYSBwdXJlIHJlZmFjdG9yaW5nIHRoYXQgbW92ZXMgQ0RDLXJlbGF0ZWQgZnVuY3Rpb25zIGZyb20gY2RjX2V0aGVyLmMgdG8gdGhlIGNvcmUgdXNibmV0LmMgbW9kdWxlIGFuZCByZXBsYWNlcyB0aGUgdXNlIG9mIHRoZSBnZW5lcmljIGRhdGEgYXJyYXkgd2l0aCBhIGRlZGljYXRlZCBjZGNfc3RhdGUgc3RydWN0IGluIHVzYm5ldC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZnVuY3Rpb25hbCBsb2dpYyBvciBmaXggYW55IGJ1Z3MgcmVsYXRlZCB0byBkYXRhIGFsaWFzaW5nLCBhcyBubyBkcml2ZXJzIHdlcmUgY29uY3VycmVudGx5IHVzaW5nIGJvdGggdGhlIGdlbmVyaWMgZGF0YSBhcnJheSBhbmQgdGhlIENEQyBzdGF0ZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGlzIGEgcHVyZSByZWZhY3RvcmluZyB0aGF0IG1vdmVzIENEQy1yZWxhdGVkIGZ1bmN0aW9ucyBmcm9tIGNkY19ldGhlci5jIHRvIHRoZSBjb3JlIHVzYm5ldC5jIG1vZHVsZSBhbmQgcmVwbGFjZXMgdGhlIHVzZSBvZiB0aGUgZ2VuZXJpYyBkYXRhIGFycmF5IHdpdGggYSBkZWRpY2F0ZWQgY2RjX3N0YXRlIHN0cnVjdCBpbiB1c2JuZXQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgbG9naWMgb3IgZml4IGFueSBidWdzIHJlbGF0ZWQgdG8gZGF0YSBhbGlhc2luZywgYXMgbm8gZHJpdmVycyB3ZXJlIGNvbmN1cnJlbnRseSB1c2luZyBib3RoIHRoZSBnZW5lcmljIGRhdGEgYXJyYXkgYW5kIHRoZSBDREMgc3RhdGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDJUMTc6NTM6NTEuODk5NDg4MTQ0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMzODYxMjI4NjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpcyBhIHB1cmUgcmVmYWN0b3JpbmcgdGhhdCBtb3ZlcyBDREMtcmVsYXRlZCBmdW5jdGlvbnMgZnJvbSBjZGNfZXRoZXIuYyB0byB0aGUgY29yZSB1c2JuZXQuYyBtb2R1bGUgYW5kIHJlcGxhY2VzIHRoZSB1c2Ugb2YgdGhlIGdlbmVyaWMgZGF0YSBhcnJheSB3aXRoIGEgZGVkaWNhdGVkIGNkY19zdGF0ZSBzdHJ1Y3QgaW4gdXNibmV0LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBmdW5jdGlvbmFsIGxvZ2ljIG9yIGZpeCBhbnkgYnVncyByZWxhdGVkIHRvIGRhdGEgYWxpYXNpbmcsIGFzIG5vIGRyaXZlcnMgd2VyZSBjb25jdXJyZW50bHkgdXNpbmcgYm90aCB0aGUgZ2VuZXJpYyBkYXRhIGFycmF5IGFuZCB0aGUgQ0RDIHN0YXRlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTc6NTM6NTEuODk5NDk1NjM0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NzQ1NTcxNjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiOWYyODdhOGIyMzBkOTRkNTQ5YzQxZDhiNjJkMjIzNzI1NDE3OGFmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDIgMTc6NTM6NDkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jIGIvZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jXFxuaW5kZXggYTBhNTc0MDU5MGI5NDUuLjc2YWQ0ZmZhOTUwYWIzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuY1xcbkBAIC02MywzNSArNjMsNiBAQCBzdGF0aWMgY29uc3QgdTggbWJtX2d1aWRbMTZdID0ge1xcbiBcXHQweGE2LCAweDA3LCAweGMwLCAweGZmLCAweGNiLCAweDdlLCAweDM5LCAweDJhLFxcbiB9O1xcbiBcXG4tdm9pZCB1c2JuZXRfY2RjX3VwZGF0ZV9maWx0ZXIoc3RydWN0IHVzYm5ldCAqZGV2KVxcbi17XFxuLVxcdHN0cnVjdCBuZXRfZGV2aWNlXFx0Km5ldCA9IGRldi1cXHUwMDNlbmV0O1xcbi1cXG4tXFx0dTE2IGNkY19maWx0ZXIgPSBVU0JfQ0RDX1BBQ0tFVF9UWVBFX0RJUkVDVEVEXFxuLVxcdFxcdFxcdHwgVVNCX0NEQ19QQUNLRVRfVFlQRV9CUk9BRENBU1Q7XFxuLVxcbi1cXHQvKiBmaWx0ZXJpbmcgb24gdGhlIGRldmljZSBpcyBhbiBvcHRpb25hbCBmZWF0dXJlIGFuZCBub3Qgd29ydGhcXG4tXFx0ICogdGhlIGhhc3NsZSBzbyB3ZSBqdXN0IHJvdWdobHkgY2FyZSBhYm91dCBzbm9vcGluZyBhbmQgaWYgYW55XFxuLVxcdCAqIG11bHRpY2FzdCBpcyByZXF1ZXN0ZWQsIHdlIHRha2UgZXZlcnkgbXVsdGljYXN0XFxuLVxcdCAqL1xcbi1cXHRpZiAobmV0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElGRl9QUk9NSVNDKVxcbi1cXHRcXHRjZGNfZmlsdGVyIHw9IFVTQl9DRENfUEFDS0VUX1RZUEVfUFJPTUlTQ1VPVVM7XFxuLVxcdGlmICghbmV0ZGV2X21jX2VtcHR5KG5ldCkgfHwgKG5ldC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRkZfQUxMTVVMVEkpKVxcbi1cXHRcXHRjZGNfZmlsdGVyIHw9IFVTQl9DRENfUEFDS0VUX1RZUEVfQUxMX01VTFRJQ0FTVDtcXG4tXFxuLVxcdHVzYl9jb250cm9sX21zZyhkZXYtXFx1MDAzZXVkZXYsXFxuLVxcdFxcdFxcdHVzYl9zbmRjdHJscGlwZShkZXYtXFx1MDAzZXVkZXYsIDApLFxcbi1cXHRcXHRcXHRVU0JfQ0RDX1NFVF9FVEhFUk5FVF9QQUNLRVRfRklMVEVSLFxcbi1cXHRcXHRcXHRVU0JfVFlQRV9DTEFTUyB8IFVTQl9SRUNJUF9JTlRFUkZBQ0UsXFxuLVxcdFxcdFxcdGNkY19maWx0ZXIsXFxuLVxcdFxcdFxcdGRldi1cXHUwMDNlaW50Zi1cXHUwMDNlY3VyX2FsdHNldHRpbmctXFx1MDAzZWRlc2MuYkludGVyZmFjZU51bWJlcixcXG4tXFx0XFx0XFx0TlVMTCxcXG4tXFx0XFx0XFx0MCxcXG4tXFx0XFx0XFx0VVNCX0NUUkxfU0VUX1RJTUVPVVRcXG4tXFx0XFx0KTtcXG4tfVxcbi1FWFBPUlRfU1lNQk9MX0dQTCh1c2JuZXRfY2RjX3VwZGF0ZV9maWx0ZXIpO1xcbi1cXG4gLyogV2UgbmVlZCB0byBvdmVycmlkZSB1c2JuZXRfKl9saW5rX2tzZXR0aW5ncyBpbiBiaW5kKCkgKi9cXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBjZGNfZXRoZXJfZXRodG9vbF9vcHMgPSB7XFxuIFxcdC5nZXRfbGlua1xcdFxcdD0gdXNibmV0X2dldF9saW5rLFxcbkBAIC0xMTQsNyArODUsNyBAQCBpbnQgdXNibmV0X2dlbmVyaWNfY2RjX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4gXFx0dThcXHRcXHRcXHRcXHQqYnVmID0gaW50Zi1cXHUwMDNlY3VyX2FsdHNldHRpbmctXFx1MDAzZWV4dHJhO1xcbiBcXHRpbnRcXHRcXHRcXHRcXHRsZW4gPSBpbnRmLVxcdTAwM2VjdXJfYWx0c2V0dGluZy1cXHUwMDNlZXh0cmFsZW47XFxuIFxcdHN0cnVjdCB1c2JfaW50ZXJmYWNlX2Rlc2NyaXB0b3JcXHQqZDtcXG4tXFx0c3RydWN0IGNkY19zdGF0ZVxcdFxcdCppbmZvID0gKHZvaWQgKikgXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG4rXFx0c3RydWN0IGNkY19zdGF0ZVxcdFxcdCppbmZvID0gXFx1MDAyNmRldi1cXHUwMDNlY2RjO1xcbiBcXHRpbnRcXHRcXHRcXHRcXHRzdGF0dXMgPSAtRU5PREVWO1xcbiBcXHRpbnRcXHRcXHRcXHRcXHRybmRpcztcXG4gXFx0Ym9vbFxcdFxcdFxcdFxcdGFuZHJvaWRfcm5kaXNfcXVpcmsgPSBmYWxzZTtcXG5AQCAtMzY1LDcgKzMzNiw3IEBAIEVYUE9SVF9TWU1CT0xfR1BMKHVzYm5ldF9ldGhlcl9jZGNfYmluZCk7XFxuIFxcbiB2b2lkIHVzYm5ldF9jZGNfdW5iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuIHtcXG4tXFx0c3RydWN0IGNkY19zdGF0ZVxcdFxcdCppbmZvID0gKHZvaWQgKikgXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG4rXFx0c3RydWN0IGNkY19zdGF0ZVxcdFxcdCppbmZvID0gXFx1MDAyNmRldi1cXHUwMDNlY2RjO1xcbiBcXHRzdHJ1Y3QgdXNiX2RyaXZlclxcdFxcdCpkcml2ZXIgPSBkcml2ZXJfb2YoaW50Zik7XFxuIFxcbiBcXHQvKiBjb21iaW5lZCBpbnRlcmZhY2UgLSBub3RoaW5nICB0byBkbyAqL1xcbkBAIC00MDAsNTkgKzM3MSwxMCBAQCBFWFBPUlRfU1lNQk9MX0dQTCh1c2JuZXRfY2RjX3VuYmluZCk7XFxuICAqIChieSBCcmFkIEhhcmRzKSB0YWxrZWQgd2l0aCwgd2l0aCBtb3JlIGZ1bmN0aW9uYWxpdHkuXFxuICAqL1xcbiBcXG4tc3RhdGljIHZvaWQgc3BlZWRfY2hhbmdlKHN0cnVjdCB1c2JuZXQgKmRldiwgX19sZTMyICpzcGVlZHMpXFxuLXtcXG4tXFx0ZGV2LVxcdTAwM2V0eF9zcGVlZCA9IF9fbGUzMl90b19jcHUoc3BlZWRzWzBdKTtcXG4tXFx0ZGV2LVxcdTAwM2VyeF9zcGVlZCA9IF9fbGUzMl90b19jcHUoc3BlZWRzWzFdKTtcXG4tfVxcbi1cXG4tdm9pZCB1c2JuZXRfY2RjX3N0YXR1cyhzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1cmIgKnVyYilcXG4te1xcbi1cXHRzdHJ1Y3QgdXNiX2NkY19ub3RpZmljYXRpb25cXHQqZXZlbnQ7XFxuLVxcbi1cXHRpZiAodXJiLVxcdTAwM2VhY3R1YWxfbGVuZ3RoIFxcdTAwM2Mgc2l6ZW9mKCpldmVudCkpXFxuLVxcdFxcdHJldHVybjtcXG4tXFxuLVxcdC8qIFNQRUVEX0NIQU5HRSBjYW4gZ2V0IHNwbGl0IGludG8gdHdvIDgtYnl0ZSBwYWNrZXRzICovXFxuLVxcdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoRVZFTlRfU1RTX1NQTElULCBcXHUwMDI2ZGV2LVxcdTAwM2VmbGFncykpIHtcXG4tXFx0XFx0c3BlZWRfY2hhbmdlKGRldiwgKF9fbGUzMiAqKSB1cmItXFx1MDAzZXRyYW5zZmVyX2J1ZmZlcik7XFxuLVxcdFxcdHJldHVybjtcXG4tXFx0fVxcbi1cXG4tXFx0ZXZlbnQgPSB1cmItXFx1MDAzZXRyYW5zZmVyX2J1ZmZlcjtcXG4tXFx0c3dpdGNoIChldmVudC1cXHUwMDNlYk5vdGlmaWNhdGlvblR5cGUpIHtcXG4tXFx0Y2FzZSBVU0JfQ0RDX05PVElGWV9ORVRXT1JLX0NPTk5FQ1RJT046XFxuLVxcdFxcdG5ldGlmX2RiZyhkZXYsIHRpbWVyLCBkZXYtXFx1MDAzZW5ldCwgXFxcIkNEQzogY2FycmllciAlc1xcXFxuXFxcIixcXG4tXFx0XFx0XFx0ICBldmVudC1cXHUwMDNld1ZhbHVlID8gXFxcIm9uXFxcIiA6IFxcXCJvZmZcXFwiKTtcXG4tXFx0XFx0aWYgKG5ldGlmX2NhcnJpZXJfb2soZGV2LVxcdTAwM2VuZXQpICE9ICEhZXZlbnQtXFx1MDAzZXdWYWx1ZSlcXG4tXFx0XFx0XFx0dXNibmV0X2xpbmtfY2hhbmdlKGRldiwgISFldmVudC1cXHUwMDNld1ZhbHVlLCAwKTtcXG4tXFx0XFx0YnJlYWs7XFxuLVxcdGNhc2UgVVNCX0NEQ19OT1RJRllfU1BFRURfQ0hBTkdFOlxcdC8qIHR4L3J4IHJhdGVzICovXFxuLVxcdFxcdG5ldGlmX2RiZyhkZXYsIHRpbWVyLCBkZXYtXFx1MDAzZW5ldCwgXFxcIkNEQzogc3BlZWQgY2hhbmdlIChsZW4gJWQpXFxcXG5cXFwiLFxcbi1cXHRcXHRcXHQgIHVyYi1cXHUwMDNlYWN0dWFsX2xlbmd0aCk7XFxuLVxcdFxcdGlmICh1cmItXFx1MDAzZWFjdHVhbF9sZW5ndGggIT0gKHNpemVvZigqZXZlbnQpICsgOCkpXFxuLVxcdFxcdFxcdHNldF9iaXQoRVZFTlRfU1RTX1NQTElULCBcXHUwMDI2ZGV2LVxcdTAwM2VmbGFncyk7XFxuLVxcdFxcdGVsc2VcXG4tXFx0XFx0XFx0c3BlZWRfY2hhbmdlKGRldiwgKF9fbGUzMiAqKSBcXHUwMDI2ZXZlbnRbMV0pO1xcbi1cXHRcXHRicmVhaztcXG4tXFx0LyogVVNCX0NEQ19OT1RJRllfUkVTUE9OU0VfQVZBSUxBQkxFIGNhbiBoYXBwZW4gdG9vIChlLmcuIFJORElTKSxcXG4tXFx0ICogYnV0IHRoZXJlIGFyZSBubyBzdGFuZGFyZCBmb3JtYXRzIGZvciB0aGUgcmVzcG9uc2UgZGF0YS5cXG4tXFx0ICovXFxuLVxcdGRlZmF1bHQ6XFxuLVxcdFxcdG5ldGRldl9lcnIoZGV2LVxcdTAwM2VuZXQsIFxcXCJDREM6IHVuZXhwZWN0ZWQgbm90aWZpY2F0aW9uICUwMnghXFxcXG5cXFwiLFxcbi1cXHRcXHRcXHQgICBldmVudC1cXHUwMDNlYk5vdGlmaWNhdGlvblR5cGUpO1xcbi1cXHRcXHRicmVhaztcXG4tXFx0fVxcbi19XFxuLUVYUE9SVF9TWU1CT0xfR1BMKHVzYm5ldF9jZGNfc3RhdHVzKTtcXG4tXFxuIGludCB1c2JuZXRfY2RjX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4ge1xcbiBcXHRpbnRcXHRcXHRcXHRcXHRzdGF0dXM7XFxuLVxcdHN0cnVjdCBjZGNfc3RhdGVcXHRcXHQqaW5mbyA9ICh2b2lkICopIFxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuLVxcbi1cXHRCVUlMRF9CVUdfT04oKHNpemVvZigoKHN0cnVjdCB1c2JuZXQgKikwKS1cXHUwMDNlZGF0YSlcXG4tXFx0XFx0XFx0XFx1MDAzYyBzaXplb2Yoc3RydWN0IGNkY19zdGF0ZSkpKTtcXG4rXFx0c3RydWN0IGNkY19zdGF0ZVxcdFxcdCppbmZvID0gXFx1MDAyNmRldi1cXHUwMDNlY2RjO1xcbiBcXG4gXFx0c3RhdHVzID0gdXNibmV0X2V0aGVyX2NkY19iaW5kKGRldiwgaW50Zik7XFxuIFxcdGlmIChzdGF0dXMgXFx1MDAzYyAwKVxcbkBAIC00NzksMjUgKzQwMSw2IEBAIHN0YXRpYyBpbnQgdXNibmV0X2NkY196dGVfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbiBcXHRyZXR1cm4gc3RhdHVzO1xcbiB9XFxuIFxcbi0vKiBNYWtlIHN1cmUgcGFja2V0cyBoYXZlIGNvcnJlY3QgZGVzdGluYXRpb24gTUFDIGFkZHJlc3NcXG4tICpcXG4tICogQSBmaXJtd2FyZSBidWcgb2JzZXJ2ZWQgb24gc29tZSBkZXZpY2VzIChaVEUgTUY4MjMvODMxLzkxMCkgaXMgdGhhdCB0aGVcXG4tICogZGV2aWNlIHNlbmRzIHBhY2tldHMgd2l0aCBhIHN0YXRpYywgYm9ndXMsIHJhbmRvbSBNQUMgYWRkcmVzcyAoZXZlbnQgaWZcXG4tICogZGV2aWNlIE1BQyBhZGRyZXNzIGhhcyBiZWVuIHVwZGF0ZWQpLiBBbHdheXMgc2V0IE1BQyBhZGRyZXNzIHRvIHRoYXQgb2YgdGhlXFxuLSAqIGRldmljZS5cXG4tICovXFxuLWludCB1c2JuZXRfY2RjX3p0ZV9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuLXtcXG4tXFx0aWYgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2MgRVRIX0hMRU4gfHwgIShza2ItXFx1MDAzZWRhdGFbMF0gXFx1MDAyNiAweDAyKSlcXG4tXFx0XFx0cmV0dXJuIDE7XFxuLVxcbi1cXHRza2JfcmVzZXRfbWFjX2hlYWRlcihza2IpO1xcbi1cXHRldGhlcl9hZGRyX2NvcHkoZXRoX2hkcihza2IpLVxcdTAwM2VoX2Rlc3QsIGRldi1cXHUwMDNlbmV0LVxcdTAwM2VkZXZfYWRkcik7XFxuLVxcbi1cXHRyZXR1cm4gMTtcXG4tfVxcbi1FWFBPUlRfU1lNQk9MX0dQTCh1c2JuZXRfY2RjX3p0ZV9yeF9maXh1cCk7XFxuLVxcbiAvKiBFbnN1cmUgY29ycmVjdCBsaW5rIHN0YXRlXFxuICAqXFxuICAqIFNvbWUgZGV2aWNlcyAoWlRFIE1GODIzLzgzMS85MTApIGV4cG9ydCB0d28gY2FycmllciBvbiBub3RpZmljYXRpb25zIHdoZW5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL3JuZGlzX2hvc3QuYyBiL2RyaXZlcnMvbmV0L3VzYi9ybmRpc19ob3N0LmNcXG5pbmRleCA1ZTM5ZDA1YTJkN2I2ZC4uZDUzOTY1NDY4N2MzMDUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvdXNiL3JuZGlzX2hvc3QuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3VzYi9ybmRpc19ob3N0LmNcXG5AQCAtNTcsNyArNTcsNyBAQCBFWFBPUlRfU1lNQk9MX0dQTChybmRpc19zdGF0dXMpO1xcbiBzdGF0aWMgdm9pZCBybmRpc19tc2dfaW5kaWNhdGUoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgcm5kaXNfaW5kaWNhdGUgKm1zZyxcXG4gXFx0XFx0XFx0XFx0aW50IGJ1ZmxlbilcXG4ge1xcbi1cXHRzdHJ1Y3QgY2RjX3N0YXRlICppbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbitcXHRzdHJ1Y3QgY2RjX3N0YXRlICppbmZvID0gXFx1MDAyNmRldi1cXHUwMDNlY2RjO1xcbiBcXHRzdHJ1Y3QgZGV2aWNlICp1ZGV2ID0gXFx1MDAyNmluZm8tXFx1MDAzZWNvbnRyb2wtXFx1MDAzZWRldjtcXG4gXFxuIFxcdGlmIChkZXYtXFx1MDAzZWRyaXZlcl9pbmZvLVxcdTAwM2VpbmRpY2F0aW9uKSB7XFxuQEAgLTkwLDcgKzkwLDcgQEAgc3RhdGljIHZvaWQgcm5kaXNfbXNnX2luZGljYXRlKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHJuZGlzX2luZGljYXRlICptc2csXFxuICAqL1xcbiBpbnQgcm5kaXNfY29tbWFuZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBybmRpc19tc2dfaGRyICpidWYsIGludCBidWZsZW4pXFxuIHtcXG4tXFx0c3RydWN0IGNkY19zdGF0ZVxcdCppbmZvID0gKHZvaWQgKikgXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG4rXFx0c3RydWN0IGNkY19zdGF0ZVxcdCppbmZvID0gXFx1MDAyNmRldi1cXHUwMDNlY2RjO1xcbiBcXHRzdHJ1Y3QgdXNiX2NkY19ub3RpZmljYXRpb24gbm90aWZpY2F0aW9uO1xcbiBcXHRpbnRcXHRcXHRcXHRtYXN0ZXJfaWZudW07XFxuIFxcdGludFxcdFxcdFxcdHJldHZhbDtcXG5AQCAtMjkwLDcgKzI5MCw3IEBAIGdlbmVyaWNfcm5kaXNfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBpbnQgZmxhZ3MpXFxuIHtcXG4gXFx0aW50XFx0XFx0XFx0cmV0dmFsO1xcbiBcXHRzdHJ1Y3QgbmV0X2RldmljZVxcdCpuZXQgPSBkZXYtXFx1MDAzZW5ldDtcXG4tXFx0c3RydWN0IGNkY19zdGF0ZVxcdCppbmZvID0gKHZvaWQgKikgXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG4rXFx0c3RydWN0IGNkY19zdGF0ZVxcdCppbmZvID0gXFx1MDAyNmRldi1cXHUwMDNlY2RjO1xcbiBcXHR1bmlvbiB7XFxuIFxcdFxcdHZvaWRcXHRcXHRcXHQqYnVmO1xcbiBcXHRcXHRzdHJ1Y3Qgcm5kaXNfbXNnX2hkclxcdCpoZWFkZXI7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi91c2JuZXQuYyBiL2RyaXZlcnMvbmV0L3VzYi91c2JuZXQuY1xcbmluZGV4IDI1NTE4NjM1YjdiNzJkLi43YmVlYTZkMGU3MzFjYyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC91c2IvdXNibmV0LmNcXG4rKysgYi9kcml2ZXJzL25ldC91c2IvdXNibmV0LmNcXG5AQCAtMjIsNiArMjIsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvaW5pdC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbmV0ZGV2aWNlLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9ldGhlcmRldmljZS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvdXNiL2NkYy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvY3R5cGUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2V0aHRvb2wuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3dvcmtxdWV1ZS5oXFx1MDAzZVxcbkBAIC0yMjcxLDYgKzIyNzIsMTAwIEBAIGludCB1c2JuZXRfd3JpdGVfY21kX2FzeW5jKHN0cnVjdCB1c2JuZXQgKmRldiwgdTggY21kLCB1OCByZXF0eXBlLFxcbiBcXG4gfVxcbiBFWFBPUlRfU1lNQk9MX0dQTCh1c2JuZXRfd3JpdGVfY21kX2FzeW5jKTtcXG4rXFxuK3ZvaWQgdXNibmV0X2NkY191cGRhdGVfZmlsdGVyKHN0cnVjdCB1c2JuZXQgKmRldilcXG4re1xcbitcXHRzdHJ1Y3QgbmV0X2RldmljZVxcdCpuZXQgPSBkZXYtXFx1MDAzZW5ldDtcXG4rXFxuK1xcdHUxNiBjZGNfZmlsdGVyID0gVVNCX0NEQ19QQUNLRVRfVFlQRV9ESVJFQ1RFRFxcbitcXHRcXHRcXHR8IFVTQl9DRENfUEFDS0VUX1RZUEVfQlJPQURDQVNUO1xcbitcXG4rXFx0LyogZmlsdGVyaW5nIG9uIHRoZSBkZXZpY2UgaXMgYW4gb3B0aW9uYWwgZmVhdHVyZSBhbmQgbm90IHdvcnRoXFxuK1xcdCAqIHRoZSBoYXNzbGUgc28gd2UganVzdCByb3VnaGx5IGNhcmUgYWJvdXQgc25vb3BpbmcgYW5kIGlmIGFueVxcbitcXHQgKiBtdWx0aWNhc3QgaXMgcmVxdWVzdGVkLCB3ZSB0YWtlIGV2ZXJ5IG11bHRpY2FzdFxcbitcXHQgKi9cXG4rXFx0aWYgKG5ldC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRkZfUFJPTUlTQylcXG4rXFx0XFx0Y2RjX2ZpbHRlciB8PSBVU0JfQ0RDX1BBQ0tFVF9UWVBFX1BST01JU0NVT1VTO1xcbitcXHRpZiAoIW5ldGRldl9tY19lbXB0eShuZXQpIHx8IChuZXQtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUZGX0FMTE1VTFRJKSlcXG4rXFx0XFx0Y2RjX2ZpbHRlciB8PSBVU0JfQ0RDX1BBQ0tFVF9UWVBFX0FMTF9NVUxUSUNBU1Q7XFxuK1xcbitcXHR1c2JfY29udHJvbF9tc2coZGV2LVxcdTAwM2V1ZGV2LFxcbitcXHRcXHRcXHR1c2Jfc25kY3RybHBpcGUoZGV2LVxcdTAwM2V1ZGV2LCAwKSxcXG4rXFx0XFx0XFx0VVNCX0NEQ19TRVRfRVRIRVJORVRfUEFDS0VUX0ZJTFRFUixcXG4rXFx0XFx0XFx0VVNCX1RZUEVfQ0xBU1MgfCBVU0JfUkVDSVBfSU5URVJGQUNFLFxcbitcXHRcXHRcXHRjZGNfZmlsdGVyLFxcbitcXHRcXHRcXHRkZXYtXFx1MDAzZWludGYtXFx1MDAzZWN1cl9hbHRzZXR0aW5nLVxcdTAwM2VkZXNjLmJJbnRlcmZhY2VOdW1iZXIsXFxuK1xcdFxcdFxcdE5VTEwsXFxuK1xcdFxcdFxcdDAsXFxuK1xcdFxcdFxcdFVTQl9DVFJMX1NFVF9USU1FT1VUXFxuK1xcdFxcdCk7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9HUEwodXNibmV0X2NkY191cGRhdGVfZmlsdGVyKTtcXG4rXFxuK3N0YXRpYyB2b2lkIHNwZWVkX2NoYW5nZShzdHJ1Y3QgdXNibmV0ICpkZXYsIF9fbGUzMiAqc3BlZWRzKVxcbit7XFxuK1xcdGRldi1cXHUwMDNldHhfc3BlZWQgPSBfX2xlMzJfdG9fY3B1KHNwZWVkc1swXSk7XFxuK1xcdGRldi1cXHUwMDNlcnhfc3BlZWQgPSBfX2xlMzJfdG9fY3B1KHNwZWVkc1sxXSk7XFxuK31cXG4rXFxuK3ZvaWQgdXNibmV0X2NkY19zdGF0dXMoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXJiICp1cmIpXFxuK3tcXG4rXFx0c3RydWN0IHVzYl9jZGNfbm90aWZpY2F0aW9uXFx0KmV2ZW50O1xcbitcXG4rXFx0aWYgKHVyYi1cXHUwMDNlYWN0dWFsX2xlbmd0aCBcXHUwMDNjIHNpemVvZigqZXZlbnQpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHQvKiBTUEVFRF9DSEFOR0UgY2FuIGdldCBzcGxpdCBpbnRvIHR3byA4LWJ5dGUgcGFja2V0cyAqL1xcbitcXHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KEVWRU5UX1NUU19TUExJVCwgXFx1MDAyNmRldi1cXHUwMDNlZmxhZ3MpKSB7XFxuK1xcdFxcdHNwZWVkX2NoYW5nZShkZXYsIChfX2xlMzIgKil1cmItXFx1MDAzZXRyYW5zZmVyX2J1ZmZlcik7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXG4rXFx0ZXZlbnQgPSB1cmItXFx1MDAzZXRyYW5zZmVyX2J1ZmZlcjtcXG4rXFx0c3dpdGNoIChldmVudC1cXHUwMDNlYk5vdGlmaWNhdGlvblR5cGUpIHtcXG4rXFx0Y2FzZSBVU0JfQ0RDX05PVElGWV9ORVRXT1JLX0NPTk5FQ1RJT046XFxuK1xcdFxcdG5ldGlmX2RiZyhkZXYsIHRpbWVyLCBkZXYtXFx1MDAzZW5ldCwgXFxcIkNEQzogY2FycmllciAlc1xcXFxuXFxcIixcXG4rXFx0XFx0XFx0ICBldmVudC1cXHUwMDNld1ZhbHVlID8gXFxcIm9uXFxcIiA6IFxcXCJvZmZcXFwiKTtcXG4rXFx0XFx0aWYgKG5ldGlmX2NhcnJpZXJfb2soZGV2LVxcdTAwM2VuZXQpICE9ICEhZXZlbnQtXFx1MDAzZXdWYWx1ZSlcXG4rXFx0XFx0XFx0dXNibmV0X2xpbmtfY2hhbmdlKGRldiwgISFldmVudC1cXHUwMDNld1ZhbHVlLCAwKTtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGNhc2UgVVNCX0NEQ19OT1RJRllfU1BFRURfQ0hBTkdFOlxcdC8qIHR4L3J4IHJhdGVzICovXFxuK1xcdFxcdG5ldGlmX2RiZyhkZXYsIHRpbWVyLCBkZXYtXFx1MDAzZW5ldCwgXFxcIkNEQzogc3BlZWQgY2hhbmdlIChsZW4gJWQpXFxcXG5cXFwiLFxcbitcXHRcXHRcXHQgIHVyYi1cXHUwMDNlYWN0dWFsX2xlbmd0aCk7XFxuK1xcdFxcdGlmICh1cmItXFx1MDAzZWFjdHVhbF9sZW5ndGggIT0gKHNpemVvZigqZXZlbnQpICsgOCkpXFxuK1xcdFxcdFxcdHNldF9iaXQoRVZFTlRfU1RTX1NQTElULCBcXHUwMDI2ZGV2LVxcdTAwM2VmbGFncyk7XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0c3BlZWRfY2hhbmdlKGRldiwgKF9fbGUzMiAqKVxcdTAwMjZldmVudFsxXSk7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHQvKiBVU0JfQ0RDX05PVElGWV9SRVNQT05TRV9BVkFJTEFCTEUgY2FuIGhhcHBlbiB0b28gKGUuZy4gUk5ESVMpLFxcbitcXHQgKiBidXQgdGhlcmUgYXJlIG5vIHN0YW5kYXJkIGZvcm1hdHMgZm9yIHRoZSByZXNwb25zZSBkYXRhLlxcbitcXHQgKi9cXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0bmV0ZGV2X2VycihkZXYtXFx1MDAzZW5ldCwgXFxcIkNEQzogdW5leHBlY3RlZCBub3RpZmljYXRpb24gJTAyeCFcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCAgIGV2ZW50LVxcdTAwM2ViTm90aWZpY2F0aW9uVHlwZSk7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHR9XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9HUEwodXNibmV0X2NkY19zdGF0dXMpO1xcbitcXG4rLyogTWFrZSBzdXJlIHBhY2tldHMgaGF2ZSBjb3JyZWN0IGRlc3RpbmF0aW9uIE1BQyBhZGRyZXNzXFxuKyAqXFxuKyAqIEEgZmlybXdhcmUgYnVnIG9ic2VydmVkIG9uIHNvbWUgZGV2aWNlcyAoWlRFIE1GODIzLzgzMS85MTApIGlzIHRoYXQgdGhlXFxuKyAqIGRldmljZSBzZW5kcyBwYWNrZXRzIHdpdGggYSBzdGF0aWMsIGJvZ3VzLCByYW5kb20gTUFDIGFkZHJlc3MgKGV2ZW50IGlmXFxuKyAqIGRldmljZSBNQUMgYWRkcmVzcyBoYXMgYmVlbiB1cGRhdGVkKS4gQWx3YXlzIHNldCBNQUMgYWRkcmVzcyB0byB0aGF0IG9mIHRoZVxcbisgKiBkZXZpY2UuXFxuKyAqL1xcbitpbnQgdXNibmV0X2NkY196dGVfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbit7XFxuK1xcdGlmIChza2ItXFx1MDAzZWxlbiBcXHUwMDNjIEVUSF9ITEVOIHx8ICEoc2tiLVxcdTAwM2VkYXRhWzBdIFxcdTAwMjYgMHgwMikpXFxuK1xcdFxcdHJldHVybiAxO1xcbitcXG4rXFx0c2tiX3Jlc2V0X21hY19oZWFkZXIoc2tiKTtcXG4rXFx0ZXRoZXJfYWRkcl9jb3B5KGV0aF9oZHIoc2tiKS1cXHUwMDNlaF9kZXN0LCBkZXYtXFx1MDAzZW5ldC1cXHUwMDNlZGV2X2FkZHIpO1xcbitcXG4rXFx0cmV0dXJuIDE7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9HUEwodXNibmV0X2NkY196dGVfcnhfZml4dXApO1xcbiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xcbiBcXG4gc3RhdGljIGludCBfX2luaXQgdXNibmV0X2luaXQodm9pZClcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC91c2IvdXNibmV0LmggYi9pbmNsdWRlL2xpbnV4L3VzYi91c2JuZXQuaFxcbmluZGV4IGJiZjc5OWNjZjNiMzBlLi43OWY0OGViMzg4ZWU2YyAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L3VzYi91c2JuZXQuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvdXNiL3VzYm5ldC5oXFxuQEAgLTE2LDYgKzE2LDE0IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC91c2IuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NwaW5sb2NrLmhcXHUwMDNlXFxuIFxcbitzdHJ1Y3QgY2RjX3N0YXRlIHtcXG4rXFx0c3RydWN0IHVzYl9jZGNfaGVhZGVyX2Rlc2MgICAgICAqaGVhZGVyO1xcbitcXHRzdHJ1Y3QgdXNiX2NkY191bmlvbl9kZXNjICAgICAgICp1O1xcbitcXHRzdHJ1Y3QgdXNiX2NkY19ldGhlcl9kZXNjICAgICAgICpldGhlcjtcXG4rXFx0c3RydWN0IHVzYl9pbnRlcmZhY2UgICAgICAgICAgICAqY29udHJvbDtcXG4rXFx0c3RydWN0IHVzYl9pbnRlcmZhY2UgICAgICAgICAgICAqZGF0YTtcXG4rfTtcXG4rXFxuIC8qIGludGVyZmFjZSBmcm9tIHVzYm5ldCBjb3JlIHRvIGVhY2ggVVNCIG5ldHdvcmtpbmcgbGluayB3ZSBoYW5kbGUgKi9cXG4gc3RydWN0IHVzYm5ldCB7XFxuIFxcdC8qIGhvdXNla2VlcGluZyAqL1xcbkBAIC00MSw2ICs0OSw3IEBAIHN0cnVjdCB1c2JuZXQge1xcbiBcXHQvKiBwcm90b2NvbC9pbnRlcmZhY2Ugc3RhdGUgKi9cXG4gXFx0c3RydWN0IG5ldF9kZXZpY2VcXHQqbmV0O1xcbiBcXHRpbnRcXHRcXHRcXHRtc2dfZW5hYmxlO1xcbitcXHRzdHJ1Y3QgY2RjX3N0YXRlXFx0Y2RjO1xcdFxcdC8qIHRvbyBjb21tb24gdG8gbGVhdmUgb3V0Ki9cXG4gXFx0dW5zaWduZWQgbG9uZ1xcdFxcdGRhdGFbNV07XFxuIFxcdHUzMlxcdFxcdFxcdHhpZDtcXG4gXFx0dTMyXFx0XFx0XFx0aGFyZF9tdHU7XFx0LyogY291bnQgYW55IGV4dHJhIGZyYW1pbmcgKi9cXG5AQCAtMjExLDEzICsyMjAsNiBAQCBleHRlcm4gaW50IHVzYm5ldF93cml0ZV9jbWRfYXN5bmMoc3RydWN0IHVzYm5ldCAqZGV2LCB1OCBjbWQsIHU4IHJlcXR5cGUsXFxuICAqIChub3RhYmx5LCB1c2luZyBtdWx0aXBsZSBpbnRlcmZhY2VzIGFjY29yZGluZyB0byB0aGUgQ0RDXFxuICAqIHVuaW9uIGRlc2NyaXB0b3IpIGdldCBzb21lIGhlbHBlciBjb2RlLlxcbiAgKi9cXG4tc3RydWN0IGNkY19zdGF0ZSB7XFxuLVxcdHN0cnVjdCB1c2JfY2RjX2hlYWRlcl9kZXNjXFx0KmhlYWRlcjtcXG4tXFx0c3RydWN0IHVzYl9jZGNfdW5pb25fZGVzY1xcdCp1O1xcbi1cXHRzdHJ1Y3QgdXNiX2NkY19ldGhlcl9kZXNjXFx0KmV0aGVyO1xcbi1cXHRzdHJ1Y3QgdXNiX2ludGVyZmFjZVxcdFxcdCpjb250cm9sO1xcbi1cXHRzdHJ1Y3QgdXNiX2ludGVyZmFjZVxcdFxcdCpkYXRhO1xcbi19O1xcbiBcXG4gZXh0ZXJuIHZvaWQgdXNibmV0X2NkY191cGRhdGVfZmlsdGVyKHN0cnVjdCB1c2JuZXQgKmRldik7XFxuIGV4dGVybiBpbnQgdXNibmV0X2dlbmVyaWNfY2RjX2JpbmQoc3RydWN0IHVzYm5ldCAqLCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTc6NTM6NTIuODc4MzcxMTcyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzI4ODIzMzgxMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGlzIGEgcHVyZSByZWZhY3RvcmluZyB0aGF0IG1vdmVzIENEQy1yZWxhdGVkIGZ1bmN0aW9ucyBmcm9tIGNkY19ldGhlci5jIHRvIHRoZSBjb3JlIHVzYm5ldC5jIG1vZHVsZSBhbmQgcmVwbGFjZXMgdGhlIHVzZSBvZiB0aGUgZ2VuZXJpYyBkYXRhIGFycmF5IHdpdGggYSBkZWRpY2F0ZWQgY2RjX3N0YXRlIHN0cnVjdCBpbiB1c2JuZXQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgbG9naWMgb3IgZml4IGFueSBidWdzIHJlbGF0ZWQgdG8gZGF0YSBhbGlhc2luZywgYXMgbm8gZHJpdmVycyB3ZXJlIGNvbmN1cnJlbnRseSB1c2luZyBib3RoIHRoZSBnZW5lcmljIGRhdGEgYXJyYXkgYW5kIHRoZSBDREMgc3RhdGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGI5ZjI4N2E4YjIzMGQ5NGQ1NDljNDFkOGI2MmQyMjM3MjU0MTc4YWZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyIDE3OjUzOjQ5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jIGIvZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jXG5pbmRleCBhMGE1NzQwNTkwYjk0NS4uNzZhZDRmZmE5NTBhYjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmNcbisrKyBiL2RyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuY1xuQEAgLTYzLDM1ICs2Myw2IEBAIHN0YXRpYyBjb25zdCB1OCBtYm1fZ3VpZFsxNl0gPSB7XG4gXHQweGE2LCAweDA3LCAweGMwLCAweGZmLCAweGNiLCAweDdlLCAweDM5LCAweDJhLFxuIH07XG4gXG4tdm9pZCB1c2JuZXRfY2RjX3VwZGF0ZV9maWx0ZXIoc3RydWN0IHVzYm5ldCAqZGV2KVxuLXtcbi1cdHN0cnVjdCBuZXRfZGV2aWNlXHQqbmV0ID0gZGV2LVx1MDAzZW5ldDtcbi1cbi1cdHUxNiBjZGNfZmlsdGVyID0gVVNCX0NEQ19QQUNLRVRfVFlQRV9ESVJFQ1RFRFxuLVx0XHRcdHwgVVNCX0NEQ19QQUNLRVRfVFlQRV9CUk9BRENBU1Q7XG4tXG4tXHQvKiBmaWx0ZXJpbmcgb24gdGhlIGRldmljZSBpcyBhbiBvcHRpb25hbCBmZWF0dXJlIGFuZCBub3Qgd29ydGhcbi1cdCAqIHRoZSBoYXNzbGUgc28gd2UganVzdCByb3VnaGx5IGNhcmUgYWJvdXQgc25vb3BpbmcgYW5kIGlmIGFueVxuLVx0ICogbXVsdGljYXN0IGlzIHJlcXVlc3RlZCwgd2UgdGFrZSBldmVyeSBtdWx0aWNhc3Rcbi1cdCAqL1xuLVx0aWYgKG5ldC1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX1BST01JU0MpXG4tXHRcdGNkY19maWx0ZXIgfD0gVVNCX0NEQ19QQUNLRVRfVFlQRV9QUk9NSVNDVU9VUztcbi1cdGlmICghbmV0ZGV2X21jX2VtcHR5KG5ldCkgfHwgKG5ldC1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX0FMTE1VTFRJKSlcbi1cdFx0Y2RjX2ZpbHRlciB8PSBVU0JfQ0RDX1BBQ0tFVF9UWVBFX0FMTF9NVUxUSUNBU1Q7XG4tXG4tXHR1c2JfY29udHJvbF9tc2coZGV2LVx1MDAzZXVkZXYsXG4tXHRcdFx0dXNiX3NuZGN0cmxwaXBlKGRldi1cdTAwM2V1ZGV2LCAwKSxcbi1cdFx0XHRVU0JfQ0RDX1NFVF9FVEhFUk5FVF9QQUNLRVRfRklMVEVSLFxuLVx0XHRcdFVTQl9UWVBFX0NMQVNTIHwgVVNCX1JFQ0lQX0lOVEVSRkFDRSxcbi1cdFx0XHRjZGNfZmlsdGVyLFxuLVx0XHRcdGRldi1cdTAwM2VpbnRmLVx1MDAzZWN1cl9hbHRzZXR0aW5nLVx1MDAzZWRlc2MuYkludGVyZmFjZU51bWJlcixcbi1cdFx0XHROVUxMLFxuLVx0XHRcdDAsXG4tXHRcdFx0VVNCX0NUUkxfU0VUX1RJTUVPVVRcbi1cdFx0KTtcbi19XG4tRVhQT1JUX1NZTUJPTF9HUEwodXNibmV0X2NkY191cGRhdGVfZmlsdGVyKTtcbi1cbiAvKiBXZSBuZWVkIHRvIG92ZXJyaWRlIHVzYm5ldF8qX2xpbmtfa3NldHRpbmdzIGluIGJpbmQoKSAqL1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgY2RjX2V0aGVyX2V0aHRvb2xfb3BzID0ge1xuIFx0LmdldF9saW5rXHRcdD0gdXNibmV0X2dldF9saW5rLFxuQEAgLTExNCw3ICs4NSw3IEBAIGludCB1c2JuZXRfZ2VuZXJpY19jZGNfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuIFx0dThcdFx0XHRcdCpidWYgPSBpbnRmLVx1MDAzZWN1cl9hbHRzZXR0aW5nLVx1MDAzZWV4dHJhO1xuIFx0aW50XHRcdFx0XHRsZW4gPSBpbnRmLVx1MDAzZWN1cl9hbHRzZXR0aW5nLVx1MDAzZWV4dHJhbGVuO1xuIFx0c3RydWN0IHVzYl9pbnRlcmZhY2VfZGVzY3JpcHRvclx0KmQ7XG4tXHRzdHJ1Y3QgY2RjX3N0YXRlXHRcdCppbmZvID0gKHZvaWQgKikgXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG4rXHRzdHJ1Y3QgY2RjX3N0YXRlXHRcdCppbmZvID0gXHUwMDI2ZGV2LVx1MDAzZWNkYztcbiBcdGludFx0XHRcdFx0c3RhdHVzID0gLUVOT0RFVjtcbiBcdGludFx0XHRcdFx0cm5kaXM7XG4gXHRib29sXHRcdFx0XHRhbmRyb2lkX3JuZGlzX3F1aXJrID0gZmFsc2U7XG5AQCAtMzY1LDcgKzMzNiw3IEBAIEVYUE9SVF9TWU1CT0xfR1BMKHVzYm5ldF9ldGhlcl9jZGNfYmluZCk7XG4gXG4gdm9pZCB1c2JuZXRfY2RjX3VuYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuIHtcbi1cdHN0cnVjdCBjZGNfc3RhdGVcdFx0KmluZm8gPSAodm9pZCAqKSBcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbitcdHN0cnVjdCBjZGNfc3RhdGVcdFx0KmluZm8gPSBcdTAwMjZkZXYtXHUwMDNlY2RjO1xuIFx0c3RydWN0IHVzYl9kcml2ZXJcdFx0KmRyaXZlciA9IGRyaXZlcl9vZihpbnRmKTtcbiBcbiBcdC8qIGNvbWJpbmVkIGludGVyZmFjZSAtIG5vdGhpbmcgIHRvIGRvICovXG5AQCAtNDAwLDU5ICszNzEsMTAgQEAgRVhQT1JUX1NZTUJPTF9HUEwodXNibmV0X2NkY191bmJpbmQpO1xuICAqIChieSBCcmFkIEhhcmRzKSB0YWxrZWQgd2l0aCwgd2l0aCBtb3JlIGZ1bmN0aW9uYWxpdHkuXG4gICovXG4gXG4tc3RhdGljIHZvaWQgc3BlZWRfY2hhbmdlKHN0cnVjdCB1c2JuZXQgKmRldiwgX19sZTMyICpzcGVlZHMpXG4te1xuLVx0ZGV2LVx1MDAzZXR4X3NwZWVkID0gX19sZTMyX3RvX2NwdShzcGVlZHNbMF0pO1xuLVx0ZGV2LVx1MDAzZXJ4X3NwZWVkID0gX19sZTMyX3RvX2NwdShzcGVlZHNbMV0pO1xuLX1cbi1cbi12b2lkIHVzYm5ldF9jZGNfc3RhdHVzKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVyYiAqdXJiKVxuLXtcbi1cdHN0cnVjdCB1c2JfY2RjX25vdGlmaWNhdGlvblx0KmV2ZW50O1xuLVxuLVx0aWYgKHVyYi1cdTAwM2VhY3R1YWxfbGVuZ3RoIFx1MDAzYyBzaXplb2YoKmV2ZW50KSlcbi1cdFx0cmV0dXJuO1xuLVxuLVx0LyogU1BFRURfQ0hBTkdFIGNhbiBnZXQgc3BsaXQgaW50byB0d28gOC1ieXRlIHBhY2tldHMgKi9cbi1cdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoRVZFTlRfU1RTX1NQTElULCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpKSB7XG4tXHRcdHNwZWVkX2NoYW5nZShkZXYsIChfX2xlMzIgKikgdXJiLVx1MDAzZXRyYW5zZmVyX2J1ZmZlcik7XG4tXHRcdHJldHVybjtcbi1cdH1cbi1cbi1cdGV2ZW50ID0gdXJiLVx1MDAzZXRyYW5zZmVyX2J1ZmZlcjtcbi1cdHN3aXRjaCAoZXZlbnQtXHUwMDNlYk5vdGlmaWNhdGlvblR5cGUpIHtcbi1cdGNhc2UgVVNCX0NEQ19OT1RJRllfTkVUV09SS19DT05ORUNUSU9OOlxuLVx0XHRuZXRpZl9kYmcoZGV2LCB0aW1lciwgZGV2LVx1MDAzZW5ldCwgXCJDREM6IGNhcnJpZXIgJXNcXG5cIixcbi1cdFx0XHQgIGV2ZW50LVx1MDAzZXdWYWx1ZSA/IFwib25cIiA6IFwib2ZmXCIpO1xuLVx0XHRpZiAobmV0aWZfY2Fycmllcl9vayhkZXYtXHUwMDNlbmV0KSAhPSAhIWV2ZW50LVx1MDAzZXdWYWx1ZSlcbi1cdFx0XHR1c2JuZXRfbGlua19jaGFuZ2UoZGV2LCAhIWV2ZW50LVx1MDAzZXdWYWx1ZSwgMCk7XG4tXHRcdGJyZWFrO1xuLVx0Y2FzZSBVU0JfQ0RDX05PVElGWV9TUEVFRF9DSEFOR0U6XHQvKiB0eC9yeCByYXRlcyAqL1xuLVx0XHRuZXRpZl9kYmcoZGV2LCB0aW1lciwgZGV2LVx1MDAzZW5ldCwgXCJDREM6IHNwZWVkIGNoYW5nZSAobGVuICVkKVxcblwiLFxuLVx0XHRcdCAgdXJiLVx1MDAzZWFjdHVhbF9sZW5ndGgpO1xuLVx0XHRpZiAodXJiLVx1MDAzZWFjdHVhbF9sZW5ndGggIT0gKHNpemVvZigqZXZlbnQpICsgOCkpXG4tXHRcdFx0c2V0X2JpdChFVkVOVF9TVFNfU1BMSVQsIFx1MDAyNmRldi1cdTAwM2VmbGFncyk7XG4tXHRcdGVsc2Vcbi1cdFx0XHRzcGVlZF9jaGFuZ2UoZGV2LCAoX19sZTMyICopIFx1MDAyNmV2ZW50WzFdKTtcbi1cdFx0YnJlYWs7XG4tXHQvKiBVU0JfQ0RDX05PVElGWV9SRVNQT05TRV9BVkFJTEFCTEUgY2FuIGhhcHBlbiB0b28gKGUuZy4gUk5ESVMpLFxuLVx0ICogYnV0IHRoZXJlIGFyZSBubyBzdGFuZGFyZCBmb3JtYXRzIGZvciB0aGUgcmVzcG9uc2UgZGF0YS5cbi1cdCAqL1xuLVx0ZGVmYXVsdDpcbi1cdFx0bmV0ZGV2X2VycihkZXYtXHUwMDNlbmV0LCBcIkNEQzogdW5leHBlY3RlZCBub3RpZmljYXRpb24gJTAyeCFcXG5cIixcbi1cdFx0XHQgICBldmVudC1cdTAwM2ViTm90aWZpY2F0aW9uVHlwZSk7XG4tXHRcdGJyZWFrO1xuLVx0fVxuLX1cbi1FWFBPUlRfU1lNQk9MX0dQTCh1c2JuZXRfY2RjX3N0YXR1cyk7XG4tXG4gaW50IHVzYm5ldF9jZGNfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuIHtcbiBcdGludFx0XHRcdFx0c3RhdHVzO1xuLVx0c3RydWN0IGNkY19zdGF0ZVx0XHQqaW5mbyA9ICh2b2lkICopIFx1MDAyNmRldi1cdTAwM2VkYXRhO1xuLVxuLVx0QlVJTERfQlVHX09OKChzaXplb2YoKChzdHJ1Y3QgdXNibmV0ICopMCktXHUwMDNlZGF0YSlcbi1cdFx0XHRcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBjZGNfc3RhdGUpKSk7XG4rXHRzdHJ1Y3QgY2RjX3N0YXRlXHRcdCppbmZvID0gXHUwMDI2ZGV2LVx1MDAzZWNkYztcbiBcbiBcdHN0YXR1cyA9IHVzYm5ldF9ldGhlcl9jZGNfYmluZChkZXYsIGludGYpO1xuIFx0aWYgKHN0YXR1cyBcdTAwM2MgMClcbkBAIC00NzksMjUgKzQwMSw2IEBAIHN0YXRpYyBpbnQgdXNibmV0X2NkY196dGVfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuIFx0cmV0dXJuIHN0YXR1cztcbiB9XG4gXG4tLyogTWFrZSBzdXJlIHBhY2tldHMgaGF2ZSBjb3JyZWN0IGRlc3RpbmF0aW9uIE1BQyBhZGRyZXNzXG4tICpcbi0gKiBBIGZpcm13YXJlIGJ1ZyBvYnNlcnZlZCBvbiBzb21lIGRldmljZXMgKFpURSBNRjgyMy84MzEvOTEwKSBpcyB0aGF0IHRoZVxuLSAqIGRldmljZSBzZW5kcyBwYWNrZXRzIHdpdGggYSBzdGF0aWMsIGJvZ3VzLCByYW5kb20gTUFDIGFkZHJlc3MgKGV2ZW50IGlmXG4tICogZGV2aWNlIE1BQyBhZGRyZXNzIGhhcyBiZWVuIHVwZGF0ZWQpLiBBbHdheXMgc2V0IE1BQyBhZGRyZXNzIHRvIHRoYXQgb2YgdGhlXG4tICogZGV2aWNlLlxuLSAqL1xuLWludCB1c2JuZXRfY2RjX3p0ZV9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4te1xuLVx0aWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjIEVUSF9ITEVOIHx8ICEoc2tiLVx1MDAzZWRhdGFbMF0gXHUwMDI2IDB4MDIpKVxuLVx0XHRyZXR1cm4gMTtcbi1cbi1cdHNrYl9yZXNldF9tYWNfaGVhZGVyKHNrYik7XG4tXHRldGhlcl9hZGRyX2NvcHkoZXRoX2hkcihza2IpLVx1MDAzZWhfZGVzdCwgZGV2LVx1MDAzZW5ldC1cdTAwM2VkZXZfYWRkcik7XG4tXG4tXHRyZXR1cm4gMTtcbi19XG4tRVhQT1JUX1NZTUJPTF9HUEwodXNibmV0X2NkY196dGVfcnhfZml4dXApO1xuLVxuIC8qIEVuc3VyZSBjb3JyZWN0IGxpbmsgc3RhdGVcbiAgKlxuICAqIFNvbWUgZGV2aWNlcyAoWlRFIE1GODIzLzgzMS85MTApIGV4cG9ydCB0d28gY2FycmllciBvbiBub3RpZmljYXRpb25zIHdoZW5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC91c2Ivcm5kaXNfaG9zdC5jIGIvZHJpdmVycy9uZXQvdXNiL3JuZGlzX2hvc3QuY1xuaW5kZXggNWUzOWQwNWEyZDdiNmQuLmQ1Mzk2NTQ2ODdjMzA1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvdXNiL3JuZGlzX2hvc3QuY1xuKysrIGIvZHJpdmVycy9uZXQvdXNiL3JuZGlzX2hvc3QuY1xuQEAgLTU3LDcgKzU3LDcgQEAgRVhQT1JUX1NZTUJPTF9HUEwocm5kaXNfc3RhdHVzKTtcbiBzdGF0aWMgdm9pZCBybmRpc19tc2dfaW5kaWNhdGUoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgcm5kaXNfaW5kaWNhdGUgKm1zZyxcbiBcdFx0XHRcdGludCBidWZsZW4pXG4ge1xuLVx0c3RydWN0IGNkY19zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG4rXHRzdHJ1Y3QgY2RjX3N0YXRlICppbmZvID0gXHUwMDI2ZGV2LVx1MDAzZWNkYztcbiBcdHN0cnVjdCBkZXZpY2UgKnVkZXYgPSBcdTAwMjZpbmZvLVx1MDAzZWNvbnRyb2wtXHUwMDNlZGV2O1xuIFxuIFx0aWYgKGRldi1cdTAwM2Vkcml2ZXJfaW5mby1cdTAwM2VpbmRpY2F0aW9uKSB7XG5AQCAtOTAsNyArOTAsNyBAQCBzdGF0aWMgdm9pZCBybmRpc19tc2dfaW5kaWNhdGUoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgcm5kaXNfaW5kaWNhdGUgKm1zZyxcbiAgKi9cbiBpbnQgcm5kaXNfY29tbWFuZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBybmRpc19tc2dfaGRyICpidWYsIGludCBidWZsZW4pXG4ge1xuLVx0c3RydWN0IGNkY19zdGF0ZVx0KmluZm8gPSAodm9pZCAqKSBcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbitcdHN0cnVjdCBjZGNfc3RhdGVcdCppbmZvID0gXHUwMDI2ZGV2LVx1MDAzZWNkYztcbiBcdHN0cnVjdCB1c2JfY2RjX25vdGlmaWNhdGlvbiBub3RpZmljYXRpb247XG4gXHRpbnRcdFx0XHRtYXN0ZXJfaWZudW07XG4gXHRpbnRcdFx0XHRyZXR2YWw7XG5AQCAtMjkwLDcgKzI5MCw3IEBAIGdlbmVyaWNfcm5kaXNfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBpbnQgZmxhZ3MpXG4ge1xuIFx0aW50XHRcdFx0cmV0dmFsO1xuIFx0c3RydWN0IG5ldF9kZXZpY2VcdCpuZXQgPSBkZXYtXHUwMDNlbmV0O1xuLVx0c3RydWN0IGNkY19zdGF0ZVx0KmluZm8gPSAodm9pZCAqKSBcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbitcdHN0cnVjdCBjZGNfc3RhdGVcdCppbmZvID0gXHUwMDI2ZGV2LVx1MDAzZWNkYztcbiBcdHVuaW9uIHtcbiBcdFx0dm9pZFx0XHRcdCpidWY7XG4gXHRcdHN0cnVjdCBybmRpc19tc2dfaGRyXHQqaGVhZGVyO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi91c2JuZXQuYyBiL2RyaXZlcnMvbmV0L3VzYi91c2JuZXQuY1xuaW5kZXggMjU1MTg2MzViN2I3MmQuLjdiZWVhNmQwZTczMWNjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jXG4rKysgYi9kcml2ZXJzL25ldC91c2IvdXNibmV0LmNcbkBAIC0yMiw2ICsyMiw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaW5pdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0ZGV2aWNlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9ldGhlcmRldmljZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvdXNiL2NkYy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvY3R5cGUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2V0aHRvb2wuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3dvcmtxdWV1ZS5oXHUwMDNlXG5AQCAtMjI3MSw2ICsyMjcyLDEwMCBAQCBpbnQgdXNibmV0X3dyaXRlX2NtZF9hc3luYyhzdHJ1Y3QgdXNibmV0ICpkZXYsIHU4IGNtZCwgdTggcmVxdHlwZSxcbiBcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwodXNibmV0X3dyaXRlX2NtZF9hc3luYyk7XG4rXG4rdm9pZCB1c2JuZXRfY2RjX3VwZGF0ZV9maWx0ZXIoc3RydWN0IHVzYm5ldCAqZGV2KVxuK3tcbitcdHN0cnVjdCBuZXRfZGV2aWNlXHQqbmV0ID0gZGV2LVx1MDAzZW5ldDtcbitcbitcdHUxNiBjZGNfZmlsdGVyID0gVVNCX0NEQ19QQUNLRVRfVFlQRV9ESVJFQ1RFRFxuK1x0XHRcdHwgVVNCX0NEQ19QQUNLRVRfVFlQRV9CUk9BRENBU1Q7XG4rXG4rXHQvKiBmaWx0ZXJpbmcgb24gdGhlIGRldmljZSBpcyBhbiBvcHRpb25hbCBmZWF0dXJlIGFuZCBub3Qgd29ydGhcbitcdCAqIHRoZSBoYXNzbGUgc28gd2UganVzdCByb3VnaGx5IGNhcmUgYWJvdXQgc25vb3BpbmcgYW5kIGlmIGFueVxuK1x0ICogbXVsdGljYXN0IGlzIHJlcXVlc3RlZCwgd2UgdGFrZSBldmVyeSBtdWx0aWNhc3RcbitcdCAqL1xuK1x0aWYgKG5ldC1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX1BST01JU0MpXG4rXHRcdGNkY19maWx0ZXIgfD0gVVNCX0NEQ19QQUNLRVRfVFlQRV9QUk9NSVNDVU9VUztcbitcdGlmICghbmV0ZGV2X21jX2VtcHR5KG5ldCkgfHwgKG5ldC1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX0FMTE1VTFRJKSlcbitcdFx0Y2RjX2ZpbHRlciB8PSBVU0JfQ0RDX1BBQ0tFVF9UWVBFX0FMTF9NVUxUSUNBU1Q7XG4rXG4rXHR1c2JfY29udHJvbF9tc2coZGV2LVx1MDAzZXVkZXYsXG4rXHRcdFx0dXNiX3NuZGN0cmxwaXBlKGRldi1cdTAwM2V1ZGV2LCAwKSxcbitcdFx0XHRVU0JfQ0RDX1NFVF9FVEhFUk5FVF9QQUNLRVRfRklMVEVSLFxuK1x0XHRcdFVTQl9UWVBFX0NMQVNTIHwgVVNCX1JFQ0lQX0lOVEVSRkFDRSxcbitcdFx0XHRjZGNfZmlsdGVyLFxuK1x0XHRcdGRldi1cdTAwM2VpbnRmLVx1MDAzZWN1cl9hbHRzZXR0aW5nLVx1MDAzZWRlc2MuYkludGVyZmFjZU51bWJlcixcbitcdFx0XHROVUxMLFxuK1x0XHRcdDAsXG4rXHRcdFx0VVNCX0NUUkxfU0VUX1RJTUVPVVRcbitcdFx0KTtcbit9XG4rRVhQT1JUX1NZTUJPTF9HUEwodXNibmV0X2NkY191cGRhdGVfZmlsdGVyKTtcbitcbitzdGF0aWMgdm9pZCBzcGVlZF9jaGFuZ2Uoc3RydWN0IHVzYm5ldCAqZGV2LCBfX2xlMzIgKnNwZWVkcylcbit7XG4rXHRkZXYtXHUwMDNldHhfc3BlZWQgPSBfX2xlMzJfdG9fY3B1KHNwZWVkc1swXSk7XG4rXHRkZXYtXHUwMDNlcnhfc3BlZWQgPSBfX2xlMzJfdG9fY3B1KHNwZWVkc1sxXSk7XG4rfVxuK1xuK3ZvaWQgdXNibmV0X2NkY19zdGF0dXMoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXJiICp1cmIpXG4re1xuK1x0c3RydWN0IHVzYl9jZGNfbm90aWZpY2F0aW9uXHQqZXZlbnQ7XG4rXG4rXHRpZiAodXJiLVx1MDAzZWFjdHVhbF9sZW5ndGggXHUwMDNjIHNpemVvZigqZXZlbnQpKVxuK1x0XHRyZXR1cm47XG4rXG4rXHQvKiBTUEVFRF9DSEFOR0UgY2FuIGdldCBzcGxpdCBpbnRvIHR3byA4LWJ5dGUgcGFja2V0cyAqL1xuK1x0aWYgKHRlc3RfYW5kX2NsZWFyX2JpdChFVkVOVF9TVFNfU1BMSVQsIFx1MDAyNmRldi1cdTAwM2VmbGFncykpIHtcbitcdFx0c3BlZWRfY2hhbmdlKGRldiwgKF9fbGUzMiAqKXVyYi1cdTAwM2V0cmFuc2Zlcl9idWZmZXIpO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4rXG4rXHRldmVudCA9IHVyYi1cdTAwM2V0cmFuc2Zlcl9idWZmZXI7XG4rXHRzd2l0Y2ggKGV2ZW50LVx1MDAzZWJOb3RpZmljYXRpb25UeXBlKSB7XG4rXHRjYXNlIFVTQl9DRENfTk9USUZZX05FVFdPUktfQ09OTkVDVElPTjpcbitcdFx0bmV0aWZfZGJnKGRldiwgdGltZXIsIGRldi1cdTAwM2VuZXQsIFwiQ0RDOiBjYXJyaWVyICVzXFxuXCIsXG4rXHRcdFx0ICBldmVudC1cdTAwM2V3VmFsdWUgPyBcIm9uXCIgOiBcIm9mZlwiKTtcbitcdFx0aWYgKG5ldGlmX2NhcnJpZXJfb2soZGV2LVx1MDAzZW5ldCkgIT0gISFldmVudC1cdTAwM2V3VmFsdWUpXG4rXHRcdFx0dXNibmV0X2xpbmtfY2hhbmdlKGRldiwgISFldmVudC1cdTAwM2V3VmFsdWUsIDApO1xuK1x0XHRicmVhaztcbitcdGNhc2UgVVNCX0NEQ19OT1RJRllfU1BFRURfQ0hBTkdFOlx0LyogdHgvcnggcmF0ZXMgKi9cbitcdFx0bmV0aWZfZGJnKGRldiwgdGltZXIsIGRldi1cdTAwM2VuZXQsIFwiQ0RDOiBzcGVlZCBjaGFuZ2UgKGxlbiAlZClcXG5cIixcbitcdFx0XHQgIHVyYi1cdTAwM2VhY3R1YWxfbGVuZ3RoKTtcbitcdFx0aWYgKHVyYi1cdTAwM2VhY3R1YWxfbGVuZ3RoICE9IChzaXplb2YoKmV2ZW50KSArIDgpKVxuK1x0XHRcdHNldF9iaXQoRVZFTlRfU1RTX1NQTElULCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpO1xuK1x0XHRlbHNlXG4rXHRcdFx0c3BlZWRfY2hhbmdlKGRldiwgKF9fbGUzMiAqKVx1MDAyNmV2ZW50WzFdKTtcbitcdFx0YnJlYWs7XG4rXHQvKiBVU0JfQ0RDX05PVElGWV9SRVNQT05TRV9BVkFJTEFCTEUgY2FuIGhhcHBlbiB0b28gKGUuZy4gUk5ESVMpLFxuK1x0ICogYnV0IHRoZXJlIGFyZSBubyBzdGFuZGFyZCBmb3JtYXRzIGZvciB0aGUgcmVzcG9uc2UgZGF0YS5cbitcdCAqL1xuK1x0ZGVmYXVsdDpcbitcdFx0bmV0ZGV2X2VycihkZXYtXHUwMDNlbmV0LCBcIkNEQzogdW5leHBlY3RlZCBub3RpZmljYXRpb24gJTAyeCFcXG5cIixcbitcdFx0XHQgICBldmVudC1cdTAwM2ViTm90aWZpY2F0aW9uVHlwZSk7XG4rXHRcdGJyZWFrO1xuK1x0fVxuK31cbitFWFBPUlRfU1lNQk9MX0dQTCh1c2JuZXRfY2RjX3N0YXR1cyk7XG4rXG4rLyogTWFrZSBzdXJlIHBhY2tldHMgaGF2ZSBjb3JyZWN0IGRlc3RpbmF0aW9uIE1BQyBhZGRyZXNzXG4rICpcbisgKiBBIGZpcm13YXJlIGJ1ZyBvYnNlcnZlZCBvbiBzb21lIGRldmljZXMgKFpURSBNRjgyMy84MzEvOTEwKSBpcyB0aGF0IHRoZVxuKyAqIGRldmljZSBzZW5kcyBwYWNrZXRzIHdpdGggYSBzdGF0aWMsIGJvZ3VzLCByYW5kb20gTUFDIGFkZHJlc3MgKGV2ZW50IGlmXG4rICogZGV2aWNlIE1BQyBhZGRyZXNzIGhhcyBiZWVuIHVwZGF0ZWQpLiBBbHdheXMgc2V0IE1BQyBhZGRyZXNzIHRvIHRoYXQgb2YgdGhlXG4rICogZGV2aWNlLlxuKyAqL1xuK2ludCB1c2JuZXRfY2RjX3p0ZV9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4re1xuK1x0aWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjIEVUSF9ITEVOIHx8ICEoc2tiLVx1MDAzZWRhdGFbMF0gXHUwMDI2IDB4MDIpKVxuK1x0XHRyZXR1cm4gMTtcbitcbitcdHNrYl9yZXNldF9tYWNfaGVhZGVyKHNrYik7XG4rXHRldGhlcl9hZGRyX2NvcHkoZXRoX2hkcihza2IpLVx1MDAzZWhfZGVzdCwgZGV2LVx1MDAzZW5ldC1cdTAwM2VkZXZfYWRkcik7XG4rXG4rXHRyZXR1cm4gMTtcbit9XG4rRVhQT1JUX1NZTUJPTF9HUEwodXNibmV0X2NkY196dGVfcnhfZml4dXApO1xuIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4gXG4gc3RhdGljIGludCBfX2luaXQgdXNibmV0X2luaXQodm9pZClcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3VzYi91c2JuZXQuaCBiL2luY2x1ZGUvbGludXgvdXNiL3VzYm5ldC5oXG5pbmRleCBiYmY3OTljY2YzYjMwZS4uNzlmNDhlYjM4OGVlNmMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3VzYi91c2JuZXQuaFxuKysrIGIvaW5jbHVkZS9saW51eC91c2IvdXNibmV0LmhcbkBAIC0xNiw2ICsxNiwxNCBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3VzYi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3BpbmxvY2suaFx1MDAzZVxuIFxuK3N0cnVjdCBjZGNfc3RhdGUge1xuK1x0c3RydWN0IHVzYl9jZGNfaGVhZGVyX2Rlc2MgICAgICAqaGVhZGVyO1xuK1x0c3RydWN0IHVzYl9jZGNfdW5pb25fZGVzYyAgICAgICAqdTtcbitcdHN0cnVjdCB1c2JfY2RjX2V0aGVyX2Rlc2MgICAgICAgKmV0aGVyO1xuK1x0c3RydWN0IHVzYl9pbnRlcmZhY2UgICAgICAgICAgICAqY29udHJvbDtcbitcdHN0cnVjdCB1c2JfaW50ZXJmYWNlICAgICAgICAgICAgKmRhdGE7XG4rfTtcbitcbiAvKiBpbnRlcmZhY2UgZnJvbSB1c2JuZXQgY29yZSB0byBlYWNoIFVTQiBuZXR3b3JraW5nIGxpbmsgd2UgaGFuZGxlICovXG4gc3RydWN0IHVzYm5ldCB7XG4gXHQvKiBob3VzZWtlZXBpbmcgKi9cbkBAIC00MSw2ICs0OSw3IEBAIHN0cnVjdCB1c2JuZXQge1xuIFx0LyogcHJvdG9jb2wvaW50ZXJmYWNlIHN0YXRlICovXG4gXHRzdHJ1Y3QgbmV0X2RldmljZVx0Km5ldDtcbiBcdGludFx0XHRcdG1zZ19lbmFibGU7XG4rXHRzdHJ1Y3QgY2RjX3N0YXRlXHRjZGM7XHRcdC8qIHRvbyBjb21tb24gdG8gbGVhdmUgb3V0Ki9cbiBcdHVuc2lnbmVkIGxvbmdcdFx0ZGF0YVs1XTtcbiBcdHUzMlx0XHRcdHhpZDtcbiBcdHUzMlx0XHRcdGhhcmRfbXR1O1x0LyogY291bnQgYW55IGV4dHJhIGZyYW1pbmcgKi9cbkBAIC0yMTEsMTMgKzIyMCw2IEBAIGV4dGVybiBpbnQgdXNibmV0X3dyaXRlX2NtZF9hc3luYyhzdHJ1Y3QgdXNibmV0ICpkZXYsIHU4IGNtZCwgdTggcmVxdHlwZSxcbiAgKiAobm90YWJseSwgdXNpbmcgbXVsdGlwbGUgaW50ZXJmYWNlcyBhY2NvcmRpbmcgdG8gdGhlIENEQ1xuICAqIHVuaW9uIGRlc2NyaXB0b3IpIGdldCBzb21lIGhlbHBlciBjb2RlLlxuICAqL1xuLXN0cnVjdCBjZGNfc3RhdGUge1xuLVx0c3RydWN0IHVzYl9jZGNfaGVhZGVyX2Rlc2NcdCpoZWFkZXI7XG4tXHRzdHJ1Y3QgdXNiX2NkY191bmlvbl9kZXNjXHQqdTtcbi1cdHN0cnVjdCB1c2JfY2RjX2V0aGVyX2Rlc2NcdCpldGhlcjtcbi1cdHN0cnVjdCB1c2JfaW50ZXJmYWNlXHRcdCpjb250cm9sO1xuLVx0c3RydWN0IHVzYl9pbnRlcmZhY2VcdFx0KmRhdGE7XG4tfTtcbiBcbiBleHRlcm4gdm9pZCB1c2JuZXRfY2RjX3VwZGF0ZV9maWx0ZXIoc3RydWN0IHVzYm5ldCAqZGV2KTtcbiBleHRlcm4gaW50IHVzYm5ldF9nZW5lcmljX2NkY19iaW5kKHN0cnVjdCB1c2JuZXQgKiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNzo1Mzo1Mi44NzgzNzQ4MzJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMTIwNjQ0OTE4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgVVNCIENEQyBFdGhlcm5ldCBSZWZhY3RvcmluZyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCdzIHNodWZmbGluZyBzb21lIGNvZGUgYXJvdW5kIGluIHRoZSBVU0IgbmV0d29ya2luZyBzdGFjay4gU3BlY2lmaWNhbGx5LCBpdCdzIG1vdmluZyBhIGZldyBmdW5jdGlvbnMsIGB1c2JuZXRfY2RjX3VwZGF0ZV9maWx0ZXJgLCBgdXNibmV0X2NkY19zdGF0dXNgLCBhbmQgYHVzYm5ldF9jZGNfenRlX3J4X2ZpeHVwYCwgZnJvbSBgY2RjX2V0aGVyLmNgIGludG8gdGhlIG1vcmUgZ2VuZXJhbCBgdXNibmV0LmNgLiBJdCdzIGFsc28gbW9kaWZ5aW5nIHRoZSBgc3RydWN0IHVzYm5ldGAgaW4gYHVzYm5ldC5oYC4gQmVmb3JlLCB0aGUgYGNkY19zdGF0ZWAgZGF0YSB3YXMgcGxhY2VkIG9uIHRvcCBvZiB0aGUgZ2VuZXJpYyBgZGF0YWAgYXJyYXk7IG5vdywgaXQncyBnZXR0aW5nIGl0cyBvd24gZGVkaWNhdGVkIGBjZGNgIG1lbWJlci4gQmFzaWNhbGx5LCBpdOKAmXMgYWxsb2NhdGluZyBzcGFjZSBmb3IgYSBgc3RydWN0IGNkY19zdGF0ZWAgZGlyZWN0bHkgd2l0aGluIGBzdHJ1Y3QgdXNibmV0YC4gQWxzbyBpdCBjaGFuZ2VzIGBzdHJ1Y3QgY2RjX3N0YXRlICppbmZvID0gKHZvaWQgKikgXHUwMDI2ZGV2LVx1MDAzZWRhdGE7YCB0byBgc3RydWN0IGNkY19zdGF0ZSAqaW5mbyA9IFx1MDAyNmRldi1cdTAwM2VjZGM7YCBpbiBhIGZldyBwbGFjZXMuXG5cbk15IGZpcnN0IHRob3VnaHQgaXMsIGlzIHRoaXMgYSBmdW5jdGlvbmFsIGNoYW5nZT8gVGhlIGNvZGUncyBtb3ZpbmcsIHRoZSBzdHJ1Y3R1cmUgaXMgZGlmZmVyZW50LCBzbyBob3cgZG9lcyBpdCBhZmZlY3QgdGhpbmdzPyBJdCBsb29rcyBsaWtlIHRoZSBtYWluIGdvYWwgaXMgdG8gYXZvaWQgYWxpYXNpbmcgaXNzdWVzIGFuZCBpbXByb3ZlIGNsYXJpdHkuIEl0J3MgbWFraW5nIHRoZSBzdHJ1Y3QgbGF5b3V0IG1vcmUgZXhwbGljaXQuXG5cblRoZSBjb2RlIGNoYW5nZXMgYXBwZWFyIHRvIGJlIG1haW5seSByZWZhY3RvcmluZywgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUuIEknbSBmb2N1c2luZyBvbiB3aGV0aGVyIHRoaXMgYWZmZWN0cyBleGlzdGluZyBkcml2ZXJzIG9yIGFkZHMgbmV3IGxvZ2ljLiBJIHF1aWNrbHkgY2hlY2sgdGhlIGZ1bmN0aW9ucyBiZWluZyBtb3ZlZC4gTm9wZSwgdGhleSBhcmUgaWRlbnRpY2FsLiBUaGV5IHNlZW0gdG8gYmUgbW92ZWQgZnJvbSBhIHNwZWNpZmljIGRyaXZlciAoYGNkY19ldGhlcmApIHRvIHRoZSBjb3JlIG1vZHVsZSAoYHVzYm5ldGApLiBUaGlzIGNoYW5nZSBtaWdodCBiZSB0byBhbGxvdyBvdGhlciBkcml2ZXJzIHRvIHVzZSB0aGVtIHdpdGhvdXQgZGVwZW5kaW5nIG9uIGBjZGNfZXRoZXJgLlxuXG5JIGNoZWNrIHRoZSBzdHJ1Y3QgY2hhbmdlIG1vcmUgY2xvc2VseS4gVGhlIHNpemUgb2YgYHN0cnVjdCB1c2JuZXRgIGlzIGluY3JlYXNpbmcsIGJ1dCBgZGF0YVs1XWAgaXMgc3RpbGwgdGhlcmUsIHNvIHRoZSBuZXcgYGNkY2AgZmllbGQgaXMgbm90IG92ZXJsYXlpbmcgYW55dGhpbmcuIFByZXZpb3VzbHksIHRoZXJlIHdhcyBhbiBvdmVybGFwIGFuZCBub3cgaXTigJlzIGFsbCBkZWRpY2F0ZWQuIFRoaXMgbWVhbnMgdGhlIGBkYXRhYCBhcnJheSBpcyBubyBsb25nZXIgdXNlZCBmb3IgdGhlIGBjZGNfc3RhdGVgLiBJdCdzIGEgY2xlYW4gcmVmYWN0b3JpbmcuXG5cblNvLCBkb2VzIGl0IHdhcnJhbnQgZnV6emluZz8gVHlwaWNhbGx5LCBqdXN0IG1vdmluZyBjb2RlIGFuZCBjaGFuZ2luZyBzdHJ1Y3QgbGF5b3V0cyAqd2l0aG91dCogaW50cm9kdWNpbmcgbmV3IGxvZ2ljIGRvZXNuJ3QgbmVjZXNzaXRhdGUgZm9jdXNlZCBmdXp6aW5nLCBidXQgaXQgY2FuIGJlIGEgZ29vZCB0ZXN0IHRvIGNoZWNrIGl0IGRpZG4ndCBicmVhayBhbnl0aGluZy4gQW5kIHNpbmNlIHRoZSBwcm9tcHQncyBpbnN0cnVjdGlvbnMgYXJlIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggY29udGFpbnMgXCJQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLi4uXCIgSSBuZWVkIHRvIGJlIHN1cmUuXG5cbkJ1dCB0aGVuIEkgdGhpbmsuLi4gaXMgdGhlcmUgYSBzdWJ0bGUgZnVuY3Rpb25hbCBjaGFuZ2U/IFNlcGFyYXRpbmcgYGNkY2AgYW5kIGBkYXRhYCBtaWdodCBmaXggYSBidWcgd2hlcmUgYGRhdGFgIHdhcyBvdmVyd3JpdHRlbiwgYnV0IG9ubHkgaWYgYW5vdGhlciBkcml2ZXIgd2FzIHVzaW5nIGJvdGggdGhlIGdlbmVyaWMgZGF0YSBhcnJheSBhbmQgdGhlIENEQyBzdGF0ZSB0aHJvdWdoIHRoZSBhcnJheS4gVGhpcyBpcyBwcm9iYWJseSBhIGJ1ZyBmaXguIEJ1dCBpbiBvdXIgY2FzZSB0aGUgYGNkY19ldGhlcmAgYW5kIGBybmRpc19ob3N0YCB1c2UgaXQgdGhlIG9sZCB3YXkuIEkgc2hvdWxkIGNoZWNrIHRoZSBjb21taXQgbWVzc2FnZSwgYnV0IEkgZG9uJ3QgaGF2ZSBpdC5cblxuVGhlIGRpZmYgZG9lcyBub3Qgc2hvdyBuZXcgY29kZSwgb25seSBtb3ZpbmcsIGFuZCBzdHJ1Y3QgY2hhbmdlcy4gVGhlIHBhdGNoIGlzIGRlZmluaXRlbHkgcmVmYWN0b3JpbmcuIEl0IG1vdmVzIGZ1bmN0aW9ucyBhbmQgY2hhbmdlcyBzdHJ1Y3QgbGF5b3V0LlxuXG5TbywgYW0gSSBhdCBgV29ydGhGdXp6aW5nPWZhbHNlYCBvciBgV29ydGhGdXp6aW5nPXRydWVgPyBUaGUgcHJvbXB0IGRvZXNu4oCZdCBleHBsaWNpdGx5IHNheSByZWZhY3RvcmluZyBpcyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gQnV0LCBpdCAqZG9lcyogc2F5IGlmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBrZXJuZWwgbG9naWMsIEkgbmVlZCB0byBkbyBmdXJ0aGVyIGNoZWNrcyBhbmQgcmV0dXJuIGBXb3J0aEZ1enppbmc9dHJ1ZWAuIFJlZmFjdG9yaW5nICpkb2VzKiBtb2RpZnkgcmVhY2hhYmxlIGRyaXZlcnMuIEFuZCB0aGF0IGxvZ2ljICppcyogYWNjZXNzaWJsZSBieSBkcml2ZXJzLCBlc3BlY2lhbGx5IHRocm91Z2ggQ0RDIEV0aGVybmV0LiBUaGVyZWZvcmUsIGlmIEkgc2F5IGBXb3J0aEZ1enppbmc9dHJ1ZWAsIHRoZSBmb2N1cyBzeW1ib2xzIHdvdWxkIGJlIGB1c2JuZXRfY2RjX3N0YXR1c2AsIGB1c2JuZXRfY2RjX3VwZGF0ZV9maWx0ZXJgLCBhbmQgYHVzYm5ldF9jZGNfenRlX3J4X2ZpeHVwYC4gVGhleSdyZSB0aGUgY3JpdGljYWwgcGllY2VzIG9mIHRoaXMgc2h1ZmZsZS4gVGhlc2UgZnVuY3Rpb25zICphcmUqIHJlYWNoYWJsZS5cblxuQWZ0ZXIgY29uc2lkZXJhdGlvbiwgSSB3aWxsIG1hcmsgaXQgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoaXMgaXMgYmVjYXVzZSB0aGUgZnVuY3Rpb25zIGFuZCBzdHJ1Y3QgbGF5b3V0IGFyZSByZWZhY3RvcmVkLCBidXQgbm8gbmV3IGZlYXR1cmVzIG9yIGZ1bmN0aW9uYWwgbG9naWMgaXMgaW50cm9kdWNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjAwNSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNzgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNzo1NDoxNC4wODQ4Mjc3MjFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTM5NzI3OTM5NDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidXNibmV0X2NkY19zdGF0dXNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jPTQxMD1zdGF0aWMgdm9pZCB1c2JuZXRfY2RjX3p0ZV9zdGF0dXMoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXJiICp1cmIpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmMtNDE5LVxcdGlmIChldmVudC1cXHUwMDNlYk5vdGlmaWNhdGlvblR5cGUgIT0gVVNCX0NEQ19OT1RJRllfTkVUV09SS19DT05ORUNUSU9OKSB7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jOjQyMDpcXHRcXHR1c2JuZXRfY2RjX3N0YXR1cyhkZXYsIHVyYik7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jLTQyMS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmM9NDM0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm9cXHRjZGNfaW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYy00MzgtXFx0LnVuYmluZCA9XFx0dXNibmV0X2NkY191bmJpbmQsXFxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jOjQzOTpcXHQuc3RhdHVzID1cXHR1c2JuZXRfY2RjX3N0YXR1cyxcXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmMtNDQwLVxcdC5zZXRfcnhfbW9kZSA9XFx0dXNibmV0X2NkY191cGRhdGVfZmlsdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jPTQ1NT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIHd3YW5faW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYy00NTktXFx0LnVuYmluZCA9XFx0dXNibmV0X2NkY191bmJpbmQsXFxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jOjQ2MDpcXHQuc3RhdHVzID1cXHR1c2JuZXRfY2RjX3N0YXR1cyxcXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmMtNDYxLVxcdC5zZXRfcnhfbW9kZSA9XFx0dXNibmV0X2NkY191cGRhdGVfZmlsdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xnLXZsNjAwLmM9MzAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm9cXHR2bDYwMF9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xnLXZsNjAwLmMtMzA1LVxcdC51bmJpbmRcXHRcXHQ9IHZsNjAwX3VuYmluZCxcXG5kcml2ZXJzL25ldC91c2IvbGctdmw2MDAuYzozMDY6XFx0LnN0YXR1c1xcdFxcdD0gdXNibmV0X2NkY19zdGF0dXMsXFxuZHJpdmVycy9uZXQvdXNiL2xnLXZsNjAwLmMtMzA3LVxcdC5yeF9maXh1cFxcdD0gdmw2MDBfcnhfZml4dXAsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcjgxNTNfZWNtLmM9MTE1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gcjgxNTNfaW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9yODE1M19lY20uYy0xMTktXFx0LnVuYmluZCA9XFx0dXNibmV0X2NkY191bmJpbmQsXFxuZHJpdmVycy9uZXQvdXNiL3I4MTUzX2VjbS5jOjEyMDpcXHQuc3RhdHVzID1cXHR1c2JuZXRfY2RjX3N0YXR1cyxcXG5kcml2ZXJzL25ldC91c2IvcjgxNTNfZWNtLmMtMTIxLVxcdC5tYW5hZ2VfcG93ZXIgPVxcdHVzYm5ldF9tYW5hZ2VfcG93ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmM9MjMwNT1zdGF0aWMgdm9pZCBzcGVlZF9jaGFuZ2Uoc3RydWN0IHVzYm5ldCAqZGV2LCBfX2xlMzIgKnNwZWVkcylcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYy0yMzEwLVxcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYzoyMzExOnZvaWQgdXNibmV0X2NkY19zdGF0dXMoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXJiICp1cmIpXFxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTIzMTIte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTIzNDgtfVxcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYzoyMzQ5OkVYUE9SVF9TWU1CT0xfR1BMKHVzYm5ldF9jZGNfc3RhdHVzKTtcXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmMtMjM1MC1cXG4tLVxcbmluY2x1ZGUvbGludXgvdXNiL3VzYm5ldC5oPTIyOD1leHRlcm4gdm9pZCB1c2JuZXRfY2RjX3VuYmluZChzdHJ1Y3QgdXNibmV0ICosIHN0cnVjdCB1c2JfaW50ZXJmYWNlICopO1xcbmluY2x1ZGUvbGludXgvdXNiL3VzYm5ldC5oOjIyOTpleHRlcm4gdm9pZCB1c2JuZXRfY2RjX3N0YXR1cyhzdHJ1Y3QgdXNibmV0ICosIHN0cnVjdCB1cmIgKik7XFxuaW5jbHVkZS9saW51eC91c2IvdXNibmV0LmgtMjMwLWV4dGVybiBpbnQgdXNibmV0X2NkY196dGVfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTc6NTU6MDguMDU3NjMzMTgyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTIzMzIwNDQ2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWZhY3RvcmluZyBBbmFseXNpczogdXNibmV0X2NkY19zdGF0dXMgTW92ZSoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgbW92aW5nIGB1c2JuZXRfY2RjX3N0YXR1c2AgYW5kIGEgZmV3IG90aGVyIHRoaW5ncyBpbnRvIGB1c2JuZXQuY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcywgaXMgdGhlcmUgYW55IHJlYWwgbmVlZCB0byBmdXp6IHRoaXM/IElmIGl0J3MgYSBzdHJhaWdodGZvcndhcmQgcmVmYWN0b3JpbmcsIHRoZSB1bmRlcmx5aW5nIGxvZ2ljIGlzIGlkZW50aWNhbCwgc28gaXQgc2VlbXMgbGlrZSBhIGxvdy15aWVsZCB0YXJnZXQgZm9yIGZ1enppbmcuXG5cbkJ1dCB3YWl0LCBob2xkIG9uLiBMZXQncyBkaWcgZGVlcGVyIGludG8gdGhhdCBgY2RjX3N0YXRlYCBjaGFuZ2UuIFRoZSBvcmlnaW5hbCBjb2RlIGhhZCBgc3RydWN0IGNkY19zdGF0ZSAqaW5mbyA9ICh2b2lkICopIFx1MDAyNmRldi1cdTAwM2VkYXRhO2AgYW5kIG5vdyBpdCdzIGBzdHJ1Y3QgY2RjX3N0YXRlICppbmZvID0gXHUwMDI2ZGV2LVx1MDAzZWNkYztgLiBUaGF0J3Mgc2lnbmlmaWNhbnQuIEl0IG1lYW5zIGBjZGNfc3RhdGVgIGlzIG5vIGxvbmdlciBhbGlhc2VkIHdpdGggYGRhdGFgLiBJIGJldCB0aGlzIGlzIGFpbWVkIGF0IGZpeGluZyBhIHBvdGVudGlhbCBjb25jdXJyZW5jeSBpc3N1ZSwgd2hlcmUgYSBkcml2ZXIgd2FzIHBvdGVudGlhbGx5IHVzaW5nIGJvdGggYGNkY19zdGF0ZWAgYW5kIGBkYXRhYCBzaW11bHRhbmVvdXNseS5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBzdXNwaWNpb24uIExldCBtZSBjaGVjayBpZiBhbnkgZHJpdmVycyB3ZXJlLCBpbiBmYWN0LCBkb2luZyB0aGF0LiBJIHJlY2FsbCBgZGV2LVx1MDAzZWRhdGFgIGlzIGFuIGFycmF5IG9mIGZpdmUgYHVuc2lnbmVkIGxvbmdgcywgYW5kIGBjZGNfc3RhdGVgIGlzIGZpdmUgcG9pbnRlcnMuIElmIGEgZHJpdmVyIGRlY2lkZWQgdG8gdXNlIGBkZXYtXHUwMDNlZGF0YWAgZm9yIGl0cyBvd24gc3RhdGUsIGJ1dCBhbHNvIHV0aWxpemVkIGFueSBDREMgZnVuY3Rpb25zLCB0aGF0IHdvdWxkIGluZXZpdGFibHkgY29ycnVwdCB0aGUgYGNkY19zdGF0ZWAgZGF0YS4gVGhpcyBpcyB3aGVyZSBJIGNhbiBhcHBseSBteSBleHBlcnRpc2UuIEkgc2hvdWxkIGJlIGFibGUgdG8gaWRlbnRpZnkgYW55IGRyaXZlcnMgdGhhdCBtaWdodCBoYXZlIGZhbGxlbiBpbnRvIHRoaXMgdHJhcCBhbmQgd2VyZSByZWx5aW5nIG9uIHNoYXJlZCBtZW1vcnkgdGhhdCB3YXMsIGVmZmVjdGl2ZWx5LCBhIHRpbWUtYm9tYi4gSSBuZWVkIHRvIGtub3cgaWYgYW55IGRyaXZlcnMgdXNlZCBgZGV2LVx1MDAzZWRhdGFgIHdoaWxlIHNpbXVsdGFuZW91c2x5IGNhbGxpbmcgQ0RDIGZ1bmN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTkyNSwiT3V0cHV0VG9rZW5zIjoxNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNzo1NToxMy4yOTA4NDA3MjNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE3NTU0NDc0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXYtXFx1MDAzZWRhdGFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAyODM5IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5ibG9jay9zZWQtb3BhbC5jPTQ2MD1zdGF0aWMgaW50IG9wYWxfc2VuZF9jbWQoc3RydWN0IG9wYWxfZGV2ICpkZXYpXFxuYmxvY2svc2VkLW9wYWwuYy00NjEte1xcbmJsb2NrL3NlZC1vcGFsLmM6NDYyOlxcdHJldHVybiBkZXYtXFx1MDAzZXNlbmRfcmVjdihkZXYtXFx1MDAzZWRhdGEsIGRldi1cXHUwMDNlY29taWQsIFRDR19TRUNQXzAxLFxcbmJsb2NrL3NlZC1vcGFsLmMtNDYzLVxcdFxcdFxcdCAgICAgIGRldi1cXHUwMDNlY21kLCBJT19CVUZGRVJfTEVOR1RILFxcbi0tXFxuYmxvY2svc2VkLW9wYWwuYz00Njc9c3RhdGljIGludCBvcGFsX3JlY3ZfY21kKHN0cnVjdCBvcGFsX2RldiAqZGV2KVxcbmJsb2NrL3NlZC1vcGFsLmMtNDY4LXtcXG5ibG9jay9zZWQtb3BhbC5jOjQ2OTpcXHRyZXR1cm4gZGV2LVxcdTAwM2VzZW5kX3JlY3YoZGV2LVxcdTAwM2VkYXRhLCBkZXYtXFx1MDAzZWNvbWlkLCBUQ0dfU0VDUF8wMSxcXG5ibG9jay9zZWQtb3BhbC5jLTQ3MC1cXHRcXHRcXHQgICAgICBkZXYtXFx1MDAzZXJlc3AsIElPX0JVRkZFUl9MRU5HVEgsXFxuLS1cXG5ibG9jay9zZWQtb3BhbC5jPTI1OTg9c3RydWN0IG9wYWxfZGV2ICppbml0X29wYWxfZGV2KHZvaWQgKmRhdGEsIHNlY19zZW5kX3JlY3YgKnNlbmRfcmVjdilcXG4tLVxcbmJsb2NrL3NlZC1vcGFsLmMtMjYyMC1cXHRkZXYtXFx1MDAzZWZsYWdzID0gMDtcXG5ibG9jay9zZWQtb3BhbC5jOjI2MjE6XFx0ZGV2LVxcdTAwM2VkYXRhID0gZGF0YTtcXG5ibG9jay9zZWQtb3BhbC5jLTI2MjItXFx0ZGV2LVxcdTAwM2VzZW5kX3JlY3YgPSBzZW5kX3JlY3Y7XFxuLS1cXG5ibG9jay9zZWQtb3BhbC5jPTM1NDg9c3RhdGljIGludCBvcGFsX3N0YWNrX3Jlc2V0KHN0cnVjdCBvcGFsX2RldiAqZGV2KVxcbi0tXFxuYmxvY2svc2VkLW9wYWwuYy0zNTYxLVxcbmJsb2NrL3NlZC1vcGFsLmM6MzU2MjpcXHRyZXQgPSBkZXYtXFx1MDAzZXNlbmRfcmVjdihkZXYtXFx1MDAzZWRhdGEsIGRldi1cXHUwMDNlY29taWQsIFRDR19TRUNQXzAyLFxcbmJsb2NrL3NlZC1vcGFsLmMtMzU2My1cXHRcXHRcXHQgICAgIGRldi1cXHUwMDNlY21kLCBJT19CVUZGRVJfTEVOR1RILCB0cnVlKTtcXG4tLVxcbmJsb2NrL3NlZC1vcGFsLmMtMzU2OS1cXHRtZW1zZXQoZGV2LVxcdTAwM2VyZXNwLCAwLCBJT19CVUZGRVJfTEVOR1RIKTtcXG5ibG9jay9zZWQtb3BhbC5jOjM1NzA6XFx0cmV0ID0gZGV2LVxcdTAwM2VzZW5kX3JlY3YoZGV2LVxcdTAwM2VkYXRhLCBkZXYtXFx1MDAzZWNvbWlkLCBUQ0dfU0VDUF8wMixcXG5ibG9jay9zZWQtb3BhbC5jLTM1NzEtXFx0XFx0XFx0ICAgICBkZXYtXFx1MDAzZXJlc3AsIElPX0JVRkZFUl9MRU5HVEgsIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvYWNwaS9idXMuYz05MDE9Ym9vbCBhY3BpX29mX21hdGNoX2RldmljZShjb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2UgKmFkZXYsXFxuLS1cXG5kcml2ZXJzL2FjcGkvYnVzLmMtOTEwLVxcbmRyaXZlcnMvYWNwaS9idXMuYzo5MTE6XFx0b2ZfY29tcGF0aWJsZSA9IGFkZXYtXFx1MDAzZWRhdGEub2ZfY29tcGF0aWJsZTtcXG5kcml2ZXJzL2FjcGkvYnVzLmMtOTEyLVxcdGlmICghb2ZfbWF0Y2hfdGFibGUgfHwgIW9mX2NvbXBhdGlibGUpXFxuLS1cXG5kcml2ZXJzL2FjcGkvYnVzLmM9OTM3PXN0YXRpYyBib29sIGFjcGlfb2ZfbW9kYWxpYXMoc3RydWN0IGFjcGlfZGV2aWNlICphZGV2LFxcbi0tXFxuZHJpdmVycy9hY3BpL2J1cy5jLTk0My1cXG5kcml2ZXJzL2FjcGkvYnVzLmM6OTQ0OlxcdG9mX2NvbXBhdGlibGUgPSBhZGV2LVxcdTAwM2VkYXRhLm9mX2NvbXBhdGlibGU7XFxuZHJpdmVycy9hY3BpL2J1cy5jLTk0NS1cXHRpZiAoIW9mX2NvbXBhdGlibGUpXFxuLS1cXG5kcml2ZXJzL2FjcGkvZGV2aWNlX3N5c2ZzLmM9MTkyPXN0YXRpYyBpbnQgY3JlYXRlX29mX21vZGFsaWFzKGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZSAqYWNwaV9kZXYsIGNoYXIgKm1vZGFsaWFzLFxcbi0tXFxuZHJpdmVycy9hY3BpL2RldmljZV9zeXNmcy5jLTIxNy1cXG5kcml2ZXJzL2FjcGkvZGV2aWNlX3N5c2ZzLmM6MjE4OlxcdG9mX2NvbXBhdGlibGUgPSBhY3BpX2Rldi1cXHUwMDNlZGF0YS5vZl9jb21wYXRpYmxlO1xcbmRyaXZlcnMvYWNwaS9kZXZpY2Vfc3lzZnMuYy0yMTktXFx0aWYgKG9mX2NvbXBhdGlibGUtXFx1MDAzZXR5cGUgPT0gQUNQSV9UWVBFX1BBQ0tBR0UpIHtcXG4tLVxcbmRyaXZlcnMvYWNwaS9kZXZpY2Vfc3lzZnMuYz0yNDA9aW50IF9fYWNwaV9kZXZpY2VfdWV2ZW50X21vZGFsaWFzKGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZSAqYWRldixcXG4tLVxcbmRyaXZlcnMvYWNwaS9kZXZpY2Vfc3lzZnMuYy0yNTMtXFxuZHJpdmVycy9hY3BpL2RldmljZV9zeXNmcy5jOjI1NDpcXHRpZiAoYWRldi1cXHUwMDNlZGF0YS5vZl9jb21wYXRpYmxlKVxcbmRyaXZlcnMvYWNwaS9kZXZpY2Vfc3lzZnMuYy0yNTUtXFx0XFx0bGVuID0gY3JlYXRlX29mX21vZGFsaWFzKGFkZXYsIFxcdTAwMjZlbnYtXFx1MDAzZWJ1ZltlbnYtXFx1MDAzZWJ1ZmxlbiAtIDFdLFxcbi0tXFxuZHJpdmVycy9hY3BpL2RldmljZV9zeXNmcy5jPTI4ND1zdGF0aWMgaW50IF9fYWNwaV9kZXZpY2VfbW9kYWxpYXMoY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlICphZGV2LCBjaGFyICpidWYsIGludCBzaXplKVxcbi0tXFxuZHJpdmVycy9hY3BpL2RldmljZV9zeXNmcy5jLTMwMC1cXHR9XFxuZHJpdmVycy9hY3BpL2RldmljZV9zeXNmcy5jOjMwMTpcXHRpZiAoIWFkZXYtXFx1MDAzZWRhdGEub2ZfY29tcGF0aWJsZSlcXG5kcml2ZXJzL2FjcGkvZGV2aWNlX3N5c2ZzLmMtMzAyLVxcdFxcdHJldHVybiBsZW47XFxuLS1cXG5kcml2ZXJzL2FjcGkvZGV2aWNlX3N5c2ZzLmM9NjM5PXZvaWQgYWNwaV9kZXZpY2Vfc2V0dXBfZmlsZXMoc3RydWN0IGFjcGlfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9hY3BpL2RldmljZV9zeXNmcy5jLTY0MC17XFxuZHJpdmVycy9hY3BpL2RldmljZV9zeXNmcy5jOjY0MTpcXHRhY3BpX2V4cG9zZV9ub25kZXZfc3Vibm9kZXMoXFx1MDAyNmRldi1cXHUwMDNlZGV2LmtvYmosIFxcdTAwMjZkZXYtXFx1MDAzZWRhdGEpO1xcbmRyaXZlcnMvYWNwaS9kZXZpY2Vfc3lzZnMuYy02NDItfVxcbi0tXFxuZHJpdmVycy9hY3BpL2RldmljZV9zeXNmcy5jPTY0OD12b2lkIGFjcGlfZGV2aWNlX3JlbW92ZV9maWxlcyhzdHJ1Y3QgYWNwaV9kZXZpY2UgKmRldilcXG5kcml2ZXJzL2FjcGkvZGV2aWNlX3N5c2ZzLmMtNjQ5LXtcXG5kcml2ZXJzL2FjcGkvZGV2aWNlX3N5c2ZzLmM6NjUwOlxcdGFjcGlfaGlkZV9ub25kZXZfc3Vibm9kZXMoXFx1MDAyNmRldi1cXHUwMDNlZGF0YSk7XFxuZHJpdmVycy9hY3BpL2RldmljZV9zeXNmcy5jLTY1MS19XFxuLS1cXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYz0zNDI9c3RhdGljIHZvaWQgYWNwaV9pbml0X29mX2NvbXBhdGlibGUoc3RydWN0IGFjcGlfZGV2aWNlICphZGV2KVxcbi0tXFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtMzQ2LVxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjM0NzpcXHRyZXQgPSBhY3BpX2RhdGFfZ2V0X3Byb3BlcnR5X2FycmF5KFxcdTAwMjZhZGV2LVxcdTAwM2VkYXRhLCBcXFwiY29tcGF0aWJsZVxcXCIsXFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtMzQ4LVxcdFxcdFxcdFxcdFxcdCAgIEFDUElfVFlQRV9TVFJJTkcsIFxcdTAwMjZvZl9jb21wYXRpYmxlKTtcXG4tLVxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTM2MS1cXHR9XFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM6MzYyOlxcdGFkZXYtXFx1MDAzZWRhdGEub2ZfY29tcGF0aWJsZSA9IG9mX2NvbXBhdGlibGU7XFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtMzYzLVxcbi0tXFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM9NTg1PXZvaWQgYWNwaV9pbml0X3Byb3BlcnRpZXMoc3RydWN0IGFjcGlfZGV2aWNlICphZGV2KVxcbi0tXFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtNTkxLVxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjU5MjpcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2YWRldi1cXHUwMDNlZGF0YS5wcm9wZXJ0aWVzKTtcXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYzo1OTM6XFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNmFkZXYtXFx1MDAzZWRhdGEuc3Vibm9kZXMpO1xcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTU5NC1cXG4tLVxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTYxMy1cXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYzo2MTQ6XFx0aWYgKGFjcGlfZXh0cmFjdF9wcm9wZXJ0aWVzKGFkZXYtXFx1MDAzZWhhbmRsZSwgYnVmLnBvaW50ZXIsIFxcdTAwMjZhZGV2LVxcdTAwM2VkYXRhKSkge1xcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjYxNTpcXHRcXHRhZGV2LVxcdTAwM2VkYXRhLnBvaW50ZXIgPSBidWYucG9pbnRlcjtcXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYy02MTYtXFx0XFx0aWYgKGFjcGlfb2YpXFxuLS1cXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYy02MTktXFx0aWYgKGFjcGlfZW51bWVyYXRlX25vbmRldl9zdWJub2RlcyhhZGV2LVxcdTAwM2VoYW5kbGUsIGJ1Zi5wb2ludGVyLFxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjYyMDpcXHRcXHRcXHRcXHRcXHRcXHUwMDI2YWRldi1cXHUwMDNlZGF0YSwgYWNwaV9md25vZGVfaGFuZGxlKGFkZXYpKSlcXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYzo2MjE6XFx0XFx0YWRldi1cXHUwMDNlZGF0YS5wb2ludGVyID0gYnVmLnBvaW50ZXI7XFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtNjIyLVxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjYyMzpcXHRpZiAoIWFkZXYtXFx1MDAzZWRhdGEucG9pbnRlcikge1xcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTYyNC1cXHRcXHRhY3BpX2hhbmRsZV9kZWJ1ZyhhZGV2LVxcdTAwM2VoYW5kbGUsIFxcXCJJbnZhbGlkIF9EU0QgZGF0YSwgc2tpcHBpbmdcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtNjI2LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM6NjI3OlxcdFxcdGlmICghYWNwaV90aWVfbm9uZGV2X3N1Ym5vZGVzKFxcdTAwMjZhZGV2LVxcdTAwM2VkYXRhKSlcXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYzo2Mjg6XFx0XFx0XFx0YWNwaV91bnRpZV9ub25kZXZfc3Vibm9kZXMoXFx1MDAyNmFkZXYtXFx1MDAzZWRhdGEpO1xcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTYyOS1cXHR9XFxuLS1cXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYy02MzUtXFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM6NjM2OlxcdGlmICghYWRldi1cXHUwMDNlZGF0YS5wb2ludGVyKVxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTYzNy1cXHRcXHRhY3BpX2V4dHJhY3RfYXBwbGVfcHJvcGVydGllcyhhZGV2KTtcXG4tLVxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jPTY3Mz12b2lkIGFjcGlfZnJlZV9wcm9wZXJ0aWVzKHN0cnVjdCBhY3BpX2RldmljZSAqYWRldilcXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYy02NzQte1xcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjY3NTpcXHRhY3BpX3VudGllX25vbmRldl9zdWJub2RlcyhcXHUwMDI2YWRldi1cXHUwMDNlZGF0YSk7XFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM6Njc2OlxcdGFjcGlfZGVzdHJveV9ub25kZXZfc3Vibm9kZXMoXFx1MDAyNmFkZXYtXFx1MDAzZWRhdGEuc3Vibm9kZXMpO1xcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjY3NzpcXHRBQ1BJX0ZSRUUoKHZvaWQgKilhZGV2LVxcdTAwM2VkYXRhLnBvaW50ZXIpO1xcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjY3ODpcXHRhZGV2LVxcdTAwM2VkYXRhLm9mX2NvbXBhdGlibGUgPSBOVUxMO1xcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjY3OTpcXHRhZGV2LVxcdTAwM2VkYXRhLnBvaW50ZXIgPSBOVUxMO1xcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjY4MDpcXHRhY3BpX2ZyZWVfZGV2aWNlX3Byb3BlcnRpZXMoXFx1MDAyNmFkZXYtXFx1MDAzZWRhdGEucHJvcGVydGllcyk7XFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtNjgxLX1cXG4tLVxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jPTc0OD1pbnQgYWNwaV9kZXZfZ2V0X3Byb3BlcnR5KGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZSAqYWRldiwgY29uc3QgY2hhciAqbmFtZSxcXG4tLVxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTc1MC17XFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM6NzUxOlxcdHJldHVybiBhZGV2ID8gYWNwaV9kYXRhX2dldF9wcm9wZXJ0eShcXHUwMDI2YWRldi1cXHUwMDNlZGF0YSwgbmFtZSwgdHlwZSwgb2JqKSA6IC1FSU5WQUw7XFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtNzUyLX1cXG4tLVxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jPTc1Nj1hY3BpX2RldmljZV9kYXRhX29mX25vZGUoY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSlcXG4tLVxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTc1OS1cXHRcXHRjb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2UgKmFkZXYgPSB0b19hY3BpX2RldmljZV9ub2RlKGZ3bm9kZSk7XFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM6NzYwOlxcdFxcdHJldHVybiBcXHUwMDI2YWRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYy03NjEtXFx0fVxcbi0tXFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM9MTMzOD1hY3BpX2dldF9uZXh0X3N1Ym5vZGUoY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSxcXG4tLVxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTEzNjctXFx0XFx0aWYgKGFkZXYpXFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM6MTM2ODpcXHRcXHRcXHRoZWFkID0gXFx1MDAyNmFkZXYtXFx1MDAzZWRhdGEuc3Vibm9kZXM7XFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtMTM2OS1cXHRcXHRlbHNlIGlmIChkYXRhKVxcbi0tXFxuZHJpdmVycy9hY3BpL3NjYW4uYz0yMjkxPXN0YXRpYyBpbnQgYWNwaV9nZW5lcmljX2RldmljZV9hdHRhY2goc3RydWN0IGFjcGlfZGV2aWNlICphZGV2LFxcbi0tXFxuZHJpdmVycy9hY3BpL3NjYW4uYy0yMjk3LVxcdCAqL1xcbmRyaXZlcnMvYWNwaS9zY2FuLmM6MjI5ODpcXHRpZiAoYWRldi1cXHUwMDNlZGF0YS5vZl9jb21wYXRpYmxlKVxcbmRyaXZlcnMvYWNwaS9zY2FuLmMtMjI5OS1cXHRcXHRhY3BpX2RlZmF1bHRfZW51bWVyYXRpb24oYWRldik7XFxuLS1cXG5kcml2ZXJzL2FjcGkveDg2L2FwcGxlLmM9Mjg9dm9pZCBhY3BpX2V4dHJhY3RfYXBwbGVfcHJvcGVydGllcyhzdHJ1Y3QgYWNwaV9kZXZpY2UgKmFkZXYpXFxuLS1cXG5kcml2ZXJzL2FjcGkveDg2L2FwcGxlLmMtMTQxLVxcbmRyaXZlcnMvYWNwaS94ODYvYXBwbGUuYzoxNDI6XFx0YWRldi1cXHUwMDNlZGF0YS5wb2ludGVyID0gbmV3cHJvcHM7XFxuZHJpdmVycy9hY3BpL3g4Ni9hcHBsZS5jOjE0MzpcXHRhY3BpX2RhdGFfYWRkX3Byb3BzKFxcdTAwMjZhZGV2LVxcdTAwM2VkYXRhLCBcXHUwMDI2YXBwbGVfcHJwX2d1aWQsIG5ld3Byb3BzKTtcXG5kcml2ZXJzL2FjcGkveDg2L2FwcGxlLmMtMTQ0LVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9Nzc3PXN0YXRpYyBzdHJ1Y3QgbnVsbGJfZGV2aWNlICpudWxsX2FsbG9jX2Rldih2b2lkKVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzkwLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjc5MTpcXHRJTklUX1JBRElYX1RSRUUoXFx1MDAyNmRldi1cXHUwMDNlZGF0YSwgR0ZQX0FUT01JQyk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzkyLVxcdElOSVRfUkFESVhfVFJFRShcXHUwMDI2ZGV2LVxcdTAwM2VjYWNoZSwgR0ZQX0FUT01JQyk7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz05MDA9c3RhdGljIHZvaWQgbnVsbF9mcmVlX3NlY3RvcihzdHJ1Y3QgbnVsbGIgKm51bGxiLCBzZWN0b3JfdCBzZWN0b3IsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy05MDctXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6OTA4OlxcdHJvb3QgPSBpc19jYWNoZSA/IFxcdTAwMjZudWxsYi1cXHUwMDNlZGV2LVxcdTAwM2VjYWNoZSA6IFxcdTAwMjZudWxsYi1cXHUwMDNlZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTkwOS1cXHRpZHggPSBzZWN0b3IgXFx1MDAzZVxcdTAwM2UgUEFHRV9TRUNUT1JTX1NISUZUO1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9OTI2PXN0YXRpYyBzdHJ1Y3QgbnVsbGJfcGFnZSAqbnVsbF9yYWRpeF90cmVlX2luc2VydChzdHJ1Y3QgbnVsbGIgKm51bGxiLCB1NjQgaWR4LFxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtOTMwLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjkzMTpcXHRyb290ID0gaXNfY2FjaGUgPyBcXHUwMDI2bnVsbGItXFx1MDAzZWRldi1cXHUwMDNlY2FjaGUgOiBcXHUwMDI2bnVsbGItXFx1MDAzZWRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy05MzItXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz05NDM9c3RhdGljIHZvaWQgbnVsbF9mcmVlX2RldmljZV9zdG9yYWdlKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldiwgYm9vbCBpc19jYWNoZSlcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTk0OS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo5NTA6XFx0cm9vdCA9IGlzX2NhY2hlID8gXFx1MDAyNmRldi1cXHUwMDNlY2FjaGUgOiBcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTk1MS1cXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTk3Mj1zdGF0aWMgc3RydWN0IG51bGxiX3BhZ2UgKl9fbnVsbF9sb29rdXBfcGFnZShzdHJ1Y3QgbnVsbGIgKm51bGxiLFxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtOTgyLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjk4MzpcXHRyb290ID0gaXNfY2FjaGUgPyBcXHUwMDI2bnVsbGItXFx1MDAzZWRldi1cXHUwMDNlY2FjaGUgOiBcXHUwMDI2bnVsbGItXFx1MDAzZWRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy05ODQtXFx0dF9wYWdlID0gcmFkaXhfdHJlZV9sb29rdXAocm9vdCwgaWR4KTtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTEwNDA9c3RhdGljIGludCBudWxsX2ZsdXNoX2NhY2hlX3BhZ2Uoc3RydWN0IG51bGxiICpudWxsYiwgc3RydWN0IG51bGxiX3BhZ2UgKmNfcGFnZSlcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEwNTUtXFx0XFx0aWYgKHRfcGFnZSBcXHUwMDI2XFx1MDAyNiBudWxsX3BhZ2VfZW1wdHkodF9wYWdlKSkge1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjEwNTY6XFx0XFx0XFx0cmV0ID0gcmFkaXhfdHJlZV9kZWxldGVfaXRlbShcXHUwMDI2bnVsbGItXFx1MDAzZWRldi1cXHUwMDNlZGF0YSxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xMDU3LVxcdFxcdFxcdFxcdGlkeCwgdF9wYWdlKTtcXG4tLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jPTMyNj1zdGF0aWMgaW50IGJ0bXRrc2Rpb19md19wbWN0cmwoc3RydWN0IGJ0bXRrc2Rpb19kZXYgKmJkZXYpXFxuLS1cXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYy0zMzItXFxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmM6MzMzOlxcdGlmIChiZGV2LVxcdTAwM2VkYXRhLVxcdTAwM2VscF9tYm94X3N1cHBvcnRlZCBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jLTMzNC1cXHQgICAgdGVzdF9iaXQoQlRNVEtTRElPX1BBVENIX0VOQUJMRUQsIFxcdTAwMjZiZGV2LVxcdTAwM2V0eF9zdGF0ZSkpIHtcXG4tLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jPTM2Mz1zdGF0aWMgaW50IGJ0bXRrc2Rpb19kcnZfcG1jdHJsKHN0cnVjdCBidG10a3NkaW9fZGV2ICpiZGV2KVxcbi0tXFxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmMtMzc3LVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jOjM3ODpcXHRpZiAoIWVyciBcXHUwMDI2XFx1MDAyNiBiZGV2LVxcdTAwM2VkYXRhLVxcdTAwM2VscF9tYm94X3N1cHBvcnRlZCBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jLTM3OS1cXHQgICAgdGVzdF9iaXQoQlRNVEtTRElPX1BBVENIX0VOQUJMRUQsIFxcdTAwMjZiZGV2LVxcdTAwM2V0eF9zdGF0ZSkpXFxuLS1cXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYz01NTg9c3RhdGljIHZvaWQgYnRtdGtzZGlvX3R4cnhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYy01OTEtXFx0XFx0aWYgKChpbnRfc3RhdHVzIFxcdTAwMjYgRldfTUFJTEJPWF9JTlQpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmM6NTkyOlxcdFxcdCAgICBiZGV2LVxcdTAwM2VkYXRhLVxcdTAwM2VjaGlwaWQgPT0gMHg3OTIxKSB7XFxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmMtNTkzLVxcdFxcdFxcdHNkaW9fd3JpdGVsKGJkZXYtXFx1MDAzZWZ1bmMsIFBIMkRTTTBSX0RSSVZFUl9PV04sXFxuLS1cXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYz0xMDkzPXN0YXRpYyBpbnQgYnRtdGtzZGlvX3NldHVwKHN0cnVjdCBoY2lfZGV2ICpoZGV2KVxcbi0tXFxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmMtMTEwNC1cXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYzoxMTA1OlxcdHN3aXRjaCAoYmRldi1cXHUwMDNlZGF0YS1cXHUwMDNlY2hpcGlkKSB7XFxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmMtMTEwNi1cXHRjYXNlIDB4NzkwMjpcXG4tLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jLTExNzEtXFx0Y2FzZSAweDc2Njg6XFxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmM6MTE3MjpcXHRcXHRlcnIgPSBtdDc2eHhfc2V0dXAoaGRldiwgYmRldi1cXHUwMDNlZGF0YS1cXHUwMDNlZnduYW1lKTtcXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYy0xMTczLVxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmMtMTE4My1cXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYzoxMTg0OlxcdGlmIChiZGV2LVxcdTAwM2VkYXRhLVxcdTAwM2VwbV9ydW50aW1lX3N1cHBvcnRlZCkge1xcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jLTExODUtXFx0XFx0cG1fcnVudGltZV9zZXRfYXV0b3N1c3BlbmRfZGVsYXkoYmRldi1cXHUwMDNlZGV2LFxcbi0tXFxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmM9MTI3Mj1zdGF0aWMgdm9pZCBidG10a3NkaW9fcmVzZXQoc3RydWN0IGhjaV9kZXYgKmhkZXYpXFxuLS1cXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYy0xMjc3LVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jOjEyNzg6XFx0aWYgKCFiZGV2LVxcdTAwM2VyZXNldCB8fCBiZGV2LVxcdTAwM2VkYXRhLVxcdTAwM2VjaGlwaWQgIT0gMHg3OTIxKVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jLTEyNzktXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmM9MTMzMj1zdGF0aWMgYm9vbCBidG10a3NkaW9fc2Rpb193YWtldXAoc3RydWN0IGhjaV9kZXYgKmhkZXYpXFxuLS1cXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYy0xMzQzLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jOjEzNDQ6XFx0aWYgKG1heV93YWtldXAgXFx1MDAyNlxcdTAwMjYgYmRldi1cXHUwMDNlZGF0YS1cXHUwMDNlY2hpcGlkID09IDB4NzkyMSkge1xcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jLTEzNDUtXFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jPTEzNTg9c3RhdGljIGludCBidG10a3NkaW9fcHJvYmUoc3RydWN0IHNkaW9fZnVuYyAqZnVuYyxcXG4tLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jLTEzNzAtXFxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmM6MTM3MTpcXHRiZGV2LVxcdTAwM2VkYXRhID0gKHZvaWQgKilpZC1cXHUwMDNlZHJpdmVyX2RhdGE7XFxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmM6MTM3MjpcXHRpZiAoIWJkZXYtXFx1MDAzZWRhdGEpXFxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmMtMTM3My1cXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4tLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrdWFydC5jPTU4OT1zdGF0aWMgaW50IGJ0bXRrdWFydF9zZXR1cChzdHJ1Y3QgaGNpX2RldiAqaGRldilcXG4tLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrdWFydC5jLTY0Mi1cXHQvKiBTZXR1cCBhIGZpcm13YXJlIHdoaWNoIHRoZSBkZXZpY2UgZGVmaW5pdGVseSByZXF1aXJlcyAqL1xcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrdWFydC5jOjY0MzpcXHRlcnIgPSBidG10a19zZXR1cF9maXJtd2FyZShoZGV2LCBiZGV2LVxcdTAwM2VkYXRhLVxcdTAwM2Vmd25hbWUsIG10a19oY2lfd210X3N5bmMpO1xcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrdWFydC5jLTY0NC1cXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrdWFydC5jPTgyOD1zdGF0aWMgaW50IGJ0bXRrdWFydF9wcm9iZShzdHJ1Y3Qgc2VyZGV2X2RldmljZSAqc2VyZGV2KVxcbi0tXFxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGt1YXJ0LmMtODM3LVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrdWFydC5jOjgzODpcXHRiZGV2LVxcdTAwM2VkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZzZXJkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGt1YXJ0LmM6ODM5OlxcdGlmICghYmRldi1cXHUwMDNlZGF0YSlcXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3VhcnQuYy04NDAtXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuLS1cXG5kcml2ZXJzL2NyeXB0by9hc3BlZWQvYXNwZWVkLWFjcnkuYz0yMTA9c3RhdGljIHZvaWQgYXNwZWVkX2FjcnlfcnNhX3NnX2NvcHlfdG9fYnVmZmVyKHN0cnVjdCBhc3BlZWRfYWNyeV9kZXYgKmFjcnlfZGV2LFxcbi0tXFxuZHJpdmVycy9jcnlwdG8vYXNwZWVkL2FzcGVlZC1hY3J5LmMtMjIyLVxcdGZvciAoaiA9IG5ieXRlcyAtIDE7IGogXFx1MDAzZT0gMDsgai0tKSB7XFxuZHJpdmVycy9jcnlwdG8vYXNwZWVkL2FzcGVlZC1hY3J5LmM6MjIzOlxcdFxcdGRhdGFfaWR4ID0gYWNyeV9kZXYtXFx1MDAzZWRhdGFfYnl0ZV9tYXBwaW5nW2ldO1xcbmRyaXZlcnMvY3J5cHRvL2FzcGVlZC9hc3BlZWQtYWNyeS5jLTIyNC1cXHRcXHRidWZbZGF0YV9pZHhdID0gIGRyYW1fYnVmZmVyW2pdO1xcbi0tXFxuZHJpdmVycy9jcnlwdG8vYXNwZWVkL2FzcGVlZC1hY3J5LmMtMjI4LVxcdGZvciAoOyBpIFxcdTAwM2MgQVNQRUVEX0FDUllfU1JBTV9NQVhfTEVOOyBpKyspIHtcXG5kcml2ZXJzL2NyeXB0by9hc3BlZWQvYXNwZWVkLWFjcnkuYzoyMjk6XFx0XFx0ZGF0YV9pZHggPSBhY3J5X2Rldi1cXHUwMDNlZGF0YV9ieXRlX21hcHBpbmdbaV07XFxuZHJpdmVycy9jcnlwdG8vYXNwZWVkL2FzcGVlZC1hY3J5LmMtMjMwLVxcdFxcdGJ1ZltkYXRhX2lkeF0gPSAwO1xcbi0tXFxuZHJpdmVycy9jcnlwdG8vYXNwZWVkL2FzcGVlZC1hY3J5LmM9Mjk5PXN0YXRpYyBpbnQgYXNwZWVkX2FjcnlfcnNhX3RyYW5zZmVyKHN0cnVjdCBhc3BlZWRfYWNyeV9kZXYgKmFjcnlfZGV2KVxcbi0tXFxuZHJpdmVycy9jcnlwdG8vYXNwZWVkL2FzcGVlZC1hY3J5LmMtMzE5LVxcdGZvciAoaiA9IEFTUEVFRF9BQ1JZX1NSQU1fTUFYX0xFTiAtIDE7IGogXFx1MDAzZT0gMDsgai0tKSB7XFxuZHJpdmVycy9jcnlwdG8vYXNwZWVkL2FzcGVlZC1hY3J5LmM6MzIwOlxcdFxcdGRhdGFfaWR4ID0gYWNyeV9kZXYtXFx1MDAzZWRhdGFfYnl0ZV9tYXBwaW5nW2pdO1xcbmRyaXZlcnMvY3J5cHRvL2FzcGVlZC9hc3BlZWQtYWNyeS5jLTMyMS1cXHRcXHRpZiAocmVhZGIoc3JhbV9idWZmZXIgKyBkYXRhX2lkeCkgPT0gMCBcXHUwMDI2XFx1MDAyNiBsZWFkaW5nX3plcm8pIHtcXG4tLVxcbmRyaXZlcnMvY3J5cHRvL2FzcGVlZC9hc3BlZWQtYWNyeS5jPTY3Nz1zdGF0aWMgdm9pZCBhc3BlZWRfYWNyeV9zcmFtX21hcHBpbmcoc3RydWN0IGFzcGVlZF9hY3J5X2RldiAqYWNyeV9kZXYpXFxuLS1cXG5kcml2ZXJzL2NyeXB0by9hc3BlZWQvYXNwZWVkLWFjcnkuYy02ODMtXFx0XFx0YWNyeV9kZXYtXFx1MDAzZW1vZF9kd19tYXBwaW5nW2ldID0gaiArIDQ7XFxuZHJpdmVycy9jcnlwdG8vYXNwZWVkL2FzcGVlZC1hY3J5LmM6Njg0OlxcdFxcdGFjcnlfZGV2LVxcdTAwM2VkYXRhX2J5dGVfbWFwcGluZ1soaSAqIDQpXSA9IChqICsgOCkgKiA0O1xcbmRyaXZlcnMvY3J5cHRvL2FzcGVlZC9hc3BlZWQtYWNyeS5jOjY4NTpcXHRcXHRhY3J5X2Rldi1cXHUwMDNlZGF0YV9ieXRlX21hcHBpbmdbKGkgKiA0KSArIDFdID0gKGogKyA4KSAqIDQgKyAxO1xcbmRyaXZlcnMvY3J5cHRvL2FzcGVlZC9hc3BlZWQtYWNyeS5jOjY4NjpcXHRcXHRhY3J5X2Rldi1cXHUwMDNlZGF0YV9ieXRlX21hcHBpbmdbKGkgKiA0KSArIDJdID0gKGogKyA4KSAqIDQgKyAyO1xcbmRyaXZlcnMvY3J5cHRvL2FzcGVlZC9hc3BlZWQtYWNyeS5jOjY4NzpcXHRcXHRhY3J5X2Rldi1cXHUwMDNlZGF0YV9ieXRlX21hcHBpbmdbKGkgKiA0KSArIDNdID0gKGogKyA4KSAqIDQgKyAzO1xcbmRyaXZlcnMvY3J5cHRvL2FzcGVlZC9hc3BlZWQtYWNyeS5jLTY4OC1cXHRcXHRqKys7XFxuLS1cXG5kcml2ZXJzL2VkYWMvYWx0ZXJhX2VkYWMuYz0xNTAyPXN0YXRpYyBpbnQgYWx0cl9wb3J0Yl9zZXR1cChzdHJ1Y3QgYWx0cl9lZGFjX2RldmljZV9kZXYgKmRldmljZSlcXG4tLVxcbmRyaXZlcnMvZWRhYy9hbHRlcmFfZWRhYy5jLTE1NDItXFx0YWx0ZGV2LVxcdTAwM2VlZGFjX2RldiA9IGRjaTtcXG5kcml2ZXJzL2VkYWMvYWx0ZXJhX2VkYWMuYzoxNTQzOlxcdGFsdGRldi1cXHUwMDNlZGF0YSA9IHBydjtcXG5kcml2ZXJzL2VkYWMvYWx0ZXJhX2VkYWMuYy0xNTQ0LVxcdGRjaS1cXHUwMDNlZGV2ID0gXFx1MDAyNmFsdGRldi1cXHUwMDNlZGRldjtcXG4tLVxcbmRyaXZlcnMvZWRhYy9hbHRlcmFfZWRhYy5jPTE4ODk9c3RhdGljIGludCBhbHRyX2VkYWNfYTEwX2RldmljZV9hZGQoc3RydWN0IGFsdHJfYXJyaWExMF9lZGFjICplZGFjLFxcbi0tXFxuZHJpdmVycy9lZGFjL2FsdGVyYV9lZGFjLmMtMTk0My1cXHRhbHRkZXYtXFx1MDAzZWVkYWNfZGV2ID0gZGNpO1xcbmRyaXZlcnMvZWRhYy9hbHRlcmFfZWRhYy5jOjE5NDQ6XFx0YWx0ZGV2LVxcdTAwM2VkYXRhID0gcHJ2O1xcbmRyaXZlcnMvZWRhYy9hbHRlcmFfZWRhYy5jLTE5NDUtXFx0YWx0ZGV2LVxcdTAwM2VkZGV2ID0gKmVkYWMtXFx1MDAzZWRldjtcXG4tLVxcbmRyaXZlcnMvZWRhYy9hbHRlcmFfZWRhYy5jLTE5NTctXFx0LyogQ2hlY2sgc3BlY2lmaWMgZGVwZW5kZW5jaWVzIGZvciB0aGUgbW9kdWxlICovXFxuZHJpdmVycy9lZGFjL2FsdGVyYV9lZGFjLmM6MTk1ODpcXHRpZiAoYWx0ZGV2LVxcdTAwM2VkYXRhLVxcdTAwM2VzZXR1cCkge1xcbmRyaXZlcnMvZWRhYy9hbHRlcmFfZWRhYy5jOjE5NTk6XFx0XFx0cmMgPSBhbHRkZXYtXFx1MDAzZWRhdGEtXFx1MDAzZXNldHVwKGFsdGRldik7XFxuZHJpdmVycy9lZGFjL2FsdGVyYV9lZGFjLmMtMTk2MC1cXHRcXHRpZiAocmMpXFxuLS1cXG5kcml2ZXJzL2dwaW8vZ3Bpby1yZGMzMjF4LmM9MTE5PXN0YXRpYyBpbnQgcmRjMzIxeF9ncGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2dwaW8vZ3Bpby1yZGMzMjF4LmMtMTcyLVxcdFxcdFxcdFxcdFxcdHJkYzMyMXhfZ3Bpb19kZXYtXFx1MDAzZXJlZzFfZGF0YV9iYXNlLFxcbmRyaXZlcnMvZ3Bpby9ncGlvLXJkYzMyMXguYzoxNzM6XFx0XFx0XFx0XFx0XFx0XFx1MDAyNnJkYzMyMXhfZ3Bpb19kZXYtXFx1MDAzZWRhdGFfcmVnWzBdKTtcXG5kcml2ZXJzL2dwaW8vZ3Bpby1yZGMzMjF4LmMtMTc0LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL2dwaW8vZ3Bpby1yZGMzMjF4LmMtMTc4LVxcdFxcdFxcdFxcdFxcdHJkYzMyMXhfZ3Bpb19kZXYtXFx1MDAzZXJlZzJfZGF0YV9iYXNlLFxcbmRyaXZlcnMvZ3Bpby9ncGlvLXJkYzMyMXguYzoxNzk6XFx0XFx0XFx0XFx0XFx0XFx1MDAyNnJkYzMyMXhfZ3Bpb19kZXYtXFx1MDAzZWRhdGFfcmVnWzFdKTtcXG5kcml2ZXJzL2dwaW8vZ3Bpby1yZGMzMjF4LmMtMTgwLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL2dwaW8vZ3Bpb2xpYi5jPTExMDE9c3RhdGljIHZvaWQgZ3Bpb2NoaXBfc2V0X2RhdGEoc3RydWN0IGdwaW9fY2hpcCAqZ2MsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9ncGlvL2dwaW9saWIuYy0xMTAyLXtcXG5kcml2ZXJzL2dwaW8vZ3Bpb2xpYi5jOjExMDM6XFx0Z2MtXFx1MDAzZWdwaW9kZXYtXFx1MDAzZWRhdGEgPSBkYXRhO1xcbmRyaXZlcnMvZ3Bpby9ncGlvbGliLmMtMTEwNC19XFxuLS1cXG5kcml2ZXJzL2dwaW8vZ3Bpb2xpYi5jPTExMTM9dm9pZCAqZ3Bpb2NoaXBfZ2V0X2RhdGEoc3RydWN0IGdwaW9fY2hpcCAqZ2MpXFxuZHJpdmVycy9ncGlvL2dwaW9saWIuYy0xMTE0LXtcXG5kcml2ZXJzL2dwaW8vZ3Bpb2xpYi5jOjExMTU6XFx0cmV0dXJuIGdjLVxcdTAwM2VncGlvZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvZ3Bpby9ncGlvbGliLmMtMTExNi19XFxuLS1cXG5kcml2ZXJzL2h3bW9uL25wY203NTAtcHdtLWZhbi5jPTgxMT1ucGNtN3h4X3B3bV9jel9zZXRfY3VyX3N0YXRlKHN0cnVjdCB0aGVybWFsX2Nvb2xpbmdfZGV2aWNlICp0Y2RldixcXG4tLVxcbmRyaXZlcnMvaHdtb24vbnBjbTc1MC1wd20tZmFuLmMtODIwLVxcdGNkZXYtXFx1MDAzZWN1cl9zdGF0ZSA9IHN0YXRlO1xcbmRyaXZlcnMvaHdtb24vbnBjbTc1MC1wd20tZmFuLmM6ODIxOlxcdHJldCA9IG5wY203eHhfcHdtX2NvbmZpZ19zZXQoY2Rldi1cXHUwMDNlZGF0YSwgY2Rldi1cXHUwMDNlcHdtX3BvcnQsXFxuZHJpdmVycy9od21vbi9ucGNtNzUwLXB3bS1mYW4uYy04MjItXFx0XFx0XFx0XFx0ICAgICBjZGV2LVxcdTAwM2Vjb29saW5nX2xldmVsc1tjZGV2LVxcdTAwM2VjdXJfc3RhdGVdKTtcXG4tLVxcbmRyaXZlcnMvaHdtb24vbnBjbTc1MC1wd20tZmFuLmM9ODMzPXN0YXRpYyBpbnQgbnBjbTd4eF9jcmVhdGVfcHdtX2Nvb2xpbmcoc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9od21vbi9ucGNtNzUwLXB3bS1mYW4uYy04NjYtXFxuZHJpdmVycy9od21vbi9ucGNtNzUwLXB3bS1mYW4uYzo4Njc6XFx0Y2Rldi1cXHUwMDNlZGF0YSA9IGRhdGE7XFxuZHJpdmVycy9od21vbi9ucGNtNzUwLXB3bS1mYW4uYy04NjgtXFx0Y2Rldi1cXHUwMDNlcHdtX3BvcnQgPSBwd21fcG9ydDtcXG4tLVxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtYnJjbXN0Yi5jPTE4MT1zdGF0aWMgaW5saW5lIGludCBicmNtc3RiX2kyY19nZXRfeGZlcnN6KHN0cnVjdCBicmNtc3RiX2kyY19kZXYgKmRldilcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWJyY21zdGIuYy0xODIte1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtYnJjbXN0Yi5jOjE4MzpcXHRyZXR1cm4gKE5fREFUQV9SRUdTICogZGV2LVxcdTAwM2VkYXRhX3JlZ3N6KTtcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWJyY21zdGIuYy0xODQtfVxcbi0tXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1icmNtc3RiLmM9MTg2PXN0YXRpYyBpbmxpbmUgaW50IGJyY21zdGJfaTJjX2dldF9kYXRhX3JlZ3N6KHN0cnVjdCBicmNtc3RiX2kyY19kZXYgKmRldilcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWJyY21zdGIuYy0xODcte1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtYnJjbXN0Yi5jOjE4ODpcXHRyZXR1cm4gZGV2LVxcdTAwM2VkYXRhX3JlZ3N6O1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtYnJjbXN0Yi5jLTE4OS19XFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWJyY21zdGIuYz02MTI9c3RhdGljIGludCBicmNtc3RiX2kyY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1icmNtc3RiLmMtNjc3LVxcdFxcdFxcdFxcdCAgICBcXFwiYnJjbSxicmNtcGVyLWkyY1xcXCIpKVxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtYnJjbXN0Yi5jOjY3ODpcXHRcXHRkZXYtXFx1MDAzZWRhdGFfcmVnc3ogPSBzaXplb2YodTgpO1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtYnJjbXN0Yi5jLTY3OS1cXHRlbHNlXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1icmNtc3RiLmM6NjgwOlxcdFxcdGRldi1cXHUwMDNlZGF0YV9yZWdzeiA9IHNpemVvZih1MzIpO1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtYnJjbXN0Yi5jLTY4MS1cXG4tLVxcbmRyaXZlcnMvaWlvL2FkYy90aV9hbTMzNXhfYWRjLmM9MTkxPXN0YXRpYyBpcnFyZXR1cm5fdCB0aWFkY193b3JrZXJfaChpbnQgaXJxLCB2b2lkICpwcml2YXRlKVxcbi0tXFxuZHJpdmVycy9paW8vYWRjL3RpX2FtMzM1eF9hZGMuYy0xOTUtXFx0aW50IGksIGssIGZpZm8xY291bnQsIHJlYWQ7XFxuZHJpdmVycy9paW8vYWRjL3RpX2FtMzM1eF9hZGMuYzoxOTY6XFx0dTE2ICpkYXRhID0gYWRjX2Rldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL2lpby9hZGMvdGlfYW0zMzV4X2FkYy5jLTE5Ny1cXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz00MDIyPXN0YXRpYyBpbnQgbWx4NV9pYl9kYXRhX2RpcmVjdF9pbml0KHN0cnVjdCBtbHg1X2liX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTQwMzgtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjQwMzk6XFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNmRldi1cXHUwMDNlZGF0YV9kaXJlY3RfbXJfbGlzdCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTQwNDAtXFx0cmV0ID0gbWx4NV9kYXRhX2RpcmVjdF9pYl9yZWcoZGV2LCB2dWlkKTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz00NTAxPXN0YXRpYyBpbnQgbWx4NV9pYl9zdGFnZV9pbml0X2luaXQoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNDU0NS1cXHRtdXRleF9pbml0KFxcdTAwMjZkZXYtXFx1MDAzZWNhcF9tYXNrX211dGV4KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6NDU0NjpcXHRtdXRleF9pbml0KFxcdTAwMjZkZXYtXFx1MDAzZWRhdGFfZGlyZWN0X2xvY2spO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy00NTQ3LVxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZkZXYtXFx1MDAzZXFwX2xpc3QpO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTUwODA9dm9pZCBtbHg1X2liX2RhdGFfZGlyZWN0X2JpbmQoc3RydWN0IG1seDVfaWJfZGV2ICppYmRldixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy01MDgyLXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6NTA4MzpcXHRtdXRleF9sb2NrKFxcdTAwMjZpYmRldi1cXHUwMDNlZGF0YV9kaXJlY3RfbG9jayk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjUwODQ6XFx0aWJkZXYtXFx1MDAzZWRhdGFfZGlyZWN0X2RldiA9IGRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6NTA4NTpcXHRtdXRleF91bmxvY2soXFx1MDAyNmliZGV2LVxcdTAwM2VkYXRhX2RpcmVjdF9sb2NrKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNTA4Ni19XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9NTA4OD12b2lkIG1seDVfaWJfZGF0YV9kaXJlY3RfdW5iaW5kKHN0cnVjdCBtbHg1X2liX2RldiAqaWJkZXYpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTUwODkte1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzo1MDkwOlxcdG11dGV4X2xvY2soXFx1MDAyNmliZGV2LVxcdTAwM2VkYXRhX2RpcmVjdF9sb2NrKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNTA5MS1cXHRtbHg1X2liX3Jldm9rZV9kYXRhX2RpcmVjdF9tcnMoaWJkZXYpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzo1MDkyOlxcdGliZGV2LVxcdTAwM2VkYXRhX2RpcmVjdF9kZXYgPSBOVUxMO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzo1MDkzOlxcdG11dGV4X3VubG9jayhcXHUwMDI2aWJkZXYtXFx1MDAzZWRhdGFfZGlyZWN0X2xvY2spO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy01MDk0LX1cXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmM9OTg1PXJlZ191c2VyX21yX2RtYWJ1Zl9ieV9kYXRhX2RpcmVjdChzdHJ1Y3QgaWJfcGQgKnBkLCB1NjQgb2Zmc2V0LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYy05OTgtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYzo5OTk6XFx0bXV0ZXhfbG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhX2RpcmVjdF9sb2NrKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jOjEwMDA6XFx0ZGF0YV9kaXJlY3RfZGV2ID0gZGV2LVxcdTAwM2VkYXRhX2RpcmVjdF9kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYy0xMDAxLVxcdGlmICghZGF0YV9kaXJlY3RfZGV2KSB7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jLTEwMjktXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYzoxMDMwOlxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNnRvX21tcihjcm9zc2VkX21yKS1cXHUwMDNlZGRfbm9kZSwgXFx1MDAyNmRldi1cXHUwMDNlZGF0YV9kaXJlY3RfbXJfbGlzdCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYy0xMDMxLVxcdHRvX21tcihjcm9zc2luZ19tciktXFx1MDAzZWRkX2Nyb3NzZWRfbXIgPSB0b19tbXIoY3Jvc3NlZF9tcik7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jLTEwMzMtZW5kOlxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmM6MTAzNDpcXHRtdXRleF91bmxvY2soXFx1MDAyNmRldi1cXHUwMDNlZGF0YV9kaXJlY3RfbG9jayk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYy0xMDM1LVxcdHJldHVybiByZXQgPyBFUlJfUFRSKHJldCkgOiBjcm9zc2luZ19tcjtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmM9MTMzNz1zdGF0aWMgaW50IG1seDVfaWJfcmV2b2tlX2RhdGFfZGlyZWN0X21yKHN0cnVjdCBtbHg1X2liX21yICptcilcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmMtMTM0Mi1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jOjEzNDM6XFx0bG9ja2RlcF9hc3NlcnRfaGVsZChcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhX2RpcmVjdF9sb2NrKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jLTEzNDQtXFx0bXItXFx1MDAzZXJldm9rZWQgPSB0cnVlO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYz0xMzUzPXZvaWQgbWx4NV9pYl9yZXZva2VfZGF0YV9kaXJlY3RfbXJzKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYy0xMzU2LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmM6MTM1NzpcXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFxcdTAwMjZkZXYtXFx1MDAzZWRhdGFfZGlyZWN0X2xvY2spO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmMtMTM1OC1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jOjEzNTk6XFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG1yLCBuZXh0LCBcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhX2RpcmVjdF9tcl9saXN0LCBkZF9ub2RlKSB7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYy0xMzYwLVxcdFxcdGxpc3RfZGVsKFxcdTAwMjZtci1cXHUwMDNlZGRfbm9kZSk7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jPTE1MDU9c3RhdGljIGludCBkZXJlZ19jcm9zc2luZ19kYXRhX2RpcmVjdF9tcihzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmMtMTUxNC1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jOjE1MTU6XFx0bXV0ZXhfbG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhX2RpcmVjdF9sb2NrKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jLTE1MTYtXFx0aWYgKCFkZF9jcm9zc2VkX21yLVxcdTAwM2VyZXZva2VkKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYy0xNTE5LVxcdHJldCA9IF9fbWx4NV9pYl9kZXJlZ19tcihcXHUwMDI2ZGRfY3Jvc3NlZF9tci1cXHUwMDNlaWJtcik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYzoxNTIwOlxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhX2RpcmVjdF9sb2NrKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jLTE1MjEtXFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3N0ZF90eXBlcy5jPTE4OT1zdGF0aWMgaW50IFVWRVJCU19IQU5ETEVSKE1MWDVfSUJfTUVUSE9EX0dFVF9EQVRBX0RJUkVDVF9TWVNGU19QQVRIKShcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3N0ZF90eXBlcy5jLTIwNC1cXHRkZXYgPSB0b19tZGV2KGMtXFx1MDAzZWlidWNvbnRleHQuZGV2aWNlKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9zdGRfdHlwZXMuYzoyMDU6XFx0bXV0ZXhfbG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhX2RpcmVjdF9sb2NrKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9zdGRfdHlwZXMuYzoyMDY6XFx0ZGF0YV9kaXJlY3RfZGV2ID0gZGV2LVxcdTAwM2VkYXRhX2RpcmVjdF9kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvc3RkX3R5cGVzLmMtMjA3LVxcdGlmICghZGF0YV9kaXJlY3RfZGV2KSB7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9zdGRfdHlwZXMuYy0yMjgtXFx0a2ZyZWUoZGV2X3BhdGgpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3N0ZF90eXBlcy5jOjIyOTpcXHRtdXRleF91bmxvY2soXFx1MDAyNmRldi1cXHUwMDNlZGF0YV9kaXJlY3RfbG9jayk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvc3RkX3R5cGVzLmMtMjMwLVxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2dwaW9fa2V5c19wb2xsZWQuYz04Nz1zdGF0aWMgdm9pZCBncGlvX2tleXNfcG9sbGVkX3BvbGwoc3RydWN0IGlucHV0X2RldiAqaW5wdXQpXFxuLS1cXG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2dwaW9fa2V5c19wb2xsZWQuYy05Ni1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcGRhdGEtXFx1MDAzZW5idXR0b25zOyBpKyspIHtcXG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2dwaW9fa2V5c19wb2xsZWQuYzo5NzpcXHRcXHRzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbl9kYXRhICpiZGF0YSA9IFxcdTAwMjZiZGV2LVxcdTAwM2VkYXRhW2ldO1xcbmRyaXZlcnMvaW5wdXQva2V5Ym9hcmQvZ3Bpb19rZXlzX3BvbGxlZC5jLTk4LVxcbi0tXFxuZHJpdmVycy9pbnB1dC9rZXlib2FyZC9ncGlvX2tleXNfcG9sbGVkLmM9MjI2PXN0YXRpYyBpbnQgZ3Bpb19rZXlzX3BvbGxlZF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9pbnB1dC9rZXlib2FyZC9ncGlvX2tleXNfcG9sbGVkLmMtMjc4LVxcdFxcdGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uICpidXR0b24gPSBcXHUwMDI2cGRhdGEtXFx1MDAzZWJ1dHRvbnNbaV07XFxuZHJpdmVycy9pbnB1dC9rZXlib2FyZC9ncGlvX2tleXNfcG9sbGVkLmM6Mjc5OlxcdFxcdHN0cnVjdCBncGlvX2tleXNfYnV0dG9uX2RhdGEgKmJkYXRhID0gXFx1MDAyNmJkZXYtXFx1MDAzZWRhdGFbaV07XFxuZHJpdmVycy9pbnB1dC9rZXlib2FyZC9ncGlvX2tleXNfcG9sbGVkLmMtMjgwLVxcdFxcdHVuc2lnbmVkIGludCB0eXBlID0gYnV0dG9uLVxcdTAwM2V0eXBlID86IEVWX0tFWTtcXG4tLVxcbmRyaXZlcnMvaW5wdXQva2V5Ym9hcmQvZ3Bpb19rZXlzX3BvbGxlZC5jLTM2MS1cXHRcXHRncGlvX2tleXNfcG9sbGVkX2NoZWNrX3N0YXRlKGlucHV0LCBcXHUwMDI2cGRhdGEtXFx1MDAzZWJ1dHRvbnNbaV0sXFxuZHJpdmVycy9pbnB1dC9rZXlib2FyZC9ncGlvX2tleXNfcG9sbGVkLmM6MzYyOlxcdFxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNmJkZXYtXFx1MDAzZWRhdGFbaV0pO1xcbmRyaXZlcnMvaW5wdXQva2V5Ym9hcmQvZ3Bpb19rZXlzX3BvbGxlZC5jLTM2My1cXG4tLVxcbmRyaXZlcnMvaW5wdXQva2V5Ym9hcmQvaGlsX2tiZC5jPTEwMj1zdGF0aWMgdm9pZCBoaWxfZGV2X2hhbmRsZV9jb21tYW5kX3Jlc3BvbnNlKHN0cnVjdCBoaWxfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2hpbF9rYmQuYy0xMDgtXFx0aWR4ID0gZGV2LVxcdTAwM2VpZHg0IC8gNDtcXG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2hpbF9rYmQuYzoxMDk6XFx0cCA9IGRldi1cXHUwMDNlZGF0YVtpZHggLSAxXTtcXG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2hpbF9rYmQuYy0xMTAtXFxuLS1cXG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2hpbF9rYmQuYy0xMzgtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGlkeDsgaSsrKVxcbmRyaXZlcnMvaW5wdXQva2V5Ym9hcmQvaGlsX2tiZC5jOjEzOTpcXHRcXHRidWZbaV0gPSBkZXYtXFx1MDAzZWRhdGFbaV0gXFx1MDAyNiBISUxfUEtUX0RBVEFfTUFTSztcXG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2hpbF9rYmQuYy0xNDAtXFx0Zm9yICg7IGkgXFx1MDAzYyBISUxfUEFDS0VUX01BWF9MRU5HVEg7IGkrKylcXG4tLVxcbmRyaXZlcnMvaW5wdXQva2V5Ym9hcmQvaGlsX2tiZC5jPTI3ND1zdGF0aWMgaXJxcmV0dXJuX3QgaGlsX2Rldl9pbnRlcnJ1cHQoc3RydWN0IHNlcmlvICpzZXJpbyxcXG4tLVxcbmRyaXZlcnMvaW5wdXQva2V5Ym9hcmQvaGlsX2tiZC5jLTI5MC1cXHRpZiAoIShkZXYtXFx1MDAzZWlkeDQgJSA0KSlcXG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2hpbF9rYmQuYzoyOTE6XFx0XFx0ZGV2LVxcdTAwM2VkYXRhW2lkeF0gPSAwO1xcbmRyaXZlcnMvaW5wdXQva2V5Ym9hcmQvaGlsX2tiZC5jOjI5MjpcXHRwYWNrZXQgPSBkZXYtXFx1MDAzZWRhdGFbaWR4XTtcXG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2hpbF9rYmQuYy0yOTMtXFx0cGFja2V0IHw9ICgoaGlsX3BhY2tldClkYXRhKSBcXHUwMDNjXFx1MDAzYyAoKDMgLSAoZGV2LVxcdTAwM2VpZHg0ICUgNCkpICogOCk7XFxuZHJpdmVycy9pbnB1dC9rZXlib2FyZC9oaWxfa2JkLmM6Mjk0OlxcdGRldi1cXHUwMDNlZGF0YVtpZHhdID0gcGFja2V0O1xcbmRyaXZlcnMvaW5wdXQva2V5Ym9hcmQvaGlsX2tiZC5jLTI5NS1cXG4tLVxcbmRyaXZlcnMvaW5wdXQvbWlzYy9rZXlzcGFuX3JlbW90ZS5jPTE0MT1zdGF0aWMgaW50IGtleXNwYW5fbG9hZF90ZXN0ZXIoc3RydWN0IHVzYl9rZXlzcGFuKiBkZXYsIGludCBiaXRzX25lZWRlZClcXG5kcml2ZXJzL2lucHV0L21pc2Mva2V5c3Bhbl9yZW1vdGUuYy0xNDIte1xcbmRyaXZlcnMvaW5wdXQvbWlzYy9rZXlzcGFuX3JlbW90ZS5jOjE0MzpcXHRpZiAoZGV2LVxcdTAwM2VkYXRhLmJpdHNfbGVmdCBcXHUwMDNlPSBiaXRzX25lZWRlZClcXG5kcml2ZXJzL2lucHV0L21pc2Mva2V5c3Bhbl9yZW1vdGUuYy0xNDQtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL2lucHV0L21pc2Mva2V5c3Bhbl9yZW1vdGUuYy0xNDktXFx0ICovXFxuZHJpdmVycy9pbnB1dC9taXNjL2tleXNwYW5fcmVtb3RlLmM6MTUwOlxcdGlmIChkZXYtXFx1MDAzZWRhdGEucG9zIFxcdTAwM2U9IGRldi1cXHUwMDNlZGF0YS5sZW4pIHtcXG5kcml2ZXJzL2lucHV0L21pc2Mva2V5c3Bhbl9yZW1vdGUuYy0xNTEtXFx0XFx0ZGV2X2RiZyhcXHUwMDI2ZGV2LVxcdTAwM2VpbnRlcmZhY2UtXFx1MDAzZWRldixcXG5kcml2ZXJzL2lucHV0L21pc2Mva2V5c3Bhbl9yZW1vdGUuYy0xNTItXFx0XFx0XFx0XFxcIiVzIC0gRXJyb3IgcmFuIG91dCBvZiBkYXRhLiBwb3M6ICVkLCBsZW46ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvaW5wdXQvbWlzYy9rZXlzcGFuX3JlbW90ZS5jOjE1MzpcXHRcXHRcXHRfX2Z1bmNfXywgZGV2LVxcdTAwM2VkYXRhLnBvcywgZGV2LVxcdTAwM2VkYXRhLmxlbik7XFxuZHJpdmVycy9pbnB1dC9taXNjL2tleXNwYW5fcmVtb3RlLmMtMTU0LVxcdFxcdHJldHVybiAtMTtcXG4tLVxcbmRyaXZlcnMvaW5wdXQvbWlzYy9rZXlzcGFuX3JlbW90ZS5jLTE1Ny1cXHQvKiBMb2FkIGFzIG11Y2ggYXMgd2UgY2FuIGludG8gdGhlIHRlc3Rlci4gKi9cXG5kcml2ZXJzL2lucHV0L21pc2Mva2V5c3Bhbl9yZW1vdGUuYzoxNTg6XFx0d2hpbGUgKChkZXYtXFx1MDAzZWRhdGEuYml0c19sZWZ0ICsgNyBcXHUwMDNjIChzaXplb2YoZGV2LVxcdTAwM2VkYXRhLnRlc3RlcikgKiA4KSkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL2lucHV0L21pc2Mva2V5c3Bhbl9yZW1vdGUuYzoxNTk6XFx0ICAgICAgIChkZXYtXFx1MDAzZWRhdGEucG9zIFxcdTAwM2MgZGV2LVxcdTAwM2VkYXRhLmxlbikpIHtcXG5kcml2ZXJzL2lucHV0L21pc2Mva2V5c3Bhbl9yZW1vdGUuYzoxNjA6XFx0XFx0ZGV2LVxcdTAwM2VkYXRhLnRlc3RlciArPSAoZGV2LVxcdTAwM2VkYXRhLmJ1ZmZlcltkZXYtXFx1MDAzZWRhdGEucG9zKytdIFxcdTAwM2NcXHUwMDNjIGRldi1cXHUwMDNlZGF0YS5iaXRzX2xlZnQpO1xcbmRyaXZlcnMvaW5wdXQvbWlzYy9rZXlzcGFuX3JlbW90ZS5jOjE2MTpcXHRcXHRkZXYtXFx1MDAzZWRhdGEuYml0c19sZWZ0ICs9IDg7XFxuZHJpdmVycy9pbnB1dC9taXNjL2tleXNwYW5fcmVtb3RlLmMtMTYyLVxcdH1cXG4tLVxcbmRyaXZlcnMvaW5wdXQvbW91c2UvYXBwbGV0b3VjaC5jPTQ0ND1zdGF0aWMgaW50IGF0cF9zdGF0dXNfY2hlY2soc3RydWN0IHVyYiAqdXJiKVxcbi0tXFxuZHJpdmVycy9pbnB1dC9tb3VzZS9hcHBsZXRvdWNoLmMtNDgwLVxcdFxcdFxcdFxcXCIgKGZpcnN0IGJ5dGU6ICVkLCBsZW5ndGg6ICVkKS5cXFxcblxcXCIsXFxuZHJpdmVycy9pbnB1dC9tb3VzZS9hcHBsZXRvdWNoLmM6NDgxOlxcdFxcdFxcdGRldi1cXHUwMDNlZGF0YVswXSwgZGV2LVxcdTAwM2V1cmItXFx1MDAzZWFjdHVhbF9sZW5ndGgpO1xcbmRyaXZlcnMvaW5wdXQvbW91c2UvYXBwbGV0b3VjaC5jLTQ4Mi1cXHRcXHRyZXR1cm4gQVRQX1VSQl9TVEFUVVNfRVJST1I7XFxuLS1cXG5kcml2ZXJzL2lucHV0L21vdXNlL2FwcGxldG91Y2guYz01MTQ9c3RhdGljIHZvaWQgYXRwX2NvbXBsZXRlX2dleXNlcl8xXzIoc3RydWN0IHVyYiAqdXJiKVxcbi0tXFxuZHJpdmVycy9pbnB1dC9tb3VzZS9hcHBsZXRvdWNoLmMtNTM4LVxcdFxcdGZvciAoaSA9IDAsIGogPSAxOTsgaSBcXHUwMDNjIDIwOyBpICs9IDIsIGogKz0gMykge1xcbmRyaXZlcnMvaW5wdXQvbW91c2UvYXBwbGV0b3VjaC5jOjUzOTpcXHRcXHRcXHRkZXYtXFx1MDAzZXh5X2N1cltpXSA9IGRldi1cXHUwMDNlZGF0YVtqXTtcXG5kcml2ZXJzL2lucHV0L21vdXNlL2FwcGxldG91Y2guYzo1NDA6XFx0XFx0XFx0ZGV2LVxcdTAwM2V4eV9jdXJbaSArIDFdID0gZGV2LVxcdTAwM2VkYXRhW2ogKyAxXTtcXG5kcml2ZXJzL2lucHV0L21vdXNlL2FwcGxldG91Y2guYy01NDEtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9pbnB1dC9tb3VzZS9hcHBsZXRvdWNoLmMtNTQ0LVxcdFxcdGZvciAoaSA9IDAsIGogPSAxOyBpIFxcdTAwM2MgOTsgaSArPSAyLCBqICs9IDMpIHtcXG5kcml2ZXJzL2lucHV0L21vdXNlL2FwcGxldG91Y2guYzo1NDU6XFx0XFx0XFx0ZGV2LVxcdTAwM2V4eV9jdXJbQVRQX1hTRU5TT1JTICsgaV0gPSBkZXYtXFx1MDAzZWRhdGFbal07XFxuZHJpdmVycy9pbnB1dC9tb3VzZS9hcHBsZXRvdWNoLmM6NTQ2OlxcdFxcdFxcdGRldi1cXHUwMDNleHlfY3VyW0FUUF9YU0VOU09SUyArIGkgKyAxXSA9IGRldi1cXHUwMDNlZGF0YVtqICsgMV07XFxuZHJpdmVycy9pbnB1dC9tb3VzZS9hcHBsZXRvdWNoLmMtNTQ3LVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvaW5wdXQvbW91c2UvYXBwbGV0b3VjaC5jLTU1MC1cXHRcXHRcXHQvKiBYIHZhbHVlcyAqL1xcbmRyaXZlcnMvaW5wdXQvbW91c2UvYXBwbGV0b3VjaC5jOjU1MTpcXHRcXHRcXHRkZXYtXFx1MDAzZXh5X2N1cltpICsgIDBdID0gZGV2LVxcdTAwM2VkYXRhWzUgKiBpICsgIDJdO1xcbmRyaXZlcnMvaW5wdXQvbW91c2UvYXBwbGV0b3VjaC5jOjU1MjpcXHRcXHRcXHRkZXYtXFx1MDAzZXh5X2N1cltpICsgIDhdID0gZGV2LVxcdTAwM2VkYXRhWzUgKiBpICsgIDRdO1xcbmRyaXZlcnMvaW5wdXQvbW91c2UvYXBwbGV0b3VjaC5jOjU1MzpcXHRcXHRcXHRkZXYtXFx1MDAzZXh5X2N1cltpICsgMTZdID0gZGV2LVxcdTAwM2VkYXRhWzUgKiBpICsgNDJdO1xcbmRyaXZlcnMvaW5wdXQvbW91c2UvYXBwbGV0b3VjaC5jLTU1NC1cXHRcXHRcXHRpZiAoaSBcXHUwMDNjIDIpXFxuZHJpdmVycy9pbnB1dC9tb3VzZS9hcHBsZXRvdWNoLmM6NTU1OlxcdFxcdFxcdFxcdGRldi1cXHUwMDNleHlfY3VyW2kgKyAyNF0gPSBkZXYtXFx1MDAzZWRhdGFbNSAqIGkgKyA0NF07XFxuZHJpdmVycy9pbnB1dC9tb3VzZS9hcHBsZXRvdWNoLmMtNTU2LVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNzo1NToxNS40NjYzOTEzNTdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTkzMjA4MzI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS2VybmVsIFVTQiBOZXR3b3JrIERyaXZlciBDb2RlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBvdXRwdXQgYW5kIEknbSBzZWVpbmcgYSBsb3Qgb2YgZHJpdmVycyBhY2Nlc3NpbmcgYGRldi1cdTAwM2VkYXRhYC4gVGhhdCBpbW1lZGlhdGVseSByYWlzZXMgYSBmbGFnIGZvciBtZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgc3RydWN0IHVzYm5ldCAqZGV2YCByZXByZXNlbnRzIGluIHRoaXMgY29udGV4dC4gTGV0J3MgZGlnIGludG8gdGhhdCBzdHJ1Y3R1cmUgYW5kIHNlZSBleGFjdGx5IGhvdyBpdCdzIGRlZmluZWQgYW5kIGhvdyB0aGF0IGBkYXRhYCBmaWVsZCBpcyBiZWluZyB1c2VkLiBXaGVyZSBhcmUgdGhvc2UgZHJpdmVycyBhY2Nlc3NpbmcgYGRldi1cdTAwM2VkYXRhYD9cblxuVGltZSB0byBuYXJyb3cgbXkgc2NvcGUsIEknbGwgcmVzdHJpY3QgbXkgc2VhcmNoIHRvIHRoZSByZWxldmFudCBkaXJlY3RvcnkgdHJlZSwgbGlrZWx5IGBkcml2ZXJzL25ldC91c2IvYC4gVGhhdCdzIHdoZXJlIEkgd291bGQgZXhwZWN0IHRvIGZpbmQgdGhlIGNvcmUgVVNCIG5ldHdvcmsgZHJpdmVyIGxvZ2ljIGFuZCB0aGVyZWZvcmUgdGhlIG1vc3QgbWVhbmluZ2Z1bCBpbnN0YW5jZXMgb2YgYGRldi1cdTAwM2VkYXRhYC4gSSB3YW50IHRvIHNlZSB0aGUgdHlwaWNhbCB1c2FnZSBwYXR0ZXJucywgcG9zc2libGUgcmFjZSBjb25kaXRpb25zLCBhbmQgaG93IHRob3NlIGRyaXZlcnMgYXJlIGludGVyZmFjaW5nIHdpdGggdGhhdCBkYXRhIGZpZWxkLiBUaGlzIGlzIGdvaW5nIHRvIGJlIGludGVyZXN0aW5nOyBJIGFudGljaXBhdGUgZmluZGluZyBjb21tb24gdXNhZ2UgcHJhY3RpY2VzLCBhbmQgaG9wZWZ1bGx5IG5vIGNyaXRpY2FsIGVycm9ycy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIxNjgsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNzo1NToxOS4wNTk2MDI0NTFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM0MjI2OTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGV2LVxcdTAwM2VkYXRhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA2NDMgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jPTQ0MT12b2lkIGFzaXhfc2V0X211bHRpY2FzdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNDQzLVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KG5ldCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NDQ0OlxcdHN0cnVjdCBhc2l4X2RhdGEgKmRhdGEgPSAoc3RydWN0IGFzaXhfZGF0YSAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNDQ1LVxcdHUxNiByeF9jdGwgPSBBWF9ERUZBVUxUX1JYX0NUTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTQ1NC1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjQ1NTpcXHRcXHQvKiBXZSB1c2UgdGhlIDIwIGJ5dGUgZGV2LVxcdTAwM2VkYXRhXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNDU2LVxcdFxcdCAqIGZvciBvdXIgOCBieXRlIGZpbHRlciBidWZmZXJcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jPTczND1pbnQgYXNpeF9zZXRfbWFjX2FkZHJlc3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldCwgdm9pZCAqcClcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTczNi1cXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSBuZXRkZXZfcHJpdihuZXQpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjczNzpcXHRzdHJ1Y3QgYXNpeF9kYXRhICpkYXRhID0gKHN0cnVjdCBhc2l4X2RhdGEgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTczOC1cXHRzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIgPSBwO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNzQ2LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjc0NzpcXHQvKiBXZSB1c2UgdGhlIDIwIGJ5dGUgZGV2LVxcdTAwM2VkYXRhXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNzQ4LVxcdCAqIGZvciBvdXIgNiBieXRlIG1hYyBidWZmZXJcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xMTg9c3RhdGljIHZvaWQgYXg4ODE3Ml9zZXRfbXVsdGljYXN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXQpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTIwLVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KG5ldCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEyMTpcXHRzdHJ1Y3QgYXNpeF9kYXRhICpkYXRhID0gKHN0cnVjdCBhc2l4X2RhdGEgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMjItXFx0dTggcnhfY3RsID0gMHg4YztcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMzEtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTMyOlxcdFxcdC8qIFdlIHVzZSB0aGUgMjAgYnl0ZSBkZXYtXFx1MDAzZWRhdGFcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTMzLVxcdFxcdCAqIGZvciBvdXIgOCBieXRlIGZpbHRlciBidWZmZXJcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0zMzI9c3RhdGljIGludCBheDg4NzcyX3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldilcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMzMzLXtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MzM0OlxcdHN0cnVjdCBhc2l4X2RhdGEgKmRhdGEgPSAoc3RydWN0IGFzaXhfZGF0YSAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTMzNS1cXHRzdHJ1Y3QgYXNpeF9jb21tb25fcHJpdmF0ZSAqcHJpdiA9IGRldi1cXHUwMDNlZHJpdmVyX3ByaXY7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MzYyPXN0YXRpYyBpbnQgYXg4ODc3Ml9od19yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYsIGludCBpbl9wbSlcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMzYzLXtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MzY0OlxcdHN0cnVjdCBhc2l4X2RhdGEgKmRhdGEgPSAoc3RydWN0IGFzaXhfZGF0YSAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTM2NS1cXHRzdHJ1Y3QgYXNpeF9jb21tb25fcHJpdmF0ZSAqcHJpdiA9IGRldi1cXHUwMDNlZHJpdmVyX3ByaXY7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NDU2PXN0YXRpYyBpbnQgYXg4ODc3MmFfaHdfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2LCBpbnQgaW5fcG0pXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQ1Ny17XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjQ1ODpcXHRzdHJ1Y3QgYXNpeF9kYXRhICpkYXRhID0gKHN0cnVjdCBhc2l4X2RhdGEgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy00NTktXFx0c3RydWN0IGFzaXhfY29tbW9uX3ByaXZhdGUgKnByaXYgPSBkZXYtXFx1MDAzZWRyaXZlcl9wcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTk5MD1zdGF0aWMgaW50IG1hcnZlbGxfcGh5X2luaXQoc3RydWN0IHVzYm5ldCAqZGV2KVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05OTEte1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5OTI6XFx0c3RydWN0IGFzaXhfZGF0YSAqZGF0YSA9IChzdHJ1Y3QgYXNpeF9kYXRhICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTkzLVxcdHUxNiByZWc7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTAyMT1zdGF0aWMgaW50IHJ0bDgyMTFjbF9waHlfaW5pdChzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMjIte1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDIzOlxcdHN0cnVjdCBhc2l4X2RhdGEgKmRhdGEgPSAoc3RydWN0IGFzaXhfZGF0YSAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMjQtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTA2OD1zdGF0aWMgaW50IGF4ODgxNzhfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2KVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDY5LXtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTA3MDpcXHRzdHJ1Y3QgYXNpeF9kYXRhICpkYXRhID0gKHN0cnVjdCBhc2l4X2RhdGEgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDcxLVxcdGludCByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTE2ND1zdGF0aWMgaW50IGF4ODgxNzhfbGlua19yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTE2Ny1cXHRzdHJ1Y3QgZXRodG9vbF9jbWQgZWNtZCA9IHsgLmNtZCA9IEVUSFRPT0xfR1NFVCB9O1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMTY4OlxcdHN0cnVjdCBhc2l4X2RhdGEgKmRhdGEgPSAoc3RydWN0IGFzaXhfZGF0YSAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTExNjktXFx0dTMyIHNwZWVkO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM9MjYxPXN0YXRpYyBpbnQgYXg4ODE3MmFfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2KVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTI2Mi17XFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM6MjYzOlxcdHN0cnVjdCBhc2l4X2RhdGEgKmRhdGEgPSAoc3RydWN0IGFzaXhfZGF0YSAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMjY0LVxcdHN0cnVjdCBheDg4MTcyYV9wcml2YXRlICpwcml2ID0gZGV2LVxcdTAwM2Vkcml2ZXJfcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYz04Njc9c3RhdGljIHZvaWQgYXg4ODE3OV9zZXRfbXVsdGljYXN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXQpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtODcwLVxcdHN0cnVjdCBheDg4MTc5X2RhdGEgKmRhdGEgPSBkZXYtXFx1MDAzZWRyaXZlcl9wcml2O1xcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYzo4NzE6XFx0dTggKm1fZmlsdGVyID0gKCh1OCAqKWRldi1cXHUwMDNlZGF0YSk7XFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTg3Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy04ODItXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM6ODgzOlxcdFxcdC8qIFdlIHVzZSBkZXYtXFx1MDAzZWRhdGEgZm9yIG91ciA4IGJ5dGUgZmlsdGVyIGJ1ZmZlclxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy04ODQtXFx0XFx0ICogdG8gYXZvaWQgYWxsb2NhdGluZyBtZW1vcnkgdGhhdCBpcyB0cmlja3kgdG8gZnJlZSBsYXRlclxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jPTgzPWludCB1c2JuZXRfZ2VuZXJpY19jZGNfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jLTk0LVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYzo5NTpcXHRpZiAoc2l6ZW9mKGRldi1cXHUwMDNlZGF0YSkgXFx1MDAzYyBzaXplb2YoKmluZm8pKVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYy05Ni1cXHRcXHRyZXR1cm4gLUVET007XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYz00Mz1zdGF0aWMgaW50IGNkY19tYmltX21hbmFnZV9wb3dlcihzdHJ1Y3QgdXNibmV0ICpkZXYsIGludCBvbilcXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy00NC17XFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM6NDU6XFx0c3RydWN0IGNkY19tYmltX3N0YXRlICppbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTQ2LVxcdGludCBydiA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYz03MT1zdGF0aWMgaW50IGNkY19tYmltX3J4X2FkZF92aWQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgX19iZTE2IHByb3RvLCB1MTYgdmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNzMtXFx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYzo3NDpcXHRzdHJ1Y3QgY2RjX21iaW1fc3RhdGUgKmluZm8gPSAodm9pZCAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNzUtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYz04NT1zdGF0aWMgaW50IGNkY19tYmltX3J4X2tpbGxfdmlkKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIF9fYmUxNiBwcm90bywgdTE2IHZpZClcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTg3LVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM6ODg6XFx0c3RydWN0IGNkY19tYmltX3N0YXRlICppbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTg5LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM9MTM5PXN0YXRpYyBpbnQgY2RjX21iaW1fYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtMTQ0LVxcdHU4IGRhdGFfYWx0c2V0dGluZyA9IDE7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM6MTQ1OlxcdHN0cnVjdCBjZGNfbWJpbV9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy0xNDYtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYz0xOTU9c3RhdGljIHZvaWQgY2RjX21iaW1fdW5iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtMTk2LXtcXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYzoxOTc6XFx0c3RydWN0IGNkY19tYmltX3N0YXRlICppbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTE5OC1cXHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IGluZm8tXFx1MDAzZWN0eDtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jPTIyMD1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmNkY19tYmltX3R4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgZ2ZwX3QgZmxhZ3MpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy0yMjItXFx0c3RydWN0IHNrX2J1ZmYgKnNrYl9vdXQ7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM6MjIzOlxcdHN0cnVjdCBjZGNfbWJpbV9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy0yMjQtXFx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSBpbmZvLVxcdTAwM2VjdHg7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYz00MTI9c3RhdGljIGludCBjZGNfbWJpbV9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2JfaW4pXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy00MTQtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYzo0MTU6XFx0c3RydWN0IGNkY19tYmltX3N0YXRlICppbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTQxNi1cXHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IGluZm8tXFx1MDAzZWN0eDtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jPTUwNj1zdGF0aWMgaW50IGNkY19tYmltX3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBtZXNzYWdlKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNTA5LVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM6NTEwOlxcdHN0cnVjdCBjZGNfbWJpbV9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy01MTEtXFx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSBpbmZvLVxcdTAwM2VjdHg7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYz01MzQ9c3RhdGljIGludCBjZGNfbWJpbV9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy01MzctXFx0c3RydWN0IHVzYm5ldCAqZGV2ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYzo1Mzg6XFx0c3RydWN0IGNkY19tYmltX3N0YXRlICppbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTUzOS1cXHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IGluZm8tXFx1MDAzZWN0eDtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MTA1PXN0YXRpYyB2b2lkIGNkY19uY21fZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTA5LVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzoxMTA6XFx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSAoc3RydWN0IGNkY19uY21fY3R4ICopZGV2LVxcdTAwM2VkYXRhWzBdO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTExLVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz0xNTA9c3RhdGljIHUzMiBjZGNfbmNtX2NoZWNrX3J4X21heChzdHJ1Y3QgdXNibmV0ICpkZXYsIHUzMiBuZXdfcngpXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xNTEte1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6MTUyOlxcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cXHUwMDNlZGF0YVswXTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE1My1cXHR1MzIgdmFsLCBtYXgsIG1pbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MTczPXN0YXRpYyB1MzIgY2RjX25jbV9jaGVja190eF9tYXgoc3RydWN0IHVzYm5ldCAqZGV2LCB1MzIgbmV3X3R4KVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTc0LXtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjE3NTpcXHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IChzdHJ1Y3QgY2RjX25jbV9jdHggKilkZXYtXFx1MDAzZWRhdGFbMF07XFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xNzYtXFx0dTMyIHZhbCwgbWF4LCBtaW47XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTIwMT1zdGF0aWMgc3NpemVfdCBtaW5fdHhfcGt0X3Nob3coc3RydWN0IGRldmljZSAqZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMjA0LVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoZCkpO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6MjA1OlxcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cXHUwMDNlZGF0YVswXTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTIwNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MjEwPXN0YXRpYyBzc2l6ZV90IHJ4X21heF9zaG93KHN0cnVjdCBkZXZpY2UgKmQsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTIxMy1cXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSBuZXRkZXZfcHJpdih0b19uZXRfZGV2KGQpKTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjIxNDpcXHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IChzdHJ1Y3QgY2RjX25jbV9jdHggKilkZXYtXFx1MDAzZWRhdGFbMF07XFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0yMTUtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTIxOT1zdGF0aWMgc3NpemVfdCB0eF9tYXhfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0yMjItXFx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzoyMjM6XFx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSAoc3RydWN0IGNkY19uY21fY3R4ICopZGV2LVxcdTAwM2VkYXRhWzBdO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMjI0LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz0yMjg9c3RhdGljIHNzaXplX3QgdHhfdGltZXJfdXNlY3Nfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0yMzEtXFx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzoyMzI6XFx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSAoc3RydWN0IGNkY19uY21fY3R4ICopZGV2LVxcdTAwM2VkYXRhWzBdO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMjMzLVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz0yMzc9c3RhdGljIHNzaXplX3QgbWluX3R4X3BrdF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0yNDEtXFx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzoyNDI6XFx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSAoc3RydWN0IGNkY19uY21fY3R4ICopZGV2LVxcdTAwM2VkYXRhWzBdO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMjQzLVxcdHVuc2lnbmVkIGxvbmcgdmFsO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz0yNTM9c3RhdGljIHNzaXplX3QgcnhfbWF4X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmQsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTI1Ny1cXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSBuZXRkZXZfcHJpdih0b19uZXRfZGV2KGQpKTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjI1ODpcXHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IChzdHJ1Y3QgY2RjX25jbV9jdHggKilkZXYtXFx1MDAzZWRhdGFbMF07XFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0yNTktXFx0dW5zaWduZWQgbG9uZyB2YWw7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTI2OD1zdGF0aWMgc3NpemVfdCB0eF9tYXhfc3RvcmUoc3RydWN0IGRldmljZSAqZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMjcyLVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoZCkpO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6MjczOlxcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cXHUwMDNlZGF0YVswXTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTI3NC1cXHR1bnNpZ25lZCBsb25nIHZhbDtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MjgzPXN0YXRpYyBzc2l6ZV90IHR4X3RpbWVyX3VzZWNzX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmQsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTI4Ny1cXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSBuZXRkZXZfcHJpdih0b19uZXRfZGV2KGQpKTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjI4ODpcXHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IChzdHJ1Y3QgY2RjX25jbV9jdHggKilkZXYtXFx1MDAzZWRhdGFbMF07XFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0yODktXFx0c3NpemVfdCByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTMxMT1zdGF0aWMgc3NpemVfdCBuZHBfdG9fZW5kX3Nob3coc3RydWN0IGRldmljZSAqZCwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMzEzLVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoZCkpO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6MzE0OlxcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cXHUwMDNlZGF0YVswXTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTMxNS1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MzE5PXN0YXRpYyBzc2l6ZV90IG5kcF90b19lbmRfc3RvcmUoc3RydWN0IGRldmljZSAqZCwgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBsZW4pXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTMyMS1cXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSBuZXRkZXZfcHJpdih0b19uZXRfZGV2KGQpKTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjMyMjpcXHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IChzdHJ1Y3QgY2RjX25jbV9jdHggKilkZXYtXFx1MDAzZWRhdGFbMF07XFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0zMjMtXFx0Ym9vbCBlbmFibGU7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTM2MT1zdGF0aWMgc3NpemVfdCBjZGNfbmNtX3Nob3dfIyNuYW1lKHN0cnVjdCBkZXZpY2UgKmQsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMzYzLVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoZCkpOyBcXFxcXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzozNjQ6XFx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSAoc3RydWN0IGNkY19uY21fY3R4ICopZGV2LVxcdTAwM2VkYXRhWzBdOyBcXFxcXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0zNjUtXFx0cmV0dXJuIHNwcmludGYoYnVmLCBmb3JtYXQgXFxcIlxcXFxuXFxcIiwgdG9jcHUoY3R4LVxcdTAwM2VuY21fcGFybS5uYW1lKSk7XFx0XFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz00MDU9c3RhdGljIHZvaWQgY2RjX25jbV91cGRhdGVfcnh0eF9tYXgoc3RydWN0IHVzYm5ldCAqZGV2LCB1MzIgbmV3X3J4LCB1MzIgbmV3X3R4KVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtNDA2LXtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjQwNzpcXHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IChzdHJ1Y3QgY2RjX25jbV9jdHggKilkZXYtXFx1MDAzZWRhdGFbMF07XFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy00MDgtXFx0dTggaWZhY2Vfbm8gPSBjdHgtXFx1MDAzZWNvbnRyb2wtXFx1MDAzZWN1cl9hbHRzZXR0aW5nLVxcdTAwM2VkZXNjLmJJbnRlcmZhY2VOdW1iZXI7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTQ3Nz1zdGF0aWMgdTggY2RjX25jbV9mbGFncyhzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy00Nzgte1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6NDc5OlxcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cXHUwMDNlZGF0YVswXTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTQ4MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9NTAyPXN0YXRpYyB1MzIgY2RjX25jbV9tYXhfZGdyYW1fc2l6ZShzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy01MDMte1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6NTA0OlxcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cXHUwMDNlZGF0YVswXTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTUwNS1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9NTE2PXN0YXRpYyBpbnQgY2RjX25jbV9pbml0KHN0cnVjdCB1c2JuZXQgKmRldilcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTUxNy17XFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzo1MTg6XFx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSAoc3RydWN0IGNkY19uY21fY3R4ICopZGV2LVxcdTAwM2VkYXRhWzBdO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtNTE5LVxcdHU4IGlmYWNlX25vID0gY3R4LVxcdTAwM2Vjb250cm9sLVxcdTAwM2VjdXJfYWx0c2V0dGluZy1cXHUwMDNlZGVzYy5iSW50ZXJmYWNlTnVtYmVyO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz02MDk9c3RhdGljIHZvaWQgY2RjX25jbV9zZXRfZGdyYW1fc2l6ZShzdHJ1Y3QgdXNibmV0ICpkZXYsIGludCBuZXdfc2l6ZSlcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTYxMC17XFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzo2MTE6XFx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSAoc3RydWN0IGNkY19uY21fY3R4ICopZGV2LVxcdTAwM2VkYXRhWzBdO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtNjEyLVxcdHU4IGlmYWNlX25vID0gY3R4LVxcdTAwM2Vjb250cm9sLVxcdTAwM2VjdXJfYWx0c2V0dGluZy1cXHUwMDNlZGVzYy5iSW50ZXJmYWNlTnVtYmVyO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz02NTc9c3RhdGljIHZvaWQgY2RjX25jbV9maXhfbW9kdWx1cyhzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy02NTgte1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6NjU5OlxcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cXHUwMDNlZGF0YVswXTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTY2MC1cXHR1MzIgdmFsO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz03MDE9c3RhdGljIGludCBjZGNfbmNtX3NldHVwKHN0cnVjdCB1c2JuZXQgKmRldilcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTcwMi17XFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzo3MDM6XFx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSAoc3RydWN0IGNkY19uY21fY3R4ICopZGV2LVxcdTAwM2VkYXRhWzBdO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtNzA0LVxcdHUzMiBkZWZfcngsIGRlZl90eDtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9ODIwPWludCBjZGNfbmNtX2JpbmRfY29tbW9uKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHU4IGRhdGFfYWx0c2V0dGluZywgaW50IGRydmZsYWdzKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy04NDEtXFx0Lyogc3RvcmUgY3R4IHBvaW50ZXIgaW4gZGV2aWNlIGRhdGEgZmllbGQgKi9cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjg0MjpcXHRkZXYtXFx1MDAzZWRhdGFbMF0gPSAodW5zaWduZWQgbG9uZyljdHg7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy04NDMtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTk5MC1lcnJvcjpcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjk5MTpcXHRjZGNfbmNtX2ZyZWUoKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cXHUwMDNlZGF0YVswXSk7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzo5OTI6XFx0ZGV2LVxcdTAwM2VkYXRhWzBdID0gMDtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTk5My1cXHRkZXZfaW5mbyhcXHUwMDI2aW50Zi1cXHUwMDNlZGV2LCBcXFwiYmluZCgpIGZhaWx1cmVcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz05OTg9dm9pZCBjZGNfbmNtX3VuYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtOTk5LXtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjEwMDA6XFx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSAoc3RydWN0IGNkY19uY21fY3R4ICopZGV2LVxcdTAwM2VkYXRhWzBdO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTAwMS1cXHRzdHJ1Y3QgdXNiX2RyaXZlciAqZHJpdmVyID0gZHJpdmVyX29mKGludGYpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz0xMjA0PWNkY19uY21fZmlsbF90eF9mcmFtZShzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsIF9fbGUzMiBzaWduKVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTIwNS17XFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzoxMjA2OlxcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cXHUwMDNlZGF0YVswXTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTEyMDctXFx0dW5pb24ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz0xNTIzPWNkY19uY21fdHhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBnZnBfdCBmbGFncylcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTUyNS1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiX291dDtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjE1MjY6XFx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSAoc3RydWN0IGNkY19uY21fY3R4ICopZGV2LVxcdTAwM2VkYXRhWzBdO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTUyNy1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MTcyNz1pbnQgY2RjX25jbV9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2JfaW4pXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE3MjktXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjE3MzA6XFx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSAoc3RydWN0IGNkY19uY21fY3R4ICopZGV2LVxcdTAwM2VkYXRhWzBdO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTczMS1cXHR1bnNpZ25lZCBpbnQgbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz0xOTA3PXN0YXRpYyB2b2lkIGNkY19uY21fdXBkYXRlX2ZpbHRlcihzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xOTA4LXtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjE5MDk6XFx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSAoc3RydWN0IGNkY19uY21fY3R4ICopZGV2LVxcdTAwM2VkYXRhWzBdO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTkxMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYz0yNzQ9c3RhdGljIHZvaWQgZG05NjAxX3NldF9tdWx0aWNhc3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldClcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYy0yNzYtXFx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYobmV0KTtcXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmM6Mjc3OlxcdC8qIFdlIHVzZSB0aGUgMjAgYnl0ZSBkZXYtXFx1MDAzZWRhdGEgZm9yIG91ciA4IGJ5dGUgZmlsdGVyIGJ1ZmZlclxcbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYy0yNzgtXFx0ICogdG8gYXZvaWQgYWxsb2NhdGluZyBtZW1vcnkgdGhhdCBpcyB0cmlja3kgdG8gZnJlZSBsYXRlciAqL1xcbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYzoyNzk6XFx0dTggKmhhc2hlcyA9ICh1OCAqKSBcXHUwMDI2IGRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmMtMjgwLVxcdHU4IHJ4X2N0bCA9IDB4MzE7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvaHVhd2VpX2NkY19uY20uYz0zNz1zdGF0aWMgaW50IGh1YXdlaV9jZGNfbmNtX21hbmFnZV9wb3dlcihzdHJ1Y3QgdXNibmV0ICp1c2JuZXRfZGV2LCBpbnQgb24pXFxuZHJpdmVycy9uZXQvdXNiL2h1YXdlaV9jZGNfbmNtLmMtMzgte1xcbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jOjM5OlxcdHN0cnVjdCBodWF3ZWlfY2RjX25jbV9zdGF0ZSAqZHJ2c3RhdGUgPSAodm9pZCAqKVxcdTAwMjZ1c2JuZXRfZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jLTQwLVxcdGludCBydjtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jPTY1PXN0YXRpYyBpbnQgaHVhd2VpX2NkY19uY21fYmluZChzdHJ1Y3QgdXNibmV0ICp1c2JuZXRfZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2h1YXdlaV9jZGNfbmNtLmMtNzAtXFx0aW50IHJldDtcXG5kcml2ZXJzL25ldC91c2IvaHVhd2VpX2NkY19uY20uYzo3MTpcXHRzdHJ1Y3QgaHVhd2VpX2NkY19uY21fc3RhdGUgKmRydnN0YXRlID0gKHZvaWQgKilcXHUwMDI2dXNibmV0X2Rldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvaHVhd2VpX2NkY19uY20uYy03Mi1cXHRpbnQgZHJ2ZmxhZ3MgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2h1YXdlaV9jZGNfbmNtLmM9MTE2PXN0YXRpYyB2b2lkIGh1YXdlaV9jZGNfbmNtX3VuYmluZChzdHJ1Y3QgdXNibmV0ICp1c2JuZXRfZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2h1YXdlaV9jZGNfbmNtLmMtMTE4LXtcXG5kcml2ZXJzL25ldC91c2IvaHVhd2VpX2NkY19uY20uYzoxMTk6XFx0c3RydWN0IGh1YXdlaV9jZGNfbmNtX3N0YXRlICpkcnZzdGF0ZSA9ICh2b2lkICopXFx1MDAyNnVzYm5ldF9kZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL2h1YXdlaV9jZGNfbmNtLmMtMTIwLVxcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gZHJ2c3RhdGUtXFx1MDAzZWN0eDtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jPTEyOT1zdGF0aWMgaW50IGh1YXdlaV9jZGNfbmNtX3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvaHVhd2VpX2NkY19uY20uYy0xMzMtXFx0c3RydWN0IHVzYm5ldCAqdXNibmV0X2RldiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7XFxuZHJpdmVycy9uZXQvdXNiL2h1YXdlaV9jZGNfbmNtLmM6MTM0OlxcdHN0cnVjdCBodWF3ZWlfY2RjX25jbV9zdGF0ZSAqZHJ2c3RhdGUgPSAodm9pZCAqKVxcdTAwMjZ1c2JuZXRfZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jLTEzNS1cXHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IGRydnN0YXRlLVxcdTAwM2VjdHg7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvaHVhd2VpX2NkY19uY20uYz0xNTc9c3RhdGljIGludCBodWF3ZWlfY2RjX25jbV9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvaHVhd2VpX2NkY19uY20uYy0xNjAtXFx0c3RydWN0IHVzYm5ldCAqdXNibmV0X2RldiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7XFxuZHJpdmVycy9uZXQvdXNiL2h1YXdlaV9jZGNfbmNtLmM6MTYxOlxcdHN0cnVjdCBodWF3ZWlfY2RjX25jbV9zdGF0ZSAqZHJ2c3RhdGUgPSAodm9pZCAqKVxcdTAwMjZ1c2JuZXRfZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jLTE2Mi1cXHRib29sIGNhbGxzdWI7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTEzODM9c3RhdGljIGludCBsYW43OHh4X2RhdGFwb3J0X3dyaXRlKHN0cnVjdCBsYW43OHh4X25ldCAqZGV2LCB1MzIgcmFtX3NlbGVjdCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTM4NS17XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoxMzg2OlxcdHN0cnVjdCBsYW43OHh4X3ByaXYgKnBkYXRhID0gKHN0cnVjdCBsYW43OHh4X3ByaXYgKikoZGV2LVxcdTAwM2VkYXRhWzBdKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTEzODctXFx0aW50IGksIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MTQ1NT1zdGF0aWMgaW50IGxhbjc4eHhfd3JpdGVfbWNoYXNoX3RhYmxlKHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTQ1Ni17XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoxNDU3OlxcdHN0cnVjdCBsYW43OHh4X3ByaXYgKnBkYXRhID0gKHN0cnVjdCBsYW43OHh4X3ByaXYgKikoZGV2LVxcdTAwM2VkYXRhWzBdKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE0NTgtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTE1MDI9c3RhdGljIHZvaWQgbGFuNzh4eF9zZXRfbXVsdGljYXN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE1MDQtXFx0c3RydWN0IGxhbjc4eHhfbmV0ICpkZXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MTUwNTpcXHRzdHJ1Y3QgbGFuNzh4eF9wcml2ICpwZGF0YSA9IChzdHJ1Y3QgbGFuNzh4eF9wcml2ICopKGRldi1cXHUwMDNlZGF0YVswXSk7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0xNTA2LVxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTE3NDY9c3RhdGljIHZvaWQgbGFuNzh4eF9nZXRfd29sKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE3NTEtXFx0dTMyIGJ1ZjtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjE3NTI6XFx0c3RydWN0IGxhbjc4eHhfcHJpdiAqcGRhdGEgPSAoc3RydWN0IGxhbjc4eHhfcHJpdiAqKShkZXYtXFx1MDAzZWRhdGFbMF0pO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTc1My1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MTc3NT1zdGF0aWMgaW50IGxhbjc4eHhfc2V0X3dvbChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0xNzc4LVxcdHN0cnVjdCBsYW43OHh4X25ldCAqZGV2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjE3Nzk6XFx0c3RydWN0IGxhbjc4eHhfcHJpdiAqcGRhdGEgPSAoc3RydWN0IGxhbjc4eHhfcHJpdiAqKShkZXYtXFx1MDAzZWRhdGFbMF0pO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTc4MC1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0zMDU1PXN0YXRpYyBpbnQgbGFuNzh4eF9zZXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMzA1OC1cXHRzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldiA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzozMDU5OlxcdHN0cnVjdCBsYW43OHh4X3ByaXYgKnBkYXRhID0gKHN0cnVjdCBsYW43OHh4X3ByaXYgKikoZGV2LVxcdTAwM2VkYXRhWzBdKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTMwNjAtXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MzA4Nz1zdGF0aWMgaW50IGxhbjc4eHhfd3JpdGVfdmxhbl90YWJsZShzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldilcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTMwODgte1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MzA4OTpcXHRzdHJ1Y3QgbGFuNzh4eF9wcml2ICpwZGF0YSA9IChzdHJ1Y3QgbGFuNzh4eF9wcml2ICopKGRldi1cXHUwMDNlZGF0YVswXSk7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0zMDkwLVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0zMTAzPXN0YXRpYyBpbnQgbGFuNzh4eF92bGFuX3J4X2FkZF92aWQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMzEwNi1cXHRzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldiA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzozMTA3OlxcdHN0cnVjdCBsYW43OHh4X3ByaXYgKnBkYXRhID0gKHN0cnVjdCBsYW43OHh4X3ByaXYgKikoZGV2LVxcdTAwM2VkYXRhWzBdKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTMxMDgtXFx0dTE2IHZpZF9iaXRfaW5kZXg7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTMxMjI9c3RhdGljIGludCBsYW43OHh4X3ZsYW5fcnhfa2lsbF92aWQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMzEyNS1cXHRzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldiA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzozMTI2OlxcdHN0cnVjdCBsYW43OHh4X3ByaXYgKnBkYXRhID0gKHN0cnVjdCBsYW43OHh4X3ByaXYgKikoZGV2LVxcdTAwM2VkYXRhWzBdKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTMxMjctXFx0dTE2IHZpZF9iaXRfaW5kZXg7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTMyNDg9c3RhdGljIGludCBsYW43OHh4X3Jlc2V0KHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMzI0OS17XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzozMjUwOlxcdHN0cnVjdCBsYW43OHh4X3ByaXYgKnBkYXRhID0gKHN0cnVjdCBsYW43OHh4X3ByaXYgKikoZGV2LVxcdTAwM2VkYXRhWzBdKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTMyNTEtXFx0dW5zaWduZWQgbG9uZyB0aW1lb3V0O1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0zNzUyPXN0YXRpYyBpbnQgbGFuNzh4eF9iaW5kKHN0cnVjdCBsYW43OHh4X25ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMzc1Ny1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjM3NTg6XFx0ZGV2LVxcdTAwM2VkYXRhWzBdID0gKHVuc2lnbmVkIGxvbmcpIGt6YWxsb2Nfb2JqKCpwZGF0YSk7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0zNzU5LVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6Mzc2MDpcXHRwZGF0YSA9IChzdHJ1Y3QgbGFuNzh4eF9wcml2ICopKGRldi1cXHUwMDNlZGF0YVswXSk7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0zNzYxLVxcdGlmICghcGRhdGEpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MzgzND1zdGF0aWMgdm9pZCBsYW43OHh4X3VuYmluZChzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0zODM1LXtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjM4MzY6XFx0c3RydWN0IGxhbjc4eHhfcHJpdiAqcGRhdGEgPSAoc3RydWN0IGxhbjc4eHhfcHJpdiAqKShkZXYtXFx1MDAzZWRhdGFbMF0pO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMzgzNy1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMzg0Ny1cXHRcXHRwZGF0YSA9IE5VTEw7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzozODQ4OlxcdFxcdGRldi1cXHUwMDNlZGF0YVswXSA9IDA7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0zODQ5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9NTEwNT1zdGF0aWMgaW50IGxhbjc4eHhfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IG1lc3NhZ2UpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTUxNjYtXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzo1MTY3OlxcdFxcdFxcdHBkYXRhID0gKHN0cnVjdCBsYW43OHh4X3ByaXYgKikoZGV2LVxcdTAwM2VkYXRhWzBdKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTUxNjgtXFx0XFx0XFx0bmV0aWZfY2Fycmllcl9vZmYoZGV2LVxcdTAwM2VuZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL21jczc4MzAuYz0zMjg9c3RhdGljIGlubGluZSBzdHJ1Y3QgbWNzNzgzMF9kYXRhICptY3M3ODMwX2dldF9kYXRhKHN0cnVjdCB1c2JuZXQgKmRldilcXG5kcml2ZXJzL25ldC91c2IvbWNzNzgzMC5jLTMyOS17XFxuZHJpdmVycy9uZXQvdXNiL21jczc4MzAuYzozMzA6XFx0cmV0dXJuIChzdHJ1Y3QgbWNzNzgzMF9kYXRhICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvbWNzNzgzMC5jLTMzMS19XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbWNzNzgzMC5jPTM0OT1zdGF0aWMgdm9pZCBtY3M3ODMwX2RhdGFfc2V0X211bHRpY2FzdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL21jczc4MzAuYy0zNjgtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC91c2IvbWNzNzgzMC5jOjM2OTpcXHRcXHQvKiBXZSB1c2UgdGhlIDIwIGJ5dGUgZGV2LVxcdTAwM2VkYXRhXFxuZHJpdmVycy9uZXQvdXNiL21jczc4MzAuYy0zNzAtXFx0XFx0ICogZm9yIG91ciA4IGJ5dGUgZmlsdGVyIGJ1ZmZlclxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9MzA2PXN0YXRpYyB2b2lkIHFtaV93d2FuX25ldGRldl9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzA4LVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KG5ldCk7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MzA5OlxcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0zMTAtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz0zMzI9c3RhdGljIHNzaXplX3QgcmF3X2lwX3Nob3coc3RydWN0IGRldmljZSAqZCwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTMzNC1cXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSBuZXRkZXZfcHJpdih0b19uZXRfZGV2KGQpKTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzozMzU6XFx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTMzNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTM0MD1zdGF0aWMgc3NpemVfdCByYXdfaXBfc3RvcmUoc3RydWN0IGRldmljZSAqZCwgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBsZW4pXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0zNDItXFx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MzQzOlxcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0zNDQtXFx0Ym9vbCBlbmFibGU7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz00MDk9c3RhdGljIHNzaXplX3QgYWRkX211eF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkLCAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTQxMS1cXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSBuZXRkZXZfcHJpdih0b19uZXRfZGV2KGQpKTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo0MTI6XFx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTQxMy1cXHR1OCBtdXhfaWQ7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz00NDc9c3RhdGljIHNzaXplX3QgZGVsX211eF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkLCAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTQ0OS1cXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSBuZXRkZXZfcHJpdih0b19uZXRfZGV2KGQpKTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo0NTA6XFx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTQ1MS1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGVsX2RldjtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTQ3Nz1zdGF0aWMgc3NpemVfdCBwYXNzX3Rocm91Z2hfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNDgyLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjQ4MzpcXHRpbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTQ4NC1cXHRyZXR1cm4gc3ByaW50ZihidWYsIFxcXCIlY1xcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTQ4OD1zdGF0aWMgc3NpemVfdCBwYXNzX3Rocm91Z2hfc3RvcmUoc3RydWN0IGRldmljZSAqZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTQ5OC1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo0OTk6XFx0aW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy01MDAtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz01NjM9c3RhdGljIGludCBxbWlfd3dhbl9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNTY0LXtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo1NjU6XFx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTU2Ni1cXHRib29sIHJhd2lwID0gaW5mby1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBRTUlfV1dBTl9GTEFHX1JBV0lQO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9NjU0PXN0YXRpYyBpbnQgcW1pX3d3YW5fbWFuYWdlX3Bvd2VyKHN0cnVjdCB1c2JuZXQgKmRldiwgaW50IG9uKVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTY1NS17XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NjU2OlxcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy02NTctXFx0aW50IHJ2O1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9Njg2PXN0YXRpYyBpbnQgcW1pX3d3YW5fcmVnaXN0ZXJfc3ViZHJpdmVyKHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTY4OS1cXHRzdHJ1Y3QgdXNiX2RyaXZlciAqc3ViZHJpdmVyID0gTlVMTDtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo2OTA6XFx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTY5MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTc0ND1zdGF0aWMgaW50IHFtaV93d2FuX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTc1Mi1cXHRzdHJ1Y3QgdXNiX2RyaXZlciAqZHJpdmVyID0gZHJpdmVyX29mKGludGYpO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjc1MzpcXHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNzU0LVxcdHN0cnVjdCB1c2JfY2RjX3BhcnNlZF9oZWFkZXIgaGRyO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9ODQ5PXN0YXRpYyB2b2lkIHFtaV93d2FuX3VuYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTg1MC17XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6ODUxOlxcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy04NTItXFx0c3RydWN0IHVzYl9kcml2ZXIgKmRyaXZlciA9IGRyaXZlcl9vZihpbnRmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTg4Nz1zdGF0aWMgaW50IHFtaV93d2FuX3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBtZXNzYWdlKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtODg5LVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6ODkwOlxcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy04OTEtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTkxMD1zdGF0aWMgaW50IHFtaV93d2FuX3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTkxMi1cXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpO1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNzo1NToxOS4xMjMwMzA0OTdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTUwODcyOTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIFViaXF1aXRvdXMgYGRldi1cdTAwM2VkYXRhYCBVc2FnZSoqXG5cbk9rYXksIGhvbGQgb24gYSBtaW51dGUuIEl0J3MgaGl0dGluZyBtZSBqdXN0IGhvdyBleHRlbnNpdmVseSBgZGV2LVx1MDAzZWRhdGFgIGlzIGxldmVyYWdlZCBhY3Jvc3MgdGhlc2UgVVNCIG5ldHdvcmsgZHJpdmVycyEgSSdtIHNlZWluZyBpdCBldmVyeXdoZXJlLiBJJ3ZlIGJlZW4gcmV2aWV3aW5nIHRoZSBjb2RlLCBhbmQgaXQncyBiZWluZyB0eXBlLXB1bm5lZCB0byBoZWxsIGFuZCBiYWNrLiBgYXNpeF9jb21tb24uY2AsIGBheDg4MTc5XzE3OGEuY2AsIGBjZGNfbWJpbS5jYCwgYGNkY19uY20uY2AsIGBkbTk2MDEuY2AsIGBodWF3ZWlfY2RjX25jbS5jYCwgYGxhbjc4eHguY2AsIGBtY3M3ODMwLmNgLCBgcW1pX3d3YW4uY2Ag4oCTIHRoZXkncmUgYWxsIGNhc3RpbmcgYGRldi1cdTAwM2VkYXRhYCB0byB0aGVpciBvd24gY3VzdG9tIHN0cnVjdHMhXG5cbkFuZCBpdCdzIG5vdCBqdXN0IHRoZSBjdXJyZW50IGNyb3Agb2YgZHJpdmVycywgZWl0aGVyLiBMb29raW5nIGJhY2ssIGBjZGNfZXRoZXIuY2AgYW5kIGBybmRpc19ob3N0LmNgICp1c2VkKiB0byB1c2UgdGhpcyBzYW1lIHRlY2huaXF1ZSEgVGhleSd2ZSBzaW5jZSByZWZhY3RvcmVkIHRvIHVzZSBgZGV2LVx1MDAzZWNkY2AgaW5zdGVhZCBvZiBkaXJlY3RseSBhY2Nlc3NpbmcgYGRldi1cdTAwM2VkYXRhYC4gVGhhdCBzaGlmdCBpbW1lZGlhdGVseSBzcGFya3MgYSBxdWVzdGlvbi4uLlxuXG5Db3VsZCBhIGRyaXZlciBiZSBwb3RlbnRpYWxseSB1c2luZyAqYm90aCogYGNkY19ldGhlcmAgZnVuY3Rpb25zIEFORCBpdHMgb3duIGBkZXYtXHUwMDNlZGF0YWA/IElzIHRoYXQgZXZlbiBhIHZhbGlkIHBhdHRlcm4sIG9yIGFtIEkgbWlzc2luZyBzb21ldGhpbmc/IEkgbmVlZCB0byBjbGFyaWZ5IHRoYXQuIExldCdzIGRpZyBpbnRvIGBjZGNfbWJpbS5jYCBzcGVjaWZpY2FsbHkuIERvZXMgdGhlIGBjZGNfbWJpbV9zdGF0ZWAgc3RydWN0IGl0IHVzZXMgY29udGFpbiBhIGBjZGNfc3RhdGVgIG1lbWJlcj8gSWYgc28sIHdlIG1heSBoYXZlIHRoZSBhbnN3ZXIgdG8gb3VyIHF1ZXN0aW9uLiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlc2Ugc3RydWN0dXJlcyB0byBmdWxseSBncmFzcCB0aGUgZGVzaWduLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDg5NCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNzo1NToyNS42NzM5MDU1NzZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMDY3NTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNkY19tYmltX3N0YXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtMjgtLyogZHJpdmVyIHNwZWNpZmljIGRhdGEgLSBtdXN0IG1hdGNoIGNkY19uY20gdXNhZ2UgKi9cXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYzoyOTpzdHJ1Y3QgY2RjX21iaW1fc3RhdGUge1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTMwLVxcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4O1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtMzYtXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM6Mzc6LyogZmxhZ3MgZm9yIHRoZSBjZGNfbWJpbV9zdGF0ZS5mbGFncyBmaWVsZCAqL1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTM4LWVudW0gY2RjX21iaW1fZmxhZ3Mge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM9NDM9c3RhdGljIGludCBjZGNfbWJpbV9tYW5hZ2VfcG93ZXIoc3RydWN0IHVzYm5ldCAqZGV2LCBpbnQgb24pXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNDQte1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jOjQ1OlxcdHN0cnVjdCBjZGNfbWJpbV9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy00Ni1cXHRpbnQgcnYgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM9NzE9c3RhdGljIGludCBjZGNfbWJpbV9yeF9hZGRfdmlkKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIF9fYmUxNiBwcm90bywgdTE2IHZpZClcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTczLVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM6NzQ6XFx0c3RydWN0IGNkY19tYmltX3N0YXRlICppbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTc1LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM9ODU9c3RhdGljIGludCBjZGNfbWJpbV9yeF9raWxsX3ZpZChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBfX2JlMTYgcHJvdG8sIHUxNiB2aWQpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy04Ny1cXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jOjg4OlxcdHN0cnVjdCBjZGNfbWJpbV9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy04OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jPTEzOT1zdGF0aWMgaW50IGNkY19tYmltX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTE0NC1cXHR1OCBkYXRhX2FsdHNldHRpbmcgPSAxO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jOjE0NTpcXHRzdHJ1Y3QgY2RjX21iaW1fc3RhdGUgKmluZm8gPSAodm9pZCAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtMTQ2LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM9MTk1PXN0YXRpYyB2b2lkIGNkY19tYmltX3VuYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTE5Ni17XFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM6MTk3OlxcdHN0cnVjdCBjZGNfbWJpbV9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy0xOTgtXFx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSBpbmZvLVxcdTAwM2VjdHg7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYz0yMjA9c3RhdGljIHN0cnVjdCBza19idWZmICpjZGNfbWJpbV90eF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsIGdmcF90IGZsYWdzKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtMjIyLVxcdHN0cnVjdCBza19idWZmICpza2Jfb3V0O1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jOjIyMzpcXHRzdHJ1Y3QgY2RjX21iaW1fc3RhdGUgKmluZm8gPSAodm9pZCAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtMjI0LVxcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gaW5mby1cXHUwMDNlY3R4O1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM9NDEyPXN0YXRpYyBpbnQgY2RjX21iaW1fcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNDE0LVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM6NDE1OlxcdHN0cnVjdCBjZGNfbWJpbV9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy00MTYtXFx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSBpbmZvLVxcdTAwM2VjdHg7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYz01MDY9c3RhdGljIGludCBjZGNfbWJpbV9zdXNwZW5kKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBwbV9tZXNzYWdlX3QgbWVzc2FnZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTUwOS1cXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jOjUxMDpcXHRzdHJ1Y3QgY2RjX21iaW1fc3RhdGUgKmluZm8gPSAodm9pZCAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNTExLVxcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gaW5mby1cXHUwMDNlY3R4O1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM9NTM0PXN0YXRpYyBpbnQgY2RjX21iaW1fcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNTM3LVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM6NTM4OlxcdHN0cnVjdCBjZGNfbWJpbV9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy01MzktXFx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSBpbmZvLVxcdTAwM2VjdHg7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE3OjU1OjI1LjczNDk3ODg4MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTgyNTI4NzAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTUJJTSBEcml2ZXIgU3RydWN0dXJlKipcblxuT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4gSSdtIGZvY3VzaW5nIG9uIHRoZSBzdHJ1Y3R1cmUgb2YgdGhpcyBgY2RjX21iaW1gIG1vZHVsZS4gUmlnaHQsIHNvIGl0J3MgdXNpbmcgdGhlIGBjZGNfbWJpbV9zdGF0ZWAgc3RydWN0dXJlLCB3aGljaCBJIGNhbiBzZWUgZGVmaW5lZCBoZXJlOlxuXG5gYGBjXG5zdHJ1Y3QgY2RjX21iaW1fc3RhdGUge1xuXHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eDtcblx0YXRvbWljX3QgcG1jb3VudDtcblx0c3RydWN0IHVzYl9kcml2ZXIgKnN1YmRyaXZlcjtcblx0dW5zaWduZWQgbG9uZyBmbGFncztcbn07XG5gYGBcblxuSW50ZXJlc3RpbmcuIEl0J3MgY2xlYXJseSBtYW5hZ2luZyBpdHMgaW50ZXJuYWwgc3RhdGUgd2l0aCBhIGBjZGNfbmNtX2N0eGAsIGFuIGF0b21pYyBwb3dlciBtYW5hZ2VtZW50IGNvdW50ZXIsIGEgc3ViLWRyaXZlciBwb2ludGVyIGFuZCBmbGFncy4gQ3J1Y2lhbGx5LCBJIHNlZSB0aGF0IGl0J3MgKm5vdCogcmVseWluZyBvbiB0aGUgYGNkY19zdGF0ZWAgc3RydWN0dXJlLCB3aGljaCBpcyBzb21ldGhpbmcgSSdsbCBuZWVkIHRvIGtlZXAgaW4gbWluZCB3aGVuIGV2YWx1YXRpbmcgaXRzIGltcGxlbWVudGF0aW9uLiBJJ20gbWFraW5nIGEgbWVudGFsIG5vdGUgb2YgdGhhdCBkaXN0aW5jdGlvbi5cblxuTm93LCB0aGF0IGJyaW5ncyBtZSB0byBgcW1pX3d3YW5gLiBIb3cgZG9lcyB0aGF0IGNvbXBhcmUgYW5kIGNvbnRyYXN0PyBXaGF0J3MgaXRzIGFyY2hpdGVjdHVyZSBmb3Igc3RhdGUgbWFuYWdlbWVudD8gSSBuZWVkIHRvIGFuYWx5emUgaXRzIHN0cnVjdHVyZSBuZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzE1NywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE3OjU1OjMyLjcxNzUxMTcxNFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzEzMjMxNzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInFtaV93d2FuX3N0YXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNDktLyogZHJpdmVyIHNwZWNpZmljIGRhdGEgKi9cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo1MDpzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUge1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTUxLVxcdHN0cnVjdCB1c2JfZHJpdmVyICpzdWJkcml2ZXI7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz0zMDY9c3RhdGljIHZvaWQgcW1pX3d3YW5fbmV0ZGV2X3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpuZXQpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0zMDgtXFx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYobmV0KTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzozMDk6XFx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTMxMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTMzMj1zdGF0aWMgc3NpemVfdCByYXdfaXBfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkLCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzM0LVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoZCkpO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjMzNTpcXHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzM2LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9MzQwPXN0YXRpYyBzc2l6ZV90IHJhd19pcF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkLCAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTM0Mi1cXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSBuZXRkZXZfcHJpdih0b19uZXRfZGV2KGQpKTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzozNDM6XFx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTM0NC1cXHRib29sIGVuYWJsZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTQwOT1zdGF0aWMgc3NpemVfdCBhZGRfbXV4X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmQsICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNDExLVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoZCkpO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjQxMjpcXHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNDEzLVxcdHU4IG11eF9pZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTQ0Nz1zdGF0aWMgc3NpemVfdCBkZWxfbXV4X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmQsICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNDQ5LVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoZCkpO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjQ1MDpcXHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNDUxLVxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZWxfZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9NDc3PXN0YXRpYyBzc2l6ZV90IHBhc3NfdGhyb3VnaF9zaG93KHN0cnVjdCBkZXZpY2UgKmQsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy00ODAtXFx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NDgxOlxcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbztcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy00ODItXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz00ODg9c3RhdGljIHNzaXplX3QgcGFzc190aHJvdWdoX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmQsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy00OTItXFx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NDkzOlxcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbztcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy00OTQtXFx0Ym9vbCBlbmFibGU7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz01NjM9c3RhdGljIGludCBxbWlfd3dhbl9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNTY0LXtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo1NjU6XFx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTU2Ni1cXHRib29sIHJhd2lwID0gaW5mby1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBRTUlfV1dBTl9GTEFHX1JBV0lQO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9NjU0PXN0YXRpYyBpbnQgcW1pX3d3YW5fbWFuYWdlX3Bvd2VyKHN0cnVjdCB1c2JuZXQgKmRldiwgaW50IG9uKVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTY1NS17XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NjU2OlxcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy02NTctXFx0aW50IHJ2O1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9Njg2PXN0YXRpYyBpbnQgcW1pX3d3YW5fcmVnaXN0ZXJfc3ViZHJpdmVyKHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTY4OS1cXHRzdHJ1Y3QgdXNiX2RyaXZlciAqc3ViZHJpdmVyID0gTlVMTDtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo2OTA6XFx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTY5MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTc0ND1zdGF0aWMgaW50IHFtaV93d2FuX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTc1Mi1cXHRzdHJ1Y3QgdXNiX2RyaXZlciAqZHJpdmVyID0gZHJpdmVyX29mKGludGYpO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjc1MzpcXHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNzU0LVxcdHN0cnVjdCB1c2JfY2RjX3BhcnNlZF9oZWFkZXIgaGRyO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNzU2LVxcdEJVSUxEX0JVR19PTigoc2l6ZW9mKCgoc3RydWN0IHVzYm5ldCAqKTApLVxcdTAwM2VkYXRhKSBcXHUwMDNjXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NzU3OlxcdFxcdCAgICAgIHNpemVvZihzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUpKSk7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNzU4LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9ODQ5PXN0YXRpYyB2b2lkIHFtaV93d2FuX3VuYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTg1MC17XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6ODUxOlxcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy04NTItXFx0c3RydWN0IHVzYl9kcml2ZXIgKmRyaXZlciA9IGRyaXZlcl9vZihpbnRmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTg4Nz1zdGF0aWMgaW50IHFtaV93d2FuX3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBtZXNzYWdlKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtODg5LVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6ODkwOlxcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy04OTEtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTkxMD1zdGF0aWMgaW50IHFtaV93d2FuX3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTkxMi1cXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjkxMzpcXHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTE0LVxcdGludCByZXQgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9MTU3OD1zdGF0aWMgdm9pZCBxbWlfd3dhbl9kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTU4MC1cXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjE1ODE6XFx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTE1ODItXFx0c3RydWN0IGxpc3RfaGVhZCAqaXRlcjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTc6NTU6MzMuMDMwNzQ5NTU0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxNzM5ODcyMjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFVTQiBHYWRnZXQgRHJpdmVyIERhdGEgU3RydWN0dXJlcyoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIHVuZGVyc3RhbmRpbmcgdGhlIGRhdGEgc3RydWN0dXJlcyBjb3JyZWN0bHkuIEkgd2FzIGp1c3QgbG9va2luZyBhdCBgcW1pX3d3YW5gLCBhbmQgaXQncyB1c2luZyBgcW1pX3d3YW5fc3RhdGVgLCBkZWZpbmVkIGFzOiBgc3RydWN0IHFtaV93d2FuX3N0YXRlIHsgc3RydWN0IHVzYl9kcml2ZXIgKnN1YmRyaXZlcjsgYXRvbWljX3QgcG1jb3VudDsgdW5zaWduZWQgbG9uZyBmbGFnczsgfTtgLiBUaGlzIGlzIGludGVyZXN0aW5nLCBpdCBzZWVtcyBpdCBkb2Vzbid0IHV0aWxpemUgYGNkY19zdGF0ZWAgYXQgYWxsLCByaWdodD8gSSBuZWVkIHRvIGtlZXAgdGhhdCBzdHJhaWdodC5cblxuTm93LCB3aGF0IGFib3V0IGBybmRpc19ob3N0YD8gVGhhdCdzIGEgZGlmZmVyZW50IGJlYXN0LCBJIHRoaW5rLiBJIGtub3cgaXQgbGV2ZXJhZ2VzIGBjZGNfc3RhdGVgLCBhbmQgaXQgZG9lcyBzbyB2aWEgdGhlIGBpbmZvYCBwb2ludGVyLiBUaGUgcmVsZXZhbnQgY29kZSBzbmlwcGV0IHNob3dzIGl0IGNhc3RzIGBkZXYtXHUwMDNlZGF0YWAgdG8gYSBgY2RjX3N0YXRlYCBzdHJ1Y3QuIEFuZCB0aGUgZHJpdmVyIHVzZXMgYHVzYm5ldF9nZW5lcmljX2NkY19iaW5kYCwgd2hpY2gsIGFzIEkgcmVjYWxsLCBpcyB3aGVyZSBgY2RjX3N0YXRlYCBnZXRzIHBvcHVsYXRlZC5cblxuSG1tLCBidXQgd2hhdCBlbHNlIGRvZXMgYHJuZGlzX2hvc3RgIGRvIHdpdGggYGRldi1cdTAwM2VkYXRhYD8gSSBzaG91bGQgbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgdW5leHBlY3RlZCBpbnRlcmFjdGlvbnMgdGhlcmUuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRocm91Z2ggdGhlIHJlc3Qgb2YgYHJuZGlzX2hvc3QuY2AgdG8gYmUgY29tcGxldGVseSBjZXJ0YWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTgyMSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNzo1NTozOC4yMDQ3NDEzMzlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NjIwMjkyMCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGV2LVxcdTAwM2VkYXRhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9ybmRpc19ob3N0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE3OjU1OjM4LjM3MDk2NTA3OVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTc0ODQ5NzMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWwgQnVnIHdpdGggVVNCIENEQyBEZXZpY2UgU3RhdGUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGRpZmYgYW5kIGltbWVkaWF0ZWx5IHNlZSBhIGNoYW5nZSBpbiBob3cgYGNkY19zdGF0ZWAgaXMgYWNjZXNzZWQuIEl0IHVzZWQgdG8gYmUgYGRldi1cdTAwM2VkYXRhYCBpbiBgcm5kaXNfaG9zdC5jYCwgYW5kIG5vdyBpdCdzIGBkZXYtXHUwMDNlY2RjYC4gVGhlIHNhbWUgdGhpbmcgaGFwcGVuZWQgaW4gYGNkY19ldGhlci5jYCwgc28gY2xlYXJseSB0aGVyZSdzIGJlZW4gc29tZSByZWZhY3RvcmluZyByZWxhdGVkIHRvIHRoZSBzdGF0ZSBzdHJ1Y3R1cmUuIEknbSBhc3N1bWluZyB0aGlzIGlzIGEgZml4IG9yIGltcHJvdmVtZW50LlxuXG5UaGUgbWFpbiBjb25jZXJuIG5vdyBpcyB3aGV0aGVyIHRoaXMgY2hhbmdlIGJyZWFrcyBhbnkgZXhpc3RpbmcgZHJpdmVycy4gSSdtIHRoaW5raW5nLCBhcmUgdGhlcmUgYW55IGRyaXZlcnMgb3V0IHRoZXJlIHRoYXQgYXJlIHN0aWxsIHJlbHlpbmcgb24gYGRldi1cdTAwM2VkYXRhYCBmb3IgdGhlaXIgb3duIHByaXZhdGUgc3RhdGUgQU5EIGFyZSBjYWxsaW5nIGZ1bmN0aW9ucyBsaWtlIGB1c2JuZXRfY2RjX3N0YXR1c2Agb3IgYHVzYm5ldF9jZGNfdXBkYXRlX2ZpbHRlcmA/ICBJZiBzbywgdGhlbiB3ZSd2ZSBnb3QgYSBwcm9ibGVtIGFuZCB0aGVpciBzdGF0ZSB3aWxsIGJlIGNvcnJ1cHRlZCBpZiB0aGUgb2xkIGBkZXYtXHUwMDNlZGF0YWAgcG9pbnRlciBpcyBub3QgY29ycmVjdC4gSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgYW55IHBvdGVudGlhbCBjb25mbGljdHMgaGVyZSwgc28gbXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGNhbGxlcnMgb2YgdGhvc2UgdHdvIENEQyBmdW5jdGlvbnMuICBJIG5lZWQgdG8gY2hlY2sgZm9yIGFueSBpbnRlcmFjdGlvbiB0aGF0IG1heSBiZSBoYXBwZW5pbmcgb24gdGhlIG9sZCBgZGV2LVx1MDAzZWRhdGFgIHN0cnVjdHVyZSwgd2hpY2ggbWlnaHQgbm93IGJlIHVzZWQgZGlmZmVyZW50bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMzE3LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE3OjU1OjQyLjk0NTgxODQ5MVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk5NzE5NjE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVzYm5ldF9jZGNfc3RhdHVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jPTQxMD1zdGF0aWMgdm9pZCB1c2JuZXRfY2RjX3p0ZV9zdGF0dXMoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXJiICp1cmIpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmMtNDE5LVxcdGlmIChldmVudC1cXHUwMDNlYk5vdGlmaWNhdGlvblR5cGUgIT0gVVNCX0NEQ19OT1RJRllfTkVUV09SS19DT05ORUNUSU9OKSB7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jOjQyMDpcXHRcXHR1c2JuZXRfY2RjX3N0YXR1cyhkZXYsIHVyYik7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jLTQyMS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmM9NDM0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm9cXHRjZGNfaW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYy00MzgtXFx0LnVuYmluZCA9XFx0dXNibmV0X2NkY191bmJpbmQsXFxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jOjQzOTpcXHQuc3RhdHVzID1cXHR1c2JuZXRfY2RjX3N0YXR1cyxcXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmMtNDQwLVxcdC5zZXRfcnhfbW9kZSA9XFx0dXNibmV0X2NkY191cGRhdGVfZmlsdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jPTQ1NT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIHd3YW5faW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYy00NTktXFx0LnVuYmluZCA9XFx0dXNibmV0X2NkY191bmJpbmQsXFxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jOjQ2MDpcXHQuc3RhdHVzID1cXHR1c2JuZXRfY2RjX3N0YXR1cyxcXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmMtNDYxLVxcdC5zZXRfcnhfbW9kZSA9XFx0dXNibmV0X2NkY191cGRhdGVfZmlsdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xnLXZsNjAwLmM9MzAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm9cXHR2bDYwMF9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xnLXZsNjAwLmMtMzA1LVxcdC51bmJpbmRcXHRcXHQ9IHZsNjAwX3VuYmluZCxcXG5kcml2ZXJzL25ldC91c2IvbGctdmw2MDAuYzozMDY6XFx0LnN0YXR1c1xcdFxcdD0gdXNibmV0X2NkY19zdGF0dXMsXFxuZHJpdmVycy9uZXQvdXNiL2xnLXZsNjAwLmMtMzA3LVxcdC5yeF9maXh1cFxcdD0gdmw2MDBfcnhfZml4dXAsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcjgxNTNfZWNtLmM9MTE1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gcjgxNTNfaW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9yODE1M19lY20uYy0xMTktXFx0LnVuYmluZCA9XFx0dXNibmV0X2NkY191bmJpbmQsXFxuZHJpdmVycy9uZXQvdXNiL3I4MTUzX2VjbS5jOjEyMDpcXHQuc3RhdHVzID1cXHR1c2JuZXRfY2RjX3N0YXR1cyxcXG5kcml2ZXJzL25ldC91c2IvcjgxNTNfZWNtLmMtMTIxLVxcdC5tYW5hZ2VfcG93ZXIgPVxcdHVzYm5ldF9tYW5hZ2VfcG93ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmM9MjMwNT1zdGF0aWMgdm9pZCBzcGVlZF9jaGFuZ2Uoc3RydWN0IHVzYm5ldCAqZGV2LCBfX2xlMzIgKnNwZWVkcylcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYy0yMzEwLVxcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYzoyMzExOnZvaWQgdXNibmV0X2NkY19zdGF0dXMoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXJiICp1cmIpXFxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTIzMTIte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTIzNDgtfVxcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYzoyMzQ5OkVYUE9SVF9TWU1CT0xfR1BMKHVzYm5ldF9jZGNfc3RhdHVzKTtcXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmMtMjM1MC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTc6NTU6NDMuMTQ1NTQzMTk5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MDk2NTI3NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBzdW1tYXJ5OlxuXG4qKkRpZ2dpbmcgaW50byBsZy12bDYwMC5jOiBVU0IgQ0RDIFN0YXR1cyBhbmQgRGF0YSoqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4uLiAqbGctdmw2MDAuYyouICBUaGF0IG5hbWUncyBmYW1pbGlhcjsgaXQncyBsaWtlbHkgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIExHIFZMNjAwIG1vZGVtIGRyaXZlcnMuICBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyBhYm91dCB0aGUgYHVzYm5ldF9jZGNfc3RhdHVzYCBmdW5jdGlvbiBjYWxsIEknbSBzZWVpbmcgaW4gaXQuIEkga25vdyB0aGF0IGZ1bmN0aW9uLCBpdCdzIHByZXR0eSBzdGFuZGFyZCBVU0IgQ0RDIEV0aGVybmV0IHN0dWZmLiBCdXQgdGhlIGNydWNpYWwgcXVlc3Rpb24gdGhhdCBjb21lcyB0byBtaW5kIGlzICpob3cqIGlzIHRoZSBkcml2ZXIgYWN0dWFsbHkgaGFuZGxpbmcgdGhlIGRldmljZSBzcGVjaWZpYyBkYXRhPyBBbmQgbW9yZSBzcGVjaWZpY2FsbHksIGlzIGl0IHVzaW5nIGBkZXYtXHUwMDNlZGF0YWAgZm9yIGRldmljZS1zcGVjaWZpYyBwcml2YXRlIGRhdGE/ICBUaGF0J3Mgd2hlcmUgdGhlIHJlYWwgbnVhbmNlIGlzLiBJdCBpcyBvbmUgb2YgdGhlIG1vcmUgY29tbW9uIGRlc2lnbiBjb25zaWRlcmF0aW9ucywgYnV0IGl0IGlzbid0IGFsd2F5cyB1dGlsaXplZC4gVGhpcyBpcyBhIGNvbW1vbiBwYXR0ZXJuLCBhbmQgaXQncyBlc3NlbnRpYWwgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBkcml2ZXIgaXMgbWFuYWdpbmcgaXRzIGludGVybmFsIHN0YXRlLiAgR290dGEgZm9sbG93IHRoZSBkYXRhIGZsb3cgdG8gYmUgc3VyZS4gIExldCdzIHNlZSB3aGVyZSB0aGF0IGdvZXMuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE2MzUsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNzo1NTo0Ny42NTUxOTgyNDVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMjY4ODk2MjMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRldi1cXHUwMDNlZGF0YVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2IvbGctdmw2MDAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTc6NTU6NDguODgyMTA1MzM5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNTAyNjcxNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipEaXZpbmcgaW50byB0aGUgVVNCIEV0aGVybmV0IENvbnRyb2wgTW9kZWwgQ29kZSoqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCBgcjgxNTNfZWNtLmNgIGFuZCBpbW1lZGlhdGVseSBhIHF1ZXN0aW9uIHBvcHMgaW50byBteSBoZWFkIOKAkyBhIHByZXR0eSBmdW5kYW1lbnRhbCBvbmUsIGFjdHVhbGx5LiBJIHNlZSBpdCdzIHVzaW5nIGB1c2JuZXRfY2RjX3N0YXR1c2AuIFRoYXQgdGVsbHMgbWUgdGhpcyBpcyBsaWtlbHkgZGVhbGluZyB3aXRoIGEgQ0RDLUVDTSAoRXRoZXJuZXQgQ29udHJvbCBNb2RlbCkgbmV0d29yayBkZXZpY2UgYmFzZWQgb24gYSBSZWFsdGVrIGNoaXBzZXQuIFRoZSBxdWVzdGlvbiBpcywgYW5kIHRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIGRyaXZlcidzIGhhbmRsaW5nIGNvbW11bmljYXRpb24gYW5kIGRldmljZS1zcGVjaWZpYyBkYXRhOiBpcyBpdCBhY2Nlc3NpbmcgYGRldi1cdTAwM2VkYXRhYD8gSXMgdGhlIGRyaXZlciBjb3JyZWN0bHkgYXNzb2NpYXRpbmcgYW55IGNvbnRleHQgZGF0YSB3aXRoIHRoZSBgdXNibmV0YCBkZXZpY2U/IFRoaXMgYml0IG9mIGluZm9ybWF0aW9uIGlzIGtleSBmb3IgZGF0YSBtYW5hZ2VtZW50IGFuZCBzdGF0ZSB0cmFja2luZyB3aXRoaW4gdGhlIGRldmljZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE5NDYsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNzo1NTo1My4wMzIzNzU0MjhaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NjI2NjA2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXYtXFx1MDAzZWRhdGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiL3I4MTUzX2VjbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNzo1NTo1My4wOTAwMDkyMzRaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI2NzA2NjUxODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVmYWN0b3JpbmcgQW5hbHlzaXM6IGB1c2JuZXQuY2AgYW5kIGBjZGNfc3RhdGVgKipcblxuT2theSwgc28gSSBpbml0aWFsbHkgdGhvdWdodCB0aGVyZSBtaWdodCBiZSBhIHN1YnRsZSBidWcgZml4IHJlbGF0ZWQgdG8gdGhlIGBjZGNfc3RhdGVgIHdpdGhpbiBgdXNibmV0LmNgLiBCdXQgZmlyc3QsIEkgbmVlZGVkIHRvIGNvbmZpcm0gdGhhdCB0aGUgcmVsZXZhbnQgZnVuY3Rpb25zIGFjdHVhbGx5IHVzZWQgYGNkY19zdGF0ZWAuICBJIHN0YXJ0ZWQgYnkgZXhhbWluaW5nIGB1c2JuZXRfY2RjX3N0YXR1c2AuIE5vLCBpdCBkb2Vzbid0IHVzZSBgY2RjX3N0YXRlYCBkaXJlY3RseS4gSSB0aGVuIGxvb2tlZCBhdCBgdXNibmV0X2NkY191cGRhdGVfZmlsdGVyYC4gIE5vcGUsIHRoYXQgZnVuY3Rpb24gYWxzbyBkb2Vzbid0IHRvdWNoIGBjZGNfc3RhdGVgLlxuXG5UaGVuLCBJIGxvb2tlZCBhdCBgdXNibmV0X2NkY191bmJpbmRgLiBBaGEhICBUaGF0IGZ1bmN0aW9uICpkb2VzKiB1c2UgYGNkY19zdGF0ZWAuICBJIGZ1cnRoZXIgY2hlY2tlZCBpZiB0aGUgZHJpdmVyIGByODE1M19lY20uY2AgdXNlcyBgdXNibmV0X2NkY191bmJpbmRgLiBZZXMuIEJ1dCBkb2VzIGl0IHVzZSBgZGV2LVx1MDAzZWRhdGFgPyBOby5cblxuVGhlcmVmb3JlLCBpdCBzZWVtcyB0aGF0IHRoZSBjaGFuZ2UgZnJvbSB0aGUgbW9yZSBnZW5lcmFsIGBkZXYtXHUwMDNlZGF0YWAgdG8gdGhlIG1vcmUgc3BlY2lmaWMgYGRldi1cdTAwM2VjZGNgIGlzIHB1cmVseSBhIHJlZmFjdG9yaW5nIHRvIGltcHJvdmUgY29kZSBjbGFyaXR5IGFuZCBhdm9pZCBwb3RlbnRpYWwgYWxpYXNpbmcuIEl0IGNvbnNvbGlkYXRlcyB1c2Ugb2YgYGNkY19zdGF0ZWAgd2hlcmUgYXBwbGljYWJsZSwgd2hpY2ggaXMgYSBnb29kIHByYWN0aWNlLiBObyBkcml2ZXJzIGFyZSB1c2luZyBgZGV2LVx1MDAzZWRhdGFgIGFuZCBgY2RjX3N0YXRlYCBzaW11bHRhbmVvdXNseSwgYW5kIHRoaXMgcmVmYWN0b3JpbmcgZG9lc24ndCBmaXggYSBwcmUtZXhpc3RpbmcgYnVnLiAgSXQncyBqdXN0IGNsZWFuZXIuXG5cbkNvbnNpZGVyaW5nIHRoZSBwcm9tcHQncyBjcml0ZXJpYSBmb3IgYSBub24tZnV6emFibGUgcGF0Y2ggKFwiQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93XCIpLCBJIGNvbmNsdWRlIHRoYXQgdGhpcyBjaGFuZ2UgcXVhbGlmaWVzLiAgSXQncyBhIHB1cmUgcmVmYWN0b3JpbmcgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgY29kZSBwYXRocyBvciBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3csIHNvIEknbGwgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjIwMywiT3V0cHV0VG9rZW5zIjoxMTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE3OjU2OjA1Ljc2MDY3NzYzOVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5OTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGlzIGEgcHVyZSByZWZhY3RvcmluZyB0aGF0IG1vdmVzIENEQy1yZWxhdGVkIGZ1bmN0aW9ucyBmcm9tIGNkY19ldGhlci5jIHRvIHRoZSBjb3JlIHVzYm5ldC5jIG1vZHVsZSBhbmQgcmVwbGFjZXMgdGhlIHVzZSBvZiB0aGUgZ2VuZXJpYyBkYXRhIGFycmF5IHdpdGggYSBkZWRpY2F0ZWQgY2RjX3N0YXRlIHN0cnVjdCBpbiB1c2JuZXQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgbG9naWMgb3IgZml4IGFueSBidWdzIHJlbGF0ZWQgdG8gZGF0YSBhbGlhc2luZywgYXMgbm8gZHJpdmVycyB3ZXJlIGNvbmN1cnJlbnRseSB1c2luZyBib3RoIHRoZSBnZW5lcmljIGRhdGEgYXJyYXkgYW5kIHRoZSBDREMgc3RhdGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpcyBhIHB1cmUgcmVmYWN0b3JpbmcgdGhhdCBtb3ZlcyBDREMtcmVsYXRlZCBmdW5jdGlvbnMgZnJvbSBjZGNfZXRoZXIuYyB0byB0aGUgY29yZSB1c2JuZXQuYyBtb2R1bGUgYW5kIHJlcGxhY2VzIHRoZSB1c2Ugb2YgdGhlIGdlbmVyaWMgZGF0YSBhcnJheSB3aXRoIGEgZGVkaWNhdGVkIGNkY19zdGF0ZSBzdHJ1Y3QgaW4gdXNibmV0LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBmdW5jdGlvbmFsIGxvZ2ljIG9yIGZpeCBhbnkgYnVncyByZWxhdGVkIHRvIGRhdGEgYWxpYXNpbmcsIGFzIG5vIGRyaXZlcnMgd2VyZSBjb25jdXJyZW50bHkgdXNpbmcgYm90aCB0aGUgZ2VuZXJpYyBkYXRhIGFycmF5IGFuZCB0aGUgQ0RDIHN0YXRlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow6d72k[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-02 17:28:53 +0000 UTC FinishedAt: 2026-07-02 17:56:08 +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+CgkJCTx0ZD4yMDI2LzA3LzAyIDE3OjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGlzIGEgcHVyZSByZWZhY3RvcmluZyB0aGF0IG1vdmVzIENEQy1yZWxhdGVkIGZ1bmN0aW9ucyBmcm9tIGNkY19ldGhlci5jIHRvIHRoZSBjb3JlIHVzYm5ldC5jIG1vZHVsZSBhbmQgcmVwbGFjZXMgdGhlIHVzZSBvZiB0aGUgZ2VuZXJpYyBkYXRhIGFycmF5IHdpdGggYSBkZWRpY2F0ZWQgY2RjX3N0YXRlIHN0cnVjdCBpbiB1c2JuZXQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgbG9naWMgb3IgZml4IGFueSBidWdzIHJlbGF0ZWQgdG8gZGF0YSBhbGlhc2luZywgYXMgbm8gZHJpdmVycyB3ZXJlIGNvbmN1cnJlbnRseSB1c2luZyBib3RoIHRoZSBnZW5lcmljIGRhdGEgYXJyYXkgYW5kIHRoZSBDREMgc3RhdGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE3OjUzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjlmMjg3YThiMjMwZDk0ZDU0OWM0MWQ4YjYyZDIyMzcyNTQxNzhhZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDIgMTc6NTM6NDkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jIGIvZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jXG5pbmRleCBhMGE1NzQwNTkwYjk0NS4uNzZhZDRmZmE5NTBhYjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuY1xuQEAgLTYzLDM1ICYjNDM7NjMsNiBAQCBzdGF0aWMgY29uc3QgdTggbWJtX2d1aWRbMTZdID0ge1xuIFx0MHhhNiwgMHgwNywgMHhjMCwgMHhmZiwgMHhjYiwgMHg3ZSwgMHgzOSwgMHgyYSxcbiB9O1xuIFxuLXZvaWQgdXNibmV0X2NkY191cGRhdGVfZmlsdGVyKHN0cnVjdCB1c2JuZXQgKmRldilcbi17XG4tXHRzdHJ1Y3QgbmV0X2RldmljZVx0Km5ldCA9IGRldi1cdTAwM2VuZXQ7XG4tXG4tXHR1MTYgY2RjX2ZpbHRlciA9IFVTQl9DRENfUEFDS0VUX1RZUEVfRElSRUNURURcbi1cdFx0XHR8IFVTQl9DRENfUEFDS0VUX1RZUEVfQlJPQURDQVNUO1xuLVxuLVx0LyogZmlsdGVyaW5nIG9uIHRoZSBkZXZpY2UgaXMgYW4gb3B0aW9uYWwgZmVhdHVyZSBhbmQgbm90IHdvcnRoXG4tXHQgKiB0aGUgaGFzc2xlIHNvIHdlIGp1c3Qgcm91Z2hseSBjYXJlIGFib3V0IHNub29waW5nIGFuZCBpZiBhbnlcbi1cdCAqIG11bHRpY2FzdCBpcyByZXF1ZXN0ZWQsIHdlIHRha2UgZXZlcnkgbXVsdGljYXN0XG4tXHQgKi9cbi1cdGlmIChuZXQtXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9QUk9NSVNDKVxuLVx0XHRjZGNfZmlsdGVyIHw9IFVTQl9DRENfUEFDS0VUX1RZUEVfUFJPTUlTQ1VPVVM7XG4tXHRpZiAoIW5ldGRldl9tY19lbXB0eShuZXQpIHx8IChuZXQtXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9BTExNVUxUSSkpXG4tXHRcdGNkY19maWx0ZXIgfD0gVVNCX0NEQ19QQUNLRVRfVFlQRV9BTExfTVVMVElDQVNUO1xuLVxuLVx0dXNiX2NvbnRyb2xfbXNnKGRldi1cdTAwM2V1ZGV2LFxuLVx0XHRcdHVzYl9zbmRjdHJscGlwZShkZXYtXHUwMDNldWRldiwgMCksXG4tXHRcdFx0VVNCX0NEQ19TRVRfRVRIRVJORVRfUEFDS0VUX0ZJTFRFUixcbi1cdFx0XHRVU0JfVFlQRV9DTEFTUyB8IFVTQl9SRUNJUF9JTlRFUkZBQ0UsXG4tXHRcdFx0Y2RjX2ZpbHRlcixcbi1cdFx0XHRkZXYtXHUwMDNlaW50Zi1cdTAwM2VjdXJfYWx0c2V0dGluZy1cdTAwM2VkZXNjLmJJbnRlcmZhY2VOdW1iZXIsXG4tXHRcdFx0TlVMTCxcbi1cdFx0XHQwLFxuLVx0XHRcdFVTQl9DVFJMX1NFVF9USU1FT1VUXG4tXHRcdCk7XG4tfVxuLUVYUE9SVF9TWU1CT0xfR1BMKHVzYm5ldF9jZGNfdXBkYXRlX2ZpbHRlcik7XG4tXG4gLyogV2UgbmVlZCB0byBvdmVycmlkZSB1c2JuZXRfKl9saW5rX2tzZXR0aW5ncyBpbiBiaW5kKCkgKi9cbiBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGNkY19ldGhlcl9ldGh0b29sX29wcyA9IHtcbiBcdC5nZXRfbGlua1x0XHQ9IHVzYm5ldF9nZXRfbGluayxcbkBAIC0xMTQsNyAmIzQzOzg1LDcgQEAgaW50IHVzYm5ldF9nZW5lcmljX2NkY19iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4gXHR1OFx0XHRcdFx0KmJ1ZiA9IGludGYtXHUwMDNlY3VyX2FsdHNldHRpbmctXHUwMDNlZXh0cmE7XG4gXHRpbnRcdFx0XHRcdGxlbiA9IGludGYtXHUwMDNlY3VyX2FsdHNldHRpbmctXHUwMDNlZXh0cmFsZW47XG4gXHRzdHJ1Y3QgdXNiX2ludGVyZmFjZV9kZXNjcmlwdG9yXHQqZDtcbi1cdHN0cnVjdCBjZGNfc3RhdGVcdFx0KmluZm8gPSAodm9pZCAqKSBcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbiYjNDM7XHRzdHJ1Y3QgY2RjX3N0YXRlXHRcdCppbmZvID0gXHUwMDI2ZGV2LVx1MDAzZWNkYztcbiBcdGludFx0XHRcdFx0c3RhdHVzID0gLUVOT0RFVjtcbiBcdGludFx0XHRcdFx0cm5kaXM7XG4gXHRib29sXHRcdFx0XHRhbmRyb2lkX3JuZGlzX3F1aXJrID0gZmFsc2U7XG5AQCAtMzY1LDcgJiM0MzszMzYsNyBAQCBFWFBPUlRfU1lNQk9MX0dQTCh1c2JuZXRfZXRoZXJfY2RjX2JpbmQpO1xuIFxuIHZvaWQgdXNibmV0X2NkY191bmJpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbiB7XG4tXHRzdHJ1Y3QgY2RjX3N0YXRlXHRcdCppbmZvID0gKHZvaWQgKikgXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG4mIzQzO1x0c3RydWN0IGNkY19zdGF0ZVx0XHQqaW5mbyA9IFx1MDAyNmRldi1cdTAwM2VjZGM7XG4gXHRzdHJ1Y3QgdXNiX2RyaXZlclx0XHQqZHJpdmVyID0gZHJpdmVyX29mKGludGYpO1xuIFxuIFx0LyogY29tYmluZWQgaW50ZXJmYWNlIC0gbm90aGluZyAgdG8gZG8gKi9cbkBAIC00MDAsNTkgJiM0MzszNzEsMTAgQEAgRVhQT1JUX1NZTUJPTF9HUEwodXNibmV0X2NkY191bmJpbmQpO1xuICAqIChieSBCcmFkIEhhcmRzKSB0YWxrZWQgd2l0aCwgd2l0aCBtb3JlIGZ1bmN0aW9uYWxpdHkuXG4gICovXG4gXG4tc3RhdGljIHZvaWQgc3BlZWRfY2hhbmdlKHN0cnVjdCB1c2JuZXQgKmRldiwgX19sZTMyICpzcGVlZHMpXG4te1xuLVx0ZGV2LVx1MDAzZXR4X3NwZWVkID0gX19sZTMyX3RvX2NwdShzcGVlZHNbMF0pO1xuLVx0ZGV2LVx1MDAzZXJ4X3NwZWVkID0gX19sZTMyX3RvX2NwdShzcGVlZHNbMV0pO1xuLX1cbi1cbi12b2lkIHVzYm5ldF9jZGNfc3RhdHVzKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVyYiAqdXJiKVxuLXtcbi1cdHN0cnVjdCB1c2JfY2RjX25vdGlmaWNhdGlvblx0KmV2ZW50O1xuLVxuLVx0aWYgKHVyYi1cdTAwM2VhY3R1YWxfbGVuZ3RoIFx1MDAzYyBzaXplb2YoKmV2ZW50KSlcbi1cdFx0cmV0dXJuO1xuLVxuLVx0LyogU1BFRURfQ0hBTkdFIGNhbiBnZXQgc3BsaXQgaW50byB0d28gOC1ieXRlIHBhY2tldHMgKi9cbi1cdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoRVZFTlRfU1RTX1NQTElULCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpKSB7XG4tXHRcdHNwZWVkX2NoYW5nZShkZXYsIChfX2xlMzIgKikgdXJiLVx1MDAzZXRyYW5zZmVyX2J1ZmZlcik7XG4tXHRcdHJldHVybjtcbi1cdH1cbi1cbi1cdGV2ZW50ID0gdXJiLVx1MDAzZXRyYW5zZmVyX2J1ZmZlcjtcbi1cdHN3aXRjaCAoZXZlbnQtXHUwMDNlYk5vdGlmaWNhdGlvblR5cGUpIHtcbi1cdGNhc2UgVVNCX0NEQ19OT1RJRllfTkVUV09SS19DT05ORUNUSU9OOlxuLVx0XHRuZXRpZl9kYmcoZGV2LCB0aW1lciwgZGV2LVx1MDAzZW5ldCwgXCYjMzQ7Q0RDOiBjYXJyaWVyICVzXFxuXCYjMzQ7LFxuLVx0XHRcdCAgZXZlbnQtXHUwMDNld1ZhbHVlID8gXCYjMzQ7b25cJiMzNDsgOiBcJiMzNDtvZmZcJiMzNDspO1xuLVx0XHRpZiAobmV0aWZfY2Fycmllcl9vayhkZXYtXHUwMDNlbmV0KSAhPSAhIWV2ZW50LVx1MDAzZXdWYWx1ZSlcbi1cdFx0XHR1c2JuZXRfbGlua19jaGFuZ2UoZGV2LCAhIWV2ZW50LVx1MDAzZXdWYWx1ZSwgMCk7XG4tXHRcdGJyZWFrO1xuLVx0Y2FzZSBVU0JfQ0RDX05PVElGWV9TUEVFRF9DSEFOR0U6XHQvKiB0eC9yeCByYXRlcyAqL1xuLVx0XHRuZXRpZl9kYmcoZGV2LCB0aW1lciwgZGV2LVx1MDAzZW5ldCwgXCYjMzQ7Q0RDOiBzcGVlZCBjaGFuZ2UgKGxlbiAlZClcXG5cJiMzNDssXG4tXHRcdFx0ICB1cmItXHUwMDNlYWN0dWFsX2xlbmd0aCk7XG4tXHRcdGlmICh1cmItXHUwMDNlYWN0dWFsX2xlbmd0aCAhPSAoc2l6ZW9mKCpldmVudCkgJiM0MzsgOCkpXG4tXHRcdFx0c2V0X2JpdChFVkVOVF9TVFNfU1BMSVQsIFx1MDAyNmRldi1cdTAwM2VmbGFncyk7XG4tXHRcdGVsc2Vcbi1cdFx0XHRzcGVlZF9jaGFuZ2UoZGV2LCAoX19sZTMyICopIFx1MDAyNmV2ZW50WzFdKTtcbi1cdFx0YnJlYWs7XG4tXHQvKiBVU0JfQ0RDX05PVElGWV9SRVNQT05TRV9BVkFJTEFCTEUgY2FuIGhhcHBlbiB0b28gKGUuZy4gUk5ESVMpLFxuLVx0ICogYnV0IHRoZXJlIGFyZSBubyBzdGFuZGFyZCBmb3JtYXRzIGZvciB0aGUgcmVzcG9uc2UgZGF0YS5cbi1cdCAqL1xuLVx0ZGVmYXVsdDpcbi1cdFx0bmV0ZGV2X2VycihkZXYtXHUwMDNlbmV0LCBcJiMzNDtDREM6IHVuZXhwZWN0ZWQgbm90aWZpY2F0aW9uICUwMnghXFxuXCYjMzQ7LFxuLVx0XHRcdCAgIGV2ZW50LVx1MDAzZWJOb3RpZmljYXRpb25UeXBlKTtcbi1cdFx0YnJlYWs7XG4tXHR9XG4tfVxuLUVYUE9SVF9TWU1CT0xfR1BMKHVzYm5ldF9jZGNfc3RhdHVzKTtcbi1cbiBpbnQgdXNibmV0X2NkY19iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4ge1xuIFx0aW50XHRcdFx0XHRzdGF0dXM7XG4tXHRzdHJ1Y3QgY2RjX3N0YXRlXHRcdCppbmZvID0gKHZvaWQgKikgXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG4tXG4tXHRCVUlMRF9CVUdfT04oKHNpemVvZigoKHN0cnVjdCB1c2JuZXQgKikwKS1cdTAwM2VkYXRhKVxuLVx0XHRcdFx1MDAzYyBzaXplb2Yoc3RydWN0IGNkY19zdGF0ZSkpKTtcbiYjNDM7XHRzdHJ1Y3QgY2RjX3N0YXRlXHRcdCppbmZvID0gXHUwMDI2ZGV2LVx1MDAzZWNkYztcbiBcbiBcdHN0YXR1cyA9IHVzYm5ldF9ldGhlcl9jZGNfYmluZChkZXYsIGludGYpO1xuIFx0aWYgKHN0YXR1cyBcdTAwM2MgMClcbkBAIC00NzksMjUgJiM0Mzs0MDEsNiBAQCBzdGF0aWMgaW50IHVzYm5ldF9jZGNfenRlX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbiBcdHJldHVybiBzdGF0dXM7XG4gfVxuIFxuLS8qIE1ha2Ugc3VyZSBwYWNrZXRzIGhhdmUgY29ycmVjdCBkZXN0aW5hdGlvbiBNQUMgYWRkcmVzc1xuLSAqXG4tICogQSBmaXJtd2FyZSBidWcgb2JzZXJ2ZWQgb24gc29tZSBkZXZpY2VzIChaVEUgTUY4MjMvODMxLzkxMCkgaXMgdGhhdCB0aGVcbi0gKiBkZXZpY2Ugc2VuZHMgcGFja2V0cyB3aXRoIGEgc3RhdGljLCBib2d1cywgcmFuZG9tIE1BQyBhZGRyZXNzIChldmVudCBpZlxuLSAqIGRldmljZSBNQUMgYWRkcmVzcyBoYXMgYmVlbiB1cGRhdGVkKS4gQWx3YXlzIHNldCBNQUMgYWRkcmVzcyB0byB0aGF0IG9mIHRoZVxuLSAqIGRldmljZS5cbi0gKi9cbi1pbnQgdXNibmV0X2NkY196dGVfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLXtcbi1cdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyBFVEhfSExFTiB8fCAhKHNrYi1cdTAwM2VkYXRhWzBdIFx1MDAyNiAweDAyKSlcbi1cdFx0cmV0dXJuIDE7XG4tXG4tXHRza2JfcmVzZXRfbWFjX2hlYWRlcihza2IpO1xuLVx0ZXRoZXJfYWRkcl9jb3B5KGV0aF9oZHIoc2tiKS1cdTAwM2VoX2Rlc3QsIGRldi1cdTAwM2VuZXQtXHUwMDNlZGV2X2FkZHIpO1xuLVxuLVx0cmV0dXJuIDE7XG4tfVxuLUVYUE9SVF9TWU1CT0xfR1BMKHVzYm5ldF9jZGNfenRlX3J4X2ZpeHVwKTtcbi1cbiAvKiBFbnN1cmUgY29ycmVjdCBsaW5rIHN0YXRlXG4gICpcbiAgKiBTb21lIGRldmljZXMgKFpURSBNRjgyMy84MzEvOTEwKSBleHBvcnQgdHdvIGNhcnJpZXIgb24gbm90aWZpY2F0aW9ucyB3aGVuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL3JuZGlzX2hvc3QuYyBiL2RyaXZlcnMvbmV0L3VzYi9ybmRpc19ob3N0LmNcbmluZGV4IDVlMzlkMDVhMmQ3YjZkLi5kNTM5NjU0Njg3YzMwNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3VzYi9ybmRpc19ob3N0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3VzYi9ybmRpc19ob3N0LmNcbkBAIC01Nyw3ICYjNDM7NTcsNyBAQCBFWFBPUlRfU1lNQk9MX0dQTChybmRpc19zdGF0dXMpO1xuIHN0YXRpYyB2b2lkIHJuZGlzX21zZ19pbmRpY2F0ZShzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBybmRpc19pbmRpY2F0ZSAqbXNnLFxuIFx0XHRcdFx0aW50IGJ1ZmxlbilcbiB7XG4tXHRzdHJ1Y3QgY2RjX3N0YXRlICppbmZvID0gKHZvaWQgKilcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbiYjNDM7XHRzdHJ1Y3QgY2RjX3N0YXRlICppbmZvID0gXHUwMDI2ZGV2LVx1MDAzZWNkYztcbiBcdHN0cnVjdCBkZXZpY2UgKnVkZXYgPSBcdTAwMjZpbmZvLVx1MDAzZWNvbnRyb2wtXHUwMDNlZGV2O1xuIFxuIFx0aWYgKGRldi1cdTAwM2Vkcml2ZXJfaW5mby1cdTAwM2VpbmRpY2F0aW9uKSB7XG5AQCAtOTAsNyAmIzQzOzkwLDcgQEAgc3RhdGljIHZvaWQgcm5kaXNfbXNnX2luZGljYXRlKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHJuZGlzX2luZGljYXRlICptc2csXG4gICovXG4gaW50IHJuZGlzX2NvbW1hbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgcm5kaXNfbXNnX2hkciAqYnVmLCBpbnQgYnVmbGVuKVxuIHtcbi1cdHN0cnVjdCBjZGNfc3RhdGVcdCppbmZvID0gKHZvaWQgKikgXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG4mIzQzO1x0c3RydWN0IGNkY19zdGF0ZVx0KmluZm8gPSBcdTAwMjZkZXYtXHUwMDNlY2RjO1xuIFx0c3RydWN0IHVzYl9jZGNfbm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbjtcbiBcdGludFx0XHRcdG1hc3Rlcl9pZm51bTtcbiBcdGludFx0XHRcdHJldHZhbDtcbkBAIC0yOTAsNyAmIzQzOzI5MCw3IEBAIGdlbmVyaWNfcm5kaXNfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBpbnQgZmxhZ3MpXG4ge1xuIFx0aW50XHRcdFx0cmV0dmFsO1xuIFx0c3RydWN0IG5ldF9kZXZpY2VcdCpuZXQgPSBkZXYtXHUwMDNlbmV0O1xuLVx0c3RydWN0IGNkY19zdGF0ZVx0KmluZm8gPSAodm9pZCAqKSBcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbiYjNDM7XHRzdHJ1Y3QgY2RjX3N0YXRlXHQqaW5mbyA9IFx1MDAyNmRldi1cdTAwM2VjZGM7XG4gXHR1bmlvbiB7XG4gXHRcdHZvaWRcdFx0XHQqYnVmO1xuIFx0XHRzdHJ1Y3Qgcm5kaXNfbXNnX2hkclx0KmhlYWRlcjtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC91c2IvdXNibmV0LmMgYi9kcml2ZXJzL25ldC91c2IvdXNibmV0LmNcbmluZGV4IDI1NTE4NjM1YjdiNzJkLi43YmVlYTZkMGU3MzFjYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3VzYi91c2JuZXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jXG5AQCAtMjIsNiAmIzQzOzIyLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pbml0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXRkZXZpY2UuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2V0aGVyZGV2aWNlLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvdXNiL2NkYy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvY3R5cGUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2V0aHRvb2wuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3dvcmtxdWV1ZS5oXHUwMDNlXG5AQCAtMjI3MSw2ICYjNDM7MjI3MiwxMDAgQEAgaW50IHVzYm5ldF93cml0ZV9jbWRfYXN5bmMoc3RydWN0IHVzYm5ldCAqZGV2LCB1OCBjbWQsIHU4IHJlcXR5cGUsXG4gXG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHVzYm5ldF93cml0ZV9jbWRfYXN5bmMpO1xuJiM0MztcbiYjNDM7dm9pZCB1c2JuZXRfY2RjX3VwZGF0ZV9maWx0ZXIoc3RydWN0IHVzYm5ldCAqZGV2KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG5ldF9kZXZpY2VcdCpuZXQgPSBkZXYtXHUwMDNlbmV0O1xuJiM0MztcbiYjNDM7XHR1MTYgY2RjX2ZpbHRlciA9IFVTQl9DRENfUEFDS0VUX1RZUEVfRElSRUNURURcbiYjNDM7XHRcdFx0fCBVU0JfQ0RDX1BBQ0tFVF9UWVBFX0JST0FEQ0FTVDtcbiYjNDM7XG4mIzQzO1x0LyogZmlsdGVyaW5nIG9uIHRoZSBkZXZpY2UgaXMgYW4gb3B0aW9uYWwgZmVhdHVyZSBhbmQgbm90IHdvcnRoXG4mIzQzO1x0ICogdGhlIGhhc3NsZSBzbyB3ZSBqdXN0IHJvdWdobHkgY2FyZSBhYm91dCBzbm9vcGluZyBhbmQgaWYgYW55XG4mIzQzO1x0ICogbXVsdGljYXN0IGlzIHJlcXVlc3RlZCwgd2UgdGFrZSBldmVyeSBtdWx0aWNhc3RcbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAobmV0LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfUFJPTUlTQylcbiYjNDM7XHRcdGNkY19maWx0ZXIgfD0gVVNCX0NEQ19QQUNLRVRfVFlQRV9QUk9NSVNDVU9VUztcbiYjNDM7XHRpZiAoIW5ldGRldl9tY19lbXB0eShuZXQpIHx8IChuZXQtXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9BTExNVUxUSSkpXG4mIzQzO1x0XHRjZGNfZmlsdGVyIHw9IFVTQl9DRENfUEFDS0VUX1RZUEVfQUxMX01VTFRJQ0FTVDtcbiYjNDM7XG4mIzQzO1x0dXNiX2NvbnRyb2xfbXNnKGRldi1cdTAwM2V1ZGV2LFxuJiM0MztcdFx0XHR1c2Jfc25kY3RybHBpcGUoZGV2LVx1MDAzZXVkZXYsIDApLFxuJiM0MztcdFx0XHRVU0JfQ0RDX1NFVF9FVEhFUk5FVF9QQUNLRVRfRklMVEVSLFxuJiM0MztcdFx0XHRVU0JfVFlQRV9DTEFTUyB8IFVTQl9SRUNJUF9JTlRFUkZBQ0UsXG4mIzQzO1x0XHRcdGNkY19maWx0ZXIsXG4mIzQzO1x0XHRcdGRldi1cdTAwM2VpbnRmLVx1MDAzZWN1cl9hbHRzZXR0aW5nLVx1MDAzZWRlc2MuYkludGVyZmFjZU51bWJlcixcbiYjNDM7XHRcdFx0TlVMTCxcbiYjNDM7XHRcdFx0MCxcbiYjNDM7XHRcdFx0VVNCX0NUUkxfU0VUX1RJTUVPVVRcbiYjNDM7XHRcdCk7XG4mIzQzO31cbiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwodXNibmV0X2NkY191cGRhdGVfZmlsdGVyKTtcbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHNwZWVkX2NoYW5nZShzdHJ1Y3QgdXNibmV0ICpkZXYsIF9fbGUzMiAqc3BlZWRzKVxuJiM0Mzt7XG4mIzQzO1x0ZGV2LVx1MDAzZXR4X3NwZWVkID0gX19sZTMyX3RvX2NwdShzcGVlZHNbMF0pO1xuJiM0MztcdGRldi1cdTAwM2VyeF9zcGVlZCA9IF9fbGUzMl90b19jcHUoc3BlZWRzWzFdKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7dm9pZCB1c2JuZXRfY2RjX3N0YXR1cyhzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1cmIgKnVyYilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCB1c2JfY2RjX25vdGlmaWNhdGlvblx0KmV2ZW50O1xuJiM0MztcbiYjNDM7XHRpZiAodXJiLVx1MDAzZWFjdHVhbF9sZW5ndGggXHUwMDNjIHNpemVvZigqZXZlbnQpKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHQvKiBTUEVFRF9DSEFOR0UgY2FuIGdldCBzcGxpdCBpbnRvIHR3byA4LWJ5dGUgcGFja2V0cyAqL1xuJiM0MztcdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoRVZFTlRfU1RTX1NQTElULCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpKSB7XG4mIzQzO1x0XHRzcGVlZF9jaGFuZ2UoZGV2LCAoX19sZTMyICopdXJiLVx1MDAzZXRyYW5zZmVyX2J1ZmZlcik7XG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRldmVudCA9IHVyYi1cdTAwM2V0cmFuc2Zlcl9idWZmZXI7XG4mIzQzO1x0c3dpdGNoIChldmVudC1cdTAwM2ViTm90aWZpY2F0aW9uVHlwZSkge1xuJiM0MztcdGNhc2UgVVNCX0NEQ19OT1RJRllfTkVUV09SS19DT05ORUNUSU9OOlxuJiM0MztcdFx0bmV0aWZfZGJnKGRldiwgdGltZXIsIGRldi1cdTAwM2VuZXQsIFwmIzM0O0NEQzogY2FycmllciAlc1xcblwmIzM0OyxcbiYjNDM7XHRcdFx0ICBldmVudC1cdTAwM2V3VmFsdWUgPyBcJiMzNDtvblwmIzM0OyA6IFwmIzM0O29mZlwmIzM0Oyk7XG4mIzQzO1x0XHRpZiAobmV0aWZfY2Fycmllcl9vayhkZXYtXHUwMDNlbmV0KSAhPSAhIWV2ZW50LVx1MDAzZXdWYWx1ZSlcbiYjNDM7XHRcdFx0dXNibmV0X2xpbmtfY2hhbmdlKGRldiwgISFldmVudC1cdTAwM2V3VmFsdWUsIDApO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSBVU0JfQ0RDX05PVElGWV9TUEVFRF9DSEFOR0U6XHQvKiB0eC9yeCByYXRlcyAqL1xuJiM0MztcdFx0bmV0aWZfZGJnKGRldiwgdGltZXIsIGRldi1cdTAwM2VuZXQsIFwmIzM0O0NEQzogc3BlZWQgY2hhbmdlIChsZW4gJWQpXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgIHVyYi1cdTAwM2VhY3R1YWxfbGVuZ3RoKTtcbiYjNDM7XHRcdGlmICh1cmItXHUwMDNlYWN0dWFsX2xlbmd0aCAhPSAoc2l6ZW9mKCpldmVudCkgJiM0MzsgOCkpXG4mIzQzO1x0XHRcdHNldF9iaXQoRVZFTlRfU1RTX1NQTElULCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpO1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRzcGVlZF9jaGFuZ2UoZGV2LCAoX19sZTMyICopXHUwMDI2ZXZlbnRbMV0pO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0LyogVVNCX0NEQ19OT1RJRllfUkVTUE9OU0VfQVZBSUxBQkxFIGNhbiBoYXBwZW4gdG9vIChlLmcuIFJORElTKSxcbiYjNDM7XHQgKiBidXQgdGhlcmUgYXJlIG5vIHN0YW5kYXJkIGZvcm1hdHMgZm9yIHRoZSByZXNwb25zZSBkYXRhLlxuJiM0MztcdCAqL1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRuZXRkZXZfZXJyKGRldi1cdTAwM2VuZXQsIFwmIzM0O0NEQzogdW5leHBlY3RlZCBub3RpZmljYXRpb24gJTAyeCFcXG5cJiMzNDssXG4mIzQzO1x0XHRcdCAgIGV2ZW50LVx1MDAzZWJOb3RpZmljYXRpb25UeXBlKTtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztFWFBPUlRfU1lNQk9MX0dQTCh1c2JuZXRfY2RjX3N0YXR1cyk7XG4mIzQzO1xuJiM0MzsvKiBNYWtlIHN1cmUgcGFja2V0cyBoYXZlIGNvcnJlY3QgZGVzdGluYXRpb24gTUFDIGFkZHJlc3NcbiYjNDM7ICpcbiYjNDM7ICogQSBmaXJtd2FyZSBidWcgb2JzZXJ2ZWQgb24gc29tZSBkZXZpY2VzIChaVEUgTUY4MjMvODMxLzkxMCkgaXMgdGhhdCB0aGVcbiYjNDM7ICogZGV2aWNlIHNlbmRzIHBhY2tldHMgd2l0aCBhIHN0YXRpYywgYm9ndXMsIHJhbmRvbSBNQUMgYWRkcmVzcyAoZXZlbnQgaWZcbiYjNDM7ICogZGV2aWNlIE1BQyBhZGRyZXNzIGhhcyBiZWVuIHVwZGF0ZWQpLiBBbHdheXMgc2V0IE1BQyBhZGRyZXNzIHRvIHRoYXQgb2YgdGhlXG4mIzQzOyAqIGRldmljZS5cbiYjNDM7ICovXG4mIzQzO2ludCB1c2JuZXRfY2RjX3p0ZV9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4mIzQzO3tcbiYjNDM7XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2MgRVRIX0hMRU4gfHwgIShza2ItXHUwMDNlZGF0YVswXSBcdTAwMjYgMHgwMikpXG4mIzQzO1x0XHRyZXR1cm4gMTtcbiYjNDM7XG4mIzQzO1x0c2tiX3Jlc2V0X21hY19oZWFkZXIoc2tiKTtcbiYjNDM7XHRldGhlcl9hZGRyX2NvcHkoZXRoX2hkcihza2IpLVx1MDAzZWhfZGVzdCwgZGV2LVx1MDAzZW5ldC1cdTAwM2VkZXZfYWRkcik7XG4mIzQzO1xuJiM0MztcdHJldHVybiAxO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHVzYm5ldF9jZGNfenRlX3J4X2ZpeHVwKTtcbiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuIFxuIHN0YXRpYyBpbnQgX19pbml0IHVzYm5ldF9pbml0KHZvaWQpXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC91c2IvdXNibmV0LmggYi9pbmNsdWRlL2xpbnV4L3VzYi91c2JuZXQuaFxuaW5kZXggYmJmNzk5Y2NmM2IzMGUuLjc5ZjQ4ZWIzODhlZTZjIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC91c2IvdXNibmV0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvdXNiL3VzYm5ldC5oXG5AQCAtMTYsNiAmIzQzOzE2LDE0IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdXNiLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zcGlubG9jay5oXHUwMDNlXG4gXG4mIzQzO3N0cnVjdCBjZGNfc3RhdGUge1xuJiM0MztcdHN0cnVjdCB1c2JfY2RjX2hlYWRlcl9kZXNjICAgICAgKmhlYWRlcjtcbiYjNDM7XHRzdHJ1Y3QgdXNiX2NkY191bmlvbl9kZXNjICAgICAgICp1O1xuJiM0MztcdHN0cnVjdCB1c2JfY2RjX2V0aGVyX2Rlc2MgICAgICAgKmV0aGVyO1xuJiM0MztcdHN0cnVjdCB1c2JfaW50ZXJmYWNlICAgICAgICAgICAgKmNvbnRyb2w7XG4mIzQzO1x0c3RydWN0IHVzYl9pbnRlcmZhY2UgICAgICAgICAgICAqZGF0YTtcbiYjNDM7fTtcbiYjNDM7XG4gLyogaW50ZXJmYWNlIGZyb20gdXNibmV0IGNvcmUgdG8gZWFjaCBVU0IgbmV0d29ya2luZyBsaW5rIHdlIGhhbmRsZSAqL1xuIHN0cnVjdCB1c2JuZXQge1xuIFx0LyogaG91c2VrZWVwaW5nICovXG5AQCAtNDEsNiAmIzQzOzQ5LDcgQEAgc3RydWN0IHVzYm5ldCB7XG4gXHQvKiBwcm90b2NvbC9pbnRlcmZhY2Ugc3RhdGUgKi9cbiBcdHN0cnVjdCBuZXRfZGV2aWNlXHQqbmV0O1xuIFx0aW50XHRcdFx0bXNnX2VuYWJsZTtcbiYjNDM7XHRzdHJ1Y3QgY2RjX3N0YXRlXHRjZGM7XHRcdC8qIHRvbyBjb21tb24gdG8gbGVhdmUgb3V0Ki9cbiBcdHVuc2lnbmVkIGxvbmdcdFx0ZGF0YVs1XTtcbiBcdHUzMlx0XHRcdHhpZDtcbiBcdHUzMlx0XHRcdGhhcmRfbXR1O1x0LyogY291bnQgYW55IGV4dHJhIGZyYW1pbmcgKi9cbkBAIC0yMTEsMTMgJiM0MzsyMjAsNiBAQCBleHRlcm4gaW50IHVzYm5ldF93cml0ZV9jbWRfYXN5bmMoc3RydWN0IHVzYm5ldCAqZGV2LCB1OCBjbWQsIHU4IHJlcXR5cGUsXG4gICogKG5vdGFibHksIHVzaW5nIG11bHRpcGxlIGludGVyZmFjZXMgYWNjb3JkaW5nIHRvIHRoZSBDRENcbiAgKiB1bmlvbiBkZXNjcmlwdG9yKSBnZXQgc29tZSBoZWxwZXIgY29kZS5cbiAgKi9cbi1zdHJ1Y3QgY2RjX3N0YXRlIHtcbi1cdHN0cnVjdCB1c2JfY2RjX2hlYWRlcl9kZXNjXHQqaGVhZGVyO1xuLVx0c3RydWN0IHVzYl9jZGNfdW5pb25fZGVzY1x0KnU7XG4tXHRzdHJ1Y3QgdXNiX2NkY19ldGhlcl9kZXNjXHQqZXRoZXI7XG4tXHRzdHJ1Y3QgdXNiX2ludGVyZmFjZVx0XHQqY29udHJvbDtcbi1cdHN0cnVjdCB1c2JfaW50ZXJmYWNlXHRcdCpkYXRhO1xuLX07XG4gXG4gZXh0ZXJuIHZvaWQgdXNibmV0X2NkY191cGRhdGVfZmlsdGVyKHN0cnVjdCB1c2JuZXQgKmRldik7XG4gZXh0ZXJuIGludCB1c2JuZXRfZ2VuZXJpY19jZGNfYmluZChzdHJ1Y3QgdXNibmV0ICosIHN0cnVjdCB1c2JfaW50ZXJmYWNlICopO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE3OjUzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGlzIGEgcHVyZSByZWZhY3RvcmluZyB0aGF0IG1vdmVzIENEQy1yZWxhdGVkIGZ1bmN0aW9ucyBmcm9tIGNkY19ldGhlci5jIHRvIHRoZSBjb3JlIHVzYm5ldC5jIG1vZHVsZSBhbmQgcmVwbGFjZXMgdGhlIHVzZSBvZiB0aGUgZ2VuZXJpYyBkYXRhIGFycmF5IHdpdGggYSBkZWRpY2F0ZWQgY2RjX3N0YXRlIHN0cnVjdCBpbiB1c2JuZXQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgbG9naWMgb3IgZml4IGFueSBidWdzIHJlbGF0ZWQgdG8gZGF0YSBhbGlhc2luZywgYXMgbm8gZHJpdmVycyB3ZXJlIGNvbmN1cnJlbnRseSB1c2luZyBib3RoIHRoZSBnZW5lcmljIGRhdGEgYXJyYXkgYW5kIHRoZSBDREMgc3RhdGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiOWYyODdhOGIyMzBkOTRkNTQ5YzQxZDhiNjJkMjIzNzI1NDE3OGFmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMiAxNzo1Mzo0OSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYyBiL2RyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYwppbmRleCBhMGE1NzQwNTkwYjk0NS4uNzZhZDRmZmE5NTBhYjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmMKQEAgLTYzLDM1ICYjNDM7NjMsNiBAQCBzdGF0aWMgY29uc3QgdTggbWJtX2d1aWRbMTZdID0gewogCTB4YTYsIDB4MDcsIDB4YzAsIDB4ZmYsIDB4Y2IsIDB4N2UsIDB4MzksIDB4MmEsCiB9OwogCi12b2lkIHVzYm5ldF9jZGNfdXBkYXRlX2ZpbHRlcihzdHJ1Y3QgdXNibmV0ICpkZXYpCi17Ci0Jc3RydWN0IG5ldF9kZXZpY2UJKm5ldCA9IGRldi0mZ3Q7bmV0OwotCi0JdTE2IGNkY19maWx0ZXIgPSBVU0JfQ0RDX1BBQ0tFVF9UWVBFX0RJUkVDVEVECi0JCQl8IFVTQl9DRENfUEFDS0VUX1RZUEVfQlJPQURDQVNUOwotCi0JLyogZmlsdGVyaW5nIG9uIHRoZSBkZXZpY2UgaXMgYW4gb3B0aW9uYWwgZmVhdHVyZSBhbmQgbm90IHdvcnRoCi0JICogdGhlIGhhc3NsZSBzbyB3ZSBqdXN0IHJvdWdobHkgY2FyZSBhYm91dCBzbm9vcGluZyBhbmQgaWYgYW55Ci0JICogbXVsdGljYXN0IGlzIHJlcXVlc3RlZCwgd2UgdGFrZSBldmVyeSBtdWx0aWNhc3QKLQkgKi8KLQlpZiAobmV0LSZndDtmbGFncyAmYW1wOyBJRkZfUFJPTUlTQykKLQkJY2RjX2ZpbHRlciB8PSBVU0JfQ0RDX1BBQ0tFVF9UWVBFX1BST01JU0NVT1VTOwotCWlmICghbmV0ZGV2X21jX2VtcHR5KG5ldCkgfHwgKG5ldC0mZ3Q7ZmxhZ3MgJmFtcDsgSUZGX0FMTE1VTFRJKSkKLQkJY2RjX2ZpbHRlciB8PSBVU0JfQ0RDX1BBQ0tFVF9UWVBFX0FMTF9NVUxUSUNBU1Q7Ci0KLQl1c2JfY29udHJvbF9tc2coZGV2LSZndDt1ZGV2LAotCQkJdXNiX3NuZGN0cmxwaXBlKGRldi0mZ3Q7dWRldiwgMCksCi0JCQlVU0JfQ0RDX1NFVF9FVEhFUk5FVF9QQUNLRVRfRklMVEVSLAotCQkJVVNCX1RZUEVfQ0xBU1MgfCBVU0JfUkVDSVBfSU5URVJGQUNFLAotCQkJY2RjX2ZpbHRlciwKLQkJCWRldi0mZ3Q7aW50Zi0mZ3Q7Y3VyX2FsdHNldHRpbmctJmd0O2Rlc2MuYkludGVyZmFjZU51bWJlciwKLQkJCU5VTEwsCi0JCQkwLAotCQkJVVNCX0NUUkxfU0VUX1RJTUVPVVQKLQkJKTsKLX0KLUVYUE9SVF9TWU1CT0xfR1BMKHVzYm5ldF9jZGNfdXBkYXRlX2ZpbHRlcik7Ci0KIC8qIFdlIG5lZWQgdG8gb3ZlcnJpZGUgdXNibmV0XypfbGlua19rc2V0dGluZ3MgaW4gYmluZCgpICovCiBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGNkY19ldGhlcl9ldGh0b29sX29wcyA9IHsKIAkuZ2V0X2xpbmsJCT0gdXNibmV0X2dldF9saW5rLApAQCAtMTE0LDcgJiM0Mzs4NSw3IEBAIGludCB1c2JuZXRfZ2VuZXJpY19jZGNfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKQogCXU4CQkJCSpidWYgPSBpbnRmLSZndDtjdXJfYWx0c2V0dGluZy0mZ3Q7ZXh0cmE7CiAJaW50CQkJCWxlbiA9IGludGYtJmd0O2N1cl9hbHRzZXR0aW5nLSZndDtleHRyYWxlbjsKIAlzdHJ1Y3QgdXNiX2ludGVyZmFjZV9kZXNjcmlwdG9yCSpkOwotCXN0cnVjdCBjZGNfc3RhdGUJCSppbmZvID0gKHZvaWQgKikgJmFtcDtkZXYtJmd0O2RhdGE7CiYjNDM7CXN0cnVjdCBjZGNfc3RhdGUJCSppbmZvID0gJmFtcDtkZXYtJmd0O2NkYzsKIAlpbnQJCQkJc3RhdHVzID0gLUVOT0RFVjsKIAlpbnQJCQkJcm5kaXM7CiAJYm9vbAkJCQlhbmRyb2lkX3JuZGlzX3F1aXJrID0gZmFsc2U7CkBAIC0zNjUsNyAmIzQzOzMzNiw3IEBAIEVYUE9SVF9TWU1CT0xfR1BMKHVzYm5ldF9ldGhlcl9jZGNfYmluZCk7CiAKIHZvaWQgdXNibmV0X2NkY191bmJpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZikKIHsKLQlzdHJ1Y3QgY2RjX3N0YXRlCQkqaW5mbyA9ICh2b2lkICopICZhbXA7ZGV2LSZndDtkYXRhOwomIzQzOwlzdHJ1Y3QgY2RjX3N0YXRlCQkqaW5mbyA9ICZhbXA7ZGV2LSZndDtjZGM7CiAJc3RydWN0IHVzYl9kcml2ZXIJCSpkcml2ZXIgPSBkcml2ZXJfb2YoaW50Zik7CiAKIAkvKiBjb21iaW5lZCBpbnRlcmZhY2UgLSBub3RoaW5nICB0byBkbyAqLwpAQCAtNDAwLDU5ICYjNDM7MzcxLDEwIEBAIEVYUE9SVF9TWU1CT0xfR1BMKHVzYm5ldF9jZGNfdW5iaW5kKTsKICAqIChieSBCcmFkIEhhcmRzKSB0YWxrZWQgd2l0aCwgd2l0aCBtb3JlIGZ1bmN0aW9uYWxpdHkuCiAgKi8KIAotc3RhdGljIHZvaWQgc3BlZWRfY2hhbmdlKHN0cnVjdCB1c2JuZXQgKmRldiwgX19sZTMyICpzcGVlZHMpCi17Ci0JZGV2LSZndDt0eF9zcGVlZCA9IF9fbGUzMl90b19jcHUoc3BlZWRzWzBdKTsKLQlkZXYtJmd0O3J4X3NwZWVkID0gX19sZTMyX3RvX2NwdShzcGVlZHNbMV0pOwotfQotCi12b2lkIHVzYm5ldF9jZGNfc3RhdHVzKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVyYiAqdXJiKQotewotCXN0cnVjdCB1c2JfY2RjX25vdGlmaWNhdGlvbgkqZXZlbnQ7Ci0KLQlpZiAodXJiLSZndDthY3R1YWxfbGVuZ3RoICZsdDsgc2l6ZW9mKCpldmVudCkpCi0JCXJldHVybjsKLQotCS8qIFNQRUVEX0NIQU5HRSBjYW4gZ2V0IHNwbGl0IGludG8gdHdvIDgtYnl0ZSBwYWNrZXRzICovCi0JaWYgKHRlc3RfYW5kX2NsZWFyX2JpdChFVkVOVF9TVFNfU1BMSVQsICZhbXA7ZGV2LSZndDtmbGFncykpIHsKLQkJc3BlZWRfY2hhbmdlKGRldiwgKF9fbGUzMiAqKSB1cmItJmd0O3RyYW5zZmVyX2J1ZmZlcik7Ci0JCXJldHVybjsKLQl9Ci0KLQlldmVudCA9IHVyYi0mZ3Q7dHJhbnNmZXJfYnVmZmVyOwotCXN3aXRjaCAoZXZlbnQtJmd0O2JOb3RpZmljYXRpb25UeXBlKSB7Ci0JY2FzZSBVU0JfQ0RDX05PVElGWV9ORVRXT1JLX0NPTk5FQ1RJT046Ci0JCW5ldGlmX2RiZyhkZXYsIHRpbWVyLCBkZXYtJmd0O25ldCwgJiMzNDtDREM6IGNhcnJpZXIgJXNcbiYjMzQ7LAotCQkJICBldmVudC0mZ3Q7d1ZhbHVlID8gJiMzNDtvbiYjMzQ7IDogJiMzNDtvZmYmIzM0Oyk7Ci0JCWlmIChuZXRpZl9jYXJyaWVyX29rKGRldi0mZ3Q7bmV0KSAhPSAhIWV2ZW50LSZndDt3VmFsdWUpCi0JCQl1c2JuZXRfbGlua19jaGFuZ2UoZGV2LCAhIWV2ZW50LSZndDt3VmFsdWUsIDApOwotCQlicmVhazsKLQljYXNlIFVTQl9DRENfTk9USUZZX1NQRUVEX0NIQU5HRToJLyogdHgvcnggcmF0ZXMgKi8KLQkJbmV0aWZfZGJnKGRldiwgdGltZXIsIGRldi0mZ3Q7bmV0LCAmIzM0O0NEQzogc3BlZWQgY2hhbmdlIChsZW4gJWQpXG4mIzM0OywKLQkJCSAgdXJiLSZndDthY3R1YWxfbGVuZ3RoKTsKLQkJaWYgKHVyYi0mZ3Q7YWN0dWFsX2xlbmd0aCAhPSAoc2l6ZW9mKCpldmVudCkgJiM0MzsgOCkpCi0JCQlzZXRfYml0KEVWRU5UX1NUU19TUExJVCwgJmFtcDtkZXYtJmd0O2ZsYWdzKTsKLQkJZWxzZQotCQkJc3BlZWRfY2hhbmdlKGRldiwgKF9fbGUzMiAqKSAmYW1wO2V2ZW50WzFdKTsKLQkJYnJlYWs7Ci0JLyogVVNCX0NEQ19OT1RJRllfUkVTUE9OU0VfQVZBSUxBQkxFIGNhbiBoYXBwZW4gdG9vIChlLmcuIFJORElTKSwKLQkgKiBidXQgdGhlcmUgYXJlIG5vIHN0YW5kYXJkIGZvcm1hdHMgZm9yIHRoZSByZXNwb25zZSBkYXRhLgotCSAqLwotCWRlZmF1bHQ6Ci0JCW5ldGRldl9lcnIoZGV2LSZndDtuZXQsICYjMzQ7Q0RDOiB1bmV4cGVjdGVkIG5vdGlmaWNhdGlvbiAlMDJ4IVxuJiMzNDssCi0JCQkgICBldmVudC0mZ3Q7Yk5vdGlmaWNhdGlvblR5cGUpOwotCQlicmVhazsKLQl9Ci19Ci1FWFBPUlRfU1lNQk9MX0dQTCh1c2JuZXRfY2RjX3N0YXR1cyk7Ci0KIGludCB1c2JuZXRfY2RjX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZikKIHsKIAlpbnQJCQkJc3RhdHVzOwotCXN0cnVjdCBjZGNfc3RhdGUJCSppbmZvID0gKHZvaWQgKikgJmFtcDtkZXYtJmd0O2RhdGE7Ci0KLQlCVUlMRF9CVUdfT04oKHNpemVvZigoKHN0cnVjdCB1c2JuZXQgKikwKS0mZ3Q7ZGF0YSkKLQkJCSZsdDsgc2l6ZW9mKHN0cnVjdCBjZGNfc3RhdGUpKSk7CiYjNDM7CXN0cnVjdCBjZGNfc3RhdGUJCSppbmZvID0gJmFtcDtkZXYtJmd0O2NkYzsKIAogCXN0YXR1cyA9IHVzYm5ldF9ldGhlcl9jZGNfYmluZChkZXYsIGludGYpOwogCWlmIChzdGF0dXMgJmx0OyAwKQpAQCAtNDc5LDI1ICYjNDM7NDAxLDYgQEAgc3RhdGljIGludCB1c2JuZXRfY2RjX3p0ZV9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpCiAJcmV0dXJuIHN0YXR1czsKIH0KIAotLyogTWFrZSBzdXJlIHBhY2tldHMgaGF2ZSBjb3JyZWN0IGRlc3RpbmF0aW9uIE1BQyBhZGRyZXNzCi0gKgotICogQSBmaXJtd2FyZSBidWcgb2JzZXJ2ZWQgb24gc29tZSBkZXZpY2VzIChaVEUgTUY4MjMvODMxLzkxMCkgaXMgdGhhdCB0aGUKLSAqIGRldmljZSBzZW5kcyBwYWNrZXRzIHdpdGggYSBzdGF0aWMsIGJvZ3VzLCByYW5kb20gTUFDIGFkZHJlc3MgKGV2ZW50IGlmCi0gKiBkZXZpY2UgTUFDIGFkZHJlc3MgaGFzIGJlZW4gdXBkYXRlZCkuIEFsd2F5cyBzZXQgTUFDIGFkZHJlc3MgdG8gdGhhdCBvZiB0aGUKLSAqIGRldmljZS4KLSAqLwotaW50IHVzYm5ldF9jZGNfenRlX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYikKLXsKLQlpZiAoc2tiLSZndDtsZW4gJmx0OyBFVEhfSExFTiB8fCAhKHNrYi0mZ3Q7ZGF0YVswXSAmYW1wOyAweDAyKSkKLQkJcmV0dXJuIDE7Ci0KLQlza2JfcmVzZXRfbWFjX2hlYWRlcihza2IpOwotCWV0aGVyX2FkZHJfY29weShldGhfaGRyKHNrYiktJmd0O2hfZGVzdCwgZGV2LSZndDtuZXQtJmd0O2Rldl9hZGRyKTsKLQotCXJldHVybiAxOwotfQotRVhQT1JUX1NZTUJPTF9HUEwodXNibmV0X2NkY196dGVfcnhfZml4dXApOwotCiAvKiBFbnN1cmUgY29ycmVjdCBsaW5rIHN0YXRlCiAgKgogICogU29tZSBkZXZpY2VzIChaVEUgTUY4MjMvODMxLzkxMCkgZXhwb3J0IHR3byBjYXJyaWVyIG9uIG5vdGlmaWNhdGlvbnMgd2hlbgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL3JuZGlzX2hvc3QuYyBiL2RyaXZlcnMvbmV0L3VzYi9ybmRpc19ob3N0LmMKaW5kZXggNWUzOWQwNWEyZDdiNmQuLmQ1Mzk2NTQ2ODdjMzA1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC91c2Ivcm5kaXNfaG9zdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3VzYi9ybmRpc19ob3N0LmMKQEAgLTU3LDcgJiM0Mzs1Nyw3IEBAIEVYUE9SVF9TWU1CT0xfR1BMKHJuZGlzX3N0YXR1cyk7CiBzdGF0aWMgdm9pZCBybmRpc19tc2dfaW5kaWNhdGUoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgcm5kaXNfaW5kaWNhdGUgKm1zZywKIAkJCQlpbnQgYnVmbGVuKQogewotCXN0cnVjdCBjZGNfc3RhdGUgKmluZm8gPSAodm9pZCAqKSZhbXA7ZGV2LSZndDtkYXRhOwomIzQzOwlzdHJ1Y3QgY2RjX3N0YXRlICppbmZvID0gJmFtcDtkZXYtJmd0O2NkYzsKIAlzdHJ1Y3QgZGV2aWNlICp1ZGV2ID0gJmFtcDtpbmZvLSZndDtjb250cm9sLSZndDtkZXY7CiAKIAlpZiAoZGV2LSZndDtkcml2ZXJfaW5mby0mZ3Q7aW5kaWNhdGlvbikgewpAQCAtOTAsNyAmIzQzOzkwLDcgQEAgc3RhdGljIHZvaWQgcm5kaXNfbXNnX2luZGljYXRlKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHJuZGlzX2luZGljYXRlICptc2csCiAgKi8KIGludCBybmRpc19jb21tYW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHJuZGlzX21zZ19oZHIgKmJ1ZiwgaW50IGJ1ZmxlbikKIHsKLQlzdHJ1Y3QgY2RjX3N0YXRlCSppbmZvID0gKHZvaWQgKikgJmFtcDtkZXYtJmd0O2RhdGE7CiYjNDM7CXN0cnVjdCBjZGNfc3RhdGUJKmluZm8gPSAmYW1wO2Rldi0mZ3Q7Y2RjOwogCXN0cnVjdCB1c2JfY2RjX25vdGlmaWNhdGlvbiBub3RpZmljYXRpb247CiAJaW50CQkJbWFzdGVyX2lmbnVtOwogCWludAkJCXJldHZhbDsKQEAgLTI5MCw3ICYjNDM7MjkwLDcgQEAgZ2VuZXJpY19ybmRpc19iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGludCBmbGFncykKIHsKIAlpbnQJCQlyZXR2YWw7CiAJc3RydWN0IG5ldF9kZXZpY2UJKm5ldCA9IGRldi0mZ3Q7bmV0OwotCXN0cnVjdCBjZGNfc3RhdGUJKmluZm8gPSAodm9pZCAqKSAmYW1wO2Rldi0mZ3Q7ZGF0YTsKJiM0MzsJc3RydWN0IGNkY19zdGF0ZQkqaW5mbyA9ICZhbXA7ZGV2LSZndDtjZGM7CiAJdW5pb24gewogCQl2b2lkCQkJKmJ1ZjsKIAkJc3RydWN0IHJuZGlzX21zZ19oZHIJKmhlYWRlcjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi91c2JuZXQuYyBiL2RyaXZlcnMvbmV0L3VzYi91c2JuZXQuYwppbmRleCAyNTUxODYzNWI3YjcyZC4uN2JlZWE2ZDBlNzMxY2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3VzYi91c2JuZXQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC91c2IvdXNibmV0LmMKQEAgLTIyLDYgJiM0MzsyMiw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvaW5pdC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L25ldGRldmljZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2V0aGVyZGV2aWNlLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3VzYi9jZGMuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9jdHlwZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2V0aHRvb2wuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC93b3JrcXVldWUuaCZndDsKQEAgLTIyNzEsNiAmIzQzOzIyNzIsMTAwIEBAIGludCB1c2JuZXRfd3JpdGVfY21kX2FzeW5jKHN0cnVjdCB1c2JuZXQgKmRldiwgdTggY21kLCB1OCByZXF0eXBlLAogCiB9CiBFWFBPUlRfU1lNQk9MX0dQTCh1c2JuZXRfd3JpdGVfY21kX2FzeW5jKTsKJiM0MzsKJiM0Mzt2b2lkIHVzYm5ldF9jZGNfdXBkYXRlX2ZpbHRlcihzdHJ1Y3QgdXNibmV0ICpkZXYpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgbmV0X2RldmljZQkqbmV0ID0gZGV2LSZndDtuZXQ7CiYjNDM7CiYjNDM7CXUxNiBjZGNfZmlsdGVyID0gVVNCX0NEQ19QQUNLRVRfVFlQRV9ESVJFQ1RFRAomIzQzOwkJCXwgVVNCX0NEQ19QQUNLRVRfVFlQRV9CUk9BRENBU1Q7CiYjNDM7CiYjNDM7CS8qIGZpbHRlcmluZyBvbiB0aGUgZGV2aWNlIGlzIGFuIG9wdGlvbmFsIGZlYXR1cmUgYW5kIG5vdCB3b3J0aAomIzQzOwkgKiB0aGUgaGFzc2xlIHNvIHdlIGp1c3Qgcm91Z2hseSBjYXJlIGFib3V0IHNub29waW5nIGFuZCBpZiBhbnkKJiM0MzsJICogbXVsdGljYXN0IGlzIHJlcXVlc3RlZCwgd2UgdGFrZSBldmVyeSBtdWx0aWNhc3QKJiM0MzsJICovCiYjNDM7CWlmIChuZXQtJmd0O2ZsYWdzICZhbXA7IElGRl9QUk9NSVNDKQomIzQzOwkJY2RjX2ZpbHRlciB8PSBVU0JfQ0RDX1BBQ0tFVF9UWVBFX1BST01JU0NVT1VTOwomIzQzOwlpZiAoIW5ldGRldl9tY19lbXB0eShuZXQpIHx8IChuZXQtJmd0O2ZsYWdzICZhbXA7IElGRl9BTExNVUxUSSkpCiYjNDM7CQljZGNfZmlsdGVyIHw9IFVTQl9DRENfUEFDS0VUX1RZUEVfQUxMX01VTFRJQ0FTVDsKJiM0MzsKJiM0MzsJdXNiX2NvbnRyb2xfbXNnKGRldi0mZ3Q7dWRldiwKJiM0MzsJCQl1c2Jfc25kY3RybHBpcGUoZGV2LSZndDt1ZGV2LCAwKSwKJiM0MzsJCQlVU0JfQ0RDX1NFVF9FVEhFUk5FVF9QQUNLRVRfRklMVEVSLAomIzQzOwkJCVVTQl9UWVBFX0NMQVNTIHwgVVNCX1JFQ0lQX0lOVEVSRkFDRSwKJiM0MzsJCQljZGNfZmlsdGVyLAomIzQzOwkJCWRldi0mZ3Q7aW50Zi0mZ3Q7Y3VyX2FsdHNldHRpbmctJmd0O2Rlc2MuYkludGVyZmFjZU51bWJlciwKJiM0MzsJCQlOVUxMLAomIzQzOwkJCTAsCiYjNDM7CQkJVVNCX0NUUkxfU0VUX1RJTUVPVVQKJiM0MzsJCSk7CiYjNDM7fQomIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHVzYm5ldF9jZGNfdXBkYXRlX2ZpbHRlcik7CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgc3BlZWRfY2hhbmdlKHN0cnVjdCB1c2JuZXQgKmRldiwgX19sZTMyICpzcGVlZHMpCiYjNDM7ewomIzQzOwlkZXYtJmd0O3R4X3NwZWVkID0gX19sZTMyX3RvX2NwdShzcGVlZHNbMF0pOwomIzQzOwlkZXYtJmd0O3J4X3NwZWVkID0gX19sZTMyX3RvX2NwdShzcGVlZHNbMV0pOwomIzQzO30KJiM0MzsKJiM0Mzt2b2lkIHVzYm5ldF9jZGNfc3RhdHVzKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVyYiAqdXJiKQomIzQzO3sKJiM0MzsJc3RydWN0IHVzYl9jZGNfbm90aWZpY2F0aW9uCSpldmVudDsKJiM0MzsKJiM0MzsJaWYgKHVyYi0mZ3Q7YWN0dWFsX2xlbmd0aCAmbHQ7IHNpemVvZigqZXZlbnQpKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwkvKiBTUEVFRF9DSEFOR0UgY2FuIGdldCBzcGxpdCBpbnRvIHR3byA4LWJ5dGUgcGFja2V0cyAqLwomIzQzOwlpZiAodGVzdF9hbmRfY2xlYXJfYml0KEVWRU5UX1NUU19TUExJVCwgJmFtcDtkZXYtJmd0O2ZsYWdzKSkgewomIzQzOwkJc3BlZWRfY2hhbmdlKGRldiwgKF9fbGUzMiAqKXVyYi0mZ3Q7dHJhbnNmZXJfYnVmZmVyKTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwomIzQzOwlldmVudCA9IHVyYi0mZ3Q7dHJhbnNmZXJfYnVmZmVyOwomIzQzOwlzd2l0Y2ggKGV2ZW50LSZndDtiTm90aWZpY2F0aW9uVHlwZSkgewomIzQzOwljYXNlIFVTQl9DRENfTk9USUZZX05FVFdPUktfQ09OTkVDVElPTjoKJiM0MzsJCW5ldGlmX2RiZyhkZXYsIHRpbWVyLCBkZXYtJmd0O25ldCwgJiMzNDtDREM6IGNhcnJpZXIgJXNcbiYjMzQ7LAomIzQzOwkJCSAgZXZlbnQtJmd0O3dWYWx1ZSA/ICYjMzQ7b24mIzM0OyA6ICYjMzQ7b2ZmJiMzNDspOwomIzQzOwkJaWYgKG5ldGlmX2NhcnJpZXJfb2soZGV2LSZndDtuZXQpICE9ICEhZXZlbnQtJmd0O3dWYWx1ZSkKJiM0MzsJCQl1c2JuZXRfbGlua19jaGFuZ2UoZGV2LCAhIWV2ZW50LSZndDt3VmFsdWUsIDApOwomIzQzOwkJYnJlYWs7CiYjNDM7CWNhc2UgVVNCX0NEQ19OT1RJRllfU1BFRURfQ0hBTkdFOgkvKiB0eC9yeCByYXRlcyAqLwomIzQzOwkJbmV0aWZfZGJnKGRldiwgdGltZXIsIGRldi0mZ3Q7bmV0LCAmIzM0O0NEQzogc3BlZWQgY2hhbmdlIChsZW4gJWQpXG4mIzM0OywKJiM0MzsJCQkgIHVyYi0mZ3Q7YWN0dWFsX2xlbmd0aCk7CiYjNDM7CQlpZiAodXJiLSZndDthY3R1YWxfbGVuZ3RoICE9IChzaXplb2YoKmV2ZW50KSAmIzQzOyA4KSkKJiM0MzsJCQlzZXRfYml0KEVWRU5UX1NUU19TUExJVCwgJmFtcDtkZXYtJmd0O2ZsYWdzKTsKJiM0MzsJCWVsc2UKJiM0MzsJCQlzcGVlZF9jaGFuZ2UoZGV2LCAoX19sZTMyICopJmFtcDtldmVudFsxXSk7CiYjNDM7CQlicmVhazsKJiM0MzsJLyogVVNCX0NEQ19OT1RJRllfUkVTUE9OU0VfQVZBSUxBQkxFIGNhbiBoYXBwZW4gdG9vIChlLmcuIFJORElTKSwKJiM0MzsJICogYnV0IHRoZXJlIGFyZSBubyBzdGFuZGFyZCBmb3JtYXRzIGZvciB0aGUgcmVzcG9uc2UgZGF0YS4KJiM0MzsJICovCiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQluZXRkZXZfZXJyKGRldi0mZ3Q7bmV0LCAmIzM0O0NEQzogdW5leHBlY3RlZCBub3RpZmljYXRpb24gJTAyeCFcbiYjMzQ7LAomIzQzOwkJCSAgIGV2ZW50LSZndDtiTm90aWZpY2F0aW9uVHlwZSk7CiYjNDM7CQlicmVhazsKJiM0MzsJfQomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MX0dQTCh1c2JuZXRfY2RjX3N0YXR1cyk7CiYjNDM7CiYjNDM7LyogTWFrZSBzdXJlIHBhY2tldHMgaGF2ZSBjb3JyZWN0IGRlc3RpbmF0aW9uIE1BQyBhZGRyZXNzCiYjNDM7ICoKJiM0MzsgKiBBIGZpcm13YXJlIGJ1ZyBvYnNlcnZlZCBvbiBzb21lIGRldmljZXMgKFpURSBNRjgyMy84MzEvOTEwKSBpcyB0aGF0IHRoZQomIzQzOyAqIGRldmljZSBzZW5kcyBwYWNrZXRzIHdpdGggYSBzdGF0aWMsIGJvZ3VzLCByYW5kb20gTUFDIGFkZHJlc3MgKGV2ZW50IGlmCiYjNDM7ICogZGV2aWNlIE1BQyBhZGRyZXNzIGhhcyBiZWVuIHVwZGF0ZWQpLiBBbHdheXMgc2V0IE1BQyBhZGRyZXNzIHRvIHRoYXQgb2YgdGhlCiYjNDM7ICogZGV2aWNlLgomIzQzOyAqLwomIzQzO2ludCB1c2JuZXRfY2RjX3p0ZV9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpCiYjNDM7ewomIzQzOwlpZiAoc2tiLSZndDtsZW4gJmx0OyBFVEhfSExFTiB8fCAhKHNrYi0mZ3Q7ZGF0YVswXSAmYW1wOyAweDAyKSkKJiM0MzsJCXJldHVybiAxOwomIzQzOwomIzQzOwlza2JfcmVzZXRfbWFjX2hlYWRlcihza2IpOwomIzQzOwlldGhlcl9hZGRyX2NvcHkoZXRoX2hkcihza2IpLSZndDtoX2Rlc3QsIGRldi0mZ3Q7bmV0LSZndDtkZXZfYWRkcik7CiYjNDM7CiYjNDM7CXJldHVybiAxOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MX0dQTCh1c2JuZXRfY2RjX3p0ZV9yeF9maXh1cCk7CiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCiBzdGF0aWMgaW50IF9faW5pdCB1c2JuZXRfaW5pdCh2b2lkKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC91c2IvdXNibmV0LmggYi9pbmNsdWRlL2xpbnV4L3VzYi91c2JuZXQuaAppbmRleCBiYmY3OTljY2YzYjMwZS4uNzlmNDhlYjM4OGVlNmMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvdXNiL3VzYm5ldC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvdXNiL3VzYm5ldC5oCkBAIC0xNiw2ICYjNDM7MTYsMTQgQEAKICNpbmNsdWRlICZsdDtsaW51eC91c2IuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9zcGlubG9jay5oJmd0OwogCiYjNDM7c3RydWN0IGNkY19zdGF0ZSB7CiYjNDM7CXN0cnVjdCB1c2JfY2RjX2hlYWRlcl9kZXNjICAgICAgKmhlYWRlcjsKJiM0MzsJc3RydWN0IHVzYl9jZGNfdW5pb25fZGVzYyAgICAgICAqdTsKJiM0MzsJc3RydWN0IHVzYl9jZGNfZXRoZXJfZGVzYyAgICAgICAqZXRoZXI7CiYjNDM7CXN0cnVjdCB1c2JfaW50ZXJmYWNlICAgICAgICAgICAgKmNvbnRyb2w7CiYjNDM7CXN0cnVjdCB1c2JfaW50ZXJmYWNlICAgICAgICAgICAgKmRhdGE7CiYjNDM7fTsKJiM0MzsKIC8qIGludGVyZmFjZSBmcm9tIHVzYm5ldCBjb3JlIHRvIGVhY2ggVVNCIG5ldHdvcmtpbmcgbGluayB3ZSBoYW5kbGUgKi8KIHN0cnVjdCB1c2JuZXQgewogCS8qIGhvdXNla2VlcGluZyAqLwpAQCAtNDEsNiAmIzQzOzQ5LDcgQEAgc3RydWN0IHVzYm5ldCB7CiAJLyogcHJvdG9jb2wvaW50ZXJmYWNlIHN0YXRlICovCiAJc3RydWN0IG5ldF9kZXZpY2UJKm5ldDsKIAlpbnQJCQltc2dfZW5hYmxlOwomIzQzOwlzdHJ1Y3QgY2RjX3N0YXRlCWNkYzsJCS8qIHRvbyBjb21tb24gdG8gbGVhdmUgb3V0Ki8KIAl1bnNpZ25lZCBsb25nCQlkYXRhWzVdOwogCXUzMgkJCXhpZDsKIAl1MzIJCQloYXJkX210dTsJLyogY291bnQgYW55IGV4dHJhIGZyYW1pbmcgKi8KQEAgLTIxMSwxMyAmIzQzOzIyMCw2IEBAIGV4dGVybiBpbnQgdXNibmV0X3dyaXRlX2NtZF9hc3luYyhzdHJ1Y3QgdXNibmV0ICpkZXYsIHU4IGNtZCwgdTggcmVxdHlwZSwKICAqIChub3RhYmx5LCB1c2luZyBtdWx0aXBsZSBpbnRlcmZhY2VzIGFjY29yZGluZyB0byB0aGUgQ0RDCiAgKiB1bmlvbiBkZXNjcmlwdG9yKSBnZXQgc29tZSBoZWxwZXIgY29kZS4KICAqLwotc3RydWN0IGNkY19zdGF0ZSB7Ci0Jc3RydWN0IHVzYl9jZGNfaGVhZGVyX2Rlc2MJKmhlYWRlcjsKLQlzdHJ1Y3QgdXNiX2NkY191bmlvbl9kZXNjCSp1OwotCXN0cnVjdCB1c2JfY2RjX2V0aGVyX2Rlc2MJKmV0aGVyOwotCXN0cnVjdCB1c2JfaW50ZXJmYWNlCQkqY29udHJvbDsKLQlzdHJ1Y3QgdXNiX2ludGVyZmFjZQkJKmRhdGE7Ci19OwogCiBleHRlcm4gdm9pZCB1c2JuZXRfY2RjX3VwZGF0ZV9maWx0ZXIoc3RydWN0IHVzYm5ldCAqZGV2KTsKIGV4dGVybiBpbnQgdXNibmV0X2dlbmVyaWNfY2RjX2JpbmQoc3RydWN0IHVzYm5ldCAqLCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTc6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjAwNQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDIwNzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIFVTQiBDREMgRXRoZXJuZXQgUmVmYWN0b3JpbmcgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCYjMzk7cyBzaHVmZmxpbmcgc29tZSBjb2RlIGFyb3VuZCBpbiB0aGUgVVNCIG5ldHdvcmtpbmcgc3RhY2suIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgbW92aW5nIGEgZmV3IGZ1bmN0aW9ucywgYHVzYm5ldF9jZGNfdXBkYXRlX2ZpbHRlcmAsIGB1c2JuZXRfY2RjX3N0YXR1c2AsIGFuZCBgdXNibmV0X2NkY196dGVfcnhfZml4dXBgLCBmcm9tIGBjZGNfZXRoZXIuY2AgaW50byB0aGUgbW9yZSBnZW5lcmFsIGB1c2JuZXQuY2AuIEl0JiMzOTtzIGFsc28gbW9kaWZ5aW5nIHRoZSBgc3RydWN0IHVzYm5ldGAgaW4gYHVzYm5ldC5oYC4gQmVmb3JlLCB0aGUgYGNkY19zdGF0ZWAgZGF0YSB3YXMgcGxhY2VkIG9uIHRvcCBvZiB0aGUgZ2VuZXJpYyBgZGF0YWAgYXJyYXk7IG5vdywgaXQmIzM5O3MgZ2V0dGluZyBpdHMgb3duIGRlZGljYXRlZCBgY2RjYCBtZW1iZXIuIEJhc2ljYWxseSwgaXTigJlzIGFsbG9jYXRpbmcgc3BhY2UgZm9yIGEgYHN0cnVjdCBjZGNfc3RhdGVgIGRpcmVjdGx5IHdpdGhpbiBgc3RydWN0IHVzYm5ldGAuIEFsc28gaXQgY2hhbmdlcyBgc3RydWN0IGNkY19zdGF0ZSAqaW5mbyA9ICh2b2lkICopICZhbXA7ZGV2LSZndDtkYXRhO2AgdG8gYHN0cnVjdCBjZGNfc3RhdGUgKmluZm8gPSAmYW1wO2Rldi0mZ3Q7Y2RjO2AgaW4gYSBmZXcgcGxhY2VzLgoKTXkgZmlyc3QgdGhvdWdodCBpcywgaXMgdGhpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlPyBUaGUgY29kZSYjMzk7cyBtb3ZpbmcsIHRoZSBzdHJ1Y3R1cmUgaXMgZGlmZmVyZW50LCBzbyBob3cgZG9lcyBpdCBhZmZlY3QgdGhpbmdzPyBJdCBsb29rcyBsaWtlIHRoZSBtYWluIGdvYWwgaXMgdG8gYXZvaWQgYWxpYXNpbmcgaXNzdWVzIGFuZCBpbXByb3ZlIGNsYXJpdHkuIEl0JiMzOTtzIG1ha2luZyB0aGUgc3RydWN0IGxheW91dCBtb3JlIGV4cGxpY2l0LgoKVGhlIGNvZGUgY2hhbmdlcyBhcHBlYXIgdG8gYmUgbWFpbmx5IHJlZmFjdG9yaW5nLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZS4gSSYjMzk7bSBmb2N1c2luZyBvbiB3aGV0aGVyIHRoaXMgYWZmZWN0cyBleGlzdGluZyBkcml2ZXJzIG9yIGFkZHMgbmV3IGxvZ2ljLiBJIHF1aWNrbHkgY2hlY2sgdGhlIGZ1bmN0aW9ucyBiZWluZyBtb3ZlZC4gTm9wZSwgdGhleSBhcmUgaWRlbnRpY2FsLiBUaGV5IHNlZW0gdG8gYmUgbW92ZWQgZnJvbSBhIHNwZWNpZmljIGRyaXZlciAoYGNkY19ldGhlcmApIHRvIHRoZSBjb3JlIG1vZHVsZSAoYHVzYm5ldGApLiBUaGlzIGNoYW5nZSBtaWdodCBiZSB0byBhbGxvdyBvdGhlciBkcml2ZXJzIHRvIHVzZSB0aGVtIHdpdGhvdXQgZGVwZW5kaW5nIG9uIGBjZGNfZXRoZXJgLgoKSSBjaGVjayB0aGUgc3RydWN0IGNoYW5nZSBtb3JlIGNsb3NlbHkuIFRoZSBzaXplIG9mIGBzdHJ1Y3QgdXNibmV0YCBpcyBpbmNyZWFzaW5nLCBidXQgYGRhdGFbNV1gIGlzIHN0aWxsIHRoZXJlLCBzbyB0aGUgbmV3IGBjZGNgIGZpZWxkIGlzIG5vdCBvdmVybGF5aW5nIGFueXRoaW5nLiBQcmV2aW91c2x5LCB0aGVyZSB3YXMgYW4gb3ZlcmxhcCBhbmQgbm93IGl04oCZcyBhbGwgZGVkaWNhdGVkLiBUaGlzIG1lYW5zIHRoZSBgZGF0YWAgYXJyYXkgaXMgbm8gbG9uZ2VyIHVzZWQgZm9yIHRoZSBgY2RjX3N0YXRlYC4gSXQmIzM5O3MgYSBjbGVhbiByZWZhY3RvcmluZy4KClNvLCBkb2VzIGl0IHdhcnJhbnQgZnV6emluZz8gVHlwaWNhbGx5LCBqdXN0IG1vdmluZyBjb2RlIGFuZCBjaGFuZ2luZyBzdHJ1Y3QgbGF5b3V0cyAqd2l0aG91dCogaW50cm9kdWNpbmcgbmV3IGxvZ2ljIGRvZXNuJiMzOTt0IG5lY2Vzc2l0YXRlIGZvY3VzZWQgZnV6emluZywgYnV0IGl0IGNhbiBiZSBhIGdvb2QgdGVzdCB0byBjaGVjayBpdCBkaWRuJiMzOTt0IGJyZWFrIGFueXRoaW5nLiBBbmQgc2luY2UgdGhlIHByb21wdCYjMzk7cyBpbnN0cnVjdGlvbnMgYXJlIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggY29udGFpbnMgJiMzNDtQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLi4uJiMzNDsgSSBuZWVkIHRvIGJlIHN1cmUuCgpCdXQgdGhlbiBJIHRoaW5rLi4uIGlzIHRoZXJlIGEgc3VidGxlIGZ1bmN0aW9uYWwgY2hhbmdlPyBTZXBhcmF0aW5nIGBjZGNgIGFuZCBgZGF0YWAgbWlnaHQgZml4IGEgYnVnIHdoZXJlIGBkYXRhYCB3YXMgb3ZlcndyaXR0ZW4sIGJ1dCBvbmx5IGlmIGFub3RoZXIgZHJpdmVyIHdhcyB1c2luZyBib3RoIHRoZSBnZW5lcmljIGRhdGEgYXJyYXkgYW5kIHRoZSBDREMgc3RhdGUgdGhyb3VnaCB0aGUgYXJyYXkuIFRoaXMgaXMgcHJvYmFibHkgYSBidWcgZml4LiBCdXQgaW4gb3VyIGNhc2UgdGhlIGBjZGNfZXRoZXJgIGFuZCBgcm5kaXNfaG9zdGAgdXNlIGl0IHRoZSBvbGQgd2F5LiBJIHNob3VsZCBjaGVjayB0aGUgY29tbWl0IG1lc3NhZ2UsIGJ1dCBJIGRvbiYjMzk7dCBoYXZlIGl0LgoKVGhlIGRpZmYgZG9lcyBub3Qgc2hvdyBuZXcgY29kZSwgb25seSBtb3ZpbmcsIGFuZCBzdHJ1Y3QgY2hhbmdlcy4gVGhlIHBhdGNoIGlzIGRlZmluaXRlbHkgcmVmYWN0b3JpbmcuIEl0IG1vdmVzIGZ1bmN0aW9ucyBhbmQgY2hhbmdlcyBzdHJ1Y3QgbGF5b3V0LgoKU28sIGFtIEkgYXQgYFdvcnRoRnV6emluZz1mYWxzZWAgb3IgYFdvcnRoRnV6emluZz10cnVlYD8gVGhlIHByb21wdCBkb2VzbuKAmXQgZXhwbGljaXRseSBzYXkgcmVmYWN0b3JpbmcgaXMgYFdvcnRoRnV6emluZz1mYWxzZWAuIEJ1dCwgaXQgKmRvZXMqIHNheSBpZiBpdCBtb2RpZmllcyByZWFjaGFibGUga2VybmVsIGxvZ2ljLCBJIG5lZWQgdG8gZG8gZnVydGhlciBjaGVja3MgYW5kIHJldHVybiBgV29ydGhGdXp6aW5nPXRydWVgLiBSZWZhY3RvcmluZyAqZG9lcyogbW9kaWZ5IHJlYWNoYWJsZSBkcml2ZXJzLiBBbmQgdGhhdCBsb2dpYyAqaXMqIGFjY2Vzc2libGUgYnkgZHJpdmVycywgZXNwZWNpYWxseSB0aHJvdWdoIENEQyBFdGhlcm5ldC4gVGhlcmVmb3JlLCBpZiBJIHNheSBgV29ydGhGdXp6aW5nPXRydWVgLCB0aGUgZm9jdXMgc3ltYm9scyB3b3VsZCBiZSBgdXNibmV0X2NkY19zdGF0dXNgLCBgdXNibmV0X2NkY191cGRhdGVfZmlsdGVyYCwgYW5kIGB1c2JuZXRfY2RjX3p0ZV9yeF9maXh1cGAuIFRoZXkmIzM5O3JlIHRoZSBjcml0aWNhbCBwaWVjZXMgb2YgdGhpcyBzaHVmZmxlLiBUaGVzZSBmdW5jdGlvbnMgKmFyZSogcmVhY2hhYmxlLgoKQWZ0ZXIgY29uc2lkZXJhdGlvbiwgSSB3aWxsIG1hcmsgaXQgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoaXMgaXMgYmVjYXVzZSB0aGUgZnVuY3Rpb25zIGFuZCBzdHJ1Y3QgbGF5b3V0IGFyZSByZWZhY3RvcmVkLCBidXQgbm8gbmV3IGZlYXR1cmVzIG9yIGZ1bmN0aW9uYWwgbG9naWMgaXMgaW50cm9kdWNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1c2JuZXRfY2RjX3N0YXR1cyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmM9NDEwPXN0YXRpYyB2b2lkIHVzYm5ldF9jZGNfenRlX3N0YXR1cyhzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1cmIgKnVyYilcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmMtNDE5LVx0aWYgKGV2ZW50LVx1MDAzZWJOb3RpZmljYXRpb25UeXBlICE9IFVTQl9DRENfTk9USUZZX05FVFdPUktfQ09OTkVDVElPTikge1xuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jOjQyMDpcdFx0dXNibmV0X2NkY19zdGF0dXMoZGV2LCB1cmIpO1xuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jLTQyMS1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYz00MzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mb1x0Y2RjX2luZm8gPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jLTQzOC1cdC51bmJpbmQgPVx0dXNibmV0X2NkY191bmJpbmQsXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmM6NDM5Olx0LnN0YXR1cyA9XHR1c2JuZXRfY2RjX3N0YXR1cyxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYy00NDAtXHQuc2V0X3J4X21vZGUgPVx0dXNibmV0X2NkY191cGRhdGVfZmlsdGVyLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYz00NTU9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyB3d2FuX2luZm8gPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jLTQ1OS1cdC51bmJpbmQgPVx0dXNibmV0X2NkY191bmJpbmQsXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmM6NDYwOlx0LnN0YXR1cyA9XHR1c2JuZXRfY2RjX3N0YXR1cyxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYy00NjEtXHQuc2V0X3J4X21vZGUgPVx0dXNibmV0X2NkY191cGRhdGVfZmlsdGVyLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sZy12bDYwMC5jPTMwMT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvXHR2bDYwMF9pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9sZy12bDYwMC5jLTMwNS1cdC51bmJpbmRcdFx0PSB2bDYwMF91bmJpbmQsXG5kcml2ZXJzL25ldC91c2IvbGctdmw2MDAuYzozMDY6XHQuc3RhdHVzXHRcdD0gdXNibmV0X2NkY19zdGF0dXMsXG5kcml2ZXJzL25ldC91c2IvbGctdmw2MDAuYy0zMDctXHQucnhfZml4dXBcdD0gdmw2MDBfcnhfZml4dXAsXG4tLVxuZHJpdmVycy9uZXQvdXNiL3I4MTUzX2VjbS5jPTExNT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIHI4MTUzX2luZm8gPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL3I4MTUzX2VjbS5jLTExOS1cdC51bmJpbmQgPVx0dXNibmV0X2NkY191bmJpbmQsXG5kcml2ZXJzL25ldC91c2IvcjgxNTNfZWNtLmM6MTIwOlx0LnN0YXR1cyA9XHR1c2JuZXRfY2RjX3N0YXR1cyxcbmRyaXZlcnMvbmV0L3VzYi9yODE1M19lY20uYy0xMjEtXHQubWFuYWdlX3Bvd2VyID1cdHVzYm5ldF9tYW5hZ2VfcG93ZXIsXG4tLVxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jPTIzMDU9c3RhdGljIHZvaWQgc3BlZWRfY2hhbmdlKHN0cnVjdCB1c2JuZXQgKmRldiwgX19sZTMyICpzcGVlZHMpXG4tLVxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTIzMTAtXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmM6MjMxMTp2b2lkIHVzYm5ldF9jZGNfc3RhdHVzKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVyYiAqdXJiKVxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTIzMTIte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYy0yMzQ4LX1cbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYzoyMzQ5OkVYUE9SVF9TWU1CT0xfR1BMKHVzYm5ldF9jZGNfc3RhdHVzKTtcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYy0yMzUwLVxuLS1cbmluY2x1ZGUvbGludXgvdXNiL3VzYm5ldC5oPTIyOD1leHRlcm4gdm9pZCB1c2JuZXRfY2RjX3VuYmluZChzdHJ1Y3QgdXNibmV0ICosIHN0cnVjdCB1c2JfaW50ZXJmYWNlICopO1xuaW5jbHVkZS9saW51eC91c2IvdXNibmV0Lmg6MjI5OmV4dGVybiB2b2lkIHVzYm5ldF9jZGNfc3RhdHVzKHN0cnVjdCB1c2JuZXQgKiwgc3RydWN0IHVyYiAqKTtcbmluY2x1ZGUvbGludXgvdXNiL3VzYm5ldC5oLTIzMC1leHRlcm4gaW50IHVzYm5ldF9jZGNfenRlX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTc6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTkyNQoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDIyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWZhY3RvcmluZyBBbmFseXNpczogdXNibmV0X2NkY19zdGF0dXMgTW92ZSoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIG1vdmluZyBgdXNibmV0X2NkY19zdGF0dXNgIGFuZCBhIGZldyBvdGhlciB0aGluZ3MgaW50byBgdXNibmV0LmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGlzIHRoZXJlIGFueSByZWFsIG5lZWQgdG8gZnV6eiB0aGlzPyBJZiBpdCYjMzk7cyBhIHN0cmFpZ2h0Zm9yd2FyZCByZWZhY3RvcmluZywgdGhlIHVuZGVybHlpbmcgbG9naWMgaXMgaWRlbnRpY2FsLCBzbyBpdCBzZWVtcyBsaWtlIGEgbG93LXlpZWxkIHRhcmdldCBmb3IgZnV6emluZy4KCkJ1dCB3YWl0LCBob2xkIG9uLiBMZXQmIzM5O3MgZGlnIGRlZXBlciBpbnRvIHRoYXQgYGNkY19zdGF0ZWAgY2hhbmdlLiBUaGUgb3JpZ2luYWwgY29kZSBoYWQgYHN0cnVjdCBjZGNfc3RhdGUgKmluZm8gPSAodm9pZCAqKSAmYW1wO2Rldi0mZ3Q7ZGF0YTtgIGFuZCBub3cgaXQmIzM5O3MgYHN0cnVjdCBjZGNfc3RhdGUgKmluZm8gPSAmYW1wO2Rldi0mZ3Q7Y2RjO2AuIFRoYXQmIzM5O3Mgc2lnbmlmaWNhbnQuIEl0IG1lYW5zIGBjZGNfc3RhdGVgIGlzIG5vIGxvbmdlciBhbGlhc2VkIHdpdGggYGRhdGFgLiBJIGJldCB0aGlzIGlzIGFpbWVkIGF0IGZpeGluZyBhIHBvdGVudGlhbCBjb25jdXJyZW5jeSBpc3N1ZSwgd2hlcmUgYSBkcml2ZXIgd2FzIHBvdGVudGlhbGx5IHVzaW5nIGJvdGggYGNkY19zdGF0ZWAgYW5kIGBkYXRhYCBzaW11bHRhbmVvdXNseS4KCkkgbmVlZCB0byBjb25maXJtIHRoYXQgc3VzcGljaW9uLiBMZXQgbWUgY2hlY2sgaWYgYW55IGRyaXZlcnMgd2VyZSwgaW4gZmFjdCwgZG9pbmcgdGhhdC4gSSByZWNhbGwgYGRldi0mZ3Q7ZGF0YWAgaXMgYW4gYXJyYXkgb2YgZml2ZSBgdW5zaWduZWQgbG9uZ2BzLCBhbmQgYGNkY19zdGF0ZWAgaXMgZml2ZSBwb2ludGVycy4gSWYgYSBkcml2ZXIgZGVjaWRlZCB0byB1c2UgYGRldi0mZ3Q7ZGF0YWAgZm9yIGl0cyBvd24gc3RhdGUsIGJ1dCBhbHNvIHV0aWxpemVkIGFueSBDREMgZnVuY3Rpb25zLCB0aGF0IHdvdWxkIGluZXZpdGFibHkgY29ycnVwdCB0aGUgYGNkY19zdGF0ZWAgZGF0YS4gVGhpcyBpcyB3aGVyZSBJIGNhbiBhcHBseSBteSBleHBlcnRpc2UuIEkgc2hvdWxkIGJlIGFibGUgdG8gaWRlbnRpZnkgYW55IGRyaXZlcnMgdGhhdCBtaWdodCBoYXZlIGZhbGxlbiBpbnRvIHRoaXMgdHJhcCBhbmQgd2VyZSByZWx5aW5nIG9uIHNoYXJlZCBtZW1vcnkgdGhhdCB3YXMsIGVmZmVjdGl2ZWx5LCBhIHRpbWUtYm9tYi4gSSBuZWVkIHRvIGtub3cgaWYgYW55IGRyaXZlcnMgdXNlZCBgZGV2LSZndDtkYXRhYCB3aGlsZSBzaW11bHRhbmVvdXNseSBjYWxsaW5nIENEQyBmdW5jdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTc6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGV2LVx1MDAzZWRhdGEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDI4MzkgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmJsb2NrL3NlZC1vcGFsLmM9NDYwPXN0YXRpYyBpbnQgb3BhbF9zZW5kX2NtZChzdHJ1Y3Qgb3BhbF9kZXYgKmRldilcbmJsb2NrL3NlZC1vcGFsLmMtNDYxLXtcbmJsb2NrL3NlZC1vcGFsLmM6NDYyOlx0cmV0dXJuIGRldi1cdTAwM2VzZW5kX3JlY3YoZGV2LVx1MDAzZWRhdGEsIGRldi1cdTAwM2Vjb21pZCwgVENHX1NFQ1BfMDEsXG5ibG9jay9zZWQtb3BhbC5jLTQ2My1cdFx0XHQgICAgICBkZXYtXHUwMDNlY21kLCBJT19CVUZGRVJfTEVOR1RILFxuLS1cbmJsb2NrL3NlZC1vcGFsLmM9NDY3PXN0YXRpYyBpbnQgb3BhbF9yZWN2X2NtZChzdHJ1Y3Qgb3BhbF9kZXYgKmRldilcbmJsb2NrL3NlZC1vcGFsLmMtNDY4LXtcbmJsb2NrL3NlZC1vcGFsLmM6NDY5Olx0cmV0dXJuIGRldi1cdTAwM2VzZW5kX3JlY3YoZGV2LVx1MDAzZWRhdGEsIGRldi1cdTAwM2Vjb21pZCwgVENHX1NFQ1BfMDEsXG5ibG9jay9zZWQtb3BhbC5jLTQ3MC1cdFx0XHQgICAgICBkZXYtXHUwMDNlcmVzcCwgSU9fQlVGRkVSX0xFTkdUSCxcbi0tXG5ibG9jay9zZWQtb3BhbC5jPTI1OTg9c3RydWN0IG9wYWxfZGV2ICppbml0X29wYWxfZGV2KHZvaWQgKmRhdGEsIHNlY19zZW5kX3JlY3YgKnNlbmRfcmVjdilcbi0tXG5ibG9jay9zZWQtb3BhbC5jLTI2MjAtXHRkZXYtXHUwMDNlZmxhZ3MgPSAwO1xuYmxvY2svc2VkLW9wYWwuYzoyNjIxOlx0ZGV2LVx1MDAzZWRhdGEgPSBkYXRhO1xuYmxvY2svc2VkLW9wYWwuYy0yNjIyLVx0ZGV2LVx1MDAzZXNlbmRfcmVjdiA9IHNlbmRfcmVjdjtcbi0tXG5ibG9jay9zZWQtb3BhbC5jPTM1NDg9c3RhdGljIGludCBvcGFsX3N0YWNrX3Jlc2V0KHN0cnVjdCBvcGFsX2RldiAqZGV2KVxuLS1cbmJsb2NrL3NlZC1vcGFsLmMtMzU2MS1cbmJsb2NrL3NlZC1vcGFsLmM6MzU2MjpcdHJldCA9IGRldi1cdTAwM2VzZW5kX3JlY3YoZGV2LVx1MDAzZWRhdGEsIGRldi1cdTAwM2Vjb21pZCwgVENHX1NFQ1BfMDIsXG5ibG9jay9zZWQtb3BhbC5jLTM1NjMtXHRcdFx0ICAgICBkZXYtXHUwMDNlY21kLCBJT19CVUZGRVJfTEVOR1RILCB0cnVlKTtcbi0tXG5ibG9jay9zZWQtb3BhbC5jLTM1NjktXHRtZW1zZXQoZGV2LVx1MDAzZXJlc3AsIDAsIElPX0JVRkZFUl9MRU5HVEgpO1xuYmxvY2svc2VkLW9wYWwuYzozNTcwOlx0cmV0ID0gZGV2LVx1MDAzZXNlbmRfcmVjdihkZXYtXHUwMDNlZGF0YSwgZGV2LVx1MDAzZWNvbWlkLCBUQ0dfU0VDUF8wMixcbmJsb2NrL3NlZC1vcGFsLmMtMzU3MS1cdFx0XHQgICAgIGRldi1cdTAwM2VyZXNwLCBJT19CVUZGRVJfTEVOR1RILCBmYWxzZSk7XG4tLVxuZHJpdmVycy9hY3BpL2J1cy5jPTkwMT1ib29sIGFjcGlfb2ZfbWF0Y2hfZGV2aWNlKGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZSAqYWRldixcbi0tXG5kcml2ZXJzL2FjcGkvYnVzLmMtOTEwLVxuZHJpdmVycy9hY3BpL2J1cy5jOjkxMTpcdG9mX2NvbXBhdGlibGUgPSBhZGV2LVx1MDAzZWRhdGEub2ZfY29tcGF0aWJsZTtcbmRyaXZlcnMvYWNwaS9idXMuYy05MTItXHRpZiAoIW9mX21hdGNoX3RhYmxlIHx8ICFvZl9jb21wYXRpYmxlKVxuLS1cbmRyaXZlcnMvYWNwaS9idXMuYz05Mzc9c3RhdGljIGJvb2wgYWNwaV9vZl9tb2RhbGlhcyhzdHJ1Y3QgYWNwaV9kZXZpY2UgKmFkZXYsXG4tLVxuZHJpdmVycy9hY3BpL2J1cy5jLTk0My1cbmRyaXZlcnMvYWNwaS9idXMuYzo5NDQ6XHRvZl9jb21wYXRpYmxlID0gYWRldi1cdTAwM2VkYXRhLm9mX2NvbXBhdGlibGU7XG5kcml2ZXJzL2FjcGkvYnVzLmMtOTQ1LVx0aWYgKCFvZl9jb21wYXRpYmxlKVxuLS1cbmRyaXZlcnMvYWNwaS9kZXZpY2Vfc3lzZnMuYz0xOTI9c3RhdGljIGludCBjcmVhdGVfb2ZfbW9kYWxpYXMoY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlICphY3BpX2RldiwgY2hhciAqbW9kYWxpYXMsXG4tLVxuZHJpdmVycy9hY3BpL2RldmljZV9zeXNmcy5jLTIxNy1cbmRyaXZlcnMvYWNwaS9kZXZpY2Vfc3lzZnMuYzoyMTg6XHRvZl9jb21wYXRpYmxlID0gYWNwaV9kZXYtXHUwMDNlZGF0YS5vZl9jb21wYXRpYmxlO1xuZHJpdmVycy9hY3BpL2RldmljZV9zeXNmcy5jLTIxOS1cdGlmIChvZl9jb21wYXRpYmxlLVx1MDAzZXR5cGUgPT0gQUNQSV9UWVBFX1BBQ0tBR0UpIHtcbi0tXG5kcml2ZXJzL2FjcGkvZGV2aWNlX3N5c2ZzLmM9MjQwPWludCBfX2FjcGlfZGV2aWNlX3VldmVudF9tb2RhbGlhcyhjb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2UgKmFkZXYsXG4tLVxuZHJpdmVycy9hY3BpL2RldmljZV9zeXNmcy5jLTI1My1cbmRyaXZlcnMvYWNwaS9kZXZpY2Vfc3lzZnMuYzoyNTQ6XHRpZiAoYWRldi1cdTAwM2VkYXRhLm9mX2NvbXBhdGlibGUpXG5kcml2ZXJzL2FjcGkvZGV2aWNlX3N5c2ZzLmMtMjU1LVx0XHRsZW4gPSBjcmVhdGVfb2ZfbW9kYWxpYXMoYWRldiwgXHUwMDI2ZW52LVx1MDAzZWJ1ZltlbnYtXHUwMDNlYnVmbGVuIC0gMV0sXG4tLVxuZHJpdmVycy9hY3BpL2RldmljZV9zeXNmcy5jPTI4ND1zdGF0aWMgaW50IF9fYWNwaV9kZXZpY2VfbW9kYWxpYXMoY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlICphZGV2LCBjaGFyICpidWYsIGludCBzaXplKVxuLS1cbmRyaXZlcnMvYWNwaS9kZXZpY2Vfc3lzZnMuYy0zMDAtXHR9XG5kcml2ZXJzL2FjcGkvZGV2aWNlX3N5c2ZzLmM6MzAxOlx0aWYgKCFhZGV2LVx1MDAzZWRhdGEub2ZfY29tcGF0aWJsZSlcbmRyaXZlcnMvYWNwaS9kZXZpY2Vfc3lzZnMuYy0zMDItXHRcdHJldHVybiBsZW47XG4tLVxuZHJpdmVycy9hY3BpL2RldmljZV9zeXNmcy5jPTYzOT12b2lkIGFjcGlfZGV2aWNlX3NldHVwX2ZpbGVzKHN0cnVjdCBhY3BpX2RldmljZSAqZGV2KVxuZHJpdmVycy9hY3BpL2RldmljZV9zeXNmcy5jLTY0MC17XG5kcml2ZXJzL2FjcGkvZGV2aWNlX3N5c2ZzLmM6NjQxOlx0YWNwaV9leHBvc2Vfbm9uZGV2X3N1Ym5vZGVzKFx1MDAyNmRldi1cdTAwM2VkZXYua29iaiwgXHUwMDI2ZGV2LVx1MDAzZWRhdGEpO1xuZHJpdmVycy9hY3BpL2RldmljZV9zeXNmcy5jLTY0Mi19XG4tLVxuZHJpdmVycy9hY3BpL2RldmljZV9zeXNmcy5jPTY0OD12b2lkIGFjcGlfZGV2aWNlX3JlbW92ZV9maWxlcyhzdHJ1Y3QgYWNwaV9kZXZpY2UgKmRldilcbmRyaXZlcnMvYWNwaS9kZXZpY2Vfc3lzZnMuYy02NDkte1xuZHJpdmVycy9hY3BpL2RldmljZV9zeXNmcy5jOjY1MDpcdGFjcGlfaGlkZV9ub25kZXZfc3Vibm9kZXMoXHUwMDI2ZGV2LVx1MDAzZWRhdGEpO1xuZHJpdmVycy9hY3BpL2RldmljZV9zeXNmcy5jLTY1MS19XG4tLVxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM9MzQyPXN0YXRpYyB2b2lkIGFjcGlfaW5pdF9vZl9jb21wYXRpYmxlKHN0cnVjdCBhY3BpX2RldmljZSAqYWRldilcbi0tXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYy0zNDYtXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYzozNDc6XHRyZXQgPSBhY3BpX2RhdGFfZ2V0X3Byb3BlcnR5X2FycmF5KFx1MDAyNmFkZXYtXHUwMDNlZGF0YSwgXCYjMzQ7Y29tcGF0aWJsZVwmIzM0OyxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTM0OC1cdFx0XHRcdFx0ICAgQUNQSV9UWVBFX1NUUklORywgXHUwMDI2b2ZfY29tcGF0aWJsZSk7XG4tLVxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtMzYxLVx0fVxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM6MzYyOlx0YWRldi1cdTAwM2VkYXRhLm9mX2NvbXBhdGlibGUgPSBvZl9jb21wYXRpYmxlO1xuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtMzYzLVxuLS1cbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jPTU4NT12b2lkIGFjcGlfaW5pdF9wcm9wZXJ0aWVzKHN0cnVjdCBhY3BpX2RldmljZSAqYWRldilcbi0tXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYy01OTEtXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYzo1OTI6XHRJTklUX0xJU1RfSEVBRChcdTAwMjZhZGV2LVx1MDAzZWRhdGEucHJvcGVydGllcyk7XG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYzo1OTM6XHRJTklUX0xJU1RfSEVBRChcdTAwMjZhZGV2LVx1MDAzZWRhdGEuc3Vibm9kZXMpO1xuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtNTk0LVxuLS1cbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTYxMy1cbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjYxNDpcdGlmIChhY3BpX2V4dHJhY3RfcHJvcGVydGllcyhhZGV2LVx1MDAzZWhhbmRsZSwgYnVmLnBvaW50ZXIsIFx1MDAyNmFkZXYtXHUwMDNlZGF0YSkpIHtcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjYxNTpcdFx0YWRldi1cdTAwM2VkYXRhLnBvaW50ZXIgPSBidWYucG9pbnRlcjtcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTYxNi1cdFx0aWYgKGFjcGlfb2YpXG4tLVxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtNjE5LVx0aWYgKGFjcGlfZW51bWVyYXRlX25vbmRldl9zdWJub2RlcyhhZGV2LVx1MDAzZWhhbmRsZSwgYnVmLnBvaW50ZXIsXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYzo2MjA6XHRcdFx0XHRcdFx1MDAyNmFkZXYtXHUwMDNlZGF0YSwgYWNwaV9md25vZGVfaGFuZGxlKGFkZXYpKSlcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjYyMTpcdFx0YWRldi1cdTAwM2VkYXRhLnBvaW50ZXIgPSBidWYucG9pbnRlcjtcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTYyMi1cbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjYyMzpcdGlmICghYWRldi1cdTAwM2VkYXRhLnBvaW50ZXIpIHtcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTYyNC1cdFx0YWNwaV9oYW5kbGVfZGVidWcoYWRldi1cdTAwM2VoYW5kbGUsIFwmIzM0O0ludmFsaWQgX0RTRCBkYXRhLCBza2lwcGluZ1xcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtNjI2LVx0fSBlbHNlIHtcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjYyNzpcdFx0aWYgKCFhY3BpX3RpZV9ub25kZXZfc3Vibm9kZXMoXHUwMDI2YWRldi1cdTAwM2VkYXRhKSlcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjYyODpcdFx0XHRhY3BpX3VudGllX25vbmRldl9zdWJub2RlcyhcdTAwMjZhZGV2LVx1MDAzZWRhdGEpO1xuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtNjI5LVx0fVxuLS1cbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTYzNS1cbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjYzNjpcdGlmICghYWRldi1cdTAwM2VkYXRhLnBvaW50ZXIpXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYy02MzctXHRcdGFjcGlfZXh0cmFjdF9hcHBsZV9wcm9wZXJ0aWVzKGFkZXYpO1xuLS1cbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jPTY3Mz12b2lkIGFjcGlfZnJlZV9wcm9wZXJ0aWVzKHN0cnVjdCBhY3BpX2RldmljZSAqYWRldilcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTY3NC17XG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYzo2NzU6XHRhY3BpX3VudGllX25vbmRldl9zdWJub2RlcyhcdTAwMjZhZGV2LVx1MDAzZWRhdGEpO1xuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM6Njc2Olx0YWNwaV9kZXN0cm95X25vbmRldl9zdWJub2RlcyhcdTAwMjZhZGV2LVx1MDAzZWRhdGEuc3Vibm9kZXMpO1xuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM6Njc3Olx0QUNQSV9GUkVFKCh2b2lkICopYWRldi1cdTAwM2VkYXRhLnBvaW50ZXIpO1xuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM6Njc4Olx0YWRldi1cdTAwM2VkYXRhLm9mX2NvbXBhdGlibGUgPSBOVUxMO1xuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM6Njc5Olx0YWRldi1cdTAwM2VkYXRhLnBvaW50ZXIgPSBOVUxMO1xuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM6NjgwOlx0YWNwaV9mcmVlX2RldmljZV9wcm9wZXJ0aWVzKFx1MDAyNmFkZXYtXHUwMDNlZGF0YS5wcm9wZXJ0aWVzKTtcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTY4MS19XG4tLVxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM9NzQ4PWludCBhY3BpX2Rldl9nZXRfcHJvcGVydHkoY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlICphZGV2LCBjb25zdCBjaGFyICpuYW1lLFxuLS1cbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTc1MC17XG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYzo3NTE6XHRyZXR1cm4gYWRldiA/IGFjcGlfZGF0YV9nZXRfcHJvcGVydHkoXHUwMDI2YWRldi1cdTAwM2VkYXRhLCBuYW1lLCB0eXBlLCBvYmopIDogLUVJTlZBTDtcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTc1Mi19XG4tLVxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM9NzU2PWFjcGlfZGV2aWNlX2RhdGFfb2Zfbm9kZShjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlKVxuLS1cbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTc1OS1cdFx0Y29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlICphZGV2ID0gdG9fYWNwaV9kZXZpY2Vfbm9kZShmd25vZGUpO1xuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM6NzYwOlx0XHRyZXR1cm4gXHUwMDI2YWRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtNzYxLVx0fVxuLS1cbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jPTEzMzg9YWNwaV9nZXRfbmV4dF9zdWJub2RlKGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXG4tLVxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtMTM2Ny1cdFx0aWYgKGFkZXYpXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYzoxMzY4Olx0XHRcdGhlYWQgPSBcdTAwMjZhZGV2LVx1MDAzZWRhdGEuc3Vibm9kZXM7XG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYy0xMzY5LVx0XHRlbHNlIGlmIChkYXRhKVxuLS1cbmRyaXZlcnMvYWNwaS9zY2FuLmM9MjI5MT1zdGF0aWMgaW50IGFjcGlfZ2VuZXJpY19kZXZpY2VfYXR0YWNoKHN0cnVjdCBhY3BpX2RldmljZSAqYWRldixcbi0tXG5kcml2ZXJzL2FjcGkvc2Nhbi5jLTIyOTctXHQgKi9cbmRyaXZlcnMvYWNwaS9zY2FuLmM6MjI5ODpcdGlmIChhZGV2LVx1MDAzZWRhdGEub2ZfY29tcGF0aWJsZSlcbmRyaXZlcnMvYWNwaS9zY2FuLmMtMjI5OS1cdFx0YWNwaV9kZWZhdWx0X2VudW1lcmF0aW9uKGFkZXYpO1xuLS1cbmRyaXZlcnMvYWNwaS94ODYvYXBwbGUuYz0yOD12b2lkIGFjcGlfZXh0cmFjdF9hcHBsZV9wcm9wZXJ0aWVzKHN0cnVjdCBhY3BpX2RldmljZSAqYWRldilcbi0tXG5kcml2ZXJzL2FjcGkveDg2L2FwcGxlLmMtMTQxLVxuZHJpdmVycy9hY3BpL3g4Ni9hcHBsZS5jOjE0MjpcdGFkZXYtXHUwMDNlZGF0YS5wb2ludGVyID0gbmV3cHJvcHM7XG5kcml2ZXJzL2FjcGkveDg2L2FwcGxlLmM6MTQzOlx0YWNwaV9kYXRhX2FkZF9wcm9wcyhcdTAwMjZhZGV2LVx1MDAzZWRhdGEsIFx1MDAyNmFwcGxlX3BycF9ndWlkLCBuZXdwcm9wcyk7XG5kcml2ZXJzL2FjcGkveDg2L2FwcGxlLmMtMTQ0LVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTc3Nz1zdGF0aWMgc3RydWN0IG51bGxiX2RldmljZSAqbnVsbF9hbGxvY19kZXYodm9pZClcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy03OTAtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo3OTE6XHRJTklUX1JBRElYX1RSRUUoXHUwMDI2ZGV2LVx1MDAzZWRhdGEsIEdGUF9BVE9NSUMpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzkyLVx0SU5JVF9SQURJWF9UUkVFKFx1MDAyNmRldi1cdTAwM2VjYWNoZSwgR0ZQX0FUT01JQyk7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9OTAwPXN0YXRpYyB2b2lkIG51bGxfZnJlZV9zZWN0b3Ioc3RydWN0IG51bGxiICpudWxsYiwgc2VjdG9yX3Qgc2VjdG9yLFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTkwNy1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjkwODpcdHJvb3QgPSBpc19jYWNoZSA/IFx1MDAyNm51bGxiLVx1MDAzZWRldi1cdTAwM2VjYWNoZSA6IFx1MDAyNm51bGxiLVx1MDAzZWRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtOTA5LVx0aWR4ID0gc2VjdG9yIFx1MDAzZVx1MDAzZSBQQUdFX1NFQ1RPUlNfU0hJRlQ7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9OTI2PXN0YXRpYyBzdHJ1Y3QgbnVsbGJfcGFnZSAqbnVsbF9yYWRpeF90cmVlX2luc2VydChzdHJ1Y3QgbnVsbGIgKm51bGxiLCB1NjQgaWR4LFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTkzMC1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjkzMTpcdHJvb3QgPSBpc19jYWNoZSA/IFx1MDAyNm51bGxiLVx1MDAzZWRldi1cdTAwM2VjYWNoZSA6IFx1MDAyNm51bGxiLVx1MDAzZWRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtOTMyLVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTk0Mz1zdGF0aWMgdm9pZCBudWxsX2ZyZWVfZGV2aWNlX3N0b3JhZ2Uoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LCBib29sIGlzX2NhY2hlKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTk0OS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjk1MDpcdHJvb3QgPSBpc19jYWNoZSA/IFx1MDAyNmRldi1cdTAwM2VjYWNoZSA6IFx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtOTUxLVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTk3Mj1zdGF0aWMgc3RydWN0IG51bGxiX3BhZ2UgKl9fbnVsbF9sb29rdXBfcGFnZShzdHJ1Y3QgbnVsbGIgKm51bGxiLFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTk4Mi1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjk4MzpcdHJvb3QgPSBpc19jYWNoZSA/IFx1MDAyNm51bGxiLVx1MDAzZWRldi1cdTAwM2VjYWNoZSA6IFx1MDAyNm51bGxiLVx1MDAzZWRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtOTg0LVx0dF9wYWdlID0gcmFkaXhfdHJlZV9sb29rdXAocm9vdCwgaWR4KTtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0xMDQwPXN0YXRpYyBpbnQgbnVsbF9mbHVzaF9jYWNoZV9wYWdlKHN0cnVjdCBudWxsYiAqbnVsbGIsIHN0cnVjdCBudWxsYl9wYWdlICpjX3BhZ2UpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTA1NS1cdFx0aWYgKHRfcGFnZSBcdTAwMjZcdTAwMjYgbnVsbF9wYWdlX2VtcHR5KHRfcGFnZSkpIHtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjEwNTY6XHRcdFx0cmV0ID0gcmFkaXhfdHJlZV9kZWxldGVfaXRlbShcdTAwMjZudWxsYi1cdTAwM2VkZXYtXHUwMDNlZGF0YSxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEwNTctXHRcdFx0XHRpZHgsIHRfcGFnZSk7XG4tLVxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmM9MzI2PXN0YXRpYyBpbnQgYnRtdGtzZGlvX2Z3X3BtY3RybChzdHJ1Y3QgYnRtdGtzZGlvX2RldiAqYmRldilcbi0tXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYy0zMzItXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYzozMzM6XHRpZiAoYmRldi1cdTAwM2VkYXRhLVx1MDAzZWxwX21ib3hfc3VwcG9ydGVkIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmMtMzM0LVx0ICAgIHRlc3RfYml0KEJUTVRLU0RJT19QQVRDSF9FTkFCTEVELCBcdTAwMjZiZGV2LVx1MDAzZXR4X3N0YXRlKSkge1xuLS1cbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jPTM2Mz1zdGF0aWMgaW50IGJ0bXRrc2Rpb19kcnZfcG1jdHJsKHN0cnVjdCBidG10a3NkaW9fZGV2ICpiZGV2KVxuLS1cbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jLTM3Ny1cbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jOjM3ODpcdGlmICghZXJyIFx1MDAyNlx1MDAyNiBiZGV2LVx1MDAzZWRhdGEtXHUwMDNlbHBfbWJveF9zdXBwb3J0ZWQgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYy0zNzktXHQgICAgdGVzdF9iaXQoQlRNVEtTRElPX1BBVENIX0VOQUJMRUQsIFx1MDAyNmJkZXYtXHUwMDNldHhfc3RhdGUpKVxuLS1cbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jPTU1OD1zdGF0aWMgdm9pZCBidG10a3NkaW9fdHhyeF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYy01OTEtXHRcdGlmICgoaW50X3N0YXR1cyBcdTAwMjYgRldfTUFJTEJPWF9JTlQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmM6NTkyOlx0XHQgICAgYmRldi1cdTAwM2VkYXRhLVx1MDAzZWNoaXBpZCA9PSAweDc5MjEpIHtcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jLTU5My1cdFx0XHRzZGlvX3dyaXRlbChiZGV2LVx1MDAzZWZ1bmMsIFBIMkRTTTBSX0RSSVZFUl9PV04sXG4tLVxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmM9MTA5Mz1zdGF0aWMgaW50IGJ0bXRrc2Rpb19zZXR1cChzdHJ1Y3QgaGNpX2RldiAqaGRldilcbi0tXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYy0xMTA0LVxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmM6MTEwNTpcdHN3aXRjaCAoYmRldi1cdTAwM2VkYXRhLVx1MDAzZWNoaXBpZCkge1xuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmMtMTEwNi1cdGNhc2UgMHg3OTAyOlxuLS1cbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jLTExNzEtXHRjYXNlIDB4NzY2ODpcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jOjExNzI6XHRcdGVyciA9IG10NzZ4eF9zZXR1cChoZGV2LCBiZGV2LVx1MDAzZWRhdGEtXHUwMDNlZnduYW1lKTtcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jLTExNzMtXHRcdGlmIChlcnIgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmMtMTE4My1cbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jOjExODQ6XHRpZiAoYmRldi1cdTAwM2VkYXRhLVx1MDAzZXBtX3J1bnRpbWVfc3VwcG9ydGVkKSB7XG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYy0xMTg1LVx0XHRwbV9ydW50aW1lX3NldF9hdXRvc3VzcGVuZF9kZWxheShiZGV2LVx1MDAzZWRldixcbi0tXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYz0xMjcyPXN0YXRpYyB2b2lkIGJ0bXRrc2Rpb19yZXNldChzdHJ1Y3QgaGNpX2RldiAqaGRldilcbi0tXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYy0xMjc3LVxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmM6MTI3ODpcdGlmICghYmRldi1cdTAwM2VyZXNldCB8fCBiZGV2LVx1MDAzZWRhdGEtXHUwMDNlY2hpcGlkICE9IDB4NzkyMSlcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jLTEyNzktXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYz0xMzMyPXN0YXRpYyBib29sIGJ0bXRrc2Rpb19zZGlvX3dha2V1cChzdHJ1Y3QgaGNpX2RldiAqaGRldilcbi0tXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYy0xMzQzLVxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmM6MTM0NDpcdGlmIChtYXlfd2FrZXVwIFx1MDAyNlx1MDAyNiBiZGV2LVx1MDAzZWRhdGEtXHUwMDNlY2hpcGlkID09IDB4NzkyMSkge1xuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmMtMTM0NS1cdFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYz0xMzU4PXN0YXRpYyBpbnQgYnRtdGtzZGlvX3Byb2JlKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMsXG4tLVxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmMtMTM3MC1cbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jOjEzNzE6XHRiZGV2LVx1MDAzZWRhdGEgPSAodm9pZCAqKWlkLVx1MDAzZWRyaXZlcl9kYXRhO1xuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmM6MTM3MjpcdGlmICghYmRldi1cdTAwM2VkYXRhKVxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmMtMTM3My1cdFx0cmV0dXJuIC1FTk9ERVY7XG4tLVxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGt1YXJ0LmM9NTg5PXN0YXRpYyBpbnQgYnRtdGt1YXJ0X3NldHVwKHN0cnVjdCBoY2lfZGV2ICpoZGV2KVxuLS1cbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrdWFydC5jLTY0Mi1cdC8qIFNldHVwIGEgZmlybXdhcmUgd2hpY2ggdGhlIGRldmljZSBkZWZpbml0ZWx5IHJlcXVpcmVzICovXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3VhcnQuYzo2NDM6XHRlcnIgPSBidG10a19zZXR1cF9maXJtd2FyZShoZGV2LCBiZGV2LVx1MDAzZWRhdGEtXHUwMDNlZnduYW1lLCBtdGtfaGNpX3dtdF9zeW5jKTtcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrdWFydC5jLTY0NC1cdGlmIChlcnIgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGt1YXJ0LmM9ODI4PXN0YXRpYyBpbnQgYnRtdGt1YXJ0X3Byb2JlKHN0cnVjdCBzZXJkZXZfZGV2aWNlICpzZXJkZXYpXG4tLVxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGt1YXJ0LmMtODM3LVxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGt1YXJ0LmM6ODM4Olx0YmRldi1cdTAwM2VkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnNlcmRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9ibHVldG9vdGgvYnRtdGt1YXJ0LmM6ODM5Olx0aWYgKCFiZGV2LVx1MDAzZWRhdGEpXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3VhcnQuYy04NDAtXHRcdHJldHVybiAtRU5PREVWO1xuLS1cbmRyaXZlcnMvY3J5cHRvL2FzcGVlZC9hc3BlZWQtYWNyeS5jPTIxMD1zdGF0aWMgdm9pZCBhc3BlZWRfYWNyeV9yc2Ffc2dfY29weV90b19idWZmZXIoc3RydWN0IGFzcGVlZF9hY3J5X2RldiAqYWNyeV9kZXYsXG4tLVxuZHJpdmVycy9jcnlwdG8vYXNwZWVkL2FzcGVlZC1hY3J5LmMtMjIyLVx0Zm9yIChqID0gbmJ5dGVzIC0gMTsgaiBcdTAwM2U9IDA7IGotLSkge1xuZHJpdmVycy9jcnlwdG8vYXNwZWVkL2FzcGVlZC1hY3J5LmM6MjIzOlx0XHRkYXRhX2lkeCA9IGFjcnlfZGV2LVx1MDAzZWRhdGFfYnl0ZV9tYXBwaW5nW2ldO1xuZHJpdmVycy9jcnlwdG8vYXNwZWVkL2FzcGVlZC1hY3J5LmMtMjI0LVx0XHRidWZbZGF0YV9pZHhdID0gIGRyYW1fYnVmZmVyW2pdO1xuLS1cbmRyaXZlcnMvY3J5cHRvL2FzcGVlZC9hc3BlZWQtYWNyeS5jLTIyOC1cdGZvciAoOyBpIFx1MDAzYyBBU1BFRURfQUNSWV9TUkFNX01BWF9MRU47IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL2NyeXB0by9hc3BlZWQvYXNwZWVkLWFjcnkuYzoyMjk6XHRcdGRhdGFfaWR4ID0gYWNyeV9kZXYtXHUwMDNlZGF0YV9ieXRlX21hcHBpbmdbaV07XG5kcml2ZXJzL2NyeXB0by9hc3BlZWQvYXNwZWVkLWFjcnkuYy0yMzAtXHRcdGJ1ZltkYXRhX2lkeF0gPSAwO1xuLS1cbmRyaXZlcnMvY3J5cHRvL2FzcGVlZC9hc3BlZWQtYWNyeS5jPTI5OT1zdGF0aWMgaW50IGFzcGVlZF9hY3J5X3JzYV90cmFuc2ZlcihzdHJ1Y3QgYXNwZWVkX2FjcnlfZGV2ICphY3J5X2Rldilcbi0tXG5kcml2ZXJzL2NyeXB0by9hc3BlZWQvYXNwZWVkLWFjcnkuYy0zMTktXHRmb3IgKGogPSBBU1BFRURfQUNSWV9TUkFNX01BWF9MRU4gLSAxOyBqIFx1MDAzZT0gMDsgai0tKSB7XG5kcml2ZXJzL2NyeXB0by9hc3BlZWQvYXNwZWVkLWFjcnkuYzozMjA6XHRcdGRhdGFfaWR4ID0gYWNyeV9kZXYtXHUwMDNlZGF0YV9ieXRlX21hcHBpbmdbal07XG5kcml2ZXJzL2NyeXB0by9hc3BlZWQvYXNwZWVkLWFjcnkuYy0zMjEtXHRcdGlmIChyZWFkYihzcmFtX2J1ZmZlciAmIzQzOyBkYXRhX2lkeCkgPT0gMCBcdTAwMjZcdTAwMjYgbGVhZGluZ196ZXJvKSB7XG4tLVxuZHJpdmVycy9jcnlwdG8vYXNwZWVkL2FzcGVlZC1hY3J5LmM9Njc3PXN0YXRpYyB2b2lkIGFzcGVlZF9hY3J5X3NyYW1fbWFwcGluZyhzdHJ1Y3QgYXNwZWVkX2FjcnlfZGV2ICphY3J5X2Rldilcbi0tXG5kcml2ZXJzL2NyeXB0by9hc3BlZWQvYXNwZWVkLWFjcnkuYy02ODMtXHRcdGFjcnlfZGV2LVx1MDAzZW1vZF9kd19tYXBwaW5nW2ldID0gaiAmIzQzOyA0O1xuZHJpdmVycy9jcnlwdG8vYXNwZWVkL2FzcGVlZC1hY3J5LmM6Njg0Olx0XHRhY3J5X2Rldi1cdTAwM2VkYXRhX2J5dGVfbWFwcGluZ1soaSAqIDQpXSA9IChqICYjNDM7IDgpICogNDtcbmRyaXZlcnMvY3J5cHRvL2FzcGVlZC9hc3BlZWQtYWNyeS5jOjY4NTpcdFx0YWNyeV9kZXYtXHUwMDNlZGF0YV9ieXRlX21hcHBpbmdbKGkgKiA0KSAmIzQzOyAxXSA9IChqICYjNDM7IDgpICogNCAmIzQzOyAxO1xuZHJpdmVycy9jcnlwdG8vYXNwZWVkL2FzcGVlZC1hY3J5LmM6Njg2Olx0XHRhY3J5X2Rldi1cdTAwM2VkYXRhX2J5dGVfbWFwcGluZ1soaSAqIDQpICYjNDM7IDJdID0gKGogJiM0MzsgOCkgKiA0ICYjNDM7IDI7XG5kcml2ZXJzL2NyeXB0by9hc3BlZWQvYXNwZWVkLWFjcnkuYzo2ODc6XHRcdGFjcnlfZGV2LVx1MDAzZWRhdGFfYnl0ZV9tYXBwaW5nWyhpICogNCkgJiM0MzsgM10gPSAoaiAmIzQzOyA4KSAqIDQgJiM0MzsgMztcbmRyaXZlcnMvY3J5cHRvL2FzcGVlZC9hc3BlZWQtYWNyeS5jLTY4OC1cdFx0aiYjNDM7JiM0Mzs7XG4tLVxuZHJpdmVycy9lZGFjL2FsdGVyYV9lZGFjLmM9MTUwMj1zdGF0aWMgaW50IGFsdHJfcG9ydGJfc2V0dXAoc3RydWN0IGFsdHJfZWRhY19kZXZpY2VfZGV2ICpkZXZpY2UpXG4tLVxuZHJpdmVycy9lZGFjL2FsdGVyYV9lZGFjLmMtMTU0Mi1cdGFsdGRldi1cdTAwM2VlZGFjX2RldiA9IGRjaTtcbmRyaXZlcnMvZWRhYy9hbHRlcmFfZWRhYy5jOjE1NDM6XHRhbHRkZXYtXHUwMDNlZGF0YSA9IHBydjtcbmRyaXZlcnMvZWRhYy9hbHRlcmFfZWRhYy5jLTE1NDQtXHRkY2ktXHUwMDNlZGV2ID0gXHUwMDI2YWx0ZGV2LVx1MDAzZWRkZXY7XG4tLVxuZHJpdmVycy9lZGFjL2FsdGVyYV9lZGFjLmM9MTg4OT1zdGF0aWMgaW50IGFsdHJfZWRhY19hMTBfZGV2aWNlX2FkZChzdHJ1Y3QgYWx0cl9hcnJpYTEwX2VkYWMgKmVkYWMsXG4tLVxuZHJpdmVycy9lZGFjL2FsdGVyYV9lZGFjLmMtMTk0My1cdGFsdGRldi1cdTAwM2VlZGFjX2RldiA9IGRjaTtcbmRyaXZlcnMvZWRhYy9hbHRlcmFfZWRhYy5jOjE5NDQ6XHRhbHRkZXYtXHUwMDNlZGF0YSA9IHBydjtcbmRyaXZlcnMvZWRhYy9hbHRlcmFfZWRhYy5jLTE5NDUtXHRhbHRkZXYtXHUwMDNlZGRldiA9ICplZGFjLVx1MDAzZWRldjtcbi0tXG5kcml2ZXJzL2VkYWMvYWx0ZXJhX2VkYWMuYy0xOTU3LVx0LyogQ2hlY2sgc3BlY2lmaWMgZGVwZW5kZW5jaWVzIGZvciB0aGUgbW9kdWxlICovXG5kcml2ZXJzL2VkYWMvYWx0ZXJhX2VkYWMuYzoxOTU4Olx0aWYgKGFsdGRldi1cdTAwM2VkYXRhLVx1MDAzZXNldHVwKSB7XG5kcml2ZXJzL2VkYWMvYWx0ZXJhX2VkYWMuYzoxOTU5Olx0XHRyYyA9IGFsdGRldi1cdTAwM2VkYXRhLVx1MDAzZXNldHVwKGFsdGRldik7XG5kcml2ZXJzL2VkYWMvYWx0ZXJhX2VkYWMuYy0xOTYwLVx0XHRpZiAocmMpXG4tLVxuZHJpdmVycy9ncGlvL2dwaW8tcmRjMzIxeC5jPTExOT1zdGF0aWMgaW50IHJkYzMyMXhfZ3Bpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvZ3Bpby9ncGlvLXJkYzMyMXguYy0xNzItXHRcdFx0XHRcdHJkYzMyMXhfZ3Bpb19kZXYtXHUwMDNlcmVnMV9kYXRhX2Jhc2UsXG5kcml2ZXJzL2dwaW8vZ3Bpby1yZGMzMjF4LmM6MTczOlx0XHRcdFx0XHRcdTAwMjZyZGMzMjF4X2dwaW9fZGV2LVx1MDAzZWRhdGFfcmVnWzBdKTtcbmRyaXZlcnMvZ3Bpby9ncGlvLXJkYzMyMXguYy0xNzQtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvZ3Bpby9ncGlvLXJkYzMyMXguYy0xNzgtXHRcdFx0XHRcdHJkYzMyMXhfZ3Bpb19kZXYtXHUwMDNlcmVnMl9kYXRhX2Jhc2UsXG5kcml2ZXJzL2dwaW8vZ3Bpby1yZGMzMjF4LmM6MTc5Olx0XHRcdFx0XHRcdTAwMjZyZGMzMjF4X2dwaW9fZGV2LVx1MDAzZWRhdGFfcmVnWzFdKTtcbmRyaXZlcnMvZ3Bpby9ncGlvLXJkYzMyMXguYy0xODAtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvZ3Bpby9ncGlvbGliLmM9MTEwMT1zdGF0aWMgdm9pZCBncGlvY2hpcF9zZXRfZGF0YShzdHJ1Y3QgZ3Bpb19jaGlwICpnYywgdm9pZCAqZGF0YSlcbmRyaXZlcnMvZ3Bpby9ncGlvbGliLmMtMTEwMi17XG5kcml2ZXJzL2dwaW8vZ3Bpb2xpYi5jOjExMDM6XHRnYy1cdTAwM2VncGlvZGV2LVx1MDAzZWRhdGEgPSBkYXRhO1xuZHJpdmVycy9ncGlvL2dwaW9saWIuYy0xMTA0LX1cbi0tXG5kcml2ZXJzL2dwaW8vZ3Bpb2xpYi5jPTExMTM9dm9pZCAqZ3Bpb2NoaXBfZ2V0X2RhdGEoc3RydWN0IGdwaW9fY2hpcCAqZ2MpXG5kcml2ZXJzL2dwaW8vZ3Bpb2xpYi5jLTExMTQte1xuZHJpdmVycy9ncGlvL2dwaW9saWIuYzoxMTE1Olx0cmV0dXJuIGdjLVx1MDAzZWdwaW9kZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvZ3Bpby9ncGlvbGliLmMtMTExNi19XG4tLVxuZHJpdmVycy9od21vbi9ucGNtNzUwLXB3bS1mYW4uYz04MTE9bnBjbTd4eF9wd21fY3pfc2V0X2N1cl9zdGF0ZShzdHJ1Y3QgdGhlcm1hbF9jb29saW5nX2RldmljZSAqdGNkZXYsXG4tLVxuZHJpdmVycy9od21vbi9ucGNtNzUwLXB3bS1mYW4uYy04MjAtXHRjZGV2LVx1MDAzZWN1cl9zdGF0ZSA9IHN0YXRlO1xuZHJpdmVycy9od21vbi9ucGNtNzUwLXB3bS1mYW4uYzo4MjE6XHRyZXQgPSBucGNtN3h4X3B3bV9jb25maWdfc2V0KGNkZXYtXHUwMDNlZGF0YSwgY2Rldi1cdTAwM2Vwd21fcG9ydCxcbmRyaXZlcnMvaHdtb24vbnBjbTc1MC1wd20tZmFuLmMtODIyLVx0XHRcdFx0ICAgICBjZGV2LVx1MDAzZWNvb2xpbmdfbGV2ZWxzW2NkZXYtXHUwMDNlY3VyX3N0YXRlXSk7XG4tLVxuZHJpdmVycy9od21vbi9ucGNtNzUwLXB3bS1mYW4uYz04MzM9c3RhdGljIGludCBucGNtN3h4X2NyZWF0ZV9wd21fY29vbGluZyhzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9od21vbi9ucGNtNzUwLXB3bS1mYW4uYy04NjYtXG5kcml2ZXJzL2h3bW9uL25wY203NTAtcHdtLWZhbi5jOjg2NzpcdGNkZXYtXHUwMDNlZGF0YSA9IGRhdGE7XG5kcml2ZXJzL2h3bW9uL25wY203NTAtcHdtLWZhbi5jLTg2OC1cdGNkZXYtXHUwMDNlcHdtX3BvcnQgPSBwd21fcG9ydDtcbi0tXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWJyY21zdGIuYz0xODE9c3RhdGljIGlubGluZSBpbnQgYnJjbXN0Yl9pMmNfZ2V0X3hmZXJzeihzdHJ1Y3QgYnJjbXN0Yl9pMmNfZGV2ICpkZXYpXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWJyY21zdGIuYy0xODIte1xuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1icmNtc3RiLmM6MTgzOlx0cmV0dXJuIChOX0RBVEFfUkVHUyAqIGRldi1cdTAwM2VkYXRhX3JlZ3N6KTtcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtYnJjbXN0Yi5jLTE4NC19XG4tLVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1icmNtc3RiLmM9MTg2PXN0YXRpYyBpbmxpbmUgaW50IGJyY21zdGJfaTJjX2dldF9kYXRhX3JlZ3N6KHN0cnVjdCBicmNtc3RiX2kyY19kZXYgKmRldilcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtYnJjbXN0Yi5jLTE4Ny17XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWJyY21zdGIuYzoxODg6XHRyZXR1cm4gZGV2LVx1MDAzZWRhdGFfcmVnc3o7XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWJyY21zdGIuYy0xODktfVxuLS1cbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtYnJjbXN0Yi5jPTYxMj1zdGF0aWMgaW50IGJyY21zdGJfaTJjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1icmNtc3RiLmMtNjc3LVx0XHRcdFx0ICAgIFwmIzM0O2JyY20sYnJjbXBlci1pMmNcJiMzNDspKVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1icmNtc3RiLmM6Njc4Olx0XHRkZXYtXHUwMDNlZGF0YV9yZWdzeiA9IHNpemVvZih1OCk7XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWJyY21zdGIuYy02NzktXHRlbHNlXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWJyY21zdGIuYzo2ODA6XHRcdGRldi1cdTAwM2VkYXRhX3JlZ3N6ID0gc2l6ZW9mKHUzMik7XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWJyY21zdGIuYy02ODEtXG4tLVxuZHJpdmVycy9paW8vYWRjL3RpX2FtMzM1eF9hZGMuYz0xOTE9c3RhdGljIGlycXJldHVybl90IHRpYWRjX3dvcmtlcl9oKGludCBpcnEsIHZvaWQgKnByaXZhdGUpXG4tLVxuZHJpdmVycy9paW8vYWRjL3RpX2FtMzM1eF9hZGMuYy0xOTUtXHRpbnQgaSwgaywgZmlmbzFjb3VudCwgcmVhZDtcbmRyaXZlcnMvaWlvL2FkYy90aV9hbTMzNXhfYWRjLmM6MTk2Olx0dTE2ICpkYXRhID0gYWRjX2Rldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9paW8vYWRjL3RpX2FtMzM1eF9hZGMuYy0xOTctXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTQwMjI9c3RhdGljIGludCBtbHg1X2liX2RhdGFfZGlyZWN0X2luaXQoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTQwMzgtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6NDAzOTpcdElOSVRfTElTVF9IRUFEKFx1MDAyNmRldi1cdTAwM2VkYXRhX2RpcmVjdF9tcl9saXN0KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy00MDQwLVx0cmV0ID0gbWx4NV9kYXRhX2RpcmVjdF9pYl9yZWcoZGV2LCB2dWlkKTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9NDUwMT1zdGF0aWMgaW50IG1seDVfaWJfc3RhZ2VfaW5pdF9pbml0KHN0cnVjdCBtbHg1X2liX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy00NTQ1LVx0bXV0ZXhfaW5pdChcdTAwMjZkZXYtXHUwMDNlY2FwX21hc2tfbXV0ZXgpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjQ1NDY6XHRtdXRleF9pbml0KFx1MDAyNmRldi1cdTAwM2VkYXRhX2RpcmVjdF9sb2NrKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy00NTQ3LVx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2ZGV2LVx1MDAzZXFwX2xpc3QpO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz01MDgwPXZvaWQgbWx4NV9pYl9kYXRhX2RpcmVjdF9iaW5kKHN0cnVjdCBtbHg1X2liX2RldiAqaWJkZXYsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTUwODIte1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjUwODM6XHRtdXRleF9sb2NrKFx1MDAyNmliZGV2LVx1MDAzZWRhdGFfZGlyZWN0X2xvY2spO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjUwODQ6XHRpYmRldi1cdTAwM2VkYXRhX2RpcmVjdF9kZXYgPSBkZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6NTA4NTpcdG11dGV4X3VubG9jayhcdTAwMjZpYmRldi1cdTAwM2VkYXRhX2RpcmVjdF9sb2NrKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy01MDg2LX1cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9NTA4OD12b2lkIG1seDVfaWJfZGF0YV9kaXJlY3RfdW5iaW5kKHN0cnVjdCBtbHg1X2liX2RldiAqaWJkZXYpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNTA4OS17XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6NTA5MDpcdG11dGV4X2xvY2soXHUwMDI2aWJkZXYtXHUwMDNlZGF0YV9kaXJlY3RfbG9jayk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNTA5MS1cdG1seDVfaWJfcmV2b2tlX2RhdGFfZGlyZWN0X21ycyhpYmRldik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6NTA5MjpcdGliZGV2LVx1MDAzZWRhdGFfZGlyZWN0X2RldiA9IE5VTEw7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6NTA5MzpcdG11dGV4X3VubG9jayhcdTAwMjZpYmRldi1cdTAwM2VkYXRhX2RpcmVjdF9sb2NrKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy01MDk0LX1cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jPTk4NT1yZWdfdXNlcl9tcl9kbWFidWZfYnlfZGF0YV9kaXJlY3Qoc3RydWN0IGliX3BkICpwZCwgdTY0IG9mZnNldCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jLTk5OC1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmM6OTk5Olx0bXV0ZXhfbG9jayhcdTAwMjZkZXYtXHUwMDNlZGF0YV9kaXJlY3RfbG9jayk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jOjEwMDA6XHRkYXRhX2RpcmVjdF9kZXYgPSBkZXYtXHUwMDNlZGF0YV9kaXJlY3RfZGV2O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYy0xMDAxLVx0aWYgKCFkYXRhX2RpcmVjdF9kZXYpIHtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jLTEwMjktXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jOjEwMzA6XHRsaXN0X2FkZF90YWlsKFx1MDAyNnRvX21tcihjcm9zc2VkX21yKS1cdTAwM2VkZF9ub2RlLCBcdTAwMjZkZXYtXHUwMDNlZGF0YV9kaXJlY3RfbXJfbGlzdCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jLTEwMzEtXHR0b19tbXIoY3Jvc3NpbmdfbXIpLVx1MDAzZWRkX2Nyb3NzZWRfbXIgPSB0b19tbXIoY3Jvc3NlZF9tcik7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYy0xMDMzLWVuZDpcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmM6MTAzNDpcdG11dGV4X3VubG9jayhcdTAwMjZkZXYtXHUwMDNlZGF0YV9kaXJlY3RfbG9jayk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jLTEwMzUtXHRyZXR1cm4gcmV0ID8gRVJSX1BUUihyZXQpIDogY3Jvc3NpbmdfbXI7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYz0xMzM3PXN0YXRpYyBpbnQgbWx4NV9pYl9yZXZva2VfZGF0YV9kaXJlY3RfbXIoc3RydWN0IG1seDVfaWJfbXIgKm1yKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmMtMTM0Mi1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmM6MTM0MzpcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2ZGV2LVx1MDAzZWRhdGFfZGlyZWN0X2xvY2spO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYy0xMzQ0LVx0bXItXHUwMDNlcmV2b2tlZCA9IHRydWU7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYz0xMzUzPXZvaWQgbWx4NV9pYl9yZXZva2VfZGF0YV9kaXJlY3RfbXJzKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmMtMTM1Ni1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmM6MTM1NzpcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2ZGV2LVx1MDAzZWRhdGFfZGlyZWN0X2xvY2spO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYy0xMzU4LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYzoxMzU5Olx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG1yLCBuZXh0LCBcdTAwMjZkZXYtXHUwMDNlZGF0YV9kaXJlY3RfbXJfbGlzdCwgZGRfbm9kZSkge1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYy0xMzYwLVx0XHRsaXN0X2RlbChcdTAwMjZtci1cdTAwM2VkZF9ub2RlKTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jPTE1MDU9c3RhdGljIGludCBkZXJlZ19jcm9zc2luZ19kYXRhX2RpcmVjdF9tcihzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jLTE1MTQtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jOjE1MTU6XHRtdXRleF9sb2NrKFx1MDAyNmRldi1cdTAwM2VkYXRhX2RpcmVjdF9sb2NrKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmMtMTUxNi1cdGlmICghZGRfY3Jvc3NlZF9tci1cdTAwM2VyZXZva2VkKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmMtMTUxOS1cdHJldCA9IF9fbWx4NV9pYl9kZXJlZ19tcihcdTAwMjZkZF9jcm9zc2VkX21yLVx1MDAzZWlibXIpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYzoxNTIwOlx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRldi1cdTAwM2VkYXRhX2RpcmVjdF9sb2NrKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmMtMTUyMS1cdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvc3RkX3R5cGVzLmM9MTg5PXN0YXRpYyBpbnQgVVZFUkJTX0hBTkRMRVIoTUxYNV9JQl9NRVRIT0RfR0VUX0RBVEFfRElSRUNUX1NZU0ZTX1BBVEgpKFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3N0ZF90eXBlcy5jLTIwNC1cdGRldiA9IHRvX21kZXYoYy1cdTAwM2VpYnVjb250ZXh0LmRldmljZSk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9zdGRfdHlwZXMuYzoyMDU6XHRtdXRleF9sb2NrKFx1MDAyNmRldi1cdTAwM2VkYXRhX2RpcmVjdF9sb2NrKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3N0ZF90eXBlcy5jOjIwNjpcdGRhdGFfZGlyZWN0X2RldiA9IGRldi1cdTAwM2VkYXRhX2RpcmVjdF9kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9zdGRfdHlwZXMuYy0yMDctXHRpZiAoIWRhdGFfZGlyZWN0X2Rldikge1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3N0ZF90eXBlcy5jLTIyOC1cdGtmcmVlKGRldl9wYXRoKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3N0ZF90eXBlcy5jOjIyOTpcdG11dGV4X3VubG9jayhcdTAwMjZkZXYtXHUwMDNlZGF0YV9kaXJlY3RfbG9jayk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9zdGRfdHlwZXMuYy0yMzAtXHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvaW5wdXQva2V5Ym9hcmQvZ3Bpb19rZXlzX3BvbGxlZC5jPTg3PXN0YXRpYyB2b2lkIGdwaW9fa2V5c19wb2xsZWRfcG9sbChzdHJ1Y3QgaW5wdXRfZGV2ICppbnB1dClcbi0tXG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2dwaW9fa2V5c19wb2xsZWQuYy05Ni1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIHBkYXRhLVx1MDAzZW5idXR0b25zOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9pbnB1dC9rZXlib2FyZC9ncGlvX2tleXNfcG9sbGVkLmM6OTc6XHRcdHN0cnVjdCBncGlvX2tleXNfYnV0dG9uX2RhdGEgKmJkYXRhID0gXHUwMDI2YmRldi1cdTAwM2VkYXRhW2ldO1xuZHJpdmVycy9pbnB1dC9rZXlib2FyZC9ncGlvX2tleXNfcG9sbGVkLmMtOTgtXG4tLVxuZHJpdmVycy9pbnB1dC9rZXlib2FyZC9ncGlvX2tleXNfcG9sbGVkLmM9MjI2PXN0YXRpYyBpbnQgZ3Bpb19rZXlzX3BvbGxlZF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvaW5wdXQva2V5Ym9hcmQvZ3Bpb19rZXlzX3BvbGxlZC5jLTI3OC1cdFx0Y29uc3Qgc3RydWN0IGdwaW9fa2V5c19idXR0b24gKmJ1dHRvbiA9IFx1MDAyNnBkYXRhLVx1MDAzZWJ1dHRvbnNbaV07XG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2dwaW9fa2V5c19wb2xsZWQuYzoyNzk6XHRcdHN0cnVjdCBncGlvX2tleXNfYnV0dG9uX2RhdGEgKmJkYXRhID0gXHUwMDI2YmRldi1cdTAwM2VkYXRhW2ldO1xuZHJpdmVycy9pbnB1dC9rZXlib2FyZC9ncGlvX2tleXNfcG9sbGVkLmMtMjgwLVx0XHR1bnNpZ25lZCBpbnQgdHlwZSA9IGJ1dHRvbi1cdTAwM2V0eXBlID86IEVWX0tFWTtcbi0tXG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2dwaW9fa2V5c19wb2xsZWQuYy0zNjEtXHRcdGdwaW9fa2V5c19wb2xsZWRfY2hlY2tfc3RhdGUoaW5wdXQsIFx1MDAyNnBkYXRhLVx1MDAzZWJ1dHRvbnNbaV0sXG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2dwaW9fa2V5c19wb2xsZWQuYzozNjI6XHRcdFx0XHRcdCAgICAgXHUwMDI2YmRldi1cdTAwM2VkYXRhW2ldKTtcbmRyaXZlcnMvaW5wdXQva2V5Ym9hcmQvZ3Bpb19rZXlzX3BvbGxlZC5jLTM2My1cbi0tXG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2hpbF9rYmQuYz0xMDI9c3RhdGljIHZvaWQgaGlsX2Rldl9oYW5kbGVfY29tbWFuZF9yZXNwb25zZShzdHJ1Y3QgaGlsX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvaW5wdXQva2V5Ym9hcmQvaGlsX2tiZC5jLTEwOC1cdGlkeCA9IGRldi1cdTAwM2VpZHg0IC8gNDtcbmRyaXZlcnMvaW5wdXQva2V5Ym9hcmQvaGlsX2tiZC5jOjEwOTpcdHAgPSBkZXYtXHUwMDNlZGF0YVtpZHggLSAxXTtcbmRyaXZlcnMvaW5wdXQva2V5Ym9hcmQvaGlsX2tiZC5jLTExMC1cbi0tXG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2hpbF9rYmQuYy0xMzgtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBpZHg7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9pbnB1dC9rZXlib2FyZC9oaWxfa2JkLmM6MTM5Olx0XHRidWZbaV0gPSBkZXYtXHUwMDNlZGF0YVtpXSBcdTAwMjYgSElMX1BLVF9EQVRBX01BU0s7XG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2hpbF9rYmQuYy0xNDAtXHRmb3IgKDsgaSBcdTAwM2MgSElMX1BBQ0tFVF9NQVhfTEVOR1RIOyBpJiM0MzsmIzQzOylcbi0tXG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2hpbF9rYmQuYz0yNzQ9c3RhdGljIGlycXJldHVybl90IGhpbF9kZXZfaW50ZXJydXB0KHN0cnVjdCBzZXJpbyAqc2VyaW8sXG4tLVxuZHJpdmVycy9pbnB1dC9rZXlib2FyZC9oaWxfa2JkLmMtMjkwLVx0aWYgKCEoZGV2LVx1MDAzZWlkeDQgJSA0KSlcbmRyaXZlcnMvaW5wdXQva2V5Ym9hcmQvaGlsX2tiZC5jOjI5MTpcdFx0ZGV2LVx1MDAzZWRhdGFbaWR4XSA9IDA7XG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2hpbF9rYmQuYzoyOTI6XHRwYWNrZXQgPSBkZXYtXHUwMDNlZGF0YVtpZHhdO1xuZHJpdmVycy9pbnB1dC9rZXlib2FyZC9oaWxfa2JkLmMtMjkzLVx0cGFja2V0IHw9ICgoaGlsX3BhY2tldClkYXRhKSBcdTAwM2NcdTAwM2MgKCgzIC0gKGRldi1cdTAwM2VpZHg0ICUgNCkpICogOCk7XG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2hpbF9rYmQuYzoyOTQ6XHRkZXYtXHUwMDNlZGF0YVtpZHhdID0gcGFja2V0O1xuZHJpdmVycy9pbnB1dC9rZXlib2FyZC9oaWxfa2JkLmMtMjk1LVxuLS1cbmRyaXZlcnMvaW5wdXQvbWlzYy9rZXlzcGFuX3JlbW90ZS5jPTE0MT1zdGF0aWMgaW50IGtleXNwYW5fbG9hZF90ZXN0ZXIoc3RydWN0IHVzYl9rZXlzcGFuKiBkZXYsIGludCBiaXRzX25lZWRlZClcbmRyaXZlcnMvaW5wdXQvbWlzYy9rZXlzcGFuX3JlbW90ZS5jLTE0Mi17XG5kcml2ZXJzL2lucHV0L21pc2Mva2V5c3Bhbl9yZW1vdGUuYzoxNDM6XHRpZiAoZGV2LVx1MDAzZWRhdGEuYml0c19sZWZ0IFx1MDAzZT0gYml0c19uZWVkZWQpXG5kcml2ZXJzL2lucHV0L21pc2Mva2V5c3Bhbl9yZW1vdGUuYy0xNDQtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvaW5wdXQvbWlzYy9rZXlzcGFuX3JlbW90ZS5jLTE0OS1cdCAqL1xuZHJpdmVycy9pbnB1dC9taXNjL2tleXNwYW5fcmVtb3RlLmM6MTUwOlx0aWYgKGRldi1cdTAwM2VkYXRhLnBvcyBcdTAwM2U9IGRldi1cdTAwM2VkYXRhLmxlbikge1xuZHJpdmVycy9pbnB1dC9taXNjL2tleXNwYW5fcmVtb3RlLmMtMTUxLVx0XHRkZXZfZGJnKFx1MDAyNmRldi1cdTAwM2VpbnRlcmZhY2UtXHUwMDNlZGV2LFxuZHJpdmVycy9pbnB1dC9taXNjL2tleXNwYW5fcmVtb3RlLmMtMTUyLVx0XHRcdFwmIzM0OyVzIC0gRXJyb3IgcmFuIG91dCBvZiBkYXRhLiBwb3M6ICVkLCBsZW46ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9pbnB1dC9taXNjL2tleXNwYW5fcmVtb3RlLmM6MTUzOlx0XHRcdF9fZnVuY19fLCBkZXYtXHUwMDNlZGF0YS5wb3MsIGRldi1cdTAwM2VkYXRhLmxlbik7XG5kcml2ZXJzL2lucHV0L21pc2Mva2V5c3Bhbl9yZW1vdGUuYy0xNTQtXHRcdHJldHVybiAtMTtcbi0tXG5kcml2ZXJzL2lucHV0L21pc2Mva2V5c3Bhbl9yZW1vdGUuYy0xNTctXHQvKiBMb2FkIGFzIG11Y2ggYXMgd2UgY2FuIGludG8gdGhlIHRlc3Rlci4gKi9cbmRyaXZlcnMvaW5wdXQvbWlzYy9rZXlzcGFuX3JlbW90ZS5jOjE1ODpcdHdoaWxlICgoZGV2LVx1MDAzZWRhdGEuYml0c19sZWZ0ICYjNDM7IDcgXHUwMDNjIChzaXplb2YoZGV2LVx1MDAzZWRhdGEudGVzdGVyKSAqIDgpKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvaW5wdXQvbWlzYy9rZXlzcGFuX3JlbW90ZS5jOjE1OTpcdCAgICAgICAoZGV2LVx1MDAzZWRhdGEucG9zIFx1MDAzYyBkZXYtXHUwMDNlZGF0YS5sZW4pKSB7XG5kcml2ZXJzL2lucHV0L21pc2Mva2V5c3Bhbl9yZW1vdGUuYzoxNjA6XHRcdGRldi1cdTAwM2VkYXRhLnRlc3RlciAmIzQzOz0gKGRldi1cdTAwM2VkYXRhLmJ1ZmZlcltkZXYtXHUwMDNlZGF0YS5wb3MmIzQzOyYjNDM7XSBcdTAwM2NcdTAwM2MgZGV2LVx1MDAzZWRhdGEuYml0c19sZWZ0KTtcbmRyaXZlcnMvaW5wdXQvbWlzYy9rZXlzcGFuX3JlbW90ZS5jOjE2MTpcdFx0ZGV2LVx1MDAzZWRhdGEuYml0c19sZWZ0ICYjNDM7PSA4O1xuZHJpdmVycy9pbnB1dC9taXNjL2tleXNwYW5fcmVtb3RlLmMtMTYyLVx0fVxuLS1cbmRyaXZlcnMvaW5wdXQvbW91c2UvYXBwbGV0b3VjaC5jPTQ0ND1zdGF0aWMgaW50IGF0cF9zdGF0dXNfY2hlY2soc3RydWN0IHVyYiAqdXJiKVxuLS1cbmRyaXZlcnMvaW5wdXQvbW91c2UvYXBwbGV0b3VjaC5jLTQ4MC1cdFx0XHRcJiMzNDsgKGZpcnN0IGJ5dGU6ICVkLCBsZW5ndGg6ICVkKS5cXG5cJiMzNDssXG5kcml2ZXJzL2lucHV0L21vdXNlL2FwcGxldG91Y2guYzo0ODE6XHRcdFx0ZGV2LVx1MDAzZWRhdGFbMF0sIGRldi1cdTAwM2V1cmItXHUwMDNlYWN0dWFsX2xlbmd0aCk7XG5kcml2ZXJzL2lucHV0L21vdXNlL2FwcGxldG91Y2guYy00ODItXHRcdHJldHVybiBBVFBfVVJCX1NUQVRVU19FUlJPUjtcbi0tXG5kcml2ZXJzL2lucHV0L21vdXNlL2FwcGxldG91Y2guYz01MTQ9c3RhdGljIHZvaWQgYXRwX2NvbXBsZXRlX2dleXNlcl8xXzIoc3RydWN0IHVyYiAqdXJiKVxuLS1cbmRyaXZlcnMvaW5wdXQvbW91c2UvYXBwbGV0b3VjaC5jLTUzOC1cdFx0Zm9yIChpID0gMCwgaiA9IDE5OyBpIFx1MDAzYyAyMDsgaSAmIzQzOz0gMiwgaiAmIzQzOz0gMykge1xuZHJpdmVycy9pbnB1dC9tb3VzZS9hcHBsZXRvdWNoLmM6NTM5Olx0XHRcdGRldi1cdTAwM2V4eV9jdXJbaV0gPSBkZXYtXHUwMDNlZGF0YVtqXTtcbmRyaXZlcnMvaW5wdXQvbW91c2UvYXBwbGV0b3VjaC5jOjU0MDpcdFx0XHRkZXYtXHUwMDNleHlfY3VyW2kgJiM0MzsgMV0gPSBkZXYtXHUwMDNlZGF0YVtqICYjNDM7IDFdO1xuZHJpdmVycy9pbnB1dC9tb3VzZS9hcHBsZXRvdWNoLmMtNTQxLVx0XHR9XG4tLVxuZHJpdmVycy9pbnB1dC9tb3VzZS9hcHBsZXRvdWNoLmMtNTQ0LVx0XHRmb3IgKGkgPSAwLCBqID0gMTsgaSBcdTAwM2MgOTsgaSAmIzQzOz0gMiwgaiAmIzQzOz0gMykge1xuZHJpdmVycy9pbnB1dC9tb3VzZS9hcHBsZXRvdWNoLmM6NTQ1Olx0XHRcdGRldi1cdTAwM2V4eV9jdXJbQVRQX1hTRU5TT1JTICYjNDM7IGldID0gZGV2LVx1MDAzZWRhdGFbal07XG5kcml2ZXJzL2lucHV0L21vdXNlL2FwcGxldG91Y2guYzo1NDY6XHRcdFx0ZGV2LVx1MDAzZXh5X2N1cltBVFBfWFNFTlNPUlMgJiM0MzsgaSAmIzQzOyAxXSA9IGRldi1cdTAwM2VkYXRhW2ogJiM0MzsgMV07XG5kcml2ZXJzL2lucHV0L21vdXNlL2FwcGxldG91Y2guYy01NDctXHRcdH1cbi0tXG5kcml2ZXJzL2lucHV0L21vdXNlL2FwcGxldG91Y2guYy01NTAtXHRcdFx0LyogWCB2YWx1ZXMgKi9cbmRyaXZlcnMvaW5wdXQvbW91c2UvYXBwbGV0b3VjaC5jOjU1MTpcdFx0XHRkZXYtXHUwMDNleHlfY3VyW2kgJiM0MzsgIDBdID0gZGV2LVx1MDAzZWRhdGFbNSAqIGkgJiM0MzsgIDJdO1xuZHJpdmVycy9pbnB1dC9tb3VzZS9hcHBsZXRvdWNoLmM6NTUyOlx0XHRcdGRldi1cdTAwM2V4eV9jdXJbaSAmIzQzOyAgOF0gPSBkZXYtXHUwMDNlZGF0YVs1ICogaSAmIzQzOyAgNF07XG5kcml2ZXJzL2lucHV0L21vdXNlL2FwcGxldG91Y2guYzo1NTM6XHRcdFx0ZGV2LVx1MDAzZXh5X2N1cltpICYjNDM7IDE2XSA9IGRldi1cdTAwM2VkYXRhWzUgKiBpICYjNDM7IDQyXTtcbmRyaXZlcnMvaW5wdXQvbW91c2UvYXBwbGV0b3VjaC5jLTU1NC1cdFx0XHRpZiAoaSBcdTAwM2MgMilcbmRyaXZlcnMvaW5wdXQvbW91c2UvYXBwbGV0b3VjaC5jOjU1NTpcdFx0XHRcdGRldi1cdTAwM2V4eV9jdXJbaSAmIzQzOyAyNF0gPSBkZXYtXHUwMDNlZGF0YVs1ICogaSAmIzQzOyA0NF07XG5kcml2ZXJzL2lucHV0L21vdXNlL2FwcGxldG91Y2guYy01NTYtXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNzo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjE2OAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS2VybmVsIFVTQiBOZXR3b3JrIERyaXZlciBDb2RlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIG91dHB1dCBhbmQgSSYjMzk7bSBzZWVpbmcgYSBsb3Qgb2YgZHJpdmVycyBhY2Nlc3NpbmcgYGRldi0mZ3Q7ZGF0YWAuIFRoYXQgaW1tZWRpYXRlbHkgcmFpc2VzIGEgZmxhZyBmb3IgbWUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYHN0cnVjdCB1c2JuZXQgKmRldmAgcmVwcmVzZW50cyBpbiB0aGlzIGNvbnRleHQuIExldCYjMzk7cyBkaWcgaW50byB0aGF0IHN0cnVjdHVyZSBhbmQgc2VlIGV4YWN0bHkgaG93IGl0JiMzOTtzIGRlZmluZWQgYW5kIGhvdyB0aGF0IGBkYXRhYCBmaWVsZCBpcyBiZWluZyB1c2VkLiBXaGVyZSBhcmUgdGhvc2UgZHJpdmVycyBhY2Nlc3NpbmcgYGRldi0mZ3Q7ZGF0YWA/CgpUaW1lIHRvIG5hcnJvdyBteSBzY29wZSwgSSYjMzk7bGwgcmVzdHJpY3QgbXkgc2VhcmNoIHRvIHRoZSByZWxldmFudCBkaXJlY3RvcnkgdHJlZSwgbGlrZWx5IGBkcml2ZXJzL25ldC91c2IvYC4gVGhhdCYjMzk7cyB3aGVyZSBJIHdvdWxkIGV4cGVjdCB0byBmaW5kIHRoZSBjb3JlIFVTQiBuZXR3b3JrIGRyaXZlciBsb2dpYyBhbmQgdGhlcmVmb3JlIHRoZSBtb3N0IG1lYW5pbmdmdWwgaW5zdGFuY2VzIG9mIGBkZXYtJmd0O2RhdGFgLiBJIHdhbnQgdG8gc2VlIHRoZSB0eXBpY2FsIHVzYWdlIHBhdHRlcm5zLCBwb3NzaWJsZSByYWNlIGNvbmRpdGlvbnMsIGFuZCBob3cgdGhvc2UgZHJpdmVycyBhcmUgaW50ZXJmYWNpbmcgd2l0aCB0aGF0IGRhdGEgZmllbGQuIFRoaXMgaXMgZ29pbmcgdG8gYmUgaW50ZXJlc3Rpbmc7IEkgYW50aWNpcGF0ZSBmaW5kaW5nIGNvbW1vbiB1c2FnZSBwcmFjdGljZXMsIGFuZCBob3BlZnVsbHkgbm8gY3JpdGljYWwgZXJyb3JzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE3OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Rldi1cdTAwM2VkYXRhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNjQzIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYz00NDE9dm9pZCBhc2l4X3NldF9tdWx0aWNhc3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldClcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy00NDMtXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSBuZXRkZXZfcHJpdihuZXQpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NDQ0Olx0c3RydWN0IGFzaXhfZGF0YSAqZGF0YSA9IChzdHJ1Y3QgYXNpeF9kYXRhICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy00NDUtXHR1MTYgcnhfY3RsID0gQVhfREVGQVVMVF9SWF9DVEw7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNDU0LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjQ1NTpcdFx0LyogV2UgdXNlIHRoZSAyMCBieXRlIGRldi1cdTAwM2VkYXRhXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy00NTYtXHRcdCAqIGZvciBvdXIgOCBieXRlIGZpbHRlciBidWZmZXJcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYz03MzQ9aW50IGFzaXhfc2V0X21hY19hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXQsIHZvaWQgKnApXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNzM2LVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYobmV0KTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjczNzpcdHN0cnVjdCBhc2l4X2RhdGEgKmRhdGEgPSAoc3RydWN0IGFzaXhfZGF0YSAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNzM4LVx0c3RydWN0IHNvY2thZGRyICphZGRyID0gcDtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy03NDYtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo3NDc6XHQvKiBXZSB1c2UgdGhlIDIwIGJ5dGUgZGV2LVx1MDAzZWRhdGFcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTc0OC1cdCAqIGZvciBvdXIgNiBieXRlIG1hYyBidWZmZXJcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTE4PXN0YXRpYyB2b2lkIGF4ODgxNzJfc2V0X211bHRpY2FzdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMjAtXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSBuZXRkZXZfcHJpdihuZXQpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEyMTpcdHN0cnVjdCBhc2l4X2RhdGEgKmRhdGEgPSAoc3RydWN0IGFzaXhfZGF0YSAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEyMi1cdHU4IHJ4X2N0bCA9IDB4OGM7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEzMS1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTMyOlx0XHQvKiBXZSB1c2UgdGhlIDIwIGJ5dGUgZGV2LVx1MDAzZWRhdGFcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMzMtXHRcdCAqIGZvciBvdXIgOCBieXRlIGZpbHRlciBidWZmZXJcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MzMyPXN0YXRpYyBpbnQgYXg4ODc3Ml9yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMzMzLXtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzozMzQ6XHRzdHJ1Y3QgYXNpeF9kYXRhICpkYXRhID0gKHN0cnVjdCBhc2l4X2RhdGEgKilcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0zMzUtXHRzdHJ1Y3QgYXNpeF9jb21tb25fcHJpdmF0ZSAqcHJpdiA9IGRldi1cdTAwM2Vkcml2ZXJfcHJpdjtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MzYyPXN0YXRpYyBpbnQgYXg4ODc3Ml9od19yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYsIGludCBpbl9wbSlcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0zNjMte1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjM2NDpcdHN0cnVjdCBhc2l4X2RhdGEgKmRhdGEgPSAoc3RydWN0IGFzaXhfZGF0YSAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTM2NS1cdHN0cnVjdCBhc2l4X2NvbW1vbl9wcml2YXRlICpwcml2ID0gZGV2LVx1MDAzZWRyaXZlcl9wcml2O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz00NTY9c3RhdGljIGludCBheDg4NzcyYV9od19yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYsIGludCBpbl9wbSlcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy00NTcte1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjQ1ODpcdHN0cnVjdCBhc2l4X2RhdGEgKmRhdGEgPSAoc3RydWN0IGFzaXhfZGF0YSAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQ1OS1cdHN0cnVjdCBhc2l4X2NvbW1vbl9wcml2YXRlICpwcml2ID0gZGV2LVx1MDAzZWRyaXZlcl9wcml2O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz05OTA9c3RhdGljIGludCBtYXJ2ZWxsX3BoeV9pbml0KHN0cnVjdCB1c2JuZXQgKmRldilcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05OTEte1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk5MjpcdHN0cnVjdCBhc2l4X2RhdGEgKmRhdGEgPSAoc3RydWN0IGFzaXhfZGF0YSAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk5My1cdHUxNiByZWc7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTEwMjE9c3RhdGljIGludCBydGw4MjExY2xfcGh5X2luaXQoc3RydWN0IHVzYm5ldCAqZGV2KVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMjIte1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMjM6XHRzdHJ1Y3QgYXNpeF9kYXRhICpkYXRhID0gKHN0cnVjdCBhc2l4X2RhdGEgKilcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDI0LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xMDY4PXN0YXRpYyBpbnQgYXg4ODE3OF9yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTA2OS17XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTA3MDpcdHN0cnVjdCBhc2l4X2RhdGEgKmRhdGEgPSAoc3RydWN0IGFzaXhfZGF0YSAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwNzEtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xMTY0PXN0YXRpYyBpbnQgYXg4ODE3OF9saW5rX3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTE2Ny1cdHN0cnVjdCBldGh0b29sX2NtZCBlY21kID0geyAuY21kID0gRVRIVE9PTF9HU0VUIH07XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTE2ODpcdHN0cnVjdCBhc2l4X2RhdGEgKmRhdGEgPSAoc3RydWN0IGFzaXhfZGF0YSAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTExNjktXHR1MzIgc3BlZWQ7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM9MjYxPXN0YXRpYyBpbnQgYXg4ODE3MmFfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2KVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMjYyLXtcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjI2MzpcdHN0cnVjdCBhc2l4X2RhdGEgKmRhdGEgPSAoc3RydWN0IGFzaXhfZGF0YSAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMjY0LVx0c3RydWN0IGF4ODgxNzJhX3ByaXZhdGUgKnByaXYgPSBkZXYtXHUwMDNlZHJpdmVyX3ByaXY7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jPTg2Nz1zdGF0aWMgdm9pZCBheDg4MTc5X3NldF9tdWx0aWNhc3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldClcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtODcwLVx0c3RydWN0IGF4ODgxNzlfZGF0YSAqZGF0YSA9IGRldi1cdTAwM2Vkcml2ZXJfcHJpdjtcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYzo4NzE6XHR1OCAqbV9maWx0ZXIgPSAoKHU4ICopZGV2LVx1MDAzZWRhdGEpO1xuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTg3Mi1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtODgyLVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYzo4ODM6XHRcdC8qIFdlIHVzZSBkZXYtXHUwMDNlZGF0YSBmb3Igb3VyIDggYnl0ZSBmaWx0ZXIgYnVmZmVyXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtODg0LVx0XHQgKiB0byBhdm9pZCBhbGxvY2F0aW5nIG1lbW9yeSB0aGF0IGlzIHRyaWNreSB0byBmcmVlIGxhdGVyXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jPTgzPWludCB1c2JuZXRfZ2VuZXJpY19jZGNfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYy05NC1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYzo5NTpcdGlmIChzaXplb2YoZGV2LVx1MDAzZWRhdGEpIFx1MDAzYyBzaXplb2YoKmluZm8pKVxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jLTk2LVx0XHRyZXR1cm4gLUVET007XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM9NDM9c3RhdGljIGludCBjZGNfbWJpbV9tYW5hZ2VfcG93ZXIoc3RydWN0IHVzYm5ldCAqZGV2LCBpbnQgb24pXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy00NC17XG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYzo0NTpcdHN0cnVjdCBjZGNfbWJpbV9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy00Ni1cdGludCBydiA9IDA7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM9NzE9c3RhdGljIGludCBjZGNfbWJpbV9yeF9hZGRfdmlkKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIF9fYmUxNiBwcm90bywgdTE2IHZpZClcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy03My1cdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYzo3NDpcdHN0cnVjdCBjZGNfbWJpbV9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy03NS1cbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYz04NT1zdGF0aWMgaW50IGNkY19tYmltX3J4X2tpbGxfdmlkKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIF9fYmUxNiBwcm90bywgdTE2IHZpZClcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy04Ny1cdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYzo4ODpcdHN0cnVjdCBjZGNfbWJpbV9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy04OS1cbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYz0xMzk9c3RhdGljIGludCBjZGNfbWJpbV9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtMTQ0LVx0dTggZGF0YV9hbHRzZXR0aW5nID0gMTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jOjE0NTpcdHN0cnVjdCBjZGNfbWJpbV9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy0xNDYtXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM9MTk1PXN0YXRpYyB2b2lkIGNkY19tYmltX3VuYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtMTk2LXtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jOjE5NzpcdHN0cnVjdCBjZGNfbWJpbV9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy0xOTgtXHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IGluZm8tXHUwMDNlY3R4O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jPTIyMD1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmNkY19tYmltX3R4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgZ2ZwX3QgZmxhZ3MpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtMjIyLVx0c3RydWN0IHNrX2J1ZmYgKnNrYl9vdXQ7XG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYzoyMjM6XHRzdHJ1Y3QgY2RjX21iaW1fc3RhdGUgKmluZm8gPSAodm9pZCAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtMjI0LVx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSBpbmZvLVx1MDAzZWN0eDtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYz00MTI9c3RhdGljIGludCBjZGNfbWJpbV9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2JfaW4pXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNDE0LVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jOjQxNTpcdHN0cnVjdCBjZGNfbWJpbV9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy00MTYtXHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IGluZm8tXHUwMDNlY3R4O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jPTUwNj1zdGF0aWMgaW50IGNkY19tYmltX3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBtZXNzYWdlKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTUwOS1cdHN0cnVjdCB1c2JuZXQgKmRldiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7XG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYzo1MTA6XHRzdHJ1Y3QgY2RjX21iaW1fc3RhdGUgKmluZm8gPSAodm9pZCAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNTExLVx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSBpbmZvLVx1MDAzZWN0eDtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYz01MzQ9c3RhdGljIGludCBjZGNfbWJpbV9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNTM3LVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jOjUzODpcdHN0cnVjdCBjZGNfbWJpbV9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy01MzktXHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IGluZm8tXHUwMDNlY3R4O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MTA1PXN0YXRpYyB2b2lkIGNkY19uY21fZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTEwOS1cdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjExMDpcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cdTAwM2VkYXRhWzBdO1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xMTEtXHRpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTE1MD1zdGF0aWMgdTMyIGNkY19uY21fY2hlY2tfcnhfbWF4KHN0cnVjdCB1c2JuZXQgKmRldiwgdTMyIG5ld19yeClcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTUxLXtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6MTUyOlx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSAoc3RydWN0IGNkY19uY21fY3R4ICopZGV2LVx1MDAzZWRhdGFbMF07XG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE1My1cdHUzMiB2YWwsIG1heCwgbWluO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MTczPXN0YXRpYyB1MzIgY2RjX25jbV9jaGVja190eF9tYXgoc3RydWN0IHVzYm5ldCAqZGV2LCB1MzIgbmV3X3R4KVxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xNzQte1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzoxNzU6XHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IChzdHJ1Y3QgY2RjX25jbV9jdHggKilkZXYtXHUwMDNlZGF0YVswXTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTc2LVx0dTMyIHZhbCwgbWF4LCBtaW47XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz0yMDE9c3RhdGljIHNzaXplX3QgbWluX3R4X3BrdF9zaG93KHN0cnVjdCBkZXZpY2UgKmQsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0yMDQtXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSBuZXRkZXZfcHJpdih0b19uZXRfZGV2KGQpKTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6MjA1Olx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSAoc3RydWN0IGNkY19uY21fY3R4ICopZGV2LVx1MDAzZWRhdGFbMF07XG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTIwNi1cbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTIxMD1zdGF0aWMgc3NpemVfdCByeF9tYXhfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMjEzLVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjIxNDpcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cdTAwM2VkYXRhWzBdO1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0yMTUtXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz0yMTk9c3RhdGljIHNzaXplX3QgdHhfbWF4X3Nob3coc3RydWN0IGRldmljZSAqZCxcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTIyMi1cdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoZCkpO1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzoyMjM6XHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IChzdHJ1Y3QgY2RjX25jbV9jdHggKilkZXYtXHUwMDNlZGF0YVswXTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMjI0LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MjI4PXN0YXRpYyBzc2l6ZV90IHR4X3RpbWVyX3VzZWNzX3Nob3coc3RydWN0IGRldmljZSAqZCxcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTIzMS1cdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoZCkpO1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzoyMzI6XHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IChzdHJ1Y3QgY2RjX25jbV9jdHggKilkZXYtXHUwMDNlZGF0YVswXTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMjMzLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MjM3PXN0YXRpYyBzc2l6ZV90IG1pbl90eF9wa3Rfc3RvcmUoc3RydWN0IGRldmljZSAqZCxcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTI0MS1cdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoZCkpO1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzoyNDI6XHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IChzdHJ1Y3QgY2RjX25jbV9jdHggKilkZXYtXHUwMDNlZGF0YVswXTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMjQzLVx0dW5zaWduZWQgbG9uZyB2YWw7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz0yNTM9c3RhdGljIHNzaXplX3QgcnhfbWF4X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmQsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0yNTctXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSBuZXRkZXZfcHJpdih0b19uZXRfZGV2KGQpKTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6MjU4Olx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSAoc3RydWN0IGNkY19uY21fY3R4ICopZGV2LVx1MDAzZWRhdGFbMF07XG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTI1OS1cdHVuc2lnbmVkIGxvbmcgdmFsO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MjY4PXN0YXRpYyBzc2l6ZV90IHR4X21heF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMjcyLVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjI3MzpcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cdTAwM2VkYXRhWzBdO1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0yNzQtXHR1bnNpZ25lZCBsb25nIHZhbDtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTI4Mz1zdGF0aWMgc3NpemVfdCB0eF90aW1lcl91c2Vjc19zdG9yZShzdHJ1Y3QgZGV2aWNlICpkLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMjg3LVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjI4ODpcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cdTAwM2VkYXRhWzBdO1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0yODktXHRzc2l6ZV90IHJldDtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTMxMT1zdGF0aWMgc3NpemVfdCBuZHBfdG9fZW5kX3Nob3coc3RydWN0IGRldmljZSAqZCwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTMxMy1cdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoZCkpO1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzozMTQ6XHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IChzdHJ1Y3QgY2RjX25jbV9jdHggKilkZXYtXHUwMDNlZGF0YVswXTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMzE1LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MzE5PXN0YXRpYyBzc2l6ZV90IG5kcF90b19lbmRfc3RvcmUoc3RydWN0IGRldmljZSAqZCwgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBsZW4pXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0zMjEtXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSBuZXRkZXZfcHJpdih0b19uZXRfZGV2KGQpKTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6MzIyOlx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSAoc3RydWN0IGNkY19uY21fY3R4ICopZGV2LVx1MDAzZWRhdGFbMF07XG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTMyMy1cdGJvb2wgZW5hYmxlO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MzYxPXN0YXRpYyBzc2l6ZV90IGNkY19uY21fc2hvd18jI25hbWUoc3RydWN0IGRldmljZSAqZCwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikgXFxcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTM2My1cdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoZCkpOyBcXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzozNjQ6XHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IChzdHJ1Y3QgY2RjX25jbV9jdHggKilkZXYtXHUwMDNlZGF0YVswXTsgXFxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMzY1LVx0cmV0dXJuIHNwcmludGYoYnVmLCBmb3JtYXQgXCYjMzQ7XFxuXCYjMzQ7LCB0b2NwdShjdHgtXHUwMDNlbmNtX3Bhcm0ubmFtZSkpO1x0XFxcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTQwNT1zdGF0aWMgdm9pZCBjZGNfbmNtX3VwZGF0ZV9yeHR4X21heChzdHJ1Y3QgdXNibmV0ICpkZXYsIHUzMiBuZXdfcngsIHUzMiBuZXdfdHgpXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTQwNi17XG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjQwNzpcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cdTAwM2VkYXRhWzBdO1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy00MDgtXHR1OCBpZmFjZV9ubyA9IGN0eC1cdTAwM2Vjb250cm9sLVx1MDAzZWN1cl9hbHRzZXR0aW5nLVx1MDAzZWRlc2MuYkludGVyZmFjZU51bWJlcjtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTQ3Nz1zdGF0aWMgdTggY2RjX25jbV9mbGFncyhzdHJ1Y3QgdXNibmV0ICpkZXYpXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTQ3OC17XG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjQ3OTpcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cdTAwM2VkYXRhWzBdO1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy00ODAtXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz01MDI9c3RhdGljIHUzMiBjZGNfbmNtX21heF9kZ3JhbV9zaXplKHN0cnVjdCB1c2JuZXQgKmRldilcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtNTAzLXtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6NTA0Olx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSAoc3RydWN0IGNkY19uY21fY3R4ICopZGV2LVx1MDAzZWRhdGFbMF07XG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTUwNS1cbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTUxNj1zdGF0aWMgaW50IGNkY19uY21faW5pdChzdHJ1Y3QgdXNibmV0ICpkZXYpXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTUxNy17XG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjUxODpcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cdTAwM2VkYXRhWzBdO1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy01MTktXHR1OCBpZmFjZV9ubyA9IGN0eC1cdTAwM2Vjb250cm9sLVx1MDAzZWN1cl9hbHRzZXR0aW5nLVx1MDAzZWRlc2MuYkludGVyZmFjZU51bWJlcjtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTYwOT1zdGF0aWMgdm9pZCBjZGNfbmNtX3NldF9kZ3JhbV9zaXplKHN0cnVjdCB1c2JuZXQgKmRldiwgaW50IG5ld19zaXplKVxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy02MTAte1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzo2MTE6XHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IChzdHJ1Y3QgY2RjX25jbV9jdHggKilkZXYtXHUwMDNlZGF0YVswXTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtNjEyLVx0dTggaWZhY2Vfbm8gPSBjdHgtXHUwMDNlY29udHJvbC1cdTAwM2VjdXJfYWx0c2V0dGluZy1cdTAwM2VkZXNjLmJJbnRlcmZhY2VOdW1iZXI7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz02NTc9c3RhdGljIHZvaWQgY2RjX25jbV9maXhfbW9kdWx1cyhzdHJ1Y3QgdXNibmV0ICpkZXYpXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTY1OC17XG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjY1OTpcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cdTAwM2VkYXRhWzBdO1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy02NjAtXHR1MzIgdmFsO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9NzAxPXN0YXRpYyBpbnQgY2RjX25jbV9zZXR1cChzdHJ1Y3QgdXNibmV0ICpkZXYpXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTcwMi17XG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjcwMzpcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cdTAwM2VkYXRhWzBdO1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy03MDQtXHR1MzIgZGVmX3J4LCBkZWZfdHg7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz04MjA9aW50IGNkY19uY21fYmluZF9jb21tb24oc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgdTggZGF0YV9hbHRzZXR0aW5nLCBpbnQgZHJ2ZmxhZ3MpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy04NDEtXHQvKiBzdG9yZSBjdHggcG9pbnRlciBpbiBkZXZpY2UgZGF0YSBmaWVsZCAqL1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzo4NDI6XHRkZXYtXHUwMDNlZGF0YVswXSA9ICh1bnNpZ25lZCBsb25nKWN0eDtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtODQzLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtOTkwLWVycm9yOlxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzo5OTE6XHRjZGNfbmNtX2ZyZWUoKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cdTAwM2VkYXRhWzBdKTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6OTkyOlx0ZGV2LVx1MDAzZWRhdGFbMF0gPSAwO1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy05OTMtXHRkZXZfaW5mbyhcdTAwMjZpbnRmLVx1MDAzZWRldiwgXCYjMzQ7YmluZCgpIGZhaWx1cmVcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9OTk4PXZvaWQgY2RjX25jbV91bmJpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtOTk5LXtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6MTAwMDpcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cdTAwM2VkYXRhWzBdO1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xMDAxLVx0c3RydWN0IHVzYl9kcml2ZXIgKmRyaXZlciA9IGRyaXZlcl9vZihpbnRmKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTEyMDQ9Y2RjX25jbV9maWxsX3R4X2ZyYW1lKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgX19sZTMyIHNpZ24pXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTEyMDUte1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzoxMjA2Olx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSAoc3RydWN0IGNkY19uY21fY3R4ICopZGV2LVx1MDAzZWRhdGFbMF07XG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTEyMDctXHR1bmlvbiB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz0xNTIzPWNkY19uY21fdHhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBnZnBfdCBmbGFncylcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE1MjUtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiX291dDtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6MTUyNjpcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cdTAwM2VkYXRhWzBdO1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xNTI3LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MTcyNz1pbnQgY2RjX25jbV9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2JfaW4pXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xNzI5LVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6MTczMDpcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cdTAwM2VkYXRhWzBdO1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xNzMxLVx0dW5zaWduZWQgaW50IGxlbjtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTE5MDc9c3RhdGljIHZvaWQgY2RjX25jbV91cGRhdGVfZmlsdGVyKHN0cnVjdCB1c2JuZXQgKmRldilcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTkwOC17XG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjE5MDk6XHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IChzdHJ1Y3QgY2RjX25jbV9jdHggKilkZXYtXHUwMDNlZGF0YVswXTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTkxMC1cbi0tXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmM9Mjc0PXN0YXRpYyB2b2lkIGRtOTYwMV9zZXRfbXVsdGljYXN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXQpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2RtOTYwMS5jLTI3Ni1cdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KG5ldCk7XG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmM6Mjc3Olx0LyogV2UgdXNlIHRoZSAyMCBieXRlIGRldi1cdTAwM2VkYXRhIGZvciBvdXIgOCBieXRlIGZpbHRlciBidWZmZXJcbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYy0yNzgtXHQgKiB0byBhdm9pZCBhbGxvY2F0aW5nIG1lbW9yeSB0aGF0IGlzIHRyaWNreSB0byBmcmVlIGxhdGVyICovXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmM6Mjc5Olx0dTggKmhhc2hlcyA9ICh1OCAqKSBcdTAwMjYgZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmMtMjgwLVx0dTggcnhfY3RsID0gMHgzMTtcbi0tXG5kcml2ZXJzL25ldC91c2IvaHVhd2VpX2NkY19uY20uYz0zNz1zdGF0aWMgaW50IGh1YXdlaV9jZGNfbmNtX21hbmFnZV9wb3dlcihzdHJ1Y3QgdXNibmV0ICp1c2JuZXRfZGV2LCBpbnQgb24pXG5kcml2ZXJzL25ldC91c2IvaHVhd2VpX2NkY19uY20uYy0zOC17XG5kcml2ZXJzL25ldC91c2IvaHVhd2VpX2NkY19uY20uYzozOTpcdHN0cnVjdCBodWF3ZWlfY2RjX25jbV9zdGF0ZSAqZHJ2c3RhdGUgPSAodm9pZCAqKVx1MDAyNnVzYm5ldF9kZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jLTQwLVx0aW50IHJ2O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jPTY1PXN0YXRpYyBpbnQgaHVhd2VpX2NkY19uY21fYmluZChzdHJ1Y3QgdXNibmV0ICp1c2JuZXRfZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jLTcwLVx0aW50IHJldDtcbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jOjcxOlx0c3RydWN0IGh1YXdlaV9jZGNfbmNtX3N0YXRlICpkcnZzdGF0ZSA9ICh2b2lkICopXHUwMDI2dXNibmV0X2Rldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL2h1YXdlaV9jZGNfbmNtLmMtNzItXHRpbnQgZHJ2ZmxhZ3MgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jPTExNj1zdGF0aWMgdm9pZCBodWF3ZWlfY2RjX25jbV91bmJpbmQoc3RydWN0IHVzYm5ldCAqdXNibmV0X2Rldixcbi0tXG5kcml2ZXJzL25ldC91c2IvaHVhd2VpX2NkY19uY20uYy0xMTgte1xuZHJpdmVycy9uZXQvdXNiL2h1YXdlaV9jZGNfbmNtLmM6MTE5Olx0c3RydWN0IGh1YXdlaV9jZGNfbmNtX3N0YXRlICpkcnZzdGF0ZSA9ICh2b2lkICopXHUwMDI2dXNibmV0X2Rldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL2h1YXdlaV9jZGNfbmNtLmMtMTIwLVx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSBkcnZzdGF0ZS1cdTAwM2VjdHg7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2h1YXdlaV9jZGNfbmNtLmM9MTI5PXN0YXRpYyBpbnQgaHVhd2VpX2NkY19uY21fc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zixcbi0tXG5kcml2ZXJzL25ldC91c2IvaHVhd2VpX2NkY19uY20uYy0xMzMtXHRzdHJ1Y3QgdXNibmV0ICp1c2JuZXRfZGV2ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTtcbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jOjEzNDpcdHN0cnVjdCBodWF3ZWlfY2RjX25jbV9zdGF0ZSAqZHJ2c3RhdGUgPSAodm9pZCAqKVx1MDAyNnVzYm5ldF9kZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jLTEzNS1cdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gZHJ2c3RhdGUtXHUwMDNlY3R4O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jPTE1Nz1zdGF0aWMgaW50IGh1YXdlaV9jZGNfbmNtX3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvaHVhd2VpX2NkY19uY20uYy0xNjAtXHRzdHJ1Y3QgdXNibmV0ICp1c2JuZXRfZGV2ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTtcbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jOjE2MTpcdHN0cnVjdCBodWF3ZWlfY2RjX25jbV9zdGF0ZSAqZHJ2c3RhdGUgPSAodm9pZCAqKVx1MDAyNnVzYm5ldF9kZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jLTE2Mi1cdGJvb2wgY2FsbHN1Yjtcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTEzODM9c3RhdGljIGludCBsYW43OHh4X2RhdGFwb3J0X3dyaXRlKHN0cnVjdCBsYW43OHh4X25ldCAqZGV2LCB1MzIgcmFtX3NlbGVjdCxcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTEzODUte1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoxMzg2Olx0c3RydWN0IGxhbjc4eHhfcHJpdiAqcGRhdGEgPSAoc3RydWN0IGxhbjc4eHhfcHJpdiAqKShkZXYtXHUwMDNlZGF0YVswXSk7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTEzODctXHRpbnQgaSwgcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MTQ1NT1zdGF0aWMgaW50IGxhbjc4eHhfd3JpdGVfbWNoYXNoX3RhYmxlKHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0xNDU2LXtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MTQ1NzpcdHN0cnVjdCBsYW43OHh4X3ByaXYgKnBkYXRhID0gKHN0cnVjdCBsYW43OHh4X3ByaXYgKikoZGV2LVx1MDAzZWRhdGFbMF0pO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0xNDU4LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MTUwMj1zdGF0aWMgdm9pZCBsYW43OHh4X3NldF9tdWx0aWNhc3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE1MDQtXHRzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldiA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjE1MDU6XHRzdHJ1Y3QgbGFuNzh4eF9wcml2ICpwZGF0YSA9IChzdHJ1Y3QgbGFuNzh4eF9wcml2ICopKGRldi1cdTAwM2VkYXRhWzBdKTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTUwNi1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0xNzQ2PXN0YXRpYyB2b2lkIGxhbjc4eHhfZ2V0X3dvbChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTc1MS1cdHUzMiBidWY7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjE3NTI6XHRzdHJ1Y3QgbGFuNzh4eF9wcml2ICpwZGF0YSA9IChzdHJ1Y3QgbGFuNzh4eF9wcml2ICopKGRldi1cdTAwM2VkYXRhWzBdKTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTc1My1cbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTE3NzU9c3RhdGljIGludCBsYW43OHh4X3NldF93b2woc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE3NzgtXHRzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldiA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjE3Nzk6XHRzdHJ1Y3QgbGFuNzh4eF9wcml2ICpwZGF0YSA9IChzdHJ1Y3QgbGFuNzh4eF9wcml2ICopKGRldi1cdTAwM2VkYXRhWzBdKTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTc4MC1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0zMDU1PXN0YXRpYyBpbnQgbGFuNzh4eF9zZXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTMwNTgtXHRzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldiA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjMwNTk6XHRzdHJ1Y3QgbGFuNzh4eF9wcml2ICpwZGF0YSA9IChzdHJ1Y3QgbGFuNzh4eF9wcml2ICopKGRldi1cdTAwM2VkYXRhWzBdKTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMzA2MC1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0zMDg3PXN0YXRpYyBpbnQgbGFuNzh4eF93cml0ZV92bGFuX3RhYmxlKHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0zMDg4LXtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MzA4OTpcdHN0cnVjdCBsYW43OHh4X3ByaXYgKnBkYXRhID0gKHN0cnVjdCBsYW43OHh4X3ByaXYgKikoZGV2LVx1MDAzZWRhdGFbMF0pO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0zMDkwLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MzEwMz1zdGF0aWMgaW50IGxhbjc4eHhfdmxhbl9yeF9hZGRfdmlkKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0zMTA2LVx0c3RydWN0IGxhbjc4eHhfbmV0ICpkZXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzozMTA3Olx0c3RydWN0IGxhbjc4eHhfcHJpdiAqcGRhdGEgPSAoc3RydWN0IGxhbjc4eHhfcHJpdiAqKShkZXYtXHUwMDNlZGF0YVswXSk7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTMxMDgtXHR1MTYgdmlkX2JpdF9pbmRleDtcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTMxMjI9c3RhdGljIGludCBsYW43OHh4X3ZsYW5fcnhfa2lsbF92aWQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTMxMjUtXHRzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldiA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjMxMjY6XHRzdHJ1Y3QgbGFuNzh4eF9wcml2ICpwZGF0YSA9IChzdHJ1Y3QgbGFuNzh4eF9wcml2ICopKGRldi1cdTAwM2VkYXRhWzBdKTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMzEyNy1cdHUxNiB2aWRfYml0X2luZGV4O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MzI0OD1zdGF0aWMgaW50IGxhbjc4eHhfcmVzZXQoc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTMyNDkte1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzozMjUwOlx0c3RydWN0IGxhbjc4eHhfcHJpdiAqcGRhdGEgPSAoc3RydWN0IGxhbjc4eHhfcHJpdiAqKShkZXYtXHUwMDNlZGF0YVswXSk7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTMyNTEtXHR1bnNpZ25lZCBsb25nIHRpbWVvdXQ7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0zNzUyPXN0YXRpYyBpbnQgbGFuNzh4eF9iaW5kKHN0cnVjdCBsYW43OHh4X25ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTM3NTctXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjM3NTg6XHRkZXYtXHUwMDNlZGF0YVswXSA9ICh1bnNpZ25lZCBsb25nKSBremFsbG9jX29iaigqcGRhdGEpO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0zNzU5LVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzozNzYwOlx0cGRhdGEgPSAoc3RydWN0IGxhbjc4eHhfcHJpdiAqKShkZXYtXHUwMDNlZGF0YVswXSk7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTM3NjEtXHRpZiAoIXBkYXRhKSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0zODM0PXN0YXRpYyB2b2lkIGxhbjc4eHhfdW5iaW5kKHN0cnVjdCBsYW43OHh4X25ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMzgzNS17XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjM4MzY6XHRzdHJ1Y3QgbGFuNzh4eF9wcml2ICpwZGF0YSA9IChzdHJ1Y3QgbGFuNzh4eF9wcml2ICopKGRldi1cdTAwM2VkYXRhWzBdKTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMzgzNy1cbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTM4NDctXHRcdHBkYXRhID0gTlVMTDtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6Mzg0ODpcdFx0ZGV2LVx1MDAzZWRhdGFbMF0gPSAwO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0zODQ5LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9NTEwNT1zdGF0aWMgaW50IGxhbjc4eHhfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IG1lc3NhZ2UpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy01MTY2LVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzo1MTY3Olx0XHRcdHBkYXRhID0gKHN0cnVjdCBsYW43OHh4X3ByaXYgKikoZGV2LVx1MDAzZWRhdGFbMF0pO1xuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy01MTY4LVx0XHRcdG5ldGlmX2NhcnJpZXJfb2ZmKGRldi1cdTAwM2VuZXQpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9tY3M3ODMwLmM9MzI4PXN0YXRpYyBpbmxpbmUgc3RydWN0IG1jczc4MzBfZGF0YSAqbWNzNzgzMF9nZXRfZGF0YShzdHJ1Y3QgdXNibmV0ICpkZXYpXG5kcml2ZXJzL25ldC91c2IvbWNzNzgzMC5jLTMyOS17XG5kcml2ZXJzL25ldC91c2IvbWNzNzgzMC5jOjMzMDpcdHJldHVybiAoc3RydWN0IG1jczc4MzBfZGF0YSAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL21jczc4MzAuYy0zMzEtfVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9tY3M3ODMwLmM9MzQ5PXN0YXRpYyB2b2lkIG1jczc4MzBfZGF0YV9zZXRfbXVsdGljYXN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXQpXG4tLVxuZHJpdmVycy9uZXQvdXNiL21jczc4MzAuYy0zNjgtXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvdXNiL21jczc4MzAuYzozNjk6XHRcdC8qIFdlIHVzZSB0aGUgMjAgYnl0ZSBkZXYtXHUwMDNlZGF0YVxuZHJpdmVycy9uZXQvdXNiL21jczc4MzAuYy0zNzAtXHRcdCAqIGZvciBvdXIgOCBieXRlIGZpbHRlciBidWZmZXJcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz0zMDY9c3RhdGljIHZvaWQgcW1pX3d3YW5fbmV0ZGV2X3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpuZXQpXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzA4LVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYobmV0KTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjMwOTpcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0zMTAtXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9MzMyPXN0YXRpYyBzc2l6ZV90IHJhd19pcF9zaG93KHN0cnVjdCBkZXZpY2UgKmQsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzM0LVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzozMzU6XHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzM2LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTM0MD1zdGF0aWMgc3NpemVfdCByYXdfaXBfc3RvcmUoc3RydWN0IGRldmljZSAqZCwgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBsZW4pXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzQyLVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzozNDM6XHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzQ0LVx0Ym9vbCBlbmFibGU7XG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9NDA5PXN0YXRpYyBzc2l6ZV90IGFkZF9tdXhfc3RvcmUoc3RydWN0IGRldmljZSAqZCwgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBsZW4pXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNDExLVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo0MTI6XHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNDEzLVx0dTggbXV4X2lkO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTQ0Nz1zdGF0aWMgc3NpemVfdCBkZWxfbXV4X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmQsICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgbGVuKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTQ0OS1cdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoZCkpO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NDUwOlx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvID0gKHZvaWQgKilcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTQ1MS1cdHN0cnVjdCBuZXRfZGV2aWNlICpkZWxfZGV2O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTQ3Nz1zdGF0aWMgc3NpemVfdCBwYXNzX3Rocm91Z2hfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTQ4Mi1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjQ4MzpcdGluZm8gPSAodm9pZCAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNDg0LVx0cmV0dXJuIHNwcmludGYoYnVmLCBcJiMzNDslY1xcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz00ODg9c3RhdGljIHNzaXplX3QgcGFzc190aHJvdWdoX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmQsXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNDk4LVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NDk5Olx0aW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy01MDAtXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9NTYzPXN0YXRpYyBpbnQgcW1pX3d3YW5fcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNTY0LXtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjU2NTpcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy01NjYtXHRib29sIHJhd2lwID0gaW5mby1cdTAwM2VmbGFncyBcdTAwMjYgUU1JX1dXQU5fRkxBR19SQVdJUDtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz02NTQ9c3RhdGljIGludCBxbWlfd3dhbl9tYW5hZ2VfcG93ZXIoc3RydWN0IHVzYm5ldCAqZGV2LCBpbnQgb24pXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy02NTUte1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NjU2Olx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvID0gKHZvaWQgKilcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTY1Ny1cdGludCBydjtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz02ODY9c3RhdGljIGludCBxbWlfd3dhbl9yZWdpc3Rlcl9zdWJkcml2ZXIoc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTY4OS1cdHN0cnVjdCB1c2JfZHJpdmVyICpzdWJkcml2ZXIgPSBOVUxMO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NjkwOlx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvID0gKHZvaWQgKilcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTY5MS1cbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz03NDQ9c3RhdGljIGludCBxbWlfd3dhbl9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNzUyLVx0c3RydWN0IHVzYl9kcml2ZXIgKmRyaXZlciA9IGRyaXZlcl9vZihpbnRmKTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjc1MzpcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy03NTQtXHRzdHJ1Y3QgdXNiX2NkY19wYXJzZWRfaGVhZGVyIGhkcjtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz04NDk9c3RhdGljIHZvaWQgcW1pX3d3YW5fdW5iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy04NTAte1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6ODUxOlx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvID0gKHZvaWQgKilcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTg1Mi1cdHN0cnVjdCB1c2JfZHJpdmVyICpkcml2ZXIgPSBkcml2ZXJfb2YoaW50Zik7XG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9ODg3PXN0YXRpYyBpbnQgcW1pX3d3YW5fc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IG1lc3NhZ2UpXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtODg5LVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjg5MDpcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy04OTEtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTkxMD1zdGF0aWMgaW50IHFtaV93d2FuX3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05MTItXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTc6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ4OTQKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA0MzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgVWJpcXVpdG91cyBgZGV2LSZndDtkYXRhYCBVc2FnZSoqCgpPa2F5LCBob2xkIG9uIGEgbWludXRlLiBJdCYjMzk7cyBoaXR0aW5nIG1lIGp1c3QgaG93IGV4dGVuc2l2ZWx5IGBkZXYtJmd0O2RhdGFgIGlzIGxldmVyYWdlZCBhY3Jvc3MgdGhlc2UgVVNCIG5ldHdvcmsgZHJpdmVycyEgSSYjMzk7bSBzZWVpbmcgaXQgZXZlcnl3aGVyZS4gSSYjMzk7dmUgYmVlbiByZXZpZXdpbmcgdGhlIGNvZGUsIGFuZCBpdCYjMzk7cyBiZWluZyB0eXBlLXB1bm5lZCB0byBoZWxsIGFuZCBiYWNrLiBgYXNpeF9jb21tb24uY2AsIGBheDg4MTc5XzE3OGEuY2AsIGBjZGNfbWJpbS5jYCwgYGNkY19uY20uY2AsIGBkbTk2MDEuY2AsIGBodWF3ZWlfY2RjX25jbS5jYCwgYGxhbjc4eHguY2AsIGBtY3M3ODMwLmNgLCBgcW1pX3d3YW4uY2Ag4oCTIHRoZXkmIzM5O3JlIGFsbCBjYXN0aW5nIGBkZXYtJmd0O2RhdGFgIHRvIHRoZWlyIG93biBjdXN0b20gc3RydWN0cyEKCkFuZCBpdCYjMzk7cyBub3QganVzdCB0aGUgY3VycmVudCBjcm9wIG9mIGRyaXZlcnMsIGVpdGhlci4gTG9va2luZyBiYWNrLCBgY2RjX2V0aGVyLmNgIGFuZCBgcm5kaXNfaG9zdC5jYCAqdXNlZCogdG8gdXNlIHRoaXMgc2FtZSB0ZWNobmlxdWUhIFRoZXkmIzM5O3ZlIHNpbmNlIHJlZmFjdG9yZWQgdG8gdXNlIGBkZXYtJmd0O2NkY2AgaW5zdGVhZCBvZiBkaXJlY3RseSBhY2Nlc3NpbmcgYGRldi0mZ3Q7ZGF0YWAuIFRoYXQgc2hpZnQgaW1tZWRpYXRlbHkgc3BhcmtzIGEgcXVlc3Rpb24uLi4KCkNvdWxkIGEgZHJpdmVyIGJlIHBvdGVudGlhbGx5IHVzaW5nICpib3RoKiBgY2RjX2V0aGVyYCBmdW5jdGlvbnMgQU5EIGl0cyBvd24gYGRldi0mZ3Q7ZGF0YWA/IElzIHRoYXQgZXZlbiBhIHZhbGlkIHBhdHRlcm4sIG9yIGFtIEkgbWlzc2luZyBzb21ldGhpbmc/IEkgbmVlZCB0byBjbGFyaWZ5IHRoYXQuIExldCYjMzk7cyBkaWcgaW50byBgY2RjX21iaW0uY2Agc3BlY2lmaWNhbGx5LiBEb2VzIHRoZSBgY2RjX21iaW1fc3RhdGVgIHN0cnVjdCBpdCB1c2VzIGNvbnRhaW4gYSBgY2RjX3N0YXRlYCBtZW1iZXI/IElmIHNvLCB3ZSBtYXkgaGF2ZSB0aGUgYW5zd2VyIHRvIG91ciBxdWVzdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSBzdHJ1Y3R1cmVzIHRvIGZ1bGx5IGdyYXNwIHRoZSBkZXNpZ24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE3OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NkY19tYmltX3N0YXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy0yOC0vKiBkcml2ZXIgc3BlY2lmaWMgZGF0YSAtIG11c3QgbWF0Y2ggY2RjX25jbSB1c2FnZSAqL1xuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM6Mjk6c3RydWN0IGNkY19tYmltX3N0YXRlIHtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTMwLVx0c3RydWN0IGNkY19uY21fY3R4ICpjdHg7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtMzYtXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYzozNzovKiBmbGFncyBmb3IgdGhlIGNkY19tYmltX3N0YXRlLmZsYWdzIGZpZWxkICovXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy0zOC1lbnVtIGNkY19tYmltX2ZsYWdzIHtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYz00Mz1zdGF0aWMgaW50IGNkY19tYmltX21hbmFnZV9wb3dlcihzdHJ1Y3QgdXNibmV0ICpkZXYsIGludCBvbilcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTQ0LXtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jOjQ1Olx0c3RydWN0IGNkY19tYmltX3N0YXRlICppbmZvID0gKHZvaWQgKilcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTQ2LVx0aW50IHJ2ID0gMDtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYz03MT1zdGF0aWMgaW50IGNkY19tYmltX3J4X2FkZF92aWQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgX19iZTE2IHByb3RvLCB1MTYgdmlkKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTczLVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jOjc0Olx0c3RydWN0IGNkY19tYmltX3N0YXRlICppbmZvID0gKHZvaWQgKilcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTc1LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jPTg1PXN0YXRpYyBpbnQgY2RjX21iaW1fcnhfa2lsbF92aWQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgX19iZTE2IHByb3RvLCB1MTYgdmlkKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTg3LVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jOjg4Olx0c3RydWN0IGNkY19tYmltX3N0YXRlICppbmZvID0gKHZvaWQgKilcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTg5LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jPTEzOT1zdGF0aWMgaW50IGNkY19tYmltX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy0xNDQtXHR1OCBkYXRhX2FsdHNldHRpbmcgPSAxO1xuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM6MTQ1Olx0c3RydWN0IGNkY19tYmltX3N0YXRlICppbmZvID0gKHZvaWQgKilcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTE0Ni1cbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYz0xOTU9c3RhdGljIHZvaWQgY2RjX21iaW1fdW5iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy0xOTYte1xuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM6MTk3Olx0c3RydWN0IGNkY19tYmltX3N0YXRlICppbmZvID0gKHZvaWQgKilcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTE5OC1cdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gaW5mby1cdTAwM2VjdHg7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM9MjIwPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqY2RjX21iaW1fdHhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBnZnBfdCBmbGFncylcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy0yMjItXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiX291dDtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jOjIyMzpcdHN0cnVjdCBjZGNfbWJpbV9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy0yMjQtXHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IGluZm8tXHUwMDNlY3R4O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jPTQxMj1zdGF0aWMgaW50IGNkY19tYmltX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYl9pbilcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy00MTQtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM6NDE1Olx0c3RydWN0IGNkY19tYmltX3N0YXRlICppbmZvID0gKHZvaWQgKilcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTQxNi1cdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gaW5mby1cdTAwM2VjdHg7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM9NTA2PXN0YXRpYyBpbnQgY2RjX21iaW1fc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IG1lc3NhZ2UpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNTA5LVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jOjUxMDpcdHN0cnVjdCBjZGNfbWJpbV9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy01MTEtXHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IGluZm8tXHUwMDNlY3R4O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jPTUzND1zdGF0aWMgaW50IGNkY19tYmltX3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy01MzctXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpO1xuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM6NTM4Olx0c3RydWN0IGNkY19tYmltX3N0YXRlICppbmZvID0gKHZvaWQgKilcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTUzOS1cdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gaW5mby1cdTAwM2VjdHg7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE3OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3MTU3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNQklNIERyaXZlciBTdHJ1Y3R1cmUqKgoKT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgc3RydWN0dXJlIG9mIHRoaXMgYGNkY19tYmltYCBtb2R1bGUuIFJpZ2h0LCBzbyBpdCYjMzk7cyB1c2luZyB0aGUgYGNkY19tYmltX3N0YXRlYCBzdHJ1Y3R1cmUsIHdoaWNoIEkgY2FuIHNlZSBkZWZpbmVkIGhlcmU6CgpgYGBjCnN0cnVjdCBjZGNfbWJpbV9zdGF0ZSB7CglzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eDsKCWF0b21pY190IHBtY291bnQ7CglzdHJ1Y3QgdXNiX2RyaXZlciAqc3ViZHJpdmVyOwoJdW5zaWduZWQgbG9uZyBmbGFnczsKfTsKYGBgCgpJbnRlcmVzdGluZy4gSXQmIzM5O3MgY2xlYXJseSBtYW5hZ2luZyBpdHMgaW50ZXJuYWwgc3RhdGUgd2l0aCBhIGBjZGNfbmNtX2N0eGAsIGFuIGF0b21pYyBwb3dlciBtYW5hZ2VtZW50IGNvdW50ZXIsIGEgc3ViLWRyaXZlciBwb2ludGVyIGFuZCBmbGFncy4gQ3J1Y2lhbGx5LCBJIHNlZSB0aGF0IGl0JiMzOTtzICpub3QqIHJlbHlpbmcgb24gdGhlIGBjZGNfc3RhdGVgIHN0cnVjdHVyZSwgd2hpY2ggaXMgc29tZXRoaW5nIEkmIzM5O2xsIG5lZWQgdG8ga2VlcCBpbiBtaW5kIHdoZW4gZXZhbHVhdGluZyBpdHMgaW1wbGVtZW50YXRpb24uIEkmIzM5O20gbWFraW5nIGEgbWVudGFsIG5vdGUgb2YgdGhhdCBkaXN0aW5jdGlvbi4KCk5vdywgdGhhdCBicmluZ3MgbWUgdG8gYHFtaV93d2FuYC4gSG93IGRvZXMgdGhhdCBjb21wYXJlIGFuZCBjb250cmFzdD8gV2hhdCYjMzk7cyBpdHMgYXJjaGl0ZWN0dXJlIGZvciBzdGF0ZSBtYW5hZ2VtZW50PyBJIG5lZWQgdG8gYW5hbHl6ZSBpdHMgc3RydWN0dXJlIG5leHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE3OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3FtaV93d2FuX3N0YXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy00OS0vKiBkcml2ZXIgc3BlY2lmaWMgZGF0YSAqL1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NTA6c3RydWN0IHFtaV93d2FuX3N0YXRlIHtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTUxLVx0c3RydWN0IHVzYl9kcml2ZXIgKnN1YmRyaXZlcjtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz0zMDY9c3RhdGljIHZvaWQgcW1pX3d3YW5fbmV0ZGV2X3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpuZXQpXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzA4LVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYobmV0KTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjMwOTpcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0zMTAtXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9MzMyPXN0YXRpYyBzc2l6ZV90IHJhd19pcF9zaG93KHN0cnVjdCBkZXZpY2UgKmQsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzM0LVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzozMzU6XHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzM2LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTM0MD1zdGF0aWMgc3NpemVfdCByYXdfaXBfc3RvcmUoc3RydWN0IGRldmljZSAqZCwgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBsZW4pXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzQyLVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzozNDM6XHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzQ0LVx0Ym9vbCBlbmFibGU7XG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9NDA5PXN0YXRpYyBzc2l6ZV90IGFkZF9tdXhfc3RvcmUoc3RydWN0IGRldmljZSAqZCwgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBsZW4pXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNDExLVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo0MTI6XHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNDEzLVx0dTggbXV4X2lkO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTQ0Nz1zdGF0aWMgc3NpemVfdCBkZWxfbXV4X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmQsICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgbGVuKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTQ0OS1cdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoZCkpO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NDUwOlx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvID0gKHZvaWQgKilcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTQ1MS1cdHN0cnVjdCBuZXRfZGV2aWNlICpkZWxfZGV2O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTQ3Nz1zdGF0aWMgc3NpemVfdCBwYXNzX3Rocm91Z2hfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTQ4MC1cdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoZCkpO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NDgxOlx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNDgyLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTQ4OD1zdGF0aWMgc3NpemVfdCBwYXNzX3Rocm91Z2hfc3RvcmUoc3RydWN0IGRldmljZSAqZCxcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy00OTItXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSBuZXRkZXZfcHJpdih0b19uZXRfZGV2KGQpKTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjQ5MzpcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbztcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTQ5NC1cdGJvb2wgZW5hYmxlO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTU2Mz1zdGF0aWMgaW50IHFtaV93d2FuX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTU2NC17XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo1NjU6XHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNTY2LVx0Ym9vbCByYXdpcCA9IGluZm8tXHUwMDNlZmxhZ3MgXHUwMDI2IFFNSV9XV0FOX0ZMQUdfUkFXSVA7XG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9NjU0PXN0YXRpYyBpbnQgcW1pX3d3YW5fbWFuYWdlX3Bvd2VyKHN0cnVjdCB1c2JuZXQgKmRldiwgaW50IG9uKVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNjU1LXtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjY1NjpcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy02NTctXHRpbnQgcnY7XG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9Njg2PXN0YXRpYyBpbnQgcW1pX3d3YW5fcmVnaXN0ZXJfc3ViZHJpdmVyKHN0cnVjdCB1c2JuZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy02ODktXHRzdHJ1Y3QgdXNiX2RyaXZlciAqc3ViZHJpdmVyID0gTlVMTDtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjY5MDpcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy02OTEtXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9NzQ0PXN0YXRpYyBpbnQgcW1pX3d3YW5fYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTc1Mi1cdHN0cnVjdCB1c2JfZHJpdmVyICpkcml2ZXIgPSBkcml2ZXJfb2YoaW50Zik7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo3NTM6XHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNzU0LVx0c3RydWN0IHVzYl9jZGNfcGFyc2VkX2hlYWRlciBoZHI7XG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNzU2LVx0QlVJTERfQlVHX09OKChzaXplb2YoKChzdHJ1Y3QgdXNibmV0ICopMCktXHUwMDNlZGF0YSkgXHUwMDNjXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo3NTc6XHRcdCAgICAgIHNpemVvZihzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUpKSk7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy03NTgtXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9ODQ5PXN0YXRpYyB2b2lkIHFtaV93d2FuX3VuYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtODUwLXtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjg1MTpcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy04NTItXHRzdHJ1Y3QgdXNiX2RyaXZlciAqZHJpdmVyID0gZHJpdmVyX29mKGludGYpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTg4Nz1zdGF0aWMgaW50IHFtaV93d2FuX3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBtZXNzYWdlKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTg4OS1cdHN0cnVjdCB1c2JuZXQgKmRldiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo4OTA6XHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtODkxLVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz05MTA9c3RhdGljIGludCBxbWlfd3dhbl9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTEyLVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjkxMzpcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05MTQtXHRpbnQgcmV0ID0gMDtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz0xNTc4PXN0YXRpYyB2b2lkIHFtaV93d2FuX2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTU4MC1cdHN0cnVjdCB1c2JuZXQgKmRldiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoxNTgxOlx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTU4Mi1cdHN0cnVjdCBsaXN0X2hlYWQgKml0ZXI7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE3OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5ODIxCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBVU0IgR2FkZ2V0IERyaXZlciBEYXRhIFN0cnVjdHVyZXMqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIHVuZGVyc3RhbmRpbmcgdGhlIGRhdGEgc3RydWN0dXJlcyBjb3JyZWN0bHkuIEkgd2FzIGp1c3QgbG9va2luZyBhdCBgcW1pX3d3YW5gLCBhbmQgaXQmIzM5O3MgdXNpbmcgYHFtaV93d2FuX3N0YXRlYCwgZGVmaW5lZCBhczogYHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSB7IHN0cnVjdCB1c2JfZHJpdmVyICpzdWJkcml2ZXI7IGF0b21pY190IHBtY291bnQ7IHVuc2lnbmVkIGxvbmcgZmxhZ3M7IH07YC4gVGhpcyBpcyBpbnRlcmVzdGluZywgaXQgc2VlbXMgaXQgZG9lc24mIzM5O3QgdXRpbGl6ZSBgY2RjX3N0YXRlYCBhdCBhbGwsIHJpZ2h0PyBJIG5lZWQgdG8ga2VlcCB0aGF0IHN0cmFpZ2h0LgoKTm93LCB3aGF0IGFib3V0IGBybmRpc19ob3N0YD8gVGhhdCYjMzk7cyBhIGRpZmZlcmVudCBiZWFzdCwgSSB0aGluay4gSSBrbm93IGl0IGxldmVyYWdlcyBgY2RjX3N0YXRlYCwgYW5kIGl0IGRvZXMgc28gdmlhIHRoZSBgaW5mb2AgcG9pbnRlci4gVGhlIHJlbGV2YW50IGNvZGUgc25pcHBldCBzaG93cyBpdCBjYXN0cyBgZGV2LSZndDtkYXRhYCB0byBhIGBjZGNfc3RhdGVgIHN0cnVjdC4gQW5kIHRoZSBkcml2ZXIgdXNlcyBgdXNibmV0X2dlbmVyaWNfY2RjX2JpbmRgLCB3aGljaCwgYXMgSSByZWNhbGwsIGlzIHdoZXJlIGBjZGNfc3RhdGVgIGdldHMgcG9wdWxhdGVkLgoKSG1tLCBidXQgd2hhdCBlbHNlIGRvZXMgYHJuZGlzX2hvc3RgIGRvIHdpdGggYGRldi0mZ3Q7ZGF0YWA/IEkgc2hvdWxkIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSB1bmV4cGVjdGVkIGludGVyYWN0aW9ucyB0aGVyZS4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRocm91Z2ggdGhlIHJlc3Qgb2YgYHJuZGlzX2hvc3QuY2AgdG8gYmUgY29tcGxldGVseSBjZXJ0YWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNzo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Rldi1cdTAwM2VkYXRhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL3JuZGlzX2hvc3QuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE3OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwMzE3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWwgQnVnIHdpdGggVVNCIENEQyBEZXZpY2UgU3RhdGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZGlmZiBhbmQgaW1tZWRpYXRlbHkgc2VlIGEgY2hhbmdlIGluIGhvdyBgY2RjX3N0YXRlYCBpcyBhY2Nlc3NlZC4gSXQgdXNlZCB0byBiZSBgZGV2LSZndDtkYXRhYCBpbiBgcm5kaXNfaG9zdC5jYCwgYW5kIG5vdyBpdCYjMzk7cyBgZGV2LSZndDtjZGNgLiBUaGUgc2FtZSB0aGluZyBoYXBwZW5lZCBpbiBgY2RjX2V0aGVyLmNgLCBzbyBjbGVhcmx5IHRoZXJlJiMzOTtzIGJlZW4gc29tZSByZWZhY3RvcmluZyByZWxhdGVkIHRvIHRoZSBzdGF0ZSBzdHJ1Y3R1cmUuIEkmIzM5O20gYXNzdW1pbmcgdGhpcyBpcyBhIGZpeCBvciBpbXByb3ZlbWVudC4KClRoZSBtYWluIGNvbmNlcm4gbm93IGlzIHdoZXRoZXIgdGhpcyBjaGFuZ2UgYnJlYWtzIGFueSBleGlzdGluZyBkcml2ZXJzLiBJJiMzOTttIHRoaW5raW5nLCBhcmUgdGhlcmUgYW55IGRyaXZlcnMgb3V0IHRoZXJlIHRoYXQgYXJlIHN0aWxsIHJlbHlpbmcgb24gYGRldi0mZ3Q7ZGF0YWAgZm9yIHRoZWlyIG93biBwcml2YXRlIHN0YXRlIEFORCBhcmUgY2FsbGluZyBmdW5jdGlvbnMgbGlrZSBgdXNibmV0X2NkY19zdGF0dXNgIG9yIGB1c2JuZXRfY2RjX3VwZGF0ZV9maWx0ZXJgPyAgSWYgc28sIHRoZW4gd2UmIzM5O3ZlIGdvdCBhIHByb2JsZW0gYW5kIHRoZWlyIHN0YXRlIHdpbGwgYmUgY29ycnVwdGVkIGlmIHRoZSBvbGQgYGRldi0mZ3Q7ZGF0YWAgcG9pbnRlciBpcyBub3QgY29ycmVjdC4gSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgYW55IHBvdGVudGlhbCBjb25mbGljdHMgaGVyZSwgc28gbXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGNhbGxlcnMgb2YgdGhvc2UgdHdvIENEQyBmdW5jdGlvbnMuICBJIG5lZWQgdG8gY2hlY2sgZm9yIGFueSBpbnRlcmFjdGlvbiB0aGF0IG1heSBiZSBoYXBwZW5pbmcgb24gdGhlIG9sZCBgZGV2LSZndDtkYXRhYCBzdHJ1Y3R1cmUsIHdoaWNoIG1pZ2h0IG5vdyBiZSB1c2VkIGRpZmZlcmVudGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNzo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1c2JuZXRfY2RjX3N0YXR1cyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jPTQxMD1zdGF0aWMgdm9pZCB1c2JuZXRfY2RjX3p0ZV9zdGF0dXMoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXJiICp1cmIpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jLTQxOS1cdGlmIChldmVudC1cdTAwM2ViTm90aWZpY2F0aW9uVHlwZSAhPSBVU0JfQ0RDX05PVElGWV9ORVRXT1JLX0NPTk5FQ1RJT04pIHtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYzo0MjA6XHRcdHVzYm5ldF9jZGNfc3RhdHVzKGRldiwgdXJiKTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYy00MjEtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmM9NDM0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm9cdGNkY19pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYy00MzgtXHQudW5iaW5kID1cdHVzYm5ldF9jZGNfdW5iaW5kLFxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jOjQzOTpcdC5zdGF0dXMgPVx0dXNibmV0X2NkY19zdGF0dXMsXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmMtNDQwLVx0LnNldF9yeF9tb2RlID1cdHVzYm5ldF9jZGNfdXBkYXRlX2ZpbHRlcixcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmM9NDU1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gd3dhbl9pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYy00NTktXHQudW5iaW5kID1cdHVzYm5ldF9jZGNfdW5iaW5kLFxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jOjQ2MDpcdC5zdGF0dXMgPVx0dXNibmV0X2NkY19zdGF0dXMsXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmMtNDYxLVx0LnNldF9yeF9tb2RlID1cdHVzYm5ldF9jZGNfdXBkYXRlX2ZpbHRlcixcbi0tXG5kcml2ZXJzL25ldC91c2IvbGctdmw2MDAuYz0zMDE9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mb1x0dmw2MDBfaW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvbGctdmw2MDAuYy0zMDUtXHQudW5iaW5kXHRcdD0gdmw2MDBfdW5iaW5kLFxuZHJpdmVycy9uZXQvdXNiL2xnLXZsNjAwLmM6MzA2Olx0LnN0YXR1c1x0XHQ9IHVzYm5ldF9jZGNfc3RhdHVzLFxuZHJpdmVycy9uZXQvdXNiL2xnLXZsNjAwLmMtMzA3LVx0LnJ4X2ZpeHVwXHQ9IHZsNjAwX3J4X2ZpeHVwLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9yODE1M19lY20uYz0xMTU9c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mbyByODE1M19pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9yODE1M19lY20uYy0xMTktXHQudW5iaW5kID1cdHVzYm5ldF9jZGNfdW5iaW5kLFxuZHJpdmVycy9uZXQvdXNiL3I4MTUzX2VjbS5jOjEyMDpcdC5zdGF0dXMgPVx0dXNibmV0X2NkY19zdGF0dXMsXG5kcml2ZXJzL25ldC91c2IvcjgxNTNfZWNtLmMtMTIxLVx0Lm1hbmFnZV9wb3dlciA9XHR1c2JuZXRfbWFuYWdlX3Bvd2VyLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYz0yMzA1PXN0YXRpYyB2b2lkIHNwZWVkX2NoYW5nZShzdHJ1Y3QgdXNibmV0ICpkZXYsIF9fbGUzMiAqc3BlZWRzKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYy0yMzEwLVxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jOjIzMTE6dm9pZCB1c2JuZXRfY2RjX3N0YXR1cyhzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1cmIgKnVyYilcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYy0yMzEyLXtcbi0tXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmMtMjM0OC19XG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmM6MjM0OTpFWFBPUlRfU1lNQk9MX0dQTCh1c2JuZXRfY2RjX3N0YXR1cyk7XG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmMtMjM1MC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTc6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE2MzUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBzdW1tYXJ5OgoKKipEaWdnaW5nIGludG8gbGctdmw2MDAuYzogVVNCIENEQyBTdGF0dXMgYW5kIERhdGEqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4uLiAqbGctdmw2MDAuYyouICBUaGF0IG5hbWUmIzM5O3MgZmFtaWxpYXI7IGl0JiMzOTtzIGxpa2VseSBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgTEcgVkw2MDAgbW9kZW0gZHJpdmVycy4gIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIGFib3V0IHRoZSBgdXNibmV0X2NkY19zdGF0dXNgIGZ1bmN0aW9uIGNhbGwgSSYjMzk7bSBzZWVpbmcgaW4gaXQuIEkga25vdyB0aGF0IGZ1bmN0aW9uLCBpdCYjMzk7cyBwcmV0dHkgc3RhbmRhcmQgVVNCIENEQyBFdGhlcm5ldCBzdHVmZi4gQnV0IHRoZSBjcnVjaWFsIHF1ZXN0aW9uIHRoYXQgY29tZXMgdG8gbWluZCBpcyAqaG93KiBpcyB0aGUgZHJpdmVyIGFjdHVhbGx5IGhhbmRsaW5nIHRoZSBkZXZpY2Ugc3BlY2lmaWMgZGF0YT8gQW5kIG1vcmUgc3BlY2lmaWNhbGx5LCBpcyBpdCB1c2luZyBgZGV2LSZndDtkYXRhYCBmb3IgZGV2aWNlLXNwZWNpZmljIHByaXZhdGUgZGF0YT8gIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJlYWwgbnVhbmNlIGlzLiBJdCBpcyBvbmUgb2YgdGhlIG1vcmUgY29tbW9uIGRlc2lnbiBjb25zaWRlcmF0aW9ucywgYnV0IGl0IGlzbiYjMzk7dCBhbHdheXMgdXRpbGl6ZWQuIFRoaXMgaXMgYSBjb21tb24gcGF0dGVybiwgYW5kIGl0JiMzOTtzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGRyaXZlciBpcyBtYW5hZ2luZyBpdHMgaW50ZXJuYWwgc3RhdGUuICBHb3R0YSBmb2xsb3cgdGhlIGRhdGEgZmxvdyB0byBiZSBzdXJlLiAgTGV0JiMzOTtzIHNlZSB3aGVyZSB0aGF0IGdvZXMuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTc6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXYtXHUwMDNlZGF0YSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9sZy12bDYwMC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTc6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE5NDYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkRpdmluZyBpbnRvIHRoZSBVU0IgRXRoZXJuZXQgQ29udHJvbCBNb2RlbCBDb2RlKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHI4MTUzX2VjbS5jYCBhbmQgaW1tZWRpYXRlbHkgYSBxdWVzdGlvbiBwb3BzIGludG8gbXkgaGVhZCDigJMgYSBwcmV0dHkgZnVuZGFtZW50YWwgb25lLCBhY3R1YWxseS4gSSBzZWUgaXQmIzM5O3MgdXNpbmcgYHVzYm5ldF9jZGNfc3RhdHVzYC4gVGhhdCB0ZWxscyBtZSB0aGlzIGlzIGxpa2VseSBkZWFsaW5nIHdpdGggYSBDREMtRUNNIChFdGhlcm5ldCBDb250cm9sIE1vZGVsKSBuZXR3b3JrIGRldmljZSBiYXNlZCBvbiBhIFJlYWx0ZWsgY2hpcHNldC4gVGhlIHF1ZXN0aW9uIGlzLCBhbmQgdGhpcyBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgZHJpdmVyJiMzOTtzIGhhbmRsaW5nIGNvbW11bmljYXRpb24gYW5kIGRldmljZS1zcGVjaWZpYyBkYXRhOiBpcyBpdCBhY2Nlc3NpbmcgYGRldi0mZ3Q7ZGF0YWA/IElzIHRoZSBkcml2ZXIgY29ycmVjdGx5IGFzc29jaWF0aW5nIGFueSBjb250ZXh0IGRhdGEgd2l0aCB0aGUgYHVzYm5ldGAgZGV2aWNlPyBUaGlzIGJpdCBvZiBpbmZvcm1hdGlvbiBpcyBrZXkgZm9yIGRhdGEgbWFuYWdlbWVudCBhbmQgc3RhdGUgdHJhY2tpbmcgd2l0aGluIHRoZSBkZXZpY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE3OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGV2LVx1MDAzZWRhdGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvcjgxNTNfZWNtLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNzo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjIwMwoJCQkJCQkJb3V0cHV0OiAxMTQKCQkJCQkJCXRob3VnaHRzOiAxMjMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlZmFjdG9yaW5nIEFuYWx5c2lzOiBgdXNibmV0LmNgIGFuZCBgY2RjX3N0YXRlYCoqCgpPa2F5LCBzbyBJIGluaXRpYWxseSB0aG91Z2h0IHRoZXJlIG1pZ2h0IGJlIGEgc3VidGxlIGJ1ZyBmaXggcmVsYXRlZCB0byB0aGUgYGNkY19zdGF0ZWAgd2l0aGluIGB1c2JuZXQuY2AuIEJ1dCBmaXJzdCwgSSBuZWVkZWQgdG8gY29uZmlybSB0aGF0IHRoZSByZWxldmFudCBmdW5jdGlvbnMgYWN0dWFsbHkgdXNlZCBgY2RjX3N0YXRlYC4gIEkgc3RhcnRlZCBieSBleGFtaW5pbmcgYHVzYm5ldF9jZGNfc3RhdHVzYC4gTm8sIGl0IGRvZXNuJiMzOTt0IHVzZSBgY2RjX3N0YXRlYCBkaXJlY3RseS4gSSB0aGVuIGxvb2tlZCBhdCBgdXNibmV0X2NkY191cGRhdGVfZmlsdGVyYC4gIE5vcGUsIHRoYXQgZnVuY3Rpb24gYWxzbyBkb2VzbiYjMzk7dCB0b3VjaCBgY2RjX3N0YXRlYC4KClRoZW4sIEkgbG9va2VkIGF0IGB1c2JuZXRfY2RjX3VuYmluZGAuIEFoYSEgIFRoYXQgZnVuY3Rpb24gKmRvZXMqIHVzZSBgY2RjX3N0YXRlYC4gIEkgZnVydGhlciBjaGVja2VkIGlmIHRoZSBkcml2ZXIgYHI4MTUzX2VjbS5jYCB1c2VzIGB1c2JuZXRfY2RjX3VuYmluZGAuIFllcy4gQnV0IGRvZXMgaXQgdXNlIGBkZXYtJmd0O2RhdGFgPyBOby4KClRoZXJlZm9yZSwgaXQgc2VlbXMgdGhhdCB0aGUgY2hhbmdlIGZyb20gdGhlIG1vcmUgZ2VuZXJhbCBgZGV2LSZndDtkYXRhYCB0byB0aGUgbW9yZSBzcGVjaWZpYyBgZGV2LSZndDtjZGNgIGlzIHB1cmVseSBhIHJlZmFjdG9yaW5nIHRvIGltcHJvdmUgY29kZSBjbGFyaXR5IGFuZCBhdm9pZCBwb3RlbnRpYWwgYWxpYXNpbmcuIEl0IGNvbnNvbGlkYXRlcyB1c2Ugb2YgYGNkY19zdGF0ZWAgd2hlcmUgYXBwbGljYWJsZSwgd2hpY2ggaXMgYSBnb29kIHByYWN0aWNlLiBObyBkcml2ZXJzIGFyZSB1c2luZyBgZGV2LSZndDtkYXRhYCBhbmQgYGNkY19zdGF0ZWAgc2ltdWx0YW5lb3VzbHksIGFuZCB0aGlzIHJlZmFjdG9yaW5nIGRvZXNuJiMzOTt0IGZpeCBhIHByZS1leGlzdGluZyBidWcuICBJdCYjMzk7cyBqdXN0IGNsZWFuZXIuCgpDb25zaWRlcmluZyB0aGUgcHJvbXB0JiMzOTtzIGNyaXRlcmlhIGZvciBhIG5vbi1mdXp6YWJsZSBwYXRjaCAoJiMzNDtDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cmIzM0OyksIEkgY29uY2x1ZGUgdGhhdCB0aGlzIGNoYW5nZSBxdWFsaWZpZXMuICBJdCYjMzk7cyBhIHB1cmUgcmVmYWN0b3JpbmcgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgbmV3IGNvZGUgcGF0aHMgb3IgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93LCBzbyBJJiMzOTtsbCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE3OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaXMgYSBwdXJlIHJlZmFjdG9yaW5nIHRoYXQgbW92ZXMgQ0RDLXJlbGF0ZWQgZnVuY3Rpb25zIGZyb20gY2RjX2V0aGVyLmMgdG8gdGhlIGNvcmUgdXNibmV0LmMgbW9kdWxlIGFuZCByZXBsYWNlcyB0aGUgdXNlIG9mIHRoZSBnZW5lcmljIGRhdGEgYXJyYXkgd2l0aCBhIGRlZGljYXRlZCBjZGNfc3RhdGUgc3RydWN0IGluIHVzYm5ldC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZnVuY3Rpb25hbCBsb2dpYyBvciBmaXggYW55IGJ1Z3MgcmVsYXRlZCB0byBkYXRhIGFsaWFzaW5nLCBhcyBubyBkcml2ZXJzIHdlcmUgY29uY3VycmVudGx5IHVzaW5nIGJvdGggdGhlIGdlbmVyaWMgZGF0YSBhcnJheSBhbmQgdGhlIENEQyBzdGF0ZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGlzIGEgcHVyZSByZWZhY3RvcmluZyB0aGF0IG1vdmVzIENEQy1yZWxhdGVkIGZ1bmN0aW9ucyBmcm9tIGNkY19ldGhlci5jIHRvIHRoZSBjb3JlIHVzYm5ldC5jIG1vZHVsZSBhbmQgcmVwbGFjZXMgdGhlIHVzZSBvZiB0aGUgZ2VuZXJpYyBkYXRhIGFycmF5IHdpdGggYSBkZWRpY2F0ZWQgY2RjX3N0YXRlIHN0cnVjdCBpbiB1c2JuZXQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgbG9naWMgb3IgZml4IGFueSBidWdzIHJlbGF0ZWQgdG8gZGF0YSBhbGlhc2luZywgYXMgbm8gZHJpdmVycyB3ZXJlIGNvbmN1cnJlbnRseSB1c2luZyBib3RoIHRoZSBnZW5lcmljIGRhdGEgYXJyYXkgYW5kIHRoZSBDREMgc3RhdGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDJUMTc6NTM6NTEuODk5NDg4MTQ0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMzODYxMjI4NjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpcyBhIHB1cmUgcmVmYWN0b3JpbmcgdGhhdCBtb3ZlcyBDREMtcmVsYXRlZCBmdW5jdGlvbnMgZnJvbSBjZGNfZXRoZXIuYyB0byB0aGUgY29yZSB1c2JuZXQuYyBtb2R1bGUgYW5kIHJlcGxhY2VzIHRoZSB1c2Ugb2YgdGhlIGdlbmVyaWMgZGF0YSBhcnJheSB3aXRoIGEgZGVkaWNhdGVkIGNkY19zdGF0ZSBzdHJ1Y3QgaW4gdXNibmV0LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBmdW5jdGlvbmFsIGxvZ2ljIG9yIGZpeCBhbnkgYnVncyByZWxhdGVkIHRvIGRhdGEgYWxpYXNpbmcsIGFzIG5vIGRyaXZlcnMgd2VyZSBjb25jdXJyZW50bHkgdXNpbmcgYm90aCB0aGUgZ2VuZXJpYyBkYXRhIGFycmF5IGFuZCB0aGUgQ0RDIHN0YXRlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTc6NTM6NTEuODk5NDk1NjM0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NzQ1NTcxNjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiOWYyODdhOGIyMzBkOTRkNTQ5YzQxZDhiNjJkMjIzNzI1NDE3OGFmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDIgMTc6NTM6NDkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jIGIvZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jXFxuaW5kZXggYTBhNTc0MDU5MGI5NDUuLjc2YWQ0ZmZhOTUwYWIzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuY1xcbkBAIC02MywzNSArNjMsNiBAQCBzdGF0aWMgY29uc3QgdTggbWJtX2d1aWRbMTZdID0ge1xcbiBcXHQweGE2LCAweDA3LCAweGMwLCAweGZmLCAweGNiLCAweDdlLCAweDM5LCAweDJhLFxcbiB9O1xcbiBcXG4tdm9pZCB1c2JuZXRfY2RjX3VwZGF0ZV9maWx0ZXIoc3RydWN0IHVzYm5ldCAqZGV2KVxcbi17XFxuLVxcdHN0cnVjdCBuZXRfZGV2aWNlXFx0Km5ldCA9IGRldi1cXHUwMDNlbmV0O1xcbi1cXG4tXFx0dTE2IGNkY19maWx0ZXIgPSBVU0JfQ0RDX1BBQ0tFVF9UWVBFX0RJUkVDVEVEXFxuLVxcdFxcdFxcdHwgVVNCX0NEQ19QQUNLRVRfVFlQRV9CUk9BRENBU1Q7XFxuLVxcbi1cXHQvKiBmaWx0ZXJpbmcgb24gdGhlIGRldmljZSBpcyBhbiBvcHRpb25hbCBmZWF0dXJlIGFuZCBub3Qgd29ydGhcXG4tXFx0ICogdGhlIGhhc3NsZSBzbyB3ZSBqdXN0IHJvdWdobHkgY2FyZSBhYm91dCBzbm9vcGluZyBhbmQgaWYgYW55XFxuLVxcdCAqIG11bHRpY2FzdCBpcyByZXF1ZXN0ZWQsIHdlIHRha2UgZXZlcnkgbXVsdGljYXN0XFxuLVxcdCAqL1xcbi1cXHRpZiAobmV0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElGRl9QUk9NSVNDKVxcbi1cXHRcXHRjZGNfZmlsdGVyIHw9IFVTQl9DRENfUEFDS0VUX1RZUEVfUFJPTUlTQ1VPVVM7XFxuLVxcdGlmICghbmV0ZGV2X21jX2VtcHR5KG5ldCkgfHwgKG5ldC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRkZfQUxMTVVMVEkpKVxcbi1cXHRcXHRjZGNfZmlsdGVyIHw9IFVTQl9DRENfUEFDS0VUX1RZUEVfQUxMX01VTFRJQ0FTVDtcXG4tXFxuLVxcdHVzYl9jb250cm9sX21zZyhkZXYtXFx1MDAzZXVkZXYsXFxuLVxcdFxcdFxcdHVzYl9zbmRjdHJscGlwZShkZXYtXFx1MDAzZXVkZXYsIDApLFxcbi1cXHRcXHRcXHRVU0JfQ0RDX1NFVF9FVEhFUk5FVF9QQUNLRVRfRklMVEVSLFxcbi1cXHRcXHRcXHRVU0JfVFlQRV9DTEFTUyB8IFVTQl9SRUNJUF9JTlRFUkZBQ0UsXFxuLVxcdFxcdFxcdGNkY19maWx0ZXIsXFxuLVxcdFxcdFxcdGRldi1cXHUwMDNlaW50Zi1cXHUwMDNlY3VyX2FsdHNldHRpbmctXFx1MDAzZWRlc2MuYkludGVyZmFjZU51bWJlcixcXG4tXFx0XFx0XFx0TlVMTCxcXG4tXFx0XFx0XFx0MCxcXG4tXFx0XFx0XFx0VVNCX0NUUkxfU0VUX1RJTUVPVVRcXG4tXFx0XFx0KTtcXG4tfVxcbi1FWFBPUlRfU1lNQk9MX0dQTCh1c2JuZXRfY2RjX3VwZGF0ZV9maWx0ZXIpO1xcbi1cXG4gLyogV2UgbmVlZCB0byBvdmVycmlkZSB1c2JuZXRfKl9saW5rX2tzZXR0aW5ncyBpbiBiaW5kKCkgKi9cXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBjZGNfZXRoZXJfZXRodG9vbF9vcHMgPSB7XFxuIFxcdC5nZXRfbGlua1xcdFxcdD0gdXNibmV0X2dldF9saW5rLFxcbkBAIC0xMTQsNyArODUsNyBAQCBpbnQgdXNibmV0X2dlbmVyaWNfY2RjX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4gXFx0dThcXHRcXHRcXHRcXHQqYnVmID0gaW50Zi1cXHUwMDNlY3VyX2FsdHNldHRpbmctXFx1MDAzZWV4dHJhO1xcbiBcXHRpbnRcXHRcXHRcXHRcXHRsZW4gPSBpbnRmLVxcdTAwM2VjdXJfYWx0c2V0dGluZy1cXHUwMDNlZXh0cmFsZW47XFxuIFxcdHN0cnVjdCB1c2JfaW50ZXJmYWNlX2Rlc2NyaXB0b3JcXHQqZDtcXG4tXFx0c3RydWN0IGNkY19zdGF0ZVxcdFxcdCppbmZvID0gKHZvaWQgKikgXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG4rXFx0c3RydWN0IGNkY19zdGF0ZVxcdFxcdCppbmZvID0gXFx1MDAyNmRldi1cXHUwMDNlY2RjO1xcbiBcXHRpbnRcXHRcXHRcXHRcXHRzdGF0dXMgPSAtRU5PREVWO1xcbiBcXHRpbnRcXHRcXHRcXHRcXHRybmRpcztcXG4gXFx0Ym9vbFxcdFxcdFxcdFxcdGFuZHJvaWRfcm5kaXNfcXVpcmsgPSBmYWxzZTtcXG5AQCAtMzY1LDcgKzMzNiw3IEBAIEVYUE9SVF9TWU1CT0xfR1BMKHVzYm5ldF9ldGhlcl9jZGNfYmluZCk7XFxuIFxcbiB2b2lkIHVzYm5ldF9jZGNfdW5iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuIHtcXG4tXFx0c3RydWN0IGNkY19zdGF0ZVxcdFxcdCppbmZvID0gKHZvaWQgKikgXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG4rXFx0c3RydWN0IGNkY19zdGF0ZVxcdFxcdCppbmZvID0gXFx1MDAyNmRldi1cXHUwMDNlY2RjO1xcbiBcXHRzdHJ1Y3QgdXNiX2RyaXZlclxcdFxcdCpkcml2ZXIgPSBkcml2ZXJfb2YoaW50Zik7XFxuIFxcbiBcXHQvKiBjb21iaW5lZCBpbnRlcmZhY2UgLSBub3RoaW5nICB0byBkbyAqL1xcbkBAIC00MDAsNTkgKzM3MSwxMCBAQCBFWFBPUlRfU1lNQk9MX0dQTCh1c2JuZXRfY2RjX3VuYmluZCk7XFxuICAqIChieSBCcmFkIEhhcmRzKSB0YWxrZWQgd2l0aCwgd2l0aCBtb3JlIGZ1bmN0aW9uYWxpdHkuXFxuICAqL1xcbiBcXG4tc3RhdGljIHZvaWQgc3BlZWRfY2hhbmdlKHN0cnVjdCB1c2JuZXQgKmRldiwgX19sZTMyICpzcGVlZHMpXFxuLXtcXG4tXFx0ZGV2LVxcdTAwM2V0eF9zcGVlZCA9IF9fbGUzMl90b19jcHUoc3BlZWRzWzBdKTtcXG4tXFx0ZGV2LVxcdTAwM2VyeF9zcGVlZCA9IF9fbGUzMl90b19jcHUoc3BlZWRzWzFdKTtcXG4tfVxcbi1cXG4tdm9pZCB1c2JuZXRfY2RjX3N0YXR1cyhzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1cmIgKnVyYilcXG4te1xcbi1cXHRzdHJ1Y3QgdXNiX2NkY19ub3RpZmljYXRpb25cXHQqZXZlbnQ7XFxuLVxcbi1cXHRpZiAodXJiLVxcdTAwM2VhY3R1YWxfbGVuZ3RoIFxcdTAwM2Mgc2l6ZW9mKCpldmVudCkpXFxuLVxcdFxcdHJldHVybjtcXG4tXFxuLVxcdC8qIFNQRUVEX0NIQU5HRSBjYW4gZ2V0IHNwbGl0IGludG8gdHdvIDgtYnl0ZSBwYWNrZXRzICovXFxuLVxcdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoRVZFTlRfU1RTX1NQTElULCBcXHUwMDI2ZGV2LVxcdTAwM2VmbGFncykpIHtcXG4tXFx0XFx0c3BlZWRfY2hhbmdlKGRldiwgKF9fbGUzMiAqKSB1cmItXFx1MDAzZXRyYW5zZmVyX2J1ZmZlcik7XFxuLVxcdFxcdHJldHVybjtcXG4tXFx0fVxcbi1cXG4tXFx0ZXZlbnQgPSB1cmItXFx1MDAzZXRyYW5zZmVyX2J1ZmZlcjtcXG4tXFx0c3dpdGNoIChldmVudC1cXHUwMDNlYk5vdGlmaWNhdGlvblR5cGUpIHtcXG4tXFx0Y2FzZSBVU0JfQ0RDX05PVElGWV9ORVRXT1JLX0NPTk5FQ1RJT046XFxuLVxcdFxcdG5ldGlmX2RiZyhkZXYsIHRpbWVyLCBkZXYtXFx1MDAzZW5ldCwgXFxcIkNEQzogY2FycmllciAlc1xcXFxuXFxcIixcXG4tXFx0XFx0XFx0ICBldmVudC1cXHUwMDNld1ZhbHVlID8gXFxcIm9uXFxcIiA6IFxcXCJvZmZcXFwiKTtcXG4tXFx0XFx0aWYgKG5ldGlmX2NhcnJpZXJfb2soZGV2LVxcdTAwM2VuZXQpICE9ICEhZXZlbnQtXFx1MDAzZXdWYWx1ZSlcXG4tXFx0XFx0XFx0dXNibmV0X2xpbmtfY2hhbmdlKGRldiwgISFldmVudC1cXHUwMDNld1ZhbHVlLCAwKTtcXG4tXFx0XFx0YnJlYWs7XFxuLVxcdGNhc2UgVVNCX0NEQ19OT1RJRllfU1BFRURfQ0hBTkdFOlxcdC8qIHR4L3J4IHJhdGVzICovXFxuLVxcdFxcdG5ldGlmX2RiZyhkZXYsIHRpbWVyLCBkZXYtXFx1MDAzZW5ldCwgXFxcIkNEQzogc3BlZWQgY2hhbmdlIChsZW4gJWQpXFxcXG5cXFwiLFxcbi1cXHRcXHRcXHQgIHVyYi1cXHUwMDNlYWN0dWFsX2xlbmd0aCk7XFxuLVxcdFxcdGlmICh1cmItXFx1MDAzZWFjdHVhbF9sZW5ndGggIT0gKHNpemVvZigqZXZlbnQpICsgOCkpXFxuLVxcdFxcdFxcdHNldF9iaXQoRVZFTlRfU1RTX1NQTElULCBcXHUwMDI2ZGV2LVxcdTAwM2VmbGFncyk7XFxuLVxcdFxcdGVsc2VcXG4tXFx0XFx0XFx0c3BlZWRfY2hhbmdlKGRldiwgKF9fbGUzMiAqKSBcXHUwMDI2ZXZlbnRbMV0pO1xcbi1cXHRcXHRicmVhaztcXG4tXFx0LyogVVNCX0NEQ19OT1RJRllfUkVTUE9OU0VfQVZBSUxBQkxFIGNhbiBoYXBwZW4gdG9vIChlLmcuIFJORElTKSxcXG4tXFx0ICogYnV0IHRoZXJlIGFyZSBubyBzdGFuZGFyZCBmb3JtYXRzIGZvciB0aGUgcmVzcG9uc2UgZGF0YS5cXG4tXFx0ICovXFxuLVxcdGRlZmF1bHQ6XFxuLVxcdFxcdG5ldGRldl9lcnIoZGV2LVxcdTAwM2VuZXQsIFxcXCJDREM6IHVuZXhwZWN0ZWQgbm90aWZpY2F0aW9uICUwMnghXFxcXG5cXFwiLFxcbi1cXHRcXHRcXHQgICBldmVudC1cXHUwMDNlYk5vdGlmaWNhdGlvblR5cGUpO1xcbi1cXHRcXHRicmVhaztcXG4tXFx0fVxcbi19XFxuLUVYUE9SVF9TWU1CT0xfR1BMKHVzYm5ldF9jZGNfc3RhdHVzKTtcXG4tXFxuIGludCB1c2JuZXRfY2RjX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4ge1xcbiBcXHRpbnRcXHRcXHRcXHRcXHRzdGF0dXM7XFxuLVxcdHN0cnVjdCBjZGNfc3RhdGVcXHRcXHQqaW5mbyA9ICh2b2lkICopIFxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuLVxcbi1cXHRCVUlMRF9CVUdfT04oKHNpemVvZigoKHN0cnVjdCB1c2JuZXQgKikwKS1cXHUwMDNlZGF0YSlcXG4tXFx0XFx0XFx0XFx1MDAzYyBzaXplb2Yoc3RydWN0IGNkY19zdGF0ZSkpKTtcXG4rXFx0c3RydWN0IGNkY19zdGF0ZVxcdFxcdCppbmZvID0gXFx1MDAyNmRldi1cXHUwMDNlY2RjO1xcbiBcXG4gXFx0c3RhdHVzID0gdXNibmV0X2V0aGVyX2NkY19iaW5kKGRldiwgaW50Zik7XFxuIFxcdGlmIChzdGF0dXMgXFx1MDAzYyAwKVxcbkBAIC00NzksMjUgKzQwMSw2IEBAIHN0YXRpYyBpbnQgdXNibmV0X2NkY196dGVfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbiBcXHRyZXR1cm4gc3RhdHVzO1xcbiB9XFxuIFxcbi0vKiBNYWtlIHN1cmUgcGFja2V0cyBoYXZlIGNvcnJlY3QgZGVzdGluYXRpb24gTUFDIGFkZHJlc3NcXG4tICpcXG4tICogQSBmaXJtd2FyZSBidWcgb2JzZXJ2ZWQgb24gc29tZSBkZXZpY2VzIChaVEUgTUY4MjMvODMxLzkxMCkgaXMgdGhhdCB0aGVcXG4tICogZGV2aWNlIHNlbmRzIHBhY2tldHMgd2l0aCBhIHN0YXRpYywgYm9ndXMsIHJhbmRvbSBNQUMgYWRkcmVzcyAoZXZlbnQgaWZcXG4tICogZGV2aWNlIE1BQyBhZGRyZXNzIGhhcyBiZWVuIHVwZGF0ZWQpLiBBbHdheXMgc2V0IE1BQyBhZGRyZXNzIHRvIHRoYXQgb2YgdGhlXFxuLSAqIGRldmljZS5cXG4tICovXFxuLWludCB1c2JuZXRfY2RjX3p0ZV9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuLXtcXG4tXFx0aWYgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2MgRVRIX0hMRU4gfHwgIShza2ItXFx1MDAzZWRhdGFbMF0gXFx1MDAyNiAweDAyKSlcXG4tXFx0XFx0cmV0dXJuIDE7XFxuLVxcbi1cXHRza2JfcmVzZXRfbWFjX2hlYWRlcihza2IpO1xcbi1cXHRldGhlcl9hZGRyX2NvcHkoZXRoX2hkcihza2IpLVxcdTAwM2VoX2Rlc3QsIGRldi1cXHUwMDNlbmV0LVxcdTAwM2VkZXZfYWRkcik7XFxuLVxcbi1cXHRyZXR1cm4gMTtcXG4tfVxcbi1FWFBPUlRfU1lNQk9MX0dQTCh1c2JuZXRfY2RjX3p0ZV9yeF9maXh1cCk7XFxuLVxcbiAvKiBFbnN1cmUgY29ycmVjdCBsaW5rIHN0YXRlXFxuICAqXFxuICAqIFNvbWUgZGV2aWNlcyAoWlRFIE1GODIzLzgzMS85MTApIGV4cG9ydCB0d28gY2FycmllciBvbiBub3RpZmljYXRpb25zIHdoZW5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL3JuZGlzX2hvc3QuYyBiL2RyaXZlcnMvbmV0L3VzYi9ybmRpc19ob3N0LmNcXG5pbmRleCA1ZTM5ZDA1YTJkN2I2ZC4uZDUzOTY1NDY4N2MzMDUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvdXNiL3JuZGlzX2hvc3QuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3VzYi9ybmRpc19ob3N0LmNcXG5AQCAtNTcsNyArNTcsNyBAQCBFWFBPUlRfU1lNQk9MX0dQTChybmRpc19zdGF0dXMpO1xcbiBzdGF0aWMgdm9pZCBybmRpc19tc2dfaW5kaWNhdGUoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgcm5kaXNfaW5kaWNhdGUgKm1zZyxcXG4gXFx0XFx0XFx0XFx0aW50IGJ1ZmxlbilcXG4ge1xcbi1cXHRzdHJ1Y3QgY2RjX3N0YXRlICppbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbitcXHRzdHJ1Y3QgY2RjX3N0YXRlICppbmZvID0gXFx1MDAyNmRldi1cXHUwMDNlY2RjO1xcbiBcXHRzdHJ1Y3QgZGV2aWNlICp1ZGV2ID0gXFx1MDAyNmluZm8tXFx1MDAzZWNvbnRyb2wtXFx1MDAzZWRldjtcXG4gXFxuIFxcdGlmIChkZXYtXFx1MDAzZWRyaXZlcl9pbmZvLVxcdTAwM2VpbmRpY2F0aW9uKSB7XFxuQEAgLTkwLDcgKzkwLDcgQEAgc3RhdGljIHZvaWQgcm5kaXNfbXNnX2luZGljYXRlKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHJuZGlzX2luZGljYXRlICptc2csXFxuICAqL1xcbiBpbnQgcm5kaXNfY29tbWFuZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBybmRpc19tc2dfaGRyICpidWYsIGludCBidWZsZW4pXFxuIHtcXG4tXFx0c3RydWN0IGNkY19zdGF0ZVxcdCppbmZvID0gKHZvaWQgKikgXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG4rXFx0c3RydWN0IGNkY19zdGF0ZVxcdCppbmZvID0gXFx1MDAyNmRldi1cXHUwMDNlY2RjO1xcbiBcXHRzdHJ1Y3QgdXNiX2NkY19ub3RpZmljYXRpb24gbm90aWZpY2F0aW9uO1xcbiBcXHRpbnRcXHRcXHRcXHRtYXN0ZXJfaWZudW07XFxuIFxcdGludFxcdFxcdFxcdHJldHZhbDtcXG5AQCAtMjkwLDcgKzI5MCw3IEBAIGdlbmVyaWNfcm5kaXNfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBpbnQgZmxhZ3MpXFxuIHtcXG4gXFx0aW50XFx0XFx0XFx0cmV0dmFsO1xcbiBcXHRzdHJ1Y3QgbmV0X2RldmljZVxcdCpuZXQgPSBkZXYtXFx1MDAzZW5ldDtcXG4tXFx0c3RydWN0IGNkY19zdGF0ZVxcdCppbmZvID0gKHZvaWQgKikgXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG4rXFx0c3RydWN0IGNkY19zdGF0ZVxcdCppbmZvID0gXFx1MDAyNmRldi1cXHUwMDNlY2RjO1xcbiBcXHR1bmlvbiB7XFxuIFxcdFxcdHZvaWRcXHRcXHRcXHQqYnVmO1xcbiBcXHRcXHRzdHJ1Y3Qgcm5kaXNfbXNnX2hkclxcdCpoZWFkZXI7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi91c2JuZXQuYyBiL2RyaXZlcnMvbmV0L3VzYi91c2JuZXQuY1xcbmluZGV4IDI1NTE4NjM1YjdiNzJkLi43YmVlYTZkMGU3MzFjYyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC91c2IvdXNibmV0LmNcXG4rKysgYi9kcml2ZXJzL25ldC91c2IvdXNibmV0LmNcXG5AQCAtMjIsNiArMjIsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvaW5pdC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbmV0ZGV2aWNlLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9ldGhlcmRldmljZS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvdXNiL2NkYy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvY3R5cGUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2V0aHRvb2wuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3dvcmtxdWV1ZS5oXFx1MDAzZVxcbkBAIC0yMjcxLDYgKzIyNzIsMTAwIEBAIGludCB1c2JuZXRfd3JpdGVfY21kX2FzeW5jKHN0cnVjdCB1c2JuZXQgKmRldiwgdTggY21kLCB1OCByZXF0eXBlLFxcbiBcXG4gfVxcbiBFWFBPUlRfU1lNQk9MX0dQTCh1c2JuZXRfd3JpdGVfY21kX2FzeW5jKTtcXG4rXFxuK3ZvaWQgdXNibmV0X2NkY191cGRhdGVfZmlsdGVyKHN0cnVjdCB1c2JuZXQgKmRldilcXG4re1xcbitcXHRzdHJ1Y3QgbmV0X2RldmljZVxcdCpuZXQgPSBkZXYtXFx1MDAzZW5ldDtcXG4rXFxuK1xcdHUxNiBjZGNfZmlsdGVyID0gVVNCX0NEQ19QQUNLRVRfVFlQRV9ESVJFQ1RFRFxcbitcXHRcXHRcXHR8IFVTQl9DRENfUEFDS0VUX1RZUEVfQlJPQURDQVNUO1xcbitcXG4rXFx0LyogZmlsdGVyaW5nIG9uIHRoZSBkZXZpY2UgaXMgYW4gb3B0aW9uYWwgZmVhdHVyZSBhbmQgbm90IHdvcnRoXFxuK1xcdCAqIHRoZSBoYXNzbGUgc28gd2UganVzdCByb3VnaGx5IGNhcmUgYWJvdXQgc25vb3BpbmcgYW5kIGlmIGFueVxcbitcXHQgKiBtdWx0aWNhc3QgaXMgcmVxdWVzdGVkLCB3ZSB0YWtlIGV2ZXJ5IG11bHRpY2FzdFxcbitcXHQgKi9cXG4rXFx0aWYgKG5ldC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRkZfUFJPTUlTQylcXG4rXFx0XFx0Y2RjX2ZpbHRlciB8PSBVU0JfQ0RDX1BBQ0tFVF9UWVBFX1BST01JU0NVT1VTO1xcbitcXHRpZiAoIW5ldGRldl9tY19lbXB0eShuZXQpIHx8IChuZXQtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUZGX0FMTE1VTFRJKSlcXG4rXFx0XFx0Y2RjX2ZpbHRlciB8PSBVU0JfQ0RDX1BBQ0tFVF9UWVBFX0FMTF9NVUxUSUNBU1Q7XFxuK1xcbitcXHR1c2JfY29udHJvbF9tc2coZGV2LVxcdTAwM2V1ZGV2LFxcbitcXHRcXHRcXHR1c2Jfc25kY3RybHBpcGUoZGV2LVxcdTAwM2V1ZGV2LCAwKSxcXG4rXFx0XFx0XFx0VVNCX0NEQ19TRVRfRVRIRVJORVRfUEFDS0VUX0ZJTFRFUixcXG4rXFx0XFx0XFx0VVNCX1RZUEVfQ0xBU1MgfCBVU0JfUkVDSVBfSU5URVJGQUNFLFxcbitcXHRcXHRcXHRjZGNfZmlsdGVyLFxcbitcXHRcXHRcXHRkZXYtXFx1MDAzZWludGYtXFx1MDAzZWN1cl9hbHRzZXR0aW5nLVxcdTAwM2VkZXNjLmJJbnRlcmZhY2VOdW1iZXIsXFxuK1xcdFxcdFxcdE5VTEwsXFxuK1xcdFxcdFxcdDAsXFxuK1xcdFxcdFxcdFVTQl9DVFJMX1NFVF9USU1FT1VUXFxuK1xcdFxcdCk7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9HUEwodXNibmV0X2NkY191cGRhdGVfZmlsdGVyKTtcXG4rXFxuK3N0YXRpYyB2b2lkIHNwZWVkX2NoYW5nZShzdHJ1Y3QgdXNibmV0ICpkZXYsIF9fbGUzMiAqc3BlZWRzKVxcbit7XFxuK1xcdGRldi1cXHUwMDNldHhfc3BlZWQgPSBfX2xlMzJfdG9fY3B1KHNwZWVkc1swXSk7XFxuK1xcdGRldi1cXHUwMDNlcnhfc3BlZWQgPSBfX2xlMzJfdG9fY3B1KHNwZWVkc1sxXSk7XFxuK31cXG4rXFxuK3ZvaWQgdXNibmV0X2NkY19zdGF0dXMoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXJiICp1cmIpXFxuK3tcXG4rXFx0c3RydWN0IHVzYl9jZGNfbm90aWZpY2F0aW9uXFx0KmV2ZW50O1xcbitcXG4rXFx0aWYgKHVyYi1cXHUwMDNlYWN0dWFsX2xlbmd0aCBcXHUwMDNjIHNpemVvZigqZXZlbnQpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHQvKiBTUEVFRF9DSEFOR0UgY2FuIGdldCBzcGxpdCBpbnRvIHR3byA4LWJ5dGUgcGFja2V0cyAqL1xcbitcXHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KEVWRU5UX1NUU19TUExJVCwgXFx1MDAyNmRldi1cXHUwMDNlZmxhZ3MpKSB7XFxuK1xcdFxcdHNwZWVkX2NoYW5nZShkZXYsIChfX2xlMzIgKil1cmItXFx1MDAzZXRyYW5zZmVyX2J1ZmZlcik7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXG4rXFx0ZXZlbnQgPSB1cmItXFx1MDAzZXRyYW5zZmVyX2J1ZmZlcjtcXG4rXFx0c3dpdGNoIChldmVudC1cXHUwMDNlYk5vdGlmaWNhdGlvblR5cGUpIHtcXG4rXFx0Y2FzZSBVU0JfQ0RDX05PVElGWV9ORVRXT1JLX0NPTk5FQ1RJT046XFxuK1xcdFxcdG5ldGlmX2RiZyhkZXYsIHRpbWVyLCBkZXYtXFx1MDAzZW5ldCwgXFxcIkNEQzogY2FycmllciAlc1xcXFxuXFxcIixcXG4rXFx0XFx0XFx0ICBldmVudC1cXHUwMDNld1ZhbHVlID8gXFxcIm9uXFxcIiA6IFxcXCJvZmZcXFwiKTtcXG4rXFx0XFx0aWYgKG5ldGlmX2NhcnJpZXJfb2soZGV2LVxcdTAwM2VuZXQpICE9ICEhZXZlbnQtXFx1MDAzZXdWYWx1ZSlcXG4rXFx0XFx0XFx0dXNibmV0X2xpbmtfY2hhbmdlKGRldiwgISFldmVudC1cXHUwMDNld1ZhbHVlLCAwKTtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGNhc2UgVVNCX0NEQ19OT1RJRllfU1BFRURfQ0hBTkdFOlxcdC8qIHR4L3J4IHJhdGVzICovXFxuK1xcdFxcdG5ldGlmX2RiZyhkZXYsIHRpbWVyLCBkZXYtXFx1MDAzZW5ldCwgXFxcIkNEQzogc3BlZWQgY2hhbmdlIChsZW4gJWQpXFxcXG5cXFwiLFxcbitcXHRcXHRcXHQgIHVyYi1cXHUwMDNlYWN0dWFsX2xlbmd0aCk7XFxuK1xcdFxcdGlmICh1cmItXFx1MDAzZWFjdHVhbF9sZW5ndGggIT0gKHNpemVvZigqZXZlbnQpICsgOCkpXFxuK1xcdFxcdFxcdHNldF9iaXQoRVZFTlRfU1RTX1NQTElULCBcXHUwMDI2ZGV2LVxcdTAwM2VmbGFncyk7XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0c3BlZWRfY2hhbmdlKGRldiwgKF9fbGUzMiAqKVxcdTAwMjZldmVudFsxXSk7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHQvKiBVU0JfQ0RDX05PVElGWV9SRVNQT05TRV9BVkFJTEFCTEUgY2FuIGhhcHBlbiB0b28gKGUuZy4gUk5ESVMpLFxcbitcXHQgKiBidXQgdGhlcmUgYXJlIG5vIHN0YW5kYXJkIGZvcm1hdHMgZm9yIHRoZSByZXNwb25zZSBkYXRhLlxcbitcXHQgKi9cXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0bmV0ZGV2X2VycihkZXYtXFx1MDAzZW5ldCwgXFxcIkNEQzogdW5leHBlY3RlZCBub3RpZmljYXRpb24gJTAyeCFcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCAgIGV2ZW50LVxcdTAwM2ViTm90aWZpY2F0aW9uVHlwZSk7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHR9XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9HUEwodXNibmV0X2NkY19zdGF0dXMpO1xcbitcXG4rLyogTWFrZSBzdXJlIHBhY2tldHMgaGF2ZSBjb3JyZWN0IGRlc3RpbmF0aW9uIE1BQyBhZGRyZXNzXFxuKyAqXFxuKyAqIEEgZmlybXdhcmUgYnVnIG9ic2VydmVkIG9uIHNvbWUgZGV2aWNlcyAoWlRFIE1GODIzLzgzMS85MTApIGlzIHRoYXQgdGhlXFxuKyAqIGRldmljZSBzZW5kcyBwYWNrZXRzIHdpdGggYSBzdGF0aWMsIGJvZ3VzLCByYW5kb20gTUFDIGFkZHJlc3MgKGV2ZW50IGlmXFxuKyAqIGRldmljZSBNQUMgYWRkcmVzcyBoYXMgYmVlbiB1cGRhdGVkKS4gQWx3YXlzIHNldCBNQUMgYWRkcmVzcyB0byB0aGF0IG9mIHRoZVxcbisgKiBkZXZpY2UuXFxuKyAqL1xcbitpbnQgdXNibmV0X2NkY196dGVfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbit7XFxuK1xcdGlmIChza2ItXFx1MDAzZWxlbiBcXHUwMDNjIEVUSF9ITEVOIHx8ICEoc2tiLVxcdTAwM2VkYXRhWzBdIFxcdTAwMjYgMHgwMikpXFxuK1xcdFxcdHJldHVybiAxO1xcbitcXG4rXFx0c2tiX3Jlc2V0X21hY19oZWFkZXIoc2tiKTtcXG4rXFx0ZXRoZXJfYWRkcl9jb3B5KGV0aF9oZHIoc2tiKS1cXHUwMDNlaF9kZXN0LCBkZXYtXFx1MDAzZW5ldC1cXHUwMDNlZGV2X2FkZHIpO1xcbitcXG4rXFx0cmV0dXJuIDE7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9HUEwodXNibmV0X2NkY196dGVfcnhfZml4dXApO1xcbiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xcbiBcXG4gc3RhdGljIGludCBfX2luaXQgdXNibmV0X2luaXQodm9pZClcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC91c2IvdXNibmV0LmggYi9pbmNsdWRlL2xpbnV4L3VzYi91c2JuZXQuaFxcbmluZGV4IGJiZjc5OWNjZjNiMzBlLi43OWY0OGViMzg4ZWU2YyAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L3VzYi91c2JuZXQuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvdXNiL3VzYm5ldC5oXFxuQEAgLTE2LDYgKzE2LDE0IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC91c2IuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NwaW5sb2NrLmhcXHUwMDNlXFxuIFxcbitzdHJ1Y3QgY2RjX3N0YXRlIHtcXG4rXFx0c3RydWN0IHVzYl9jZGNfaGVhZGVyX2Rlc2MgICAgICAqaGVhZGVyO1xcbitcXHRzdHJ1Y3QgdXNiX2NkY191bmlvbl9kZXNjICAgICAgICp1O1xcbitcXHRzdHJ1Y3QgdXNiX2NkY19ldGhlcl9kZXNjICAgICAgICpldGhlcjtcXG4rXFx0c3RydWN0IHVzYl9pbnRlcmZhY2UgICAgICAgICAgICAqY29udHJvbDtcXG4rXFx0c3RydWN0IHVzYl9pbnRlcmZhY2UgICAgICAgICAgICAqZGF0YTtcXG4rfTtcXG4rXFxuIC8qIGludGVyZmFjZSBmcm9tIHVzYm5ldCBjb3JlIHRvIGVhY2ggVVNCIG5ldHdvcmtpbmcgbGluayB3ZSBoYW5kbGUgKi9cXG4gc3RydWN0IHVzYm5ldCB7XFxuIFxcdC8qIGhvdXNla2VlcGluZyAqL1xcbkBAIC00MSw2ICs0OSw3IEBAIHN0cnVjdCB1c2JuZXQge1xcbiBcXHQvKiBwcm90b2NvbC9pbnRlcmZhY2Ugc3RhdGUgKi9cXG4gXFx0c3RydWN0IG5ldF9kZXZpY2VcXHQqbmV0O1xcbiBcXHRpbnRcXHRcXHRcXHRtc2dfZW5hYmxlO1xcbitcXHRzdHJ1Y3QgY2RjX3N0YXRlXFx0Y2RjO1xcdFxcdC8qIHRvbyBjb21tb24gdG8gbGVhdmUgb3V0Ki9cXG4gXFx0dW5zaWduZWQgbG9uZ1xcdFxcdGRhdGFbNV07XFxuIFxcdHUzMlxcdFxcdFxcdHhpZDtcXG4gXFx0dTMyXFx0XFx0XFx0aGFyZF9tdHU7XFx0LyogY291bnQgYW55IGV4dHJhIGZyYW1pbmcgKi9cXG5AQCAtMjExLDEzICsyMjAsNiBAQCBleHRlcm4gaW50IHVzYm5ldF93cml0ZV9jbWRfYXN5bmMoc3RydWN0IHVzYm5ldCAqZGV2LCB1OCBjbWQsIHU4IHJlcXR5cGUsXFxuICAqIChub3RhYmx5LCB1c2luZyBtdWx0aXBsZSBpbnRlcmZhY2VzIGFjY29yZGluZyB0byB0aGUgQ0RDXFxuICAqIHVuaW9uIGRlc2NyaXB0b3IpIGdldCBzb21lIGhlbHBlciBjb2RlLlxcbiAgKi9cXG4tc3RydWN0IGNkY19zdGF0ZSB7XFxuLVxcdHN0cnVjdCB1c2JfY2RjX2hlYWRlcl9kZXNjXFx0KmhlYWRlcjtcXG4tXFx0c3RydWN0IHVzYl9jZGNfdW5pb25fZGVzY1xcdCp1O1xcbi1cXHRzdHJ1Y3QgdXNiX2NkY19ldGhlcl9kZXNjXFx0KmV0aGVyO1xcbi1cXHRzdHJ1Y3QgdXNiX2ludGVyZmFjZVxcdFxcdCpjb250cm9sO1xcbi1cXHRzdHJ1Y3QgdXNiX2ludGVyZmFjZVxcdFxcdCpkYXRhO1xcbi19O1xcbiBcXG4gZXh0ZXJuIHZvaWQgdXNibmV0X2NkY191cGRhdGVfZmlsdGVyKHN0cnVjdCB1c2JuZXQgKmRldik7XFxuIGV4dGVybiBpbnQgdXNibmV0X2dlbmVyaWNfY2RjX2JpbmQoc3RydWN0IHVzYm5ldCAqLCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTc6NTM6NTIuODc4MzcxMTcyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzI4ODIzMzgxMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGlzIGEgcHVyZSByZWZhY3RvcmluZyB0aGF0IG1vdmVzIENEQy1yZWxhdGVkIGZ1bmN0aW9ucyBmcm9tIGNkY19ldGhlci5jIHRvIHRoZSBjb3JlIHVzYm5ldC5jIG1vZHVsZSBhbmQgcmVwbGFjZXMgdGhlIHVzZSBvZiB0aGUgZ2VuZXJpYyBkYXRhIGFycmF5IHdpdGggYSBkZWRpY2F0ZWQgY2RjX3N0YXRlIHN0cnVjdCBpbiB1c2JuZXQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgbG9naWMgb3IgZml4IGFueSBidWdzIHJlbGF0ZWQgdG8gZGF0YSBhbGlhc2luZywgYXMgbm8gZHJpdmVycyB3ZXJlIGNvbmN1cnJlbnRseSB1c2luZyBib3RoIHRoZSBnZW5lcmljIGRhdGEgYXJyYXkgYW5kIHRoZSBDREMgc3RhdGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGI5ZjI4N2E4YjIzMGQ5NGQ1NDljNDFkOGI2MmQyMjM3MjU0MTc4YWZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyIDE3OjUzOjQ5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jIGIvZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jXG5pbmRleCBhMGE1NzQwNTkwYjk0NS4uNzZhZDRmZmE5NTBhYjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmNcbisrKyBiL2RyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuY1xuQEAgLTYzLDM1ICs2Myw2IEBAIHN0YXRpYyBjb25zdCB1OCBtYm1fZ3VpZFsxNl0gPSB7XG4gXHQweGE2LCAweDA3LCAweGMwLCAweGZmLCAweGNiLCAweDdlLCAweDM5LCAweDJhLFxuIH07XG4gXG4tdm9pZCB1c2JuZXRfY2RjX3VwZGF0ZV9maWx0ZXIoc3RydWN0IHVzYm5ldCAqZGV2KVxuLXtcbi1cdHN0cnVjdCBuZXRfZGV2aWNlXHQqbmV0ID0gZGV2LVx1MDAzZW5ldDtcbi1cbi1cdHUxNiBjZGNfZmlsdGVyID0gVVNCX0NEQ19QQUNLRVRfVFlQRV9ESVJFQ1RFRFxuLVx0XHRcdHwgVVNCX0NEQ19QQUNLRVRfVFlQRV9CUk9BRENBU1Q7XG4tXG4tXHQvKiBmaWx0ZXJpbmcgb24gdGhlIGRldmljZSBpcyBhbiBvcHRpb25hbCBmZWF0dXJlIGFuZCBub3Qgd29ydGhcbi1cdCAqIHRoZSBoYXNzbGUgc28gd2UganVzdCByb3VnaGx5IGNhcmUgYWJvdXQgc25vb3BpbmcgYW5kIGlmIGFueVxuLVx0ICogbXVsdGljYXN0IGlzIHJlcXVlc3RlZCwgd2UgdGFrZSBldmVyeSBtdWx0aWNhc3Rcbi1cdCAqL1xuLVx0aWYgKG5ldC1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX1BST01JU0MpXG4tXHRcdGNkY19maWx0ZXIgfD0gVVNCX0NEQ19QQUNLRVRfVFlQRV9QUk9NSVNDVU9VUztcbi1cdGlmICghbmV0ZGV2X21jX2VtcHR5KG5ldCkgfHwgKG5ldC1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX0FMTE1VTFRJKSlcbi1cdFx0Y2RjX2ZpbHRlciB8PSBVU0JfQ0RDX1BBQ0tFVF9UWVBFX0FMTF9NVUxUSUNBU1Q7XG4tXG4tXHR1c2JfY29udHJvbF9tc2coZGV2LVx1MDAzZXVkZXYsXG4tXHRcdFx0dXNiX3NuZGN0cmxwaXBlKGRldi1cdTAwM2V1ZGV2LCAwKSxcbi1cdFx0XHRVU0JfQ0RDX1NFVF9FVEhFUk5FVF9QQUNLRVRfRklMVEVSLFxuLVx0XHRcdFVTQl9UWVBFX0NMQVNTIHwgVVNCX1JFQ0lQX0lOVEVSRkFDRSxcbi1cdFx0XHRjZGNfZmlsdGVyLFxuLVx0XHRcdGRldi1cdTAwM2VpbnRmLVx1MDAzZWN1cl9hbHRzZXR0aW5nLVx1MDAzZWRlc2MuYkludGVyZmFjZU51bWJlcixcbi1cdFx0XHROVUxMLFxuLVx0XHRcdDAsXG4tXHRcdFx0VVNCX0NUUkxfU0VUX1RJTUVPVVRcbi1cdFx0KTtcbi19XG4tRVhQT1JUX1NZTUJPTF9HUEwodXNibmV0X2NkY191cGRhdGVfZmlsdGVyKTtcbi1cbiAvKiBXZSBuZWVkIHRvIG92ZXJyaWRlIHVzYm5ldF8qX2xpbmtfa3NldHRpbmdzIGluIGJpbmQoKSAqL1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgY2RjX2V0aGVyX2V0aHRvb2xfb3BzID0ge1xuIFx0LmdldF9saW5rXHRcdD0gdXNibmV0X2dldF9saW5rLFxuQEAgLTExNCw3ICs4NSw3IEBAIGludCB1c2JuZXRfZ2VuZXJpY19jZGNfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuIFx0dThcdFx0XHRcdCpidWYgPSBpbnRmLVx1MDAzZWN1cl9hbHRzZXR0aW5nLVx1MDAzZWV4dHJhO1xuIFx0aW50XHRcdFx0XHRsZW4gPSBpbnRmLVx1MDAzZWN1cl9hbHRzZXR0aW5nLVx1MDAzZWV4dHJhbGVuO1xuIFx0c3RydWN0IHVzYl9pbnRlcmZhY2VfZGVzY3JpcHRvclx0KmQ7XG4tXHRzdHJ1Y3QgY2RjX3N0YXRlXHRcdCppbmZvID0gKHZvaWQgKikgXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG4rXHRzdHJ1Y3QgY2RjX3N0YXRlXHRcdCppbmZvID0gXHUwMDI2ZGV2LVx1MDAzZWNkYztcbiBcdGludFx0XHRcdFx0c3RhdHVzID0gLUVOT0RFVjtcbiBcdGludFx0XHRcdFx0cm5kaXM7XG4gXHRib29sXHRcdFx0XHRhbmRyb2lkX3JuZGlzX3F1aXJrID0gZmFsc2U7XG5AQCAtMzY1LDcgKzMzNiw3IEBAIEVYUE9SVF9TWU1CT0xfR1BMKHVzYm5ldF9ldGhlcl9jZGNfYmluZCk7XG4gXG4gdm9pZCB1c2JuZXRfY2RjX3VuYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuIHtcbi1cdHN0cnVjdCBjZGNfc3RhdGVcdFx0KmluZm8gPSAodm9pZCAqKSBcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbitcdHN0cnVjdCBjZGNfc3RhdGVcdFx0KmluZm8gPSBcdTAwMjZkZXYtXHUwMDNlY2RjO1xuIFx0c3RydWN0IHVzYl9kcml2ZXJcdFx0KmRyaXZlciA9IGRyaXZlcl9vZihpbnRmKTtcbiBcbiBcdC8qIGNvbWJpbmVkIGludGVyZmFjZSAtIG5vdGhpbmcgIHRvIGRvICovXG5AQCAtNDAwLDU5ICszNzEsMTAgQEAgRVhQT1JUX1NZTUJPTF9HUEwodXNibmV0X2NkY191bmJpbmQpO1xuICAqIChieSBCcmFkIEhhcmRzKSB0YWxrZWQgd2l0aCwgd2l0aCBtb3JlIGZ1bmN0aW9uYWxpdHkuXG4gICovXG4gXG4tc3RhdGljIHZvaWQgc3BlZWRfY2hhbmdlKHN0cnVjdCB1c2JuZXQgKmRldiwgX19sZTMyICpzcGVlZHMpXG4te1xuLVx0ZGV2LVx1MDAzZXR4X3NwZWVkID0gX19sZTMyX3RvX2NwdShzcGVlZHNbMF0pO1xuLVx0ZGV2LVx1MDAzZXJ4X3NwZWVkID0gX19sZTMyX3RvX2NwdShzcGVlZHNbMV0pO1xuLX1cbi1cbi12b2lkIHVzYm5ldF9jZGNfc3RhdHVzKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVyYiAqdXJiKVxuLXtcbi1cdHN0cnVjdCB1c2JfY2RjX25vdGlmaWNhdGlvblx0KmV2ZW50O1xuLVxuLVx0aWYgKHVyYi1cdTAwM2VhY3R1YWxfbGVuZ3RoIFx1MDAzYyBzaXplb2YoKmV2ZW50KSlcbi1cdFx0cmV0dXJuO1xuLVxuLVx0LyogU1BFRURfQ0hBTkdFIGNhbiBnZXQgc3BsaXQgaW50byB0d28gOC1ieXRlIHBhY2tldHMgKi9cbi1cdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoRVZFTlRfU1RTX1NQTElULCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpKSB7XG4tXHRcdHNwZWVkX2NoYW5nZShkZXYsIChfX2xlMzIgKikgdXJiLVx1MDAzZXRyYW5zZmVyX2J1ZmZlcik7XG4tXHRcdHJldHVybjtcbi1cdH1cbi1cbi1cdGV2ZW50ID0gdXJiLVx1MDAzZXRyYW5zZmVyX2J1ZmZlcjtcbi1cdHN3aXRjaCAoZXZlbnQtXHUwMDNlYk5vdGlmaWNhdGlvblR5cGUpIHtcbi1cdGNhc2UgVVNCX0NEQ19OT1RJRllfTkVUV09SS19DT05ORUNUSU9OOlxuLVx0XHRuZXRpZl9kYmcoZGV2LCB0aW1lciwgZGV2LVx1MDAzZW5ldCwgXCJDREM6IGNhcnJpZXIgJXNcXG5cIixcbi1cdFx0XHQgIGV2ZW50LVx1MDAzZXdWYWx1ZSA/IFwib25cIiA6IFwib2ZmXCIpO1xuLVx0XHRpZiAobmV0aWZfY2Fycmllcl9vayhkZXYtXHUwMDNlbmV0KSAhPSAhIWV2ZW50LVx1MDAzZXdWYWx1ZSlcbi1cdFx0XHR1c2JuZXRfbGlua19jaGFuZ2UoZGV2LCAhIWV2ZW50LVx1MDAzZXdWYWx1ZSwgMCk7XG4tXHRcdGJyZWFrO1xuLVx0Y2FzZSBVU0JfQ0RDX05PVElGWV9TUEVFRF9DSEFOR0U6XHQvKiB0eC9yeCByYXRlcyAqL1xuLVx0XHRuZXRpZl9kYmcoZGV2LCB0aW1lciwgZGV2LVx1MDAzZW5ldCwgXCJDREM6IHNwZWVkIGNoYW5nZSAobGVuICVkKVxcblwiLFxuLVx0XHRcdCAgdXJiLVx1MDAzZWFjdHVhbF9sZW5ndGgpO1xuLVx0XHRpZiAodXJiLVx1MDAzZWFjdHVhbF9sZW5ndGggIT0gKHNpemVvZigqZXZlbnQpICsgOCkpXG4tXHRcdFx0c2V0X2JpdChFVkVOVF9TVFNfU1BMSVQsIFx1MDAyNmRldi1cdTAwM2VmbGFncyk7XG4tXHRcdGVsc2Vcbi1cdFx0XHRzcGVlZF9jaGFuZ2UoZGV2LCAoX19sZTMyICopIFx1MDAyNmV2ZW50WzFdKTtcbi1cdFx0YnJlYWs7XG4tXHQvKiBVU0JfQ0RDX05PVElGWV9SRVNQT05TRV9BVkFJTEFCTEUgY2FuIGhhcHBlbiB0b28gKGUuZy4gUk5ESVMpLFxuLVx0ICogYnV0IHRoZXJlIGFyZSBubyBzdGFuZGFyZCBmb3JtYXRzIGZvciB0aGUgcmVzcG9uc2UgZGF0YS5cbi1cdCAqL1xuLVx0ZGVmYXVsdDpcbi1cdFx0bmV0ZGV2X2VycihkZXYtXHUwMDNlbmV0LCBcIkNEQzogdW5leHBlY3RlZCBub3RpZmljYXRpb24gJTAyeCFcXG5cIixcbi1cdFx0XHQgICBldmVudC1cdTAwM2ViTm90aWZpY2F0aW9uVHlwZSk7XG4tXHRcdGJyZWFrO1xuLVx0fVxuLX1cbi1FWFBPUlRfU1lNQk9MX0dQTCh1c2JuZXRfY2RjX3N0YXR1cyk7XG4tXG4gaW50IHVzYm5ldF9jZGNfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuIHtcbiBcdGludFx0XHRcdFx0c3RhdHVzO1xuLVx0c3RydWN0IGNkY19zdGF0ZVx0XHQqaW5mbyA9ICh2b2lkICopIFx1MDAyNmRldi1cdTAwM2VkYXRhO1xuLVxuLVx0QlVJTERfQlVHX09OKChzaXplb2YoKChzdHJ1Y3QgdXNibmV0ICopMCktXHUwMDNlZGF0YSlcbi1cdFx0XHRcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBjZGNfc3RhdGUpKSk7XG4rXHRzdHJ1Y3QgY2RjX3N0YXRlXHRcdCppbmZvID0gXHUwMDI2ZGV2LVx1MDAzZWNkYztcbiBcbiBcdHN0YXR1cyA9IHVzYm5ldF9ldGhlcl9jZGNfYmluZChkZXYsIGludGYpO1xuIFx0aWYgKHN0YXR1cyBcdTAwM2MgMClcbkBAIC00NzksMjUgKzQwMSw2IEBAIHN0YXRpYyBpbnQgdXNibmV0X2NkY196dGVfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuIFx0cmV0dXJuIHN0YXR1cztcbiB9XG4gXG4tLyogTWFrZSBzdXJlIHBhY2tldHMgaGF2ZSBjb3JyZWN0IGRlc3RpbmF0aW9uIE1BQyBhZGRyZXNzXG4tICpcbi0gKiBBIGZpcm13YXJlIGJ1ZyBvYnNlcnZlZCBvbiBzb21lIGRldmljZXMgKFpURSBNRjgyMy84MzEvOTEwKSBpcyB0aGF0IHRoZVxuLSAqIGRldmljZSBzZW5kcyBwYWNrZXRzIHdpdGggYSBzdGF0aWMsIGJvZ3VzLCByYW5kb20gTUFDIGFkZHJlc3MgKGV2ZW50IGlmXG4tICogZGV2aWNlIE1BQyBhZGRyZXNzIGhhcyBiZWVuIHVwZGF0ZWQpLiBBbHdheXMgc2V0IE1BQyBhZGRyZXNzIHRvIHRoYXQgb2YgdGhlXG4tICogZGV2aWNlLlxuLSAqL1xuLWludCB1c2JuZXRfY2RjX3p0ZV9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4te1xuLVx0aWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjIEVUSF9ITEVOIHx8ICEoc2tiLVx1MDAzZWRhdGFbMF0gXHUwMDI2IDB4MDIpKVxuLVx0XHRyZXR1cm4gMTtcbi1cbi1cdHNrYl9yZXNldF9tYWNfaGVhZGVyKHNrYik7XG4tXHRldGhlcl9hZGRyX2NvcHkoZXRoX2hkcihza2IpLVx1MDAzZWhfZGVzdCwgZGV2LVx1MDAzZW5ldC1cdTAwM2VkZXZfYWRkcik7XG4tXG4tXHRyZXR1cm4gMTtcbi19XG4tRVhQT1JUX1NZTUJPTF9HUEwodXNibmV0X2NkY196dGVfcnhfZml4dXApO1xuLVxuIC8qIEVuc3VyZSBjb3JyZWN0IGxpbmsgc3RhdGVcbiAgKlxuICAqIFNvbWUgZGV2aWNlcyAoWlRFIE1GODIzLzgzMS85MTApIGV4cG9ydCB0d28gY2FycmllciBvbiBub3RpZmljYXRpb25zIHdoZW5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC91c2Ivcm5kaXNfaG9zdC5jIGIvZHJpdmVycy9uZXQvdXNiL3JuZGlzX2hvc3QuY1xuaW5kZXggNWUzOWQwNWEyZDdiNmQuLmQ1Mzk2NTQ2ODdjMzA1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvdXNiL3JuZGlzX2hvc3QuY1xuKysrIGIvZHJpdmVycy9uZXQvdXNiL3JuZGlzX2hvc3QuY1xuQEAgLTU3LDcgKzU3LDcgQEAgRVhQT1JUX1NZTUJPTF9HUEwocm5kaXNfc3RhdHVzKTtcbiBzdGF0aWMgdm9pZCBybmRpc19tc2dfaW5kaWNhdGUoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgcm5kaXNfaW5kaWNhdGUgKm1zZyxcbiBcdFx0XHRcdGludCBidWZsZW4pXG4ge1xuLVx0c3RydWN0IGNkY19zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG4rXHRzdHJ1Y3QgY2RjX3N0YXRlICppbmZvID0gXHUwMDI2ZGV2LVx1MDAzZWNkYztcbiBcdHN0cnVjdCBkZXZpY2UgKnVkZXYgPSBcdTAwMjZpbmZvLVx1MDAzZWNvbnRyb2wtXHUwMDNlZGV2O1xuIFxuIFx0aWYgKGRldi1cdTAwM2Vkcml2ZXJfaW5mby1cdTAwM2VpbmRpY2F0aW9uKSB7XG5AQCAtOTAsNyArOTAsNyBAQCBzdGF0aWMgdm9pZCBybmRpc19tc2dfaW5kaWNhdGUoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgcm5kaXNfaW5kaWNhdGUgKm1zZyxcbiAgKi9cbiBpbnQgcm5kaXNfY29tbWFuZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBybmRpc19tc2dfaGRyICpidWYsIGludCBidWZsZW4pXG4ge1xuLVx0c3RydWN0IGNkY19zdGF0ZVx0KmluZm8gPSAodm9pZCAqKSBcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbitcdHN0cnVjdCBjZGNfc3RhdGVcdCppbmZvID0gXHUwMDI2ZGV2LVx1MDAzZWNkYztcbiBcdHN0cnVjdCB1c2JfY2RjX25vdGlmaWNhdGlvbiBub3RpZmljYXRpb247XG4gXHRpbnRcdFx0XHRtYXN0ZXJfaWZudW07XG4gXHRpbnRcdFx0XHRyZXR2YWw7XG5AQCAtMjkwLDcgKzI5MCw3IEBAIGdlbmVyaWNfcm5kaXNfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBpbnQgZmxhZ3MpXG4ge1xuIFx0aW50XHRcdFx0cmV0dmFsO1xuIFx0c3RydWN0IG5ldF9kZXZpY2VcdCpuZXQgPSBkZXYtXHUwMDNlbmV0O1xuLVx0c3RydWN0IGNkY19zdGF0ZVx0KmluZm8gPSAodm9pZCAqKSBcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbitcdHN0cnVjdCBjZGNfc3RhdGVcdCppbmZvID0gXHUwMDI2ZGV2LVx1MDAzZWNkYztcbiBcdHVuaW9uIHtcbiBcdFx0dm9pZFx0XHRcdCpidWY7XG4gXHRcdHN0cnVjdCBybmRpc19tc2dfaGRyXHQqaGVhZGVyO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi91c2JuZXQuYyBiL2RyaXZlcnMvbmV0L3VzYi91c2JuZXQuY1xuaW5kZXggMjU1MTg2MzViN2I3MmQuLjdiZWVhNmQwZTczMWNjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jXG4rKysgYi9kcml2ZXJzL25ldC91c2IvdXNibmV0LmNcbkBAIC0yMiw2ICsyMiw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaW5pdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0ZGV2aWNlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9ldGhlcmRldmljZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvdXNiL2NkYy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvY3R5cGUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2V0aHRvb2wuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3dvcmtxdWV1ZS5oXHUwMDNlXG5AQCAtMjI3MSw2ICsyMjcyLDEwMCBAQCBpbnQgdXNibmV0X3dyaXRlX2NtZF9hc3luYyhzdHJ1Y3QgdXNibmV0ICpkZXYsIHU4IGNtZCwgdTggcmVxdHlwZSxcbiBcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwodXNibmV0X3dyaXRlX2NtZF9hc3luYyk7XG4rXG4rdm9pZCB1c2JuZXRfY2RjX3VwZGF0ZV9maWx0ZXIoc3RydWN0IHVzYm5ldCAqZGV2KVxuK3tcbitcdHN0cnVjdCBuZXRfZGV2aWNlXHQqbmV0ID0gZGV2LVx1MDAzZW5ldDtcbitcbitcdHUxNiBjZGNfZmlsdGVyID0gVVNCX0NEQ19QQUNLRVRfVFlQRV9ESVJFQ1RFRFxuK1x0XHRcdHwgVVNCX0NEQ19QQUNLRVRfVFlQRV9CUk9BRENBU1Q7XG4rXG4rXHQvKiBmaWx0ZXJpbmcgb24gdGhlIGRldmljZSBpcyBhbiBvcHRpb25hbCBmZWF0dXJlIGFuZCBub3Qgd29ydGhcbitcdCAqIHRoZSBoYXNzbGUgc28gd2UganVzdCByb3VnaGx5IGNhcmUgYWJvdXQgc25vb3BpbmcgYW5kIGlmIGFueVxuK1x0ICogbXVsdGljYXN0IGlzIHJlcXVlc3RlZCwgd2UgdGFrZSBldmVyeSBtdWx0aWNhc3RcbitcdCAqL1xuK1x0aWYgKG5ldC1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX1BST01JU0MpXG4rXHRcdGNkY19maWx0ZXIgfD0gVVNCX0NEQ19QQUNLRVRfVFlQRV9QUk9NSVNDVU9VUztcbitcdGlmICghbmV0ZGV2X21jX2VtcHR5KG5ldCkgfHwgKG5ldC1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX0FMTE1VTFRJKSlcbitcdFx0Y2RjX2ZpbHRlciB8PSBVU0JfQ0RDX1BBQ0tFVF9UWVBFX0FMTF9NVUxUSUNBU1Q7XG4rXG4rXHR1c2JfY29udHJvbF9tc2coZGV2LVx1MDAzZXVkZXYsXG4rXHRcdFx0dXNiX3NuZGN0cmxwaXBlKGRldi1cdTAwM2V1ZGV2LCAwKSxcbitcdFx0XHRVU0JfQ0RDX1NFVF9FVEhFUk5FVF9QQUNLRVRfRklMVEVSLFxuK1x0XHRcdFVTQl9UWVBFX0NMQVNTIHwgVVNCX1JFQ0lQX0lOVEVSRkFDRSxcbitcdFx0XHRjZGNfZmlsdGVyLFxuK1x0XHRcdGRldi1cdTAwM2VpbnRmLVx1MDAzZWN1cl9hbHRzZXR0aW5nLVx1MDAzZWRlc2MuYkludGVyZmFjZU51bWJlcixcbitcdFx0XHROVUxMLFxuK1x0XHRcdDAsXG4rXHRcdFx0VVNCX0NUUkxfU0VUX1RJTUVPVVRcbitcdFx0KTtcbit9XG4rRVhQT1JUX1NZTUJPTF9HUEwodXNibmV0X2NkY191cGRhdGVfZmlsdGVyKTtcbitcbitzdGF0aWMgdm9pZCBzcGVlZF9jaGFuZ2Uoc3RydWN0IHVzYm5ldCAqZGV2LCBfX2xlMzIgKnNwZWVkcylcbit7XG4rXHRkZXYtXHUwMDNldHhfc3BlZWQgPSBfX2xlMzJfdG9fY3B1KHNwZWVkc1swXSk7XG4rXHRkZXYtXHUwMDNlcnhfc3BlZWQgPSBfX2xlMzJfdG9fY3B1KHNwZWVkc1sxXSk7XG4rfVxuK1xuK3ZvaWQgdXNibmV0X2NkY19zdGF0dXMoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXJiICp1cmIpXG4re1xuK1x0c3RydWN0IHVzYl9jZGNfbm90aWZpY2F0aW9uXHQqZXZlbnQ7XG4rXG4rXHRpZiAodXJiLVx1MDAzZWFjdHVhbF9sZW5ndGggXHUwMDNjIHNpemVvZigqZXZlbnQpKVxuK1x0XHRyZXR1cm47XG4rXG4rXHQvKiBTUEVFRF9DSEFOR0UgY2FuIGdldCBzcGxpdCBpbnRvIHR3byA4LWJ5dGUgcGFja2V0cyAqL1xuK1x0aWYgKHRlc3RfYW5kX2NsZWFyX2JpdChFVkVOVF9TVFNfU1BMSVQsIFx1MDAyNmRldi1cdTAwM2VmbGFncykpIHtcbitcdFx0c3BlZWRfY2hhbmdlKGRldiwgKF9fbGUzMiAqKXVyYi1cdTAwM2V0cmFuc2Zlcl9idWZmZXIpO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4rXG4rXHRldmVudCA9IHVyYi1cdTAwM2V0cmFuc2Zlcl9idWZmZXI7XG4rXHRzd2l0Y2ggKGV2ZW50LVx1MDAzZWJOb3RpZmljYXRpb25UeXBlKSB7XG4rXHRjYXNlIFVTQl9DRENfTk9USUZZX05FVFdPUktfQ09OTkVDVElPTjpcbitcdFx0bmV0aWZfZGJnKGRldiwgdGltZXIsIGRldi1cdTAwM2VuZXQsIFwiQ0RDOiBjYXJyaWVyICVzXFxuXCIsXG4rXHRcdFx0ICBldmVudC1cdTAwM2V3VmFsdWUgPyBcIm9uXCIgOiBcIm9mZlwiKTtcbitcdFx0aWYgKG5ldGlmX2NhcnJpZXJfb2soZGV2LVx1MDAzZW5ldCkgIT0gISFldmVudC1cdTAwM2V3VmFsdWUpXG4rXHRcdFx0dXNibmV0X2xpbmtfY2hhbmdlKGRldiwgISFldmVudC1cdTAwM2V3VmFsdWUsIDApO1xuK1x0XHRicmVhaztcbitcdGNhc2UgVVNCX0NEQ19OT1RJRllfU1BFRURfQ0hBTkdFOlx0LyogdHgvcnggcmF0ZXMgKi9cbitcdFx0bmV0aWZfZGJnKGRldiwgdGltZXIsIGRldi1cdTAwM2VuZXQsIFwiQ0RDOiBzcGVlZCBjaGFuZ2UgKGxlbiAlZClcXG5cIixcbitcdFx0XHQgIHVyYi1cdTAwM2VhY3R1YWxfbGVuZ3RoKTtcbitcdFx0aWYgKHVyYi1cdTAwM2VhY3R1YWxfbGVuZ3RoICE9IChzaXplb2YoKmV2ZW50KSArIDgpKVxuK1x0XHRcdHNldF9iaXQoRVZFTlRfU1RTX1NQTElULCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpO1xuK1x0XHRlbHNlXG4rXHRcdFx0c3BlZWRfY2hhbmdlKGRldiwgKF9fbGUzMiAqKVx1MDAyNmV2ZW50WzFdKTtcbitcdFx0YnJlYWs7XG4rXHQvKiBVU0JfQ0RDX05PVElGWV9SRVNQT05TRV9BVkFJTEFCTEUgY2FuIGhhcHBlbiB0b28gKGUuZy4gUk5ESVMpLFxuK1x0ICogYnV0IHRoZXJlIGFyZSBubyBzdGFuZGFyZCBmb3JtYXRzIGZvciB0aGUgcmVzcG9uc2UgZGF0YS5cbitcdCAqL1xuK1x0ZGVmYXVsdDpcbitcdFx0bmV0ZGV2X2VycihkZXYtXHUwMDNlbmV0LCBcIkNEQzogdW5leHBlY3RlZCBub3RpZmljYXRpb24gJTAyeCFcXG5cIixcbitcdFx0XHQgICBldmVudC1cdTAwM2ViTm90aWZpY2F0aW9uVHlwZSk7XG4rXHRcdGJyZWFrO1xuK1x0fVxuK31cbitFWFBPUlRfU1lNQk9MX0dQTCh1c2JuZXRfY2RjX3N0YXR1cyk7XG4rXG4rLyogTWFrZSBzdXJlIHBhY2tldHMgaGF2ZSBjb3JyZWN0IGRlc3RpbmF0aW9uIE1BQyBhZGRyZXNzXG4rICpcbisgKiBBIGZpcm13YXJlIGJ1ZyBvYnNlcnZlZCBvbiBzb21lIGRldmljZXMgKFpURSBNRjgyMy84MzEvOTEwKSBpcyB0aGF0IHRoZVxuKyAqIGRldmljZSBzZW5kcyBwYWNrZXRzIHdpdGggYSBzdGF0aWMsIGJvZ3VzLCByYW5kb20gTUFDIGFkZHJlc3MgKGV2ZW50IGlmXG4rICogZGV2aWNlIE1BQyBhZGRyZXNzIGhhcyBiZWVuIHVwZGF0ZWQpLiBBbHdheXMgc2V0IE1BQyBhZGRyZXNzIHRvIHRoYXQgb2YgdGhlXG4rICogZGV2aWNlLlxuKyAqL1xuK2ludCB1c2JuZXRfY2RjX3p0ZV9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4re1xuK1x0aWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjIEVUSF9ITEVOIHx8ICEoc2tiLVx1MDAzZWRhdGFbMF0gXHUwMDI2IDB4MDIpKVxuK1x0XHRyZXR1cm4gMTtcbitcbitcdHNrYl9yZXNldF9tYWNfaGVhZGVyKHNrYik7XG4rXHRldGhlcl9hZGRyX2NvcHkoZXRoX2hkcihza2IpLVx1MDAzZWhfZGVzdCwgZGV2LVx1MDAzZW5ldC1cdTAwM2VkZXZfYWRkcik7XG4rXG4rXHRyZXR1cm4gMTtcbit9XG4rRVhQT1JUX1NZTUJPTF9HUEwodXNibmV0X2NkY196dGVfcnhfZml4dXApO1xuIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4gXG4gc3RhdGljIGludCBfX2luaXQgdXNibmV0X2luaXQodm9pZClcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3VzYi91c2JuZXQuaCBiL2luY2x1ZGUvbGludXgvdXNiL3VzYm5ldC5oXG5pbmRleCBiYmY3OTljY2YzYjMwZS4uNzlmNDhlYjM4OGVlNmMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3VzYi91c2JuZXQuaFxuKysrIGIvaW5jbHVkZS9saW51eC91c2IvdXNibmV0LmhcbkBAIC0xNiw2ICsxNiwxNCBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3VzYi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3BpbmxvY2suaFx1MDAzZVxuIFxuK3N0cnVjdCBjZGNfc3RhdGUge1xuK1x0c3RydWN0IHVzYl9jZGNfaGVhZGVyX2Rlc2MgICAgICAqaGVhZGVyO1xuK1x0c3RydWN0IHVzYl9jZGNfdW5pb25fZGVzYyAgICAgICAqdTtcbitcdHN0cnVjdCB1c2JfY2RjX2V0aGVyX2Rlc2MgICAgICAgKmV0aGVyO1xuK1x0c3RydWN0IHVzYl9pbnRlcmZhY2UgICAgICAgICAgICAqY29udHJvbDtcbitcdHN0cnVjdCB1c2JfaW50ZXJmYWNlICAgICAgICAgICAgKmRhdGE7XG4rfTtcbitcbiAvKiBpbnRlcmZhY2UgZnJvbSB1c2JuZXQgY29yZSB0byBlYWNoIFVTQiBuZXR3b3JraW5nIGxpbmsgd2UgaGFuZGxlICovXG4gc3RydWN0IHVzYm5ldCB7XG4gXHQvKiBob3VzZWtlZXBpbmcgKi9cbkBAIC00MSw2ICs0OSw3IEBAIHN0cnVjdCB1c2JuZXQge1xuIFx0LyogcHJvdG9jb2wvaW50ZXJmYWNlIHN0YXRlICovXG4gXHRzdHJ1Y3QgbmV0X2RldmljZVx0Km5ldDtcbiBcdGludFx0XHRcdG1zZ19lbmFibGU7XG4rXHRzdHJ1Y3QgY2RjX3N0YXRlXHRjZGM7XHRcdC8qIHRvbyBjb21tb24gdG8gbGVhdmUgb3V0Ki9cbiBcdHVuc2lnbmVkIGxvbmdcdFx0ZGF0YVs1XTtcbiBcdHUzMlx0XHRcdHhpZDtcbiBcdHUzMlx0XHRcdGhhcmRfbXR1O1x0LyogY291bnQgYW55IGV4dHJhIGZyYW1pbmcgKi9cbkBAIC0yMTEsMTMgKzIyMCw2IEBAIGV4dGVybiBpbnQgdXNibmV0X3dyaXRlX2NtZF9hc3luYyhzdHJ1Y3QgdXNibmV0ICpkZXYsIHU4IGNtZCwgdTggcmVxdHlwZSxcbiAgKiAobm90YWJseSwgdXNpbmcgbXVsdGlwbGUgaW50ZXJmYWNlcyBhY2NvcmRpbmcgdG8gdGhlIENEQ1xuICAqIHVuaW9uIGRlc2NyaXB0b3IpIGdldCBzb21lIGhlbHBlciBjb2RlLlxuICAqL1xuLXN0cnVjdCBjZGNfc3RhdGUge1xuLVx0c3RydWN0IHVzYl9jZGNfaGVhZGVyX2Rlc2NcdCpoZWFkZXI7XG4tXHRzdHJ1Y3QgdXNiX2NkY191bmlvbl9kZXNjXHQqdTtcbi1cdHN0cnVjdCB1c2JfY2RjX2V0aGVyX2Rlc2NcdCpldGhlcjtcbi1cdHN0cnVjdCB1c2JfaW50ZXJmYWNlXHRcdCpjb250cm9sO1xuLVx0c3RydWN0IHVzYl9pbnRlcmZhY2VcdFx0KmRhdGE7XG4tfTtcbiBcbiBleHRlcm4gdm9pZCB1c2JuZXRfY2RjX3VwZGF0ZV9maWx0ZXIoc3RydWN0IHVzYm5ldCAqZGV2KTtcbiBleHRlcm4gaW50IHVzYm5ldF9nZW5lcmljX2NkY19iaW5kKHN0cnVjdCB1c2JuZXQgKiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNzo1Mzo1Mi44NzgzNzQ4MzJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMTIwNjQ0OTE4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgVVNCIENEQyBFdGhlcm5ldCBSZWZhY3RvcmluZyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCdzIHNodWZmbGluZyBzb21lIGNvZGUgYXJvdW5kIGluIHRoZSBVU0IgbmV0d29ya2luZyBzdGFjay4gU3BlY2lmaWNhbGx5LCBpdCdzIG1vdmluZyBhIGZldyBmdW5jdGlvbnMsIGB1c2JuZXRfY2RjX3VwZGF0ZV9maWx0ZXJgLCBgdXNibmV0X2NkY19zdGF0dXNgLCBhbmQgYHVzYm5ldF9jZGNfenRlX3J4X2ZpeHVwYCwgZnJvbSBgY2RjX2V0aGVyLmNgIGludG8gdGhlIG1vcmUgZ2VuZXJhbCBgdXNibmV0LmNgLiBJdCdzIGFsc28gbW9kaWZ5aW5nIHRoZSBgc3RydWN0IHVzYm5ldGAgaW4gYHVzYm5ldC5oYC4gQmVmb3JlLCB0aGUgYGNkY19zdGF0ZWAgZGF0YSB3YXMgcGxhY2VkIG9uIHRvcCBvZiB0aGUgZ2VuZXJpYyBgZGF0YWAgYXJyYXk7IG5vdywgaXQncyBnZXR0aW5nIGl0cyBvd24gZGVkaWNhdGVkIGBjZGNgIG1lbWJlci4gQmFzaWNhbGx5LCBpdOKAmXMgYWxsb2NhdGluZyBzcGFjZSBmb3IgYSBgc3RydWN0IGNkY19zdGF0ZWAgZGlyZWN0bHkgd2l0aGluIGBzdHJ1Y3QgdXNibmV0YC4gQWxzbyBpdCBjaGFuZ2VzIGBzdHJ1Y3QgY2RjX3N0YXRlICppbmZvID0gKHZvaWQgKikgXHUwMDI2ZGV2LVx1MDAzZWRhdGE7YCB0byBgc3RydWN0IGNkY19zdGF0ZSAqaW5mbyA9IFx1MDAyNmRldi1cdTAwM2VjZGM7YCBpbiBhIGZldyBwbGFjZXMuXG5cbk15IGZpcnN0IHRob3VnaHQgaXMsIGlzIHRoaXMgYSBmdW5jdGlvbmFsIGNoYW5nZT8gVGhlIGNvZGUncyBtb3ZpbmcsIHRoZSBzdHJ1Y3R1cmUgaXMgZGlmZmVyZW50LCBzbyBob3cgZG9lcyBpdCBhZmZlY3QgdGhpbmdzPyBJdCBsb29rcyBsaWtlIHRoZSBtYWluIGdvYWwgaXMgdG8gYXZvaWQgYWxpYXNpbmcgaXNzdWVzIGFuZCBpbXByb3ZlIGNsYXJpdHkuIEl0J3MgbWFraW5nIHRoZSBzdHJ1Y3QgbGF5b3V0IG1vcmUgZXhwbGljaXQuXG5cblRoZSBjb2RlIGNoYW5nZXMgYXBwZWFyIHRvIGJlIG1haW5seSByZWZhY3RvcmluZywgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUuIEknbSBmb2N1c2luZyBvbiB3aGV0aGVyIHRoaXMgYWZmZWN0cyBleGlzdGluZyBkcml2ZXJzIG9yIGFkZHMgbmV3IGxvZ2ljLiBJIHF1aWNrbHkgY2hlY2sgdGhlIGZ1bmN0aW9ucyBiZWluZyBtb3ZlZC4gTm9wZSwgdGhleSBhcmUgaWRlbnRpY2FsLiBUaGV5IHNlZW0gdG8gYmUgbW92ZWQgZnJvbSBhIHNwZWNpZmljIGRyaXZlciAoYGNkY19ldGhlcmApIHRvIHRoZSBjb3JlIG1vZHVsZSAoYHVzYm5ldGApLiBUaGlzIGNoYW5nZSBtaWdodCBiZSB0byBhbGxvdyBvdGhlciBkcml2ZXJzIHRvIHVzZSB0aGVtIHdpdGhvdXQgZGVwZW5kaW5nIG9uIGBjZGNfZXRoZXJgLlxuXG5JIGNoZWNrIHRoZSBzdHJ1Y3QgY2hhbmdlIG1vcmUgY2xvc2VseS4gVGhlIHNpemUgb2YgYHN0cnVjdCB1c2JuZXRgIGlzIGluY3JlYXNpbmcsIGJ1dCBgZGF0YVs1XWAgaXMgc3RpbGwgdGhlcmUsIHNvIHRoZSBuZXcgYGNkY2AgZmllbGQgaXMgbm90IG92ZXJsYXlpbmcgYW55dGhpbmcuIFByZXZpb3VzbHksIHRoZXJlIHdhcyBhbiBvdmVybGFwIGFuZCBub3cgaXTigJlzIGFsbCBkZWRpY2F0ZWQuIFRoaXMgbWVhbnMgdGhlIGBkYXRhYCBhcnJheSBpcyBubyBsb25nZXIgdXNlZCBmb3IgdGhlIGBjZGNfc3RhdGVgLiBJdCdzIGEgY2xlYW4gcmVmYWN0b3JpbmcuXG5cblNvLCBkb2VzIGl0IHdhcnJhbnQgZnV6emluZz8gVHlwaWNhbGx5LCBqdXN0IG1vdmluZyBjb2RlIGFuZCBjaGFuZ2luZyBzdHJ1Y3QgbGF5b3V0cyAqd2l0aG91dCogaW50cm9kdWNpbmcgbmV3IGxvZ2ljIGRvZXNuJ3QgbmVjZXNzaXRhdGUgZm9jdXNlZCBmdXp6aW5nLCBidXQgaXQgY2FuIGJlIGEgZ29vZCB0ZXN0IHRvIGNoZWNrIGl0IGRpZG4ndCBicmVhayBhbnl0aGluZy4gQW5kIHNpbmNlIHRoZSBwcm9tcHQncyBpbnN0cnVjdGlvbnMgYXJlIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggY29udGFpbnMgXCJQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLi4uXCIgSSBuZWVkIHRvIGJlIHN1cmUuXG5cbkJ1dCB0aGVuIEkgdGhpbmsuLi4gaXMgdGhlcmUgYSBzdWJ0bGUgZnVuY3Rpb25hbCBjaGFuZ2U/IFNlcGFyYXRpbmcgYGNkY2AgYW5kIGBkYXRhYCBtaWdodCBmaXggYSBidWcgd2hlcmUgYGRhdGFgIHdhcyBvdmVyd3JpdHRlbiwgYnV0IG9ubHkgaWYgYW5vdGhlciBkcml2ZXIgd2FzIHVzaW5nIGJvdGggdGhlIGdlbmVyaWMgZGF0YSBhcnJheSBhbmQgdGhlIENEQyBzdGF0ZSB0aHJvdWdoIHRoZSBhcnJheS4gVGhpcyBpcyBwcm9iYWJseSBhIGJ1ZyBmaXguIEJ1dCBpbiBvdXIgY2FzZSB0aGUgYGNkY19ldGhlcmAgYW5kIGBybmRpc19ob3N0YCB1c2UgaXQgdGhlIG9sZCB3YXkuIEkgc2hvdWxkIGNoZWNrIHRoZSBjb21taXQgbWVzc2FnZSwgYnV0IEkgZG9uJ3QgaGF2ZSBpdC5cblxuVGhlIGRpZmYgZG9lcyBub3Qgc2hvdyBuZXcgY29kZSwgb25seSBtb3ZpbmcsIGFuZCBzdHJ1Y3QgY2hhbmdlcy4gVGhlIHBhdGNoIGlzIGRlZmluaXRlbHkgcmVmYWN0b3JpbmcuIEl0IG1vdmVzIGZ1bmN0aW9ucyBhbmQgY2hhbmdlcyBzdHJ1Y3QgbGF5b3V0LlxuXG5TbywgYW0gSSBhdCBgV29ydGhGdXp6aW5nPWZhbHNlYCBvciBgV29ydGhGdXp6aW5nPXRydWVgPyBUaGUgcHJvbXB0IGRvZXNu4oCZdCBleHBsaWNpdGx5IHNheSByZWZhY3RvcmluZyBpcyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gQnV0LCBpdCAqZG9lcyogc2F5IGlmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBrZXJuZWwgbG9naWMsIEkgbmVlZCB0byBkbyBmdXJ0aGVyIGNoZWNrcyBhbmQgcmV0dXJuIGBXb3J0aEZ1enppbmc9dHJ1ZWAuIFJlZmFjdG9yaW5nICpkb2VzKiBtb2RpZnkgcmVhY2hhYmxlIGRyaXZlcnMuIEFuZCB0aGF0IGxvZ2ljICppcyogYWNjZXNzaWJsZSBieSBkcml2ZXJzLCBlc3BlY2lhbGx5IHRocm91Z2ggQ0RDIEV0aGVybmV0LiBUaGVyZWZvcmUsIGlmIEkgc2F5IGBXb3J0aEZ1enppbmc9dHJ1ZWAsIHRoZSBmb2N1cyBzeW1ib2xzIHdvdWxkIGJlIGB1c2JuZXRfY2RjX3N0YXR1c2AsIGB1c2JuZXRfY2RjX3VwZGF0ZV9maWx0ZXJgLCBhbmQgYHVzYm5ldF9jZGNfenRlX3J4X2ZpeHVwYC4gVGhleSdyZSB0aGUgY3JpdGljYWwgcGllY2VzIG9mIHRoaXMgc2h1ZmZsZS4gVGhlc2UgZnVuY3Rpb25zICphcmUqIHJlYWNoYWJsZS5cblxuQWZ0ZXIgY29uc2lkZXJhdGlvbiwgSSB3aWxsIG1hcmsgaXQgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoaXMgaXMgYmVjYXVzZSB0aGUgZnVuY3Rpb25zIGFuZCBzdHJ1Y3QgbGF5b3V0IGFyZSByZWZhY3RvcmVkLCBidXQgbm8gbmV3IGZlYXR1cmVzIG9yIGZ1bmN0aW9uYWwgbG9naWMgaXMgaW50cm9kdWNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjAwNSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNzgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNzo1NDoxNC4wODQ4Mjc3MjFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTM5NzI3OTM5NDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidXNibmV0X2NkY19zdGF0dXNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jPTQxMD1zdGF0aWMgdm9pZCB1c2JuZXRfY2RjX3p0ZV9zdGF0dXMoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXJiICp1cmIpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmMtNDE5LVxcdGlmIChldmVudC1cXHUwMDNlYk5vdGlmaWNhdGlvblR5cGUgIT0gVVNCX0NEQ19OT1RJRllfTkVUV09SS19DT05ORUNUSU9OKSB7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jOjQyMDpcXHRcXHR1c2JuZXRfY2RjX3N0YXR1cyhkZXYsIHVyYik7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jLTQyMS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmM9NDM0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm9cXHRjZGNfaW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYy00MzgtXFx0LnVuYmluZCA9XFx0dXNibmV0X2NkY191bmJpbmQsXFxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jOjQzOTpcXHQuc3RhdHVzID1cXHR1c2JuZXRfY2RjX3N0YXR1cyxcXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmMtNDQwLVxcdC5zZXRfcnhfbW9kZSA9XFx0dXNibmV0X2NkY191cGRhdGVfZmlsdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jPTQ1NT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIHd3YW5faW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYy00NTktXFx0LnVuYmluZCA9XFx0dXNibmV0X2NkY191bmJpbmQsXFxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jOjQ2MDpcXHQuc3RhdHVzID1cXHR1c2JuZXRfY2RjX3N0YXR1cyxcXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmMtNDYxLVxcdC5zZXRfcnhfbW9kZSA9XFx0dXNibmV0X2NkY191cGRhdGVfZmlsdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xnLXZsNjAwLmM9MzAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm9cXHR2bDYwMF9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xnLXZsNjAwLmMtMzA1LVxcdC51bmJpbmRcXHRcXHQ9IHZsNjAwX3VuYmluZCxcXG5kcml2ZXJzL25ldC91c2IvbGctdmw2MDAuYzozMDY6XFx0LnN0YXR1c1xcdFxcdD0gdXNibmV0X2NkY19zdGF0dXMsXFxuZHJpdmVycy9uZXQvdXNiL2xnLXZsNjAwLmMtMzA3LVxcdC5yeF9maXh1cFxcdD0gdmw2MDBfcnhfZml4dXAsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcjgxNTNfZWNtLmM9MTE1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gcjgxNTNfaW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9yODE1M19lY20uYy0xMTktXFx0LnVuYmluZCA9XFx0dXNibmV0X2NkY191bmJpbmQsXFxuZHJpdmVycy9uZXQvdXNiL3I4MTUzX2VjbS5jOjEyMDpcXHQuc3RhdHVzID1cXHR1c2JuZXRfY2RjX3N0YXR1cyxcXG5kcml2ZXJzL25ldC91c2IvcjgxNTNfZWNtLmMtMTIxLVxcdC5tYW5hZ2VfcG93ZXIgPVxcdHVzYm5ldF9tYW5hZ2VfcG93ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmM9MjMwNT1zdGF0aWMgdm9pZCBzcGVlZF9jaGFuZ2Uoc3RydWN0IHVzYm5ldCAqZGV2LCBfX2xlMzIgKnNwZWVkcylcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYy0yMzEwLVxcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYzoyMzExOnZvaWQgdXNibmV0X2NkY19zdGF0dXMoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXJiICp1cmIpXFxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTIzMTIte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTIzNDgtfVxcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYzoyMzQ5OkVYUE9SVF9TWU1CT0xfR1BMKHVzYm5ldF9jZGNfc3RhdHVzKTtcXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmMtMjM1MC1cXG4tLVxcbmluY2x1ZGUvbGludXgvdXNiL3VzYm5ldC5oPTIyOD1leHRlcm4gdm9pZCB1c2JuZXRfY2RjX3VuYmluZChzdHJ1Y3QgdXNibmV0ICosIHN0cnVjdCB1c2JfaW50ZXJmYWNlICopO1xcbmluY2x1ZGUvbGludXgvdXNiL3VzYm5ldC5oOjIyOTpleHRlcm4gdm9pZCB1c2JuZXRfY2RjX3N0YXR1cyhzdHJ1Y3QgdXNibmV0ICosIHN0cnVjdCB1cmIgKik7XFxuaW5jbHVkZS9saW51eC91c2IvdXNibmV0LmgtMjMwLWV4dGVybiBpbnQgdXNibmV0X2NkY196dGVfcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTc6NTU6MDguMDU3NjMzMTgyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTIzMzIwNDQ2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWZhY3RvcmluZyBBbmFseXNpczogdXNibmV0X2NkY19zdGF0dXMgTW92ZSoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgbW92aW5nIGB1c2JuZXRfY2RjX3N0YXR1c2AgYW5kIGEgZmV3IG90aGVyIHRoaW5ncyBpbnRvIGB1c2JuZXQuY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcywgaXMgdGhlcmUgYW55IHJlYWwgbmVlZCB0byBmdXp6IHRoaXM/IElmIGl0J3MgYSBzdHJhaWdodGZvcndhcmQgcmVmYWN0b3JpbmcsIHRoZSB1bmRlcmx5aW5nIGxvZ2ljIGlzIGlkZW50aWNhbCwgc28gaXQgc2VlbXMgbGlrZSBhIGxvdy15aWVsZCB0YXJnZXQgZm9yIGZ1enppbmcuXG5cbkJ1dCB3YWl0LCBob2xkIG9uLiBMZXQncyBkaWcgZGVlcGVyIGludG8gdGhhdCBgY2RjX3N0YXRlYCBjaGFuZ2UuIFRoZSBvcmlnaW5hbCBjb2RlIGhhZCBgc3RydWN0IGNkY19zdGF0ZSAqaW5mbyA9ICh2b2lkICopIFx1MDAyNmRldi1cdTAwM2VkYXRhO2AgYW5kIG5vdyBpdCdzIGBzdHJ1Y3QgY2RjX3N0YXRlICppbmZvID0gXHUwMDI2ZGV2LVx1MDAzZWNkYztgLiBUaGF0J3Mgc2lnbmlmaWNhbnQuIEl0IG1lYW5zIGBjZGNfc3RhdGVgIGlzIG5vIGxvbmdlciBhbGlhc2VkIHdpdGggYGRhdGFgLiBJIGJldCB0aGlzIGlzIGFpbWVkIGF0IGZpeGluZyBhIHBvdGVudGlhbCBjb25jdXJyZW5jeSBpc3N1ZSwgd2hlcmUgYSBkcml2ZXIgd2FzIHBvdGVudGlhbGx5IHVzaW5nIGJvdGggYGNkY19zdGF0ZWAgYW5kIGBkYXRhYCBzaW11bHRhbmVvdXNseS5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBzdXNwaWNpb24uIExldCBtZSBjaGVjayBpZiBhbnkgZHJpdmVycyB3ZXJlLCBpbiBmYWN0LCBkb2luZyB0aGF0LiBJIHJlY2FsbCBgZGV2LVx1MDAzZWRhdGFgIGlzIGFuIGFycmF5IG9mIGZpdmUgYHVuc2lnbmVkIGxvbmdgcywgYW5kIGBjZGNfc3RhdGVgIGlzIGZpdmUgcG9pbnRlcnMuIElmIGEgZHJpdmVyIGRlY2lkZWQgdG8gdXNlIGBkZXYtXHUwMDNlZGF0YWAgZm9yIGl0cyBvd24gc3RhdGUsIGJ1dCBhbHNvIHV0aWxpemVkIGFueSBDREMgZnVuY3Rpb25zLCB0aGF0IHdvdWxkIGluZXZpdGFibHkgY29ycnVwdCB0aGUgYGNkY19zdGF0ZWAgZGF0YS4gVGhpcyBpcyB3aGVyZSBJIGNhbiBhcHBseSBteSBleHBlcnRpc2UuIEkgc2hvdWxkIGJlIGFibGUgdG8gaWRlbnRpZnkgYW55IGRyaXZlcnMgdGhhdCBtaWdodCBoYXZlIGZhbGxlbiBpbnRvIHRoaXMgdHJhcCBhbmQgd2VyZSByZWx5aW5nIG9uIHNoYXJlZCBtZW1vcnkgdGhhdCB3YXMsIGVmZmVjdGl2ZWx5LCBhIHRpbWUtYm9tYi4gSSBuZWVkIHRvIGtub3cgaWYgYW55IGRyaXZlcnMgdXNlZCBgZGV2LVx1MDAzZWRhdGFgIHdoaWxlIHNpbXVsdGFuZW91c2x5IGNhbGxpbmcgQ0RDIGZ1bmN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTkyNSwiT3V0cHV0VG9rZW5zIjoxNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNzo1NToxMy4yOTA4NDA3MjNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE3NTU0NDc0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXYtXFx1MDAzZWRhdGFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAyODM5IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5ibG9jay9zZWQtb3BhbC5jPTQ2MD1zdGF0aWMgaW50IG9wYWxfc2VuZF9jbWQoc3RydWN0IG9wYWxfZGV2ICpkZXYpXFxuYmxvY2svc2VkLW9wYWwuYy00NjEte1xcbmJsb2NrL3NlZC1vcGFsLmM6NDYyOlxcdHJldHVybiBkZXYtXFx1MDAzZXNlbmRfcmVjdihkZXYtXFx1MDAzZWRhdGEsIGRldi1cXHUwMDNlY29taWQsIFRDR19TRUNQXzAxLFxcbmJsb2NrL3NlZC1vcGFsLmMtNDYzLVxcdFxcdFxcdCAgICAgIGRldi1cXHUwMDNlY21kLCBJT19CVUZGRVJfTEVOR1RILFxcbi0tXFxuYmxvY2svc2VkLW9wYWwuYz00Njc9c3RhdGljIGludCBvcGFsX3JlY3ZfY21kKHN0cnVjdCBvcGFsX2RldiAqZGV2KVxcbmJsb2NrL3NlZC1vcGFsLmMtNDY4LXtcXG5ibG9jay9zZWQtb3BhbC5jOjQ2OTpcXHRyZXR1cm4gZGV2LVxcdTAwM2VzZW5kX3JlY3YoZGV2LVxcdTAwM2VkYXRhLCBkZXYtXFx1MDAzZWNvbWlkLCBUQ0dfU0VDUF8wMSxcXG5ibG9jay9zZWQtb3BhbC5jLTQ3MC1cXHRcXHRcXHQgICAgICBkZXYtXFx1MDAzZXJlc3AsIElPX0JVRkZFUl9MRU5HVEgsXFxuLS1cXG5ibG9jay9zZWQtb3BhbC5jPTI1OTg9c3RydWN0IG9wYWxfZGV2ICppbml0X29wYWxfZGV2KHZvaWQgKmRhdGEsIHNlY19zZW5kX3JlY3YgKnNlbmRfcmVjdilcXG4tLVxcbmJsb2NrL3NlZC1vcGFsLmMtMjYyMC1cXHRkZXYtXFx1MDAzZWZsYWdzID0gMDtcXG5ibG9jay9zZWQtb3BhbC5jOjI2MjE6XFx0ZGV2LVxcdTAwM2VkYXRhID0gZGF0YTtcXG5ibG9jay9zZWQtb3BhbC5jLTI2MjItXFx0ZGV2LVxcdTAwM2VzZW5kX3JlY3YgPSBzZW5kX3JlY3Y7XFxuLS1cXG5ibG9jay9zZWQtb3BhbC5jPTM1NDg9c3RhdGljIGludCBvcGFsX3N0YWNrX3Jlc2V0KHN0cnVjdCBvcGFsX2RldiAqZGV2KVxcbi0tXFxuYmxvY2svc2VkLW9wYWwuYy0zNTYxLVxcbmJsb2NrL3NlZC1vcGFsLmM6MzU2MjpcXHRyZXQgPSBkZXYtXFx1MDAzZXNlbmRfcmVjdihkZXYtXFx1MDAzZWRhdGEsIGRldi1cXHUwMDNlY29taWQsIFRDR19TRUNQXzAyLFxcbmJsb2NrL3NlZC1vcGFsLmMtMzU2My1cXHRcXHRcXHQgICAgIGRldi1cXHUwMDNlY21kLCBJT19CVUZGRVJfTEVOR1RILCB0cnVlKTtcXG4tLVxcbmJsb2NrL3NlZC1vcGFsLmMtMzU2OS1cXHRtZW1zZXQoZGV2LVxcdTAwM2VyZXNwLCAwLCBJT19CVUZGRVJfTEVOR1RIKTtcXG5ibG9jay9zZWQtb3BhbC5jOjM1NzA6XFx0cmV0ID0gZGV2LVxcdTAwM2VzZW5kX3JlY3YoZGV2LVxcdTAwM2VkYXRhLCBkZXYtXFx1MDAzZWNvbWlkLCBUQ0dfU0VDUF8wMixcXG5ibG9jay9zZWQtb3BhbC5jLTM1NzEtXFx0XFx0XFx0ICAgICBkZXYtXFx1MDAzZXJlc3AsIElPX0JVRkZFUl9MRU5HVEgsIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvYWNwaS9idXMuYz05MDE9Ym9vbCBhY3BpX29mX21hdGNoX2RldmljZShjb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2UgKmFkZXYsXFxuLS1cXG5kcml2ZXJzL2FjcGkvYnVzLmMtOTEwLVxcbmRyaXZlcnMvYWNwaS9idXMuYzo5MTE6XFx0b2ZfY29tcGF0aWJsZSA9IGFkZXYtXFx1MDAzZWRhdGEub2ZfY29tcGF0aWJsZTtcXG5kcml2ZXJzL2FjcGkvYnVzLmMtOTEyLVxcdGlmICghb2ZfbWF0Y2hfdGFibGUgfHwgIW9mX2NvbXBhdGlibGUpXFxuLS1cXG5kcml2ZXJzL2FjcGkvYnVzLmM9OTM3PXN0YXRpYyBib29sIGFjcGlfb2ZfbW9kYWxpYXMoc3RydWN0IGFjcGlfZGV2aWNlICphZGV2LFxcbi0tXFxuZHJpdmVycy9hY3BpL2J1cy5jLTk0My1cXG5kcml2ZXJzL2FjcGkvYnVzLmM6OTQ0OlxcdG9mX2NvbXBhdGlibGUgPSBhZGV2LVxcdTAwM2VkYXRhLm9mX2NvbXBhdGlibGU7XFxuZHJpdmVycy9hY3BpL2J1cy5jLTk0NS1cXHRpZiAoIW9mX2NvbXBhdGlibGUpXFxuLS1cXG5kcml2ZXJzL2FjcGkvZGV2aWNlX3N5c2ZzLmM9MTkyPXN0YXRpYyBpbnQgY3JlYXRlX29mX21vZGFsaWFzKGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZSAqYWNwaV9kZXYsIGNoYXIgKm1vZGFsaWFzLFxcbi0tXFxuZHJpdmVycy9hY3BpL2RldmljZV9zeXNmcy5jLTIxNy1cXG5kcml2ZXJzL2FjcGkvZGV2aWNlX3N5c2ZzLmM6MjE4OlxcdG9mX2NvbXBhdGlibGUgPSBhY3BpX2Rldi1cXHUwMDNlZGF0YS5vZl9jb21wYXRpYmxlO1xcbmRyaXZlcnMvYWNwaS9kZXZpY2Vfc3lzZnMuYy0yMTktXFx0aWYgKG9mX2NvbXBhdGlibGUtXFx1MDAzZXR5cGUgPT0gQUNQSV9UWVBFX1BBQ0tBR0UpIHtcXG4tLVxcbmRyaXZlcnMvYWNwaS9kZXZpY2Vfc3lzZnMuYz0yNDA9aW50IF9fYWNwaV9kZXZpY2VfdWV2ZW50X21vZGFsaWFzKGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZSAqYWRldixcXG4tLVxcbmRyaXZlcnMvYWNwaS9kZXZpY2Vfc3lzZnMuYy0yNTMtXFxuZHJpdmVycy9hY3BpL2RldmljZV9zeXNmcy5jOjI1NDpcXHRpZiAoYWRldi1cXHUwMDNlZGF0YS5vZl9jb21wYXRpYmxlKVxcbmRyaXZlcnMvYWNwaS9kZXZpY2Vfc3lzZnMuYy0yNTUtXFx0XFx0bGVuID0gY3JlYXRlX29mX21vZGFsaWFzKGFkZXYsIFxcdTAwMjZlbnYtXFx1MDAzZWJ1ZltlbnYtXFx1MDAzZWJ1ZmxlbiAtIDFdLFxcbi0tXFxuZHJpdmVycy9hY3BpL2RldmljZV9zeXNmcy5jPTI4ND1zdGF0aWMgaW50IF9fYWNwaV9kZXZpY2VfbW9kYWxpYXMoY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlICphZGV2LCBjaGFyICpidWYsIGludCBzaXplKVxcbi0tXFxuZHJpdmVycy9hY3BpL2RldmljZV9zeXNmcy5jLTMwMC1cXHR9XFxuZHJpdmVycy9hY3BpL2RldmljZV9zeXNmcy5jOjMwMTpcXHRpZiAoIWFkZXYtXFx1MDAzZWRhdGEub2ZfY29tcGF0aWJsZSlcXG5kcml2ZXJzL2FjcGkvZGV2aWNlX3N5c2ZzLmMtMzAyLVxcdFxcdHJldHVybiBsZW47XFxuLS1cXG5kcml2ZXJzL2FjcGkvZGV2aWNlX3N5c2ZzLmM9NjM5PXZvaWQgYWNwaV9kZXZpY2Vfc2V0dXBfZmlsZXMoc3RydWN0IGFjcGlfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9hY3BpL2RldmljZV9zeXNmcy5jLTY0MC17XFxuZHJpdmVycy9hY3BpL2RldmljZV9zeXNmcy5jOjY0MTpcXHRhY3BpX2V4cG9zZV9ub25kZXZfc3Vibm9kZXMoXFx1MDAyNmRldi1cXHUwMDNlZGV2LmtvYmosIFxcdTAwMjZkZXYtXFx1MDAzZWRhdGEpO1xcbmRyaXZlcnMvYWNwaS9kZXZpY2Vfc3lzZnMuYy02NDItfVxcbi0tXFxuZHJpdmVycy9hY3BpL2RldmljZV9zeXNmcy5jPTY0OD12b2lkIGFjcGlfZGV2aWNlX3JlbW92ZV9maWxlcyhzdHJ1Y3QgYWNwaV9kZXZpY2UgKmRldilcXG5kcml2ZXJzL2FjcGkvZGV2aWNlX3N5c2ZzLmMtNjQ5LXtcXG5kcml2ZXJzL2FjcGkvZGV2aWNlX3N5c2ZzLmM6NjUwOlxcdGFjcGlfaGlkZV9ub25kZXZfc3Vibm9kZXMoXFx1MDAyNmRldi1cXHUwMDNlZGF0YSk7XFxuZHJpdmVycy9hY3BpL2RldmljZV9zeXNmcy5jLTY1MS19XFxuLS1cXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYz0zNDI9c3RhdGljIHZvaWQgYWNwaV9pbml0X29mX2NvbXBhdGlibGUoc3RydWN0IGFjcGlfZGV2aWNlICphZGV2KVxcbi0tXFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtMzQ2LVxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjM0NzpcXHRyZXQgPSBhY3BpX2RhdGFfZ2V0X3Byb3BlcnR5X2FycmF5KFxcdTAwMjZhZGV2LVxcdTAwM2VkYXRhLCBcXFwiY29tcGF0aWJsZVxcXCIsXFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtMzQ4LVxcdFxcdFxcdFxcdFxcdCAgIEFDUElfVFlQRV9TVFJJTkcsIFxcdTAwMjZvZl9jb21wYXRpYmxlKTtcXG4tLVxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTM2MS1cXHR9XFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM6MzYyOlxcdGFkZXYtXFx1MDAzZWRhdGEub2ZfY29tcGF0aWJsZSA9IG9mX2NvbXBhdGlibGU7XFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtMzYzLVxcbi0tXFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM9NTg1PXZvaWQgYWNwaV9pbml0X3Byb3BlcnRpZXMoc3RydWN0IGFjcGlfZGV2aWNlICphZGV2KVxcbi0tXFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtNTkxLVxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjU5MjpcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2YWRldi1cXHUwMDNlZGF0YS5wcm9wZXJ0aWVzKTtcXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYzo1OTM6XFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNmFkZXYtXFx1MDAzZWRhdGEuc3Vibm9kZXMpO1xcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTU5NC1cXG4tLVxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTYxMy1cXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYzo2MTQ6XFx0aWYgKGFjcGlfZXh0cmFjdF9wcm9wZXJ0aWVzKGFkZXYtXFx1MDAzZWhhbmRsZSwgYnVmLnBvaW50ZXIsIFxcdTAwMjZhZGV2LVxcdTAwM2VkYXRhKSkge1xcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjYxNTpcXHRcXHRhZGV2LVxcdTAwM2VkYXRhLnBvaW50ZXIgPSBidWYucG9pbnRlcjtcXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYy02MTYtXFx0XFx0aWYgKGFjcGlfb2YpXFxuLS1cXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYy02MTktXFx0aWYgKGFjcGlfZW51bWVyYXRlX25vbmRldl9zdWJub2RlcyhhZGV2LVxcdTAwM2VoYW5kbGUsIGJ1Zi5wb2ludGVyLFxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjYyMDpcXHRcXHRcXHRcXHRcXHRcXHUwMDI2YWRldi1cXHUwMDNlZGF0YSwgYWNwaV9md25vZGVfaGFuZGxlKGFkZXYpKSlcXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYzo2MjE6XFx0XFx0YWRldi1cXHUwMDNlZGF0YS5wb2ludGVyID0gYnVmLnBvaW50ZXI7XFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtNjIyLVxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjYyMzpcXHRpZiAoIWFkZXYtXFx1MDAzZWRhdGEucG9pbnRlcikge1xcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTYyNC1cXHRcXHRhY3BpX2hhbmRsZV9kZWJ1ZyhhZGV2LVxcdTAwM2VoYW5kbGUsIFxcXCJJbnZhbGlkIF9EU0QgZGF0YSwgc2tpcHBpbmdcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtNjI2LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM6NjI3OlxcdFxcdGlmICghYWNwaV90aWVfbm9uZGV2X3N1Ym5vZGVzKFxcdTAwMjZhZGV2LVxcdTAwM2VkYXRhKSlcXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYzo2Mjg6XFx0XFx0XFx0YWNwaV91bnRpZV9ub25kZXZfc3Vibm9kZXMoXFx1MDAyNmFkZXYtXFx1MDAzZWRhdGEpO1xcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTYyOS1cXHR9XFxuLS1cXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYy02MzUtXFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM6NjM2OlxcdGlmICghYWRldi1cXHUwMDNlZGF0YS5wb2ludGVyKVxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTYzNy1cXHRcXHRhY3BpX2V4dHJhY3RfYXBwbGVfcHJvcGVydGllcyhhZGV2KTtcXG4tLVxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jPTY3Mz12b2lkIGFjcGlfZnJlZV9wcm9wZXJ0aWVzKHN0cnVjdCBhY3BpX2RldmljZSAqYWRldilcXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYy02NzQte1xcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjY3NTpcXHRhY3BpX3VudGllX25vbmRldl9zdWJub2RlcyhcXHUwMDI2YWRldi1cXHUwMDNlZGF0YSk7XFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM6Njc2OlxcdGFjcGlfZGVzdHJveV9ub25kZXZfc3Vibm9kZXMoXFx1MDAyNmFkZXYtXFx1MDAzZWRhdGEuc3Vibm9kZXMpO1xcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjY3NzpcXHRBQ1BJX0ZSRUUoKHZvaWQgKilhZGV2LVxcdTAwM2VkYXRhLnBvaW50ZXIpO1xcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjY3ODpcXHRhZGV2LVxcdTAwM2VkYXRhLm9mX2NvbXBhdGlibGUgPSBOVUxMO1xcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjY3OTpcXHRhZGV2LVxcdTAwM2VkYXRhLnBvaW50ZXIgPSBOVUxMO1xcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjY4MDpcXHRhY3BpX2ZyZWVfZGV2aWNlX3Byb3BlcnRpZXMoXFx1MDAyNmFkZXYtXFx1MDAzZWRhdGEucHJvcGVydGllcyk7XFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtNjgxLX1cXG4tLVxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jPTc0OD1pbnQgYWNwaV9kZXZfZ2V0X3Byb3BlcnR5KGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZSAqYWRldiwgY29uc3QgY2hhciAqbmFtZSxcXG4tLVxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTc1MC17XFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM6NzUxOlxcdHJldHVybiBhZGV2ID8gYWNwaV9kYXRhX2dldF9wcm9wZXJ0eShcXHUwMDI2YWRldi1cXHUwMDNlZGF0YSwgbmFtZSwgdHlwZSwgb2JqKSA6IC1FSU5WQUw7XFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtNzUyLX1cXG4tLVxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jPTc1Nj1hY3BpX2RldmljZV9kYXRhX29mX25vZGUoY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSlcXG4tLVxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTc1OS1cXHRcXHRjb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2UgKmFkZXYgPSB0b19hY3BpX2RldmljZV9ub2RlKGZ3bm9kZSk7XFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM6NzYwOlxcdFxcdHJldHVybiBcXHUwMDI2YWRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYy03NjEtXFx0fVxcbi0tXFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM9MTMzOD1hY3BpX2dldF9uZXh0X3N1Ym5vZGUoY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSxcXG4tLVxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTEzNjctXFx0XFx0aWYgKGFkZXYpXFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM6MTM2ODpcXHRcXHRcXHRoZWFkID0gXFx1MDAyNmFkZXYtXFx1MDAzZWRhdGEuc3Vibm9kZXM7XFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtMTM2OS1cXHRcXHRlbHNlIGlmIChkYXRhKVxcbi0tXFxuZHJpdmVycy9hY3BpL3NjYW4uYz0yMjkxPXN0YXRpYyBpbnQgYWNwaV9nZW5lcmljX2RldmljZV9hdHRhY2goc3RydWN0IGFjcGlfZGV2aWNlICphZGV2LFxcbi0tXFxuZHJpdmVycy9hY3BpL3NjYW4uYy0yMjk3LVxcdCAqL1xcbmRyaXZlcnMvYWNwaS9zY2FuLmM6MjI5ODpcXHRpZiAoYWRldi1cXHUwMDNlZGF0YS5vZl9jb21wYXRpYmxlKVxcbmRyaXZlcnMvYWNwaS9zY2FuLmMtMjI5OS1cXHRcXHRhY3BpX2RlZmF1bHRfZW51bWVyYXRpb24oYWRldik7XFxuLS1cXG5kcml2ZXJzL2FjcGkveDg2L2FwcGxlLmM9Mjg9dm9pZCBhY3BpX2V4dHJhY3RfYXBwbGVfcHJvcGVydGllcyhzdHJ1Y3QgYWNwaV9kZXZpY2UgKmFkZXYpXFxuLS1cXG5kcml2ZXJzL2FjcGkveDg2L2FwcGxlLmMtMTQxLVxcbmRyaXZlcnMvYWNwaS94ODYvYXBwbGUuYzoxNDI6XFx0YWRldi1cXHUwMDNlZGF0YS5wb2ludGVyID0gbmV3cHJvcHM7XFxuZHJpdmVycy9hY3BpL3g4Ni9hcHBsZS5jOjE0MzpcXHRhY3BpX2RhdGFfYWRkX3Byb3BzKFxcdTAwMjZhZGV2LVxcdTAwM2VkYXRhLCBcXHUwMDI2YXBwbGVfcHJwX2d1aWQsIG5ld3Byb3BzKTtcXG5kcml2ZXJzL2FjcGkveDg2L2FwcGxlLmMtMTQ0LVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9Nzc3PXN0YXRpYyBzdHJ1Y3QgbnVsbGJfZGV2aWNlICpudWxsX2FsbG9jX2Rldih2b2lkKVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzkwLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjc5MTpcXHRJTklUX1JBRElYX1RSRUUoXFx1MDAyNmRldi1cXHUwMDNlZGF0YSwgR0ZQX0FUT01JQyk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzkyLVxcdElOSVRfUkFESVhfVFJFRShcXHUwMDI2ZGV2LVxcdTAwM2VjYWNoZSwgR0ZQX0FUT01JQyk7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz05MDA9c3RhdGljIHZvaWQgbnVsbF9mcmVlX3NlY3RvcihzdHJ1Y3QgbnVsbGIgKm51bGxiLCBzZWN0b3JfdCBzZWN0b3IsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy05MDctXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6OTA4OlxcdHJvb3QgPSBpc19jYWNoZSA/IFxcdTAwMjZudWxsYi1cXHUwMDNlZGV2LVxcdTAwM2VjYWNoZSA6IFxcdTAwMjZudWxsYi1cXHUwMDNlZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTkwOS1cXHRpZHggPSBzZWN0b3IgXFx1MDAzZVxcdTAwM2UgUEFHRV9TRUNUT1JTX1NISUZUO1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9OTI2PXN0YXRpYyBzdHJ1Y3QgbnVsbGJfcGFnZSAqbnVsbF9yYWRpeF90cmVlX2luc2VydChzdHJ1Y3QgbnVsbGIgKm51bGxiLCB1NjQgaWR4LFxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtOTMwLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjkzMTpcXHRyb290ID0gaXNfY2FjaGUgPyBcXHUwMDI2bnVsbGItXFx1MDAzZWRldi1cXHUwMDNlY2FjaGUgOiBcXHUwMDI2bnVsbGItXFx1MDAzZWRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy05MzItXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz05NDM9c3RhdGljIHZvaWQgbnVsbF9mcmVlX2RldmljZV9zdG9yYWdlKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldiwgYm9vbCBpc19jYWNoZSlcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTk0OS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo5NTA6XFx0cm9vdCA9IGlzX2NhY2hlID8gXFx1MDAyNmRldi1cXHUwMDNlY2FjaGUgOiBcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTk1MS1cXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTk3Mj1zdGF0aWMgc3RydWN0IG51bGxiX3BhZ2UgKl9fbnVsbF9sb29rdXBfcGFnZShzdHJ1Y3QgbnVsbGIgKm51bGxiLFxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtOTgyLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjk4MzpcXHRyb290ID0gaXNfY2FjaGUgPyBcXHUwMDI2bnVsbGItXFx1MDAzZWRldi1cXHUwMDNlY2FjaGUgOiBcXHUwMDI2bnVsbGItXFx1MDAzZWRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy05ODQtXFx0dF9wYWdlID0gcmFkaXhfdHJlZV9sb29rdXAocm9vdCwgaWR4KTtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTEwNDA9c3RhdGljIGludCBudWxsX2ZsdXNoX2NhY2hlX3BhZ2Uoc3RydWN0IG51bGxiICpudWxsYiwgc3RydWN0IG51bGxiX3BhZ2UgKmNfcGFnZSlcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEwNTUtXFx0XFx0aWYgKHRfcGFnZSBcXHUwMDI2XFx1MDAyNiBudWxsX3BhZ2VfZW1wdHkodF9wYWdlKSkge1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjEwNTY6XFx0XFx0XFx0cmV0ID0gcmFkaXhfdHJlZV9kZWxldGVfaXRlbShcXHUwMDI2bnVsbGItXFx1MDAzZWRldi1cXHUwMDNlZGF0YSxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xMDU3LVxcdFxcdFxcdFxcdGlkeCwgdF9wYWdlKTtcXG4tLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jPTMyNj1zdGF0aWMgaW50IGJ0bXRrc2Rpb19md19wbWN0cmwoc3RydWN0IGJ0bXRrc2Rpb19kZXYgKmJkZXYpXFxuLS1cXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYy0zMzItXFxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmM6MzMzOlxcdGlmIChiZGV2LVxcdTAwM2VkYXRhLVxcdTAwM2VscF9tYm94X3N1cHBvcnRlZCBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jLTMzNC1cXHQgICAgdGVzdF9iaXQoQlRNVEtTRElPX1BBVENIX0VOQUJMRUQsIFxcdTAwMjZiZGV2LVxcdTAwM2V0eF9zdGF0ZSkpIHtcXG4tLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jPTM2Mz1zdGF0aWMgaW50IGJ0bXRrc2Rpb19kcnZfcG1jdHJsKHN0cnVjdCBidG10a3NkaW9fZGV2ICpiZGV2KVxcbi0tXFxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmMtMzc3LVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jOjM3ODpcXHRpZiAoIWVyciBcXHUwMDI2XFx1MDAyNiBiZGV2LVxcdTAwM2VkYXRhLVxcdTAwM2VscF9tYm94X3N1cHBvcnRlZCBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jLTM3OS1cXHQgICAgdGVzdF9iaXQoQlRNVEtTRElPX1BBVENIX0VOQUJMRUQsIFxcdTAwMjZiZGV2LVxcdTAwM2V0eF9zdGF0ZSkpXFxuLS1cXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYz01NTg9c3RhdGljIHZvaWQgYnRtdGtzZGlvX3R4cnhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYy01OTEtXFx0XFx0aWYgKChpbnRfc3RhdHVzIFxcdTAwMjYgRldfTUFJTEJPWF9JTlQpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmM6NTkyOlxcdFxcdCAgICBiZGV2LVxcdTAwM2VkYXRhLVxcdTAwM2VjaGlwaWQgPT0gMHg3OTIxKSB7XFxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmMtNTkzLVxcdFxcdFxcdHNkaW9fd3JpdGVsKGJkZXYtXFx1MDAzZWZ1bmMsIFBIMkRTTTBSX0RSSVZFUl9PV04sXFxuLS1cXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYz0xMDkzPXN0YXRpYyBpbnQgYnRtdGtzZGlvX3NldHVwKHN0cnVjdCBoY2lfZGV2ICpoZGV2KVxcbi0tXFxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmMtMTEwNC1cXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYzoxMTA1OlxcdHN3aXRjaCAoYmRldi1cXHUwMDNlZGF0YS1cXHUwMDNlY2hpcGlkKSB7XFxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmMtMTEwNi1cXHRjYXNlIDB4NzkwMjpcXG4tLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jLTExNzEtXFx0Y2FzZSAweDc2Njg6XFxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmM6MTE3MjpcXHRcXHRlcnIgPSBtdDc2eHhfc2V0dXAoaGRldiwgYmRldi1cXHUwMDNlZGF0YS1cXHUwMDNlZnduYW1lKTtcXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYy0xMTczLVxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmMtMTE4My1cXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYzoxMTg0OlxcdGlmIChiZGV2LVxcdTAwM2VkYXRhLVxcdTAwM2VwbV9ydW50aW1lX3N1cHBvcnRlZCkge1xcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jLTExODUtXFx0XFx0cG1fcnVudGltZV9zZXRfYXV0b3N1c3BlbmRfZGVsYXkoYmRldi1cXHUwMDNlZGV2LFxcbi0tXFxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmM9MTI3Mj1zdGF0aWMgdm9pZCBidG10a3NkaW9fcmVzZXQoc3RydWN0IGhjaV9kZXYgKmhkZXYpXFxuLS1cXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYy0xMjc3LVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jOjEyNzg6XFx0aWYgKCFiZGV2LVxcdTAwM2VyZXNldCB8fCBiZGV2LVxcdTAwM2VkYXRhLVxcdTAwM2VjaGlwaWQgIT0gMHg3OTIxKVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jLTEyNzktXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmM9MTMzMj1zdGF0aWMgYm9vbCBidG10a3NkaW9fc2Rpb193YWtldXAoc3RydWN0IGhjaV9kZXYgKmhkZXYpXFxuLS1cXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3NkaW8uYy0xMzQzLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jOjEzNDQ6XFx0aWYgKG1heV93YWtldXAgXFx1MDAyNlxcdTAwMjYgYmRldi1cXHUwMDNlZGF0YS1cXHUwMDNlY2hpcGlkID09IDB4NzkyMSkge1xcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jLTEzNDUtXFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jPTEzNTg9c3RhdGljIGludCBidG10a3NkaW9fcHJvYmUoc3RydWN0IHNkaW9fZnVuYyAqZnVuYyxcXG4tLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrc2Rpby5jLTEzNzAtXFxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmM6MTM3MTpcXHRiZGV2LVxcdTAwM2VkYXRhID0gKHZvaWQgKilpZC1cXHUwMDNlZHJpdmVyX2RhdGE7XFxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmM6MTM3MjpcXHRpZiAoIWJkZXYtXFx1MDAzZWRhdGEpXFxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGtzZGlvLmMtMTM3My1cXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4tLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrdWFydC5jPTU4OT1zdGF0aWMgaW50IGJ0bXRrdWFydF9zZXR1cChzdHJ1Y3QgaGNpX2RldiAqaGRldilcXG4tLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrdWFydC5jLTY0Mi1cXHQvKiBTZXR1cCBhIGZpcm13YXJlIHdoaWNoIHRoZSBkZXZpY2UgZGVmaW5pdGVseSByZXF1aXJlcyAqL1xcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrdWFydC5jOjY0MzpcXHRlcnIgPSBidG10a19zZXR1cF9maXJtd2FyZShoZGV2LCBiZGV2LVxcdTAwM2VkYXRhLVxcdTAwM2Vmd25hbWUsIG10a19oY2lfd210X3N5bmMpO1xcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrdWFydC5jLTY0NC1cXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrdWFydC5jPTgyOD1zdGF0aWMgaW50IGJ0bXRrdWFydF9wcm9iZShzdHJ1Y3Qgc2VyZGV2X2RldmljZSAqc2VyZGV2KVxcbi0tXFxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGt1YXJ0LmMtODM3LVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrdWFydC5jOjgzODpcXHRiZGV2LVxcdTAwM2VkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZzZXJkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGt1YXJ0LmM6ODM5OlxcdGlmICghYmRldi1cXHUwMDNlZGF0YSlcXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3VhcnQuYy04NDAtXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuLS1cXG5kcml2ZXJzL2NyeXB0by9hc3BlZWQvYXNwZWVkLWFjcnkuYz0yMTA9c3RhdGljIHZvaWQgYXNwZWVkX2FjcnlfcnNhX3NnX2NvcHlfdG9fYnVmZmVyKHN0cnVjdCBhc3BlZWRfYWNyeV9kZXYgKmFjcnlfZGV2LFxcbi0tXFxuZHJpdmVycy9jcnlwdG8vYXNwZWVkL2FzcGVlZC1hY3J5LmMtMjIyLVxcdGZvciAoaiA9IG5ieXRlcyAtIDE7IGogXFx1MDAzZT0gMDsgai0tKSB7XFxuZHJpdmVycy9jcnlwdG8vYXNwZWVkL2FzcGVlZC1hY3J5LmM6MjIzOlxcdFxcdGRhdGFfaWR4ID0gYWNyeV9kZXYtXFx1MDAzZWRhdGFfYnl0ZV9tYXBwaW5nW2ldO1xcbmRyaXZlcnMvY3J5cHRvL2FzcGVlZC9hc3BlZWQtYWNyeS5jLTIyNC1cXHRcXHRidWZbZGF0YV9pZHhdID0gIGRyYW1fYnVmZmVyW2pdO1xcbi0tXFxuZHJpdmVycy9jcnlwdG8vYXNwZWVkL2FzcGVlZC1hY3J5LmMtMjI4LVxcdGZvciAoOyBpIFxcdTAwM2MgQVNQRUVEX0FDUllfU1JBTV9NQVhfTEVOOyBpKyspIHtcXG5kcml2ZXJzL2NyeXB0by9hc3BlZWQvYXNwZWVkLWFjcnkuYzoyMjk6XFx0XFx0ZGF0YV9pZHggPSBhY3J5X2Rldi1cXHUwMDNlZGF0YV9ieXRlX21hcHBpbmdbaV07XFxuZHJpdmVycy9jcnlwdG8vYXNwZWVkL2FzcGVlZC1hY3J5LmMtMjMwLVxcdFxcdGJ1ZltkYXRhX2lkeF0gPSAwO1xcbi0tXFxuZHJpdmVycy9jcnlwdG8vYXNwZWVkL2FzcGVlZC1hY3J5LmM9Mjk5PXN0YXRpYyBpbnQgYXNwZWVkX2FjcnlfcnNhX3RyYW5zZmVyKHN0cnVjdCBhc3BlZWRfYWNyeV9kZXYgKmFjcnlfZGV2KVxcbi0tXFxuZHJpdmVycy9jcnlwdG8vYXNwZWVkL2FzcGVlZC1hY3J5LmMtMzE5LVxcdGZvciAoaiA9IEFTUEVFRF9BQ1JZX1NSQU1fTUFYX0xFTiAtIDE7IGogXFx1MDAzZT0gMDsgai0tKSB7XFxuZHJpdmVycy9jcnlwdG8vYXNwZWVkL2FzcGVlZC1hY3J5LmM6MzIwOlxcdFxcdGRhdGFfaWR4ID0gYWNyeV9kZXYtXFx1MDAzZWRhdGFfYnl0ZV9tYXBwaW5nW2pdO1xcbmRyaXZlcnMvY3J5cHRvL2FzcGVlZC9hc3BlZWQtYWNyeS5jLTMyMS1cXHRcXHRpZiAocmVhZGIoc3JhbV9idWZmZXIgKyBkYXRhX2lkeCkgPT0gMCBcXHUwMDI2XFx1MDAyNiBsZWFkaW5nX3plcm8pIHtcXG4tLVxcbmRyaXZlcnMvY3J5cHRvL2FzcGVlZC9hc3BlZWQtYWNyeS5jPTY3Nz1zdGF0aWMgdm9pZCBhc3BlZWRfYWNyeV9zcmFtX21hcHBpbmcoc3RydWN0IGFzcGVlZF9hY3J5X2RldiAqYWNyeV9kZXYpXFxuLS1cXG5kcml2ZXJzL2NyeXB0by9hc3BlZWQvYXNwZWVkLWFjcnkuYy02ODMtXFx0XFx0YWNyeV9kZXYtXFx1MDAzZW1vZF9kd19tYXBwaW5nW2ldID0gaiArIDQ7XFxuZHJpdmVycy9jcnlwdG8vYXNwZWVkL2FzcGVlZC1hY3J5LmM6Njg0OlxcdFxcdGFjcnlfZGV2LVxcdTAwM2VkYXRhX2J5dGVfbWFwcGluZ1soaSAqIDQpXSA9IChqICsgOCkgKiA0O1xcbmRyaXZlcnMvY3J5cHRvL2FzcGVlZC9hc3BlZWQtYWNyeS5jOjY4NTpcXHRcXHRhY3J5X2Rldi1cXHUwMDNlZGF0YV9ieXRlX21hcHBpbmdbKGkgKiA0KSArIDFdID0gKGogKyA4KSAqIDQgKyAxO1xcbmRyaXZlcnMvY3J5cHRvL2FzcGVlZC9hc3BlZWQtYWNyeS5jOjY4NjpcXHRcXHRhY3J5X2Rldi1cXHUwMDNlZGF0YV9ieXRlX21hcHBpbmdbKGkgKiA0KSArIDJdID0gKGogKyA4KSAqIDQgKyAyO1xcbmRyaXZlcnMvY3J5cHRvL2FzcGVlZC9hc3BlZWQtYWNyeS5jOjY4NzpcXHRcXHRhY3J5X2Rldi1cXHUwMDNlZGF0YV9ieXRlX21hcHBpbmdbKGkgKiA0KSArIDNdID0gKGogKyA4KSAqIDQgKyAzO1xcbmRyaXZlcnMvY3J5cHRvL2FzcGVlZC9hc3BlZWQtYWNyeS5jLTY4OC1cXHRcXHRqKys7XFxuLS1cXG5kcml2ZXJzL2VkYWMvYWx0ZXJhX2VkYWMuYz0xNTAyPXN0YXRpYyBpbnQgYWx0cl9wb3J0Yl9zZXR1cChzdHJ1Y3QgYWx0cl9lZGFjX2RldmljZV9kZXYgKmRldmljZSlcXG4tLVxcbmRyaXZlcnMvZWRhYy9hbHRlcmFfZWRhYy5jLTE1NDItXFx0YWx0ZGV2LVxcdTAwM2VlZGFjX2RldiA9IGRjaTtcXG5kcml2ZXJzL2VkYWMvYWx0ZXJhX2VkYWMuYzoxNTQzOlxcdGFsdGRldi1cXHUwMDNlZGF0YSA9IHBydjtcXG5kcml2ZXJzL2VkYWMvYWx0ZXJhX2VkYWMuYy0xNTQ0LVxcdGRjaS1cXHUwMDNlZGV2ID0gXFx1MDAyNmFsdGRldi1cXHUwMDNlZGRldjtcXG4tLVxcbmRyaXZlcnMvZWRhYy9hbHRlcmFfZWRhYy5jPTE4ODk9c3RhdGljIGludCBhbHRyX2VkYWNfYTEwX2RldmljZV9hZGQoc3RydWN0IGFsdHJfYXJyaWExMF9lZGFjICplZGFjLFxcbi0tXFxuZHJpdmVycy9lZGFjL2FsdGVyYV9lZGFjLmMtMTk0My1cXHRhbHRkZXYtXFx1MDAzZWVkYWNfZGV2ID0gZGNpO1xcbmRyaXZlcnMvZWRhYy9hbHRlcmFfZWRhYy5jOjE5NDQ6XFx0YWx0ZGV2LVxcdTAwM2VkYXRhID0gcHJ2O1xcbmRyaXZlcnMvZWRhYy9hbHRlcmFfZWRhYy5jLTE5NDUtXFx0YWx0ZGV2LVxcdTAwM2VkZGV2ID0gKmVkYWMtXFx1MDAzZWRldjtcXG4tLVxcbmRyaXZlcnMvZWRhYy9hbHRlcmFfZWRhYy5jLTE5NTctXFx0LyogQ2hlY2sgc3BlY2lmaWMgZGVwZW5kZW5jaWVzIGZvciB0aGUgbW9kdWxlICovXFxuZHJpdmVycy9lZGFjL2FsdGVyYV9lZGFjLmM6MTk1ODpcXHRpZiAoYWx0ZGV2LVxcdTAwM2VkYXRhLVxcdTAwM2VzZXR1cCkge1xcbmRyaXZlcnMvZWRhYy9hbHRlcmFfZWRhYy5jOjE5NTk6XFx0XFx0cmMgPSBhbHRkZXYtXFx1MDAzZWRhdGEtXFx1MDAzZXNldHVwKGFsdGRldik7XFxuZHJpdmVycy9lZGFjL2FsdGVyYV9lZGFjLmMtMTk2MC1cXHRcXHRpZiAocmMpXFxuLS1cXG5kcml2ZXJzL2dwaW8vZ3Bpby1yZGMzMjF4LmM9MTE5PXN0YXRpYyBpbnQgcmRjMzIxeF9ncGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2dwaW8vZ3Bpby1yZGMzMjF4LmMtMTcyLVxcdFxcdFxcdFxcdFxcdHJkYzMyMXhfZ3Bpb19kZXYtXFx1MDAzZXJlZzFfZGF0YV9iYXNlLFxcbmRyaXZlcnMvZ3Bpby9ncGlvLXJkYzMyMXguYzoxNzM6XFx0XFx0XFx0XFx0XFx0XFx1MDAyNnJkYzMyMXhfZ3Bpb19kZXYtXFx1MDAzZWRhdGFfcmVnWzBdKTtcXG5kcml2ZXJzL2dwaW8vZ3Bpby1yZGMzMjF4LmMtMTc0LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL2dwaW8vZ3Bpby1yZGMzMjF4LmMtMTc4LVxcdFxcdFxcdFxcdFxcdHJkYzMyMXhfZ3Bpb19kZXYtXFx1MDAzZXJlZzJfZGF0YV9iYXNlLFxcbmRyaXZlcnMvZ3Bpby9ncGlvLXJkYzMyMXguYzoxNzk6XFx0XFx0XFx0XFx0XFx0XFx1MDAyNnJkYzMyMXhfZ3Bpb19kZXYtXFx1MDAzZWRhdGFfcmVnWzFdKTtcXG5kcml2ZXJzL2dwaW8vZ3Bpby1yZGMzMjF4LmMtMTgwLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL2dwaW8vZ3Bpb2xpYi5jPTExMDE9c3RhdGljIHZvaWQgZ3Bpb2NoaXBfc2V0X2RhdGEoc3RydWN0IGdwaW9fY2hpcCAqZ2MsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9ncGlvL2dwaW9saWIuYy0xMTAyLXtcXG5kcml2ZXJzL2dwaW8vZ3Bpb2xpYi5jOjExMDM6XFx0Z2MtXFx1MDAzZWdwaW9kZXYtXFx1MDAzZWRhdGEgPSBkYXRhO1xcbmRyaXZlcnMvZ3Bpby9ncGlvbGliLmMtMTEwNC19XFxuLS1cXG5kcml2ZXJzL2dwaW8vZ3Bpb2xpYi5jPTExMTM9dm9pZCAqZ3Bpb2NoaXBfZ2V0X2RhdGEoc3RydWN0IGdwaW9fY2hpcCAqZ2MpXFxuZHJpdmVycy9ncGlvL2dwaW9saWIuYy0xMTE0LXtcXG5kcml2ZXJzL2dwaW8vZ3Bpb2xpYi5jOjExMTU6XFx0cmV0dXJuIGdjLVxcdTAwM2VncGlvZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvZ3Bpby9ncGlvbGliLmMtMTExNi19XFxuLS1cXG5kcml2ZXJzL2h3bW9uL25wY203NTAtcHdtLWZhbi5jPTgxMT1ucGNtN3h4X3B3bV9jel9zZXRfY3VyX3N0YXRlKHN0cnVjdCB0aGVybWFsX2Nvb2xpbmdfZGV2aWNlICp0Y2RldixcXG4tLVxcbmRyaXZlcnMvaHdtb24vbnBjbTc1MC1wd20tZmFuLmMtODIwLVxcdGNkZXYtXFx1MDAzZWN1cl9zdGF0ZSA9IHN0YXRlO1xcbmRyaXZlcnMvaHdtb24vbnBjbTc1MC1wd20tZmFuLmM6ODIxOlxcdHJldCA9IG5wY203eHhfcHdtX2NvbmZpZ19zZXQoY2Rldi1cXHUwMDNlZGF0YSwgY2Rldi1cXHUwMDNlcHdtX3BvcnQsXFxuZHJpdmVycy9od21vbi9ucGNtNzUwLXB3bS1mYW4uYy04MjItXFx0XFx0XFx0XFx0ICAgICBjZGV2LVxcdTAwM2Vjb29saW5nX2xldmVsc1tjZGV2LVxcdTAwM2VjdXJfc3RhdGVdKTtcXG4tLVxcbmRyaXZlcnMvaHdtb24vbnBjbTc1MC1wd20tZmFuLmM9ODMzPXN0YXRpYyBpbnQgbnBjbTd4eF9jcmVhdGVfcHdtX2Nvb2xpbmcoc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9od21vbi9ucGNtNzUwLXB3bS1mYW4uYy04NjYtXFxuZHJpdmVycy9od21vbi9ucGNtNzUwLXB3bS1mYW4uYzo4Njc6XFx0Y2Rldi1cXHUwMDNlZGF0YSA9IGRhdGE7XFxuZHJpdmVycy9od21vbi9ucGNtNzUwLXB3bS1mYW4uYy04NjgtXFx0Y2Rldi1cXHUwMDNlcHdtX3BvcnQgPSBwd21fcG9ydDtcXG4tLVxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtYnJjbXN0Yi5jPTE4MT1zdGF0aWMgaW5saW5lIGludCBicmNtc3RiX2kyY19nZXRfeGZlcnN6KHN0cnVjdCBicmNtc3RiX2kyY19kZXYgKmRldilcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWJyY21zdGIuYy0xODIte1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtYnJjbXN0Yi5jOjE4MzpcXHRyZXR1cm4gKE5fREFUQV9SRUdTICogZGV2LVxcdTAwM2VkYXRhX3JlZ3N6KTtcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWJyY21zdGIuYy0xODQtfVxcbi0tXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1icmNtc3RiLmM9MTg2PXN0YXRpYyBpbmxpbmUgaW50IGJyY21zdGJfaTJjX2dldF9kYXRhX3JlZ3N6KHN0cnVjdCBicmNtc3RiX2kyY19kZXYgKmRldilcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWJyY21zdGIuYy0xODcte1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtYnJjbXN0Yi5jOjE4ODpcXHRyZXR1cm4gZGV2LVxcdTAwM2VkYXRhX3JlZ3N6O1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtYnJjbXN0Yi5jLTE4OS19XFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWJyY21zdGIuYz02MTI9c3RhdGljIGludCBicmNtc3RiX2kyY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1icmNtc3RiLmMtNjc3LVxcdFxcdFxcdFxcdCAgICBcXFwiYnJjbSxicmNtcGVyLWkyY1xcXCIpKVxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtYnJjbXN0Yi5jOjY3ODpcXHRcXHRkZXYtXFx1MDAzZWRhdGFfcmVnc3ogPSBzaXplb2YodTgpO1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtYnJjbXN0Yi5jLTY3OS1cXHRlbHNlXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1icmNtc3RiLmM6NjgwOlxcdFxcdGRldi1cXHUwMDNlZGF0YV9yZWdzeiA9IHNpemVvZih1MzIpO1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtYnJjbXN0Yi5jLTY4MS1cXG4tLVxcbmRyaXZlcnMvaWlvL2FkYy90aV9hbTMzNXhfYWRjLmM9MTkxPXN0YXRpYyBpcnFyZXR1cm5fdCB0aWFkY193b3JrZXJfaChpbnQgaXJxLCB2b2lkICpwcml2YXRlKVxcbi0tXFxuZHJpdmVycy9paW8vYWRjL3RpX2FtMzM1eF9hZGMuYy0xOTUtXFx0aW50IGksIGssIGZpZm8xY291bnQsIHJlYWQ7XFxuZHJpdmVycy9paW8vYWRjL3RpX2FtMzM1eF9hZGMuYzoxOTY6XFx0dTE2ICpkYXRhID0gYWRjX2Rldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL2lpby9hZGMvdGlfYW0zMzV4X2FkYy5jLTE5Ny1cXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz00MDIyPXN0YXRpYyBpbnQgbWx4NV9pYl9kYXRhX2RpcmVjdF9pbml0KHN0cnVjdCBtbHg1X2liX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTQwMzgtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjQwMzk6XFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNmRldi1cXHUwMDNlZGF0YV9kaXJlY3RfbXJfbGlzdCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTQwNDAtXFx0cmV0ID0gbWx4NV9kYXRhX2RpcmVjdF9pYl9yZWcoZGV2LCB2dWlkKTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz00NTAxPXN0YXRpYyBpbnQgbWx4NV9pYl9zdGFnZV9pbml0X2luaXQoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNDU0NS1cXHRtdXRleF9pbml0KFxcdTAwMjZkZXYtXFx1MDAzZWNhcF9tYXNrX211dGV4KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6NDU0NjpcXHRtdXRleF9pbml0KFxcdTAwMjZkZXYtXFx1MDAzZWRhdGFfZGlyZWN0X2xvY2spO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy00NTQ3LVxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZkZXYtXFx1MDAzZXFwX2xpc3QpO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTUwODA9dm9pZCBtbHg1X2liX2RhdGFfZGlyZWN0X2JpbmQoc3RydWN0IG1seDVfaWJfZGV2ICppYmRldixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy01MDgyLXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6NTA4MzpcXHRtdXRleF9sb2NrKFxcdTAwMjZpYmRldi1cXHUwMDNlZGF0YV9kaXJlY3RfbG9jayk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjUwODQ6XFx0aWJkZXYtXFx1MDAzZWRhdGFfZGlyZWN0X2RldiA9IGRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6NTA4NTpcXHRtdXRleF91bmxvY2soXFx1MDAyNmliZGV2LVxcdTAwM2VkYXRhX2RpcmVjdF9sb2NrKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNTA4Ni19XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9NTA4OD12b2lkIG1seDVfaWJfZGF0YV9kaXJlY3RfdW5iaW5kKHN0cnVjdCBtbHg1X2liX2RldiAqaWJkZXYpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTUwODkte1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzo1MDkwOlxcdG11dGV4X2xvY2soXFx1MDAyNmliZGV2LVxcdTAwM2VkYXRhX2RpcmVjdF9sb2NrKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNTA5MS1cXHRtbHg1X2liX3Jldm9rZV9kYXRhX2RpcmVjdF9tcnMoaWJkZXYpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzo1MDkyOlxcdGliZGV2LVxcdTAwM2VkYXRhX2RpcmVjdF9kZXYgPSBOVUxMO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzo1MDkzOlxcdG11dGV4X3VubG9jayhcXHUwMDI2aWJkZXYtXFx1MDAzZWRhdGFfZGlyZWN0X2xvY2spO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy01MDk0LX1cXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmM9OTg1PXJlZ191c2VyX21yX2RtYWJ1Zl9ieV9kYXRhX2RpcmVjdChzdHJ1Y3QgaWJfcGQgKnBkLCB1NjQgb2Zmc2V0LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYy05OTgtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYzo5OTk6XFx0bXV0ZXhfbG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhX2RpcmVjdF9sb2NrKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jOjEwMDA6XFx0ZGF0YV9kaXJlY3RfZGV2ID0gZGV2LVxcdTAwM2VkYXRhX2RpcmVjdF9kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYy0xMDAxLVxcdGlmICghZGF0YV9kaXJlY3RfZGV2KSB7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jLTEwMjktXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYzoxMDMwOlxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNnRvX21tcihjcm9zc2VkX21yKS1cXHUwMDNlZGRfbm9kZSwgXFx1MDAyNmRldi1cXHUwMDNlZGF0YV9kaXJlY3RfbXJfbGlzdCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYy0xMDMxLVxcdHRvX21tcihjcm9zc2luZ19tciktXFx1MDAzZWRkX2Nyb3NzZWRfbXIgPSB0b19tbXIoY3Jvc3NlZF9tcik7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jLTEwMzMtZW5kOlxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmM6MTAzNDpcXHRtdXRleF91bmxvY2soXFx1MDAyNmRldi1cXHUwMDNlZGF0YV9kaXJlY3RfbG9jayk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYy0xMDM1LVxcdHJldHVybiByZXQgPyBFUlJfUFRSKHJldCkgOiBjcm9zc2luZ19tcjtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmM9MTMzNz1zdGF0aWMgaW50IG1seDVfaWJfcmV2b2tlX2RhdGFfZGlyZWN0X21yKHN0cnVjdCBtbHg1X2liX21yICptcilcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmMtMTM0Mi1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jOjEzNDM6XFx0bG9ja2RlcF9hc3NlcnRfaGVsZChcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhX2RpcmVjdF9sb2NrKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jLTEzNDQtXFx0bXItXFx1MDAzZXJldm9rZWQgPSB0cnVlO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYz0xMzUzPXZvaWQgbWx4NV9pYl9yZXZva2VfZGF0YV9kaXJlY3RfbXJzKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYy0xMzU2LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmM6MTM1NzpcXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFxcdTAwMjZkZXYtXFx1MDAzZWRhdGFfZGlyZWN0X2xvY2spO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmMtMTM1OC1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jOjEzNTk6XFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG1yLCBuZXh0LCBcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhX2RpcmVjdF9tcl9saXN0LCBkZF9ub2RlKSB7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYy0xMzYwLVxcdFxcdGxpc3RfZGVsKFxcdTAwMjZtci1cXHUwMDNlZGRfbm9kZSk7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jPTE1MDU9c3RhdGljIGludCBkZXJlZ19jcm9zc2luZ19kYXRhX2RpcmVjdF9tcihzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmMtMTUxNC1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jOjE1MTU6XFx0bXV0ZXhfbG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhX2RpcmVjdF9sb2NrKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jLTE1MTYtXFx0aWYgKCFkZF9jcm9zc2VkX21yLVxcdTAwM2VyZXZva2VkKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYy0xNTE5LVxcdHJldCA9IF9fbWx4NV9pYl9kZXJlZ19tcihcXHUwMDI2ZGRfY3Jvc3NlZF9tci1cXHUwMDNlaWJtcik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYzoxNTIwOlxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhX2RpcmVjdF9sb2NrKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jLTE1MjEtXFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3N0ZF90eXBlcy5jPTE4OT1zdGF0aWMgaW50IFVWRVJCU19IQU5ETEVSKE1MWDVfSUJfTUVUSE9EX0dFVF9EQVRBX0RJUkVDVF9TWVNGU19QQVRIKShcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3N0ZF90eXBlcy5jLTIwNC1cXHRkZXYgPSB0b19tZGV2KGMtXFx1MDAzZWlidWNvbnRleHQuZGV2aWNlKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9zdGRfdHlwZXMuYzoyMDU6XFx0bXV0ZXhfbG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhX2RpcmVjdF9sb2NrKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9zdGRfdHlwZXMuYzoyMDY6XFx0ZGF0YV9kaXJlY3RfZGV2ID0gZGV2LVxcdTAwM2VkYXRhX2RpcmVjdF9kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvc3RkX3R5cGVzLmMtMjA3LVxcdGlmICghZGF0YV9kaXJlY3RfZGV2KSB7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9zdGRfdHlwZXMuYy0yMjgtXFx0a2ZyZWUoZGV2X3BhdGgpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L3N0ZF90eXBlcy5jOjIyOTpcXHRtdXRleF91bmxvY2soXFx1MDAyNmRldi1cXHUwMDNlZGF0YV9kaXJlY3RfbG9jayk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvc3RkX3R5cGVzLmMtMjMwLVxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2dwaW9fa2V5c19wb2xsZWQuYz04Nz1zdGF0aWMgdm9pZCBncGlvX2tleXNfcG9sbGVkX3BvbGwoc3RydWN0IGlucHV0X2RldiAqaW5wdXQpXFxuLS1cXG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2dwaW9fa2V5c19wb2xsZWQuYy05Ni1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcGRhdGEtXFx1MDAzZW5idXR0b25zOyBpKyspIHtcXG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2dwaW9fa2V5c19wb2xsZWQuYzo5NzpcXHRcXHRzdHJ1Y3QgZ3Bpb19rZXlzX2J1dHRvbl9kYXRhICpiZGF0YSA9IFxcdTAwMjZiZGV2LVxcdTAwM2VkYXRhW2ldO1xcbmRyaXZlcnMvaW5wdXQva2V5Ym9hcmQvZ3Bpb19rZXlzX3BvbGxlZC5jLTk4LVxcbi0tXFxuZHJpdmVycy9pbnB1dC9rZXlib2FyZC9ncGlvX2tleXNfcG9sbGVkLmM9MjI2PXN0YXRpYyBpbnQgZ3Bpb19rZXlzX3BvbGxlZF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9pbnB1dC9rZXlib2FyZC9ncGlvX2tleXNfcG9sbGVkLmMtMjc4LVxcdFxcdGNvbnN0IHN0cnVjdCBncGlvX2tleXNfYnV0dG9uICpidXR0b24gPSBcXHUwMDI2cGRhdGEtXFx1MDAzZWJ1dHRvbnNbaV07XFxuZHJpdmVycy9pbnB1dC9rZXlib2FyZC9ncGlvX2tleXNfcG9sbGVkLmM6Mjc5OlxcdFxcdHN0cnVjdCBncGlvX2tleXNfYnV0dG9uX2RhdGEgKmJkYXRhID0gXFx1MDAyNmJkZXYtXFx1MDAzZWRhdGFbaV07XFxuZHJpdmVycy9pbnB1dC9rZXlib2FyZC9ncGlvX2tleXNfcG9sbGVkLmMtMjgwLVxcdFxcdHVuc2lnbmVkIGludCB0eXBlID0gYnV0dG9uLVxcdTAwM2V0eXBlID86IEVWX0tFWTtcXG4tLVxcbmRyaXZlcnMvaW5wdXQva2V5Ym9hcmQvZ3Bpb19rZXlzX3BvbGxlZC5jLTM2MS1cXHRcXHRncGlvX2tleXNfcG9sbGVkX2NoZWNrX3N0YXRlKGlucHV0LCBcXHUwMDI2cGRhdGEtXFx1MDAzZWJ1dHRvbnNbaV0sXFxuZHJpdmVycy9pbnB1dC9rZXlib2FyZC9ncGlvX2tleXNfcG9sbGVkLmM6MzYyOlxcdFxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNmJkZXYtXFx1MDAzZWRhdGFbaV0pO1xcbmRyaXZlcnMvaW5wdXQva2V5Ym9hcmQvZ3Bpb19rZXlzX3BvbGxlZC5jLTM2My1cXG4tLVxcbmRyaXZlcnMvaW5wdXQva2V5Ym9hcmQvaGlsX2tiZC5jPTEwMj1zdGF0aWMgdm9pZCBoaWxfZGV2X2hhbmRsZV9jb21tYW5kX3Jlc3BvbnNlKHN0cnVjdCBoaWxfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2hpbF9rYmQuYy0xMDgtXFx0aWR4ID0gZGV2LVxcdTAwM2VpZHg0IC8gNDtcXG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2hpbF9rYmQuYzoxMDk6XFx0cCA9IGRldi1cXHUwMDNlZGF0YVtpZHggLSAxXTtcXG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2hpbF9rYmQuYy0xMTAtXFxuLS1cXG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2hpbF9rYmQuYy0xMzgtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGlkeDsgaSsrKVxcbmRyaXZlcnMvaW5wdXQva2V5Ym9hcmQvaGlsX2tiZC5jOjEzOTpcXHRcXHRidWZbaV0gPSBkZXYtXFx1MDAzZWRhdGFbaV0gXFx1MDAyNiBISUxfUEtUX0RBVEFfTUFTSztcXG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2hpbF9rYmQuYy0xNDAtXFx0Zm9yICg7IGkgXFx1MDAzYyBISUxfUEFDS0VUX01BWF9MRU5HVEg7IGkrKylcXG4tLVxcbmRyaXZlcnMvaW5wdXQva2V5Ym9hcmQvaGlsX2tiZC5jPTI3ND1zdGF0aWMgaXJxcmV0dXJuX3QgaGlsX2Rldl9pbnRlcnJ1cHQoc3RydWN0IHNlcmlvICpzZXJpbyxcXG4tLVxcbmRyaXZlcnMvaW5wdXQva2V5Ym9hcmQvaGlsX2tiZC5jLTI5MC1cXHRpZiAoIShkZXYtXFx1MDAzZWlkeDQgJSA0KSlcXG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2hpbF9rYmQuYzoyOTE6XFx0XFx0ZGV2LVxcdTAwM2VkYXRhW2lkeF0gPSAwO1xcbmRyaXZlcnMvaW5wdXQva2V5Ym9hcmQvaGlsX2tiZC5jOjI5MjpcXHRwYWNrZXQgPSBkZXYtXFx1MDAzZWRhdGFbaWR4XTtcXG5kcml2ZXJzL2lucHV0L2tleWJvYXJkL2hpbF9rYmQuYy0yOTMtXFx0cGFja2V0IHw9ICgoaGlsX3BhY2tldClkYXRhKSBcXHUwMDNjXFx1MDAzYyAoKDMgLSAoZGV2LVxcdTAwM2VpZHg0ICUgNCkpICogOCk7XFxuZHJpdmVycy9pbnB1dC9rZXlib2FyZC9oaWxfa2JkLmM6Mjk0OlxcdGRldi1cXHUwMDNlZGF0YVtpZHhdID0gcGFja2V0O1xcbmRyaXZlcnMvaW5wdXQva2V5Ym9hcmQvaGlsX2tiZC5jLTI5NS1cXG4tLVxcbmRyaXZlcnMvaW5wdXQvbWlzYy9rZXlzcGFuX3JlbW90ZS5jPTE0MT1zdGF0aWMgaW50IGtleXNwYW5fbG9hZF90ZXN0ZXIoc3RydWN0IHVzYl9rZXlzcGFuKiBkZXYsIGludCBiaXRzX25lZWRlZClcXG5kcml2ZXJzL2lucHV0L21pc2Mva2V5c3Bhbl9yZW1vdGUuYy0xNDIte1xcbmRyaXZlcnMvaW5wdXQvbWlzYy9rZXlzcGFuX3JlbW90ZS5jOjE0MzpcXHRpZiAoZGV2LVxcdTAwM2VkYXRhLmJpdHNfbGVmdCBcXHUwMDNlPSBiaXRzX25lZWRlZClcXG5kcml2ZXJzL2lucHV0L21pc2Mva2V5c3Bhbl9yZW1vdGUuYy0xNDQtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL2lucHV0L21pc2Mva2V5c3Bhbl9yZW1vdGUuYy0xNDktXFx0ICovXFxuZHJpdmVycy9pbnB1dC9taXNjL2tleXNwYW5fcmVtb3RlLmM6MTUwOlxcdGlmIChkZXYtXFx1MDAzZWRhdGEucG9zIFxcdTAwM2U9IGRldi1cXHUwMDNlZGF0YS5sZW4pIHtcXG5kcml2ZXJzL2lucHV0L21pc2Mva2V5c3Bhbl9yZW1vdGUuYy0xNTEtXFx0XFx0ZGV2X2RiZyhcXHUwMDI2ZGV2LVxcdTAwM2VpbnRlcmZhY2UtXFx1MDAzZWRldixcXG5kcml2ZXJzL2lucHV0L21pc2Mva2V5c3Bhbl9yZW1vdGUuYy0xNTItXFx0XFx0XFx0XFxcIiVzIC0gRXJyb3IgcmFuIG91dCBvZiBkYXRhLiBwb3M6ICVkLCBsZW46ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvaW5wdXQvbWlzYy9rZXlzcGFuX3JlbW90ZS5jOjE1MzpcXHRcXHRcXHRfX2Z1bmNfXywgZGV2LVxcdTAwM2VkYXRhLnBvcywgZGV2LVxcdTAwM2VkYXRhLmxlbik7XFxuZHJpdmVycy9pbnB1dC9taXNjL2tleXNwYW5fcmVtb3RlLmMtMTU0LVxcdFxcdHJldHVybiAtMTtcXG4tLVxcbmRyaXZlcnMvaW5wdXQvbWlzYy9rZXlzcGFuX3JlbW90ZS5jLTE1Ny1cXHQvKiBMb2FkIGFzIG11Y2ggYXMgd2UgY2FuIGludG8gdGhlIHRlc3Rlci4gKi9cXG5kcml2ZXJzL2lucHV0L21pc2Mva2V5c3Bhbl9yZW1vdGUuYzoxNTg6XFx0d2hpbGUgKChkZXYtXFx1MDAzZWRhdGEuYml0c19sZWZ0ICsgNyBcXHUwMDNjIChzaXplb2YoZGV2LVxcdTAwM2VkYXRhLnRlc3RlcikgKiA4KSkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL2lucHV0L21pc2Mva2V5c3Bhbl9yZW1vdGUuYzoxNTk6XFx0ICAgICAgIChkZXYtXFx1MDAzZWRhdGEucG9zIFxcdTAwM2MgZGV2LVxcdTAwM2VkYXRhLmxlbikpIHtcXG5kcml2ZXJzL2lucHV0L21pc2Mva2V5c3Bhbl9yZW1vdGUuYzoxNjA6XFx0XFx0ZGV2LVxcdTAwM2VkYXRhLnRlc3RlciArPSAoZGV2LVxcdTAwM2VkYXRhLmJ1ZmZlcltkZXYtXFx1MDAzZWRhdGEucG9zKytdIFxcdTAwM2NcXHUwMDNjIGRldi1cXHUwMDNlZGF0YS5iaXRzX2xlZnQpO1xcbmRyaXZlcnMvaW5wdXQvbWlzYy9rZXlzcGFuX3JlbW90ZS5jOjE2MTpcXHRcXHRkZXYtXFx1MDAzZWRhdGEuYml0c19sZWZ0ICs9IDg7XFxuZHJpdmVycy9pbnB1dC9taXNjL2tleXNwYW5fcmVtb3RlLmMtMTYyLVxcdH1cXG4tLVxcbmRyaXZlcnMvaW5wdXQvbW91c2UvYXBwbGV0b3VjaC5jPTQ0ND1zdGF0aWMgaW50IGF0cF9zdGF0dXNfY2hlY2soc3RydWN0IHVyYiAqdXJiKVxcbi0tXFxuZHJpdmVycy9pbnB1dC9tb3VzZS9hcHBsZXRvdWNoLmMtNDgwLVxcdFxcdFxcdFxcXCIgKGZpcnN0IGJ5dGU6ICVkLCBsZW5ndGg6ICVkKS5cXFxcblxcXCIsXFxuZHJpdmVycy9pbnB1dC9tb3VzZS9hcHBsZXRvdWNoLmM6NDgxOlxcdFxcdFxcdGRldi1cXHUwMDNlZGF0YVswXSwgZGV2LVxcdTAwM2V1cmItXFx1MDAzZWFjdHVhbF9sZW5ndGgpO1xcbmRyaXZlcnMvaW5wdXQvbW91c2UvYXBwbGV0b3VjaC5jLTQ4Mi1cXHRcXHRyZXR1cm4gQVRQX1VSQl9TVEFUVVNfRVJST1I7XFxuLS1cXG5kcml2ZXJzL2lucHV0L21vdXNlL2FwcGxldG91Y2guYz01MTQ9c3RhdGljIHZvaWQgYXRwX2NvbXBsZXRlX2dleXNlcl8xXzIoc3RydWN0IHVyYiAqdXJiKVxcbi0tXFxuZHJpdmVycy9pbnB1dC9tb3VzZS9hcHBsZXRvdWNoLmMtNTM4LVxcdFxcdGZvciAoaSA9IDAsIGogPSAxOTsgaSBcXHUwMDNjIDIwOyBpICs9IDIsIGogKz0gMykge1xcbmRyaXZlcnMvaW5wdXQvbW91c2UvYXBwbGV0b3VjaC5jOjUzOTpcXHRcXHRcXHRkZXYtXFx1MDAzZXh5X2N1cltpXSA9IGRldi1cXHUwMDNlZGF0YVtqXTtcXG5kcml2ZXJzL2lucHV0L21vdXNlL2FwcGxldG91Y2guYzo1NDA6XFx0XFx0XFx0ZGV2LVxcdTAwM2V4eV9jdXJbaSArIDFdID0gZGV2LVxcdTAwM2VkYXRhW2ogKyAxXTtcXG5kcml2ZXJzL2lucHV0L21vdXNlL2FwcGxldG91Y2guYy01NDEtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9pbnB1dC9tb3VzZS9hcHBsZXRvdWNoLmMtNTQ0LVxcdFxcdGZvciAoaSA9IDAsIGogPSAxOyBpIFxcdTAwM2MgOTsgaSArPSAyLCBqICs9IDMpIHtcXG5kcml2ZXJzL2lucHV0L21vdXNlL2FwcGxldG91Y2guYzo1NDU6XFx0XFx0XFx0ZGV2LVxcdTAwM2V4eV9jdXJbQVRQX1hTRU5TT1JTICsgaV0gPSBkZXYtXFx1MDAzZWRhdGFbal07XFxuZHJpdmVycy9pbnB1dC9tb3VzZS9hcHBsZXRvdWNoLmM6NTQ2OlxcdFxcdFxcdGRldi1cXHUwMDNleHlfY3VyW0FUUF9YU0VOU09SUyArIGkgKyAxXSA9IGRldi1cXHUwMDNlZGF0YVtqICsgMV07XFxuZHJpdmVycy9pbnB1dC9tb3VzZS9hcHBsZXRvdWNoLmMtNTQ3LVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvaW5wdXQvbW91c2UvYXBwbGV0b3VjaC5jLTU1MC1cXHRcXHRcXHQvKiBYIHZhbHVlcyAqL1xcbmRyaXZlcnMvaW5wdXQvbW91c2UvYXBwbGV0b3VjaC5jOjU1MTpcXHRcXHRcXHRkZXYtXFx1MDAzZXh5X2N1cltpICsgIDBdID0gZGV2LVxcdTAwM2VkYXRhWzUgKiBpICsgIDJdO1xcbmRyaXZlcnMvaW5wdXQvbW91c2UvYXBwbGV0b3VjaC5jOjU1MjpcXHRcXHRcXHRkZXYtXFx1MDAzZXh5X2N1cltpICsgIDhdID0gZGV2LVxcdTAwM2VkYXRhWzUgKiBpICsgIDRdO1xcbmRyaXZlcnMvaW5wdXQvbW91c2UvYXBwbGV0b3VjaC5jOjU1MzpcXHRcXHRcXHRkZXYtXFx1MDAzZXh5X2N1cltpICsgMTZdID0gZGV2LVxcdTAwM2VkYXRhWzUgKiBpICsgNDJdO1xcbmRyaXZlcnMvaW5wdXQvbW91c2UvYXBwbGV0b3VjaC5jLTU1NC1cXHRcXHRcXHRpZiAoaSBcXHUwMDNjIDIpXFxuZHJpdmVycy9pbnB1dC9tb3VzZS9hcHBsZXRvdWNoLmM6NTU1OlxcdFxcdFxcdFxcdGRldi1cXHUwMDNleHlfY3VyW2kgKyAyNF0gPSBkZXYtXFx1MDAzZWRhdGFbNSAqIGkgKyA0NF07XFxuZHJpdmVycy9pbnB1dC9tb3VzZS9hcHBsZXRvdWNoLmMtNTU2LVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNzo1NToxNS40NjYzOTEzNTdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTkzMjA4MzI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS2VybmVsIFVTQiBOZXR3b3JrIERyaXZlciBDb2RlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBvdXRwdXQgYW5kIEknbSBzZWVpbmcgYSBsb3Qgb2YgZHJpdmVycyBhY2Nlc3NpbmcgYGRldi1cdTAwM2VkYXRhYC4gVGhhdCBpbW1lZGlhdGVseSByYWlzZXMgYSBmbGFnIGZvciBtZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgc3RydWN0IHVzYm5ldCAqZGV2YCByZXByZXNlbnRzIGluIHRoaXMgY29udGV4dC4gTGV0J3MgZGlnIGludG8gdGhhdCBzdHJ1Y3R1cmUgYW5kIHNlZSBleGFjdGx5IGhvdyBpdCdzIGRlZmluZWQgYW5kIGhvdyB0aGF0IGBkYXRhYCBmaWVsZCBpcyBiZWluZyB1c2VkLiBXaGVyZSBhcmUgdGhvc2UgZHJpdmVycyBhY2Nlc3NpbmcgYGRldi1cdTAwM2VkYXRhYD9cblxuVGltZSB0byBuYXJyb3cgbXkgc2NvcGUsIEknbGwgcmVzdHJpY3QgbXkgc2VhcmNoIHRvIHRoZSByZWxldmFudCBkaXJlY3RvcnkgdHJlZSwgbGlrZWx5IGBkcml2ZXJzL25ldC91c2IvYC4gVGhhdCdzIHdoZXJlIEkgd291bGQgZXhwZWN0IHRvIGZpbmQgdGhlIGNvcmUgVVNCIG5ldHdvcmsgZHJpdmVyIGxvZ2ljIGFuZCB0aGVyZWZvcmUgdGhlIG1vc3QgbWVhbmluZ2Z1bCBpbnN0YW5jZXMgb2YgYGRldi1cdTAwM2VkYXRhYC4gSSB3YW50IHRvIHNlZSB0aGUgdHlwaWNhbCB1c2FnZSBwYXR0ZXJucywgcG9zc2libGUgcmFjZSBjb25kaXRpb25zLCBhbmQgaG93IHRob3NlIGRyaXZlcnMgYXJlIGludGVyZmFjaW5nIHdpdGggdGhhdCBkYXRhIGZpZWxkLiBUaGlzIGlzIGdvaW5nIHRvIGJlIGludGVyZXN0aW5nOyBJIGFudGljaXBhdGUgZmluZGluZyBjb21tb24gdXNhZ2UgcHJhY3RpY2VzLCBhbmQgaG9wZWZ1bGx5IG5vIGNyaXRpY2FsIGVycm9ycy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIxNjgsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNzo1NToxOS4wNTk2MDI0NTFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM0MjI2OTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGV2LVxcdTAwM2VkYXRhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA2NDMgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jPTQ0MT12b2lkIGFzaXhfc2V0X211bHRpY2FzdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNDQzLVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KG5ldCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NDQ0OlxcdHN0cnVjdCBhc2l4X2RhdGEgKmRhdGEgPSAoc3RydWN0IGFzaXhfZGF0YSAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNDQ1LVxcdHUxNiByeF9jdGwgPSBBWF9ERUZBVUxUX1JYX0NUTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTQ1NC1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjQ1NTpcXHRcXHQvKiBXZSB1c2UgdGhlIDIwIGJ5dGUgZGV2LVxcdTAwM2VkYXRhXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNDU2LVxcdFxcdCAqIGZvciBvdXIgOCBieXRlIGZpbHRlciBidWZmZXJcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jPTczND1pbnQgYXNpeF9zZXRfbWFjX2FkZHJlc3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldCwgdm9pZCAqcClcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTczNi1cXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSBuZXRkZXZfcHJpdihuZXQpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjczNzpcXHRzdHJ1Y3QgYXNpeF9kYXRhICpkYXRhID0gKHN0cnVjdCBhc2l4X2RhdGEgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTczOC1cXHRzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIgPSBwO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNzQ2LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjc0NzpcXHQvKiBXZSB1c2UgdGhlIDIwIGJ5dGUgZGV2LVxcdTAwM2VkYXRhXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNzQ4LVxcdCAqIGZvciBvdXIgNiBieXRlIG1hYyBidWZmZXJcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xMTg9c3RhdGljIHZvaWQgYXg4ODE3Ml9zZXRfbXVsdGljYXN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXQpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTIwLVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KG5ldCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEyMTpcXHRzdHJ1Y3QgYXNpeF9kYXRhICpkYXRhID0gKHN0cnVjdCBhc2l4X2RhdGEgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMjItXFx0dTggcnhfY3RsID0gMHg4YztcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMzEtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTMyOlxcdFxcdC8qIFdlIHVzZSB0aGUgMjAgYnl0ZSBkZXYtXFx1MDAzZWRhdGFcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTMzLVxcdFxcdCAqIGZvciBvdXIgOCBieXRlIGZpbHRlciBidWZmZXJcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0zMzI9c3RhdGljIGludCBheDg4NzcyX3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldilcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMzMzLXtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MzM0OlxcdHN0cnVjdCBhc2l4X2RhdGEgKmRhdGEgPSAoc3RydWN0IGFzaXhfZGF0YSAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTMzNS1cXHRzdHJ1Y3QgYXNpeF9jb21tb25fcHJpdmF0ZSAqcHJpdiA9IGRldi1cXHUwMDNlZHJpdmVyX3ByaXY7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MzYyPXN0YXRpYyBpbnQgYXg4ODc3Ml9od19yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYsIGludCBpbl9wbSlcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMzYzLXtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MzY0OlxcdHN0cnVjdCBhc2l4X2RhdGEgKmRhdGEgPSAoc3RydWN0IGFzaXhfZGF0YSAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTM2NS1cXHRzdHJ1Y3QgYXNpeF9jb21tb25fcHJpdmF0ZSAqcHJpdiA9IGRldi1cXHUwMDNlZHJpdmVyX3ByaXY7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NDU2PXN0YXRpYyBpbnQgYXg4ODc3MmFfaHdfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2LCBpbnQgaW5fcG0pXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQ1Ny17XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjQ1ODpcXHRzdHJ1Y3QgYXNpeF9kYXRhICpkYXRhID0gKHN0cnVjdCBhc2l4X2RhdGEgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy00NTktXFx0c3RydWN0IGFzaXhfY29tbW9uX3ByaXZhdGUgKnByaXYgPSBkZXYtXFx1MDAzZWRyaXZlcl9wcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTk5MD1zdGF0aWMgaW50IG1hcnZlbGxfcGh5X2luaXQoc3RydWN0IHVzYm5ldCAqZGV2KVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05OTEte1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5OTI6XFx0c3RydWN0IGFzaXhfZGF0YSAqZGF0YSA9IChzdHJ1Y3QgYXNpeF9kYXRhICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTkzLVxcdHUxNiByZWc7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTAyMT1zdGF0aWMgaW50IHJ0bDgyMTFjbF9waHlfaW5pdChzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMjIte1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDIzOlxcdHN0cnVjdCBhc2l4X2RhdGEgKmRhdGEgPSAoc3RydWN0IGFzaXhfZGF0YSAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMjQtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTA2OD1zdGF0aWMgaW50IGF4ODgxNzhfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2KVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDY5LXtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTA3MDpcXHRzdHJ1Y3QgYXNpeF9kYXRhICpkYXRhID0gKHN0cnVjdCBhc2l4X2RhdGEgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDcxLVxcdGludCByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTE2ND1zdGF0aWMgaW50IGF4ODgxNzhfbGlua19yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTE2Ny1cXHRzdHJ1Y3QgZXRodG9vbF9jbWQgZWNtZCA9IHsgLmNtZCA9IEVUSFRPT0xfR1NFVCB9O1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMTY4OlxcdHN0cnVjdCBhc2l4X2RhdGEgKmRhdGEgPSAoc3RydWN0IGFzaXhfZGF0YSAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTExNjktXFx0dTMyIHNwZWVkO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM9MjYxPXN0YXRpYyBpbnQgYXg4ODE3MmFfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2KVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTI2Mi17XFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM6MjYzOlxcdHN0cnVjdCBhc2l4X2RhdGEgKmRhdGEgPSAoc3RydWN0IGFzaXhfZGF0YSAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtMjY0LVxcdHN0cnVjdCBheDg4MTcyYV9wcml2YXRlICpwcml2ID0gZGV2LVxcdTAwM2Vkcml2ZXJfcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYz04Njc9c3RhdGljIHZvaWQgYXg4ODE3OV9zZXRfbXVsdGljYXN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXQpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMtODcwLVxcdHN0cnVjdCBheDg4MTc5X2RhdGEgKmRhdGEgPSBkZXYtXFx1MDAzZWRyaXZlcl9wcml2O1xcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYzo4NzE6XFx0dTggKm1fZmlsdGVyID0gKCh1OCAqKWRldi1cXHUwMDNlZGF0YSk7XFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jLTg3Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy04ODItXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmM6ODgzOlxcdFxcdC8qIFdlIHVzZSBkZXYtXFx1MDAzZWRhdGEgZm9yIG91ciA4IGJ5dGUgZmlsdGVyIGJ1ZmZlclxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTc5XzE3OGEuYy04ODQtXFx0XFx0ICogdG8gYXZvaWQgYWxsb2NhdGluZyBtZW1vcnkgdGhhdCBpcyB0cmlja3kgdG8gZnJlZSBsYXRlclxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jPTgzPWludCB1c2JuZXRfZ2VuZXJpY19jZGNfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jLTk0LVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYzo5NTpcXHRpZiAoc2l6ZW9mKGRldi1cXHUwMDNlZGF0YSkgXFx1MDAzYyBzaXplb2YoKmluZm8pKVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYy05Ni1cXHRcXHRyZXR1cm4gLUVET007XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYz00Mz1zdGF0aWMgaW50IGNkY19tYmltX21hbmFnZV9wb3dlcihzdHJ1Y3QgdXNibmV0ICpkZXYsIGludCBvbilcXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy00NC17XFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM6NDU6XFx0c3RydWN0IGNkY19tYmltX3N0YXRlICppbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTQ2LVxcdGludCBydiA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYz03MT1zdGF0aWMgaW50IGNkY19tYmltX3J4X2FkZF92aWQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgX19iZTE2IHByb3RvLCB1MTYgdmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNzMtXFx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYzo3NDpcXHRzdHJ1Y3QgY2RjX21iaW1fc3RhdGUgKmluZm8gPSAodm9pZCAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNzUtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYz04NT1zdGF0aWMgaW50IGNkY19tYmltX3J4X2tpbGxfdmlkKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIF9fYmUxNiBwcm90bywgdTE2IHZpZClcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTg3LVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM6ODg6XFx0c3RydWN0IGNkY19tYmltX3N0YXRlICppbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTg5LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM9MTM5PXN0YXRpYyBpbnQgY2RjX21iaW1fYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtMTQ0LVxcdHU4IGRhdGFfYWx0c2V0dGluZyA9IDE7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM6MTQ1OlxcdHN0cnVjdCBjZGNfbWJpbV9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy0xNDYtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYz0xOTU9c3RhdGljIHZvaWQgY2RjX21iaW1fdW5iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtMTk2LXtcXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYzoxOTc6XFx0c3RydWN0IGNkY19tYmltX3N0YXRlICppbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTE5OC1cXHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IGluZm8tXFx1MDAzZWN0eDtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jPTIyMD1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmNkY19tYmltX3R4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgZ2ZwX3QgZmxhZ3MpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy0yMjItXFx0c3RydWN0IHNrX2J1ZmYgKnNrYl9vdXQ7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM6MjIzOlxcdHN0cnVjdCBjZGNfbWJpbV9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy0yMjQtXFx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSBpbmZvLVxcdTAwM2VjdHg7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYz00MTI9c3RhdGljIGludCBjZGNfbWJpbV9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2JfaW4pXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy00MTQtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYzo0MTU6XFx0c3RydWN0IGNkY19tYmltX3N0YXRlICppbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTQxNi1cXHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IGluZm8tXFx1MDAzZWN0eDtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jPTUwNj1zdGF0aWMgaW50IGNkY19tYmltX3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBtZXNzYWdlKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNTA5LVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM6NTEwOlxcdHN0cnVjdCBjZGNfbWJpbV9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy01MTEtXFx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSBpbmZvLVxcdTAwM2VjdHg7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYz01MzQ9c3RhdGljIGludCBjZGNfbWJpbV9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy01MzctXFx0c3RydWN0IHVzYm5ldCAqZGV2ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYzo1Mzg6XFx0c3RydWN0IGNkY19tYmltX3N0YXRlICppbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTUzOS1cXHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IGluZm8tXFx1MDAzZWN0eDtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MTA1PXN0YXRpYyB2b2lkIGNkY19uY21fZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTA5LVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzoxMTA6XFx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSAoc3RydWN0IGNkY19uY21fY3R4ICopZGV2LVxcdTAwM2VkYXRhWzBdO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTExLVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz0xNTA9c3RhdGljIHUzMiBjZGNfbmNtX2NoZWNrX3J4X21heChzdHJ1Y3QgdXNibmV0ICpkZXYsIHUzMiBuZXdfcngpXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xNTEte1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6MTUyOlxcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cXHUwMDNlZGF0YVswXTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE1My1cXHR1MzIgdmFsLCBtYXgsIG1pbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MTczPXN0YXRpYyB1MzIgY2RjX25jbV9jaGVja190eF9tYXgoc3RydWN0IHVzYm5ldCAqZGV2LCB1MzIgbmV3X3R4KVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTc0LXtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjE3NTpcXHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IChzdHJ1Y3QgY2RjX25jbV9jdHggKilkZXYtXFx1MDAzZWRhdGFbMF07XFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xNzYtXFx0dTMyIHZhbCwgbWF4LCBtaW47XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTIwMT1zdGF0aWMgc3NpemVfdCBtaW5fdHhfcGt0X3Nob3coc3RydWN0IGRldmljZSAqZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMjA0LVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoZCkpO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6MjA1OlxcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cXHUwMDNlZGF0YVswXTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTIwNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MjEwPXN0YXRpYyBzc2l6ZV90IHJ4X21heF9zaG93KHN0cnVjdCBkZXZpY2UgKmQsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTIxMy1cXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSBuZXRkZXZfcHJpdih0b19uZXRfZGV2KGQpKTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjIxNDpcXHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IChzdHJ1Y3QgY2RjX25jbV9jdHggKilkZXYtXFx1MDAzZWRhdGFbMF07XFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0yMTUtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTIxOT1zdGF0aWMgc3NpemVfdCB0eF9tYXhfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0yMjItXFx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzoyMjM6XFx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSAoc3RydWN0IGNkY19uY21fY3R4ICopZGV2LVxcdTAwM2VkYXRhWzBdO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMjI0LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz0yMjg9c3RhdGljIHNzaXplX3QgdHhfdGltZXJfdXNlY3Nfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0yMzEtXFx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzoyMzI6XFx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSAoc3RydWN0IGNkY19uY21fY3R4ICopZGV2LVxcdTAwM2VkYXRhWzBdO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMjMzLVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz0yMzc9c3RhdGljIHNzaXplX3QgbWluX3R4X3BrdF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0yNDEtXFx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzoyNDI6XFx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSAoc3RydWN0IGNkY19uY21fY3R4ICopZGV2LVxcdTAwM2VkYXRhWzBdO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMjQzLVxcdHVuc2lnbmVkIGxvbmcgdmFsO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz0yNTM9c3RhdGljIHNzaXplX3QgcnhfbWF4X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmQsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTI1Ny1cXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSBuZXRkZXZfcHJpdih0b19uZXRfZGV2KGQpKTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjI1ODpcXHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IChzdHJ1Y3QgY2RjX25jbV9jdHggKilkZXYtXFx1MDAzZWRhdGFbMF07XFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0yNTktXFx0dW5zaWduZWQgbG9uZyB2YWw7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTI2OD1zdGF0aWMgc3NpemVfdCB0eF9tYXhfc3RvcmUoc3RydWN0IGRldmljZSAqZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMjcyLVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoZCkpO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6MjczOlxcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cXHUwMDNlZGF0YVswXTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTI3NC1cXHR1bnNpZ25lZCBsb25nIHZhbDtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MjgzPXN0YXRpYyBzc2l6ZV90IHR4X3RpbWVyX3VzZWNzX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmQsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTI4Ny1cXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSBuZXRkZXZfcHJpdih0b19uZXRfZGV2KGQpKTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjI4ODpcXHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IChzdHJ1Y3QgY2RjX25jbV9jdHggKilkZXYtXFx1MDAzZWRhdGFbMF07XFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0yODktXFx0c3NpemVfdCByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTMxMT1zdGF0aWMgc3NpemVfdCBuZHBfdG9fZW5kX3Nob3coc3RydWN0IGRldmljZSAqZCwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMzEzLVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoZCkpO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6MzE0OlxcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cXHUwMDNlZGF0YVswXTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTMxNS1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MzE5PXN0YXRpYyBzc2l6ZV90IG5kcF90b19lbmRfc3RvcmUoc3RydWN0IGRldmljZSAqZCwgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBsZW4pXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTMyMS1cXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSBuZXRkZXZfcHJpdih0b19uZXRfZGV2KGQpKTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjMyMjpcXHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IChzdHJ1Y3QgY2RjX25jbV9jdHggKilkZXYtXFx1MDAzZWRhdGFbMF07XFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0zMjMtXFx0Ym9vbCBlbmFibGU7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTM2MT1zdGF0aWMgc3NpemVfdCBjZGNfbmNtX3Nob3dfIyNuYW1lKHN0cnVjdCBkZXZpY2UgKmQsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMzYzLVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoZCkpOyBcXFxcXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzozNjQ6XFx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSAoc3RydWN0IGNkY19uY21fY3R4ICopZGV2LVxcdTAwM2VkYXRhWzBdOyBcXFxcXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0zNjUtXFx0cmV0dXJuIHNwcmludGYoYnVmLCBmb3JtYXQgXFxcIlxcXFxuXFxcIiwgdG9jcHUoY3R4LVxcdTAwM2VuY21fcGFybS5uYW1lKSk7XFx0XFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz00MDU9c3RhdGljIHZvaWQgY2RjX25jbV91cGRhdGVfcnh0eF9tYXgoc3RydWN0IHVzYm5ldCAqZGV2LCB1MzIgbmV3X3J4LCB1MzIgbmV3X3R4KVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtNDA2LXtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjQwNzpcXHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IChzdHJ1Y3QgY2RjX25jbV9jdHggKilkZXYtXFx1MDAzZWRhdGFbMF07XFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy00MDgtXFx0dTggaWZhY2Vfbm8gPSBjdHgtXFx1MDAzZWNvbnRyb2wtXFx1MDAzZWN1cl9hbHRzZXR0aW5nLVxcdTAwM2VkZXNjLmJJbnRlcmZhY2VOdW1iZXI7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTQ3Nz1zdGF0aWMgdTggY2RjX25jbV9mbGFncyhzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy00Nzgte1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6NDc5OlxcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cXHUwMDNlZGF0YVswXTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTQ4MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9NTAyPXN0YXRpYyB1MzIgY2RjX25jbV9tYXhfZGdyYW1fc2l6ZShzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy01MDMte1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6NTA0OlxcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cXHUwMDNlZGF0YVswXTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTUwNS1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9NTE2PXN0YXRpYyBpbnQgY2RjX25jbV9pbml0KHN0cnVjdCB1c2JuZXQgKmRldilcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTUxNy17XFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzo1MTg6XFx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSAoc3RydWN0IGNkY19uY21fY3R4ICopZGV2LVxcdTAwM2VkYXRhWzBdO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtNTE5LVxcdHU4IGlmYWNlX25vID0gY3R4LVxcdTAwM2Vjb250cm9sLVxcdTAwM2VjdXJfYWx0c2V0dGluZy1cXHUwMDNlZGVzYy5iSW50ZXJmYWNlTnVtYmVyO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz02MDk9c3RhdGljIHZvaWQgY2RjX25jbV9zZXRfZGdyYW1fc2l6ZShzdHJ1Y3QgdXNibmV0ICpkZXYsIGludCBuZXdfc2l6ZSlcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTYxMC17XFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzo2MTE6XFx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSAoc3RydWN0IGNkY19uY21fY3R4ICopZGV2LVxcdTAwM2VkYXRhWzBdO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtNjEyLVxcdHU4IGlmYWNlX25vID0gY3R4LVxcdTAwM2Vjb250cm9sLVxcdTAwM2VjdXJfYWx0c2V0dGluZy1cXHUwMDNlZGVzYy5iSW50ZXJmYWNlTnVtYmVyO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz02NTc9c3RhdGljIHZvaWQgY2RjX25jbV9maXhfbW9kdWx1cyhzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy02NTgte1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM6NjU5OlxcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cXHUwMDNlZGF0YVswXTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTY2MC1cXHR1MzIgdmFsO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz03MDE9c3RhdGljIGludCBjZGNfbmNtX3NldHVwKHN0cnVjdCB1c2JuZXQgKmRldilcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTcwMi17XFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzo3MDM6XFx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSAoc3RydWN0IGNkY19uY21fY3R4ICopZGV2LVxcdTAwM2VkYXRhWzBdO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtNzA0LVxcdHUzMiBkZWZfcngsIGRlZl90eDtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9ODIwPWludCBjZGNfbmNtX2JpbmRfY29tbW9uKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHU4IGRhdGFfYWx0c2V0dGluZywgaW50IGRydmZsYWdzKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy04NDEtXFx0Lyogc3RvcmUgY3R4IHBvaW50ZXIgaW4gZGV2aWNlIGRhdGEgZmllbGQgKi9cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjg0MjpcXHRkZXYtXFx1MDAzZWRhdGFbMF0gPSAodW5zaWduZWQgbG9uZyljdHg7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy04NDMtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTk5MC1lcnJvcjpcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjk5MTpcXHRjZGNfbmNtX2ZyZWUoKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cXHUwMDNlZGF0YVswXSk7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzo5OTI6XFx0ZGV2LVxcdTAwM2VkYXRhWzBdID0gMDtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTk5My1cXHRkZXZfaW5mbyhcXHUwMDI2aW50Zi1cXHUwMDNlZGV2LCBcXFwiYmluZCgpIGZhaWx1cmVcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz05OTg9dm9pZCBjZGNfbmNtX3VuYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtOTk5LXtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjEwMDA6XFx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSAoc3RydWN0IGNkY19uY21fY3R4ICopZGV2LVxcdTAwM2VkYXRhWzBdO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTAwMS1cXHRzdHJ1Y3QgdXNiX2RyaXZlciAqZHJpdmVyID0gZHJpdmVyX29mKGludGYpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz0xMjA0PWNkY19uY21fZmlsbF90eF9mcmFtZShzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsIF9fbGUzMiBzaWduKVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTIwNS17XFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzoxMjA2OlxcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVjdCBjZGNfbmNtX2N0eCAqKWRldi1cXHUwMDNlZGF0YVswXTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTEyMDctXFx0dW5pb24ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz0xNTIzPWNkY19uY21fdHhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBnZnBfdCBmbGFncylcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTUyNS1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiX291dDtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjE1MjY6XFx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSAoc3RydWN0IGNkY19uY21fY3R4ICopZGV2LVxcdTAwM2VkYXRhWzBdO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTUyNy1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MTcyNz1pbnQgY2RjX25jbV9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2JfaW4pXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE3MjktXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjE3MzA6XFx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSAoc3RydWN0IGNkY19uY21fY3R4ICopZGV2LVxcdTAwM2VkYXRhWzBdO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTczMS1cXHR1bnNpZ25lZCBpbnQgbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYz0xOTA3PXN0YXRpYyB2b2lkIGNkY19uY21fdXBkYXRlX2ZpbHRlcihzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xOTA4LXtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjE5MDk6XFx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSAoc3RydWN0IGNkY19uY21fY3R4ICopZGV2LVxcdTAwM2VkYXRhWzBdO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTkxMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYz0yNzQ9c3RhdGljIHZvaWQgZG05NjAxX3NldF9tdWx0aWNhc3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldClcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYy0yNzYtXFx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYobmV0KTtcXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmM6Mjc3OlxcdC8qIFdlIHVzZSB0aGUgMjAgYnl0ZSBkZXYtXFx1MDAzZWRhdGEgZm9yIG91ciA4IGJ5dGUgZmlsdGVyIGJ1ZmZlclxcbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYy0yNzgtXFx0ICogdG8gYXZvaWQgYWxsb2NhdGluZyBtZW1vcnkgdGhhdCBpcyB0cmlja3kgdG8gZnJlZSBsYXRlciAqL1xcbmRyaXZlcnMvbmV0L3VzYi9kbTk2MDEuYzoyNzk6XFx0dTggKmhhc2hlcyA9ICh1OCAqKSBcXHUwMDI2IGRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvZG05NjAxLmMtMjgwLVxcdHU4IHJ4X2N0bCA9IDB4MzE7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvaHVhd2VpX2NkY19uY20uYz0zNz1zdGF0aWMgaW50IGh1YXdlaV9jZGNfbmNtX21hbmFnZV9wb3dlcihzdHJ1Y3QgdXNibmV0ICp1c2JuZXRfZGV2LCBpbnQgb24pXFxuZHJpdmVycy9uZXQvdXNiL2h1YXdlaV9jZGNfbmNtLmMtMzgte1xcbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jOjM5OlxcdHN0cnVjdCBodWF3ZWlfY2RjX25jbV9zdGF0ZSAqZHJ2c3RhdGUgPSAodm9pZCAqKVxcdTAwMjZ1c2JuZXRfZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jLTQwLVxcdGludCBydjtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jPTY1PXN0YXRpYyBpbnQgaHVhd2VpX2NkY19uY21fYmluZChzdHJ1Y3QgdXNibmV0ICp1c2JuZXRfZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2h1YXdlaV9jZGNfbmNtLmMtNzAtXFx0aW50IHJldDtcXG5kcml2ZXJzL25ldC91c2IvaHVhd2VpX2NkY19uY20uYzo3MTpcXHRzdHJ1Y3QgaHVhd2VpX2NkY19uY21fc3RhdGUgKmRydnN0YXRlID0gKHZvaWQgKilcXHUwMDI2dXNibmV0X2Rldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvaHVhd2VpX2NkY19uY20uYy03Mi1cXHRpbnQgZHJ2ZmxhZ3MgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2h1YXdlaV9jZGNfbmNtLmM9MTE2PXN0YXRpYyB2b2lkIGh1YXdlaV9jZGNfbmNtX3VuYmluZChzdHJ1Y3QgdXNibmV0ICp1c2JuZXRfZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2h1YXdlaV9jZGNfbmNtLmMtMTE4LXtcXG5kcml2ZXJzL25ldC91c2IvaHVhd2VpX2NkY19uY20uYzoxMTk6XFx0c3RydWN0IGh1YXdlaV9jZGNfbmNtX3N0YXRlICpkcnZzdGF0ZSA9ICh2b2lkICopXFx1MDAyNnVzYm5ldF9kZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL2h1YXdlaV9jZGNfbmNtLmMtMTIwLVxcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gZHJ2c3RhdGUtXFx1MDAzZWN0eDtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jPTEyOT1zdGF0aWMgaW50IGh1YXdlaV9jZGNfbmNtX3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvaHVhd2VpX2NkY19uY20uYy0xMzMtXFx0c3RydWN0IHVzYm5ldCAqdXNibmV0X2RldiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7XFxuZHJpdmVycy9uZXQvdXNiL2h1YXdlaV9jZGNfbmNtLmM6MTM0OlxcdHN0cnVjdCBodWF3ZWlfY2RjX25jbV9zdGF0ZSAqZHJ2c3RhdGUgPSAodm9pZCAqKVxcdTAwMjZ1c2JuZXRfZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jLTEzNS1cXHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IGRydnN0YXRlLVxcdTAwM2VjdHg7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvaHVhd2VpX2NkY19uY20uYz0xNTc9c3RhdGljIGludCBodWF3ZWlfY2RjX25jbV9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvaHVhd2VpX2NkY19uY20uYy0xNjAtXFx0c3RydWN0IHVzYm5ldCAqdXNibmV0X2RldiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7XFxuZHJpdmVycy9uZXQvdXNiL2h1YXdlaV9jZGNfbmNtLmM6MTYxOlxcdHN0cnVjdCBodWF3ZWlfY2RjX25jbV9zdGF0ZSAqZHJ2c3RhdGUgPSAodm9pZCAqKVxcdTAwMjZ1c2JuZXRfZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jLTE2Mi1cXHRib29sIGNhbGxzdWI7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTEzODM9c3RhdGljIGludCBsYW43OHh4X2RhdGFwb3J0X3dyaXRlKHN0cnVjdCBsYW43OHh4X25ldCAqZGV2LCB1MzIgcmFtX3NlbGVjdCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTM4NS17XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoxMzg2OlxcdHN0cnVjdCBsYW43OHh4X3ByaXYgKnBkYXRhID0gKHN0cnVjdCBsYW43OHh4X3ByaXYgKikoZGV2LVxcdTAwM2VkYXRhWzBdKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTEzODctXFx0aW50IGksIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MTQ1NT1zdGF0aWMgaW50IGxhbjc4eHhfd3JpdGVfbWNoYXNoX3RhYmxlKHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTQ1Ni17XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoxNDU3OlxcdHN0cnVjdCBsYW43OHh4X3ByaXYgKnBkYXRhID0gKHN0cnVjdCBsYW43OHh4X3ByaXYgKikoZGV2LVxcdTAwM2VkYXRhWzBdKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE0NTgtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTE1MDI9c3RhdGljIHZvaWQgbGFuNzh4eF9zZXRfbXVsdGljYXN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE1MDQtXFx0c3RydWN0IGxhbjc4eHhfbmV0ICpkZXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MTUwNTpcXHRzdHJ1Y3QgbGFuNzh4eF9wcml2ICpwZGF0YSA9IChzdHJ1Y3QgbGFuNzh4eF9wcml2ICopKGRldi1cXHUwMDNlZGF0YVswXSk7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0xNTA2LVxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTE3NDY9c3RhdGljIHZvaWQgbGFuNzh4eF9nZXRfd29sKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTE3NTEtXFx0dTMyIGJ1ZjtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjE3NTI6XFx0c3RydWN0IGxhbjc4eHhfcHJpdiAqcGRhdGEgPSAoc3RydWN0IGxhbjc4eHhfcHJpdiAqKShkZXYtXFx1MDAzZWRhdGFbMF0pO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTc1My1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MTc3NT1zdGF0aWMgaW50IGxhbjc4eHhfc2V0X3dvbChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0xNzc4LVxcdHN0cnVjdCBsYW43OHh4X25ldCAqZGV2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjE3Nzk6XFx0c3RydWN0IGxhbjc4eHhfcHJpdiAqcGRhdGEgPSAoc3RydWN0IGxhbjc4eHhfcHJpdiAqKShkZXYtXFx1MDAzZWRhdGFbMF0pO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMTc4MC1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0zMDU1PXN0YXRpYyBpbnQgbGFuNzh4eF9zZXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMzA1OC1cXHRzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldiA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzozMDU5OlxcdHN0cnVjdCBsYW43OHh4X3ByaXYgKnBkYXRhID0gKHN0cnVjdCBsYW43OHh4X3ByaXYgKikoZGV2LVxcdTAwM2VkYXRhWzBdKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTMwNjAtXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MzA4Nz1zdGF0aWMgaW50IGxhbjc4eHhfd3JpdGVfdmxhbl90YWJsZShzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldilcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTMwODgte1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MzA4OTpcXHRzdHJ1Y3QgbGFuNzh4eF9wcml2ICpwZGF0YSA9IChzdHJ1Y3QgbGFuNzh4eF9wcml2ICopKGRldi1cXHUwMDNlZGF0YVswXSk7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0zMDkwLVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0zMTAzPXN0YXRpYyBpbnQgbGFuNzh4eF92bGFuX3J4X2FkZF92aWQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMzEwNi1cXHRzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldiA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzozMTA3OlxcdHN0cnVjdCBsYW43OHh4X3ByaXYgKnBkYXRhID0gKHN0cnVjdCBsYW43OHh4X3ByaXYgKikoZGV2LVxcdTAwM2VkYXRhWzBdKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTMxMDgtXFx0dTE2IHZpZF9iaXRfaW5kZXg7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTMxMjI9c3RhdGljIGludCBsYW43OHh4X3ZsYW5fcnhfa2lsbF92aWQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMzEyNS1cXHRzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldiA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzozMTI2OlxcdHN0cnVjdCBsYW43OHh4X3ByaXYgKnBkYXRhID0gKHN0cnVjdCBsYW43OHh4X3ByaXYgKikoZGV2LVxcdTAwM2VkYXRhWzBdKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTMxMjctXFx0dTE2IHZpZF9iaXRfaW5kZXg7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTMyNDg9c3RhdGljIGludCBsYW43OHh4X3Jlc2V0KHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMzI0OS17XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzozMjUwOlxcdHN0cnVjdCBsYW43OHh4X3ByaXYgKnBkYXRhID0gKHN0cnVjdCBsYW43OHh4X3ByaXYgKikoZGV2LVxcdTAwM2VkYXRhWzBdKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTMyNTEtXFx0dW5zaWduZWQgbG9uZyB0aW1lb3V0O1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0zNzUyPXN0YXRpYyBpbnQgbGFuNzh4eF9iaW5kKHN0cnVjdCBsYW43OHh4X25ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMzc1Ny1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjM3NTg6XFx0ZGV2LVxcdTAwM2VkYXRhWzBdID0gKHVuc2lnbmVkIGxvbmcpIGt6YWxsb2Nfb2JqKCpwZGF0YSk7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0zNzU5LVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6Mzc2MDpcXHRwZGF0YSA9IChzdHJ1Y3QgbGFuNzh4eF9wcml2ICopKGRldi1cXHUwMDNlZGF0YVswXSk7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0zNzYxLVxcdGlmICghcGRhdGEpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MzgzND1zdGF0aWMgdm9pZCBsYW43OHh4X3VuYmluZChzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0zODM1LXtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjM4MzY6XFx0c3RydWN0IGxhbjc4eHhfcHJpdiAqcGRhdGEgPSAoc3RydWN0IGxhbjc4eHhfcHJpdiAqKShkZXYtXFx1MDAzZWRhdGFbMF0pO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMzgzNy1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMzg0Ny1cXHRcXHRwZGF0YSA9IE5VTEw7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzozODQ4OlxcdFxcdGRldi1cXHUwMDNlZGF0YVswXSA9IDA7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0zODQ5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9NTEwNT1zdGF0aWMgaW50IGxhbjc4eHhfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IG1lc3NhZ2UpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTUxNjYtXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzo1MTY3OlxcdFxcdFxcdHBkYXRhID0gKHN0cnVjdCBsYW43OHh4X3ByaXYgKikoZGV2LVxcdTAwM2VkYXRhWzBdKTtcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTUxNjgtXFx0XFx0XFx0bmV0aWZfY2Fycmllcl9vZmYoZGV2LVxcdTAwM2VuZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL21jczc4MzAuYz0zMjg9c3RhdGljIGlubGluZSBzdHJ1Y3QgbWNzNzgzMF9kYXRhICptY3M3ODMwX2dldF9kYXRhKHN0cnVjdCB1c2JuZXQgKmRldilcXG5kcml2ZXJzL25ldC91c2IvbWNzNzgzMC5jLTMyOS17XFxuZHJpdmVycy9uZXQvdXNiL21jczc4MzAuYzozMzA6XFx0cmV0dXJuIChzdHJ1Y3QgbWNzNzgzMF9kYXRhICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvbWNzNzgzMC5jLTMzMS19XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbWNzNzgzMC5jPTM0OT1zdGF0aWMgdm9pZCBtY3M3ODMwX2RhdGFfc2V0X211bHRpY2FzdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL21jczc4MzAuYy0zNjgtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC91c2IvbWNzNzgzMC5jOjM2OTpcXHRcXHQvKiBXZSB1c2UgdGhlIDIwIGJ5dGUgZGV2LVxcdTAwM2VkYXRhXFxuZHJpdmVycy9uZXQvdXNiL21jczc4MzAuYy0zNzAtXFx0XFx0ICogZm9yIG91ciA4IGJ5dGUgZmlsdGVyIGJ1ZmZlclxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9MzA2PXN0YXRpYyB2b2lkIHFtaV93d2FuX25ldGRldl9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzA4LVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KG5ldCk7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MzA5OlxcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0zMTAtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz0zMzI9c3RhdGljIHNzaXplX3QgcmF3X2lwX3Nob3coc3RydWN0IGRldmljZSAqZCwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTMzNC1cXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSBuZXRkZXZfcHJpdih0b19uZXRfZGV2KGQpKTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzozMzU6XFx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTMzNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTM0MD1zdGF0aWMgc3NpemVfdCByYXdfaXBfc3RvcmUoc3RydWN0IGRldmljZSAqZCwgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBsZW4pXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0zNDItXFx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MzQzOlxcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0zNDQtXFx0Ym9vbCBlbmFibGU7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz00MDk9c3RhdGljIHNzaXplX3QgYWRkX211eF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkLCAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTQxMS1cXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSBuZXRkZXZfcHJpdih0b19uZXRfZGV2KGQpKTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo0MTI6XFx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTQxMy1cXHR1OCBtdXhfaWQ7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz00NDc9c3RhdGljIHNzaXplX3QgZGVsX211eF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkLCAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTQ0OS1cXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSBuZXRkZXZfcHJpdih0b19uZXRfZGV2KGQpKTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo0NTA6XFx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTQ1MS1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGVsX2RldjtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTQ3Nz1zdGF0aWMgc3NpemVfdCBwYXNzX3Rocm91Z2hfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNDgyLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjQ4MzpcXHRpbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTQ4NC1cXHRyZXR1cm4gc3ByaW50ZihidWYsIFxcXCIlY1xcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTQ4OD1zdGF0aWMgc3NpemVfdCBwYXNzX3Rocm91Z2hfc3RvcmUoc3RydWN0IGRldmljZSAqZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTQ5OC1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo0OTk6XFx0aW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy01MDAtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz01NjM9c3RhdGljIGludCBxbWlfd3dhbl9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNTY0LXtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo1NjU6XFx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTU2Ni1cXHRib29sIHJhd2lwID0gaW5mby1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBRTUlfV1dBTl9GTEFHX1JBV0lQO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9NjU0PXN0YXRpYyBpbnQgcW1pX3d3YW5fbWFuYWdlX3Bvd2VyKHN0cnVjdCB1c2JuZXQgKmRldiwgaW50IG9uKVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTY1NS17XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NjU2OlxcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy02NTctXFx0aW50IHJ2O1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9Njg2PXN0YXRpYyBpbnQgcW1pX3d3YW5fcmVnaXN0ZXJfc3ViZHJpdmVyKHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTY4OS1cXHRzdHJ1Y3QgdXNiX2RyaXZlciAqc3ViZHJpdmVyID0gTlVMTDtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo2OTA6XFx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTY5MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTc0ND1zdGF0aWMgaW50IHFtaV93d2FuX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTc1Mi1cXHRzdHJ1Y3QgdXNiX2RyaXZlciAqZHJpdmVyID0gZHJpdmVyX29mKGludGYpO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjc1MzpcXHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNzU0LVxcdHN0cnVjdCB1c2JfY2RjX3BhcnNlZF9oZWFkZXIgaGRyO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9ODQ5PXN0YXRpYyB2b2lkIHFtaV93d2FuX3VuYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTg1MC17XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6ODUxOlxcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy04NTItXFx0c3RydWN0IHVzYl9kcml2ZXIgKmRyaXZlciA9IGRyaXZlcl9vZihpbnRmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTg4Nz1zdGF0aWMgaW50IHFtaV93d2FuX3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBtZXNzYWdlKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtODg5LVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6ODkwOlxcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy04OTEtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTkxMD1zdGF0aWMgaW50IHFtaV93d2FuX3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTkxMi1cXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpO1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNzo1NToxOS4xMjMwMzA0OTdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTUwODcyOTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIFViaXF1aXRvdXMgYGRldi1cdTAwM2VkYXRhYCBVc2FnZSoqXG5cbk9rYXksIGhvbGQgb24gYSBtaW51dGUuIEl0J3MgaGl0dGluZyBtZSBqdXN0IGhvdyBleHRlbnNpdmVseSBgZGV2LVx1MDAzZWRhdGFgIGlzIGxldmVyYWdlZCBhY3Jvc3MgdGhlc2UgVVNCIG5ldHdvcmsgZHJpdmVycyEgSSdtIHNlZWluZyBpdCBldmVyeXdoZXJlLiBJJ3ZlIGJlZW4gcmV2aWV3aW5nIHRoZSBjb2RlLCBhbmQgaXQncyBiZWluZyB0eXBlLXB1bm5lZCB0byBoZWxsIGFuZCBiYWNrLiBgYXNpeF9jb21tb24uY2AsIGBheDg4MTc5XzE3OGEuY2AsIGBjZGNfbWJpbS5jYCwgYGNkY19uY20uY2AsIGBkbTk2MDEuY2AsIGBodWF3ZWlfY2RjX25jbS5jYCwgYGxhbjc4eHguY2AsIGBtY3M3ODMwLmNgLCBgcW1pX3d3YW4uY2Ag4oCTIHRoZXkncmUgYWxsIGNhc3RpbmcgYGRldi1cdTAwM2VkYXRhYCB0byB0aGVpciBvd24gY3VzdG9tIHN0cnVjdHMhXG5cbkFuZCBpdCdzIG5vdCBqdXN0IHRoZSBjdXJyZW50IGNyb3Agb2YgZHJpdmVycywgZWl0aGVyLiBMb29raW5nIGJhY2ssIGBjZGNfZXRoZXIuY2AgYW5kIGBybmRpc19ob3N0LmNgICp1c2VkKiB0byB1c2UgdGhpcyBzYW1lIHRlY2huaXF1ZSEgVGhleSd2ZSBzaW5jZSByZWZhY3RvcmVkIHRvIHVzZSBgZGV2LVx1MDAzZWNkY2AgaW5zdGVhZCBvZiBkaXJlY3RseSBhY2Nlc3NpbmcgYGRldi1cdTAwM2VkYXRhYC4gVGhhdCBzaGlmdCBpbW1lZGlhdGVseSBzcGFya3MgYSBxdWVzdGlvbi4uLlxuXG5Db3VsZCBhIGRyaXZlciBiZSBwb3RlbnRpYWxseSB1c2luZyAqYm90aCogYGNkY19ldGhlcmAgZnVuY3Rpb25zIEFORCBpdHMgb3duIGBkZXYtXHUwMDNlZGF0YWA/IElzIHRoYXQgZXZlbiBhIHZhbGlkIHBhdHRlcm4sIG9yIGFtIEkgbWlzc2luZyBzb21ldGhpbmc/IEkgbmVlZCB0byBjbGFyaWZ5IHRoYXQuIExldCdzIGRpZyBpbnRvIGBjZGNfbWJpbS5jYCBzcGVjaWZpY2FsbHkuIERvZXMgdGhlIGBjZGNfbWJpbV9zdGF0ZWAgc3RydWN0IGl0IHVzZXMgY29udGFpbiBhIGBjZGNfc3RhdGVgIG1lbWJlcj8gSWYgc28sIHdlIG1heSBoYXZlIHRoZSBhbnN3ZXIgdG8gb3VyIHF1ZXN0aW9uLiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlc2Ugc3RydWN0dXJlcyB0byBmdWxseSBncmFzcCB0aGUgZGVzaWduLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDg5NCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNzo1NToyNS42NzM5MDU1NzZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMDY3NTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNkY19tYmltX3N0YXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtMjgtLyogZHJpdmVyIHNwZWNpZmljIGRhdGEgLSBtdXN0IG1hdGNoIGNkY19uY20gdXNhZ2UgKi9cXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYzoyOTpzdHJ1Y3QgY2RjX21iaW1fc3RhdGUge1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTMwLVxcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4O1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtMzYtXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM6Mzc6LyogZmxhZ3MgZm9yIHRoZSBjZGNfbWJpbV9zdGF0ZS5mbGFncyBmaWVsZCAqL1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTM4LWVudW0gY2RjX21iaW1fZmxhZ3Mge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM9NDM9c3RhdGljIGludCBjZGNfbWJpbV9tYW5hZ2VfcG93ZXIoc3RydWN0IHVzYm5ldCAqZGV2LCBpbnQgb24pXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNDQte1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jOjQ1OlxcdHN0cnVjdCBjZGNfbWJpbV9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy00Ni1cXHRpbnQgcnYgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM9NzE9c3RhdGljIGludCBjZGNfbWJpbV9yeF9hZGRfdmlkKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIF9fYmUxNiBwcm90bywgdTE2IHZpZClcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTczLVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM6NzQ6XFx0c3RydWN0IGNkY19tYmltX3N0YXRlICppbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTc1LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM9ODU9c3RhdGljIGludCBjZGNfbWJpbV9yeF9raWxsX3ZpZChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBfX2JlMTYgcHJvdG8sIHUxNiB2aWQpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy04Ny1cXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jOjg4OlxcdHN0cnVjdCBjZGNfbWJpbV9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy04OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jPTEzOT1zdGF0aWMgaW50IGNkY19tYmltX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTE0NC1cXHR1OCBkYXRhX2FsdHNldHRpbmcgPSAxO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jOjE0NTpcXHRzdHJ1Y3QgY2RjX21iaW1fc3RhdGUgKmluZm8gPSAodm9pZCAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtMTQ2LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM9MTk1PXN0YXRpYyB2b2lkIGNkY19tYmltX3VuYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTE5Ni17XFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM6MTk3OlxcdHN0cnVjdCBjZGNfbWJpbV9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy0xOTgtXFx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSBpbmZvLVxcdTAwM2VjdHg7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYz0yMjA9c3RhdGljIHN0cnVjdCBza19idWZmICpjZGNfbWJpbV90eF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsIGdmcF90IGZsYWdzKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtMjIyLVxcdHN0cnVjdCBza19idWZmICpza2Jfb3V0O1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jOjIyMzpcXHRzdHJ1Y3QgY2RjX21iaW1fc3RhdGUgKmluZm8gPSAodm9pZCAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtMjI0LVxcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gaW5mby1cXHUwMDNlY3R4O1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM9NDEyPXN0YXRpYyBpbnQgY2RjX21iaW1fcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNDE0LVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM6NDE1OlxcdHN0cnVjdCBjZGNfbWJpbV9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy00MTYtXFx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSBpbmZvLVxcdTAwM2VjdHg7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYz01MDY9c3RhdGljIGludCBjZGNfbWJpbV9zdXNwZW5kKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBwbV9tZXNzYWdlX3QgbWVzc2FnZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jLTUwOS1cXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpO1xcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbWJpbS5jOjUxMDpcXHRzdHJ1Y3QgY2RjX21iaW1fc3RhdGUgKmluZm8gPSAodm9pZCAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNTExLVxcdHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gaW5mby1cXHUwMDNlY3R4O1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM9NTM0PXN0YXRpYyBpbnQgY2RjX21iaW1fcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMtNTM3LVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmM6NTM4OlxcdHN0cnVjdCBjZGNfbWJpbV9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYy01MzktXFx0c3RydWN0IGNkY19uY21fY3R4ICpjdHggPSBpbmZvLVxcdTAwM2VjdHg7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE3OjU1OjI1LjczNDk3ODg4MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTgyNTI4NzAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTUJJTSBEcml2ZXIgU3RydWN0dXJlKipcblxuT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4gSSdtIGZvY3VzaW5nIG9uIHRoZSBzdHJ1Y3R1cmUgb2YgdGhpcyBgY2RjX21iaW1gIG1vZHVsZS4gUmlnaHQsIHNvIGl0J3MgdXNpbmcgdGhlIGBjZGNfbWJpbV9zdGF0ZWAgc3RydWN0dXJlLCB3aGljaCBJIGNhbiBzZWUgZGVmaW5lZCBoZXJlOlxuXG5gYGBjXG5zdHJ1Y3QgY2RjX21iaW1fc3RhdGUge1xuXHRzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eDtcblx0YXRvbWljX3QgcG1jb3VudDtcblx0c3RydWN0IHVzYl9kcml2ZXIgKnN1YmRyaXZlcjtcblx0dW5zaWduZWQgbG9uZyBmbGFncztcbn07XG5gYGBcblxuSW50ZXJlc3RpbmcuIEl0J3MgY2xlYXJseSBtYW5hZ2luZyBpdHMgaW50ZXJuYWwgc3RhdGUgd2l0aCBhIGBjZGNfbmNtX2N0eGAsIGFuIGF0b21pYyBwb3dlciBtYW5hZ2VtZW50IGNvdW50ZXIsIGEgc3ViLWRyaXZlciBwb2ludGVyIGFuZCBmbGFncy4gQ3J1Y2lhbGx5LCBJIHNlZSB0aGF0IGl0J3MgKm5vdCogcmVseWluZyBvbiB0aGUgYGNkY19zdGF0ZWAgc3RydWN0dXJlLCB3aGljaCBpcyBzb21ldGhpbmcgSSdsbCBuZWVkIHRvIGtlZXAgaW4gbWluZCB3aGVuIGV2YWx1YXRpbmcgaXRzIGltcGxlbWVudGF0aW9uLiBJJ20gbWFraW5nIGEgbWVudGFsIG5vdGUgb2YgdGhhdCBkaXN0aW5jdGlvbi5cblxuTm93LCB0aGF0IGJyaW5ncyBtZSB0byBgcW1pX3d3YW5gLiBIb3cgZG9lcyB0aGF0IGNvbXBhcmUgYW5kIGNvbnRyYXN0PyBXaGF0J3MgaXRzIGFyY2hpdGVjdHVyZSBmb3Igc3RhdGUgbWFuYWdlbWVudD8gSSBuZWVkIHRvIGFuYWx5emUgaXRzIHN0cnVjdHVyZSBuZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzE1NywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE3OjU1OjMyLjcxNzUxMTcxNFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzEzMjMxNzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInFtaV93d2FuX3N0YXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNDktLyogZHJpdmVyIHNwZWNpZmljIGRhdGEgKi9cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo1MDpzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUge1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTUxLVxcdHN0cnVjdCB1c2JfZHJpdmVyICpzdWJkcml2ZXI7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz0zMDY9c3RhdGljIHZvaWQgcW1pX3d3YW5fbmV0ZGV2X3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpuZXQpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0zMDgtXFx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYobmV0KTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzozMDk6XFx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTMxMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTMzMj1zdGF0aWMgc3NpemVfdCByYXdfaXBfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkLCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzM0LVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoZCkpO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjMzNTpcXHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzM2LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9MzQwPXN0YXRpYyBzc2l6ZV90IHJhd19pcF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkLCAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTM0Mi1cXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSBuZXRkZXZfcHJpdih0b19uZXRfZGV2KGQpKTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzozNDM6XFx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTM0NC1cXHRib29sIGVuYWJsZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTQwOT1zdGF0aWMgc3NpemVfdCBhZGRfbXV4X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmQsICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNDExLVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoZCkpO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjQxMjpcXHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNDEzLVxcdHU4IG11eF9pZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTQ0Nz1zdGF0aWMgc3NpemVfdCBkZWxfbXV4X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmQsICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNDQ5LVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoZCkpO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjQ1MDpcXHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNDUxLVxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZWxfZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9NDc3PXN0YXRpYyBzc2l6ZV90IHBhc3NfdGhyb3VnaF9zaG93KHN0cnVjdCBkZXZpY2UgKmQsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy00ODAtXFx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NDgxOlxcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbztcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy00ODItXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz00ODg9c3RhdGljIHNzaXplX3QgcGFzc190aHJvdWdoX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmQsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy00OTItXFx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NDkzOlxcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbztcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy00OTQtXFx0Ym9vbCBlbmFibGU7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz01NjM9c3RhdGljIGludCBxbWlfd3dhbl9yeF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNTY0LXtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo1NjU6XFx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTU2Ni1cXHRib29sIHJhd2lwID0gaW5mby1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBRTUlfV1dBTl9GTEFHX1JBV0lQO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9NjU0PXN0YXRpYyBpbnQgcW1pX3d3YW5fbWFuYWdlX3Bvd2VyKHN0cnVjdCB1c2JuZXQgKmRldiwgaW50IG9uKVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTY1NS17XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NjU2OlxcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy02NTctXFx0aW50IHJ2O1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9Njg2PXN0YXRpYyBpbnQgcW1pX3d3YW5fcmVnaXN0ZXJfc3ViZHJpdmVyKHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTY4OS1cXHRzdHJ1Y3QgdXNiX2RyaXZlciAqc3ViZHJpdmVyID0gTlVMTDtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo2OTA6XFx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTY5MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTc0ND1zdGF0aWMgaW50IHFtaV93d2FuX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTc1Mi1cXHRzdHJ1Y3QgdXNiX2RyaXZlciAqZHJpdmVyID0gZHJpdmVyX29mKGludGYpO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjc1MzpcXHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNzU0LVxcdHN0cnVjdCB1c2JfY2RjX3BhcnNlZF9oZWFkZXIgaGRyO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNzU2LVxcdEJVSUxEX0JVR19PTigoc2l6ZW9mKCgoc3RydWN0IHVzYm5ldCAqKTApLVxcdTAwM2VkYXRhKSBcXHUwMDNjXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NzU3OlxcdFxcdCAgICAgIHNpemVvZihzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUpKSk7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNzU4LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9ODQ5PXN0YXRpYyB2b2lkIHFtaV93d2FuX3VuYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTg1MC17XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6ODUxOlxcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy04NTItXFx0c3RydWN0IHVzYl9kcml2ZXIgKmRyaXZlciA9IGRyaXZlcl9vZihpbnRmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTg4Nz1zdGF0aWMgaW50IHFtaV93d2FuX3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBtZXNzYWdlKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtODg5LVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6ODkwOlxcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy04OTEtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTkxMD1zdGF0aWMgaW50IHFtaV93d2FuX3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTkxMi1cXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjkxMzpcXHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTE0LVxcdGludCByZXQgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9MTU3OD1zdGF0aWMgdm9pZCBxbWlfd3dhbl9kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTU4MC1cXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjE1ODE6XFx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTE1ODItXFx0c3RydWN0IGxpc3RfaGVhZCAqaXRlcjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTc6NTU6MzMuMDMwNzQ5NTU0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxNzM5ODcyMjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFVTQiBHYWRnZXQgRHJpdmVyIERhdGEgU3RydWN0dXJlcyoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIHVuZGVyc3RhbmRpbmcgdGhlIGRhdGEgc3RydWN0dXJlcyBjb3JyZWN0bHkuIEkgd2FzIGp1c3QgbG9va2luZyBhdCBgcW1pX3d3YW5gLCBhbmQgaXQncyB1c2luZyBgcW1pX3d3YW5fc3RhdGVgLCBkZWZpbmVkIGFzOiBgc3RydWN0IHFtaV93d2FuX3N0YXRlIHsgc3RydWN0IHVzYl9kcml2ZXIgKnN1YmRyaXZlcjsgYXRvbWljX3QgcG1jb3VudDsgdW5zaWduZWQgbG9uZyBmbGFnczsgfTtgLiBUaGlzIGlzIGludGVyZXN0aW5nLCBpdCBzZWVtcyBpdCBkb2Vzbid0IHV0aWxpemUgYGNkY19zdGF0ZWAgYXQgYWxsLCByaWdodD8gSSBuZWVkIHRvIGtlZXAgdGhhdCBzdHJhaWdodC5cblxuTm93LCB3aGF0IGFib3V0IGBybmRpc19ob3N0YD8gVGhhdCdzIGEgZGlmZmVyZW50IGJlYXN0LCBJIHRoaW5rLiBJIGtub3cgaXQgbGV2ZXJhZ2VzIGBjZGNfc3RhdGVgLCBhbmQgaXQgZG9lcyBzbyB2aWEgdGhlIGBpbmZvYCBwb2ludGVyLiBUaGUgcmVsZXZhbnQgY29kZSBzbmlwcGV0IHNob3dzIGl0IGNhc3RzIGBkZXYtXHUwMDNlZGF0YWAgdG8gYSBgY2RjX3N0YXRlYCBzdHJ1Y3QuIEFuZCB0aGUgZHJpdmVyIHVzZXMgYHVzYm5ldF9nZW5lcmljX2NkY19iaW5kYCwgd2hpY2gsIGFzIEkgcmVjYWxsLCBpcyB3aGVyZSBgY2RjX3N0YXRlYCBnZXRzIHBvcHVsYXRlZC5cblxuSG1tLCBidXQgd2hhdCBlbHNlIGRvZXMgYHJuZGlzX2hvc3RgIGRvIHdpdGggYGRldi1cdTAwM2VkYXRhYD8gSSBzaG91bGQgbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgdW5leHBlY3RlZCBpbnRlcmFjdGlvbnMgdGhlcmUuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRocm91Z2ggdGhlIHJlc3Qgb2YgYHJuZGlzX2hvc3QuY2AgdG8gYmUgY29tcGxldGVseSBjZXJ0YWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTgyMSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNzo1NTozOC4yMDQ3NDEzMzlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NjIwMjkyMCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGV2LVxcdTAwM2VkYXRhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9ybmRpc19ob3N0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE3OjU1OjM4LjM3MDk2NTA3OVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTc0ODQ5NzMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWwgQnVnIHdpdGggVVNCIENEQyBEZXZpY2UgU3RhdGUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGRpZmYgYW5kIGltbWVkaWF0ZWx5IHNlZSBhIGNoYW5nZSBpbiBob3cgYGNkY19zdGF0ZWAgaXMgYWNjZXNzZWQuIEl0IHVzZWQgdG8gYmUgYGRldi1cdTAwM2VkYXRhYCBpbiBgcm5kaXNfaG9zdC5jYCwgYW5kIG5vdyBpdCdzIGBkZXYtXHUwMDNlY2RjYC4gVGhlIHNhbWUgdGhpbmcgaGFwcGVuZWQgaW4gYGNkY19ldGhlci5jYCwgc28gY2xlYXJseSB0aGVyZSdzIGJlZW4gc29tZSByZWZhY3RvcmluZyByZWxhdGVkIHRvIHRoZSBzdGF0ZSBzdHJ1Y3R1cmUuIEknbSBhc3N1bWluZyB0aGlzIGlzIGEgZml4IG9yIGltcHJvdmVtZW50LlxuXG5UaGUgbWFpbiBjb25jZXJuIG5vdyBpcyB3aGV0aGVyIHRoaXMgY2hhbmdlIGJyZWFrcyBhbnkgZXhpc3RpbmcgZHJpdmVycy4gSSdtIHRoaW5raW5nLCBhcmUgdGhlcmUgYW55IGRyaXZlcnMgb3V0IHRoZXJlIHRoYXQgYXJlIHN0aWxsIHJlbHlpbmcgb24gYGRldi1cdTAwM2VkYXRhYCBmb3IgdGhlaXIgb3duIHByaXZhdGUgc3RhdGUgQU5EIGFyZSBjYWxsaW5nIGZ1bmN0aW9ucyBsaWtlIGB1c2JuZXRfY2RjX3N0YXR1c2Agb3IgYHVzYm5ldF9jZGNfdXBkYXRlX2ZpbHRlcmA/ICBJZiBzbywgdGhlbiB3ZSd2ZSBnb3QgYSBwcm9ibGVtIGFuZCB0aGVpciBzdGF0ZSB3aWxsIGJlIGNvcnJ1cHRlZCBpZiB0aGUgb2xkIGBkZXYtXHUwMDNlZGF0YWAgcG9pbnRlciBpcyBub3QgY29ycmVjdC4gSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgYW55IHBvdGVudGlhbCBjb25mbGljdHMgaGVyZSwgc28gbXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGNhbGxlcnMgb2YgdGhvc2UgdHdvIENEQyBmdW5jdGlvbnMuICBJIG5lZWQgdG8gY2hlY2sgZm9yIGFueSBpbnRlcmFjdGlvbiB0aGF0IG1heSBiZSBoYXBwZW5pbmcgb24gdGhlIG9sZCBgZGV2LVx1MDAzZWRhdGFgIHN0cnVjdHVyZSwgd2hpY2ggbWlnaHQgbm93IGJlIHVzZWQgZGlmZmVyZW50bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMzE3LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE3OjU1OjQyLjk0NTgxODQ5MVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk5NzE5NjE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVzYm5ldF9jZGNfc3RhdHVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jPTQxMD1zdGF0aWMgdm9pZCB1c2JuZXRfY2RjX3p0ZV9zdGF0dXMoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXJiICp1cmIpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmMtNDE5LVxcdGlmIChldmVudC1cXHUwMDNlYk5vdGlmaWNhdGlvblR5cGUgIT0gVVNCX0NEQ19OT1RJRllfTkVUV09SS19DT05ORUNUSU9OKSB7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jOjQyMDpcXHRcXHR1c2JuZXRfY2RjX3N0YXR1cyhkZXYsIHVyYik7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jLTQyMS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmM9NDM0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm9cXHRjZGNfaW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYy00MzgtXFx0LnVuYmluZCA9XFx0dXNibmV0X2NkY191bmJpbmQsXFxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jOjQzOTpcXHQuc3RhdHVzID1cXHR1c2JuZXRfY2RjX3N0YXR1cyxcXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmMtNDQwLVxcdC5zZXRfcnhfbW9kZSA9XFx0dXNibmV0X2NkY191cGRhdGVfZmlsdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jPTQ1NT1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvIHd3YW5faW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfZXRoZXIuYy00NTktXFx0LnVuYmluZCA9XFx0dXNibmV0X2NkY191bmJpbmQsXFxuZHJpdmVycy9uZXQvdXNiL2NkY19ldGhlci5jOjQ2MDpcXHQuc3RhdHVzID1cXHR1c2JuZXRfY2RjX3N0YXR1cyxcXG5kcml2ZXJzL25ldC91c2IvY2RjX2V0aGVyLmMtNDYxLVxcdC5zZXRfcnhfbW9kZSA9XFx0dXNibmV0X2NkY191cGRhdGVfZmlsdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xnLXZsNjAwLmM9MzAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm9cXHR2bDYwMF9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xnLXZsNjAwLmMtMzA1LVxcdC51bmJpbmRcXHRcXHQ9IHZsNjAwX3VuYmluZCxcXG5kcml2ZXJzL25ldC91c2IvbGctdmw2MDAuYzozMDY6XFx0LnN0YXR1c1xcdFxcdD0gdXNibmV0X2NkY19zdGF0dXMsXFxuZHJpdmVycy9uZXQvdXNiL2xnLXZsNjAwLmMtMzA3LVxcdC5yeF9maXh1cFxcdD0gdmw2MDBfcnhfZml4dXAsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcjgxNTNfZWNtLmM9MTE1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gcjgxNTNfaW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9yODE1M19lY20uYy0xMTktXFx0LnVuYmluZCA9XFx0dXNibmV0X2NkY191bmJpbmQsXFxuZHJpdmVycy9uZXQvdXNiL3I4MTUzX2VjbS5jOjEyMDpcXHQuc3RhdHVzID1cXHR1c2JuZXRfY2RjX3N0YXR1cyxcXG5kcml2ZXJzL25ldC91c2IvcjgxNTNfZWNtLmMtMTIxLVxcdC5tYW5hZ2VfcG93ZXIgPVxcdHVzYm5ldF9tYW5hZ2VfcG93ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmM9MjMwNT1zdGF0aWMgdm9pZCBzcGVlZF9jaGFuZ2Uoc3RydWN0IHVzYm5ldCAqZGV2LCBfX2xlMzIgKnNwZWVkcylcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYy0yMzEwLVxcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYzoyMzExOnZvaWQgdXNibmV0X2NkY19zdGF0dXMoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXJiICp1cmIpXFxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTIzMTIte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3VzYm5ldC5jLTIzNDgtfVxcbmRyaXZlcnMvbmV0L3VzYi91c2JuZXQuYzoyMzQ5OkVYUE9SVF9TWU1CT0xfR1BMKHVzYm5ldF9jZGNfc3RhdHVzKTtcXG5kcml2ZXJzL25ldC91c2IvdXNibmV0LmMtMjM1MC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTc6NTU6NDMuMTQ1NTQzMTk5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MDk2NTI3NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBzdW1tYXJ5OlxuXG4qKkRpZ2dpbmcgaW50byBsZy12bDYwMC5jOiBVU0IgQ0RDIFN0YXR1cyBhbmQgRGF0YSoqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4uLiAqbGctdmw2MDAuYyouICBUaGF0IG5hbWUncyBmYW1pbGlhcjsgaXQncyBsaWtlbHkgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIExHIFZMNjAwIG1vZGVtIGRyaXZlcnMuICBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyBhYm91dCB0aGUgYHVzYm5ldF9jZGNfc3RhdHVzYCBmdW5jdGlvbiBjYWxsIEknbSBzZWVpbmcgaW4gaXQuIEkga25vdyB0aGF0IGZ1bmN0aW9uLCBpdCdzIHByZXR0eSBzdGFuZGFyZCBVU0IgQ0RDIEV0aGVybmV0IHN0dWZmLiBCdXQgdGhlIGNydWNpYWwgcXVlc3Rpb24gdGhhdCBjb21lcyB0byBtaW5kIGlzICpob3cqIGlzIHRoZSBkcml2ZXIgYWN0dWFsbHkgaGFuZGxpbmcgdGhlIGRldmljZSBzcGVjaWZpYyBkYXRhPyBBbmQgbW9yZSBzcGVjaWZpY2FsbHksIGlzIGl0IHVzaW5nIGBkZXYtXHUwMDNlZGF0YWAgZm9yIGRldmljZS1zcGVjaWZpYyBwcml2YXRlIGRhdGE/ICBUaGF0J3Mgd2hlcmUgdGhlIHJlYWwgbnVhbmNlIGlzLiBJdCBpcyBvbmUgb2YgdGhlIG1vcmUgY29tbW9uIGRlc2lnbiBjb25zaWRlcmF0aW9ucywgYnV0IGl0IGlzbid0IGFsd2F5cyB1dGlsaXplZC4gVGhpcyBpcyBhIGNvbW1vbiBwYXR0ZXJuLCBhbmQgaXQncyBlc3NlbnRpYWwgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBkcml2ZXIgaXMgbWFuYWdpbmcgaXRzIGludGVybmFsIHN0YXRlLiAgR290dGEgZm9sbG93IHRoZSBkYXRhIGZsb3cgdG8gYmUgc3VyZS4gIExldCdzIHNlZSB3aGVyZSB0aGF0IGdvZXMuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE2MzUsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNzo1NTo0Ny42NTUxOTgyNDVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMjY4ODk2MjMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRldi1cXHUwMDNlZGF0YVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2IvbGctdmw2MDAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTc6NTU6NDguODgyMTA1MzM5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNTAyNjcxNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipEaXZpbmcgaW50byB0aGUgVVNCIEV0aGVybmV0IENvbnRyb2wgTW9kZWwgQ29kZSoqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCBgcjgxNTNfZWNtLmNgIGFuZCBpbW1lZGlhdGVseSBhIHF1ZXN0aW9uIHBvcHMgaW50byBteSBoZWFkIOKAkyBhIHByZXR0eSBmdW5kYW1lbnRhbCBvbmUsIGFjdHVhbGx5LiBJIHNlZSBpdCdzIHVzaW5nIGB1c2JuZXRfY2RjX3N0YXR1c2AuIFRoYXQgdGVsbHMgbWUgdGhpcyBpcyBsaWtlbHkgZGVhbGluZyB3aXRoIGEgQ0RDLUVDTSAoRXRoZXJuZXQgQ29udHJvbCBNb2RlbCkgbmV0d29yayBkZXZpY2UgYmFzZWQgb24gYSBSZWFsdGVrIGNoaXBzZXQuIFRoZSBxdWVzdGlvbiBpcywgYW5kIHRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIGRyaXZlcidzIGhhbmRsaW5nIGNvbW11bmljYXRpb24gYW5kIGRldmljZS1zcGVjaWZpYyBkYXRhOiBpcyBpdCBhY2Nlc3NpbmcgYGRldi1cdTAwM2VkYXRhYD8gSXMgdGhlIGRyaXZlciBjb3JyZWN0bHkgYXNzb2NpYXRpbmcgYW55IGNvbnRleHQgZGF0YSB3aXRoIHRoZSBgdXNibmV0YCBkZXZpY2U/IFRoaXMgYml0IG9mIGluZm9ybWF0aW9uIGlzIGtleSBmb3IgZGF0YSBtYW5hZ2VtZW50IGFuZCBzdGF0ZSB0cmFja2luZyB3aXRoaW4gdGhlIGRldmljZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE5NDYsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNzo1NTo1My4wMzIzNzU0MjhaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NjI2NjA2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXYtXFx1MDAzZWRhdGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiL3I4MTUzX2VjbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNzo1NTo1My4wOTAwMDkyMzRaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI2NzA2NjUxODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVmYWN0b3JpbmcgQW5hbHlzaXM6IGB1c2JuZXQuY2AgYW5kIGBjZGNfc3RhdGVgKipcblxuT2theSwgc28gSSBpbml0aWFsbHkgdGhvdWdodCB0aGVyZSBtaWdodCBiZSBhIHN1YnRsZSBidWcgZml4IHJlbGF0ZWQgdG8gdGhlIGBjZGNfc3RhdGVgIHdpdGhpbiBgdXNibmV0LmNgLiBCdXQgZmlyc3QsIEkgbmVlZGVkIHRvIGNvbmZpcm0gdGhhdCB0aGUgcmVsZXZhbnQgZnVuY3Rpb25zIGFjdHVhbGx5IHVzZWQgYGNkY19zdGF0ZWAuICBJIHN0YXJ0ZWQgYnkgZXhhbWluaW5nIGB1c2JuZXRfY2RjX3N0YXR1c2AuIE5vLCBpdCBkb2Vzbid0IHVzZSBgY2RjX3N0YXRlYCBkaXJlY3RseS4gSSB0aGVuIGxvb2tlZCBhdCBgdXNibmV0X2NkY191cGRhdGVfZmlsdGVyYC4gIE5vcGUsIHRoYXQgZnVuY3Rpb24gYWxzbyBkb2Vzbid0IHRvdWNoIGBjZGNfc3RhdGVgLlxuXG5UaGVuLCBJIGxvb2tlZCBhdCBgdXNibmV0X2NkY191bmJpbmRgLiBBaGEhICBUaGF0IGZ1bmN0aW9uICpkb2VzKiB1c2UgYGNkY19zdGF0ZWAuICBJIGZ1cnRoZXIgY2hlY2tlZCBpZiB0aGUgZHJpdmVyIGByODE1M19lY20uY2AgdXNlcyBgdXNibmV0X2NkY191bmJpbmRgLiBZZXMuIEJ1dCBkb2VzIGl0IHVzZSBgZGV2LVx1MDAzZWRhdGFgPyBOby5cblxuVGhlcmVmb3JlLCBpdCBzZWVtcyB0aGF0IHRoZSBjaGFuZ2UgZnJvbSB0aGUgbW9yZSBnZW5lcmFsIGBkZXYtXHUwMDNlZGF0YWAgdG8gdGhlIG1vcmUgc3BlY2lmaWMgYGRldi1cdTAwM2VjZGNgIGlzIHB1cmVseSBhIHJlZmFjdG9yaW5nIHRvIGltcHJvdmUgY29kZSBjbGFyaXR5IGFuZCBhdm9pZCBwb3RlbnRpYWwgYWxpYXNpbmcuIEl0IGNvbnNvbGlkYXRlcyB1c2Ugb2YgYGNkY19zdGF0ZWAgd2hlcmUgYXBwbGljYWJsZSwgd2hpY2ggaXMgYSBnb29kIHByYWN0aWNlLiBObyBkcml2ZXJzIGFyZSB1c2luZyBgZGV2LVx1MDAzZWRhdGFgIGFuZCBgY2RjX3N0YXRlYCBzaW11bHRhbmVvdXNseSwgYW5kIHRoaXMgcmVmYWN0b3JpbmcgZG9lc24ndCBmaXggYSBwcmUtZXhpc3RpbmcgYnVnLiAgSXQncyBqdXN0IGNsZWFuZXIuXG5cbkNvbnNpZGVyaW5nIHRoZSBwcm9tcHQncyBjcml0ZXJpYSBmb3IgYSBub24tZnV6emFibGUgcGF0Y2ggKFwiQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93XCIpLCBJIGNvbmNsdWRlIHRoYXQgdGhpcyBjaGFuZ2UgcXVhbGlmaWVzLiAgSXQncyBhIHB1cmUgcmVmYWN0b3JpbmcgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgY29kZSBwYXRocyBvciBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3csIHNvIEknbGwgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjIwMywiT3V0cHV0VG9rZW5zIjoxMTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE3OjU2OjA1Ljc2MDY3NzYzOVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5OTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGlzIGEgcHVyZSByZWZhY3RvcmluZyB0aGF0IG1vdmVzIENEQy1yZWxhdGVkIGZ1bmN0aW9ucyBmcm9tIGNkY19ldGhlci5jIHRvIHRoZSBjb3JlIHVzYm5ldC5jIG1vZHVsZSBhbmQgcmVwbGFjZXMgdGhlIHVzZSBvZiB0aGUgZ2VuZXJpYyBkYXRhIGFycmF5IHdpdGggYSBkZWRpY2F0ZWQgY2RjX3N0YXRlIHN0cnVjdCBpbiB1c2JuZXQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgbG9naWMgb3IgZml4IGFueSBidWdzIHJlbGF0ZWQgdG8gZGF0YSBhbGlhc2luZywgYXMgbm8gZHJpdmVycyB3ZXJlIGNvbmN1cnJlbnRseSB1c2luZyBib3RoIHRoZSBnZW5lcmljIGRhdGEgYXJyYXkgYW5kIHRoZSBDREMgc3RhdGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpcyBhIHB1cmUgcmVmYWN0b3JpbmcgdGhhdCBtb3ZlcyBDREMtcmVsYXRlZCBmdW5jdGlvbnMgZnJvbSBjZGNfZXRoZXIuYyB0byB0aGUgY29yZSB1c2JuZXQuYyBtb2R1bGUgYW5kIHJlcGxhY2VzIHRoZSB1c2Ugb2YgdGhlIGdlbmVyaWMgZGF0YSBhcnJheSB3aXRoIGEgZGVkaWNhdGVkIGNkY19zdGF0ZSBzdHJ1Y3QgaW4gdXNibmV0LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBmdW5jdGlvbmFsIGxvZ2ljIG9yIGZpeCBhbnkgYnVncyByZWxhdGVkIHRvIGRhdGEgYWxpYXNpbmcsIGFzIG5vIGRyaXZlcnMgd2VyZSBjb25jdXJyZW50bHkgdXNpbmcgYm90aCB0aGUgZ2VuZXJpYyBkYXRhIGFycmF5IGFuZCB0aGUgQ0RDIHN0YXRlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow6d72k[1] Phase: Running StartedAt: 2026-07-02 17:59:05 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6d72k[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-02 17:59:05 +0000 UTC FinishedAt: 2026-07-02 17:59:39 +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,}