Name: series-workflowgm64w Phase: Failed StartedAt: 2026-06-29 08:06:24 +0000 UTC FinishedAt: 2026-06-29 08:25:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgm64w[0] Phase: Succeeded StartedAt: 2026-06-29 08:06:24 +0000 UTC FinishedAt: 2026-06-29 08:25:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgm64w[0].run-triage Phase: Succeeded StartedAt: 2026-06-29 08:06:24 +0000 UTC FinishedAt: 2026-06-29 08:25:14 +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+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjIyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBkYXRhcGF0aCAoZHApIGluaXRpYWxpemF0aW9uIGFuZCBkZXNjcmlwdG9yIGFjY2VzcyBmdW5jdGlvbnMgaW4gdGhlIGF0aDEyayBkcml2ZXIuIFRoZSBkYXRhcGF0aCBpcyBvbmx5IGluaXRpYWxpemVkIGFmdGVyIHRoZSBkZXZpY2UgZmlybXdhcmUgaXMgbG9hZGVkIGFuZCByZWFkeSAodmlhIGF0aDEya19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeSkuIFNpbmNlIHRoZSByZXF1aXJlZCBoYXJkd2FyZSBhbmQgZmlybXdhcmUgYXJlIG5vdCBhdmFpbGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjIyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMGY1YzdkMTQ2NzkwZjhiMmI0NjU5ZWY2NzAyYzE4OTU0NWM1ODY0YVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVuIDI5IDA4OjIyOjQyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuY1xuaW5kZXggMWM4MmQ5MjdkMjdiMjcuLjIwNzZhZTY1ZTllN2FkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmNcbkBAIC0xMTQ5LDggJiM0MzsxMTQ5LDggQEAgc3RhdGljIHUzMiBhdGgxMmtfZHBfY2NfY29va2llX2dlbih1MTYgcHB0X2lkeCwgdTE2IHNwdF9pZHgpXG4gXHRyZXR1cm4gKHUzMilwcHRfaWR4IFx1MDAzY1x1MDAzYyBBVEgxMktfQ0NfUFBUX1NISUZUIHwgc3B0X2lkeDtcbiB9XG4gXG4tc3RhdGljIHZvaWQgKmF0aDEya19kcF9jY19nZXRfZGVzY19hZGRyX3B0cihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcbi1cdFx0XHRcdFx0ICAgIHUxNiBwcHRfaWR4LCB1MTYgc3B0X2lkeClcbiYjNDM7c3RhdGljIF9fbGU2NCAqYXRoMTJrX2RwX2NjX2dldF9kZXNjX2FkZHJfcHRyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgdTE2IHBwdF9pZHgsIHUxNiBzcHRfaWR4KVxuIHtcbiBcdHJldHVybiBkcC1cdTAwM2VzcHRfaW5mb1twcHRfaWR4XS52YWRkciAmIzQzOyBzcHRfaWR4O1xuIH1cbkBAIC0xMTU4LDggJiM0MzsxMTU4LDkgQEAgc3RhdGljIHZvaWQgKmF0aDEya19kcF9jY19nZXRfZGVzY19hZGRyX3B0cihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcbiBzdHJ1Y3QgYXRoMTJrX3J4X2Rlc2NfaW5mbyAqYXRoMTJrX2RwX2dldF9yeF9kZXNjKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuIFx0XHRcdFx0XHRcdCAgdTMyIGNvb2tpZSlcbiB7XG4tXHRzdHJ1Y3QgYXRoMTJrX3J4X2Rlc2NfaW5mbyAqKmRlc2NfYWRkcl9wdHI7XG4gXHR1MTYgc3RhcnRfcHB0X2lkeCwgZW5kX3BwdF9pZHgsIHBwdF9pZHgsIHNwdF9pZHg7XG4mIzQzO1x0X19sZTY0ICpkZXNjX2FkZHJfcHRyO1xuJiM0MztcdHVpbnRwdHJfdCBkZXNjX2FkZHI7XG4gXG4gXHRwcHRfaWR4ID0gdTMyX2dldF9iaXRzKGNvb2tpZSwgQVRIMTJLX0RQX0NDX0NPT0tJRV9QUFQpO1xuIFx0c3B0X2lkeCA9IHUzMl9nZXRfYml0cyhjb29raWUsIEFUSDEyS19EUF9DQ19DT09LSUVfU1BUKTtcbkBAIC0xMTc0LDE2ICYjNDM7MTE3NSwxOCBAQCBzdHJ1Y3QgYXRoMTJrX3J4X2Rlc2NfaW5mbyAqYXRoMTJrX2RwX2dldF9yeF9kZXNjKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuIFxuIFx0cHB0X2lkeCA9IHBwdF9pZHggLSBkcC1cdTAwM2VyeF9wcHRfYmFzZTtcbiBcdGRlc2NfYWRkcl9wdHIgPSBhdGgxMmtfZHBfY2NfZ2V0X2Rlc2NfYWRkcl9wdHIoZHAsIHBwdF9pZHgsIHNwdF9pZHgpO1xuJiM0MztcdGRlc2NfYWRkciA9ICh1aW50cHRyX3QpbGU2NF90b19jcHUoKmRlc2NfYWRkcl9wdHIpO1xuIFxuLVx0cmV0dXJuICpkZXNjX2FkZHJfcHRyO1xuJiM0MztcdHJldHVybiAoc3RydWN0IGF0aDEya19yeF9kZXNjX2luZm8gKilkZXNjX2FkZHI7XG4gfVxuIEVYUE9SVF9TWU1CT0woYXRoMTJrX2RwX2dldF9yeF9kZXNjKTtcbiBcbiBzdHJ1Y3QgYXRoMTJrX3R4X2Rlc2NfaW5mbyAqYXRoMTJrX2RwX2dldF90eF9kZXNjKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuIFx0XHRcdFx0XHRcdCAgdTMyIGNvb2tpZSlcbiB7XG4tXHRzdHJ1Y3QgYXRoMTJrX3R4X2Rlc2NfaW5mbyAqKmRlc2NfYWRkcl9wdHI7XG4gXHR1MTYgc3RhcnRfcHB0X2lkeCwgZW5kX3BwdF9pZHgsIHBwdF9pZHgsIHNwdF9pZHg7XG4mIzQzO1x0X19sZTY0ICpkZXNjX2FkZHJfcHRyO1xuJiM0MztcdHVpbnRwdHJfdCBkZXNjX2FkZHI7XG4gXG4gXHRwcHRfaWR4ID0gdTMyX2dldF9iaXRzKGNvb2tpZSwgQVRIMTJLX0RQX0NDX0NPT0tJRV9QUFQpO1xuIFx0c3B0X2lkeCA9IHUzMl9nZXRfYml0cyhjb29raWUsIEFUSDEyS19EUF9DQ19DT09LSUVfU1BUKTtcbkBAIC0xMTk4LDE5ICYjNDM7MTIwMSwyMiBAQCBzdHJ1Y3QgYXRoMTJrX3R4X2Rlc2NfaW5mbyAqYXRoMTJrX2RwX2dldF90eF9kZXNjKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcbiBcdGRlc2NfYWRkcl9wdHIgPSBhdGgxMmtfZHBfY2NfZ2V0X2Rlc2NfYWRkcl9wdHIoZHAsIHBwdF9pZHgsIHNwdF9pZHgpO1xuJiM0MztcdGRlc2NfYWRkciA9ICh1aW50cHRyX3QpbGU2NF90b19jcHUoKmRlc2NfYWRkcl9wdHIpO1xuIFxuLVx0cmV0dXJuICpkZXNjX2FkZHJfcHRyO1xuJiM0MztcdHJldHVybiAoc3RydWN0IGF0aDEya190eF9kZXNjX2luZm8gKilkZXNjX2FkZHI7XG4gfVxuIEVYUE9SVF9TWU1CT0woYXRoMTJrX2RwX2dldF90eF9kZXNjKTtcbiBcbiBzdGF0aWMgaW50IGF0aDEya19kcF9jY19kZXNjX2luaXQoc3RydWN0IGF0aDEya19iYXNlICphYilcbiB7XG4gXHRzdHJ1Y3QgYXRoMTJrX2RwICpkcCA9IGF0aDEya19hYl90b19kcChhYik7XG4tXHRzdHJ1Y3QgYXRoMTJrX3J4X2Rlc2NfaW5mbyAqcnhfZGVzY3MsICoqcnhfZGVzY19hZGRyO1xuLVx0c3RydWN0IGF0aDEya190eF9kZXNjX2luZm8gKnR4X2Rlc2NzLCAqKnR4X2Rlc2NfYWRkcjtcbiYjNDM7XHRzdHJ1Y3QgYXRoMTJrX3J4X2Rlc2NfaW5mbyAqcnhfZGVzY3M7XG4mIzQzO1x0c3RydWN0IGF0aDEya190eF9kZXNjX2luZm8gKnR4X2Rlc2NzO1xuIFx0dTMyIG51bV9yeF9zcHRfcGFnZXMgPSBBVEgxMktfTlVNX1JYX1NQVF9QQUdFUyhhYik7XG4gXHR1MzIgaSwgaiwgcG9vbF9pZCwgdHhfc3B0X3BhZ2U7XG4gXHR1MzIgcHB0X2lkeCwgY29va2llX3BwdF9pZHg7XG4mIzQzO1x0X19sZTY0ICpyeF9kZXNjX2FkZHI7XG4mIzQzO1x0X19sZTY0ICp0eF9kZXNjX2FkZHI7XG4gXG4gXHRzcGluX2xvY2tfYmgoXHUwMDI2ZHAtXHUwMDNlcnhfZGVzY19sb2NrKTtcbiBcbkBAIC0xMjQ2LDcgJiM0MzsxMjUyLDcgQEAgc3RhdGljIGludCBhdGgxMmtfZHBfY2NfZGVzY19pbml0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4gXG4gXHRcdFx0LyogVXBkYXRlIGRlc2NyaXB0b3IgVkEgaW4gU1BUICovXG4gXHRcdFx0cnhfZGVzY19hZGRyID0gYXRoMTJrX2RwX2NjX2dldF9kZXNjX2FkZHJfcHRyKGRwLCBwcHRfaWR4LCBqKTtcbi1cdFx0XHQqcnhfZGVzY19hZGRyID0gXHUwMDI2cnhfZGVzY3Nbal07XG4mIzQzO1x0XHRcdCpyeF9kZXNjX2FkZHIgPSBjcHVfdG9fbGU2NCgodTY0KSh1aW50cHRyX3QpXHUwMDI2cnhfZGVzY3Nbal0pO1xuIFx0XHR9XG4gXHR9XG4gXG5AQCAtMTI4Niw3ICYjNDM7MTI5Miw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX2RwX2NjX2Rlc2NfaW5pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuIFx0XHRcdFx0LyogVXBkYXRlIGRlc2NyaXB0b3IgVkEgaW4gU1BUICovXG4gXHRcdFx0XHR0eF9kZXNjX2FkZHIgPVxuIFx0XHRcdFx0XHRhdGgxMmtfZHBfY2NfZ2V0X2Rlc2NfYWRkcl9wdHIoZHAsIHBwdF9pZHgsIGopO1xuLVx0XHRcdFx0KnR4X2Rlc2NfYWRkciA9IFx1MDAyNnR4X2Rlc2NzW2pdO1xuJiM0MztcdFx0XHRcdCp0eF9kZXNjX2FkZHIgPSBjcHVfdG9fbGU2NCgodTY0KSh1aW50cHRyX3QpXHUwMDI2dHhfZGVzY3Nbal0pO1xuIFx0XHRcdH1cbiBcdFx0fVxuIFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZkcC1cdTAwM2V0eF9kZXNjX2xvY2tbcG9vbF9pZF0pO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxuaW5kZXggZjhjZmM3YmIyOWRkNzguLjBkN2ZjMmFlYTI0MTVlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmhcbkBAIC0zNTcsNyAmIzQzOzM1Nyw3IEBAIHN0cnVjdCBhdGgxMmtfdHhfZGVzY19wYXJhbXMge1xuIFxuIHN0cnVjdCBhdGgxMmtfc3B0X2luZm8ge1xuIFx0ZG1hX2FkZHJfdCBwYWRkcjtcbi1cdHU2NCAqdmFkZHI7XG4mIzQzO1x0X19sZTY0ICp2YWRkcjtcbiB9O1xuIFxuIHN0cnVjdCBhdGgxMmtfcmVvX3F1ZXVlX3JlZiB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MjI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGRhdGFwYXRoIChkcCkgaW5pdGlhbGl6YXRpb24gYW5kIGRlc2NyaXB0b3IgYWNjZXNzIGZ1bmN0aW9ucyBpbiB0aGUgYXRoMTJrIGRyaXZlci4gVGhlIGRhdGFwYXRoIGlzIG9ubHkgaW5pdGlhbGl6ZWQgYWZ0ZXIgdGhlIGRldmljZSBmaXJtd2FyZSBpcyBsb2FkZWQgYW5kIHJlYWR5ICh2aWEgYXRoMTJrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5KS4gU2luY2UgdGhlIHJlcXVpcmVkIGhhcmR3YXJlIGFuZCBmaXJtd2FyZSBhcmUgbm90IGF2YWlsYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgdGhlc2UgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDBmNWM3ZDE0Njc5MGY4YjJiNDY1OWVmNjcwMmMxODk1NDVjNTg2NGEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1biAyOSAwODoyMjo0MiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYwppbmRleCAxYzgyZDkyN2QyN2IyNy4uMjA3NmFlNjVlOWU3YWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMKQEAgLTExNDksOCAmIzQzOzExNDksOCBAQCBzdGF0aWMgdTMyIGF0aDEya19kcF9jY19jb29raWVfZ2VuKHUxNiBwcHRfaWR4LCB1MTYgc3B0X2lkeCkKIAlyZXR1cm4gKHUzMilwcHRfaWR4ICZsdDsmbHQ7IEFUSDEyS19DQ19QUFRfU0hJRlQgfCBzcHRfaWR4OwogfQogCi1zdGF0aWMgdm9pZCAqYXRoMTJrX2RwX2NjX2dldF9kZXNjX2FkZHJfcHRyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLAotCQkJCQkgICAgdTE2IHBwdF9pZHgsIHUxNiBzcHRfaWR4KQomIzQzO3N0YXRpYyBfX2xlNjQgKmF0aDEya19kcF9jY19nZXRfZGVzY19hZGRyX3B0cihzdHJ1Y3QgYXRoMTJrX2RwICpkcCwKJiM0MzsJCQkJCSAgICAgIHUxNiBwcHRfaWR4LCB1MTYgc3B0X2lkeCkKIHsKIAlyZXR1cm4gZHAtJmd0O3NwdF9pbmZvW3BwdF9pZHhdLnZhZGRyICYjNDM7IHNwdF9pZHg7CiB9CkBAIC0xMTU4LDggJiM0MzsxMTU4LDkgQEAgc3RhdGljIHZvaWQgKmF0aDEya19kcF9jY19nZXRfZGVzY19hZGRyX3B0cihzdHJ1Y3QgYXRoMTJrX2RwICpkcCwKIHN0cnVjdCBhdGgxMmtfcnhfZGVzY19pbmZvICphdGgxMmtfZHBfZ2V0X3J4X2Rlc2Moc3RydWN0IGF0aDEya19kcCAqZHAsCiAJCQkJCQkgIHUzMiBjb29raWUpCiB7Ci0Jc3RydWN0IGF0aDEya19yeF9kZXNjX2luZm8gKipkZXNjX2FkZHJfcHRyOwogCXUxNiBzdGFydF9wcHRfaWR4LCBlbmRfcHB0X2lkeCwgcHB0X2lkeCwgc3B0X2lkeDsKJiM0MzsJX19sZTY0ICpkZXNjX2FkZHJfcHRyOwomIzQzOwl1aW50cHRyX3QgZGVzY19hZGRyOwogCiAJcHB0X2lkeCA9IHUzMl9nZXRfYml0cyhjb29raWUsIEFUSDEyS19EUF9DQ19DT09LSUVfUFBUKTsKIAlzcHRfaWR4ID0gdTMyX2dldF9iaXRzKGNvb2tpZSwgQVRIMTJLX0RQX0NDX0NPT0tJRV9TUFQpOwpAQCAtMTE3NCwxNiAmIzQzOzExNzUsMTggQEAgc3RydWN0IGF0aDEya19yeF9kZXNjX2luZm8gKmF0aDEya19kcF9nZXRfcnhfZGVzYyhzdHJ1Y3QgYXRoMTJrX2RwICpkcCwKIAogCXBwdF9pZHggPSBwcHRfaWR4IC0gZHAtJmd0O3J4X3BwdF9iYXNlOwogCWRlc2NfYWRkcl9wdHIgPSBhdGgxMmtfZHBfY2NfZ2V0X2Rlc2NfYWRkcl9wdHIoZHAsIHBwdF9pZHgsIHNwdF9pZHgpOwomIzQzOwlkZXNjX2FkZHIgPSAodWludHB0cl90KWxlNjRfdG9fY3B1KCpkZXNjX2FkZHJfcHRyKTsKIAotCXJldHVybiAqZGVzY19hZGRyX3B0cjsKJiM0MzsJcmV0dXJuIChzdHJ1Y3QgYXRoMTJrX3J4X2Rlc2NfaW5mbyAqKWRlc2NfYWRkcjsKIH0KIEVYUE9SVF9TWU1CT0woYXRoMTJrX2RwX2dldF9yeF9kZXNjKTsKIAogc3RydWN0IGF0aDEya190eF9kZXNjX2luZm8gKmF0aDEya19kcF9nZXRfdHhfZGVzYyhzdHJ1Y3QgYXRoMTJrX2RwICpkcCwKIAkJCQkJCSAgdTMyIGNvb2tpZSkKIHsKLQlzdHJ1Y3QgYXRoMTJrX3R4X2Rlc2NfaW5mbyAqKmRlc2NfYWRkcl9wdHI7CiAJdTE2IHN0YXJ0X3BwdF9pZHgsIGVuZF9wcHRfaWR4LCBwcHRfaWR4LCBzcHRfaWR4OwomIzQzOwlfX2xlNjQgKmRlc2NfYWRkcl9wdHI7CiYjNDM7CXVpbnRwdHJfdCBkZXNjX2FkZHI7CiAKIAlwcHRfaWR4ID0gdTMyX2dldF9iaXRzKGNvb2tpZSwgQVRIMTJLX0RQX0NDX0NPT0tJRV9QUFQpOwogCXNwdF9pZHggPSB1MzJfZ2V0X2JpdHMoY29va2llLCBBVEgxMktfRFBfQ0NfQ09PS0lFX1NQVCk7CkBAIC0xMTk4LDE5ICYjNDM7MTIwMSwyMiBAQCBzdHJ1Y3QgYXRoMTJrX3R4X2Rlc2NfaW5mbyAqYXRoMTJrX2RwX2dldF90eF9kZXNjKHN0cnVjdCBhdGgxMmtfZHAgKmRwLAogCQlyZXR1cm4gTlVMTDsKIAogCWRlc2NfYWRkcl9wdHIgPSBhdGgxMmtfZHBfY2NfZ2V0X2Rlc2NfYWRkcl9wdHIoZHAsIHBwdF9pZHgsIHNwdF9pZHgpOwomIzQzOwlkZXNjX2FkZHIgPSAodWludHB0cl90KWxlNjRfdG9fY3B1KCpkZXNjX2FkZHJfcHRyKTsKIAotCXJldHVybiAqZGVzY19hZGRyX3B0cjsKJiM0MzsJcmV0dXJuIChzdHJ1Y3QgYXRoMTJrX3R4X2Rlc2NfaW5mbyAqKWRlc2NfYWRkcjsKIH0KIEVYUE9SVF9TWU1CT0woYXRoMTJrX2RwX2dldF90eF9kZXNjKTsKIAogc3RhdGljIGludCBhdGgxMmtfZHBfY2NfZGVzY19pbml0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpCiB7CiAJc3RydWN0IGF0aDEya19kcCAqZHAgPSBhdGgxMmtfYWJfdG9fZHAoYWIpOwotCXN0cnVjdCBhdGgxMmtfcnhfZGVzY19pbmZvICpyeF9kZXNjcywgKipyeF9kZXNjX2FkZHI7Ci0Jc3RydWN0IGF0aDEya190eF9kZXNjX2luZm8gKnR4X2Rlc2NzLCAqKnR4X2Rlc2NfYWRkcjsKJiM0MzsJc3RydWN0IGF0aDEya19yeF9kZXNjX2luZm8gKnJ4X2Rlc2NzOwomIzQzOwlzdHJ1Y3QgYXRoMTJrX3R4X2Rlc2NfaW5mbyAqdHhfZGVzY3M7CiAJdTMyIG51bV9yeF9zcHRfcGFnZXMgPSBBVEgxMktfTlVNX1JYX1NQVF9QQUdFUyhhYik7CiAJdTMyIGksIGosIHBvb2xfaWQsIHR4X3NwdF9wYWdlOwogCXUzMiBwcHRfaWR4LCBjb29raWVfcHB0X2lkeDsKJiM0MzsJX19sZTY0ICpyeF9kZXNjX2FkZHI7CiYjNDM7CV9fbGU2NCAqdHhfZGVzY19hZGRyOwogCiAJc3Bpbl9sb2NrX2JoKCZhbXA7ZHAtJmd0O3J4X2Rlc2NfbG9jayk7CiAKQEAgLTEyNDYsNyAmIzQzOzEyNTIsNyBAQCBzdGF0aWMgaW50IGF0aDEya19kcF9jY19kZXNjX2luaXQoc3RydWN0IGF0aDEya19iYXNlICphYikKIAogCQkJLyogVXBkYXRlIGRlc2NyaXB0b3IgVkEgaW4gU1BUICovCiAJCQlyeF9kZXNjX2FkZHIgPSBhdGgxMmtfZHBfY2NfZ2V0X2Rlc2NfYWRkcl9wdHIoZHAsIHBwdF9pZHgsIGopOwotCQkJKnJ4X2Rlc2NfYWRkciA9ICZhbXA7cnhfZGVzY3Nbal07CiYjNDM7CQkJKnJ4X2Rlc2NfYWRkciA9IGNwdV90b19sZTY0KCh1NjQpKHVpbnRwdHJfdCkmYW1wO3J4X2Rlc2NzW2pdKTsKIAkJfQogCX0KIApAQCAtMTI4Niw3ICYjNDM7MTI5Miw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX2RwX2NjX2Rlc2NfaW5pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKQogCQkJCS8qIFVwZGF0ZSBkZXNjcmlwdG9yIFZBIGluIFNQVCAqLwogCQkJCXR4X2Rlc2NfYWRkciA9CiAJCQkJCWF0aDEya19kcF9jY19nZXRfZGVzY19hZGRyX3B0cihkcCwgcHB0X2lkeCwgaik7Ci0JCQkJKnR4X2Rlc2NfYWRkciA9ICZhbXA7dHhfZGVzY3Nbal07CiYjNDM7CQkJCSp0eF9kZXNjX2FkZHIgPSBjcHVfdG9fbGU2NCgodTY0KSh1aW50cHRyX3QpJmFtcDt0eF9kZXNjc1tqXSk7CiAJCQl9CiAJCX0KIAkJc3Bpbl91bmxvY2tfYmgoJmFtcDtkcC0mZ3Q7dHhfZGVzY19sb2NrW3Bvb2xfaWRdKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaAppbmRleCBmOGNmYzdiYjI5ZGQ3OC4uMGQ3ZmMyYWVhMjQxNWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmgKQEAgLTM1Nyw3ICYjNDM7MzU3LDcgQEAgc3RydWN0IGF0aDEya190eF9kZXNjX3BhcmFtcyB7CiAKIHN0cnVjdCBhdGgxMmtfc3B0X2luZm8gewogCWRtYV9hZGRyX3QgcGFkZHI7Ci0JdTY0ICp2YWRkcjsKJiM0MzsJX19sZTY0ICp2YWRkcjsKIH07CiAKIHN0cnVjdCBhdGgxMmtfcmVvX3F1ZXVlX3JlZiB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MjkKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA2OTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQXNzZXNzaW5nIHRoZSBGdXp6YWJpbGl0eSBvZiBhbiBhdGgxMmsgRW5kaWFubmVzcyBGaXgqKgoKT2theSwgc28gd2UmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgbW9kaWZ5aW5nIHRoZSBhdGgxMmsgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuY2AgYW5kIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmhgLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGFkZHJlc3NpbmcgYW4gZW5kaWFubmVzcyBpc3N1ZSwgY2hhbmdpbmcgYHZhZGRyYCBpbiBgc3RydWN0IGF0aDEya19zcHRfaW5mb2AgdG8gYF9fbGU2NCAqYCBhbmQgdXBkYXRpbmcgcmVsYXRlZCBmdW5jdGlvbnMgKGBhdGgxMmtfZHBfY2NfZ2V0X2Rlc2NfYWRkcl9wdHJgLCBldGMuKSB0byBoYW5kbGUgdGhlIGxpdHRsZS1lbmRpYW4gY29udmVyc2lvbi4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCBmcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZS4gTXkgcHJpbWFyeSBjb25jZXJuLCB0aG91Z2gsIGlzIHdoZXRoZXIgdGhpcyBpcyB3b3J0aCBmdXNzaW5nIHdpdGggZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIHNpbmNlIHRoZSBpbnN0cnVjdGlvbnMgc2F5IHRoYXQgd2Ugc2hvdWxkIGlnbm9yZSBwYXRjaGVzIHRoYXQgY2FuJiMzOTt0IGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLgoKVGhlIGF0aDEyayBkcml2ZXIgaXMsIG9mIGNvdXJzZSwgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcy4gSXQmIzM5O3MgYSBQQ0kgb3IgQUhCIGRldmljZSwgd2hpY2ggbWFrZXMgaXQgYW4gaW1tZWRpYXRlIGZsYWcuIFdpLUZpIGRyaXZlcnMsIGluIG15IGV4cGVyaWVuY2UsIHVzdWFsbHkgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBmb3IgZWZmZWN0aXZlIHRlc3RpbmcuIEkmIzM5O20gaW1tZWRpYXRlbHkgc2tlcHRpY2FsIHRoYXQgd2UgY2FuIHJlYWNoIHRoaXMgZWFzaWx5IGluIGEgdmlydHVhbGl6ZWQgc2V0dGluZywgdW5sZXNzIHNvbWUgY2xldmVyIGVtdWxhdGlvbiB0cmljayBpcyBhdmFpbGFibGUuIEl0JiMzOTtzIG5vdCB1c2luZyBgbWFjODAyMTFfaHdzaW1gLCB3aGljaCB3b3VsZCBiZSB0aGUgZWFzeSB3aW4uCgpXYWl0LCBkb2VzIHN5emthbGxlciBoYXZlIFBDSSBmdXp6aW5nIGNhcGFiaWxpdGllcz8gSSByZWNhbGwgc2VlaW5nIHNvbWUgUENJLXJlbGF0ZWQgZnV6emluZyBpbiB0aGUgZG9jdW1lbnRhdGlvbiwgdXRpbGl6aW5nIHZmaW8gb3Igc2ltaWxhciBzZXR1cHMgZm9yIGZha2luZyBQQ0kgZGV2aWNlcywgYW5kIHBvdGVudGlhbGx5IGluamVjdGluZyBQQ0kgY29uZmlnIHNwYWNlIGFuZCBNTUlPLiBNYXliZSB0aGF0IGdpdmVzIHVzIGEgd2F5IGluPyBTeXprYWxsZXImIzM5O3MgZG9jdW1lbnRhdGlvbiwgb3IgYnVnIHJlcG9ydHMsIHdvdWxkIGJlIHRoZSBwbGFjZXMgdG8gY2hlY2sgaWYgYXRoMTJrIGlzIGV4cGxpY2l0bHkgZnV6emVkIG9yIGlmIHNvbWUgZ2VuZXJpYyBQQ0kgZnV6emluZyBjYW4gYmluZCB0byBpdC4KClRoZSBpbnN0cnVjdGlvbnMgdGVsbCB1cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgaXQgaXMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gTGV0JiMzOTtzIHNlZS4gRG9lcyBRRU1VIGV2ZW4gaGF2ZSBhbnkgYXRoMTJrIFBDSSBlbXVsYXRpb24/IEkgZG91YnQgaXQuCgpTeXprYWxsZXIgZG9lcyBzZWVtIHRvIGhhdmUgc29tZSBQQ0kgZnV6emluZyBzdXBwb3J0LCBzbyBwZXJoYXBzIHRoYXQgY2FuIGJlIHVzZWQuIEl0IHJlcXVpcmVzIHRoZSBkcml2ZXIgdG8gYmluZCB0byBhIGZha2UgUENJIGRldmljZS4gRG8gd2UgaGF2ZSBzb21ldGhpbmcgbGlrZSBhIGBzeXpfcGNpX2RldmljZWAgZnVuY3Rpb24gdGhhdCB3ZSBjYW4gdXNlPyBJIHJlY2FsbCB3ZSBjYW4gdXNlIHRoZSBgc3l6X3BjaV9kZXZpY2VgIHR5cGUuCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VhcmNoIHN5emthbGxlciBmb3IgYGF0aDEya2AgdG8gc2VlIGlmIGl0JiMzOTtzIGV4cGxpY2l0bHkgZnV6emVkLiBBbmQgYmVjYXVzZSBpdCYjMzk7cyBhIFBDSSBkcml2ZXIsIG1heWJlIHdlIGNhbiB1c2UgdGhlIGZ1enppbmcgYWJpbGl0aWVzIGZvciBQQ0kgZHJpdmVycy4gSSBkb24mIzM5O3QgaGF2ZSBhY2Nlc3MgdG8gc3l6a2FsbGVyIGJ1ZyByZXBvcnRzLCBzbyB0aGF0JiMzOTtzIG91dC4gU28sIGxldCYjMzk7cyBzZWUgaWYgd2UgY2FuIGZpbmQgYW55dGhpbmcgaW4gdGhlIEtjb25maWcsIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgaW5kaWNhdGlvbiBvZiBmdXp6aW5nIGJlaW5nIGVuYWJsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEFUSDEySyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoyOmNvbmZpZyBBVEgxMktcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gVGVjaG5vbG9naWVzIFdpLUZpIDcgc3VwcG9ydCAoYXRoMTJrKVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoxODpjb25maWcgQVRIMTJLX0FIQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTE5LVx0Ym9vbCBcJiMzNDtRVEkgYXRoMTJrIEFIQiBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjI2OmNvbmZpZyBBVEgxMktfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0yNy1cdGJvb2wgXCYjMzQ7YXRoMTJrIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzozNjpjb25maWcgQVRIMTJLX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zNy1cdGJvb2wgXCYjMzQ7UVRJIGF0aDEyayBkZWJ1Z2ZzIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6NDU6Y29uZmlnIEFUSDEyS19UUkFDSU5HXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDYtXHRib29sIFwmIzM0O2F0aDEyayB0cmFjaW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6NTQ6Y29uZmlnIEFUSDEyS19DT1JFRFVNUFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTU1LVx0Ym9vbCBcJiMzNDthdGgxMmsgY29yZWR1bXBcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwODoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDA1CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVGFyZ2V0IERyaXZlciBhbmQgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcywgaG93IGxpa2VseSBhbSBJIHRvIGV2ZW4gKmhpdCogdGhhdCBjb2RlIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dD8gVGhlc2UgbG93LWxldmVsLCBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzLCBlc3BlY2lhbGx5IHdpcmVsZXNzIG9uZXMsIHR5cGljYWxseSByZXF1aXJlIHNwZWNpZmljIGhhcmR3YXJlIG9yLCBhdCB0aGUgdmVyeSBsZWFzdCwgcm9idXN0IGVtdWxhdGlvbiB0byBmdW5jdGlvbi4KCkJ1dCB0aGVuIEkgcmVtZW1iZXIgc3l6a2FsbGVyLiBTcGVjaWZpY2FsbHksIGl0cyB2aXJ0dWFsIFBDSSBkZXZpY2UgZnV6emVyLiBOb3cgKnRoYXQmIzM5O3MqIGludGVyZXN0aW5nLiBJZiBpdCBjYW4gYmluZCB0byBQQ0kgZHJpdmVycyBiYXNlZCBvbiB2ZW5kb3IvZGV2aWNlIElEcyBhbmQgdGhlbiBzdGFydCBwb2tpbmcgYXQgdGhlIE1NSU8gYW5kIERNQSwgdGhlIGdhbWUgY2hhbmdlcyBzaWduaWZpY2FudGx5LiBUaGlzIHBvdGVudGlhbGx5IG9wZW5zIHVwIGEgdGVzdGluZyBhdmVudWUgSSB3b3VsZG4mIzM5O3QgaGF2ZSBpbW1lZGlhdGVseSBjb25zaWRlcmVkLgoKVGhlIGtleSBxdWVzdGlvbiBpcywgZG9lcyBzeXprYWxsZXIgKmFjdHVhbGx5KiBmdXp6IGBhdGgxMmtgPyBJIG5lZWQgdG8gdmVyaWZ5IGlmIHRoZSBkcml2ZXIgZXhwb3NlcyBpdHMgUENJIElEcy4gQSBxdWljayBjaGVjayBvZiB0aGUgc291cmNlIGlzIGluIG9yZGVyLiBMZXQmIzM5O3Mgc2VlIGlmIHdlIGNhbiBmaW5kIHRoZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX2RldmljZV9pZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM9MTUwMj1zdGF0aWMgZW51bSBhdGgxMmtfZGV2aWNlX2ZhbWlseVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzoxNTAzOmF0aDEya19nZXRfZGV2aWNlX2ZhbWlseShjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqcGNpX2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTUwNC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE1MDUtXHRlbnVtIGF0aDEya19kZXZpY2VfZmFtaWx5IGRldmljZV9mYW1pbHlfaWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jOjE1MDY6XHRjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE1MDctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYz0xNTI0PXN0YXRpYyBpbnQgYXRoMTJrX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTUyNTpcdFx0XHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaV9kZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE1MjYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmg9MTAzPXN0cnVjdCBhdGgxMmtfcGNpX2RldmljZV9mYW1pbHlfb3BzIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmg6MTA0Olx0aW50ICgqcHJvYmUpKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqcGNpX2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5oLTEwNS1cdGludCAoKmFyY2hfaW5pdCkoc3RydWN0IGF0aDEya19iYXNlICphYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuaD0xNDI9c3RydWN0IGF0aDEya19wY2lfZHJpdmVyIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmgtMTQzLVx0Y29uc3QgY2hhciAqbmFtZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmg6MTQ0Olx0Y29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkX3RhYmxlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuaC0xNDUtXHRzdHJ1Y3QgYXRoMTJrX3BjaV9kZXZpY2VfZmFtaWx5X29wcyBvcHM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYy0zMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvcGNpLmM6MzQ6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGF0aDEya193aWZpN19wY2lfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvcGNpLmMtMzUtXHR7IFBDSV9WREVWSUNFKFFDT00sIFFDTjkyNzRfREVWSUNFX0lEKSB9LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvcGNpLmM9OTE9c3RhdGljIGludCBhdGgxMmtfd2lmaTdfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYzo5MjpcdFx0XHRcdCAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaV9kZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L3BjaS5jLTkzLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwODoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NjMwCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlYWNoaW5nIEF0aDEyazogQSBGdXp6aW5nIEZlYXNpYmlsaXR5IENoZWNrKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHN5emthbGxlciBzZXR1cCwgc3BlY2lmaWNhbGx5IGBzeXpfcGNpX2RldmljZWAuIEl0JiMzOTtzIGdvdCBwb3RlbnRpYWwgZm9yIGVtdWxhdGluZyBQQ0kgZGV2aWNlcywgd2hpY2gsIGlmIGV4cGxvaXRlZCwgY291bGQgZ2l2ZSB1cyBhIGJhY2tkb29yIGludG8gZHJpdmVycywgcGFydGljdWxhcmx5IHRob3NlIHRoYXQgYXJlIFBDSSBiYXNlZC4gVGhlIHF1ZXN0aW9uIG5vdyBpczogaXMgYXRoMTJrIHJlYWNoYWJsZSB0aHJvdWdoIHRoaXMgbWV0aG9kPwoKV2FpdCwgYSBjcnVjaWFsIHJlbWluZGVyIGZyb20gdGhlIGluc3RydWN0aW9ucy4gSXQgc2F5cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIGludm9sdmVzIHBhdGhzIHRoYXQgYXJlIGluaGVyZW50bHkgaW5hY2Nlc3NpYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhhdCB0aHJvd3MgYSB3cmVuY2ggaW4gdGhlIHdvcmtzLiBNeSBndXQgdGVsbHMgbWUgc29tZXRoaW5nIGxpa2UgYHVzYiBnYWRnZXRgIG9yIGBtYWM4MDIxMV9od3NpbWAgd291bGQgYmUgb3V0IG9mIHJlYWNoIHdpdGggdGhlc2UgY29uc3RyYWludHMsIGJ1dCB3aGF0IGFib3V0IGF0aDEyaz8KCkdpdmVuIHRoYXQgYXRoMTJrIGlzIGEgcHJldHR5IGNvbXBsZXggV2ktRmkgZHJpdmVyLCB0aGUgY3J1Y2lhbCBzdGVwIHRvIGNoZWNrIGlzIHRoaXM6IGRvZXMgaXQgcmVxdWlyZSBmaXJtd2FyZSB0byBiZSBsb2FkZWQgYW5kIGluaXRpYWxpemVkICpiZWZvcmUqIHdlIGNhbiBldmVuIHRvdWNoIHRoZSBkYXRhcGF0aCAtIHNwZWNpZmljYWxseSB0aGUgYGRwLmNgIGZpbGVzPyBJIG5lZWQgdG8gY2hlY2sgdG8gc2VlIGlmIGBhdGgxMmtfZHBfY2NfZGVzY19pbml0YCBjYW4gYmUgcmVhY2hlZCBiZWZvcmUgZmlybXdhcmUgaXMgZXZlbiBsb2FkZWQuIFRoaXMgaXMgdGhlIGNydWNpYWwgcXVlc3Rpb24gdG8gZGV0ZXJtaW5lIHRoZSBmZWFzaWJpbGl0eSBvZiBmdXp6aW5nIHRoaXMgZHJpdmVyLCB1bmRlciB0aGVzZSBjb25kaXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDEya19kcF9jY19kZXNjX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmM9MTIwOD1FWFBPUlRfU1lNQk9MKGF0aDEya19kcF9nZXRfdHhfZGVzYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMtMTIwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYzoxMjEwOnN0YXRpYyBpbnQgYXRoMTJrX2RwX2NjX2Rlc2NfaW5pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jLTEyMTEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYz0xMzUzPXN0YXRpYyBpbnQgYXRoMTJrX2RwX2NjX2luaXQoc3RydWN0IGF0aDEya19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMtMTQwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYzoxNDEwOlx0cmV0ID0gYXRoMTJrX2RwX2NjX2Rlc2NfaW5pdChhYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMtMTQxMS1cdGlmIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwODoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDA2CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgY29kZToKCioqQW5hbHl6aW5nIHRoZSBDYWxsZXJzIG9mIGBhdGgxMmtfZHBfY2NfaW5pdGAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBUaGUgaW5pdGlhbCB0YXNrIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgYGF0aDEya19kcF9jY19pbml0YC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiAqd2hlcmUqIGlzIHRoaXMgZnVuY3Rpb24gYmVpbmcgdXNlZD8gV2hhdCBwYXJ0cyBvZiB0aGUgY29kZSBiYXNlIGFyZSBkZXBlbmRlbnQgb24gaXQ/IEtub3dpbmcgaXRzIGNhbGxlcnMgd2lsbCB0ZWxsIG1lIGl0cyBwdXJwb3NlIGFuZCBzaWduaWZpY2FuY2Ugd2l0aGluIHRoZSBicm9hZGVyIHN5c3RlbS4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSBgYXRoMTJrX2RwX2NjX2luaXRgIHRvIGZpbmQgYWxsIHRoZSBwbGFjZXMgaXQmIzM5O3MgYWN0dWFsbHkgaW52b2tlZC4gVGhhdCYjMzk7cyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgcm9sZS4gRnJvbSB0aGVyZSwgSSBjYW4gc3RhcnQgZm9ybWluZyBhIG1lbnRhbCBtYXAgb2YgaXRzIGltcGFjdCBhbmQgaW1wbGljYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwODoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMmtfZHBfY2NfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYz0xMzQ4PXN0YXRpYyB1MzIgYXRoMTJrX2RwX2dldF9udW1fc3B0X3BhZ2VzKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jLTEzNTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmM6MTM1MzpzdGF0aWMgaW50IGF0aDEya19kcF9jY19pbml0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMtMTM1NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jPTE0NzY9c3RhdGljIGludCBhdGgxMmtfZHBfc2V0dXAoc3RydWN0IGF0aDEya19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMtMTUyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYzoxNTI0Olx0cmV0ID0gYXRoMTJrX2RwX2NjX2luaXQoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jLTE1MjUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc5MjUKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhhdCBjb2RlOgoKKipBbmFseXppbmcgdGhlIENhbGxlcnMgb2YgYGF0aDEya19kcF9zZXR1cGAqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgYGF0aDEya19kcF9zZXR1cGAgaXMgYmVpbmcgaW52b2tlZC4gVGhhdCYjMzk7cyB0aGUgY3J1Y2lhbCBmaXJzdCBzdGVwLiBJIG5lZWQgdG8gdHJhY2UgaXRzIGNhbGwgZ3JhcGggdG8gZ2V0IGEgaGFuZGxlIG9uIGl0cyByb2xlIHdpdGhpbiB0aGUgYnJvYWRlciBkcml2ZXIgYXJjaGl0ZWN0dXJlLiBLbm93aW5nIHRoZSBjb250ZXh0cyBmcm9tIHdoaWNoIGl0JiMzOTtzIGNhbGxlZCBnaXZlcyBtZSBpbW1lZGlhdGUgY2x1ZXMgYWJvdXQgaXRzIGZ1bmN0aW9uIGFuZCB0aGUgY3JpdGljYWwgcGF0aHMgaXQgaW1wYWN0cy4gSSYjMzk7bGwgbmVlZCB0byB1c2UgbXkgdG9vbHMgLSBncmVwLCBtYXliZSBhIHN5bWJvbCBicm93c2VyIGlmIEkgaGF2ZSBvbmUgaGFuZHksIG9yIGp1c3QgYSBnb29kIG9sZC1mYXNoaW9uZWQgY29kZSBzZWFyY2gg4oCTIHRvIGxvY2F0ZSBhbGwgdGhlIHJlZmVyZW5jZXMgdG8gdGhhdCBmdW5jdGlvbi4gRnJvbSB0aGVyZSwgSSBjYW4gc3RhcnQgcGllY2luZyB0b2dldGhlciB0aGUgZmxvdyBhbmQgdGhlIGxvZ2ljIGJlaGluZCBpdC4gV2hhdCYjMzk7cyBjYWxsaW5nIGl0PyBVbmRlciB3aGF0IGNvbmRpdGlvbnM/IERvZXMgaXQgYXBwZWFyIGluIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzLCBpbnRlcnJ1cHQgaGFuZGxlcnMsIG9yIG1heWJlIGRhdGEgcGF0aCBtYW5hZ2VtZW50PyBBbnN3ZXJpbmcgdGhvc2UgcXVlc3Rpb25zIHdpbGwgcGFpbnQgYSBjbGVhciBwaWN0dXJlLiBUaGVuIEkmIzM5O2xsIGZvY3VzIG9uIGhvdyBlYWNoIGNhbGxlciB1c2VzIHRoZSByZXR1cm4gdmFsdWUgYW5kIGFueSBvdGhlciByZWxhdGVkIGZ1bmN0aW9uIGNhbGxzIHRoYXQgYXJlIG1hZGUgYWZ0ZXJ3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwODoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMmtfZHBfc2V0dXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmM9MTQzOD1zdGF0aWMgaW50IGF0aDEya19kcF9yZW9xX2x1dF9zZXR1cChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYy0xNDc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jOjE0NzY6c3RhdGljIGludCBhdGgxMmtfZHBfc2V0dXAoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYy0xNDc3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmM9MTYwND1pbnQgYXRoMTJrX2RwX2Ntbl9kZXZpY2VfaW5pdChzdHJ1Y3QgYXRoMTJrX2RwICpkcClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMtMTYwNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYzoxNjA4Olx0cmV0ID0gYXRoMTJrX2RwX3NldHVwKGRwLVx1MDAzZWFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYy0xNjA5LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODUwNAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgY29kZS4KCioqSW52ZXN0aWdhdGluZyB0aGUgQ2FsbGVycyBvZiBgYXRoMTJrX2RwX2Ntbl9kZXZpY2VfaW5pdGAqKgoKQWxyaWdodCwgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBmbG93IGFuZCBmaWd1cmUgb3V0IHdoZXJlIHRoaXMgYGF0aDEya19kcF9jbW5fZGV2aWNlX2luaXRgIGZ1bmN0aW9uIGlzIGJlaW5nIGludm9rZWQuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxpbmcgY29udGV4dHMgaXMgY3J1Y2lhbDsgaXTigJlzIGdvaW5nIHRvIHByb3ZpZGUgbWUgd2l0aCBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZSBjb21tb24gZGV2aWNlIGluaXRpYWxpemF0aW9uIGlzIGludGVncmF0ZWQgd2l0aGluIHRoZSBicm9hZGVyIGBhdGgxMmtgIGRyaXZlciBhcmNoaXRlY3R1cmUuIEkgbmVlZCB0byBwaW5wb2ludCBldmVyeSBjYWxsIHNpdGUgdG8gZ3Jhc3AgdGhlIGZ1bGwgc2NvcGUgb2YgaXRzIGltcGFjdCBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgb3ZlcmFsbCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gSWRlbnRpZnlpbmcgdGhlIGNhbGxlcnMgd2lsbCBsaWtlbHkgcmV2ZWFsIHRoZSByZWxldmFudCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBwaGFzZXMgYW5kIHRoZSBhc3NvY2lhdGVkIGNvbnRyb2wgcGF0aHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDEya19kcF9jbW5fZGV2aWNlX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYz0xMjg0PWludCBhdGgxMmtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHkoc3RydWN0IGF0aDEya19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMzAwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM6MTMwMTpcdHJldCA9IGF0aDEya19kcF9jbW5fZGV2aWNlX2luaXQoYXRoMTJrX2FiX3RvX2RwKGFiKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMzAyLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYz0xNTk5PXZvaWQgYXRoMTJrX2RwX2Ntbl9kZXZpY2VfZGVpbml0KHN0cnVjdCBhdGgxMmtfZHAgKmRwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYy0xNjAzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jOjE2MDQ6aW50IGF0aDEya19kcF9jbW5fZGV2aWNlX2luaXQoc3RydWN0IGF0aDEya19kcCAqZHApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMtMTYwNS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9jbW4uaD05MT12b2lkIGF0aDEya19kcF9jbW5fZGV2aWNlX2RlaW5pdChzdHJ1Y3QgYXRoMTJrX2RwICpkcCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX2Ntbi5oOjkyOmludCBhdGgxMmtfZHBfY21uX2RldmljZV9pbml0KHN0cnVjdCBhdGgxMmtfZHAgKmRwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfY21uLmgtOTMtdm9pZCBhdGgxMmtfZHBfY21uX2h3X2dyb3VwX3VuYXNzaWduKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwODoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MTk0CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYXRoMTJrIERyaXZlciBJbml0aWFsaXphdGlvbiBpbiBhIFZpcnR1YWxpemVkIEVudmlyb25tZW50KioKCk9rYXksIHNvIGBhdGgxMmtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHlgIGlzIHRoZSBrZXkgZnVuY3Rpb24gdGhhdCB0ZWxscyBtZSB0aGUgZmlybXdhcmUgaXMgdXAgYW5kIHJ1bm5pbmcuIFRoYXQgbWVhbnMgdGhlIGRyaXZlciBoYXMgdG8gaGFuZGxlIGZpcm13YXJlIGxvYWRpbmcgYW5kIFFNSSBjb21tdW5pY2F0aW9uICpiZWZvcmUqIGl0IGNhbiBpbml0aWFsaXplIHRoZSBkYXRhcGF0aCAoZHApLiBUaGUgcHJvYmxlbSBpcywgaW4gbXkgdmlydHVhbGl6ZWQgc2V0dXBzLCBvciBldmVuIHdpdGggY29tcGxleCBlbXVsYXRvcnMsIHRoZSBmaXJtd2FyZSBpcyBwcm9iYWJseSBuZXZlciBnb2luZyB0byBsb2FkIHByb3Blcmx5LiBDb25zZXF1ZW50bHksIGFueSBRTUkgY29tbXVuaWNhdGlvbiBhdHRlbXB0cyB3aWxsIGxpa2VseSBmYWlsIG9yIHRpbWUgb3V0LiBUaGF0IG1lYW5zIEkgd29uJiMzOTt0IGV2ZXIgaGl0IGBhdGgxMmtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHlgLgoKU28sIHRoZSBxdWVzdGlvbiBub3cgaXMsIGlzIHRoZXJlIGFueSBraW5kIG9mIG1vY2sgZmlybXdhcmUgSSBjYW4gdXNlPyBPciBtYXliZSwgY2FuIEkgZnV6eiB0aGUgUU1JIGludGVyZmFjZSBpdHNlbGYgdG8gc2ltdWxhdGUgdGhlIGZpcm13YXJlPyBVbmZvcnR1bmF0ZWx5LCBhcyBmYXIgYXMgSSBrbm93LCBTeXprYWxsZXIgZG9lc24mIzM5O3QgaGF2ZSBhIFFNSSBmdXp6ZXIgc3BlY2lmaWNhbGx5IHRhaWxvcmVkIGZvciB0aGUgYXRoMTJrIGZpcm13YXJlLCB3aGljaCBtYWtlcyB0aGluZ3MgdHJpY2tpZXIuCgpUbyBwcm9jZWVkLCBsZXQgbWUgc2VlIGlmIGBhdGgxMmtfZHBfZ2V0X3J4X2Rlc2NgIG9yIGBhdGgxMmtfZHBfZ2V0X3R4X2Rlc2NgIGdldCBjYWxsZWQgYW55d2hlcmUgZWxzZSBpbiB0aGUgY29kZS4gSSYjMzk7bSBob3BpbmcgSSBjYW4gZmluZCBhbm90aGVyIHBhdGggdGhhdCBtaWdodCBiZSBhY2Nlc3NpYmxlIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTJrX2RwX2dldF9yeF9kZXNjJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jPTExNTI9c3RhdGljIF9fbGU2NCAqYXRoMTJrX2RwX2NjX2dldF9kZXNjX2FkZHJfcHRyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYy0xMTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jOjExNTg6c3RydWN0IGF0aDEya19yeF9kZXNjX2luZm8gKmF0aDEya19kcF9nZXRfcnhfZGVzYyhzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYy0xMTU5LVx0XHRcdFx0XHRcdCAgdTMyIGNvb2tpZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMtMTE4MS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmM6MTE4MjpFWFBPUlRfU1lNQk9MKGF0aDEya19kcF9nZXRfcnhfZGVzYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMtMTE4My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmg9Njk2PWludCBhdGgxMmtfZHBfbGlua19kZXNjX3NldHVwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oLTY5OS1cdFx0XHQgICAgICB1MzIgbl9saW5rX2Rlc2MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oOjcwMDpzdHJ1Y3QgYXRoMTJrX3J4X2Rlc2NfaW5mbyAqYXRoMTJrX2RwX2dldF9yeF9kZXNjKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oLTcwMS1cdFx0XHRcdFx0XHQgIHUzMiBjb29raWUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfbW9uLmM9MjU4Mz1hdGgxMmtfd2lmaTdfZHBfcnhfbW9uX21wZHVfcG9wKHN0cnVjdCBhdGgxMmsgKmFyLCBpbnQgbWFjX2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfbW9uLmMtMjY0OC1cdFx0XHRcdFx0XHQgIFx1MDAyNm51bV9tc2R1cyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX21vbi5jOjI2NDk6XHRcdGRlc2NfaW5mbyA9IGF0aDEya19kcF9nZXRfcnhfZGVzYyhhci1cdTAwM2VhYi1cdTAwM2VkcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfbW9uLmMtMjY1MC1cdFx0XHRcdFx0XHQgIG1zZHVfbGlzdC5zd19jb29raWVbbnVtX21zZHVzIC0gMV0pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfbW9uLmMtMjY2NS1cdFx0XHRkZXNjX2luZm8gPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9tb24uYzoyNjY2Olx0XHRcdFx0YXRoMTJrX2RwX2dldF9yeF9kZXNjKGFyLVx1MDAzZWFiLVx1MDAzZWRwLCBtc2R1X2xpc3Quc3dfY29va2llW2ldKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfbW9uLmMtMjY2Ny1cdFx0XHRtc2R1ID0gZGVzY19pbmZvLVx1MDAzZXNrYjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3J4LmM9NjM2PWludCBhdGgxMmtfd2lmaTdfZHBfcnhfcHJvY2VzcyhzdHJ1Y3QgYXRoMTJrX2RwICpkcCwgaW50IHJpbmdfaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jLTY5OS1cdFx0aWYgKCFkZXNjX2luZm8pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfcnguYzo3MDA6XHRcdFx0ZGVzY19pbmZvID0gYXRoMTJrX2RwX2dldF9yeF9kZXNjKHBhcnRuZXJfZHAsIGNvb2tpZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3J4LmMtNzAxLVx0XHRcdGlmICghZGVzY19pbmZvKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jPTEyNjM9YXRoMTJrX3dpZmk3X2RwX3Byb2Nlc3NfcnhfZXJyX2J1ZihzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jLTEyODUtXHRpZiAoIWRlc2NfaW5mbykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jOjEyODY6XHRcdGRlc2NfaW5mbyA9IGF0aDEya19kcF9nZXRfcnhfZGVzYyhkcCwgY29va2llKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfcnguYy0xMjg3LVx0XHRpZiAoIWRlc2NfaW5mbykge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfcnguYz0xMzQ4PXN0YXRpYyBpbnQgYXRoMTJrX2RwX2hfbXNkdV9idWZmZXJfdHlwZShzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3J4LmMtMTM2Ni1cdFx0XHRcdCAgICAgICBCVUZGRVJfQUREUl9JTkZPMV9TV19DT09LSUUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jOjEzNjc6XHRcdGRlc2NfaW5mbyA9IGF0aDEya19kcF9nZXRfcnhfZGVzYyhkcCwgY29va2llKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfcnguYy0xMzY4LVx0XHRpZiAoIWRlc2NfaW5mbykge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfcnguYz0xODIwPWludCBhdGgxMmtfd2lmaTdfZHBfcnhfcHJvY2Vzc193Ym1fZXJyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfcnguYy0xODc0LVx0XHRpZiAoIWRlc2NfaW5mbykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jOjE4NzU6XHRcdFx0ZGVzY19pbmZvID0gYXRoMTJrX2RwX2dldF9yeF9kZXNjKGRwLCBlcnJfaW5mby5jb29raWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jLTE4NzYtXHRcdFx0aWYgKCFkZXNjX2luZm8pIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyMjEKCQkJCQkJCW91dHB1dDogMTE4CgkJCQkJCQl0aG91Z2h0czogNDA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVucmVhY2hhYmxlIENvZGUgaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBhbmQgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHdoZXJlIHdlJiMzOTtyZSBhdC4gQWxsIHRoZXNlIGZ1bmN0aW9ucyDigJMgdGhlIG9uZXMgdGhhdCBhcmUgYmVpbmcgbW9kaWZpZWQg4oCTIHRoZXkmIzM5O3JlIGFsbCBmaXJtbHkgcm9vdGVkIGluIHRoZSBkYXRhcGF0aCAoZHApLiBOb3csIHRoZSBkYXRhcGF0aCwgYXMgSSB1bmRlcnN0YW5kIGl0LCBvbmx5IGdldHMgaW5pdGlhbGl6ZWQgb25jZSB0aGUgZmlybXdhcmUgaXMgcmVhZHkgdG8gZ28uIFRoYXQmIzM5O3MgdGhlIGtleS4KCkluIHRoZXNlIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCB0aGUgZmlybXdhcmUgaXNuJiMzOTt0IGF2YWlsYWJsZS4gVGhhdCBtZWFucyB0aGUgZGF0YXBhdGggbmV2ZXIgZ2V0cyBpbml0aWFsaXplZC4gU2ltcGxlIGVub3VnaC4gVGhlcmVmb3JlLCB0aGUgY29kZSBwYXRocyB0aGlzIHBhdGNoIHRvdWNoZXM/IFRoZXkmIzM5O3JlIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgaW4gdGhlc2Ugc3BlY2lmaWMgZnV6emluZyBzY2VuYXJpb3MuIEkgbmVlZCB0byBiZSBzdXJlIHRob3VnaCwgbGV0JiMzOTtzIHRha2UgYSBsb29rLi4uCgpMZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIEkmIzM5O2xsIGdvIHRocm91Z2ggdGhlIGNhbGwgc3RhY2sgZm9yIHRoZSB0YXJnZXQgZnVuY3Rpb25zLiBTdGFydGluZyB3aXRoIGBhdGgxMmtfZHBfY2NfZGVzY19pbml0YCwgY2FuIHRoYXQgYmUgcmVhY2hlZCB2aWEgc29tZSBvdGhlciBwYXRoPyBMZXQmIzM5O3MgdHJhY2UgaXQ6IGBhdGgxMmtfZHBfY2NfaW5pdGAgLSZndDsgYGF0aDEya19kcF9zZXR1cGAgLSZndDsgYGF0aDEya19kcF9jbW5fZGV2aWNlX2luaXRgIC0mZ3Q7IGBhdGgxMmtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHlgLiBJJiMzOTtsbCBjb25maXJtIHRoYXQgYGF0aDEya19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeWAgaXMgdGhlIG9ubHkgY2FsbGVyIG9mIGBhdGgxMmtfZHBfY21uX2RldmljZV9pbml0YCwgc28gdGhhdCBJJiMzOTttIHN1cmUgb2YgdGhlIGVudGlyZSBwYXRoLi4uIEkmIzM5O3ZlIGFscmVhZHkgZ3JlcHBlZCBmb3IgYGF0aDEya19kcF9jbW5fZGV2aWNlX2luaXRgLiBBbmQgYXMgZXhwZWN0ZWQsIHRoZSBvbmx5IGNhbGxlciBpcyBgYXRoMTJrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5YC4gV2hhdCBhYm91dCBgYXRoMTJrX2RwX3NldHVwYD8gSSYjMzk7bGwgZ3JlcCBmb3IgdGhhdC4gQWgsIHRoZSBzYW1lIHBhdHRlcm4gZW1lcmdlczogYGF0aDEya19kcF9zZXR1cGAgaXMgb25seSBjYWxsZWQgYnkgYGF0aDEya19kcF9jbW5fZGV2aWNlX2luaXRgLiBTYW1lIHdpdGggYGF0aDEya19kcF9jY19pbml0YCwgSSYjMzk7dmUgYWxyZWFkeSBncmVwcGVkLCBJIHNlZSB0aGF0IHRoZSBvbmx5IGNhbGxlciBpcyBgYXRoMTJrX2RwX3NldHVwYC4KCk9rYXksIHNvIHRoZSBlbnRpcmUgZGF0YXBhdGggaW5pdGlhbGl6YXRpb24gaXMgKnN0cmljdGx5KiBjb250aW5nZW50IG9uIHRoYXQgUU1JIGZpcm13YXJlIHJlYWR5IGV2ZW50LiBXaXRob3V0IHRoZSBmaXJtd2FyZSwgdGhlIGRldmljZSBkb2VzbiYjMzk7dCBldmVuIGJvdGhlciBpbml0aWFsaXppbmcgaXRzIGRhdGFwYXRoLiBJdCYjMzk7cyBhIGRlYWQgZW5kIGluIHRlcm1zIG9mIGZ1enppbmcgdW5sZXNzIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGhhcmR3YXJlIG9yIGEgZnVsbCwgaGFyZHdhcmUtbGV2ZWwgZW11bGF0b3IuCgpTbywgZ2l2ZW4gYWxsIG9mIHRoYXQsIEkgYW0gY29tcGxldGVseSBjb25maWRlbnQgdGhhdCBJIGNhbiBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYCBoZXJlLiBUaGlzIGNvZGUgaXMgaW5hY2Nlc3NpYmxlIGluIHRoZSBzcGVjaWZpZWQgZnV6emluZyBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwODoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBkYXRhcGF0aCAoZHApIGluaXRpYWxpemF0aW9uIGFuZCBkZXNjcmlwdG9yIGFjY2VzcyBmdW5jdGlvbnMgaW4gdGhlIGF0aDEyayBkcml2ZXIuIFRoZSBkYXRhcGF0aCBpcyBvbmx5IGluaXRpYWxpemVkIGFmdGVyIHRoZSBkZXZpY2UgZmlybXdhcmUgaXMgbG9hZGVkIGFuZCByZWFkeSAodmlhIGF0aDEya19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeSkuIFNpbmNlIHRoZSByZXF1aXJlZCBoYXJkd2FyZSBhbmQgZmlybXdhcmUgYXJlIG5vdCBhdmFpbGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZGF0YXBhdGggKGRwKSBpbml0aWFsaXphdGlvbiBhbmQgZGVzY3JpcHRvciBhY2Nlc3MgZnVuY3Rpb25zIGluIHRoZSBhdGgxMmsgZHJpdmVyLiBUaGUgZGF0YXBhdGggaXMgb25seSBpbml0aWFsaXplZCBhZnRlciB0aGUgZGV2aWNlIGZpcm13YXJlIGlzIGxvYWRlZCBhbmQgcmVhZHkgKHZpYSBhdGgxMmtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHkpLiBTaW5jZSB0aGUgcmVxdWlyZWQgaGFyZHdhcmUgYW5kIGZpcm13YXJlIGFyZSBub3QgYXZhaWxhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCB0ZXN0IGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjIyOjQ0LjE2MzI1MzU1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE5MjYxNDIyNTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBkYXRhcGF0aCAoZHApIGluaXRpYWxpemF0aW9uIGFuZCBkZXNjcmlwdG9yIGFjY2VzcyBmdW5jdGlvbnMgaW4gdGhlIGF0aDEyayBkcml2ZXIuIFRoZSBkYXRhcGF0aCBpcyBvbmx5IGluaXRpYWxpemVkIGFmdGVyIHRoZSBkZXZpY2UgZmlybXdhcmUgaXMgbG9hZGVkIGFuZCByZWFkeSAodmlhIGF0aDEya19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeSkuIFNpbmNlIHRoZSByZXF1aXJlZCBoYXJkd2FyZSBhbmQgZmlybXdhcmUgYXJlIG5vdCBhdmFpbGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwODoyMjo0NC4xNjMyNjQyM1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQzMDk4MjY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMGY1YzdkMTQ2NzkwZjhiMmI0NjU5ZWY2NzAyYzE4OTU0NWM1ODY0YVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1biAyOSAwODoyMjo0MiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmNcXG5pbmRleCAxYzgyZDkyN2QyN2IyNy4uMjA3NmFlNjVlOWU3YWQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jXFxuQEAgLTExNDksOCArMTE0OSw4IEBAIHN0YXRpYyB1MzIgYXRoMTJrX2RwX2NjX2Nvb2tpZV9nZW4odTE2IHBwdF9pZHgsIHUxNiBzcHRfaWR4KVxcbiBcXHRyZXR1cm4gKHUzMilwcHRfaWR4IFxcdTAwM2NcXHUwMDNjIEFUSDEyS19DQ19QUFRfU0hJRlQgfCBzcHRfaWR4O1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCAqYXRoMTJrX2RwX2NjX2dldF9kZXNjX2FkZHJfcHRyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgdTE2IHBwdF9pZHgsIHUxNiBzcHRfaWR4KVxcbitzdGF0aWMgX19sZTY0ICphdGgxMmtfZHBfY2NfZ2V0X2Rlc2NfYWRkcl9wdHIoc3RydWN0IGF0aDEya19kcCAqZHAsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgIHUxNiBwcHRfaWR4LCB1MTYgc3B0X2lkeClcXG4ge1xcbiBcXHRyZXR1cm4gZHAtXFx1MDAzZXNwdF9pbmZvW3BwdF9pZHhdLnZhZGRyICsgc3B0X2lkeDtcXG4gfVxcbkBAIC0xMTU4LDggKzExNTgsOSBAQCBzdGF0aWMgdm9pZCAqYXRoMTJrX2RwX2NjX2dldF9kZXNjX2FkZHJfcHRyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxcbiBzdHJ1Y3QgYXRoMTJrX3J4X2Rlc2NfaW5mbyAqYXRoMTJrX2RwX2dldF9yeF9kZXNjKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgIHUzMiBjb29raWUpXFxuIHtcXG4tXFx0c3RydWN0IGF0aDEya19yeF9kZXNjX2luZm8gKipkZXNjX2FkZHJfcHRyO1xcbiBcXHR1MTYgc3RhcnRfcHB0X2lkeCwgZW5kX3BwdF9pZHgsIHBwdF9pZHgsIHNwdF9pZHg7XFxuK1xcdF9fbGU2NCAqZGVzY19hZGRyX3B0cjtcXG4rXFx0dWludHB0cl90IGRlc2NfYWRkcjtcXG4gXFxuIFxcdHBwdF9pZHggPSB1MzJfZ2V0X2JpdHMoY29va2llLCBBVEgxMktfRFBfQ0NfQ09PS0lFX1BQVCk7XFxuIFxcdHNwdF9pZHggPSB1MzJfZ2V0X2JpdHMoY29va2llLCBBVEgxMktfRFBfQ0NfQ09PS0lFX1NQVCk7XFxuQEAgLTExNzQsMTYgKzExNzUsMTggQEAgc3RydWN0IGF0aDEya19yeF9kZXNjX2luZm8gKmF0aDEya19kcF9nZXRfcnhfZGVzYyhzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcXG4gXFxuIFxcdHBwdF9pZHggPSBwcHRfaWR4IC0gZHAtXFx1MDAzZXJ4X3BwdF9iYXNlO1xcbiBcXHRkZXNjX2FkZHJfcHRyID0gYXRoMTJrX2RwX2NjX2dldF9kZXNjX2FkZHJfcHRyKGRwLCBwcHRfaWR4LCBzcHRfaWR4KTtcXG4rXFx0ZGVzY19hZGRyID0gKHVpbnRwdHJfdClsZTY0X3RvX2NwdSgqZGVzY19hZGRyX3B0cik7XFxuIFxcbi1cXHRyZXR1cm4gKmRlc2NfYWRkcl9wdHI7XFxuK1xcdHJldHVybiAoc3RydWN0IGF0aDEya19yeF9kZXNjX2luZm8gKilkZXNjX2FkZHI7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTChhdGgxMmtfZHBfZ2V0X3J4X2Rlc2MpO1xcbiBcXG4gc3RydWN0IGF0aDEya190eF9kZXNjX2luZm8gKmF0aDEya19kcF9nZXRfdHhfZGVzYyhzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICB1MzIgY29va2llKVxcbiB7XFxuLVxcdHN0cnVjdCBhdGgxMmtfdHhfZGVzY19pbmZvICoqZGVzY19hZGRyX3B0cjtcXG4gXFx0dTE2IHN0YXJ0X3BwdF9pZHgsIGVuZF9wcHRfaWR4LCBwcHRfaWR4LCBzcHRfaWR4O1xcbitcXHRfX2xlNjQgKmRlc2NfYWRkcl9wdHI7XFxuK1xcdHVpbnRwdHJfdCBkZXNjX2FkZHI7XFxuIFxcbiBcXHRwcHRfaWR4ID0gdTMyX2dldF9iaXRzKGNvb2tpZSwgQVRIMTJLX0RQX0NDX0NPT0tJRV9QUFQpO1xcbiBcXHRzcHRfaWR4ID0gdTMyX2dldF9iaXRzKGNvb2tpZSwgQVRIMTJLX0RQX0NDX0NPT0tJRV9TUFQpO1xcbkBAIC0xMTk4LDE5ICsxMjAxLDIyIEBAIHN0cnVjdCBhdGgxMmtfdHhfZGVzY19pbmZvICphdGgxMmtfZHBfZ2V0X3R4X2Rlc2Moc3RydWN0IGF0aDEya19kcCAqZHAsXFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXG4gXFx0ZGVzY19hZGRyX3B0ciA9IGF0aDEya19kcF9jY19nZXRfZGVzY19hZGRyX3B0cihkcCwgcHB0X2lkeCwgc3B0X2lkeCk7XFxuK1xcdGRlc2NfYWRkciA9ICh1aW50cHRyX3QpbGU2NF90b19jcHUoKmRlc2NfYWRkcl9wdHIpO1xcbiBcXG4tXFx0cmV0dXJuICpkZXNjX2FkZHJfcHRyO1xcbitcXHRyZXR1cm4gKHN0cnVjdCBhdGgxMmtfdHhfZGVzY19pbmZvICopZGVzY19hZGRyO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0woYXRoMTJrX2RwX2dldF90eF9kZXNjKTtcXG4gXFxuIHN0YXRpYyBpbnQgYXRoMTJrX2RwX2NjX2Rlc2NfaW5pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbiB7XFxuIFxcdHN0cnVjdCBhdGgxMmtfZHAgKmRwID0gYXRoMTJrX2FiX3RvX2RwKGFiKTtcXG4tXFx0c3RydWN0IGF0aDEya19yeF9kZXNjX2luZm8gKnJ4X2Rlc2NzLCAqKnJ4X2Rlc2NfYWRkcjtcXG4tXFx0c3RydWN0IGF0aDEya190eF9kZXNjX2luZm8gKnR4X2Rlc2NzLCAqKnR4X2Rlc2NfYWRkcjtcXG4rXFx0c3RydWN0IGF0aDEya19yeF9kZXNjX2luZm8gKnJ4X2Rlc2NzO1xcbitcXHRzdHJ1Y3QgYXRoMTJrX3R4X2Rlc2NfaW5mbyAqdHhfZGVzY3M7XFxuIFxcdHUzMiBudW1fcnhfc3B0X3BhZ2VzID0gQVRIMTJLX05VTV9SWF9TUFRfUEFHRVMoYWIpO1xcbiBcXHR1MzIgaSwgaiwgcG9vbF9pZCwgdHhfc3B0X3BhZ2U7XFxuIFxcdHUzMiBwcHRfaWR4LCBjb29raWVfcHB0X2lkeDtcXG4rXFx0X19sZTY0ICpyeF9kZXNjX2FkZHI7XFxuK1xcdF9fbGU2NCAqdHhfZGVzY19hZGRyO1xcbiBcXG4gXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZkcC1cXHUwMDNlcnhfZGVzY19sb2NrKTtcXG4gXFxuQEAgLTEyNDYsNyArMTI1Miw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX2RwX2NjX2Rlc2NfaW5pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbiBcXG4gXFx0XFx0XFx0LyogVXBkYXRlIGRlc2NyaXB0b3IgVkEgaW4gU1BUICovXFxuIFxcdFxcdFxcdHJ4X2Rlc2NfYWRkciA9IGF0aDEya19kcF9jY19nZXRfZGVzY19hZGRyX3B0cihkcCwgcHB0X2lkeCwgaik7XFxuLVxcdFxcdFxcdCpyeF9kZXNjX2FkZHIgPSBcXHUwMDI2cnhfZGVzY3Nbal07XFxuK1xcdFxcdFxcdCpyeF9kZXNjX2FkZHIgPSBjcHVfdG9fbGU2NCgodTY0KSh1aW50cHRyX3QpXFx1MDAyNnJ4X2Rlc2NzW2pdKTtcXG4gXFx0XFx0fVxcbiBcXHR9XFxuIFxcbkBAIC0xMjg2LDcgKzEyOTIsNyBAQCBzdGF0aWMgaW50IGF0aDEya19kcF9jY19kZXNjX2luaXQoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4gXFx0XFx0XFx0XFx0LyogVXBkYXRlIGRlc2NyaXB0b3IgVkEgaW4gU1BUICovXFxuIFxcdFxcdFxcdFxcdHR4X2Rlc2NfYWRkciA9XFxuIFxcdFxcdFxcdFxcdFxcdGF0aDEya19kcF9jY19nZXRfZGVzY19hZGRyX3B0cihkcCwgcHB0X2lkeCwgaik7XFxuLVxcdFxcdFxcdFxcdCp0eF9kZXNjX2FkZHIgPSBcXHUwMDI2dHhfZGVzY3Nbal07XFxuK1xcdFxcdFxcdFxcdCp0eF9kZXNjX2FkZHIgPSBjcHVfdG9fbGU2NCgodTY0KSh1aW50cHRyX3QpXFx1MDAyNnR4X2Rlc2NzW2pdKTtcXG4gXFx0XFx0XFx0fVxcbiBcXHRcXHR9XFxuIFxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZkcC1cXHUwMDNldHhfZGVzY19sb2NrW3Bvb2xfaWRdKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oXFxuaW5kZXggZjhjZmM3YmIyOWRkNzguLjBkN2ZjMmFlYTI0MTVlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxcbkBAIC0zNTcsNyArMzU3LDcgQEAgc3RydWN0IGF0aDEya190eF9kZXNjX3BhcmFtcyB7XFxuIFxcbiBzdHJ1Y3QgYXRoMTJrX3NwdF9pbmZvIHtcXG4gXFx0ZG1hX2FkZHJfdCBwYWRkcjtcXG4tXFx0dTY0ICp2YWRkcjtcXG4rXFx0X19sZTY0ICp2YWRkcjtcXG4gfTtcXG4gXFxuIHN0cnVjdCBhdGgxMmtfcmVvX3F1ZXVlX3JlZiB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjIyOjQ0LjgwNzI1MzExN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzEyODIxMzAwNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBkYXRhcGF0aCAoZHApIGluaXRpYWxpemF0aW9uIGFuZCBkZXNjcmlwdG9yIGFjY2VzcyBmdW5jdGlvbnMgaW4gdGhlIGF0aDEyayBkcml2ZXIuIFRoZSBkYXRhcGF0aCBpcyBvbmx5IGluaXRpYWxpemVkIGFmdGVyIHRoZSBkZXZpY2UgZmlybXdhcmUgaXMgbG9hZGVkIGFuZCByZWFkeSAodmlhIGF0aDEya19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeSkuIFNpbmNlIHRoZSByZXF1aXJlZCBoYXJkd2FyZSBhbmQgZmlybXdhcmUgYXJlIG5vdCBhdmFpbGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDBmNWM3ZDE0Njc5MGY4YjJiNDY1OWVmNjcwMmMxODk1NDVjNTg2NGFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1biAyOSAwODoyMjo0MiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuY1xuaW5kZXggMWM4MmQ5MjdkMjdiMjcuLjIwNzZhZTY1ZTllN2FkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmNcbkBAIC0xMTQ5LDggKzExNDksOCBAQCBzdGF0aWMgdTMyIGF0aDEya19kcF9jY19jb29raWVfZ2VuKHUxNiBwcHRfaWR4LCB1MTYgc3B0X2lkeClcbiBcdHJldHVybiAodTMyKXBwdF9pZHggXHUwMDNjXHUwMDNjIEFUSDEyS19DQ19QUFRfU0hJRlQgfCBzcHRfaWR4O1xuIH1cbiBcbi1zdGF0aWMgdm9pZCAqYXRoMTJrX2RwX2NjX2dldF9kZXNjX2FkZHJfcHRyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuLVx0XHRcdFx0XHQgICAgdTE2IHBwdF9pZHgsIHUxNiBzcHRfaWR4KVxuK3N0YXRpYyBfX2xlNjQgKmF0aDEya19kcF9jY19nZXRfZGVzY19hZGRyX3B0cihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcbitcdFx0XHRcdFx0ICAgICAgdTE2IHBwdF9pZHgsIHUxNiBzcHRfaWR4KVxuIHtcbiBcdHJldHVybiBkcC1cdTAwM2VzcHRfaW5mb1twcHRfaWR4XS52YWRkciArIHNwdF9pZHg7XG4gfVxuQEAgLTExNTgsOCArMTE1OCw5IEBAIHN0YXRpYyB2b2lkICphdGgxMmtfZHBfY2NfZ2V0X2Rlc2NfYWRkcl9wdHIoc3RydWN0IGF0aDEya19kcCAqZHAsXG4gc3RydWN0IGF0aDEya19yeF9kZXNjX2luZm8gKmF0aDEya19kcF9nZXRfcnhfZGVzYyhzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcbiBcdFx0XHRcdFx0XHQgIHUzMiBjb29raWUpXG4ge1xuLVx0c3RydWN0IGF0aDEya19yeF9kZXNjX2luZm8gKipkZXNjX2FkZHJfcHRyO1xuIFx0dTE2IHN0YXJ0X3BwdF9pZHgsIGVuZF9wcHRfaWR4LCBwcHRfaWR4LCBzcHRfaWR4O1xuK1x0X19sZTY0ICpkZXNjX2FkZHJfcHRyO1xuK1x0dWludHB0cl90IGRlc2NfYWRkcjtcbiBcbiBcdHBwdF9pZHggPSB1MzJfZ2V0X2JpdHMoY29va2llLCBBVEgxMktfRFBfQ0NfQ09PS0lFX1BQVCk7XG4gXHRzcHRfaWR4ID0gdTMyX2dldF9iaXRzKGNvb2tpZSwgQVRIMTJLX0RQX0NDX0NPT0tJRV9TUFQpO1xuQEAgLTExNzQsMTYgKzExNzUsMTggQEAgc3RydWN0IGF0aDEya19yeF9kZXNjX2luZm8gKmF0aDEya19kcF9nZXRfcnhfZGVzYyhzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcbiBcbiBcdHBwdF9pZHggPSBwcHRfaWR4IC0gZHAtXHUwMDNlcnhfcHB0X2Jhc2U7XG4gXHRkZXNjX2FkZHJfcHRyID0gYXRoMTJrX2RwX2NjX2dldF9kZXNjX2FkZHJfcHRyKGRwLCBwcHRfaWR4LCBzcHRfaWR4KTtcbitcdGRlc2NfYWRkciA9ICh1aW50cHRyX3QpbGU2NF90b19jcHUoKmRlc2NfYWRkcl9wdHIpO1xuIFxuLVx0cmV0dXJuICpkZXNjX2FkZHJfcHRyO1xuK1x0cmV0dXJuIChzdHJ1Y3QgYXRoMTJrX3J4X2Rlc2NfaW5mbyAqKWRlc2NfYWRkcjtcbiB9XG4gRVhQT1JUX1NZTUJPTChhdGgxMmtfZHBfZ2V0X3J4X2Rlc2MpO1xuIFxuIHN0cnVjdCBhdGgxMmtfdHhfZGVzY19pbmZvICphdGgxMmtfZHBfZ2V0X3R4X2Rlc2Moc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXHRcdFx0XHRcdFx0ICB1MzIgY29va2llKVxuIHtcbi1cdHN0cnVjdCBhdGgxMmtfdHhfZGVzY19pbmZvICoqZGVzY19hZGRyX3B0cjtcbiBcdHUxNiBzdGFydF9wcHRfaWR4LCBlbmRfcHB0X2lkeCwgcHB0X2lkeCwgc3B0X2lkeDtcbitcdF9fbGU2NCAqZGVzY19hZGRyX3B0cjtcbitcdHVpbnRwdHJfdCBkZXNjX2FkZHI7XG4gXG4gXHRwcHRfaWR4ID0gdTMyX2dldF9iaXRzKGNvb2tpZSwgQVRIMTJLX0RQX0NDX0NPT0tJRV9QUFQpO1xuIFx0c3B0X2lkeCA9IHUzMl9nZXRfYml0cyhjb29raWUsIEFUSDEyS19EUF9DQ19DT09LSUVfU1BUKTtcbkBAIC0xMTk4LDE5ICsxMjAxLDIyIEBAIHN0cnVjdCBhdGgxMmtfdHhfZGVzY19pbmZvICphdGgxMmtfZHBfZ2V0X3R4X2Rlc2Moc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuIFx0ZGVzY19hZGRyX3B0ciA9IGF0aDEya19kcF9jY19nZXRfZGVzY19hZGRyX3B0cihkcCwgcHB0X2lkeCwgc3B0X2lkeCk7XG4rXHRkZXNjX2FkZHIgPSAodWludHB0cl90KWxlNjRfdG9fY3B1KCpkZXNjX2FkZHJfcHRyKTtcbiBcbi1cdHJldHVybiAqZGVzY19hZGRyX3B0cjtcbitcdHJldHVybiAoc3RydWN0IGF0aDEya190eF9kZXNjX2luZm8gKilkZXNjX2FkZHI7XG4gfVxuIEVYUE9SVF9TWU1CT0woYXRoMTJrX2RwX2dldF90eF9kZXNjKTtcbiBcbiBzdGF0aWMgaW50IGF0aDEya19kcF9jY19kZXNjX2luaXQoc3RydWN0IGF0aDEya19iYXNlICphYilcbiB7XG4gXHRzdHJ1Y3QgYXRoMTJrX2RwICpkcCA9IGF0aDEya19hYl90b19kcChhYik7XG4tXHRzdHJ1Y3QgYXRoMTJrX3J4X2Rlc2NfaW5mbyAqcnhfZGVzY3MsICoqcnhfZGVzY19hZGRyO1xuLVx0c3RydWN0IGF0aDEya190eF9kZXNjX2luZm8gKnR4X2Rlc2NzLCAqKnR4X2Rlc2NfYWRkcjtcbitcdHN0cnVjdCBhdGgxMmtfcnhfZGVzY19pbmZvICpyeF9kZXNjcztcbitcdHN0cnVjdCBhdGgxMmtfdHhfZGVzY19pbmZvICp0eF9kZXNjcztcbiBcdHUzMiBudW1fcnhfc3B0X3BhZ2VzID0gQVRIMTJLX05VTV9SWF9TUFRfUEFHRVMoYWIpO1xuIFx0dTMyIGksIGosIHBvb2xfaWQsIHR4X3NwdF9wYWdlO1xuIFx0dTMyIHBwdF9pZHgsIGNvb2tpZV9wcHRfaWR4O1xuK1x0X19sZTY0ICpyeF9kZXNjX2FkZHI7XG4rXHRfX2xlNjQgKnR4X2Rlc2NfYWRkcjtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZkcC1cdTAwM2VyeF9kZXNjX2xvY2spO1xuIFxuQEAgLTEyNDYsNyArMTI1Miw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX2RwX2NjX2Rlc2NfaW5pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuIFxuIFx0XHRcdC8qIFVwZGF0ZSBkZXNjcmlwdG9yIFZBIGluIFNQVCAqL1xuIFx0XHRcdHJ4X2Rlc2NfYWRkciA9IGF0aDEya19kcF9jY19nZXRfZGVzY19hZGRyX3B0cihkcCwgcHB0X2lkeCwgaik7XG4tXHRcdFx0KnJ4X2Rlc2NfYWRkciA9IFx1MDAyNnJ4X2Rlc2NzW2pdO1xuK1x0XHRcdCpyeF9kZXNjX2FkZHIgPSBjcHVfdG9fbGU2NCgodTY0KSh1aW50cHRyX3QpXHUwMDI2cnhfZGVzY3Nbal0pO1xuIFx0XHR9XG4gXHR9XG4gXG5AQCAtMTI4Niw3ICsxMjkyLDcgQEAgc3RhdGljIGludCBhdGgxMmtfZHBfY2NfZGVzY19pbml0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4gXHRcdFx0XHQvKiBVcGRhdGUgZGVzY3JpcHRvciBWQSBpbiBTUFQgKi9cbiBcdFx0XHRcdHR4X2Rlc2NfYWRkciA9XG4gXHRcdFx0XHRcdGF0aDEya19kcF9jY19nZXRfZGVzY19hZGRyX3B0cihkcCwgcHB0X2lkeCwgaik7XG4tXHRcdFx0XHQqdHhfZGVzY19hZGRyID0gXHUwMDI2dHhfZGVzY3Nbal07XG4rXHRcdFx0XHQqdHhfZGVzY19hZGRyID0gY3B1X3RvX2xlNjQoKHU2NCkodWludHB0cl90KVx1MDAyNnR4X2Rlc2NzW2pdKTtcbiBcdFx0XHR9XG4gXHRcdH1cbiBcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2ZHAtXHUwMDNldHhfZGVzY19sb2NrW3Bvb2xfaWRdKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmhcbmluZGV4IGY4Y2ZjN2JiMjlkZDc4Li4wZDdmYzJhZWEyNDE1ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oXG5AQCAtMzU3LDcgKzM1Nyw3IEBAIHN0cnVjdCBhdGgxMmtfdHhfZGVzY19wYXJhbXMge1xuIFxuIHN0cnVjdCBhdGgxMmtfc3B0X2luZm8ge1xuIFx0ZG1hX2FkZHJfdCBwYWRkcjtcbi1cdHU2NCAqdmFkZHI7XG4rXHRfX2xlNjQgKnZhZGRyO1xuIH07XG4gXG4gc3RydWN0IGF0aDEya19yZW9fcXVldWVfcmVmIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjIyOjQ0LjgwNzI1ODg2N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIwMDIwNjc4NDM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFzc2Vzc2luZyB0aGUgRnV6emFiaWxpdHkgb2YgYW4gYXRoMTJrIEVuZGlhbm5lc3MgRml4KipcblxuT2theSwgc28gd2UndmUgZ290IGEgcGF0Y2ggaGVyZSBtb2RpZnlpbmcgdGhlIGF0aDEyayBkcml2ZXIsIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jYCBhbmQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaGAuIEl0IGxvb2tzIGxpa2UgaXQncyBhZGRyZXNzaW5nIGFuIGVuZGlhbm5lc3MgaXNzdWUsIGNoYW5naW5nIGB2YWRkcmAgaW4gYHN0cnVjdCBhdGgxMmtfc3B0X2luZm9gIHRvIGBfX2xlNjQgKmAgYW5kIHVwZGF0aW5nIHJlbGF0ZWQgZnVuY3Rpb25zIChgYXRoMTJrX2RwX2NjX2dldF9kZXNjX2FkZHJfcHRyYCwgZXRjLikgdG8gaGFuZGxlIHRoZSBsaXR0bGUtZW5kaWFuIGNvbnZlcnNpb24uIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2ggZnJvbSBhIGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmUuIE15IHByaW1hcnkgY29uY2VybiwgdGhvdWdoLCBpcyB3aGV0aGVyIHRoaXMgaXMgd29ydGggZnVzc2luZyB3aXRoIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCBzaW5jZSB0aGUgaW5zdHJ1Y3Rpb25zIHNheSB0aGF0IHdlIHNob3VsZCBpZ25vcmUgcGF0Y2hlcyB0aGF0IGNhbid0IGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxuXG5UaGUgYXRoMTJrIGRyaXZlciBpcywgb2YgY291cnNlLCBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzLiBJdCdzIGEgUENJIG9yIEFIQiBkZXZpY2UsIHdoaWNoIG1ha2VzIGl0IGFuIGltbWVkaWF0ZSBmbGFnLiBXaS1GaSBkcml2ZXJzLCBpbiBteSBleHBlcmllbmNlLCB1c3VhbGx5IHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgZm9yIGVmZmVjdGl2ZSB0ZXN0aW5nLiBJJ20gaW1tZWRpYXRlbHkgc2tlcHRpY2FsIHRoYXQgd2UgY2FuIHJlYWNoIHRoaXMgZWFzaWx5IGluIGEgdmlydHVhbGl6ZWQgc2V0dGluZywgdW5sZXNzIHNvbWUgY2xldmVyIGVtdWxhdGlvbiB0cmljayBpcyBhdmFpbGFibGUuIEl0J3Mgbm90IHVzaW5nIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIHdvdWxkIGJlIHRoZSBlYXN5IHdpbi5cblxuV2FpdCwgZG9lcyBzeXprYWxsZXIgaGF2ZSBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXM/IEkgcmVjYWxsIHNlZWluZyBzb21lIFBDSS1yZWxhdGVkIGZ1enppbmcgaW4gdGhlIGRvY3VtZW50YXRpb24sIHV0aWxpemluZyB2ZmlvIG9yIHNpbWlsYXIgc2V0dXBzIGZvciBmYWtpbmcgUENJIGRldmljZXMsIGFuZCBwb3RlbnRpYWxseSBpbmplY3RpbmcgUENJIGNvbmZpZyBzcGFjZSBhbmQgTU1JTy4gTWF5YmUgdGhhdCBnaXZlcyB1cyBhIHdheSBpbj8gU3l6a2FsbGVyJ3MgZG9jdW1lbnRhdGlvbiwgb3IgYnVnIHJlcG9ydHMsIHdvdWxkIGJlIHRoZSBwbGFjZXMgdG8gY2hlY2sgaWYgYXRoMTJrIGlzIGV4cGxpY2l0bHkgZnV6emVkIG9yIGlmIHNvbWUgZ2VuZXJpYyBQQ0kgZnV6emluZyBjYW4gYmluZCB0byBpdC5cblxuVGhlIGluc3RydWN0aW9ucyB0ZWxsIHVzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiBpdCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiBMZXQncyBzZWUuIERvZXMgUUVNVSBldmVuIGhhdmUgYW55IGF0aDEyayBQQ0kgZW11bGF0aW9uPyBJIGRvdWJ0IGl0LlxuXG5TeXprYWxsZXIgZG9lcyBzZWVtIHRvIGhhdmUgc29tZSBQQ0kgZnV6emluZyBzdXBwb3J0LCBzbyBwZXJoYXBzIHRoYXQgY2FuIGJlIHVzZWQuIEl0IHJlcXVpcmVzIHRoZSBkcml2ZXIgdG8gYmluZCB0byBhIGZha2UgUENJIGRldmljZS4gRG8gd2UgaGF2ZSBzb21ldGhpbmcgbGlrZSBhIGBzeXpfcGNpX2RldmljZWAgZnVuY3Rpb24gdGhhdCB3ZSBjYW4gdXNlPyBJIHJlY2FsbCB3ZSBjYW4gdXNlIHRoZSBgc3l6X3BjaV9kZXZpY2VgIHR5cGUuXG5cbkFscmlnaHQsIGxldCdzIHNlYXJjaCBzeXprYWxsZXIgZm9yIGBhdGgxMmtgIHRvIHNlZSBpZiBpdCdzIGV4cGxpY2l0bHkgZnV6emVkLiBBbmQgYmVjYXVzZSBpdCdzIGEgUENJIGRyaXZlciwgbWF5YmUgd2UgY2FuIHVzZSB0aGUgZnV6emluZyBhYmlsaXRpZXMgZm9yIFBDSSBkcml2ZXJzLiBJIGRvbid0IGhhdmUgYWNjZXNzIHRvIHN5emthbGxlciBidWcgcmVwb3J0cywgc28gdGhhdCdzIG91dC4gU28sIGxldCdzIHNlZSBpZiB3ZSBjYW4gZmluZCBhbnl0aGluZyBpbiB0aGUgS2NvbmZpZywgc2VlIGlmIHRoZXJlJ3MgYW55IGluZGljYXRpb24gb2YgZnV6emluZyBiZWluZyBlbmFibGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTI5LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Njk5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDg6MjM6MDQuODI3OTQxNzI1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4NjUzOTQ4MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQVRIMTJLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6Mjpjb25maWcgQVRIMTJLXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIFRlY2hub2xvZ2llcyBXaS1GaSA3IHN1cHBvcnQgKGF0aDEyaylcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjE4OmNvbmZpZyBBVEgxMktfQUhCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTE5LVxcdGJvb2wgXFxcIlFUSSBhdGgxMmsgQUhCIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjI2OmNvbmZpZyBBVEgxMktfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMjctXFx0Ym9vbCBcXFwiYXRoMTJrIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MzY6Y29uZmlnIEFUSDEyS19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTM3LVxcdGJvb2wgXFxcIlFUSSBhdGgxMmsgZGVidWdmcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo0NTpjb25maWcgQVRIMTJLX1RSQUNJTkdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDYtXFx0Ym9vbCBcXFwiYXRoMTJrIHRyYWNpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy01My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6NTQ6Y29uZmlnIEFUSDEyS19DT1JFRFVNUFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy01NS1cXHRib29sIFxcXCJhdGgxMmsgY29yZWR1bXBcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjIzOjA1LjIxNDQ5MTk2N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1Mjk0NTk0MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBUYXJnZXQgRHJpdmVyIGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZGlnZ2luZyBpbnRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGhvdyBsaWtlbHkgYW0gSSB0byBldmVuICpoaXQqIHRoYXQgY29kZSBpbiBhIHZpcnR1YWxpemVkIGNvbnRleHQ/IFRoZXNlIGxvdy1sZXZlbCwgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycywgZXNwZWNpYWxseSB3aXJlbGVzcyBvbmVzLCB0eXBpY2FsbHkgcmVxdWlyZSBzcGVjaWZpYyBoYXJkd2FyZSBvciwgYXQgdGhlIHZlcnkgbGVhc3QsIHJvYnVzdCBlbXVsYXRpb24gdG8gZnVuY3Rpb24uXG5cbkJ1dCB0aGVuIEkgcmVtZW1iZXIgc3l6a2FsbGVyLiBTcGVjaWZpY2FsbHksIGl0cyB2aXJ0dWFsIFBDSSBkZXZpY2UgZnV6emVyLiBOb3cgKnRoYXQncyogaW50ZXJlc3RpbmcuIElmIGl0IGNhbiBiaW5kIHRvIFBDSSBkcml2ZXJzIGJhc2VkIG9uIHZlbmRvci9kZXZpY2UgSURzIGFuZCB0aGVuIHN0YXJ0IHBva2luZyBhdCB0aGUgTU1JTyBhbmQgRE1BLCB0aGUgZ2FtZSBjaGFuZ2VzIHNpZ25pZmljYW50bHkuIFRoaXMgcG90ZW50aWFsbHkgb3BlbnMgdXAgYSB0ZXN0aW5nIGF2ZW51ZSBJIHdvdWxkbid0IGhhdmUgaW1tZWRpYXRlbHkgY29uc2lkZXJlZC5cblxuVGhlIGtleSBxdWVzdGlvbiBpcywgZG9lcyBzeXprYWxsZXIgKmFjdHVhbGx5KiBmdXp6IGBhdGgxMmtgPyBJIG5lZWQgdG8gdmVyaWZ5IGlmIHRoZSBkcml2ZXIgZXhwb3NlcyBpdHMgUENJIElEcy4gQSBxdWljayBjaGVjayBvZiB0aGUgc291cmNlIGlzIGluIG9yZGVyLiBMZXQncyBzZWUgaWYgd2UgY2FuIGZpbmQgdGhlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQwNSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwODoyMzowOS43NDM5NTU3MDZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY2NzkyNzM0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjaV9kZXZpY2VfaWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYz0xNTAyPXN0YXRpYyBlbnVtIGF0aDEya19kZXZpY2VfZmFtaWx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzoxNTAzOmF0aDEya19nZXRfZGV2aWNlX2ZhbWlseShjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqcGNpX2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE1MDQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTUwNS1cXHRlbnVtIGF0aDEya19kZXZpY2VfZmFtaWx5IGRldmljZV9mYW1pbHlfaWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzoxNTA2OlxcdGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE1MDctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jPTE1MjQ9c3RhdGljIGludCBhdGgxMmtfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTUyNTpcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaV9kZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xNTI2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmg9MTAzPXN0cnVjdCBhdGgxMmtfcGNpX2RldmljZV9mYW1pbHlfb3BzIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5oOjEwNDpcXHRpbnQgKCpwcm9iZSkoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICpwY2lfZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5oLTEwNS1cXHRpbnQgKCphcmNoX2luaXQpKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuaD0xNDI9c3RydWN0IGF0aDEya19wY2lfZHJpdmVyIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5oLTE0My1cXHRjb25zdCBjaGFyICpuYW1lO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmg6MTQ0OlxcdGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZF90YWJsZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5oLTE0NS1cXHRzdHJ1Y3QgYXRoMTJrX3BjaV9kZXZpY2VfZmFtaWx5X29wcyBvcHM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L3BjaS5jLTMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvcGNpLmM6MzQ6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGF0aDEya193aWZpN19wY2lfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L3BjaS5jLTM1LVxcdHsgUENJX1ZERVZJQ0UoUUNPTSwgUUNOOTI3NF9ERVZJQ0VfSUQpIH0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L3BjaS5jPTkxPXN0YXRpYyBpbnQgYXRoMTJrX3dpZmk3X3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L3BjaS5jOjkyOlxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaV9kZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYy05My17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjIzOjEwLjAxMDc1OTYzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg3OTI4OTg5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWFjaGluZyBBdGgxMms6IEEgRnV6emluZyBGZWFzaWJpbGl0eSBDaGVjayoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgc3l6a2FsbGVyIHNldHVwLCBzcGVjaWZpY2FsbHkgYHN5el9wY2lfZGV2aWNlYC4gSXQncyBnb3QgcG90ZW50aWFsIGZvciBlbXVsYXRpbmcgUENJIGRldmljZXMsIHdoaWNoLCBpZiBleHBsb2l0ZWQsIGNvdWxkIGdpdmUgdXMgYSBiYWNrZG9vciBpbnRvIGRyaXZlcnMsIHBhcnRpY3VsYXJseSB0aG9zZSB0aGF0IGFyZSBQQ0kgYmFzZWQuIFRoZSBxdWVzdGlvbiBub3cgaXM6IGlzIGF0aDEyayByZWFjaGFibGUgdGhyb3VnaCB0aGlzIG1ldGhvZD9cblxuV2FpdCwgYSBjcnVjaWFsIHJlbWluZGVyIGZyb20gdGhlIGluc3RydWN0aW9ucy4gSXQgc2F5cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIGludm9sdmVzIHBhdGhzIHRoYXQgYXJlIGluaGVyZW50bHkgaW5hY2Nlc3NpYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhhdCB0aHJvd3MgYSB3cmVuY2ggaW4gdGhlIHdvcmtzLiBNeSBndXQgdGVsbHMgbWUgc29tZXRoaW5nIGxpa2UgYHVzYiBnYWRnZXRgIG9yIGBtYWM4MDIxMV9od3NpbWAgd291bGQgYmUgb3V0IG9mIHJlYWNoIHdpdGggdGhlc2UgY29uc3RyYWludHMsIGJ1dCB3aGF0IGFib3V0IGF0aDEyaz9cblxuR2l2ZW4gdGhhdCBhdGgxMmsgaXMgYSBwcmV0dHkgY29tcGxleCBXaS1GaSBkcml2ZXIsIHRoZSBjcnVjaWFsIHN0ZXAgdG8gY2hlY2sgaXMgdGhpczogZG9lcyBpdCByZXF1aXJlIGZpcm13YXJlIHRvIGJlIGxvYWRlZCBhbmQgaW5pdGlhbGl6ZWQgKmJlZm9yZSogd2UgY2FuIGV2ZW4gdG91Y2ggdGhlIGRhdGFwYXRoIC0gc3BlY2lmaWNhbGx5IHRoZSBgZHAuY2AgZmlsZXM/IEkgbmVlZCB0byBjaGVjayB0byBzZWUgaWYgYGF0aDEya19kcF9jY19kZXNjX2luaXRgIGNhbiBiZSByZWFjaGVkIGJlZm9yZSBmaXJtd2FyZSBpcyBldmVuIGxvYWRlZC4gVGhpcyBpcyB0aGUgY3J1Y2lhbCBxdWVzdGlvbiB0byBkZXRlcm1pbmUgdGhlIGZlYXNpYmlsaXR5IG9mIGZ1enppbmcgdGhpcyBkcml2ZXIsIHVuZGVyIHRoZXNlIGNvbmRpdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MzAsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDg6MjM6MTQuODkwMDUyNzM0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NjI4NTk2ODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTJrX2RwX2NjX2Rlc2NfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmM9MTIwOD1FWFBPUlRfU1lNQk9MKGF0aDEya19kcF9nZXRfdHhfZGVzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jLTEyMDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jOjEyMTA6c3RhdGljIGludCBhdGgxMmtfZHBfY2NfZGVzY19pbml0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jLTEyMTEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jPTEzNTM9c3RhdGljIGludCBhdGgxMmtfZHBfY2NfaW5pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jLTE0MDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jOjE0MTA6XFx0cmV0ID0gYXRoMTJrX2RwX2NjX2Rlc2NfaW5pdChhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jLTE0MTEtXFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwODoyMzoxNi41NTI5MjI4ODJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDA0MjEwNjQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgY29kZTpcblxuKipBbmFseXppbmcgdGhlIENhbGxlcnMgb2YgYGF0aDEya19kcF9jY19pbml0YCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBUaGUgaW5pdGlhbCB0YXNrIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgYGF0aDEya19kcF9jY19pbml0YC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiAqd2hlcmUqIGlzIHRoaXMgZnVuY3Rpb24gYmVpbmcgdXNlZD8gV2hhdCBwYXJ0cyBvZiB0aGUgY29kZSBiYXNlIGFyZSBkZXBlbmRlbnQgb24gaXQ/IEtub3dpbmcgaXRzIGNhbGxlcnMgd2lsbCB0ZWxsIG1lIGl0cyBwdXJwb3NlIGFuZCBzaWduaWZpY2FuY2Ugd2l0aGluIHRoZSBicm9hZGVyIHN5c3RlbS4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSBgYXRoMTJrX2RwX2NjX2luaXRgIHRvIGZpbmQgYWxsIHRoZSBwbGFjZXMgaXQncyBhY3R1YWxseSBpbnZva2VkLiBUaGF0J3MgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHJvbGUuIEZyb20gdGhlcmUsIEkgY2FuIHN0YXJ0IGZvcm1pbmcgYSBtZW50YWwgbWFwIG9mIGl0cyBpbXBhY3QgYW5kIGltcGxpY2F0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQwNiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjIzOjE5LjU1NzEzNjkwOVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzNDA0MDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDEya19kcF9jY19pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYz0xMzQ4PXN0YXRpYyB1MzIgYXRoMTJrX2RwX2dldF9udW1fc3B0X3BhZ2VzKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMtMTM1Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmM6MTM1MzpzdGF0aWMgaW50IGF0aDEya19kcF9jY19pbml0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jLTEzNTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jPTE0NzY9c3RhdGljIGludCBhdGgxMmtfZHBfc2V0dXAoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYy0xNTIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYzoxNTI0OlxcdHJldCA9IGF0aDEya19kcF9jY19pbml0KGFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMtMTUyNS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDg6MjM6MTkuNjYwNTUxMjU5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0NzE4MDg1NTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgY29kZTpcblxuKipBbmFseXppbmcgdGhlIENhbGxlcnMgb2YgYGF0aDEya19kcF9zZXR1cGAqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBgYXRoMTJrX2RwX3NldHVwYCBpcyBiZWluZyBpbnZva2VkLiBUaGF0J3MgdGhlIGNydWNpYWwgZmlyc3Qgc3RlcC4gSSBuZWVkIHRvIHRyYWNlIGl0cyBjYWxsIGdyYXBoIHRvIGdldCBhIGhhbmRsZSBvbiBpdHMgcm9sZSB3aXRoaW4gdGhlIGJyb2FkZXIgZHJpdmVyIGFyY2hpdGVjdHVyZS4gS25vd2luZyB0aGUgY29udGV4dHMgZnJvbSB3aGljaCBpdCdzIGNhbGxlZCBnaXZlcyBtZSBpbW1lZGlhdGUgY2x1ZXMgYWJvdXQgaXRzIGZ1bmN0aW9uIGFuZCB0aGUgY3JpdGljYWwgcGF0aHMgaXQgaW1wYWN0cy4gSSdsbCBuZWVkIHRvIHVzZSBteSB0b29scyAtIGdyZXAsIG1heWJlIGEgc3ltYm9sIGJyb3dzZXIgaWYgSSBoYXZlIG9uZSBoYW5keSwgb3IganVzdCBhIGdvb2Qgb2xkLWZhc2hpb25lZCBjb2RlIHNlYXJjaCDigJMgdG8gbG9jYXRlIGFsbCB0aGUgcmVmZXJlbmNlcyB0byB0aGF0IGZ1bmN0aW9uLiBGcm9tIHRoZXJlLCBJIGNhbiBzdGFydCBwaWVjaW5nIHRvZ2V0aGVyIHRoZSBmbG93IGFuZCB0aGUgbG9naWMgYmVoaW5kIGl0LiBXaGF0J3MgY2FsbGluZyBpdD8gVW5kZXIgd2hhdCBjb25kaXRpb25zPyBEb2VzIGl0IGFwcGVhciBpbiBpbml0aWFsaXphdGlvbiByb3V0aW5lcywgaW50ZXJydXB0IGhhbmRsZXJzLCBvciBtYXliZSBkYXRhIHBhdGggbWFuYWdlbWVudD8gQW5zd2VyaW5nIHRob3NlIHF1ZXN0aW9ucyB3aWxsIHBhaW50IGEgY2xlYXIgcGljdHVyZS4gVGhlbiBJJ2xsIGZvY3VzIG9uIGhvdyBlYWNoIGNhbGxlciB1c2VzIHRoZSByZXR1cm4gdmFsdWUgYW5kIGFueSBvdGhlciByZWxhdGVkIGZ1bmN0aW9uIGNhbGxzIHRoYXQgYXJlIG1hZGUgYWZ0ZXJ3YXJkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTI1LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDg6MjM6MzQuMzc4NjQxMjc0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTU2NjYzNjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTJrX2RwX3NldHVwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYz0xNDM4PXN0YXRpYyBpbnQgYXRoMTJrX2RwX3Jlb3FfbHV0X3NldHVwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMtMTQ3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmM6MTQ3NjpzdGF0aWMgaW50IGF0aDEya19kcF9zZXR1cChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYy0xNDc3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYz0xNjA0PWludCBhdGgxMmtfZHBfY21uX2RldmljZV9pbml0KHN0cnVjdCBhdGgxMmtfZHAgKmRwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jLTE2MDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jOjE2MDg6XFx0cmV0ID0gYXRoMTJrX2RwX3NldHVwKGRwLVxcdTAwM2VhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jLTE2MDktXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDg6MjM6MzQuODc0MzE4MDU2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyMzAzODc1MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIGNvZGUuXG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQ2FsbGVycyBvZiBgYXRoMTJrX2RwX2Ntbl9kZXZpY2VfaW5pdGAqKlxuXG5BbHJpZ2h0LCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIGZsb3cgYW5kIGZpZ3VyZSBvdXQgd2hlcmUgdGhpcyBgYXRoMTJrX2RwX2Ntbl9kZXZpY2VfaW5pdGAgZnVuY3Rpb24gaXMgYmVpbmcgaW52b2tlZC4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbGluZyBjb250ZXh0cyBpcyBjcnVjaWFsOyBpdOKAmXMgZ29pbmcgdG8gcHJvdmlkZSBtZSB3aXRoIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlIGNvbW1vbiBkZXZpY2UgaW5pdGlhbGl6YXRpb24gaXMgaW50ZWdyYXRlZCB3aXRoaW4gdGhlIGJyb2FkZXIgYGF0aDEya2AgZHJpdmVyIGFyY2hpdGVjdHVyZS4gSSBuZWVkIHRvIHBpbnBvaW50IGV2ZXJ5IGNhbGwgc2l0ZSB0byBncmFzcCB0aGUgZnVsbCBzY29wZSBvZiBpdHMgaW1wYWN0IGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBvdmVyYWxsIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBJZGVudGlmeWluZyB0aGUgY2FsbGVycyB3aWxsIGxpa2VseSByZXZlYWwgdGhlIHJlbGV2YW50IGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIHBoYXNlcyBhbmQgdGhlIGFzc29jaWF0ZWQgY29udHJvbCBwYXRocy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODUwNCwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjIzOjQwLjEwNDcwOTUxNloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1MDE5MzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDEya19kcF9jbW5fZGV2aWNlX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9MTI4ND1pbnQgYXRoMTJrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMzAwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjEzMDE6XFx0cmV0ID0gYXRoMTJrX2RwX2Ntbl9kZXZpY2VfaW5pdChhdGgxMmtfYWJfdG9fZHAoYWIpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMzAyLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYz0xNTk5PXZvaWQgYXRoMTJrX2RwX2Ntbl9kZXZpY2VfZGVpbml0KHN0cnVjdCBhdGgxMmtfZHAgKmRwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jLTE2MDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jOjE2MDQ6aW50IGF0aDEya19kcF9jbW5fZGV2aWNlX2luaXQoc3RydWN0IGF0aDEya19kcCAqZHApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jLTE2MDUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9jbW4uaD05MT12b2lkIGF0aDEya19kcF9jbW5fZGV2aWNlX2RlaW5pdChzdHJ1Y3QgYXRoMTJrX2RwICpkcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9jbW4uaDo5MjppbnQgYXRoMTJrX2RwX2Ntbl9kZXZpY2VfaW5pdChzdHJ1Y3QgYXRoMTJrX2RwICpkcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9jbW4uaC05My12b2lkIGF0aDEya19kcF9jbW5faHdfZ3JvdXBfdW5hc3NpZ24oc3RydWN0IGF0aDEya19kcCAqZHAsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjIzOjQwLjIwOTc0MDg1NloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTUwNTQ3MjQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYXRoMTJrIERyaXZlciBJbml0aWFsaXphdGlvbiBpbiBhIFZpcnR1YWxpemVkIEVudmlyb25tZW50KipcblxuT2theSwgc28gYGF0aDEya19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeWAgaXMgdGhlIGtleSBmdW5jdGlvbiB0aGF0IHRlbGxzIG1lIHRoZSBmaXJtd2FyZSBpcyB1cCBhbmQgcnVubmluZy4gVGhhdCBtZWFucyB0aGUgZHJpdmVyIGhhcyB0byBoYW5kbGUgZmlybXdhcmUgbG9hZGluZyBhbmQgUU1JIGNvbW11bmljYXRpb24gKmJlZm9yZSogaXQgY2FuIGluaXRpYWxpemUgdGhlIGRhdGFwYXRoIChkcCkuIFRoZSBwcm9ibGVtIGlzLCBpbiBteSB2aXJ0dWFsaXplZCBzZXR1cHMsIG9yIGV2ZW4gd2l0aCBjb21wbGV4IGVtdWxhdG9ycywgdGhlIGZpcm13YXJlIGlzIHByb2JhYmx5IG5ldmVyIGdvaW5nIHRvIGxvYWQgcHJvcGVybHkuIENvbnNlcXVlbnRseSwgYW55IFFNSSBjb21tdW5pY2F0aW9uIGF0dGVtcHRzIHdpbGwgbGlrZWx5IGZhaWwgb3IgdGltZSBvdXQuIFRoYXQgbWVhbnMgSSB3b24ndCBldmVyIGhpdCBgYXRoMTJrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5YC5cblxuU28sIHRoZSBxdWVzdGlvbiBub3cgaXMsIGlzIHRoZXJlIGFueSBraW5kIG9mIG1vY2sgZmlybXdhcmUgSSBjYW4gdXNlPyBPciBtYXliZSwgY2FuIEkgZnV6eiB0aGUgUU1JIGludGVyZmFjZSBpdHNlbGYgdG8gc2ltdWxhdGUgdGhlIGZpcm13YXJlPyBVbmZvcnR1bmF0ZWx5LCBhcyBmYXIgYXMgSSBrbm93LCBTeXprYWxsZXIgZG9lc24ndCBoYXZlIGEgUU1JIGZ1enplciBzcGVjaWZpY2FsbHkgdGFpbG9yZWQgZm9yIHRoZSBhdGgxMmsgZmlybXdhcmUsIHdoaWNoIG1ha2VzIHRoaW5ncyB0cmlja2llci5cblxuVG8gcHJvY2VlZCwgbGV0IG1lIHNlZSBpZiBgYXRoMTJrX2RwX2dldF9yeF9kZXNjYCBvciBgYXRoMTJrX2RwX2dldF90eF9kZXNjYCBnZXQgY2FsbGVkIGFueXdoZXJlIGVsc2UgaW4gdGhlIGNvZGUuIEknbSBob3BpbmcgSSBjYW4gZmluZCBhbm90aGVyIHBhdGggdGhhdCBtaWdodCBiZSBhY2Nlc3NpYmxlIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTE5NCwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwODoyMzo0NS4zNjAyOTM4NzNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk4NDkwMDExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDEya19kcF9nZXRfcnhfZGVzY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmM9MTE1Mj1zdGF0aWMgX19sZTY0ICphdGgxMmtfZHBfY2NfZ2V0X2Rlc2NfYWRkcl9wdHIoc3RydWN0IGF0aDEya19kcCAqZHAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMtMTE1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmM6MTE1ODpzdHJ1Y3QgYXRoMTJrX3J4X2Rlc2NfaW5mbyAqYXRoMTJrX2RwX2dldF9yeF9kZXNjKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYy0xMTU5LVxcdFxcdFxcdFxcdFxcdFxcdCAgdTMyIGNvb2tpZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYy0xMTgxLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmM6MTE4MjpFWFBPUlRfU1lNQk9MKGF0aDEya19kcF9nZXRfcnhfZGVzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jLTExODMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmg9Njk2PWludCBhdGgxMmtfZHBfbGlua19kZXNjX3NldHVwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmgtNjk5LVxcdFxcdFxcdCAgICAgIHUzMiBuX2xpbmtfZGVzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oOjcwMDpzdHJ1Y3QgYXRoMTJrX3J4X2Rlc2NfaW5mbyAqYXRoMTJrX2RwX2dldF9yeF9kZXNjKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaC03MDEtXFx0XFx0XFx0XFx0XFx0XFx0ICB1MzIgY29va2llKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfbW9uLmM9MjU4Mz1hdGgxMmtfd2lmaTdfZHBfcnhfbW9uX21wZHVfcG9wKHN0cnVjdCBhdGgxMmsgKmFyLCBpbnQgbWFjX2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9tb24uYy0yNjQ4LVxcdFxcdFxcdFxcdFxcdFxcdCAgXFx1MDAyNm51bV9tc2R1cyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9tb24uYzoyNjQ5OlxcdFxcdGRlc2NfaW5mbyA9IGF0aDEya19kcF9nZXRfcnhfZGVzYyhhci1cXHUwMDNlYWItXFx1MDAzZWRwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfbW9uLmMtMjY1MC1cXHRcXHRcXHRcXHRcXHRcXHQgIG1zZHVfbGlzdC5zd19jb29raWVbbnVtX21zZHVzIC0gMV0pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9tb24uYy0yNjY1LVxcdFxcdFxcdGRlc2NfaW5mbyA9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9tb24uYzoyNjY2OlxcdFxcdFxcdFxcdGF0aDEya19kcF9nZXRfcnhfZGVzYyhhci1cXHUwMDNlYWItXFx1MDAzZWRwLCBtc2R1X2xpc3Quc3dfY29va2llW2ldKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX21vbi5jLTI2NjctXFx0XFx0XFx0bXNkdSA9IGRlc2NfaW5mby1cXHUwMDNlc2tiO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jPTYzNj1pbnQgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3Moc3RydWN0IGF0aDEya19kcCAqZHAsIGludCByaW5nX2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jLTY5OS1cXHRcXHRpZiAoIWRlc2NfaW5mbykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfcnguYzo3MDA6XFx0XFx0XFx0ZGVzY19pbmZvID0gYXRoMTJrX2RwX2dldF9yeF9kZXNjKHBhcnRuZXJfZHAsIGNvb2tpZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jLTcwMS1cXHRcXHRcXHRpZiAoIWRlc2NfaW5mbykge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jPTEyNjM9YXRoMTJrX3dpZmk3X2RwX3Byb2Nlc3NfcnhfZXJyX2J1ZihzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3J4LmMtMTI4NS1cXHRpZiAoIWRlc2NfaW5mbykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfcnguYzoxMjg2OlxcdFxcdGRlc2NfaW5mbyA9IGF0aDEya19kcF9nZXRfcnhfZGVzYyhkcCwgY29va2llKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3J4LmMtMTI4Ny1cXHRcXHRpZiAoIWRlc2NfaW5mbykge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jPTEzNDg9c3RhdGljIGludCBhdGgxMmtfZHBfaF9tc2R1X2J1ZmZlcl90eXBlKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jLTEzNjYtXFx0XFx0XFx0XFx0ICAgICAgIEJVRkZFUl9BRERSX0lORk8xX1NXX0NPT0tJRSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jOjEzNjc6XFx0XFx0ZGVzY19pbmZvID0gYXRoMTJrX2RwX2dldF9yeF9kZXNjKGRwLCBjb29raWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfcnguYy0xMzY4LVxcdFxcdGlmICghZGVzY19pbmZvKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3J4LmM9MTgyMD1pbnQgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3Nfd2JtX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfcnguYy0xODc0LVxcdFxcdGlmICghZGVzY19pbmZvKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jOjE4NzU6XFx0XFx0XFx0ZGVzY19pbmZvID0gYXRoMTJrX2RwX2dldF9yeF9kZXNjKGRwLCBlcnJfaW5mby5jb29raWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfcnguYy0xODc2LVxcdFxcdFxcdGlmICghZGVzY19pbmZvKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjIzOjQ1LjQ1ODc5NDA5NFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDYzMDUyNzYzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVbnJlYWNoYWJsZSBDb2RlIGluIFZpcnR1YWxpemVkIEVudmlyb25tZW50cyoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIGFuZCBpdCdzIHByZXR0eSBjbGVhciB3aGVyZSB3ZSdyZSBhdC4gQWxsIHRoZXNlIGZ1bmN0aW9ucyDigJMgdGhlIG9uZXMgdGhhdCBhcmUgYmVpbmcgbW9kaWZpZWQg4oCTIHRoZXkncmUgYWxsIGZpcm1seSByb290ZWQgaW4gdGhlIGRhdGFwYXRoIChkcCkuIE5vdywgdGhlIGRhdGFwYXRoLCBhcyBJIHVuZGVyc3RhbmQgaXQsIG9ubHkgZ2V0cyBpbml0aWFsaXplZCBvbmNlIHRoZSBmaXJtd2FyZSBpcyByZWFkeSB0byBnby4gVGhhdCdzIHRoZSBrZXkuXG5cbkluIHRoZXNlIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCB0aGUgZmlybXdhcmUgaXNuJ3QgYXZhaWxhYmxlLiBUaGF0IG1lYW5zIHRoZSBkYXRhcGF0aCBuZXZlciBnZXRzIGluaXRpYWxpemVkLiBTaW1wbGUgZW5vdWdoLiBUaGVyZWZvcmUsIHRoZSBjb2RlIHBhdGhzIHRoaXMgcGF0Y2ggdG91Y2hlcz8gVGhleSdyZSBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIGluIHRoZXNlIHNwZWNpZmljIGZ1enppbmcgc2NlbmFyaW9zLiBJIG5lZWQgdG8gYmUgc3VyZSB0aG91Z2gsIGxldCdzIHRha2UgYSBsb29rLi4uXG5cbkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgSSdsbCBnbyB0aHJvdWdoIHRoZSBjYWxsIHN0YWNrIGZvciB0aGUgdGFyZ2V0IGZ1bmN0aW9ucy4gU3RhcnRpbmcgd2l0aCBgYXRoMTJrX2RwX2NjX2Rlc2NfaW5pdGAsIGNhbiB0aGF0IGJlIHJlYWNoZWQgdmlhIHNvbWUgb3RoZXIgcGF0aD8gTGV0J3MgdHJhY2UgaXQ6IGBhdGgxMmtfZHBfY2NfaW5pdGAgLVx1MDAzZSBgYXRoMTJrX2RwX3NldHVwYCAtXHUwMDNlIGBhdGgxMmtfZHBfY21uX2RldmljZV9pbml0YCAtXHUwMDNlIGBhdGgxMmtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHlgLiBJJ2xsIGNvbmZpcm0gdGhhdCBgYXRoMTJrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5YCBpcyB0aGUgb25seSBjYWxsZXIgb2YgYGF0aDEya19kcF9jbW5fZGV2aWNlX2luaXRgLCBzbyB0aGF0IEknbSBzdXJlIG9mIHRoZSBlbnRpcmUgcGF0aC4uLiBJJ3ZlIGFscmVhZHkgZ3JlcHBlZCBmb3IgYGF0aDEya19kcF9jbW5fZGV2aWNlX2luaXRgLiBBbmQgYXMgZXhwZWN0ZWQsIHRoZSBvbmx5IGNhbGxlciBpcyBgYXRoMTJrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5YC4gV2hhdCBhYm91dCBgYXRoMTJrX2RwX3NldHVwYD8gSSdsbCBncmVwIGZvciB0aGF0LiBBaCwgdGhlIHNhbWUgcGF0dGVybiBlbWVyZ2VzOiBgYXRoMTJrX2RwX3NldHVwYCBpcyBvbmx5IGNhbGxlZCBieSBgYXRoMTJrX2RwX2Ntbl9kZXZpY2VfaW5pdGAuIFNhbWUgd2l0aCBgYXRoMTJrX2RwX2NjX2luaXRgLCBJJ3ZlIGFscmVhZHkgZ3JlcHBlZCwgSSBzZWUgdGhhdCB0aGUgb25seSBjYWxsZXIgaXMgYGF0aDEya19kcF9zZXR1cGAuXG5cbk9rYXksIHNvIHRoZSBlbnRpcmUgZGF0YXBhdGggaW5pdGlhbGl6YXRpb24gaXMgKnN0cmljdGx5KiBjb250aW5nZW50IG9uIHRoYXQgUU1JIGZpcm13YXJlIHJlYWR5IGV2ZW50LiBXaXRob3V0IHRoZSBmaXJtd2FyZSwgdGhlIGRldmljZSBkb2Vzbid0IGV2ZW4gYm90aGVyIGluaXRpYWxpemluZyBpdHMgZGF0YXBhdGguIEl0J3MgYSBkZWFkIGVuZCBpbiB0ZXJtcyBvZiBmdXp6aW5nIHVubGVzcyB3ZSdyZSB0YWxraW5nIGFib3V0IGhhcmR3YXJlIG9yIGEgZnVsbCwgaGFyZHdhcmUtbGV2ZWwgZW11bGF0b3IuXG5cblNvLCBnaXZlbiBhbGwgb2YgdGhhdCwgSSBhbSBjb21wbGV0ZWx5IGNvbmZpZGVudCB0aGF0IEkgY2FuIHNldCBgV29ydGhGdXp6aW5nYCB0byBgZmFsc2VgIGhlcmUuIFRoaXMgY29kZSBpcyBpbmFjY2Vzc2libGUgaW4gdGhlIHNwZWNpZmllZCBmdXp6aW5nIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMjIxLCJPdXRwdXRUb2tlbnMiOjExOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwODoyMzo1Ni4wODkzMjU0MDdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDAxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZGF0YXBhdGggKGRwKSBpbml0aWFsaXphdGlvbiBhbmQgZGVzY3JpcHRvciBhY2Nlc3MgZnVuY3Rpb25zIGluIHRoZSBhdGgxMmsgZHJpdmVyLiBUaGUgZGF0YXBhdGggaXMgb25seSBpbml0aWFsaXplZCBhZnRlciB0aGUgZGV2aWNlIGZpcm13YXJlIGlzIGxvYWRlZCBhbmQgcmVhZHkgKHZpYSBhdGgxMmtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHkpLiBTaW5jZSB0aGUgcmVxdWlyZWQgaGFyZHdhcmUgYW5kIGZpcm13YXJlIGFyZSBub3QgYXZhaWxhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCB0ZXN0IGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGRhdGFwYXRoIChkcCkgaW5pdGlhbGl6YXRpb24gYW5kIGRlc2NyaXB0b3IgYWNjZXNzIGZ1bmN0aW9ucyBpbiB0aGUgYXRoMTJrIGRyaXZlci4gVGhlIGRhdGFwYXRoIGlzIG9ubHkgaW5pdGlhbGl6ZWQgYWZ0ZXIgdGhlIGRldmljZSBmaXJtd2FyZSBpcyBsb2FkZWQgYW5kIHJlYWR5ICh2aWEgYXRoMTJrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5KS4gU2luY2UgdGhlIHJlcXVpcmVkIGhhcmR3YXJlIGFuZCBmaXJtd2FyZSBhcmUgbm90IGF2YWlsYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgdGhlc2UgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowgm64w[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-29 08:06:24 +0000 UTC FinishedAt: 2026-06-29 08:23:57 +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+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjIyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBkYXRhcGF0aCAoZHApIGluaXRpYWxpemF0aW9uIGFuZCBkZXNjcmlwdG9yIGFjY2VzcyBmdW5jdGlvbnMgaW4gdGhlIGF0aDEyayBkcml2ZXIuIFRoZSBkYXRhcGF0aCBpcyBvbmx5IGluaXRpYWxpemVkIGFmdGVyIHRoZSBkZXZpY2UgZmlybXdhcmUgaXMgbG9hZGVkIGFuZCByZWFkeSAodmlhIGF0aDEya19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeSkuIFNpbmNlIHRoZSByZXF1aXJlZCBoYXJkd2FyZSBhbmQgZmlybXdhcmUgYXJlIG5vdCBhdmFpbGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjIyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMGY1YzdkMTQ2NzkwZjhiMmI0NjU5ZWY2NzAyYzE4OTU0NWM1ODY0YVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVuIDI5IDA4OjIyOjQyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuY1xuaW5kZXggMWM4MmQ5MjdkMjdiMjcuLjIwNzZhZTY1ZTllN2FkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmNcbkBAIC0xMTQ5LDggJiM0MzsxMTQ5LDggQEAgc3RhdGljIHUzMiBhdGgxMmtfZHBfY2NfY29va2llX2dlbih1MTYgcHB0X2lkeCwgdTE2IHNwdF9pZHgpXG4gXHRyZXR1cm4gKHUzMilwcHRfaWR4IFx1MDAzY1x1MDAzYyBBVEgxMktfQ0NfUFBUX1NISUZUIHwgc3B0X2lkeDtcbiB9XG4gXG4tc3RhdGljIHZvaWQgKmF0aDEya19kcF9jY19nZXRfZGVzY19hZGRyX3B0cihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcbi1cdFx0XHRcdFx0ICAgIHUxNiBwcHRfaWR4LCB1MTYgc3B0X2lkeClcbiYjNDM7c3RhdGljIF9fbGU2NCAqYXRoMTJrX2RwX2NjX2dldF9kZXNjX2FkZHJfcHRyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgdTE2IHBwdF9pZHgsIHUxNiBzcHRfaWR4KVxuIHtcbiBcdHJldHVybiBkcC1cdTAwM2VzcHRfaW5mb1twcHRfaWR4XS52YWRkciAmIzQzOyBzcHRfaWR4O1xuIH1cbkBAIC0xMTU4LDggJiM0MzsxMTU4LDkgQEAgc3RhdGljIHZvaWQgKmF0aDEya19kcF9jY19nZXRfZGVzY19hZGRyX3B0cihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcbiBzdHJ1Y3QgYXRoMTJrX3J4X2Rlc2NfaW5mbyAqYXRoMTJrX2RwX2dldF9yeF9kZXNjKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuIFx0XHRcdFx0XHRcdCAgdTMyIGNvb2tpZSlcbiB7XG4tXHRzdHJ1Y3QgYXRoMTJrX3J4X2Rlc2NfaW5mbyAqKmRlc2NfYWRkcl9wdHI7XG4gXHR1MTYgc3RhcnRfcHB0X2lkeCwgZW5kX3BwdF9pZHgsIHBwdF9pZHgsIHNwdF9pZHg7XG4mIzQzO1x0X19sZTY0ICpkZXNjX2FkZHJfcHRyO1xuJiM0MztcdHVpbnRwdHJfdCBkZXNjX2FkZHI7XG4gXG4gXHRwcHRfaWR4ID0gdTMyX2dldF9iaXRzKGNvb2tpZSwgQVRIMTJLX0RQX0NDX0NPT0tJRV9QUFQpO1xuIFx0c3B0X2lkeCA9IHUzMl9nZXRfYml0cyhjb29raWUsIEFUSDEyS19EUF9DQ19DT09LSUVfU1BUKTtcbkBAIC0xMTc0LDE2ICYjNDM7MTE3NSwxOCBAQCBzdHJ1Y3QgYXRoMTJrX3J4X2Rlc2NfaW5mbyAqYXRoMTJrX2RwX2dldF9yeF9kZXNjKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuIFxuIFx0cHB0X2lkeCA9IHBwdF9pZHggLSBkcC1cdTAwM2VyeF9wcHRfYmFzZTtcbiBcdGRlc2NfYWRkcl9wdHIgPSBhdGgxMmtfZHBfY2NfZ2V0X2Rlc2NfYWRkcl9wdHIoZHAsIHBwdF9pZHgsIHNwdF9pZHgpO1xuJiM0MztcdGRlc2NfYWRkciA9ICh1aW50cHRyX3QpbGU2NF90b19jcHUoKmRlc2NfYWRkcl9wdHIpO1xuIFxuLVx0cmV0dXJuICpkZXNjX2FkZHJfcHRyO1xuJiM0MztcdHJldHVybiAoc3RydWN0IGF0aDEya19yeF9kZXNjX2luZm8gKilkZXNjX2FkZHI7XG4gfVxuIEVYUE9SVF9TWU1CT0woYXRoMTJrX2RwX2dldF9yeF9kZXNjKTtcbiBcbiBzdHJ1Y3QgYXRoMTJrX3R4X2Rlc2NfaW5mbyAqYXRoMTJrX2RwX2dldF90eF9kZXNjKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuIFx0XHRcdFx0XHRcdCAgdTMyIGNvb2tpZSlcbiB7XG4tXHRzdHJ1Y3QgYXRoMTJrX3R4X2Rlc2NfaW5mbyAqKmRlc2NfYWRkcl9wdHI7XG4gXHR1MTYgc3RhcnRfcHB0X2lkeCwgZW5kX3BwdF9pZHgsIHBwdF9pZHgsIHNwdF9pZHg7XG4mIzQzO1x0X19sZTY0ICpkZXNjX2FkZHJfcHRyO1xuJiM0MztcdHVpbnRwdHJfdCBkZXNjX2FkZHI7XG4gXG4gXHRwcHRfaWR4ID0gdTMyX2dldF9iaXRzKGNvb2tpZSwgQVRIMTJLX0RQX0NDX0NPT0tJRV9QUFQpO1xuIFx0c3B0X2lkeCA9IHUzMl9nZXRfYml0cyhjb29raWUsIEFUSDEyS19EUF9DQ19DT09LSUVfU1BUKTtcbkBAIC0xMTk4LDE5ICYjNDM7MTIwMSwyMiBAQCBzdHJ1Y3QgYXRoMTJrX3R4X2Rlc2NfaW5mbyAqYXRoMTJrX2RwX2dldF90eF9kZXNjKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcbiBcdGRlc2NfYWRkcl9wdHIgPSBhdGgxMmtfZHBfY2NfZ2V0X2Rlc2NfYWRkcl9wdHIoZHAsIHBwdF9pZHgsIHNwdF9pZHgpO1xuJiM0MztcdGRlc2NfYWRkciA9ICh1aW50cHRyX3QpbGU2NF90b19jcHUoKmRlc2NfYWRkcl9wdHIpO1xuIFxuLVx0cmV0dXJuICpkZXNjX2FkZHJfcHRyO1xuJiM0MztcdHJldHVybiAoc3RydWN0IGF0aDEya190eF9kZXNjX2luZm8gKilkZXNjX2FkZHI7XG4gfVxuIEVYUE9SVF9TWU1CT0woYXRoMTJrX2RwX2dldF90eF9kZXNjKTtcbiBcbiBzdGF0aWMgaW50IGF0aDEya19kcF9jY19kZXNjX2luaXQoc3RydWN0IGF0aDEya19iYXNlICphYilcbiB7XG4gXHRzdHJ1Y3QgYXRoMTJrX2RwICpkcCA9IGF0aDEya19hYl90b19kcChhYik7XG4tXHRzdHJ1Y3QgYXRoMTJrX3J4X2Rlc2NfaW5mbyAqcnhfZGVzY3MsICoqcnhfZGVzY19hZGRyO1xuLVx0c3RydWN0IGF0aDEya190eF9kZXNjX2luZm8gKnR4X2Rlc2NzLCAqKnR4X2Rlc2NfYWRkcjtcbiYjNDM7XHRzdHJ1Y3QgYXRoMTJrX3J4X2Rlc2NfaW5mbyAqcnhfZGVzY3M7XG4mIzQzO1x0c3RydWN0IGF0aDEya190eF9kZXNjX2luZm8gKnR4X2Rlc2NzO1xuIFx0dTMyIG51bV9yeF9zcHRfcGFnZXMgPSBBVEgxMktfTlVNX1JYX1NQVF9QQUdFUyhhYik7XG4gXHR1MzIgaSwgaiwgcG9vbF9pZCwgdHhfc3B0X3BhZ2U7XG4gXHR1MzIgcHB0X2lkeCwgY29va2llX3BwdF9pZHg7XG4mIzQzO1x0X19sZTY0ICpyeF9kZXNjX2FkZHI7XG4mIzQzO1x0X19sZTY0ICp0eF9kZXNjX2FkZHI7XG4gXG4gXHRzcGluX2xvY2tfYmgoXHUwMDI2ZHAtXHUwMDNlcnhfZGVzY19sb2NrKTtcbiBcbkBAIC0xMjQ2LDcgJiM0MzsxMjUyLDcgQEAgc3RhdGljIGludCBhdGgxMmtfZHBfY2NfZGVzY19pbml0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4gXG4gXHRcdFx0LyogVXBkYXRlIGRlc2NyaXB0b3IgVkEgaW4gU1BUICovXG4gXHRcdFx0cnhfZGVzY19hZGRyID0gYXRoMTJrX2RwX2NjX2dldF9kZXNjX2FkZHJfcHRyKGRwLCBwcHRfaWR4LCBqKTtcbi1cdFx0XHQqcnhfZGVzY19hZGRyID0gXHUwMDI2cnhfZGVzY3Nbal07XG4mIzQzO1x0XHRcdCpyeF9kZXNjX2FkZHIgPSBjcHVfdG9fbGU2NCgodTY0KSh1aW50cHRyX3QpXHUwMDI2cnhfZGVzY3Nbal0pO1xuIFx0XHR9XG4gXHR9XG4gXG5AQCAtMTI4Niw3ICYjNDM7MTI5Miw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX2RwX2NjX2Rlc2NfaW5pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuIFx0XHRcdFx0LyogVXBkYXRlIGRlc2NyaXB0b3IgVkEgaW4gU1BUICovXG4gXHRcdFx0XHR0eF9kZXNjX2FkZHIgPVxuIFx0XHRcdFx0XHRhdGgxMmtfZHBfY2NfZ2V0X2Rlc2NfYWRkcl9wdHIoZHAsIHBwdF9pZHgsIGopO1xuLVx0XHRcdFx0KnR4X2Rlc2NfYWRkciA9IFx1MDAyNnR4X2Rlc2NzW2pdO1xuJiM0MztcdFx0XHRcdCp0eF9kZXNjX2FkZHIgPSBjcHVfdG9fbGU2NCgodTY0KSh1aW50cHRyX3QpXHUwMDI2dHhfZGVzY3Nbal0pO1xuIFx0XHRcdH1cbiBcdFx0fVxuIFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZkcC1cdTAwM2V0eF9kZXNjX2xvY2tbcG9vbF9pZF0pO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxuaW5kZXggZjhjZmM3YmIyOWRkNzguLjBkN2ZjMmFlYTI0MTVlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmhcbkBAIC0zNTcsNyAmIzQzOzM1Nyw3IEBAIHN0cnVjdCBhdGgxMmtfdHhfZGVzY19wYXJhbXMge1xuIFxuIHN0cnVjdCBhdGgxMmtfc3B0X2luZm8ge1xuIFx0ZG1hX2FkZHJfdCBwYWRkcjtcbi1cdHU2NCAqdmFkZHI7XG4mIzQzO1x0X19sZTY0ICp2YWRkcjtcbiB9O1xuIFxuIHN0cnVjdCBhdGgxMmtfcmVvX3F1ZXVlX3JlZiB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MjI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGRhdGFwYXRoIChkcCkgaW5pdGlhbGl6YXRpb24gYW5kIGRlc2NyaXB0b3IgYWNjZXNzIGZ1bmN0aW9ucyBpbiB0aGUgYXRoMTJrIGRyaXZlci4gVGhlIGRhdGFwYXRoIGlzIG9ubHkgaW5pdGlhbGl6ZWQgYWZ0ZXIgdGhlIGRldmljZSBmaXJtd2FyZSBpcyBsb2FkZWQgYW5kIHJlYWR5ICh2aWEgYXRoMTJrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5KS4gU2luY2UgdGhlIHJlcXVpcmVkIGhhcmR3YXJlIGFuZCBmaXJtd2FyZSBhcmUgbm90IGF2YWlsYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgdGhlc2UgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDBmNWM3ZDE0Njc5MGY4YjJiNDY1OWVmNjcwMmMxODk1NDVjNTg2NGEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1biAyOSAwODoyMjo0MiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYwppbmRleCAxYzgyZDkyN2QyN2IyNy4uMjA3NmFlNjVlOWU3YWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMKQEAgLTExNDksOCAmIzQzOzExNDksOCBAQCBzdGF0aWMgdTMyIGF0aDEya19kcF9jY19jb29raWVfZ2VuKHUxNiBwcHRfaWR4LCB1MTYgc3B0X2lkeCkKIAlyZXR1cm4gKHUzMilwcHRfaWR4ICZsdDsmbHQ7IEFUSDEyS19DQ19QUFRfU0hJRlQgfCBzcHRfaWR4OwogfQogCi1zdGF0aWMgdm9pZCAqYXRoMTJrX2RwX2NjX2dldF9kZXNjX2FkZHJfcHRyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLAotCQkJCQkgICAgdTE2IHBwdF9pZHgsIHUxNiBzcHRfaWR4KQomIzQzO3N0YXRpYyBfX2xlNjQgKmF0aDEya19kcF9jY19nZXRfZGVzY19hZGRyX3B0cihzdHJ1Y3QgYXRoMTJrX2RwICpkcCwKJiM0MzsJCQkJCSAgICAgIHUxNiBwcHRfaWR4LCB1MTYgc3B0X2lkeCkKIHsKIAlyZXR1cm4gZHAtJmd0O3NwdF9pbmZvW3BwdF9pZHhdLnZhZGRyICYjNDM7IHNwdF9pZHg7CiB9CkBAIC0xMTU4LDggJiM0MzsxMTU4LDkgQEAgc3RhdGljIHZvaWQgKmF0aDEya19kcF9jY19nZXRfZGVzY19hZGRyX3B0cihzdHJ1Y3QgYXRoMTJrX2RwICpkcCwKIHN0cnVjdCBhdGgxMmtfcnhfZGVzY19pbmZvICphdGgxMmtfZHBfZ2V0X3J4X2Rlc2Moc3RydWN0IGF0aDEya19kcCAqZHAsCiAJCQkJCQkgIHUzMiBjb29raWUpCiB7Ci0Jc3RydWN0IGF0aDEya19yeF9kZXNjX2luZm8gKipkZXNjX2FkZHJfcHRyOwogCXUxNiBzdGFydF9wcHRfaWR4LCBlbmRfcHB0X2lkeCwgcHB0X2lkeCwgc3B0X2lkeDsKJiM0MzsJX19sZTY0ICpkZXNjX2FkZHJfcHRyOwomIzQzOwl1aW50cHRyX3QgZGVzY19hZGRyOwogCiAJcHB0X2lkeCA9IHUzMl9nZXRfYml0cyhjb29raWUsIEFUSDEyS19EUF9DQ19DT09LSUVfUFBUKTsKIAlzcHRfaWR4ID0gdTMyX2dldF9iaXRzKGNvb2tpZSwgQVRIMTJLX0RQX0NDX0NPT0tJRV9TUFQpOwpAQCAtMTE3NCwxNiAmIzQzOzExNzUsMTggQEAgc3RydWN0IGF0aDEya19yeF9kZXNjX2luZm8gKmF0aDEya19kcF9nZXRfcnhfZGVzYyhzdHJ1Y3QgYXRoMTJrX2RwICpkcCwKIAogCXBwdF9pZHggPSBwcHRfaWR4IC0gZHAtJmd0O3J4X3BwdF9iYXNlOwogCWRlc2NfYWRkcl9wdHIgPSBhdGgxMmtfZHBfY2NfZ2V0X2Rlc2NfYWRkcl9wdHIoZHAsIHBwdF9pZHgsIHNwdF9pZHgpOwomIzQzOwlkZXNjX2FkZHIgPSAodWludHB0cl90KWxlNjRfdG9fY3B1KCpkZXNjX2FkZHJfcHRyKTsKIAotCXJldHVybiAqZGVzY19hZGRyX3B0cjsKJiM0MzsJcmV0dXJuIChzdHJ1Y3QgYXRoMTJrX3J4X2Rlc2NfaW5mbyAqKWRlc2NfYWRkcjsKIH0KIEVYUE9SVF9TWU1CT0woYXRoMTJrX2RwX2dldF9yeF9kZXNjKTsKIAogc3RydWN0IGF0aDEya190eF9kZXNjX2luZm8gKmF0aDEya19kcF9nZXRfdHhfZGVzYyhzdHJ1Y3QgYXRoMTJrX2RwICpkcCwKIAkJCQkJCSAgdTMyIGNvb2tpZSkKIHsKLQlzdHJ1Y3QgYXRoMTJrX3R4X2Rlc2NfaW5mbyAqKmRlc2NfYWRkcl9wdHI7CiAJdTE2IHN0YXJ0X3BwdF9pZHgsIGVuZF9wcHRfaWR4LCBwcHRfaWR4LCBzcHRfaWR4OwomIzQzOwlfX2xlNjQgKmRlc2NfYWRkcl9wdHI7CiYjNDM7CXVpbnRwdHJfdCBkZXNjX2FkZHI7CiAKIAlwcHRfaWR4ID0gdTMyX2dldF9iaXRzKGNvb2tpZSwgQVRIMTJLX0RQX0NDX0NPT0tJRV9QUFQpOwogCXNwdF9pZHggPSB1MzJfZ2V0X2JpdHMoY29va2llLCBBVEgxMktfRFBfQ0NfQ09PS0lFX1NQVCk7CkBAIC0xMTk4LDE5ICYjNDM7MTIwMSwyMiBAQCBzdHJ1Y3QgYXRoMTJrX3R4X2Rlc2NfaW5mbyAqYXRoMTJrX2RwX2dldF90eF9kZXNjKHN0cnVjdCBhdGgxMmtfZHAgKmRwLAogCQlyZXR1cm4gTlVMTDsKIAogCWRlc2NfYWRkcl9wdHIgPSBhdGgxMmtfZHBfY2NfZ2V0X2Rlc2NfYWRkcl9wdHIoZHAsIHBwdF9pZHgsIHNwdF9pZHgpOwomIzQzOwlkZXNjX2FkZHIgPSAodWludHB0cl90KWxlNjRfdG9fY3B1KCpkZXNjX2FkZHJfcHRyKTsKIAotCXJldHVybiAqZGVzY19hZGRyX3B0cjsKJiM0MzsJcmV0dXJuIChzdHJ1Y3QgYXRoMTJrX3R4X2Rlc2NfaW5mbyAqKWRlc2NfYWRkcjsKIH0KIEVYUE9SVF9TWU1CT0woYXRoMTJrX2RwX2dldF90eF9kZXNjKTsKIAogc3RhdGljIGludCBhdGgxMmtfZHBfY2NfZGVzY19pbml0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpCiB7CiAJc3RydWN0IGF0aDEya19kcCAqZHAgPSBhdGgxMmtfYWJfdG9fZHAoYWIpOwotCXN0cnVjdCBhdGgxMmtfcnhfZGVzY19pbmZvICpyeF9kZXNjcywgKipyeF9kZXNjX2FkZHI7Ci0Jc3RydWN0IGF0aDEya190eF9kZXNjX2luZm8gKnR4X2Rlc2NzLCAqKnR4X2Rlc2NfYWRkcjsKJiM0MzsJc3RydWN0IGF0aDEya19yeF9kZXNjX2luZm8gKnJ4X2Rlc2NzOwomIzQzOwlzdHJ1Y3QgYXRoMTJrX3R4X2Rlc2NfaW5mbyAqdHhfZGVzY3M7CiAJdTMyIG51bV9yeF9zcHRfcGFnZXMgPSBBVEgxMktfTlVNX1JYX1NQVF9QQUdFUyhhYik7CiAJdTMyIGksIGosIHBvb2xfaWQsIHR4X3NwdF9wYWdlOwogCXUzMiBwcHRfaWR4LCBjb29raWVfcHB0X2lkeDsKJiM0MzsJX19sZTY0ICpyeF9kZXNjX2FkZHI7CiYjNDM7CV9fbGU2NCAqdHhfZGVzY19hZGRyOwogCiAJc3Bpbl9sb2NrX2JoKCZhbXA7ZHAtJmd0O3J4X2Rlc2NfbG9jayk7CiAKQEAgLTEyNDYsNyAmIzQzOzEyNTIsNyBAQCBzdGF0aWMgaW50IGF0aDEya19kcF9jY19kZXNjX2luaXQoc3RydWN0IGF0aDEya19iYXNlICphYikKIAogCQkJLyogVXBkYXRlIGRlc2NyaXB0b3IgVkEgaW4gU1BUICovCiAJCQlyeF9kZXNjX2FkZHIgPSBhdGgxMmtfZHBfY2NfZ2V0X2Rlc2NfYWRkcl9wdHIoZHAsIHBwdF9pZHgsIGopOwotCQkJKnJ4X2Rlc2NfYWRkciA9ICZhbXA7cnhfZGVzY3Nbal07CiYjNDM7CQkJKnJ4X2Rlc2NfYWRkciA9IGNwdV90b19sZTY0KCh1NjQpKHVpbnRwdHJfdCkmYW1wO3J4X2Rlc2NzW2pdKTsKIAkJfQogCX0KIApAQCAtMTI4Niw3ICYjNDM7MTI5Miw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX2RwX2NjX2Rlc2NfaW5pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKQogCQkJCS8qIFVwZGF0ZSBkZXNjcmlwdG9yIFZBIGluIFNQVCAqLwogCQkJCXR4X2Rlc2NfYWRkciA9CiAJCQkJCWF0aDEya19kcF9jY19nZXRfZGVzY19hZGRyX3B0cihkcCwgcHB0X2lkeCwgaik7Ci0JCQkJKnR4X2Rlc2NfYWRkciA9ICZhbXA7dHhfZGVzY3Nbal07CiYjNDM7CQkJCSp0eF9kZXNjX2FkZHIgPSBjcHVfdG9fbGU2NCgodTY0KSh1aW50cHRyX3QpJmFtcDt0eF9kZXNjc1tqXSk7CiAJCQl9CiAJCX0KIAkJc3Bpbl91bmxvY2tfYmgoJmFtcDtkcC0mZ3Q7dHhfZGVzY19sb2NrW3Bvb2xfaWRdKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaAppbmRleCBmOGNmYzdiYjI5ZGQ3OC4uMGQ3ZmMyYWVhMjQxNWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmgKQEAgLTM1Nyw3ICYjNDM7MzU3LDcgQEAgc3RydWN0IGF0aDEya190eF9kZXNjX3BhcmFtcyB7CiAKIHN0cnVjdCBhdGgxMmtfc3B0X2luZm8gewogCWRtYV9hZGRyX3QgcGFkZHI7Ci0JdTY0ICp2YWRkcjsKJiM0MzsJX19sZTY0ICp2YWRkcjsKIH07CiAKIHN0cnVjdCBhdGgxMmtfcmVvX3F1ZXVlX3JlZiB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MjkKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA2OTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQXNzZXNzaW5nIHRoZSBGdXp6YWJpbGl0eSBvZiBhbiBhdGgxMmsgRW5kaWFubmVzcyBGaXgqKgoKT2theSwgc28gd2UmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgbW9kaWZ5aW5nIHRoZSBhdGgxMmsgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuY2AgYW5kIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmhgLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGFkZHJlc3NpbmcgYW4gZW5kaWFubmVzcyBpc3N1ZSwgY2hhbmdpbmcgYHZhZGRyYCBpbiBgc3RydWN0IGF0aDEya19zcHRfaW5mb2AgdG8gYF9fbGU2NCAqYCBhbmQgdXBkYXRpbmcgcmVsYXRlZCBmdW5jdGlvbnMgKGBhdGgxMmtfZHBfY2NfZ2V0X2Rlc2NfYWRkcl9wdHJgLCBldGMuKSB0byBoYW5kbGUgdGhlIGxpdHRsZS1lbmRpYW4gY29udmVyc2lvbi4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCBmcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZS4gTXkgcHJpbWFyeSBjb25jZXJuLCB0aG91Z2gsIGlzIHdoZXRoZXIgdGhpcyBpcyB3b3J0aCBmdXNzaW5nIHdpdGggZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIHNpbmNlIHRoZSBpbnN0cnVjdGlvbnMgc2F5IHRoYXQgd2Ugc2hvdWxkIGlnbm9yZSBwYXRjaGVzIHRoYXQgY2FuJiMzOTt0IGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLgoKVGhlIGF0aDEyayBkcml2ZXIgaXMsIG9mIGNvdXJzZSwgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcy4gSXQmIzM5O3MgYSBQQ0kgb3IgQUhCIGRldmljZSwgd2hpY2ggbWFrZXMgaXQgYW4gaW1tZWRpYXRlIGZsYWcuIFdpLUZpIGRyaXZlcnMsIGluIG15IGV4cGVyaWVuY2UsIHVzdWFsbHkgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBmb3IgZWZmZWN0aXZlIHRlc3RpbmcuIEkmIzM5O20gaW1tZWRpYXRlbHkgc2tlcHRpY2FsIHRoYXQgd2UgY2FuIHJlYWNoIHRoaXMgZWFzaWx5IGluIGEgdmlydHVhbGl6ZWQgc2V0dGluZywgdW5sZXNzIHNvbWUgY2xldmVyIGVtdWxhdGlvbiB0cmljayBpcyBhdmFpbGFibGUuIEl0JiMzOTtzIG5vdCB1c2luZyBgbWFjODAyMTFfaHdzaW1gLCB3aGljaCB3b3VsZCBiZSB0aGUgZWFzeSB3aW4uCgpXYWl0LCBkb2VzIHN5emthbGxlciBoYXZlIFBDSSBmdXp6aW5nIGNhcGFiaWxpdGllcz8gSSByZWNhbGwgc2VlaW5nIHNvbWUgUENJLXJlbGF0ZWQgZnV6emluZyBpbiB0aGUgZG9jdW1lbnRhdGlvbiwgdXRpbGl6aW5nIHZmaW8gb3Igc2ltaWxhciBzZXR1cHMgZm9yIGZha2luZyBQQ0kgZGV2aWNlcywgYW5kIHBvdGVudGlhbGx5IGluamVjdGluZyBQQ0kgY29uZmlnIHNwYWNlIGFuZCBNTUlPLiBNYXliZSB0aGF0IGdpdmVzIHVzIGEgd2F5IGluPyBTeXprYWxsZXImIzM5O3MgZG9jdW1lbnRhdGlvbiwgb3IgYnVnIHJlcG9ydHMsIHdvdWxkIGJlIHRoZSBwbGFjZXMgdG8gY2hlY2sgaWYgYXRoMTJrIGlzIGV4cGxpY2l0bHkgZnV6emVkIG9yIGlmIHNvbWUgZ2VuZXJpYyBQQ0kgZnV6emluZyBjYW4gYmluZCB0byBpdC4KClRoZSBpbnN0cnVjdGlvbnMgdGVsbCB1cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgaXQgaXMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gTGV0JiMzOTtzIHNlZS4gRG9lcyBRRU1VIGV2ZW4gaGF2ZSBhbnkgYXRoMTJrIFBDSSBlbXVsYXRpb24/IEkgZG91YnQgaXQuCgpTeXprYWxsZXIgZG9lcyBzZWVtIHRvIGhhdmUgc29tZSBQQ0kgZnV6emluZyBzdXBwb3J0LCBzbyBwZXJoYXBzIHRoYXQgY2FuIGJlIHVzZWQuIEl0IHJlcXVpcmVzIHRoZSBkcml2ZXIgdG8gYmluZCB0byBhIGZha2UgUENJIGRldmljZS4gRG8gd2UgaGF2ZSBzb21ldGhpbmcgbGlrZSBhIGBzeXpfcGNpX2RldmljZWAgZnVuY3Rpb24gdGhhdCB3ZSBjYW4gdXNlPyBJIHJlY2FsbCB3ZSBjYW4gdXNlIHRoZSBgc3l6X3BjaV9kZXZpY2VgIHR5cGUuCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VhcmNoIHN5emthbGxlciBmb3IgYGF0aDEya2AgdG8gc2VlIGlmIGl0JiMzOTtzIGV4cGxpY2l0bHkgZnV6emVkLiBBbmQgYmVjYXVzZSBpdCYjMzk7cyBhIFBDSSBkcml2ZXIsIG1heWJlIHdlIGNhbiB1c2UgdGhlIGZ1enppbmcgYWJpbGl0aWVzIGZvciBQQ0kgZHJpdmVycy4gSSBkb24mIzM5O3QgaGF2ZSBhY2Nlc3MgdG8gc3l6a2FsbGVyIGJ1ZyByZXBvcnRzLCBzbyB0aGF0JiMzOTtzIG91dC4gU28sIGxldCYjMzk7cyBzZWUgaWYgd2UgY2FuIGZpbmQgYW55dGhpbmcgaW4gdGhlIEtjb25maWcsIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgaW5kaWNhdGlvbiBvZiBmdXp6aW5nIGJlaW5nIGVuYWJsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEFUSDEySyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoyOmNvbmZpZyBBVEgxMktcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gVGVjaG5vbG9naWVzIFdpLUZpIDcgc3VwcG9ydCAoYXRoMTJrKVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoxODpjb25maWcgQVRIMTJLX0FIQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTE5LVx0Ym9vbCBcJiMzNDtRVEkgYXRoMTJrIEFIQiBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjI2OmNvbmZpZyBBVEgxMktfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0yNy1cdGJvb2wgXCYjMzQ7YXRoMTJrIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzozNjpjb25maWcgQVRIMTJLX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zNy1cdGJvb2wgXCYjMzQ7UVRJIGF0aDEyayBkZWJ1Z2ZzIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6NDU6Y29uZmlnIEFUSDEyS19UUkFDSU5HXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDYtXHRib29sIFwmIzM0O2F0aDEyayB0cmFjaW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6NTQ6Y29uZmlnIEFUSDEyS19DT1JFRFVNUFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTU1LVx0Ym9vbCBcJiMzNDthdGgxMmsgY29yZWR1bXBcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwODoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDA1CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVGFyZ2V0IERyaXZlciBhbmQgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcywgaG93IGxpa2VseSBhbSBJIHRvIGV2ZW4gKmhpdCogdGhhdCBjb2RlIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dD8gVGhlc2UgbG93LWxldmVsLCBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzLCBlc3BlY2lhbGx5IHdpcmVsZXNzIG9uZXMsIHR5cGljYWxseSByZXF1aXJlIHNwZWNpZmljIGhhcmR3YXJlIG9yLCBhdCB0aGUgdmVyeSBsZWFzdCwgcm9idXN0IGVtdWxhdGlvbiB0byBmdW5jdGlvbi4KCkJ1dCB0aGVuIEkgcmVtZW1iZXIgc3l6a2FsbGVyLiBTcGVjaWZpY2FsbHksIGl0cyB2aXJ0dWFsIFBDSSBkZXZpY2UgZnV6emVyLiBOb3cgKnRoYXQmIzM5O3MqIGludGVyZXN0aW5nLiBJZiBpdCBjYW4gYmluZCB0byBQQ0kgZHJpdmVycyBiYXNlZCBvbiB2ZW5kb3IvZGV2aWNlIElEcyBhbmQgdGhlbiBzdGFydCBwb2tpbmcgYXQgdGhlIE1NSU8gYW5kIERNQSwgdGhlIGdhbWUgY2hhbmdlcyBzaWduaWZpY2FudGx5LiBUaGlzIHBvdGVudGlhbGx5IG9wZW5zIHVwIGEgdGVzdGluZyBhdmVudWUgSSB3b3VsZG4mIzM5O3QgaGF2ZSBpbW1lZGlhdGVseSBjb25zaWRlcmVkLgoKVGhlIGtleSBxdWVzdGlvbiBpcywgZG9lcyBzeXprYWxsZXIgKmFjdHVhbGx5KiBmdXp6IGBhdGgxMmtgPyBJIG5lZWQgdG8gdmVyaWZ5IGlmIHRoZSBkcml2ZXIgZXhwb3NlcyBpdHMgUENJIElEcy4gQSBxdWljayBjaGVjayBvZiB0aGUgc291cmNlIGlzIGluIG9yZGVyLiBMZXQmIzM5O3Mgc2VlIGlmIHdlIGNhbiBmaW5kIHRoZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX2RldmljZV9pZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM9MTUwMj1zdGF0aWMgZW51bSBhdGgxMmtfZGV2aWNlX2ZhbWlseVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzoxNTAzOmF0aDEya19nZXRfZGV2aWNlX2ZhbWlseShjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqcGNpX2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTUwNC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE1MDUtXHRlbnVtIGF0aDEya19kZXZpY2VfZmFtaWx5IGRldmljZV9mYW1pbHlfaWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jOjE1MDY6XHRjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE1MDctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYz0xNTI0PXN0YXRpYyBpbnQgYXRoMTJrX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTUyNTpcdFx0XHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaV9kZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE1MjYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmg9MTAzPXN0cnVjdCBhdGgxMmtfcGNpX2RldmljZV9mYW1pbHlfb3BzIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmg6MTA0Olx0aW50ICgqcHJvYmUpKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqcGNpX2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5oLTEwNS1cdGludCAoKmFyY2hfaW5pdCkoc3RydWN0IGF0aDEya19iYXNlICphYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuaD0xNDI9c3RydWN0IGF0aDEya19wY2lfZHJpdmVyIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmgtMTQzLVx0Y29uc3QgY2hhciAqbmFtZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmg6MTQ0Olx0Y29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkX3RhYmxlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuaC0xNDUtXHRzdHJ1Y3QgYXRoMTJrX3BjaV9kZXZpY2VfZmFtaWx5X29wcyBvcHM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYy0zMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvcGNpLmM6MzQ6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGF0aDEya193aWZpN19wY2lfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvcGNpLmMtMzUtXHR7IFBDSV9WREVWSUNFKFFDT00sIFFDTjkyNzRfREVWSUNFX0lEKSB9LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvcGNpLmM9OTE9c3RhdGljIGludCBhdGgxMmtfd2lmaTdfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYzo5MjpcdFx0XHRcdCAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaV9kZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L3BjaS5jLTkzLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwODoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NjMwCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlYWNoaW5nIEF0aDEyazogQSBGdXp6aW5nIEZlYXNpYmlsaXR5IENoZWNrKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHN5emthbGxlciBzZXR1cCwgc3BlY2lmaWNhbGx5IGBzeXpfcGNpX2RldmljZWAuIEl0JiMzOTtzIGdvdCBwb3RlbnRpYWwgZm9yIGVtdWxhdGluZyBQQ0kgZGV2aWNlcywgd2hpY2gsIGlmIGV4cGxvaXRlZCwgY291bGQgZ2l2ZSB1cyBhIGJhY2tkb29yIGludG8gZHJpdmVycywgcGFydGljdWxhcmx5IHRob3NlIHRoYXQgYXJlIFBDSSBiYXNlZC4gVGhlIHF1ZXN0aW9uIG5vdyBpczogaXMgYXRoMTJrIHJlYWNoYWJsZSB0aHJvdWdoIHRoaXMgbWV0aG9kPwoKV2FpdCwgYSBjcnVjaWFsIHJlbWluZGVyIGZyb20gdGhlIGluc3RydWN0aW9ucy4gSXQgc2F5cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIGludm9sdmVzIHBhdGhzIHRoYXQgYXJlIGluaGVyZW50bHkgaW5hY2Nlc3NpYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhhdCB0aHJvd3MgYSB3cmVuY2ggaW4gdGhlIHdvcmtzLiBNeSBndXQgdGVsbHMgbWUgc29tZXRoaW5nIGxpa2UgYHVzYiBnYWRnZXRgIG9yIGBtYWM4MDIxMV9od3NpbWAgd291bGQgYmUgb3V0IG9mIHJlYWNoIHdpdGggdGhlc2UgY29uc3RyYWludHMsIGJ1dCB3aGF0IGFib3V0IGF0aDEyaz8KCkdpdmVuIHRoYXQgYXRoMTJrIGlzIGEgcHJldHR5IGNvbXBsZXggV2ktRmkgZHJpdmVyLCB0aGUgY3J1Y2lhbCBzdGVwIHRvIGNoZWNrIGlzIHRoaXM6IGRvZXMgaXQgcmVxdWlyZSBmaXJtd2FyZSB0byBiZSBsb2FkZWQgYW5kIGluaXRpYWxpemVkICpiZWZvcmUqIHdlIGNhbiBldmVuIHRvdWNoIHRoZSBkYXRhcGF0aCAtIHNwZWNpZmljYWxseSB0aGUgYGRwLmNgIGZpbGVzPyBJIG5lZWQgdG8gY2hlY2sgdG8gc2VlIGlmIGBhdGgxMmtfZHBfY2NfZGVzY19pbml0YCBjYW4gYmUgcmVhY2hlZCBiZWZvcmUgZmlybXdhcmUgaXMgZXZlbiBsb2FkZWQuIFRoaXMgaXMgdGhlIGNydWNpYWwgcXVlc3Rpb24gdG8gZGV0ZXJtaW5lIHRoZSBmZWFzaWJpbGl0eSBvZiBmdXp6aW5nIHRoaXMgZHJpdmVyLCB1bmRlciB0aGVzZSBjb25kaXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDEya19kcF9jY19kZXNjX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmM9MTIwOD1FWFBPUlRfU1lNQk9MKGF0aDEya19kcF9nZXRfdHhfZGVzYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMtMTIwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYzoxMjEwOnN0YXRpYyBpbnQgYXRoMTJrX2RwX2NjX2Rlc2NfaW5pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jLTEyMTEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYz0xMzUzPXN0YXRpYyBpbnQgYXRoMTJrX2RwX2NjX2luaXQoc3RydWN0IGF0aDEya19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMtMTQwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYzoxNDEwOlx0cmV0ID0gYXRoMTJrX2RwX2NjX2Rlc2NfaW5pdChhYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMtMTQxMS1cdGlmIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwODoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDA2CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgY29kZToKCioqQW5hbHl6aW5nIHRoZSBDYWxsZXJzIG9mIGBhdGgxMmtfZHBfY2NfaW5pdGAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBUaGUgaW5pdGlhbCB0YXNrIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgYGF0aDEya19kcF9jY19pbml0YC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiAqd2hlcmUqIGlzIHRoaXMgZnVuY3Rpb24gYmVpbmcgdXNlZD8gV2hhdCBwYXJ0cyBvZiB0aGUgY29kZSBiYXNlIGFyZSBkZXBlbmRlbnQgb24gaXQ/IEtub3dpbmcgaXRzIGNhbGxlcnMgd2lsbCB0ZWxsIG1lIGl0cyBwdXJwb3NlIGFuZCBzaWduaWZpY2FuY2Ugd2l0aGluIHRoZSBicm9hZGVyIHN5c3RlbS4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSBgYXRoMTJrX2RwX2NjX2luaXRgIHRvIGZpbmQgYWxsIHRoZSBwbGFjZXMgaXQmIzM5O3MgYWN0dWFsbHkgaW52b2tlZC4gVGhhdCYjMzk7cyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgcm9sZS4gRnJvbSB0aGVyZSwgSSBjYW4gc3RhcnQgZm9ybWluZyBhIG1lbnRhbCBtYXAgb2YgaXRzIGltcGFjdCBhbmQgaW1wbGljYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwODoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMmtfZHBfY2NfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYz0xMzQ4PXN0YXRpYyB1MzIgYXRoMTJrX2RwX2dldF9udW1fc3B0X3BhZ2VzKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jLTEzNTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmM6MTM1MzpzdGF0aWMgaW50IGF0aDEya19kcF9jY19pbml0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMtMTM1NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jPTE0NzY9c3RhdGljIGludCBhdGgxMmtfZHBfc2V0dXAoc3RydWN0IGF0aDEya19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMtMTUyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYzoxNTI0Olx0cmV0ID0gYXRoMTJrX2RwX2NjX2luaXQoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jLTE1MjUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc5MjUKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhhdCBjb2RlOgoKKipBbmFseXppbmcgdGhlIENhbGxlcnMgb2YgYGF0aDEya19kcF9zZXR1cGAqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgYGF0aDEya19kcF9zZXR1cGAgaXMgYmVpbmcgaW52b2tlZC4gVGhhdCYjMzk7cyB0aGUgY3J1Y2lhbCBmaXJzdCBzdGVwLiBJIG5lZWQgdG8gdHJhY2UgaXRzIGNhbGwgZ3JhcGggdG8gZ2V0IGEgaGFuZGxlIG9uIGl0cyByb2xlIHdpdGhpbiB0aGUgYnJvYWRlciBkcml2ZXIgYXJjaGl0ZWN0dXJlLiBLbm93aW5nIHRoZSBjb250ZXh0cyBmcm9tIHdoaWNoIGl0JiMzOTtzIGNhbGxlZCBnaXZlcyBtZSBpbW1lZGlhdGUgY2x1ZXMgYWJvdXQgaXRzIGZ1bmN0aW9uIGFuZCB0aGUgY3JpdGljYWwgcGF0aHMgaXQgaW1wYWN0cy4gSSYjMzk7bGwgbmVlZCB0byB1c2UgbXkgdG9vbHMgLSBncmVwLCBtYXliZSBhIHN5bWJvbCBicm93c2VyIGlmIEkgaGF2ZSBvbmUgaGFuZHksIG9yIGp1c3QgYSBnb29kIG9sZC1mYXNoaW9uZWQgY29kZSBzZWFyY2gg4oCTIHRvIGxvY2F0ZSBhbGwgdGhlIHJlZmVyZW5jZXMgdG8gdGhhdCBmdW5jdGlvbi4gRnJvbSB0aGVyZSwgSSBjYW4gc3RhcnQgcGllY2luZyB0b2dldGhlciB0aGUgZmxvdyBhbmQgdGhlIGxvZ2ljIGJlaGluZCBpdC4gV2hhdCYjMzk7cyBjYWxsaW5nIGl0PyBVbmRlciB3aGF0IGNvbmRpdGlvbnM/IERvZXMgaXQgYXBwZWFyIGluIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzLCBpbnRlcnJ1cHQgaGFuZGxlcnMsIG9yIG1heWJlIGRhdGEgcGF0aCBtYW5hZ2VtZW50PyBBbnN3ZXJpbmcgdGhvc2UgcXVlc3Rpb25zIHdpbGwgcGFpbnQgYSBjbGVhciBwaWN0dXJlLiBUaGVuIEkmIzM5O2xsIGZvY3VzIG9uIGhvdyBlYWNoIGNhbGxlciB1c2VzIHRoZSByZXR1cm4gdmFsdWUgYW5kIGFueSBvdGhlciByZWxhdGVkIGZ1bmN0aW9uIGNhbGxzIHRoYXQgYXJlIG1hZGUgYWZ0ZXJ3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwODoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMmtfZHBfc2V0dXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmM9MTQzOD1zdGF0aWMgaW50IGF0aDEya19kcF9yZW9xX2x1dF9zZXR1cChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYy0xNDc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jOjE0NzY6c3RhdGljIGludCBhdGgxMmtfZHBfc2V0dXAoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYy0xNDc3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmM9MTYwND1pbnQgYXRoMTJrX2RwX2Ntbl9kZXZpY2VfaW5pdChzdHJ1Y3QgYXRoMTJrX2RwICpkcClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMtMTYwNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYzoxNjA4Olx0cmV0ID0gYXRoMTJrX2RwX3NldHVwKGRwLVx1MDAzZWFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYy0xNjA5LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODUwNAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgY29kZS4KCioqSW52ZXN0aWdhdGluZyB0aGUgQ2FsbGVycyBvZiBgYXRoMTJrX2RwX2Ntbl9kZXZpY2VfaW5pdGAqKgoKQWxyaWdodCwgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBmbG93IGFuZCBmaWd1cmUgb3V0IHdoZXJlIHRoaXMgYGF0aDEya19kcF9jbW5fZGV2aWNlX2luaXRgIGZ1bmN0aW9uIGlzIGJlaW5nIGludm9rZWQuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxpbmcgY29udGV4dHMgaXMgY3J1Y2lhbDsgaXTigJlzIGdvaW5nIHRvIHByb3ZpZGUgbWUgd2l0aCBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZSBjb21tb24gZGV2aWNlIGluaXRpYWxpemF0aW9uIGlzIGludGVncmF0ZWQgd2l0aGluIHRoZSBicm9hZGVyIGBhdGgxMmtgIGRyaXZlciBhcmNoaXRlY3R1cmUuIEkgbmVlZCB0byBwaW5wb2ludCBldmVyeSBjYWxsIHNpdGUgdG8gZ3Jhc3AgdGhlIGZ1bGwgc2NvcGUgb2YgaXRzIGltcGFjdCBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgb3ZlcmFsbCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gSWRlbnRpZnlpbmcgdGhlIGNhbGxlcnMgd2lsbCBsaWtlbHkgcmV2ZWFsIHRoZSByZWxldmFudCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBwaGFzZXMgYW5kIHRoZSBhc3NvY2lhdGVkIGNvbnRyb2wgcGF0aHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDEya19kcF9jbW5fZGV2aWNlX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYz0xMjg0PWludCBhdGgxMmtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHkoc3RydWN0IGF0aDEya19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMzAwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM6MTMwMTpcdHJldCA9IGF0aDEya19kcF9jbW5fZGV2aWNlX2luaXQoYXRoMTJrX2FiX3RvX2RwKGFiKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMzAyLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYz0xNTk5PXZvaWQgYXRoMTJrX2RwX2Ntbl9kZXZpY2VfZGVpbml0KHN0cnVjdCBhdGgxMmtfZHAgKmRwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYy0xNjAzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jOjE2MDQ6aW50IGF0aDEya19kcF9jbW5fZGV2aWNlX2luaXQoc3RydWN0IGF0aDEya19kcCAqZHApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMtMTYwNS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9jbW4uaD05MT12b2lkIGF0aDEya19kcF9jbW5fZGV2aWNlX2RlaW5pdChzdHJ1Y3QgYXRoMTJrX2RwICpkcCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX2Ntbi5oOjkyOmludCBhdGgxMmtfZHBfY21uX2RldmljZV9pbml0KHN0cnVjdCBhdGgxMmtfZHAgKmRwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfY21uLmgtOTMtdm9pZCBhdGgxMmtfZHBfY21uX2h3X2dyb3VwX3VuYXNzaWduKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwODoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MTk0CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYXRoMTJrIERyaXZlciBJbml0aWFsaXphdGlvbiBpbiBhIFZpcnR1YWxpemVkIEVudmlyb25tZW50KioKCk9rYXksIHNvIGBhdGgxMmtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHlgIGlzIHRoZSBrZXkgZnVuY3Rpb24gdGhhdCB0ZWxscyBtZSB0aGUgZmlybXdhcmUgaXMgdXAgYW5kIHJ1bm5pbmcuIFRoYXQgbWVhbnMgdGhlIGRyaXZlciBoYXMgdG8gaGFuZGxlIGZpcm13YXJlIGxvYWRpbmcgYW5kIFFNSSBjb21tdW5pY2F0aW9uICpiZWZvcmUqIGl0IGNhbiBpbml0aWFsaXplIHRoZSBkYXRhcGF0aCAoZHApLiBUaGUgcHJvYmxlbSBpcywgaW4gbXkgdmlydHVhbGl6ZWQgc2V0dXBzLCBvciBldmVuIHdpdGggY29tcGxleCBlbXVsYXRvcnMsIHRoZSBmaXJtd2FyZSBpcyBwcm9iYWJseSBuZXZlciBnb2luZyB0byBsb2FkIHByb3Blcmx5LiBDb25zZXF1ZW50bHksIGFueSBRTUkgY29tbXVuaWNhdGlvbiBhdHRlbXB0cyB3aWxsIGxpa2VseSBmYWlsIG9yIHRpbWUgb3V0LiBUaGF0IG1lYW5zIEkgd29uJiMzOTt0IGV2ZXIgaGl0IGBhdGgxMmtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHlgLgoKU28sIHRoZSBxdWVzdGlvbiBub3cgaXMsIGlzIHRoZXJlIGFueSBraW5kIG9mIG1vY2sgZmlybXdhcmUgSSBjYW4gdXNlPyBPciBtYXliZSwgY2FuIEkgZnV6eiB0aGUgUU1JIGludGVyZmFjZSBpdHNlbGYgdG8gc2ltdWxhdGUgdGhlIGZpcm13YXJlPyBVbmZvcnR1bmF0ZWx5LCBhcyBmYXIgYXMgSSBrbm93LCBTeXprYWxsZXIgZG9lc24mIzM5O3QgaGF2ZSBhIFFNSSBmdXp6ZXIgc3BlY2lmaWNhbGx5IHRhaWxvcmVkIGZvciB0aGUgYXRoMTJrIGZpcm13YXJlLCB3aGljaCBtYWtlcyB0aGluZ3MgdHJpY2tpZXIuCgpUbyBwcm9jZWVkLCBsZXQgbWUgc2VlIGlmIGBhdGgxMmtfZHBfZ2V0X3J4X2Rlc2NgIG9yIGBhdGgxMmtfZHBfZ2V0X3R4X2Rlc2NgIGdldCBjYWxsZWQgYW55d2hlcmUgZWxzZSBpbiB0aGUgY29kZS4gSSYjMzk7bSBob3BpbmcgSSBjYW4gZmluZCBhbm90aGVyIHBhdGggdGhhdCBtaWdodCBiZSBhY2Nlc3NpYmxlIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTJrX2RwX2dldF9yeF9kZXNjJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jPTExNTI9c3RhdGljIF9fbGU2NCAqYXRoMTJrX2RwX2NjX2dldF9kZXNjX2FkZHJfcHRyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYy0xMTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jOjExNTg6c3RydWN0IGF0aDEya19yeF9kZXNjX2luZm8gKmF0aDEya19kcF9nZXRfcnhfZGVzYyhzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYy0xMTU5LVx0XHRcdFx0XHRcdCAgdTMyIGNvb2tpZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMtMTE4MS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmM6MTE4MjpFWFBPUlRfU1lNQk9MKGF0aDEya19kcF9nZXRfcnhfZGVzYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMtMTE4My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmg9Njk2PWludCBhdGgxMmtfZHBfbGlua19kZXNjX3NldHVwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oLTY5OS1cdFx0XHQgICAgICB1MzIgbl9saW5rX2Rlc2MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oOjcwMDpzdHJ1Y3QgYXRoMTJrX3J4X2Rlc2NfaW5mbyAqYXRoMTJrX2RwX2dldF9yeF9kZXNjKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oLTcwMS1cdFx0XHRcdFx0XHQgIHUzMiBjb29raWUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfbW9uLmM9MjU4Mz1hdGgxMmtfd2lmaTdfZHBfcnhfbW9uX21wZHVfcG9wKHN0cnVjdCBhdGgxMmsgKmFyLCBpbnQgbWFjX2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfbW9uLmMtMjY0OC1cdFx0XHRcdFx0XHQgIFx1MDAyNm51bV9tc2R1cyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX21vbi5jOjI2NDk6XHRcdGRlc2NfaW5mbyA9IGF0aDEya19kcF9nZXRfcnhfZGVzYyhhci1cdTAwM2VhYi1cdTAwM2VkcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfbW9uLmMtMjY1MC1cdFx0XHRcdFx0XHQgIG1zZHVfbGlzdC5zd19jb29raWVbbnVtX21zZHVzIC0gMV0pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfbW9uLmMtMjY2NS1cdFx0XHRkZXNjX2luZm8gPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9tb24uYzoyNjY2Olx0XHRcdFx0YXRoMTJrX2RwX2dldF9yeF9kZXNjKGFyLVx1MDAzZWFiLVx1MDAzZWRwLCBtc2R1X2xpc3Quc3dfY29va2llW2ldKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfbW9uLmMtMjY2Ny1cdFx0XHRtc2R1ID0gZGVzY19pbmZvLVx1MDAzZXNrYjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3J4LmM9NjM2PWludCBhdGgxMmtfd2lmaTdfZHBfcnhfcHJvY2VzcyhzdHJ1Y3QgYXRoMTJrX2RwICpkcCwgaW50IHJpbmdfaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jLTY5OS1cdFx0aWYgKCFkZXNjX2luZm8pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfcnguYzo3MDA6XHRcdFx0ZGVzY19pbmZvID0gYXRoMTJrX2RwX2dldF9yeF9kZXNjKHBhcnRuZXJfZHAsIGNvb2tpZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3J4LmMtNzAxLVx0XHRcdGlmICghZGVzY19pbmZvKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jPTEyNjM9YXRoMTJrX3dpZmk3X2RwX3Byb2Nlc3NfcnhfZXJyX2J1ZihzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jLTEyODUtXHRpZiAoIWRlc2NfaW5mbykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jOjEyODY6XHRcdGRlc2NfaW5mbyA9IGF0aDEya19kcF9nZXRfcnhfZGVzYyhkcCwgY29va2llKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfcnguYy0xMjg3LVx0XHRpZiAoIWRlc2NfaW5mbykge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfcnguYz0xMzQ4PXN0YXRpYyBpbnQgYXRoMTJrX2RwX2hfbXNkdV9idWZmZXJfdHlwZShzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3J4LmMtMTM2Ni1cdFx0XHRcdCAgICAgICBCVUZGRVJfQUREUl9JTkZPMV9TV19DT09LSUUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jOjEzNjc6XHRcdGRlc2NfaW5mbyA9IGF0aDEya19kcF9nZXRfcnhfZGVzYyhkcCwgY29va2llKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfcnguYy0xMzY4LVx0XHRpZiAoIWRlc2NfaW5mbykge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfcnguYz0xODIwPWludCBhdGgxMmtfd2lmaTdfZHBfcnhfcHJvY2Vzc193Ym1fZXJyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfcnguYy0xODc0LVx0XHRpZiAoIWRlc2NfaW5mbykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jOjE4NzU6XHRcdFx0ZGVzY19pbmZvID0gYXRoMTJrX2RwX2dldF9yeF9kZXNjKGRwLCBlcnJfaW5mby5jb29raWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jLTE4NzYtXHRcdFx0aWYgKCFkZXNjX2luZm8pIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyMjEKCQkJCQkJCW91dHB1dDogMTE4CgkJCQkJCQl0aG91Z2h0czogNDA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVucmVhY2hhYmxlIENvZGUgaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBhbmQgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHdoZXJlIHdlJiMzOTtyZSBhdC4gQWxsIHRoZXNlIGZ1bmN0aW9ucyDigJMgdGhlIG9uZXMgdGhhdCBhcmUgYmVpbmcgbW9kaWZpZWQg4oCTIHRoZXkmIzM5O3JlIGFsbCBmaXJtbHkgcm9vdGVkIGluIHRoZSBkYXRhcGF0aCAoZHApLiBOb3csIHRoZSBkYXRhcGF0aCwgYXMgSSB1bmRlcnN0YW5kIGl0LCBvbmx5IGdldHMgaW5pdGlhbGl6ZWQgb25jZSB0aGUgZmlybXdhcmUgaXMgcmVhZHkgdG8gZ28uIFRoYXQmIzM5O3MgdGhlIGtleS4KCkluIHRoZXNlIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCB0aGUgZmlybXdhcmUgaXNuJiMzOTt0IGF2YWlsYWJsZS4gVGhhdCBtZWFucyB0aGUgZGF0YXBhdGggbmV2ZXIgZ2V0cyBpbml0aWFsaXplZC4gU2ltcGxlIGVub3VnaC4gVGhlcmVmb3JlLCB0aGUgY29kZSBwYXRocyB0aGlzIHBhdGNoIHRvdWNoZXM/IFRoZXkmIzM5O3JlIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgaW4gdGhlc2Ugc3BlY2lmaWMgZnV6emluZyBzY2VuYXJpb3MuIEkgbmVlZCB0byBiZSBzdXJlIHRob3VnaCwgbGV0JiMzOTtzIHRha2UgYSBsb29rLi4uCgpMZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIEkmIzM5O2xsIGdvIHRocm91Z2ggdGhlIGNhbGwgc3RhY2sgZm9yIHRoZSB0YXJnZXQgZnVuY3Rpb25zLiBTdGFydGluZyB3aXRoIGBhdGgxMmtfZHBfY2NfZGVzY19pbml0YCwgY2FuIHRoYXQgYmUgcmVhY2hlZCB2aWEgc29tZSBvdGhlciBwYXRoPyBMZXQmIzM5O3MgdHJhY2UgaXQ6IGBhdGgxMmtfZHBfY2NfaW5pdGAgLSZndDsgYGF0aDEya19kcF9zZXR1cGAgLSZndDsgYGF0aDEya19kcF9jbW5fZGV2aWNlX2luaXRgIC0mZ3Q7IGBhdGgxMmtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHlgLiBJJiMzOTtsbCBjb25maXJtIHRoYXQgYGF0aDEya19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeWAgaXMgdGhlIG9ubHkgY2FsbGVyIG9mIGBhdGgxMmtfZHBfY21uX2RldmljZV9pbml0YCwgc28gdGhhdCBJJiMzOTttIHN1cmUgb2YgdGhlIGVudGlyZSBwYXRoLi4uIEkmIzM5O3ZlIGFscmVhZHkgZ3JlcHBlZCBmb3IgYGF0aDEya19kcF9jbW5fZGV2aWNlX2luaXRgLiBBbmQgYXMgZXhwZWN0ZWQsIHRoZSBvbmx5IGNhbGxlciBpcyBgYXRoMTJrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5YC4gV2hhdCBhYm91dCBgYXRoMTJrX2RwX3NldHVwYD8gSSYjMzk7bGwgZ3JlcCBmb3IgdGhhdC4gQWgsIHRoZSBzYW1lIHBhdHRlcm4gZW1lcmdlczogYGF0aDEya19kcF9zZXR1cGAgaXMgb25seSBjYWxsZWQgYnkgYGF0aDEya19kcF9jbW5fZGV2aWNlX2luaXRgLiBTYW1lIHdpdGggYGF0aDEya19kcF9jY19pbml0YCwgSSYjMzk7dmUgYWxyZWFkeSBncmVwcGVkLCBJIHNlZSB0aGF0IHRoZSBvbmx5IGNhbGxlciBpcyBgYXRoMTJrX2RwX3NldHVwYC4KCk9rYXksIHNvIHRoZSBlbnRpcmUgZGF0YXBhdGggaW5pdGlhbGl6YXRpb24gaXMgKnN0cmljdGx5KiBjb250aW5nZW50IG9uIHRoYXQgUU1JIGZpcm13YXJlIHJlYWR5IGV2ZW50LiBXaXRob3V0IHRoZSBmaXJtd2FyZSwgdGhlIGRldmljZSBkb2VzbiYjMzk7dCBldmVuIGJvdGhlciBpbml0aWFsaXppbmcgaXRzIGRhdGFwYXRoLiBJdCYjMzk7cyBhIGRlYWQgZW5kIGluIHRlcm1zIG9mIGZ1enppbmcgdW5sZXNzIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGhhcmR3YXJlIG9yIGEgZnVsbCwgaGFyZHdhcmUtbGV2ZWwgZW11bGF0b3IuCgpTbywgZ2l2ZW4gYWxsIG9mIHRoYXQsIEkgYW0gY29tcGxldGVseSBjb25maWRlbnQgdGhhdCBJIGNhbiBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYCBoZXJlLiBUaGlzIGNvZGUgaXMgaW5hY2Nlc3NpYmxlIGluIHRoZSBzcGVjaWZpZWQgZnV6emluZyBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwODoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBkYXRhcGF0aCAoZHApIGluaXRpYWxpemF0aW9uIGFuZCBkZXNjcmlwdG9yIGFjY2VzcyBmdW5jdGlvbnMgaW4gdGhlIGF0aDEyayBkcml2ZXIuIFRoZSBkYXRhcGF0aCBpcyBvbmx5IGluaXRpYWxpemVkIGFmdGVyIHRoZSBkZXZpY2UgZmlybXdhcmUgaXMgbG9hZGVkIGFuZCByZWFkeSAodmlhIGF0aDEya19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeSkuIFNpbmNlIHRoZSByZXF1aXJlZCBoYXJkd2FyZSBhbmQgZmlybXdhcmUgYXJlIG5vdCBhdmFpbGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZGF0YXBhdGggKGRwKSBpbml0aWFsaXphdGlvbiBhbmQgZGVzY3JpcHRvciBhY2Nlc3MgZnVuY3Rpb25zIGluIHRoZSBhdGgxMmsgZHJpdmVyLiBUaGUgZGF0YXBhdGggaXMgb25seSBpbml0aWFsaXplZCBhZnRlciB0aGUgZGV2aWNlIGZpcm13YXJlIGlzIGxvYWRlZCBhbmQgcmVhZHkgKHZpYSBhdGgxMmtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHkpLiBTaW5jZSB0aGUgcmVxdWlyZWQgaGFyZHdhcmUgYW5kIGZpcm13YXJlIGFyZSBub3QgYXZhaWxhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCB0ZXN0IGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjIyOjQ0LjE2MzI1MzU1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE5MjYxNDIyNTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBkYXRhcGF0aCAoZHApIGluaXRpYWxpemF0aW9uIGFuZCBkZXNjcmlwdG9yIGFjY2VzcyBmdW5jdGlvbnMgaW4gdGhlIGF0aDEyayBkcml2ZXIuIFRoZSBkYXRhcGF0aCBpcyBvbmx5IGluaXRpYWxpemVkIGFmdGVyIHRoZSBkZXZpY2UgZmlybXdhcmUgaXMgbG9hZGVkIGFuZCByZWFkeSAodmlhIGF0aDEya19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeSkuIFNpbmNlIHRoZSByZXF1aXJlZCBoYXJkd2FyZSBhbmQgZmlybXdhcmUgYXJlIG5vdCBhdmFpbGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwODoyMjo0NC4xNjMyNjQyM1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQzMDk4MjY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMGY1YzdkMTQ2NzkwZjhiMmI0NjU5ZWY2NzAyYzE4OTU0NWM1ODY0YVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1biAyOSAwODoyMjo0MiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmNcXG5pbmRleCAxYzgyZDkyN2QyN2IyNy4uMjA3NmFlNjVlOWU3YWQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jXFxuQEAgLTExNDksOCArMTE0OSw4IEBAIHN0YXRpYyB1MzIgYXRoMTJrX2RwX2NjX2Nvb2tpZV9nZW4odTE2IHBwdF9pZHgsIHUxNiBzcHRfaWR4KVxcbiBcXHRyZXR1cm4gKHUzMilwcHRfaWR4IFxcdTAwM2NcXHUwMDNjIEFUSDEyS19DQ19QUFRfU0hJRlQgfCBzcHRfaWR4O1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCAqYXRoMTJrX2RwX2NjX2dldF9kZXNjX2FkZHJfcHRyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgdTE2IHBwdF9pZHgsIHUxNiBzcHRfaWR4KVxcbitzdGF0aWMgX19sZTY0ICphdGgxMmtfZHBfY2NfZ2V0X2Rlc2NfYWRkcl9wdHIoc3RydWN0IGF0aDEya19kcCAqZHAsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgIHUxNiBwcHRfaWR4LCB1MTYgc3B0X2lkeClcXG4ge1xcbiBcXHRyZXR1cm4gZHAtXFx1MDAzZXNwdF9pbmZvW3BwdF9pZHhdLnZhZGRyICsgc3B0X2lkeDtcXG4gfVxcbkBAIC0xMTU4LDggKzExNTgsOSBAQCBzdGF0aWMgdm9pZCAqYXRoMTJrX2RwX2NjX2dldF9kZXNjX2FkZHJfcHRyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxcbiBzdHJ1Y3QgYXRoMTJrX3J4X2Rlc2NfaW5mbyAqYXRoMTJrX2RwX2dldF9yeF9kZXNjKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgIHUzMiBjb29raWUpXFxuIHtcXG4tXFx0c3RydWN0IGF0aDEya19yeF9kZXNjX2luZm8gKipkZXNjX2FkZHJfcHRyO1xcbiBcXHR1MTYgc3RhcnRfcHB0X2lkeCwgZW5kX3BwdF9pZHgsIHBwdF9pZHgsIHNwdF9pZHg7XFxuK1xcdF9fbGU2NCAqZGVzY19hZGRyX3B0cjtcXG4rXFx0dWludHB0cl90IGRlc2NfYWRkcjtcXG4gXFxuIFxcdHBwdF9pZHggPSB1MzJfZ2V0X2JpdHMoY29va2llLCBBVEgxMktfRFBfQ0NfQ09PS0lFX1BQVCk7XFxuIFxcdHNwdF9pZHggPSB1MzJfZ2V0X2JpdHMoY29va2llLCBBVEgxMktfRFBfQ0NfQ09PS0lFX1NQVCk7XFxuQEAgLTExNzQsMTYgKzExNzUsMTggQEAgc3RydWN0IGF0aDEya19yeF9kZXNjX2luZm8gKmF0aDEya19kcF9nZXRfcnhfZGVzYyhzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcXG4gXFxuIFxcdHBwdF9pZHggPSBwcHRfaWR4IC0gZHAtXFx1MDAzZXJ4X3BwdF9iYXNlO1xcbiBcXHRkZXNjX2FkZHJfcHRyID0gYXRoMTJrX2RwX2NjX2dldF9kZXNjX2FkZHJfcHRyKGRwLCBwcHRfaWR4LCBzcHRfaWR4KTtcXG4rXFx0ZGVzY19hZGRyID0gKHVpbnRwdHJfdClsZTY0X3RvX2NwdSgqZGVzY19hZGRyX3B0cik7XFxuIFxcbi1cXHRyZXR1cm4gKmRlc2NfYWRkcl9wdHI7XFxuK1xcdHJldHVybiAoc3RydWN0IGF0aDEya19yeF9kZXNjX2luZm8gKilkZXNjX2FkZHI7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTChhdGgxMmtfZHBfZ2V0X3J4X2Rlc2MpO1xcbiBcXG4gc3RydWN0IGF0aDEya190eF9kZXNjX2luZm8gKmF0aDEya19kcF9nZXRfdHhfZGVzYyhzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICB1MzIgY29va2llKVxcbiB7XFxuLVxcdHN0cnVjdCBhdGgxMmtfdHhfZGVzY19pbmZvICoqZGVzY19hZGRyX3B0cjtcXG4gXFx0dTE2IHN0YXJ0X3BwdF9pZHgsIGVuZF9wcHRfaWR4LCBwcHRfaWR4LCBzcHRfaWR4O1xcbitcXHRfX2xlNjQgKmRlc2NfYWRkcl9wdHI7XFxuK1xcdHVpbnRwdHJfdCBkZXNjX2FkZHI7XFxuIFxcbiBcXHRwcHRfaWR4ID0gdTMyX2dldF9iaXRzKGNvb2tpZSwgQVRIMTJLX0RQX0NDX0NPT0tJRV9QUFQpO1xcbiBcXHRzcHRfaWR4ID0gdTMyX2dldF9iaXRzKGNvb2tpZSwgQVRIMTJLX0RQX0NDX0NPT0tJRV9TUFQpO1xcbkBAIC0xMTk4LDE5ICsxMjAxLDIyIEBAIHN0cnVjdCBhdGgxMmtfdHhfZGVzY19pbmZvICphdGgxMmtfZHBfZ2V0X3R4X2Rlc2Moc3RydWN0IGF0aDEya19kcCAqZHAsXFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXG4gXFx0ZGVzY19hZGRyX3B0ciA9IGF0aDEya19kcF9jY19nZXRfZGVzY19hZGRyX3B0cihkcCwgcHB0X2lkeCwgc3B0X2lkeCk7XFxuK1xcdGRlc2NfYWRkciA9ICh1aW50cHRyX3QpbGU2NF90b19jcHUoKmRlc2NfYWRkcl9wdHIpO1xcbiBcXG4tXFx0cmV0dXJuICpkZXNjX2FkZHJfcHRyO1xcbitcXHRyZXR1cm4gKHN0cnVjdCBhdGgxMmtfdHhfZGVzY19pbmZvICopZGVzY19hZGRyO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0woYXRoMTJrX2RwX2dldF90eF9kZXNjKTtcXG4gXFxuIHN0YXRpYyBpbnQgYXRoMTJrX2RwX2NjX2Rlc2NfaW5pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbiB7XFxuIFxcdHN0cnVjdCBhdGgxMmtfZHAgKmRwID0gYXRoMTJrX2FiX3RvX2RwKGFiKTtcXG4tXFx0c3RydWN0IGF0aDEya19yeF9kZXNjX2luZm8gKnJ4X2Rlc2NzLCAqKnJ4X2Rlc2NfYWRkcjtcXG4tXFx0c3RydWN0IGF0aDEya190eF9kZXNjX2luZm8gKnR4X2Rlc2NzLCAqKnR4X2Rlc2NfYWRkcjtcXG4rXFx0c3RydWN0IGF0aDEya19yeF9kZXNjX2luZm8gKnJ4X2Rlc2NzO1xcbitcXHRzdHJ1Y3QgYXRoMTJrX3R4X2Rlc2NfaW5mbyAqdHhfZGVzY3M7XFxuIFxcdHUzMiBudW1fcnhfc3B0X3BhZ2VzID0gQVRIMTJLX05VTV9SWF9TUFRfUEFHRVMoYWIpO1xcbiBcXHR1MzIgaSwgaiwgcG9vbF9pZCwgdHhfc3B0X3BhZ2U7XFxuIFxcdHUzMiBwcHRfaWR4LCBjb29raWVfcHB0X2lkeDtcXG4rXFx0X19sZTY0ICpyeF9kZXNjX2FkZHI7XFxuK1xcdF9fbGU2NCAqdHhfZGVzY19hZGRyO1xcbiBcXG4gXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZkcC1cXHUwMDNlcnhfZGVzY19sb2NrKTtcXG4gXFxuQEAgLTEyNDYsNyArMTI1Miw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX2RwX2NjX2Rlc2NfaW5pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbiBcXG4gXFx0XFx0XFx0LyogVXBkYXRlIGRlc2NyaXB0b3IgVkEgaW4gU1BUICovXFxuIFxcdFxcdFxcdHJ4X2Rlc2NfYWRkciA9IGF0aDEya19kcF9jY19nZXRfZGVzY19hZGRyX3B0cihkcCwgcHB0X2lkeCwgaik7XFxuLVxcdFxcdFxcdCpyeF9kZXNjX2FkZHIgPSBcXHUwMDI2cnhfZGVzY3Nbal07XFxuK1xcdFxcdFxcdCpyeF9kZXNjX2FkZHIgPSBjcHVfdG9fbGU2NCgodTY0KSh1aW50cHRyX3QpXFx1MDAyNnJ4X2Rlc2NzW2pdKTtcXG4gXFx0XFx0fVxcbiBcXHR9XFxuIFxcbkBAIC0xMjg2LDcgKzEyOTIsNyBAQCBzdGF0aWMgaW50IGF0aDEya19kcF9jY19kZXNjX2luaXQoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4gXFx0XFx0XFx0XFx0LyogVXBkYXRlIGRlc2NyaXB0b3IgVkEgaW4gU1BUICovXFxuIFxcdFxcdFxcdFxcdHR4X2Rlc2NfYWRkciA9XFxuIFxcdFxcdFxcdFxcdFxcdGF0aDEya19kcF9jY19nZXRfZGVzY19hZGRyX3B0cihkcCwgcHB0X2lkeCwgaik7XFxuLVxcdFxcdFxcdFxcdCp0eF9kZXNjX2FkZHIgPSBcXHUwMDI2dHhfZGVzY3Nbal07XFxuK1xcdFxcdFxcdFxcdCp0eF9kZXNjX2FkZHIgPSBjcHVfdG9fbGU2NCgodTY0KSh1aW50cHRyX3QpXFx1MDAyNnR4X2Rlc2NzW2pdKTtcXG4gXFx0XFx0XFx0fVxcbiBcXHRcXHR9XFxuIFxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZkcC1cXHUwMDNldHhfZGVzY19sb2NrW3Bvb2xfaWRdKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oXFxuaW5kZXggZjhjZmM3YmIyOWRkNzguLjBkN2ZjMmFlYTI0MTVlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxcbkBAIC0zNTcsNyArMzU3LDcgQEAgc3RydWN0IGF0aDEya190eF9kZXNjX3BhcmFtcyB7XFxuIFxcbiBzdHJ1Y3QgYXRoMTJrX3NwdF9pbmZvIHtcXG4gXFx0ZG1hX2FkZHJfdCBwYWRkcjtcXG4tXFx0dTY0ICp2YWRkcjtcXG4rXFx0X19sZTY0ICp2YWRkcjtcXG4gfTtcXG4gXFxuIHN0cnVjdCBhdGgxMmtfcmVvX3F1ZXVlX3JlZiB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjIyOjQ0LjgwNzI1MzExN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzEyODIxMzAwNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBkYXRhcGF0aCAoZHApIGluaXRpYWxpemF0aW9uIGFuZCBkZXNjcmlwdG9yIGFjY2VzcyBmdW5jdGlvbnMgaW4gdGhlIGF0aDEyayBkcml2ZXIuIFRoZSBkYXRhcGF0aCBpcyBvbmx5IGluaXRpYWxpemVkIGFmdGVyIHRoZSBkZXZpY2UgZmlybXdhcmUgaXMgbG9hZGVkIGFuZCByZWFkeSAodmlhIGF0aDEya19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeSkuIFNpbmNlIHRoZSByZXF1aXJlZCBoYXJkd2FyZSBhbmQgZmlybXdhcmUgYXJlIG5vdCBhdmFpbGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDBmNWM3ZDE0Njc5MGY4YjJiNDY1OWVmNjcwMmMxODk1NDVjNTg2NGFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1biAyOSAwODoyMjo0MiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuY1xuaW5kZXggMWM4MmQ5MjdkMjdiMjcuLjIwNzZhZTY1ZTllN2FkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmNcbkBAIC0xMTQ5LDggKzExNDksOCBAQCBzdGF0aWMgdTMyIGF0aDEya19kcF9jY19jb29raWVfZ2VuKHUxNiBwcHRfaWR4LCB1MTYgc3B0X2lkeClcbiBcdHJldHVybiAodTMyKXBwdF9pZHggXHUwMDNjXHUwMDNjIEFUSDEyS19DQ19QUFRfU0hJRlQgfCBzcHRfaWR4O1xuIH1cbiBcbi1zdGF0aWMgdm9pZCAqYXRoMTJrX2RwX2NjX2dldF9kZXNjX2FkZHJfcHRyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuLVx0XHRcdFx0XHQgICAgdTE2IHBwdF9pZHgsIHUxNiBzcHRfaWR4KVxuK3N0YXRpYyBfX2xlNjQgKmF0aDEya19kcF9jY19nZXRfZGVzY19hZGRyX3B0cihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcbitcdFx0XHRcdFx0ICAgICAgdTE2IHBwdF9pZHgsIHUxNiBzcHRfaWR4KVxuIHtcbiBcdHJldHVybiBkcC1cdTAwM2VzcHRfaW5mb1twcHRfaWR4XS52YWRkciArIHNwdF9pZHg7XG4gfVxuQEAgLTExNTgsOCArMTE1OCw5IEBAIHN0YXRpYyB2b2lkICphdGgxMmtfZHBfY2NfZ2V0X2Rlc2NfYWRkcl9wdHIoc3RydWN0IGF0aDEya19kcCAqZHAsXG4gc3RydWN0IGF0aDEya19yeF9kZXNjX2luZm8gKmF0aDEya19kcF9nZXRfcnhfZGVzYyhzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcbiBcdFx0XHRcdFx0XHQgIHUzMiBjb29raWUpXG4ge1xuLVx0c3RydWN0IGF0aDEya19yeF9kZXNjX2luZm8gKipkZXNjX2FkZHJfcHRyO1xuIFx0dTE2IHN0YXJ0X3BwdF9pZHgsIGVuZF9wcHRfaWR4LCBwcHRfaWR4LCBzcHRfaWR4O1xuK1x0X19sZTY0ICpkZXNjX2FkZHJfcHRyO1xuK1x0dWludHB0cl90IGRlc2NfYWRkcjtcbiBcbiBcdHBwdF9pZHggPSB1MzJfZ2V0X2JpdHMoY29va2llLCBBVEgxMktfRFBfQ0NfQ09PS0lFX1BQVCk7XG4gXHRzcHRfaWR4ID0gdTMyX2dldF9iaXRzKGNvb2tpZSwgQVRIMTJLX0RQX0NDX0NPT0tJRV9TUFQpO1xuQEAgLTExNzQsMTYgKzExNzUsMTggQEAgc3RydWN0IGF0aDEya19yeF9kZXNjX2luZm8gKmF0aDEya19kcF9nZXRfcnhfZGVzYyhzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcbiBcbiBcdHBwdF9pZHggPSBwcHRfaWR4IC0gZHAtXHUwMDNlcnhfcHB0X2Jhc2U7XG4gXHRkZXNjX2FkZHJfcHRyID0gYXRoMTJrX2RwX2NjX2dldF9kZXNjX2FkZHJfcHRyKGRwLCBwcHRfaWR4LCBzcHRfaWR4KTtcbitcdGRlc2NfYWRkciA9ICh1aW50cHRyX3QpbGU2NF90b19jcHUoKmRlc2NfYWRkcl9wdHIpO1xuIFxuLVx0cmV0dXJuICpkZXNjX2FkZHJfcHRyO1xuK1x0cmV0dXJuIChzdHJ1Y3QgYXRoMTJrX3J4X2Rlc2NfaW5mbyAqKWRlc2NfYWRkcjtcbiB9XG4gRVhQT1JUX1NZTUJPTChhdGgxMmtfZHBfZ2V0X3J4X2Rlc2MpO1xuIFxuIHN0cnVjdCBhdGgxMmtfdHhfZGVzY19pbmZvICphdGgxMmtfZHBfZ2V0X3R4X2Rlc2Moc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXHRcdFx0XHRcdFx0ICB1MzIgY29va2llKVxuIHtcbi1cdHN0cnVjdCBhdGgxMmtfdHhfZGVzY19pbmZvICoqZGVzY19hZGRyX3B0cjtcbiBcdHUxNiBzdGFydF9wcHRfaWR4LCBlbmRfcHB0X2lkeCwgcHB0X2lkeCwgc3B0X2lkeDtcbitcdF9fbGU2NCAqZGVzY19hZGRyX3B0cjtcbitcdHVpbnRwdHJfdCBkZXNjX2FkZHI7XG4gXG4gXHRwcHRfaWR4ID0gdTMyX2dldF9iaXRzKGNvb2tpZSwgQVRIMTJLX0RQX0NDX0NPT0tJRV9QUFQpO1xuIFx0c3B0X2lkeCA9IHUzMl9nZXRfYml0cyhjb29raWUsIEFUSDEyS19EUF9DQ19DT09LSUVfU1BUKTtcbkBAIC0xMTk4LDE5ICsxMjAxLDIyIEBAIHN0cnVjdCBhdGgxMmtfdHhfZGVzY19pbmZvICphdGgxMmtfZHBfZ2V0X3R4X2Rlc2Moc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuIFx0ZGVzY19hZGRyX3B0ciA9IGF0aDEya19kcF9jY19nZXRfZGVzY19hZGRyX3B0cihkcCwgcHB0X2lkeCwgc3B0X2lkeCk7XG4rXHRkZXNjX2FkZHIgPSAodWludHB0cl90KWxlNjRfdG9fY3B1KCpkZXNjX2FkZHJfcHRyKTtcbiBcbi1cdHJldHVybiAqZGVzY19hZGRyX3B0cjtcbitcdHJldHVybiAoc3RydWN0IGF0aDEya190eF9kZXNjX2luZm8gKilkZXNjX2FkZHI7XG4gfVxuIEVYUE9SVF9TWU1CT0woYXRoMTJrX2RwX2dldF90eF9kZXNjKTtcbiBcbiBzdGF0aWMgaW50IGF0aDEya19kcF9jY19kZXNjX2luaXQoc3RydWN0IGF0aDEya19iYXNlICphYilcbiB7XG4gXHRzdHJ1Y3QgYXRoMTJrX2RwICpkcCA9IGF0aDEya19hYl90b19kcChhYik7XG4tXHRzdHJ1Y3QgYXRoMTJrX3J4X2Rlc2NfaW5mbyAqcnhfZGVzY3MsICoqcnhfZGVzY19hZGRyO1xuLVx0c3RydWN0IGF0aDEya190eF9kZXNjX2luZm8gKnR4X2Rlc2NzLCAqKnR4X2Rlc2NfYWRkcjtcbitcdHN0cnVjdCBhdGgxMmtfcnhfZGVzY19pbmZvICpyeF9kZXNjcztcbitcdHN0cnVjdCBhdGgxMmtfdHhfZGVzY19pbmZvICp0eF9kZXNjcztcbiBcdHUzMiBudW1fcnhfc3B0X3BhZ2VzID0gQVRIMTJLX05VTV9SWF9TUFRfUEFHRVMoYWIpO1xuIFx0dTMyIGksIGosIHBvb2xfaWQsIHR4X3NwdF9wYWdlO1xuIFx0dTMyIHBwdF9pZHgsIGNvb2tpZV9wcHRfaWR4O1xuK1x0X19sZTY0ICpyeF9kZXNjX2FkZHI7XG4rXHRfX2xlNjQgKnR4X2Rlc2NfYWRkcjtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZkcC1cdTAwM2VyeF9kZXNjX2xvY2spO1xuIFxuQEAgLTEyNDYsNyArMTI1Miw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX2RwX2NjX2Rlc2NfaW5pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuIFxuIFx0XHRcdC8qIFVwZGF0ZSBkZXNjcmlwdG9yIFZBIGluIFNQVCAqL1xuIFx0XHRcdHJ4X2Rlc2NfYWRkciA9IGF0aDEya19kcF9jY19nZXRfZGVzY19hZGRyX3B0cihkcCwgcHB0X2lkeCwgaik7XG4tXHRcdFx0KnJ4X2Rlc2NfYWRkciA9IFx1MDAyNnJ4X2Rlc2NzW2pdO1xuK1x0XHRcdCpyeF9kZXNjX2FkZHIgPSBjcHVfdG9fbGU2NCgodTY0KSh1aW50cHRyX3QpXHUwMDI2cnhfZGVzY3Nbal0pO1xuIFx0XHR9XG4gXHR9XG4gXG5AQCAtMTI4Niw3ICsxMjkyLDcgQEAgc3RhdGljIGludCBhdGgxMmtfZHBfY2NfZGVzY19pbml0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4gXHRcdFx0XHQvKiBVcGRhdGUgZGVzY3JpcHRvciBWQSBpbiBTUFQgKi9cbiBcdFx0XHRcdHR4X2Rlc2NfYWRkciA9XG4gXHRcdFx0XHRcdGF0aDEya19kcF9jY19nZXRfZGVzY19hZGRyX3B0cihkcCwgcHB0X2lkeCwgaik7XG4tXHRcdFx0XHQqdHhfZGVzY19hZGRyID0gXHUwMDI2dHhfZGVzY3Nbal07XG4rXHRcdFx0XHQqdHhfZGVzY19hZGRyID0gY3B1X3RvX2xlNjQoKHU2NCkodWludHB0cl90KVx1MDAyNnR4X2Rlc2NzW2pdKTtcbiBcdFx0XHR9XG4gXHRcdH1cbiBcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2ZHAtXHUwMDNldHhfZGVzY19sb2NrW3Bvb2xfaWRdKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmhcbmluZGV4IGY4Y2ZjN2JiMjlkZDc4Li4wZDdmYzJhZWEyNDE1ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oXG5AQCAtMzU3LDcgKzM1Nyw3IEBAIHN0cnVjdCBhdGgxMmtfdHhfZGVzY19wYXJhbXMge1xuIFxuIHN0cnVjdCBhdGgxMmtfc3B0X2luZm8ge1xuIFx0ZG1hX2FkZHJfdCBwYWRkcjtcbi1cdHU2NCAqdmFkZHI7XG4rXHRfX2xlNjQgKnZhZGRyO1xuIH07XG4gXG4gc3RydWN0IGF0aDEya19yZW9fcXVldWVfcmVmIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjIyOjQ0LjgwNzI1ODg2N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIwMDIwNjc4NDM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFzc2Vzc2luZyB0aGUgRnV6emFiaWxpdHkgb2YgYW4gYXRoMTJrIEVuZGlhbm5lc3MgRml4KipcblxuT2theSwgc28gd2UndmUgZ290IGEgcGF0Y2ggaGVyZSBtb2RpZnlpbmcgdGhlIGF0aDEyayBkcml2ZXIsIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jYCBhbmQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaGAuIEl0IGxvb2tzIGxpa2UgaXQncyBhZGRyZXNzaW5nIGFuIGVuZGlhbm5lc3MgaXNzdWUsIGNoYW5naW5nIGB2YWRkcmAgaW4gYHN0cnVjdCBhdGgxMmtfc3B0X2luZm9gIHRvIGBfX2xlNjQgKmAgYW5kIHVwZGF0aW5nIHJlbGF0ZWQgZnVuY3Rpb25zIChgYXRoMTJrX2RwX2NjX2dldF9kZXNjX2FkZHJfcHRyYCwgZXRjLikgdG8gaGFuZGxlIHRoZSBsaXR0bGUtZW5kaWFuIGNvbnZlcnNpb24uIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2ggZnJvbSBhIGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmUuIE15IHByaW1hcnkgY29uY2VybiwgdGhvdWdoLCBpcyB3aGV0aGVyIHRoaXMgaXMgd29ydGggZnVzc2luZyB3aXRoIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCBzaW5jZSB0aGUgaW5zdHJ1Y3Rpb25zIHNheSB0aGF0IHdlIHNob3VsZCBpZ25vcmUgcGF0Y2hlcyB0aGF0IGNhbid0IGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxuXG5UaGUgYXRoMTJrIGRyaXZlciBpcywgb2YgY291cnNlLCBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzLiBJdCdzIGEgUENJIG9yIEFIQiBkZXZpY2UsIHdoaWNoIG1ha2VzIGl0IGFuIGltbWVkaWF0ZSBmbGFnLiBXaS1GaSBkcml2ZXJzLCBpbiBteSBleHBlcmllbmNlLCB1c3VhbGx5IHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgZm9yIGVmZmVjdGl2ZSB0ZXN0aW5nLiBJJ20gaW1tZWRpYXRlbHkgc2tlcHRpY2FsIHRoYXQgd2UgY2FuIHJlYWNoIHRoaXMgZWFzaWx5IGluIGEgdmlydHVhbGl6ZWQgc2V0dGluZywgdW5sZXNzIHNvbWUgY2xldmVyIGVtdWxhdGlvbiB0cmljayBpcyBhdmFpbGFibGUuIEl0J3Mgbm90IHVzaW5nIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIHdvdWxkIGJlIHRoZSBlYXN5IHdpbi5cblxuV2FpdCwgZG9lcyBzeXprYWxsZXIgaGF2ZSBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXM/IEkgcmVjYWxsIHNlZWluZyBzb21lIFBDSS1yZWxhdGVkIGZ1enppbmcgaW4gdGhlIGRvY3VtZW50YXRpb24sIHV0aWxpemluZyB2ZmlvIG9yIHNpbWlsYXIgc2V0dXBzIGZvciBmYWtpbmcgUENJIGRldmljZXMsIGFuZCBwb3RlbnRpYWxseSBpbmplY3RpbmcgUENJIGNvbmZpZyBzcGFjZSBhbmQgTU1JTy4gTWF5YmUgdGhhdCBnaXZlcyB1cyBhIHdheSBpbj8gU3l6a2FsbGVyJ3MgZG9jdW1lbnRhdGlvbiwgb3IgYnVnIHJlcG9ydHMsIHdvdWxkIGJlIHRoZSBwbGFjZXMgdG8gY2hlY2sgaWYgYXRoMTJrIGlzIGV4cGxpY2l0bHkgZnV6emVkIG9yIGlmIHNvbWUgZ2VuZXJpYyBQQ0kgZnV6emluZyBjYW4gYmluZCB0byBpdC5cblxuVGhlIGluc3RydWN0aW9ucyB0ZWxsIHVzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiBpdCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiBMZXQncyBzZWUuIERvZXMgUUVNVSBldmVuIGhhdmUgYW55IGF0aDEyayBQQ0kgZW11bGF0aW9uPyBJIGRvdWJ0IGl0LlxuXG5TeXprYWxsZXIgZG9lcyBzZWVtIHRvIGhhdmUgc29tZSBQQ0kgZnV6emluZyBzdXBwb3J0LCBzbyBwZXJoYXBzIHRoYXQgY2FuIGJlIHVzZWQuIEl0IHJlcXVpcmVzIHRoZSBkcml2ZXIgdG8gYmluZCB0byBhIGZha2UgUENJIGRldmljZS4gRG8gd2UgaGF2ZSBzb21ldGhpbmcgbGlrZSBhIGBzeXpfcGNpX2RldmljZWAgZnVuY3Rpb24gdGhhdCB3ZSBjYW4gdXNlPyBJIHJlY2FsbCB3ZSBjYW4gdXNlIHRoZSBgc3l6X3BjaV9kZXZpY2VgIHR5cGUuXG5cbkFscmlnaHQsIGxldCdzIHNlYXJjaCBzeXprYWxsZXIgZm9yIGBhdGgxMmtgIHRvIHNlZSBpZiBpdCdzIGV4cGxpY2l0bHkgZnV6emVkLiBBbmQgYmVjYXVzZSBpdCdzIGEgUENJIGRyaXZlciwgbWF5YmUgd2UgY2FuIHVzZSB0aGUgZnV6emluZyBhYmlsaXRpZXMgZm9yIFBDSSBkcml2ZXJzLiBJIGRvbid0IGhhdmUgYWNjZXNzIHRvIHN5emthbGxlciBidWcgcmVwb3J0cywgc28gdGhhdCdzIG91dC4gU28sIGxldCdzIHNlZSBpZiB3ZSBjYW4gZmluZCBhbnl0aGluZyBpbiB0aGUgS2NvbmZpZywgc2VlIGlmIHRoZXJlJ3MgYW55IGluZGljYXRpb24gb2YgZnV6emluZyBiZWluZyBlbmFibGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTI5LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Njk5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDg6MjM6MDQuODI3OTQxNzI1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4NjUzOTQ4MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQVRIMTJLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6Mjpjb25maWcgQVRIMTJLXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIFRlY2hub2xvZ2llcyBXaS1GaSA3IHN1cHBvcnQgKGF0aDEyaylcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjE4OmNvbmZpZyBBVEgxMktfQUhCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTE5LVxcdGJvb2wgXFxcIlFUSSBhdGgxMmsgQUhCIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjI2OmNvbmZpZyBBVEgxMktfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMjctXFx0Ym9vbCBcXFwiYXRoMTJrIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MzY6Y29uZmlnIEFUSDEyS19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTM3LVxcdGJvb2wgXFxcIlFUSSBhdGgxMmsgZGVidWdmcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo0NTpjb25maWcgQVRIMTJLX1RSQUNJTkdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDYtXFx0Ym9vbCBcXFwiYXRoMTJrIHRyYWNpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy01My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6NTQ6Y29uZmlnIEFUSDEyS19DT1JFRFVNUFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy01NS1cXHRib29sIFxcXCJhdGgxMmsgY29yZWR1bXBcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjIzOjA1LjIxNDQ5MTk2N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1Mjk0NTk0MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBUYXJnZXQgRHJpdmVyIGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZGlnZ2luZyBpbnRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGhvdyBsaWtlbHkgYW0gSSB0byBldmVuICpoaXQqIHRoYXQgY29kZSBpbiBhIHZpcnR1YWxpemVkIGNvbnRleHQ/IFRoZXNlIGxvdy1sZXZlbCwgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycywgZXNwZWNpYWxseSB3aXJlbGVzcyBvbmVzLCB0eXBpY2FsbHkgcmVxdWlyZSBzcGVjaWZpYyBoYXJkd2FyZSBvciwgYXQgdGhlIHZlcnkgbGVhc3QsIHJvYnVzdCBlbXVsYXRpb24gdG8gZnVuY3Rpb24uXG5cbkJ1dCB0aGVuIEkgcmVtZW1iZXIgc3l6a2FsbGVyLiBTcGVjaWZpY2FsbHksIGl0cyB2aXJ0dWFsIFBDSSBkZXZpY2UgZnV6emVyLiBOb3cgKnRoYXQncyogaW50ZXJlc3RpbmcuIElmIGl0IGNhbiBiaW5kIHRvIFBDSSBkcml2ZXJzIGJhc2VkIG9uIHZlbmRvci9kZXZpY2UgSURzIGFuZCB0aGVuIHN0YXJ0IHBva2luZyBhdCB0aGUgTU1JTyBhbmQgRE1BLCB0aGUgZ2FtZSBjaGFuZ2VzIHNpZ25pZmljYW50bHkuIFRoaXMgcG90ZW50aWFsbHkgb3BlbnMgdXAgYSB0ZXN0aW5nIGF2ZW51ZSBJIHdvdWxkbid0IGhhdmUgaW1tZWRpYXRlbHkgY29uc2lkZXJlZC5cblxuVGhlIGtleSBxdWVzdGlvbiBpcywgZG9lcyBzeXprYWxsZXIgKmFjdHVhbGx5KiBmdXp6IGBhdGgxMmtgPyBJIG5lZWQgdG8gdmVyaWZ5IGlmIHRoZSBkcml2ZXIgZXhwb3NlcyBpdHMgUENJIElEcy4gQSBxdWljayBjaGVjayBvZiB0aGUgc291cmNlIGlzIGluIG9yZGVyLiBMZXQncyBzZWUgaWYgd2UgY2FuIGZpbmQgdGhlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQwNSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwODoyMzowOS43NDM5NTU3MDZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY2NzkyNzM0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjaV9kZXZpY2VfaWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYz0xNTAyPXN0YXRpYyBlbnVtIGF0aDEya19kZXZpY2VfZmFtaWx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzoxNTAzOmF0aDEya19nZXRfZGV2aWNlX2ZhbWlseShjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqcGNpX2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE1MDQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTUwNS1cXHRlbnVtIGF0aDEya19kZXZpY2VfZmFtaWx5IGRldmljZV9mYW1pbHlfaWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzoxNTA2OlxcdGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE1MDctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jPTE1MjQ9c3RhdGljIGludCBhdGgxMmtfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTUyNTpcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaV9kZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xNTI2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmg9MTAzPXN0cnVjdCBhdGgxMmtfcGNpX2RldmljZV9mYW1pbHlfb3BzIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5oOjEwNDpcXHRpbnQgKCpwcm9iZSkoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICpwY2lfZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5oLTEwNS1cXHRpbnQgKCphcmNoX2luaXQpKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuaD0xNDI9c3RydWN0IGF0aDEya19wY2lfZHJpdmVyIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5oLTE0My1cXHRjb25zdCBjaGFyICpuYW1lO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmg6MTQ0OlxcdGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZF90YWJsZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5oLTE0NS1cXHRzdHJ1Y3QgYXRoMTJrX3BjaV9kZXZpY2VfZmFtaWx5X29wcyBvcHM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L3BjaS5jLTMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvcGNpLmM6MzQ6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGF0aDEya193aWZpN19wY2lfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L3BjaS5jLTM1LVxcdHsgUENJX1ZERVZJQ0UoUUNPTSwgUUNOOTI3NF9ERVZJQ0VfSUQpIH0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L3BjaS5jPTkxPXN0YXRpYyBpbnQgYXRoMTJrX3dpZmk3X3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L3BjaS5jOjkyOlxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaV9kZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYy05My17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjIzOjEwLjAxMDc1OTYzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg3OTI4OTg5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWFjaGluZyBBdGgxMms6IEEgRnV6emluZyBGZWFzaWJpbGl0eSBDaGVjayoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgc3l6a2FsbGVyIHNldHVwLCBzcGVjaWZpY2FsbHkgYHN5el9wY2lfZGV2aWNlYC4gSXQncyBnb3QgcG90ZW50aWFsIGZvciBlbXVsYXRpbmcgUENJIGRldmljZXMsIHdoaWNoLCBpZiBleHBsb2l0ZWQsIGNvdWxkIGdpdmUgdXMgYSBiYWNrZG9vciBpbnRvIGRyaXZlcnMsIHBhcnRpY3VsYXJseSB0aG9zZSB0aGF0IGFyZSBQQ0kgYmFzZWQuIFRoZSBxdWVzdGlvbiBub3cgaXM6IGlzIGF0aDEyayByZWFjaGFibGUgdGhyb3VnaCB0aGlzIG1ldGhvZD9cblxuV2FpdCwgYSBjcnVjaWFsIHJlbWluZGVyIGZyb20gdGhlIGluc3RydWN0aW9ucy4gSXQgc2F5cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIGludm9sdmVzIHBhdGhzIHRoYXQgYXJlIGluaGVyZW50bHkgaW5hY2Nlc3NpYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhhdCB0aHJvd3MgYSB3cmVuY2ggaW4gdGhlIHdvcmtzLiBNeSBndXQgdGVsbHMgbWUgc29tZXRoaW5nIGxpa2UgYHVzYiBnYWRnZXRgIG9yIGBtYWM4MDIxMV9od3NpbWAgd291bGQgYmUgb3V0IG9mIHJlYWNoIHdpdGggdGhlc2UgY29uc3RyYWludHMsIGJ1dCB3aGF0IGFib3V0IGF0aDEyaz9cblxuR2l2ZW4gdGhhdCBhdGgxMmsgaXMgYSBwcmV0dHkgY29tcGxleCBXaS1GaSBkcml2ZXIsIHRoZSBjcnVjaWFsIHN0ZXAgdG8gY2hlY2sgaXMgdGhpczogZG9lcyBpdCByZXF1aXJlIGZpcm13YXJlIHRvIGJlIGxvYWRlZCBhbmQgaW5pdGlhbGl6ZWQgKmJlZm9yZSogd2UgY2FuIGV2ZW4gdG91Y2ggdGhlIGRhdGFwYXRoIC0gc3BlY2lmaWNhbGx5IHRoZSBgZHAuY2AgZmlsZXM/IEkgbmVlZCB0byBjaGVjayB0byBzZWUgaWYgYGF0aDEya19kcF9jY19kZXNjX2luaXRgIGNhbiBiZSByZWFjaGVkIGJlZm9yZSBmaXJtd2FyZSBpcyBldmVuIGxvYWRlZC4gVGhpcyBpcyB0aGUgY3J1Y2lhbCBxdWVzdGlvbiB0byBkZXRlcm1pbmUgdGhlIGZlYXNpYmlsaXR5IG9mIGZ1enppbmcgdGhpcyBkcml2ZXIsIHVuZGVyIHRoZXNlIGNvbmRpdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MzAsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDg6MjM6MTQuODkwMDUyNzM0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NjI4NTk2ODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTJrX2RwX2NjX2Rlc2NfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmM9MTIwOD1FWFBPUlRfU1lNQk9MKGF0aDEya19kcF9nZXRfdHhfZGVzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jLTEyMDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jOjEyMTA6c3RhdGljIGludCBhdGgxMmtfZHBfY2NfZGVzY19pbml0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jLTEyMTEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jPTEzNTM9c3RhdGljIGludCBhdGgxMmtfZHBfY2NfaW5pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jLTE0MDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jOjE0MTA6XFx0cmV0ID0gYXRoMTJrX2RwX2NjX2Rlc2NfaW5pdChhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jLTE0MTEtXFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwODoyMzoxNi41NTI5MjI4ODJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDA0MjEwNjQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgY29kZTpcblxuKipBbmFseXppbmcgdGhlIENhbGxlcnMgb2YgYGF0aDEya19kcF9jY19pbml0YCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBUaGUgaW5pdGlhbCB0YXNrIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgYGF0aDEya19kcF9jY19pbml0YC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiAqd2hlcmUqIGlzIHRoaXMgZnVuY3Rpb24gYmVpbmcgdXNlZD8gV2hhdCBwYXJ0cyBvZiB0aGUgY29kZSBiYXNlIGFyZSBkZXBlbmRlbnQgb24gaXQ/IEtub3dpbmcgaXRzIGNhbGxlcnMgd2lsbCB0ZWxsIG1lIGl0cyBwdXJwb3NlIGFuZCBzaWduaWZpY2FuY2Ugd2l0aGluIHRoZSBicm9hZGVyIHN5c3RlbS4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSBgYXRoMTJrX2RwX2NjX2luaXRgIHRvIGZpbmQgYWxsIHRoZSBwbGFjZXMgaXQncyBhY3R1YWxseSBpbnZva2VkLiBUaGF0J3MgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHJvbGUuIEZyb20gdGhlcmUsIEkgY2FuIHN0YXJ0IGZvcm1pbmcgYSBtZW50YWwgbWFwIG9mIGl0cyBpbXBhY3QgYW5kIGltcGxpY2F0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQwNiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjIzOjE5LjU1NzEzNjkwOVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzNDA0MDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDEya19kcF9jY19pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYz0xMzQ4PXN0YXRpYyB1MzIgYXRoMTJrX2RwX2dldF9udW1fc3B0X3BhZ2VzKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMtMTM1Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmM6MTM1MzpzdGF0aWMgaW50IGF0aDEya19kcF9jY19pbml0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jLTEzNTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jPTE0NzY9c3RhdGljIGludCBhdGgxMmtfZHBfc2V0dXAoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYy0xNTIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYzoxNTI0OlxcdHJldCA9IGF0aDEya19kcF9jY19pbml0KGFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMtMTUyNS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDg6MjM6MTkuNjYwNTUxMjU5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0NzE4MDg1NTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgY29kZTpcblxuKipBbmFseXppbmcgdGhlIENhbGxlcnMgb2YgYGF0aDEya19kcF9zZXR1cGAqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBgYXRoMTJrX2RwX3NldHVwYCBpcyBiZWluZyBpbnZva2VkLiBUaGF0J3MgdGhlIGNydWNpYWwgZmlyc3Qgc3RlcC4gSSBuZWVkIHRvIHRyYWNlIGl0cyBjYWxsIGdyYXBoIHRvIGdldCBhIGhhbmRsZSBvbiBpdHMgcm9sZSB3aXRoaW4gdGhlIGJyb2FkZXIgZHJpdmVyIGFyY2hpdGVjdHVyZS4gS25vd2luZyB0aGUgY29udGV4dHMgZnJvbSB3aGljaCBpdCdzIGNhbGxlZCBnaXZlcyBtZSBpbW1lZGlhdGUgY2x1ZXMgYWJvdXQgaXRzIGZ1bmN0aW9uIGFuZCB0aGUgY3JpdGljYWwgcGF0aHMgaXQgaW1wYWN0cy4gSSdsbCBuZWVkIHRvIHVzZSBteSB0b29scyAtIGdyZXAsIG1heWJlIGEgc3ltYm9sIGJyb3dzZXIgaWYgSSBoYXZlIG9uZSBoYW5keSwgb3IganVzdCBhIGdvb2Qgb2xkLWZhc2hpb25lZCBjb2RlIHNlYXJjaCDigJMgdG8gbG9jYXRlIGFsbCB0aGUgcmVmZXJlbmNlcyB0byB0aGF0IGZ1bmN0aW9uLiBGcm9tIHRoZXJlLCBJIGNhbiBzdGFydCBwaWVjaW5nIHRvZ2V0aGVyIHRoZSBmbG93IGFuZCB0aGUgbG9naWMgYmVoaW5kIGl0LiBXaGF0J3MgY2FsbGluZyBpdD8gVW5kZXIgd2hhdCBjb25kaXRpb25zPyBEb2VzIGl0IGFwcGVhciBpbiBpbml0aWFsaXphdGlvbiByb3V0aW5lcywgaW50ZXJydXB0IGhhbmRsZXJzLCBvciBtYXliZSBkYXRhIHBhdGggbWFuYWdlbWVudD8gQW5zd2VyaW5nIHRob3NlIHF1ZXN0aW9ucyB3aWxsIHBhaW50IGEgY2xlYXIgcGljdHVyZS4gVGhlbiBJJ2xsIGZvY3VzIG9uIGhvdyBlYWNoIGNhbGxlciB1c2VzIHRoZSByZXR1cm4gdmFsdWUgYW5kIGFueSBvdGhlciByZWxhdGVkIGZ1bmN0aW9uIGNhbGxzIHRoYXQgYXJlIG1hZGUgYWZ0ZXJ3YXJkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTI1LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDg6MjM6MzQuMzc4NjQxMjc0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTU2NjYzNjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTJrX2RwX3NldHVwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYz0xNDM4PXN0YXRpYyBpbnQgYXRoMTJrX2RwX3Jlb3FfbHV0X3NldHVwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMtMTQ3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmM6MTQ3NjpzdGF0aWMgaW50IGF0aDEya19kcF9zZXR1cChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYy0xNDc3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYz0xNjA0PWludCBhdGgxMmtfZHBfY21uX2RldmljZV9pbml0KHN0cnVjdCBhdGgxMmtfZHAgKmRwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jLTE2MDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jOjE2MDg6XFx0cmV0ID0gYXRoMTJrX2RwX3NldHVwKGRwLVxcdTAwM2VhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jLTE2MDktXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDg6MjM6MzQuODc0MzE4MDU2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyMzAzODc1MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIGNvZGUuXG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQ2FsbGVycyBvZiBgYXRoMTJrX2RwX2Ntbl9kZXZpY2VfaW5pdGAqKlxuXG5BbHJpZ2h0LCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIGZsb3cgYW5kIGZpZ3VyZSBvdXQgd2hlcmUgdGhpcyBgYXRoMTJrX2RwX2Ntbl9kZXZpY2VfaW5pdGAgZnVuY3Rpb24gaXMgYmVpbmcgaW52b2tlZC4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbGluZyBjb250ZXh0cyBpcyBjcnVjaWFsOyBpdOKAmXMgZ29pbmcgdG8gcHJvdmlkZSBtZSB3aXRoIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlIGNvbW1vbiBkZXZpY2UgaW5pdGlhbGl6YXRpb24gaXMgaW50ZWdyYXRlZCB3aXRoaW4gdGhlIGJyb2FkZXIgYGF0aDEya2AgZHJpdmVyIGFyY2hpdGVjdHVyZS4gSSBuZWVkIHRvIHBpbnBvaW50IGV2ZXJ5IGNhbGwgc2l0ZSB0byBncmFzcCB0aGUgZnVsbCBzY29wZSBvZiBpdHMgaW1wYWN0IGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBvdmVyYWxsIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBJZGVudGlmeWluZyB0aGUgY2FsbGVycyB3aWxsIGxpa2VseSByZXZlYWwgdGhlIHJlbGV2YW50IGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIHBoYXNlcyBhbmQgdGhlIGFzc29jaWF0ZWQgY29udHJvbCBwYXRocy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODUwNCwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjIzOjQwLjEwNDcwOTUxNloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1MDE5MzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDEya19kcF9jbW5fZGV2aWNlX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9MTI4ND1pbnQgYXRoMTJrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMzAwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjEzMDE6XFx0cmV0ID0gYXRoMTJrX2RwX2Ntbl9kZXZpY2VfaW5pdChhdGgxMmtfYWJfdG9fZHAoYWIpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMzAyLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYz0xNTk5PXZvaWQgYXRoMTJrX2RwX2Ntbl9kZXZpY2VfZGVpbml0KHN0cnVjdCBhdGgxMmtfZHAgKmRwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jLTE2MDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jOjE2MDQ6aW50IGF0aDEya19kcF9jbW5fZGV2aWNlX2luaXQoc3RydWN0IGF0aDEya19kcCAqZHApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jLTE2MDUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9jbW4uaD05MT12b2lkIGF0aDEya19kcF9jbW5fZGV2aWNlX2RlaW5pdChzdHJ1Y3QgYXRoMTJrX2RwICpkcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9jbW4uaDo5MjppbnQgYXRoMTJrX2RwX2Ntbl9kZXZpY2VfaW5pdChzdHJ1Y3QgYXRoMTJrX2RwICpkcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9jbW4uaC05My12b2lkIGF0aDEya19kcF9jbW5faHdfZ3JvdXBfdW5hc3NpZ24oc3RydWN0IGF0aDEya19kcCAqZHAsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjIzOjQwLjIwOTc0MDg1NloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTUwNTQ3MjQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYXRoMTJrIERyaXZlciBJbml0aWFsaXphdGlvbiBpbiBhIFZpcnR1YWxpemVkIEVudmlyb25tZW50KipcblxuT2theSwgc28gYGF0aDEya19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeWAgaXMgdGhlIGtleSBmdW5jdGlvbiB0aGF0IHRlbGxzIG1lIHRoZSBmaXJtd2FyZSBpcyB1cCBhbmQgcnVubmluZy4gVGhhdCBtZWFucyB0aGUgZHJpdmVyIGhhcyB0byBoYW5kbGUgZmlybXdhcmUgbG9hZGluZyBhbmQgUU1JIGNvbW11bmljYXRpb24gKmJlZm9yZSogaXQgY2FuIGluaXRpYWxpemUgdGhlIGRhdGFwYXRoIChkcCkuIFRoZSBwcm9ibGVtIGlzLCBpbiBteSB2aXJ0dWFsaXplZCBzZXR1cHMsIG9yIGV2ZW4gd2l0aCBjb21wbGV4IGVtdWxhdG9ycywgdGhlIGZpcm13YXJlIGlzIHByb2JhYmx5IG5ldmVyIGdvaW5nIHRvIGxvYWQgcHJvcGVybHkuIENvbnNlcXVlbnRseSwgYW55IFFNSSBjb21tdW5pY2F0aW9uIGF0dGVtcHRzIHdpbGwgbGlrZWx5IGZhaWwgb3IgdGltZSBvdXQuIFRoYXQgbWVhbnMgSSB3b24ndCBldmVyIGhpdCBgYXRoMTJrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5YC5cblxuU28sIHRoZSBxdWVzdGlvbiBub3cgaXMsIGlzIHRoZXJlIGFueSBraW5kIG9mIG1vY2sgZmlybXdhcmUgSSBjYW4gdXNlPyBPciBtYXliZSwgY2FuIEkgZnV6eiB0aGUgUU1JIGludGVyZmFjZSBpdHNlbGYgdG8gc2ltdWxhdGUgdGhlIGZpcm13YXJlPyBVbmZvcnR1bmF0ZWx5LCBhcyBmYXIgYXMgSSBrbm93LCBTeXprYWxsZXIgZG9lc24ndCBoYXZlIGEgUU1JIGZ1enplciBzcGVjaWZpY2FsbHkgdGFpbG9yZWQgZm9yIHRoZSBhdGgxMmsgZmlybXdhcmUsIHdoaWNoIG1ha2VzIHRoaW5ncyB0cmlja2llci5cblxuVG8gcHJvY2VlZCwgbGV0IG1lIHNlZSBpZiBgYXRoMTJrX2RwX2dldF9yeF9kZXNjYCBvciBgYXRoMTJrX2RwX2dldF90eF9kZXNjYCBnZXQgY2FsbGVkIGFueXdoZXJlIGVsc2UgaW4gdGhlIGNvZGUuIEknbSBob3BpbmcgSSBjYW4gZmluZCBhbm90aGVyIHBhdGggdGhhdCBtaWdodCBiZSBhY2Nlc3NpYmxlIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTE5NCwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwODoyMzo0NS4zNjAyOTM4NzNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk4NDkwMDExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDEya19kcF9nZXRfcnhfZGVzY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmM9MTE1Mj1zdGF0aWMgX19sZTY0ICphdGgxMmtfZHBfY2NfZ2V0X2Rlc2NfYWRkcl9wdHIoc3RydWN0IGF0aDEya19kcCAqZHAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMtMTE1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmM6MTE1ODpzdHJ1Y3QgYXRoMTJrX3J4X2Rlc2NfaW5mbyAqYXRoMTJrX2RwX2dldF9yeF9kZXNjKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYy0xMTU5LVxcdFxcdFxcdFxcdFxcdFxcdCAgdTMyIGNvb2tpZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYy0xMTgxLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmM6MTE4MjpFWFBPUlRfU1lNQk9MKGF0aDEya19kcF9nZXRfcnhfZGVzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jLTExODMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmg9Njk2PWludCBhdGgxMmtfZHBfbGlua19kZXNjX3NldHVwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmgtNjk5LVxcdFxcdFxcdCAgICAgIHUzMiBuX2xpbmtfZGVzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oOjcwMDpzdHJ1Y3QgYXRoMTJrX3J4X2Rlc2NfaW5mbyAqYXRoMTJrX2RwX2dldF9yeF9kZXNjKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaC03MDEtXFx0XFx0XFx0XFx0XFx0XFx0ICB1MzIgY29va2llKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfbW9uLmM9MjU4Mz1hdGgxMmtfd2lmaTdfZHBfcnhfbW9uX21wZHVfcG9wKHN0cnVjdCBhdGgxMmsgKmFyLCBpbnQgbWFjX2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9tb24uYy0yNjQ4LVxcdFxcdFxcdFxcdFxcdFxcdCAgXFx1MDAyNm51bV9tc2R1cyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9tb24uYzoyNjQ5OlxcdFxcdGRlc2NfaW5mbyA9IGF0aDEya19kcF9nZXRfcnhfZGVzYyhhci1cXHUwMDNlYWItXFx1MDAzZWRwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfbW9uLmMtMjY1MC1cXHRcXHRcXHRcXHRcXHRcXHQgIG1zZHVfbGlzdC5zd19jb29raWVbbnVtX21zZHVzIC0gMV0pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9tb24uYy0yNjY1LVxcdFxcdFxcdGRlc2NfaW5mbyA9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9tb24uYzoyNjY2OlxcdFxcdFxcdFxcdGF0aDEya19kcF9nZXRfcnhfZGVzYyhhci1cXHUwMDNlYWItXFx1MDAzZWRwLCBtc2R1X2xpc3Quc3dfY29va2llW2ldKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX21vbi5jLTI2NjctXFx0XFx0XFx0bXNkdSA9IGRlc2NfaW5mby1cXHUwMDNlc2tiO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jPTYzNj1pbnQgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3Moc3RydWN0IGF0aDEya19kcCAqZHAsIGludCByaW5nX2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jLTY5OS1cXHRcXHRpZiAoIWRlc2NfaW5mbykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfcnguYzo3MDA6XFx0XFx0XFx0ZGVzY19pbmZvID0gYXRoMTJrX2RwX2dldF9yeF9kZXNjKHBhcnRuZXJfZHAsIGNvb2tpZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jLTcwMS1cXHRcXHRcXHRpZiAoIWRlc2NfaW5mbykge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jPTEyNjM9YXRoMTJrX3dpZmk3X2RwX3Byb2Nlc3NfcnhfZXJyX2J1ZihzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3J4LmMtMTI4NS1cXHRpZiAoIWRlc2NfaW5mbykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfcnguYzoxMjg2OlxcdFxcdGRlc2NfaW5mbyA9IGF0aDEya19kcF9nZXRfcnhfZGVzYyhkcCwgY29va2llKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3J4LmMtMTI4Ny1cXHRcXHRpZiAoIWRlc2NfaW5mbykge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jPTEzNDg9c3RhdGljIGludCBhdGgxMmtfZHBfaF9tc2R1X2J1ZmZlcl90eXBlKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jLTEzNjYtXFx0XFx0XFx0XFx0ICAgICAgIEJVRkZFUl9BRERSX0lORk8xX1NXX0NPT0tJRSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jOjEzNjc6XFx0XFx0ZGVzY19pbmZvID0gYXRoMTJrX2RwX2dldF9yeF9kZXNjKGRwLCBjb29raWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfcnguYy0xMzY4LVxcdFxcdGlmICghZGVzY19pbmZvKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3J4LmM9MTgyMD1pbnQgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3Nfd2JtX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfcnguYy0xODc0LVxcdFxcdGlmICghZGVzY19pbmZvKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jOjE4NzU6XFx0XFx0XFx0ZGVzY19pbmZvID0gYXRoMTJrX2RwX2dldF9yeF9kZXNjKGRwLCBlcnJfaW5mby5jb29raWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfcnguYy0xODc2LVxcdFxcdFxcdGlmICghZGVzY19pbmZvKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjIzOjQ1LjQ1ODc5NDA5NFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDYzMDUyNzYzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVbnJlYWNoYWJsZSBDb2RlIGluIFZpcnR1YWxpemVkIEVudmlyb25tZW50cyoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIGFuZCBpdCdzIHByZXR0eSBjbGVhciB3aGVyZSB3ZSdyZSBhdC4gQWxsIHRoZXNlIGZ1bmN0aW9ucyDigJMgdGhlIG9uZXMgdGhhdCBhcmUgYmVpbmcgbW9kaWZpZWQg4oCTIHRoZXkncmUgYWxsIGZpcm1seSByb290ZWQgaW4gdGhlIGRhdGFwYXRoIChkcCkuIE5vdywgdGhlIGRhdGFwYXRoLCBhcyBJIHVuZGVyc3RhbmQgaXQsIG9ubHkgZ2V0cyBpbml0aWFsaXplZCBvbmNlIHRoZSBmaXJtd2FyZSBpcyByZWFkeSB0byBnby4gVGhhdCdzIHRoZSBrZXkuXG5cbkluIHRoZXNlIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCB0aGUgZmlybXdhcmUgaXNuJ3QgYXZhaWxhYmxlLiBUaGF0IG1lYW5zIHRoZSBkYXRhcGF0aCBuZXZlciBnZXRzIGluaXRpYWxpemVkLiBTaW1wbGUgZW5vdWdoLiBUaGVyZWZvcmUsIHRoZSBjb2RlIHBhdGhzIHRoaXMgcGF0Y2ggdG91Y2hlcz8gVGhleSdyZSBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIGluIHRoZXNlIHNwZWNpZmljIGZ1enppbmcgc2NlbmFyaW9zLiBJIG5lZWQgdG8gYmUgc3VyZSB0aG91Z2gsIGxldCdzIHRha2UgYSBsb29rLi4uXG5cbkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgSSdsbCBnbyB0aHJvdWdoIHRoZSBjYWxsIHN0YWNrIGZvciB0aGUgdGFyZ2V0IGZ1bmN0aW9ucy4gU3RhcnRpbmcgd2l0aCBgYXRoMTJrX2RwX2NjX2Rlc2NfaW5pdGAsIGNhbiB0aGF0IGJlIHJlYWNoZWQgdmlhIHNvbWUgb3RoZXIgcGF0aD8gTGV0J3MgdHJhY2UgaXQ6IGBhdGgxMmtfZHBfY2NfaW5pdGAgLVx1MDAzZSBgYXRoMTJrX2RwX3NldHVwYCAtXHUwMDNlIGBhdGgxMmtfZHBfY21uX2RldmljZV9pbml0YCAtXHUwMDNlIGBhdGgxMmtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHlgLiBJJ2xsIGNvbmZpcm0gdGhhdCBgYXRoMTJrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5YCBpcyB0aGUgb25seSBjYWxsZXIgb2YgYGF0aDEya19kcF9jbW5fZGV2aWNlX2luaXRgLCBzbyB0aGF0IEknbSBzdXJlIG9mIHRoZSBlbnRpcmUgcGF0aC4uLiBJJ3ZlIGFscmVhZHkgZ3JlcHBlZCBmb3IgYGF0aDEya19kcF9jbW5fZGV2aWNlX2luaXRgLiBBbmQgYXMgZXhwZWN0ZWQsIHRoZSBvbmx5IGNhbGxlciBpcyBgYXRoMTJrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5YC4gV2hhdCBhYm91dCBgYXRoMTJrX2RwX3NldHVwYD8gSSdsbCBncmVwIGZvciB0aGF0LiBBaCwgdGhlIHNhbWUgcGF0dGVybiBlbWVyZ2VzOiBgYXRoMTJrX2RwX3NldHVwYCBpcyBvbmx5IGNhbGxlZCBieSBgYXRoMTJrX2RwX2Ntbl9kZXZpY2VfaW5pdGAuIFNhbWUgd2l0aCBgYXRoMTJrX2RwX2NjX2luaXRgLCBJJ3ZlIGFscmVhZHkgZ3JlcHBlZCwgSSBzZWUgdGhhdCB0aGUgb25seSBjYWxsZXIgaXMgYGF0aDEya19kcF9zZXR1cGAuXG5cbk9rYXksIHNvIHRoZSBlbnRpcmUgZGF0YXBhdGggaW5pdGlhbGl6YXRpb24gaXMgKnN0cmljdGx5KiBjb250aW5nZW50IG9uIHRoYXQgUU1JIGZpcm13YXJlIHJlYWR5IGV2ZW50LiBXaXRob3V0IHRoZSBmaXJtd2FyZSwgdGhlIGRldmljZSBkb2Vzbid0IGV2ZW4gYm90aGVyIGluaXRpYWxpemluZyBpdHMgZGF0YXBhdGguIEl0J3MgYSBkZWFkIGVuZCBpbiB0ZXJtcyBvZiBmdXp6aW5nIHVubGVzcyB3ZSdyZSB0YWxraW5nIGFib3V0IGhhcmR3YXJlIG9yIGEgZnVsbCwgaGFyZHdhcmUtbGV2ZWwgZW11bGF0b3IuXG5cblNvLCBnaXZlbiBhbGwgb2YgdGhhdCwgSSBhbSBjb21wbGV0ZWx5IGNvbmZpZGVudCB0aGF0IEkgY2FuIHNldCBgV29ydGhGdXp6aW5nYCB0byBgZmFsc2VgIGhlcmUuIFRoaXMgY29kZSBpcyBpbmFjY2Vzc2libGUgaW4gdGhlIHNwZWNpZmllZCBmdXp6aW5nIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMjIxLCJPdXRwdXRUb2tlbnMiOjExOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwODoyMzo1Ni4wODkzMjU0MDdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDAxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZGF0YXBhdGggKGRwKSBpbml0aWFsaXphdGlvbiBhbmQgZGVzY3JpcHRvciBhY2Nlc3MgZnVuY3Rpb25zIGluIHRoZSBhdGgxMmsgZHJpdmVyLiBUaGUgZGF0YXBhdGggaXMgb25seSBpbml0aWFsaXplZCBhZnRlciB0aGUgZGV2aWNlIGZpcm13YXJlIGlzIGxvYWRlZCBhbmQgcmVhZHkgKHZpYSBhdGgxMmtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHkpLiBTaW5jZSB0aGUgcmVxdWlyZWQgaGFyZHdhcmUgYW5kIGZpcm13YXJlIGFyZSBub3QgYXZhaWxhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCB0ZXN0IGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGRhdGFwYXRoIChkcCkgaW5pdGlhbGl6YXRpb24gYW5kIGRlc2NyaXB0b3IgYWNjZXNzIGZ1bmN0aW9ucyBpbiB0aGUgYXRoMTJrIGRyaXZlci4gVGhlIGRhdGFwYXRoIGlzIG9ubHkgaW5pdGlhbGl6ZWQgYWZ0ZXIgdGhlIGRldmljZSBmaXJtd2FyZSBpcyBsb2FkZWQgYW5kIHJlYWR5ICh2aWEgYXRoMTJrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5KS4gU2luY2UgdGhlIHJlcXVpcmVkIGhhcmR3YXJlIGFuZCBmaXJtd2FyZSBhcmUgbm90IGF2YWlsYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgdGhlc2UgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowgm64w[1] Phase: Running StartedAt: 2026-06-29 08:25:14 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgm64w[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-06-29 08:25:14 +0000 UTC FinishedAt: 2026-06-29 08:25: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,}