Name: series-workflowpcn94 Phase: Failed StartedAt: 2026-08-04 15:25:10 +0000 UTC FinishedAt: 2026-08-04 16:06:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpcn94[0] Phase: Succeeded StartedAt: 2026-08-04 15:25:10 +0000 UTC FinishedAt: 2026-08-04 16:06:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpcn94[0].run-triage Phase: Succeeded StartedAt: 2026-08-04 15:25:10 +0000 UTC FinishedAt: 2026-08-04 16:06:18 +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+CgkJCTx0ZD4yMDI2LzA4LzA0IDE1OjQ1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgdzUxMDAgRXRoZXJuZXQgZHJpdmVyLCB3aGljaCBpcyBmb3IgV2l6bmV0IFc1MTAwL1c1MjAwL1c1NTAwIGhhcmR3YXJlIGNoaXBzIGNvbm5lY3RlZCB2aWEgU1BJLiBUaGVzZSBjaGlwcyBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIFRoZSBkcml2ZXImIzM5O3MgcHJvYmUgZnVuY3Rpb24gZXhwbGljaXRseSBjaGVja3MgaGFyZHdhcmUgcmVnaXN0ZXJzIChlLmcuLCB2ZXJpZnlpbmcgUlRSX0RFRkFVTFQpIGFuZCB3aWxsIGZhaWwgdG8gaW5pdGlhbGl6ZSB3aXRob3V0IHRoZSBwaHlzaWNhbCBoYXJkd2FyZSBwcmVzZW50LiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNTo0NTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDcyNGM4ZjcxZjhiZTA5OTRmMTQ3Y2U1ZmEzNzllNTYyZjFlMTFiZDJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyA0IDE1OjQ1OjU0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnR4dFxuaW5kZXggZTk2NjU3OThjNGJlNi4uZTk3Y2UzY2I5MTgzMCAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnR4dFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAudHh0XG5AQCAtMjUsNiAmIzQzOzI1LDcgQEAgT3B0aW9uYWwgcHJvcGVydGllczpcbiAgIEFjY29yZGluZyB0byB0aGUgdzU1MDAgZGF0YXNoZWV0LCB0aGUgY2hpcCBhbGxvd3MgYSBtYXhpbXVtIG9mIDgwIE1IeiwgaG93ZXZlcixcbiAgIGJvYXJkIGRlc2lnbnMgbWF5IG5lZWQgdG8gbGltaXQgdGhpcyB2YWx1ZS5cbiAtIGxvY2FsLW1hYy1hZGRyZXNzOiBTZWUgZXRoZXJuZXQudHh0IGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiYjNDM7LSBsaW5rLWdwaW9zOiBhIEdQSU8gbGluZSB1c2VkIGZvciB0aGUgbGluayBkZXRlY3Rpb24gaW50ZXJydXB0XG4gXG4gXG4gRXhhbXBsZSAoZm9yIFJhc3BiZXJyeSBQaSB3aXRoIHBpbiBjb250cm9sIHN0dWZmIGZvciBHUElPIGlycSk6XG5AQCAtMzgsMTMgJiM0MzszOSwxNCBAQCBFeGFtcGxlIChmb3IgUmFzcGJlcnJ5IFBpIHdpdGggcGluIGNvbnRyb2wgc3R1ZmYgZm9yIEdQSU8gaXJxKTpcbiBcdFx0aW50ZXJydXB0LXBhcmVudCA9IFx1MDAzY1x1MDAyNmdwaW9cdTAwM2U7XG4gXHRcdGludGVycnVwdHMgPSBcdTAwM2MyNSBJUlFfVFlQRV9FREdFX0ZBTExJTkdcdTAwM2U7XG4gXHRcdHNwaS1tYXgtZnJlcXVlbmN5ID0gXHUwMDNjMzAwMDAwMDBcdTAwM2U7XG4mIzQzO1x0XHRsaW5rLWdwaW9zID0gXHUwMDNjXHUwMDI2Z3BpbyA0IEdQSU9fQUNUSVZFX0hJR0hcdTAwM2U7XG4gXHR9O1xuIH07XG4gXG4gXHUwMDI2Z3BpbyB7XG4gXHRldGgxX3BpbnM6IGV0aDFfcGlucyB7XG4tXHRcdGJyY20scGlucyA9IFx1MDAzYzI1XHUwMDNlO1xuLVx0XHRicmNtLGZ1bmN0aW9uID0gXHUwMDNjMFx1MDAzZTsgLyogaW4gKi9cbi1cdFx0YnJjbSxwdWxsID0gXHUwMDNjMFx1MDAzZTsgLyogbm9uZSAqL1xuJiM0MztcdFx0YnJjbSxwaW5zID0gXHUwMDNjMjUgNFx1MDAzZTtcbiYjNDM7XHRcdGJyY20sZnVuY3Rpb24gPSBcdTAwM2MwIDBcdTAwM2U7IC8qIGluICovXG4mIzQzO1x0XHRicmNtLHB1bGwgPSBcdTAwM2MwIDBcdTAwM2U7IC8qIG5vbmUgKi9cbiBcdH07XG4gfTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jXG5pbmRleCA1M2Q4ZGM2NDJmYmQ2Li5jOWQxODkxZjM3Yjk4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jXG5AQCAtMjIsNiAmIzQzOzIyLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pb3BvcnQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2ludGVycnVwdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaXJxLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZ3Bpby9jb25zdW1lci5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXCYjMzQ7dzUxMDAuaFwmIzM0O1xuIFxuQEAgLTE1NCw2ICYjNDM7MTU1LDggQEAgc3RydWN0IHc1MTAwX3ByaXYge1xuIFx0dTE2IHMwX3J4X2J1Zl9zaXplO1xuIFxuIFx0aW50IGlycTtcbiYjNDM7XHRpbnQgbGlua19pcnE7XG4mIzQzO1x0c3RydWN0IGdwaW9fZGVzYyAqbGlua19ncGlvO1xuIFxuIFx0c3RydWN0IG5hcGlfc3RydWN0IG5hcGk7XG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldjtcbkBAIC00MTQsNiAmIzQzOzQxNywxNiBAQCBzdGF0aWMgdm9pZCB3NTEwMF9nZXRfZHJ2aW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdFx0c2l6ZW9mKGluZm8tXHUwMDNlYnVzX2luZm8pKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyB1MzIgdzUxMDBfZ2V0X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuJiM0MztcbiYjNDM7XHRpZiAocHJpdi1cdTAwM2VsaW5rX2dwaW8pXG4mIzQzO1x0XHRyZXR1cm4gISFncGlvZF9nZXRfdmFsdWVfY2Fuc2xlZXAocHJpdi1cdTAwM2VsaW5rX2dwaW8pO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdTMyIHc1MTAwX2dldF9tc2dsZXZlbChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiB7XG4gXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuQEAgLTYxNiw2ICYjNDM7NjI5LDI0IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCB3NTEwMF9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqbmRldl9pbnN0YW5jZSlcbiBcdHJldHVybiBJUlFfSEFORExFRDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpcnFyZXR1cm5fdCB3NTEwMF9kZXRlY3RfbGluayhpbnQgaXJxLCB2b2lkICpuZGV2X2luc3RhbmNlKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSBuZGV2X2luc3RhbmNlO1xuJiM0MztcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG4mIzQzO1xuJiM0MztcdGlmIChuZXRpZl9ydW5uaW5nKG5kZXYpKSB7XG4mIzQzO1x0XHRpZiAoZ3Bpb2RfZ2V0X3ZhbHVlKHByaXYtXHUwMDNlbGlua19ncGlvKSAhPSAwKSB7XG4mIzQzO1x0XHRcdG5ldGlmX2luZm8ocHJpdiwgbGluaywgbmRldiwgXCYjMzQ7bGluayBpcyB1cFxcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdG5ldGlmX2NhcnJpZXJfb24obmRldik7XG4mIzQzO1x0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRuZXRpZl9pbmZvKHByaXYsIGxpbmssIG5kZXYsIFwmIzM0O2xpbmsgaXMgZG93blxcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdG5ldGlmX2NhcnJpZXJfb2ZmKG5kZXYpO1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIElSUV9IQU5ETEVEO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB2b2lkIHc1MTAwX3NldHJ4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIHtcbiBcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB3NTEwMF9wcml2LFxuQEAgLTY1OSw2ICYjNDM7NjkwLDE0IEBAIHN0YXRpYyBpbnQgdzUxMDBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiBcdHc1MTAwX2h3X3N0YXJ0KHByaXYpO1xuIFx0bmFwaV9lbmFibGUoXHUwMDI2cHJpdi1cdTAwM2VuYXBpKTtcbiBcdG5ldGlmX3N0YXJ0X3F1ZXVlKG5kZXYpO1xuJiM0MztcbiYjNDM7XHRpZiAocHJpdi1cdTAwM2VsaW5rX2dwaW8pIHtcbiYjNDM7XHRcdGlmIChncGlvZF9nZXRfdmFsdWVfY2Fuc2xlZXAocHJpdi1cdTAwM2VsaW5rX2dwaW8pICE9IDApXG4mIzQzO1x0XHRcdG5ldGlmX2NhcnJpZXJfb24obmRldik7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdG5ldGlmX2NhcnJpZXJfb2ZmKG5kZXYpO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5AQCAtNjc4LDYgJiM0Mzs3MTcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHc1MTAwX2V0aHRvb2xfb3BzID0ge1xuIFx0LmdldF9kcnZpbmZvXHRcdD0gdzUxMDBfZ2V0X2RydmluZm8sXG4gXHQuZ2V0X21zZ2xldmVsXHRcdD0gdzUxMDBfZ2V0X21zZ2xldmVsLFxuIFx0LnNldF9tc2dsZXZlbFx0XHQ9IHc1MTAwX3NldF9tc2dsZXZlbCxcbiYjNDM7XHQuZ2V0X2xpbmtcdFx0PSB3NTEwMF9nZXRfbGluayxcbiBcdC5nZXRfcmVnc19sZW5cdFx0PSB3NTEwMF9nZXRfcmVnc19sZW4sXG4gXHQuZ2V0X3JlZ3NcdFx0PSB3NTEwMF9nZXRfcmVncyxcbiB9O1xuQEAgLTc1MSw2ICYjNDM7NzkxLDEzIEBAIGludCB3NTEwMF9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCB3NTEwMF9vcHMgKm9wcyxcbiBcdHByaXYtXHUwMDNlbmRldiA9IG5kZXY7XG4gXHRwcml2LVx1MDAzZW9wcyA9IG9wcztcbiBcdHByaXYtXHUwMDNlaXJxID0gaXJxO1xuJiM0MztcdHByaXYtXHUwMDNlbGlua19ncGlvID0gZ3Bpb2RfZ2V0X29wdGlvbmFsKGRldiwgXCYjMzQ7bGlua1wmIzM0OywgR1BJT0RfSU4pO1xuJiM0MztcdGlmIChJU19FUlIocHJpdi1cdTAwM2VsaW5rX2dwaW8pKSB7XG4mIzQzO1x0XHRlcnIgPSBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihwcml2LVx1MDAzZWxpbmtfZ3BpbyksXG4mIzQzO1x0XHRcdFx0ICAgIFwmIzM0O2ZhaWxlZCB0byBnZXQgbGluayBHUElPXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHByaXYtXHUwMDNlbGlua19ncGlvID0gTlVMTDtcbiYjNDM7XHRcdGdvdG8gZXJyX3JlZ2lzdGVyO1xuJiM0MztcdH1cbiBcbiBcdG5kZXYtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNnc1MTAwX25ldGRldl9vcHM7XG4gXHRuZGV2LVx1MDAzZWV0aHRvb2xfb3BzID0gXHUwMDI2dzUxMDBfZXRodG9vbF9vcHM7XG5AQCAtODAzLDEzICYjNDM7ODUwLDQwIEBAIGludCB3NTEwMF9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCB3NTEwMF9vcHMgKm9wcyxcbiBcdGlmIChlcnIpXG4gXHRcdGdvdG8gZXJyX2h3O1xuIFxuJiM0MztcdGlmIChwcml2LVx1MDAzZWxpbmtfZ3Bpbykge1xuJiM0MztcdFx0Y2hhciAqbGlua19uYW1lID0gZGV2bV9rYXNwcmludGYoZGV2LCBHRlBfS0VSTkVMLCBcJiMzNDslcy1saW5rXCYjMzQ7LFxuJiM0MztcdFx0XHRcdFx0XHQgZGV2X25hbWUoZGV2KSk7XG4mIzQzO1x0XHRpZiAoIWxpbmtfbmFtZSkge1xuJiM0MztcdFx0XHRlcnIgPSAtRU5PTUVNO1xuJiM0MztcdFx0XHRnb3RvIGVycl9ncGlvO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdHByaXYtXHUwMDNlbGlua19pcnEgPSBncGlvZF90b19pcnEocHJpdi1cdTAwM2VsaW5rX2dwaW8pO1xuJiM0MztcdFx0aWYgKHByaXYtXHUwMDNlbGlua19pcnEgXHUwMDNjIDApIHtcbiYjNDM7XHRcdFx0ZXJyID0gcHJpdi1cdTAwM2VsaW5rX2lycTtcbiYjNDM7XHRcdFx0Z290byBlcnJfZ3BpbztcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRlcnIgPSByZXF1ZXN0X2FueV9jb250ZXh0X2lycShwcml2LVx1MDAzZWxpbmtfaXJxLCB3NTEwMF9kZXRlY3RfbGluayxcbiYjNDM7XHRcdFx0XHRcdCAgICAgIElSUUZfVFJJR0dFUl9SSVNJTkcgfFxuJiM0MztcdFx0XHRcdFx0XHQgICAgICBJUlFGX1RSSUdHRVJfRkFMTElORyxcbiYjNDM7XHRcdFx0XHRcdCAgICAgIGxpbmtfbmFtZSwgcHJpdi1cdTAwM2VuZGV2KTtcbiYjNDM7XHRcdGlmIChlcnIgXHUwMDNjIDApXG4mIzQzO1x0XHRcdGdvdG8gZXJyX2dwaW87XG4mIzQzO1x0fVxuJiM0MztcbiBcdHJldHVybiAwO1xuIFxuJiM0MztlcnJfZ3BpbzpcbiYjNDM7XHRmcmVlX2lycShwcml2LVx1MDAzZWlycSwgbmRldik7XG4gZXJyX2h3OlxuIFx0ZGVzdHJveV93b3JrcXVldWUocHJpdi1cdTAwM2V4ZmVyX3dxKTtcbiBlcnJfd3E6XG4gXHR1bnJlZ2lzdGVyX25ldGRldihuZGV2KTtcbiBlcnJfcmVnaXN0ZXI6XG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlbGlua19ncGlvKVxuJiM0MztcdFx0Z3Bpb2RfcHV0KHByaXYtXHUwMDNlbGlua19ncGlvKTtcbiYjNDM7XG4gXHRmcmVlX25ldGRldihuZGV2KTtcbiBcdHJldHVybiBlcnI7XG4gfVxuQEAgLTgyMiw2ICYjNDM7ODk2LDEwIEBAIHZvaWQgdzUxMDBfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcbiBcdHc1MTAwX2h3X3Jlc2V0KHByaXYpO1xuIFx0ZnJlZV9pcnEocHJpdi1cdTAwM2VpcnEsIG5kZXYpO1xuJiM0MztcdGlmIChwcml2LVx1MDAzZWxpbmtfZ3Bpbykge1xuJiM0MztcdFx0ZnJlZV9pcnEocHJpdi1cdTAwM2VsaW5rX2lycSwgbmRldik7XG4mIzQzO1x0XHRncGlvZF9wdXQocHJpdi1cdTAwM2VsaW5rX2dwaW8pO1xuJiM0MztcdH1cbiBcbiBcdGZsdXNoX3dvcmsoXHUwMDI2cHJpdi1cdTAwM2VzZXRyeF93b3JrKTtcbiBcdGZsdXNoX3dvcmsoXHUwMDI2cHJpdi1cdTAwM2VyZXN0YXJ0X3dvcmspO1xuQEAgLTg0MCw2ICYjNDM7OTE4LDcgQEAgc3RhdGljIGludCB3NTEwMF9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcbiBcdGlmIChuZXRpZl9ydW5uaW5nKG5kZXYpKSB7XG4gXHRcdG5ldGlmX2NhcnJpZXJfb2ZmKG5kZXYpO1xuJiM0MztcbiBcdFx0bmV0aWZfZGV2aWNlX2RldGFjaChuZGV2KTtcbiBcbiBcdFx0dzUxMDBfaHdfY2xvc2UocHJpdik7XG5AQCAtODU3LDcgJiM0Mzs5MzYsMTIgQEAgc3RhdGljIGludCB3NTEwMF9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0XHR3NTEwMF9od19zdGFydChwcml2KTtcbiBcbiBcdFx0bmV0aWZfZGV2aWNlX2F0dGFjaChuZGV2KTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoIXByaXYtXHUwMDNlbGlua19ncGlvIHx8XG4mIzQzO1x0XHQgICAgZ3Bpb2RfZ2V0X3ZhbHVlX2NhbnNsZWVwKHByaXYtXHUwMDNlbGlua19ncGlvKSAhPSAwKVxuJiM0MztcdFx0XHRuZXRpZl9jYXJyaWVyX29uKG5kZXYpO1xuIFx0fVxuJiM0MztcbiBcdHJldHVybiAwO1xuIH1cbiAjZW5kaWYgLyogQ09ORklHX1BNX1NMRUVQICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTU6NDU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgdzUxMDAgRXRoZXJuZXQgZHJpdmVyLCB3aGljaCBpcyBmb3IgV2l6bmV0IFc1MTAwL1c1MjAwL1c1NTAwIGhhcmR3YXJlIGNoaXBzIGNvbm5lY3RlZCB2aWEgU1BJLiBUaGVzZSBjaGlwcyBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIFRoZSBkcml2ZXImIzM5O3MgcHJvYmUgZnVuY3Rpb24gZXhwbGljaXRseSBjaGVja3MgaGFyZHdhcmUgcmVnaXN0ZXJzIChlLmcuLCB2ZXJpZnlpbmcgUlRSX0RFRkFVTFQpIGFuZCB3aWxsIGZhaWwgdG8gaW5pdGlhbGl6ZSB3aXRob3V0IHRoZSBwaHlzaWNhbCBoYXJkd2FyZSBwcmVzZW50LiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDcyNGM4ZjcxZjhiZTA5OTRmMTQ3Y2U1ZmEzNzllNTYyZjFlMTFiZDIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyA0IDE1OjQ1OjU0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAudHh0CmluZGV4IGU5NjY1Nzk4YzRiZTYuLmU5N2NlM2NiOTE4MzAgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnR4dAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC50eHQKQEAgLTI1LDYgJiM0MzsyNSw3IEBAIE9wdGlvbmFsIHByb3BlcnRpZXM6CiAgIEFjY29yZGluZyB0byB0aGUgdzU1MDAgZGF0YXNoZWV0LCB0aGUgY2hpcCBhbGxvd3MgYSBtYXhpbXVtIG9mIDgwIE1IeiwgaG93ZXZlciwKICAgYm9hcmQgZGVzaWducyBtYXkgbmVlZCB0byBsaW1pdCB0aGlzIHZhbHVlLgogLSBsb2NhbC1tYWMtYWRkcmVzczogU2VlIGV0aGVybmV0LnR4dCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCiYjNDM7LSBsaW5rLWdwaW9zOiBhIEdQSU8gbGluZSB1c2VkIGZvciB0aGUgbGluayBkZXRlY3Rpb24gaW50ZXJydXB0CiAKIAogRXhhbXBsZSAoZm9yIFJhc3BiZXJyeSBQaSB3aXRoIHBpbiBjb250cm9sIHN0dWZmIGZvciBHUElPIGlycSk6CkBAIC0zOCwxMyAmIzQzOzM5LDE0IEBAIEV4YW1wbGUgKGZvciBSYXNwYmVycnkgUGkgd2l0aCBwaW4gY29udHJvbCBzdHVmZiBmb3IgR1BJTyBpcnEpOgogCQlpbnRlcnJ1cHQtcGFyZW50ID0gJmx0OyZhbXA7Z3BpbyZndDs7CiAJCWludGVycnVwdHMgPSAmbHQ7MjUgSVJRX1RZUEVfRURHRV9GQUxMSU5HJmd0OzsKIAkJc3BpLW1heC1mcmVxdWVuY3kgPSAmbHQ7MzAwMDAwMDAmZ3Q7OwomIzQzOwkJbGluay1ncGlvcyA9ICZsdDsmYW1wO2dwaW8gNCBHUElPX0FDVElWRV9ISUdIJmd0OzsKIAl9OwogfTsKIAogJmFtcDtncGlvIHsKIAlldGgxX3BpbnM6IGV0aDFfcGlucyB7Ci0JCWJyY20scGlucyA9ICZsdDsyNSZndDs7Ci0JCWJyY20sZnVuY3Rpb24gPSAmbHQ7MCZndDs7IC8qIGluICovCi0JCWJyY20scHVsbCA9ICZsdDswJmd0OzsgLyogbm9uZSAqLwomIzQzOwkJYnJjbSxwaW5zID0gJmx0OzI1IDQmZ3Q7OwomIzQzOwkJYnJjbSxmdW5jdGlvbiA9ICZsdDswIDAmZ3Q7OyAvKiBpbiAqLwomIzQzOwkJYnJjbSxwdWxsID0gJmx0OzAgMCZndDs7IC8qIG5vbmUgKi8KIAl9OwogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMKaW5kZXggNTNkOGRjNjQyZmJkNi4uYzlkMTg5MWYzN2I5OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMKQEAgLTIyLDYgJiM0MzsyMiw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvaW9wb3J0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvaW50ZXJydXB0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvaXJxLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2dwaW8vY29uc3VtZXIuaCZndDsKIAogI2luY2x1ZGUgJiMzNDt3NTEwMC5oJiMzNDsKIApAQCAtMTU0LDYgJiM0MzsxNTUsOCBAQCBzdHJ1Y3QgdzUxMDBfcHJpdiB7CiAJdTE2IHMwX3J4X2J1Zl9zaXplOwogCiAJaW50IGlycTsKJiM0MzsJaW50IGxpbmtfaXJxOwomIzQzOwlzdHJ1Y3QgZ3Bpb19kZXNjICpsaW5rX2dwaW87CiAKIAlzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTsKIAlzdHJ1Y3QgbmV0X2RldmljZSAqbmRldjsKQEAgLTQxNCw2ICYjNDM7NDE3LDE2IEBAIHN0YXRpYyB2b2lkIHc1MTAwX2dldF9kcnZpbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAogCQlzaXplb2YoaW5mby0mZ3Q7YnVzX2luZm8pKTsKIH0KIAomIzQzO3N0YXRpYyB1MzIgdzUxMDBfZ2V0X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpOwomIzQzOwomIzQzOwlpZiAocHJpdi0mZ3Q7bGlua19ncGlvKQomIzQzOwkJcmV0dXJuICEhZ3Bpb2RfZ2V0X3ZhbHVlX2NhbnNsZWVwKHByaXYtJmd0O2xpbmtfZ3Bpbyk7CiYjNDM7CiYjNDM7CXJldHVybiAxOwomIzQzO30KJiM0MzsKIHN0YXRpYyB1MzIgdzUxMDBfZ2V0X21zZ2xldmVsKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQogewogCXN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7CkBAIC02MTYsNiAmIzQzOzYyOSwyNCBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgdzUxMDBfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKm5kZXZfaW5zdGFuY2UpCiAJcmV0dXJuIElSUV9IQU5ETEVEOwogfQogCiYjNDM7c3RhdGljIGlycXJldHVybl90IHc1MTAwX2RldGVjdF9saW5rKGludCBpcnEsIHZvaWQgKm5kZXZfaW5zdGFuY2UpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IG5kZXZfaW5zdGFuY2U7CiYjNDM7CXN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7CiYjNDM7CiYjNDM7CWlmIChuZXRpZl9ydW5uaW5nKG5kZXYpKSB7CiYjNDM7CQlpZiAoZ3Bpb2RfZ2V0X3ZhbHVlKHByaXYtJmd0O2xpbmtfZ3BpbykgIT0gMCkgewomIzQzOwkJCW5ldGlmX2luZm8ocHJpdiwgbGluaywgbmRldiwgJiMzNDtsaW5rIGlzIHVwXG4mIzM0Oyk7CiYjNDM7CQkJbmV0aWZfY2Fycmllcl9vbihuZGV2KTsKJiM0MzsJCX0gZWxzZSB7CiYjNDM7CQkJbmV0aWZfaW5mbyhwcml2LCBsaW5rLCBuZGV2LCAmIzM0O2xpbmsgaXMgZG93blxuJiMzNDspOwomIzQzOwkJCW5ldGlmX2NhcnJpZXJfb2ZmKG5kZXYpOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiBJUlFfSEFORExFRDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCB3NTEwMF9zZXRyeF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIHsKIAlzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdzUxMDBfcHJpdiwKQEAgLTY1OSw2ICYjNDM7NjkwLDE0IEBAIHN0YXRpYyBpbnQgdzUxMDBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldikKIAl3NTEwMF9od19zdGFydChwcml2KTsKIAluYXBpX2VuYWJsZSgmYW1wO3ByaXYtJmd0O25hcGkpOwogCW5ldGlmX3N0YXJ0X3F1ZXVlKG5kZXYpOwomIzQzOwomIzQzOwlpZiAocHJpdi0mZ3Q7bGlua19ncGlvKSB7CiYjNDM7CQlpZiAoZ3Bpb2RfZ2V0X3ZhbHVlX2NhbnNsZWVwKHByaXYtJmd0O2xpbmtfZ3BpbykgIT0gMCkKJiM0MzsJCQluZXRpZl9jYXJyaWVyX29uKG5kZXYpOwomIzQzOwkJZWxzZQomIzQzOwkJCW5ldGlmX2NhcnJpZXJfb2ZmKG5kZXYpOwomIzQzOwl9CiYjNDM7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTY3OCw2ICYjNDM7NzE3LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyB3NTEwMF9ldGh0b29sX29wcyA9IHsKIAkuZ2V0X2RydmluZm8JCT0gdzUxMDBfZ2V0X2RydmluZm8sCiAJLmdldF9tc2dsZXZlbAkJPSB3NTEwMF9nZXRfbXNnbGV2ZWwsCiAJLnNldF9tc2dsZXZlbAkJPSB3NTEwMF9zZXRfbXNnbGV2ZWwsCiYjNDM7CS5nZXRfbGluawkJPSB3NTEwMF9nZXRfbGluaywKIAkuZ2V0X3JlZ3NfbGVuCQk9IHc1MTAwX2dldF9yZWdzX2xlbiwKIAkuZ2V0X3JlZ3MJCT0gdzUxMDBfZ2V0X3JlZ3MsCiB9OwpAQCAtNzUxLDYgJiM0Mzs3OTEsMTMgQEAgaW50IHc1MTAwX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IHc1MTAwX29wcyAqb3BzLAogCXByaXYtJmd0O25kZXYgPSBuZGV2OwogCXByaXYtJmd0O29wcyA9IG9wczsKIAlwcml2LSZndDtpcnEgPSBpcnE7CiYjNDM7CXByaXYtJmd0O2xpbmtfZ3BpbyA9IGdwaW9kX2dldF9vcHRpb25hbChkZXYsICYjMzQ7bGluayYjMzQ7LCBHUElPRF9JTik7CiYjNDM7CWlmIChJU19FUlIocHJpdi0mZ3Q7bGlua19ncGlvKSkgewomIzQzOwkJZXJyID0gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocHJpdi0mZ3Q7bGlua19ncGlvKSwKJiM0MzsJCQkJICAgICYjMzQ7ZmFpbGVkIHRvIGdldCBsaW5rIEdQSU9cbiYjMzQ7KTsKJiM0MzsJCXByaXYtJmd0O2xpbmtfZ3BpbyA9IE5VTEw7CiYjNDM7CQlnb3RvIGVycl9yZWdpc3RlcjsKJiM0MzsJfQogCiAJbmRldi0mZ3Q7bmV0ZGV2X29wcyA9ICZhbXA7dzUxMDBfbmV0ZGV2X29wczsKIAluZGV2LSZndDtldGh0b29sX29wcyA9ICZhbXA7dzUxMDBfZXRodG9vbF9vcHM7CkBAIC04MDMsMTMgJiM0Mzs4NTAsNDAgQEAgaW50IHc1MTAwX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IHc1MTAwX29wcyAqb3BzLAogCWlmIChlcnIpCiAJCWdvdG8gZXJyX2h3OwogCiYjNDM7CWlmIChwcml2LSZndDtsaW5rX2dwaW8pIHsKJiM0MzsJCWNoYXIgKmxpbmtfbmFtZSA9IGRldm1fa2FzcHJpbnRmKGRldiwgR0ZQX0tFUk5FTCwgJiMzNDslcy1saW5rJiMzNDssCiYjNDM7CQkJCQkJIGRldl9uYW1lKGRldikpOwomIzQzOwkJaWYgKCFsaW5rX25hbWUpIHsKJiM0MzsJCQllcnIgPSAtRU5PTUVNOwomIzQzOwkJCWdvdG8gZXJyX2dwaW87CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQlwcml2LSZndDtsaW5rX2lycSA9IGdwaW9kX3RvX2lycShwcml2LSZndDtsaW5rX2dwaW8pOwomIzQzOwkJaWYgKHByaXYtJmd0O2xpbmtfaXJxICZsdDsgMCkgewomIzQzOwkJCWVyciA9IHByaXYtJmd0O2xpbmtfaXJxOwomIzQzOwkJCWdvdG8gZXJyX2dwaW87CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQllcnIgPSByZXF1ZXN0X2FueV9jb250ZXh0X2lycShwcml2LSZndDtsaW5rX2lycSwgdzUxMDBfZGV0ZWN0X2xpbmssCiYjNDM7CQkJCQkgICAgICBJUlFGX1RSSUdHRVJfUklTSU5HIHwKJiM0MzsJCQkJCQkgICAgICBJUlFGX1RSSUdHRVJfRkFMTElORywKJiM0MzsJCQkJCSAgICAgIGxpbmtfbmFtZSwgcHJpdi0mZ3Q7bmRldik7CiYjNDM7CQlpZiAoZXJyICZsdDsgMCkKJiM0MzsJCQlnb3RvIGVycl9ncGlvOwomIzQzOwl9CiYjNDM7CiAJcmV0dXJuIDA7CiAKJiM0MztlcnJfZ3BpbzoKJiM0MzsJZnJlZV9pcnEocHJpdi0mZ3Q7aXJxLCBuZGV2KTsKIGVycl9odzoKIAlkZXN0cm95X3dvcmtxdWV1ZShwcml2LSZndDt4ZmVyX3dxKTsKIGVycl93cToKIAl1bnJlZ2lzdGVyX25ldGRldihuZGV2KTsKIGVycl9yZWdpc3RlcjoKJiM0MzsJaWYgKHByaXYtJmd0O2xpbmtfZ3BpbykKJiM0MzsJCWdwaW9kX3B1dChwcml2LSZndDtsaW5rX2dwaW8pOwomIzQzOwogCWZyZWVfbmV0ZGV2KG5kZXYpOwogCXJldHVybiBlcnI7CiB9CkBAIC04MjIsNiAmIzQzOzg5NiwxMCBAQCB2b2lkIHc1MTAwX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAKIAl3NTEwMF9od19yZXNldChwcml2KTsKIAlmcmVlX2lycShwcml2LSZndDtpcnEsIG5kZXYpOwomIzQzOwlpZiAocHJpdi0mZ3Q7bGlua19ncGlvKSB7CiYjNDM7CQlmcmVlX2lycShwcml2LSZndDtsaW5rX2lycSwgbmRldik7CiYjNDM7CQlncGlvZF9wdXQocHJpdi0mZ3Q7bGlua19ncGlvKTsKJiM0MzsJfQogCiAJZmx1c2hfd29yaygmYW1wO3ByaXYtJmd0O3NldHJ4X3dvcmspOwogCWZsdXNoX3dvcmsoJmFtcDtwcml2LSZndDtyZXN0YXJ0X3dvcmspOwpAQCAtODQwLDYgJiM0Mzs5MTgsNyBAQCBzdGF0aWMgaW50IHc1MTAwX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQogCiAJaWYgKG5ldGlmX3J1bm5pbmcobmRldikpIHsKIAkJbmV0aWZfY2Fycmllcl9vZmYobmRldik7CiYjNDM7CiAJCW5ldGlmX2RldmljZV9kZXRhY2gobmRldik7CiAKIAkJdzUxMDBfaHdfY2xvc2UocHJpdik7CkBAIC04NTcsNyAmIzQzOzkzNiwxMiBAQCBzdGF0aWMgaW50IHc1MTAwX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJCXc1MTAwX2h3X3N0YXJ0KHByaXYpOwogCiAJCW5ldGlmX2RldmljZV9hdHRhY2gobmRldik7CiYjNDM7CiYjNDM7CQlpZiAoIXByaXYtJmd0O2xpbmtfZ3BpbyB8fAomIzQzOwkJICAgIGdwaW9kX2dldF92YWx1ZV9jYW5zbGVlcChwcml2LSZndDtsaW5rX2dwaW8pICE9IDApCiYjNDM7CQkJbmV0aWZfY2Fycmllcl9vbihuZGV2KTsKIAl9CiYjNDM7CiAJcmV0dXJuIDA7CiB9CiAjZW5kaWYgLyogQ09ORklHX1BNX1NMRUVQICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE1OjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0MzAKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyOTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBXaXpuZXQgVzUxMDAgRXRoZXJuZXQgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIGZvciB0aGUgYHc1MTAwYCBldGhlcm5ldCBkcml2ZXIsIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmNgLiBJdCBsb29rcyBsaWtlIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBsaW5rIGRldGVjdGlvbiB2aWEgYSBHUElPLiBJIHNlZSBuZXcgZnVuY3Rpb25zIGFkZGVkOiBgdzUxMDBfZ2V0X2xpbmtgIGFuZCBgdzUxMDBfZGV0ZWN0X2xpbmtgLCB0aGUgbGF0dGVyIGJlaW5nIGFuIElSUSBoYW5kbGVyLCB3aGljaCBtYWtlcyBzZW5zZSBmb3IgcmVzcG9uZGluZyB0byBwaW4gY2hhbmdlcy4gSXQgYWxzbyB0b3VjaGVzIGEgZmV3IG90aGVyIGtleSBhcmVhczogYHc1MTAwX29wZW5gLCBgdzUxMDBfcHJvYmVgLCBgdzUxMDBfcmVtb3ZlYCwgYHc1MTAwX3N1c3BlbmRgLCBhbmQgYHc1MTAwX3Jlc3VtZWAuIFNvLCBpdCYjMzk7cyBtb2RpZnlpbmcgdGhlIGNvcmUgbGlmZWN5Y2xlIGFuZCBwb3dlciBtYW5hZ2VtZW50IGZ1bmN0aW9ucyB0byBpbmNvcnBvcmF0ZSB0aGlzIG5ldyBsaW5rIGRldGVjdGlvbi4KCk5vdywgSSBuZWVkIHRvIHRoaW5rIGFib3V0IGhvdyB0aGlzIGludGVyYWN0cyB3aXRoIHZpcnR1YWxpemF0aW9uLiBUaGlzIGRyaXZlciBpcyBmb3IgYSBXaXpuZXQgVzUxMDAsIFc1MjAwLCBvciBXNTUwMCBNQUMvUEhZLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoZXNlIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcnMsIGVzcGVjaWFsbHkgdGhvc2UgdGhhdCBkZWFsIHdpdGggU1BJIG9yIG1lbW9yeS1tYXBwZWQgaW50ZXJmYWNlcywgYXJlIGdlbmVyYWxseSAqbm90KiBlbXVsYXRlZCBieSBRRU1VIHVubGVzcyB0aGVyZSYjMzk7cyBhbiBleHBsaWNpdCBtb2RlbC4gSSB3b25kZXIsIGRvZXMgUUVNVSBldmVuIGhhdmUgYSBXaXpuZXQgVzUxMDAgbW9kZWw/IEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoYXQuCgpUbyBmaWd1cmUgdGhpcyBvdXQgcXVpY2tseSwgSSYjMzk7bSBnb2luZyB0byBzZWFyY2ggdGhlIGtlcm5lbCBzb3VyY2UgZm9yICYjMzQ7dzUxMDAmIzM0OyB0byBzZWUgaWYgaXQmIzM5O3MgdHJlYXRlZCBhcyBhIHBsYXRmb3JtIG9yIFNQSSBkZXZpY2UuIFRoYXQmIzM5O2xsIHRlbGwgbWUgaWYgaXQmIzM5O3MgaW50ZWdyYXRlZCBpbiBhIHdheSB0aGF0IFFFTVUgbWlnaHQgdG91Y2guIFdhaXQsIHJpZ2h0Li4uIFdpem5ldCBkZXZpY2VzIGFyZSAqdHlwaWNhbGx5KiBTUEkgb3IgbWVtb3J5LW1hcHBlZC4gSSBjYW4gY2hlY2sgdGhlIGRyaXZlciBpdHNlbGYsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuY2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNsZWFyZXN0IHBpY3R1cmUuIExldCBtZSBkaXZlIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE1OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3c1MTAwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNjQ4IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvS2NvbmZpZz0xOT1jb25maWcgV0laTkVUX1c1MTAwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L0tjb25maWctMjktXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC9LY29uZmlnOjMwOlx0ICB3aWxsIGJlIGNhbGxlZCB3NTEwMC5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC9LY29uZmlnLTMxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX1dJWk5FVF9XNTEwMCkgJiM0Mzs9IHc1MTAwLm8gdzUxMDAtc3BpLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtMjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6MjE6I2luY2x1ZGUgXCYjMzQ7dzUxMDAuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTIyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy0yNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzoyNjpzdGF0aWMgaW50IHc1MTAwX3NwaV9yZWFkKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgYWRkcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy0yNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTM3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjM4OnN0YXRpYyBpbnQgdzUxMDBfc3BpX3dyaXRlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgYWRkciwgdTggZGF0YSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy0zOS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ2OnN0YXRpYyBpbnQgdzUxMDBfc3BpX3JlYWQxNihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTMyIGFkZHIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy01MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo1MTpcdHJldCA9IHc1MTAwX3NwaV9yZWFkKG5kZXYsIGFkZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTUyLVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNTQtXHRkYXRhID0gcmV0IFx1MDAzY1x1MDAzYyA4O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjU1Olx0cmV0ID0gdzUxMDBfc3BpX3JlYWQobmRldiwgYWRkciAmIzQzOyAxKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy01Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NjA6c3RhdGljIGludCB3NTEwMF9zcGlfd3JpdGUxNihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTMyIGFkZHIsIHUxNiBkYXRhKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTYxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NjQ6XHRyZXQgPSB3NTEwMF9zcGlfd3JpdGUobmRldiwgYWRkciwgZGF0YSBcdTAwM2VcdTAwM2UgOCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNjUtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy02Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo2ODpcdHJldHVybiB3NTEwMF9zcGlfd3JpdGUobmRldiwgYWRkciAmIzQzOyAxLCBkYXRhIFx1MDAyNiAweGZmKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy02OS19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NzE6c3RhdGljIGludCB3NTEwMF9zcGlfcmVhZGJ1bGsoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHUzMiBhZGRyLCB1OCAqYnVmLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTcyLVx0XHRcdCAgICAgIGludCBsZW4pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTc2LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbGVuOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjc3Olx0XHRpbnQgcmV0ID0gdzUxMDBfc3BpX3JlYWQobmRldiwgYWRkciAmIzQzOyBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy03OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtODYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6ODc6c3RhdGljIGludCB3NTEwMF9zcGlfd3JpdGVidWxrKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgYWRkciwgY29uc3QgdTggKmJ1ZixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy04OC1cdFx0XHQgICAgICAgaW50IGxlbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtOTItXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBsZW47IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6OTM6XHRcdGludCByZXQgPSB3NTEwMF9zcGlfd3JpdGUobmRldiwgYWRkciAmIzQzOyBpLCBidWZbaV0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTk0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy0xMDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6MTAyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgdzUxMDBfb3BzIHc1MTAwX3NwaV9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtMTAzLVx0Lm1heV9zbGVlcCA9IHRydWUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtMTA0LVx0LmNoaXBfaWQgPSBXNTEwMCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzoxMDU6XHQucmVhZCA9IHc1MTAwX3NwaV9yZWFkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjEwNjpcdC53cml0ZSA9IHc1MTAwX3NwaV93cml0ZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzoxMDc6XHQucmVhZDE2ID0gdzUxMDBfc3BpX3JlYWQxNixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzoxMDg6XHQud3JpdGUxNiA9IHc1MTAwX3NwaV93cml0ZTE2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjEwOTpcdC5yZWFkYnVsayA9IHc1MTAwX3NwaV9yZWFkYnVsayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzoxMTA6XHQud3JpdGVidWxrID0gdzUxMDBfc3BpX3dyaXRlYnVsayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy0xMTEtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM9MTI1PXN0YXRpYyBzdHJ1Y3QgdzUyMDBfc3BpX3ByaXYgKnc1MjAwX3NwaV9wcml2KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTEyNi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6MTI3Olx0cmV0dXJuIHc1MTAwX29wc19wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTEyOC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jPTIxMz1zdGF0aWMgaW50IHc1MjAwX3NwaV93cml0ZWJ1bGsoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHUzMiBhZGRyLCBjb25zdCB1OCAqYnVmLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy0yNDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6MjQzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgdzUxMDBfb3BzIHc1MjAwX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy0yNDQtXHQubWF5X3NsZWVwID0gdHJ1ZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM9MjcwPXN0YXRpYyBzdHJ1Y3QgdzU1MDBfc3BpX3ByaXYgKnc1NTAwX3NwaV9wcml2KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTI3MS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6MjcyOlx0cmV0dXJuIHc1MTAwX29wc19wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTI3My19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jPTM3Mj1zdGF0aWMgaW50IHc1NTAwX3NwaV93cml0ZWJ1bGsoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHUzMiBhZGRyLCBjb25zdCB1OCAqYnVmLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00MDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDAxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgdzUxMDBfb3BzIHc1NTAwX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00MDItXHQubWF5X3NsZWVwID0gdHJ1ZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQxMzpzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB3NTEwMF9vZl9tYXRjaFtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQxNDpcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDt3aXpuZXQsdzUxMDBcJiMzNDssIC5kYXRhID0gKGNvbnN0IHZvaWQqKVc1MTAwLCB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQxNS1cdHsgLmNvbXBhdGlibGUgPSBcJiMzNDt3aXpuZXQsdzUyMDBcJiMzNDssIC5kYXRhID0gKGNvbnN0IHZvaWQqKVc1MjAwLCB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00MTgtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0MTk6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgdzUxMDBfb2ZfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQyMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0MjE6c3RhdGljIGludCB3NTEwMF9zcGlfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00MjIte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQyMzpcdGNvbnN0IHN0cnVjdCB3NTEwMF9vcHMgKm9wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00MjQtXHRrZXJuZWxfdWxvbmdfdCBkcml2ZXJfZGF0YTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDM3LVx0Y2FzZSBXNTEwMDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0Mzg6XHRcdG9wcyA9IFx1MDAyNnc1MTAwX3NwaV9vcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDM5LVx0XHRwcml2X3NpemUgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDUzOlx0cmV0dXJuIHc1MTAwX3Byb2JlKFx1MDAyNnNwaS1cdTAwM2VkZXYsIG9wcywgcHJpdl9zaXplLCBtYWMsIHNwaS1cdTAwM2VpcnEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQ1NC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDU1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ1NjpzdGF0aWMgdm9pZCB3NTEwMF9zcGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDU3LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0NTg6XHR3NTEwMF9yZW1vdmUoXHUwMDI2c3BpLVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDU5LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDYxOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3BpX2RldmljZV9pZCB3NTEwMF9zcGlfaWRzW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDYyOlx0eyBcJiMzNDt3NTEwMFwmIzM0OywgVzUxMDAgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NjMtXHR7IFwmIzM0O3c1MjAwXCYjMzQ7LCBXNTIwMCB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NjYtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0Njc6TU9EVUxFX0RFVklDRV9UQUJMRShzcGksIHc1MTAwX3NwaV9pZHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQ2OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0Njk6c3RhdGljIHN0cnVjdCBzcGlfZHJpdmVyIHc1MTAwX3NwaV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDcwLVx0LmRyaXZlclx0XHQ9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0NzE6XHRcdC5uYW1lXHQ9IFwmIzM0O3c1MTAwXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ3MjpcdFx0LnBtXHQ9IFx1MDAyNnc1MTAwX3BtX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0NzM6XHRcdC5vZl9tYXRjaF90YWJsZSA9IHc1MTAwX29mX21hdGNoLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQ3NC1cdH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDc1Olx0LnByb2JlXHRcdD0gdzUxMDBfc3BpX3Byb2JlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ3NjpcdC5yZW1vdmVcdFx0PSB3NTEwMF9zcGlfcmVtb3ZlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ3NzpcdC5pZF90YWJsZVx0PSB3NTEwMF9zcGlfaWRzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQ3OC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ3OTptb2R1bGVfc3BpX2RyaXZlcih3NTEwMF9zcGlfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00ODAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoyNzojaW5jbHVkZSBcJiMzNDt3NTEwMC5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjI5OiNkZWZpbmUgRFJWX05BTUVcdFwmIzM0O3c1MTAwXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMC0jZGVmaW5lIERSVl9WRVJTSU9OXHRcJiMzNDsyMDEyLTA0LTA0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM9MzU9TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0xNDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoxNDU6c3RydWN0IHc1MTAwX3ByaXYge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MTQ2Olx0Y29uc3Qgc3RydWN0IHc1MTAwX29wcyAqb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMTQ3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE3My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjE3NDpzdGF0aWMgaW50IHc1MTAwX3JlYWQoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYsIHUzMiBhZGRyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMTc1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0xNzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoxNzk6c3RhdGljIGludCB3NTEwMF93cml0ZShzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiwgdTMyIGFkZHIsIHU4IGRhdGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0xODAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE4My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjE4NDpzdGF0aWMgaW50IHc1MTAwX3JlYWQxNihzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiwgdTMyIGFkZHIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0xODUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE4OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjE4OTpzdGF0aWMgaW50IHc1MTAwX3dyaXRlMTYoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYsIHUzMiBhZGRyLCB1MTYgZGF0YSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE5MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMTkzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MTk0OnN0YXRpYyBpbnQgdzUxMDBfcmVhZGJ1bGsoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYsIHUzMiBhZGRyLCB1OCAqYnVmLCBpbnQgbGVuKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMTk1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0xOTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoxOTk6c3RhdGljIGludCB3NTEwMF93cml0ZWJ1bGsoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYsIHUzMiBhZGRyLCBjb25zdCB1OCAqYnVmLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjAwLVx0XHRcdCAgIGludCBsZW4pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjA0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjA1OnN0YXRpYyBpbnQgdzUxMDBfcmVhZGJ1ZihzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiwgdTE2IG9mZnNldCwgdTggKmJ1ZiwgaW50IGxlbilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTIwNi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjIwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjIxOlx0cmV0ID0gdzUxMDBfcmVhZGJ1bGsocHJpdiwgYWRkciwgYnVmLCBsZW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjIyLVx0aWYgKHJldCB8fCAhcmVtYWluKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTIyNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjIyNTpcdHJldHVybiB3NTEwMF9yZWFkYnVsayhwcml2LCBtZW1fc3RhcnQsIGJ1ZiAmIzQzOyBsZW4sIHJlbWFpbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yMjYtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjI3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjI4OnN0YXRpYyBpbnQgdzUxMDBfd3JpdGVidWYoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYsIHUxNiBvZmZzZXQsIGNvbnN0IHU4ICpidWYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yMjktXHRcdFx0ICBpbnQgbGVuKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI0NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjI0NTpcdHJldCA9IHc1MTAwX3dyaXRlYnVsayhwcml2LCBhZGRyLCBidWYsIGxlbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNDYtXHRpZiAocmV0IHx8ICFyZW1haW4pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjQ4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjQ5Olx0cmV0dXJuIHc1MTAwX3dyaXRlYnVsayhwcml2LCBtZW1fc3RhcnQsIGJ1ZiAmIzQzOyBsZW4sIHJlbWFpbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNTAtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjUxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjUyOnN0YXRpYyBpbnQgdzUxMDBfcmVzZXQoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNTMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI1Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjI1NzpcdHc1MTAwX3dyaXRlKHByaXYsIFc1MTAwX01SLCBNUl9SU1QpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjU4LVx0bWRlbGF5KDUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjU5Olx0dzUxMDBfd3JpdGUocHJpdiwgVzUxMDBfTVIsIE1SX1BCKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI2MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoyNjQ6c3RhdGljIGludCB3NTEwMF9jb21tYW5kKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2LCB1MTYgY21kKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjY1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoyNjg6XHR3NTEwMF93cml0ZShwcml2LCBXNTEwMF9TMF9DUihwcml2KSwgY21kKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI2OS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoyNzI6XHR3aGlsZSAodzUxMDBfcmVhZChwcml2LCBXNTEwMF9TMF9DUihwcml2KSkgIT0gMCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjczLVx0XHRpZiAodGltZV9hZnRlcihqaWZmaWVzLCB0aW1lb3V0KSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yODAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoyODE6c3RhdGljIHZvaWQgdzUxMDBfd3JpdGVfbWFjYWRkcihzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI4Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjg0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mjg1Olx0dzUxMDBfd3JpdGVidWxrKHByaXYsIFc1MTAwX1NIQVIsIG5kZXYtXHUwMDNlZGV2X2FkZHIsIEVUSF9BTEVOKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI4Ni19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoyODg6c3RhdGljIHZvaWQgdzUxMDBfc29ja2V0X2ludHJfbWFzayhzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiwgdTggbWFzaylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI4OS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjk2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mjk3Olx0dzUxMDBfd3JpdGUocHJpdiwgaW1yLCBtYXNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI5OC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yOTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozMDA6c3RhdGljIHZvaWQgdzUxMDBfZW5hYmxlX2ludHIoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMDEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzAyOlx0dzUxMDBfc29ja2V0X2ludHJfbWFzayhwcml2LCBJUl9TMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMDMtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzA0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzA1OnN0YXRpYyB2b2lkIHc1MTAwX2Rpc2FibGVfaW50cihzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMwNi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozMDc6XHR3NTEwMF9zb2NrZXRfaW50cl9tYXNrKHByaXYsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzA4LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMwOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjMxMDpzdGF0aWMgdm9pZCB3NTEwMF9tZW1vcnlfY29uZmlndXJlKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzExLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMTQtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjMxNTpcdHc1MTAwX3dyaXRlKHByaXYsIFc1MTAwX1JNU1IsIDB4MDMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzE2Olx0dzUxMDBfd3JpdGUocHJpdiwgVzUxMDBfVE1TUiwgMHgwMyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMTctfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzE5OnN0YXRpYyB2b2lkIHc1MjAwX21lbW9yeV9jb25maWd1cmUoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMjAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMyNS1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzI2Olx0dzUxMDBfd3JpdGUocHJpdiwgVzUyMDBfU25fUlhNRU1fU0laRSgwKSwgMHgxMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozMjc6XHR3NTEwMF93cml0ZShwcml2LCBXNTIwMF9Tbl9UWE1FTV9TSVpFKDApLCAweDEwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMyOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMyOS1cdGZvciAoaSA9IDE7IGkgXHUwMDNjIDg7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozMzA6XHRcdHc1MTAwX3dyaXRlKHByaXYsIFc1MjAwX1NuX1JYTUVNX1NJWkUoaSksIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzMxOlx0XHR3NTEwMF93cml0ZShwcml2LCBXNTIwMF9Tbl9UWE1FTV9TSVpFKGkpLCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMzMi1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozMzU6c3RhdGljIHZvaWQgdzU1MDBfbWVtb3J5X2NvbmZpZ3VyZShzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMzNi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzQxLVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozNDI6XHR3NTEwMF93cml0ZShwcml2LCBXNTUwMF9Tbl9SWE1FTV9TSVpFKDApLCAweDEwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM0MzpcdHc1MTAwX3dyaXRlKHByaXYsIFc1NTAwX1NuX1RYTUVNX1NJWkUoMCksIDB4MTApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzQ1LVx0Zm9yIChpID0gMTsgaSBcdTAwM2MgODsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM0NjpcdFx0dzUxMDBfd3JpdGUocHJpdiwgVzU1MDBfU25fUlhNRU1fU0laRShpKSwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozNDc6XHRcdHc1MTAwX3dyaXRlKHByaXYsIFc1NTAwX1NuX1RYTUVNX1NJWkUoaSksIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzQ4LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM1MTpzdGF0aWMgaW50IHc1MTAwX2h3X3Jlc2V0KHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzUyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zNTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozNTU6XHR3NTEwMF9yZXNldChwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM1Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM1NzpcdHc1MTAwX2Rpc2FibGVfaW50cihwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM1ODpcdHc1MTAwX3dyaXRlX21hY2FkZHIocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zNTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzYxLVx0Y2FzZSBXNTEwMDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM2MjpcdFx0dzUxMDBfbWVtb3J5X2NvbmZpZ3VyZShwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM2My1cdFx0cnRyID0gVzUxMDBfUlRSO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM3Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM3NzpcdGlmICh3NTEwMF9yZWFkMTYocHJpdiwgcnRyKSAhPSBSVFJfREVGQVVMVClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM3OC1cdFx0cmV0dXJuIC1FTk9ERVY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzgyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzgzOnN0YXRpYyB2b2lkIHc1MTAwX2h3X3N0YXJ0KHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzg0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zOTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozOTQ6XHR3NTEwMF93cml0ZShwcml2LCBXNTEwMF9TMF9NUihwcml2KSwgbW9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozOTU6XHR3NTEwMF9jb21tYW5kKHByaXYsIFMwX0NSX09QRU4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mzk2Olx0dzUxMDBfZW5hYmxlX2ludHIocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zOTctfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzk4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mzk5OnN0YXRpYyB2b2lkIHc1MTAwX2h3X2Nsb3NlKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDAwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQwMTpcdHc1MTAwX2Rpc2FibGVfaW50cihwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQwMjpcdHc1MTAwX2NvbW1hbmQocHJpdiwgUzBfQ1JfQ0xPU0UpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDAzLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00MTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0MTE6c3RhdGljIHZvaWQgdzUxMDBfZ2V0X2RydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00MTItXHRcdFx0ICAgICAgc3RydWN0IGV0aHRvb2xfZHJ2aW5mbyAqaW5mbylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00MTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0MjA6c3RhdGljIHUzMiB3NTEwMF9nZXRfbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQyMS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0MjI6XHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDIzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQzMDpzdGF0aWMgdTMyIHc1MTAwX2dldF9tc2dsZXZlbChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQzMS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0MzI6XHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDMzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQzNzpzdGF0aWMgdm9pZCB3NTEwMF9zZXRfbXNnbGV2ZWwoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHUzMiB2YWx1ZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQzOC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0Mzk6XHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDQwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ0My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ0NDpzdGF0aWMgaW50IHc1MTAwX2dldF9yZWdzX2xlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ0NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDQ4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDQ5OnN0YXRpYyB2b2lkIHc1MTAwX2dldF9yZWdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDUwLVx0XHRcdCAgIHN0cnVjdCBldGh0b29sX3JlZ3MgKnJlZ3MsIHZvaWQgKmJ1ZilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ1MS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0NTI6XHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDUzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDU0LVx0cmVncy1cdTAwM2V2ZXJzaW9uID0gMTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ1NTpcdHc1MTAwX3JlYWRidWxrKHByaXYsIFc1MTAwX0NPTU1PTl9SRUdTLCBidWYsIFc1MTAwX0NPTU1PTl9SRUdTX0xFTik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NTYtXHRidWYgJiM0Mzs9IFc1MTAwX0NPTU1PTl9SRUdTX0xFTjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ1NzpcdHc1MTAwX3JlYWRidWxrKHByaXYsIFMwX1JFR1MocHJpdiksIGJ1ZiwgVzUxMDBfUzBfUkVHU19MRU4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDU4LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ1OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ2MDpzdGF0aWMgdm9pZCB3NTEwMF9yZXN0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDYxLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ2MjpcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NjQtXHRuZXRpZl9zdG9wX3F1ZXVlKG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDY1Olx0dzUxMDBfaHdfcmVzZXQocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0NjY6XHR3NTEwMF9od19zdGFydChwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ2Ny1cdG5kZXYtXHUwMDNlc3RhdHMudHhfZXJyb3JzJiM0MzsmIzQzOztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0NzI6c3RhdGljIHZvaWQgdzUxMDBfcmVzdGFydF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ3My17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0NzQ6XHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdzUxMDBfcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ3NS1cdFx0XHRcdFx0ICAgICAgIHJlc3RhcnRfd29yayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0Nzc6XHR3NTEwMF9yZXN0YXJ0KHByaXYtXHUwMDNlbmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NzgtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDc5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDgwOnN0YXRpYyB2b2lkIHc1MTAwX3R4X3RpbWVvdXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHVuc2lnbmVkIGludCB0eHF1ZXVlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDgxLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ4MjpcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00ODMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDg2LVx0ZWxzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDg3Olx0XHR3NTEwMF9yZXN0YXJ0KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDg4LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ4OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ5MDpzdGF0aWMgdm9pZCB3NTEwMF90eF9za2Ioc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00OTEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDkyOlx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ5My1cdHUxNiBvZmZzZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00OTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0OTU6XHRvZmZzZXQgPSB3NTEwMF9yZWFkMTYocHJpdiwgVzUxMDBfUzBfVFhfV1IocHJpdikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDk2Olx0dzUxMDBfd3JpdGVidWYocHJpdiwgb2Zmc2V0LCBza2ItXHUwMDNlZGF0YSwgc2tiLVx1MDAzZWxlbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0OTc6XHR3NTEwMF93cml0ZTE2KHByaXYsIFc1MTAwX1MwX1RYX1dSKHByaXYpLCBvZmZzZXQgJiM0Mzsgc2tiLVx1MDAzZWxlbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00OTgtXHRuZGV2LVx1MDAzZXN0YXRzLnR4X2J5dGVzICYjNDM7PSBza2ItXHUwMDNlbGVuO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTUwMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUwMjpcdHc1MTAwX2NvbW1hbmQocHJpdiwgUzBfQ1JfU0VORCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MDMtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTA0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTA1OnN0YXRpYyB2b2lkIHc1MTAwX3R4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTA2LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUwNzpcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB3NTEwMF9wcml2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTA4LVx0XHRcdFx0XHQgICAgICAgdHhfd29yayk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTE0LVx0XHRyZXR1cm47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1MTU6XHR3NTEwMF90eF9za2IocHJpdi1cdTAwM2VuZGV2LCBza2IpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTE2LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTUxNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUxODpzdGF0aWMgbmV0ZGV2X3R4X3QgdzUxMDBfc3RhcnRfdHgoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MTkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTIwOlx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTUyMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MjgtXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTI5Olx0XHR3NTEwMF90eF9za2IobmRldiwgc2tiKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTUzMC1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1MzU6c3RhdGljIHN0cnVjdCBza19idWZmICp3NTEwMF9yeF9za2Ioc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MzYte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTM3Olx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTUzOC1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTQxLVx0dTggaGVhZGVyWzJdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTQyOlx0dTE2IHJ4X2J1Zl9sZW4gPSB3NTEwMF9yZWFkMTYocHJpdiwgVzUxMDBfUzBfUlhfUlNSKHByaXYpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU0My1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1NDc6XHRvZmZzZXQgPSB3NTEwMF9yZWFkMTYocHJpdiwgVzUxMDBfUzBfUlhfUkQocHJpdikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTQ4Olx0dzUxMDBfcmVhZGJ1Zihwcml2LCBvZmZzZXQsIGhlYWRlciwgMik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NDktXHRyeF9sZW4gPSBnZXRfdW5hbGlnbmVkX2JlMTYoaGVhZGVyKSAtIDI7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTUyLVx0aWYgKHVubGlrZWx5KCFza2IpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1NTM6XHRcdHc1MTAwX3dyaXRlMTYocHJpdiwgVzUxMDBfUzBfUlhfUkQocHJpdiksIG9mZnNldCAmIzQzOyByeF9idWZfbGVuKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjU1NDpcdFx0dzUxMDBfY29tbWFuZChwcml2LCBTMF9DUl9SRUNWKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU1NS1cdFx0bmRldi1cdTAwM2VzdGF0cy5yeF9kcm9wcGVkJiM0MzsmIzQzOztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NTktXHRza2JfcHV0KHNrYiwgcnhfbGVuKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjU2MDpcdHc1MTAwX3JlYWRidWYocHJpdiwgb2Zmc2V0ICYjNDM7IDIsIHNrYi1cdTAwM2VkYXRhLCByeF9sZW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTYxOlx0dzUxMDBfd3JpdGUxNihwcml2LCBXNTEwMF9TMF9SWF9SRChwcml2KSwgb2Zmc2V0ICYjNDM7IDIgJiM0MzsgcnhfbGVuKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjU2MjpcdHc1MTAwX2NvbW1hbmQocHJpdiwgUzBfQ1JfUkVDVik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NjMtXHRza2ItXHUwMDNlcHJvdG9jb2wgPSBldGhfdHlwZV90cmFucyhza2IsIG5kZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU3MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjU3MTpzdGF0aWMgdm9pZCB3NTEwMF9yeF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU3Mi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1NzM6XHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdzUxMDBfcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU3NC1cdFx0XHRcdFx0ICAgICAgIHJ4X3dvcmspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU3Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjU3NzpcdHdoaWxlICgoc2tiID0gdzUxMDBfcnhfc2tiKHByaXYtXHUwMDNlbmRldikpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTc4LVx0XHRuZXRpZl9yeChza2IpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTc5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTgwOlx0dzUxMDBfZW5hYmxlX2ludHIocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01ODEtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTgyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTgzOnN0YXRpYyBpbnQgdzUxMDBfbmFwaV9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU4NC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1ODU6XHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IGNvbnRhaW5lcl9vZihuYXBpLCBzdHJ1Y3QgdzUxMDBfcHJpdiwgbmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01ODYtXHRpbnQgcnhfY291bnQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTg4LVx0Zm9yIChyeF9jb3VudCA9IDA7IHJ4X2NvdW50IFx1MDAzYyBidWRnZXQ7IHJ4X2NvdW50JiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTg5Olx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gdzUxMDBfcnhfc2tiKHByaXYtXHUwMDNlbmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01OTAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTk4LVx0XHRuYXBpX2NvbXBsZXRlX2RvbmUobmFwaSwgcnhfY291bnQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTk5Olx0XHR3NTEwMF9lbmFibGVfaW50cihwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTYwMC1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo2MDU6c3RhdGljIGlycXJldHVybl90IHc1MTAwX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpuZGV2X2luc3RhbmNlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjA2LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTYwNy1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gbmRldl9pbnN0YW5jZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjYwODpcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo2MTA6XHRpbnQgaXIgPSB3NTEwMF9yZWFkKHByaXYsIFc1MTAwX1MwX0lSKHByaXYpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTYxMS1cdGlmICghaXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MTItXHRcdHJldHVybiBJUlFfTk9ORTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjYxMzpcdHc1MTAwX3dyaXRlKHByaXYsIFc1MTAwX1MwX0lSKHByaXYpLCBpcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MTQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjIwLVx0aWYgKGlyIFx1MDAyNiBTMF9JUl9SRUNWKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo2MjE6XHRcdHc1MTAwX2Rpc2FibGVfaW50cihwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTYyMi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo2MzI6c3RhdGljIGlycXJldHVybl90IHc1MTAwX2RldGVjdF9saW5rKGludCBpcnEsIHZvaWQgKm5kZXZfaW5zdGFuY2UpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MzMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjM0LVx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSBuZGV2X2luc3RhbmNlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NjM1Olx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTYzNi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02NDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo2NTA6c3RhdGljIHZvaWQgdzUxMDBfc2V0cnhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02NTEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NjUyOlx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHc1MTAwX3ByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02NTMtXHRcdFx0XHRcdCAgICAgICBzZXRyeF93b3JrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTY1NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjY1NTpcdHc1MTAwX2h3X3N0YXJ0KHByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjU2LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTY1Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjY1ODpzdGF0aWMgdm9pZCB3NTEwMF9zZXRfcnhfbW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTY1OS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo2NjA6XHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjYxLVx0Ym9vbCBzZXRfcHJvbWlzYyA9IChuZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfUFJPTUlTQykgIT0gMDtcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNTo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTYzNgoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDQwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIHRoZSBXNTEwMCBEcml2ZXIqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jYCBkcml2ZXIsIHNwZWNpZmljYWxseSwgYW5kIHdoZXRoZXIgaXQmIzM5O3Mgd29ydGggZnV6emluZyBpbiB0aGUgY29udGV4dCBvZiBvdXIgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIEl0JiMzOTtzIGVpdGhlciBhbiBTUEkgZGV2aWNlLCBhcyBwZXIgYHc1MTAwLXNwaS5jYCwgb3IgYSBwbGF0Zm9ybSBkZXZpY2UuIFRoZSBjcml0aWNhbCBxdWVzdGlvbjogY2FuIFN5emthbGxlciBpbnN0YW50aWF0ZSBpdCBkaXJlY3RseT8KClN5emthbGxlciBjYW4gd29yayB3aXRoIFNQSSBkZXZpY2VzLCByaWdodD8gQnV0IGl0IG5lZWRzIGEgbWVjaGFuaXNtIOKAkyBlaXRoZXIgaW5qZWN0aW9uLCBwc2V1ZG8tZGV2aWNlcywgb3IgZGV2aWNlIHRyZWUgb3ZlcmxheXMuIEFuZCB0aGUgdXN1YWwgUUVNVSBzZXR1cCBkb2VzbiYjMzk7dCBqdXN0ICpoYXZlKiBTUEkgZGV2aWNlcyBseWluZyBhcm91bmQgdW5sZXNzIHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBEb2VzIFFFTVUgZXZlbiBoYXZlIGEgdmlydHVhbCBTUEkgY29udHJvbGxlciBieSBkZWZhdWx0PyBZZXMsIGJ1dCB0eXBpY2FsbHkgd2l0aG91dCBhIFc1MTAwIGF0dGFjaGVkLiBTbywgU3l6a2FsbGVyICpjb3VsZCogdGVzdCBpdCBpZiB0aGUgcHJvYmUgZ2V0cyB0cmlnZ2VyZWQuCgpJcyBgdzUxMDBfcHJvYmVgIHJlYWNoYWJsZT8gTGV0JiMzOTtzIHRyYWNlIGl0LiBJdCYjMzk7cyBjYWxsZWQgZnJvbSBlaXRoZXIgYHc1MTAwX3NwaV9wcm9iZWAgb3IgYHc1MTAwX21taW9fcHJvYmVgLiBDYW4gU3l6a2FsbGVyIGRpcmVjdGx5IHRyaWdnZXIgYHc1MTAwX3Byb2JlYD8gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyBubywgYmVjYXVzZSB3aGlsZSBTeXprYWxsZXIgaGFzIGBzeXpfZ2VuZXRsaW5rX2dldF9mYW1pbHlgIGFuZCBzbyBvbiwgaXQgdXN1YWxseSBzdHJ1Z2dsZXMgd2l0aCBwbGF0Zm9ybS9TUEkgZGV2aWNlcyB1bmxlc3MgdGhlcmUmIzM5O3MgYSBzcGVjaWZpYyBTeXprYWxsZXIgZGVzY3JpcHRpb24sIG9yIGlmIGl0JiMzOTtzIGEgUENJIG9yIFVTQiBkZXZpY2UsIGJvdGggb2Ygd2hpY2ggY2FuIGJlIGVtdWxhdGVkLgoKTm93LCB0aGUgcHJvbXB0JiMzOTtzIGluc3RydWN0aW9ucyBhcmUga2V5LiBJdCBzdGF0ZXMgYSAmIzM0O1dvcnRoRnV6emluZz1mYWxzZSYjMzQ7IGlmIHRoZSBwYXRjaCBjb25jZXJucyBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIHNwZWNpZmljYWxseSBpZiBpdCYjMzk7cyBzb2Z0d2FyZS1lbXVsYXRlZCwgb3IgZXZlbiBtb3JlLCBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycy4gVGhpbmdzIHRoYXQgbmVlZCBwaHlzaWNhbCBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KClNvLCB0aGUgY3J1eCBvZiB0aGUgbWF0dGVyOiAqaXMqIHRoZSBXNTEwMCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VPyBUaGlzIGlzIHRoZSBjcml0aWNhbCBxdWVzdGlvbi4gSSBuZWVkIHRvIHZlcmlmeSB3aGV0aGVyIHRoZSBXNTEwMCBpcyBwcmVzZW50IGluIHRoZSBzdGFuZGFyZCBRRU1VIGNvbmZpZ3VyYXRpb24uIFRoYXQmIzM5O3MgdGhlIGZpcnN0IHRoaW5nIHRvIGNoZWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE1OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dzUxMDAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDt0b29scy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE1OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNTY5CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIHN1bW1hcml6ZWQgYXMgcmVxdWVzdGVkOgoKKipDaGVja2luZyBTeXprYWxsZXIgZm9yIFc1MTAwIEluZm9ybWF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHN5emthbGxlciBjb3ZlcmFnZSwgaWYgYW55LCBmb3IgdGhlIFc1MTAwLiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIHNlZSBpZiB0aGVyZSBhcmUgZXhpc3RpbmcgZGVzY3JpcHRpb25zLCBkZWZpbml0aW9ucywgb3IgZXZlbiBqdXN0IG1lbnRpb25zIG9mIHRoYXQgc3BlY2lmaWMgaGFyZHdhcmUgY29tcG9uZW50IHdpdGhpbiB0aGUgc3l6a2FsbGVyIGZyYW1ld29yay4gVGhpcyB3aWxsIGRpY3RhdGUgbXkgbmV4dCBzdGVwcy4gSWYgaXQmIzM5O3MgYWxyZWFkeSBkb2N1bWVudGVkLCBJIGNhbiBidWlsZCBvbiB0aGF0IGtub3dsZWRnZS4gSWYgbm90LCB0aGVuIEkga25vdyBJJiMzOTttIHN0YXJ0aW5nIGZyb20gc2NyYXRjaCwgd2hpY2ggd2lsbCByZXF1aXJlIGEgbXVjaCBkaWZmZXJlbnQgYXBwcm9hY2guIEVpdGhlciB3YXksIGNoZWNraW5nIHN5emthbGxlciBpcyB0aGUgaW50ZWxsaWdlbnQgaW5pdGlhbCBtb3ZlLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3Mgb3V0IHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE1OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dzUxMDAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNTo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+N208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDc5MgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDg0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFN5emthbGxlciBDb250ZXh0IGZvciBXaXpuZXQgVzUxMDAgVnVsbmVyYWJpbGl0eSoqCgpPa2F5LCBmaXJzdCB0aG91Z2h0OiBXYWl0LCB0aG9zZSBzeXprYWxsZXIgZGVzY3JpcHRpb25zIGFyZW4mIzM5O3QgYWN0dWFsbHkgKmluKiB0aGUga2VybmVsIHRyZWUsIHJpZ2h0PyBCdXQgdGhlIHByb21wdCBzdGF0ZXMgYW4gaW1wb3NzaWJpbGl0eTogcmVhY2hpbmcgY29kZSBwYXRocyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIGVtdWxhdGVkIGhhcmR3YXJlLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoZSBXaXpuZXQgVzUxMDAgaXMgYW4gZW1iZWRkZWQgRXRoZXJuZXQgY29udHJvbGxlciwgdHlwaWNhbGx5IHVzZWQgaW4gc29tZXRoaW5nIGxpa2UgYW4gQXJkdWlubywgYW5kIGl0IGNvbm5lY3RzIHZpYSBTUEkgb3IgbWVtb3J5LW1hcHBlZCBJL08uCgpDYW4gdGhpcyBjb2RlIGV2ZW4gKmJlKiByZWFjaGVkIGluIFFFTVU/IEhtbSwgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoZSBXNTEwMC4gU28sIGNhbiBzeXprYWxsZXIgZXZlbiBpbnN0YW50aWF0ZSB0aG9zZSBwbGF0Zm9ybSBvciBTUEkgZGV2aWNlcz8gTm8sIHRoYXQgYHN5el9kZXZsaW5rYCBvciBzaW1pbGFyIGRvZXNuJiMzOTt0IGRvIHRoYXQsIGRvZXMgaXQ/IEkgYmVsaWV2ZSBzeXprYWxsZXIgY2FuIGluamVjdCBkZXZpY2UgdHJlZSBvdmVybGF5cyBvciB1c2UgYHBsYXRmb3JtX2RldmljZV9yZWdpc3RlcmAsIHByb3ZpZGVkIHRoZXJlJiMzOTtzIGEgcHNldWRvLXN5c2NhbGwuIEJ1dCBnZW5lcmFsbHksIGl0IGRvZXNuJiMzOTt0LgoKSG93IGFib3V0IGEgd2F5IHRvIHRyaWdnZXIgYHc1MTAwX3Byb2JlYCBkaXJlY3RseT8gSSB3b25kZXIuLi4gdGhyb3VnaCBgc3lzZnNgPyBOYWgsIHlvdSBjYW4mIzM5O3QganVzdCAqY3JlYXRlKiBhbiBTUEkgZGV2aWNlIGZyb20gc3lzZnMgdW5sZXNzIHlvdSBoYXZlIGFuIFNQSSBjb250cm9sbGVyIHRoYXQgc3VwcG9ydHMgaXQsIGxpa2UgYHNwaWRldmAsIHJpZ2h0PyBObywgYHNwaWRldmAgaXMgZm9yIHVzZXJzcGFjZSBTUEkgYWNjZXNzLgoKV2FpdCwgaXNuJiMzOTt0IHRoZXJlIHNvbWV0aGluZyBsaWtlIGBzcGktbW9ja2A/IEkgc2hvdWxkIGNoZWNrIGlmIHRoZXJlJiMzOTtzICphbnkqIHdheSB0byBwcm9iZSBTUEkgZGV2aWNlcyB3aXRoaW4gc3l6a2FsbGVyLiBEb2VzIHN5emthbGxlciBoYXZlIHNvbWV0aGluZyBsaWtlIGBzeXpfc3BpX3NldHVwYD8gTm9wZS4KCk9rYXksIGxldCYjMzk7cyBzdGVwIGJhY2suIElmIHRoZSBwYXRjaCBpcyBhdXRob3JlZCBieSBgc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0O2AsIGl0ICptaWdodCogbWVhbiBzeXprYWxsZXIgZm91bmQgYSBjcmFzaCBvciB3YXMgdGVzdGluZyB0aGlzIHBhdGNoLCByaWdodD8gV2FpdCwgaG9sZCBvbi4gVGhlIHByb21wdCBpcyBzYXlpbmc6CgpgYGAKY29tbWl0IDcyNGM4ZjcxZjhiZTA5OTRmMTQ3Y2U1ZmEzNzllNTYyZjFlMTFiZDIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyA0IDE1OjQ1OjU0IDIwMjYgJiM0MzswMDAwCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKYGBgCgpUaGlzIGlzIGp1c3QgYSBkdW1teSBjb21taXQgbWVzc2FnZSBmcm9tIHN5emthbGxlciwgcmlnaHQ/IFRoaXMgbWVhbnMgaXQmIzM5O3MganVzdCB0ZXN0aW5nIHBhdGNoZXMgc2VudCB0byB0aGUgbWFpbGluZyBsaXN0cy4gSWYgc29tZW9uZSBzZW5kcyBhIHBhdGNoIGZvciBgdzUxMDBgLCBzeXprYWxsZXIgd2lsbCB0cnkgYW5kIHRlc3QgaXQsIG1heWJlIGp1c3QgY29tcGlsZSBpdCBhbmQgZmluZCBubyBjb3ZlcmFnZS4KClNvIGlmIGl0JiMzOTtzIGFuIFNQSS9NTUlPIGRldmljZSwgaXQgKnJlcXVpcmVzKiBoYXJkd2FyZSBvciBhIGZ1bGwgUUVNVSBlbXVsYXRpb24uIERvZXMgUUVNVSBlbXVsYXRlIFc1MTAwPyBOby4gRG9lcyBRRU1VIGVtdWxhdGUgVzU1MDA/IE5vLiBTbyBJIHNob3VsZCBjaGVjayBpZiB0aGVyZSYjMzk7cyAqYW55KiBRRU1VIGVtdWxhdGlvbiBmb3IgV2l6bmV0LgoKQ2FuJiMzOTt0IGRvIGEgZnVsbCBzb3VyY2Ugc2VhcmNoLCBidXQgSSAqa25vdyogV2l6bmV0IGlzbiYjMzk7dCBhIHN0YW5kYXJkIFFFTVUgZGV2aWNlLiBTdGFuZGFyZCBkZXZpY2VzIGFyZSB0aGluZ3MgbGlrZSBlMTAwMCwgcnRsODEzOSwgdmlydGlvLW5ldCwgbmUyaywgcGNuZXQsIHZteG5ldDMsIGV0Yy4gQWxzbywgdGhpcyBwYXRjaCBpcyBhZGRpbmcgYSBHUElPIGxpbmsgZGV0ZWN0aW9uLCBhbmQgR1BJT3MgYXJlICpoYXJkd2FyZS1zcGVjaWZpYyosIHJpZ2h0PwoKVGhlcmVmb3JlLCB0aGlzIGRyaXZlciBpcyBmb3IgYSBwaHlzaWNhbCBjaGlwIChXaXpuZXQgVzUxMDAvVzUyMDAvVzU1MDApIGNvbm5lY3RlZCB2aWEgU1BJIG9yIE1NSU8sIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0IG1lYW5zIGl0JiMzOTtzICppbXBvc3NpYmxlKiB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgdGhvdWdoLiBJcyB0aGVyZSBhbnkgc29ydCBvZiB2aXJ0dWFsIGRyaXZlciwgYW55dGhpbmcgYXQgYWxsPyBMZXQmIzM5O3MgY2hlY2sgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jYC4uLiBhaCwgYW5kIGB3NTEwMF9wcm9iZWAuIEl0JiMzOTtzIGNhbGxlZCBieSBgdzUxMDBfc3BpX3Byb2JlYCBpbiBgdzUxMDAtc3BpLmNgLiBZZXAsIGNvbmZpcm1lZC4gVGhpcyBjb25maXJtcyBpdCYjMzk7cyBub3QgcG9zc2libGUgdG8gcmVhY2ggdGhlIGNvZGUgcGF0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTU6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dzUxMDBfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYz00MjE9c3RhdGljIGludCB3NTEwMF9zcGlfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ1MzpcdHJldHVybiB3NTEwMF9wcm9iZShcdTAwMjZzcGktXHUwMDNlZGV2LCBvcHMsIHByaXZfc2l6ZSwgbWFjLCBzcGktXHUwMDNlaXJxKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NTQtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jPTc0MD1FWFBPUlRfU1lNQk9MX0dQTCh3NTEwMF9vcHNfcHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy03NDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo3NDI6aW50IHc1MTAwX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IHc1MTAwX29wcyAqb3BzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNzQzLVx0XHRpbnQgc2l6ZW9mX29wc19wcml2LCBjb25zdCB2b2lkICptYWNfYWRkciwgaW50IGlycSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy04ODktfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6ODkwOkVYUE9SVF9TWU1CT0xfR1BMKHc1MTAwX3Byb2JlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTg5MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuaD0yOT12b2lkICp3NTEwMF9vcHNfcHJpdihjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuaC0zMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5oOjMxOmludCB3NTEwMF9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCB3NTEwMF9vcHMgKm9wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5oLTMyLVx0XHRpbnQgc2l6ZW9mX29wc19wcml2LCBjb25zdCB2b2lkICptYWNfYWRkciwgaW50IGlycSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE1OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT40bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMTE2CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXMgcmVxdWVzdGVkOgoKKipEaWdnaW5nIGludG8gRnVuY3Rpb24gQ2FsbHMqKgoKQWxyaWdodCwgSSYjMzk7bSB0cnlpbmcgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoaXMgYHc1MTAwX3Byb2JlYCBmdW5jdGlvbi4gVGhlIGZpcnN0IHRoaW5nIHRoYXQgY29tZXMgdG8gbWluZCBpczogKklzIHRoZXJlIGFueXdoZXJlIGVsc2UgaW4gdGhpcyBjb2RlYmFzZSwgb3IgYW55IHJlbGF0ZWQgZmlsZXMsIHRoYXQgdGhpcyBmdW5jdGlvbiBnZXRzIGNhbGxlZD8qIEkgbmVlZCB0byBzZWUgdGhlIGJpZ2dlciBwaWN0dXJlLCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgZnVuY3Rpb24gZml0cyBpbnRvIHRoZSBvdmVyYWxsIGxvZ2ljIGFuZCB3aGF0IHRyaWdnZXJzIGl0cyBleGVjdXRpb24uIEtub3dpbmcgdGhlIGNhbGxlcnMgd2lsbCB0ZWxsIG1lIGl0cyBwdXJwb3NlLiBJIG5lZWQgYSBjb21wcmVoZW5zaXZlIG92ZXJ2aWV3IG9mIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGludGVncmF0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3c1MTAwX3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYz00MjE9c3RhdGljIGludCB3NTEwMF9zcGlfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ1MzpcdHJldHVybiB3NTEwMF9wcm9iZShcdTAwMjZzcGktXHUwMDNlZGV2LCBvcHMsIHByaXZfc2l6ZSwgbWFjLCBzcGktXHUwMDNlaXJxKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NTQtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jPTc0MD1FWFBPUlRfU1lNQk9MX0dQTCh3NTEwMF9vcHNfcHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy03NDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo3NDI6aW50IHc1MTAwX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IHc1MTAwX29wcyAqb3BzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNzQzLVx0XHRpbnQgc2l6ZW9mX29wc19wcml2LCBjb25zdCB2b2lkICptYWNfYWRkciwgaW50IGlycSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy04ODktfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6ODkwOkVYUE9SVF9TWU1CT0xfR1BMKHc1MTAwX3Byb2JlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTg5MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuaD0yOT12b2lkICp3NTEwMF9vcHNfcHJpdihjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuaC0zMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5oOjMxOmludCB3NTEwMF9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCB3NTEwMF9vcHMgKm9wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5oLTMyLVx0XHRpbnQgc2l6ZW9mX29wc19wcml2LCBjb25zdCB2b2lkICptYWNfYWRkciwgaW50IGlycSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzODQxCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqSW52ZXN0aWdhdGluZyB0aGUgVzUxMDAgRHJpdmVyIFByb2JlIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgZHJpdmVyIGNvZGUgYW5kIGl0IHNlZW1zIGB3NTEwMF9wcm9iZWAgaXMgb25seSBjYWxsZWQgYnkgYHc1MTAwX3NwaV9wcm9iZWAuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nLiBJJiMzOTttIHdvbmRlcmluZyBpZiB0aGVyZSB3YXMgZXZlciBhIGB3NTEwMC1tbWlvLmNgIGZpbGUgZm9yIG1lbW9yeS1tYXBwZWQgSS9PLiBEaWQgdGhleSBnZXQgcmlkIG9mIGl0IGNvbXBsZXRlbHksIG9yIGFtIEkganVzdCBub3Qgc2VlaW5nIGl0PyBJIGtub3cgaG93IHRoZXNlIHRoaW5ncyBnbywgc29tZXRpbWVzIGNvZGUgZ2V0cyBtb3ZlZCBvciByZWZhY3RvcmVkLiBMZXQgbWUgcXVpY2tseSBjaGVjayB0aGUgZW50aXJlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvYCBkaXJlY3RvcnkganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgSSBoYXZlbiYjMzk7dCBvdmVybG9va2VkIGFueSByZWxhdGVkIGZpbGVzLiBHb3R0YSBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O3c1MTAwLXNwaS5jJiMzNDssCiAgICAmIzM0O3c1MTAwLmMmIzM0OywKICAgICYjMzQ7dzUxMDAuaCYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MTcwCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMjE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVzUxMDAgRHJpdmVyIGluIGEgUUVNVSBFbnZpcm9ubWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgZmlsZXM6IGB3NTEwMC1zcGkuY2AsIGB3NTEwMC5jYCwgYW5kIGB3NTEwMC5oYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIGl0JiMzOTtzIGNsZWFyIHRoaXMgaXMgYW4gU1BJLWJhc2VkIGRldmljZS4gVGhhdCYjMzk7cyB0aGUga2V5LiBOb3csIHRoZSBzdGFuZGFyZCBRRU1VIHNldHVwIEkmIzM5O20gdXNpbmcgKmRvZXNuJiMzOTt0KiBlbXVsYXRlIFNQSSBkZXZpY2VzIG91dC1vZi10aGUtYm94LiBUaGF0JiMzOTtzIHRoZSBpbW1lZGlhdGUgcHJvYmxlbS4KCkxldCYjMzk7cyB0aGluay4gQ2FuIEkgc29tZWhvdyBpbmplY3QgYW4gU1BJIGRldmljZSB1c2luZyBzeXprYWxsZXI/IEkga25vdyBzeXprYWxsZXIgKmNhbiogYmUgcG93ZXJmdWwsIGJ1dCBJIGRvbiYjMzk7dCByZWNhbGwgc2VlaW5nIGEgZ2VuZXJhbCBTUEkgaW5qZWN0aW9uIG1lY2hhbmlzbSB0aGF0IGxldHMgeW91IGp1c3QgcG9rZSBhbnkgU1BJIGRyaXZlci4gVW5sZXNzIHRoZXJlJiMzOTtzIGEgcHNldWRvLWRldmljZSBkZWZpbmVkIHNvbWV3aGVyZSwgb3IgaXTigJlzIHBhcnQgb2YgdGhlIGRldmljZSB0cmVlLCB0aGF0IGF2ZW51ZSBpcyBsaWtlbHkgYmxvY2tlZC4KCkV2ZW4gKmlmKiBJIGNvdWxkIHdyYW5nbGUgc3l6a2FsbGVyIHRvIG92ZXJsYXkgYSBkZXZpY2UgdHJlZSBlbnRyeSwgdGhlIGRyaXZlciBpdHNlbGYsIHRoaXMgYHc1MTAwYCBkcml2ZXIsIGlzIGdvaW5nIHRvIGJlIGNvbW11bmljYXRpbmcgd2l0aCB0aGUgaGFyZHdhcmUgdXNpbmcgdGhvc2UgbG93LWxldmVsIFNQSSByZWFkL3dyaXRlIGZ1bmN0aW9uczogYHc1MTAwX3NwaV9yZWFkYCwgYHc1MTAwX3NwaV93cml0ZWAuIElmIHRoZXJlJiMzOTtzIG5vIGFjdHVhbCBoYXJkd2FyZSBjb25uZWN0ZWQsIHRob3NlIFNQSSByZWFkcyB3aWxsIHByb2JhYmx5IGp1c3QgcmV0dXJuIGdhcmJhZ2Ug4oCTIG1heWJlIHplcm9lcywgbWF5YmUgYDB4ZmZgIOKAkyBzb21lIGRlZmF1bHQgdmFsdWUgdGhhdCBkb2VzbuKAmXQgY29ycmVzcG9uZCB0byB0aGUgZXhwZWN0ZWQgcmVzcG9uc2UuIEFuZCB0aGF04oCZcyBhIHJlZCBmbGFnLiBUaGUgZHJpdmVyJiMzOTtzIGBwcm9iZWAgZnVuY3Rpb24sIHRoYXQmIzM5O3MgdGhlIGNydWNpYWwgcG9pbnQuIFRoZSBwcm9iZSB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgZmFpbCBpZiBpdCByZWFkcyBnYXJiYWdlLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGl0IHJlYWRzIGZyb20gdGhlIGhhcmR3YXJlIGFuZCBlcnJvcnMgb3V0IGlmIGl0IGRvZXNuJiMzOTt0IG1hdGNoIHRoZSBleHBlY3RlZCB2YWx1ZXMuIExldCBtZSBjaGVjayBgdzUxMDBfcHJvYmVgIHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3NDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA3NDA6XHRFWFBPUlRfU1lNQk9MX0dQTCh3NTEwMF9vcHNfcHJpdik7XG4gNzQxOlx0XG4gNzQyOlx0aW50IHc1MTAwX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IHc1MTAwX29wcyAqb3BzLFxuIDc0MzpcdFx0XHRpbnQgc2l6ZW9mX29wc19wcml2LCBjb25zdCB2b2lkICptYWNfYWRkciwgaW50IGlycSlcbiA3NDQ6XHR7XG4gNzQ1Olx0XHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdjtcbiA3NDY6XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2O1xuIDc0NzpcdFx0aW50IGVycjtcbiA3NDg6XHRcdHNpemVfdCBhbGxvY19zaXplO1xuIDc0OTpcdFxuIDc1MDpcdFx0YWxsb2Nfc2l6ZSA9IHNpemVvZigqcHJpdik7XG4gNzUxOlx0XHRpZiAoc2l6ZW9mX29wc19wcml2KSB7XG4gNzUyOlx0XHRcdGFsbG9jX3NpemUgPSBBTElHTihhbGxvY19zaXplLCBORVRERVZfQUxJR04pO1xuIDc1MzpcdFx0XHRhbGxvY19zaXplICYjNDM7PSBzaXplb2Zfb3BzX3ByaXY7XG4gNzU0Olx0XHR9XG4gNzU1Olx0XHRhbGxvY19zaXplICYjNDM7PSBORVRERVZfQUxJR04gLSAxO1xuIDc1NjpcdFxuIDc1NzpcdFx0bmRldiA9IGFsbG9jX2V0aGVyZGV2KGFsbG9jX3NpemUpO1xuIDc1ODpcdFx0aWYgKCFuZGV2KVxuIDc1OTpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiA3NjA6XHRcdFNFVF9ORVRERVZfREVWKG5kZXYsIGRldik7XG4gNzYxOlx0XHRkZXZfc2V0X2RydmRhdGEoZGV2LCBuZGV2KTtcbiA3NjI6XHRcdHByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbiA3NjM6XHRcbiA3NjQ6XHRcdHN3aXRjaCAob3BzLVx1MDAzZWNoaXBfaWQpIHtcbiA3NjU6XHRcdGNhc2UgVzUxMDA6XG4gNzY2Olx0XHRcdHByaXYtXHUwMDNlczBfcmVncyA9IFc1MTAwX1MwX1JFR1M7XG4gNzY3Olx0XHRcdHByaXYtXHUwMDNlczBfdHhfYnVmID0gVzUxMDBfVFhfTUVNX1NUQVJUO1xuIDc2ODpcdFx0XHRwcml2LVx1MDAzZXMwX3R4X2J1Zl9zaXplID0gVzUxMDBfVFhfTUVNX1NJWkU7XG4gNzY5Olx0XHRcdHByaXYtXHUwMDNlczBfcnhfYnVmID0gVzUxMDBfUlhfTUVNX1NUQVJUO1xuIDc3MDpcdFx0XHRwcml2LVx1MDAzZXMwX3J4X2J1Zl9zaXplID0gVzUxMDBfUlhfTUVNX1NJWkU7XG4gNzcxOlx0XHRcdGJyZWFrO1xuIDc3MjpcdFx0Y2FzZSBXNTIwMDpcbiA3NzM6XHRcdFx0cHJpdi1cdTAwM2VzMF9yZWdzID0gVzUyMDBfUzBfUkVHUztcbiA3NzQ6XHRcdFx0cHJpdi1cdTAwM2VzMF90eF9idWYgPSBXNTIwMF9UWF9NRU1fU1RBUlQ7XG4gNzc1Olx0XHRcdHByaXYtXHUwMDNlczBfdHhfYnVmX3NpemUgPSBXNTIwMF9UWF9NRU1fU0laRTtcbiA3NzY6XHRcdFx0cHJpdi1cdTAwM2VzMF9yeF9idWYgPSBXNTIwMF9SWF9NRU1fU1RBUlQ7XG4gNzc3Olx0XHRcdHByaXYtXHUwMDNlczBfcnhfYnVmX3NpemUgPSBXNTIwMF9SWF9NRU1fU0laRTtcbiA3Nzg6XHRcdFx0YnJlYWs7XG4gNzc5Olx0XHRjYXNlIFc1NTAwOlxuIDc4MDpcdFx0XHRwcml2LVx1MDAzZXMwX3JlZ3MgPSBXNTUwMF9TMF9SRUdTO1xuIDc4MTpcdFx0XHRwcml2LVx1MDAzZXMwX3R4X2J1ZiA9IFc1NTAwX1RYX01FTV9TVEFSVDtcbiA3ODI6XHRcdFx0cHJpdi1cdTAwM2VzMF90eF9idWZfc2l6ZSA9IFc1NTAwX1RYX01FTV9TSVpFO1xuIDc4MzpcdFx0XHRwcml2LVx1MDAzZXMwX3J4X2J1ZiA9IFc1NTAwX1JYX01FTV9TVEFSVDtcbiA3ODQ6XHRcdFx0cHJpdi1cdTAwM2VzMF9yeF9idWZfc2l6ZSA9IFc1NTAwX1JYX01FTV9TSVpFO1xuIDc4NTpcdFx0XHRicmVhaztcbiA3ODY6XHRcdGRlZmF1bHQ6XG4gNzg3Olx0XHRcdGVyciA9IC1FSU5WQUw7XG4gNzg4Olx0XHRcdGdvdG8gZXJyX3JlZ2lzdGVyO1xuIDc4OTpcdFx0fVxuIDc5MDpcdFxuIDc5MTpcdFx0cHJpdi1cdTAwM2VuZGV2ID0gbmRldjtcbiA3OTI6XHRcdHByaXYtXHUwMDNlb3BzID0gb3BzO1xuIDc5MzpcdFx0cHJpdi1cdTAwM2VpcnEgPSBpcnE7XG4gNzk0Olx0XHRwcml2LVx1MDAzZWxpbmtfZ3BpbyA9IGdwaW9kX2dldF9vcHRpb25hbChkZXYsIFwmIzM0O2xpbmtcJiMzNDssIEdQSU9EX0lOKTtcbiA3OTU6XHRcdGlmIChJU19FUlIocHJpdi1cdTAwM2VsaW5rX2dwaW8pKSB7XG4gNzk2Olx0XHRcdGVyciA9IGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHByaXYtXHUwMDNlbGlua19ncGlvKSxcbiA3OTc6XHRcdFx0XHRcdCAgICBcJiMzNDtmYWlsZWQgdG8gZ2V0IGxpbmsgR1BJT1xcblwmIzM0Oyk7XG4gNzk4Olx0XHRcdHByaXYtXHUwMDNlbGlua19ncGlvID0gTlVMTDtcbiA3OTk6XHRcdFx0Z290byBlcnJfcmVnaXN0ZXI7XG4gODAwOlx0XHR9XG4gODAxOlx0XG4gODAyOlx0XHRuZGV2LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZ3NTEwMF9uZXRkZXZfb3BzO1xuIDgwMzpcdFx0bmRldi1cdTAwM2VldGh0b29sX29wcyA9IFx1MDAyNnc1MTAwX2V0aHRvb2xfb3BzO1xuIDgwNDpcdFx0bmV0aWZfbmFwaV9hZGRfd2VpZ2h0KG5kZXYsIFx1MDAyNnByaXYtXHUwMDNlbmFwaSwgdzUxMDBfbmFwaV9wb2xsLCAxNik7XG4gODA1Olx0XG4gODA2Olx0XHQvKiBUaGlzIGNoaXAgZG9lc24mIzM5O3Qgc3VwcG9ydCBWTEFOIHBhY2tldHMgd2l0aCBub3JtYWwgTVRVLFxuIDgwNzpcdFx0ICogc28gZGlzYWJsZSBWTEFOIGZvciB0aGlzIGRldmljZS5cbiA4MDg6XHRcdCAqL1xuIDgwOTpcdFx0bmRldi1cdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX1ZMQU5fQ0hBTExFTkdFRDtcbiA4MTA6XHRcbiA4MTE6XHRcdGVyciA9IHJlZ2lzdGVyX25ldGRldihuZGV2KTtcbiA4MTI6XHRcdGlmIChlcnIgXHUwMDNjIDApXG4gODEzOlx0XHRcdGdvdG8gZXJyX3JlZ2lzdGVyO1xuIDgxNDpcdFxuIDgxNTpcdFx0cHJpdi1cdTAwM2V4ZmVyX3dxID0gYWxsb2Nfd29ya3F1ZXVlKFwmIzM0OyVzXCYjMzQ7LCBXUV9NRU1fUkVDTEFJTSB8IFdRX1BFUkNQVSwgMCxcbiA4MTY6XHRcdFx0XHRcdFx0bmV0ZGV2X25hbWUobmRldikpO1xuIDgxNzpcdFx0aWYgKCFwcml2LVx1MDAzZXhmZXJfd3EpIHtcbiA4MTg6XHRcdFx0ZXJyID0gLUVOT01FTTtcbiA4MTk6XHRcdFx0Z290byBlcnJfd3E7XG4gODIwOlx0XHR9XG4gODIxOlx0XG4gODIyOlx0XHRJTklUX1dPUksoXHUwMDI2cHJpdi1cdTAwM2VyeF93b3JrLCB3NTEwMF9yeF93b3JrKTtcbiA4MjM6XHRcdElOSVRfV09SSyhcdTAwMjZwcml2LVx1MDAzZXR4X3dvcmssIHc1MTAwX3R4X3dvcmspO1xuIDgyNDpcdFx0SU5JVF9XT1JLKFx1MDAyNnByaXYtXHUwMDNlc2V0cnhfd29yaywgdzUxMDBfc2V0cnhfd29yayk7XG4gODI1Olx0XHRJTklUX1dPUksoXHUwMDI2cHJpdi1cdTAwM2VyZXN0YXJ0X3dvcmssIHc1MTAwX3Jlc3RhcnRfd29yayk7XG4gODI2Olx0XG4gODI3Olx0XHRpZiAobWFjX2FkZHIpXG4gODI4Olx0XHRcdGV0aF9od19hZGRyX3NldChuZGV2LCBtYWNfYWRkcik7XG4gODI5Olx0XHRlbHNlXG4gODMwOlx0XHRcdGV0aF9od19hZGRyX3JhbmRvbShuZGV2KTtcbiA4MzE6XHRcbiA4MzI6XHRcdGlmIChwcml2LVx1MDAzZW9wcy1cdTAwM2Vpbml0KSB7XG4gODMzOlx0XHRcdGVyciA9IHByaXYtXHUwMDNlb3BzLVx1MDAzZWluaXQocHJpdi1cdTAwM2VuZGV2KTtcbiA4MzQ6XHRcdFx0aWYgKGVycilcbiA4MzU6XHRcdFx0XHRnb3RvIGVycl9odztcbiA4MzY6XHRcdH1cbiA4Mzc6XHRcbiA4Mzg6XHRcdGVyciA9IHc1MTAwX2h3X3Jlc2V0KHByaXYpO1xuIDgzOTpcdFx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY1NzEKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIGB3NTEwMF9od19yZXNldGAgRnVuY3Rpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGB3NTEwMF9od19yZXNldGAgcm91dGluZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSB3aGF0IGl0JiMzOTtzIGRvaW5nLiBJcyBpdCBqdXN0IHRvZ2dsaW5nIGEgcGluPyBJcyBpdCBhIG1vcmUgZWxhYm9yYXRlIHNlcXVlbmNlIGludm9sdmluZyBkZWxheXMsIG9yIHBlcmhhcHMgaW50ZXJhY3Rpbmcgd2l0aCBhbnkgcG93ZXItb24gcmVzZXQgY2lyY3VpdHJ5PyBJJiMzOTttIGFscmVhZHkgdGhpbmtpbmcgYWJvdXQgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyDigJMgZG9lcyB0aGUgdGltaW5nIGFsaWduIGNvcnJlY3RseSB3aXRoIHRoZSBXNTEwMCYjMzk7cyBpbnRlcm5hbCBjbG9jayBhbmQgcG93ZXItdXAgY2hhcmFjdGVyaXN0aWNzPyBEb2VzIGl0IGhhbmRsZSBhbnkgcG90ZW50aWFsIHZvbHRhZ2UgdHJhbnNpZW50cyBncmFjZWZ1bGx5LCBvciBpcyB0aGVyZSBhIHJpc2sgb2YgZXhjZWVkaW5nIGFic29sdXRlIG1heGltdW0gcmF0aW5ncz8gSSB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgaW1wbGVtZW50YXRpb24gaXMgcm9idXN0LCBlc3BlY2lhbGx5IGlmIHRoaXMgcmVzZXQgaXMgb2NjdXJyaW5nIGluIGEgbm9pc3kgZW52aXJvbm1lbnQgb3Igd2l0aGluIGEgY3JpdGljYWwgc2VjdGlvbi4gSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCB0aGUgZmFpbHVyZSBtb2RlcyBhbmQgaG93IHRoaXMgZnVuY3Rpb24gYWRkcmVzc2VzIHRoZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNTEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDM1MTpcdHN0YXRpYyBpbnQgdzUxMDBfaHdfcmVzZXQoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYpXG4gMzUyOlx0e1xuIDM1MzpcdFx0dTMyIHJ0cjtcbiAzNTQ6XHRcbiAzNTU6XHRcdHc1MTAwX3Jlc2V0KHByaXYpO1xuIDM1NjpcdFxuIDM1NzpcdFx0dzUxMDBfZGlzYWJsZV9pbnRyKHByaXYpO1xuIDM1ODpcdFx0dzUxMDBfd3JpdGVfbWFjYWRkcihwcml2KTtcbiAzNTk6XHRcbiAzNjA6XHRcdHN3aXRjaCAocHJpdi1cdTAwM2VvcHMtXHUwMDNlY2hpcF9pZCkge1xuIDM2MTpcdFx0Y2FzZSBXNTEwMDpcbiAzNjI6XHRcdFx0dzUxMDBfbWVtb3J5X2NvbmZpZ3VyZShwcml2KTtcbiAzNjM6XHRcdFx0cnRyID0gVzUxMDBfUlRSO1xuIDM2NDpcdFx0XHRicmVhaztcbiAzNjU6XHRcdGNhc2UgVzUyMDA6XG4gMzY2Olx0XHRcdHc1MjAwX21lbW9yeV9jb25maWd1cmUocHJpdik7XG4gMzY3Olx0XHRcdHJ0ciA9IFc1MTAwX1JUUjtcbiAzNjg6XHRcdFx0YnJlYWs7XG4gMzY5Olx0XHRjYXNlIFc1NTAwOlxuIDM3MDpcdFx0XHR3NTUwMF9tZW1vcnlfY29uZmlndXJlKHByaXYpO1xuIDM3MTpcdFx0XHRydHIgPSBXNTUwMF9SVFI7XG4gMzcyOlx0XHRcdGJyZWFrO1xuIDM3MzpcdFx0ZGVmYXVsdDpcbiAzNzQ6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gMzc1Olx0XHR9XG4gMzc2Olx0XG4gMzc3Olx0XHRpZiAodzUxMDBfcmVhZDE2KHByaXYsIHJ0cikgIT0gUlRSX0RFRkFVTFQpXG4gMzc4Olx0XHRcdHJldHVybiAtRU5PREVWO1xuIDM3OTpcdFxuIDM4MDpcdFx0cmV0dXJuIDA7XG4gMzgxOlx0fVxuIDM4MjpcdFxuIDM4MzpcdHN0YXRpYyB2b2lkIHc1MTAwX2h3X3N0YXJ0KHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxuIDM4NDpcdHtcbiAzODU6XHRcdHU4IG1vZGUgPSBTMF9NUl9NQUNSQVc7XG4gMzg2Olx0XG4gMzg3Olx0XHRpZiAoIXByaXYtXHUwMDNlcHJvbWlzYykge1xuIDM4ODpcdFx0XHRpZiAocHJpdi1cdTAwM2VvcHMtXHUwMDNlY2hpcF9pZCA9PSBXNTUwMClcbiAzODk6XHRcdFx0XHRtb2RlIHw9IFc1NTAwX1MwX01SX01GO1xuIDM5MDpcdFx0XHRlbHNlXG4gMzkxOlx0XHRcdFx0bW9kZSB8PSBTMF9NUl9NRjtcbiAzOTI6XHRcdH1cbiAzOTM6XHRcbiAzOTQ6XHRcdHc1MTAwX3dyaXRlKHByaXYsIFc1MTAwX1MwX01SKHByaXYpLCBtb2RlKTtcbiAzOTU6XHRcdHc1MTAwX2NvbW1hbmQocHJpdiwgUzBfQ1JfT1BFTik7XG4gMzk2Olx0XHR3NTEwMF9lbmFibGVfaW50cihwcml2KTtcbiAzOTc6XHR9XG4gMzk4Olx0XG4gMzk5Olx0c3RhdGljIHZvaWQgdzUxMDBfaHdfY2xvc2Uoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYpXG4gNDAwOlx0e1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNjowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzU2NwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDQ2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcG9zc2liaWxpdHkgb2YgVmlydHVhbGl6ZWQgVGVzdGluZyBmb3IgdGhpcyBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYHc1MTAwX2h3X3Jlc2V0YCBmdW5jdGlvbiwgYW5kIGl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFRoZSBjcml0aWNhbCBwYXJ0IGlzIHRoYXQgaXQgY2hlY2tzIHRoZSB2YWx1ZSBvZiBhIHJlZ2lzdGVyLCBgcnRyYCwgYWdhaW5zdCBgUlRSX0RFRkFVTFRgLiAgSWYgdGhhdCBjaGVjayBmYWlscywgaXQgaW1tZWRpYXRlbHkgcmV0dXJucyBgLUVOT0RFVmAsIHdoaWNoIG1lYW5zIHRoZSBkcml2ZXIgd2lsbCBub3QgbG9hZC4gVGhlIGB3NTEwMF9yZWFkMTZgIGZ1bmN0aW9uLCBiZWluZyBmdW5kYW1lbnRhbCwgd2lsbCBsaWtlbHkgcmV0dXJuIGdhcmJhZ2UgZGF0YSBpZiB0aGUgYWN0dWFsIGhhcmR3YXJlIGlzbiYjMzk7dCBwcmVzZW50LCB3aGljaCBkZWZpbml0ZWx5IHdvbiYjMzk7dCBtYXRjaCBgUlRSX0RFRkFVTFRgLiAgQW5kIHRoaXMgaGFyZHdhcmUgaGFwcGVucyB0byBiZSBTUEksIHdoaWNoLCBhcyBJIGtub3csIGlzIG5vdCBlbXVsYXRlZCBieSBRRU1VLgoKVGhlcmVmb3JlLCBzaW5jZSBgdzUxMDBfaHdfcmVzZXRgIGlzIGRpcmVjdGx5IGNhbGxlZCBpbiBgdzUxMDBfcHJvYmVgLCBpZiB0aGUgY2hlY2sgZmFpbHMsIGB3NTEwMF9wcm9iZWAgZmFpbHMsIGFuZCB0aGUgZHJpdmVyIGlzIGRlYWQgaW4gdGhlIHdhdGVyLiBUaGlzIG1lYW5zIHRoZXJlJiMzOTtzIG5vIHdheSB0byBldmVuIHJlYWNoIHRoZSBmdW5jdGlvbmFsIHBhcnRzIG9mIHRoaXMgZHJpdmVyLCBsaWtlIGB3NTEwMF9vcGVuYCwgYHc1MTAwX2RldGVjdF9saW5rYCwgb3IgYHc1MTAwX2dldF9saW5rYCB3aXRoaW4gUUVNVSBvciBzaW1pbGFyIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gIFRoaXMgZmFsbHMgc3F1YXJlbHkgaW50byB0aGUgJiMzNDtpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyYjMzQ7IGNhdGVnb3J5LiAgSXQmIzM5O3MgYW4gU1BJIGRldmljZSwgYW5kIGZvciBhIHNwZWNpZmljIGhhcmR3YXJlIGNoaXAgYXQgdGhhdCwgc28gdGhlcmUgd29uJiMzOTt0IGJlIGEgc29mdHdhcmUgZW11bGF0aW9uLgoKTm93LCBjb3VsZCB0aGVyZSBiZSBhIGJhY2tkb29yPyBNYXliZSB0aHJvdWdoIGBzeXprYWxsZXJgIGFuZCBhIG1vY2sgU1BJIGRyaXZlcj8gTGV0IG1lIHRoaW5rLi4uIE5vLiBUaGVyZSYjMzk7cyBubyBnZW5lcmljIG1vY2sgU1BJIGRyaXZlciB0aGF0IGNhbiBmYWtlIGFyYml0cmFyeSBkZXZpY2UgcmVnaXN0ZXJzIGluIHRoZSBtYWlubGluZSBrZXJuZWwuICBXaGlsZSB0aGVyZSBpcyBgc3BpLWxvb3BiYWNrLXRlc3RgLCBpdCYjMzk7cyBub3QgYSBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXIgZmFrZXIuIFNvLCB0aGF0JiMzOTtzIG5vdCBoYXBwZW5pbmcuCgpUaGVyZWZvcmUsIHRoZSBjb25jbHVzaW9uIHRoYXQgdGhpcyBpcyBgV29ydGhGdXp6aW5nPWZhbHNlYCBpcyBhY2N1cmF0ZS4gSnVzdCB3YW50IHRvIHF1aWNrbHkgZG91YmxlIGNoZWNrIHRoZSBgUlRSX0RFRkFVTFRgIHZhbHVlIG9uZSBsYXN0IHRpbWUgYW5kIHRoZW4gSSBjYW4gbW92ZSBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UlRSX0RFRkFVTFQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jPTM1PU1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtODktI2RlZmluZSBXNTEwMF9SVFJcdFx0MHgwMDE3IC8qIFJldHJ5IFRpbWUtdmFsdWUgUmVnaXN0ZXIgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjkwOiNkZWZpbmUgICBSVFJfREVGQVVMVFx0XHQgIDIwMDAgLyogPTB4MDdkMCAoMjAwMCkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTkxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jPTM1MT1zdGF0aWMgaW50IHc1MTAwX2h3X3Jlc2V0KHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM3Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM3NzpcdGlmICh3NTEwMF9yZWFkMTYocHJpdiwgcnRyKSAhPSBSVFJfREVGQVVMVClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM3OC1cdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4ODEwCgkJCQkJCQlvdXRwdXQ6IDEzMQoJCQkJCQkJdGhvdWdodHM6IDEzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBTUEkgRHJpdmVyJiMzOTtzIFByb2JpbmcgQ2FwYWJpbGl0aWVzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IHRoZSBkZWZhdWx0IHJlZ2lzdGVyIHZhbHVlLCBgUlRSX0RFRkFVTFRgLCBpcyBpbmRlZWQgMjAwMCwgd2hpY2ggaW4gaGV4YWRlY2ltYWwgaXMgYDB4MDdkMGAuIEEgc3RhbmRhcmQgZHVtbXkgU1BJIHJlYWQsIHNvbWV0aGluZyB5b3UgbWlnaHQgdHJ5IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIHdvdWxkIHJldHVybiBlaXRoZXIgYDB4MDAwMGAgb3IgYDB4ZmZmZmAsIGRlcGVuZGluZyBvbiBob3cgdGhlIFNQSSBpcyBoYW5kbGVkIGF0IHRoZSBoYXJkd2FyZSBsYXllci4gQ29uc2VxdWVudGx5LCBhbnkgYXR0ZW1wdGVkIHByb2JlIGZ1bmN0aW9uIHdpbGwgaW5ldml0YWJseSBmYWlsIGlmIGl0JiMzOTtzIHJlbHlpbmcgb24gcmVhZGluZyBhbmQgdmVyaWZ5aW5nIGhhcmR3YXJlLXNwZWNpZmljIHJlZ2lzdGVycy4KClRoZXJlZm9yZSwgYW5kIGdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRyaXZlciBhbmQgaXRzIGRlcGVuZGVuY2llcywgc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYCBpcyB0aGUgY29ycmVjdCBwYXRoLiBJJiMzOTtsbCBuZWVkIHRvIGNsZWFybHkgYXJ0aWN1bGF0ZSB0aGlzIGluIHRoZSBjb21tZW50cy4gVGhpcyBkcml2ZXIgaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciB0aGUgV2l6bmV0IFc1MTAwLCBXNTIwMCwgYW5kIFc1NTAwIGV0aGVybmV0IGNoaXBzLCBhbmQgaXRzIGNvbW11bmljYXRpb24gaXMgc29sZWx5IHRocm91Z2ggU1BJLiBTdGFuZGFyZCBRRU1VLCBhcyBpdCYjMzk7cyBpbXBsZW1lbnRlZCBub3csIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhlIG5lY2Vzc2FyeSBoYXJkd2FyZSBpbnRlcmFjdGlvbnMgd2l0aCB0aG9zZSBjaGlwcy4gVGhlIHByb2JlIGZ1bmN0aW9uIGlzIGNsZWFybHkgZGVzaWduZWQgdG8gY2hlY2sgc3BlY2lmaWMgaGFyZHdhcmUgcmVnaXN0ZXJzIHRoYXQgYXJlIHVuYXZhaWxhYmxlIG9yIHVuaW5pdGlhbGl6ZWQgaW4gYSBnZW5lcmljIHZpcnR1YWwgZW52aXJvbm1lbnQuIFRoZXJlJiMzOTtzIG5vIHZhbHVlIGluIGZ1enppbmcgdGhpcyBkcml2ZXIgdW50aWwgdGhlIGhhcmR3YXJlIGl0c2VsZiBpcyBlbXVsYXRlZCwgb3Igb3RoZXIgcmVnaXN0ZXItYmFzZWQgY2hlY2sgaXMgaW1wbGVtZW50ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHc1MTAwIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgZm9yIFdpem5ldCBXNTEwMC9XNTIwMC9XNTUwMCBoYXJkd2FyZSBjaGlwcyBjb25uZWN0ZWQgdmlhIFNQSS4gVGhlc2UgY2hpcHMgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBUaGUgZHJpdmVyJiMzOTtzIHByb2JlIGZ1bmN0aW9uIGV4cGxpY2l0bHkgY2hlY2tzIGhhcmR3YXJlIHJlZ2lzdGVycyAoZS5nLiwgdmVyaWZ5aW5nIFJUUl9ERUZBVUxUKSBhbmQgd2lsbCBmYWlsIHRvIGluaXRpYWxpemUgd2l0aG91dCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgcHJlc2VudC4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB3NTEwMCBFdGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGZvciBXaXpuZXQgVzUxMDAvVzUyMDAvVzU1MDAgaGFyZHdhcmUgY2hpcHMgY29ubmVjdGVkIHZpYSBTUEkuIFRoZXNlIGNoaXBzIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gVGhlIGRyaXZlciYjMzk7cyBwcm9iZSBmdW5jdGlvbiBleHBsaWNpdGx5IGNoZWNrcyBoYXJkd2FyZSByZWdpc3RlcnMgKGUuZy4sIHZlcmlmeWluZyBSVFJfREVGQVVMVCkgYW5kIHdpbGwgZmFpbCB0byBpbml0aWFsaXplIHdpdGhvdXQgdGhlIHBoeXNpY2FsIGhhcmR3YXJlIHByZXNlbnQuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTU6NDU6NTUuNDA5MjQ4NTAxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIxMjQzNjQ5MDcxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHc1MTAwIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgZm9yIFdpem5ldCBXNTEwMC9XNTIwMC9XNTUwMCBoYXJkd2FyZSBjaGlwcyBjb25uZWN0ZWQgdmlhIFNQSS4gVGhlc2UgY2hpcHMgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBUaGUgZHJpdmVyJ3MgcHJvYmUgZnVuY3Rpb24gZXhwbGljaXRseSBjaGVja3MgaGFyZHdhcmUgcmVnaXN0ZXJzIChlLmcuLCB2ZXJpZnlpbmcgUlRSX0RFRkFVTFQpIGFuZCB3aWxsIGZhaWwgdG8gaW5pdGlhbGl6ZSB3aXRob3V0IHRoZSBwaHlzaWNhbCBoYXJkd2FyZSBwcmVzZW50LiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTU6NDU6NTUuNDA5MjU1OTMxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODE3MzI3NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3MjRjOGY3MWY4YmUwOTk0ZjE0N2NlNWZhMzc5ZTU2MmYxZTExYmQyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgQXVnIDQgMTU6NDU6NTQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAudHh0XFxuaW5kZXggZTk2NjU3OThjNGJlNi4uZTk3Y2UzY2I5MTgzMCAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC50eHRcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC50eHRcXG5AQCAtMjUsNiArMjUsNyBAQCBPcHRpb25hbCBwcm9wZXJ0aWVzOlxcbiAgIEFjY29yZGluZyB0byB0aGUgdzU1MDAgZGF0YXNoZWV0LCB0aGUgY2hpcCBhbGxvd3MgYSBtYXhpbXVtIG9mIDgwIE1IeiwgaG93ZXZlcixcXG4gICBib2FyZCBkZXNpZ25zIG1heSBuZWVkIHRvIGxpbWl0IHRoaXMgdmFsdWUuXFxuIC0gbG9jYWwtbWFjLWFkZHJlc3M6IFNlZSBldGhlcm5ldC50eHQgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxcbistIGxpbmstZ3Bpb3M6IGEgR1BJTyBsaW5lIHVzZWQgZm9yIHRoZSBsaW5rIGRldGVjdGlvbiBpbnRlcnJ1cHRcXG4gXFxuIFxcbiBFeGFtcGxlIChmb3IgUmFzcGJlcnJ5IFBpIHdpdGggcGluIGNvbnRyb2wgc3R1ZmYgZm9yIEdQSU8gaXJxKTpcXG5AQCAtMzgsMTMgKzM5LDE0IEBAIEV4YW1wbGUgKGZvciBSYXNwYmVycnkgUGkgd2l0aCBwaW4gY29udHJvbCBzdHVmZiBmb3IgR1BJTyBpcnEpOlxcbiBcXHRcXHRpbnRlcnJ1cHQtcGFyZW50ID0gXFx1MDAzY1xcdTAwMjZncGlvXFx1MDAzZTtcXG4gXFx0XFx0aW50ZXJydXB0cyA9IFxcdTAwM2MyNSBJUlFfVFlQRV9FREdFX0ZBTExJTkdcXHUwMDNlO1xcbiBcXHRcXHRzcGktbWF4LWZyZXF1ZW5jeSA9IFxcdTAwM2MzMDAwMDAwMFxcdTAwM2U7XFxuK1xcdFxcdGxpbmstZ3Bpb3MgPSBcXHUwMDNjXFx1MDAyNmdwaW8gNCBHUElPX0FDVElWRV9ISUdIXFx1MDAzZTtcXG4gXFx0fTtcXG4gfTtcXG4gXFxuIFxcdTAwMjZncGlvIHtcXG4gXFx0ZXRoMV9waW5zOiBldGgxX3BpbnMge1xcbi1cXHRcXHRicmNtLHBpbnMgPSBcXHUwMDNjMjVcXHUwMDNlO1xcbi1cXHRcXHRicmNtLGZ1bmN0aW9uID0gXFx1MDAzYzBcXHUwMDNlOyAvKiBpbiAqL1xcbi1cXHRcXHRicmNtLHB1bGwgPSBcXHUwMDNjMFxcdTAwM2U7IC8qIG5vbmUgKi9cXG4rXFx0XFx0YnJjbSxwaW5zID0gXFx1MDAzYzI1IDRcXHUwMDNlO1xcbitcXHRcXHRicmNtLGZ1bmN0aW9uID0gXFx1MDAzYzAgMFxcdTAwM2U7IC8qIGluICovXFxuK1xcdFxcdGJyY20scHVsbCA9IFxcdTAwM2MwIDBcXHUwMDNlOyAvKiBub25lICovXFxuIFxcdH07XFxuIH07XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmNcXG5pbmRleCA1M2Q4ZGM2NDJmYmQ2Li5jOWQxODkxZjM3Yjk4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmNcXG5AQCAtMjIsNiArMjIsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvaW9wb3J0LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9pbnRlcnJ1cHQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lycS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvZ3Bpby9jb25zdW1lci5oXFx1MDAzZVxcbiBcXG4gI2luY2x1ZGUgXFxcInc1MTAwLmhcXFwiXFxuIFxcbkBAIC0xNTQsNiArMTU1LDggQEAgc3RydWN0IHc1MTAwX3ByaXYge1xcbiBcXHR1MTYgczBfcnhfYnVmX3NpemU7XFxuIFxcbiBcXHRpbnQgaXJxO1xcbitcXHRpbnQgbGlua19pcnE7XFxuK1xcdHN0cnVjdCBncGlvX2Rlc2MgKmxpbmtfZ3BpbztcXG4gXFxuIFxcdHN0cnVjdCBuYXBpX3N0cnVjdCBuYXBpO1xcbiBcXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldjtcXG5AQCAtNDE0LDYgKzQxNywxNiBAQCBzdGF0aWMgdm9pZCB3NTEwMF9nZXRfZHJ2aW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4gXFx0XFx0c2l6ZW9mKGluZm8tXFx1MDAzZWJ1c19pbmZvKSk7XFxuIH1cXG4gXFxuK3N0YXRpYyB1MzIgdzUxMDBfZ2V0X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuK3tcXG4rXFx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG4rXFxuK1xcdGlmIChwcml2LVxcdTAwM2VsaW5rX2dwaW8pXFxuK1xcdFxcdHJldHVybiAhIWdwaW9kX2dldF92YWx1ZV9jYW5zbGVlcChwcml2LVxcdTAwM2VsaW5rX2dwaW8pO1xcbitcXG4rXFx0cmV0dXJuIDE7XFxuK31cXG4rXFxuIHN0YXRpYyB1MzIgdzUxMDBfZ2V0X21zZ2xldmVsKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbiB7XFxuIFxcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XFxuQEAgLTYxNiw2ICs2MjksMjQgQEAgc3RhdGljIGlycXJldHVybl90IHc1MTAwX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpuZGV2X2luc3RhbmNlKVxcbiBcXHRyZXR1cm4gSVJRX0hBTkRMRUQ7XFxuIH1cXG4gXFxuK3N0YXRpYyBpcnFyZXR1cm5fdCB3NTEwMF9kZXRlY3RfbGluayhpbnQgaXJxLCB2b2lkICpuZGV2X2luc3RhbmNlKVxcbit7XFxuK1xcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gbmRldl9pbnN0YW5jZTtcXG4rXFx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG4rXFxuK1xcdGlmIChuZXRpZl9ydW5uaW5nKG5kZXYpKSB7XFxuK1xcdFxcdGlmIChncGlvZF9nZXRfdmFsdWUocHJpdi1cXHUwMDNlbGlua19ncGlvKSAhPSAwKSB7XFxuK1xcdFxcdFxcdG5ldGlmX2luZm8ocHJpdiwgbGluaywgbmRldiwgXFxcImxpbmsgaXMgdXBcXFxcblxcXCIpO1xcbitcXHRcXHRcXHRuZXRpZl9jYXJyaWVyX29uKG5kZXYpO1xcbitcXHRcXHR9IGVsc2Uge1xcbitcXHRcXHRcXHRuZXRpZl9pbmZvKHByaXYsIGxpbmssIG5kZXYsIFxcXCJsaW5rIGlzIGRvd25cXFxcblxcXCIpO1xcbitcXHRcXHRcXHRuZXRpZl9jYXJyaWVyX29mZihuZGV2KTtcXG4rXFx0XFx0fVxcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gSVJRX0hBTkRMRUQ7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIHc1MTAwX3NldHJ4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiB7XFxuIFxcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB3NTEwMF9wcml2LFxcbkBAIC02NTksNiArNjkwLDE0IEBAIHN0YXRpYyBpbnQgdzUxMDBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4gXFx0dzUxMDBfaHdfc3RhcnQocHJpdik7XFxuIFxcdG5hcGlfZW5hYmxlKFxcdTAwMjZwcml2LVxcdTAwM2VuYXBpKTtcXG4gXFx0bmV0aWZfc3RhcnRfcXVldWUobmRldik7XFxuK1xcbitcXHRpZiAocHJpdi1cXHUwMDNlbGlua19ncGlvKSB7XFxuK1xcdFxcdGlmIChncGlvZF9nZXRfdmFsdWVfY2Fuc2xlZXAocHJpdi1cXHUwMDNlbGlua19ncGlvKSAhPSAwKVxcbitcXHRcXHRcXHRuZXRpZl9jYXJyaWVyX29uKG5kZXYpO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdG5ldGlmX2NhcnJpZXJfb2ZmKG5kZXYpO1xcbitcXHR9XFxuK1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG5AQCAtNjc4LDYgKzcxNyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgdzUxMDBfZXRodG9vbF9vcHMgPSB7XFxuIFxcdC5nZXRfZHJ2aW5mb1xcdFxcdD0gdzUxMDBfZ2V0X2RydmluZm8sXFxuIFxcdC5nZXRfbXNnbGV2ZWxcXHRcXHQ9IHc1MTAwX2dldF9tc2dsZXZlbCxcXG4gXFx0LnNldF9tc2dsZXZlbFxcdFxcdD0gdzUxMDBfc2V0X21zZ2xldmVsLFxcbitcXHQuZ2V0X2xpbmtcXHRcXHQ9IHc1MTAwX2dldF9saW5rLFxcbiBcXHQuZ2V0X3JlZ3NfbGVuXFx0XFx0PSB3NTEwMF9nZXRfcmVnc19sZW4sXFxuIFxcdC5nZXRfcmVnc1xcdFxcdD0gdzUxMDBfZ2V0X3JlZ3MsXFxuIH07XFxuQEAgLTc1MSw2ICs3OTEsMTMgQEAgaW50IHc1MTAwX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IHc1MTAwX29wcyAqb3BzLFxcbiBcXHRwcml2LVxcdTAwM2VuZGV2ID0gbmRldjtcXG4gXFx0cHJpdi1cXHUwMDNlb3BzID0gb3BzO1xcbiBcXHRwcml2LVxcdTAwM2VpcnEgPSBpcnE7XFxuK1xcdHByaXYtXFx1MDAzZWxpbmtfZ3BpbyA9IGdwaW9kX2dldF9vcHRpb25hbChkZXYsIFxcXCJsaW5rXFxcIiwgR1BJT0RfSU4pO1xcbitcXHRpZiAoSVNfRVJSKHByaXYtXFx1MDAzZWxpbmtfZ3BpbykpIHtcXG4rXFx0XFx0ZXJyID0gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocHJpdi1cXHUwMDNlbGlua19ncGlvKSxcXG4rXFx0XFx0XFx0XFx0ICAgIFxcXCJmYWlsZWQgdG8gZ2V0IGxpbmsgR1BJT1xcXFxuXFxcIik7XFxuK1xcdFxcdHByaXYtXFx1MDAzZWxpbmtfZ3BpbyA9IE5VTEw7XFxuK1xcdFxcdGdvdG8gZXJyX3JlZ2lzdGVyO1xcbitcXHR9XFxuIFxcbiBcXHRuZGV2LVxcdTAwM2VuZXRkZXZfb3BzID0gXFx1MDAyNnc1MTAwX25ldGRldl9vcHM7XFxuIFxcdG5kZXYtXFx1MDAzZWV0aHRvb2xfb3BzID0gXFx1MDAyNnc1MTAwX2V0aHRvb2xfb3BzO1xcbkBAIC04MDMsMTMgKzg1MCw0MCBAQCBpbnQgdzUxMDBfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgdzUxMDBfb3BzICpvcHMsXFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdGdvdG8gZXJyX2h3O1xcbiBcXG4rXFx0aWYgKHByaXYtXFx1MDAzZWxpbmtfZ3Bpbykge1xcbitcXHRcXHRjaGFyICpsaW5rX25hbWUgPSBkZXZtX2thc3ByaW50ZihkZXYsIEdGUF9LRVJORUwsIFxcXCIlcy1saW5rXFxcIixcXG4rXFx0XFx0XFx0XFx0XFx0XFx0IGRldl9uYW1lKGRldikpO1xcbitcXHRcXHRpZiAoIWxpbmtfbmFtZSkge1xcbitcXHRcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbitcXHRcXHRcXHRnb3RvIGVycl9ncGlvO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRwcml2LVxcdTAwM2VsaW5rX2lycSA9IGdwaW9kX3RvX2lycShwcml2LVxcdTAwM2VsaW5rX2dwaW8pO1xcbitcXHRcXHRpZiAocHJpdi1cXHUwMDNlbGlua19pcnEgXFx1MDAzYyAwKSB7XFxuK1xcdFxcdFxcdGVyciA9IHByaXYtXFx1MDAzZWxpbmtfaXJxO1xcbitcXHRcXHRcXHRnb3RvIGVycl9ncGlvO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRlcnIgPSByZXF1ZXN0X2FueV9jb250ZXh0X2lycShwcml2LVxcdTAwM2VsaW5rX2lycSwgdzUxMDBfZGV0ZWN0X2xpbmssXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgIElSUUZfVFJJR0dFUl9SSVNJTkcgfFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBJUlFGX1RSSUdHRVJfRkFMTElORyxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgbGlua19uYW1lLCBwcml2LVxcdTAwM2VuZGV2KTtcXG4rXFx0XFx0aWYgKGVyciBcXHUwMDNjIDApXFxuK1xcdFxcdFxcdGdvdG8gZXJyX2dwaW87XFxuK1xcdH1cXG4rXFxuIFxcdHJldHVybiAwO1xcbiBcXG4rZXJyX2dwaW86XFxuK1xcdGZyZWVfaXJxKHByaXYtXFx1MDAzZWlycSwgbmRldik7XFxuIGVycl9odzpcXG4gXFx0ZGVzdHJveV93b3JrcXVldWUocHJpdi1cXHUwMDNleGZlcl93cSk7XFxuIGVycl93cTpcXG4gXFx0dW5yZWdpc3Rlcl9uZXRkZXYobmRldik7XFxuIGVycl9yZWdpc3RlcjpcXG4rXFx0aWYgKHByaXYtXFx1MDAzZWxpbmtfZ3BpbylcXG4rXFx0XFx0Z3Bpb2RfcHV0KHByaXYtXFx1MDAzZWxpbmtfZ3Bpbyk7XFxuK1xcbiBcXHRmcmVlX25ldGRldihuZGV2KTtcXG4gXFx0cmV0dXJuIGVycjtcXG4gfVxcbkBAIC04MjIsNiArODk2LDEwIEBAIHZvaWQgdzUxMDBfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFxuIFxcdHc1MTAwX2h3X3Jlc2V0KHByaXYpO1xcbiBcXHRmcmVlX2lycShwcml2LVxcdTAwM2VpcnEsIG5kZXYpO1xcbitcXHRpZiAocHJpdi1cXHUwMDNlbGlua19ncGlvKSB7XFxuK1xcdFxcdGZyZWVfaXJxKHByaXYtXFx1MDAzZWxpbmtfaXJxLCBuZGV2KTtcXG4rXFx0XFx0Z3Bpb2RfcHV0KHByaXYtXFx1MDAzZWxpbmtfZ3Bpbyk7XFxuK1xcdH1cXG4gXFxuIFxcdGZsdXNoX3dvcmsoXFx1MDAyNnByaXYtXFx1MDAzZXNldHJ4X3dvcmspO1xcbiBcXHRmbHVzaF93b3JrKFxcdTAwMjZwcml2LVxcdTAwM2VyZXN0YXJ0X3dvcmspO1xcbkBAIC04NDAsNiArOTE4LDcgQEAgc3RhdGljIGludCB3NTEwMF9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFxuIFxcdGlmIChuZXRpZl9ydW5uaW5nKG5kZXYpKSB7XFxuIFxcdFxcdG5ldGlmX2NhcnJpZXJfb2ZmKG5kZXYpO1xcbitcXG4gXFx0XFx0bmV0aWZfZGV2aWNlX2RldGFjaChuZGV2KTtcXG4gXFxuIFxcdFxcdHc1MTAwX2h3X2Nsb3NlKHByaXYpO1xcbkBAIC04NTcsNyArOTM2LDEyIEBAIHN0YXRpYyBpbnQgdzUxMDBfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFx0XFx0dzUxMDBfaHdfc3RhcnQocHJpdik7XFxuIFxcbiBcXHRcXHRuZXRpZl9kZXZpY2VfYXR0YWNoKG5kZXYpO1xcbitcXG4rXFx0XFx0aWYgKCFwcml2LVxcdTAwM2VsaW5rX2dwaW8gfHxcXG4rXFx0XFx0ICAgIGdwaW9kX2dldF92YWx1ZV9jYW5zbGVlcChwcml2LVxcdTAwM2VsaW5rX2dwaW8pICE9IDApXFxuK1xcdFxcdFxcdG5ldGlmX2NhcnJpZXJfb24obmRldik7XFxuIFxcdH1cXG4rXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuICNlbmRpZiAvKiBDT05GSUdfUE1fU0xFRVAgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTU6NDU6NTUuNzkxNjg0OTYxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTIxMjA1NDA0ODkyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHc1MTAwIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgZm9yIFdpem5ldCBXNTEwMC9XNTIwMC9XNTUwMCBoYXJkd2FyZSBjaGlwcyBjb25uZWN0ZWQgdmlhIFNQSS4gVGhlc2UgY2hpcHMgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBUaGUgZHJpdmVyJ3MgcHJvYmUgZnVuY3Rpb24gZXhwbGljaXRseSBjaGVja3MgaGFyZHdhcmUgcmVnaXN0ZXJzIChlLmcuLCB2ZXJpZnlpbmcgUlRSX0RFRkFVTFQpIGFuZCB3aWxsIGZhaWwgdG8gaW5pdGlhbGl6ZSB3aXRob3V0IHRoZSBwaHlzaWNhbCBoYXJkd2FyZSBwcmVzZW50LiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNzI0YzhmNzFmOGJlMDk5NGYxNDdjZTVmYTM3OWU1NjJmMWUxMWJkMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMTU6NDU6NTQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC50eHRcbmluZGV4IGU5NjY1Nzk4YzRiZTYuLmU5N2NlM2NiOTE4MzAgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC50eHRcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnR4dFxuQEAgLTI1LDYgKzI1LDcgQEAgT3B0aW9uYWwgcHJvcGVydGllczpcbiAgIEFjY29yZGluZyB0byB0aGUgdzU1MDAgZGF0YXNoZWV0LCB0aGUgY2hpcCBhbGxvd3MgYSBtYXhpbXVtIG9mIDgwIE1IeiwgaG93ZXZlcixcbiAgIGJvYXJkIGRlc2lnbnMgbWF5IG5lZWQgdG8gbGltaXQgdGhpcyB2YWx1ZS5cbiAtIGxvY2FsLW1hYy1hZGRyZXNzOiBTZWUgZXRoZXJuZXQudHh0IGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbistIGxpbmstZ3Bpb3M6IGEgR1BJTyBsaW5lIHVzZWQgZm9yIHRoZSBsaW5rIGRldGVjdGlvbiBpbnRlcnJ1cHRcbiBcbiBcbiBFeGFtcGxlIChmb3IgUmFzcGJlcnJ5IFBpIHdpdGggcGluIGNvbnRyb2wgc3R1ZmYgZm9yIEdQSU8gaXJxKTpcbkBAIC0zOCwxMyArMzksMTQgQEAgRXhhbXBsZSAoZm9yIFJhc3BiZXJyeSBQaSB3aXRoIHBpbiBjb250cm9sIHN0dWZmIGZvciBHUElPIGlycSk6XG4gXHRcdGludGVycnVwdC1wYXJlbnQgPSBcdTAwM2NcdTAwMjZncGlvXHUwMDNlO1xuIFx0XHRpbnRlcnJ1cHRzID0gXHUwMDNjMjUgSVJRX1RZUEVfRURHRV9GQUxMSU5HXHUwMDNlO1xuIFx0XHRzcGktbWF4LWZyZXF1ZW5jeSA9IFx1MDAzYzMwMDAwMDAwXHUwMDNlO1xuK1x0XHRsaW5rLWdwaW9zID0gXHUwMDNjXHUwMDI2Z3BpbyA0IEdQSU9fQUNUSVZFX0hJR0hcdTAwM2U7XG4gXHR9O1xuIH07XG4gXG4gXHUwMDI2Z3BpbyB7XG4gXHRldGgxX3BpbnM6IGV0aDFfcGlucyB7XG4tXHRcdGJyY20scGlucyA9IFx1MDAzYzI1XHUwMDNlO1xuLVx0XHRicmNtLGZ1bmN0aW9uID0gXHUwMDNjMFx1MDAzZTsgLyogaW4gKi9cbi1cdFx0YnJjbSxwdWxsID0gXHUwMDNjMFx1MDAzZTsgLyogbm9uZSAqL1xuK1x0XHRicmNtLHBpbnMgPSBcdTAwM2MyNSA0XHUwMDNlO1xuK1x0XHRicmNtLGZ1bmN0aW9uID0gXHUwMDNjMCAwXHUwMDNlOyAvKiBpbiAqL1xuK1x0XHRicmNtLHB1bGwgPSBcdTAwM2MwIDBcdTAwM2U7IC8qIG5vbmUgKi9cbiBcdH07XG4gfTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jXG5pbmRleCA1M2Q4ZGM2NDJmYmQ2Li5jOWQxODkxZjM3Yjk4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jXG5AQCAtMjIsNiArMjIsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2lvcG9ydC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaW50ZXJydXB0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pcnEuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2dwaW8vY29uc3VtZXIuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwidzUxMDAuaFwiXG4gXG5AQCAtMTU0LDYgKzE1NSw4IEBAIHN0cnVjdCB3NTEwMF9wcml2IHtcbiBcdHUxNiBzMF9yeF9idWZfc2l6ZTtcbiBcbiBcdGludCBpcnE7XG4rXHRpbnQgbGlua19pcnE7XG4rXHRzdHJ1Y3QgZ3Bpb19kZXNjICpsaW5rX2dwaW87XG4gXG4gXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2O1xuQEAgLTQxNCw2ICs0MTcsMTYgQEAgc3RhdGljIHZvaWQgdzUxMDBfZ2V0X2RydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRcdHNpemVvZihpbmZvLVx1MDAzZWJ1c19pbmZvKSk7XG4gfVxuIFxuK3N0YXRpYyB1MzIgdzUxMDBfZ2V0X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4re1xuK1x0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbitcbitcdGlmIChwcml2LVx1MDAzZWxpbmtfZ3BpbylcbitcdFx0cmV0dXJuICEhZ3Bpb2RfZ2V0X3ZhbHVlX2NhbnNsZWVwKHByaXYtXHUwMDNlbGlua19ncGlvKTtcbitcbitcdHJldHVybiAxO1xuK31cbitcbiBzdGF0aWMgdTMyIHc1MTAwX2dldF9tc2dsZXZlbChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiB7XG4gXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuQEAgLTYxNiw2ICs2MjksMjQgQEAgc3RhdGljIGlycXJldHVybl90IHc1MTAwX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpuZGV2X2luc3RhbmNlKVxuIFx0cmV0dXJuIElSUV9IQU5ETEVEO1xuIH1cbiBcbitzdGF0aWMgaXJxcmV0dXJuX3QgdzUxMDBfZGV0ZWN0X2xpbmsoaW50IGlycSwgdm9pZCAqbmRldl9pbnN0YW5jZSlcbit7XG4rXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IG5kZXZfaW5zdGFuY2U7XG4rXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuK1xuK1x0aWYgKG5ldGlmX3J1bm5pbmcobmRldikpIHtcbitcdFx0aWYgKGdwaW9kX2dldF92YWx1ZShwcml2LVx1MDAzZWxpbmtfZ3BpbykgIT0gMCkge1xuK1x0XHRcdG5ldGlmX2luZm8ocHJpdiwgbGluaywgbmRldiwgXCJsaW5rIGlzIHVwXFxuXCIpO1xuK1x0XHRcdG5ldGlmX2NhcnJpZXJfb24obmRldik7XG4rXHRcdH0gZWxzZSB7XG4rXHRcdFx0bmV0aWZfaW5mbyhwcml2LCBsaW5rLCBuZGV2LCBcImxpbmsgaXMgZG93blxcblwiKTtcbitcdFx0XHRuZXRpZl9jYXJyaWVyX29mZihuZGV2KTtcbitcdFx0fVxuK1x0fVxuK1xuK1x0cmV0dXJuIElSUV9IQU5ETEVEO1xuK31cbitcbiBzdGF0aWMgdm9pZCB3NTEwMF9zZXRyeF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiB7XG4gXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdzUxMDBfcHJpdixcbkBAIC02NTksNiArNjkwLDE0IEBAIHN0YXRpYyBpbnQgdzUxMDBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiBcdHc1MTAwX2h3X3N0YXJ0KHByaXYpO1xuIFx0bmFwaV9lbmFibGUoXHUwMDI2cHJpdi1cdTAwM2VuYXBpKTtcbiBcdG5ldGlmX3N0YXJ0X3F1ZXVlKG5kZXYpO1xuK1xuK1x0aWYgKHByaXYtXHUwMDNlbGlua19ncGlvKSB7XG4rXHRcdGlmIChncGlvZF9nZXRfdmFsdWVfY2Fuc2xlZXAocHJpdi1cdTAwM2VsaW5rX2dwaW8pICE9IDApXG4rXHRcdFx0bmV0aWZfY2Fycmllcl9vbihuZGV2KTtcbitcdFx0ZWxzZVxuK1x0XHRcdG5ldGlmX2NhcnJpZXJfb2ZmKG5kZXYpO1xuK1x0fVxuK1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuQEAgLTY3OCw2ICs3MTcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHc1MTAwX2V0aHRvb2xfb3BzID0ge1xuIFx0LmdldF9kcnZpbmZvXHRcdD0gdzUxMDBfZ2V0X2RydmluZm8sXG4gXHQuZ2V0X21zZ2xldmVsXHRcdD0gdzUxMDBfZ2V0X21zZ2xldmVsLFxuIFx0LnNldF9tc2dsZXZlbFx0XHQ9IHc1MTAwX3NldF9tc2dsZXZlbCxcbitcdC5nZXRfbGlua1x0XHQ9IHc1MTAwX2dldF9saW5rLFxuIFx0LmdldF9yZWdzX2xlblx0XHQ9IHc1MTAwX2dldF9yZWdzX2xlbixcbiBcdC5nZXRfcmVnc1x0XHQ9IHc1MTAwX2dldF9yZWdzLFxuIH07XG5AQCAtNzUxLDYgKzc5MSwxMyBAQCBpbnQgdzUxMDBfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgdzUxMDBfb3BzICpvcHMsXG4gXHRwcml2LVx1MDAzZW5kZXYgPSBuZGV2O1xuIFx0cHJpdi1cdTAwM2VvcHMgPSBvcHM7XG4gXHRwcml2LVx1MDAzZWlycSA9IGlycTtcbitcdHByaXYtXHUwMDNlbGlua19ncGlvID0gZ3Bpb2RfZ2V0X29wdGlvbmFsKGRldiwgXCJsaW5rXCIsIEdQSU9EX0lOKTtcbitcdGlmIChJU19FUlIocHJpdi1cdTAwM2VsaW5rX2dwaW8pKSB7XG4rXHRcdGVyciA9IGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHByaXYtXHUwMDNlbGlua19ncGlvKSxcbitcdFx0XHRcdCAgICBcImZhaWxlZCB0byBnZXQgbGluayBHUElPXFxuXCIpO1xuK1x0XHRwcml2LVx1MDAzZWxpbmtfZ3BpbyA9IE5VTEw7XG4rXHRcdGdvdG8gZXJyX3JlZ2lzdGVyO1xuK1x0fVxuIFxuIFx0bmRldi1cdTAwM2VuZXRkZXZfb3BzID0gXHUwMDI2dzUxMDBfbmV0ZGV2X29wcztcbiBcdG5kZXYtXHUwMDNlZXRodG9vbF9vcHMgPSBcdTAwMjZ3NTEwMF9ldGh0b29sX29wcztcbkBAIC04MDMsMTMgKzg1MCw0MCBAQCBpbnQgdzUxMDBfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgdzUxMDBfb3BzICpvcHMsXG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIGVycl9odztcbiBcbitcdGlmIChwcml2LVx1MDAzZWxpbmtfZ3Bpbykge1xuK1x0XHRjaGFyICpsaW5rX25hbWUgPSBkZXZtX2thc3ByaW50ZihkZXYsIEdGUF9LRVJORUwsIFwiJXMtbGlua1wiLFxuK1x0XHRcdFx0XHRcdCBkZXZfbmFtZShkZXYpKTtcbitcdFx0aWYgKCFsaW5rX25hbWUpIHtcbitcdFx0XHRlcnIgPSAtRU5PTUVNO1xuK1x0XHRcdGdvdG8gZXJyX2dwaW87XG4rXHRcdH1cbitcbitcdFx0cHJpdi1cdTAwM2VsaW5rX2lycSA9IGdwaW9kX3RvX2lycShwcml2LVx1MDAzZWxpbmtfZ3Bpbyk7XG4rXHRcdGlmIChwcml2LVx1MDAzZWxpbmtfaXJxIFx1MDAzYyAwKSB7XG4rXHRcdFx0ZXJyID0gcHJpdi1cdTAwM2VsaW5rX2lycTtcbitcdFx0XHRnb3RvIGVycl9ncGlvO1xuK1x0XHR9XG4rXG4rXHRcdGVyciA9IHJlcXVlc3RfYW55X2NvbnRleHRfaXJxKHByaXYtXHUwMDNlbGlua19pcnEsIHc1MTAwX2RldGVjdF9saW5rLFxuK1x0XHRcdFx0XHQgICAgICBJUlFGX1RSSUdHRVJfUklTSU5HIHxcbitcdFx0XHRcdFx0XHQgICAgICBJUlFGX1RSSUdHRVJfRkFMTElORyxcbitcdFx0XHRcdFx0ICAgICAgbGlua19uYW1lLCBwcml2LVx1MDAzZW5kZXYpO1xuK1x0XHRpZiAoZXJyIFx1MDAzYyAwKVxuK1x0XHRcdGdvdG8gZXJyX2dwaW87XG4rXHR9XG4rXG4gXHRyZXR1cm4gMDtcbiBcbitlcnJfZ3BpbzpcbitcdGZyZWVfaXJxKHByaXYtXHUwMDNlaXJxLCBuZGV2KTtcbiBlcnJfaHc6XG4gXHRkZXN0cm95X3dvcmtxdWV1ZShwcml2LVx1MDAzZXhmZXJfd3EpO1xuIGVycl93cTpcbiBcdHVucmVnaXN0ZXJfbmV0ZGV2KG5kZXYpO1xuIGVycl9yZWdpc3RlcjpcbitcdGlmIChwcml2LVx1MDAzZWxpbmtfZ3BpbylcbitcdFx0Z3Bpb2RfcHV0KHByaXYtXHUwMDNlbGlua19ncGlvKTtcbitcbiBcdGZyZWVfbmV0ZGV2KG5kZXYpO1xuIFx0cmV0dXJuIGVycjtcbiB9XG5AQCAtODIyLDYgKzg5NiwxMCBAQCB2b2lkIHc1MTAwX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXG4gXHR3NTEwMF9od19yZXNldChwcml2KTtcbiBcdGZyZWVfaXJxKHByaXYtXHUwMDNlaXJxLCBuZGV2KTtcbitcdGlmIChwcml2LVx1MDAzZWxpbmtfZ3Bpbykge1xuK1x0XHRmcmVlX2lycShwcml2LVx1MDAzZWxpbmtfaXJxLCBuZGV2KTtcbitcdFx0Z3Bpb2RfcHV0KHByaXYtXHUwMDNlbGlua19ncGlvKTtcbitcdH1cbiBcbiBcdGZsdXNoX3dvcmsoXHUwMDI2cHJpdi1cdTAwM2VzZXRyeF93b3JrKTtcbiBcdGZsdXNoX3dvcmsoXHUwMDI2cHJpdi1cdTAwM2VyZXN0YXJ0X3dvcmspO1xuQEAgLTg0MCw2ICs5MTgsNyBAQCBzdGF0aWMgaW50IHc1MTAwX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KVxuIFxuIFx0aWYgKG5ldGlmX3J1bm5pbmcobmRldikpIHtcbiBcdFx0bmV0aWZfY2Fycmllcl9vZmYobmRldik7XG4rXG4gXHRcdG5ldGlmX2RldmljZV9kZXRhY2gobmRldik7XG4gXG4gXHRcdHc1MTAwX2h3X2Nsb3NlKHByaXYpO1xuQEAgLTg1Nyw3ICs5MzYsMTIgQEAgc3RhdGljIGludCB3NTEwMF9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0XHR3NTEwMF9od19zdGFydChwcml2KTtcbiBcbiBcdFx0bmV0aWZfZGV2aWNlX2F0dGFjaChuZGV2KTtcbitcbitcdFx0aWYgKCFwcml2LVx1MDAzZWxpbmtfZ3BpbyB8fFxuK1x0XHQgICAgZ3Bpb2RfZ2V0X3ZhbHVlX2NhbnNsZWVwKHByaXYtXHUwMDNlbGlua19ncGlvKSAhPSAwKVxuK1x0XHRcdG5ldGlmX2NhcnJpZXJfb24obmRldik7XG4gXHR9XG4rXG4gXHRyZXR1cm4gMDtcbiB9XG4gI2VuZGlmIC8qIENPTkZJR19QTV9TTEVFUCAqL1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTU6NDU6NTUuNzkxNjg2MDMxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ0NjgxMzYxMDA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgV2l6bmV0IFc1MTAwIEV0aGVybmV0IERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggZm9yIHRoZSBgdzUxMDBgIGV0aGVybmV0IGRyaXZlciwgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuY2AuIEl0IGxvb2tzIGxpa2UgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGxpbmsgZGV0ZWN0aW9uIHZpYSBhIEdQSU8uIEkgc2VlIG5ldyBmdW5jdGlvbnMgYWRkZWQ6IGB3NTEwMF9nZXRfbGlua2AgYW5kIGB3NTEwMF9kZXRlY3RfbGlua2AsIHRoZSBsYXR0ZXIgYmVpbmcgYW4gSVJRIGhhbmRsZXIsIHdoaWNoIG1ha2VzIHNlbnNlIGZvciByZXNwb25kaW5nIHRvIHBpbiBjaGFuZ2VzLiBJdCBhbHNvIHRvdWNoZXMgYSBmZXcgb3RoZXIga2V5IGFyZWFzOiBgdzUxMDBfb3BlbmAsIGB3NTEwMF9wcm9iZWAsIGB3NTEwMF9yZW1vdmVgLCBgdzUxMDBfc3VzcGVuZGAsIGFuZCBgdzUxMDBfcmVzdW1lYC4gU28sIGl0J3MgbW9kaWZ5aW5nIHRoZSBjb3JlIGxpZmVjeWNsZSBhbmQgcG93ZXIgbWFuYWdlbWVudCBmdW5jdGlvbnMgdG8gaW5jb3Jwb3JhdGUgdGhpcyBuZXcgbGluayBkZXRlY3Rpb24uXG5cbk5vdywgSSBuZWVkIHRvIHRoaW5rIGFib3V0IGhvdyB0aGlzIGludGVyYWN0cyB3aXRoIHZpcnR1YWxpemF0aW9uLiBUaGlzIGRyaXZlciBpcyBmb3IgYSBXaXpuZXQgVzUxMDAsIFc1MjAwLCBvciBXNTUwMCBNQUMvUEhZLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoZXNlIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcnMsIGVzcGVjaWFsbHkgdGhvc2UgdGhhdCBkZWFsIHdpdGggU1BJIG9yIG1lbW9yeS1tYXBwZWQgaW50ZXJmYWNlcywgYXJlIGdlbmVyYWxseSAqbm90KiBlbXVsYXRlZCBieSBRRU1VIHVubGVzcyB0aGVyZSdzIGFuIGV4cGxpY2l0IG1vZGVsLiBJIHdvbmRlciwgZG9lcyBRRU1VIGV2ZW4gaGF2ZSBhIFdpem5ldCBXNTEwMCBtb2RlbD8gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhhdC5cblxuVG8gZmlndXJlIHRoaXMgb3V0IHF1aWNrbHksIEknbSBnb2luZyB0byBzZWFyY2ggdGhlIGtlcm5lbCBzb3VyY2UgZm9yIFwidzUxMDBcIiB0byBzZWUgaWYgaXQncyB0cmVhdGVkIGFzIGEgcGxhdGZvcm0gb3IgU1BJIGRldmljZS4gVGhhdCdsbCB0ZWxsIG1lIGlmIGl0J3MgaW50ZWdyYXRlZCBpbiBhIHdheSB0aGF0IFFFTVUgbWlnaHQgdG91Y2guIFdhaXQsIHJpZ2h0Li4uIFdpem5ldCBkZXZpY2VzIGFyZSAqdHlwaWNhbGx5KiBTUEkgb3IgbWVtb3J5LW1hcHBlZC4gSSBjYW4gY2hlY2sgdGhlIGRyaXZlciBpdHNlbGYsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuY2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNsZWFyZXN0IHBpY3R1cmUuIExldCBtZSBkaXZlIGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDMwLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTU6NDg6MjAuNDczMDUxMjJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU1NDAzMjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidzUxMDBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDY0OCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L0tjb25maWc9MTk9Y29uZmlnIFdJWk5FVF9XNTEwMFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L0tjb25maWctMjktXFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L0tjb25maWc6MzA6XFx0ICB3aWxsIGJlIGNhbGxlZCB3NTEwMC5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvS2NvbmZpZy0zMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC9NYWtlZmlsZToyOm9iai0kKENPTkZJR19XSVpORVRfVzUxMDApICs9IHc1MTAwLm8gdzUxMDAtc3BpLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy0yMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6MjE6I2luY2x1ZGUgXFxcInc1MTAwLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTIyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTI1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzoyNjpzdGF0aWMgaW50IHc1MTAwX3NwaV9yZWFkKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgYWRkcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtMjcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTM3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzozODpzdGF0aWMgaW50IHc1MTAwX3NwaV93cml0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTMyIGFkZHIsIHU4IGRhdGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDY6c3RhdGljIGludCB3NTEwMF9zcGlfcmVhZDE2KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgYWRkcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTUwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo1MTpcXHRyZXQgPSB3NTEwMF9zcGlfcmVhZChuZGV2LCBhZGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNTItXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNTQtXFx0ZGF0YSA9IHJldCBcXHUwMDNjXFx1MDAzYyA4O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo1NTpcXHRyZXQgPSB3NTEwMF9zcGlfcmVhZChuZGV2LCBhZGRyICsgMSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTU2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo2MDpzdGF0aWMgaW50IHc1MTAwX3NwaV93cml0ZTE2KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgYWRkciwgdTE2IGRhdGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTYxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy02My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NjQ6XFx0cmV0ID0gdzUxMDBfc3BpX3dyaXRlKG5kZXYsIGFkZHIsIGRhdGEgXFx1MDAzZVxcdTAwM2UgOCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTY1LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjY4OlxcdHJldHVybiB3NTEwMF9zcGlfd3JpdGUobmRldiwgYWRkciArIDEsIGRhdGEgXFx1MDAyNiAweGZmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNjktfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy03MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NzE6c3RhdGljIGludCB3NTEwMF9zcGlfcmVhZGJ1bGsoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHUzMiBhZGRyLCB1OCAqYnVmLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy03Mi1cXHRcXHRcXHQgICAgICBpbnQgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTc2LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBsZW47IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo3NzpcXHRcXHRpbnQgcmV0ID0gdzUxMDBfc3BpX3JlYWQobmRldiwgYWRkciArIGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy03OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy04Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6ODc6c3RhdGljIGludCB3NTEwMF9zcGlfd3JpdGVidWxrKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgYWRkciwgY29uc3QgdTggKmJ1ZixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtODgtXFx0XFx0XFx0ICAgICAgIGludCBsZW4pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtOTItXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGxlbjsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjkzOlxcdFxcdGludCByZXQgPSB3NTEwMF9zcGlfd3JpdGUobmRldiwgYWRkciArIGksIGJ1ZltpXSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTk0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTEwMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6MTAyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgdzUxMDBfb3BzIHc1MTAwX3NwaV9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTEwMy1cXHQubWF5X3NsZWVwID0gdHJ1ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtMTA0LVxcdC5jaGlwX2lkID0gVzUxMDAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjEwNTpcXHQucmVhZCA9IHc1MTAwX3NwaV9yZWFkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzoxMDY6XFx0LndyaXRlID0gdzUxMDBfc3BpX3dyaXRlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzoxMDc6XFx0LnJlYWQxNiA9IHc1MTAwX3NwaV9yZWFkMTYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjEwODpcXHQud3JpdGUxNiA9IHc1MTAwX3NwaV93cml0ZTE2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzoxMDk6XFx0LnJlYWRidWxrID0gdzUxMDBfc3BpX3JlYWRidWxrLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzoxMTA6XFx0LndyaXRlYnVsayA9IHc1MTAwX3NwaV93cml0ZWJ1bGssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTExMS19O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jPTEyNT1zdGF0aWMgc3RydWN0IHc1MjAwX3NwaV9wcml2ICp3NTIwMF9zcGlfcHJpdihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtMTI2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6MTI3OlxcdHJldHVybiB3NTEwMF9vcHNfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtMTI4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYz0yMTM9c3RhdGljIGludCB3NTIwMF9zcGlfd3JpdGVidWxrKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgYWRkciwgY29uc3QgdTggKmJ1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy0yNDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjI0MzpzdGF0aWMgY29uc3Qgc3RydWN0IHc1MTAwX29wcyB3NTIwMF9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTI0NC1cXHQubWF5X3NsZWVwID0gdHJ1ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYz0yNzA9c3RhdGljIHN0cnVjdCB3NTUwMF9zcGlfcHJpdiAqdzU1MDBfc3BpX3ByaXYoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTI3MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjI3MjpcXHRyZXR1cm4gdzUxMDBfb3BzX3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTI3My19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM9MzcyPXN0YXRpYyBpbnQgdzU1MDBfc3BpX3dyaXRlYnVsayhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTMyIGFkZHIsIGNvbnN0IHU4ICpidWYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDAwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0MDE6c3RhdGljIGNvbnN0IHN0cnVjdCB3NTEwMF9vcHMgdzU1MDBfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00MDItXFx0Lm1heV9zbGVlcCA9IHRydWUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0MTM6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgdzUxMDBfb2ZfbWF0Y2hbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDE0OlxcdHsgLmNvbXBhdGlibGUgPSBcXFwid2l6bmV0LHc1MTAwXFxcIiwgLmRhdGEgPSAoY29uc3Qgdm9pZCopVzUxMDAsIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQxNS1cXHR7IC5jb21wYXRpYmxlID0gXFxcIndpem5ldCx3NTIwMFxcXCIsIC5kYXRhID0gKGNvbnN0IHZvaWQqKVc1MjAwLCB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQxOC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0MTk6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgdzUxMDBfb2ZfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00MjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQyMTpzdGF0aWMgaW50IHc1MTAwX3NwaV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00MjIte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0MjM6XFx0Y29uc3Qgc3RydWN0IHc1MTAwX29wcyAqb3BzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00MjQtXFx0a2VybmVsX3Vsb25nX3QgZHJpdmVyX2RhdGE7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDM3LVxcdGNhc2UgVzUxMDA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQzODpcXHRcXHRvcHMgPSBcXHUwMDI2dzUxMDBfc3BpX29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDM5LVxcdFxcdHByaXZfc2l6ZSA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDUyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0NTM6XFx0cmV0dXJuIHc1MTAwX3Byb2JlKFxcdTAwMjZzcGktXFx1MDAzZWRldiwgb3BzLCBwcml2X3NpemUsIG1hYywgc3BpLVxcdTAwM2VpcnEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NTQtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ1NjpzdGF0aWMgdm9pZCB3NTEwMF9zcGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQ1Ny17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ1ODpcXHR3NTEwMF9yZW1vdmUoXFx1MDAyNnNwaS1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDU5LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDYwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0NjE6c3RhdGljIGNvbnN0IHN0cnVjdCBzcGlfZGV2aWNlX2lkIHc1MTAwX3NwaV9pZHNbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDYyOlxcdHsgXFxcInc1MTAwXFxcIiwgVzUxMDAgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDYzLVxcdHsgXFxcInc1MjAwXFxcIiwgVzUyMDAgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NjYtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDY3Ok1PRFVMRV9ERVZJQ0VfVEFCTEUoc3BpLCB3NTEwMF9zcGlfaWRzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDY4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0Njk6c3RhdGljIHN0cnVjdCBzcGlfZHJpdmVyIHc1MTAwX3NwaV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQ3MC1cXHQuZHJpdmVyXFx0XFx0PSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ3MTpcXHRcXHQubmFtZVxcdD0gXFxcInc1MTAwXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDcyOlxcdFxcdC5wbVxcdD0gXFx1MDAyNnc1MTAwX3BtX29wcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDczOlxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IHc1MTAwX29mX21hdGNoLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NzQtXFx0fSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDc1OlxcdC5wcm9iZVxcdFxcdD0gdzUxMDBfc3BpX3Byb2JlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0NzY6XFx0LnJlbW92ZVxcdFxcdD0gdzUxMDBfc3BpX3JlbW92ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDc3OlxcdC5pZF90YWJsZVxcdD0gdzUxMDBfc3BpX2lkcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDc4LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ3OTptb2R1bGVfc3BpX2RyaXZlcih3NTEwMF9zcGlfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDgwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mjc6I2luY2x1ZGUgXFxcInc1MTAwLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mjk6I2RlZmluZSBEUlZfTkFNRVxcdFxcXCJ3NTEwMFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMC0jZGVmaW5lIERSVl9WRVJTSU9OXFx0XFxcIjIwMTItMDQtMDRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYz0zNT1NT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0xNDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MTQ1OnN0cnVjdCB3NTEwMF9wcml2IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoxNDY6XFx0Y29uc3Qgc3RydWN0IHc1MTAwX29wcyAqb3BzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE0Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE3My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoxNzQ6c3RhdGljIGludCB3NTEwMF9yZWFkKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2LCB1MzIgYWRkcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0xNzUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMTc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjE3OTpzdGF0aWMgaW50IHc1MTAwX3dyaXRlKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2LCB1MzIgYWRkciwgdTggZGF0YSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0xODAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMTgzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjE4NDpzdGF0aWMgaW50IHc1MTAwX3JlYWQxNihzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiwgdTMyIGFkZHIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMTg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE4OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoxODk6c3RhdGljIGludCB3NTEwMF93cml0ZTE2KHN0cnVjdCB3NTEwMF9wcml2ICpwcml2LCB1MzIgYWRkciwgdTE2IGRhdGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMTkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE5My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoxOTQ6c3RhdGljIGludCB3NTEwMF9yZWFkYnVsayhzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiwgdTMyIGFkZHIsIHU4ICpidWYsIGludCBsZW4pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMTk1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE5OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoxOTk6c3RhdGljIGludCB3NTEwMF93cml0ZWJ1bGsoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYsIHUzMiBhZGRyLCBjb25zdCB1OCAqYnVmLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTIwMC1cXHRcXHRcXHQgICBpbnQgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjA0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjIwNTpzdGF0aWMgaW50IHc1MTAwX3JlYWRidWYoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYsIHUxNiBvZmZzZXQsIHU4ICpidWYsIGludCBsZW4pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjA2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTIyMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoyMjE6XFx0cmV0ID0gdzUxMDBfcmVhZGJ1bGsocHJpdiwgYWRkciwgYnVmLCBsZW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTIyMi1cXHRpZiAocmV0IHx8ICFyZW1haW4pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yMjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjI1OlxcdHJldHVybiB3NTEwMF9yZWFkYnVsayhwcml2LCBtZW1fc3RhcnQsIGJ1ZiArIGxlbiwgcmVtYWluKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yMjYtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTIyNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoyMjg6c3RhdGljIGludCB3NTEwMF93cml0ZWJ1ZihzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiwgdTE2IG9mZnNldCwgY29uc3QgdTggKmJ1ZixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yMjktXFx0XFx0XFx0ICBpbnQgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjQ0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjI0NTpcXHRyZXQgPSB3NTEwMF93cml0ZWJ1bGsocHJpdiwgYWRkciwgYnVmLCBsZW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI0Ni1cXHRpZiAocmV0IHx8ICFyZW1haW4pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjQ5OlxcdHJldHVybiB3NTEwMF93cml0ZWJ1bGsocHJpdiwgbWVtX3N0YXJ0LCBidWYgKyBsZW4sIHJlbWFpbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjUwLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjUyOnN0YXRpYyBpbnQgdzUxMDBfcmVzZXQoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjUzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI1Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoyNTc6XFx0dzUxMDBfd3JpdGUocHJpdiwgVzUxMDBfTVIsIE1SX1JTVCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjU4LVxcdG1kZWxheSg1KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoyNTk6XFx0dzUxMDBfd3JpdGUocHJpdiwgVzUxMDBfTVIsIE1SX1BCKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNjAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNjMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjY0OnN0YXRpYyBpbnQgdzUxMDBfY29tbWFuZChzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiwgdTE2IGNtZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNjUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjI2ODpcXHR3NTEwMF93cml0ZShwcml2LCBXNTEwMF9TMF9DUihwcml2KSwgY21kKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNjktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjcyOlxcdHdoaWxlICh3NTEwMF9yZWFkKHByaXYsIFc1MTAwX1MwX0NSKHByaXYpKSAhPSAwKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjczLVxcdFxcdGlmICh0aW1lX2FmdGVyKGppZmZpZXMsIHRpbWVvdXQpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjgwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjI4MTpzdGF0aWMgdm9pZCB3NTEwMF93cml0ZV9tYWNhZGRyKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI4Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yODQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mjg1OlxcdHc1MTAwX3dyaXRlYnVsayhwcml2LCBXNTEwMF9TSEFSLCBuZGV2LVxcdTAwM2VkZXZfYWRkciwgRVRIX0FMRU4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI4Ni19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjg3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjI4ODpzdGF0aWMgdm9pZCB3NTEwMF9zb2NrZXRfaW50cl9tYXNrKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2LCB1OCBtYXNrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI4OS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yOTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mjk3OlxcdHc1MTAwX3dyaXRlKHByaXYsIGltciwgbWFzayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjk4LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yOTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzAwOnN0YXRpYyB2b2lkIHc1MTAwX2VuYWJsZV9pbnRyKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMwMS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzAyOlxcdHc1MTAwX3NvY2tldF9pbnRyX21hc2socHJpdiwgSVJfUzApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMwMy19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzA0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjMwNTpzdGF0aWMgdm9pZCB3NTEwMF9kaXNhYmxlX2ludHIoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzA2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozMDc6XFx0dzUxMDBfc29ja2V0X2ludHJfbWFzayhwcml2LCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMDgtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMwOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozMTA6c3RhdGljIHZvaWQgdzUxMDBfbWVtb3J5X2NvbmZpZ3VyZShzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMTEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzE0LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjMxNTpcXHR3NTEwMF93cml0ZShwcml2LCBXNTEwMF9STVNSLCAweDAzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozMTY6XFx0dzUxMDBfd3JpdGUocHJpdiwgVzUxMDBfVE1TUiwgMHgwMyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzE3LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzE5OnN0YXRpYyB2b2lkIHc1MjAwX21lbW9yeV9jb25maWd1cmUoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzIwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMyNS1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozMjY6XFx0dzUxMDBfd3JpdGUocHJpdiwgVzUyMDBfU25fUlhNRU1fU0laRSgwKSwgMHgxMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzI3OlxcdHc1MTAwX3dyaXRlKHByaXYsIFc1MjAwX1NuX1RYTUVNX1NJWkUoMCksIDB4MTApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMyOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMjktXFx0Zm9yIChpID0gMTsgaSBcXHUwMDNjIDg7IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjMzMDpcXHRcXHR3NTEwMF93cml0ZShwcml2LCBXNTIwMF9Tbl9SWE1FTV9TSVpFKGkpLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozMzE6XFx0XFx0dzUxMDBfd3JpdGUocHJpdiwgVzUyMDBfU25fVFhNRU1fU0laRShpKSwgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzMyLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMzNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozMzU6c3RhdGljIHZvaWQgdzU1MDBfbWVtb3J5X2NvbmZpZ3VyZShzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMzYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzQxLVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM0MjpcXHR3NTEwMF93cml0ZShwcml2LCBXNTUwMF9Tbl9SWE1FTV9TSVpFKDApLCAweDEwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozNDM6XFx0dzUxMDBfd3JpdGUocHJpdiwgVzU1MDBfU25fVFhNRU1fU0laRSgwKSwgMHgxMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzQ0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM0NS1cXHRmb3IgKGkgPSAxOyBpIFxcdTAwM2MgODsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzQ2OlxcdFxcdHc1MTAwX3dyaXRlKHByaXYsIFc1NTAwX1NuX1JYTUVNX1NJWkUoaSksIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM0NzpcXHRcXHR3NTEwMF93cml0ZShwcml2LCBXNTUwMF9Tbl9UWE1FTV9TSVpFKGkpLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zNDgtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzUwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM1MTpzdGF0aWMgaW50IHc1MTAwX2h3X3Jlc2V0KHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM1Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zNTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzU1OlxcdHc1MTAwX3Jlc2V0KHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM1Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozNTc6XFx0dzUxMDBfZGlzYWJsZV9pbnRyKHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM1ODpcXHR3NTEwMF93cml0ZV9tYWNhZGRyKHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM1OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM2MS1cXHRjYXNlIFc1MTAwOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM2MjpcXHRcXHR3NTEwMF9tZW1vcnlfY29uZmlndXJlKHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM2My1cXHRcXHRydHIgPSBXNTEwMF9SVFI7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zNzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mzc3OlxcdGlmICh3NTEwMF9yZWFkMTYocHJpdiwgcnRyKSAhPSBSVFJfREVGQVVMVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zNzgtXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zODItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzgzOnN0YXRpYyB2b2lkIHc1MTAwX2h3X3N0YXJ0KHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM4NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zOTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mzk0OlxcdHc1MTAwX3dyaXRlKHByaXYsIFc1MTAwX1MwX01SKHByaXYpLCBtb2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozOTU6XFx0dzUxMDBfY29tbWFuZChwcml2LCBTMF9DUl9PUEVOKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozOTY6XFx0dzUxMDBfZW5hYmxlX2ludHIocHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzk3LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zOTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mzk5OnN0YXRpYyB2b2lkIHc1MTAwX2h3X2Nsb3NlKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQwMC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDAxOlxcdHc1MTAwX2Rpc2FibGVfaW50cihwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0MDI6XFx0dzUxMDBfY29tbWFuZChwcml2LCBTMF9DUl9DTE9TRSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDAzLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQxMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0MTE6c3RhdGljIHZvaWQgdzUxMDBfZ2V0X2RydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDEyLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBldGh0b29sX2RydmluZm8gKmluZm8pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00MTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDIwOnN0YXRpYyB1MzIgdzUxMDBfZ2V0X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDIxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0MjI6XFx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00MjMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00MjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDMwOnN0YXRpYyB1MzIgdzUxMDBfZ2V0X21zZ2xldmVsKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQzMS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDMyOlxcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDMzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQzNzpzdGF0aWMgdm9pZCB3NTEwMF9zZXRfbXNnbGV2ZWwoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHUzMiB2YWx1ZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00Mzgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQzOTpcXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ0MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ0My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0NDQ6c3RhdGljIGludCB3NTEwMF9nZXRfcmVnc19sZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDQ1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ0OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0NDk6c3RhdGljIHZvaWQgdzUxMDBfZ2V0X3JlZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDUwLVxcdFxcdFxcdCAgIHN0cnVjdCBldGh0b29sX3JlZ3MgKnJlZ3MsIHZvaWQgKmJ1ZilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NTEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ1MjpcXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ1My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NTQtXFx0cmVncy1cXHUwMDNldmVyc2lvbiA9IDE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDU1OlxcdHc1MTAwX3JlYWRidWxrKHByaXYsIFc1MTAwX0NPTU1PTl9SRUdTLCBidWYsIFc1MTAwX0NPTU1PTl9SRUdTX0xFTik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDU2LVxcdGJ1ZiArPSBXNTEwMF9DT01NT05fUkVHU19MRU47XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDU3OlxcdHc1MTAwX3JlYWRidWxrKHByaXYsIFMwX1JFR1MocHJpdiksIGJ1ZiwgVzUxMDBfUzBfUkVHU19MRU4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ1OC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ2MDpzdGF0aWMgdm9pZCB3NTEwMF9yZXN0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ2MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDYyOlxcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ2NC1cXHRuZXRpZl9zdG9wX3F1ZXVlKG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ2NTpcXHR3NTEwMF9od19yZXNldChwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0NjY6XFx0dzUxMDBfaHdfc3RhcnQocHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDY3LVxcdG5kZXYtXFx1MDAzZXN0YXRzLnR4X2Vycm9ycysrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDcxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ3MjpzdGF0aWMgdm9pZCB3NTEwMF9yZXN0YXJ0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ3My17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDc0OlxcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB3NTEwMF9wcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ3NS1cXHRcXHRcXHRcXHRcXHQgICAgICAgcmVzdGFydF93b3JrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDc3OlxcdHc1MTAwX3Jlc3RhcnQocHJpdi1cXHUwMDNlbmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDc4LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDgwOnN0YXRpYyB2b2lkIHc1MTAwX3R4X3RpbWVvdXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHVuc2lnbmVkIGludCB0eHF1ZXVlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ4MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDgyOlxcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDgzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDg2LVxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0ODc6XFx0XFx0dzUxMDBfcmVzdGFydChuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00ODgtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ4OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0OTA6c3RhdGljIHZvaWQgdzUxMDBfdHhfc2tiKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ5MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDkyOlxcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDkzLVxcdHUxNiBvZmZzZXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ5NTpcXHRvZmZzZXQgPSB3NTEwMF9yZWFkMTYocHJpdiwgVzUxMDBfUzBfVFhfV1IocHJpdikpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ5NjpcXHR3NTEwMF93cml0ZWJ1Zihwcml2LCBvZmZzZXQsIHNrYi1cXHUwMDNlZGF0YSwgc2tiLVxcdTAwM2VsZW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ5NzpcXHR3NTEwMF93cml0ZTE2KHByaXYsIFc1MTAwX1MwX1RYX1dSKHByaXYpLCBvZmZzZXQgKyBza2ItXFx1MDAzZWxlbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDk4LVxcdG5kZXYtXFx1MDAzZXN0YXRzLnR4X2J5dGVzICs9IHNrYi1cXHUwMDNlbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTAxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUwMjpcXHR3NTEwMF9jb21tYW5kKHByaXYsIFMwX0NSX1NFTkQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTUwMy19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTA0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUwNTpzdGF0aWMgdm9pZCB3NTEwMF90eF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MDYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUwNzpcXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdzUxMDBfcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MDgtXFx0XFx0XFx0XFx0XFx0ICAgICAgIHR4X3dvcmspO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTE0LVxcdFxcdHJldHVybjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1MTU6XFx0dzUxMDBfdHhfc2tiKHByaXYtXFx1MDAzZW5kZXYsIHNrYik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTE2LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTE4OnN0YXRpYyBuZXRkZXZfdHhfdCB3NTEwMF9zdGFydF90eChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MTkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUyMDpcXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTUyMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTUyOC1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUyOTpcXHRcXHR3NTEwMF90eF9za2IobmRldiwgc2tiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MzAtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTM0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUzNTpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnc1MTAwX3J4X3NrYihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MzYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUzNzpcXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTUzOC1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTQxLVxcdHU4IGhlYWRlclsyXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1NDI6XFx0dTE2IHJ4X2J1Zl9sZW4gPSB3NTEwMF9yZWFkMTYocHJpdiwgVzUxMDBfUzBfUlhfUlNSKHByaXYpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NDMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTQ3OlxcdG9mZnNldCA9IHc1MTAwX3JlYWQxNihwcml2LCBXNTEwMF9TMF9SWF9SRChwcml2KSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTQ4OlxcdHc1MTAwX3JlYWRidWYocHJpdiwgb2Zmc2V0LCBoZWFkZXIsIDIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU0OS1cXHRyeF9sZW4gPSBnZXRfdW5hbGlnbmVkX2JlMTYoaGVhZGVyKSAtIDI7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NTItXFx0aWYgKHVubGlrZWx5KCFza2IpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTUzOlxcdFxcdHc1MTAwX3dyaXRlMTYocHJpdiwgVzUxMDBfUzBfUlhfUkQocHJpdiksIG9mZnNldCArIHJ4X2J1Zl9sZW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjU1NDpcXHRcXHR3NTEwMF9jb21tYW5kKHByaXYsIFMwX0NSX1JFQ1YpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU1NS1cXHRcXHRuZGV2LVxcdTAwM2VzdGF0cy5yeF9kcm9wcGVkKys7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NTktXFx0c2tiX3B1dChza2IsIHJ4X2xlbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTYwOlxcdHc1MTAwX3JlYWRidWYocHJpdiwgb2Zmc2V0ICsgMiwgc2tiLVxcdTAwM2VkYXRhLCByeF9sZW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjU2MTpcXHR3NTEwMF93cml0ZTE2KHByaXYsIFc1MTAwX1MwX1JYX1JEKHByaXYpLCBvZmZzZXQgKyAyICsgcnhfbGVuKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1NjI6XFx0dzUxMDBfY29tbWFuZChwcml2LCBTMF9DUl9SRUNWKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NjMtXFx0c2tiLVxcdTAwM2Vwcm90b2NvbCA9IGV0aF90eXBlX3RyYW5zKHNrYiwgbmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTcxOnN0YXRpYyB2b2lkIHc1MTAwX3J4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU3Mi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTczOlxcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB3NTEwMF9wcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU3NC1cXHRcXHRcXHRcXHRcXHQgICAgICAgcnhfd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTc3OlxcdHdoaWxlICgoc2tiID0gdzUxMDBfcnhfc2tiKHByaXYtXFx1MDAzZW5kZXYpKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NzgtXFx0XFx0bmV0aWZfcngoc2tiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTgwOlxcdHc1MTAwX2VuYWJsZV9pbnRyKHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU4MS19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjU4MzpzdGF0aWMgaW50IHc1MTAwX25hcGlfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTg0LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1ODU6XFx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBjb250YWluZXJfb2YobmFwaSwgc3RydWN0IHc1MTAwX3ByaXYsIG5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU4Ni1cXHRpbnQgcnhfY291bnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01ODgtXFx0Zm9yIChyeF9jb3VudCA9IDA7IHJ4X2NvdW50IFxcdTAwM2MgYnVkZ2V0OyByeF9jb3VudCsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTg5OlxcdFxcdHN0cnVjdCBza19idWZmICpza2IgPSB3NTEwMF9yeF9za2IocHJpdi1cXHUwMDNlbmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTkwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTk4LVxcdFxcdG5hcGlfY29tcGxldGVfZG9uZShuYXBpLCByeF9jb3VudCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTk5OlxcdFxcdHc1MTAwX2VuYWJsZV9pbnRyKHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTYwMC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NjA1OnN0YXRpYyBpcnFyZXR1cm5fdCB3NTEwMF9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqbmRldl9pbnN0YW5jZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MDYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTYwNy1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IG5kZXZfaW5zdGFuY2U7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NjA4OlxcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjA5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjYxMDpcXHRpbnQgaXIgPSB3NTEwMF9yZWFkKHByaXYsIFc1MTAwX1MwX0lSKHByaXYpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MTEtXFx0aWYgKCFpcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MTItXFx0XFx0cmV0dXJuIElSUV9OT05FO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjYxMzpcXHR3NTEwMF93cml0ZShwcml2LCBXNTEwMF9TMF9JUihwcml2KSwgaXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTYxNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTYyMC1cXHRpZiAoaXIgXFx1MDAyNiBTMF9JUl9SRUNWKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NjIxOlxcdFxcdHc1MTAwX2Rpc2FibGVfaW50cihwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MjItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NjMyOnN0YXRpYyBpcnFyZXR1cm5fdCB3NTEwMF9kZXRlY3RfbGluayhpbnQgaXJxLCB2b2lkICpuZGV2X2luc3RhbmNlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTYzMy17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjM0LVxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gbmRldl9pbnN0YW5jZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo2MzU6XFx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MzYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02NDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NjUwOnN0YXRpYyB2b2lkIHc1MTAwX3NldHJ4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTY1MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NjUyOlxcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB3NTEwMF9wcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTY1My1cXHRcXHRcXHRcXHRcXHQgICAgICAgc2V0cnhfd29yayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjU0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjY1NTpcXHR3NTEwMF9od19zdGFydChwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02NTYtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTY1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo2NTg6c3RhdGljIHZvaWQgdzUxMDBfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjU5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo2NjA6XFx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02NjEtXFx0Ym9vbCBzZXRfcHJvbWlzYyA9IChuZGV2LVxcdTAwM2VmbGFncyBcXHUwMDI2IElGRl9QUk9NSVNDKSAhPSAwO1xcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE1OjQ4OjIwLjUxODU5Njg3NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MDUwMzYwNDAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgdGhlIFc1MTAwIERyaXZlcioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jYCBkcml2ZXIsIHNwZWNpZmljYWxseSwgYW5kIHdoZXRoZXIgaXQncyB3b3J0aCBmdXp6aW5nIGluIHRoZSBjb250ZXh0IG9mIG91ciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gSXQncyBlaXRoZXIgYW4gU1BJIGRldmljZSwgYXMgcGVyIGB3NTEwMC1zcGkuY2AsIG9yIGEgcGxhdGZvcm0gZGV2aWNlLiBUaGUgY3JpdGljYWwgcXVlc3Rpb246IGNhbiBTeXprYWxsZXIgaW5zdGFudGlhdGUgaXQgZGlyZWN0bHk/XG5cblN5emthbGxlciBjYW4gd29yayB3aXRoIFNQSSBkZXZpY2VzLCByaWdodD8gQnV0IGl0IG5lZWRzIGEgbWVjaGFuaXNtIOKAkyBlaXRoZXIgaW5qZWN0aW9uLCBwc2V1ZG8tZGV2aWNlcywgb3IgZGV2aWNlIHRyZWUgb3ZlcmxheXMuIEFuZCB0aGUgdXN1YWwgUUVNVSBzZXR1cCBkb2Vzbid0IGp1c3QgKmhhdmUqIFNQSSBkZXZpY2VzIGx5aW5nIGFyb3VuZCB1bmxlc3Mgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIERvZXMgUUVNVSBldmVuIGhhdmUgYSB2aXJ0dWFsIFNQSSBjb250cm9sbGVyIGJ5IGRlZmF1bHQ/IFllcywgYnV0IHR5cGljYWxseSB3aXRob3V0IGEgVzUxMDAgYXR0YWNoZWQuIFNvLCBTeXprYWxsZXIgKmNvdWxkKiB0ZXN0IGl0IGlmIHRoZSBwcm9iZSBnZXRzIHRyaWdnZXJlZC5cblxuSXMgYHc1MTAwX3Byb2JlYCByZWFjaGFibGU/IExldCdzIHRyYWNlIGl0LiBJdCdzIGNhbGxlZCBmcm9tIGVpdGhlciBgdzUxMDBfc3BpX3Byb2JlYCBvciBgdzUxMDBfbW1pb19wcm9iZWAuIENhbiBTeXprYWxsZXIgZGlyZWN0bHkgdHJpZ2dlciBgdzUxMDBfcHJvYmVgPyBNeSBpbml0aWFsIGluc3RpbmN0IGlzIG5vLCBiZWNhdXNlIHdoaWxlIFN5emthbGxlciBoYXMgYHN5el9nZW5ldGxpbmtfZ2V0X2ZhbWlseWAgYW5kIHNvIG9uLCBpdCB1c3VhbGx5IHN0cnVnZ2xlcyB3aXRoIHBsYXRmb3JtL1NQSSBkZXZpY2VzIHVubGVzcyB0aGVyZSdzIGEgc3BlY2lmaWMgU3l6a2FsbGVyIGRlc2NyaXB0aW9uLCBvciBpZiBpdCdzIGEgUENJIG9yIFVTQiBkZXZpY2UsIGJvdGggb2Ygd2hpY2ggY2FuIGJlIGVtdWxhdGVkLlxuXG5Ob3csIHRoZSBwcm9tcHQncyBpbnN0cnVjdGlvbnMgYXJlIGtleS4gSXQgc3RhdGVzIGEgXCJXb3J0aEZ1enppbmc9ZmFsc2VcIiBpZiB0aGUgcGF0Y2ggY29uY2VybnMgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBzcGVjaWZpY2FsbHkgaWYgaXQncyBzb2Z0d2FyZS1lbXVsYXRlZCwgb3IgZXZlbiBtb3JlLCBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycy4gVGhpbmdzIHRoYXQgbmVlZCBwaHlzaWNhbCBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cblxuU28sIHRoZSBjcnV4IG9mIHRoZSBtYXR0ZXI6ICppcyogdGhlIFc1MTAwIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVU/IFRoaXMgaXMgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uLiBJIG5lZWQgdG8gdmVyaWZ5IHdoZXRoZXIgdGhlIFc1MTAwIGlzIHByZXNlbnQgaW4gdGhlIHN0YW5kYXJkIFFFTVUgY29uZmlndXJhdGlvbi4gVGhhdCdzIHRoZSBmaXJzdCB0aGluZyB0byBjaGVjay5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk2MzYsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTU6NDg6NTcuNTY4OTU5MTY3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MjQ2NDY3MywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidzUxMDBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwidG9vbHMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNTo0ODo1Ny43MzE0MzQ4NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMTY1NDQ3NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgc3VtbWFyaXplZCBhcyByZXF1ZXN0ZWQ6XG5cbioqQ2hlY2tpbmcgU3l6a2FsbGVyIGZvciBXNTEwMCBJbmZvcm1hdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc3l6a2FsbGVyIGNvdmVyYWdlLCBpZiBhbnksIGZvciB0aGUgVzUxMDAuIFRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byBzZWUgaWYgdGhlcmUgYXJlIGV4aXN0aW5nIGRlc2NyaXB0aW9ucywgZGVmaW5pdGlvbnMsIG9yIGV2ZW4ganVzdCBtZW50aW9ucyBvZiB0aGF0IHNwZWNpZmljIGhhcmR3YXJlIGNvbXBvbmVudCB3aXRoaW4gdGhlIHN5emthbGxlciBmcmFtZXdvcmsuIFRoaXMgd2lsbCBkaWN0YXRlIG15IG5leHQgc3RlcHMuIElmIGl0J3MgYWxyZWFkeSBkb2N1bWVudGVkLCBJIGNhbiBidWlsZCBvbiB0aGF0IGtub3dsZWRnZS4gSWYgbm90LCB0aGVuIEkga25vdyBJJ20gc3RhcnRpbmcgZnJvbSBzY3JhdGNoLCB3aGljaCB3aWxsIHJlcXVpcmUgYSBtdWNoIGRpZmZlcmVudCBhcHByb2FjaC4gRWl0aGVyIHdheSwgY2hlY2tpbmcgc3l6a2FsbGVyIGlzIHRoZSBpbnRlbGxpZ2VudCBpbml0aWFsIG1vdmUuIExldCdzIHNlZSB3aGF0J3Mgb3V0IHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDU2OSwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE1OjQ5OjAxLjg0Nzk4MjE2M1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODMxNzAzMywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidzUxMDBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTU6NDk6MDEuOTE2MzA2Mjc2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU1MDQ3NzY1Njg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU3l6a2FsbGVyIENvbnRleHQgZm9yIFdpem5ldCBXNTEwMCBWdWxuZXJhYmlsaXR5KipcblxuT2theSwgZmlyc3QgdGhvdWdodDogV2FpdCwgdGhvc2Ugc3l6a2FsbGVyIGRlc2NyaXB0aW9ucyBhcmVuJ3QgYWN0dWFsbHkgKmluKiB0aGUga2VybmVsIHRyZWUsIHJpZ2h0PyBCdXQgdGhlIHByb21wdCBzdGF0ZXMgYW4gaW1wb3NzaWJpbGl0eTogcmVhY2hpbmcgY29kZSBwYXRocyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIGVtdWxhdGVkIGhhcmR3YXJlLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoZSBXaXpuZXQgVzUxMDAgaXMgYW4gZW1iZWRkZWQgRXRoZXJuZXQgY29udHJvbGxlciwgdHlwaWNhbGx5IHVzZWQgaW4gc29tZXRoaW5nIGxpa2UgYW4gQXJkdWlubywgYW5kIGl0IGNvbm5lY3RzIHZpYSBTUEkgb3IgbWVtb3J5LW1hcHBlZCBJL08uXG5cbkNhbiB0aGlzIGNvZGUgZXZlbiAqYmUqIHJlYWNoZWQgaW4gUUVNVT8gSG1tLCBRRU1VIGRvZXNuJ3QgZW11bGF0ZSB0aGUgVzUxMDAuIFNvLCBjYW4gc3l6a2FsbGVyIGV2ZW4gaW5zdGFudGlhdGUgdGhvc2UgcGxhdGZvcm0gb3IgU1BJIGRldmljZXM/IE5vLCB0aGF0IGBzeXpfZGV2bGlua2Agb3Igc2ltaWxhciBkb2Vzbid0IGRvIHRoYXQsIGRvZXMgaXQ/IEkgYmVsaWV2ZSBzeXprYWxsZXIgY2FuIGluamVjdCBkZXZpY2UgdHJlZSBvdmVybGF5cyBvciB1c2UgYHBsYXRmb3JtX2RldmljZV9yZWdpc3RlcmAsIHByb3ZpZGVkIHRoZXJlJ3MgYSBwc2V1ZG8tc3lzY2FsbC4gQnV0IGdlbmVyYWxseSwgaXQgZG9lc24ndC5cblxuSG93IGFib3V0IGEgd2F5IHRvIHRyaWdnZXIgYHc1MTAwX3Byb2JlYCBkaXJlY3RseT8gSSB3b25kZXIuLi4gdGhyb3VnaCBgc3lzZnNgPyBOYWgsIHlvdSBjYW4ndCBqdXN0ICpjcmVhdGUqIGFuIFNQSSBkZXZpY2UgZnJvbSBzeXNmcyB1bmxlc3MgeW91IGhhdmUgYW4gU1BJIGNvbnRyb2xsZXIgdGhhdCBzdXBwb3J0cyBpdCwgbGlrZSBgc3BpZGV2YCwgcmlnaHQ/IE5vLCBgc3BpZGV2YCBpcyBmb3IgdXNlcnNwYWNlIFNQSSBhY2Nlc3MuXG5cbldhaXQsIGlzbid0IHRoZXJlIHNvbWV0aGluZyBsaWtlIGBzcGktbW9ja2A/IEkgc2hvdWxkIGNoZWNrIGlmIHRoZXJlJ3MgKmFueSogd2F5IHRvIHByb2JlIFNQSSBkZXZpY2VzIHdpdGhpbiBzeXprYWxsZXIuIERvZXMgc3l6a2FsbGVyIGhhdmUgc29tZXRoaW5nIGxpa2UgYHN5el9zcGlfc2V0dXBgPyBOb3BlLlxuXG5Pa2F5LCBsZXQncyBzdGVwIGJhY2suIElmIHRoZSBwYXRjaCBpcyBhdXRob3JlZCBieSBgc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VgLCBpdCAqbWlnaHQqIG1lYW4gc3l6a2FsbGVyIGZvdW5kIGEgY3Jhc2ggb3Igd2FzIHRlc3RpbmcgdGhpcyBwYXRjaCwgcmlnaHQ/IFdhaXQsIGhvbGQgb24uIFRoZSBwcm9tcHQgaXMgc2F5aW5nOlxuXG5gYGBcbmNvbW1pdCA3MjRjOGY3MWY4YmUwOTk0ZjE0N2NlNWZhMzc5ZTU2MmYxZTExYmQyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgNCAxNTo0NTo1NCAyMDI2ICswMDAwXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5gYGBcblxuVGhpcyBpcyBqdXN0IGEgZHVtbXkgY29tbWl0IG1lc3NhZ2UgZnJvbSBzeXprYWxsZXIsIHJpZ2h0PyBUaGlzIG1lYW5zIGl0J3MganVzdCB0ZXN0aW5nIHBhdGNoZXMgc2VudCB0byB0aGUgbWFpbGluZyBsaXN0cy4gSWYgc29tZW9uZSBzZW5kcyBhIHBhdGNoIGZvciBgdzUxMDBgLCBzeXprYWxsZXIgd2lsbCB0cnkgYW5kIHRlc3QgaXQsIG1heWJlIGp1c3QgY29tcGlsZSBpdCBhbmQgZmluZCBubyBjb3ZlcmFnZS5cblxuU28gaWYgaXQncyBhbiBTUEkvTU1JTyBkZXZpY2UsIGl0ICpyZXF1aXJlcyogaGFyZHdhcmUgb3IgYSBmdWxsIFFFTVUgZW11bGF0aW9uLiBEb2VzIFFFTVUgZW11bGF0ZSBXNTEwMD8gTm8uIERvZXMgUUVNVSBlbXVsYXRlIFc1NTAwPyBOby4gU28gSSBzaG91bGQgY2hlY2sgaWYgdGhlcmUncyAqYW55KiBRRU1VIGVtdWxhdGlvbiBmb3IgV2l6bmV0LlxuXG5DYW4ndCBkbyBhIGZ1bGwgc291cmNlIHNlYXJjaCwgYnV0IEkgKmtub3cqIFdpem5ldCBpc24ndCBhIHN0YW5kYXJkIFFFTVUgZGV2aWNlLiBTdGFuZGFyZCBkZXZpY2VzIGFyZSB0aGluZ3MgbGlrZSBlMTAwMCwgcnRsODEzOSwgdmlydGlvLW5ldCwgbmUyaywgcGNuZXQsIHZteG5ldDMsIGV0Yy4gQWxzbywgdGhpcyBwYXRjaCBpcyBhZGRpbmcgYSBHUElPIGxpbmsgZGV0ZWN0aW9uLCBhbmQgR1BJT3MgYXJlICpoYXJkd2FyZS1zcGVjaWZpYyosIHJpZ2h0P1xuXG5UaGVyZWZvcmUsIHRoaXMgZHJpdmVyIGlzIGZvciBhIHBoeXNpY2FsIGNoaXAgKFdpem5ldCBXNTEwMC9XNTIwMC9XNTUwMCkgY29ubmVjdGVkIHZpYSBTUEkgb3IgTU1JTywgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoYXQgbWVhbnMgaXQncyAqaW1wb3NzaWJsZSogdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuXG5cbkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgdGhvdWdoLiBJcyB0aGVyZSBhbnkgc29ydCBvZiB2aXJ0dWFsIGRyaXZlciwgYW55dGhpbmcgYXQgYWxsPyBMZXQncyBjaGVjayBgZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmNgLi4uIGFoLCBhbmQgYHc1MTAwX3Byb2JlYC4gSXQncyBjYWxsZWQgYnkgYHc1MTAwX3NwaV9wcm9iZWAgaW4gYHc1MTAwLXNwaS5jYC4gWWVwLCBjb25maXJtZWQuIFRoaXMgY29uZmlybXMgaXQncyBub3QgcG9zc2libGUgdG8gcmVhY2ggdGhlIGNvZGUgcGF0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA3OTIsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTU6NTY6MzYuOTY0MDc0OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI5OTY4ODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidzUxMDBfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM9NDIxPXN0YXRpYyBpbnQgdzUxMDBfc3BpX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDUyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0NTM6XFx0cmV0dXJuIHc1MTAwX3Byb2JlKFxcdTAwMjZzcGktXFx1MDAzZWRldiwgb3BzLCBwcml2X3NpemUsIG1hYywgc3BpLVxcdTAwM2VpcnEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NTQtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM9NzQwPUVYUE9SVF9TWU1CT0xfR1BMKHc1MTAwX29wc19wcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy03NDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NzQyOmludCB3NTEwMF9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCB3NTEwMF9vcHMgKm9wcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy03NDMtXFx0XFx0aW50IHNpemVvZl9vcHNfcHJpdiwgY29uc3Qgdm9pZCAqbWFjX2FkZHIsIGludCBpcnEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy04ODktfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjg5MDpFWFBPUlRfU1lNQk9MX0dQTCh3NTEwMF9wcm9iZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtODkxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmg9Mjk9dm9pZCAqdzUxMDBfb3BzX3ByaXYoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5oLTMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5oOjMxOmludCB3NTEwMF9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCB3NTEwMF9vcHMgKm9wcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuaC0zMi1cXHRcXHRpbnQgc2l6ZW9mX29wc19wcml2LCBjb25zdCB2b2lkICptYWNfYWRkciwgaW50IGlycSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE1OjU2OjM3LjAwNzA4MDQ2NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzY0Mjc2MTYyMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGlnZ2luZyBpbnRvIEZ1bmN0aW9uIENhbGxzKipcblxuQWxyaWdodCwgSSdtIHRyeWluZyB0byBnZXQgYSBoYW5kbGUgb24gdGhpcyBgdzUxMDBfcHJvYmVgIGZ1bmN0aW9uLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBjb21lcyB0byBtaW5kIGlzOiAqSXMgdGhlcmUgYW55d2hlcmUgZWxzZSBpbiB0aGlzIGNvZGViYXNlLCBvciBhbnkgcmVsYXRlZCBmaWxlcywgdGhhdCB0aGlzIGZ1bmN0aW9uIGdldHMgY2FsbGVkPyogSSBuZWVkIHRvIHNlZSB0aGUgYmlnZ2VyIHBpY3R1cmUsIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhpcyBmdW5jdGlvbiBmaXRzIGludG8gdGhlIG92ZXJhbGwgbG9naWMgYW5kIHdoYXQgdHJpZ2dlcnMgaXRzIGV4ZWN1dGlvbi4gS25vd2luZyB0aGUgY2FsbGVycyB3aWxsIHRlbGwgbWUgaXRzIHB1cnBvc2UuIEkgbmVlZCBhIGNvbXByZWhlbnNpdmUgb3ZlcnZpZXcgb2YgaG93IHRoaXMgZnVuY3Rpb24gaXMgaW50ZWdyYXRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMxMTYsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjowMToxMy40MzQ2OTkzMDdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MTY2NjEyNjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidzUxMDBfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYz00MjE9c3RhdGljIGludCB3NTEwMF9zcGlfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ1MzpcXHRyZXR1cm4gdzUxMDBfcHJvYmUoXFx1MDAyNnNwaS1cXHUwMDNlZGV2LCBvcHMsIHByaXZfc2l6ZSwgbWFjLCBzcGktXFx1MDAzZWlycSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQ1NC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYz03NDA9RVhQT1JUX1NZTUJPTF9HUEwodzUxMDBfb3BzX3ByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTc0MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo3NDI6aW50IHc1MTAwX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IHc1MTAwX29wcyAqb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTc0My1cXHRcXHRpbnQgc2l6ZW9mX29wc19wcml2LCBjb25zdCB2b2lkICptYWNfYWRkciwgaW50IGlycSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTg4OS19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6ODkwOkVYUE9SVF9TWU1CT0xfR1BMKHc1MTAwX3Byb2JlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy04OTEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuaD0yOT12b2lkICp3NTEwMF9vcHNfcHJpdihjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmgtMzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmg6MzE6aW50IHc1MTAwX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IHc1MTAwX29wcyAqb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5oLTMyLVxcdFxcdGludCBzaXplb2Zfb3BzX3ByaXYsIGNvbnN0IHZvaWQgKm1hY19hZGRyLCBpbnQgaXJxKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6MDE6MTUuMjUxMzY1MTQ5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIyMDA5NDQ2NzY0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgVzUxMDAgRHJpdmVyIFByb2JlIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlIGRyaXZlciBjb2RlIGFuZCBpdCBzZWVtcyBgdzUxMDBfcHJvYmVgIGlzIG9ubHkgY2FsbGVkIGJ5IGB3NTEwMF9zcGlfcHJvYmVgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcuIEknbSB3b25kZXJpbmcgaWYgdGhlcmUgd2FzIGV2ZXIgYSBgdzUxMDAtbW1pby5jYCBmaWxlIGZvciBtZW1vcnktbWFwcGVkIEkvTy4gRGlkIHRoZXkgZ2V0IHJpZCBvZiBpdCBjb21wbGV0ZWx5LCBvciBhbSBJIGp1c3Qgbm90IHNlZWluZyBpdD8gSSBrbm93IGhvdyB0aGVzZSB0aGluZ3MgZ28sIHNvbWV0aW1lcyBjb2RlIGdldHMgbW92ZWQgb3IgcmVmYWN0b3JlZC4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhlIGVudGlyZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L2AgZGlyZWN0b3J5IGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlIEkgaGF2ZW4ndCBvdmVybG9va2VkIGFueSByZWxhdGVkIGZpbGVzLiBHb3R0YSBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM4NDEsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjowNDo1NS4zNDU4MzY0MTVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDkwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogW1xuICAgIFwidzUxMDAtc3BpLmNcIixcbiAgICBcInc1MTAwLmNcIixcbiAgICBcInc1MTAwLmhcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6MDQ6NTUuMzQ1ODg4NDU1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNTA3MTYxMTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVzUxMDAgRHJpdmVyIGluIGEgUUVNVSBFbnZpcm9ubWVudCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGZpbGVzOiBgdzUxMDAtc3BpLmNgLCBgdzUxMDAuY2AsIGFuZCBgdzUxMDAuaGAuIFJpZ2h0IG9mZiB0aGUgYmF0LCBpdCdzIGNsZWFyIHRoaXMgaXMgYW4gU1BJLWJhc2VkIGRldmljZS4gVGhhdCdzIHRoZSBrZXkuIE5vdywgdGhlIHN0YW5kYXJkIFFFTVUgc2V0dXAgSSdtIHVzaW5nICpkb2Vzbid0KiBlbXVsYXRlIFNQSSBkZXZpY2VzIG91dC1vZi10aGUtYm94LiBUaGF0J3MgdGhlIGltbWVkaWF0ZSBwcm9ibGVtLlxuXG5MZXQncyB0aGluay4gQ2FuIEkgc29tZWhvdyBpbmplY3QgYW4gU1BJIGRldmljZSB1c2luZyBzeXprYWxsZXI/IEkga25vdyBzeXprYWxsZXIgKmNhbiogYmUgcG93ZXJmdWwsIGJ1dCBJIGRvbid0IHJlY2FsbCBzZWVpbmcgYSBnZW5lcmFsIFNQSSBpbmplY3Rpb24gbWVjaGFuaXNtIHRoYXQgbGV0cyB5b3UganVzdCBwb2tlIGFueSBTUEkgZHJpdmVyLiBVbmxlc3MgdGhlcmUncyBhIHBzZXVkby1kZXZpY2UgZGVmaW5lZCBzb21ld2hlcmUsIG9yIGl04oCZcyBwYXJ0IG9mIHRoZSBkZXZpY2UgdHJlZSwgdGhhdCBhdmVudWUgaXMgbGlrZWx5IGJsb2NrZWQuXG5cbkV2ZW4gKmlmKiBJIGNvdWxkIHdyYW5nbGUgc3l6a2FsbGVyIHRvIG92ZXJsYXkgYSBkZXZpY2UgdHJlZSBlbnRyeSwgdGhlIGRyaXZlciBpdHNlbGYsIHRoaXMgYHc1MTAwYCBkcml2ZXIsIGlzIGdvaW5nIHRvIGJlIGNvbW11bmljYXRpbmcgd2l0aCB0aGUgaGFyZHdhcmUgdXNpbmcgdGhvc2UgbG93LWxldmVsIFNQSSByZWFkL3dyaXRlIGZ1bmN0aW9uczogYHc1MTAwX3NwaV9yZWFkYCwgYHc1MTAwX3NwaV93cml0ZWAuIElmIHRoZXJlJ3Mgbm8gYWN0dWFsIGhhcmR3YXJlIGNvbm5lY3RlZCwgdGhvc2UgU1BJIHJlYWRzIHdpbGwgcHJvYmFibHkganVzdCByZXR1cm4gZ2FyYmFnZSDigJMgbWF5YmUgemVyb2VzLCBtYXliZSBgMHhmZmAg4oCTIHNvbWUgZGVmYXVsdCB2YWx1ZSB0aGF0IGRvZXNu4oCZdCBjb3JyZXNwb25kIHRvIHRoZSBleHBlY3RlZCByZXNwb25zZS4gQW5kIHRoYXTigJlzIGEgcmVkIGZsYWcuIFRoZSBkcml2ZXIncyBgcHJvYmVgIGZ1bmN0aW9uLCB0aGF0J3MgdGhlIGNydWNpYWwgcG9pbnQuIFRoZSBwcm9iZSB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgZmFpbCBpZiBpdCByZWFkcyBnYXJiYWdlLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGl0IHJlYWRzIGZyb20gdGhlIGhhcmR3YXJlIGFuZCBlcnJvcnMgb3V0IGlmIGl0IGRvZXNuJ3QgbWF0Y2ggdGhlIGV4cGVjdGVkIHZhbHVlcy4gTGV0IG1lIGNoZWNrIGB3NTEwMF9wcm9iZWAgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQxNzAsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTYsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjA1OjM1Ljg1MzA1MjAxNloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTUwNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNzQwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDc0MDpcXHRFWFBPUlRfU1lNQk9MX0dQTCh3NTEwMF9vcHNfcHJpdik7XFxuIDc0MTpcXHRcXG4gNzQyOlxcdGludCB3NTEwMF9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCB3NTEwMF9vcHMgKm9wcyxcXG4gNzQzOlxcdFxcdFxcdGludCBzaXplb2Zfb3BzX3ByaXYsIGNvbnN0IHZvaWQgKm1hY19hZGRyLCBpbnQgaXJxKVxcbiA3NDQ6XFx0e1xcbiA3NDU6XFx0XFx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXY7XFxuIDc0NjpcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldjtcXG4gNzQ3OlxcdFxcdGludCBlcnI7XFxuIDc0ODpcXHRcXHRzaXplX3QgYWxsb2Nfc2l6ZTtcXG4gNzQ5OlxcdFxcbiA3NTA6XFx0XFx0YWxsb2Nfc2l6ZSA9IHNpemVvZigqcHJpdik7XFxuIDc1MTpcXHRcXHRpZiAoc2l6ZW9mX29wc19wcml2KSB7XFxuIDc1MjpcXHRcXHRcXHRhbGxvY19zaXplID0gQUxJR04oYWxsb2Nfc2l6ZSwgTkVUREVWX0FMSUdOKTtcXG4gNzUzOlxcdFxcdFxcdGFsbG9jX3NpemUgKz0gc2l6ZW9mX29wc19wcml2O1xcbiA3NTQ6XFx0XFx0fVxcbiA3NTU6XFx0XFx0YWxsb2Nfc2l6ZSArPSBORVRERVZfQUxJR04gLSAxO1xcbiA3NTY6XFx0XFxuIDc1NzpcXHRcXHRuZGV2ID0gYWxsb2NfZXRoZXJkZXYoYWxsb2Nfc2l6ZSk7XFxuIDc1ODpcXHRcXHRpZiAoIW5kZXYpXFxuIDc1OTpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gNzYwOlxcdFxcdFNFVF9ORVRERVZfREVWKG5kZXYsIGRldik7XFxuIDc2MTpcXHRcXHRkZXZfc2V0X2RydmRhdGEoZGV2LCBuZGV2KTtcXG4gNzYyOlxcdFxcdHByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG4gNzYzOlxcdFxcbiA3NjQ6XFx0XFx0c3dpdGNoIChvcHMtXFx1MDAzZWNoaXBfaWQpIHtcXG4gNzY1OlxcdFxcdGNhc2UgVzUxMDA6XFxuIDc2NjpcXHRcXHRcXHRwcml2LVxcdTAwM2VzMF9yZWdzID0gVzUxMDBfUzBfUkVHUztcXG4gNzY3OlxcdFxcdFxcdHByaXYtXFx1MDAzZXMwX3R4X2J1ZiA9IFc1MTAwX1RYX01FTV9TVEFSVDtcXG4gNzY4OlxcdFxcdFxcdHByaXYtXFx1MDAzZXMwX3R4X2J1Zl9zaXplID0gVzUxMDBfVFhfTUVNX1NJWkU7XFxuIDc2OTpcXHRcXHRcXHRwcml2LVxcdTAwM2VzMF9yeF9idWYgPSBXNTEwMF9SWF9NRU1fU1RBUlQ7XFxuIDc3MDpcXHRcXHRcXHRwcml2LVxcdTAwM2VzMF9yeF9idWZfc2l6ZSA9IFc1MTAwX1JYX01FTV9TSVpFO1xcbiA3NzE6XFx0XFx0XFx0YnJlYWs7XFxuIDc3MjpcXHRcXHRjYXNlIFc1MjAwOlxcbiA3NzM6XFx0XFx0XFx0cHJpdi1cXHUwMDNlczBfcmVncyA9IFc1MjAwX1MwX1JFR1M7XFxuIDc3NDpcXHRcXHRcXHRwcml2LVxcdTAwM2VzMF90eF9idWYgPSBXNTIwMF9UWF9NRU1fU1RBUlQ7XFxuIDc3NTpcXHRcXHRcXHRwcml2LVxcdTAwM2VzMF90eF9idWZfc2l6ZSA9IFc1MjAwX1RYX01FTV9TSVpFO1xcbiA3NzY6XFx0XFx0XFx0cHJpdi1cXHUwMDNlczBfcnhfYnVmID0gVzUyMDBfUlhfTUVNX1NUQVJUO1xcbiA3Nzc6XFx0XFx0XFx0cHJpdi1cXHUwMDNlczBfcnhfYnVmX3NpemUgPSBXNTIwMF9SWF9NRU1fU0laRTtcXG4gNzc4OlxcdFxcdFxcdGJyZWFrO1xcbiA3Nzk6XFx0XFx0Y2FzZSBXNTUwMDpcXG4gNzgwOlxcdFxcdFxcdHByaXYtXFx1MDAzZXMwX3JlZ3MgPSBXNTUwMF9TMF9SRUdTO1xcbiA3ODE6XFx0XFx0XFx0cHJpdi1cXHUwMDNlczBfdHhfYnVmID0gVzU1MDBfVFhfTUVNX1NUQVJUO1xcbiA3ODI6XFx0XFx0XFx0cHJpdi1cXHUwMDNlczBfdHhfYnVmX3NpemUgPSBXNTUwMF9UWF9NRU1fU0laRTtcXG4gNzgzOlxcdFxcdFxcdHByaXYtXFx1MDAzZXMwX3J4X2J1ZiA9IFc1NTAwX1JYX01FTV9TVEFSVDtcXG4gNzg0OlxcdFxcdFxcdHByaXYtXFx1MDAzZXMwX3J4X2J1Zl9zaXplID0gVzU1MDBfUlhfTUVNX1NJWkU7XFxuIDc4NTpcXHRcXHRcXHRicmVhaztcXG4gNzg2OlxcdFxcdGRlZmF1bHQ6XFxuIDc4NzpcXHRcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbiA3ODg6XFx0XFx0XFx0Z290byBlcnJfcmVnaXN0ZXI7XFxuIDc4OTpcXHRcXHR9XFxuIDc5MDpcXHRcXG4gNzkxOlxcdFxcdHByaXYtXFx1MDAzZW5kZXYgPSBuZGV2O1xcbiA3OTI6XFx0XFx0cHJpdi1cXHUwMDNlb3BzID0gb3BzO1xcbiA3OTM6XFx0XFx0cHJpdi1cXHUwMDNlaXJxID0gaXJxO1xcbiA3OTQ6XFx0XFx0cHJpdi1cXHUwMDNlbGlua19ncGlvID0gZ3Bpb2RfZ2V0X29wdGlvbmFsKGRldiwgXFxcImxpbmtcXFwiLCBHUElPRF9JTik7XFxuIDc5NTpcXHRcXHRpZiAoSVNfRVJSKHByaXYtXFx1MDAzZWxpbmtfZ3BpbykpIHtcXG4gNzk2OlxcdFxcdFxcdGVyciA9IGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHByaXYtXFx1MDAzZWxpbmtfZ3BpbyksXFxuIDc5NzpcXHRcXHRcXHRcXHRcXHQgICAgXFxcImZhaWxlZCB0byBnZXQgbGluayBHUElPXFxcXG5cXFwiKTtcXG4gNzk4OlxcdFxcdFxcdHByaXYtXFx1MDAzZWxpbmtfZ3BpbyA9IE5VTEw7XFxuIDc5OTpcXHRcXHRcXHRnb3RvIGVycl9yZWdpc3RlcjtcXG4gODAwOlxcdFxcdH1cXG4gODAxOlxcdFxcbiA4MDI6XFx0XFx0bmRldi1cXHUwMDNlbmV0ZGV2X29wcyA9IFxcdTAwMjZ3NTEwMF9uZXRkZXZfb3BzO1xcbiA4MDM6XFx0XFx0bmRldi1cXHUwMDNlZXRodG9vbF9vcHMgPSBcXHUwMDI2dzUxMDBfZXRodG9vbF9vcHM7XFxuIDgwNDpcXHRcXHRuZXRpZl9uYXBpX2FkZF93ZWlnaHQobmRldiwgXFx1MDAyNnByaXYtXFx1MDAzZW5hcGksIHc1MTAwX25hcGlfcG9sbCwgMTYpO1xcbiA4MDU6XFx0XFxuIDgwNjpcXHRcXHQvKiBUaGlzIGNoaXAgZG9lc24ndCBzdXBwb3J0IFZMQU4gcGFja2V0cyB3aXRoIG5vcm1hbCBNVFUsXFxuIDgwNzpcXHRcXHQgKiBzbyBkaXNhYmxlIFZMQU4gZm9yIHRoaXMgZGV2aWNlLlxcbiA4MDg6XFx0XFx0ICovXFxuIDgwOTpcXHRcXHRuZGV2LVxcdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX1ZMQU5fQ0hBTExFTkdFRDtcXG4gODEwOlxcdFxcbiA4MTE6XFx0XFx0ZXJyID0gcmVnaXN0ZXJfbmV0ZGV2KG5kZXYpO1xcbiA4MTI6XFx0XFx0aWYgKGVyciBcXHUwMDNjIDApXFxuIDgxMzpcXHRcXHRcXHRnb3RvIGVycl9yZWdpc3RlcjtcXG4gODE0OlxcdFxcbiA4MTU6XFx0XFx0cHJpdi1cXHUwMDNleGZlcl93cSA9IGFsbG9jX3dvcmtxdWV1ZShcXFwiJXNcXFwiLCBXUV9NRU1fUkVDTEFJTSB8IFdRX1BFUkNQVSwgMCxcXG4gODE2OlxcdFxcdFxcdFxcdFxcdFxcdG5ldGRldl9uYW1lKG5kZXYpKTtcXG4gODE3OlxcdFxcdGlmICghcHJpdi1cXHUwMDNleGZlcl93cSkge1xcbiA4MTg6XFx0XFx0XFx0ZXJyID0gLUVOT01FTTtcXG4gODE5OlxcdFxcdFxcdGdvdG8gZXJyX3dxO1xcbiA4MjA6XFx0XFx0fVxcbiA4MjE6XFx0XFxuIDgyMjpcXHRcXHRJTklUX1dPUksoXFx1MDAyNnByaXYtXFx1MDAzZXJ4X3dvcmssIHc1MTAwX3J4X3dvcmspO1xcbiA4MjM6XFx0XFx0SU5JVF9XT1JLKFxcdTAwMjZwcml2LVxcdTAwM2V0eF93b3JrLCB3NTEwMF90eF93b3JrKTtcXG4gODI0OlxcdFxcdElOSVRfV09SSyhcXHUwMDI2cHJpdi1cXHUwMDNlc2V0cnhfd29yaywgdzUxMDBfc2V0cnhfd29yayk7XFxuIDgyNTpcXHRcXHRJTklUX1dPUksoXFx1MDAyNnByaXYtXFx1MDAzZXJlc3RhcnRfd29yaywgdzUxMDBfcmVzdGFydF93b3JrKTtcXG4gODI2OlxcdFxcbiA4Mjc6XFx0XFx0aWYgKG1hY19hZGRyKVxcbiA4Mjg6XFx0XFx0XFx0ZXRoX2h3X2FkZHJfc2V0KG5kZXYsIG1hY19hZGRyKTtcXG4gODI5OlxcdFxcdGVsc2VcXG4gODMwOlxcdFxcdFxcdGV0aF9od19hZGRyX3JhbmRvbShuZGV2KTtcXG4gODMxOlxcdFxcbiA4MzI6XFx0XFx0aWYgKHByaXYtXFx1MDAzZW9wcy1cXHUwMDNlaW5pdCkge1xcbiA4MzM6XFx0XFx0XFx0ZXJyID0gcHJpdi1cXHUwMDNlb3BzLVxcdTAwM2Vpbml0KHByaXYtXFx1MDAzZW5kZXYpO1xcbiA4MzQ6XFx0XFx0XFx0aWYgKGVycilcXG4gODM1OlxcdFxcdFxcdFxcdGdvdG8gZXJyX2h3O1xcbiA4MzY6XFx0XFx0fVxcbiA4Mzc6XFx0XFxuIDgzODpcXHRcXHRlcnIgPSB3NTEwMF9od19yZXNldChwcml2KTtcXG4gODM5OlxcdFxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjA1OjM1Ljg1MzE2ODQyNloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTYyNDk0OTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIGB3NTEwMF9od19yZXNldGAgRnVuY3Rpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhpcyBgdzUxMDBfaHdfcmVzZXRgIHJvdXRpbmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCBpdCdzIGRvaW5nLiBJcyBpdCBqdXN0IHRvZ2dsaW5nIGEgcGluPyBJcyBpdCBhIG1vcmUgZWxhYm9yYXRlIHNlcXVlbmNlIGludm9sdmluZyBkZWxheXMsIG9yIHBlcmhhcHMgaW50ZXJhY3Rpbmcgd2l0aCBhbnkgcG93ZXItb24gcmVzZXQgY2lyY3VpdHJ5PyBJJ20gYWxyZWFkeSB0aGlua2luZyBhYm91dCBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIOKAkyBkb2VzIHRoZSB0aW1pbmcgYWxpZ24gY29ycmVjdGx5IHdpdGggdGhlIFc1MTAwJ3MgaW50ZXJuYWwgY2xvY2sgYW5kIHBvd2VyLXVwIGNoYXJhY3RlcmlzdGljcz8gRG9lcyBpdCBoYW5kbGUgYW55IHBvdGVudGlhbCB2b2x0YWdlIHRyYW5zaWVudHMgZ3JhY2VmdWxseSwgb3IgaXMgdGhlcmUgYSByaXNrIG9mIGV4Y2VlZGluZyBhYnNvbHV0ZSBtYXhpbXVtIHJhdGluZ3M/IEkgd2FudCB0byBtYWtlIHN1cmUgdGhlIGltcGxlbWVudGF0aW9uIGlzIHJvYnVzdCwgZXNwZWNpYWxseSBpZiB0aGlzIHJlc2V0IGlzIG9jY3VycmluZyBpbiBhIG5vaXN5IGVudmlyb25tZW50IG9yIHdpdGhpbiBhIGNyaXRpY2FsIHNlY3Rpb24uIEkgbmVlZCB0byBjb25zaWRlciBhbGwgdGhlIGZhaWx1cmUgbW9kZXMgYW5kIGhvdyB0aGlzIGZ1bmN0aW9uIGFkZHJlc3NlcyB0aGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjU3MSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6MDU6NDAuNDE1NjY4NDkzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMjI2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzNTEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzNTE6XFx0c3RhdGljIGludCB3NTEwMF9od19yZXNldChzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdilcXG4gMzUyOlxcdHtcXG4gMzUzOlxcdFxcdHUzMiBydHI7XFxuIDM1NDpcXHRcXG4gMzU1OlxcdFxcdHc1MTAwX3Jlc2V0KHByaXYpO1xcbiAzNTY6XFx0XFxuIDM1NzpcXHRcXHR3NTEwMF9kaXNhYmxlX2ludHIocHJpdik7XFxuIDM1ODpcXHRcXHR3NTEwMF93cml0ZV9tYWNhZGRyKHByaXYpO1xcbiAzNTk6XFx0XFxuIDM2MDpcXHRcXHRzd2l0Y2ggKHByaXYtXFx1MDAzZW9wcy1cXHUwMDNlY2hpcF9pZCkge1xcbiAzNjE6XFx0XFx0Y2FzZSBXNTEwMDpcXG4gMzYyOlxcdFxcdFxcdHc1MTAwX21lbW9yeV9jb25maWd1cmUocHJpdik7XFxuIDM2MzpcXHRcXHRcXHRydHIgPSBXNTEwMF9SVFI7XFxuIDM2NDpcXHRcXHRcXHRicmVhaztcXG4gMzY1OlxcdFxcdGNhc2UgVzUyMDA6XFxuIDM2NjpcXHRcXHRcXHR3NTIwMF9tZW1vcnlfY29uZmlndXJlKHByaXYpO1xcbiAzNjc6XFx0XFx0XFx0cnRyID0gVzUxMDBfUlRSO1xcbiAzNjg6XFx0XFx0XFx0YnJlYWs7XFxuIDM2OTpcXHRcXHRjYXNlIFc1NTAwOlxcbiAzNzA6XFx0XFx0XFx0dzU1MDBfbWVtb3J5X2NvbmZpZ3VyZShwcml2KTtcXG4gMzcxOlxcdFxcdFxcdHJ0ciA9IFc1NTAwX1JUUjtcXG4gMzcyOlxcdFxcdFxcdGJyZWFrO1xcbiAzNzM6XFx0XFx0ZGVmYXVsdDpcXG4gMzc0OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAzNzU6XFx0XFx0fVxcbiAzNzY6XFx0XFxuIDM3NzpcXHRcXHRpZiAodzUxMDBfcmVhZDE2KHByaXYsIHJ0cikgIT0gUlRSX0RFRkFVTFQpXFxuIDM3ODpcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gMzc5OlxcdFxcbiAzODA6XFx0XFx0cmV0dXJuIDA7XFxuIDM4MTpcXHR9XFxuIDM4MjpcXHRcXG4gMzgzOlxcdHN0YXRpYyB2b2lkIHc1MTAwX2h3X3N0YXJ0KHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxcbiAzODQ6XFx0e1xcbiAzODU6XFx0XFx0dTggbW9kZSA9IFMwX01SX01BQ1JBVztcXG4gMzg2OlxcdFxcbiAzODc6XFx0XFx0aWYgKCFwcml2LVxcdTAwM2Vwcm9taXNjKSB7XFxuIDM4ODpcXHRcXHRcXHRpZiAocHJpdi1cXHUwMDNlb3BzLVxcdTAwM2VjaGlwX2lkID09IFc1NTAwKVxcbiAzODk6XFx0XFx0XFx0XFx0bW9kZSB8PSBXNTUwMF9TMF9NUl9NRjtcXG4gMzkwOlxcdFxcdFxcdGVsc2VcXG4gMzkxOlxcdFxcdFxcdFxcdG1vZGUgfD0gUzBfTVJfTUY7XFxuIDM5MjpcXHRcXHR9XFxuIDM5MzpcXHRcXG4gMzk0OlxcdFxcdHc1MTAwX3dyaXRlKHByaXYsIFc1MTAwX1MwX01SKHByaXYpLCBtb2RlKTtcXG4gMzk1OlxcdFxcdHc1MTAwX2NvbW1hbmQocHJpdiwgUzBfQ1JfT1BFTik7XFxuIDM5NjpcXHRcXHR3NTEwMF9lbmFibGVfaW50cihwcml2KTtcXG4gMzk3OlxcdH1cXG4gMzk4OlxcdFxcbiAzOTk6XFx0c3RhdGljIHZvaWQgdzUxMDBfaHdfY2xvc2Uoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYpXFxuIDQwMDpcXHR7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjA1OjQwLjQxNTc5MzAzM1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjg5NDM0OTYxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcG9zc2liaWxpdHkgb2YgVmlydHVhbGl6ZWQgVGVzdGluZyBmb3IgdGhpcyBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGB3NTEwMF9od19yZXNldGAgZnVuY3Rpb24sIGFuZCBpdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBUaGUgY3JpdGljYWwgcGFydCBpcyB0aGF0IGl0IGNoZWNrcyB0aGUgdmFsdWUgb2YgYSByZWdpc3RlciwgYHJ0cmAsIGFnYWluc3QgYFJUUl9ERUZBVUxUYC4gIElmIHRoYXQgY2hlY2sgZmFpbHMsIGl0IGltbWVkaWF0ZWx5IHJldHVybnMgYC1FTk9ERVZgLCB3aGljaCBtZWFucyB0aGUgZHJpdmVyIHdpbGwgbm90IGxvYWQuIFRoZSBgdzUxMDBfcmVhZDE2YCBmdW5jdGlvbiwgYmVpbmcgZnVuZGFtZW50YWwsIHdpbGwgbGlrZWx5IHJldHVybiBnYXJiYWdlIGRhdGEgaWYgdGhlIGFjdHVhbCBoYXJkd2FyZSBpc24ndCBwcmVzZW50LCB3aGljaCBkZWZpbml0ZWx5IHdvbid0IG1hdGNoIGBSVFJfREVGQVVMVGAuICBBbmQgdGhpcyBoYXJkd2FyZSBoYXBwZW5zIHRvIGJlIFNQSSwgd2hpY2gsIGFzIEkga25vdywgaXMgbm90IGVtdWxhdGVkIGJ5IFFFTVUuXG5cblRoZXJlZm9yZSwgc2luY2UgYHc1MTAwX2h3X3Jlc2V0YCBpcyBkaXJlY3RseSBjYWxsZWQgaW4gYHc1MTAwX3Byb2JlYCwgaWYgdGhlIGNoZWNrIGZhaWxzLCBgdzUxMDBfcHJvYmVgIGZhaWxzLCBhbmQgdGhlIGRyaXZlciBpcyBkZWFkIGluIHRoZSB3YXRlci4gVGhpcyBtZWFucyB0aGVyZSdzIG5vIHdheSB0byBldmVuIHJlYWNoIHRoZSBmdW5jdGlvbmFsIHBhcnRzIG9mIHRoaXMgZHJpdmVyLCBsaWtlIGB3NTEwMF9vcGVuYCwgYHc1MTAwX2RldGVjdF9saW5rYCwgb3IgYHc1MTAwX2dldF9saW5rYCB3aXRoaW4gUUVNVSBvciBzaW1pbGFyIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gIFRoaXMgZmFsbHMgc3F1YXJlbHkgaW50byB0aGUgXCJpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50c1wiIGNhdGVnb3J5LiAgSXQncyBhbiBTUEkgZGV2aWNlLCBhbmQgZm9yIGEgc3BlY2lmaWMgaGFyZHdhcmUgY2hpcCBhdCB0aGF0LCBzbyB0aGVyZSB3b24ndCBiZSBhIHNvZnR3YXJlIGVtdWxhdGlvbi5cblxuTm93LCBjb3VsZCB0aGVyZSBiZSBhIGJhY2tkb29yPyBNYXliZSB0aHJvdWdoIGBzeXprYWxsZXJgIGFuZCBhIG1vY2sgU1BJIGRyaXZlcj8gTGV0IG1lIHRoaW5rLi4uIE5vLiBUaGVyZSdzIG5vIGdlbmVyaWMgbW9jayBTUEkgZHJpdmVyIHRoYXQgY2FuIGZha2UgYXJiaXRyYXJ5IGRldmljZSByZWdpc3RlcnMgaW4gdGhlIG1haW5saW5lIGtlcm5lbC4gIFdoaWxlIHRoZXJlIGlzIGBzcGktbG9vcGJhY2stdGVzdGAsIGl0J3Mgbm90IGEgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyIGZha2VyLiBTbywgdGhhdCdzIG5vdCBoYXBwZW5pbmcuXG5cblRoZXJlZm9yZSwgdGhlIGNvbmNsdXNpb24gdGhhdCB0aGlzIGlzIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlzIGFjY3VyYXRlLiBKdXN0IHdhbnQgdG8gcXVpY2tseSBkb3VibGUgY2hlY2sgdGhlIGBSVFJfREVGQVVMVGAgdmFsdWUgb25lIGxhc3QgdGltZSBhbmQgdGhlbiBJIGNhbiBtb3ZlIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzU2NywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjA1OjUzLjMxMDE0NTcwNFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMyOTA2ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUlRSX0RFRkFVTFRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYz0zNT1NT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy04OS0jZGVmaW5lIFc1MTAwX1JUUlxcdFxcdDB4MDAxNyAvKiBSZXRyeSBUaW1lLXZhbHVlIFJlZ2lzdGVyICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6OTA6I2RlZmluZSAgIFJUUl9ERUZBVUxUXFx0XFx0ICAyMDAwIC8qID0weDA3ZDAgKDIwMDApICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtOTEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYz0zNTE9c3RhdGljIGludCB3NTEwMF9od19yZXNldChzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM3Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozNzc6XFx0aWYgKHc1MTAwX3JlYWQxNihwcml2LCBydHIpICE9IFJUUl9ERUZBVUxUKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM3OC1cXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6MDU6NTMuMzUzNDQyWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0NDkyMjY2OTI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFNQSSBEcml2ZXIncyBQcm9iaW5nIENhcGFiaWxpdGllcyoqXG5cbk9rYXksIHNvIEkndmUgY29uZmlybWVkIHRoYXQgdGhlIGRlZmF1bHQgcmVnaXN0ZXIgdmFsdWUsIGBSVFJfREVGQVVMVGAsIGlzIGluZGVlZCAyMDAwLCB3aGljaCBpbiBoZXhhZGVjaW1hbCBpcyBgMHgwN2QwYC4gQSBzdGFuZGFyZCBkdW1teSBTUEkgcmVhZCwgc29tZXRoaW5nIHlvdSBtaWdodCB0cnkgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgd291bGQgcmV0dXJuIGVpdGhlciBgMHgwMDAwYCBvciBgMHhmZmZmYCwgZGVwZW5kaW5nIG9uIGhvdyB0aGUgU1BJIGlzIGhhbmRsZWQgYXQgdGhlIGhhcmR3YXJlIGxheWVyLiBDb25zZXF1ZW50bHksIGFueSBhdHRlbXB0ZWQgcHJvYmUgZnVuY3Rpb24gd2lsbCBpbmV2aXRhYmx5IGZhaWwgaWYgaXQncyByZWx5aW5nIG9uIHJlYWRpbmcgYW5kIHZlcmlmeWluZyBoYXJkd2FyZS1zcGVjaWZpYyByZWdpc3RlcnMuXG5cblRoZXJlZm9yZSwgYW5kIGdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRyaXZlciBhbmQgaXRzIGRlcGVuZGVuY2llcywgc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYCBpcyB0aGUgY29ycmVjdCBwYXRoLiBJJ2xsIG5lZWQgdG8gY2xlYXJseSBhcnRpY3VsYXRlIHRoaXMgaW4gdGhlIGNvbW1lbnRzLiBUaGlzIGRyaXZlciBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIHRoZSBXaXpuZXQgVzUxMDAsIFc1MjAwLCBhbmQgVzU1MDAgZXRoZXJuZXQgY2hpcHMsIGFuZCBpdHMgY29tbXVuaWNhdGlvbiBpcyBzb2xlbHkgdGhyb3VnaCBTUEkuIFN0YW5kYXJkIFFFTVUsIGFzIGl0J3MgaW1wbGVtZW50ZWQgbm93LCBkb2Vzbid0IGVtdWxhdGUgdGhlIG5lY2Vzc2FyeSBoYXJkd2FyZSBpbnRlcmFjdGlvbnMgd2l0aCB0aG9zZSBjaGlwcy4gVGhlIHByb2JlIGZ1bmN0aW9uIGlzIGNsZWFybHkgZGVzaWduZWQgdG8gY2hlY2sgc3BlY2lmaWMgaGFyZHdhcmUgcmVnaXN0ZXJzIHRoYXQgYXJlIHVuYXZhaWxhYmxlIG9yIHVuaW5pdGlhbGl6ZWQgaW4gYSBnZW5lcmljIHZpcnR1YWwgZW52aXJvbm1lbnQuIFRoZXJlJ3Mgbm8gdmFsdWUgaW4gZnV6emluZyB0aGlzIGRyaXZlciB1bnRpbCB0aGUgaGFyZHdhcmUgaXRzZWxmIGlzIGVtdWxhdGVkLCBvciBvdGhlciByZWdpc3Rlci1iYXNlZCBjaGVjayBpcyBpbXBsZW1lbnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg4MTAsIk91dHB1dFRva2VucyI6MTMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjA2OjA3Ljg0NTcxMTY4NloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB3NTEwMCBFdGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGZvciBXaXpuZXQgVzUxMDAvVzUyMDAvVzU1MDAgaGFyZHdhcmUgY2hpcHMgY29ubmVjdGVkIHZpYSBTUEkuIFRoZXNlIGNoaXBzIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gVGhlIGRyaXZlcidzIHByb2JlIGZ1bmN0aW9uIGV4cGxpY2l0bHkgY2hlY2tzIGhhcmR3YXJlIHJlZ2lzdGVycyAoZS5nLiwgdmVyaWZ5aW5nIFJUUl9ERUZBVUxUKSBhbmQgd2lsbCBmYWlsIHRvIGluaXRpYWxpemUgd2l0aG91dCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgcHJlc2VudC4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB3NTEwMCBFdGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGZvciBXaXpuZXQgVzUxMDAvVzUyMDAvVzU1MDAgaGFyZHdhcmUgY2hpcHMgY29ubmVjdGVkIHZpYSBTUEkuIFRoZXNlIGNoaXBzIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gVGhlIGRyaXZlcidzIHByb2JlIGZ1bmN0aW9uIGV4cGxpY2l0bHkgY2hlY2tzIGhhcmR3YXJlIHJlZ2lzdGVycyAoZS5nLiwgdmVyaWZ5aW5nIFJUUl9ERUZBVUxUKSBhbmQgd2lsbCBmYWlsIHRvIGluaXRpYWxpemUgd2l0aG91dCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgcHJlc2VudC4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowpcn94[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-04 15:25:10 +0000 UTC FinishedAt: 2026-08-04 16:06: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+CgkJCTx0ZD4yMDI2LzA4LzA0IDE1OjQ1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgdzUxMDAgRXRoZXJuZXQgZHJpdmVyLCB3aGljaCBpcyBmb3IgV2l6bmV0IFc1MTAwL1c1MjAwL1c1NTAwIGhhcmR3YXJlIGNoaXBzIGNvbm5lY3RlZCB2aWEgU1BJLiBUaGVzZSBjaGlwcyBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIFRoZSBkcml2ZXImIzM5O3MgcHJvYmUgZnVuY3Rpb24gZXhwbGljaXRseSBjaGVja3MgaGFyZHdhcmUgcmVnaXN0ZXJzIChlLmcuLCB2ZXJpZnlpbmcgUlRSX0RFRkFVTFQpIGFuZCB3aWxsIGZhaWwgdG8gaW5pdGlhbGl6ZSB3aXRob3V0IHRoZSBwaHlzaWNhbCBoYXJkd2FyZSBwcmVzZW50LiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNTo0NTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDcyNGM4ZjcxZjhiZTA5OTRmMTQ3Y2U1ZmEzNzllNTYyZjFlMTFiZDJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyA0IDE1OjQ1OjU0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnR4dFxuaW5kZXggZTk2NjU3OThjNGJlNi4uZTk3Y2UzY2I5MTgzMCAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnR4dFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAudHh0XG5AQCAtMjUsNiAmIzQzOzI1LDcgQEAgT3B0aW9uYWwgcHJvcGVydGllczpcbiAgIEFjY29yZGluZyB0byB0aGUgdzU1MDAgZGF0YXNoZWV0LCB0aGUgY2hpcCBhbGxvd3MgYSBtYXhpbXVtIG9mIDgwIE1IeiwgaG93ZXZlcixcbiAgIGJvYXJkIGRlc2lnbnMgbWF5IG5lZWQgdG8gbGltaXQgdGhpcyB2YWx1ZS5cbiAtIGxvY2FsLW1hYy1hZGRyZXNzOiBTZWUgZXRoZXJuZXQudHh0IGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiYjNDM7LSBsaW5rLWdwaW9zOiBhIEdQSU8gbGluZSB1c2VkIGZvciB0aGUgbGluayBkZXRlY3Rpb24gaW50ZXJydXB0XG4gXG4gXG4gRXhhbXBsZSAoZm9yIFJhc3BiZXJyeSBQaSB3aXRoIHBpbiBjb250cm9sIHN0dWZmIGZvciBHUElPIGlycSk6XG5AQCAtMzgsMTMgJiM0MzszOSwxNCBAQCBFeGFtcGxlIChmb3IgUmFzcGJlcnJ5IFBpIHdpdGggcGluIGNvbnRyb2wgc3R1ZmYgZm9yIEdQSU8gaXJxKTpcbiBcdFx0aW50ZXJydXB0LXBhcmVudCA9IFx1MDAzY1x1MDAyNmdwaW9cdTAwM2U7XG4gXHRcdGludGVycnVwdHMgPSBcdTAwM2MyNSBJUlFfVFlQRV9FREdFX0ZBTExJTkdcdTAwM2U7XG4gXHRcdHNwaS1tYXgtZnJlcXVlbmN5ID0gXHUwMDNjMzAwMDAwMDBcdTAwM2U7XG4mIzQzO1x0XHRsaW5rLWdwaW9zID0gXHUwMDNjXHUwMDI2Z3BpbyA0IEdQSU9fQUNUSVZFX0hJR0hcdTAwM2U7XG4gXHR9O1xuIH07XG4gXG4gXHUwMDI2Z3BpbyB7XG4gXHRldGgxX3BpbnM6IGV0aDFfcGlucyB7XG4tXHRcdGJyY20scGlucyA9IFx1MDAzYzI1XHUwMDNlO1xuLVx0XHRicmNtLGZ1bmN0aW9uID0gXHUwMDNjMFx1MDAzZTsgLyogaW4gKi9cbi1cdFx0YnJjbSxwdWxsID0gXHUwMDNjMFx1MDAzZTsgLyogbm9uZSAqL1xuJiM0MztcdFx0YnJjbSxwaW5zID0gXHUwMDNjMjUgNFx1MDAzZTtcbiYjNDM7XHRcdGJyY20sZnVuY3Rpb24gPSBcdTAwM2MwIDBcdTAwM2U7IC8qIGluICovXG4mIzQzO1x0XHRicmNtLHB1bGwgPSBcdTAwM2MwIDBcdTAwM2U7IC8qIG5vbmUgKi9cbiBcdH07XG4gfTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jXG5pbmRleCA1M2Q4ZGM2NDJmYmQ2Li5jOWQxODkxZjM3Yjk4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jXG5AQCAtMjIsNiAmIzQzOzIyLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pb3BvcnQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2ludGVycnVwdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaXJxLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZ3Bpby9jb25zdW1lci5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXCYjMzQ7dzUxMDAuaFwmIzM0O1xuIFxuQEAgLTE1NCw2ICYjNDM7MTU1LDggQEAgc3RydWN0IHc1MTAwX3ByaXYge1xuIFx0dTE2IHMwX3J4X2J1Zl9zaXplO1xuIFxuIFx0aW50IGlycTtcbiYjNDM7XHRpbnQgbGlua19pcnE7XG4mIzQzO1x0c3RydWN0IGdwaW9fZGVzYyAqbGlua19ncGlvO1xuIFxuIFx0c3RydWN0IG5hcGlfc3RydWN0IG5hcGk7XG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldjtcbkBAIC00MTQsNiAmIzQzOzQxNywxNiBAQCBzdGF0aWMgdm9pZCB3NTEwMF9nZXRfZHJ2aW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdFx0c2l6ZW9mKGluZm8tXHUwMDNlYnVzX2luZm8pKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyB1MzIgdzUxMDBfZ2V0X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuJiM0MztcbiYjNDM7XHRpZiAocHJpdi1cdTAwM2VsaW5rX2dwaW8pXG4mIzQzO1x0XHRyZXR1cm4gISFncGlvZF9nZXRfdmFsdWVfY2Fuc2xlZXAocHJpdi1cdTAwM2VsaW5rX2dwaW8pO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdTMyIHc1MTAwX2dldF9tc2dsZXZlbChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiB7XG4gXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuQEAgLTYxNiw2ICYjNDM7NjI5LDI0IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCB3NTEwMF9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqbmRldl9pbnN0YW5jZSlcbiBcdHJldHVybiBJUlFfSEFORExFRDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpcnFyZXR1cm5fdCB3NTEwMF9kZXRlY3RfbGluayhpbnQgaXJxLCB2b2lkICpuZGV2X2luc3RhbmNlKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSBuZGV2X2luc3RhbmNlO1xuJiM0MztcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG4mIzQzO1xuJiM0MztcdGlmIChuZXRpZl9ydW5uaW5nKG5kZXYpKSB7XG4mIzQzO1x0XHRpZiAoZ3Bpb2RfZ2V0X3ZhbHVlKHByaXYtXHUwMDNlbGlua19ncGlvKSAhPSAwKSB7XG4mIzQzO1x0XHRcdG5ldGlmX2luZm8ocHJpdiwgbGluaywgbmRldiwgXCYjMzQ7bGluayBpcyB1cFxcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdG5ldGlmX2NhcnJpZXJfb24obmRldik7XG4mIzQzO1x0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRuZXRpZl9pbmZvKHByaXYsIGxpbmssIG5kZXYsIFwmIzM0O2xpbmsgaXMgZG93blxcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdG5ldGlmX2NhcnJpZXJfb2ZmKG5kZXYpO1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIElSUV9IQU5ETEVEO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB2b2lkIHc1MTAwX3NldHJ4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIHtcbiBcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB3NTEwMF9wcml2LFxuQEAgLTY1OSw2ICYjNDM7NjkwLDE0IEBAIHN0YXRpYyBpbnQgdzUxMDBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiBcdHc1MTAwX2h3X3N0YXJ0KHByaXYpO1xuIFx0bmFwaV9lbmFibGUoXHUwMDI2cHJpdi1cdTAwM2VuYXBpKTtcbiBcdG5ldGlmX3N0YXJ0X3F1ZXVlKG5kZXYpO1xuJiM0MztcbiYjNDM7XHRpZiAocHJpdi1cdTAwM2VsaW5rX2dwaW8pIHtcbiYjNDM7XHRcdGlmIChncGlvZF9nZXRfdmFsdWVfY2Fuc2xlZXAocHJpdi1cdTAwM2VsaW5rX2dwaW8pICE9IDApXG4mIzQzO1x0XHRcdG5ldGlmX2NhcnJpZXJfb24obmRldik7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdG5ldGlmX2NhcnJpZXJfb2ZmKG5kZXYpO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5AQCAtNjc4LDYgJiM0Mzs3MTcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHc1MTAwX2V0aHRvb2xfb3BzID0ge1xuIFx0LmdldF9kcnZpbmZvXHRcdD0gdzUxMDBfZ2V0X2RydmluZm8sXG4gXHQuZ2V0X21zZ2xldmVsXHRcdD0gdzUxMDBfZ2V0X21zZ2xldmVsLFxuIFx0LnNldF9tc2dsZXZlbFx0XHQ9IHc1MTAwX3NldF9tc2dsZXZlbCxcbiYjNDM7XHQuZ2V0X2xpbmtcdFx0PSB3NTEwMF9nZXRfbGluayxcbiBcdC5nZXRfcmVnc19sZW5cdFx0PSB3NTEwMF9nZXRfcmVnc19sZW4sXG4gXHQuZ2V0X3JlZ3NcdFx0PSB3NTEwMF9nZXRfcmVncyxcbiB9O1xuQEAgLTc1MSw2ICYjNDM7NzkxLDEzIEBAIGludCB3NTEwMF9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCB3NTEwMF9vcHMgKm9wcyxcbiBcdHByaXYtXHUwMDNlbmRldiA9IG5kZXY7XG4gXHRwcml2LVx1MDAzZW9wcyA9IG9wcztcbiBcdHByaXYtXHUwMDNlaXJxID0gaXJxO1xuJiM0MztcdHByaXYtXHUwMDNlbGlua19ncGlvID0gZ3Bpb2RfZ2V0X29wdGlvbmFsKGRldiwgXCYjMzQ7bGlua1wmIzM0OywgR1BJT0RfSU4pO1xuJiM0MztcdGlmIChJU19FUlIocHJpdi1cdTAwM2VsaW5rX2dwaW8pKSB7XG4mIzQzO1x0XHRlcnIgPSBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihwcml2LVx1MDAzZWxpbmtfZ3BpbyksXG4mIzQzO1x0XHRcdFx0ICAgIFwmIzM0O2ZhaWxlZCB0byBnZXQgbGluayBHUElPXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHByaXYtXHUwMDNlbGlua19ncGlvID0gTlVMTDtcbiYjNDM7XHRcdGdvdG8gZXJyX3JlZ2lzdGVyO1xuJiM0MztcdH1cbiBcbiBcdG5kZXYtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNnc1MTAwX25ldGRldl9vcHM7XG4gXHRuZGV2LVx1MDAzZWV0aHRvb2xfb3BzID0gXHUwMDI2dzUxMDBfZXRodG9vbF9vcHM7XG5AQCAtODAzLDEzICYjNDM7ODUwLDQwIEBAIGludCB3NTEwMF9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCB3NTEwMF9vcHMgKm9wcyxcbiBcdGlmIChlcnIpXG4gXHRcdGdvdG8gZXJyX2h3O1xuIFxuJiM0MztcdGlmIChwcml2LVx1MDAzZWxpbmtfZ3Bpbykge1xuJiM0MztcdFx0Y2hhciAqbGlua19uYW1lID0gZGV2bV9rYXNwcmludGYoZGV2LCBHRlBfS0VSTkVMLCBcJiMzNDslcy1saW5rXCYjMzQ7LFxuJiM0MztcdFx0XHRcdFx0XHQgZGV2X25hbWUoZGV2KSk7XG4mIzQzO1x0XHRpZiAoIWxpbmtfbmFtZSkge1xuJiM0MztcdFx0XHRlcnIgPSAtRU5PTUVNO1xuJiM0MztcdFx0XHRnb3RvIGVycl9ncGlvO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdHByaXYtXHUwMDNlbGlua19pcnEgPSBncGlvZF90b19pcnEocHJpdi1cdTAwM2VsaW5rX2dwaW8pO1xuJiM0MztcdFx0aWYgKHByaXYtXHUwMDNlbGlua19pcnEgXHUwMDNjIDApIHtcbiYjNDM7XHRcdFx0ZXJyID0gcHJpdi1cdTAwM2VsaW5rX2lycTtcbiYjNDM7XHRcdFx0Z290byBlcnJfZ3BpbztcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRlcnIgPSByZXF1ZXN0X2FueV9jb250ZXh0X2lycShwcml2LVx1MDAzZWxpbmtfaXJxLCB3NTEwMF9kZXRlY3RfbGluayxcbiYjNDM7XHRcdFx0XHRcdCAgICAgIElSUUZfVFJJR0dFUl9SSVNJTkcgfFxuJiM0MztcdFx0XHRcdFx0XHQgICAgICBJUlFGX1RSSUdHRVJfRkFMTElORyxcbiYjNDM7XHRcdFx0XHRcdCAgICAgIGxpbmtfbmFtZSwgcHJpdi1cdTAwM2VuZGV2KTtcbiYjNDM7XHRcdGlmIChlcnIgXHUwMDNjIDApXG4mIzQzO1x0XHRcdGdvdG8gZXJyX2dwaW87XG4mIzQzO1x0fVxuJiM0MztcbiBcdHJldHVybiAwO1xuIFxuJiM0MztlcnJfZ3BpbzpcbiYjNDM7XHRmcmVlX2lycShwcml2LVx1MDAzZWlycSwgbmRldik7XG4gZXJyX2h3OlxuIFx0ZGVzdHJveV93b3JrcXVldWUocHJpdi1cdTAwM2V4ZmVyX3dxKTtcbiBlcnJfd3E6XG4gXHR1bnJlZ2lzdGVyX25ldGRldihuZGV2KTtcbiBlcnJfcmVnaXN0ZXI6XG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlbGlua19ncGlvKVxuJiM0MztcdFx0Z3Bpb2RfcHV0KHByaXYtXHUwMDNlbGlua19ncGlvKTtcbiYjNDM7XG4gXHRmcmVlX25ldGRldihuZGV2KTtcbiBcdHJldHVybiBlcnI7XG4gfVxuQEAgLTgyMiw2ICYjNDM7ODk2LDEwIEBAIHZvaWQgdzUxMDBfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcbiBcdHc1MTAwX2h3X3Jlc2V0KHByaXYpO1xuIFx0ZnJlZV9pcnEocHJpdi1cdTAwM2VpcnEsIG5kZXYpO1xuJiM0MztcdGlmIChwcml2LVx1MDAzZWxpbmtfZ3Bpbykge1xuJiM0MztcdFx0ZnJlZV9pcnEocHJpdi1cdTAwM2VsaW5rX2lycSwgbmRldik7XG4mIzQzO1x0XHRncGlvZF9wdXQocHJpdi1cdTAwM2VsaW5rX2dwaW8pO1xuJiM0MztcdH1cbiBcbiBcdGZsdXNoX3dvcmsoXHUwMDI2cHJpdi1cdTAwM2VzZXRyeF93b3JrKTtcbiBcdGZsdXNoX3dvcmsoXHUwMDI2cHJpdi1cdTAwM2VyZXN0YXJ0X3dvcmspO1xuQEAgLTg0MCw2ICYjNDM7OTE4LDcgQEAgc3RhdGljIGludCB3NTEwMF9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcbiBcdGlmIChuZXRpZl9ydW5uaW5nKG5kZXYpKSB7XG4gXHRcdG5ldGlmX2NhcnJpZXJfb2ZmKG5kZXYpO1xuJiM0MztcbiBcdFx0bmV0aWZfZGV2aWNlX2RldGFjaChuZGV2KTtcbiBcbiBcdFx0dzUxMDBfaHdfY2xvc2UocHJpdik7XG5AQCAtODU3LDcgJiM0Mzs5MzYsMTIgQEAgc3RhdGljIGludCB3NTEwMF9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0XHR3NTEwMF9od19zdGFydChwcml2KTtcbiBcbiBcdFx0bmV0aWZfZGV2aWNlX2F0dGFjaChuZGV2KTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoIXByaXYtXHUwMDNlbGlua19ncGlvIHx8XG4mIzQzO1x0XHQgICAgZ3Bpb2RfZ2V0X3ZhbHVlX2NhbnNsZWVwKHByaXYtXHUwMDNlbGlua19ncGlvKSAhPSAwKVxuJiM0MztcdFx0XHRuZXRpZl9jYXJyaWVyX29uKG5kZXYpO1xuIFx0fVxuJiM0MztcbiBcdHJldHVybiAwO1xuIH1cbiAjZW5kaWYgLyogQ09ORklHX1BNX1NMRUVQICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTU6NDU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgdzUxMDAgRXRoZXJuZXQgZHJpdmVyLCB3aGljaCBpcyBmb3IgV2l6bmV0IFc1MTAwL1c1MjAwL1c1NTAwIGhhcmR3YXJlIGNoaXBzIGNvbm5lY3RlZCB2aWEgU1BJLiBUaGVzZSBjaGlwcyBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIFRoZSBkcml2ZXImIzM5O3MgcHJvYmUgZnVuY3Rpb24gZXhwbGljaXRseSBjaGVja3MgaGFyZHdhcmUgcmVnaXN0ZXJzIChlLmcuLCB2ZXJpZnlpbmcgUlRSX0RFRkFVTFQpIGFuZCB3aWxsIGZhaWwgdG8gaW5pdGlhbGl6ZSB3aXRob3V0IHRoZSBwaHlzaWNhbCBoYXJkd2FyZSBwcmVzZW50LiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDcyNGM4ZjcxZjhiZTA5OTRmMTQ3Y2U1ZmEzNzllNTYyZjFlMTFiZDIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyA0IDE1OjQ1OjU0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAudHh0CmluZGV4IGU5NjY1Nzk4YzRiZTYuLmU5N2NlM2NiOTE4MzAgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnR4dAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC50eHQKQEAgLTI1LDYgJiM0MzsyNSw3IEBAIE9wdGlvbmFsIHByb3BlcnRpZXM6CiAgIEFjY29yZGluZyB0byB0aGUgdzU1MDAgZGF0YXNoZWV0LCB0aGUgY2hpcCBhbGxvd3MgYSBtYXhpbXVtIG9mIDgwIE1IeiwgaG93ZXZlciwKICAgYm9hcmQgZGVzaWducyBtYXkgbmVlZCB0byBsaW1pdCB0aGlzIHZhbHVlLgogLSBsb2NhbC1tYWMtYWRkcmVzczogU2VlIGV0aGVybmV0LnR4dCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCiYjNDM7LSBsaW5rLWdwaW9zOiBhIEdQSU8gbGluZSB1c2VkIGZvciB0aGUgbGluayBkZXRlY3Rpb24gaW50ZXJydXB0CiAKIAogRXhhbXBsZSAoZm9yIFJhc3BiZXJyeSBQaSB3aXRoIHBpbiBjb250cm9sIHN0dWZmIGZvciBHUElPIGlycSk6CkBAIC0zOCwxMyAmIzQzOzM5LDE0IEBAIEV4YW1wbGUgKGZvciBSYXNwYmVycnkgUGkgd2l0aCBwaW4gY29udHJvbCBzdHVmZiBmb3IgR1BJTyBpcnEpOgogCQlpbnRlcnJ1cHQtcGFyZW50ID0gJmx0OyZhbXA7Z3BpbyZndDs7CiAJCWludGVycnVwdHMgPSAmbHQ7MjUgSVJRX1RZUEVfRURHRV9GQUxMSU5HJmd0OzsKIAkJc3BpLW1heC1mcmVxdWVuY3kgPSAmbHQ7MzAwMDAwMDAmZ3Q7OwomIzQzOwkJbGluay1ncGlvcyA9ICZsdDsmYW1wO2dwaW8gNCBHUElPX0FDVElWRV9ISUdIJmd0OzsKIAl9OwogfTsKIAogJmFtcDtncGlvIHsKIAlldGgxX3BpbnM6IGV0aDFfcGlucyB7Ci0JCWJyY20scGlucyA9ICZsdDsyNSZndDs7Ci0JCWJyY20sZnVuY3Rpb24gPSAmbHQ7MCZndDs7IC8qIGluICovCi0JCWJyY20scHVsbCA9ICZsdDswJmd0OzsgLyogbm9uZSAqLwomIzQzOwkJYnJjbSxwaW5zID0gJmx0OzI1IDQmZ3Q7OwomIzQzOwkJYnJjbSxmdW5jdGlvbiA9ICZsdDswIDAmZ3Q7OyAvKiBpbiAqLwomIzQzOwkJYnJjbSxwdWxsID0gJmx0OzAgMCZndDs7IC8qIG5vbmUgKi8KIAl9OwogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMKaW5kZXggNTNkOGRjNjQyZmJkNi4uYzlkMTg5MWYzN2I5OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMKQEAgLTIyLDYgJiM0MzsyMiw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvaW9wb3J0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvaW50ZXJydXB0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvaXJxLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2dwaW8vY29uc3VtZXIuaCZndDsKIAogI2luY2x1ZGUgJiMzNDt3NTEwMC5oJiMzNDsKIApAQCAtMTU0LDYgJiM0MzsxNTUsOCBAQCBzdHJ1Y3QgdzUxMDBfcHJpdiB7CiAJdTE2IHMwX3J4X2J1Zl9zaXplOwogCiAJaW50IGlycTsKJiM0MzsJaW50IGxpbmtfaXJxOwomIzQzOwlzdHJ1Y3QgZ3Bpb19kZXNjICpsaW5rX2dwaW87CiAKIAlzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTsKIAlzdHJ1Y3QgbmV0X2RldmljZSAqbmRldjsKQEAgLTQxNCw2ICYjNDM7NDE3LDE2IEBAIHN0YXRpYyB2b2lkIHc1MTAwX2dldF9kcnZpbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAogCQlzaXplb2YoaW5mby0mZ3Q7YnVzX2luZm8pKTsKIH0KIAomIzQzO3N0YXRpYyB1MzIgdzUxMDBfZ2V0X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpOwomIzQzOwomIzQzOwlpZiAocHJpdi0mZ3Q7bGlua19ncGlvKQomIzQzOwkJcmV0dXJuICEhZ3Bpb2RfZ2V0X3ZhbHVlX2NhbnNsZWVwKHByaXYtJmd0O2xpbmtfZ3Bpbyk7CiYjNDM7CiYjNDM7CXJldHVybiAxOwomIzQzO30KJiM0MzsKIHN0YXRpYyB1MzIgdzUxMDBfZ2V0X21zZ2xldmVsKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQogewogCXN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7CkBAIC02MTYsNiAmIzQzOzYyOSwyNCBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgdzUxMDBfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKm5kZXZfaW5zdGFuY2UpCiAJcmV0dXJuIElSUV9IQU5ETEVEOwogfQogCiYjNDM7c3RhdGljIGlycXJldHVybl90IHc1MTAwX2RldGVjdF9saW5rKGludCBpcnEsIHZvaWQgKm5kZXZfaW5zdGFuY2UpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IG5kZXZfaW5zdGFuY2U7CiYjNDM7CXN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7CiYjNDM7CiYjNDM7CWlmIChuZXRpZl9ydW5uaW5nKG5kZXYpKSB7CiYjNDM7CQlpZiAoZ3Bpb2RfZ2V0X3ZhbHVlKHByaXYtJmd0O2xpbmtfZ3BpbykgIT0gMCkgewomIzQzOwkJCW5ldGlmX2luZm8ocHJpdiwgbGluaywgbmRldiwgJiMzNDtsaW5rIGlzIHVwXG4mIzM0Oyk7CiYjNDM7CQkJbmV0aWZfY2Fycmllcl9vbihuZGV2KTsKJiM0MzsJCX0gZWxzZSB7CiYjNDM7CQkJbmV0aWZfaW5mbyhwcml2LCBsaW5rLCBuZGV2LCAmIzM0O2xpbmsgaXMgZG93blxuJiMzNDspOwomIzQzOwkJCW5ldGlmX2NhcnJpZXJfb2ZmKG5kZXYpOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiBJUlFfSEFORExFRDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCB3NTEwMF9zZXRyeF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIHsKIAlzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdzUxMDBfcHJpdiwKQEAgLTY1OSw2ICYjNDM7NjkwLDE0IEBAIHN0YXRpYyBpbnQgdzUxMDBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldikKIAl3NTEwMF9od19zdGFydChwcml2KTsKIAluYXBpX2VuYWJsZSgmYW1wO3ByaXYtJmd0O25hcGkpOwogCW5ldGlmX3N0YXJ0X3F1ZXVlKG5kZXYpOwomIzQzOwomIzQzOwlpZiAocHJpdi0mZ3Q7bGlua19ncGlvKSB7CiYjNDM7CQlpZiAoZ3Bpb2RfZ2V0X3ZhbHVlX2NhbnNsZWVwKHByaXYtJmd0O2xpbmtfZ3BpbykgIT0gMCkKJiM0MzsJCQluZXRpZl9jYXJyaWVyX29uKG5kZXYpOwomIzQzOwkJZWxzZQomIzQzOwkJCW5ldGlmX2NhcnJpZXJfb2ZmKG5kZXYpOwomIzQzOwl9CiYjNDM7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTY3OCw2ICYjNDM7NzE3LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyB3NTEwMF9ldGh0b29sX29wcyA9IHsKIAkuZ2V0X2RydmluZm8JCT0gdzUxMDBfZ2V0X2RydmluZm8sCiAJLmdldF9tc2dsZXZlbAkJPSB3NTEwMF9nZXRfbXNnbGV2ZWwsCiAJLnNldF9tc2dsZXZlbAkJPSB3NTEwMF9zZXRfbXNnbGV2ZWwsCiYjNDM7CS5nZXRfbGluawkJPSB3NTEwMF9nZXRfbGluaywKIAkuZ2V0X3JlZ3NfbGVuCQk9IHc1MTAwX2dldF9yZWdzX2xlbiwKIAkuZ2V0X3JlZ3MJCT0gdzUxMDBfZ2V0X3JlZ3MsCiB9OwpAQCAtNzUxLDYgJiM0Mzs3OTEsMTMgQEAgaW50IHc1MTAwX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IHc1MTAwX29wcyAqb3BzLAogCXByaXYtJmd0O25kZXYgPSBuZGV2OwogCXByaXYtJmd0O29wcyA9IG9wczsKIAlwcml2LSZndDtpcnEgPSBpcnE7CiYjNDM7CXByaXYtJmd0O2xpbmtfZ3BpbyA9IGdwaW9kX2dldF9vcHRpb25hbChkZXYsICYjMzQ7bGluayYjMzQ7LCBHUElPRF9JTik7CiYjNDM7CWlmIChJU19FUlIocHJpdi0mZ3Q7bGlua19ncGlvKSkgewomIzQzOwkJZXJyID0gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocHJpdi0mZ3Q7bGlua19ncGlvKSwKJiM0MzsJCQkJICAgICYjMzQ7ZmFpbGVkIHRvIGdldCBsaW5rIEdQSU9cbiYjMzQ7KTsKJiM0MzsJCXByaXYtJmd0O2xpbmtfZ3BpbyA9IE5VTEw7CiYjNDM7CQlnb3RvIGVycl9yZWdpc3RlcjsKJiM0MzsJfQogCiAJbmRldi0mZ3Q7bmV0ZGV2X29wcyA9ICZhbXA7dzUxMDBfbmV0ZGV2X29wczsKIAluZGV2LSZndDtldGh0b29sX29wcyA9ICZhbXA7dzUxMDBfZXRodG9vbF9vcHM7CkBAIC04MDMsMTMgJiM0Mzs4NTAsNDAgQEAgaW50IHc1MTAwX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IHc1MTAwX29wcyAqb3BzLAogCWlmIChlcnIpCiAJCWdvdG8gZXJyX2h3OwogCiYjNDM7CWlmIChwcml2LSZndDtsaW5rX2dwaW8pIHsKJiM0MzsJCWNoYXIgKmxpbmtfbmFtZSA9IGRldm1fa2FzcHJpbnRmKGRldiwgR0ZQX0tFUk5FTCwgJiMzNDslcy1saW5rJiMzNDssCiYjNDM7CQkJCQkJIGRldl9uYW1lKGRldikpOwomIzQzOwkJaWYgKCFsaW5rX25hbWUpIHsKJiM0MzsJCQllcnIgPSAtRU5PTUVNOwomIzQzOwkJCWdvdG8gZXJyX2dwaW87CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQlwcml2LSZndDtsaW5rX2lycSA9IGdwaW9kX3RvX2lycShwcml2LSZndDtsaW5rX2dwaW8pOwomIzQzOwkJaWYgKHByaXYtJmd0O2xpbmtfaXJxICZsdDsgMCkgewomIzQzOwkJCWVyciA9IHByaXYtJmd0O2xpbmtfaXJxOwomIzQzOwkJCWdvdG8gZXJyX2dwaW87CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQllcnIgPSByZXF1ZXN0X2FueV9jb250ZXh0X2lycShwcml2LSZndDtsaW5rX2lycSwgdzUxMDBfZGV0ZWN0X2xpbmssCiYjNDM7CQkJCQkgICAgICBJUlFGX1RSSUdHRVJfUklTSU5HIHwKJiM0MzsJCQkJCQkgICAgICBJUlFGX1RSSUdHRVJfRkFMTElORywKJiM0MzsJCQkJCSAgICAgIGxpbmtfbmFtZSwgcHJpdi0mZ3Q7bmRldik7CiYjNDM7CQlpZiAoZXJyICZsdDsgMCkKJiM0MzsJCQlnb3RvIGVycl9ncGlvOwomIzQzOwl9CiYjNDM7CiAJcmV0dXJuIDA7CiAKJiM0MztlcnJfZ3BpbzoKJiM0MzsJZnJlZV9pcnEocHJpdi0mZ3Q7aXJxLCBuZGV2KTsKIGVycl9odzoKIAlkZXN0cm95X3dvcmtxdWV1ZShwcml2LSZndDt4ZmVyX3dxKTsKIGVycl93cToKIAl1bnJlZ2lzdGVyX25ldGRldihuZGV2KTsKIGVycl9yZWdpc3RlcjoKJiM0MzsJaWYgKHByaXYtJmd0O2xpbmtfZ3BpbykKJiM0MzsJCWdwaW9kX3B1dChwcml2LSZndDtsaW5rX2dwaW8pOwomIzQzOwogCWZyZWVfbmV0ZGV2KG5kZXYpOwogCXJldHVybiBlcnI7CiB9CkBAIC04MjIsNiAmIzQzOzg5NiwxMCBAQCB2b2lkIHc1MTAwX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAKIAl3NTEwMF9od19yZXNldChwcml2KTsKIAlmcmVlX2lycShwcml2LSZndDtpcnEsIG5kZXYpOwomIzQzOwlpZiAocHJpdi0mZ3Q7bGlua19ncGlvKSB7CiYjNDM7CQlmcmVlX2lycShwcml2LSZndDtsaW5rX2lycSwgbmRldik7CiYjNDM7CQlncGlvZF9wdXQocHJpdi0mZ3Q7bGlua19ncGlvKTsKJiM0MzsJfQogCiAJZmx1c2hfd29yaygmYW1wO3ByaXYtJmd0O3NldHJ4X3dvcmspOwogCWZsdXNoX3dvcmsoJmFtcDtwcml2LSZndDtyZXN0YXJ0X3dvcmspOwpAQCAtODQwLDYgJiM0Mzs5MTgsNyBAQCBzdGF0aWMgaW50IHc1MTAwX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQogCiAJaWYgKG5ldGlmX3J1bm5pbmcobmRldikpIHsKIAkJbmV0aWZfY2Fycmllcl9vZmYobmRldik7CiYjNDM7CiAJCW5ldGlmX2RldmljZV9kZXRhY2gobmRldik7CiAKIAkJdzUxMDBfaHdfY2xvc2UocHJpdik7CkBAIC04NTcsNyAmIzQzOzkzNiwxMiBAQCBzdGF0aWMgaW50IHc1MTAwX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJCXc1MTAwX2h3X3N0YXJ0KHByaXYpOwogCiAJCW5ldGlmX2RldmljZV9hdHRhY2gobmRldik7CiYjNDM7CiYjNDM7CQlpZiAoIXByaXYtJmd0O2xpbmtfZ3BpbyB8fAomIzQzOwkJICAgIGdwaW9kX2dldF92YWx1ZV9jYW5zbGVlcChwcml2LSZndDtsaW5rX2dwaW8pICE9IDApCiYjNDM7CQkJbmV0aWZfY2Fycmllcl9vbihuZGV2KTsKIAl9CiYjNDM7CiAJcmV0dXJuIDA7CiB9CiAjZW5kaWYgLyogQ09ORklHX1BNX1NMRUVQICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE1OjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0MzAKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyOTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBXaXpuZXQgVzUxMDAgRXRoZXJuZXQgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIGZvciB0aGUgYHc1MTAwYCBldGhlcm5ldCBkcml2ZXIsIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmNgLiBJdCBsb29rcyBsaWtlIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBsaW5rIGRldGVjdGlvbiB2aWEgYSBHUElPLiBJIHNlZSBuZXcgZnVuY3Rpb25zIGFkZGVkOiBgdzUxMDBfZ2V0X2xpbmtgIGFuZCBgdzUxMDBfZGV0ZWN0X2xpbmtgLCB0aGUgbGF0dGVyIGJlaW5nIGFuIElSUSBoYW5kbGVyLCB3aGljaCBtYWtlcyBzZW5zZSBmb3IgcmVzcG9uZGluZyB0byBwaW4gY2hhbmdlcy4gSXQgYWxzbyB0b3VjaGVzIGEgZmV3IG90aGVyIGtleSBhcmVhczogYHc1MTAwX29wZW5gLCBgdzUxMDBfcHJvYmVgLCBgdzUxMDBfcmVtb3ZlYCwgYHc1MTAwX3N1c3BlbmRgLCBhbmQgYHc1MTAwX3Jlc3VtZWAuIFNvLCBpdCYjMzk7cyBtb2RpZnlpbmcgdGhlIGNvcmUgbGlmZWN5Y2xlIGFuZCBwb3dlciBtYW5hZ2VtZW50IGZ1bmN0aW9ucyB0byBpbmNvcnBvcmF0ZSB0aGlzIG5ldyBsaW5rIGRldGVjdGlvbi4KCk5vdywgSSBuZWVkIHRvIHRoaW5rIGFib3V0IGhvdyB0aGlzIGludGVyYWN0cyB3aXRoIHZpcnR1YWxpemF0aW9uLiBUaGlzIGRyaXZlciBpcyBmb3IgYSBXaXpuZXQgVzUxMDAsIFc1MjAwLCBvciBXNTUwMCBNQUMvUEhZLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoZXNlIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcnMsIGVzcGVjaWFsbHkgdGhvc2UgdGhhdCBkZWFsIHdpdGggU1BJIG9yIG1lbW9yeS1tYXBwZWQgaW50ZXJmYWNlcywgYXJlIGdlbmVyYWxseSAqbm90KiBlbXVsYXRlZCBieSBRRU1VIHVubGVzcyB0aGVyZSYjMzk7cyBhbiBleHBsaWNpdCBtb2RlbC4gSSB3b25kZXIsIGRvZXMgUUVNVSBldmVuIGhhdmUgYSBXaXpuZXQgVzUxMDAgbW9kZWw/IEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoYXQuCgpUbyBmaWd1cmUgdGhpcyBvdXQgcXVpY2tseSwgSSYjMzk7bSBnb2luZyB0byBzZWFyY2ggdGhlIGtlcm5lbCBzb3VyY2UgZm9yICYjMzQ7dzUxMDAmIzM0OyB0byBzZWUgaWYgaXQmIzM5O3MgdHJlYXRlZCBhcyBhIHBsYXRmb3JtIG9yIFNQSSBkZXZpY2UuIFRoYXQmIzM5O2xsIHRlbGwgbWUgaWYgaXQmIzM5O3MgaW50ZWdyYXRlZCBpbiBhIHdheSB0aGF0IFFFTVUgbWlnaHQgdG91Y2guIFdhaXQsIHJpZ2h0Li4uIFdpem5ldCBkZXZpY2VzIGFyZSAqdHlwaWNhbGx5KiBTUEkgb3IgbWVtb3J5LW1hcHBlZC4gSSBjYW4gY2hlY2sgdGhlIGRyaXZlciBpdHNlbGYsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuY2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNsZWFyZXN0IHBpY3R1cmUuIExldCBtZSBkaXZlIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE1OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3c1MTAwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNjQ4IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvS2NvbmZpZz0xOT1jb25maWcgV0laTkVUX1c1MTAwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L0tjb25maWctMjktXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC9LY29uZmlnOjMwOlx0ICB3aWxsIGJlIGNhbGxlZCB3NTEwMC5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC9LY29uZmlnLTMxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX1dJWk5FVF9XNTEwMCkgJiM0Mzs9IHc1MTAwLm8gdzUxMDAtc3BpLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtMjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6MjE6I2luY2x1ZGUgXCYjMzQ7dzUxMDAuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTIyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy0yNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzoyNjpzdGF0aWMgaW50IHc1MTAwX3NwaV9yZWFkKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgYWRkcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy0yNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTM3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjM4OnN0YXRpYyBpbnQgdzUxMDBfc3BpX3dyaXRlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgYWRkciwgdTggZGF0YSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy0zOS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ2OnN0YXRpYyBpbnQgdzUxMDBfc3BpX3JlYWQxNihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTMyIGFkZHIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy01MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo1MTpcdHJldCA9IHc1MTAwX3NwaV9yZWFkKG5kZXYsIGFkZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTUyLVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNTQtXHRkYXRhID0gcmV0IFx1MDAzY1x1MDAzYyA4O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjU1Olx0cmV0ID0gdzUxMDBfc3BpX3JlYWQobmRldiwgYWRkciAmIzQzOyAxKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy01Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NjA6c3RhdGljIGludCB3NTEwMF9zcGlfd3JpdGUxNihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTMyIGFkZHIsIHUxNiBkYXRhKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTYxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NjQ6XHRyZXQgPSB3NTEwMF9zcGlfd3JpdGUobmRldiwgYWRkciwgZGF0YSBcdTAwM2VcdTAwM2UgOCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNjUtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy02Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo2ODpcdHJldHVybiB3NTEwMF9zcGlfd3JpdGUobmRldiwgYWRkciAmIzQzOyAxLCBkYXRhIFx1MDAyNiAweGZmKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy02OS19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NzE6c3RhdGljIGludCB3NTEwMF9zcGlfcmVhZGJ1bGsoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHUzMiBhZGRyLCB1OCAqYnVmLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTcyLVx0XHRcdCAgICAgIGludCBsZW4pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTc2LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbGVuOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjc3Olx0XHRpbnQgcmV0ID0gdzUxMDBfc3BpX3JlYWQobmRldiwgYWRkciAmIzQzOyBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy03OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtODYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6ODc6c3RhdGljIGludCB3NTEwMF9zcGlfd3JpdGVidWxrKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgYWRkciwgY29uc3QgdTggKmJ1ZixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy04OC1cdFx0XHQgICAgICAgaW50IGxlbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtOTItXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBsZW47IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6OTM6XHRcdGludCByZXQgPSB3NTEwMF9zcGlfd3JpdGUobmRldiwgYWRkciAmIzQzOyBpLCBidWZbaV0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTk0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy0xMDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6MTAyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgdzUxMDBfb3BzIHc1MTAwX3NwaV9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtMTAzLVx0Lm1heV9zbGVlcCA9IHRydWUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtMTA0LVx0LmNoaXBfaWQgPSBXNTEwMCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzoxMDU6XHQucmVhZCA9IHc1MTAwX3NwaV9yZWFkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjEwNjpcdC53cml0ZSA9IHc1MTAwX3NwaV93cml0ZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzoxMDc6XHQucmVhZDE2ID0gdzUxMDBfc3BpX3JlYWQxNixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzoxMDg6XHQud3JpdGUxNiA9IHc1MTAwX3NwaV93cml0ZTE2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjEwOTpcdC5yZWFkYnVsayA9IHc1MTAwX3NwaV9yZWFkYnVsayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzoxMTA6XHQud3JpdGVidWxrID0gdzUxMDBfc3BpX3dyaXRlYnVsayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy0xMTEtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM9MTI1PXN0YXRpYyBzdHJ1Y3QgdzUyMDBfc3BpX3ByaXYgKnc1MjAwX3NwaV9wcml2KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTEyNi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6MTI3Olx0cmV0dXJuIHc1MTAwX29wc19wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTEyOC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jPTIxMz1zdGF0aWMgaW50IHc1MjAwX3NwaV93cml0ZWJ1bGsoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHUzMiBhZGRyLCBjb25zdCB1OCAqYnVmLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy0yNDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6MjQzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgdzUxMDBfb3BzIHc1MjAwX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy0yNDQtXHQubWF5X3NsZWVwID0gdHJ1ZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM9MjcwPXN0YXRpYyBzdHJ1Y3QgdzU1MDBfc3BpX3ByaXYgKnc1NTAwX3NwaV9wcml2KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTI3MS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6MjcyOlx0cmV0dXJuIHc1MTAwX29wc19wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTI3My19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jPTM3Mj1zdGF0aWMgaW50IHc1NTAwX3NwaV93cml0ZWJ1bGsoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHUzMiBhZGRyLCBjb25zdCB1OCAqYnVmLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00MDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDAxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgdzUxMDBfb3BzIHc1NTAwX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00MDItXHQubWF5X3NsZWVwID0gdHJ1ZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQxMzpzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB3NTEwMF9vZl9tYXRjaFtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQxNDpcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDt3aXpuZXQsdzUxMDBcJiMzNDssIC5kYXRhID0gKGNvbnN0IHZvaWQqKVc1MTAwLCB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQxNS1cdHsgLmNvbXBhdGlibGUgPSBcJiMzNDt3aXpuZXQsdzUyMDBcJiMzNDssIC5kYXRhID0gKGNvbnN0IHZvaWQqKVc1MjAwLCB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00MTgtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0MTk6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgdzUxMDBfb2ZfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQyMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0MjE6c3RhdGljIGludCB3NTEwMF9zcGlfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00MjIte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQyMzpcdGNvbnN0IHN0cnVjdCB3NTEwMF9vcHMgKm9wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00MjQtXHRrZXJuZWxfdWxvbmdfdCBkcml2ZXJfZGF0YTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDM3LVx0Y2FzZSBXNTEwMDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0Mzg6XHRcdG9wcyA9IFx1MDAyNnc1MTAwX3NwaV9vcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDM5LVx0XHRwcml2X3NpemUgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDUzOlx0cmV0dXJuIHc1MTAwX3Byb2JlKFx1MDAyNnNwaS1cdTAwM2VkZXYsIG9wcywgcHJpdl9zaXplLCBtYWMsIHNwaS1cdTAwM2VpcnEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQ1NC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDU1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ1NjpzdGF0aWMgdm9pZCB3NTEwMF9zcGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDU3LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0NTg6XHR3NTEwMF9yZW1vdmUoXHUwMDI2c3BpLVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDU5LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDYxOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3BpX2RldmljZV9pZCB3NTEwMF9zcGlfaWRzW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDYyOlx0eyBcJiMzNDt3NTEwMFwmIzM0OywgVzUxMDAgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NjMtXHR7IFwmIzM0O3c1MjAwXCYjMzQ7LCBXNTIwMCB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NjYtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0Njc6TU9EVUxFX0RFVklDRV9UQUJMRShzcGksIHc1MTAwX3NwaV9pZHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQ2OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0Njk6c3RhdGljIHN0cnVjdCBzcGlfZHJpdmVyIHc1MTAwX3NwaV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDcwLVx0LmRyaXZlclx0XHQ9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0NzE6XHRcdC5uYW1lXHQ9IFwmIzM0O3c1MTAwXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ3MjpcdFx0LnBtXHQ9IFx1MDAyNnc1MTAwX3BtX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0NzM6XHRcdC5vZl9tYXRjaF90YWJsZSA9IHc1MTAwX29mX21hdGNoLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQ3NC1cdH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDc1Olx0LnByb2JlXHRcdD0gdzUxMDBfc3BpX3Byb2JlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ3NjpcdC5yZW1vdmVcdFx0PSB3NTEwMF9zcGlfcmVtb3ZlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ3NzpcdC5pZF90YWJsZVx0PSB3NTEwMF9zcGlfaWRzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQ3OC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ3OTptb2R1bGVfc3BpX2RyaXZlcih3NTEwMF9zcGlfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00ODAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoyNzojaW5jbHVkZSBcJiMzNDt3NTEwMC5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjI5OiNkZWZpbmUgRFJWX05BTUVcdFwmIzM0O3c1MTAwXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMC0jZGVmaW5lIERSVl9WRVJTSU9OXHRcJiMzNDsyMDEyLTA0LTA0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM9MzU9TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0xNDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoxNDU6c3RydWN0IHc1MTAwX3ByaXYge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MTQ2Olx0Y29uc3Qgc3RydWN0IHc1MTAwX29wcyAqb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMTQ3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE3My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjE3NDpzdGF0aWMgaW50IHc1MTAwX3JlYWQoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYsIHUzMiBhZGRyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMTc1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0xNzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoxNzk6c3RhdGljIGludCB3NTEwMF93cml0ZShzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiwgdTMyIGFkZHIsIHU4IGRhdGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0xODAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE4My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjE4NDpzdGF0aWMgaW50IHc1MTAwX3JlYWQxNihzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiwgdTMyIGFkZHIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0xODUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE4OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjE4OTpzdGF0aWMgaW50IHc1MTAwX3dyaXRlMTYoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYsIHUzMiBhZGRyLCB1MTYgZGF0YSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE5MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMTkzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MTk0OnN0YXRpYyBpbnQgdzUxMDBfcmVhZGJ1bGsoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYsIHUzMiBhZGRyLCB1OCAqYnVmLCBpbnQgbGVuKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMTk1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0xOTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoxOTk6c3RhdGljIGludCB3NTEwMF93cml0ZWJ1bGsoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYsIHUzMiBhZGRyLCBjb25zdCB1OCAqYnVmLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjAwLVx0XHRcdCAgIGludCBsZW4pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjA0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjA1OnN0YXRpYyBpbnQgdzUxMDBfcmVhZGJ1ZihzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiwgdTE2IG9mZnNldCwgdTggKmJ1ZiwgaW50IGxlbilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTIwNi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjIwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjIxOlx0cmV0ID0gdzUxMDBfcmVhZGJ1bGsocHJpdiwgYWRkciwgYnVmLCBsZW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjIyLVx0aWYgKHJldCB8fCAhcmVtYWluKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTIyNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjIyNTpcdHJldHVybiB3NTEwMF9yZWFkYnVsayhwcml2LCBtZW1fc3RhcnQsIGJ1ZiAmIzQzOyBsZW4sIHJlbWFpbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yMjYtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjI3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjI4OnN0YXRpYyBpbnQgdzUxMDBfd3JpdGVidWYoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYsIHUxNiBvZmZzZXQsIGNvbnN0IHU4ICpidWYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yMjktXHRcdFx0ICBpbnQgbGVuKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI0NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjI0NTpcdHJldCA9IHc1MTAwX3dyaXRlYnVsayhwcml2LCBhZGRyLCBidWYsIGxlbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNDYtXHRpZiAocmV0IHx8ICFyZW1haW4pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjQ4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjQ5Olx0cmV0dXJuIHc1MTAwX3dyaXRlYnVsayhwcml2LCBtZW1fc3RhcnQsIGJ1ZiAmIzQzOyBsZW4sIHJlbWFpbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNTAtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjUxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjUyOnN0YXRpYyBpbnQgdzUxMDBfcmVzZXQoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNTMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI1Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjI1NzpcdHc1MTAwX3dyaXRlKHByaXYsIFc1MTAwX01SLCBNUl9SU1QpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjU4LVx0bWRlbGF5KDUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjU5Olx0dzUxMDBfd3JpdGUocHJpdiwgVzUxMDBfTVIsIE1SX1BCKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI2MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoyNjQ6c3RhdGljIGludCB3NTEwMF9jb21tYW5kKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2LCB1MTYgY21kKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjY1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoyNjg6XHR3NTEwMF93cml0ZShwcml2LCBXNTEwMF9TMF9DUihwcml2KSwgY21kKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI2OS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoyNzI6XHR3aGlsZSAodzUxMDBfcmVhZChwcml2LCBXNTEwMF9TMF9DUihwcml2KSkgIT0gMCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjczLVx0XHRpZiAodGltZV9hZnRlcihqaWZmaWVzLCB0aW1lb3V0KSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yODAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoyODE6c3RhdGljIHZvaWQgdzUxMDBfd3JpdGVfbWFjYWRkcihzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI4Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjg0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mjg1Olx0dzUxMDBfd3JpdGVidWxrKHByaXYsIFc1MTAwX1NIQVIsIG5kZXYtXHUwMDNlZGV2X2FkZHIsIEVUSF9BTEVOKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI4Ni19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoyODg6c3RhdGljIHZvaWQgdzUxMDBfc29ja2V0X2ludHJfbWFzayhzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiwgdTggbWFzaylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI4OS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjk2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mjk3Olx0dzUxMDBfd3JpdGUocHJpdiwgaW1yLCBtYXNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI5OC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yOTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozMDA6c3RhdGljIHZvaWQgdzUxMDBfZW5hYmxlX2ludHIoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMDEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzAyOlx0dzUxMDBfc29ja2V0X2ludHJfbWFzayhwcml2LCBJUl9TMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMDMtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzA0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzA1OnN0YXRpYyB2b2lkIHc1MTAwX2Rpc2FibGVfaW50cihzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMwNi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozMDc6XHR3NTEwMF9zb2NrZXRfaW50cl9tYXNrKHByaXYsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzA4LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMwOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjMxMDpzdGF0aWMgdm9pZCB3NTEwMF9tZW1vcnlfY29uZmlndXJlKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzExLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMTQtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjMxNTpcdHc1MTAwX3dyaXRlKHByaXYsIFc1MTAwX1JNU1IsIDB4MDMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzE2Olx0dzUxMDBfd3JpdGUocHJpdiwgVzUxMDBfVE1TUiwgMHgwMyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMTctfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzE5OnN0YXRpYyB2b2lkIHc1MjAwX21lbW9yeV9jb25maWd1cmUoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMjAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMyNS1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzI2Olx0dzUxMDBfd3JpdGUocHJpdiwgVzUyMDBfU25fUlhNRU1fU0laRSgwKSwgMHgxMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozMjc6XHR3NTEwMF93cml0ZShwcml2LCBXNTIwMF9Tbl9UWE1FTV9TSVpFKDApLCAweDEwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMyOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMyOS1cdGZvciAoaSA9IDE7IGkgXHUwMDNjIDg7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozMzA6XHRcdHc1MTAwX3dyaXRlKHByaXYsIFc1MjAwX1NuX1JYTUVNX1NJWkUoaSksIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzMxOlx0XHR3NTEwMF93cml0ZShwcml2LCBXNTIwMF9Tbl9UWE1FTV9TSVpFKGkpLCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMzMi1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozMzU6c3RhdGljIHZvaWQgdzU1MDBfbWVtb3J5X2NvbmZpZ3VyZShzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMzNi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzQxLVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozNDI6XHR3NTEwMF93cml0ZShwcml2LCBXNTUwMF9Tbl9SWE1FTV9TSVpFKDApLCAweDEwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM0MzpcdHc1MTAwX3dyaXRlKHByaXYsIFc1NTAwX1NuX1RYTUVNX1NJWkUoMCksIDB4MTApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzQ1LVx0Zm9yIChpID0gMTsgaSBcdTAwM2MgODsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM0NjpcdFx0dzUxMDBfd3JpdGUocHJpdiwgVzU1MDBfU25fUlhNRU1fU0laRShpKSwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozNDc6XHRcdHc1MTAwX3dyaXRlKHByaXYsIFc1NTAwX1NuX1RYTUVNX1NJWkUoaSksIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzQ4LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM1MTpzdGF0aWMgaW50IHc1MTAwX2h3X3Jlc2V0KHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzUyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zNTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozNTU6XHR3NTEwMF9yZXNldChwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM1Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM1NzpcdHc1MTAwX2Rpc2FibGVfaW50cihwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM1ODpcdHc1MTAwX3dyaXRlX21hY2FkZHIocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zNTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzYxLVx0Y2FzZSBXNTEwMDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM2MjpcdFx0dzUxMDBfbWVtb3J5X2NvbmZpZ3VyZShwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM2My1cdFx0cnRyID0gVzUxMDBfUlRSO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM3Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM3NzpcdGlmICh3NTEwMF9yZWFkMTYocHJpdiwgcnRyKSAhPSBSVFJfREVGQVVMVClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM3OC1cdFx0cmV0dXJuIC1FTk9ERVY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzgyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzgzOnN0YXRpYyB2b2lkIHc1MTAwX2h3X3N0YXJ0KHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzg0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zOTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozOTQ6XHR3NTEwMF93cml0ZShwcml2LCBXNTEwMF9TMF9NUihwcml2KSwgbW9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozOTU6XHR3NTEwMF9jb21tYW5kKHByaXYsIFMwX0NSX09QRU4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mzk2Olx0dzUxMDBfZW5hYmxlX2ludHIocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zOTctfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzk4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mzk5OnN0YXRpYyB2b2lkIHc1MTAwX2h3X2Nsb3NlKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDAwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQwMTpcdHc1MTAwX2Rpc2FibGVfaW50cihwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQwMjpcdHc1MTAwX2NvbW1hbmQocHJpdiwgUzBfQ1JfQ0xPU0UpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDAzLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00MTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0MTE6c3RhdGljIHZvaWQgdzUxMDBfZ2V0X2RydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00MTItXHRcdFx0ICAgICAgc3RydWN0IGV0aHRvb2xfZHJ2aW5mbyAqaW5mbylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00MTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0MjA6c3RhdGljIHUzMiB3NTEwMF9nZXRfbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQyMS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0MjI6XHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDIzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQzMDpzdGF0aWMgdTMyIHc1MTAwX2dldF9tc2dsZXZlbChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQzMS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0MzI6XHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDMzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQzNzpzdGF0aWMgdm9pZCB3NTEwMF9zZXRfbXNnbGV2ZWwoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHUzMiB2YWx1ZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQzOC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0Mzk6XHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDQwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ0My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ0NDpzdGF0aWMgaW50IHc1MTAwX2dldF9yZWdzX2xlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ0NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDQ4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDQ5OnN0YXRpYyB2b2lkIHc1MTAwX2dldF9yZWdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDUwLVx0XHRcdCAgIHN0cnVjdCBldGh0b29sX3JlZ3MgKnJlZ3MsIHZvaWQgKmJ1ZilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ1MS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0NTI6XHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDUzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDU0LVx0cmVncy1cdTAwM2V2ZXJzaW9uID0gMTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ1NTpcdHc1MTAwX3JlYWRidWxrKHByaXYsIFc1MTAwX0NPTU1PTl9SRUdTLCBidWYsIFc1MTAwX0NPTU1PTl9SRUdTX0xFTik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NTYtXHRidWYgJiM0Mzs9IFc1MTAwX0NPTU1PTl9SRUdTX0xFTjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ1NzpcdHc1MTAwX3JlYWRidWxrKHByaXYsIFMwX1JFR1MocHJpdiksIGJ1ZiwgVzUxMDBfUzBfUkVHU19MRU4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDU4LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ1OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ2MDpzdGF0aWMgdm9pZCB3NTEwMF9yZXN0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDYxLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ2MjpcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NjQtXHRuZXRpZl9zdG9wX3F1ZXVlKG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDY1Olx0dzUxMDBfaHdfcmVzZXQocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0NjY6XHR3NTEwMF9od19zdGFydChwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ2Ny1cdG5kZXYtXHUwMDNlc3RhdHMudHhfZXJyb3JzJiM0MzsmIzQzOztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0NzI6c3RhdGljIHZvaWQgdzUxMDBfcmVzdGFydF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ3My17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0NzQ6XHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdzUxMDBfcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ3NS1cdFx0XHRcdFx0ICAgICAgIHJlc3RhcnRfd29yayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0Nzc6XHR3NTEwMF9yZXN0YXJ0KHByaXYtXHUwMDNlbmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NzgtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDc5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDgwOnN0YXRpYyB2b2lkIHc1MTAwX3R4X3RpbWVvdXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHVuc2lnbmVkIGludCB0eHF1ZXVlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDgxLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ4MjpcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00ODMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDg2LVx0ZWxzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDg3Olx0XHR3NTEwMF9yZXN0YXJ0KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDg4LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ4OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ5MDpzdGF0aWMgdm9pZCB3NTEwMF90eF9za2Ioc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00OTEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDkyOlx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ5My1cdHUxNiBvZmZzZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00OTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0OTU6XHRvZmZzZXQgPSB3NTEwMF9yZWFkMTYocHJpdiwgVzUxMDBfUzBfVFhfV1IocHJpdikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDk2Olx0dzUxMDBfd3JpdGVidWYocHJpdiwgb2Zmc2V0LCBza2ItXHUwMDNlZGF0YSwgc2tiLVx1MDAzZWxlbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0OTc6XHR3NTEwMF93cml0ZTE2KHByaXYsIFc1MTAwX1MwX1RYX1dSKHByaXYpLCBvZmZzZXQgJiM0Mzsgc2tiLVx1MDAzZWxlbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00OTgtXHRuZGV2LVx1MDAzZXN0YXRzLnR4X2J5dGVzICYjNDM7PSBza2ItXHUwMDNlbGVuO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTUwMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUwMjpcdHc1MTAwX2NvbW1hbmQocHJpdiwgUzBfQ1JfU0VORCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MDMtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTA0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTA1OnN0YXRpYyB2b2lkIHc1MTAwX3R4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTA2LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUwNzpcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB3NTEwMF9wcml2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTA4LVx0XHRcdFx0XHQgICAgICAgdHhfd29yayk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTE0LVx0XHRyZXR1cm47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1MTU6XHR3NTEwMF90eF9za2IocHJpdi1cdTAwM2VuZGV2LCBza2IpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTE2LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTUxNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUxODpzdGF0aWMgbmV0ZGV2X3R4X3QgdzUxMDBfc3RhcnRfdHgoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MTkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTIwOlx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTUyMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MjgtXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTI5Olx0XHR3NTEwMF90eF9za2IobmRldiwgc2tiKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTUzMC1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1MzU6c3RhdGljIHN0cnVjdCBza19idWZmICp3NTEwMF9yeF9za2Ioc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MzYte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTM3Olx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTUzOC1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTQxLVx0dTggaGVhZGVyWzJdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTQyOlx0dTE2IHJ4X2J1Zl9sZW4gPSB3NTEwMF9yZWFkMTYocHJpdiwgVzUxMDBfUzBfUlhfUlNSKHByaXYpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU0My1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1NDc6XHRvZmZzZXQgPSB3NTEwMF9yZWFkMTYocHJpdiwgVzUxMDBfUzBfUlhfUkQocHJpdikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTQ4Olx0dzUxMDBfcmVhZGJ1Zihwcml2LCBvZmZzZXQsIGhlYWRlciwgMik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NDktXHRyeF9sZW4gPSBnZXRfdW5hbGlnbmVkX2JlMTYoaGVhZGVyKSAtIDI7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTUyLVx0aWYgKHVubGlrZWx5KCFza2IpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1NTM6XHRcdHc1MTAwX3dyaXRlMTYocHJpdiwgVzUxMDBfUzBfUlhfUkQocHJpdiksIG9mZnNldCAmIzQzOyByeF9idWZfbGVuKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjU1NDpcdFx0dzUxMDBfY29tbWFuZChwcml2LCBTMF9DUl9SRUNWKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU1NS1cdFx0bmRldi1cdTAwM2VzdGF0cy5yeF9kcm9wcGVkJiM0MzsmIzQzOztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NTktXHRza2JfcHV0KHNrYiwgcnhfbGVuKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjU2MDpcdHc1MTAwX3JlYWRidWYocHJpdiwgb2Zmc2V0ICYjNDM7IDIsIHNrYi1cdTAwM2VkYXRhLCByeF9sZW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTYxOlx0dzUxMDBfd3JpdGUxNihwcml2LCBXNTEwMF9TMF9SWF9SRChwcml2KSwgb2Zmc2V0ICYjNDM7IDIgJiM0MzsgcnhfbGVuKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjU2MjpcdHc1MTAwX2NvbW1hbmQocHJpdiwgUzBfQ1JfUkVDVik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NjMtXHRza2ItXHUwMDNlcHJvdG9jb2wgPSBldGhfdHlwZV90cmFucyhza2IsIG5kZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU3MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjU3MTpzdGF0aWMgdm9pZCB3NTEwMF9yeF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU3Mi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1NzM6XHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdzUxMDBfcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU3NC1cdFx0XHRcdFx0ICAgICAgIHJ4X3dvcmspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU3Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjU3NzpcdHdoaWxlICgoc2tiID0gdzUxMDBfcnhfc2tiKHByaXYtXHUwMDNlbmRldikpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTc4LVx0XHRuZXRpZl9yeChza2IpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTc5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTgwOlx0dzUxMDBfZW5hYmxlX2ludHIocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01ODEtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTgyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTgzOnN0YXRpYyBpbnQgdzUxMDBfbmFwaV9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU4NC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1ODU6XHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IGNvbnRhaW5lcl9vZihuYXBpLCBzdHJ1Y3QgdzUxMDBfcHJpdiwgbmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01ODYtXHRpbnQgcnhfY291bnQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTg4LVx0Zm9yIChyeF9jb3VudCA9IDA7IHJ4X2NvdW50IFx1MDAzYyBidWRnZXQ7IHJ4X2NvdW50JiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTg5Olx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gdzUxMDBfcnhfc2tiKHByaXYtXHUwMDNlbmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01OTAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTk4LVx0XHRuYXBpX2NvbXBsZXRlX2RvbmUobmFwaSwgcnhfY291bnQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTk5Olx0XHR3NTEwMF9lbmFibGVfaW50cihwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTYwMC1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo2MDU6c3RhdGljIGlycXJldHVybl90IHc1MTAwX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpuZGV2X2luc3RhbmNlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjA2LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTYwNy1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gbmRldl9pbnN0YW5jZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjYwODpcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo2MTA6XHRpbnQgaXIgPSB3NTEwMF9yZWFkKHByaXYsIFc1MTAwX1MwX0lSKHByaXYpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTYxMS1cdGlmICghaXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MTItXHRcdHJldHVybiBJUlFfTk9ORTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjYxMzpcdHc1MTAwX3dyaXRlKHByaXYsIFc1MTAwX1MwX0lSKHByaXYpLCBpcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MTQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjIwLVx0aWYgKGlyIFx1MDAyNiBTMF9JUl9SRUNWKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo2MjE6XHRcdHc1MTAwX2Rpc2FibGVfaW50cihwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTYyMi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo2MzI6c3RhdGljIGlycXJldHVybl90IHc1MTAwX2RldGVjdF9saW5rKGludCBpcnEsIHZvaWQgKm5kZXZfaW5zdGFuY2UpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MzMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjM0LVx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSBuZGV2X2luc3RhbmNlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NjM1Olx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTYzNi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02NDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo2NTA6c3RhdGljIHZvaWQgdzUxMDBfc2V0cnhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02NTEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NjUyOlx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHc1MTAwX3ByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02NTMtXHRcdFx0XHRcdCAgICAgICBzZXRyeF93b3JrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTY1NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjY1NTpcdHc1MTAwX2h3X3N0YXJ0KHByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjU2LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTY1Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjY1ODpzdGF0aWMgdm9pZCB3NTEwMF9zZXRfcnhfbW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTY1OS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo2NjA6XHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjYxLVx0Ym9vbCBzZXRfcHJvbWlzYyA9IChuZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfUFJPTUlTQykgIT0gMDtcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNTo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTYzNgoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDQwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIHRoZSBXNTEwMCBEcml2ZXIqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jYCBkcml2ZXIsIHNwZWNpZmljYWxseSwgYW5kIHdoZXRoZXIgaXQmIzM5O3Mgd29ydGggZnV6emluZyBpbiB0aGUgY29udGV4dCBvZiBvdXIgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIEl0JiMzOTtzIGVpdGhlciBhbiBTUEkgZGV2aWNlLCBhcyBwZXIgYHc1MTAwLXNwaS5jYCwgb3IgYSBwbGF0Zm9ybSBkZXZpY2UuIFRoZSBjcml0aWNhbCBxdWVzdGlvbjogY2FuIFN5emthbGxlciBpbnN0YW50aWF0ZSBpdCBkaXJlY3RseT8KClN5emthbGxlciBjYW4gd29yayB3aXRoIFNQSSBkZXZpY2VzLCByaWdodD8gQnV0IGl0IG5lZWRzIGEgbWVjaGFuaXNtIOKAkyBlaXRoZXIgaW5qZWN0aW9uLCBwc2V1ZG8tZGV2aWNlcywgb3IgZGV2aWNlIHRyZWUgb3ZlcmxheXMuIEFuZCB0aGUgdXN1YWwgUUVNVSBzZXR1cCBkb2VzbiYjMzk7dCBqdXN0ICpoYXZlKiBTUEkgZGV2aWNlcyBseWluZyBhcm91bmQgdW5sZXNzIHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBEb2VzIFFFTVUgZXZlbiBoYXZlIGEgdmlydHVhbCBTUEkgY29udHJvbGxlciBieSBkZWZhdWx0PyBZZXMsIGJ1dCB0eXBpY2FsbHkgd2l0aG91dCBhIFc1MTAwIGF0dGFjaGVkLiBTbywgU3l6a2FsbGVyICpjb3VsZCogdGVzdCBpdCBpZiB0aGUgcHJvYmUgZ2V0cyB0cmlnZ2VyZWQuCgpJcyBgdzUxMDBfcHJvYmVgIHJlYWNoYWJsZT8gTGV0JiMzOTtzIHRyYWNlIGl0LiBJdCYjMzk7cyBjYWxsZWQgZnJvbSBlaXRoZXIgYHc1MTAwX3NwaV9wcm9iZWAgb3IgYHc1MTAwX21taW9fcHJvYmVgLiBDYW4gU3l6a2FsbGVyIGRpcmVjdGx5IHRyaWdnZXIgYHc1MTAwX3Byb2JlYD8gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyBubywgYmVjYXVzZSB3aGlsZSBTeXprYWxsZXIgaGFzIGBzeXpfZ2VuZXRsaW5rX2dldF9mYW1pbHlgIGFuZCBzbyBvbiwgaXQgdXN1YWxseSBzdHJ1Z2dsZXMgd2l0aCBwbGF0Zm9ybS9TUEkgZGV2aWNlcyB1bmxlc3MgdGhlcmUmIzM5O3MgYSBzcGVjaWZpYyBTeXprYWxsZXIgZGVzY3JpcHRpb24sIG9yIGlmIGl0JiMzOTtzIGEgUENJIG9yIFVTQiBkZXZpY2UsIGJvdGggb2Ygd2hpY2ggY2FuIGJlIGVtdWxhdGVkLgoKTm93LCB0aGUgcHJvbXB0JiMzOTtzIGluc3RydWN0aW9ucyBhcmUga2V5LiBJdCBzdGF0ZXMgYSAmIzM0O1dvcnRoRnV6emluZz1mYWxzZSYjMzQ7IGlmIHRoZSBwYXRjaCBjb25jZXJucyBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIHNwZWNpZmljYWxseSBpZiBpdCYjMzk7cyBzb2Z0d2FyZS1lbXVsYXRlZCwgb3IgZXZlbiBtb3JlLCBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycy4gVGhpbmdzIHRoYXQgbmVlZCBwaHlzaWNhbCBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KClNvLCB0aGUgY3J1eCBvZiB0aGUgbWF0dGVyOiAqaXMqIHRoZSBXNTEwMCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VPyBUaGlzIGlzIHRoZSBjcml0aWNhbCBxdWVzdGlvbi4gSSBuZWVkIHRvIHZlcmlmeSB3aGV0aGVyIHRoZSBXNTEwMCBpcyBwcmVzZW50IGluIHRoZSBzdGFuZGFyZCBRRU1VIGNvbmZpZ3VyYXRpb24uIFRoYXQmIzM5O3MgdGhlIGZpcnN0IHRoaW5nIHRvIGNoZWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE1OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dzUxMDAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDt0b29scy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE1OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNTY5CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIHN1bW1hcml6ZWQgYXMgcmVxdWVzdGVkOgoKKipDaGVja2luZyBTeXprYWxsZXIgZm9yIFc1MTAwIEluZm9ybWF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHN5emthbGxlciBjb3ZlcmFnZSwgaWYgYW55LCBmb3IgdGhlIFc1MTAwLiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIHNlZSBpZiB0aGVyZSBhcmUgZXhpc3RpbmcgZGVzY3JpcHRpb25zLCBkZWZpbml0aW9ucywgb3IgZXZlbiBqdXN0IG1lbnRpb25zIG9mIHRoYXQgc3BlY2lmaWMgaGFyZHdhcmUgY29tcG9uZW50IHdpdGhpbiB0aGUgc3l6a2FsbGVyIGZyYW1ld29yay4gVGhpcyB3aWxsIGRpY3RhdGUgbXkgbmV4dCBzdGVwcy4gSWYgaXQmIzM5O3MgYWxyZWFkeSBkb2N1bWVudGVkLCBJIGNhbiBidWlsZCBvbiB0aGF0IGtub3dsZWRnZS4gSWYgbm90LCB0aGVuIEkga25vdyBJJiMzOTttIHN0YXJ0aW5nIGZyb20gc2NyYXRjaCwgd2hpY2ggd2lsbCByZXF1aXJlIGEgbXVjaCBkaWZmZXJlbnQgYXBwcm9hY2guIEVpdGhlciB3YXksIGNoZWNraW5nIHN5emthbGxlciBpcyB0aGUgaW50ZWxsaWdlbnQgaW5pdGlhbCBtb3ZlLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3Mgb3V0IHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE1OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dzUxMDAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNTo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+N208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDc5MgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDg0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFN5emthbGxlciBDb250ZXh0IGZvciBXaXpuZXQgVzUxMDAgVnVsbmVyYWJpbGl0eSoqCgpPa2F5LCBmaXJzdCB0aG91Z2h0OiBXYWl0LCB0aG9zZSBzeXprYWxsZXIgZGVzY3JpcHRpb25zIGFyZW4mIzM5O3QgYWN0dWFsbHkgKmluKiB0aGUga2VybmVsIHRyZWUsIHJpZ2h0PyBCdXQgdGhlIHByb21wdCBzdGF0ZXMgYW4gaW1wb3NzaWJpbGl0eTogcmVhY2hpbmcgY29kZSBwYXRocyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIGVtdWxhdGVkIGhhcmR3YXJlLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoZSBXaXpuZXQgVzUxMDAgaXMgYW4gZW1iZWRkZWQgRXRoZXJuZXQgY29udHJvbGxlciwgdHlwaWNhbGx5IHVzZWQgaW4gc29tZXRoaW5nIGxpa2UgYW4gQXJkdWlubywgYW5kIGl0IGNvbm5lY3RzIHZpYSBTUEkgb3IgbWVtb3J5LW1hcHBlZCBJL08uCgpDYW4gdGhpcyBjb2RlIGV2ZW4gKmJlKiByZWFjaGVkIGluIFFFTVU/IEhtbSwgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoZSBXNTEwMC4gU28sIGNhbiBzeXprYWxsZXIgZXZlbiBpbnN0YW50aWF0ZSB0aG9zZSBwbGF0Zm9ybSBvciBTUEkgZGV2aWNlcz8gTm8sIHRoYXQgYHN5el9kZXZsaW5rYCBvciBzaW1pbGFyIGRvZXNuJiMzOTt0IGRvIHRoYXQsIGRvZXMgaXQ/IEkgYmVsaWV2ZSBzeXprYWxsZXIgY2FuIGluamVjdCBkZXZpY2UgdHJlZSBvdmVybGF5cyBvciB1c2UgYHBsYXRmb3JtX2RldmljZV9yZWdpc3RlcmAsIHByb3ZpZGVkIHRoZXJlJiMzOTtzIGEgcHNldWRvLXN5c2NhbGwuIEJ1dCBnZW5lcmFsbHksIGl0IGRvZXNuJiMzOTt0LgoKSG93IGFib3V0IGEgd2F5IHRvIHRyaWdnZXIgYHc1MTAwX3Byb2JlYCBkaXJlY3RseT8gSSB3b25kZXIuLi4gdGhyb3VnaCBgc3lzZnNgPyBOYWgsIHlvdSBjYW4mIzM5O3QganVzdCAqY3JlYXRlKiBhbiBTUEkgZGV2aWNlIGZyb20gc3lzZnMgdW5sZXNzIHlvdSBoYXZlIGFuIFNQSSBjb250cm9sbGVyIHRoYXQgc3VwcG9ydHMgaXQsIGxpa2UgYHNwaWRldmAsIHJpZ2h0PyBObywgYHNwaWRldmAgaXMgZm9yIHVzZXJzcGFjZSBTUEkgYWNjZXNzLgoKV2FpdCwgaXNuJiMzOTt0IHRoZXJlIHNvbWV0aGluZyBsaWtlIGBzcGktbW9ja2A/IEkgc2hvdWxkIGNoZWNrIGlmIHRoZXJlJiMzOTtzICphbnkqIHdheSB0byBwcm9iZSBTUEkgZGV2aWNlcyB3aXRoaW4gc3l6a2FsbGVyLiBEb2VzIHN5emthbGxlciBoYXZlIHNvbWV0aGluZyBsaWtlIGBzeXpfc3BpX3NldHVwYD8gTm9wZS4KCk9rYXksIGxldCYjMzk7cyBzdGVwIGJhY2suIElmIHRoZSBwYXRjaCBpcyBhdXRob3JlZCBieSBgc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0O2AsIGl0ICptaWdodCogbWVhbiBzeXprYWxsZXIgZm91bmQgYSBjcmFzaCBvciB3YXMgdGVzdGluZyB0aGlzIHBhdGNoLCByaWdodD8gV2FpdCwgaG9sZCBvbi4gVGhlIHByb21wdCBpcyBzYXlpbmc6CgpgYGAKY29tbWl0IDcyNGM4ZjcxZjhiZTA5OTRmMTQ3Y2U1ZmEzNzllNTYyZjFlMTFiZDIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyA0IDE1OjQ1OjU0IDIwMjYgJiM0MzswMDAwCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKYGBgCgpUaGlzIGlzIGp1c3QgYSBkdW1teSBjb21taXQgbWVzc2FnZSBmcm9tIHN5emthbGxlciwgcmlnaHQ/IFRoaXMgbWVhbnMgaXQmIzM5O3MganVzdCB0ZXN0aW5nIHBhdGNoZXMgc2VudCB0byB0aGUgbWFpbGluZyBsaXN0cy4gSWYgc29tZW9uZSBzZW5kcyBhIHBhdGNoIGZvciBgdzUxMDBgLCBzeXprYWxsZXIgd2lsbCB0cnkgYW5kIHRlc3QgaXQsIG1heWJlIGp1c3QgY29tcGlsZSBpdCBhbmQgZmluZCBubyBjb3ZlcmFnZS4KClNvIGlmIGl0JiMzOTtzIGFuIFNQSS9NTUlPIGRldmljZSwgaXQgKnJlcXVpcmVzKiBoYXJkd2FyZSBvciBhIGZ1bGwgUUVNVSBlbXVsYXRpb24uIERvZXMgUUVNVSBlbXVsYXRlIFc1MTAwPyBOby4gRG9lcyBRRU1VIGVtdWxhdGUgVzU1MDA/IE5vLiBTbyBJIHNob3VsZCBjaGVjayBpZiB0aGVyZSYjMzk7cyAqYW55KiBRRU1VIGVtdWxhdGlvbiBmb3IgV2l6bmV0LgoKQ2FuJiMzOTt0IGRvIGEgZnVsbCBzb3VyY2Ugc2VhcmNoLCBidXQgSSAqa25vdyogV2l6bmV0IGlzbiYjMzk7dCBhIHN0YW5kYXJkIFFFTVUgZGV2aWNlLiBTdGFuZGFyZCBkZXZpY2VzIGFyZSB0aGluZ3MgbGlrZSBlMTAwMCwgcnRsODEzOSwgdmlydGlvLW5ldCwgbmUyaywgcGNuZXQsIHZteG5ldDMsIGV0Yy4gQWxzbywgdGhpcyBwYXRjaCBpcyBhZGRpbmcgYSBHUElPIGxpbmsgZGV0ZWN0aW9uLCBhbmQgR1BJT3MgYXJlICpoYXJkd2FyZS1zcGVjaWZpYyosIHJpZ2h0PwoKVGhlcmVmb3JlLCB0aGlzIGRyaXZlciBpcyBmb3IgYSBwaHlzaWNhbCBjaGlwIChXaXpuZXQgVzUxMDAvVzUyMDAvVzU1MDApIGNvbm5lY3RlZCB2aWEgU1BJIG9yIE1NSU8sIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0IG1lYW5zIGl0JiMzOTtzICppbXBvc3NpYmxlKiB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgdGhvdWdoLiBJcyB0aGVyZSBhbnkgc29ydCBvZiB2aXJ0dWFsIGRyaXZlciwgYW55dGhpbmcgYXQgYWxsPyBMZXQmIzM5O3MgY2hlY2sgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jYC4uLiBhaCwgYW5kIGB3NTEwMF9wcm9iZWAuIEl0JiMzOTtzIGNhbGxlZCBieSBgdzUxMDBfc3BpX3Byb2JlYCBpbiBgdzUxMDAtc3BpLmNgLiBZZXAsIGNvbmZpcm1lZC4gVGhpcyBjb25maXJtcyBpdCYjMzk7cyBub3QgcG9zc2libGUgdG8gcmVhY2ggdGhlIGNvZGUgcGF0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTU6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dzUxMDBfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYz00MjE9c3RhdGljIGludCB3NTEwMF9zcGlfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ1MzpcdHJldHVybiB3NTEwMF9wcm9iZShcdTAwMjZzcGktXHUwMDNlZGV2LCBvcHMsIHByaXZfc2l6ZSwgbWFjLCBzcGktXHUwMDNlaXJxKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NTQtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jPTc0MD1FWFBPUlRfU1lNQk9MX0dQTCh3NTEwMF9vcHNfcHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy03NDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo3NDI6aW50IHc1MTAwX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IHc1MTAwX29wcyAqb3BzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNzQzLVx0XHRpbnQgc2l6ZW9mX29wc19wcml2LCBjb25zdCB2b2lkICptYWNfYWRkciwgaW50IGlycSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy04ODktfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6ODkwOkVYUE9SVF9TWU1CT0xfR1BMKHc1MTAwX3Byb2JlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTg5MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuaD0yOT12b2lkICp3NTEwMF9vcHNfcHJpdihjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuaC0zMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5oOjMxOmludCB3NTEwMF9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCB3NTEwMF9vcHMgKm9wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5oLTMyLVx0XHRpbnQgc2l6ZW9mX29wc19wcml2LCBjb25zdCB2b2lkICptYWNfYWRkciwgaW50IGlycSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE1OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT40bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMTE2CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXMgcmVxdWVzdGVkOgoKKipEaWdnaW5nIGludG8gRnVuY3Rpb24gQ2FsbHMqKgoKQWxyaWdodCwgSSYjMzk7bSB0cnlpbmcgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoaXMgYHc1MTAwX3Byb2JlYCBmdW5jdGlvbi4gVGhlIGZpcnN0IHRoaW5nIHRoYXQgY29tZXMgdG8gbWluZCBpczogKklzIHRoZXJlIGFueXdoZXJlIGVsc2UgaW4gdGhpcyBjb2RlYmFzZSwgb3IgYW55IHJlbGF0ZWQgZmlsZXMsIHRoYXQgdGhpcyBmdW5jdGlvbiBnZXRzIGNhbGxlZD8qIEkgbmVlZCB0byBzZWUgdGhlIGJpZ2dlciBwaWN0dXJlLCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgZnVuY3Rpb24gZml0cyBpbnRvIHRoZSBvdmVyYWxsIGxvZ2ljIGFuZCB3aGF0IHRyaWdnZXJzIGl0cyBleGVjdXRpb24uIEtub3dpbmcgdGhlIGNhbGxlcnMgd2lsbCB0ZWxsIG1lIGl0cyBwdXJwb3NlLiBJIG5lZWQgYSBjb21wcmVoZW5zaXZlIG92ZXJ2aWV3IG9mIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGludGVncmF0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3c1MTAwX3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYz00MjE9c3RhdGljIGludCB3NTEwMF9zcGlfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ1MzpcdHJldHVybiB3NTEwMF9wcm9iZShcdTAwMjZzcGktXHUwMDNlZGV2LCBvcHMsIHByaXZfc2l6ZSwgbWFjLCBzcGktXHUwMDNlaXJxKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NTQtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jPTc0MD1FWFBPUlRfU1lNQk9MX0dQTCh3NTEwMF9vcHNfcHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy03NDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo3NDI6aW50IHc1MTAwX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IHc1MTAwX29wcyAqb3BzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNzQzLVx0XHRpbnQgc2l6ZW9mX29wc19wcml2LCBjb25zdCB2b2lkICptYWNfYWRkciwgaW50IGlycSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy04ODktfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6ODkwOkVYUE9SVF9TWU1CT0xfR1BMKHc1MTAwX3Byb2JlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTg5MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuaD0yOT12b2lkICp3NTEwMF9vcHNfcHJpdihjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuaC0zMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5oOjMxOmludCB3NTEwMF9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCB3NTEwMF9vcHMgKm9wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5oLTMyLVx0XHRpbnQgc2l6ZW9mX29wc19wcml2LCBjb25zdCB2b2lkICptYWNfYWRkciwgaW50IGlycSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzODQxCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqSW52ZXN0aWdhdGluZyB0aGUgVzUxMDAgRHJpdmVyIFByb2JlIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgZHJpdmVyIGNvZGUgYW5kIGl0IHNlZW1zIGB3NTEwMF9wcm9iZWAgaXMgb25seSBjYWxsZWQgYnkgYHc1MTAwX3NwaV9wcm9iZWAuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nLiBJJiMzOTttIHdvbmRlcmluZyBpZiB0aGVyZSB3YXMgZXZlciBhIGB3NTEwMC1tbWlvLmNgIGZpbGUgZm9yIG1lbW9yeS1tYXBwZWQgSS9PLiBEaWQgdGhleSBnZXQgcmlkIG9mIGl0IGNvbXBsZXRlbHksIG9yIGFtIEkganVzdCBub3Qgc2VlaW5nIGl0PyBJIGtub3cgaG93IHRoZXNlIHRoaW5ncyBnbywgc29tZXRpbWVzIGNvZGUgZ2V0cyBtb3ZlZCBvciByZWZhY3RvcmVkLiBMZXQgbWUgcXVpY2tseSBjaGVjayB0aGUgZW50aXJlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvYCBkaXJlY3RvcnkganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgSSBoYXZlbiYjMzk7dCBvdmVybG9va2VkIGFueSByZWxhdGVkIGZpbGVzLiBHb3R0YSBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O3c1MTAwLXNwaS5jJiMzNDssCiAgICAmIzM0O3c1MTAwLmMmIzM0OywKICAgICYjMzQ7dzUxMDAuaCYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MTcwCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMjE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVzUxMDAgRHJpdmVyIGluIGEgUUVNVSBFbnZpcm9ubWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgZmlsZXM6IGB3NTEwMC1zcGkuY2AsIGB3NTEwMC5jYCwgYW5kIGB3NTEwMC5oYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIGl0JiMzOTtzIGNsZWFyIHRoaXMgaXMgYW4gU1BJLWJhc2VkIGRldmljZS4gVGhhdCYjMzk7cyB0aGUga2V5LiBOb3csIHRoZSBzdGFuZGFyZCBRRU1VIHNldHVwIEkmIzM5O20gdXNpbmcgKmRvZXNuJiMzOTt0KiBlbXVsYXRlIFNQSSBkZXZpY2VzIG91dC1vZi10aGUtYm94LiBUaGF0JiMzOTtzIHRoZSBpbW1lZGlhdGUgcHJvYmxlbS4KCkxldCYjMzk7cyB0aGluay4gQ2FuIEkgc29tZWhvdyBpbmplY3QgYW4gU1BJIGRldmljZSB1c2luZyBzeXprYWxsZXI/IEkga25vdyBzeXprYWxsZXIgKmNhbiogYmUgcG93ZXJmdWwsIGJ1dCBJIGRvbiYjMzk7dCByZWNhbGwgc2VlaW5nIGEgZ2VuZXJhbCBTUEkgaW5qZWN0aW9uIG1lY2hhbmlzbSB0aGF0IGxldHMgeW91IGp1c3QgcG9rZSBhbnkgU1BJIGRyaXZlci4gVW5sZXNzIHRoZXJlJiMzOTtzIGEgcHNldWRvLWRldmljZSBkZWZpbmVkIHNvbWV3aGVyZSwgb3IgaXTigJlzIHBhcnQgb2YgdGhlIGRldmljZSB0cmVlLCB0aGF0IGF2ZW51ZSBpcyBsaWtlbHkgYmxvY2tlZC4KCkV2ZW4gKmlmKiBJIGNvdWxkIHdyYW5nbGUgc3l6a2FsbGVyIHRvIG92ZXJsYXkgYSBkZXZpY2UgdHJlZSBlbnRyeSwgdGhlIGRyaXZlciBpdHNlbGYsIHRoaXMgYHc1MTAwYCBkcml2ZXIsIGlzIGdvaW5nIHRvIGJlIGNvbW11bmljYXRpbmcgd2l0aCB0aGUgaGFyZHdhcmUgdXNpbmcgdGhvc2UgbG93LWxldmVsIFNQSSByZWFkL3dyaXRlIGZ1bmN0aW9uczogYHc1MTAwX3NwaV9yZWFkYCwgYHc1MTAwX3NwaV93cml0ZWAuIElmIHRoZXJlJiMzOTtzIG5vIGFjdHVhbCBoYXJkd2FyZSBjb25uZWN0ZWQsIHRob3NlIFNQSSByZWFkcyB3aWxsIHByb2JhYmx5IGp1c3QgcmV0dXJuIGdhcmJhZ2Ug4oCTIG1heWJlIHplcm9lcywgbWF5YmUgYDB4ZmZgIOKAkyBzb21lIGRlZmF1bHQgdmFsdWUgdGhhdCBkb2VzbuKAmXQgY29ycmVzcG9uZCB0byB0aGUgZXhwZWN0ZWQgcmVzcG9uc2UuIEFuZCB0aGF04oCZcyBhIHJlZCBmbGFnLiBUaGUgZHJpdmVyJiMzOTtzIGBwcm9iZWAgZnVuY3Rpb24sIHRoYXQmIzM5O3MgdGhlIGNydWNpYWwgcG9pbnQuIFRoZSBwcm9iZSB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgZmFpbCBpZiBpdCByZWFkcyBnYXJiYWdlLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGl0IHJlYWRzIGZyb20gdGhlIGhhcmR3YXJlIGFuZCBlcnJvcnMgb3V0IGlmIGl0IGRvZXNuJiMzOTt0IG1hdGNoIHRoZSBleHBlY3RlZCB2YWx1ZXMuIExldCBtZSBjaGVjayBgdzUxMDBfcHJvYmVgIHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3NDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA3NDA6XHRFWFBPUlRfU1lNQk9MX0dQTCh3NTEwMF9vcHNfcHJpdik7XG4gNzQxOlx0XG4gNzQyOlx0aW50IHc1MTAwX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IHc1MTAwX29wcyAqb3BzLFxuIDc0MzpcdFx0XHRpbnQgc2l6ZW9mX29wc19wcml2LCBjb25zdCB2b2lkICptYWNfYWRkciwgaW50IGlycSlcbiA3NDQ6XHR7XG4gNzQ1Olx0XHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdjtcbiA3NDY6XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2O1xuIDc0NzpcdFx0aW50IGVycjtcbiA3NDg6XHRcdHNpemVfdCBhbGxvY19zaXplO1xuIDc0OTpcdFxuIDc1MDpcdFx0YWxsb2Nfc2l6ZSA9IHNpemVvZigqcHJpdik7XG4gNzUxOlx0XHRpZiAoc2l6ZW9mX29wc19wcml2KSB7XG4gNzUyOlx0XHRcdGFsbG9jX3NpemUgPSBBTElHTihhbGxvY19zaXplLCBORVRERVZfQUxJR04pO1xuIDc1MzpcdFx0XHRhbGxvY19zaXplICYjNDM7PSBzaXplb2Zfb3BzX3ByaXY7XG4gNzU0Olx0XHR9XG4gNzU1Olx0XHRhbGxvY19zaXplICYjNDM7PSBORVRERVZfQUxJR04gLSAxO1xuIDc1NjpcdFxuIDc1NzpcdFx0bmRldiA9IGFsbG9jX2V0aGVyZGV2KGFsbG9jX3NpemUpO1xuIDc1ODpcdFx0aWYgKCFuZGV2KVxuIDc1OTpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiA3NjA6XHRcdFNFVF9ORVRERVZfREVWKG5kZXYsIGRldik7XG4gNzYxOlx0XHRkZXZfc2V0X2RydmRhdGEoZGV2LCBuZGV2KTtcbiA3NjI6XHRcdHByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbiA3NjM6XHRcbiA3NjQ6XHRcdHN3aXRjaCAob3BzLVx1MDAzZWNoaXBfaWQpIHtcbiA3NjU6XHRcdGNhc2UgVzUxMDA6XG4gNzY2Olx0XHRcdHByaXYtXHUwMDNlczBfcmVncyA9IFc1MTAwX1MwX1JFR1M7XG4gNzY3Olx0XHRcdHByaXYtXHUwMDNlczBfdHhfYnVmID0gVzUxMDBfVFhfTUVNX1NUQVJUO1xuIDc2ODpcdFx0XHRwcml2LVx1MDAzZXMwX3R4X2J1Zl9zaXplID0gVzUxMDBfVFhfTUVNX1NJWkU7XG4gNzY5Olx0XHRcdHByaXYtXHUwMDNlczBfcnhfYnVmID0gVzUxMDBfUlhfTUVNX1NUQVJUO1xuIDc3MDpcdFx0XHRwcml2LVx1MDAzZXMwX3J4X2J1Zl9zaXplID0gVzUxMDBfUlhfTUVNX1NJWkU7XG4gNzcxOlx0XHRcdGJyZWFrO1xuIDc3MjpcdFx0Y2FzZSBXNTIwMDpcbiA3NzM6XHRcdFx0cHJpdi1cdTAwM2VzMF9yZWdzID0gVzUyMDBfUzBfUkVHUztcbiA3NzQ6XHRcdFx0cHJpdi1cdTAwM2VzMF90eF9idWYgPSBXNTIwMF9UWF9NRU1fU1RBUlQ7XG4gNzc1Olx0XHRcdHByaXYtXHUwMDNlczBfdHhfYnVmX3NpemUgPSBXNTIwMF9UWF9NRU1fU0laRTtcbiA3NzY6XHRcdFx0cHJpdi1cdTAwM2VzMF9yeF9idWYgPSBXNTIwMF9SWF9NRU1fU1RBUlQ7XG4gNzc3Olx0XHRcdHByaXYtXHUwMDNlczBfcnhfYnVmX3NpemUgPSBXNTIwMF9SWF9NRU1fU0laRTtcbiA3Nzg6XHRcdFx0YnJlYWs7XG4gNzc5Olx0XHRjYXNlIFc1NTAwOlxuIDc4MDpcdFx0XHRwcml2LVx1MDAzZXMwX3JlZ3MgPSBXNTUwMF9TMF9SRUdTO1xuIDc4MTpcdFx0XHRwcml2LVx1MDAzZXMwX3R4X2J1ZiA9IFc1NTAwX1RYX01FTV9TVEFSVDtcbiA3ODI6XHRcdFx0cHJpdi1cdTAwM2VzMF90eF9idWZfc2l6ZSA9IFc1NTAwX1RYX01FTV9TSVpFO1xuIDc4MzpcdFx0XHRwcml2LVx1MDAzZXMwX3J4X2J1ZiA9IFc1NTAwX1JYX01FTV9TVEFSVDtcbiA3ODQ6XHRcdFx0cHJpdi1cdTAwM2VzMF9yeF9idWZfc2l6ZSA9IFc1NTAwX1JYX01FTV9TSVpFO1xuIDc4NTpcdFx0XHRicmVhaztcbiA3ODY6XHRcdGRlZmF1bHQ6XG4gNzg3Olx0XHRcdGVyciA9IC1FSU5WQUw7XG4gNzg4Olx0XHRcdGdvdG8gZXJyX3JlZ2lzdGVyO1xuIDc4OTpcdFx0fVxuIDc5MDpcdFxuIDc5MTpcdFx0cHJpdi1cdTAwM2VuZGV2ID0gbmRldjtcbiA3OTI6XHRcdHByaXYtXHUwMDNlb3BzID0gb3BzO1xuIDc5MzpcdFx0cHJpdi1cdTAwM2VpcnEgPSBpcnE7XG4gNzk0Olx0XHRwcml2LVx1MDAzZWxpbmtfZ3BpbyA9IGdwaW9kX2dldF9vcHRpb25hbChkZXYsIFwmIzM0O2xpbmtcJiMzNDssIEdQSU9EX0lOKTtcbiA3OTU6XHRcdGlmIChJU19FUlIocHJpdi1cdTAwM2VsaW5rX2dwaW8pKSB7XG4gNzk2Olx0XHRcdGVyciA9IGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHByaXYtXHUwMDNlbGlua19ncGlvKSxcbiA3OTc6XHRcdFx0XHRcdCAgICBcJiMzNDtmYWlsZWQgdG8gZ2V0IGxpbmsgR1BJT1xcblwmIzM0Oyk7XG4gNzk4Olx0XHRcdHByaXYtXHUwMDNlbGlua19ncGlvID0gTlVMTDtcbiA3OTk6XHRcdFx0Z290byBlcnJfcmVnaXN0ZXI7XG4gODAwOlx0XHR9XG4gODAxOlx0XG4gODAyOlx0XHRuZGV2LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZ3NTEwMF9uZXRkZXZfb3BzO1xuIDgwMzpcdFx0bmRldi1cdTAwM2VldGh0b29sX29wcyA9IFx1MDAyNnc1MTAwX2V0aHRvb2xfb3BzO1xuIDgwNDpcdFx0bmV0aWZfbmFwaV9hZGRfd2VpZ2h0KG5kZXYsIFx1MDAyNnByaXYtXHUwMDNlbmFwaSwgdzUxMDBfbmFwaV9wb2xsLCAxNik7XG4gODA1Olx0XG4gODA2Olx0XHQvKiBUaGlzIGNoaXAgZG9lc24mIzM5O3Qgc3VwcG9ydCBWTEFOIHBhY2tldHMgd2l0aCBub3JtYWwgTVRVLFxuIDgwNzpcdFx0ICogc28gZGlzYWJsZSBWTEFOIGZvciB0aGlzIGRldmljZS5cbiA4MDg6XHRcdCAqL1xuIDgwOTpcdFx0bmRldi1cdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX1ZMQU5fQ0hBTExFTkdFRDtcbiA4MTA6XHRcbiA4MTE6XHRcdGVyciA9IHJlZ2lzdGVyX25ldGRldihuZGV2KTtcbiA4MTI6XHRcdGlmIChlcnIgXHUwMDNjIDApXG4gODEzOlx0XHRcdGdvdG8gZXJyX3JlZ2lzdGVyO1xuIDgxNDpcdFxuIDgxNTpcdFx0cHJpdi1cdTAwM2V4ZmVyX3dxID0gYWxsb2Nfd29ya3F1ZXVlKFwmIzM0OyVzXCYjMzQ7LCBXUV9NRU1fUkVDTEFJTSB8IFdRX1BFUkNQVSwgMCxcbiA4MTY6XHRcdFx0XHRcdFx0bmV0ZGV2X25hbWUobmRldikpO1xuIDgxNzpcdFx0aWYgKCFwcml2LVx1MDAzZXhmZXJfd3EpIHtcbiA4MTg6XHRcdFx0ZXJyID0gLUVOT01FTTtcbiA4MTk6XHRcdFx0Z290byBlcnJfd3E7XG4gODIwOlx0XHR9XG4gODIxOlx0XG4gODIyOlx0XHRJTklUX1dPUksoXHUwMDI2cHJpdi1cdTAwM2VyeF93b3JrLCB3NTEwMF9yeF93b3JrKTtcbiA4MjM6XHRcdElOSVRfV09SSyhcdTAwMjZwcml2LVx1MDAzZXR4X3dvcmssIHc1MTAwX3R4X3dvcmspO1xuIDgyNDpcdFx0SU5JVF9XT1JLKFx1MDAyNnByaXYtXHUwMDNlc2V0cnhfd29yaywgdzUxMDBfc2V0cnhfd29yayk7XG4gODI1Olx0XHRJTklUX1dPUksoXHUwMDI2cHJpdi1cdTAwM2VyZXN0YXJ0X3dvcmssIHc1MTAwX3Jlc3RhcnRfd29yayk7XG4gODI2Olx0XG4gODI3Olx0XHRpZiAobWFjX2FkZHIpXG4gODI4Olx0XHRcdGV0aF9od19hZGRyX3NldChuZGV2LCBtYWNfYWRkcik7XG4gODI5Olx0XHRlbHNlXG4gODMwOlx0XHRcdGV0aF9od19hZGRyX3JhbmRvbShuZGV2KTtcbiA4MzE6XHRcbiA4MzI6XHRcdGlmIChwcml2LVx1MDAzZW9wcy1cdTAwM2Vpbml0KSB7XG4gODMzOlx0XHRcdGVyciA9IHByaXYtXHUwMDNlb3BzLVx1MDAzZWluaXQocHJpdi1cdTAwM2VuZGV2KTtcbiA4MzQ6XHRcdFx0aWYgKGVycilcbiA4MzU6XHRcdFx0XHRnb3RvIGVycl9odztcbiA4MzY6XHRcdH1cbiA4Mzc6XHRcbiA4Mzg6XHRcdGVyciA9IHc1MTAwX2h3X3Jlc2V0KHByaXYpO1xuIDgzOTpcdFx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY1NzEKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIGB3NTEwMF9od19yZXNldGAgRnVuY3Rpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGB3NTEwMF9od19yZXNldGAgcm91dGluZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSB3aGF0IGl0JiMzOTtzIGRvaW5nLiBJcyBpdCBqdXN0IHRvZ2dsaW5nIGEgcGluPyBJcyBpdCBhIG1vcmUgZWxhYm9yYXRlIHNlcXVlbmNlIGludm9sdmluZyBkZWxheXMsIG9yIHBlcmhhcHMgaW50ZXJhY3Rpbmcgd2l0aCBhbnkgcG93ZXItb24gcmVzZXQgY2lyY3VpdHJ5PyBJJiMzOTttIGFscmVhZHkgdGhpbmtpbmcgYWJvdXQgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyDigJMgZG9lcyB0aGUgdGltaW5nIGFsaWduIGNvcnJlY3RseSB3aXRoIHRoZSBXNTEwMCYjMzk7cyBpbnRlcm5hbCBjbG9jayBhbmQgcG93ZXItdXAgY2hhcmFjdGVyaXN0aWNzPyBEb2VzIGl0IGhhbmRsZSBhbnkgcG90ZW50aWFsIHZvbHRhZ2UgdHJhbnNpZW50cyBncmFjZWZ1bGx5LCBvciBpcyB0aGVyZSBhIHJpc2sgb2YgZXhjZWVkaW5nIGFic29sdXRlIG1heGltdW0gcmF0aW5ncz8gSSB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgaW1wbGVtZW50YXRpb24gaXMgcm9idXN0LCBlc3BlY2lhbGx5IGlmIHRoaXMgcmVzZXQgaXMgb2NjdXJyaW5nIGluIGEgbm9pc3kgZW52aXJvbm1lbnQgb3Igd2l0aGluIGEgY3JpdGljYWwgc2VjdGlvbi4gSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCB0aGUgZmFpbHVyZSBtb2RlcyBhbmQgaG93IHRoaXMgZnVuY3Rpb24gYWRkcmVzc2VzIHRoZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNTEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDM1MTpcdHN0YXRpYyBpbnQgdzUxMDBfaHdfcmVzZXQoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYpXG4gMzUyOlx0e1xuIDM1MzpcdFx0dTMyIHJ0cjtcbiAzNTQ6XHRcbiAzNTU6XHRcdHc1MTAwX3Jlc2V0KHByaXYpO1xuIDM1NjpcdFxuIDM1NzpcdFx0dzUxMDBfZGlzYWJsZV9pbnRyKHByaXYpO1xuIDM1ODpcdFx0dzUxMDBfd3JpdGVfbWFjYWRkcihwcml2KTtcbiAzNTk6XHRcbiAzNjA6XHRcdHN3aXRjaCAocHJpdi1cdTAwM2VvcHMtXHUwMDNlY2hpcF9pZCkge1xuIDM2MTpcdFx0Y2FzZSBXNTEwMDpcbiAzNjI6XHRcdFx0dzUxMDBfbWVtb3J5X2NvbmZpZ3VyZShwcml2KTtcbiAzNjM6XHRcdFx0cnRyID0gVzUxMDBfUlRSO1xuIDM2NDpcdFx0XHRicmVhaztcbiAzNjU6XHRcdGNhc2UgVzUyMDA6XG4gMzY2Olx0XHRcdHc1MjAwX21lbW9yeV9jb25maWd1cmUocHJpdik7XG4gMzY3Olx0XHRcdHJ0ciA9IFc1MTAwX1JUUjtcbiAzNjg6XHRcdFx0YnJlYWs7XG4gMzY5Olx0XHRjYXNlIFc1NTAwOlxuIDM3MDpcdFx0XHR3NTUwMF9tZW1vcnlfY29uZmlndXJlKHByaXYpO1xuIDM3MTpcdFx0XHRydHIgPSBXNTUwMF9SVFI7XG4gMzcyOlx0XHRcdGJyZWFrO1xuIDM3MzpcdFx0ZGVmYXVsdDpcbiAzNzQ6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gMzc1Olx0XHR9XG4gMzc2Olx0XG4gMzc3Olx0XHRpZiAodzUxMDBfcmVhZDE2KHByaXYsIHJ0cikgIT0gUlRSX0RFRkFVTFQpXG4gMzc4Olx0XHRcdHJldHVybiAtRU5PREVWO1xuIDM3OTpcdFxuIDM4MDpcdFx0cmV0dXJuIDA7XG4gMzgxOlx0fVxuIDM4MjpcdFxuIDM4MzpcdHN0YXRpYyB2b2lkIHc1MTAwX2h3X3N0YXJ0KHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxuIDM4NDpcdHtcbiAzODU6XHRcdHU4IG1vZGUgPSBTMF9NUl9NQUNSQVc7XG4gMzg2Olx0XG4gMzg3Olx0XHRpZiAoIXByaXYtXHUwMDNlcHJvbWlzYykge1xuIDM4ODpcdFx0XHRpZiAocHJpdi1cdTAwM2VvcHMtXHUwMDNlY2hpcF9pZCA9PSBXNTUwMClcbiAzODk6XHRcdFx0XHRtb2RlIHw9IFc1NTAwX1MwX01SX01GO1xuIDM5MDpcdFx0XHRlbHNlXG4gMzkxOlx0XHRcdFx0bW9kZSB8PSBTMF9NUl9NRjtcbiAzOTI6XHRcdH1cbiAzOTM6XHRcbiAzOTQ6XHRcdHc1MTAwX3dyaXRlKHByaXYsIFc1MTAwX1MwX01SKHByaXYpLCBtb2RlKTtcbiAzOTU6XHRcdHc1MTAwX2NvbW1hbmQocHJpdiwgUzBfQ1JfT1BFTik7XG4gMzk2Olx0XHR3NTEwMF9lbmFibGVfaW50cihwcml2KTtcbiAzOTc6XHR9XG4gMzk4Olx0XG4gMzk5Olx0c3RhdGljIHZvaWQgdzUxMDBfaHdfY2xvc2Uoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYpXG4gNDAwOlx0e1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNjowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzU2NwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDQ2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcG9zc2liaWxpdHkgb2YgVmlydHVhbGl6ZWQgVGVzdGluZyBmb3IgdGhpcyBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYHc1MTAwX2h3X3Jlc2V0YCBmdW5jdGlvbiwgYW5kIGl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFRoZSBjcml0aWNhbCBwYXJ0IGlzIHRoYXQgaXQgY2hlY2tzIHRoZSB2YWx1ZSBvZiBhIHJlZ2lzdGVyLCBgcnRyYCwgYWdhaW5zdCBgUlRSX0RFRkFVTFRgLiAgSWYgdGhhdCBjaGVjayBmYWlscywgaXQgaW1tZWRpYXRlbHkgcmV0dXJucyBgLUVOT0RFVmAsIHdoaWNoIG1lYW5zIHRoZSBkcml2ZXIgd2lsbCBub3QgbG9hZC4gVGhlIGB3NTEwMF9yZWFkMTZgIGZ1bmN0aW9uLCBiZWluZyBmdW5kYW1lbnRhbCwgd2lsbCBsaWtlbHkgcmV0dXJuIGdhcmJhZ2UgZGF0YSBpZiB0aGUgYWN0dWFsIGhhcmR3YXJlIGlzbiYjMzk7dCBwcmVzZW50LCB3aGljaCBkZWZpbml0ZWx5IHdvbiYjMzk7dCBtYXRjaCBgUlRSX0RFRkFVTFRgLiAgQW5kIHRoaXMgaGFyZHdhcmUgaGFwcGVucyB0byBiZSBTUEksIHdoaWNoLCBhcyBJIGtub3csIGlzIG5vdCBlbXVsYXRlZCBieSBRRU1VLgoKVGhlcmVmb3JlLCBzaW5jZSBgdzUxMDBfaHdfcmVzZXRgIGlzIGRpcmVjdGx5IGNhbGxlZCBpbiBgdzUxMDBfcHJvYmVgLCBpZiB0aGUgY2hlY2sgZmFpbHMsIGB3NTEwMF9wcm9iZWAgZmFpbHMsIGFuZCB0aGUgZHJpdmVyIGlzIGRlYWQgaW4gdGhlIHdhdGVyLiBUaGlzIG1lYW5zIHRoZXJlJiMzOTtzIG5vIHdheSB0byBldmVuIHJlYWNoIHRoZSBmdW5jdGlvbmFsIHBhcnRzIG9mIHRoaXMgZHJpdmVyLCBsaWtlIGB3NTEwMF9vcGVuYCwgYHc1MTAwX2RldGVjdF9saW5rYCwgb3IgYHc1MTAwX2dldF9saW5rYCB3aXRoaW4gUUVNVSBvciBzaW1pbGFyIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gIFRoaXMgZmFsbHMgc3F1YXJlbHkgaW50byB0aGUgJiMzNDtpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyYjMzQ7IGNhdGVnb3J5LiAgSXQmIzM5O3MgYW4gU1BJIGRldmljZSwgYW5kIGZvciBhIHNwZWNpZmljIGhhcmR3YXJlIGNoaXAgYXQgdGhhdCwgc28gdGhlcmUgd29uJiMzOTt0IGJlIGEgc29mdHdhcmUgZW11bGF0aW9uLgoKTm93LCBjb3VsZCB0aGVyZSBiZSBhIGJhY2tkb29yPyBNYXliZSB0aHJvdWdoIGBzeXprYWxsZXJgIGFuZCBhIG1vY2sgU1BJIGRyaXZlcj8gTGV0IG1lIHRoaW5rLi4uIE5vLiBUaGVyZSYjMzk7cyBubyBnZW5lcmljIG1vY2sgU1BJIGRyaXZlciB0aGF0IGNhbiBmYWtlIGFyYml0cmFyeSBkZXZpY2UgcmVnaXN0ZXJzIGluIHRoZSBtYWlubGluZSBrZXJuZWwuICBXaGlsZSB0aGVyZSBpcyBgc3BpLWxvb3BiYWNrLXRlc3RgLCBpdCYjMzk7cyBub3QgYSBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXIgZmFrZXIuIFNvLCB0aGF0JiMzOTtzIG5vdCBoYXBwZW5pbmcuCgpUaGVyZWZvcmUsIHRoZSBjb25jbHVzaW9uIHRoYXQgdGhpcyBpcyBgV29ydGhGdXp6aW5nPWZhbHNlYCBpcyBhY2N1cmF0ZS4gSnVzdCB3YW50IHRvIHF1aWNrbHkgZG91YmxlIGNoZWNrIHRoZSBgUlRSX0RFRkFVTFRgIHZhbHVlIG9uZSBsYXN0IHRpbWUgYW5kIHRoZW4gSSBjYW4gbW92ZSBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UlRSX0RFRkFVTFQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jPTM1PU1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtODktI2RlZmluZSBXNTEwMF9SVFJcdFx0MHgwMDE3IC8qIFJldHJ5IFRpbWUtdmFsdWUgUmVnaXN0ZXIgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjkwOiNkZWZpbmUgICBSVFJfREVGQVVMVFx0XHQgIDIwMDAgLyogPTB4MDdkMCAoMjAwMCkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTkxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jPTM1MT1zdGF0aWMgaW50IHc1MTAwX2h3X3Jlc2V0KHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM3Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM3NzpcdGlmICh3NTEwMF9yZWFkMTYocHJpdiwgcnRyKSAhPSBSVFJfREVGQVVMVClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM3OC1cdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4ODEwCgkJCQkJCQlvdXRwdXQ6IDEzMQoJCQkJCQkJdGhvdWdodHM6IDEzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBTUEkgRHJpdmVyJiMzOTtzIFByb2JpbmcgQ2FwYWJpbGl0aWVzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IHRoZSBkZWZhdWx0IHJlZ2lzdGVyIHZhbHVlLCBgUlRSX0RFRkFVTFRgLCBpcyBpbmRlZWQgMjAwMCwgd2hpY2ggaW4gaGV4YWRlY2ltYWwgaXMgYDB4MDdkMGAuIEEgc3RhbmRhcmQgZHVtbXkgU1BJIHJlYWQsIHNvbWV0aGluZyB5b3UgbWlnaHQgdHJ5IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIHdvdWxkIHJldHVybiBlaXRoZXIgYDB4MDAwMGAgb3IgYDB4ZmZmZmAsIGRlcGVuZGluZyBvbiBob3cgdGhlIFNQSSBpcyBoYW5kbGVkIGF0IHRoZSBoYXJkd2FyZSBsYXllci4gQ29uc2VxdWVudGx5LCBhbnkgYXR0ZW1wdGVkIHByb2JlIGZ1bmN0aW9uIHdpbGwgaW5ldml0YWJseSBmYWlsIGlmIGl0JiMzOTtzIHJlbHlpbmcgb24gcmVhZGluZyBhbmQgdmVyaWZ5aW5nIGhhcmR3YXJlLXNwZWNpZmljIHJlZ2lzdGVycy4KClRoZXJlZm9yZSwgYW5kIGdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRyaXZlciBhbmQgaXRzIGRlcGVuZGVuY2llcywgc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYCBpcyB0aGUgY29ycmVjdCBwYXRoLiBJJiMzOTtsbCBuZWVkIHRvIGNsZWFybHkgYXJ0aWN1bGF0ZSB0aGlzIGluIHRoZSBjb21tZW50cy4gVGhpcyBkcml2ZXIgaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciB0aGUgV2l6bmV0IFc1MTAwLCBXNTIwMCwgYW5kIFc1NTAwIGV0aGVybmV0IGNoaXBzLCBhbmQgaXRzIGNvbW11bmljYXRpb24gaXMgc29sZWx5IHRocm91Z2ggU1BJLiBTdGFuZGFyZCBRRU1VLCBhcyBpdCYjMzk7cyBpbXBsZW1lbnRlZCBub3csIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhlIG5lY2Vzc2FyeSBoYXJkd2FyZSBpbnRlcmFjdGlvbnMgd2l0aCB0aG9zZSBjaGlwcy4gVGhlIHByb2JlIGZ1bmN0aW9uIGlzIGNsZWFybHkgZGVzaWduZWQgdG8gY2hlY2sgc3BlY2lmaWMgaGFyZHdhcmUgcmVnaXN0ZXJzIHRoYXQgYXJlIHVuYXZhaWxhYmxlIG9yIHVuaW5pdGlhbGl6ZWQgaW4gYSBnZW5lcmljIHZpcnR1YWwgZW52aXJvbm1lbnQuIFRoZXJlJiMzOTtzIG5vIHZhbHVlIGluIGZ1enppbmcgdGhpcyBkcml2ZXIgdW50aWwgdGhlIGhhcmR3YXJlIGl0c2VsZiBpcyBlbXVsYXRlZCwgb3Igb3RoZXIgcmVnaXN0ZXItYmFzZWQgY2hlY2sgaXMgaW1wbGVtZW50ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHc1MTAwIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgZm9yIFdpem5ldCBXNTEwMC9XNTIwMC9XNTUwMCBoYXJkd2FyZSBjaGlwcyBjb25uZWN0ZWQgdmlhIFNQSS4gVGhlc2UgY2hpcHMgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBUaGUgZHJpdmVyJiMzOTtzIHByb2JlIGZ1bmN0aW9uIGV4cGxpY2l0bHkgY2hlY2tzIGhhcmR3YXJlIHJlZ2lzdGVycyAoZS5nLiwgdmVyaWZ5aW5nIFJUUl9ERUZBVUxUKSBhbmQgd2lsbCBmYWlsIHRvIGluaXRpYWxpemUgd2l0aG91dCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgcHJlc2VudC4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB3NTEwMCBFdGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGZvciBXaXpuZXQgVzUxMDAvVzUyMDAvVzU1MDAgaGFyZHdhcmUgY2hpcHMgY29ubmVjdGVkIHZpYSBTUEkuIFRoZXNlIGNoaXBzIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gVGhlIGRyaXZlciYjMzk7cyBwcm9iZSBmdW5jdGlvbiBleHBsaWNpdGx5IGNoZWNrcyBoYXJkd2FyZSByZWdpc3RlcnMgKGUuZy4sIHZlcmlmeWluZyBSVFJfREVGQVVMVCkgYW5kIHdpbGwgZmFpbCB0byBpbml0aWFsaXplIHdpdGhvdXQgdGhlIHBoeXNpY2FsIGhhcmR3YXJlIHByZXNlbnQuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTU6NDU6NTUuNDA5MjQ4NTAxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIxMjQzNjQ5MDcxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHc1MTAwIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgZm9yIFdpem5ldCBXNTEwMC9XNTIwMC9XNTUwMCBoYXJkd2FyZSBjaGlwcyBjb25uZWN0ZWQgdmlhIFNQSS4gVGhlc2UgY2hpcHMgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBUaGUgZHJpdmVyJ3MgcHJvYmUgZnVuY3Rpb24gZXhwbGljaXRseSBjaGVja3MgaGFyZHdhcmUgcmVnaXN0ZXJzIChlLmcuLCB2ZXJpZnlpbmcgUlRSX0RFRkFVTFQpIGFuZCB3aWxsIGZhaWwgdG8gaW5pdGlhbGl6ZSB3aXRob3V0IHRoZSBwaHlzaWNhbCBoYXJkd2FyZSBwcmVzZW50LiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTU6NDU6NTUuNDA5MjU1OTMxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODE3MzI3NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3MjRjOGY3MWY4YmUwOTk0ZjE0N2NlNWZhMzc5ZTU2MmYxZTExYmQyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgQXVnIDQgMTU6NDU6NTQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAudHh0XFxuaW5kZXggZTk2NjU3OThjNGJlNi4uZTk3Y2UzY2I5MTgzMCAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC50eHRcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC50eHRcXG5AQCAtMjUsNiArMjUsNyBAQCBPcHRpb25hbCBwcm9wZXJ0aWVzOlxcbiAgIEFjY29yZGluZyB0byB0aGUgdzU1MDAgZGF0YXNoZWV0LCB0aGUgY2hpcCBhbGxvd3MgYSBtYXhpbXVtIG9mIDgwIE1IeiwgaG93ZXZlcixcXG4gICBib2FyZCBkZXNpZ25zIG1heSBuZWVkIHRvIGxpbWl0IHRoaXMgdmFsdWUuXFxuIC0gbG9jYWwtbWFjLWFkZHJlc3M6IFNlZSBldGhlcm5ldC50eHQgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxcbistIGxpbmstZ3Bpb3M6IGEgR1BJTyBsaW5lIHVzZWQgZm9yIHRoZSBsaW5rIGRldGVjdGlvbiBpbnRlcnJ1cHRcXG4gXFxuIFxcbiBFeGFtcGxlIChmb3IgUmFzcGJlcnJ5IFBpIHdpdGggcGluIGNvbnRyb2wgc3R1ZmYgZm9yIEdQSU8gaXJxKTpcXG5AQCAtMzgsMTMgKzM5LDE0IEBAIEV4YW1wbGUgKGZvciBSYXNwYmVycnkgUGkgd2l0aCBwaW4gY29udHJvbCBzdHVmZiBmb3IgR1BJTyBpcnEpOlxcbiBcXHRcXHRpbnRlcnJ1cHQtcGFyZW50ID0gXFx1MDAzY1xcdTAwMjZncGlvXFx1MDAzZTtcXG4gXFx0XFx0aW50ZXJydXB0cyA9IFxcdTAwM2MyNSBJUlFfVFlQRV9FREdFX0ZBTExJTkdcXHUwMDNlO1xcbiBcXHRcXHRzcGktbWF4LWZyZXF1ZW5jeSA9IFxcdTAwM2MzMDAwMDAwMFxcdTAwM2U7XFxuK1xcdFxcdGxpbmstZ3Bpb3MgPSBcXHUwMDNjXFx1MDAyNmdwaW8gNCBHUElPX0FDVElWRV9ISUdIXFx1MDAzZTtcXG4gXFx0fTtcXG4gfTtcXG4gXFxuIFxcdTAwMjZncGlvIHtcXG4gXFx0ZXRoMV9waW5zOiBldGgxX3BpbnMge1xcbi1cXHRcXHRicmNtLHBpbnMgPSBcXHUwMDNjMjVcXHUwMDNlO1xcbi1cXHRcXHRicmNtLGZ1bmN0aW9uID0gXFx1MDAzYzBcXHUwMDNlOyAvKiBpbiAqL1xcbi1cXHRcXHRicmNtLHB1bGwgPSBcXHUwMDNjMFxcdTAwM2U7IC8qIG5vbmUgKi9cXG4rXFx0XFx0YnJjbSxwaW5zID0gXFx1MDAzYzI1IDRcXHUwMDNlO1xcbitcXHRcXHRicmNtLGZ1bmN0aW9uID0gXFx1MDAzYzAgMFxcdTAwM2U7IC8qIGluICovXFxuK1xcdFxcdGJyY20scHVsbCA9IFxcdTAwM2MwIDBcXHUwMDNlOyAvKiBub25lICovXFxuIFxcdH07XFxuIH07XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmNcXG5pbmRleCA1M2Q4ZGM2NDJmYmQ2Li5jOWQxODkxZjM3Yjk4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmNcXG5AQCAtMjIsNiArMjIsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvaW9wb3J0LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9pbnRlcnJ1cHQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lycS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvZ3Bpby9jb25zdW1lci5oXFx1MDAzZVxcbiBcXG4gI2luY2x1ZGUgXFxcInc1MTAwLmhcXFwiXFxuIFxcbkBAIC0xNTQsNiArMTU1LDggQEAgc3RydWN0IHc1MTAwX3ByaXYge1xcbiBcXHR1MTYgczBfcnhfYnVmX3NpemU7XFxuIFxcbiBcXHRpbnQgaXJxO1xcbitcXHRpbnQgbGlua19pcnE7XFxuK1xcdHN0cnVjdCBncGlvX2Rlc2MgKmxpbmtfZ3BpbztcXG4gXFxuIFxcdHN0cnVjdCBuYXBpX3N0cnVjdCBuYXBpO1xcbiBcXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldjtcXG5AQCAtNDE0LDYgKzQxNywxNiBAQCBzdGF0aWMgdm9pZCB3NTEwMF9nZXRfZHJ2aW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4gXFx0XFx0c2l6ZW9mKGluZm8tXFx1MDAzZWJ1c19pbmZvKSk7XFxuIH1cXG4gXFxuK3N0YXRpYyB1MzIgdzUxMDBfZ2V0X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuK3tcXG4rXFx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG4rXFxuK1xcdGlmIChwcml2LVxcdTAwM2VsaW5rX2dwaW8pXFxuK1xcdFxcdHJldHVybiAhIWdwaW9kX2dldF92YWx1ZV9jYW5zbGVlcChwcml2LVxcdTAwM2VsaW5rX2dwaW8pO1xcbitcXG4rXFx0cmV0dXJuIDE7XFxuK31cXG4rXFxuIHN0YXRpYyB1MzIgdzUxMDBfZ2V0X21zZ2xldmVsKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbiB7XFxuIFxcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XFxuQEAgLTYxNiw2ICs2MjksMjQgQEAgc3RhdGljIGlycXJldHVybl90IHc1MTAwX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpuZGV2X2luc3RhbmNlKVxcbiBcXHRyZXR1cm4gSVJRX0hBTkRMRUQ7XFxuIH1cXG4gXFxuK3N0YXRpYyBpcnFyZXR1cm5fdCB3NTEwMF9kZXRlY3RfbGluayhpbnQgaXJxLCB2b2lkICpuZGV2X2luc3RhbmNlKVxcbit7XFxuK1xcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gbmRldl9pbnN0YW5jZTtcXG4rXFx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG4rXFxuK1xcdGlmIChuZXRpZl9ydW5uaW5nKG5kZXYpKSB7XFxuK1xcdFxcdGlmIChncGlvZF9nZXRfdmFsdWUocHJpdi1cXHUwMDNlbGlua19ncGlvKSAhPSAwKSB7XFxuK1xcdFxcdFxcdG5ldGlmX2luZm8ocHJpdiwgbGluaywgbmRldiwgXFxcImxpbmsgaXMgdXBcXFxcblxcXCIpO1xcbitcXHRcXHRcXHRuZXRpZl9jYXJyaWVyX29uKG5kZXYpO1xcbitcXHRcXHR9IGVsc2Uge1xcbitcXHRcXHRcXHRuZXRpZl9pbmZvKHByaXYsIGxpbmssIG5kZXYsIFxcXCJsaW5rIGlzIGRvd25cXFxcblxcXCIpO1xcbitcXHRcXHRcXHRuZXRpZl9jYXJyaWVyX29mZihuZGV2KTtcXG4rXFx0XFx0fVxcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gSVJRX0hBTkRMRUQ7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIHc1MTAwX3NldHJ4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiB7XFxuIFxcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB3NTEwMF9wcml2LFxcbkBAIC02NTksNiArNjkwLDE0IEBAIHN0YXRpYyBpbnQgdzUxMDBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4gXFx0dzUxMDBfaHdfc3RhcnQocHJpdik7XFxuIFxcdG5hcGlfZW5hYmxlKFxcdTAwMjZwcml2LVxcdTAwM2VuYXBpKTtcXG4gXFx0bmV0aWZfc3RhcnRfcXVldWUobmRldik7XFxuK1xcbitcXHRpZiAocHJpdi1cXHUwMDNlbGlua19ncGlvKSB7XFxuK1xcdFxcdGlmIChncGlvZF9nZXRfdmFsdWVfY2Fuc2xlZXAocHJpdi1cXHUwMDNlbGlua19ncGlvKSAhPSAwKVxcbitcXHRcXHRcXHRuZXRpZl9jYXJyaWVyX29uKG5kZXYpO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdG5ldGlmX2NhcnJpZXJfb2ZmKG5kZXYpO1xcbitcXHR9XFxuK1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG5AQCAtNjc4LDYgKzcxNyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgdzUxMDBfZXRodG9vbF9vcHMgPSB7XFxuIFxcdC5nZXRfZHJ2aW5mb1xcdFxcdD0gdzUxMDBfZ2V0X2RydmluZm8sXFxuIFxcdC5nZXRfbXNnbGV2ZWxcXHRcXHQ9IHc1MTAwX2dldF9tc2dsZXZlbCxcXG4gXFx0LnNldF9tc2dsZXZlbFxcdFxcdD0gdzUxMDBfc2V0X21zZ2xldmVsLFxcbitcXHQuZ2V0X2xpbmtcXHRcXHQ9IHc1MTAwX2dldF9saW5rLFxcbiBcXHQuZ2V0X3JlZ3NfbGVuXFx0XFx0PSB3NTEwMF9nZXRfcmVnc19sZW4sXFxuIFxcdC5nZXRfcmVnc1xcdFxcdD0gdzUxMDBfZ2V0X3JlZ3MsXFxuIH07XFxuQEAgLTc1MSw2ICs3OTEsMTMgQEAgaW50IHc1MTAwX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IHc1MTAwX29wcyAqb3BzLFxcbiBcXHRwcml2LVxcdTAwM2VuZGV2ID0gbmRldjtcXG4gXFx0cHJpdi1cXHUwMDNlb3BzID0gb3BzO1xcbiBcXHRwcml2LVxcdTAwM2VpcnEgPSBpcnE7XFxuK1xcdHByaXYtXFx1MDAzZWxpbmtfZ3BpbyA9IGdwaW9kX2dldF9vcHRpb25hbChkZXYsIFxcXCJsaW5rXFxcIiwgR1BJT0RfSU4pO1xcbitcXHRpZiAoSVNfRVJSKHByaXYtXFx1MDAzZWxpbmtfZ3BpbykpIHtcXG4rXFx0XFx0ZXJyID0gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocHJpdi1cXHUwMDNlbGlua19ncGlvKSxcXG4rXFx0XFx0XFx0XFx0ICAgIFxcXCJmYWlsZWQgdG8gZ2V0IGxpbmsgR1BJT1xcXFxuXFxcIik7XFxuK1xcdFxcdHByaXYtXFx1MDAzZWxpbmtfZ3BpbyA9IE5VTEw7XFxuK1xcdFxcdGdvdG8gZXJyX3JlZ2lzdGVyO1xcbitcXHR9XFxuIFxcbiBcXHRuZGV2LVxcdTAwM2VuZXRkZXZfb3BzID0gXFx1MDAyNnc1MTAwX25ldGRldl9vcHM7XFxuIFxcdG5kZXYtXFx1MDAzZWV0aHRvb2xfb3BzID0gXFx1MDAyNnc1MTAwX2V0aHRvb2xfb3BzO1xcbkBAIC04MDMsMTMgKzg1MCw0MCBAQCBpbnQgdzUxMDBfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgdzUxMDBfb3BzICpvcHMsXFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdGdvdG8gZXJyX2h3O1xcbiBcXG4rXFx0aWYgKHByaXYtXFx1MDAzZWxpbmtfZ3Bpbykge1xcbitcXHRcXHRjaGFyICpsaW5rX25hbWUgPSBkZXZtX2thc3ByaW50ZihkZXYsIEdGUF9LRVJORUwsIFxcXCIlcy1saW5rXFxcIixcXG4rXFx0XFx0XFx0XFx0XFx0XFx0IGRldl9uYW1lKGRldikpO1xcbitcXHRcXHRpZiAoIWxpbmtfbmFtZSkge1xcbitcXHRcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbitcXHRcXHRcXHRnb3RvIGVycl9ncGlvO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRwcml2LVxcdTAwM2VsaW5rX2lycSA9IGdwaW9kX3RvX2lycShwcml2LVxcdTAwM2VsaW5rX2dwaW8pO1xcbitcXHRcXHRpZiAocHJpdi1cXHUwMDNlbGlua19pcnEgXFx1MDAzYyAwKSB7XFxuK1xcdFxcdFxcdGVyciA9IHByaXYtXFx1MDAzZWxpbmtfaXJxO1xcbitcXHRcXHRcXHRnb3RvIGVycl9ncGlvO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRlcnIgPSByZXF1ZXN0X2FueV9jb250ZXh0X2lycShwcml2LVxcdTAwM2VsaW5rX2lycSwgdzUxMDBfZGV0ZWN0X2xpbmssXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgIElSUUZfVFJJR0dFUl9SSVNJTkcgfFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBJUlFGX1RSSUdHRVJfRkFMTElORyxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgbGlua19uYW1lLCBwcml2LVxcdTAwM2VuZGV2KTtcXG4rXFx0XFx0aWYgKGVyciBcXHUwMDNjIDApXFxuK1xcdFxcdFxcdGdvdG8gZXJyX2dwaW87XFxuK1xcdH1cXG4rXFxuIFxcdHJldHVybiAwO1xcbiBcXG4rZXJyX2dwaW86XFxuK1xcdGZyZWVfaXJxKHByaXYtXFx1MDAzZWlycSwgbmRldik7XFxuIGVycl9odzpcXG4gXFx0ZGVzdHJveV93b3JrcXVldWUocHJpdi1cXHUwMDNleGZlcl93cSk7XFxuIGVycl93cTpcXG4gXFx0dW5yZWdpc3Rlcl9uZXRkZXYobmRldik7XFxuIGVycl9yZWdpc3RlcjpcXG4rXFx0aWYgKHByaXYtXFx1MDAzZWxpbmtfZ3BpbylcXG4rXFx0XFx0Z3Bpb2RfcHV0KHByaXYtXFx1MDAzZWxpbmtfZ3Bpbyk7XFxuK1xcbiBcXHRmcmVlX25ldGRldihuZGV2KTtcXG4gXFx0cmV0dXJuIGVycjtcXG4gfVxcbkBAIC04MjIsNiArODk2LDEwIEBAIHZvaWQgdzUxMDBfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFxuIFxcdHc1MTAwX2h3X3Jlc2V0KHByaXYpO1xcbiBcXHRmcmVlX2lycShwcml2LVxcdTAwM2VpcnEsIG5kZXYpO1xcbitcXHRpZiAocHJpdi1cXHUwMDNlbGlua19ncGlvKSB7XFxuK1xcdFxcdGZyZWVfaXJxKHByaXYtXFx1MDAzZWxpbmtfaXJxLCBuZGV2KTtcXG4rXFx0XFx0Z3Bpb2RfcHV0KHByaXYtXFx1MDAzZWxpbmtfZ3Bpbyk7XFxuK1xcdH1cXG4gXFxuIFxcdGZsdXNoX3dvcmsoXFx1MDAyNnByaXYtXFx1MDAzZXNldHJ4X3dvcmspO1xcbiBcXHRmbHVzaF93b3JrKFxcdTAwMjZwcml2LVxcdTAwM2VyZXN0YXJ0X3dvcmspO1xcbkBAIC04NDAsNiArOTE4LDcgQEAgc3RhdGljIGludCB3NTEwMF9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFxuIFxcdGlmIChuZXRpZl9ydW5uaW5nKG5kZXYpKSB7XFxuIFxcdFxcdG5ldGlmX2NhcnJpZXJfb2ZmKG5kZXYpO1xcbitcXG4gXFx0XFx0bmV0aWZfZGV2aWNlX2RldGFjaChuZGV2KTtcXG4gXFxuIFxcdFxcdHc1MTAwX2h3X2Nsb3NlKHByaXYpO1xcbkBAIC04NTcsNyArOTM2LDEyIEBAIHN0YXRpYyBpbnQgdzUxMDBfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFx0XFx0dzUxMDBfaHdfc3RhcnQocHJpdik7XFxuIFxcbiBcXHRcXHRuZXRpZl9kZXZpY2VfYXR0YWNoKG5kZXYpO1xcbitcXG4rXFx0XFx0aWYgKCFwcml2LVxcdTAwM2VsaW5rX2dwaW8gfHxcXG4rXFx0XFx0ICAgIGdwaW9kX2dldF92YWx1ZV9jYW5zbGVlcChwcml2LVxcdTAwM2VsaW5rX2dwaW8pICE9IDApXFxuK1xcdFxcdFxcdG5ldGlmX2NhcnJpZXJfb24obmRldik7XFxuIFxcdH1cXG4rXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuICNlbmRpZiAvKiBDT05GSUdfUE1fU0xFRVAgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTU6NDU6NTUuNzkxNjg0OTYxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTIxMjA1NDA0ODkyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHc1MTAwIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgZm9yIFdpem5ldCBXNTEwMC9XNTIwMC9XNTUwMCBoYXJkd2FyZSBjaGlwcyBjb25uZWN0ZWQgdmlhIFNQSS4gVGhlc2UgY2hpcHMgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBUaGUgZHJpdmVyJ3MgcHJvYmUgZnVuY3Rpb24gZXhwbGljaXRseSBjaGVja3MgaGFyZHdhcmUgcmVnaXN0ZXJzIChlLmcuLCB2ZXJpZnlpbmcgUlRSX0RFRkFVTFQpIGFuZCB3aWxsIGZhaWwgdG8gaW5pdGlhbGl6ZSB3aXRob3V0IHRoZSBwaHlzaWNhbCBoYXJkd2FyZSBwcmVzZW50LiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNzI0YzhmNzFmOGJlMDk5NGYxNDdjZTVmYTM3OWU1NjJmMWUxMWJkMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMTU6NDU6NTQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC50eHRcbmluZGV4IGU5NjY1Nzk4YzRiZTYuLmU5N2NlM2NiOTE4MzAgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC50eHRcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnR4dFxuQEAgLTI1LDYgKzI1LDcgQEAgT3B0aW9uYWwgcHJvcGVydGllczpcbiAgIEFjY29yZGluZyB0byB0aGUgdzU1MDAgZGF0YXNoZWV0LCB0aGUgY2hpcCBhbGxvd3MgYSBtYXhpbXVtIG9mIDgwIE1IeiwgaG93ZXZlcixcbiAgIGJvYXJkIGRlc2lnbnMgbWF5IG5lZWQgdG8gbGltaXQgdGhpcyB2YWx1ZS5cbiAtIGxvY2FsLW1hYy1hZGRyZXNzOiBTZWUgZXRoZXJuZXQudHh0IGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbistIGxpbmstZ3Bpb3M6IGEgR1BJTyBsaW5lIHVzZWQgZm9yIHRoZSBsaW5rIGRldGVjdGlvbiBpbnRlcnJ1cHRcbiBcbiBcbiBFeGFtcGxlIChmb3IgUmFzcGJlcnJ5IFBpIHdpdGggcGluIGNvbnRyb2wgc3R1ZmYgZm9yIEdQSU8gaXJxKTpcbkBAIC0zOCwxMyArMzksMTQgQEAgRXhhbXBsZSAoZm9yIFJhc3BiZXJyeSBQaSB3aXRoIHBpbiBjb250cm9sIHN0dWZmIGZvciBHUElPIGlycSk6XG4gXHRcdGludGVycnVwdC1wYXJlbnQgPSBcdTAwM2NcdTAwMjZncGlvXHUwMDNlO1xuIFx0XHRpbnRlcnJ1cHRzID0gXHUwMDNjMjUgSVJRX1RZUEVfRURHRV9GQUxMSU5HXHUwMDNlO1xuIFx0XHRzcGktbWF4LWZyZXF1ZW5jeSA9IFx1MDAzYzMwMDAwMDAwXHUwMDNlO1xuK1x0XHRsaW5rLWdwaW9zID0gXHUwMDNjXHUwMDI2Z3BpbyA0IEdQSU9fQUNUSVZFX0hJR0hcdTAwM2U7XG4gXHR9O1xuIH07XG4gXG4gXHUwMDI2Z3BpbyB7XG4gXHRldGgxX3BpbnM6IGV0aDFfcGlucyB7XG4tXHRcdGJyY20scGlucyA9IFx1MDAzYzI1XHUwMDNlO1xuLVx0XHRicmNtLGZ1bmN0aW9uID0gXHUwMDNjMFx1MDAzZTsgLyogaW4gKi9cbi1cdFx0YnJjbSxwdWxsID0gXHUwMDNjMFx1MDAzZTsgLyogbm9uZSAqL1xuK1x0XHRicmNtLHBpbnMgPSBcdTAwM2MyNSA0XHUwMDNlO1xuK1x0XHRicmNtLGZ1bmN0aW9uID0gXHUwMDNjMCAwXHUwMDNlOyAvKiBpbiAqL1xuK1x0XHRicmNtLHB1bGwgPSBcdTAwM2MwIDBcdTAwM2U7IC8qIG5vbmUgKi9cbiBcdH07XG4gfTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jXG5pbmRleCA1M2Q4ZGM2NDJmYmQ2Li5jOWQxODkxZjM3Yjk4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jXG5AQCAtMjIsNiArMjIsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2lvcG9ydC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaW50ZXJydXB0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pcnEuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2dwaW8vY29uc3VtZXIuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwidzUxMDAuaFwiXG4gXG5AQCAtMTU0LDYgKzE1NSw4IEBAIHN0cnVjdCB3NTEwMF9wcml2IHtcbiBcdHUxNiBzMF9yeF9idWZfc2l6ZTtcbiBcbiBcdGludCBpcnE7XG4rXHRpbnQgbGlua19pcnE7XG4rXHRzdHJ1Y3QgZ3Bpb19kZXNjICpsaW5rX2dwaW87XG4gXG4gXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2O1xuQEAgLTQxNCw2ICs0MTcsMTYgQEAgc3RhdGljIHZvaWQgdzUxMDBfZ2V0X2RydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRcdHNpemVvZihpbmZvLVx1MDAzZWJ1c19pbmZvKSk7XG4gfVxuIFxuK3N0YXRpYyB1MzIgdzUxMDBfZ2V0X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4re1xuK1x0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbitcbitcdGlmIChwcml2LVx1MDAzZWxpbmtfZ3BpbylcbitcdFx0cmV0dXJuICEhZ3Bpb2RfZ2V0X3ZhbHVlX2NhbnNsZWVwKHByaXYtXHUwMDNlbGlua19ncGlvKTtcbitcbitcdHJldHVybiAxO1xuK31cbitcbiBzdGF0aWMgdTMyIHc1MTAwX2dldF9tc2dsZXZlbChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiB7XG4gXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuQEAgLTYxNiw2ICs2MjksMjQgQEAgc3RhdGljIGlycXJldHVybl90IHc1MTAwX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpuZGV2X2luc3RhbmNlKVxuIFx0cmV0dXJuIElSUV9IQU5ETEVEO1xuIH1cbiBcbitzdGF0aWMgaXJxcmV0dXJuX3QgdzUxMDBfZGV0ZWN0X2xpbmsoaW50IGlycSwgdm9pZCAqbmRldl9pbnN0YW5jZSlcbit7XG4rXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IG5kZXZfaW5zdGFuY2U7XG4rXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuK1xuK1x0aWYgKG5ldGlmX3J1bm5pbmcobmRldikpIHtcbitcdFx0aWYgKGdwaW9kX2dldF92YWx1ZShwcml2LVx1MDAzZWxpbmtfZ3BpbykgIT0gMCkge1xuK1x0XHRcdG5ldGlmX2luZm8ocHJpdiwgbGluaywgbmRldiwgXCJsaW5rIGlzIHVwXFxuXCIpO1xuK1x0XHRcdG5ldGlmX2NhcnJpZXJfb24obmRldik7XG4rXHRcdH0gZWxzZSB7XG4rXHRcdFx0bmV0aWZfaW5mbyhwcml2LCBsaW5rLCBuZGV2LCBcImxpbmsgaXMgZG93blxcblwiKTtcbitcdFx0XHRuZXRpZl9jYXJyaWVyX29mZihuZGV2KTtcbitcdFx0fVxuK1x0fVxuK1xuK1x0cmV0dXJuIElSUV9IQU5ETEVEO1xuK31cbitcbiBzdGF0aWMgdm9pZCB3NTEwMF9zZXRyeF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiB7XG4gXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdzUxMDBfcHJpdixcbkBAIC02NTksNiArNjkwLDE0IEBAIHN0YXRpYyBpbnQgdzUxMDBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiBcdHc1MTAwX2h3X3N0YXJ0KHByaXYpO1xuIFx0bmFwaV9lbmFibGUoXHUwMDI2cHJpdi1cdTAwM2VuYXBpKTtcbiBcdG5ldGlmX3N0YXJ0X3F1ZXVlKG5kZXYpO1xuK1xuK1x0aWYgKHByaXYtXHUwMDNlbGlua19ncGlvKSB7XG4rXHRcdGlmIChncGlvZF9nZXRfdmFsdWVfY2Fuc2xlZXAocHJpdi1cdTAwM2VsaW5rX2dwaW8pICE9IDApXG4rXHRcdFx0bmV0aWZfY2Fycmllcl9vbihuZGV2KTtcbitcdFx0ZWxzZVxuK1x0XHRcdG5ldGlmX2NhcnJpZXJfb2ZmKG5kZXYpO1xuK1x0fVxuK1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuQEAgLTY3OCw2ICs3MTcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHc1MTAwX2V0aHRvb2xfb3BzID0ge1xuIFx0LmdldF9kcnZpbmZvXHRcdD0gdzUxMDBfZ2V0X2RydmluZm8sXG4gXHQuZ2V0X21zZ2xldmVsXHRcdD0gdzUxMDBfZ2V0X21zZ2xldmVsLFxuIFx0LnNldF9tc2dsZXZlbFx0XHQ9IHc1MTAwX3NldF9tc2dsZXZlbCxcbitcdC5nZXRfbGlua1x0XHQ9IHc1MTAwX2dldF9saW5rLFxuIFx0LmdldF9yZWdzX2xlblx0XHQ9IHc1MTAwX2dldF9yZWdzX2xlbixcbiBcdC5nZXRfcmVnc1x0XHQ9IHc1MTAwX2dldF9yZWdzLFxuIH07XG5AQCAtNzUxLDYgKzc5MSwxMyBAQCBpbnQgdzUxMDBfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgdzUxMDBfb3BzICpvcHMsXG4gXHRwcml2LVx1MDAzZW5kZXYgPSBuZGV2O1xuIFx0cHJpdi1cdTAwM2VvcHMgPSBvcHM7XG4gXHRwcml2LVx1MDAzZWlycSA9IGlycTtcbitcdHByaXYtXHUwMDNlbGlua19ncGlvID0gZ3Bpb2RfZ2V0X29wdGlvbmFsKGRldiwgXCJsaW5rXCIsIEdQSU9EX0lOKTtcbitcdGlmIChJU19FUlIocHJpdi1cdTAwM2VsaW5rX2dwaW8pKSB7XG4rXHRcdGVyciA9IGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHByaXYtXHUwMDNlbGlua19ncGlvKSxcbitcdFx0XHRcdCAgICBcImZhaWxlZCB0byBnZXQgbGluayBHUElPXFxuXCIpO1xuK1x0XHRwcml2LVx1MDAzZWxpbmtfZ3BpbyA9IE5VTEw7XG4rXHRcdGdvdG8gZXJyX3JlZ2lzdGVyO1xuK1x0fVxuIFxuIFx0bmRldi1cdTAwM2VuZXRkZXZfb3BzID0gXHUwMDI2dzUxMDBfbmV0ZGV2X29wcztcbiBcdG5kZXYtXHUwMDNlZXRodG9vbF9vcHMgPSBcdTAwMjZ3NTEwMF9ldGh0b29sX29wcztcbkBAIC04MDMsMTMgKzg1MCw0MCBAQCBpbnQgdzUxMDBfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgdzUxMDBfb3BzICpvcHMsXG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIGVycl9odztcbiBcbitcdGlmIChwcml2LVx1MDAzZWxpbmtfZ3Bpbykge1xuK1x0XHRjaGFyICpsaW5rX25hbWUgPSBkZXZtX2thc3ByaW50ZihkZXYsIEdGUF9LRVJORUwsIFwiJXMtbGlua1wiLFxuK1x0XHRcdFx0XHRcdCBkZXZfbmFtZShkZXYpKTtcbitcdFx0aWYgKCFsaW5rX25hbWUpIHtcbitcdFx0XHRlcnIgPSAtRU5PTUVNO1xuK1x0XHRcdGdvdG8gZXJyX2dwaW87XG4rXHRcdH1cbitcbitcdFx0cHJpdi1cdTAwM2VsaW5rX2lycSA9IGdwaW9kX3RvX2lycShwcml2LVx1MDAzZWxpbmtfZ3Bpbyk7XG4rXHRcdGlmIChwcml2LVx1MDAzZWxpbmtfaXJxIFx1MDAzYyAwKSB7XG4rXHRcdFx0ZXJyID0gcHJpdi1cdTAwM2VsaW5rX2lycTtcbitcdFx0XHRnb3RvIGVycl9ncGlvO1xuK1x0XHR9XG4rXG4rXHRcdGVyciA9IHJlcXVlc3RfYW55X2NvbnRleHRfaXJxKHByaXYtXHUwMDNlbGlua19pcnEsIHc1MTAwX2RldGVjdF9saW5rLFxuK1x0XHRcdFx0XHQgICAgICBJUlFGX1RSSUdHRVJfUklTSU5HIHxcbitcdFx0XHRcdFx0XHQgICAgICBJUlFGX1RSSUdHRVJfRkFMTElORyxcbitcdFx0XHRcdFx0ICAgICAgbGlua19uYW1lLCBwcml2LVx1MDAzZW5kZXYpO1xuK1x0XHRpZiAoZXJyIFx1MDAzYyAwKVxuK1x0XHRcdGdvdG8gZXJyX2dwaW87XG4rXHR9XG4rXG4gXHRyZXR1cm4gMDtcbiBcbitlcnJfZ3BpbzpcbitcdGZyZWVfaXJxKHByaXYtXHUwMDNlaXJxLCBuZGV2KTtcbiBlcnJfaHc6XG4gXHRkZXN0cm95X3dvcmtxdWV1ZShwcml2LVx1MDAzZXhmZXJfd3EpO1xuIGVycl93cTpcbiBcdHVucmVnaXN0ZXJfbmV0ZGV2KG5kZXYpO1xuIGVycl9yZWdpc3RlcjpcbitcdGlmIChwcml2LVx1MDAzZWxpbmtfZ3BpbylcbitcdFx0Z3Bpb2RfcHV0KHByaXYtXHUwMDNlbGlua19ncGlvKTtcbitcbiBcdGZyZWVfbmV0ZGV2KG5kZXYpO1xuIFx0cmV0dXJuIGVycjtcbiB9XG5AQCAtODIyLDYgKzg5NiwxMCBAQCB2b2lkIHc1MTAwX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXG4gXHR3NTEwMF9od19yZXNldChwcml2KTtcbiBcdGZyZWVfaXJxKHByaXYtXHUwMDNlaXJxLCBuZGV2KTtcbitcdGlmIChwcml2LVx1MDAzZWxpbmtfZ3Bpbykge1xuK1x0XHRmcmVlX2lycShwcml2LVx1MDAzZWxpbmtfaXJxLCBuZGV2KTtcbitcdFx0Z3Bpb2RfcHV0KHByaXYtXHUwMDNlbGlua19ncGlvKTtcbitcdH1cbiBcbiBcdGZsdXNoX3dvcmsoXHUwMDI2cHJpdi1cdTAwM2VzZXRyeF93b3JrKTtcbiBcdGZsdXNoX3dvcmsoXHUwMDI2cHJpdi1cdTAwM2VyZXN0YXJ0X3dvcmspO1xuQEAgLTg0MCw2ICs5MTgsNyBAQCBzdGF0aWMgaW50IHc1MTAwX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KVxuIFxuIFx0aWYgKG5ldGlmX3J1bm5pbmcobmRldikpIHtcbiBcdFx0bmV0aWZfY2Fycmllcl9vZmYobmRldik7XG4rXG4gXHRcdG5ldGlmX2RldmljZV9kZXRhY2gobmRldik7XG4gXG4gXHRcdHc1MTAwX2h3X2Nsb3NlKHByaXYpO1xuQEAgLTg1Nyw3ICs5MzYsMTIgQEAgc3RhdGljIGludCB3NTEwMF9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0XHR3NTEwMF9od19zdGFydChwcml2KTtcbiBcbiBcdFx0bmV0aWZfZGV2aWNlX2F0dGFjaChuZGV2KTtcbitcbitcdFx0aWYgKCFwcml2LVx1MDAzZWxpbmtfZ3BpbyB8fFxuK1x0XHQgICAgZ3Bpb2RfZ2V0X3ZhbHVlX2NhbnNsZWVwKHByaXYtXHUwMDNlbGlua19ncGlvKSAhPSAwKVxuK1x0XHRcdG5ldGlmX2NhcnJpZXJfb24obmRldik7XG4gXHR9XG4rXG4gXHRyZXR1cm4gMDtcbiB9XG4gI2VuZGlmIC8qIENPTkZJR19QTV9TTEVFUCAqL1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTU6NDU6NTUuNzkxNjg2MDMxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ0NjgxMzYxMDA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgV2l6bmV0IFc1MTAwIEV0aGVybmV0IERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggZm9yIHRoZSBgdzUxMDBgIGV0aGVybmV0IGRyaXZlciwgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuY2AuIEl0IGxvb2tzIGxpa2UgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGxpbmsgZGV0ZWN0aW9uIHZpYSBhIEdQSU8uIEkgc2VlIG5ldyBmdW5jdGlvbnMgYWRkZWQ6IGB3NTEwMF9nZXRfbGlua2AgYW5kIGB3NTEwMF9kZXRlY3RfbGlua2AsIHRoZSBsYXR0ZXIgYmVpbmcgYW4gSVJRIGhhbmRsZXIsIHdoaWNoIG1ha2VzIHNlbnNlIGZvciByZXNwb25kaW5nIHRvIHBpbiBjaGFuZ2VzLiBJdCBhbHNvIHRvdWNoZXMgYSBmZXcgb3RoZXIga2V5IGFyZWFzOiBgdzUxMDBfb3BlbmAsIGB3NTEwMF9wcm9iZWAsIGB3NTEwMF9yZW1vdmVgLCBgdzUxMDBfc3VzcGVuZGAsIGFuZCBgdzUxMDBfcmVzdW1lYC4gU28sIGl0J3MgbW9kaWZ5aW5nIHRoZSBjb3JlIGxpZmVjeWNsZSBhbmQgcG93ZXIgbWFuYWdlbWVudCBmdW5jdGlvbnMgdG8gaW5jb3Jwb3JhdGUgdGhpcyBuZXcgbGluayBkZXRlY3Rpb24uXG5cbk5vdywgSSBuZWVkIHRvIHRoaW5rIGFib3V0IGhvdyB0aGlzIGludGVyYWN0cyB3aXRoIHZpcnR1YWxpemF0aW9uLiBUaGlzIGRyaXZlciBpcyBmb3IgYSBXaXpuZXQgVzUxMDAsIFc1MjAwLCBvciBXNTUwMCBNQUMvUEhZLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoZXNlIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcnMsIGVzcGVjaWFsbHkgdGhvc2UgdGhhdCBkZWFsIHdpdGggU1BJIG9yIG1lbW9yeS1tYXBwZWQgaW50ZXJmYWNlcywgYXJlIGdlbmVyYWxseSAqbm90KiBlbXVsYXRlZCBieSBRRU1VIHVubGVzcyB0aGVyZSdzIGFuIGV4cGxpY2l0IG1vZGVsLiBJIHdvbmRlciwgZG9lcyBRRU1VIGV2ZW4gaGF2ZSBhIFdpem5ldCBXNTEwMCBtb2RlbD8gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhhdC5cblxuVG8gZmlndXJlIHRoaXMgb3V0IHF1aWNrbHksIEknbSBnb2luZyB0byBzZWFyY2ggdGhlIGtlcm5lbCBzb3VyY2UgZm9yIFwidzUxMDBcIiB0byBzZWUgaWYgaXQncyB0cmVhdGVkIGFzIGEgcGxhdGZvcm0gb3IgU1BJIGRldmljZS4gVGhhdCdsbCB0ZWxsIG1lIGlmIGl0J3MgaW50ZWdyYXRlZCBpbiBhIHdheSB0aGF0IFFFTVUgbWlnaHQgdG91Y2guIFdhaXQsIHJpZ2h0Li4uIFdpem5ldCBkZXZpY2VzIGFyZSAqdHlwaWNhbGx5KiBTUEkgb3IgbWVtb3J5LW1hcHBlZC4gSSBjYW4gY2hlY2sgdGhlIGRyaXZlciBpdHNlbGYsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuY2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNsZWFyZXN0IHBpY3R1cmUuIExldCBtZSBkaXZlIGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDMwLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTU6NDg6MjAuNDczMDUxMjJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU1NDAzMjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidzUxMDBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDY0OCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L0tjb25maWc9MTk9Y29uZmlnIFdJWk5FVF9XNTEwMFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L0tjb25maWctMjktXFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L0tjb25maWc6MzA6XFx0ICB3aWxsIGJlIGNhbGxlZCB3NTEwMC5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvS2NvbmZpZy0zMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC9NYWtlZmlsZToyOm9iai0kKENPTkZJR19XSVpORVRfVzUxMDApICs9IHc1MTAwLm8gdzUxMDAtc3BpLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy0yMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6MjE6I2luY2x1ZGUgXFxcInc1MTAwLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTIyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTI1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzoyNjpzdGF0aWMgaW50IHc1MTAwX3NwaV9yZWFkKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgYWRkcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtMjcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTM3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzozODpzdGF0aWMgaW50IHc1MTAwX3NwaV93cml0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTMyIGFkZHIsIHU4IGRhdGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDY6c3RhdGljIGludCB3NTEwMF9zcGlfcmVhZDE2KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgYWRkcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTUwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo1MTpcXHRyZXQgPSB3NTEwMF9zcGlfcmVhZChuZGV2LCBhZGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNTItXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNTQtXFx0ZGF0YSA9IHJldCBcXHUwMDNjXFx1MDAzYyA4O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo1NTpcXHRyZXQgPSB3NTEwMF9zcGlfcmVhZChuZGV2LCBhZGRyICsgMSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTU2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo2MDpzdGF0aWMgaW50IHc1MTAwX3NwaV93cml0ZTE2KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgYWRkciwgdTE2IGRhdGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTYxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy02My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NjQ6XFx0cmV0ID0gdzUxMDBfc3BpX3dyaXRlKG5kZXYsIGFkZHIsIGRhdGEgXFx1MDAzZVxcdTAwM2UgOCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTY1LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjY4OlxcdHJldHVybiB3NTEwMF9zcGlfd3JpdGUobmRldiwgYWRkciArIDEsIGRhdGEgXFx1MDAyNiAweGZmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNjktfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy03MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NzE6c3RhdGljIGludCB3NTEwMF9zcGlfcmVhZGJ1bGsoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHUzMiBhZGRyLCB1OCAqYnVmLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy03Mi1cXHRcXHRcXHQgICAgICBpbnQgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTc2LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBsZW47IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo3NzpcXHRcXHRpbnQgcmV0ID0gdzUxMDBfc3BpX3JlYWQobmRldiwgYWRkciArIGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy03OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy04Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6ODc6c3RhdGljIGludCB3NTEwMF9zcGlfd3JpdGVidWxrKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgYWRkciwgY29uc3QgdTggKmJ1ZixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtODgtXFx0XFx0XFx0ICAgICAgIGludCBsZW4pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtOTItXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGxlbjsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjkzOlxcdFxcdGludCByZXQgPSB3NTEwMF9zcGlfd3JpdGUobmRldiwgYWRkciArIGksIGJ1ZltpXSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTk0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTEwMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6MTAyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgdzUxMDBfb3BzIHc1MTAwX3NwaV9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTEwMy1cXHQubWF5X3NsZWVwID0gdHJ1ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtMTA0LVxcdC5jaGlwX2lkID0gVzUxMDAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjEwNTpcXHQucmVhZCA9IHc1MTAwX3NwaV9yZWFkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzoxMDY6XFx0LndyaXRlID0gdzUxMDBfc3BpX3dyaXRlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzoxMDc6XFx0LnJlYWQxNiA9IHc1MTAwX3NwaV9yZWFkMTYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjEwODpcXHQud3JpdGUxNiA9IHc1MTAwX3NwaV93cml0ZTE2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzoxMDk6XFx0LnJlYWRidWxrID0gdzUxMDBfc3BpX3JlYWRidWxrLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzoxMTA6XFx0LndyaXRlYnVsayA9IHc1MTAwX3NwaV93cml0ZWJ1bGssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTExMS19O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jPTEyNT1zdGF0aWMgc3RydWN0IHc1MjAwX3NwaV9wcml2ICp3NTIwMF9zcGlfcHJpdihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtMTI2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6MTI3OlxcdHJldHVybiB3NTEwMF9vcHNfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtMTI4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYz0yMTM9c3RhdGljIGludCB3NTIwMF9zcGlfd3JpdGVidWxrKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgYWRkciwgY29uc3QgdTggKmJ1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy0yNDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjI0MzpzdGF0aWMgY29uc3Qgc3RydWN0IHc1MTAwX29wcyB3NTIwMF9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTI0NC1cXHQubWF5X3NsZWVwID0gdHJ1ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYz0yNzA9c3RhdGljIHN0cnVjdCB3NTUwMF9zcGlfcHJpdiAqdzU1MDBfc3BpX3ByaXYoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTI3MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjI3MjpcXHRyZXR1cm4gdzUxMDBfb3BzX3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTI3My19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM9MzcyPXN0YXRpYyBpbnQgdzU1MDBfc3BpX3dyaXRlYnVsayhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTMyIGFkZHIsIGNvbnN0IHU4ICpidWYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDAwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0MDE6c3RhdGljIGNvbnN0IHN0cnVjdCB3NTEwMF9vcHMgdzU1MDBfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00MDItXFx0Lm1heV9zbGVlcCA9IHRydWUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0MTM6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgdzUxMDBfb2ZfbWF0Y2hbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDE0OlxcdHsgLmNvbXBhdGlibGUgPSBcXFwid2l6bmV0LHc1MTAwXFxcIiwgLmRhdGEgPSAoY29uc3Qgdm9pZCopVzUxMDAsIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQxNS1cXHR7IC5jb21wYXRpYmxlID0gXFxcIndpem5ldCx3NTIwMFxcXCIsIC5kYXRhID0gKGNvbnN0IHZvaWQqKVc1MjAwLCB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQxOC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0MTk6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgdzUxMDBfb2ZfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00MjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQyMTpzdGF0aWMgaW50IHc1MTAwX3NwaV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00MjIte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0MjM6XFx0Y29uc3Qgc3RydWN0IHc1MTAwX29wcyAqb3BzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00MjQtXFx0a2VybmVsX3Vsb25nX3QgZHJpdmVyX2RhdGE7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDM3LVxcdGNhc2UgVzUxMDA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQzODpcXHRcXHRvcHMgPSBcXHUwMDI2dzUxMDBfc3BpX29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDM5LVxcdFxcdHByaXZfc2l6ZSA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDUyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0NTM6XFx0cmV0dXJuIHc1MTAwX3Byb2JlKFxcdTAwMjZzcGktXFx1MDAzZWRldiwgb3BzLCBwcml2X3NpemUsIG1hYywgc3BpLVxcdTAwM2VpcnEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NTQtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ1NjpzdGF0aWMgdm9pZCB3NTEwMF9zcGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQ1Ny17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ1ODpcXHR3NTEwMF9yZW1vdmUoXFx1MDAyNnNwaS1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDU5LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDYwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0NjE6c3RhdGljIGNvbnN0IHN0cnVjdCBzcGlfZGV2aWNlX2lkIHc1MTAwX3NwaV9pZHNbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDYyOlxcdHsgXFxcInc1MTAwXFxcIiwgVzUxMDAgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDYzLVxcdHsgXFxcInc1MjAwXFxcIiwgVzUyMDAgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NjYtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDY3Ok1PRFVMRV9ERVZJQ0VfVEFCTEUoc3BpLCB3NTEwMF9zcGlfaWRzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDY4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0Njk6c3RhdGljIHN0cnVjdCBzcGlfZHJpdmVyIHc1MTAwX3NwaV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQ3MC1cXHQuZHJpdmVyXFx0XFx0PSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ3MTpcXHRcXHQubmFtZVxcdD0gXFxcInc1MTAwXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDcyOlxcdFxcdC5wbVxcdD0gXFx1MDAyNnc1MTAwX3BtX29wcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDczOlxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IHc1MTAwX29mX21hdGNoLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NzQtXFx0fSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDc1OlxcdC5wcm9iZVxcdFxcdD0gdzUxMDBfc3BpX3Byb2JlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0NzY6XFx0LnJlbW92ZVxcdFxcdD0gdzUxMDBfc3BpX3JlbW92ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDc3OlxcdC5pZF90YWJsZVxcdD0gdzUxMDBfc3BpX2lkcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDc4LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ3OTptb2R1bGVfc3BpX2RyaXZlcih3NTEwMF9zcGlfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDgwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mjc6I2luY2x1ZGUgXFxcInc1MTAwLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mjk6I2RlZmluZSBEUlZfTkFNRVxcdFxcXCJ3NTEwMFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMC0jZGVmaW5lIERSVl9WRVJTSU9OXFx0XFxcIjIwMTItMDQtMDRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYz0zNT1NT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0xNDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MTQ1OnN0cnVjdCB3NTEwMF9wcml2IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoxNDY6XFx0Y29uc3Qgc3RydWN0IHc1MTAwX29wcyAqb3BzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE0Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE3My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoxNzQ6c3RhdGljIGludCB3NTEwMF9yZWFkKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2LCB1MzIgYWRkcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0xNzUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMTc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjE3OTpzdGF0aWMgaW50IHc1MTAwX3dyaXRlKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2LCB1MzIgYWRkciwgdTggZGF0YSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0xODAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMTgzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjE4NDpzdGF0aWMgaW50IHc1MTAwX3JlYWQxNihzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiwgdTMyIGFkZHIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMTg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE4OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoxODk6c3RhdGljIGludCB3NTEwMF93cml0ZTE2KHN0cnVjdCB3NTEwMF9wcml2ICpwcml2LCB1MzIgYWRkciwgdTE2IGRhdGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMTkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE5My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoxOTQ6c3RhdGljIGludCB3NTEwMF9yZWFkYnVsayhzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiwgdTMyIGFkZHIsIHU4ICpidWYsIGludCBsZW4pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMTk1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE5OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoxOTk6c3RhdGljIGludCB3NTEwMF93cml0ZWJ1bGsoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYsIHUzMiBhZGRyLCBjb25zdCB1OCAqYnVmLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTIwMC1cXHRcXHRcXHQgICBpbnQgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjA0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjIwNTpzdGF0aWMgaW50IHc1MTAwX3JlYWRidWYoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYsIHUxNiBvZmZzZXQsIHU4ICpidWYsIGludCBsZW4pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjA2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTIyMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoyMjE6XFx0cmV0ID0gdzUxMDBfcmVhZGJ1bGsocHJpdiwgYWRkciwgYnVmLCBsZW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTIyMi1cXHRpZiAocmV0IHx8ICFyZW1haW4pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yMjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjI1OlxcdHJldHVybiB3NTEwMF9yZWFkYnVsayhwcml2LCBtZW1fc3RhcnQsIGJ1ZiArIGxlbiwgcmVtYWluKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yMjYtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTIyNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoyMjg6c3RhdGljIGludCB3NTEwMF93cml0ZWJ1ZihzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiwgdTE2IG9mZnNldCwgY29uc3QgdTggKmJ1ZixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yMjktXFx0XFx0XFx0ICBpbnQgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjQ0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjI0NTpcXHRyZXQgPSB3NTEwMF93cml0ZWJ1bGsocHJpdiwgYWRkciwgYnVmLCBsZW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI0Ni1cXHRpZiAocmV0IHx8ICFyZW1haW4pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjQ5OlxcdHJldHVybiB3NTEwMF93cml0ZWJ1bGsocHJpdiwgbWVtX3N0YXJ0LCBidWYgKyBsZW4sIHJlbWFpbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjUwLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjUyOnN0YXRpYyBpbnQgdzUxMDBfcmVzZXQoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjUzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI1Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoyNTc6XFx0dzUxMDBfd3JpdGUocHJpdiwgVzUxMDBfTVIsIE1SX1JTVCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjU4LVxcdG1kZWxheSg1KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoyNTk6XFx0dzUxMDBfd3JpdGUocHJpdiwgVzUxMDBfTVIsIE1SX1BCKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNjAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNjMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjY0OnN0YXRpYyBpbnQgdzUxMDBfY29tbWFuZChzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiwgdTE2IGNtZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNjUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjI2ODpcXHR3NTEwMF93cml0ZShwcml2LCBXNTEwMF9TMF9DUihwcml2KSwgY21kKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNjktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjcyOlxcdHdoaWxlICh3NTEwMF9yZWFkKHByaXYsIFc1MTAwX1MwX0NSKHByaXYpKSAhPSAwKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjczLVxcdFxcdGlmICh0aW1lX2FmdGVyKGppZmZpZXMsIHRpbWVvdXQpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjgwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjI4MTpzdGF0aWMgdm9pZCB3NTEwMF93cml0ZV9tYWNhZGRyKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI4Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yODQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mjg1OlxcdHc1MTAwX3dyaXRlYnVsayhwcml2LCBXNTEwMF9TSEFSLCBuZGV2LVxcdTAwM2VkZXZfYWRkciwgRVRIX0FMRU4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI4Ni19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjg3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjI4ODpzdGF0aWMgdm9pZCB3NTEwMF9zb2NrZXRfaW50cl9tYXNrKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2LCB1OCBtYXNrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI4OS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yOTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mjk3OlxcdHc1MTAwX3dyaXRlKHByaXYsIGltciwgbWFzayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjk4LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yOTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzAwOnN0YXRpYyB2b2lkIHc1MTAwX2VuYWJsZV9pbnRyKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMwMS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzAyOlxcdHc1MTAwX3NvY2tldF9pbnRyX21hc2socHJpdiwgSVJfUzApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMwMy19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzA0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjMwNTpzdGF0aWMgdm9pZCB3NTEwMF9kaXNhYmxlX2ludHIoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzA2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozMDc6XFx0dzUxMDBfc29ja2V0X2ludHJfbWFzayhwcml2LCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMDgtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMwOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozMTA6c3RhdGljIHZvaWQgdzUxMDBfbWVtb3J5X2NvbmZpZ3VyZShzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMTEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzE0LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjMxNTpcXHR3NTEwMF93cml0ZShwcml2LCBXNTEwMF9STVNSLCAweDAzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozMTY6XFx0dzUxMDBfd3JpdGUocHJpdiwgVzUxMDBfVE1TUiwgMHgwMyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzE3LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzE5OnN0YXRpYyB2b2lkIHc1MjAwX21lbW9yeV9jb25maWd1cmUoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzIwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMyNS1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozMjY6XFx0dzUxMDBfd3JpdGUocHJpdiwgVzUyMDBfU25fUlhNRU1fU0laRSgwKSwgMHgxMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzI3OlxcdHc1MTAwX3dyaXRlKHByaXYsIFc1MjAwX1NuX1RYTUVNX1NJWkUoMCksIDB4MTApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMyOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMjktXFx0Zm9yIChpID0gMTsgaSBcXHUwMDNjIDg7IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjMzMDpcXHRcXHR3NTEwMF93cml0ZShwcml2LCBXNTIwMF9Tbl9SWE1FTV9TSVpFKGkpLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozMzE6XFx0XFx0dzUxMDBfd3JpdGUocHJpdiwgVzUyMDBfU25fVFhNRU1fU0laRShpKSwgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzMyLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMzNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozMzU6c3RhdGljIHZvaWQgdzU1MDBfbWVtb3J5X2NvbmZpZ3VyZShzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMzYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzQxLVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM0MjpcXHR3NTEwMF93cml0ZShwcml2LCBXNTUwMF9Tbl9SWE1FTV9TSVpFKDApLCAweDEwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozNDM6XFx0dzUxMDBfd3JpdGUocHJpdiwgVzU1MDBfU25fVFhNRU1fU0laRSgwKSwgMHgxMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzQ0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM0NS1cXHRmb3IgKGkgPSAxOyBpIFxcdTAwM2MgODsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzQ2OlxcdFxcdHc1MTAwX3dyaXRlKHByaXYsIFc1NTAwX1NuX1JYTUVNX1NJWkUoaSksIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM0NzpcXHRcXHR3NTEwMF93cml0ZShwcml2LCBXNTUwMF9Tbl9UWE1FTV9TSVpFKGkpLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zNDgtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzUwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM1MTpzdGF0aWMgaW50IHc1MTAwX2h3X3Jlc2V0KHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM1Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zNTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzU1OlxcdHc1MTAwX3Jlc2V0KHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM1Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozNTc6XFx0dzUxMDBfZGlzYWJsZV9pbnRyKHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM1ODpcXHR3NTEwMF93cml0ZV9tYWNhZGRyKHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM1OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM2MS1cXHRjYXNlIFc1MTAwOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM2MjpcXHRcXHR3NTEwMF9tZW1vcnlfY29uZmlndXJlKHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM2My1cXHRcXHRydHIgPSBXNTEwMF9SVFI7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zNzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mzc3OlxcdGlmICh3NTEwMF9yZWFkMTYocHJpdiwgcnRyKSAhPSBSVFJfREVGQVVMVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zNzgtXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zODItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzgzOnN0YXRpYyB2b2lkIHc1MTAwX2h3X3N0YXJ0KHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM4NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zOTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mzk0OlxcdHc1MTAwX3dyaXRlKHByaXYsIFc1MTAwX1MwX01SKHByaXYpLCBtb2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozOTU6XFx0dzUxMDBfY29tbWFuZChwcml2LCBTMF9DUl9PUEVOKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozOTY6XFx0dzUxMDBfZW5hYmxlX2ludHIocHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzk3LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zOTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mzk5OnN0YXRpYyB2b2lkIHc1MTAwX2h3X2Nsb3NlKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQwMC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDAxOlxcdHc1MTAwX2Rpc2FibGVfaW50cihwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0MDI6XFx0dzUxMDBfY29tbWFuZChwcml2LCBTMF9DUl9DTE9TRSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDAzLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQxMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0MTE6c3RhdGljIHZvaWQgdzUxMDBfZ2V0X2RydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDEyLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBldGh0b29sX2RydmluZm8gKmluZm8pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00MTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDIwOnN0YXRpYyB1MzIgdzUxMDBfZ2V0X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDIxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0MjI6XFx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00MjMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00MjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDMwOnN0YXRpYyB1MzIgdzUxMDBfZ2V0X21zZ2xldmVsKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQzMS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDMyOlxcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDMzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQzNzpzdGF0aWMgdm9pZCB3NTEwMF9zZXRfbXNnbGV2ZWwoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHUzMiB2YWx1ZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00Mzgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQzOTpcXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ0MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ0My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0NDQ6c3RhdGljIGludCB3NTEwMF9nZXRfcmVnc19sZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDQ1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ0OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0NDk6c3RhdGljIHZvaWQgdzUxMDBfZ2V0X3JlZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDUwLVxcdFxcdFxcdCAgIHN0cnVjdCBldGh0b29sX3JlZ3MgKnJlZ3MsIHZvaWQgKmJ1ZilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NTEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ1MjpcXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ1My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NTQtXFx0cmVncy1cXHUwMDNldmVyc2lvbiA9IDE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDU1OlxcdHc1MTAwX3JlYWRidWxrKHByaXYsIFc1MTAwX0NPTU1PTl9SRUdTLCBidWYsIFc1MTAwX0NPTU1PTl9SRUdTX0xFTik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDU2LVxcdGJ1ZiArPSBXNTEwMF9DT01NT05fUkVHU19MRU47XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDU3OlxcdHc1MTAwX3JlYWRidWxrKHByaXYsIFMwX1JFR1MocHJpdiksIGJ1ZiwgVzUxMDBfUzBfUkVHU19MRU4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ1OC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ2MDpzdGF0aWMgdm9pZCB3NTEwMF9yZXN0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ2MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDYyOlxcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ2NC1cXHRuZXRpZl9zdG9wX3F1ZXVlKG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ2NTpcXHR3NTEwMF9od19yZXNldChwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0NjY6XFx0dzUxMDBfaHdfc3RhcnQocHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDY3LVxcdG5kZXYtXFx1MDAzZXN0YXRzLnR4X2Vycm9ycysrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDcxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ3MjpzdGF0aWMgdm9pZCB3NTEwMF9yZXN0YXJ0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ3My17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDc0OlxcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB3NTEwMF9wcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ3NS1cXHRcXHRcXHRcXHRcXHQgICAgICAgcmVzdGFydF93b3JrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDc3OlxcdHc1MTAwX3Jlc3RhcnQocHJpdi1cXHUwMDNlbmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDc4LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDgwOnN0YXRpYyB2b2lkIHc1MTAwX3R4X3RpbWVvdXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHVuc2lnbmVkIGludCB0eHF1ZXVlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ4MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDgyOlxcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDgzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDg2LVxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0ODc6XFx0XFx0dzUxMDBfcmVzdGFydChuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00ODgtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ4OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0OTA6c3RhdGljIHZvaWQgdzUxMDBfdHhfc2tiKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ5MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDkyOlxcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDkzLVxcdHUxNiBvZmZzZXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ5NTpcXHRvZmZzZXQgPSB3NTEwMF9yZWFkMTYocHJpdiwgVzUxMDBfUzBfVFhfV1IocHJpdikpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ5NjpcXHR3NTEwMF93cml0ZWJ1Zihwcml2LCBvZmZzZXQsIHNrYi1cXHUwMDNlZGF0YSwgc2tiLVxcdTAwM2VsZW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ5NzpcXHR3NTEwMF93cml0ZTE2KHByaXYsIFc1MTAwX1MwX1RYX1dSKHByaXYpLCBvZmZzZXQgKyBza2ItXFx1MDAzZWxlbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDk4LVxcdG5kZXYtXFx1MDAzZXN0YXRzLnR4X2J5dGVzICs9IHNrYi1cXHUwMDNlbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTAxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUwMjpcXHR3NTEwMF9jb21tYW5kKHByaXYsIFMwX0NSX1NFTkQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTUwMy19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTA0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUwNTpzdGF0aWMgdm9pZCB3NTEwMF90eF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MDYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUwNzpcXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdzUxMDBfcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MDgtXFx0XFx0XFx0XFx0XFx0ICAgICAgIHR4X3dvcmspO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTE0LVxcdFxcdHJldHVybjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1MTU6XFx0dzUxMDBfdHhfc2tiKHByaXYtXFx1MDAzZW5kZXYsIHNrYik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTE2LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTE4OnN0YXRpYyBuZXRkZXZfdHhfdCB3NTEwMF9zdGFydF90eChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MTkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUyMDpcXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTUyMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTUyOC1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUyOTpcXHRcXHR3NTEwMF90eF9za2IobmRldiwgc2tiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MzAtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTM0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUzNTpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnc1MTAwX3J4X3NrYihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MzYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUzNzpcXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTUzOC1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTQxLVxcdHU4IGhlYWRlclsyXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1NDI6XFx0dTE2IHJ4X2J1Zl9sZW4gPSB3NTEwMF9yZWFkMTYocHJpdiwgVzUxMDBfUzBfUlhfUlNSKHByaXYpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NDMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTQ3OlxcdG9mZnNldCA9IHc1MTAwX3JlYWQxNihwcml2LCBXNTEwMF9TMF9SWF9SRChwcml2KSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTQ4OlxcdHc1MTAwX3JlYWRidWYocHJpdiwgb2Zmc2V0LCBoZWFkZXIsIDIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU0OS1cXHRyeF9sZW4gPSBnZXRfdW5hbGlnbmVkX2JlMTYoaGVhZGVyKSAtIDI7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NTItXFx0aWYgKHVubGlrZWx5KCFza2IpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTUzOlxcdFxcdHc1MTAwX3dyaXRlMTYocHJpdiwgVzUxMDBfUzBfUlhfUkQocHJpdiksIG9mZnNldCArIHJ4X2J1Zl9sZW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjU1NDpcXHRcXHR3NTEwMF9jb21tYW5kKHByaXYsIFMwX0NSX1JFQ1YpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU1NS1cXHRcXHRuZGV2LVxcdTAwM2VzdGF0cy5yeF9kcm9wcGVkKys7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NTktXFx0c2tiX3B1dChza2IsIHJ4X2xlbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTYwOlxcdHc1MTAwX3JlYWRidWYocHJpdiwgb2Zmc2V0ICsgMiwgc2tiLVxcdTAwM2VkYXRhLCByeF9sZW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjU2MTpcXHR3NTEwMF93cml0ZTE2KHByaXYsIFc1MTAwX1MwX1JYX1JEKHByaXYpLCBvZmZzZXQgKyAyICsgcnhfbGVuKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1NjI6XFx0dzUxMDBfY29tbWFuZChwcml2LCBTMF9DUl9SRUNWKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NjMtXFx0c2tiLVxcdTAwM2Vwcm90b2NvbCA9IGV0aF90eXBlX3RyYW5zKHNrYiwgbmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTcxOnN0YXRpYyB2b2lkIHc1MTAwX3J4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU3Mi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTczOlxcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB3NTEwMF9wcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU3NC1cXHRcXHRcXHRcXHRcXHQgICAgICAgcnhfd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTc3OlxcdHdoaWxlICgoc2tiID0gdzUxMDBfcnhfc2tiKHByaXYtXFx1MDAzZW5kZXYpKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NzgtXFx0XFx0bmV0aWZfcngoc2tiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTgwOlxcdHc1MTAwX2VuYWJsZV9pbnRyKHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU4MS19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjU4MzpzdGF0aWMgaW50IHc1MTAwX25hcGlfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTg0LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1ODU6XFx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBjb250YWluZXJfb2YobmFwaSwgc3RydWN0IHc1MTAwX3ByaXYsIG5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU4Ni1cXHRpbnQgcnhfY291bnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01ODgtXFx0Zm9yIChyeF9jb3VudCA9IDA7IHJ4X2NvdW50IFxcdTAwM2MgYnVkZ2V0OyByeF9jb3VudCsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTg5OlxcdFxcdHN0cnVjdCBza19idWZmICpza2IgPSB3NTEwMF9yeF9za2IocHJpdi1cXHUwMDNlbmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTkwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTk4LVxcdFxcdG5hcGlfY29tcGxldGVfZG9uZShuYXBpLCByeF9jb3VudCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTk5OlxcdFxcdHc1MTAwX2VuYWJsZV9pbnRyKHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTYwMC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NjA1OnN0YXRpYyBpcnFyZXR1cm5fdCB3NTEwMF9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqbmRldl9pbnN0YW5jZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MDYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTYwNy1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IG5kZXZfaW5zdGFuY2U7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NjA4OlxcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjA5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjYxMDpcXHRpbnQgaXIgPSB3NTEwMF9yZWFkKHByaXYsIFc1MTAwX1MwX0lSKHByaXYpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MTEtXFx0aWYgKCFpcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MTItXFx0XFx0cmV0dXJuIElSUV9OT05FO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjYxMzpcXHR3NTEwMF93cml0ZShwcml2LCBXNTEwMF9TMF9JUihwcml2KSwgaXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTYxNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTYyMC1cXHRpZiAoaXIgXFx1MDAyNiBTMF9JUl9SRUNWKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NjIxOlxcdFxcdHc1MTAwX2Rpc2FibGVfaW50cihwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MjItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NjMyOnN0YXRpYyBpcnFyZXR1cm5fdCB3NTEwMF9kZXRlY3RfbGluayhpbnQgaXJxLCB2b2lkICpuZGV2X2luc3RhbmNlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTYzMy17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjM0LVxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gbmRldl9pbnN0YW5jZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo2MzU6XFx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MzYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02NDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NjUwOnN0YXRpYyB2b2lkIHc1MTAwX3NldHJ4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTY1MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NjUyOlxcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB3NTEwMF9wcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTY1My1cXHRcXHRcXHRcXHRcXHQgICAgICAgc2V0cnhfd29yayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjU0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjY1NTpcXHR3NTEwMF9od19zdGFydChwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02NTYtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTY1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo2NTg6c3RhdGljIHZvaWQgdzUxMDBfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjU5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo2NjA6XFx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02NjEtXFx0Ym9vbCBzZXRfcHJvbWlzYyA9IChuZGV2LVxcdTAwM2VmbGFncyBcXHUwMDI2IElGRl9QUk9NSVNDKSAhPSAwO1xcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE1OjQ4OjIwLjUxODU5Njg3NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MDUwMzYwNDAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgdGhlIFc1MTAwIERyaXZlcioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jYCBkcml2ZXIsIHNwZWNpZmljYWxseSwgYW5kIHdoZXRoZXIgaXQncyB3b3J0aCBmdXp6aW5nIGluIHRoZSBjb250ZXh0IG9mIG91ciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gSXQncyBlaXRoZXIgYW4gU1BJIGRldmljZSwgYXMgcGVyIGB3NTEwMC1zcGkuY2AsIG9yIGEgcGxhdGZvcm0gZGV2aWNlLiBUaGUgY3JpdGljYWwgcXVlc3Rpb246IGNhbiBTeXprYWxsZXIgaW5zdGFudGlhdGUgaXQgZGlyZWN0bHk/XG5cblN5emthbGxlciBjYW4gd29yayB3aXRoIFNQSSBkZXZpY2VzLCByaWdodD8gQnV0IGl0IG5lZWRzIGEgbWVjaGFuaXNtIOKAkyBlaXRoZXIgaW5qZWN0aW9uLCBwc2V1ZG8tZGV2aWNlcywgb3IgZGV2aWNlIHRyZWUgb3ZlcmxheXMuIEFuZCB0aGUgdXN1YWwgUUVNVSBzZXR1cCBkb2Vzbid0IGp1c3QgKmhhdmUqIFNQSSBkZXZpY2VzIGx5aW5nIGFyb3VuZCB1bmxlc3Mgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIERvZXMgUUVNVSBldmVuIGhhdmUgYSB2aXJ0dWFsIFNQSSBjb250cm9sbGVyIGJ5IGRlZmF1bHQ/IFllcywgYnV0IHR5cGljYWxseSB3aXRob3V0IGEgVzUxMDAgYXR0YWNoZWQuIFNvLCBTeXprYWxsZXIgKmNvdWxkKiB0ZXN0IGl0IGlmIHRoZSBwcm9iZSBnZXRzIHRyaWdnZXJlZC5cblxuSXMgYHc1MTAwX3Byb2JlYCByZWFjaGFibGU/IExldCdzIHRyYWNlIGl0LiBJdCdzIGNhbGxlZCBmcm9tIGVpdGhlciBgdzUxMDBfc3BpX3Byb2JlYCBvciBgdzUxMDBfbW1pb19wcm9iZWAuIENhbiBTeXprYWxsZXIgZGlyZWN0bHkgdHJpZ2dlciBgdzUxMDBfcHJvYmVgPyBNeSBpbml0aWFsIGluc3RpbmN0IGlzIG5vLCBiZWNhdXNlIHdoaWxlIFN5emthbGxlciBoYXMgYHN5el9nZW5ldGxpbmtfZ2V0X2ZhbWlseWAgYW5kIHNvIG9uLCBpdCB1c3VhbGx5IHN0cnVnZ2xlcyB3aXRoIHBsYXRmb3JtL1NQSSBkZXZpY2VzIHVubGVzcyB0aGVyZSdzIGEgc3BlY2lmaWMgU3l6a2FsbGVyIGRlc2NyaXB0aW9uLCBvciBpZiBpdCdzIGEgUENJIG9yIFVTQiBkZXZpY2UsIGJvdGggb2Ygd2hpY2ggY2FuIGJlIGVtdWxhdGVkLlxuXG5Ob3csIHRoZSBwcm9tcHQncyBpbnN0cnVjdGlvbnMgYXJlIGtleS4gSXQgc3RhdGVzIGEgXCJXb3J0aEZ1enppbmc9ZmFsc2VcIiBpZiB0aGUgcGF0Y2ggY29uY2VybnMgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBzcGVjaWZpY2FsbHkgaWYgaXQncyBzb2Z0d2FyZS1lbXVsYXRlZCwgb3IgZXZlbiBtb3JlLCBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycy4gVGhpbmdzIHRoYXQgbmVlZCBwaHlzaWNhbCBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cblxuU28sIHRoZSBjcnV4IG9mIHRoZSBtYXR0ZXI6ICppcyogdGhlIFc1MTAwIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVU/IFRoaXMgaXMgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uLiBJIG5lZWQgdG8gdmVyaWZ5IHdoZXRoZXIgdGhlIFc1MTAwIGlzIHByZXNlbnQgaW4gdGhlIHN0YW5kYXJkIFFFTVUgY29uZmlndXJhdGlvbi4gVGhhdCdzIHRoZSBmaXJzdCB0aGluZyB0byBjaGVjay5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk2MzYsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTU6NDg6NTcuNTY4OTU5MTY3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MjQ2NDY3MywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidzUxMDBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwidG9vbHMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNTo0ODo1Ny43MzE0MzQ4NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMTY1NDQ3NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgc3VtbWFyaXplZCBhcyByZXF1ZXN0ZWQ6XG5cbioqQ2hlY2tpbmcgU3l6a2FsbGVyIGZvciBXNTEwMCBJbmZvcm1hdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc3l6a2FsbGVyIGNvdmVyYWdlLCBpZiBhbnksIGZvciB0aGUgVzUxMDAuIFRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byBzZWUgaWYgdGhlcmUgYXJlIGV4aXN0aW5nIGRlc2NyaXB0aW9ucywgZGVmaW5pdGlvbnMsIG9yIGV2ZW4ganVzdCBtZW50aW9ucyBvZiB0aGF0IHNwZWNpZmljIGhhcmR3YXJlIGNvbXBvbmVudCB3aXRoaW4gdGhlIHN5emthbGxlciBmcmFtZXdvcmsuIFRoaXMgd2lsbCBkaWN0YXRlIG15IG5leHQgc3RlcHMuIElmIGl0J3MgYWxyZWFkeSBkb2N1bWVudGVkLCBJIGNhbiBidWlsZCBvbiB0aGF0IGtub3dsZWRnZS4gSWYgbm90LCB0aGVuIEkga25vdyBJJ20gc3RhcnRpbmcgZnJvbSBzY3JhdGNoLCB3aGljaCB3aWxsIHJlcXVpcmUgYSBtdWNoIGRpZmZlcmVudCBhcHByb2FjaC4gRWl0aGVyIHdheSwgY2hlY2tpbmcgc3l6a2FsbGVyIGlzIHRoZSBpbnRlbGxpZ2VudCBpbml0aWFsIG1vdmUuIExldCdzIHNlZSB3aGF0J3Mgb3V0IHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDU2OSwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE1OjQ5OjAxLjg0Nzk4MjE2M1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODMxNzAzMywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidzUxMDBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTU6NDk6MDEuOTE2MzA2Mjc2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU1MDQ3NzY1Njg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU3l6a2FsbGVyIENvbnRleHQgZm9yIFdpem5ldCBXNTEwMCBWdWxuZXJhYmlsaXR5KipcblxuT2theSwgZmlyc3QgdGhvdWdodDogV2FpdCwgdGhvc2Ugc3l6a2FsbGVyIGRlc2NyaXB0aW9ucyBhcmVuJ3QgYWN0dWFsbHkgKmluKiB0aGUga2VybmVsIHRyZWUsIHJpZ2h0PyBCdXQgdGhlIHByb21wdCBzdGF0ZXMgYW4gaW1wb3NzaWJpbGl0eTogcmVhY2hpbmcgY29kZSBwYXRocyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIGVtdWxhdGVkIGhhcmR3YXJlLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoZSBXaXpuZXQgVzUxMDAgaXMgYW4gZW1iZWRkZWQgRXRoZXJuZXQgY29udHJvbGxlciwgdHlwaWNhbGx5IHVzZWQgaW4gc29tZXRoaW5nIGxpa2UgYW4gQXJkdWlubywgYW5kIGl0IGNvbm5lY3RzIHZpYSBTUEkgb3IgbWVtb3J5LW1hcHBlZCBJL08uXG5cbkNhbiB0aGlzIGNvZGUgZXZlbiAqYmUqIHJlYWNoZWQgaW4gUUVNVT8gSG1tLCBRRU1VIGRvZXNuJ3QgZW11bGF0ZSB0aGUgVzUxMDAuIFNvLCBjYW4gc3l6a2FsbGVyIGV2ZW4gaW5zdGFudGlhdGUgdGhvc2UgcGxhdGZvcm0gb3IgU1BJIGRldmljZXM/IE5vLCB0aGF0IGBzeXpfZGV2bGlua2Agb3Igc2ltaWxhciBkb2Vzbid0IGRvIHRoYXQsIGRvZXMgaXQ/IEkgYmVsaWV2ZSBzeXprYWxsZXIgY2FuIGluamVjdCBkZXZpY2UgdHJlZSBvdmVybGF5cyBvciB1c2UgYHBsYXRmb3JtX2RldmljZV9yZWdpc3RlcmAsIHByb3ZpZGVkIHRoZXJlJ3MgYSBwc2V1ZG8tc3lzY2FsbC4gQnV0IGdlbmVyYWxseSwgaXQgZG9lc24ndC5cblxuSG93IGFib3V0IGEgd2F5IHRvIHRyaWdnZXIgYHc1MTAwX3Byb2JlYCBkaXJlY3RseT8gSSB3b25kZXIuLi4gdGhyb3VnaCBgc3lzZnNgPyBOYWgsIHlvdSBjYW4ndCBqdXN0ICpjcmVhdGUqIGFuIFNQSSBkZXZpY2UgZnJvbSBzeXNmcyB1bmxlc3MgeW91IGhhdmUgYW4gU1BJIGNvbnRyb2xsZXIgdGhhdCBzdXBwb3J0cyBpdCwgbGlrZSBgc3BpZGV2YCwgcmlnaHQ/IE5vLCBgc3BpZGV2YCBpcyBmb3IgdXNlcnNwYWNlIFNQSSBhY2Nlc3MuXG5cbldhaXQsIGlzbid0IHRoZXJlIHNvbWV0aGluZyBsaWtlIGBzcGktbW9ja2A/IEkgc2hvdWxkIGNoZWNrIGlmIHRoZXJlJ3MgKmFueSogd2F5IHRvIHByb2JlIFNQSSBkZXZpY2VzIHdpdGhpbiBzeXprYWxsZXIuIERvZXMgc3l6a2FsbGVyIGhhdmUgc29tZXRoaW5nIGxpa2UgYHN5el9zcGlfc2V0dXBgPyBOb3BlLlxuXG5Pa2F5LCBsZXQncyBzdGVwIGJhY2suIElmIHRoZSBwYXRjaCBpcyBhdXRob3JlZCBieSBgc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VgLCBpdCAqbWlnaHQqIG1lYW4gc3l6a2FsbGVyIGZvdW5kIGEgY3Jhc2ggb3Igd2FzIHRlc3RpbmcgdGhpcyBwYXRjaCwgcmlnaHQ/IFdhaXQsIGhvbGQgb24uIFRoZSBwcm9tcHQgaXMgc2F5aW5nOlxuXG5gYGBcbmNvbW1pdCA3MjRjOGY3MWY4YmUwOTk0ZjE0N2NlNWZhMzc5ZTU2MmYxZTExYmQyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgNCAxNTo0NTo1NCAyMDI2ICswMDAwXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5gYGBcblxuVGhpcyBpcyBqdXN0IGEgZHVtbXkgY29tbWl0IG1lc3NhZ2UgZnJvbSBzeXprYWxsZXIsIHJpZ2h0PyBUaGlzIG1lYW5zIGl0J3MganVzdCB0ZXN0aW5nIHBhdGNoZXMgc2VudCB0byB0aGUgbWFpbGluZyBsaXN0cy4gSWYgc29tZW9uZSBzZW5kcyBhIHBhdGNoIGZvciBgdzUxMDBgLCBzeXprYWxsZXIgd2lsbCB0cnkgYW5kIHRlc3QgaXQsIG1heWJlIGp1c3QgY29tcGlsZSBpdCBhbmQgZmluZCBubyBjb3ZlcmFnZS5cblxuU28gaWYgaXQncyBhbiBTUEkvTU1JTyBkZXZpY2UsIGl0ICpyZXF1aXJlcyogaGFyZHdhcmUgb3IgYSBmdWxsIFFFTVUgZW11bGF0aW9uLiBEb2VzIFFFTVUgZW11bGF0ZSBXNTEwMD8gTm8uIERvZXMgUUVNVSBlbXVsYXRlIFc1NTAwPyBOby4gU28gSSBzaG91bGQgY2hlY2sgaWYgdGhlcmUncyAqYW55KiBRRU1VIGVtdWxhdGlvbiBmb3IgV2l6bmV0LlxuXG5DYW4ndCBkbyBhIGZ1bGwgc291cmNlIHNlYXJjaCwgYnV0IEkgKmtub3cqIFdpem5ldCBpc24ndCBhIHN0YW5kYXJkIFFFTVUgZGV2aWNlLiBTdGFuZGFyZCBkZXZpY2VzIGFyZSB0aGluZ3MgbGlrZSBlMTAwMCwgcnRsODEzOSwgdmlydGlvLW5ldCwgbmUyaywgcGNuZXQsIHZteG5ldDMsIGV0Yy4gQWxzbywgdGhpcyBwYXRjaCBpcyBhZGRpbmcgYSBHUElPIGxpbmsgZGV0ZWN0aW9uLCBhbmQgR1BJT3MgYXJlICpoYXJkd2FyZS1zcGVjaWZpYyosIHJpZ2h0P1xuXG5UaGVyZWZvcmUsIHRoaXMgZHJpdmVyIGlzIGZvciBhIHBoeXNpY2FsIGNoaXAgKFdpem5ldCBXNTEwMC9XNTIwMC9XNTUwMCkgY29ubmVjdGVkIHZpYSBTUEkgb3IgTU1JTywgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoYXQgbWVhbnMgaXQncyAqaW1wb3NzaWJsZSogdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuXG5cbkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgdGhvdWdoLiBJcyB0aGVyZSBhbnkgc29ydCBvZiB2aXJ0dWFsIGRyaXZlciwgYW55dGhpbmcgYXQgYWxsPyBMZXQncyBjaGVjayBgZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmNgLi4uIGFoLCBhbmQgYHc1MTAwX3Byb2JlYC4gSXQncyBjYWxsZWQgYnkgYHc1MTAwX3NwaV9wcm9iZWAgaW4gYHc1MTAwLXNwaS5jYC4gWWVwLCBjb25maXJtZWQuIFRoaXMgY29uZmlybXMgaXQncyBub3QgcG9zc2libGUgdG8gcmVhY2ggdGhlIGNvZGUgcGF0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA3OTIsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTU6NTY6MzYuOTY0MDc0OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI5OTY4ODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidzUxMDBfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM9NDIxPXN0YXRpYyBpbnQgdzUxMDBfc3BpX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDUyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0NTM6XFx0cmV0dXJuIHc1MTAwX3Byb2JlKFxcdTAwMjZzcGktXFx1MDAzZWRldiwgb3BzLCBwcml2X3NpemUsIG1hYywgc3BpLVxcdTAwM2VpcnEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NTQtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM9NzQwPUVYUE9SVF9TWU1CT0xfR1BMKHc1MTAwX29wc19wcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy03NDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NzQyOmludCB3NTEwMF9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCB3NTEwMF9vcHMgKm9wcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy03NDMtXFx0XFx0aW50IHNpemVvZl9vcHNfcHJpdiwgY29uc3Qgdm9pZCAqbWFjX2FkZHIsIGludCBpcnEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy04ODktfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjg5MDpFWFBPUlRfU1lNQk9MX0dQTCh3NTEwMF9wcm9iZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtODkxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmg9Mjk9dm9pZCAqdzUxMDBfb3BzX3ByaXYoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5oLTMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5oOjMxOmludCB3NTEwMF9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCB3NTEwMF9vcHMgKm9wcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuaC0zMi1cXHRcXHRpbnQgc2l6ZW9mX29wc19wcml2LCBjb25zdCB2b2lkICptYWNfYWRkciwgaW50IGlycSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE1OjU2OjM3LjAwNzA4MDQ2NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzY0Mjc2MTYyMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGlnZ2luZyBpbnRvIEZ1bmN0aW9uIENhbGxzKipcblxuQWxyaWdodCwgSSdtIHRyeWluZyB0byBnZXQgYSBoYW5kbGUgb24gdGhpcyBgdzUxMDBfcHJvYmVgIGZ1bmN0aW9uLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBjb21lcyB0byBtaW5kIGlzOiAqSXMgdGhlcmUgYW55d2hlcmUgZWxzZSBpbiB0aGlzIGNvZGViYXNlLCBvciBhbnkgcmVsYXRlZCBmaWxlcywgdGhhdCB0aGlzIGZ1bmN0aW9uIGdldHMgY2FsbGVkPyogSSBuZWVkIHRvIHNlZSB0aGUgYmlnZ2VyIHBpY3R1cmUsIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhpcyBmdW5jdGlvbiBmaXRzIGludG8gdGhlIG92ZXJhbGwgbG9naWMgYW5kIHdoYXQgdHJpZ2dlcnMgaXRzIGV4ZWN1dGlvbi4gS25vd2luZyB0aGUgY2FsbGVycyB3aWxsIHRlbGwgbWUgaXRzIHB1cnBvc2UuIEkgbmVlZCBhIGNvbXByZWhlbnNpdmUgb3ZlcnZpZXcgb2YgaG93IHRoaXMgZnVuY3Rpb24gaXMgaW50ZWdyYXRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMxMTYsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjowMToxMy40MzQ2OTkzMDdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MTY2NjEyNjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidzUxMDBfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYz00MjE9c3RhdGljIGludCB3NTEwMF9zcGlfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ1MzpcXHRyZXR1cm4gdzUxMDBfcHJvYmUoXFx1MDAyNnNwaS1cXHUwMDNlZGV2LCBvcHMsIHByaXZfc2l6ZSwgbWFjLCBzcGktXFx1MDAzZWlycSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQ1NC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYz03NDA9RVhQT1JUX1NZTUJPTF9HUEwodzUxMDBfb3BzX3ByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTc0MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo3NDI6aW50IHc1MTAwX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IHc1MTAwX29wcyAqb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTc0My1cXHRcXHRpbnQgc2l6ZW9mX29wc19wcml2LCBjb25zdCB2b2lkICptYWNfYWRkciwgaW50IGlycSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTg4OS19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6ODkwOkVYUE9SVF9TWU1CT0xfR1BMKHc1MTAwX3Byb2JlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy04OTEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuaD0yOT12b2lkICp3NTEwMF9vcHNfcHJpdihjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmgtMzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmg6MzE6aW50IHc1MTAwX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IHc1MTAwX29wcyAqb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5oLTMyLVxcdFxcdGludCBzaXplb2Zfb3BzX3ByaXYsIGNvbnN0IHZvaWQgKm1hY19hZGRyLCBpbnQgaXJxKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6MDE6MTUuMjUxMzY1MTQ5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIyMDA5NDQ2NzY0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgVzUxMDAgRHJpdmVyIFByb2JlIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlIGRyaXZlciBjb2RlIGFuZCBpdCBzZWVtcyBgdzUxMDBfcHJvYmVgIGlzIG9ubHkgY2FsbGVkIGJ5IGB3NTEwMF9zcGlfcHJvYmVgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcuIEknbSB3b25kZXJpbmcgaWYgdGhlcmUgd2FzIGV2ZXIgYSBgdzUxMDAtbW1pby5jYCBmaWxlIGZvciBtZW1vcnktbWFwcGVkIEkvTy4gRGlkIHRoZXkgZ2V0IHJpZCBvZiBpdCBjb21wbGV0ZWx5LCBvciBhbSBJIGp1c3Qgbm90IHNlZWluZyBpdD8gSSBrbm93IGhvdyB0aGVzZSB0aGluZ3MgZ28sIHNvbWV0aW1lcyBjb2RlIGdldHMgbW92ZWQgb3IgcmVmYWN0b3JlZC4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhlIGVudGlyZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L2AgZGlyZWN0b3J5IGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlIEkgaGF2ZW4ndCBvdmVybG9va2VkIGFueSByZWxhdGVkIGZpbGVzLiBHb3R0YSBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM4NDEsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjowNDo1NS4zNDU4MzY0MTVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDkwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogW1xuICAgIFwidzUxMDAtc3BpLmNcIixcbiAgICBcInc1MTAwLmNcIixcbiAgICBcInc1MTAwLmhcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6MDQ6NTUuMzQ1ODg4NDU1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNTA3MTYxMTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVzUxMDAgRHJpdmVyIGluIGEgUUVNVSBFbnZpcm9ubWVudCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGZpbGVzOiBgdzUxMDAtc3BpLmNgLCBgdzUxMDAuY2AsIGFuZCBgdzUxMDAuaGAuIFJpZ2h0IG9mZiB0aGUgYmF0LCBpdCdzIGNsZWFyIHRoaXMgaXMgYW4gU1BJLWJhc2VkIGRldmljZS4gVGhhdCdzIHRoZSBrZXkuIE5vdywgdGhlIHN0YW5kYXJkIFFFTVUgc2V0dXAgSSdtIHVzaW5nICpkb2Vzbid0KiBlbXVsYXRlIFNQSSBkZXZpY2VzIG91dC1vZi10aGUtYm94LiBUaGF0J3MgdGhlIGltbWVkaWF0ZSBwcm9ibGVtLlxuXG5MZXQncyB0aGluay4gQ2FuIEkgc29tZWhvdyBpbmplY3QgYW4gU1BJIGRldmljZSB1c2luZyBzeXprYWxsZXI/IEkga25vdyBzeXprYWxsZXIgKmNhbiogYmUgcG93ZXJmdWwsIGJ1dCBJIGRvbid0IHJlY2FsbCBzZWVpbmcgYSBnZW5lcmFsIFNQSSBpbmplY3Rpb24gbWVjaGFuaXNtIHRoYXQgbGV0cyB5b3UganVzdCBwb2tlIGFueSBTUEkgZHJpdmVyLiBVbmxlc3MgdGhlcmUncyBhIHBzZXVkby1kZXZpY2UgZGVmaW5lZCBzb21ld2hlcmUsIG9yIGl04oCZcyBwYXJ0IG9mIHRoZSBkZXZpY2UgdHJlZSwgdGhhdCBhdmVudWUgaXMgbGlrZWx5IGJsb2NrZWQuXG5cbkV2ZW4gKmlmKiBJIGNvdWxkIHdyYW5nbGUgc3l6a2FsbGVyIHRvIG92ZXJsYXkgYSBkZXZpY2UgdHJlZSBlbnRyeSwgdGhlIGRyaXZlciBpdHNlbGYsIHRoaXMgYHc1MTAwYCBkcml2ZXIsIGlzIGdvaW5nIHRvIGJlIGNvbW11bmljYXRpbmcgd2l0aCB0aGUgaGFyZHdhcmUgdXNpbmcgdGhvc2UgbG93LWxldmVsIFNQSSByZWFkL3dyaXRlIGZ1bmN0aW9uczogYHc1MTAwX3NwaV9yZWFkYCwgYHc1MTAwX3NwaV93cml0ZWAuIElmIHRoZXJlJ3Mgbm8gYWN0dWFsIGhhcmR3YXJlIGNvbm5lY3RlZCwgdGhvc2UgU1BJIHJlYWRzIHdpbGwgcHJvYmFibHkganVzdCByZXR1cm4gZ2FyYmFnZSDigJMgbWF5YmUgemVyb2VzLCBtYXliZSBgMHhmZmAg4oCTIHNvbWUgZGVmYXVsdCB2YWx1ZSB0aGF0IGRvZXNu4oCZdCBjb3JyZXNwb25kIHRvIHRoZSBleHBlY3RlZCByZXNwb25zZS4gQW5kIHRoYXTigJlzIGEgcmVkIGZsYWcuIFRoZSBkcml2ZXIncyBgcHJvYmVgIGZ1bmN0aW9uLCB0aGF0J3MgdGhlIGNydWNpYWwgcG9pbnQuIFRoZSBwcm9iZSB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgZmFpbCBpZiBpdCByZWFkcyBnYXJiYWdlLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGl0IHJlYWRzIGZyb20gdGhlIGhhcmR3YXJlIGFuZCBlcnJvcnMgb3V0IGlmIGl0IGRvZXNuJ3QgbWF0Y2ggdGhlIGV4cGVjdGVkIHZhbHVlcy4gTGV0IG1lIGNoZWNrIGB3NTEwMF9wcm9iZWAgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQxNzAsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTYsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjA1OjM1Ljg1MzA1MjAxNloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTUwNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNzQwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDc0MDpcXHRFWFBPUlRfU1lNQk9MX0dQTCh3NTEwMF9vcHNfcHJpdik7XFxuIDc0MTpcXHRcXG4gNzQyOlxcdGludCB3NTEwMF9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCB3NTEwMF9vcHMgKm9wcyxcXG4gNzQzOlxcdFxcdFxcdGludCBzaXplb2Zfb3BzX3ByaXYsIGNvbnN0IHZvaWQgKm1hY19hZGRyLCBpbnQgaXJxKVxcbiA3NDQ6XFx0e1xcbiA3NDU6XFx0XFx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXY7XFxuIDc0NjpcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldjtcXG4gNzQ3OlxcdFxcdGludCBlcnI7XFxuIDc0ODpcXHRcXHRzaXplX3QgYWxsb2Nfc2l6ZTtcXG4gNzQ5OlxcdFxcbiA3NTA6XFx0XFx0YWxsb2Nfc2l6ZSA9IHNpemVvZigqcHJpdik7XFxuIDc1MTpcXHRcXHRpZiAoc2l6ZW9mX29wc19wcml2KSB7XFxuIDc1MjpcXHRcXHRcXHRhbGxvY19zaXplID0gQUxJR04oYWxsb2Nfc2l6ZSwgTkVUREVWX0FMSUdOKTtcXG4gNzUzOlxcdFxcdFxcdGFsbG9jX3NpemUgKz0gc2l6ZW9mX29wc19wcml2O1xcbiA3NTQ6XFx0XFx0fVxcbiA3NTU6XFx0XFx0YWxsb2Nfc2l6ZSArPSBORVRERVZfQUxJR04gLSAxO1xcbiA3NTY6XFx0XFxuIDc1NzpcXHRcXHRuZGV2ID0gYWxsb2NfZXRoZXJkZXYoYWxsb2Nfc2l6ZSk7XFxuIDc1ODpcXHRcXHRpZiAoIW5kZXYpXFxuIDc1OTpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gNzYwOlxcdFxcdFNFVF9ORVRERVZfREVWKG5kZXYsIGRldik7XFxuIDc2MTpcXHRcXHRkZXZfc2V0X2RydmRhdGEoZGV2LCBuZGV2KTtcXG4gNzYyOlxcdFxcdHByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG4gNzYzOlxcdFxcbiA3NjQ6XFx0XFx0c3dpdGNoIChvcHMtXFx1MDAzZWNoaXBfaWQpIHtcXG4gNzY1OlxcdFxcdGNhc2UgVzUxMDA6XFxuIDc2NjpcXHRcXHRcXHRwcml2LVxcdTAwM2VzMF9yZWdzID0gVzUxMDBfUzBfUkVHUztcXG4gNzY3OlxcdFxcdFxcdHByaXYtXFx1MDAzZXMwX3R4X2J1ZiA9IFc1MTAwX1RYX01FTV9TVEFSVDtcXG4gNzY4OlxcdFxcdFxcdHByaXYtXFx1MDAzZXMwX3R4X2J1Zl9zaXplID0gVzUxMDBfVFhfTUVNX1NJWkU7XFxuIDc2OTpcXHRcXHRcXHRwcml2LVxcdTAwM2VzMF9yeF9idWYgPSBXNTEwMF9SWF9NRU1fU1RBUlQ7XFxuIDc3MDpcXHRcXHRcXHRwcml2LVxcdTAwM2VzMF9yeF9idWZfc2l6ZSA9IFc1MTAwX1JYX01FTV9TSVpFO1xcbiA3NzE6XFx0XFx0XFx0YnJlYWs7XFxuIDc3MjpcXHRcXHRjYXNlIFc1MjAwOlxcbiA3NzM6XFx0XFx0XFx0cHJpdi1cXHUwMDNlczBfcmVncyA9IFc1MjAwX1MwX1JFR1M7XFxuIDc3NDpcXHRcXHRcXHRwcml2LVxcdTAwM2VzMF90eF9idWYgPSBXNTIwMF9UWF9NRU1fU1RBUlQ7XFxuIDc3NTpcXHRcXHRcXHRwcml2LVxcdTAwM2VzMF90eF9idWZfc2l6ZSA9IFc1MjAwX1RYX01FTV9TSVpFO1xcbiA3NzY6XFx0XFx0XFx0cHJpdi1cXHUwMDNlczBfcnhfYnVmID0gVzUyMDBfUlhfTUVNX1NUQVJUO1xcbiA3Nzc6XFx0XFx0XFx0cHJpdi1cXHUwMDNlczBfcnhfYnVmX3NpemUgPSBXNTIwMF9SWF9NRU1fU0laRTtcXG4gNzc4OlxcdFxcdFxcdGJyZWFrO1xcbiA3Nzk6XFx0XFx0Y2FzZSBXNTUwMDpcXG4gNzgwOlxcdFxcdFxcdHByaXYtXFx1MDAzZXMwX3JlZ3MgPSBXNTUwMF9TMF9SRUdTO1xcbiA3ODE6XFx0XFx0XFx0cHJpdi1cXHUwMDNlczBfdHhfYnVmID0gVzU1MDBfVFhfTUVNX1NUQVJUO1xcbiA3ODI6XFx0XFx0XFx0cHJpdi1cXHUwMDNlczBfdHhfYnVmX3NpemUgPSBXNTUwMF9UWF9NRU1fU0laRTtcXG4gNzgzOlxcdFxcdFxcdHByaXYtXFx1MDAzZXMwX3J4X2J1ZiA9IFc1NTAwX1JYX01FTV9TVEFSVDtcXG4gNzg0OlxcdFxcdFxcdHByaXYtXFx1MDAzZXMwX3J4X2J1Zl9zaXplID0gVzU1MDBfUlhfTUVNX1NJWkU7XFxuIDc4NTpcXHRcXHRcXHRicmVhaztcXG4gNzg2OlxcdFxcdGRlZmF1bHQ6XFxuIDc4NzpcXHRcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbiA3ODg6XFx0XFx0XFx0Z290byBlcnJfcmVnaXN0ZXI7XFxuIDc4OTpcXHRcXHR9XFxuIDc5MDpcXHRcXG4gNzkxOlxcdFxcdHByaXYtXFx1MDAzZW5kZXYgPSBuZGV2O1xcbiA3OTI6XFx0XFx0cHJpdi1cXHUwMDNlb3BzID0gb3BzO1xcbiA3OTM6XFx0XFx0cHJpdi1cXHUwMDNlaXJxID0gaXJxO1xcbiA3OTQ6XFx0XFx0cHJpdi1cXHUwMDNlbGlua19ncGlvID0gZ3Bpb2RfZ2V0X29wdGlvbmFsKGRldiwgXFxcImxpbmtcXFwiLCBHUElPRF9JTik7XFxuIDc5NTpcXHRcXHRpZiAoSVNfRVJSKHByaXYtXFx1MDAzZWxpbmtfZ3BpbykpIHtcXG4gNzk2OlxcdFxcdFxcdGVyciA9IGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHByaXYtXFx1MDAzZWxpbmtfZ3BpbyksXFxuIDc5NzpcXHRcXHRcXHRcXHRcXHQgICAgXFxcImZhaWxlZCB0byBnZXQgbGluayBHUElPXFxcXG5cXFwiKTtcXG4gNzk4OlxcdFxcdFxcdHByaXYtXFx1MDAzZWxpbmtfZ3BpbyA9IE5VTEw7XFxuIDc5OTpcXHRcXHRcXHRnb3RvIGVycl9yZWdpc3RlcjtcXG4gODAwOlxcdFxcdH1cXG4gODAxOlxcdFxcbiA4MDI6XFx0XFx0bmRldi1cXHUwMDNlbmV0ZGV2X29wcyA9IFxcdTAwMjZ3NTEwMF9uZXRkZXZfb3BzO1xcbiA4MDM6XFx0XFx0bmRldi1cXHUwMDNlZXRodG9vbF9vcHMgPSBcXHUwMDI2dzUxMDBfZXRodG9vbF9vcHM7XFxuIDgwNDpcXHRcXHRuZXRpZl9uYXBpX2FkZF93ZWlnaHQobmRldiwgXFx1MDAyNnByaXYtXFx1MDAzZW5hcGksIHc1MTAwX25hcGlfcG9sbCwgMTYpO1xcbiA4MDU6XFx0XFxuIDgwNjpcXHRcXHQvKiBUaGlzIGNoaXAgZG9lc24ndCBzdXBwb3J0IFZMQU4gcGFja2V0cyB3aXRoIG5vcm1hbCBNVFUsXFxuIDgwNzpcXHRcXHQgKiBzbyBkaXNhYmxlIFZMQU4gZm9yIHRoaXMgZGV2aWNlLlxcbiA4MDg6XFx0XFx0ICovXFxuIDgwOTpcXHRcXHRuZGV2LVxcdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX1ZMQU5fQ0hBTExFTkdFRDtcXG4gODEwOlxcdFxcbiA4MTE6XFx0XFx0ZXJyID0gcmVnaXN0ZXJfbmV0ZGV2KG5kZXYpO1xcbiA4MTI6XFx0XFx0aWYgKGVyciBcXHUwMDNjIDApXFxuIDgxMzpcXHRcXHRcXHRnb3RvIGVycl9yZWdpc3RlcjtcXG4gODE0OlxcdFxcbiA4MTU6XFx0XFx0cHJpdi1cXHUwMDNleGZlcl93cSA9IGFsbG9jX3dvcmtxdWV1ZShcXFwiJXNcXFwiLCBXUV9NRU1fUkVDTEFJTSB8IFdRX1BFUkNQVSwgMCxcXG4gODE2OlxcdFxcdFxcdFxcdFxcdFxcdG5ldGRldl9uYW1lKG5kZXYpKTtcXG4gODE3OlxcdFxcdGlmICghcHJpdi1cXHUwMDNleGZlcl93cSkge1xcbiA4MTg6XFx0XFx0XFx0ZXJyID0gLUVOT01FTTtcXG4gODE5OlxcdFxcdFxcdGdvdG8gZXJyX3dxO1xcbiA4MjA6XFx0XFx0fVxcbiA4MjE6XFx0XFxuIDgyMjpcXHRcXHRJTklUX1dPUksoXFx1MDAyNnByaXYtXFx1MDAzZXJ4X3dvcmssIHc1MTAwX3J4X3dvcmspO1xcbiA4MjM6XFx0XFx0SU5JVF9XT1JLKFxcdTAwMjZwcml2LVxcdTAwM2V0eF93b3JrLCB3NTEwMF90eF93b3JrKTtcXG4gODI0OlxcdFxcdElOSVRfV09SSyhcXHUwMDI2cHJpdi1cXHUwMDNlc2V0cnhfd29yaywgdzUxMDBfc2V0cnhfd29yayk7XFxuIDgyNTpcXHRcXHRJTklUX1dPUksoXFx1MDAyNnByaXYtXFx1MDAzZXJlc3RhcnRfd29yaywgdzUxMDBfcmVzdGFydF93b3JrKTtcXG4gODI2OlxcdFxcbiA4Mjc6XFx0XFx0aWYgKG1hY19hZGRyKVxcbiA4Mjg6XFx0XFx0XFx0ZXRoX2h3X2FkZHJfc2V0KG5kZXYsIG1hY19hZGRyKTtcXG4gODI5OlxcdFxcdGVsc2VcXG4gODMwOlxcdFxcdFxcdGV0aF9od19hZGRyX3JhbmRvbShuZGV2KTtcXG4gODMxOlxcdFxcbiA4MzI6XFx0XFx0aWYgKHByaXYtXFx1MDAzZW9wcy1cXHUwMDNlaW5pdCkge1xcbiA4MzM6XFx0XFx0XFx0ZXJyID0gcHJpdi1cXHUwMDNlb3BzLVxcdTAwM2Vpbml0KHByaXYtXFx1MDAzZW5kZXYpO1xcbiA4MzQ6XFx0XFx0XFx0aWYgKGVycilcXG4gODM1OlxcdFxcdFxcdFxcdGdvdG8gZXJyX2h3O1xcbiA4MzY6XFx0XFx0fVxcbiA4Mzc6XFx0XFxuIDgzODpcXHRcXHRlcnIgPSB3NTEwMF9od19yZXNldChwcml2KTtcXG4gODM5OlxcdFxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjA1OjM1Ljg1MzE2ODQyNloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTYyNDk0OTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIGB3NTEwMF9od19yZXNldGAgRnVuY3Rpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhpcyBgdzUxMDBfaHdfcmVzZXRgIHJvdXRpbmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCBpdCdzIGRvaW5nLiBJcyBpdCBqdXN0IHRvZ2dsaW5nIGEgcGluPyBJcyBpdCBhIG1vcmUgZWxhYm9yYXRlIHNlcXVlbmNlIGludm9sdmluZyBkZWxheXMsIG9yIHBlcmhhcHMgaW50ZXJhY3Rpbmcgd2l0aCBhbnkgcG93ZXItb24gcmVzZXQgY2lyY3VpdHJ5PyBJJ20gYWxyZWFkeSB0aGlua2luZyBhYm91dCBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIOKAkyBkb2VzIHRoZSB0aW1pbmcgYWxpZ24gY29ycmVjdGx5IHdpdGggdGhlIFc1MTAwJ3MgaW50ZXJuYWwgY2xvY2sgYW5kIHBvd2VyLXVwIGNoYXJhY3RlcmlzdGljcz8gRG9lcyBpdCBoYW5kbGUgYW55IHBvdGVudGlhbCB2b2x0YWdlIHRyYW5zaWVudHMgZ3JhY2VmdWxseSwgb3IgaXMgdGhlcmUgYSByaXNrIG9mIGV4Y2VlZGluZyBhYnNvbHV0ZSBtYXhpbXVtIHJhdGluZ3M/IEkgd2FudCB0byBtYWtlIHN1cmUgdGhlIGltcGxlbWVudGF0aW9uIGlzIHJvYnVzdCwgZXNwZWNpYWxseSBpZiB0aGlzIHJlc2V0IGlzIG9jY3VycmluZyBpbiBhIG5vaXN5IGVudmlyb25tZW50IG9yIHdpdGhpbiBhIGNyaXRpY2FsIHNlY3Rpb24uIEkgbmVlZCB0byBjb25zaWRlciBhbGwgdGhlIGZhaWx1cmUgbW9kZXMgYW5kIGhvdyB0aGlzIGZ1bmN0aW9uIGFkZHJlc3NlcyB0aGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjU3MSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6MDU6NDAuNDE1NjY4NDkzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMjI2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzNTEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzNTE6XFx0c3RhdGljIGludCB3NTEwMF9od19yZXNldChzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdilcXG4gMzUyOlxcdHtcXG4gMzUzOlxcdFxcdHUzMiBydHI7XFxuIDM1NDpcXHRcXG4gMzU1OlxcdFxcdHc1MTAwX3Jlc2V0KHByaXYpO1xcbiAzNTY6XFx0XFxuIDM1NzpcXHRcXHR3NTEwMF9kaXNhYmxlX2ludHIocHJpdik7XFxuIDM1ODpcXHRcXHR3NTEwMF93cml0ZV9tYWNhZGRyKHByaXYpO1xcbiAzNTk6XFx0XFxuIDM2MDpcXHRcXHRzd2l0Y2ggKHByaXYtXFx1MDAzZW9wcy1cXHUwMDNlY2hpcF9pZCkge1xcbiAzNjE6XFx0XFx0Y2FzZSBXNTEwMDpcXG4gMzYyOlxcdFxcdFxcdHc1MTAwX21lbW9yeV9jb25maWd1cmUocHJpdik7XFxuIDM2MzpcXHRcXHRcXHRydHIgPSBXNTEwMF9SVFI7XFxuIDM2NDpcXHRcXHRcXHRicmVhaztcXG4gMzY1OlxcdFxcdGNhc2UgVzUyMDA6XFxuIDM2NjpcXHRcXHRcXHR3NTIwMF9tZW1vcnlfY29uZmlndXJlKHByaXYpO1xcbiAzNjc6XFx0XFx0XFx0cnRyID0gVzUxMDBfUlRSO1xcbiAzNjg6XFx0XFx0XFx0YnJlYWs7XFxuIDM2OTpcXHRcXHRjYXNlIFc1NTAwOlxcbiAzNzA6XFx0XFx0XFx0dzU1MDBfbWVtb3J5X2NvbmZpZ3VyZShwcml2KTtcXG4gMzcxOlxcdFxcdFxcdHJ0ciA9IFc1NTAwX1JUUjtcXG4gMzcyOlxcdFxcdFxcdGJyZWFrO1xcbiAzNzM6XFx0XFx0ZGVmYXVsdDpcXG4gMzc0OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAzNzU6XFx0XFx0fVxcbiAzNzY6XFx0XFxuIDM3NzpcXHRcXHRpZiAodzUxMDBfcmVhZDE2KHByaXYsIHJ0cikgIT0gUlRSX0RFRkFVTFQpXFxuIDM3ODpcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gMzc5OlxcdFxcbiAzODA6XFx0XFx0cmV0dXJuIDA7XFxuIDM4MTpcXHR9XFxuIDM4MjpcXHRcXG4gMzgzOlxcdHN0YXRpYyB2b2lkIHc1MTAwX2h3X3N0YXJ0KHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxcbiAzODQ6XFx0e1xcbiAzODU6XFx0XFx0dTggbW9kZSA9IFMwX01SX01BQ1JBVztcXG4gMzg2OlxcdFxcbiAzODc6XFx0XFx0aWYgKCFwcml2LVxcdTAwM2Vwcm9taXNjKSB7XFxuIDM4ODpcXHRcXHRcXHRpZiAocHJpdi1cXHUwMDNlb3BzLVxcdTAwM2VjaGlwX2lkID09IFc1NTAwKVxcbiAzODk6XFx0XFx0XFx0XFx0bW9kZSB8PSBXNTUwMF9TMF9NUl9NRjtcXG4gMzkwOlxcdFxcdFxcdGVsc2VcXG4gMzkxOlxcdFxcdFxcdFxcdG1vZGUgfD0gUzBfTVJfTUY7XFxuIDM5MjpcXHRcXHR9XFxuIDM5MzpcXHRcXG4gMzk0OlxcdFxcdHc1MTAwX3dyaXRlKHByaXYsIFc1MTAwX1MwX01SKHByaXYpLCBtb2RlKTtcXG4gMzk1OlxcdFxcdHc1MTAwX2NvbW1hbmQocHJpdiwgUzBfQ1JfT1BFTik7XFxuIDM5NjpcXHRcXHR3NTEwMF9lbmFibGVfaW50cihwcml2KTtcXG4gMzk3OlxcdH1cXG4gMzk4OlxcdFxcbiAzOTk6XFx0c3RhdGljIHZvaWQgdzUxMDBfaHdfY2xvc2Uoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYpXFxuIDQwMDpcXHR7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjA1OjQwLjQxNTc5MzAzM1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjg5NDM0OTYxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcG9zc2liaWxpdHkgb2YgVmlydHVhbGl6ZWQgVGVzdGluZyBmb3IgdGhpcyBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGB3NTEwMF9od19yZXNldGAgZnVuY3Rpb24sIGFuZCBpdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBUaGUgY3JpdGljYWwgcGFydCBpcyB0aGF0IGl0IGNoZWNrcyB0aGUgdmFsdWUgb2YgYSByZWdpc3RlciwgYHJ0cmAsIGFnYWluc3QgYFJUUl9ERUZBVUxUYC4gIElmIHRoYXQgY2hlY2sgZmFpbHMsIGl0IGltbWVkaWF0ZWx5IHJldHVybnMgYC1FTk9ERVZgLCB3aGljaCBtZWFucyB0aGUgZHJpdmVyIHdpbGwgbm90IGxvYWQuIFRoZSBgdzUxMDBfcmVhZDE2YCBmdW5jdGlvbiwgYmVpbmcgZnVuZGFtZW50YWwsIHdpbGwgbGlrZWx5IHJldHVybiBnYXJiYWdlIGRhdGEgaWYgdGhlIGFjdHVhbCBoYXJkd2FyZSBpc24ndCBwcmVzZW50LCB3aGljaCBkZWZpbml0ZWx5IHdvbid0IG1hdGNoIGBSVFJfREVGQVVMVGAuICBBbmQgdGhpcyBoYXJkd2FyZSBoYXBwZW5zIHRvIGJlIFNQSSwgd2hpY2gsIGFzIEkga25vdywgaXMgbm90IGVtdWxhdGVkIGJ5IFFFTVUuXG5cblRoZXJlZm9yZSwgc2luY2UgYHc1MTAwX2h3X3Jlc2V0YCBpcyBkaXJlY3RseSBjYWxsZWQgaW4gYHc1MTAwX3Byb2JlYCwgaWYgdGhlIGNoZWNrIGZhaWxzLCBgdzUxMDBfcHJvYmVgIGZhaWxzLCBhbmQgdGhlIGRyaXZlciBpcyBkZWFkIGluIHRoZSB3YXRlci4gVGhpcyBtZWFucyB0aGVyZSdzIG5vIHdheSB0byBldmVuIHJlYWNoIHRoZSBmdW5jdGlvbmFsIHBhcnRzIG9mIHRoaXMgZHJpdmVyLCBsaWtlIGB3NTEwMF9vcGVuYCwgYHc1MTAwX2RldGVjdF9saW5rYCwgb3IgYHc1MTAwX2dldF9saW5rYCB3aXRoaW4gUUVNVSBvciBzaW1pbGFyIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gIFRoaXMgZmFsbHMgc3F1YXJlbHkgaW50byB0aGUgXCJpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50c1wiIGNhdGVnb3J5LiAgSXQncyBhbiBTUEkgZGV2aWNlLCBhbmQgZm9yIGEgc3BlY2lmaWMgaGFyZHdhcmUgY2hpcCBhdCB0aGF0LCBzbyB0aGVyZSB3b24ndCBiZSBhIHNvZnR3YXJlIGVtdWxhdGlvbi5cblxuTm93LCBjb3VsZCB0aGVyZSBiZSBhIGJhY2tkb29yPyBNYXliZSB0aHJvdWdoIGBzeXprYWxsZXJgIGFuZCBhIG1vY2sgU1BJIGRyaXZlcj8gTGV0IG1lIHRoaW5rLi4uIE5vLiBUaGVyZSdzIG5vIGdlbmVyaWMgbW9jayBTUEkgZHJpdmVyIHRoYXQgY2FuIGZha2UgYXJiaXRyYXJ5IGRldmljZSByZWdpc3RlcnMgaW4gdGhlIG1haW5saW5lIGtlcm5lbC4gIFdoaWxlIHRoZXJlIGlzIGBzcGktbG9vcGJhY2stdGVzdGAsIGl0J3Mgbm90IGEgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyIGZha2VyLiBTbywgdGhhdCdzIG5vdCBoYXBwZW5pbmcuXG5cblRoZXJlZm9yZSwgdGhlIGNvbmNsdXNpb24gdGhhdCB0aGlzIGlzIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlzIGFjY3VyYXRlLiBKdXN0IHdhbnQgdG8gcXVpY2tseSBkb3VibGUgY2hlY2sgdGhlIGBSVFJfREVGQVVMVGAgdmFsdWUgb25lIGxhc3QgdGltZSBhbmQgdGhlbiBJIGNhbiBtb3ZlIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzU2NywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjA1OjUzLjMxMDE0NTcwNFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMyOTA2ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUlRSX0RFRkFVTFRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYz0zNT1NT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy04OS0jZGVmaW5lIFc1MTAwX1JUUlxcdFxcdDB4MDAxNyAvKiBSZXRyeSBUaW1lLXZhbHVlIFJlZ2lzdGVyICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6OTA6I2RlZmluZSAgIFJUUl9ERUZBVUxUXFx0XFx0ICAyMDAwIC8qID0weDA3ZDAgKDIwMDApICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtOTEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYz0zNTE9c3RhdGljIGludCB3NTEwMF9od19yZXNldChzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM3Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozNzc6XFx0aWYgKHc1MTAwX3JlYWQxNihwcml2LCBydHIpICE9IFJUUl9ERUZBVUxUKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM3OC1cXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6MDU6NTMuMzUzNDQyWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0NDkyMjY2OTI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFNQSSBEcml2ZXIncyBQcm9iaW5nIENhcGFiaWxpdGllcyoqXG5cbk9rYXksIHNvIEkndmUgY29uZmlybWVkIHRoYXQgdGhlIGRlZmF1bHQgcmVnaXN0ZXIgdmFsdWUsIGBSVFJfREVGQVVMVGAsIGlzIGluZGVlZCAyMDAwLCB3aGljaCBpbiBoZXhhZGVjaW1hbCBpcyBgMHgwN2QwYC4gQSBzdGFuZGFyZCBkdW1teSBTUEkgcmVhZCwgc29tZXRoaW5nIHlvdSBtaWdodCB0cnkgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgd291bGQgcmV0dXJuIGVpdGhlciBgMHgwMDAwYCBvciBgMHhmZmZmYCwgZGVwZW5kaW5nIG9uIGhvdyB0aGUgU1BJIGlzIGhhbmRsZWQgYXQgdGhlIGhhcmR3YXJlIGxheWVyLiBDb25zZXF1ZW50bHksIGFueSBhdHRlbXB0ZWQgcHJvYmUgZnVuY3Rpb24gd2lsbCBpbmV2aXRhYmx5IGZhaWwgaWYgaXQncyByZWx5aW5nIG9uIHJlYWRpbmcgYW5kIHZlcmlmeWluZyBoYXJkd2FyZS1zcGVjaWZpYyByZWdpc3RlcnMuXG5cblRoZXJlZm9yZSwgYW5kIGdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRyaXZlciBhbmQgaXRzIGRlcGVuZGVuY2llcywgc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYCBpcyB0aGUgY29ycmVjdCBwYXRoLiBJJ2xsIG5lZWQgdG8gY2xlYXJseSBhcnRpY3VsYXRlIHRoaXMgaW4gdGhlIGNvbW1lbnRzLiBUaGlzIGRyaXZlciBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIHRoZSBXaXpuZXQgVzUxMDAsIFc1MjAwLCBhbmQgVzU1MDAgZXRoZXJuZXQgY2hpcHMsIGFuZCBpdHMgY29tbXVuaWNhdGlvbiBpcyBzb2xlbHkgdGhyb3VnaCBTUEkuIFN0YW5kYXJkIFFFTVUsIGFzIGl0J3MgaW1wbGVtZW50ZWQgbm93LCBkb2Vzbid0IGVtdWxhdGUgdGhlIG5lY2Vzc2FyeSBoYXJkd2FyZSBpbnRlcmFjdGlvbnMgd2l0aCB0aG9zZSBjaGlwcy4gVGhlIHByb2JlIGZ1bmN0aW9uIGlzIGNsZWFybHkgZGVzaWduZWQgdG8gY2hlY2sgc3BlY2lmaWMgaGFyZHdhcmUgcmVnaXN0ZXJzIHRoYXQgYXJlIHVuYXZhaWxhYmxlIG9yIHVuaW5pdGlhbGl6ZWQgaW4gYSBnZW5lcmljIHZpcnR1YWwgZW52aXJvbm1lbnQuIFRoZXJlJ3Mgbm8gdmFsdWUgaW4gZnV6emluZyB0aGlzIGRyaXZlciB1bnRpbCB0aGUgaGFyZHdhcmUgaXRzZWxmIGlzIGVtdWxhdGVkLCBvciBvdGhlciByZWdpc3Rlci1iYXNlZCBjaGVjayBpcyBpbXBsZW1lbnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg4MTAsIk91dHB1dFRva2VucyI6MTMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjA2OjA3Ljg0NTcxMTY4NloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB3NTEwMCBFdGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGZvciBXaXpuZXQgVzUxMDAvVzUyMDAvVzU1MDAgaGFyZHdhcmUgY2hpcHMgY29ubmVjdGVkIHZpYSBTUEkuIFRoZXNlIGNoaXBzIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gVGhlIGRyaXZlcidzIHByb2JlIGZ1bmN0aW9uIGV4cGxpY2l0bHkgY2hlY2tzIGhhcmR3YXJlIHJlZ2lzdGVycyAoZS5nLiwgdmVyaWZ5aW5nIFJUUl9ERUZBVUxUKSBhbmQgd2lsbCBmYWlsIHRvIGluaXRpYWxpemUgd2l0aG91dCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgcHJlc2VudC4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB3NTEwMCBFdGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGZvciBXaXpuZXQgVzUxMDAvVzUyMDAvVzU1MDAgaGFyZHdhcmUgY2hpcHMgY29ubmVjdGVkIHZpYSBTUEkuIFRoZXNlIGNoaXBzIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gVGhlIGRyaXZlcidzIHByb2JlIGZ1bmN0aW9uIGV4cGxpY2l0bHkgY2hlY2tzIGhhcmR3YXJlIHJlZ2lzdGVycyAoZS5nLiwgdmVyaWZ5aW5nIFJUUl9ERUZBVUxUKSBhbmQgd2lsbCBmYWlsIHRvIGluaXRpYWxpemUgd2l0aG91dCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgcHJlc2VudC4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowpcn94[1] Phase: Running StartedAt: 2026-08-04 16:06:18 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpcn94[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-04 16:06:18 +0000 UTC FinishedAt: 2026-08-04 16:06:23 +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,}